/* 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_3(); // idb void __cdecl __tcf_4(); // idb void __cdecl __tcf_5(); // idb void __cdecl __tcf_6(); // idb void __cdecl __tcf_7(); // idb void __cdecl __tcf_8(); // idb void __cdecl __tcf_9(); // idb void __cdecl __tcf_10(); // idb void __cdecl __tcf_11(); // idb void __cdecl __tcf_12(); // idb void __cdecl __tcf_13(); // idb void __cdecl __tcf_14(); // idb void __cdecl __tcf_15(); // idb void __cdecl __tcf_16(); // idb void __cdecl __tcf_17(); // idb void __cdecl __tcf_18(); // idb void __cdecl __tcf_19(); // idb void __cdecl __tcf_20(); // idb void __cdecl __tcf_21(); // idb void __cdecl __tcf_22(); // idb void __cdecl __tcf_23(); // idb void __cdecl __tcf_24(); // idb void __cdecl __tcf_25(); // idb void __cdecl __tcf_26(); // idb void __cdecl __tcf_27(); // idb void __cdecl __tcf_28(); // idb void __cdecl __tcf_29(); // idb void __cdecl __tcf_30(); // idb void __cdecl __tcf_31(); // idb void __cdecl __tcf_32(); // idb void __cdecl __tcf_33(); // idb void __cdecl __tcf_34(); // idb void __cdecl __tcf_35(); // idb void __cdecl __tcf_36(); // idb void __cdecl __tcf_37(); // idb void __cdecl __tcf_38(); // idb void __cdecl __tcf_39(); // idb void __cdecl __tcf_40(); // idb void __cdecl __tcf_41(); // idb void __cdecl __tcf_42(); // idb void __cdecl __tcf_43(); // idb void __cdecl __tcf_44(); // idb void __cdecl __tcf_45(); // idb int snprintf(char *const Buffer, const size_t BufferCount, const char *const Format, ...); void __cdecl __tcf_2(); // idb // int __usercall main::{lambda(std::string const&)#1}::operator()@(const char **a1@, const char **a2@); // void __usercall std::_Vector_base::_M_deallocate(void *a1@); void __fastcall std::pair::~pair(void **a1); // void *__usercall __gnu_cxx::new_allocator::allocate@(unsigned int a1@); // _DWORD *__usercall std::__relocate_a_1>@(void **a1@, void **a2@, _DWORD *a3@); unsigned int __thiscall std::string::basic_string(void **this, char *a2); 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); void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); // int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound@(int a1@, int a2@, int a3@); void __fastcall std::vector::~vector(void ***a1, int a2); int __cdecl Split(int a1, int *a2, int a3); void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(int a1); // _DWORD *__usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>@(int *a1@); 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 __cdecl __tcf_1(); // idb void __cdecl __tcf_2_0(); // idb void __cdecl __tcf_3_0(); // idb void __cdecl __tcf_4_0(); // idb void __cdecl __tcf_5_0(); // idb void __cdecl __tcf_6_0(); // idb void __cdecl __tcf_7_0(); // idb void __cdecl __tcf_8_0(); // idb void __cdecl __tcf_9_0(); // idb void __cdecl __tcf_10_0(); // idb void __cdecl __tcf_11_0(); // idb void __cdecl __tcf_12_0(); // idb void __cdecl __tcf_13_0(); // idb void __cdecl __tcf_14_0(); // idb void __cdecl __tcf_15_0(); // idb void __cdecl __tcf_16_0(); // idb void __cdecl __tcf_17_0(); // idb void __cdecl __tcf_18_0(); // idb void __cdecl __tcf_19_0(); // idb void __cdecl __tcf_20_0(); // idb void __cdecl __tcf_21_0(); // idb void __cdecl __tcf_22_0(); // idb void __cdecl __tcf_23_0(); // idb void __cdecl __tcf_24_0(); // idb void __cdecl __tcf_25_0(); // idb void __cdecl __tcf_26_0(); // idb void __cdecl __tcf_27_0(); // idb void __cdecl __tcf_28_0(); // idb void __cdecl __tcf_29_0(); // idb void __cdecl __tcf_30_0(); // idb void __cdecl __tcf_31_0(); // idb void __cdecl __tcf_32_0(); // idb void __cdecl __tcf_33_0(); // idb void __cdecl __tcf_34_0(); // idb void __cdecl __tcf_35_0(); // idb void __cdecl __tcf_36_0(); // idb void __cdecl __tcf_37_0(); // idb void __cdecl __tcf_38_0(); // idb void __cdecl __tcf_39_0(); // idb void __cdecl __tcf_40_0(); // idb void __cdecl __tcf_41_0(); // idb int __cdecl vsnprintf(char *const Buffer, const size_t BufferCount, const char *const Format, va_list ArgList); // void __usercall std::_Vector_base::_M_deallocate(void *a1@); // void __usercall std::_Vector_base::_M_deallocate(void *a1@); void __fastcall night::ns_sourcemap::~ns_sourcemap(void **a1); void __fastcall night::NSASTParse::~NSASTParse(void **a1); void __fastcall night::NSStream::~NSStream(void **a1); void __fastcall std::vector::~vector(void ***a1); // int __usercall std::__relocate_a_1@(void *a1@, const void *a2@, int a3@); int snprintf_constprop_0(char *Buffer, int a2, char *Format, ...); int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); // weak int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); // weak unsigned int __thiscall std::string::basic_string(void **this, char *a2); void __fastcall std::_Vector_base::~_Vector_base(void **a1); int __thiscall night::NSStream::NSStream(_DWORD *this, int a2, int a3, int a4); _DWORD *__thiscall night::NSStream::next(_DWORD *ecx0, night::NSStream *this); _DWORD *__thiscall night::NSStream::peek(_DWORD *ecx0, night::NSStream *this); _DWORD *__thiscall night::NSStream::peek_2(_DWORD *ecx0, night::NSStream *this); bool __fastcall night::NSStream::eof(night::NSStream *a1); bool __fastcall night::NSStream::eof_2(night::NSStream *a1); int __thiscall night::NSToken::read_while[abi:cxx11](int this, int a2, unsigned __int8 (__cdecl *a3)(_DWORD, int), int a4); void __fastcall night::NSToken::read_comment_method_1(int a1); _DWORD *__fastcall night::NSToken::read_comment_method_2(int a1); unsigned __int8 __thiscall night::NSToken::skip_comment(night::NSStream **this, _DWORD *a2); void __thiscall __noreturn night::NSStream::err(_DWORD *this, int a2, unsigned int a3, unsigned int a4, char a5); void __thiscall __noreturn night::NSToken::err(_DWORD **this, int a2, unsigned int a3, unsigned int a4, char a5); bool __stdcall night::NSASTParse::is_save_for_division(int a1); bool __stdcall night::NSASTParse::is_exp(int a1); unsigned int __fastcall night::NSGod::hamlet(_DWORD *a1); void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); void __fastcall night::NSToken::~NSToken(int a1); _DWORD *__thiscall night::NSGod::gen_son(void *this, int a2); _DWORD *__thiscall night::NSToken::read_string(night::NSStream **this, char a2, int a3); _DWORD *__thiscall night::NSToken::read_number(night::NSStream **this, int a2); int __thiscall night::NSGod::gen_girl(void *this, int a2); void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); void __thiscall night::NSToken::push(int this, int a2); _DWORD *__thiscall night::NSToken::read_var(int this, int a2); _DWORD *__fastcall night::NSToken::read_next(int a1); _DWORD *__fastcall night::NSToken::peek(int a1); bool __fastcall night::NSToken::eof(int a1); _DWORD *__thiscall night::NSASTParse::is_punctuation(int *this, int a2); _DWORD *__thiscall night::NSASTParse::is_buildin_keywords(int *this, int a2); _DWORD *__thiscall night::NSASTParse::is_op(int *this, int a2); _DWORD *__thiscall night::NSASTParse::is_op_or_comma(int *this, int a2); int __fastcall night::NSASTParse::end_line(int a1); // int __userpurge night::NSASTParse::is_op_self@(int a1@, night::NSASTParse *this, bool a3); // bool __userpurge night::NSASTParse::is_obj_op_self@(int *a1@, night::NSASTParse *this, bool a3); _DWORD *__fastcall night::NSToken::next(int a1); unsigned __int8 __thiscall night::NSASTParse::ignore_punc_pass_sem(int *this, int a2); _DWORD *__thiscall night::NSASTParse::ignore_punc(int *this, int a2); _DWORD *__thiscall night::NSASTParse::ignore_buildin_kw(int *this, int a2); _DWORD *__thiscall night::NSASTParse::ignore_op(int *this, int a2); _DWORD *__fastcall night::NSASTParse::ast_trans_kw(int *a1); // _DWORD *__userpurge night::NSASTParse::ast_dispatch@(_DWORD *a1@, night::NSASTParse *this, bool a3); _DWORD *__fastcall night::NSASTParse::ast_op_self(int a1); int __thiscall night::NSASTParse::make_binary_or_just_value(_DWORD *this, int a2, unsigned __int8 a3); _DWORD *__fastcall night::NSASTParse::ast_expression_no_comma(int *a1); int __fastcall night::NSASTParse::ast_varname(int a1); _DWORD *__thiscall night::NSASTParse::ast_obj_op_self(_DWORD *this, int a2); _DWORD *__thiscall night::NSASTParse::ast_obj_dot(int *this, int a2); unsigned int *__fastcall night::NSASTParse::ast_if(int *a1); _DWORD *__fastcall night::NSASTParse::ast_ternary_expression(int *a1); void **__thiscall night::NSASTParse::make_list_by_parser(int *this, int a2, int a3, int a4, int a5, char a6, int a7, int a8); _DWORD *__thiscall night::NSASTParse::ast_call(int *this, int a2); _DWORD *__thiscall night::NSASTParse::make_call_or_just_expression(int *this, int a2); _DWORD *__fastcall night::NSASTParse::ast_expression(int *a1); _DWORD *__thiscall night::NSASTParse::ast_obj_op(int *this, int a2); _DWORD *__fastcall night::NSASTParse::ast_while(int *a1); _DWORD *__fastcall night::NSASTParse::ast_do_while(int *a1); _DWORD *__fastcall night::NSASTParse::ast_switch(int *a1); _DWORD *__fastcall night::NSASTParse::top_down(int *a1); _DWORD *__fastcall night::NSASTParse::ast_require(int *a1); _DWORD *__fastcall night::NSASTParse::ast_code_block(int *a1); _DWORD *__fastcall night::NSASTParse::ast_function(int *a1); _DWORD *__fastcall night::NSASTParse::ast_new_array(int *a1); _DWORD *__fastcall night::NSASTParse::ast_for(int *a1); _DWORD *__fastcall night::NSASTParse::ast_obj_block(int *a1); _DWORD *__fastcall night::NSASTParse::ast_var(_DWORD *a1); _DWORD *__fastcall night::NSASTParse::ast_expression_no_binary(int *a1); void __fastcall std::vector::~vector(void ***a1, int a2); void __fastcall night::NSCompileJs::~NSCompileJs(int a1, int a2); _DWORD *__thiscall night::NSCompileJs::compile_var[abi:cxx11](_DWORD *this, int a2, int a3); int __thiscall night::NSCompileJs::compile_function[abi:cxx11](int this, int a2, _DWORD *a3); void **__thiscall night::NSCompileJs::compile[abi:cxx11](void **this, int a2, _DWORD *a3); int __thiscall night::NSCompileJs::compile_k_v[abi:cxx11](int this, int a2, int a3); int __thiscall night::NSCompileJs::compile_if[abi:cxx11](int this, int a2, _DWORD *a3); _DWORD *__thiscall night::NSCompileJs::compile_for[abi:cxx11](_DWORD *this, int a2, int a3); int __thiscall night::NSCompileJs::compile_while[abi:cxx11](int this, int a2, int a3); int __thiscall night::NSCompileJs::compile_do_while[abi:cxx11](int this, int a2, int a3); int __thiscall night::NSCompileJs::compile_switch[abi:cxx11](int this, int a2, int a3); int __thiscall night::NSCompileJs::compile_obj_self_op[abi:cxx11](int this, int a2, int a3); int __thiscall night::NSCompileJs::compile_obj_property[abi:cxx11](int this, int a2, int a3); int __thiscall night::NSCompileJs::compile_obj_dot[abi:cxx11](int this, int a2, int a3); int __thiscall night::NSCompileJs::compile_op_self[abi:cxx11](int this, int a2, int a3); int __thiscall night::NSCompileJs::compile_ternary[abi:cxx11](int this, int a2, int a3); _DWORD *__thiscall night::NSCompileJs::compile_binary[abi:cxx11](_DWORD *this, int a2, int a3); _DWORD *__thiscall night::NSCompileJs::compile_assign[abi:cxx11](_DWORD *this, int a2, int a3); int __thiscall night::NSCompileJs::compile_call[abi:cxx11](int this, int a2, int a3); int __thiscall night::NSCompileJs::compile_prog[abi:cxx11](int this, int a2, int a3); int __thiscall night::NSCompileJs::compile_prog_no_sem[abi:cxx11](int this, int a2, int a3); _DWORD *__thiscall night::NSCompileJs::compile_once(_DWORD *this, int a2, unsigned int *a3, int a4, char a5); int __cdecl night::compile_ns_no_wrapper(int a1, int a2, int a3, unsigned int *a4, char a5); int __cdecl night::compile_ns(int a1, int a2, int a3, int a4, unsigned int *a5, char a6); int __cdecl night::compile_ns_with_sourcemap(int *a1, int a2, int a3, int a4, int a5, unsigned int *a6, int a7); void __cdecl __tcf_0(); // idb void __cdecl __tcf_1_0(); // idb void __cdecl __tcf_2_1(); // idb void __cdecl __tcf_3_1(); // idb void __cdecl __tcf_4_1(); // idb void __cdecl __tcf_5_1(); // idb void __cdecl __tcf_6_1(); // idb void __cdecl __tcf_7_1(); // idb void __cdecl __tcf_8_1(); // idb void __cdecl __tcf_9_1(); // idb void __cdecl __tcf_10_1(); // idb void __cdecl __tcf_11_1(); // idb void __cdecl __tcf_12_1(); // idb void __cdecl __tcf_13_1(); // idb void __cdecl __tcf_14_1(); // idb void __cdecl __tcf_15_1(); // idb void __cdecl __tcf_16_1(); // idb void __cdecl __tcf_17_1(); // idb void __cdecl __tcf_18_1(); // idb void __cdecl __tcf_19_1(); // idb void __cdecl __tcf_20_1(); // idb void __cdecl __tcf_21_1(); // idb void __cdecl __tcf_22_1(); // idb void __cdecl __tcf_23_1(); // idb void __cdecl __tcf_24_1(); // idb void __cdecl __tcf_25_1(); // idb void __cdecl __tcf_26_1(); // idb void __cdecl __tcf_27_1(); // idb void __cdecl __tcf_28_1(); // idb void __cdecl __tcf_29_1(); // idb void __cdecl __tcf_30_1(); // idb void __cdecl __tcf_31_1(); // idb void __cdecl __tcf_32_1(); // idb void __cdecl __tcf_33_1(); // idb void __cdecl __tcf_34_1(); // idb void __cdecl __tcf_35_1(); // idb void __cdecl __tcf_36_1(); // idb void __cdecl __tcf_37_1(); // idb void __cdecl __tcf_38_1(); // idb int __cdecl night::sourcemap::int2vlq[abi:cxx11](int a1, int a2); int __cdecl night::sourcemap::gen_sourcemap_content(int *a1, _DWORD *a2, _DWORD *a3, _DWORD *a4, int a5, int a6); void __cdecl __tcf_1_1(); // idb void __cdecl __tcf_2_2(); // idb void __cdecl __tcf_3_2(); // idb void __cdecl __tcf_4_2(); // idb void __cdecl __tcf_5_2(); // idb void __cdecl __tcf_6_2(); // idb void __cdecl __tcf_7_2(); // idb void __cdecl __tcf_8_2(); // idb void __cdecl __tcf_9_2(); // idb void __cdecl __tcf_10_2(); // idb void __cdecl __tcf_11_2(); // idb void __cdecl __tcf_12_2(); // idb void __cdecl __tcf_13_2(); // idb void __cdecl __tcf_14_2(); // idb void __cdecl __tcf_15_2(); // idb void __cdecl __tcf_16_2(); // idb void __cdecl __tcf_17_2(); // idb void __cdecl __tcf_18_2(); // idb void __cdecl __tcf_19_2(); // idb void __cdecl __tcf_20_2(); // idb void __cdecl __tcf_21_2(); // idb void __cdecl __tcf_22_2(); // idb void __cdecl __tcf_23_2(); // idb void __cdecl __tcf_24_2(); // idb void __cdecl __tcf_25_2(); // idb void __cdecl __tcf_26_2(); // idb void __cdecl __tcf_27_2(); // idb void __cdecl __tcf_28_2(); // idb void __cdecl __tcf_29_2(); // idb void __cdecl __tcf_30_2(); // idb void __cdecl __tcf_31_2(); // idb void __cdecl __tcf_32_2(); // idb void __cdecl __tcf_33_2(); // idb void __cdecl __tcf_34_2(); // idb void __cdecl __tcf_35_2(); // idb void __cdecl __tcf_36_2(); // idb void __cdecl __tcf_37_2(); // idb void __cdecl __tcf_38_2(); // idb void __cdecl __tcf_39_1(); // idb int __cdecl night::str::path_combine(_DWORD *a1, _DWORD *a2, _DWORD *a3); int __cdecl night::str::get_token(int a1, _DWORD *a2, unsigned int a3); int __cdecl night::readfile(char *FileName, unsigned int *a2); int __cdecl night::writefile(char *FileName, int a2); // idb void __cdecl __tcf_3_3(); // idb void __cdecl __tcf_4_3(); // idb void __cdecl __tcf_5_3(); // idb void __cdecl __tcf_6_3(); // idb void __cdecl __tcf_7_3(); // idb void __cdecl __tcf_8_3(); // idb void __cdecl __tcf_9_3(); // idb void __cdecl __tcf_10_3(); // idb void __cdecl __tcf_11_3(); // idb void __cdecl __tcf_12_3(); // idb void __cdecl __tcf_13_3(); // idb void __cdecl __tcf_14_3(); // idb void __cdecl __tcf_15_3(); // idb void __cdecl __tcf_16_3(); // idb void __cdecl __tcf_17_3(); // idb void __cdecl __tcf_18_3(); // idb void __cdecl __tcf_19_3(); // idb void __cdecl __tcf_20_3(); // idb void __cdecl __tcf_21_3(); // idb void __cdecl __tcf_22_3(); // idb void __cdecl __tcf_23_3(); // idb void __cdecl __tcf_24_3(); // idb void __cdecl __tcf_25_3(); // idb void __cdecl __tcf_26_3(); // idb void __cdecl __tcf_27_3(); // idb void __cdecl __tcf_28_3(); // idb void __cdecl __tcf_29_3(); // idb void __cdecl __tcf_30_3(); // idb void __cdecl __tcf_31_3(); // idb void __cdecl __tcf_32_3(); // idb void __cdecl __tcf_33_3(); // idb void __cdecl __tcf_34_3(); // idb void __cdecl __tcf_35_3(); // idb void __cdecl __tcf_36_3(); // idb void __cdecl __tcf_37_3(); // idb void __cdecl __tcf_38_3(); // idb void __cdecl __tcf_39_2(); // idb void __cdecl __tcf_40_1(); // idb void __cdecl __tcf_41_1(); // idb int __cdecl vsnprintf_0(char *const Buffer, const size_t BufferCount, const char *const Format, va_list ArgList); void __cdecl __tcf_2_3(); // idb int __fastcall std::_Rb_tree_iterator>>::operator++(int *a1); // void __usercall std::_Vector_base::_M_deallocate(void *a1@); void __fastcall WXML::NameAllocator::~NameAllocator(int a1); // void *__usercall __gnu_cxx::new_allocator::allocate@(unsigned int a1@); int snprintf_constprop_0_0(char *Buffer, int a2, int a3, ...); BOOL __fastcall std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::__shared_ptr,std::allocator>>>(_DWORD *a1); int __cdecl WXML::Compiler::GetVersionInfo(int a1, int *a2); int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); int __fastcall WXML::DOMLib::Token::~Token(int a1); void __fastcall std::vector::~vector(void **a1); _DWORD *__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(_DWORD *this, int 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); void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); void __fastcall std::_Rb_tree,std::less,std::allocator>::~_Rb_tree(int a1); // int __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_lower_bound@(int a1@, int a2@, int a3@); // int __usercall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_lower_bound@(int a1@, int a2@, int a3@); unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2); void **__cdecl WXML::Compiler::WXMLHelperCode[abi:cxx11](void **a1); void **__cdecl WXML::Compiler::GetFuncId(void **a1, _DWORD *a2, int a3); void __fastcall std::vector::~vector(void ***a1, int a2); void __thiscall std::vector::_M_move_assign(void *this, int *a2); void __fastcall std::deque::~deque(int a1); int __fastcall WXML::DOMLib::Parser::~Parser(int a1); unsigned int __cdecl WXML::Compiler::ParseWxmlSource(int a1, int *a2, unsigned int *a3, _DWORD *a4, _DWORD *a5); unsigned int __cdecl WXML::Compiler::DealWxsTag(int a1, int **a2, _DWORD *a3, int a4, int *a5, _DWORD *a6, unsigned int *a7); int __cdecl WXML::Compiler::RenderDefine(unsigned int **a1, int *a2, _DWORD *a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, char a9, int *a10, int *a11, int *a12, int a13, int *a14, int *a15, int *a16, int a17, int a18, int a19, int *a20); int __cdecl WXML::Compiler::ProcessWxsInline(int *a1, int *a2, char a3, int a4, int *a5, _DWORD *a6, unsigned int *a7, _DWORD *a8, _DWORD *a9, int a10, char a11); int __cdecl WXML::Compiler::ProcessWxsFile(int *a1, int a2, char a3, int a4, _DWORD *a5, _DWORD *a6); unsigned int __cdecl WXML::Compiler::Compile(_DWORD *a1, unsigned int *a2, _DWORD *a3, _DWORD *a4, _DWORD *a5, char a6, int *a7, int a8, char a9, int *a10, int *a11, int *a12, int *a13, int *a14, int *a15, int a16, int a17, int a18, int *a19); unsigned int __cdecl WXML::Compiler::ParseAndResolveWxmlDependencies(int a1, unsigned int *a2, _DWORD *a3, _DWORD *a4, _DWORD *a5); _DWORD std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(); // weak int __cdecl WXML::Compiler::CompileLazyWithParsed(_DWORD *a1, _DWORD *a2, int a3, int a4, unsigned int *a5, _DWORD *a6, _DWORD *a7, int a8, _DWORD *a9, std::_Rb_tree_header *a10, char a11, char a12, _DWORD *a13, int a14, _DWORD *a15, char a16, int a17, int a18, char a19, int *a20, int *a21, int *a22, int *a23, int *a24, int *a25, int a26, int a27, int a28, int *a29); int __cdecl WXML::Compiler::CompileLazy(std::_Rb_tree_header *a1, unsigned int *a2, _DWORD *a3, _DWORD *a4, _DWORD *a5, int a6, int a7, std::_Rb_tree_header *a8, char a9, _DWORD *a10, int a11, _DWORD *a12, char a13, int a14, int a15, char a16, int *a17, int *a18, int *a19, int *a20, int *a21, int *a22, int a23, int a24, int a25, int *a26); void __thiscall WXML::NameAllocator::NameAllocator(_DWORD *this, int a2, int a3); void __thiscall WXML::NameAllocator::GetNextName(int *this, _DWORD *a2); // 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); bool __cdecl WXML::DOMLib::AttrsCompartor(int a1, int a2); void __cdecl __tcf_1_2(); // idb // void __usercall std::_Vector_base::_M_deallocate(void *a1@); // _DWORD *__usercall std::__relocate_a_1>@(void **a1@, void **a2@, _DWORD *a3@); // volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@); void __fastcall std::vector::~vector(void ***a1); void __fastcall std::vector>::~vector(void ***a1); void __fastcall std::vector>::~vector(void ***a1); void __fastcall std::vector::~vector(void **a1); // int __userpurge WXML::DOMLib::WXMLDom::GenRawId@(_DWORD *a1@, WXML::DOMLib::WXMLDom *this, unsigned __int64 *a3); _DWORD *__thiscall WXML::DOMLib::Parser::GetParsed(_DWORD *ecx0, WXML::DOMLib::Parser *this); void __fastcall WXML::DOMLib::Parser::Match(int a1); bool __stdcall WXML::DOMLib::Parser::IsValidTag(const char **a1); _DWORD *__fastcall WXML::DOMLib::Parser::Peek(_DWORD *a1); int __cdecl WXML::DOMLib::WXMLDom::Error(int a1, int *a2, int a3, int *a4, int *a5); int __cdecl WXML::DOMLib::joinString(int a1, _DWORD *a2, char a3); int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); int __fastcall WXML::DOMLib::Token::~Token(int a1); // void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node(void **a1@); void __fastcall std::pair::~pair(void **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); _DWORD *__thiscall WXML::DOMLib::Parser::Error(_DWORD *ecx0, WXML::DOMLib::Parser *this, char *a3, WXML::DOMLib::Token *a4); void __fastcall WXML::DOMLib::WXMLDom::~WXMLDom(int a1); // int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound@(int a1@, int a2@, int a3@); int __cdecl WXML::DOMLib::splitString(int a1, int *a2, char a3); int __cdecl WXML::DOMLib::resolvePath(int a1, int *a2, int *a3); int __fastcall WXML::DOMLib::Parser::ATTR(WXML::DOMLib::Parser *a1); int __fastcall WXML::DOMLib::Parser::ATTR_LIST(WXML::DOMLib::Parser *a1); unsigned int __thiscall std::string::basic_string(void **this, char *a2); void **__cdecl WXML::DOMLib::removern(void **a1, _DWORD *a2); int __thiscall WXML::DOMLib::WXMLDom::AddTestAttr(_DWORD *this, int *a2, int a3, char a4); // int __usercall WXML::DOMLib::WXMLDom::RewriteTree@(int a1@, const char **a2@); int __fastcall WXML::DOMLib::Parser::DOM(WXML::DOMLib::Parser *a1); int __fastcall WXML::DOMLib::Parser::DOMS(WXML::DOMLib::Parser *a1); unsigned int __thiscall WXML::DOMLib::Parser::Parse(WXML::DOMLib::Parser *this, int a2, unsigned int *a3, int a4, _DWORD *a5); unsigned int __cdecl WXML::DOMLib::recurseDependencies(int *a1, int *a2, _DWORD *a3); int __fastcall WXML::DOMLib::WXMLDom::RecordAllPath(int a1); void __fastcall std::deque>::~deque(int a1); void __fastcall WXML::EXPRLib::Parser::~Parser(int a1); int __cdecl WXML::DOMLib::WXMLDom::DealSingleTokenToOps(int *a1, unsigned int *a2, int a3, _DWORD *a4, _DWORD *a5, char a6, int a7, char a8, int *a9, char a10, int a11); int __thiscall WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord(_DWORD *this, int *a2, unsigned int *a3, int a4, _DWORD *a5, int *a6, unsigned __int8 a7, int a8); int __thiscall WXML::DOMLib::WXMLDom::RenderNonDefine(int this, int *a2, int *a3, int a4, int *a5, int a6, int *a7, int *a8, int *a9, int *a10, int *a11, char a12, unsigned __int8 a13, int a14, int a15); int __thiscall WXML::DOMLib::WXMLDom::RenderChildren(_DWORD *this, int *a2, int *a3, int a4, int *a5, int a6, int *a7, int *a8, int *a9, int *a10, int *a11, char a12, unsigned __int8 a13, int a14, int a15); int __thiscall WXML::DOMLib::WXMLDom::RenderMeAsFunction(_DWORD *this, int *a2, int *a3, int a4, int *a5, int a6, int *a7, int *a8, int *a9, int *a10, int *a11, int *a12, char a13, int *a14, char a15, unsigned __int8 a16, int a17, int *a18); void __cdecl __tcf_0_0(); // idb // volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@); int __fastcall WXML::DOMLib::Machine::Reset(_DWORD *a1); void WXML::DOMLib::Machine::InitTransitTable(); void __thiscall WXML::DOMLib::Machine::Machine(int this, int a2); int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); int __fastcall WXML::DOMLib::Token::~Token(int a1); // int __usercall std::__relocate_a_1>@(int a1@, int a2@, int a3@); int __thiscall WXML::DOMLib::Machine::Feed(int *this, unsigned __int8 a2, int a3, _DWORD *a4, int a5, int a6); volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, volatile signed __int32 *a2); _DWORD __stdcall WXML::DOMLib::Tokenizer::Tokenizer(_DWORD, _DWORD); // weak unsigned int __thiscall WXML::DOMLib::Tokenizer::GetTokens(char *this, _DWORD *a2, unsigned int *a3, _DWORD *a4); int __cdecl vsnprintf_1(char *const Buffer, const size_t BufferCount, const char *const Format, va_list ArgList); void __cdecl __tcf_0_1(); // idb int (__stdcall *__fastcall std::_Function_base::~_Function_base(int a1))(int, int, int, int, int, int); int __cdecl std::_Function_base::_Base_manager const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}>::_M_manager(void **a1, const void **a2, unsigned int a3); void __fastcall std::vector>::~vector(void ***a1); unsigned int __cdecl std::_Function_handler const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}>::_M_invoke(int *a1, _DWORD *a2, int *a3); void __fastcall std::_Rb_tree,std::less,std::allocator>::~_Rb_tree(int a1); void __fastcall std::vector>::~vector(void **a1); void __cdecl WXML::Compiler::CalculateOutputChunkKeys(_DWORD *a1, int a2, int a3, int a4, _DWORD *a5); void __cdecl __tcf_1_3(); // 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@); std::ostream::sentry *__cdecl WXML::EXPRLib::OutputAsStringOrKeyWord(int a1, int *a2, int a3, _BYTE *a4); int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(int *this, int a2, int a3, _BYTE *a4); int __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); // _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 __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderCode(int *this, WXML::EXPRLib::Token *a2, int *a3, int *a4, int *a5, int *a6, int *a7, char a8, int a9); // int __userpurge WXML::EXPRLib::Parser::Parse@(int a1@, void (__cdecl *a2)(void *)@, char **a3, int a4, int a5, int a6, unsigned int *a7, char a8); void __cdecl __tcf_0_2(); // idb void __cdecl __tcf_0_3(); // idb const char *__fastcall WXML::EXPRLib::Token::GetTokenName(const char **a1); const char *__fastcall WXML::EXPRLib::Token::GetLiteral(_DWORD *a1); void WXML::EXPRLib::Tokenizer::InitTransitTable(); 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@); unsigned int __thiscall WXML::EXPRLib::Tokenizer::Tokenizer(void **this, char *a2, int a3, int a4, int a5); int __thiscall WXML::EXPRLib::Tokenizer::GetTokens(int *this, int a2, unsigned int *a3); void __cdecl __tcf_1_4(); // 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 WXML::EXPRLib::TransitTable::GetExprNTType(); int WXML::EXPRLib::TransitTable::GetAttrListNTType(); 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 WXML::EXPRLib::TransitTable::Init(WXML::EXPRLib::TransitTable *__hidden this); // idb void __cdecl __tcf_0_4(); // idb int __cdecl WXML::StringTemplating::Deal(const char *a1, int a2, _DWORD *a3, _BYTE *a4); // 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_44DE90(); 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_44E0C0(char *Format, ...); // DWORD __usercall sub_44E110@(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_44E5C0@(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_450AB0(int a1@); void __cdecl sub_450B80(); // 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); unsigned __int64 __cdecl strtoull(const char *String, char **EndPtr, int Radix); wint_t __cdecl btowc(int Ch); int __cdecl vsnprintf_2(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_451D30@(char *a1@, int a2@, __int16 a3@); // int __usercall sub_452060@(char *a1@, _BYTE *a2@, int a3@); // int __usercall sub_452290@(char *a1@, unsigned int a2@); // int __usercall sub_452330@(int a1@, _DWORD *a2@); // int __usercall sub_452390@(_DWORD *a1@, _DWORD *a2@, int a3@); // int __usercall sub_4523E0@(_DWORD *a1@); // int __usercall sub_452430@(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_453250@(const CHAR *lpFileName@, int a2@); // BOOL __usercall sub_453340@(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_455040@(int *a1@); // int *__usercall sub_455100@(int a1@, __int64 a2, int a3, int a4, int a5, int *a6, int *a7); // int __usercall sub_455200@(int result@, int a2@); // int __usercall sub_455260@(int a1@, int a2@, int a3@); // int __usercall sub_455390@(char *a1@, int a2@, int a3@); // int __usercall sub_455460@(int a1@, int a2@, int a3@); // int __usercall sub_455500@(wchar_t a1@, int a2@, int a3@); // int __usercall sub_455580@(int a1@); // int __usercall sub_455660@(_DWORD *a1@); // int __usercall sub_4556E0@(int *a1@); // int __usercall sub_455710@(unsigned __int8 *a1@); // int __usercall sub_455790@(int a1@); // int __usercall sub_455840@(int a1@, int a2@); // int __usercall sub_455880@(unsigned int a1@, unsigned int a2@, int a3@); // int __usercall sub_455C50@(int a1@, _BYTE *a2@, int a3@, int a4); // int __usercall sub_455FC0@(int a1@, _BYTE *a2@, int a3@, _DWORD *a4); // void __usercall sub_456090(_DWORD *a1@, long double a2); // void __usercall sub_456140(int a1@, long double a2); // void __usercall sub_456210(_DWORD *a1@, long double a2); // int __usercall sub_4563A0@(_DWORD *a1@, long double a2); // int __usercall sub_456950@(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); // 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); // 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 __cdecl putchar(int Character); // 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 GetUnicode[abi:cxx11](int a1, unsigned int a2); int __cdecl GetJsonDict(int *a1, int a2); int __cdecl GetJsonString(int *a1, int *a2, _DWORD *a3); int __cdecl GetUnicodeNum(int *a1, int a2); int __cdecl DictToJsonString(int a1, int a2); int __cdecl EscapeToJsonString(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); int __cdecl HexDigit(char a1, char a2); 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 _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); void __cdecl WXML::DOMLib::ParseException::~ParseException(void *); // idb void __cdecl WXML::DOMLib::RenderException::~RenderException(void *); // idb int __fastcall WXML::DOMLib::Token::ToAttrContent[abi:cxx11](int a1); int __cdecl WXML::DOMLib::Token::GetTemplateContent(int *a1, _DWORD *a2); char __cdecl WXML::DOMLib::Token::IsValidVariableName(char **a1); // bool __userpurge WXML::DOMLib::Token::IsMatch@(int a1@, WXML::DOMLib::Token *this, const char *a3); _DWORD *__fastcall WXML::DOMLib::Token::ToString[abi:cxx11](int a1); _DWORD *__thiscall WXML::DOMLib::Token::Token(_DWORD *this, int a2); // _BYTE *__userpurge WXML::DOMLib::Token::Token@(int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3); // _BYTE *__userpurge WXML::DOMLib::Token::Token@(int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3); int __thiscall WXML::DOMLib::Token::operator=(int this, int a2); int __thiscall WXML::DOMLib::Token::operator=(int this, int a2); int __fastcall WXML::DOMLib::Parser::Parser(int a1); char __thiscall WXML::DOMLib::WXMLDom::IfHasItsElse(_DWORD *this, signed int a2, int *a3); int __cdecl WXML::DOMLib::WXMLDom::ToCamelStyle(int a1, int a2); char __fastcall WXML::DOMLib::WXMLDom::HasSpAttrPrefix(int a1); int __thiscall WXML::DOMLib::WXMLDom::MarkIfHasDescendant(int this, int *a2); void __thiscall WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(_DWORD *this, int *a2); unsigned int __thiscall WXML::DOMLib::WXMLDom::Print(_DWORD *this, int a2, char *a3, char *a4); void __thiscall WXML::DOMLib::WXMLDom::PrintMe(int this, int a2, char *a3, char *a4); int __fastcall WXML::DOMLib::WXMLDom::WXMLDom(int a1); std::ostream::sentry *__thiscall WXML::DOMLib::StrCache::RenderPathDefine(_DWORD *this, int a2); _BYTE *__thiscall WXML::DOMLib::StrCache::Insert(_DWORD *this, int a2); int __thiscall WXML::DOMLib::StrCache::GetStrID(_DWORD *this, int a2); void __fastcall WXML::EXPRLib::NonTerminal::~NonTerminal(void *a1); void __fastcall WXML::EXPRLib::EPS::~EPS(void *a1); // int __userpurge WXML::EXPRLib::Token::Token@(int a1@, _DWORD *a2@, WXML::EXPRLib::Token *this, const WXML::EXPRLib::Token *a4); // int __userpurge WXML::EXPRLib::Token::Token@(_DWORD *a1@, WXML::EXPRLib::Token *this, const WXML::EXPRLib::Token *a3); int __fastcall WXML::EXPRLib::Token::Token(_DWORD *a1); int __fastcall WXML::EXPRLib::Action::Action(int a1); void __fastcall WXML::EXPRLib::Action::~Action(void **a1); void __fastcall WXML::EXPRLib::Action::~Action(void **a1); void __thiscall WXML::EXPRLib::Action::~Action(void **ecx0, WXML::EXPRLib::Action *this); int __fastcall WXML::EXPRLib::Terminal::Terminal(int a1); void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1); void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1); void __thiscall WXML::EXPRLib::Terminal::~Terminal(void **ecx0, WXML::EXPRLib::Terminal *this); void __thiscall WXML::EXPRLib::Terminal::~Terminal(void **ecx0, WXML::EXPRLib::Terminal *this); unsigned int *__thiscall night::NSASTParse::NSASTParse(int this, int a2, int a3, int a4); int __thiscall night::ns_sourcemap::ns_sourcemap(_DWORD *this, _DWORD *a2); bool __cdecl night::NSToken::rw_cb_number(night::NSToken *this, _BYTE *a2); char __cdecl night::NSToken::tk_is_comment2(night::NSToken *this, night::NSStream *a2); int __cdecl night::NSToken::tk_is_var_start(unsigned int this); bool __cdecl night::NSToken::tk_is_whitespace(night::NSToken *this); char __cdecl night::NSToken::tk_is_valid_op_str(night::NSToken *this, int a2); bool __cdecl night::NSToken::tk_is_not_line_break(night::NSToken *this); _DWORD *__thiscall night::NSToken::get_tokens_for_sourcemap(_DWORD *this, _DWORD *a2, _DWORD *a3); int __cdecl night::NSToken::tk_is_var(night::NSToken *this); void **__thiscall night::ns_node::debug_no_space[abi:cxx11](void **this, const char **a2); void **__gnu_cxx::__to_xstring(void **a1, int (__cdecl *a2)(unsigned __int8 *, int, int, char *), int a3, 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 WXML::EXPRLib::NonTerminal::GetClass(); int WXML::EXPRLib::EPS::GetClass(); int WXML::EXPRLib::Action::GetClass(); int WXML::EXPRLib::Terminal::GetClass(); 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); const char *std::bad_function_call::what(); 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); BOOL __thiscall std::map::count(_DWORD *this, int a2); _DWORD *__thiscall std::map>::at(_DWORD *this, int a2); BOOL __thiscall std::map::count(_DWORD *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 __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 __thiscall std::function::operator()(int this, char a2, char a3); 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@, int a2, int a3); void __cdecl std::_Destroy_aux::__destroy(void **a1, char **a2); // int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **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); char *__thiscall std::_Vector_base::_M_create_storage(_DWORD *this, unsigned int a2); 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); _DWORD *__thiscall std::__shared_ptr::operator=(_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); _DWORD *__thiscall std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::operator=(_DWORD *this, int *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); void *__fastcall std::_Bvector_base>::_M_deallocate(int 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::_Rb_tree_header::_Rb_tree_header(_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 a2); 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); 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); int *__fastcall std::_Rb_tree_iterator>>::operator++(int *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); void __fastcall std::bad_function_call::~bad_function_call(_DWORD *a1); void __cdecl std::bad_function_call::~bad_function_call(std::exception *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); _DWORD *__cdecl std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>(int a1, int a2, _DWORD *a3); _DWORD *__cdecl std::__uninitialized_copy::__uninit_copy(_DWORD *a1, _DWORD *a2, _DWORD *a3); 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::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::_M_destroy(void *a1); int __fastcall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::_M_dispose(int a1); char *__thiscall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::_M_get_deleter(char *this, _DWORD *a2); void __fastcall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace(void *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); int __thiscall std::map::erase(_DWORD *this, int a2); char *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::map::operator[](_DWORD *this, int a2); _DWORD *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::map::operator[](_DWORD *this, int a2); _DWORD *__thiscall std::map,std::allocator>>>::operator[](_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::map,std::allocator>>>::operator[](_DWORD *this, int a2); char *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::map>::operator[](_DWORD *this, _DWORD *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, int a2); _DWORD *__thiscall std::map>>::operator[](_DWORD *this, _DWORD *a2); char *__thiscall std::map>>::operator[](_DWORD *this, int *a2); char *__thiscall std::map::operator[](_DWORD *this, int *a2); _DWORD *__thiscall std::set::insert(_DWORD *this, int a2); int __thiscall std::pair::swap(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::pair::pair(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::pair::operator=(_DWORD *this, _DWORD *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>::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 void __fastcall std::deque::pop_back(_DWORD *a1); 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); _DWORD *__thiscall std::vector>::_M_erase(_DWORD *this, _DWORD *a2); 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(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); int __thiscall std::vector::_M_realloc_insert(_DWORD *this, char *a2, _DWORD *a3); _BYTE *__thiscall std::vector::push_back(_DWORD *this, _DWORD *a2); void *__thiscall std::vector::_M_realloc_insert(void **this, int a2, WXML::DOMLib::Token *a3); _BYTE *__thiscall std::vector::push_back(int this, WXML::DOMLib::Token *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); _DWORD *__thiscall std::vector::_M_realloc_insert(char **this, char *a2, WXML::EXPRLib::Token *a3); unsigned int __thiscall std::vector::_M_realloc_insert(char **this, char *a2, _DWORD *a3); int __thiscall std::vector::at(_DWORD *this, unsigned int a2); int __thiscall std::vector::push_back(char **this, _DWORD *a2); void __thiscall std::vector::emplace_back(void ***this, _DWORD *a2); _DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); // weak char *__thiscall std::vector::_M_realloc_insert(_DWORD *this, char *a2, _DWORD *a3); _BYTE *__thiscall std::vector::push_back(_DWORD *this, int a2); int __thiscall std::vector::operator=(int this, int *a2); char *__thiscall std::vector::_M_realloc_insert(void **this, _BYTE *a2, _DWORD *a3); char *__thiscall std::vector::push_back(int this, _DWORD *a2); char *__thiscall std::vector::emplace_back(void **this, _DWORD *a2); int __thiscall std::vector::at(_DWORD *this, unsigned int a2); char *__thiscall std::vector::push_back(void **this, _DWORD *a2); char *__thiscall std::vector>>::_M_realloc_insert> const&>(void **this, _BYTE *a2, _DWORD *a3); int __thiscall std::vector>>::at(_DWORD *this, unsigned int a2); char *__thiscall std::vector>>::push_back(int this, _DWORD *a2); char **__thiscall std::vector>::_M_realloc_insert>(char **this, char *a2, _DWORD *a3); char *__thiscall std::vector>::emplace_back>(_DWORD *this, _DWORD *a2); char *__thiscall std::vector>::_M_realloc_insert>(_DWORD *this, char *a2, _DWORD *a3); int __thiscall std::vector>::emplace_back>(int this, _DWORD *a2); int __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); char *__thiscall std::vector::_M_realloc_insert(void **this, _BYTE *a2, _DWORD *a3); char *__thiscall std::vector::push_back(int this, _DWORD *a2); 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 **__cdecl std::to_string(void **this, unsigned int a2); 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); int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos(_DWORD *this, int a2); int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); void __stdcall std::_Rb_tree,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); void __stdcall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(void *a1); void **__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>(_DWORD *this, int a2); 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>>::equal_range(_DWORD *this, int a2); _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, char **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); _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find(_DWORD *this, int a2); int __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int 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); 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); _DWORD *__thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); int __thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); int __thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); void __stdcall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,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); _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 *__stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(int *a1, int 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>>>::_Rb_tree(_DWORD *this, int a2); _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); 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); _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find(_DWORD *this, int a2); int __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(int a1, int a2, int a3); void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(void **a1); void **__thiscall std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_M_emplace_unique,std::string>>(_DWORD *this, _DWORD *a2); void __stdcall std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_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); 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, unsigned int *a3); int __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(int a1, int a2, int a3); void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(void **a1); int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_insert_unique(_DWORD *this, _DWORD *a2); _DWORD *__stdcall std::_Rb_tree,std::less,std::allocator>::_M_copy,std::less,std::allocator>::_Alloc_node>(int *a1, int a2, int a3); void __stdcall std::_Rb_tree,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 __cdecl std::__pop_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(_DWORD *a1, int a2, _DWORD *a3, unsigned __int8 (__cdecl **a4)(int, int)); void __noreturn std::unexpected(void); // idb void __cdecl std::__make_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(int a1, int a2, unsigned __int8 (__cdecl **a3)(int, int)); void __cdecl std::__adjust_heap<__gnu_cxx::__normal_iterator *,std::vector>>,int,std::pair,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(int a1, int a2, int a3, _DWORD *a4, unsigned __int8 (__cdecl *a5)(int, int)); 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, ...); void __cdecl std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(char *a1, char *a2, int (__cdecl *a3)(void **, char *)); int __cdecl std::__introsort_loop<__gnu_cxx::__normal_iterator *,std::vector>>,int,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(_DWORD *a1, int a2, int a3, unsigned __int8 (__cdecl *a4)(int, int)); 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, ...); void __cdecl std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Val_comp_iter const&,std::pair const&)>>(_DWORD *a1, int (__cdecl *a2)(void **, _DWORD *)); 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); void __cdecl std::sort<__gnu_cxx::__normal_iterator *,std::vector>>,bool (*)(std::pair const&,std::pair const&)>(char *a1, char *a2, unsigned __int8 (__cdecl *a3)(int, int)); _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::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>(int a1, int a2, int a3); int __cdecl std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>(int a1, int a2, char **a3); int __cdecl std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>(int a1, int a2, int a3); 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==(char *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); bool __cdecl std::operator<(int a1, int a2); int __cdecl std::operator!=(char *a1, int a2); // idb int __cdecl std::operator!=(int a1, char *a2); // idb int __cdecl std::operator!=(int a1, int a2); _DWORD *__cdecl std::operator+(_DWORD *a1, _DWORD *a2, unsigned int *a3); _DWORD *__cdecl std::operator+(_DWORD *a1, char *a2, unsigned int *a3); int __cdecl std::operator+(int a1, char *a2, int a3); _DWORD *__cdecl std::operator+(_DWORD *a1, int a2, char *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_5(); // idb void __cdecl __tcf_0_6(); // idb void __cdecl __tcf_0_7(); // idb void __cdecl __tcf_0_8(); // idb void __cdecl __tcf_0_9(std::_V2::error_category *a1); void __cdecl __tcf_0_10(); // idb void __cdecl __tcf_1_5(); // idb int __cdecl main(int argc, const char **argv, const char **envp); int _GLOBAL__sub_I_sCliVersion(); int _GLOBAL__sub_I__ZN5night8NSStreamC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_j(); unsigned int __thiscall std::string::basic_string(void **this, char *a2); int _GLOBAL__sub_I__ZN5night9sourcemap21gen_sourcemap_contentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt3mapIS6_jSt4lessIS6_ESaISt4pairIS7_jEEES9_IjS6_SA_IjESaISC_IKjS6_EEERSt6vectorINS_12ns_sourcemapESaISM_EEiRS6_PS6_(); unsigned int __thiscall std::string::basic_string(void **this, char *a2); int _GLOBAL__sub_I__ZN5night3str12path_combineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_RS6_(); int _GLOBAL__sub_I__ZN4WXML8Compiler9GetFuncIdERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS7_ESaISt4pairIKS7_iEEERSB_(); int _GLOBAL__sub_I__ZN4WXML6DOMLib7WXMLDom12componentCntE(); int _GLOBAL__sub_I__ZN4WXML6DOMLib7Machine5ResetEv(); int _GLOBAL__sub_I__ZN4WXML8Compiler24CalculateOutputChunkKeysERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKS7_RKSt3mapIS7_S9_St4lessIS7_ESaISt4pairISC_S9_EEESM_RSK_(); int _GLOBAL__sub_I__ZN4WXML7EXPRLib7OPShort5CONSTE(); int _GLOBAL__sub_I__ZNK4WXML7EXPRLib5Token12GetTokenNameEv(); int _GLOBAL__sub_I__ZN4WXML7EXPRLib12TransitTable13GetExprNTTypeEv(); int _GLOBAL__sub_I__ZN4WXML16StringTemplating4DealEPKcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorINS0_5TokenESaISB_EERb(); 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(); 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::__throw_bad_function_call(void); // 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 __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 _UNKNOWN loc_460000; // weak _UNKNOWN loc_49FFFE; // weak char byte_50001F = '\x90'; // weak func_ptr __CTOR_LIST__[] = { (func_ptr)0xFFFFFFFF }; // idb int (__cdecl *_data_start__)(_DWORD) = NULL; // weak char *sCliVersion = "20230804"; // weak int WXML::RPX::acceptNum(char const*,int &)::canAccept[266] = { 65536, 1, 0, 16777472, 5359489, 5430432, 5433510, 5433513, 5433516, 5433519, 5433521, 5433523, 5433525, 5433527, 5433529, 5433531, 5433533, 5433535, 2, -3, 16384, 5270508, -1, 64, -16445, 16320, 1, 0, 7907904, 24, -149, 104, 1, 0, 4, 4, 0, 0, 4, 4, 0, 0, 64, -16445, 16320, 1, 0, 4, 4, 0, 0, 4, 4, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4611792, 5226384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 5359489, 5430432, 5433510, 5433513, 5433516, 5433519, 5433521, 5433523, 5433525, 5433527, 5433529, 5433531, 5433533, 5433535, 2, -3, 16384, 5270508, -1, 64, -16445, 16320, 1, 0, 7907904, 24, -149, 104, 1, 0, 4, 4, 0, 0, 4, 4, 0, 0, 64, -16445, 16320, 1, 0, 4, 4, 0, 0, 4, 4, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4611792, 5226384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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] = { -947846912, -593493935, -391774126, -391577518, -391380910, -391184302, -391053230, -390922158, -390791086, -390660014, -390528942, -390397870, -390266798, -390135726, 131154, -196608, 1073807359, 1810628608, -65456, 4259839, -1077739520, 1069613055, 65536, 0, -1438646272, 1572984, -9764864, 6881279, 65536, 0, 262144, 262144, 0, 0, 262144, 262144, 0, 0, 4194304, -1077739520, 1069613055, 65536, 0, 262144, 262144, 0, 0, 262144, 262144, 0, 0, 0, -65536, 65535, -65536, 65535, -65536, 65535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1590689792, -1081081786, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 *night::sourcemap::g_sVLQ[14] = { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890", "12", "11", "10", "9", "8", "7", "6", "5", "4", "3", "2", "1" }; // weak char *WXML::NameAllocator::ALPAHBET[13] = { "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890", "12", "11", "10", "9", "8", "7", "6", "5", "4", "3", "2", "1" }; // weak char *WXML::EXPRLib::OPShort::DO_FUNC = "12"; // idb char *WXML::EXPRLib::OPShort::CS_GLOBAL[11] = { "11", "10", "9", "8", "7", "6", "5", "4", "3", "2", "1" }; // weak char *WXML::EXPRLib::OPShort::EX_DICT = "10"; // idb char *WXML::EXPRLib::OPShort::UNION_KV = "9"; // idb char *WXML::EXPRLib::OPShort::MAKE_KV = "8"; // idb char *WXML::EXPRLib::OPShort::GET_FROM_ENV = "7"; // idb char *WXML::EXPRLib::OPShort::GET_NAME = "6"; // idb char *WXML::EXPRLib::OPShort::CON_LIST = "5"; // idb char *WXML::EXPRLib::OPShort::MAKE_LIST = "4"; // idb char *WXML::EXPRLib::OPShort::NAME = "3"; // idb char *WXML::EXPRLib::OPShort::AOP = "2"; // idb char *WXML::EXPRLib::OPShort::CONST = "1"; // idb int _CRT_glob = 2; // weak fenv_t *_CRT_fenv = (fenv_t *)0xFFFFFFFD; // idb int _fmode = 16384; int *off_51505C = &dword_506BEC; // weak int dword_515060 = -1; // weak int dword_515064[5] = { 64, -16445, 16320, 1, 0 }; // weak void *off_515078 = &unk_78AA40; // weak int dword_51507C[5] = { 24, -149, 104, 1, 0 }; // weak size_t dword_515090[4] = { 4u, 4u, 0u, 0u }; // weak size_t dword_5150A0[4] = { 4u, 4u, 0u, 0u }; // weak int dword_5150B0[5] = { 64, -16445, 16320, 1, 0 }; // weak size_t dword_5150C4[4] = { 4u, 4u, 0u, 0u }; // weak size_t dword_5150D4[4] = { 4u, 4u, 0u, 0u }; // weak int once_regsizes_22907 = 0; // weak LONG Addend = -1; // idb int once_22341 = 0; // weak LONG dword_5150F0 = -1; // idb int once_21263 = 0; // weak LONG dword_5150F8 = -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'WXML::EXPRLib::TransitTable::GetInstance(void)::ret = 0; // idb _UNKNOWN eh_globals; // weak __gthread_key_t init = 0u; // idb char byte_51526C = '\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_5152AC = 0; // weak int dword_5152B0 = 0; // weak _UNKNOWN `anonymous namespace'::numpunct_w; // weak int dword_5152B8 = 0; // weak int dword_5152BC = 0; // weak _UNKNOWN `anonymous namespace'::time_get_c; // weak int dword_5152C4 = 0; // weak _UNKNOWN `anonymous namespace'::time_get_w; // weak int dword_5152CC = 0; // weak _UNKNOWN `anonymous namespace'::time_put_c; // weak int dword_5152D4 = 0; // weak _UNKNOWN `anonymous namespace'::time_put_w; // weak int dword_5152DC = 0; // weak _UNKNOWN `anonymous namespace'::codecvt_c16; // weak int dword_5152E4 = 0; // weak _UNKNOWN `anonymous namespace'::codecvt_c32; // weak int dword_5152EC = 0; // weak _UNKNOWN `anonymous namespace'::money_get_c; // weak int dword_5152F4 = 0; // weak _UNKNOWN `anonymous namespace'::money_get_w; // weak int dword_5152FC = 0; // weak _UNKNOWN `anonymous namespace'::money_put_c; // weak int dword_515304 = 0; // weak _UNKNOWN `anonymous namespace'::money_put_w; // weak int dword_51530C = 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_515354 = 0; // weak int dword_515358 = 0; // weak _UNKNOWN `anonymous namespace'::moneypunct_ct; // weak int dword_515360 = 0; // weak int dword_515364 = 0; // weak _UNKNOWN `anonymous namespace'::moneypunct_wf; // weak int dword_51536C = 0; // weak int dword_515370 = 0; // weak _UNKNOWN `anonymous namespace'::moneypunct_wt; // weak int dword_515378 = 0; // weak int dword_51537C = 0; // weak _UNKNOWN `anonymous namespace'::codecvt_c16_c8; // weak int dword_515384 = 0; // weak _UNKNOWN `anonymous namespace'::codecvt_c32_c8; // weak int dword_51538C = 0; // weak __gthread_mutex_t `anonymous namespace'::emergency_pool = { 0, NULL }; // idb int dword_515398 = 0; // weak int dword_51539C = 0; // weak int dword_5153A0 = 0; // weak int `anonymous namespace'::numpunct_cache_c = 0; // weak int dword_5153C4 = 0; // weak int dword_5153C8 = 0; // weak int dword_5153CC = 0; // weak char byte_5153D0 = '\0'; // weak int dword_5153D4 = 0; // weak int dword_5153D8 = 0; // weak int dword_5153DC = 0; // weak int dword_5153E0 = 0; // weak __int16 word_5153E4 = 0; // weak char byte_515424 = '\0'; // weak int `anonymous namespace'::numpunct_cache_w = 0; // weak int dword_515444 = 0; // weak int dword_515448 = 0; // weak int dword_51544C = 0; // weak char byte_515450 = '\0'; // weak int dword_515454 = 0; // weak int dword_515458 = 0; // weak int dword_51545C = 0; // weak int dword_515460 = 0; // weak int dword_515464 = 0; // weak char byte_5154E4 = '\0'; // weak int `anonymous namespace'::timepunct_cache_c = 0; // weak int dword_515504 = 0; // weak int dword_515508 = 0; // weak int dword_51550C = 0; // weak int dword_515510 = 0; // weak int dword_515514 = 0; // weak int dword_515518 = 0; // weak int dword_51551C = 0; // weak int dword_515520 = 0; // weak int dword_515524 = 0; // weak int dword_515528 = 0; // weak int dword_51552C = 0; // weak int dword_515530 = 0; // weak int dword_515534 = 0; // weak int dword_515538 = 0; // weak int dword_51553C = 0; // weak int dword_515540 = 0; // weak int dword_515544 = 0; // weak int dword_515548 = 0; // weak int dword_51554C = 0; // weak int dword_515550 = 0; // weak int dword_515554 = 0; // weak int dword_515558 = 0; // weak int dword_51555C = 0; // weak int dword_515560 = 0; // weak int dword_515564 = 0; // weak int dword_515568 = 0; // weak int dword_51556C = 0; // weak int dword_515570 = 0; // weak int dword_515574 = 0; // weak int dword_515578 = 0; // weak int dword_51557C = 0; // weak int dword_515580 = 0; // weak int dword_515584 = 0; // weak int dword_515588 = 0; // weak int dword_51558C = 0; // weak int dword_515590 = 0; // weak int dword_515594 = 0; // weak int dword_515598 = 0; // weak int dword_51559C = 0; // weak int dword_5155A0 = 0; // weak int dword_5155A4 = 0; // weak int dword_5155A8 = 0; // weak int dword_5155AC = 0; // weak int dword_5155B0 = 0; // weak int dword_5155B4 = 0; // weak int dword_5155B8 = 0; // weak int dword_5155BC = 0; // weak int dword_5155C0 = 0; // weak char byte_5155C4 = '\0'; // weak int `anonymous namespace'::timepunct_cache_w = 0; // weak int dword_5155E4 = 0; // weak int dword_5155E8 = 0; // weak int dword_5155EC = 0; // weak int dword_5155F0 = 0; // weak int dword_5155F4 = 0; // weak int dword_5155F8 = 0; // weak int dword_5155FC = 0; // weak int dword_515600 = 0; // weak int dword_515604 = 0; // weak int dword_515608 = 0; // weak int dword_51560C = 0; // weak int dword_515610 = 0; // weak int dword_515614 = 0; // weak int dword_515618 = 0; // weak int dword_51561C = 0; // weak int dword_515620 = 0; // weak int dword_515624 = 0; // weak int dword_515628 = 0; // weak int dword_51562C = 0; // weak int dword_515630 = 0; // weak int dword_515634 = 0; // weak int dword_515638 = 0; // weak int dword_51563C = 0; // weak int dword_515640 = 0; // weak int dword_515644 = 0; // weak int dword_515648 = 0; // weak int dword_51564C = 0; // weak int dword_515650 = 0; // weak int dword_515654 = 0; // weak int dword_515658 = 0; // weak int dword_51565C = 0; // weak int dword_515660 = 0; // weak int dword_515664 = 0; // weak int dword_515668 = 0; // weak int dword_51566C = 0; // weak int dword_515670 = 0; // weak int dword_515674 = 0; // weak int dword_515678 = 0; // weak int dword_51567C = 0; // weak int dword_515680 = 0; // weak int dword_515684 = 0; // weak int dword_515688 = 0; // weak int dword_51568C = 0; // weak int dword_515690 = 0; // weak int dword_515694 = 0; // weak int dword_515698 = 0; // weak int dword_51569C = 0; // weak int dword_5156A0 = 0; // weak char byte_5156A4 = '\0'; // weak int `anonymous namespace'::moneypunct_cache_cf = 0; // weak int dword_5156C4 = 0; // weak int dword_5156C8 = 0; // weak int dword_5156CC = 0; // weak __int16 word_5156D0 = 0; // weak char byte_5156D2 = '\0'; // weak int dword_5156D4 = 0; // weak int dword_5156D8 = 0; // weak int dword_5156DC = 0; // weak int dword_5156E0 = 0; // weak int dword_5156E4 = 0; // weak int dword_5156E8 = 0; // weak int dword_5156EC = 0; // weak int dword_5156F0 = 0; // weak int dword_5156F4 = 0; // weak char byte_515703 = '\0'; // weak int `anonymous namespace'::moneypunct_cache_ct = 0; // weak int dword_515724 = 0; // weak int dword_515728 = 0; // weak int dword_51572C = 0; // weak __int16 word_515730 = 0; // weak char byte_515732 = '\0'; // weak int dword_515734 = 0; // weak int dword_515738 = 0; // weak int dword_51573C = 0; // weak int dword_515740 = 0; // weak int dword_515744 = 0; // weak int dword_515748 = 0; // weak int dword_51574C = 0; // weak int dword_515750 = 0; // weak int dword_515754 = 0; // weak char byte_515763 = '\0'; // weak int `anonymous namespace'::moneypunct_cache_wf = 0; // weak int dword_515784 = 0; // weak int dword_515788 = 0; // weak int dword_51578C = 0; // weak char byte_515790 = '\0'; // weak int dword_515792 = 0; // weak int dword_515798 = 0; // weak int dword_51579C = 0; // weak int dword_5157A0 = 0; // weak int dword_5157A4 = 0; // weak int dword_5157A8 = 0; // weak int dword_5157AC = 0; // weak int dword_5157B0 = 0; // weak int dword_5157B4 = 0; // weak int dword_5157B8 = 0; // weak char byte_5157D2 = '\0'; // weak int `anonymous namespace'::moneypunct_cache_wt = 0; // weak int dword_5157E4 = 0; // weak int dword_5157E8 = 0; // weak int dword_5157EC = 0; // weak char byte_5157F0 = '\0'; // weak int dword_5157F2 = 0; // weak int dword_5157F8 = 0; // weak int dword_5157FC = 0; // weak int dword_515800 = 0; // weak int dword_515804 = 0; // weak int dword_515808 = 0; // weak int dword_51580C = 0; // weak int dword_515810 = 0; // weak int dword_515814 = 0; // weak int dword_515818 = 0; // weak char byte_515832 = '\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_515D7C; // 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_515E5C = 0; // weak int dword_515E60 = 0; // weak _UNKNOWN `anonymous namespace'::collate_w; // weak int dword_515E68 = 0; // weak int dword_515E6C = 0; // weak _UNKNOWN `anonymous namespace'::facet_vec; // weak _UNKNOWN `anonymous namespace'::num_get_c; // weak int dword_515F44 = 0; // weak _UNKNOWN `anonymous namespace'::num_get_w; // weak int dword_515F4C = 0; // weak _UNKNOWN `anonymous namespace'::num_put_c; // weak int dword_515F54 = 0; // weak _UNKNOWN `anonymous namespace'::num_put_w; // weak int dword_515F5C = 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_5377D4, &off_5377FC }; // weak void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this) = &off_5377FC; // weak _UNKNOWN __gnu_internal::buf_cin_sync; // weak int dword_515F84 = 0; // weak int dword_515F88 = 0; // weak int dword_515F8C = 0; // weak int dword_515F90 = 0; // weak int dword_515F94 = 0; // weak int dword_515F98 = 0; // weak _DWORD dword_515F9C = 0; // weak int dword_515FA0 = 0; // weak int dword_515FA4 = 0; // weak _UNKNOWN __gnu_internal::buf_cerr_sync; // weak int dword_515FC4 = 0; // weak int dword_515FC8 = 0; // weak int dword_515FCC = 0; // weak int dword_515FD0 = 0; // weak int dword_515FD4 = 0; // weak int dword_515FD8 = 0; // weak _DWORD dword_515FDC = 0; // weak int dword_515FE0 = 0; // weak int dword_515FE4 = 0; // weak _UNKNOWN __gnu_internal::buf_cout_sync; // weak int dword_516004 = 0; // weak int dword_516008 = 0; // weak int dword_51600C = 0; // weak int dword_516010 = 0; // weak int dword_516014 = 0; // weak int dword_516018 = 0; // weak _DWORD dword_51601C = 0; // weak int dword_516020 = 0; // weak int dword_516024 = 0; // weak _UNKNOWN __gnu_internal::buf_wcin_sync; // weak int dword_516044 = 0; // weak int dword_516048 = 0; // weak int dword_51604C = 0; // weak int dword_516050 = 0; // weak int dword_516054 = 0; // weak int dword_516058 = 0; // weak _DWORD dword_51605C = 0; // weak int dword_516060 = 0; // weak __int16 word_516064 = 0; // weak _UNKNOWN __gnu_internal::buf_wcerr_sync; // weak int dword_516084 = 0; // weak int dword_516088 = 0; // weak int dword_51608C = 0; // weak int dword_516090 = 0; // weak int dword_516094 = 0; // weak int dword_516098 = 0; // weak _DWORD dword_51609C = 0; // weak int dword_5160A0 = 0; // weak __int16 word_5160A4 = 0; // weak _UNKNOWN __gnu_internal::buf_wcout_sync; // weak int dword_5160C4 = 0; // weak int dword_5160C8 = 0; // weak int dword_5160CC = 0; // weak int dword_5160D0 = 0; // weak int dword_5160D4 = 0; // weak int dword_5160D8 = 0; // weak _DWORD dword_5160DC = 0; // weak int dword_5160E0 = 0; // weak __int16 word_5160E4 = 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_51640C; // weak unsigned int std::string::_Rep::_S_empty_rep_storage = 0u; // idb _UNKNOWN unk_51641C; // 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_516448[3] = { 0, 0, 0 }; // weak _DWORD std::`anonymous namespace'::messages_w = 0; // weak signed __int32 dword_516458[3] = { 0, 0, 0 }; // weak int std::`anonymous namespace'::numpunct_c = 0; // weak int dword_516468 = 0; // weak int dword_51646C = 0; // weak int std::`anonymous namespace'::numpunct_w = 0; // weak int dword_516474 = 0; // weak int dword_516478 = 0; // weak int std::`anonymous namespace'::time_get_c = 0; // weak int dword_516480 = 0; // weak int std::`anonymous namespace'::time_get_w = 0; // weak int dword_516488 = 0; // weak int std::`anonymous namespace'::money_get_c = 0; // weak int dword_516490 = 0; // weak int std::`anonymous namespace'::money_get_w = 0; // weak int dword_516498 = 0; // weak int std::`anonymous namespace'::money_put_c = 0; // weak int dword_5164A0 = 0; // weak int std::`anonymous namespace'::money_put_w = 0; // weak int dword_5164A8 = 0; // weak int std::`anonymous namespace'::moneypunct_cf = 0; // weak int dword_5164B0 = 0; // weak int dword_5164B4 = 0; // weak int std::`anonymous namespace'::moneypunct_ct = 0; // weak int dword_5164BC = 0; // weak int dword_5164C0 = 0; // weak int std::`anonymous namespace'::moneypunct_wf = 0; // weak int dword_5164C8 = 0; // weak int dword_5164CC = 0; // weak int std::`anonymous namespace'::moneypunct_wt = 0; // weak int dword_5164D4 = 0; // weak int dword_5164D8 = 0; // weak int std::`anonymous namespace'::collate_c = 0; // weak int dword_5164E0 = 0; // weak int dword_5164E4 = 0; // weak int std::`anonymous namespace'::collate_w = 0; // weak int dword_5164EC = 0; // weak int dword_5164F0 = 0; // weak void *std::__timepunct_cache::_S_timezones[2] = { &off_53079E, &off_5307A2 }; // weak void *std::__timepunct_cache::_S_timezones[2] = { &off_530734, &off_53073C }; // 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_516664 = 0; // weak int dword_516668[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_5166D8 = 0; // weak __int16 word_5166DC = 0; // weak int dword_5166E0 = 0; // weak int dword_5166E4 = 0; // weak int dword_5166E8 = 0; // weak int dword_5166EC = 0; // weak int std::cerr = 0; // weak int dword_516704 = 0; // weak int dword_516710 = 0; // weak int dword_516774 = 0; // weak __int16 word_516778 = 0; // weak int dword_51677C = 0; // weak int dword_516780 = 0; // weak int dword_516784 = 0; // weak int dword_516788 = 0; // weak int std::clog = 0; // weak int dword_5167A4[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_516814 = 0; // weak __int16 word_516818 = 0; // weak int dword_51681C = 0; // weak int dword_516820 = 0; // weak int dword_516824 = 0; // weak int dword_516828 = 0; // weak int std::cout = 0; // weak int dword_516844[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_5168B4 = 0; // weak __int16 word_5168B8 = 0; // weak int dword_5168BC = 0; // weak int dword_5168C0 = 0; // weak int dword_5168C4 = 0; // weak int dword_5168C8 = 0; // weak int std::wcin = 0; // weak int dword_5168E4 = 0; // weak int dword_5168E8[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_516958 = 0; // weak __int16 word_51695C = 0; // weak char byte_51695E = '\0'; // weak int dword_516960 = 0; // weak int dword_516964 = 0; // weak int dword_516968 = 0; // weak int dword_51696C = 0; // weak int std::wcerr = 0; // weak int dword_516984 = 0; // weak int dword_516990 = 0; // weak int dword_5169F4 = 0; // weak __int16 word_5169F8 = 0; // weak char byte_5169FA = '\0'; // weak int dword_5169FC = 0; // weak int dword_516A00 = 0; // weak int dword_516A04 = 0; // weak int dword_516A08 = 0; // weak int std::wclog = 0; // weak int dword_516A24[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_516A94 = 0; // weak __int16 word_516A98 = 0; // weak char byte_516A9A = '\0'; // weak int dword_516A9C = 0; // weak int dword_516AA0 = 0; // weak int dword_516AA4 = 0; // weak int dword_516AA8 = 0; // weak int std::wcout = 0; // weak int dword_516AC4[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_516B34 = 0; // weak __int16 word_516B38 = 0; // weak char byte_516B3A = '\0'; // weak int dword_516B3C = 0; // weak int dword_516B40 = 0; // weak int dword_516B44 = 0; // weak int dword_516B48 = 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_5377AC; // weak __gthread_mutex_t `anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex = { 0, NULL }; // idb _DWORD WXML::EXPRLib::TransitTable::GetInstance(void)::ret = 0; // weak int dword_516B80 = 0; // weak void *dword_516B84 = NULL; // idb int dword_516B88 = 0; // weak int dword_516B8C = 0; // weak int dword_516B90 = 0; // weak char byte_516B94 = '\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_5173B0 = '\0'; // idb void *off_517814 = &unk_5F766E; // weak void *off_517818 = &unk_5F746E; // weak void *off_517826 = &unk_726176; // weak void *off_51782A = &unk_727473; // weak void *off_51782E = &unk_6D756E; // weak void *off_517868 = &unk_762D6B; // weak void *off_5178A8 = &unk_726F66; // weak char aUndefinedTypeo[14691] = "\"undefined\"!=typeof __WXML_GLOBAL__&&void 0!==__WXML_GLOBAL__.wxs_nf_init||(Object.defineProperty(Object.prototype,\"nv_constructor\",{writable:!0,value:\"Object\"}),Object.defineProperty(Object.prototype,\"nv_toString\",{writable:!0,value:function(){return\"[object Object]\"}}),Object.defineProperty(Function.prototype,\"nv_constructor\",{writable:!0,value:\"Function\"}),Object.defineProperty(Function.prototype,\"nv_length\",{get:function(){return this.length},set:function(){}}),Object.defineProperty(Function.prototype,\"nv_toString\",{writable:!0,value:function(){return\"[function Function]\"}}),Object.defineProperty(Array.prototype,\"nv_toString\",{writable:!0,value:function(){return this.nv_join()}}),Object.defineProperty(Array.prototype,\"nv_join\",{writable:!0,value:function(e){e=null==e?\",\":e;for(var t=\"\",r=0;r=16e3){throw\"Dom limit exceeded, please check if there's any mistake you've made.\"}return{tag:\"wx-\"+e,attr:{},children:[],n:[],raw:{},generics:{}}}function e(e,t){t&&e.properities.push(t)}function t(e,t,r){return typeof e[r]!=\"undefined\"?e[r]:t[r]}function u(e){console.warn(\"WXMLRT_\"+g+\":\"+e)}function r(e,t){u(t+\":-1:-1:-1: Template `\"+e+\"` is being called recursively, will be stop.\")}var s=console.warn;var n=console.log;function o(){function e(){}e.prototype={hn:function(e,t){if(typeof e==\"object\"){var r=0;var n=false,o=false;for(var a in e){n=n|a===\"__value__\";o=o|a===\"__wxspec__\";r++;if(r>2)break}return r==2&&n&&o&&(t||e.__wxspec__!==\"m\"||this.hn(e.__value__)===\"h\")?\"h\":\"n\"}return\"n\"},nh:function(e,t){return{__value__:e,__wxspec__:t?t:true}},rv:function(e){return this.hn(e,true)===\"n\"?e:this.rv(e.__value__)},hm:function(e){if(typeof e==\"object\"){var t=0;var r=false,n=false;for(var o in e){r=r|o===\"__value__\";n=n|o===\"__wxspec__\";t++;if(t>2)break}return t==2&&r&&n&&(e.__wxspec__===\"m\"||this.hm(e.__value__))}return false}};return new e}var A=o();function T(e){var t=e.split(\"\\n \"+\" \"+\" \"+\" \");for(var r=0;r=\":case\"<=\":case\">\":case\"<\":case\"<<\":case\">>\":p=x(e[1],t,r,n,o,a);u=x(e[2],t,r,n,o,a);l=M&&(A.hn(p)===\"h\"||A.hn(u)===\"h\");switch(i){case\"+\":f=A.rv(p)+A.rv(u);break;case\"*\":f=A.rv(p)*A.rv(u);break;case\"/\":f=A.rv(p)/A.rv(u);break;case\"%\":f=A.rv(p)%A.rv(u);break;case\"|\":f=A.rv(p)|A.rv(u);break;case\"^\":f=A.rv(p)^A.rv(u);break;case\"&\":f=A.rv(p)&A.rv(u);break;case\"===\":f=A.rv(p)===A.rv(u);break;case\"==\":f=A.rv(p)==A.rv(u);break;case\"!=\":f=A.rv(p)!=A.rv(u);break;case\"!==\":f=A.rv(p)!==A.rv(u);break;case\">=\":f=A.rv(p)>=A.rv(u);break;case\"<=\":f=A.rv(p)<=A.rv(u);break;case\">\":f=A.rv(p)>A.rv(u);break;case\"<\":f=A.rv(p)>\":f=A.rv(p)>>A.rv(u);break;default:break}return l?A.nh(f,\"c\"):f;break;case\"-\":p=e.length===3?x(e[1],t,r,n,o,a):0;u=e.length===3?x(e[2],t,r,n,o,a):x(e[1],t,r,n,o,a);l=M&&(A.hn(p)===\"h\"||A.hn(u)===\"h\");f=l?A.rv(p)-A.rv(u):p-u;return l?A.nh(f,\"c\"):f;break;case\"!\":p=x(e[1],t,r,n,o,a);l=M&&A.hn(p)==\"h\";f=!A.rv(p);return l?A.nh(f,\"c\"):f;case\"~\":p=x(e[1],t,r,n,o,a);l=M&&A.hn(p)==\"h\";f=~A.rv(p);return l?A.nh(f,\"c\"):f;default:s(\"unrecognized op\"+i)}}function x(e,t,r,n,o,a){var i=e[0];var p=false;if(typeof a!==\"undefined\")o.ap=a;if(typeof i===\"object\"){var u=i[0];var l,f,v,c,s,y,b,d,h,_,g;switch(u){case 2:return m(e,t,r,n,o);break;case 4:return x(e[1],t,r,n,o,p);break;case 5:switch(e.length){case 2:l=x(e[1],t,r,n,o,p);return M?[l]:[A.rv(l)];return[l];break;case 1:return[];break;default:l=x(e[1],t,r,n,o,p);v=x(e[2],t,r,n,o,p);l.push(M?v:A.rv(v));return l;break}break;case 6:l=x(e[1],t,r,n,o);var w=o.ap;h=A.hn(l)===\"h\";f=h?A.rv(l):l;o.is_affected|=h;if(M){if(f===null||typeof f===\"undefined\"){return h?A.nh(undefined,\"e\"):undefined}v=x(e[2],t,r,n,o,p);_=A.hn(v)===\"h\";c=_?A.rv(v):v;o.ap=w;o.is_affected|=_;if(c===null||typeof c===\"undefined\"||c===\"__proto__\"||c===\"prototype\"||c===\"caller\"){return h||_?A.nh(undefined,\"e\"):undefined}y=f[c];if(typeof y===\"function\"&&!w)y=undefined;g=A.hn(y)===\"h\";o.is_affected|=g;return h||_?g?y:A.nh(y,\"e\"):y}else{if(f===null||typeof f===\"undefined\"){return undefined}v=x(e[2],t,r,n,o,p);_=A.hn(v)===\"h\";c=_?A.rv(v):v;o.ap=w;o.is_affected|=_;if(c===null||typeof c===\"undefined\"||c===\"__proto__\"||c===\"prototype\"||c===\"caller\"){return undefined}y=f[c];if(typeof y===\"function\"&&!w)y=undefined;g=A.hn(y)===\"h\";o.is_affected|=g;return g?A.rv(y):y}case 7:switch(e[1][0]){case 11:o.is_affected|=A.hn(n)===\"h\";return n;case 3:b=A.rv(r);d=A.rv(t);v=e[1][1];if(n&&n.f&&n.f.hasOwnProperty(v)){l=n.f;o.ap=true}else{l=b&&b.hasOwnProperty(v)?r:d&&d.hasOwnProperty(v)?t:undefined}if(M){if(l){h=A.hn(l)===\"h\";f=h?A.rv(l):l;y=f[v];g=A.hn(y)===\"h\";o.is_affected|=h||g;y=h&&!g?A.nh(y,\"e\"):y;return y}}else{if(l){h=A.hn(l)===\"h\";f=h?A.rv(l):l;y=f[v];g=A.hn(y)===\"h\";o.is_affected|=h||g;return A.rv(y)}}return undefined}break;case 8:l={};l[e[1]]=x(e[2],t,r,n,o,p);return l;break;case 9:l=x(e[1],t,r,n,o,p);v=x(e[2],t,r,n,o,p);function O(e,t,r){var n,o;h=A.hn(e)===\"h\";_=A.hn(t)===\"h\";f=A.rv(e);c=A.rv(t);for(var a in c){if(r||!f.hasOwnProperty(a)){f[a]=M?_?A.nh(c[a],\"e\"):c[a]:A.rv(c[a])}}return e}var s=l;var j=true;if(typeof e[1][0]===\"object\"&&e[1][0][0]===10){l=v;v=s;j=false}if(typeof e[1][0]===\"object\"&&e[1][0][0]===10){var P={};return O(O(P,l,j),v,j)}else return O(l,v,j);break;case 10:l=x(e[1],t,r,n,o,p);l=M?l:A.rv(l);return l;break;case 12:var P;l=x(e[1],t,r,n,o);if(!o.ap){return M&&A.hn(l)===\"h\"?A.nh(P,\"f\"):P}var w=o.ap;v=x(e[2],t,r,n,o,p);o.ap=w;h=A.hn(l)===\"h\";_=N(v);f=A.rv(l);c=A.rv(v);snap_bb=K(c,\"nv_\");try{P=typeof f===\"function\"?K(f.apply(null,snap_bb)):undefined}catch(t){t.message=t.message.replace(/nv_/g,\"\");t.stack=t.stack.substring(0,t.stack.indexOf(\"\\n\",t.stack.lastIndexOf(\"at nv_\")));t.stack=t.stack.replace(/\\snv_/g,\" \");t.stack=T(t.stack);if(n.debugInfo){t.stack+=\"\\n \"+\" \"+\" \"+\" at \"+n.debugInfo[0]+\":\"+n.debugInfo[1]+\":\"+n.debugInfo[2];console.error(t)}P=undefined}return M&&(_||h)?A.nh(P,\"f\"):P}}else{if(i===3||i===1)return e[1];else if(i===11){var l=\"\";for(var D=1;D=0;o--){if(r[e].i[o]&&n[r[e].i[o]][t])return n[r[e].i[o]][t]}for(var o=r[e].ti.length-1;o>=0;o--){var a=ne(r[e].ti[o],r,e);if(a&&n[a][t])return n[a][t]}var i=ae(r,e);for(var o=0;o=0;p--)if(r[e].j[p]){for(var a=r[r[e].j[p]].ti.length-1;a>=0;a--){var u=ne(r[r[e].j[p]].ti[a],r,e);if(u&&n[u][t]){return n[u][t]}}}}function ae(e,t){if(!t)return[];if($gaic[t]){return $gaic[t]}var r=[],n=[],o=0,a=0,i={},p={};n.push(t);p[t]=true;a++;while(o2)break;\n}\nreturn cnt == 2 && any1 && any2 && (obj.__wxspec__ === 'm' || this.hm(obj.__value__) );\n}\nreturn false;\n}\n}\nreturn new x;\n}\nwh=$gwh();\nfunction $gstack(s){\nvar tmp=s.split('\\n '+' '+' '+' ');\nfor(var i=0;i=':\ncase '<=':\ncase '>':\ncase '<':\ncase '<<':\ncase '>>':\n_a = rev( ops[1], e, s, g, o, _f );\n_b = rev( ops[2], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) === 'h' || wh.hn( _b ) === 'h');\nswitch( rop )\n{\ncase '+':\n_d = wh.rv( _a ) + wh.rv( _b );\nbreak;\ncase '*':\n_d = wh.rv( _a ) * wh.rv( _b );\nbreak;\ncase '/':\n_d = wh.rv( _a ) / wh.rv( _b );\nbreak;\ncase '%':\n_d = wh.rv( _a ) % wh.rv( _b );\nbreak;\ncase '|':\n_d = wh.rv( _a ) | wh.rv( _b );\nbreak;\ncase '^':\n_d = wh.rv( _a ) ^ wh.rv( _b );\nbreak;\ncase '&':\n_d = wh.rv( _a ) & wh.rv( _b );\nbreak;\ncase '===':\n_d = wh.rv( _a ) === wh.rv( _b );\nbreak;\ncase '==':\n_d = wh.rv( _a ) == wh.rv( _b );\nbreak;\ncase '!=':\n_d = wh.rv( _a ) != wh.rv( _b );\nbreak;\ncase '!==':\n_d = wh.rv( _a ) !== wh.rv( _b );\nbreak;\ncase '>=':\n_d = wh.rv( _a ) >= wh.rv( _b );\nbreak;\ncase '<=':\n_d = wh.rv( _a ) <= wh.rv( _b );\nbreak;\ncase '>':\n_d = wh.rv( _a ) > wh.rv( _b );\nbreak;\ncase '<':\n_d = wh.rv( _a ) < wh.rv( _b );\nbreak;\ncase '<<':\n_d = wh.rv( _a ) << wh.rv( _b );\nbreak;\ncase '>>':\n_d = wh.rv( _a ) >> wh.rv( _b );\nbreak;\ndefault:\nbreak;\n}\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\nbreak;\ncase '-':\n_a = ops.length === 3 ? rev( ops[1], e, s, g, o, _f ) : 0;\n_b = ops.length === 3 ? rev( ops[2], e, s, g, o, _f ) : rev( ops[1], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) === 'h' || wh.hn( _b ) === 'h');\n_d = _c ? wh.rv( _a ) - wh.rv( _b ) : _a - _b;\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\nbreak;\ncase '!':\n_a = rev( ops[1], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) == 'h');\n_d = !wh.rv(_a);\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\ncase '~':\n_a = rev( ops[1], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) == 'h');\n_d = ~wh.rv(_a);\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\ndefault:\n$gwn('unrecognized op' + rop );\n}\n}\nfunction rev( ops, e, s, g, o, newap )\n{\nvar op = ops[0];\nvar _f = false;\nif ( typeof newap !== \"undefined\" ) o.ap = newap;\nif( typeof(op)==='object' )\n{\nvar vop=op[0];\nvar _a, _aa, _b, _bb, _c, _d, _s, _e, _ta, _tb, _td;\nswitch(vop)\n{\ncase 2:\nreturn ArithmeticEv(ops,e,s,g,o);\nbreak;\ncase 4: \nreturn rev( ops[1], e, s, g, o, _f );\nbreak;\ncase 5: \nswitch( ops.length )\n{\ncase 2: \n_a = rev( ops[1],e,s,g,o,_f );\nreturn should_pass_type_info?[_a]:[wh.rv(_a)];\nreturn [_a];\nbreak;\ncase 1: \nreturn [];\nbreak;\ndefault:\n_a = rev( ops[1],e,s,g,o,_f );\n_b = rev( ops[2],e,s,g,o,_f );\n_a.push( \nshould_pass_type_info ?\n_b :\nwh.rv( _b )\n);\nreturn _a;\nbreak;\n}\nbreak;\ncase 6:\n_a = rev(ops[1],e,s,g,o);\nvar ap = o.ap;\n_ta = wh.hn(_a)==='h';\n_aa = _ta ? wh.rv(_a) : _a;\no.is_affected |= _ta;\nif( should_pass_type_info )\n{\nif( _aa===null || typeof(_aa) === 'undefined' )\n{\nreturn _ta ? wh.nh(undefined, 'e') : undefined;\n}\n_b = rev(ops[2],e,s,g,o,_f);\n_tb = wh.hn(_b) === 'h';\n_bb = _tb ? wh.rv(_b) : _b;\no.ap = ap;\no.is_affected |= _tb;\nif( _bb===null || typeof(_bb) === 'undefined' || \n_bb === \"__proto__\" || _bb === \"prototype\" || _bb === \"caller\" ) \n{\nreturn (_ta || _tb) ? wh.nh(undefined, 'e') : undefined;\n}\n_d = _aa[_bb];\nif ( typeof _d === 'function' && !ap ) _d = undefined;\n_td = wh.hn(_d)==='h';\no.is_affected |= _td;\nreturn (_ta || _tb) ? (_td ? _d : wh.nh(_d, 'e')) : _d;\n}\nelse\n{\nif( _aa===null || typeof(_aa) === 'undefined' )\n{\nreturn undefined;\n}\n_b = rev(ops[2],e,s,g,o,_f);\n_tb = wh.hn(_b) === 'h';\n_bb = _tb ? wh.rv(_b) : _b;\no.ap = ap;\no.is_affected |= _tb;\nif( _bb===null || typeof(_bb) === 'undefined' || \n_bb === \"__proto__\" || _bb === \"prototype\" || _bb === \"caller\" ) \n{\nreturn undefined;\n}\n_d = _aa[_bb];\nif ( typeof _d === 'function' && !ap ) _d = undefined;\n_td = wh.hn(_d)==='h';\no.is_affected |= _td;\nreturn _td ? wh.rv(_d) : _d;\n}\ncase 7: \nswitch(ops[1][0])\n{\ncase 11:\no.is_affected |= wh.hn(g)==='h';\nreturn g;\ncase 3:\n_s = wh.rv( s );\n_e = wh.rv( e );\n_b = ops[1][1];\nif (g && g.f && g.f.hasOwnProperty(_b) )\n{\n_a = g.f;\no.ap = true;\n}\nelse\n{\n_a = _s && _s.hasOwnProperty(_b) ? \ns : (_e && _e.hasOwnProperty(_b) ? e : undefined );\n}\nif( should_pass_type_info )\n{\nif( _a )\n{\n_ta = wh.hn(_a) === 'h';\n_aa = _ta ? wh.rv( _a ) : _a;\n_d = _aa[_b];\n_td = wh.hn(_d) === 'h';\no.is_affected |= _ta || _td;\n_d = _ta && !_td ? wh.nh(_d,'e') : _d;\nreturn _d;\n}\n}\nelse\n{\nif( _a )\n{\n_ta = wh.hn(_a) === 'h';\n_aa = _ta ? wh.rv( _a ) : _a;\n_d = _aa[_b];\n_td = wh.hn(_d) === 'h';\no.is_affected |= _ta || _td;\nreturn wh.rv(_d);\n}\n}\nreturn undefined;\n}\nbreak;\ncase 8: \n_a = {};\n_a[ops[1]] = rev(ops[2],e,s,g,o,_f);\nreturn _a;\nbreak;\ncase 9: \n_a = rev(ops[1],e,s,g,o,_f);\n_b = rev(ops[2],e,s,g,o,_f);\nfunction merge( _a, _b, _ow )\n{\nvar ka, _bbk;\n_ta = wh.hn(_a)==='h';\n_tb = wh.hn(_b)==='h';\n_aa = wh.rv(_a);\n_bb = wh.rv(_b);\nfor(var k in _bb)\n{\nif ( _ow || !_aa.hasOwnProperty(k) )\n{\n_aa[k] = should_pass_type_info ? (_tb ? wh.nh(_bb[k],'e') : _bb[k]) : wh.rv(_bb[k]);\n}\n}\nreturn _a;\n}\nvar _c = _a\nvar _ow = true\nif ( typeof(ops[1][0]) === \"object\" && ops[1][0][0] === 10 ) {\n_a = _b\n_b = _c\n_ow = false\n}\nif ( typeof(ops[1][0]) === \"object\" && ops[1][0][0] === 10 ) {\nvar _r = {}\nreturn merge( merge( _r, _a, _ow ), _b, _ow );\n}\nelse\nreturn merge( _a, _b, _ow );\nbreak;\ncase 10:\n_a = rev(ops[1],e,s,g,o,_f);\n_a = should_pass_type_info ? _a : wh.rv( _a );\nreturn _a ;\nbreak;\ncase 12:\nvar _r;\n_a = rev(ops[1],e,s,g,o);\nif ( !o.ap )\n{\nreturn should_pass_type_info && wh.hn(_a)==='h' ? wh.nh( _r, 'f' ) : _r;\n}\nvar ap = o.ap;\n_b = rev(ops[2],e,s,g,o,_f);\no.ap = ap;\n_ta = wh.hn(_a)==='h';\n_tb = _ca(_b);\n_aa = wh.rv(_a);\t\n_bb = wh.rv(_b); snap_bb=$gdc(_bb,\"nv_\");\ntry{\n_r = typeof _aa === \"function\" ? $gdc(_aa.apply(null, snap_bb)) : undefined;\n} catch (e){\ne.message = e.message.replace(/nv_/g,\"\");\ne.stack = e.stack.substring(0,e.stack.indexOf(\"\\n\", e.stack.lastIndexOf(\"at nv_\")));\ne.stack = e.stack.replace(/\\snv_/g,\" \"); \ne.stack = $gstack(e.stack);\t\nif(g.debugInfo)\n{\ne.stack += \"\\n \"+\" \"+\" \"+\" at \"+g.debugInfo[0]+\":\"+g.debugInfo[1]+\":\"+g.debugInfo[2];\nconsole.error(e);\n}\n_r = undefined;\n}\nreturn should_pass_type_info && (_tb || _ta) ? wh.nh( _r, 'f' ) : _r;\n}\n}\nelse\n{\nif( op === 3 || op === 1) return ops[1];\nelse if( op === 11 ) \n{\nvar _a='';\nfor( var i = 1 ; i < ops.length ; i++ )\n{\nvar xp = wh.rv(rev(ops[i],e,s,g,o,_f));\n_a += typeof(xp) === 'undefined' ? '' : xp;\n}\nreturn _a;\n}\n}\n}\nfunction wrapper( ops, e, s, g, o, newap )\n{\nif( ops[0] == '11182016' )\n{\ng.debugInfo = ops[2];\nreturn rev( ops[1], e, s, g, o, newap );\n}\nelse\n{\ng.debugInfo = null;\nreturn rev( ops, e, s, g, o, newap );\n}\n}\nreturn wrapper;\n}\ngra=$gwrt(true); \ngrb=$gwrt(false); \nfunction TestTest( expr, ops, e,s,g, expect_a, expect_b, expect_affected )\n{\n{\nvar o = {is_affected:false};\nvar a = gra( ops, e,s,g, o );\nif( JSON.stringify(a) != JSON.stringify( expect_a )\n|| o.is_affected != expect_affected )\n{\nconsole.warn( \"A. \" + expr + \" get result \" + JSON.stringify(a) + \", \" + o.is_affected + \", but \" + JSON.stringify( expect_a ) + \", \" + expect_affected + \" is expected\" );\n}\n}\n{\nvar o = {is_affected:false};\nvar a = grb( ops, e,s,g, o );\nif( JSON.stringify(a) != JSON.stringify( expect_b )\n|| o.is_affected != expect_affected )\n{\nconsole.warn( \"B. \" + expr + \" get result \" + JSON.stringify(a) + \", \" + o.is_affected + \", but \" + JSON.stringify( expect_b ) + \", \" + expect_affected + \" is expected\" );\n}\n}\n}\n"; // idb const char aVarNfInitFunct[] = "var nf_init=function(){\nif(typeof __WXML_GLOBAL__===\"undefined\"||undefined===__WXML_GLOBAL__.wxs_nf_init){\nnf_init_Object();nf_init_Function();nf_init_Array();nf_init_String();nf_init_Boolean();nf_init_Number();nf_init_Math();nf_init_Date();nf_init_RegExp();\n}\nif(typeof __WXML_GLOBAL__!==\"undefined\") __WXML_GLOBAL__.wxs_nf_init=true;\n};\nvar nf_init_Object=function(){\nObject.defineProperty(Object.prototype,\"nv_constructor\",{writable:true,value:\"Object\"})\nObject.defineProperty(Object.prototype,\"nv_toString\",{writable:true,value:function(){return \"[object Object]\"}})\n}\nvar nf_init_Function=function(){\nObject.defineProperty(Function.prototype,\"nv_constructor\",{writable:true,value:\"Function\"})\nObject.defineProperty(Function.prototype,\"nv_length\",{get:function(){return this.length;},set:function(){}});\nObject.defineProperty(Function.prototype,\"nv_toString\",{writable:true,value:function(){return \"[function Function]\"}})\n}\nvar nf_init_Array=function(){\nObject.defineProperty(Array.prototype,\"nv_toString\",{writable:true,value:function(){return this.nv_join();}})\nObject.defineProperty(Array.prototype,\"nv_join\",{writable:true,value:function(s){\ns=undefined==s?',':s;\nvar r=\"\";\nfor(var i=0;i const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1} = &off_537714; // weak const char off_52E6CD[] = { '\'', '\0', '[', '\0' }; // idb const char off_52E79F[] = { '=', '[', ']', '\0' }; // idb _UNKNOWN unk_52E8FC; // weak char *WXML::EXPRLib::Tokenizer::GetTokens(std::vector &,std::string &)::KEYWORDS[4] = { "true", "false", "undefined", "null" }; // weak _UNKNOWN unk_52F13C; // weak _UNKNOWN unk_52F13E; // weak _UNKNOWN unk_52F140; // weak _UNKNOWN unk_52F142; // weak _UNKNOWN unk_52F144; // weak void *off_52F150 = &unk_720074; // weak void *off_52F15A = &unk_610066; // weak _UNKNOWN unk_52F168; // weak void *off_52F174 = &unk_720074; // weak void *off_52F17E = &unk_610066; // weak _UNKNOWN unk_52F882; // weak _UNKNOWN unk_52FB3E; // weak _BYTE byte_52FE7E[2] = { 0, 0 }; // weak _UNKNOWN unk_52FF8C; // weak char byte_52FFF5[] = { '0' }; // weak _UNKNOWN unk_530262; // weak void *off_530836 = (void *)0x4D4100; // weak _UNKNOWN unk_53083A; // weak void *off_530876 = &unk_6E7553; // weak void *off_53087A = &unk_6E6F4D; // weak void *off_53087E = &unk_657554; // weak void *off_530882 = &unk_646557; // weak void *off_530886 = &unk_756854; // weak void *off_53088A = &unk_697246; // weak void *off_53088E = &unk_746153; // weak void *off_5308E8 = &unk_6E614A; // weak void *off_5308EC = &unk_626546; // weak void *off_5308F0 = &unk_72614D; // weak void *off_5308F4 = &unk_727041; // weak void *off_5308F8 = &unk_6E754A; // weak void *off_5308FC = &unk_6C754A; // weak void *off_530900 = &unk_677541; // weak void *off_530904 = &unk_706553; // weak void *off_530908 = &unk_74634F; // weak void *off_53090C = &unk_766F4E; // weak void *off_530910 = &unk_636544; // weak void *off_530914 = &unk_6D0025; // weak _UNKNOWN unk_530938; // weak void *off_53093A = (void *)0x4D0041; // weak int (*off_530940)() = &std::wstreambuf::underflow; // weak void *off_530946 = &unk_750053; // weak void *off_530954 = &unk_6F004D; // weak void *off_530962 = &unk_750054; // weak void *off_530972 = &unk_650057; // weak void *off_530986 = &unk_680054; // weak void *off_530998 = &unk_720046; // weak void *off_5309A6 = &unk_610053; // weak void *off_5309B8 = &unk_750053; // weak void *off_5309C0 = &unk_6F004D; // weak void *off_5309C8 = &unk_750054; // weak void *off_5309D0 = &unk_650057; // weak void *off_5309D8 = &unk_680054; // weak void *off_5309E0 = &unk_720046; // weak void *off_5309E8 = &unk_610053; // weak void *off_5309F0 = &unk_61004A; // weak void *off_530A00 = &unk_650046; // weak void *off_530A12 = &unk_61004D; // weak void *off_530A1E = &unk_700041; // weak void *off_530A2A = &unk_61004D; // weak void *off_530A32 = &unk_75004A; // weak void *off_530A3C = &unk_75004A; // weak void *off_530A46 = &unk_750041; // weak void *off_530A54 = &unk_650053; // weak void *off_530A68 = &unk_63004F; // weak void *off_530A78 = &unk_6F004E; // weak void *off_530A8A = &unk_650044; // weak void *off_530A9C = &unk_61004A; // weak void *off_530AA4 = &unk_650046; // weak void *off_530AAC = &unk_61004D; // weak void *off_530AB4 = &unk_700041; // weak void *off_530ABC = &unk_75004A; // weak void *off_530AC4 = &unk_75004A; // weak void *off_530ACC = &unk_750041; // weak void *off_530AD4 = &unk_650053; // weak void *off_530ADC = &unk_63004F; // weak void *off_530AE4 = &unk_6F004E; // weak void *off_530AEC = &unk_650044; // weak _UNKNOWN unk_530AF4; // weak void *off_5310E3 = &unk_647473; // weak void *off_5314FE = &unk_6C6C75; // weak _UNKNOWN unk_5318D8; // weak _UNKNOWN unk_5318DA; // weak _UNKNOWN unk_531B44; // weak void *cplus_demangle_operators = &unk_531B44; // weak void **off_532320 = &off_532195; // weak char *off_532488 = "decimal32"; // weak char *off_53249C = "decimal64"; // weak char *off_5324B0 = "decimal128"; // weak char *off_5324C4 = "half"; // weak char *off_5324D8 = "char8_t"; // weak char *off_5324EC = "char16_t"; // weak char *off_532500 = "char32_t"; // weak char *off_532514 = "decltype(nullptr)"; // weak int (__stdcall *__dyn_tls_init_callback)(_DWORD, _DWORD, _DWORD) = &__dyn_tls_init; // weak int dword_532800[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_532858[] = { 0.00781250000000009 }; // weak int dword_53287C[7] = { 0, 5, 25, 125, 0, 0, 0 }; // weak double dbl_532898[] = { 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_532A14; // weak char *off_532A80 = "alnum"; // weak __int16 word_532A84[] = { 263 }; // weak void *off_532BD9 = (void *)0x4E614E; // weak void *off_532BDD = &unk_666E49; // weak void *off_532BE2 = &unk_6E0028; // weak const char byte_532D84 = '\0'; // idb void *off_532DA9 = (void *)0x4E614E; // 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_533844; // weak _UNKNOWN unk_533858; // weak _UNKNOWN unk_53386C; // weak _UNKNOWN unk_533880; // weak _UNKNOWN unk_533894; // weak _UNKNOWN unk_5338A8; // weak _UNKNOWN unk_5338F8; // weak _UNKNOWN unk_53390C; // weak _UNKNOWN unk_533920; // weak _UNKNOWN unk_533934; // weak _UNKNOWN unk_533948; // weak _UNKNOWN unk_53395C; // weak _UNKNOWN unk_533970; // weak _UNKNOWN unk_533984; // weak _UNKNOWN unk_533998; // weak _UNKNOWN unk_5339AC; // weak _UNKNOWN unk_5339C0; // weak _UNKNOWN unk_5339D4; // weak _UNKNOWN unk_5339E8; // weak _UNKNOWN unk_5339FC; // weak _UNKNOWN unk_533A4C; // weak _UNKNOWN unk_533A60; // weak _UNKNOWN unk_533A74; // weak _UNKNOWN unk_533A88; // weak _UNKNOWN unk_533A9C; // weak _UNKNOWN unk_533AB0; // weak _UNKNOWN unk_533B00; // weak _UNKNOWN unk_533B14; // weak _UNKNOWN unk_533B28; // weak _UNKNOWN unk_533B3C; // weak _UNKNOWN unk_533B50; // weak _UNKNOWN unk_533B64; // weak _UNKNOWN unk_533B78; // weak _UNKNOWN unk_533B8C; // weak _UNKNOWN unk_533BA0; // weak _UNKNOWN unk_533BB4; // weak _UNKNOWN unk_533BC8; // weak _UNKNOWN unk_533BDC; // weak _UNKNOWN unk_533BF0; // weak _UNKNOWN unk_533C04; // weak int *`typeinfo for'__cxxabiv1::__forced_unwind = &off_537714; // weak int *`typeinfo for'__cxxabiv1::__foreign_exception = &off_537714; // weak int *`typeinfo for'WXML::DOMLib::ParseException = &off_537714; // weak int *`typeinfo for'WXML::DOMLib::RenderException = &off_537714; // weak int *`typeinfo for'__gnu_cxx::recursive_init_error = &off_537754; // weak int *`typeinfo for'__gnu_cxx::__concurrence_lock_error = &off_537754; // weak int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error = &off_537754; // weak int *`typeinfo for'std::locale::facet::__shim = &off_537714; // weak int *`typeinfo for'std::locale::facet = &off_537714; // weak int *`typeinfo for'std::moneypunct = &off_537780; // weak int *`typeinfo for'std::moneypunct = &off_537780; // weak int *`typeinfo for'std::moneypunct = &off_537780; // weak int *`typeinfo for'std::moneypunct = &off_537780; // weak int *`typeinfo for'std::string = &off_537714; // weak int *`typeinfo for'std::collate = &off_537754; // weak int *`typeinfo for'std::collate = &off_537754; // weak int *`typeinfo for'std::messages = &off_537780; // weak int *`typeinfo for'std::messages = &off_537780; // weak int *`typeinfo for'std::numpunct = &off_537754; // weak int *`typeinfo for'std::numpunct = &off_537754; // weak int *`typeinfo for'std::time_get> = &off_537780; // weak int *`typeinfo for'std::time_get> = &off_537780; // weak int *`typeinfo for'std::money_get> = &off_537754; // weak int *`typeinfo for'std::money_get> = &off_537754; // weak int *`typeinfo for'std::money_put> = &off_537754; // weak int *`typeinfo for'std::money_put> = &off_537754; // weak int *`typeinfo for'std::ios_base::failure = &off_537754; // weak int `typeinfo for'std::bad_typeid = 5470036; // weak int *`typeinfo for'std::moneypunct = &off_537780; // weak int *`typeinfo for'std::moneypunct = &off_537780; // weak int *`typeinfo for'std::moneypunct = &off_537780; // weak int *`typeinfo for'std::moneypunct = &off_537780; // weak int *`typeinfo for'std::__timepunct = &off_537754; // weak int *`typeinfo for'std::__timepunct = &off_537754; // weak int *`typeinfo for'std::logic_error = &off_537754; // weak int *`typeinfo for'std::range_error = &off_537754; // weak int *`typeinfo for'std::domain_error = &off_537754; // weak int *`typeinfo for'std::length_error = &off_537754; // weak int *`typeinfo for'std::out_of_range = &off_537754; // weak int *`typeinfo for'std::system_error = &off_537754; // weak int *`typeinfo for'std::__ios_failure = &off_538DD0; // weak int *`typeinfo for'std::bad_exception = &off_537754; // weak int *`typeinfo for'std::runtime_error = &off_537754; // weak int *`typeinfo for'std::overflow_error = &off_537754; // weak int *`typeinfo for'std::underflow_error = &off_537754; // weak int *`typeinfo for'std::invalid_argument = &off_537754; // weak int *`typeinfo for'std::bad_function_call = &off_537754; // weak int *`typeinfo for'std::_Sp_make_shared_tag = &off_537714; // weak int *`typeinfo for'std::bad_array_new_length = &off_537754; // weak int *`typeinfo for'std::ctype = &off_537780; // weak int *`typeinfo for'std::ctype = &off_537754; // weak int *`typeinfo for'std::codecvt = &off_537754; // weak int *`typeinfo for'std::codecvt = &off_537754; // weak int *`typeinfo for'std::collate = &off_537754; // weak int *`typeinfo for'std::collate = &off_537754; // weak int *`typeinfo for'std::num_get> = &off_537754; // weak int *`typeinfo for'std::num_get> = &off_537754; // weak int *`typeinfo for'std::num_put> = &off_537754; // weak int *`typeinfo for'std::num_put> = &off_537754; // weak int *`typeinfo for'std::bad_cast = &off_537754; // weak int *`typeinfo for'std::messages = &off_537780; // weak int *`typeinfo for'std::messages = &off_537780; // weak int *`typeinfo for'std::numpunct = &off_537754; // weak int *`typeinfo for'std::numpunct = &off_537754; // weak int *`typeinfo for'std::time_get> = &off_537780; // weak int *`typeinfo for'std::time_get> = &off_537780; // weak int *`typeinfo for'std::time_put> = &off_537754; // weak int *`typeinfo for'std::time_put> = &off_537754; // weak int *`typeinfo for'std::bad_alloc = &off_537754; // weak int *`typeinfo for'std::money_get> = &off_537754; // weak int *`typeinfo for'std::money_get> = &off_537754; // weak int *`typeinfo for'std::money_put> = &off_537754; // weak int *`typeinfo for'std::money_put> = &off_537754; // weak void (__cdecl *off_537714)(__cxxabiv1::__class_type_info *__hidden this) = &__cxxabiv1::__class_type_info::~__class_type_info; // weak void (__cdecl *off_537754)(__cxxabiv1::__si_class_type_info *__hidden this) = &__cxxabiv1::__si_class_type_info::~__si_class_type_info; // weak void (__cdecl *off_537780)(__cxxabiv1::__vmi_class_type_info *__hidden this) = &__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info; // weak void (__cdecl *off_5377AC)(_anonymous_namespace_::io_error_category *__hidden this) = &`anonymous namespace'::io_error_category::~io_error_category; // weak void (__cdecl *off_537824)(WXML::EXPRLib::NonTerminal *__hidden this) = &WXML::EXPRLib::NonTerminal::~NonTerminal; // weak void (__cdecl *off_53784C)(WXML::EXPRLib::Action *__hidden this) = &WXML::EXPRLib::Action::~Action; // weak void (__cdecl *off_537860)(WXML::EXPRLib::Terminal *__hidden this) = &WXML::EXPRLib::Terminal::~Terminal; // weak int (*off_537874)() = &__gnu_cxx::stdio_filebuf::~stdio_filebuf; // weak int (*off_5378B4)() = &__gnu_cxx::stdio_filebuf::~stdio_filebuf; // weak int (*off_5378F4)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak int (*off_537934)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak void (__cdecl *off_537974)(__gnu_cxx::recursive_init_error *__hidden this) = &__gnu_cxx::recursive_init_error::~recursive_init_error; // weak void (__cdecl *off_537988)(__gnu_cxx::__concurrence_lock_error *__hidden this) = &__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error; // weak void (__cdecl *off_53799C)(__gnu_cxx::__concurrence_unlock_error *__hidden this) = &__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error; // weak int (*off_5379B0)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak int (*off_5379CC)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak int (*off_5379E8)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak int (*off_537A04)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak int (*off_537A20)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak int (*off_537A3C)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak int (*off_537A58)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak int (*off_537A74)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak int (*off_537A90)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak int (*off_537AB4)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak int (*off_537AD8)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak int (*off_537AFC)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak int (*off_537B20)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak int (*off_537B48)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak int (*off_537B74)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak int (*off_537B9C)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak int (*off_537BC8)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak int (*off_537BE0)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak int (*off_537BF8)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak int (*off_537C10)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak int (*off_537C28)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak int (*off_537C40)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak int (*off_537C58)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak int (*off_537C70)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak int (*off_537C88)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_537CBC)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_537CF0)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_537D24)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_537D58)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_537D8C)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_537DC0)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_537DF4)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_537E60)() = &std::moneypunct::~moneypunct; // weak int (*off_537E94)() = &std::moneypunct::~moneypunct; // weak int (*off_537EC8)() = &std::moneypunct::~moneypunct; // weak int (*off_537EFC)() = &std::moneypunct::~moneypunct; // weak int (*off_537F30)() = &std::collate_byname::~collate_byname; // weak int (*off_537F4C)() = &std::collate_byname::~collate_byname; // weak int (*off_537F68)() = &std::stringbuf::~stringbuf; // weak int (*off_537FA8)() = &std::wstringbuf::~wstringbuf; // weak int (*off_537FE8)() = &std::messages_byname::~messages_byname; // weak int (*off_538004)() = &std::messages_byname::~messages_byname; // weak int (*off_538020)() = &std::numpunct_byname::~numpunct_byname; // weak int (*off_538044)() = &std::numpunct_byname::~numpunct_byname; // weak int (*off_538068)() = &std::time_get_byname>::~time_get_byname; // weak int (*off_538094)() = &std::time_get_byname>::~time_get_byname; // weak int (*off_5380C0)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_5380F4)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_538128)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_53815C)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_538194)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak int (*off_5381A8[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_5381BC[2])() = { &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream }; // weak int (*off_5381D0)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak int (*off_5381E4[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_5381F8[2])() = { &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream }; // weak int (*off_53820C)() = &std::istringstream::~istringstream; // weak int (*off_538220[2])() = { &`virtual thunk to'std::istringstream::~istringstream, &`virtual thunk to'std::istringstream::~istringstream }; // weak int (*off_538234)() = &std::wistringstream::~wistringstream; // weak int (*off_538248[2])() = { &`virtual thunk to'std::wistringstream::~wistringstream, &`virtual thunk to'std::wistringstream::~wistringstream }; // weak int (*off_53825C)() = &std::ostringstream::~ostringstream; // weak int (*off_538270[2])() = { &`virtual thunk to'std::ostringstream::~ostringstream, &`virtual thunk to'std::ostringstream::~ostringstream }; // weak int (*off_538284)() = &std::wostringstream::~wostringstream; // weak int (*off_538298[2])() = { &`virtual thunk to'std::wostringstream::~wostringstream, &`virtual thunk to'std::wostringstream::~wostringstream }; // weak int (*off_5382A8)() = &std::collate::~collate; // weak int (*off_5382C4)() = &std::collate::~collate; // weak int (*off_5382E0)() = &std::messages::~messages; // weak int (*off_5382FC)() = &std::messages::~messages; // weak int (*off_538318)() = &std::numpunct::~numpunct; // weak int (*off_53833C)() = &std::numpunct::~numpunct; // weak int (*off_538360)() = &std::time_get>::~time_get; // weak int (*off_53838C)() = &std::time_get>::~time_get; // weak int (*off_5383B8)() = &std::money_get>::~money_get; // weak int (*off_5383D0)() = &std::money_get>::~money_get; // weak int (*off_5383E8)() = &std::money_put>::~money_put; // weak int (*off_538400)() = &std::money_put>::~money_put; // weak int (*off_538418)() = &std::ios_base::failure[abi:cxx11]::~failure; // weak void (__cdecl *off_53842C)(std::ios_base::failure *__hidden this) = &std::ios_base::failure::~failure; // weak void (__cdecl *off_538444)(std::iostream *__hidden this) = &std::iostream::~iostream; // weak void (__cdecl *off_538458[2])(std::iostream *__hidden this) = { &`non-virtual thunk to'std::iostream::~iostream, &`non-virtual thunk to'std::iostream::~iostream }; // weak void (__cdecl *off_53846C[2])(std::iostream *__hidden this) = { &`virtual thunk to'std::iostream::~iostream, &`virtual thunk to'std::iostream::~iostream }; // weak void (__cdecl *off_538480)(std::istream *__hidden this) = &std::istream::~istream; // weak void (__cdecl *off_538494[2])(std::istream *__hidden this) = { &`virtual thunk to'std::istream::~istream, &`virtual thunk to'std::istream::~istream }; // weak void (__cdecl *off_5384A8)(std::ostream *__hidden this) = &std::ostream::~ostream; // weak void (__cdecl *off_5384BC[2])(std::ostream *__hidden this) = { &`virtual thunk to'std::ostream::~ostream, &`virtual thunk to'std::ostream::~ostream }; // weak void (__cdecl *off_5384CC)(std::bad_typeid *__hidden this) = &std::bad_typeid::~bad_typeid; // weak int (*off_5384E0)() = &std::moneypunct::~moneypunct; // weak int (*off_538514)() = &std::moneypunct::~moneypunct; // weak int (*off_538548)() = &std::moneypunct::~moneypunct; // weak int (*off_53857C)() = &std::moneypunct::~moneypunct; // weak int (*off_5385B0)() = &std::__timepunct::~__timepunct; // weak int (*off_5385C0)() = &std::__timepunct::~__timepunct; // weak void (__cdecl *off_5385D0)(std::logic_error *__hidden this) = &std::logic_error::~logic_error; // weak void (__cdecl *off_5385E4)(std::range_error *__hidden this) = &std::range_error::~range_error; // weak int (*off_5385F8)() = &std::ctype_byname::~ctype_byname; // weak int (*off_538628)() = &std::ctype_byname::~ctype_byname; // weak void (__cdecl *off_538668)(std::domain_error *__hidden this) = &std::domain_error::~domain_error; // weak void (__cdecl *off_53867C)(std::length_error *__hidden this) = &std::length_error::~length_error; // weak void (__cdecl *off_538690)(std::out_of_range *__hidden this) = &std::out_of_range::~out_of_range; // weak void (__cdecl *off_5386A4)(std::system_error *__hidden this) = &std::system_error::~system_error; // weak void (__cdecl *off_5386B8)(std::__ios_failure *__hidden this) = &std::__ios_failure::~__ios_failure; // weak void (__cdecl *off_5386CC)(std::bad_exception *__hidden this) = &std::bad_exception::~bad_exception; // weak int (*off_5386E0)() = &std::filebuf::~filebuf; // weak int (*off_538720)() = &std::wfilebuf::~wfilebuf; // weak int (*off_538764)() = &std::fstream::~fstream; // weak int (*off_538778[2])() = { &`non-virtual thunk to'std::fstream::~fstream, &`non-virtual thunk to'std::fstream::~fstream }; // weak int (*off_53878C[2])() = { &`virtual thunk to'std::fstream::~fstream, &`virtual thunk to'std::fstream::~fstream }; // weak int (*off_5387A0)() = &std::wfstream::~wfstream; // weak int (*off_5387B4[2])() = { &`non-virtual thunk to'std::wfstream::~wfstream, &`non-virtual thunk to'std::wfstream::~wfstream }; // weak int (*off_5387C8[2])() = { &`virtual thunk to'std::wfstream::~wfstream, &`virtual thunk to'std::wfstream::~wfstream }; // weak int (*off_5387DC)() = &std::wistream::~wistream; // weak int (*off_5387F0[2])() = { &`virtual thunk to'std::wistream::~wistream, &`virtual thunk to'std::wistream::~wistream }; // weak int (*off_538804)() = &std::wostream::~wostream; // weak int (*off_538818[2])() = { &`virtual thunk to'std::wostream::~wostream, &`virtual thunk to'std::wostream::~wostream }; // weak void (__cdecl *off_538828)(std::runtime_error *__hidden this) = &std::runtime_error::~runtime_error; // weak int (*off_538840)() = &std::ifstream::~ifstream; // weak int (*off_538854[2])() = { &`virtual thunk to'std::ifstream::~ifstream, &`virtual thunk to'std::ifstream::~ifstream }; // weak int (*off_538868)() = &std::wifstream::~wifstream; // weak int (*off_53887C[2])() = { &`virtual thunk to'std::wifstream::~wifstream, &`virtual thunk to'std::wifstream::~wifstream }; // weak int (*off_538890)() = &std::wiostream::~basic_iostream; // weak int (*off_5388A4[2])() = { &`non-virtual thunk to'std::wiostream::~basic_iostream, &`non-virtual thunk to'std::wiostream::~basic_iostream }; // weak int (*off_5388B8[2])() = { &`virtual thunk to'std::wiostream::~basic_iostream, &`virtual thunk to'std::wiostream::~basic_iostream }; // weak int (*off_5388CC)() = &std::ofstream::~ofstream; // weak int (*off_5388E0[2])() = { &`virtual thunk to'std::ofstream::~ofstream, &`virtual thunk to'std::ofstream::~ofstream }; // weak int (*off_5388F4)() = &std::wofstream::~wofstream; // weak int (*off_538908[2])() = { &`virtual thunk to'std::wofstream::~wofstream, &`virtual thunk to'std::wofstream::~wofstream }; // weak int (*off_538918)() = &std::codecvt_byname::~codecvt_byname; // weak int (*off_538944)() = &std::codecvt_byname::~codecvt_byname; // weak int (*off_538970)() = &std::collate_byname::~collate_byname; // weak int (*off_53898C)() = &std::collate_byname::~collate_byname; // weak void (__cdecl *off_5389A8)(std::overflow_error *__hidden this) = &std::overflow_error::~overflow_error; // weak int (*off_538A10)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak int (*off_538A2C)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak int (*off_538A48)() = &std::streambuf::~streambuf; // weak int (*off_538A88)() = &std::wstreambuf::~wstreambuf; // weak int (*off_538AC8)() = &std::messages_byname::~messages_byname; // weak int (*off_538AE4)() = &std::messages_byname::~messages_byname; // weak int (*off_538B00)() = &std::numpunct_byname::~numpunct_byname; // weak int (*off_538B24)() = &std::numpunct_byname::~numpunct_byname; // weak int (*off_538B48)() = &std::time_get_byname>::~time_get_byname; // weak int (*off_538B70)() = &std::time_get_byname>::~time_get_byname; // weak int (*off_538B98)() = &std::time_put_byname>::~time_put_byname; // weak int (*off_538BAC)() = &std::time_put_byname>::~time_put_byname; // weak void (__cdecl *off_538BC0)(std::underflow_error *__hidden this) = &std::underflow_error::~underflow_error; // weak int (*off_538BD4)() = &std::__numpunct_cache::~__numpunct_cache; // weak int (*off_538BE4)() = &std::__numpunct_cache::~__numpunct_cache; // weak void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this) = &std::invalid_argument::~invalid_argument; // weak int (*off_538C08)() = &std::__timepunct_cache::~__timepunct_cache; // weak int (*off_538C18)() = &std::__timepunct_cache::~__timepunct_cache; // weak void (__cdecl *off_538C28)(std::bad_function_call *__hidden this) = &std::bad_function_call::~bad_function_call; // weak int (*off_538C3C)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_538C70)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_538CA4)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_538CD8)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_538D0C)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak int (*off_538D1C)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak int (*off_538D2C)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak int (*off_538D3C)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak int (*off_538DA4)() = &std::__codecvt_utf8_base::~__codecvt_utf8_base; // weak void (__cdecl *off_538DD0)(std::__iosfail_type_info *__hidden this) = &std::__iosfail_type_info::~__iosfail_type_info; // weak int (*off_538E54)() = &std::__codecvt_utf16_base::~__codecvt_utf16_base; // weak void (__cdecl *off_538E80)(std::bad_array_new_length *__hidden this) = &std::bad_array_new_length::~bad_array_new_length; // weak _UNKNOWN unk_538ED4; // weak int (*off_538F14)() = &std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace; // weak _UNKNOWN unk_538F30; // weak _UNKNOWN unk_538F5C; // weak _UNKNOWN unk_538F88; // weak _UNKNOWN unk_538FB4; // weak _UNKNOWN unk_538FE0; // weak _UNKNOWN unk_53900C; // weak int (*off_539090)() = &std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base; // weak int (*off_5390BC)() = &std::ctype::~ctype; // weak int (*off_5390EC)() = &std::ctype::~ctype; // weak int (*off_53912C)() = &std::codecvt::~codecvt; // weak int (*off_539158)() = &std::codecvt::~codecvt; // weak int (*off_539184)() = &std::codecvt::~codecvt; // weak int (*off_5391B0)() = &std::codecvt::~codecvt; // weak int (*off_5391DC)() = &std::codecvt::~codecvt; // weak int (*off_539208)() = &std::codecvt::~codecvt; // weak int (*off_539234)() = &std::collate::~collate; // weak int (*off_539250)() = &std::collate::~collate; // weak int (*off_53926C)() = &std::num_get>::~num_get; // weak int (*off_5392A8)() = &std::num_get>::~num_get; // weak int (*off_5392E4)() = &std::num_put>::~num_put; // weak int (*off_539314)() = &std::num_put>::~num_put; // weak void (__cdecl *off_539344)(std::bad_cast *__hidden this) = &std::bad_cast::~bad_cast; // weak void (__cdecl *off_539358)(std::ios_base *__hidden this) = &std::ios_base::~ios_base; // weak int (*off_539368)() = &std::messages::~messages; // weak int (*off_539384)() = &std::messages::~messages; // weak int (*off_5393A0)() = &std::numpunct::~numpunct; // weak int (*off_5393C4)() = &std::numpunct::~numpunct; // weak int (*off_5393E8)() = &std::time_get>::~time_get; // weak int (*off_539410)() = &std::time_get>::~time_get; // weak int (*off_539438)() = &std::time_put>::~time_put; // weak int (*off_53944C)() = &std::time_put>::~time_put; // weak void (__cdecl *off_539460)(std::bad_alloc *__hidden this) = &std::bad_alloc::~bad_alloc; // weak int (*off_539474)() = &std::ios::~ios; // weak int (*off_539484)() = &std::wios::~wios; // weak int (*off_5394A8)() = &std::money_get>::~money_get; // weak int (*off_5394C0)() = &std::money_get>::~money_get; // weak int (*off_5394D8)() = &std::money_put>::~money_put; // weak int (*off_5394F0)() = &std::money_put>::~money_put; // weak _UNKNOWN std::_Sp_make_shared_tag::_S_ti(void)::__tag; // weak _UNKNOWN std::ctype::classic_table(void)::_S_classic_table; // weak _UNKNOWN __EH_FRAME_BEGIN__; // weak char **_bss_start__; // idb int _argc; // idb _UNKNOWN obj; // weak _UNKNOWN WXML::GlassEaselWxs::sWxsEnvInit; // weak _UNKNOWN WXML::GlassEaselWxs::sGenFuncDeepCopy; // weak char *WXML::GlassEaselWxs::sWrapper; // idb _UNKNOWN WXML::GlassEaselWxs::sGitHash; // weak _UNKNOWN night::NS_BUILTIN_TYPE; // weak _UNKNOWN night::NS_BUILTIN_KW; // weak _UNKNOWN night::NS_BUILTIN_SPACE; // weak _UNKNOWN night::NS_BUILTIN_PUNC; // weak _UNKNOWN night::NS_BUILTIN_ALL_OP; // weak _UNKNOWN night::NS_BUILTIN_OP_SELF; // weak _UNKNOWN night::NS_BUILTIN_OP; // weak _UNKNOWN night::NS_TYPE_CALL; // weak _UNKNOWN night::NS_TYPE_FUNC; // weak _UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak _UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak _UNKNOWN night::NS_TYPE_PROG; // weak _UNKNOWN night::NS_TYPE_SWITCH; // weak _UNKNOWN night::NS_TYPE_DO_WHILE; // weak _UNKNOWN night::NS_TYPE_WHILE; // weak _UNKNOWN night::NS_TYPE_FOR; // weak _UNKNOWN night::NS_TYPE_IF; // weak _UNKNOWN night::NS_TYPE_BRACKET; // weak _UNKNOWN night::NS_TYPE_ARRAY; // weak _UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak _UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak _UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak _UNKNOWN night::NS_TYPE_OBJ_DOT; // weak _UNKNOWN night::NS_TYPE_K_V; // weak _UNKNOWN night::NS_TYPE_TERNARY; // weak _UNKNOWN night::NS_TYPE_ASSIGN; // weak _UNKNOWN night::NS_TYPE_BINARY; // weak _UNKNOWN night::NS_TYPE_OP_SELF; // weak _UNKNOWN night::NS_TYPE_OP; // weak _UNKNOWN night::NS_TYPE_PUNC; // weak _UNKNOWN night::NS_TYPE_KW; // weak _UNKNOWN night::NS_TYPE_B_TYPE; // weak _UNKNOWN night::NS_TYPE_NUM; // weak _UNKNOWN night::NS_TYPE_STR; // weak _UNKNOWN night::NS_TYPE_VAR; // weak _UNKNOWN night::NS_TYPE_BOOL; // weak _UNKNOWN night::NS_TYPE_SKIP; // weak _UNKNOWN night::nst_; // weak _UNKNOWN night::nsv_; // weak _UNKNOWN WXML::RPX::acceptNum(char const*,int &)::nextPos; // weak int dword_5834EC; // weak int dword_5834F4; // weak int dword_5834F8; // weak int dword_583500[264]; // weak int dword_583920; // weak int dword_583928[264]; // weak int dword_583D48; // weak int dword_583D50[266]; // weak int dword_584178[266]; // weak int dword_5845A0[218]; // weak char WXML::RPX::acceptNum(char const*,int &)::inited; // weak _UNKNOWN WXML::RPX::acceptStr(char const*,int &)::nextPos; // weak int dword_5849A8; // weak int dword_5849BC; // weak int dword_584D48[34]; // weak int dword_584DD0; // weak int dword_584EB8; // weak int dword_585170[39]; // weak int dword_58520C; // weak int dword_5852E0; // weak int dword_585598[266]; // weak int dword_5859C0[532]; // weak char WXML::RPX::acceptStr(char const*,int &)::inited; // weak _UNKNOWN WXML::RPX::acceptID(char const*,int &)::nextPos; // weak int dword_586324[30]; // weak int dword_58639C; // weak int dword_5863A4[217]; // weak int dword_586708; // weak int dword_58670C; // weak int dword_586710; // weak int dword_586714; // weak int dword_586718; // weak int dword_58671C; // weak int dword_586720; // weak int dword_586724; // weak int dword_586728; // weak int dword_58672C; // weak int dword_58674C[30]; // weak int dword_5867C4; // weak int dword_5867CC[169]; // weak char WXML::RPX::acceptID(char const*,int &)::inited; // weak _UNKNOWN night::std_v_v_n; // weak _UNKNOWN night::std_v_n; // weak int night::NS_BUILTIN_TYPE[6]; // weak int night::NS_BUILTIN_KW[6]; // weak int night::NS_BUILTIN_SPACE[6]; // weak int night::NS_BUILTIN_PUNC[6]; // weak int night::NS_BUILTIN_ALL_OP[6]; // weak _UNKNOWN night::NS_BUILTIN_OP_SELF; // weak int night::NS_BUILTIN_OP[6]; // weak _UNKNOWN night::NS_TYPE_CALL; // weak _UNKNOWN night::NS_TYPE_FUNC; // weak _UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak _UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak _UNKNOWN night::NS_TYPE_PROG; // weak _UNKNOWN night::NS_TYPE_SWITCH; // weak _UNKNOWN night::NS_TYPE_DO_WHILE; // weak _UNKNOWN night::NS_TYPE_WHILE; // weak _UNKNOWN night::NS_TYPE_FOR; // weak _UNKNOWN night::NS_TYPE_IF; // weak _UNKNOWN night::NS_TYPE_BRACKET; // weak _UNKNOWN night::NS_TYPE_ARRAY; // weak _UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak _UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak _UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak _UNKNOWN night::NS_TYPE_OBJ_DOT; // weak _UNKNOWN night::NS_TYPE_K_V; // weak _UNKNOWN night::NS_TYPE_TERNARY; // weak _UNKNOWN night::NS_TYPE_ASSIGN; // weak _UNKNOWN night::NS_TYPE_BINARY; // weak _UNKNOWN night::NS_TYPE_OP_SELF; // weak _UNKNOWN night::NS_TYPE_OP; // weak _UNKNOWN night::NS_TYPE_PUNC; // weak _UNKNOWN night::NS_TYPE_KW; // weak _UNKNOWN night::NS_TYPE_B_TYPE; // weak _UNKNOWN night::NS_TYPE_NUM; // weak _UNKNOWN night::NS_TYPE_STR; // weak _UNKNOWN night::NS_TYPE_VAR; // weak _UNKNOWN night::NS_TYPE_BOOL; // weak _UNKNOWN night::NS_TYPE_SKIP; // weak _UNKNOWN night::nst_; // weak void *night::nsv_; // weak int dword_586E44; // weak _UNKNOWN night::NS_BUILTIN_TYPE; // weak _UNKNOWN night::NS_BUILTIN_KW; // weak _UNKNOWN night::NS_BUILTIN_SPACE; // weak _UNKNOWN night::NS_BUILTIN_PUNC; // weak _UNKNOWN night::NS_BUILTIN_ALL_OP; // weak _UNKNOWN night::NS_BUILTIN_OP_SELF; // weak _UNKNOWN night::NS_BUILTIN_OP; // weak _UNKNOWN night::NS_TYPE_CALL; // weak _UNKNOWN night::NS_TYPE_FUNC; // weak _UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak _UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak _UNKNOWN night::NS_TYPE_PROG; // weak _UNKNOWN night::NS_TYPE_SWITCH; // weak _UNKNOWN night::NS_TYPE_DO_WHILE; // weak _UNKNOWN night::NS_TYPE_WHILE; // weak _UNKNOWN night::NS_TYPE_FOR; // weak _UNKNOWN night::NS_TYPE_IF; // weak _UNKNOWN night::NS_TYPE_BRACKET; // weak _UNKNOWN night::NS_TYPE_ARRAY; // weak _UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak _UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak _UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak _UNKNOWN night::NS_TYPE_OBJ_DOT; // weak _UNKNOWN night::NS_TYPE_K_V; // weak _UNKNOWN night::NS_TYPE_TERNARY; // weak _UNKNOWN night::NS_TYPE_ASSIGN; // weak _UNKNOWN night::NS_TYPE_BINARY; // weak _UNKNOWN night::NS_TYPE_OP_SELF; // weak _UNKNOWN night::NS_TYPE_OP; // weak _UNKNOWN night::NS_TYPE_PUNC; // weak _UNKNOWN night::NS_TYPE_KW; // weak _UNKNOWN night::NS_TYPE_B_TYPE; // weak _UNKNOWN night::NS_TYPE_NUM; // weak _UNKNOWN night::NS_TYPE_STR; // weak _UNKNOWN night::NS_TYPE_VAR; // weak _UNKNOWN night::NS_TYPE_BOOL; // weak _UNKNOWN night::NS_TYPE_SKIP; // weak _UNKNOWN night::nst_; // weak _UNKNOWN night::nsv_; // weak _UNKNOWN night::NS_BUILTIN_TYPE; // weak _UNKNOWN night::NS_BUILTIN_KW; // weak _UNKNOWN night::NS_BUILTIN_SPACE; // weak _UNKNOWN night::NS_BUILTIN_PUNC; // weak _UNKNOWN night::NS_BUILTIN_ALL_OP; // weak _UNKNOWN night::NS_BUILTIN_OP_SELF; // weak _UNKNOWN night::NS_BUILTIN_OP; // weak _UNKNOWN night::NS_TYPE_CALL; // weak _UNKNOWN night::NS_TYPE_FUNC; // weak _UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak _UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak _UNKNOWN night::NS_TYPE_PROG; // weak _UNKNOWN night::NS_TYPE_SWITCH; // weak _UNKNOWN night::NS_TYPE_DO_WHILE; // weak _UNKNOWN night::NS_TYPE_WHILE; // weak _UNKNOWN night::NS_TYPE_FOR; // weak _UNKNOWN night::NS_TYPE_IF; // weak _UNKNOWN night::NS_TYPE_BRACKET; // weak _UNKNOWN night::NS_TYPE_ARRAY; // weak _UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak _UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak _UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak _UNKNOWN night::NS_TYPE_OBJ_DOT; // weak _UNKNOWN night::NS_TYPE_K_V; // weak _UNKNOWN night::NS_TYPE_TERNARY; // weak _UNKNOWN night::NS_TYPE_ASSIGN; // weak _UNKNOWN night::NS_TYPE_BINARY; // weak _UNKNOWN night::NS_TYPE_OP_SELF; // weak _UNKNOWN night::NS_TYPE_OP; // weak _UNKNOWN night::NS_TYPE_PUNC; // weak _UNKNOWN night::NS_TYPE_KW; // weak _UNKNOWN night::NS_TYPE_B_TYPE; // weak _UNKNOWN night::NS_TYPE_NUM; // weak _UNKNOWN night::NS_TYPE_STR; // weak _UNKNOWN night::NS_TYPE_VAR; // weak _UNKNOWN night::NS_TYPE_BOOL; // weak _UNKNOWN night::NS_TYPE_SKIP; // weak _UNKNOWN night::nst_; // weak _UNKNOWN night::nsv_; // weak _UNKNOWN night::NS_BUILTIN_TYPE; // weak _UNKNOWN night::NS_BUILTIN_KW; // weak _UNKNOWN night::NS_BUILTIN_SPACE; // weak _UNKNOWN night::NS_BUILTIN_PUNC; // weak _UNKNOWN night::NS_BUILTIN_ALL_OP; // weak _UNKNOWN night::NS_BUILTIN_OP_SELF; // weak _UNKNOWN night::NS_BUILTIN_OP; // weak _UNKNOWN night::NS_TYPE_CALL; // weak _UNKNOWN night::NS_TYPE_FUNC; // weak _UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak _UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak _UNKNOWN night::NS_TYPE_PROG; // weak _UNKNOWN night::NS_TYPE_SWITCH; // weak _UNKNOWN night::NS_TYPE_DO_WHILE; // weak _UNKNOWN night::NS_TYPE_WHILE; // weak _UNKNOWN night::NS_TYPE_FOR; // weak _UNKNOWN night::NS_TYPE_IF; // weak _UNKNOWN night::NS_TYPE_BRACKET; // weak _UNKNOWN night::NS_TYPE_ARRAY; // weak _UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak _UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak _UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak _UNKNOWN night::NS_TYPE_OBJ_DOT; // weak _UNKNOWN night::NS_TYPE_K_V; // weak _UNKNOWN night::NS_TYPE_TERNARY; // weak _UNKNOWN night::NS_TYPE_ASSIGN; // weak _UNKNOWN night::NS_TYPE_BINARY; // weak _UNKNOWN night::NS_TYPE_OP_SELF; // weak _UNKNOWN night::NS_TYPE_OP; // weak _UNKNOWN night::NS_TYPE_PUNC; // weak _UNKNOWN night::NS_TYPE_KW; // weak _UNKNOWN night::NS_TYPE_B_TYPE; // weak _UNKNOWN night::NS_TYPE_NUM; // weak _UNKNOWN night::NS_TYPE_STR; // weak _UNKNOWN night::NS_TYPE_VAR; // weak _UNKNOWN night::NS_TYPE_BOOL; // weak _UNKNOWN night::NS_TYPE_SKIP; // weak _UNKNOWN night::nst_; // weak _UNKNOWN night::nsv_; // weak int WXML::NameAllocator::ALPAHBETLEN; // weak int WXML::DOMLib::WXMLDom::componentCnt; // weak int WXML::DOMLib::Machine::STT[]; // weak int dword_587964; // weak int dword_587974; // weak int dword_587984; // weak int dword_5879DC; // weak int dword_5879E0; // weak int WXML::DOMLib::Machine::TT[]; // weak int dword_588D60[]; // weak int dword_588D64; // weak int dword_588E54; // weak int dword_588F50; // weak int dword_589164; // weak int dword_589168[33]; // weak int dword_5891EC; // weak int dword_589224; // weak int dword_589344; // weak int dword_589568; // weak int dword_58956C[34]; // weak int dword_5895F4; // weak int dword_589608; // weak int dword_589628; // weak int dword_58965C; // weak int dword_589660; // weak int dword_589664; // weak int dword_58996C; // weak int dword_589970[34]; // weak int dword_5899F8; // weak int dword_589A2C; // weak int dword_589A64; // weak int dword_589A68; // weak int dword_589D70; // weak int dword_589D74; // weak int dword_589D9C; // weak int dword_589DFC; // weak int dword_589EE4; // weak int dword_58A174; // weak int dword_58A178[]; // weak int dword_58A200; // weak int dword_58A214; // weak int dword_58A578; // weak int dword_58A5A4; // weak int dword_58A97C; // weak int dword_58AD84; // weak int dword_58ADAC; // weak int dword_58AE20; // weak int dword_58AEF4; // weak int dword_58B184; // weak int dword_58B1B0; // weak int dword_58B588; // weak int dword_58B58C; // weak int dword_58B614; // weak int dword_58B6FC; // weak int dword_58B98C; // weak int dword_58BD90; // weak int dword_58BD94; // weak int dword_58BE30; // weak int dword_58BF04; // weak int dword_58C194; // weak int dword_58C598; // weak int dword_58C788; // weak int dword_58C99C; // weak int dword_58C9A0; // weak int dword_58CA28; // weak int dword_58CA3C; // weak int dword_58CB94; // weak int dword_58CDA0; // weak int dword_58CF98; // weak int dword_58D1A4; // weak int dword_58D1A8[62]; // weak int dword_58D2A0; // weak int dword_58D5A8; // weak int dword_58D660; // weak int dword_58D9AC; // weak int dword_58DA64; // weak int dword_58DDB0; // weak int dword_58DE68; // weak int dword_58DEAC; // weak int dword_58E1B4; // weak int dword_58E398; // weak int dword_58E5B8; // weak int dword_58E788; // weak int dword_58E9BC; // weak int dword_58E9C0[62]; // weak int dword_58EAB8; // weak int dword_58EDC0; // weak int dword_58EE80; // weak int dword_58EEBC; // weak int dword_58F1C4; // weak int dword_58F284; // weak int dword_58F5C8; // weak int dword_58F7A8; // weak int dword_58F9CC; // weak int dword_58FBB0; // weak int dword_58FDD0; // weak int dword_58FFA0; // weak int dword_5901D4; // weak int dword_5901D8[62]; // weak int dword_5902D0; // weak int dword_5905D8; // weak int dword_5906CC; // weak int dword_5909DC; // weak int dword_590AD8; // weak int dword_590DE0; // weak int dword_590E98; // weak int dword_5911E4; // weak int dword_59129C; // weak int dword_5915E8; // weak int dword_5A1AEC; // weak _UNKNOWN unk_620001; // weak char WXML::DOMLib::Machine::InitTransitTable(void)::bInited; // weak int WXML::EXPRLib::Tokenizer::TT[]; // weak int dword_689DA0[]; // weak int dword_689DA4[33]; // weak int dword_689E28; // weak int dword_689E2C; // weak int dword_689E3C; // weak int dword_689E40; // weak int dword_689E5C; // weak int dword_689E60; // weak int dword_689E94; // weak int dword_689E98; // weak int dword_689E9C; // weak int dword_689F94; // weak int dword_68A1A4; // weak int dword_68A29C; // weak int dword_68A5A8; // weak int dword_68A5AC[46]; // weak int dword_68A664; // weak int dword_68A9AC; // weak int dword_68AA68; // weak int dword_68ADB0; // weak int dword_68B1E0; // weak int dword_68B240; // weak int dword_68B328; // weak int dword_68B5B8; // weak int dword_68B5E4; // weak int dword_68B9BC; // weak int dword_68B9E8; // weak int dword_68BA5C; // weak int dword_68BB30; // weak int dword_68BDC0; // weak int dword_68BDEC; // weak int dword_68C1C4; // weak int dword_68C1C8[46]; // weak int dword_68C280; // weak int dword_68C5C8; // weak int dword_68C5CC[256]; // weak int dword_68C9CC; // weak int dword_68CAC4; // weak int dword_68CDD0; // weak int dword_68CDD4[256]; // weak int dword_68D1D4; // weak int dword_68D270; // weak int dword_68D5D8; // weak int dword_68D7CC; // weak int dword_68D9DC; // weak int dword_68DAD0; // weak int dword_68DAD4; // weak int dword_68DDE0; // weak int dword_68DED8; // weak int dword_68DEDC; // weak int dword_68E1E4; // weak int dword_68E2DC; // weak int dword_68E5E8; // weak int dword_68E6E0; // weak int dword_68E9EC; // weak int dword_68EAE4; // weak int dword_68EDF0; // weak int dword_68EE9C; // weak int dword_68F1F4; // weak int dword_68F2A0; // weak int dword_68F5F8; // weak int dword_68F6A4; // weak int dword_68F6B8; // weak int dword_68F9FC; // weak char WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited; // weak int _CRT_fmode; // idb int __cpu_features; // weak int dword_78A9D0; // weak int _CRT_MT; // weak int dword_78A9E8; // weak int dword_78A9EC; // weak struct _RTL_CRITICAL_SECTION CriticalSection; // idb int dword_78AA08; // weak int dword_78AA20; // weak _UNKNOWN unk_78AA40; // weak int dword_78B340[10]; // weak LONG Target; // idb struct _RTL_CRITICAL_SECTION stru_78B380; // idb struct _RTL_CRITICAL_SECTION stru_78B398; // idb int dword_78B3C0; // weak _UNKNOWN unk_78B3C4; // weak _UNKNOWN unk_78B3C8; // weak _UNKNOWN __mingw_output_format_flags; // weak char byte_78B3CD; // 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_78B450; // 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); } // 53264C: 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); } // 45E898: using guessed type int __cdecl __getmainargs(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 515050: 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); } // 515000: 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); } // 515000: using guessed type int (__cdecl *_data_start__)(_DWORD); //----- (00401410) -------------------------------------------------------- void __cdecl __tcf_3() { std::string::_M_dispose((void **)&night::nsv_); } //----- (0040141A) -------------------------------------------------------- void __cdecl __tcf_4() { std::string::_M_dispose((void **)&night::nst_); } //----- (00401424) -------------------------------------------------------- void __cdecl __tcf_5() { std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); } //----- (0040142E) -------------------------------------------------------- void __cdecl __tcf_6() { std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); } //----- (00401438) -------------------------------------------------------- void __cdecl __tcf_7() { std::string::_M_dispose((void **)&night::NS_TYPE_VAR); } //----- (00401442) -------------------------------------------------------- void __cdecl __tcf_8() { std::string::_M_dispose((void **)&night::NS_TYPE_STR); } //----- (0040144C) -------------------------------------------------------- void __cdecl __tcf_9() { std::string::_M_dispose((void **)&night::NS_TYPE_NUM); } //----- (00401456) -------------------------------------------------------- void __cdecl __tcf_10() { std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); } //----- (00401460) -------------------------------------------------------- void __cdecl __tcf_11() { std::string::_M_dispose((void **)&night::NS_TYPE_KW); } //----- (0040146A) -------------------------------------------------------- void __cdecl __tcf_12() { std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); } //----- (00401474) -------------------------------------------------------- void __cdecl __tcf_13() { std::string::_M_dispose((void **)&night::NS_TYPE_OP); } //----- (0040147E) -------------------------------------------------------- void __cdecl __tcf_14() { std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); } //----- (00401488) -------------------------------------------------------- void __cdecl __tcf_15() { std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); } //----- (00401492) -------------------------------------------------------- void __cdecl __tcf_16() { std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); } //----- (0040149C) -------------------------------------------------------- void __cdecl __tcf_17() { std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); } //----- (004014A6) -------------------------------------------------------- void __cdecl __tcf_18() { std::string::_M_dispose((void **)&night::NS_TYPE_K_V); } //----- (004014B0) -------------------------------------------------------- void __cdecl __tcf_19() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); } //----- (004014BA) -------------------------------------------------------- void __cdecl __tcf_20() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); } //----- (004014C4) -------------------------------------------------------- void __cdecl __tcf_21() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); } //----- (004014CE) -------------------------------------------------------- void __cdecl __tcf_22() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); } //----- (004014D8) -------------------------------------------------------- void __cdecl __tcf_23() { std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); } //----- (004014E2) -------------------------------------------------------- void __cdecl __tcf_24() { std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); } //----- (004014EC) -------------------------------------------------------- void __cdecl __tcf_25() { std::string::_M_dispose((void **)&night::NS_TYPE_IF); } //----- (004014F6) -------------------------------------------------------- void __cdecl __tcf_26() { std::string::_M_dispose((void **)&night::NS_TYPE_FOR); } //----- (00401500) -------------------------------------------------------- void __cdecl __tcf_27() { std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); } //----- (0040150A) -------------------------------------------------------- void __cdecl __tcf_28() { std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); } //----- (00401514) -------------------------------------------------------- void __cdecl __tcf_29() { std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); } //----- (0040151E) -------------------------------------------------------- void __cdecl __tcf_30() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG); } //----- (00401528) -------------------------------------------------------- void __cdecl __tcf_31() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); } //----- (00401532) -------------------------------------------------------- void __cdecl __tcf_32() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); } //----- (0040153C) -------------------------------------------------------- void __cdecl __tcf_33() { std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); } //----- (00401546) -------------------------------------------------------- void __cdecl __tcf_34() { std::string::_M_dispose((void **)&night::NS_TYPE_CALL); } //----- (00401550) -------------------------------------------------------- void __cdecl __tcf_35() { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); } //----- (0040155A) -------------------------------------------------------- void __cdecl __tcf_36() { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); } //----- (00401564) -------------------------------------------------------- void __cdecl __tcf_37() { std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); } //----- (0040156E) -------------------------------------------------------- void __cdecl __tcf_38() { std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); } //----- (00401578) -------------------------------------------------------- void __cdecl __tcf_39() { std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); } //----- (00401582) -------------------------------------------------------- void __cdecl __tcf_40() { std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); } //----- (0040158C) -------------------------------------------------------- void __cdecl __tcf_41() { std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); } //----- (00401596) -------------------------------------------------------- void __cdecl __tcf_42() { std::string::_M_dispose((void **)&WXML::GlassEaselWxs::sGitHash); } //----- (004015A0) -------------------------------------------------------- void __cdecl __tcf_43() { std::string::_M_dispose((void **)&WXML::GlassEaselWxs::sWrapper); } //----- (004015AA) -------------------------------------------------------- void __cdecl __tcf_44() { std::string::_M_dispose((void **)&WXML::GlassEaselWxs::sGenFuncDeepCopy); } //----- (004015B4) -------------------------------------------------------- void __cdecl __tcf_45() { std::string::_M_dispose((void **)&WXML::GlassEaselWxs::sWxsEnvInit); } //----- (004015BE) -------------------------------------------------------- int snprintf(char *const Buffer, const size_t BufferCount, const char *const Format, ...) { va_list ArgList; // [esp+2Ch] [ebp+14h] BYREF va_start(ArgList, Format); return vsnprintf_2(Buffer, BufferCount, Format, ArgList); } //----- (004015E6) -------------------------------------------------------- void __cdecl __tcf_2() { std::ios_base::Init::~Init(); } //----- (004015F0) -------------------------------------------------------- int __usercall main::{lambda(std::string const&)#1}::operator()@(const char **a1@, const char **a2@) { const char *v3; // eax FILE *v4; // ebx int result; // eax v3 = *a1; v4 = &__iob[1]; if ( v3 && *v3 ) v4 = fopen(v3, "w"); result = fprintf(v4, "%s\n", *a2); if ( v4 != &__iob[1] ) return fclose(v4); return result; } //----- (0040164E) -------------------------------------------------------- void __usercall std::_Vector_base::_M_deallocate(void *a1@) { if ( a1 ) operator delete(a1); } // 40164E: could not find valid save-restore pair for ebp //----- (00401664) -------------------------------------------------------- void __fastcall std::pair::~pair(void **a1) { std::string::_M_dispose(a1 + 6); std::string::_M_dispose(a1); } //----- (0040167E) -------------------------------------------------------- void *__usercall __gnu_cxx::new_allocator::allocate@(unsigned int a1@) { void (__cdecl *v2)(void *); // [esp+4h] [ebp-14h] if ( a1 > 0x5555555 ) std::__throw_bad_alloc(); return operator new((struct type_info *)(24 * a1), v2); } // 401696: variable 'v2' is possibly undefined //----- (0040169D) -------------------------------------------------------- _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)]; } //----- (004016F6) -------------------------------------------------------- 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; } // 4016F6: using guessed type unsigned int var_1C[7]; //----- (00401777) -------------------------------------------------------- int __cdecl Usage(int a1, const char **a2) { printf("Wechat WXML Compiler, core version %s, cli version %s\n", "v0.5vv_20211229_syb_scopedata", sCliVersion); printf( "Usage: %s [-d] [-o OUTPUT] [-xc XComponentDefine] [-om XComponentDefine] [-cb [callback.js...]] [-llcommon] [-llw/-l" "la XCPath] [--wxs ContentMapFile] \n", *a2); puts(" Options:"); puts(" -d: output code for debug"); puts(" -o: output destination (default stdout)"); puts(" -xc: output simplified code for custom component"); puts(" -cc: output compelete code for custom component"); puts(" -s: read from stdin"); puts(" -ds: insert debug wxs info"); puts(" -cb: add life cycle callback"); puts(" -llw: compile in lazy load mode (webiew)"); puts(" -lla: compile in lazy load mode (app service)"); puts(" args XCPath: custom component paths connected by comma or --split (./page/index,./comp/comp)"); puts(" --wxs: compile wxs scripts for glass-easel"); puts(" --gdc: gdc function for glass-easel"); puts(" --wxs-env: wxs env for glass-easel"); return 1; } // 515004: using guessed type char *sCliVersion; //----- (0040185E) -------------------------------------------------------- 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_5173B0); 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; } //----- (004018FF) -------------------------------------------------------- _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; } //----- (004019B7) -------------------------------------------------------- _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_5173B0); } 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; } //----- (00401ABA) -------------------------------------------------------- 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)); } //----- (00401ACE) -------------------------------------------------------- int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound@( int a1@, int a2@, int a3@) { while ( a1 ) { if ( (unsigned __int8)std::operator<(a1 + 16, a3) ) { a1 = *(_DWORD *)(a1 + 12); } else { a2 = a1; a1 = *(_DWORD *)(a1 + 8); } } return a2; } //----- (00401B0A) -------------------------------------------------------- void __fastcall std::vector::~vector(void ***a1, int a2) { std::_Destroy_aux::__destroy(a2, *a1, a1[1]); std::_Vector_base::_M_deallocate(*a1); } //----- (00401B30) -------------------------------------------------------- int __cdecl Split(int a1, int *a2, int a3) { unsigned int v3; // edi int v4; // ebx void *v6[6]; // [esp+10h] [ebp-48h] BYREF void *v7[12]; // [esp+28h] [ebp-30h] BYREF v3 = 0; *(_DWORD *)a1 = 0; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; while ( 1 ) { v4 = std::string::find(a2, a3, v3); std::string::substr(v6, a2, v3, v4 - v3); Trim(v7, (int)v6); std::vector::emplace_back((void ***)a1, v7); std::string::_M_dispose(v7); std::string::_M_dispose(v6); if ( v4 == -1 ) break; v3 = v4 + *(_DWORD *)(a3 + 4); } return a1; } //----- (00401BF0) -------------------------------------------------------- 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)); } //----- (00401C04) -------------------------------------------------------- _DWORD *__usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>@( int *a1@) { _DWORD *v2; // ebx int v3; // edi unsigned int v4; // eax _DWORD *v5; // eax int v6; // ecx int v7; // edx int v8; // eax _DWORD *result; // eax void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] v2 = operator new((struct type_info *)0x34, v10); std::string::basic_string(v2 + 4, (int)(a1 + 4)); v3 = a1[11] - a1[10]; v2[10] = 0; v2[11] = 0; v2[12] = 0; v4 = -1431655765 * (v3 >> 3); if ( v4 ) v5 = __gnu_cxx::new_allocator::allocate(v4); else v5 = 0; v6 = a1[11]; v7 = a1[10]; v2[10] = v5; v2[11] = v5; v2[12] = (char *)v5 + v3; v2[11] = std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>( v7, v6, v5); v8 = *a1; v2[2] = 0; *v2 = v8; result = v2; v2[3] = 0; return result; } // 401C16: variable 'v10' is possibly undefined //----- (00401CE4) -------------------------------------------------------- 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); } //----- (00401D1B) -------------------------------------------------------- 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; } //----- (00401D5E) -------------------------------------------------------- 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_58639C = 1; dword_5867C4 = 1; do { dword_5863A4[v2] = 1; dword_586324[v2] = 1; dword_5867CC[v2] = 1; dword_58674C[v2++] = 1; } while ( v2 != 26 ); dword_586708 = 1; dword_58670C = 1; dword_586710 = 1; dword_586714 = 1; dword_586718 = 1; dword_58671C = 1; dword_586720 = 1; dword_586724 = 1; dword_586728 = 1; dword_58672C = 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); } // 586324: using guessed type int dword_586324[30]; // 58639C: using guessed type int dword_58639C; // 5863A4: using guessed type int dword_5863A4[217]; // 586708: using guessed type int dword_586708; // 58670C: using guessed type int dword_58670C; // 586710: using guessed type int dword_586710; // 586714: using guessed type int dword_586714; // 586718: using guessed type int dword_586718; // 58671C: using guessed type int dword_58671C; // 586720: using guessed type int dword_586720; // 586724: using guessed type int dword_586724; // 586728: using guessed type int dword_586728; // 58672C: using guessed type int dword_58672C; // 58674C: using guessed type int dword_58674C[30]; // 5867C4: using guessed type int dword_5867C4; // 5867CC: using guessed type int dword_5867CC[169]; // 586A70: using guessed type char WXML::RPX::acceptID(char const*,int &)::inited; //----- (00401E5D) -------------------------------------------------------- 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_584D48[i] = 1; dword_585170[i] = 2; dword_585598[i] = 1; dword_5859C0[i] = 2; } dword_5849A8 = 1; dword_5849BC = 2; dword_584EB8 = 3; dword_5852E0 = 4; dword_584DD0 = 5; dword_58520C = 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); } // 5849A8: using guessed type int dword_5849A8; // 5849BC: using guessed type int dword_5849BC; // 584D48: using guessed type int dword_584D48[34]; // 584DD0: using guessed type int dword_584DD0; // 584EB8: using guessed type int dword_584EB8; // 585170: using guessed type int dword_585170[39]; // 58520C: using guessed type int dword_58520C; // 5852E0: using guessed type int dword_5852E0; // 585598: using guessed type int dword_585598[266]; // 5859C0: using guessed type int dword_5859C0[532]; // 586210: using guessed type char WXML::RPX::acceptStr(char const*,int &)::inited; //----- (00401F22) -------------------------------------------------------- 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_5834EC = 1; dword_5834F4 = 1; dword_5834F8 = 3; dword_583920 = 3; dword_583D48 = 4; do { dword_583500[v2] = 2; dword_583928[v2] = 2; dword_583D50[v2] = 2; dword_584178[v2] = 4; dword_5845A0[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); } // 5834EC: using guessed type int dword_5834EC; // 5834F4: using guessed type int dword_5834F4; // 5834F8: using guessed type int dword_5834F8; // 583500: using guessed type int dword_583500[264]; // 583920: using guessed type int dword_583920; // 583928: using guessed type int dword_583928[264]; // 583D48: using guessed type int dword_583D48; // 583D50: using guessed type int dword_583D50[266]; // 584178: using guessed type int dword_584178[266]; // 5845A0: using guessed type int dword_5845A0[218]; // 584908: using guessed type char WXML::RPX::acceptNum(char const*,int &)::inited; //----- (00401FE6) -------------------------------------------------------- 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; } //----- (0040207E) -------------------------------------------------------- void __cdecl WXML::Rewrite::ToStringCode(int a1, int a2, int a3) { int i; // ebx int v4; // eax unsigned int v5; // ecx int 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 = 21233665; if ( _bittest(&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"); } } } //----- (00402177) -------------------------------------------------------- void __cdecl WXML::Rewrite::ToStringCode(int *a1, int a2) { WXML::Rewrite::ToStringCode(*a1, a1[1], a2); } //----- (0040219A) -------------------------------------------------------- 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; } // 40219A: using guessed type char var_D0[4]; // 40219A: using guessed type int var_CC[50]; //----- (0040224E) -------------------------------------------------------- int __cdecl WXML::Rewrite::ToStringCode3(int a1, int *a2) { WXML::Rewrite::ToStringCode3[abi:cxx11](a1, *a2, a2[1]); return a1; } //----- (00402274) -------------------------------------------------------- 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; } // 402274: using guessed type char var_D0[4]; // 402274: using guessed type int var_CC[50]; //----- (00402376) -------------------------------------------------------- int __cdecl WXML::Rewrite::ToStringCode2(int a1, int *a2) { WXML::Rewrite::ToStringCode2[abi:cxx11](a1, *a2, a2[1]); return a1; } //----- (0040239C) -------------------------------------------------------- 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); } // 40239C: using guessed type int var_CC[51]; //----- (00402415) -------------------------------------------------------- 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; } //----- (00402459) -------------------------------------------------------- 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; } // 402509: variable 'v11' is possibly undefined //----- (0040259E) -------------------------------------------------------- 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); } // 4025D4: variable 'v5' is possibly undefined //----- (004025E5) -------------------------------------------------------- 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_51B99E); 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_51B99F) ) { 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; } //----- (004028A8) -------------------------------------------------------- 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_51B99E); 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_51B9A3) && !std::string::compare((int)&v22[v6 + 32], "(") ) { std::string::basic_string((void **)&Str1, (char *)&byte_51B99E); 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; } // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 4028A8: using guessed type char var_E0[4]; // 4028A8: using guessed type int var_DC[55]; //----- (00402D58) -------------------------------------------------------- void __cdecl __tcf_1() { std::string::_M_dispose(&night::nsv_); } // 586E40: using guessed type void *night::nsv_; //----- (00402D62) -------------------------------------------------------- void __cdecl __tcf_2_0() { std::string::_M_dispose((void **)&night::nst_); } //----- (00402D6C) -------------------------------------------------------- void __cdecl __tcf_3_0() { std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); } //----- (00402D76) -------------------------------------------------------- void __cdecl __tcf_4_0() { std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); } //----- (00402D80) -------------------------------------------------------- void __cdecl __tcf_5_0() { std::string::_M_dispose((void **)&night::NS_TYPE_VAR); } //----- (00402D8A) -------------------------------------------------------- void __cdecl __tcf_6_0() { std::string::_M_dispose((void **)&night::NS_TYPE_STR); } //----- (00402D94) -------------------------------------------------------- void __cdecl __tcf_7_0() { std::string::_M_dispose((void **)&night::NS_TYPE_NUM); } //----- (00402D9E) -------------------------------------------------------- void __cdecl __tcf_8_0() { std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); } //----- (00402DA8) -------------------------------------------------------- void __cdecl __tcf_9_0() { std::string::_M_dispose((void **)&night::NS_TYPE_KW); } //----- (00402DB2) -------------------------------------------------------- void __cdecl __tcf_10_0() { std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); } //----- (00402DBC) -------------------------------------------------------- void __cdecl __tcf_11_0() { std::string::_M_dispose((void **)&night::NS_TYPE_OP); } //----- (00402DC6) -------------------------------------------------------- void __cdecl __tcf_12_0() { std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); } //----- (00402DD0) -------------------------------------------------------- void __cdecl __tcf_13_0() { std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); } //----- (00402DDA) -------------------------------------------------------- void __cdecl __tcf_14_0() { std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); } //----- (00402DE4) -------------------------------------------------------- void __cdecl __tcf_15_0() { std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); } //----- (00402DEE) -------------------------------------------------------- void __cdecl __tcf_16_0() { std::string::_M_dispose((void **)&night::NS_TYPE_K_V); } //----- (00402DF8) -------------------------------------------------------- void __cdecl __tcf_17_0() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); } //----- (00402E02) -------------------------------------------------------- void __cdecl __tcf_18_0() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); } //----- (00402E0C) -------------------------------------------------------- void __cdecl __tcf_19_0() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); } //----- (00402E16) -------------------------------------------------------- void __cdecl __tcf_20_0() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); } //----- (00402E20) -------------------------------------------------------- void __cdecl __tcf_21_0() { std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); } //----- (00402E2A) -------------------------------------------------------- void __cdecl __tcf_22_0() { std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); } //----- (00402E34) -------------------------------------------------------- void __cdecl __tcf_23_0() { std::string::_M_dispose((void **)&night::NS_TYPE_IF); } //----- (00402E3E) -------------------------------------------------------- void __cdecl __tcf_24_0() { std::string::_M_dispose((void **)&night::NS_TYPE_FOR); } //----- (00402E48) -------------------------------------------------------- void __cdecl __tcf_25_0() { std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); } //----- (00402E52) -------------------------------------------------------- void __cdecl __tcf_26_0() { std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); } //----- (00402E5C) -------------------------------------------------------- void __cdecl __tcf_27_0() { std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); } //----- (00402E66) -------------------------------------------------------- void __cdecl __tcf_28_0() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG); } //----- (00402E70) -------------------------------------------------------- void __cdecl __tcf_29_0() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); } //----- (00402E7A) -------------------------------------------------------- void __cdecl __tcf_30_0() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); } //----- (00402E84) -------------------------------------------------------- void __cdecl __tcf_31_0() { std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); } //----- (00402E8E) -------------------------------------------------------- void __cdecl __tcf_32_0() { std::string::_M_dispose((void **)&night::NS_TYPE_CALL); } //----- (00402E98) -------------------------------------------------------- void __cdecl __tcf_33_0() { std::string::_M_dispose((void **)night::NS_BUILTIN_OP); } // 586B40: using guessed type int night::NS_BUILTIN_OP[6]; //----- (00402EA2) -------------------------------------------------------- void __cdecl __tcf_34_0() { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); } //----- (00402EAC) -------------------------------------------------------- void __cdecl __tcf_35_0() { std::string::_M_dispose((void **)night::NS_BUILTIN_ALL_OP); } // 586B10: using guessed type int night::NS_BUILTIN_ALL_OP[6]; //----- (00402EB6) -------------------------------------------------------- void __cdecl __tcf_36_0() { std::string::_M_dispose((void **)night::NS_BUILTIN_PUNC); } // 586AF8: using guessed type int night::NS_BUILTIN_PUNC[6]; //----- (00402EC0) -------------------------------------------------------- void __cdecl __tcf_37_0() { std::string::_M_dispose((void **)night::NS_BUILTIN_SPACE); } // 586AE0: using guessed type int night::NS_BUILTIN_SPACE[6]; //----- (00402ECA) -------------------------------------------------------- void __cdecl __tcf_38_0() { std::string::_M_dispose((void **)night::NS_BUILTIN_KW); } // 586AC8: using guessed type int night::NS_BUILTIN_KW[6]; //----- (00402ED4) -------------------------------------------------------- void __cdecl __tcf_39_0() { std::string::_M_dispose((void **)night::NS_BUILTIN_TYPE); } // 586AB0: using guessed type int night::NS_BUILTIN_TYPE[6]; //----- (00402EDE) -------------------------------------------------------- void __cdecl __tcf_40_0() { std::string::_M_dispose((void **)&night::std_v_n); } //----- (00402EE8) -------------------------------------------------------- void __cdecl __tcf_41_0() { std::string::_M_dispose((void **)&night::std_v_v_n); } //----- (00402EF8) -------------------------------------------------------- void __usercall std::_Vector_base::_M_deallocate(void *a1@) { if ( a1 ) operator delete(a1); } // 402EF8: could not find valid save-restore pair for ebp //----- (00402F0E) -------------------------------------------------------- void __usercall std::_Vector_base::_M_deallocate(void *a1@) { if ( a1 ) operator delete(a1); } // 402F0E: could not find valid save-restore pair for ebp //----- (00402F24) -------------------------------------------------------- void __fastcall night::ns_sourcemap::~ns_sourcemap(void **a1) { std::string::_M_dispose(a1 + 8); std::string::_M_dispose(a1); } //----- (00402F3E) -------------------------------------------------------- void __fastcall night::NSASTParse::~NSASTParse(void **a1) { std::string::_M_dispose(a1 + 11); std::string::_M_dispose(a1); } //----- (00402F58) -------------------------------------------------------- void __fastcall night::NSStream::~NSStream(void **a1) { std::string::_M_dispose(a1 + 6); std::string::_M_dispose(a1); } //----- (00402F72) -------------------------------------------------------- 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); } if ( *a1 ) operator delete(*a1); } //----- (00402FA8) -------------------------------------------------------- int __usercall std::__relocate_a_1@( void *a1@, const void *a2@, int a3@) { signed int v3; // edx signed int v4; // esi v3 = a3 - (_DWORD)a2; v4 = v3; if ( v3 > 0 ) memmove(a1, a2, v3); return (int)a1 + v4; } //----- (00402FD6) -------------------------------------------------------- int snprintf_constprop_0(char *Buffer, int a2, char *Format, ...) { va_list va; // [esp+2Ch] [ebp+14h] BYREF va_start(va, Format); return vsnprintf_2(Buffer, 0x400u, Format, va); } //----- (00403000) -------------------------------------------------------- #error "40304B: call analysis failed (funcsize=31)" //----- (0040306C) -------------------------------------------------------- #error "4030B7: call analysis failed (funcsize=31)" //----- (004030D8) -------------------------------------------------------- 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; } // 4030D8: using guessed type unsigned int var_1C[7]; //----- (0040314A) -------------------------------------------------------- void __fastcall std::_Vector_base::~_Vector_base(void **a1) { if ( *a1 ) operator delete(*a1); } // 40314A: could not find valid save-restore pair for ebp //----- (00403162) -------------------------------------------------------- int __thiscall night::NSStream::NSStream(_DWORD *this, int a2, int a3, int a4) { int v4; // edi int result; // eax v4 = (int)(this + 6); *this = this + 2; this[6] = this + 8; this[1] = 0; *((_BYTE *)this + 8) = 0; this[7] = 0; *((_BYTE *)this + 32) = 0; std::string::_M_assign((int)this, a2); std::string::_M_assign(v4, a3); result = a4; this[12] = 0; this[13] = a4; this[14] = 1; return result; } //----- (004031E2) -------------------------------------------------------- _DWORD *__thiscall night::NSStream::next(_DWORD *ecx0, night::NSStream *this) { unsigned int v3; // eax int v5; // [esp+10h] [ebp-18h] int v6; // [esp+14h] [ebp-14h] char v7; // [esp+1Fh] [ebp-9h] v3 = *((_DWORD *)this + 12); if ( v3 < *((_DWORD *)this + 7) ) { *((_DWORD *)this + 12) = v3 + 1; v7 = *(_BYTE *)std::string::at((_DWORD *)this + 6, v3); v6 = *((_DWORD *)this + 14); v5 = *((_DWORD *)this + 13); if ( v7 == 10 ) { *((_DWORD *)this + 14) = 1; *((_DWORD *)this + 13) = v5 + 1; } else { ++*((_DWORD *)this + 14); } *(_BYTE *)ecx0 = v7; ecx0[2] = v6; ecx0[1] = v5; } else { *(_BYTE *)ecx0 = 0; ecx0[1] = 0; ecx0[2] = 0; } return ecx0; } //----- (00403266) -------------------------------------------------------- _DWORD *__thiscall night::NSStream::peek(_DWORD *ecx0, night::NSStream *this) { char *v3; // eax int v4; // edx char v5; // cl if ( *((_DWORD *)this + 12) < *((_DWORD *)this + 7) ) { v3 = (char *)std::string::at((_DWORD *)this + 6, *((_DWORD *)this + 12)); v4 = *((_DWORD *)this + 14); v5 = *v3; ecx0[1] = *((_DWORD *)this + 13); *(_BYTE *)ecx0 = v5; ecx0[2] = v4; } else { *(_BYTE *)ecx0 = 0; ecx0[1] = 0; ecx0[2] = 0; } return ecx0; } //----- (004032B8) -------------------------------------------------------- _DWORD *__thiscall night::NSStream::peek_2(_DWORD *ecx0, night::NSStream *this) { char v3; // dl int v4; // ecx int v5; // eax if ( (unsigned int)(*((_DWORD *)this + 12) + 1) < *((_DWORD *)this + 7) ) { v3 = *(_BYTE *)std::string::at((_DWORD *)this + 6, *((_DWORD *)this + 12) + 1); v4 = *((_DWORD *)this + 13); v5 = *((_DWORD *)this + 14) + 1; if ( v3 == 10 ) { ++v4; v5 = 1; } *(_BYTE *)ecx0 = v3; ecx0[1] = v4; ecx0[2] = v5; } else { *(_BYTE *)ecx0 = 0; ecx0[1] = 0; ecx0[2] = 0; } return ecx0; } //----- (00403314) -------------------------------------------------------- bool __fastcall night::NSStream::eof(night::NSStream *a1) { int v2[5]; // [esp+14h] [ebp-14h] BYREF night::NSStream::peek(v2, a1); return LOBYTE(v2[0]) == 0; } // 403314: using guessed type int var_14[5]; //----- (00403330) -------------------------------------------------------- bool __fastcall night::NSStream::eof_2(night::NSStream *a1) { int v2[5]; // [esp+14h] [ebp-14h] BYREF night::NSStream::peek_2(v2, a1); return LOBYTE(v2[0]) == 0; } // 403330: using guessed type int var_14[5]; //----- (0040334C) -------------------------------------------------------- int __thiscall night::NSToken::read_while[abi:cxx11]( int this, int a2, unsigned __int8 (__cdecl *a3)(_DWORD, int), int a4) { _DWORD v6[5]; // [esp+14h] [ebp-14h] BYREF *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 0; while ( !night::NSStream::eof(*(night::NSStream **)(a2 + 4)) ) { night::NSStream::peek(v6, *(night::NSStream **)(a2 + 4)); if ( !a3(SLOBYTE(v6[0]), a4) ) break; night::NSStream::next(v6, *(night::NSStream **)(a2 + 4)); std::string::push_back((_DWORD *)this, v6[0]); } return this; } //----- (004033D6) -------------------------------------------------------- void __fastcall night::NSToken::read_comment_method_1(int a1) { void *v1[8]; // [esp+18h] [ebp-20h] BYREF night::NSToken::read_while[abi:cxx11]( (int)v1, a1, (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_not_line_break, 0); std::string::_M_dispose(v1); } //----- (00403404) -------------------------------------------------------- _DWORD *__fastcall night::NSToken::read_comment_method_2(int a1) { void *v3[7]; // [esp+18h] [ebp-20h] BYREF night::NSToken::read_while[abi:cxx11]( (int)v3, a1, (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_comment2, *(_DWORD *)(a1 + 4)); std::string::_M_dispose(v3); return night::NSStream::next(v3, *(night::NSStream **)(a1 + 4)); } //----- (00403446) -------------------------------------------------------- unsigned __int8 __thiscall night::NSToken::skip_comment(night::NSStream **this, _DWORD *a2) { unsigned __int8 result; // al night::NSStream *v4; // [esp+0h] [ebp-38h] void *v5[7]; // [esp+18h] [ebp-20h] BYREF while ( 1 ) { result = night::NSStream::eof(this[1]); if ( result ) break; result = (unsigned __int8)night::NSStream::peek(v5, this[1]); if ( LOBYTE(v5[0]) != 47 ) break; result = night::NSStream::eof_2(this[1]); if ( result ) break; night::NSStream::peek_2(v5, this[1]); v4 = this[1]; if ( LOBYTE(v5[0]) == 47 ) { night::NSStream::next(v5, v4); night::NSStream::next(v5, this[1]); night::NSToken::read_comment_method_1((int)this); } else { result = (unsigned __int8)night::NSStream::peek_2(v5, v4); if ( LOBYTE(v5[0]) != 42 ) return result; night::NSStream::next(v5, this[1]); night::NSStream::next(v5, this[1]); night::NSToken::read_comment_method_2((int)this); } night::NSToken::read_while[abi:cxx11]( (int)v5, (int)this, (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_whitespace, 0); std::string::operator=(a2, v5); std::string::_M_dispose(v5); } return result; } //----- (00403536) -------------------------------------------------------- void __thiscall __noreturn night::NSStream::err(_DWORD *this, int a2, unsigned int a3, unsigned int a4, char a5) { _DWORD *v6; // eax _DWORD *v7; // eax _DWORD *v8; // eax _DWORD *exception; // ebx int v10[2]; // [esp+18h] [ebp-60h] BYREF char v11; // [esp+20h] [ebp-58h] BYREF void *v12[6]; // [esp+30h] [ebp-48h] BYREF void *v13[12]; // [esp+48h] [ebp-30h] BYREF v10[0] = (int)&v11; v10[1] = 0; v11 = 0; std::string::basic_string(v13, (int)this); std::string::append(v13, ":"); std::string::operator+=(v10, (int)v13); std::string::_M_dispose(v13); if ( a5 ) { std::to_string(v12, a3); v6 = std::string::append(v12, ":"); std::string::basic_string(v13, v6); std::string::operator+=(v10, (int)v13); std::string::_M_dispose(v13); std::string::_M_dispose(v12); std::to_string(v12, a4); } else { std::to_string(v12, this[13] + a3); v8 = std::string::append(v12, ":"); std::string::basic_string(v13, v8); std::string::operator+=(v10, (int)v13); std::string::_M_dispose(v13); std::string::_M_dispose(v12); std::to_string(v12, this[14] + a4); } v7 = std::string::append(v12, ":"); std::string::basic_string(v13, v7); std::string::operator+=(v10, (int)v13); std::string::_M_dispose(v13); std::string::_M_dispose(v12); std::string::operator+=(v10, a2); exception = __cxa_allocate_exception(0x18u); std::string::basic_string(exception, v10); __cxa_throw(exception, (struct type_info *)&`typeinfo for'std::string, (void (__cdecl *)(void *))std::string::~string); } // 534198: using guessed type int *`typeinfo for'std::string; //----- (00403746) -------------------------------------------------------- void __thiscall __noreturn night::NSToken::err(_DWORD **this, int a2, unsigned int a3, unsigned int a4, char a5) { night::NSStream::err(this[1], a2, a3, a4, a5); } //----- (00403770) -------------------------------------------------------- bool __stdcall night::NSASTParse::is_save_for_division(int a1) { bool result; // al bool v2; // al int v3; // esi bool v4; // [esp+1Fh] [ebp-29h] void *v5[8]; // [esp+28h] [ebp-20h] BYREF result = 0; if ( a1 ) { std::string::basic_string(v5, a1); if ( !std::operator==((int)v5, (int)&night::NS_TYPE_BOOL) && !std::operator==((int)v5, (int)&night::NS_TYPE_VAR) && !std::operator==((int)v5, (int)&night::NS_TYPE_NUM) && !std::operator==((int)v5, (int)&night::NS_TYPE_B_TYPE) && !std::operator==((int)v5, (int)&night::NS_TYPE_OP_SELF) && !std::operator==((int)v5, (int)&night::NS_TYPE_BINARY) && !std::operator==((int)v5, (int)&night::NS_TYPE_ASSIGN) && !std::operator==((int)v5, (int)&night::NS_TYPE_TERNARY) && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_DOT) && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_PROPERTY) && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_SELF_OP) && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_BLOCK) && !std::operator==((int)v5, (int)&night::NS_TYPE_BRACKET) && !std::operator==((int)v5, (int)&night::NS_TYPE_CALL) ) { v2 = std::operator==((int)v5, (int)&night::NS_TYPE_KW); if ( !v2 ) goto LABEL_22; v3 = a1 + 60; if ( !std::operator==("null", a1 + 60) && !std::operator==("undefined", v3) && !std::operator==((char *)off_51BF34, v3) ) { v2 = std::operator==("Infinity", v3); goto LABEL_22; } } v2 = 1; LABEL_22: v4 = v2; std::string::_M_dispose(v5); return v4; } return result; } //----- (00403954) -------------------------------------------------------- bool __stdcall night::NSASTParse::is_exp(int a1) { bool result; // al bool v2; // al int v3; // esi bool v4; // [esp+1Fh] [ebp-29h] void *v5[8]; // [esp+28h] [ebp-20h] BYREF result = 0; if ( a1 ) { std::string::basic_string(v5, a1); if ( !std::operator==((int)v5, (int)&night::NS_TYPE_BOOL) && !std::operator==((int)v5, (int)&night::NS_TYPE_VAR) && !std::operator==((int)v5, (int)&night::NS_TYPE_STR) && !std::operator==((int)v5, (int)&night::NS_TYPE_NUM) && !std::operator==((int)v5, (int)&night::NS_TYPE_B_TYPE) && !std::operator==((int)v5, (int)&night::NS_TYPE_OP_SELF) && !std::operator==((int)v5, (int)&night::NS_TYPE_BINARY) && !std::operator==((int)v5, (int)&night::NS_TYPE_ASSIGN) && !std::operator==((int)v5, (int)&night::NS_TYPE_TERNARY) && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_DOT) && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_PROPERTY) && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_SELF_OP) && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_BLOCK) && !std::operator==((int)v5, (int)&night::NS_TYPE_ARRAY) && !std::operator==((int)v5, (int)&night::NS_TYPE_BRACKET) && !std::operator==((int)v5, (int)&night::NS_TYPE_PROG_NO_SEM_REQUIRE) && !std::operator==((int)v5, (int)&night::NS_TYPE_FUNC) && !std::operator==((int)v5, (int)&night::NS_TYPE_CALL) ) { v2 = std::operator==((int)v5, (int)&night::NS_TYPE_KW); if ( !v2 ) goto LABEL_26; v3 = a1 + 60; if ( !std::operator==("null", a1 + 60) && !std::operator==("undefined", v3) && !std::operator==((char *)off_51BF34, v3) ) { v2 = std::operator==("Infinity", v3); goto LABEL_26; } } v2 = 1; LABEL_26: v4 = v2; std::string::_M_dispose(v5); return v4; } return result; } //----- (00403B98) -------------------------------------------------------- unsigned int __fastcall night::NSGod::hamlet(_DWORD *a1) { unsigned int result; // eax int v3; // esi void **v4; // ebx bool v5; // al unsigned int i; // [esp+1Ch] [ebp-3Ch] void *v7[12]; // [esp+28h] [ebp-30h] BYREF for ( i = 0; ; ++i ) { result = (a1[1] - *a1) >> 2; if ( i >= result ) break; v3 = *(_DWORD *)(*a1 + 4 * i); std::string::basic_string(v7, v3); if ( std::operator==((int)v7, (int)&night::std_v_n) ) { v4 = *(void ***)(v3 + 24); if ( !v4 ) goto LABEL_13; std::_Vector_base::_M_deallocate(*v4); } else { v5 = std::operator==((int)v7, (int)&night::std_v_v_n); v4 = *(void ***)(v3 + 24); if ( v5 ) { if ( !v4 ) goto LABEL_13; if ( *v4 ) operator delete(*v4); } else { if ( !v4 ) goto LABEL_13; std::string::_M_dispose(v4 + 39); std::string::_M_dispose(v4 + 33); std::string::_M_dispose(v4 + 27); std::string::_M_dispose(v4 + 21); std::string::_M_dispose(v4 + 15); std::string::_M_dispose(v4 + 6); std::string::_M_dispose(v4); } } operator delete(v4); LABEL_13: std::string::_M_dispose((void **)v3); operator delete((void *)v3); std::string::_M_dispose(v7); } return result; } //----- (00403C98) -------------------------------------------------------- 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)); } //----- (00403CAC) -------------------------------------------------------- void __fastcall night::NSToken::~NSToken(int a1) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(a1 + 24); std::_Vector_base::_M_deallocate(*(void **)(a1 + 12)); } //----- (00403CC6) -------------------------------------------------------- _DWORD *__thiscall night::NSGod::gen_son(void *this, int a2) { _DWORD *v3; // eax _DWORD *v4; // ebx void (__cdecl *v6)(void *); // [esp+4h] [ebp-34h] void (__cdecl *v7)(void *); // [esp+4h] [ebp-34h] int v8[7]; // [esp+1Ch] [ebp-1Ch] BYREF v3 = operator new((struct type_info *)0x1C, v6); *v3 = v3 + 2; v3[1] = 0; *((_BYTE *)v3 + 8) = 0; v8[0] = (int)v3; std::string::_M_assign((int)v3, a2); v4 = operator new((struct type_info *)0xF8, v7); *v4 = v4 + 2; v4[6] = v4 + 8; v4[15] = v4 + 17; v4[21] = v4 + 23; v4[27] = v4 + 29; v4[33] = v4 + 35; v4[39] = v4 + 41; v4[1] = 0; *((_BYTE *)v4 + 8) = 0; v4[7] = 0; *((_BYTE *)v4 + 32) = 0; v4[16] = 0; *((_BYTE *)v4 + 68) = 0; v4[22] = 0; *((_BYTE *)v4 + 92) = 0; v4[28] = 0; *((_BYTE *)v4 + 116) = 0; v4[34] = 0; *((_BYTE *)v4 + 140) = 0; v4[40] = 0; *((_BYTE *)v4 + 164) = 0; v4[13] = 0; v4[12] = 0; *((_BYTE *)v4 + 200) = 0; *((_BYTE *)v4 + 56) = 0; v4[55] = 0; v4[54] = 0; v4[53] = 0; v4[52] = 0; v4[51] = 0; v4[48] = 0; v4[47] = 0; v4[46] = 0; v4[45] = 0; v4[61] = 0; v4[60] = 0; v4[58] = 0; v4[57] = 0; v4[49] = 0; v4[59] = 0; v4[56] = 0; std::string::_M_assign((int)v4, a2); *(_DWORD *)(v8[0] + 24) = v4; std::vector::push_back((int)this, v8); return v4; } // 403CDB: variable 'v6' is possibly undefined // 403D05: variable 'v7' is possibly undefined // 403CC6: using guessed type int var_1C[7]; //----- (00403E7E) -------------------------------------------------------- _DWORD *__thiscall night::NSToken::read_string(night::NSStream **this, char a2, int a3) { bool v3; // di bool v5; // si night::NSStream *v6; // ebx _DWORD *v7; // ebx int v9[3]; // [esp+24h] [ebp-54h] BYREF void *v10[2]; // [esp+30h] [ebp-48h] BYREF char v11; // [esp+38h] [ebp-40h] BYREF void *v12[12]; // [esp+48h] [ebp-30h] BYREF v3 = 0; night::NSStream::next(v12, this[1]); v10[1] = 0; v10[0] = &v11; v11 = 0; while ( 1 ) { v5 = night::NSStream::eof(this[1]); if ( v5 ) break; night::NSStream::next(v9, this[1]); if ( LOBYTE(v9[0]) == 10 ) { if ( !v3 ) { std::string::basic_string(v12, "Unexpected `\\n`"); night::NSStream::err(this[1], (int)v12, 0, 0, 0); } std::string::push_back(v10, 10); } else { if ( !v3 ) { if ( LOBYTE(v9[0]) == 92 ) { std::string::push_back(v10, 92); v5 = 1; goto LABEL_10; } if ( LOBYTE(v9[0]) == a2 ) break; } std::string::push_back(v10, v9[0]); } LABEL_10: v3 = v5; } v6 = *this; std::string::basic_string(v12, (int)&night::NS_TYPE_STR); v7 = night::NSGod::gen_son(v6, (int)v12); std::string::_M_dispose(v12); WXML::Rewrite::ToStringCode((int)v12, (int *)v10); std::string::operator=(v7 + 15, v12); std::string::_M_dispose(v12); std::string::operator=(v7 + 27, a2); std::string::_M_assign((int)(v7 + 21), a3); std::string::_M_dispose(v10); return v7; } // 403E7E: using guessed type int var_54[3]; //----- (00403FF6) -------------------------------------------------------- _DWORD *__thiscall night::NSToken::read_number(night::NSStream **this, int a2) { char v3; // di _DWORD *v4; // eax night::NSStream *v5; // ebx _DWORD *v6; // ebx char v8; // [esp+1Fh] [ebp-79h] BYREF void *v9[6]; // [esp+20h] [ebp-78h] BYREF _DWORD v10[6]; // [esp+38h] [ebp-60h] BYREF int v11[2]; // [esp+50h] [ebp-48h] BYREF char v12; // [esp+58h] [ebp-40h] BYREF int v13[12]; // [esp+68h] [ebp-30h] BYREF v8 = 0; night::NSToken::read_while[abi:cxx11]( (int)v9, (int)this, (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::rw_cb_number, (int)&v8); night::NSStream::peek(v13, this[1]); v3 = v13[0]; if ( (unsigned __int8)night::NSToken::tk_is_var_start(SLOBYTE(v13[0])) ) { v11[0] = (int)&v12; std::string::_M_construct(v11, 1u, v3); std::operator+(v13, "Unexpected token `", (unsigned int *)v11); v4 = std::string::append(v13, "`"); std::string::basic_string(v10, v4); std::string::_M_dispose((void **)v13); std::string::_M_dispose((void **)v11); night::NSStream::err(this[1], (int)v10, 0, 0, 0); } v5 = *this; std::string::basic_string(v13, (int)&night::NS_TYPE_NUM); v6 = night::NSGod::gen_son(v5, (int)v13); std::string::_M_dispose((void **)v13); std::string::_M_assign((int)(v6 + 15), (int)v9); std::string::_M_assign((int)(v6 + 21), a2); std::string::_M_dispose(v9); return v6; } // 403FF6: using guessed type _DWORD var_60[6]; //----- (00404166) -------------------------------------------------------- int __thiscall night::NSGod::gen_girl(void *this, int a2) { _DWORD *v3; // eax _DWORD *v4; // eax int v5; // edx _DWORD *v6; // eax int v7; // edx void (__cdecl *v9)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v10)(void *); // [esp+4h] [ebp-24h] void (__cdecl *v11)(void *); // [esp+4h] [ebp-24h] _DWORD *v12; // [esp+1Ch] [ebp-Ch] BYREF v3 = operator new((struct type_info *)0x1C, v9); *v3 = v3 + 2; v3[1] = 0; *((_BYTE *)v3 + 8) = 0; v12 = v3; std::string::_M_assign((int)v3, a2); if ( std::operator==((int)&night::std_v_n, a2) ) { v4 = operator new((struct type_info *)0xC, v10); v5 = (int)v12; *v4 = 0; v4[1] = 0; v4[2] = 0; *(_DWORD *)(v5 + 24) = v4; } if ( std::operator==((int)&night::std_v_v_n, a2) ) { v6 = operator new((struct type_info *)0xC, v11); v7 = (int)v12; *v6 = 0; v6[1] = 0; v6[2] = 0; *(_DWORD *)(v7 + 24) = v6; } std::vector::push_back((int)this, &v12); return v12[6]; } // 40417A: variable 'v9' is possibly undefined // 4041B8: variable 'v10' is possibly undefined // 4041F2: variable 'v11' is possibly undefined //----- (0040422E) -------------------------------------------------------- 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)); } //----- (00404242) -------------------------------------------------------- void __thiscall night::NSToken::push(int this, int a2) { if ( *(_DWORD *)(this + 8) ) { std::vector::push_back((void **)(this + 12), (_DWORD *)(this + 8)); *(_DWORD *)(this + 8) = 0; } if ( a2 ) std::vector::push_back((void **)(this + 12), &a2); } //----- (00404284) -------------------------------------------------------- _DWORD *__thiscall night::NSToken::read_var(int this, int a2) { _DWORD *v3; // eax int v4; // edi night::NSStream *v5; // ebx _DWORD *v6; // ebx _DWORD *v7; // eax int v8; // edi night::NSStream *v9; // ebx void *v10; // eax _DWORD v12[3]; // [esp+24h] [ebp-84h] BYREF void *v13[6]; // [esp+30h] [ebp-78h] BYREF void *v14[6]; // [esp+48h] [ebp-60h] BYREF void *v15[6]; // [esp+60h] [ebp-48h] BYREF void *v16[12]; // [esp+78h] [ebp-30h] BYREF night::NSStream::peek(v12, *(night::NSStream **)(this + 4)); night::NSToken::read_while[abi:cxx11]( (int)v13, this, (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_var, 0); std::string::basic_string(v14, (int)v13); std::operator+((int)v15, (char *)asc_51BF80, (int)v14); v3 = std::string::append(v15, (char *)asc_51BF80); std::string::basic_string(v16, v3); v4 = std::string::find(night::NS_BUILTIN_TYPE, (int)v16, 0); std::string::_M_dispose(v16); std::string::_M_dispose(v15); std::string::_M_dispose(v14); if ( v4 == -1 ) { std::string::basic_string(v14, (int)v13); std::operator+((int)v15, (char *)asc_51BF80, (int)v14); v7 = std::string::append(v15, (char *)asc_51BF80); std::string::basic_string(v16, v7); v8 = std::string::find(night::NS_BUILTIN_KW, (int)v16, 0); std::string::_M_dispose(v16); std::string::_M_dispose(v15); std::string::_M_dispose(v14); v9 = *(night::NSStream **)this; v10 = &night::NS_TYPE_KW; if ( v8 == -1 ) v10 = &night::NS_TYPE_VAR; std::string::basic_string(v16, (int)v10); v6 = night::NSGod::gen_son(v9, (int)v16); std::string::_M_dispose(v16); if ( v8 == -1 ) std::operator+(v16, (int)&night::nsv_, (int)v13); else std::string::basic_string(v16, (int)v13); std::string::operator=(v6 + 15, v16); std::string::_M_dispose(v16); std::string::_M_assign((int)(v6 + 6), (int)v13); std::string::_M_assign((int)(v6 + 21), a2); v6[12] = v12[1]; v6[13] = v12[2]; if ( !*std::map::operator[]((_DWORD *)(this + 24), (int)v13) ) *std::map::operator[]((_DWORD *)(this + 24), (int)v13) = *(_DWORD *)(this + 44); } else { v5 = *(night::NSStream **)this; std::string::basic_string(v16, (int)&night::NS_TYPE_B_TYPE); v6 = night::NSGod::gen_son(v5, (int)v16); std::string::_M_dispose(v16); std::string::_M_assign((int)(v6 + 15), (int)v13); std::string::_M_assign((int)(v6 + 21), a2); } std::string::_M_dispose(v13); return v6; } // 586AB0: using guessed type int night::NS_BUILTIN_TYPE[6]; // 586AC8: using guessed type int night::NS_BUILTIN_KW[6]; //----- (00404532) -------------------------------------------------------- _DWORD *__fastcall night::NSToken::read_next(int a1) { int v2; // eax _DWORD *v3; // ebx char v4; // bl _DWORD *string; // eax night::NSStream *v6; // ebx night::NSStream *v7; // ebx _DWORD *v8; // eax int v10; // [esp+1Ch] [ebp-8Ch] int v11; // [esp+1Ch] [ebp-8Ch] _DWORD *v12; // [esp+1Ch] [ebp-8Ch] int v13[3]; // [esp+24h] [ebp-84h] BYREF void *v14[6]; // [esp+30h] [ebp-78h] BYREF int v15[2]; // [esp+48h] [ebp-60h] BYREF char v16[16]; // [esp+50h] [ebp-58h] BYREF int v17[6]; // [esp+60h] [ebp-48h] BYREF void *v18[2]; // [esp+78h] [ebp-30h] BYREF char v19[40]; // [esp+80h] [ebp-28h] BYREF v2 = *(_DWORD *)(a1 + 16); if ( v2 == *(_DWORD *)(a1 + 12) ) { night::NSToken::read_while[abi:cxx11]( (int)v14, a1, (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_whitespace, 0); if ( night::NSStream::eof(*(night::NSStream **)(a1 + 4)) || (night::NSToken::skip_comment((night::NSStream **)a1, v14), night::NSStream::eof(*(night::NSStream **)(a1 + 4))) ) { v3 = 0; } else { night::NSStream::peek(v13, *(night::NSStream **)(a1 + 4)); v4 = v13[0]; if ( LOBYTE(v13[0]) == 34 || LOBYTE(v13[0]) == 39 ) { string = night::NSToken::read_string((night::NSStream **)a1, v13[0], (int)v14); } else if ( (unsigned __int8)(LOBYTE(v13[0]) - 48) > 9u ) { if ( !(unsigned __int8)night::NSToken::tk_is_var_start(SLOBYTE(v13[0])) ) { v18[0] = v19; std::string::_M_construct(v18, 1u, v4); v10 = std::string::find(night::NS_BUILTIN_PUNC, (int)v18, 0); std::string::_M_dispose(v18); if ( v10 == -1 ) { v18[0] = v19; std::string::_M_construct(v18, 1u, v4); v11 = std::string::find(night::NS_BUILTIN_OP, (int)v18, 0); std::string::_M_dispose(v18); if ( v11 == -1 ) { v12 = *(_DWORD **)(a1 + 4); v15[0] = (int)v16; std::string::_M_construct(v15, 1u, v4); std::operator+(v17, "Unexpected token `", (unsigned int *)v15); v8 = std::string::append(v17, "`"); std::string::basic_string(v18, v8); night::NSStream::err(v12, (int)v18, 0, 0, 0); } v15[0] = (int)v16; v15[1] = 0; v16[0] = 0; night::NSToken::read_while[abi:cxx11]( (int)v17, a1, (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_valid_op_str, (int)v15); v7 = *(night::NSStream **)a1; std::string::basic_string(v18, (int)&night::NS_TYPE_OP); v3 = night::NSGod::gen_son(v7, (int)v18); std::string::_M_dispose(v18); std::string::_M_assign((int)(v3 + 15), (int)v17); std::string::_M_assign((int)(v3 + 21), (int)v14); std::string::_M_dispose((void **)v17); std::string::_M_dispose((void **)v15); } else { v6 = *(night::NSStream **)a1; std::string::basic_string(v18, (int)&night::NS_TYPE_PUNC); v3 = night::NSGod::gen_son(v6, (int)v18); std::string::_M_dispose(v18); night::NSStream::next(v17, *(night::NSStream **)(a1 + 4)); v18[0] = v19; std::string::_M_construct(v18, 1u, v17[0]); std::string::operator=(v3 + 15, v18); std::string::_M_dispose(v18); std::string::_M_assign((int)(v3 + 21), (int)v14); } goto LABEL_19; } string = night::NSToken::read_var(a1, (int)v14); } else { string = night::NSToken::read_number((night::NSStream **)a1, (int)v14); } v3 = string; } LABEL_19: std::string::_M_dispose(v14); return v3; } v3 = *(_DWORD **)(v2 - 4); *(_DWORD *)(a1 + 16) = v2 - 4; return v3; } // 586AF8: using guessed type int night::NS_BUILTIN_PUNC[6]; // 586B40: using guessed type int night::NS_BUILTIN_OP[6]; // 404532: using guessed type int var_84[3]; //----- (004048A6) -------------------------------------------------------- _DWORD *__fastcall night::NSToken::peek(int a1) { _DWORD *result; // eax result = *(_DWORD **)(a1 + 8); if ( !result ) { result = night::NSToken::read_next(a1); *(_DWORD *)(a1 + 8) = result; } return result; } //----- (004048C2) -------------------------------------------------------- bool __fastcall night::NSToken::eof(int a1) { return night::NSToken::peek(a1) == 0; } //----- (004048D4) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::is_punctuation(int *this, int a2) { _DWORD *v2; // eax _DWORD *v3; // ebx v2 = night::NSToken::peek(this[7]); v3 = v2; if ( v2 && (!std::operator==((int)&night::NS_TYPE_PUNC, (int)v2) || !std::operator==(a2, (int)(v3 + 15))) ) return 0; return v3; } //----- (00404920) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::is_buildin_keywords(int *this, int a2) { _DWORD *v2; // eax _DWORD *v3; // ebx v2 = night::NSToken::peek(this[7]); v3 = v2; if ( v2 && (!std::operator==((int)&night::NS_TYPE_KW, (int)v2) || !std::operator==(a2, (int)(v3 + 15))) ) return 0; return v3; } //----- (0040496C) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::is_op(int *this, int a2) { _DWORD *v2; // eax _DWORD *v3; // ebx v2 = night::NSToken::peek(this[7]); v3 = v2; if ( v2 && (!std::operator==((int)&night::NS_TYPE_OP, (int)v2) || *(_DWORD *)(a2 + 4) && !std::operator==(a2, (int)(v3 + 15))) ) { return 0; } return v3; } //----- (004049C0) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::is_op_or_comma(int *this, int a2) { _DWORD *v4; // [esp+1Ch] [ebp-2Ch] void *v5[8]; // [esp+28h] [ebp-20h] BYREF std::string::basic_string(v5, ","); v4 = night::NSASTParse::is_punctuation(this, (int)v5); std::string::_M_dispose(v5); if ( !v4 ) return night::NSASTParse::is_op(this, a2); std::string::_M_assign((int)v4, (int)&night::NS_TYPE_OP); return v4; } //----- (00404A36) -------------------------------------------------------- int __fastcall night::NSASTParse::end_line(int a1) { _DWORD *v1; // eax int v2; // edx v1 = night::NSToken::peek(*(_DWORD *)(a1 + 28)); LOBYTE(v2) = 1; if ( v1 ) LOBYTE(v2) = std::string::find(v1 + 21, 10, 0) + 1 != 0; return v2; } // 404A68: variable 'v2' is possibly undefined //----- (00404A6C) -------------------------------------------------------- int __userpurge night::NSASTParse::is_op_self@(int a1@, night::NSASTParse *this, bool a3) { _DWORD *v3; // eax int v4; // ebx int v5; // edi int v6; // eax int v7; // eax v3 = night::NSToken::peek(*(_DWORD *)(a1 + 28)); if ( !v3 ) return 0; v5 = (int)v3; LOBYTE(v6) = std::operator==((int)&night::NS_TYPE_OP, (int)v3); v4 = v6; if ( !(_BYTE)v6 ) return 0; if ( std::string::find_first_not_of((int *)(v5 + 60), (int)&night::NS_BUILTIN_OP_SELF, 0) == -1 ) return v4; if ( !(_BYTE)this || !std::operator==((int)&night::NS_TYPE_OP, v5) ) return 0; if ( !std::operator==((char *)&asc_51BF80[2], v5 + 60) ) { LOBYTE(v7) = std::operator==((char *)&asc_51BF80[4], v5 + 60); return v7; } return v4; } // 404A9D: variable 'v6' is possibly undefined // 404AFF: variable 'v7' is possibly undefined //----- (00404B0E) -------------------------------------------------------- bool __userpurge night::NSASTParse::is_obj_op_self@(int *a1@, night::NSASTParse *this, bool a3) { _DWORD *v4; // eax bool v6; // [esp+1Fh] [ebp-49h] void *v7[6]; // [esp+20h] [ebp-48h] BYREF void *v8[12]; // [esp+38h] [ebp-30h] BYREF if ( (_BYTE)this ) { v4 = night::NSToken::peek(a1[7]); if ( v4 ) { if ( std::string::find(v4 + 21, 10, 0) != (char *)-1 ) return 0; } } std::string::basic_string(v7, "++"); v6 = 1; if ( !night::NSASTParse::is_op(a1, (int)v7) ) { std::string::basic_string(v8, "--"); v6 = night::NSASTParse::is_op(a1, (int)v8) != 0; std::string::_M_dispose(v8); } std::string::_M_dispose(v7); return v6; } //----- (00404BDE) -------------------------------------------------------- _DWORD *__fastcall night::NSToken::next(int a1) { _DWORD *result; // eax result = *(_DWORD **)(a1 + 8); *(_DWORD *)(a1 + 8) = 0; if ( !result ) return night::NSToken::read_next(a1); return result; } //----- (00404BF4) -------------------------------------------------------- unsigned __int8 __thiscall night::NSASTParse::ignore_punc_pass_sem(int *this, int a2) { unsigned __int8 result; // al _DWORD *v4; // esi unsigned int v5; // esi _DWORD *v6; // eax _DWORD *v7; // [esp+1Ch] [ebp-6Ch] bool v8; // [esp+1Ch] [ebp-6Ch] _DWORD **v9; // [esp+1Ch] [ebp-6Ch] void *v10[6]; // [esp+28h] [ebp-60h] BYREF _DWORD v11[6]; // [esp+40h] [ebp-48h] BYREF void *v12[12]; // [esp+58h] [ebp-30h] BYREF if ( night::NSASTParse::is_punctuation(this, a2) ) return (unsigned __int8)night::NSToken::next(this[7]); result = std::operator==(";", a2); if ( !result ) { v7 = night::NSToken::peek(this[7]); std::string::basic_string(v10, (char *)asc_51BF80); if ( v7 ) { v4 = v7 + 15; if ( v7[16] > 3u && (std::string::substr(v12, v7 + 15, 0, 3u), v8 = std::operator==((int)v12, (int)&night::nsv_), std::string::_M_dispose(v12), v8) ) { std::string::substr(v12, v4, 3u, 0xFFFFFFFF); std::string::operator=(v10, v12); std::string::_M_dispose(v12); } else { std::string::_M_assign((int)v10, (int)v4); } v5 = -(int)v10[1]; } else { v5 = 0; } v9 = (_DWORD **)this[7]; std::operator+((int)v11, "Unexpected identifier `", (int)v10); v6 = std::string::append(v11, "`"); std::string::basic_string(v12, v6); night::NSToken::err(v9, (int)v12, 0, v5, 0); } return result; } // 404BF4: using guessed type _DWORD var_48[6]; //----- (00404D80) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::ignore_punc(int *this, int a2) { _DWORD *v3; // eax int v4; // ecx _DWORD *v6; // esi unsigned int v7; // esi _DWORD *v8; // eax _DWORD *v9; // [esp+1Ch] [ebp-6Ch] bool v10; // [esp+1Ch] [ebp-6Ch] _DWORD **v11; // [esp+1Ch] [ebp-6Ch] void *v12[6]; // [esp+28h] [ebp-60h] BYREF _DWORD v13[6]; // [esp+40h] [ebp-48h] BYREF void *v14[12]; // [esp+58h] [ebp-30h] BYREF v3 = night::NSASTParse::is_punctuation(this, a2); v4 = this[7]; if ( !v3 ) { v9 = night::NSToken::peek(v4); std::string::basic_string(v12, (char *)asc_51BF80); if ( v9 ) { v6 = v9 + 15; if ( v9[16] > 3u && (std::string::substr(v14, v9 + 15, 0, 3u), v10 = std::operator==((int)v14, (int)&night::nsv_), std::string::_M_dispose(v14), v10) ) { std::string::substr(v14, v6, 3u, 0xFFFFFFFF); std::string::operator=(v12, v14); std::string::_M_dispose(v14); } else { std::string::_M_assign((int)v12, (int)v6); } v7 = -(int)v12[1]; } else { v7 = 0; } v11 = (_DWORD **)this[7]; std::operator+((int)v13, "Unexpected identifier `", (int)v12); v8 = std::string::append(v13, "`"); std::string::basic_string(v14, v8); night::NSToken::err(v11, (int)v14, 0, v7, 0); } return night::NSToken::next(v4); } // 404D80: using guessed type _DWORD var_48[6]; //----- (00404EEC) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::ignore_buildin_kw(int *this, int a2) { _DWORD *v3; // eax _DWORD **v4; // ebx _DWORD *v6; // eax _DWORD v7[6]; // [esp+10h] [ebp-48h] BYREF _DWORD v8[12]; // [esp+28h] [ebp-30h] BYREF v3 = night::NSASTParse::is_buildin_keywords(this, a2); v4 = (_DWORD **)this[7]; if ( !v3 ) { std::operator+((int)v7, "Expected `", a2); v6 = std::string::append(v7, "`"); std::string::basic_string(v8, v6); night::NSToken::err(v4, (int)v8, 0, 0, 0); } return night::NSToken::next((int)v4); } // 404EEC: using guessed type _DWORD var_48[6]; // 404EEC: using guessed type _DWORD var_30[12]; //----- (00404F8E) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::ignore_op(int *this, int a2) { _DWORD *v3; // eax _DWORD **v4; // ebx _DWORD *v6; // eax _DWORD v7[6]; // [esp+10h] [ebp-48h] BYREF _DWORD v8[12]; // [esp+28h] [ebp-30h] BYREF v3 = night::NSASTParse::is_op(this, a2); v4 = (_DWORD **)this[7]; if ( !v3 ) { std::operator+((int)v7, "Expected operator `", a2); v6 = std::string::append(v7, "`"); std::string::basic_string(v8, v6); night::NSToken::err(v4, (int)v8, 0, 0, 0); } return night::NSToken::next((int)v4); } // 404F8E: using guessed type _DWORD var_48[6]; // 404F8E: using guessed type _DWORD var_30[12]; //----- (00405030) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_trans_kw(int *a1) { int v2; // ecx int v3; // eax _DWORD *v4; // esi void *v5; // ebx _DWORD *v6; // eax _DWORD **v7; // edi _DWORD *v8; // eax void *v9; // ebx void *v10; // ebx _DWORD *v11; // ebx int v12; // ecx _DWORD *v13; // eax void *v14; // esi void *v15; // eax void *v16; // esi night::NSASTParse *v17; // edx void **v18; // esi void *v19; // ebx _DWORD *v20; // eax _DWORD **v21; // edi _DWORD *v22; // eax _DWORD **v23; // edi _DWORD *v24; // eax void *v25; // ebx int v26; // ecx _DWORD *v27; // eax int v28; // esi _DWORD *v29; // eax _DWORD **v30; // edi _DWORD **v31; // edi _DWORD *v32; // eax _DWORD **v33; // esi _DWORD *v34; // eax void *v35; // ebx _DWORD *v36; // eax night::NSASTParse *v38; // [esp+0h] [ebp-88h] char v39; // [esp+17h] [ebp-71h] unsigned int v40; // [esp+18h] [ebp-70h] int v41; // [esp+18h] [ebp-70h] unsigned int v42; // [esp+1Ch] [ebp-6Ch] void *v43; // [esp+1Ch] [ebp-6Ch] _DWORD *v44; // [esp+1Ch] [ebp-6Ch] int v45[6]; // [esp+28h] [ebp-60h] BYREF void *v46[6]; // [esp+40h] [ebp-48h] BYREF void *v47[12]; // [esp+58h] [ebp-30h] BYREF v2 = a1[7]; v3 = *(_DWORD *)(v2 + 4); v40 = *(_DWORD *)(v3 + 52); v42 = *(_DWORD *)(v3 + 56); v4 = night::NSToken::next(v2); std::string::basic_string(v45, (int)(v4 + 15)); if ( std::operator==("true", (int)v45) || std::operator==("false", (int)v45) ) { v5 = (void *)a1[6]; std::string::basic_string(v47, (int)&night::NS_TYPE_BOOL); v6 = night::NSGod::gen_son(v5, (int)v47); goto LABEL_31; } if ( std::operator==("null", (int)v45) || std::operator==("undefined", (int)v45) || std::operator==((char *)off_51BF34, (int)v45) || std::operator==("Infinity", (int)v45) ) { LABEL_50: v35 = (void *)a1[6]; std::string::basic_string(v47, (int)&night::NS_TYPE_KW); v11 = night::NSGod::gen_son(v35, (int)v47); std::string::_M_dispose(v47); std::string::_M_assign((int)(v11 + 6), (int)(v4 + 6)); v11[12] = v4[12]; v11[13] = v4[13]; std::string::_M_assign((int)(v11 + 15), (int)v45); goto LABEL_51; } if ( std::operator==("return", (int)v45) || std::operator==("delete", (int)v45) || std::operator==("void", (int)v45) ) { if ( !std::string::compare((int)v45, "return") && a1[8] <= 0 ) { v7 = (_DWORD **)a1[7]; std::operator+((int)v46, "Illegal ", (int)v45); v8 = std::string::append(v46, " statement"); std::string::basic_string(v47, v8); night::NSToken::err(v7, (int)v47, v40, v42, 1); } v43 = (void *)a1[6]; std::string::basic_string(v47, (int)&night::NS_TYPE_VAR); v44 = night::NSGod::gen_son(v43, (int)v47); std::string::_M_dispose(v47); std::string::_M_assign((int)(v44 + 15), (int)v45); std::string::_M_assign((int)(v44 + 6), (int)(v4 + 6)); v9 = (void *)a1[6]; v44[12] = v4[12]; v44[13] = v4[13]; std::string::basic_string(v47, (int)&night::std_v_v_n); v41 = night::NSGod::gen_girl(v9, (int)v47); std::string::_M_dispose(v47); v10 = (void *)a1[6]; std::string::basic_string(v47, (int)&night::NS_TYPE_CALL); v11 = night::NSGod::gen_son(v10, (int)v47); std::string::_M_dispose(v47); v12 = a1[7]; v11[55] = v44; v11[56] = v41; v13 = night::NSToken::peek(v12); if ( v13 && std::string::find(v13 + 21, 10, 0) == (char *)-1 ) { v14 = (void *)a1[6]; std::string::basic_string(v47, (int)&night::std_v_n); v15 = (void *)night::NSGod::gen_girl(v14, (int)v47); v38 = v17; v46[0] = v15; std::string::_M_dispose(v47); v18 = (void **)v46[0]; v47[0] = (void *)night::NSASTParse::ast_expression(v38); std::vector::emplace_back(v18, v47); } else { v16 = (void *)a1[6]; std::string::basic_string(v47, (int)&night::std_v_n); v46[0] = (void *)night::NSGod::gen_girl(v16, (int)v47); std::string::_M_dispose(v47); } std::vector>>::push_back(v41, v46); goto LABEL_51; } if ( std::operator==("typeof", (int)v45) ) { v19 = (void *)a1[6]; std::string::basic_string(v47, (int)&night::NS_TYPE_OP_SELF); v11 = night::NSGod::gen_son(v19, (int)v47); std::string::_M_dispose(v47); std::string::basic_string(v47, (int)v45); std::string::append(v47, (char *)asc_51BF80); std::string::operator=(v11 + 39, v47); std::string::_M_dispose(v47); v20 = night::NSASTParse::ast_expression_no_binary(a1); v11[48] = v20; if ( !night::NSASTParse::is_exp((int)v20) ) { v21 = (_DWORD **)a1[7]; std::operator+((int)v46, "Unexpected statement[", v11[48]); v22 = std::string::append(v46, "]"); std::string::basic_string(v47, v22); night::NSToken::err(v21, (int)v47, v40, v42, 1); } goto LABEL_51; } if ( std::operator==("this", (int)v45) ) goto LABEL_30; if ( !std::operator==("arguments", (int)v45) ) { if ( !std::operator==("break", (int)v45) && !std::operator==("continue", (int)v45) ) { v30 = (_DWORD **)a1[7]; std::operator+((int)v46, "Unexpected token `", (int)v45); v36 = std::string::append(v46, "`"); std::string::basic_string(v47, v36); night::NSToken::err(v30, (int)v47, v40, v42, 1); } if ( !std::string::compare((int)v45, "break") && a1[9] <= 0 || !std::string::compare((int)v45, "continue") && a1[10] <= 0 ) { v31 = (_DWORD **)a1[7]; std::operator+((int)v46, "Illegal ", (int)v45); v32 = std::string::append(v46, " statement"); std::string::basic_string(v47, v32); night::NSToken::err(v31, (int)v47, v40, v42, 1); } v39 = night::NSASTParse::end_line((int)a1); if ( !v39 ) { std::string::basic_string(v46, ";"); if ( !night::NSASTParse::is_punctuation(a1, (int)v46) ) { std::string::basic_string(v47, "}"); v39 = night::NSASTParse::is_punctuation(a1, (int)v47) == 0; std::string::_M_dispose(v47); } std::string::_M_dispose(v46); if ( v39 ) { v33 = (_DWORD **)a1[7]; std::operator+((int)v46, "Unexpected token after `", (int)v45); v34 = std::string::append(v46, "`"); std::string::basic_string(v47, v34); night::NSToken::err(v33, (int)v47, v40, v42, 1); } } goto LABEL_50; } if ( a1[8] <= 0 ) { v23 = (_DWORD **)a1[7]; std::operator+((int)v46, "Illegal ", (int)v45); v24 = std::string::append(v46, " statement"); std::string::basic_string(v47, v24); night::NSToken::err(v23, (int)v47, v40, v42, 1); } LABEL_30: v25 = (void *)a1[6]; std::string::basic_string(v47, (int)&night::NS_TYPE_KW); v6 = night::NSGod::gen_son(v25, (int)v47); LABEL_31: v11 = v6; std::string::_M_dispose(v47); std::string::_M_assign((int)(v11 + 15), (int)v45); std::string::_M_assign((int)(v11 + 6), (int)(v4 + 6)); v26 = a1[7]; v11[12] = v4[12]; v11[13] = v4[13]; v27 = night::NSToken::peek(v26); if ( v27 ) { v28 = (int)(v27 + 15); if ( std::operator==("[", (int)(v27 + 15)) ) { v29 = night::NSASTParse::ast_obj_op(a1, (int)v11); LABEL_36: v11 = night::NSASTParse::make_call_or_just_expression(a1, (int)v29); goto LABEL_51; } if ( std::operator==(".", v28) ) { v29 = night::NSASTParse::ast_obj_dot(a1, (int)v11); goto LABEL_36; } } LABEL_51: std::string::_M_dispose((void **)v45); return v11; } // 405354: variable 'v17' is possibly undefined //----- (004058D8) -------------------------------------------------------- _DWORD *__userpurge night::NSASTParse::ast_dispatch@(_DWORD *a1@, night::NSASTParse *this, bool a3) { _DWORD *v4; // ebx void *v5; // ebx void **v6; // ebx void *v7; // esi int v8; // eax unsigned int v9; // esi _DWORD **v10; // ebx _DWORD *v11; // eax void *v12; // esi void *v13; // esi unsigned int *v14; // ecx _DWORD *v15; // eax int v16; // ebx _DWORD *v17; // eax _DWORD *v19; // ebx _DWORD *v20; // esi bool v21; // bl bool v22; // al _DWORD *v23; // eax _DWORD *v24; // ebx _DWORD *v25; // ebx _DWORD *v26; // ebx _DWORD *v27; // ebx _DWORD *v28; // ebx _DWORD *v29; // ebx char v30; // bl char v31; // si char v32; // dl char v33; // al _DWORD *v34; // ebx _DWORD *v35; // ebx _DWORD *v36; // ebx _DWORD *v37; // ebx void *v38; // ebx _DWORD *v39; // eax _DWORD *v40; // eax _DWORD *v41; // eax int v42; // ebx _DWORD **v43; // ebx int v44; // esi _DWORD *v45; // eax int v46; // esi _DWORD *v47; // eax int v48; // esi _DWORD **v49; // ebx _DWORD *v50; // eax night::NSASTParse *v51; // [esp+0h] [ebp-1B8h] bool v52; // [esp+4h] [ebp-1B4h] bool v53; // [esp+4h] [ebp-1B4h] bool v54; // [esp+4h] [ebp-1B4h] char v55; // [esp+18h] [ebp-1A0h] char is_op_self; // [esp+1Ch] [ebp-19Ch] char v57; // [esp+1Ch] [ebp-19Ch] char v58; // [esp+1Ch] [ebp-19Ch] bool v59; // [esp+21h] [ebp-197h] char v60; // [esp+22h] [ebp-196h] char v61; // [esp+23h] [ebp-195h] char v62; // [esp+24h] [ebp-194h] void *v63; // [esp+28h] [ebp-190h] _DWORD *v64; // [esp+28h] [ebp-190h] char v65; // [esp+28h] [ebp-190h] unsigned int v66; // [esp+2Ch] [ebp-18Ch] _DWORD *v67; // [esp+2Ch] [ebp-18Ch] char v68; // [esp+2Ch] [ebp-18Ch] _DWORD *v69; // [esp+2Ch] [ebp-18Ch] _DWORD *v70; // [esp+2Ch] [ebp-18Ch] bool v71[4]; // [esp+38h] [ebp-180h] BYREF int v72; // [esp+3Ch] [ebp-17Ch] void *v73[6]; // [esp+50h] [ebp-168h] BYREF void *v74[6]; // [esp+68h] [ebp-150h] BYREF void *v75[6]; // [esp+80h] [ebp-138h] BYREF void *v76[6]; // [esp+98h] [ebp-120h] BYREF void *v77[6]; // [esp+B0h] [ebp-108h] BYREF void *v78[6]; // [esp+C8h] [ebp-F0h] BYREF void *v79[6]; // [esp+E0h] [ebp-D8h] BYREF void *v80[6]; // [esp+F8h] [ebp-C0h] BYREF void *v81[6]; // [esp+110h] [ebp-A8h] BYREF void *v82[6]; // [esp+128h] [ebp-90h] BYREF void *v83[6]; // [esp+140h] [ebp-78h] BYREF void *v84[6]; // [esp+158h] [ebp-60h] BYREF void *v85[6]; // [esp+170h] [ebp-48h] BYREF void *v86[12]; // [esp+188h] [ebp-30h] BYREF std::string::basic_string(v86, "("); v4 = night::NSASTParse::is_punctuation(a1, (int)v86); std::string::_M_dispose(v86); if ( v4 ) { v5 = (void *)a1[6]; std::string::basic_string(v86, (int)&night::std_v_n); v6 = (void **)night::NSGod::gen_girl(v5, (int)v86); std::string::_M_dispose(v86); v7 = (void *)a1[6]; std::string::basic_string(v86, (int)&night::NS_TYPE_PUNC); v83[0] = night::NSGod::gen_son(v7, (int)v86); std::string::_M_dispose(v86); std::string::operator=((unsigned int *)v83[0] + 15, "("); std::vector::push_back(v6, v83); v51 = (night::NSASTParse *)v7; night::NSToken::next(a1[7]); v8 = *(_DWORD *)(a1[7] + 4); v9 = *(_DWORD *)(v8 + 52); v66 = *(_DWORD *)(v8 + 56); v84[0] = (void *)night::NSASTParse::ast_expression(v51); if ( !night::NSASTParse::is_exp((int)v84[0]) ) { v63 = v84[0]; if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_ASSIGN, (int)v84[0]) ) { v10 = (_DWORD **)a1[7]; std::operator+((int)v85, "Unexpected statement[", (int)v63); v11 = std::string::append(v85, "]"); std::string::basic_string(v86, v11); night::NSToken::err(v10, (int)v86, v9, v66, 1); } } std::vector::push_back(v6, v84); std::string::basic_string(v86, ")"); night::NSASTParse::ignore_punc(a1, (int)v86); std::string::_M_dispose(v86); v12 = (void *)a1[6]; std::string::basic_string(v86, (int)&night::NS_TYPE_PUNC); v83[0] = night::NSGod::gen_son(v12, (int)v86); std::string::_M_dispose(v86); std::string::operator=((unsigned int *)v83[0] + 15, ")"); std::vector::push_back(v6, v83); v13 = (void *)a1[6]; std::string::basic_string(v86, (int)&night::NS_TYPE_BRACKET); v83[0] = night::NSGod::gen_son(v13, (int)v86); std::string::_M_dispose(v86); v14 = (unsigned int *)v83[0]; *((_DWORD *)v83[0] + 57) = v6; std::string::operator=(v14 + 27, (char *)off_51B9E4); v15 = night::NSToken::peek(a1[7]); if ( v15 ) { v16 = (int)(v15 + 15); if ( std::operator==("[", (int)(v15 + 15)) ) { v17 = night::NSASTParse::ast_obj_op(a1, (int)v83[0]); return night::NSASTParse::make_call_or_just_expression(a1, (int)v17); } if ( std::operator==(".", v16) ) { v17 = night::NSASTParse::ast_obj_dot(a1, (int)v83[0]); return night::NSASTParse::make_call_or_just_expression(a1, (int)v17); } } v17 = v83[0]; return night::NSASTParse::make_call_or_just_expression(a1, (int)v17); } std::string::basic_string(v71, (int)(a1 + 11)); std::string::operator=(a1 + 11, (char *)off_51B9E4); std::string::basic_string(v86, "{"); v19 = night::NSASTParse::is_punctuation(a1, (int)v86); std::string::_M_dispose(v86); if ( v19 ) { v64 = night::NSToken::next(a1[7]); v20 = night::NSToken::next(a1[7]); v67 = night::NSToken::next(a1[7]); v21 = 0; if ( v20 ) { if ( std::operator==((int)&night::NS_TYPE_VAR, (int)v20) || (v21 = std::operator==((int)&night::NS_TYPE_STR, (int)v20)) ) { v21 = 0; if ( v67 ) { v21 = std::operator==((int)&night::NS_TYPE_PUNC, (int)v67); if ( v21 ) v21 = std::operator==(":", (int)(v67 + 15)); } } if ( std::operator==((int)&night::NS_TYPE_PUNC, (int)v20) ) { v22 = std::operator==("}", (int)(v20 + 15)); if ( v22 ) v21 = v22; } } night::NSToken::push(a1[7], (int)v67); night::NSToken::push(a1[7], (int)v20); night::NSToken::push(a1[7], (int)v64); if ( v21 ) { v23 = night::NSASTParse::ast_obj_block(a1); LABEL_110: v40 = night::NSASTParse::make_call_or_just_expression(a1, (int)v23); goto LABEL_112; } if ( !v72 || (unsigned __int8)std::operator!=("op not=", (int)v71) ) { v23 = night::NSASTParse::ast_code_block(a1); goto LABEL_110; } } std::string::basic_string(v86, "["); v24 = night::NSASTParse::is_punctuation(a1, (int)v86); std::string::_M_dispose(v86); if ( v24 ) { v23 = night::NSASTParse::ast_new_array(a1); goto LABEL_110; } if ( night::NSASTParse::is_obj_op_self(a1, 0, v52) ) { v23 = night::NSASTParse::ast_obj_op_self(a1, 0); goto LABEL_110; } is_op_self = night::NSASTParse::is_op_self((int)a1, (night::NSASTParse *)1, v53); if ( is_op_self ) { v23 = night::NSASTParse::ast_op_self((int)a1); goto LABEL_110; } std::string::basic_string(v86, "if"); v25 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); std::string::_M_dispose(v86); if ( v25 ) { v23 = night::NSASTParse::ast_if(a1); goto LABEL_110; } std::string::basic_string(v86, (char *)off_51BC9A); v26 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); std::string::_M_dispose(v86); if ( v26 ) { v23 = night::NSASTParse::ast_for(a1); goto LABEL_110; } std::string::basic_string(v86, "while"); v27 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); std::string::_M_dispose(v86); if ( v27 ) { v23 = night::NSASTParse::ast_while(a1); goto LABEL_110; } std::string::basic_string(v86, "do"); v28 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); std::string::_M_dispose(v86); if ( v28 ) { v23 = night::NSASTParse::ast_do_while(a1); goto LABEL_110; } std::string::basic_string(v86, "switch"); v29 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); std::string::_M_dispose(v86); if ( v29 ) { v23 = night::NSASTParse::ast_switch(a1); goto LABEL_110; } std::string::basic_string(v73, "true"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v73) ) { v65 = 0; v33 = 0; v32 = 0; v31 = 0; v61 = 0; v30 = 0; v60 = 0; v62 = 0; v68 = 0; } else { std::string::basic_string(v74, "false"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v74) ) { v65 = 0; v33 = 0; v32 = 0; v31 = 0; v61 = 0; v60 = 0; v62 = 0; v68 = 0; } else { std::string::basic_string(v75, "null"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v75) ) { v65 = 0; v33 = 0; v32 = 0; v61 = 0; v60 = 0; v62 = 0; v68 = 0; } else { std::string::basic_string(v76, "undefined"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v76) ) { v65 = 0; v33 = 0; v32 = 0; v61 = 0; v60 = 0; v62 = 0; } else { std::string::basic_string(v77, (char *)off_51BF34); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v77) ) { v65 = 0; v33 = 0; v32 = 0; v61 = 0; v60 = 0; } else { std::string::basic_string(v78, "Infinity"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v78) ) { v65 = 0; v33 = 0; v32 = 0; v61 = 0; } else { std::string::basic_string(v79, "return"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v79) ) { v65 = 0; v33 = 0; v32 = 0; } else { std::string::basic_string(v80, "delete"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v80) ) { v33 = 0; v32 = 0; } else { std::string::basic_string(v81, "void"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v81) ) { v33 = 0; } else { std::string::basic_string(v82, "typeof"); if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v82) ) { std::string::basic_string(v83, "this"); if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v83) ) { std::string::basic_string(v84, "arguments"); v59 = 1; if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v84) ) { std::string::basic_string(v85, "break"); v59 = 1; if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v85) ) { std::string::basic_string(v86, "continue"); v59 = night::NSASTParse::is_buildin_keywords(a1, (int)v86) != 0; std::string::_M_dispose(v86); } std::string::_M_dispose(v85); } v30 = 1; v31 = 1; std::string::_M_dispose(v84); v60 = 1; v32 = 1; v33 = 1; v61 = 1; v62 = 1; v68 = 1; v65 = 1; goto LABEL_59; } is_op_self = 1; } v33 = 1; } v32 = 1; } v65 = 1; } v61 = 1; } v60 = 1; } v62 = 1; } v68 = 1; } v31 = 1; } v30 = 1; } v59 = 1; if ( is_op_self ) { LABEL_59: v55 = v32; v57 = v33; std::string::_M_dispose(v83); v32 = v55; v33 = v57; } if ( v33 ) { v58 = v32; std::string::_M_dispose(v82); v32 = v58; } if ( v32 ) std::string::_M_dispose(v81); if ( v65 ) std::string::_M_dispose(v80); if ( v61 ) std::string::_M_dispose(v79); if ( v60 ) std::string::_M_dispose(v78); if ( v62 ) std::string::_M_dispose(v77); if ( v68 ) std::string::_M_dispose(v76); if ( v31 ) std::string::_M_dispose(v75); if ( v30 ) std::string::_M_dispose(v74); std::string::_M_dispose(v73); if ( v59 ) { v23 = night::NSASTParse::ast_trans_kw(a1); goto LABEL_110; } std::string::basic_string(v86, "require"); v34 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); std::string::_M_dispose(v86); if ( v34 ) { v23 = night::NSASTParse::ast_require(a1); goto LABEL_110; } std::string::basic_string(v86, (char *)off_51BA88); v35 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); std::string::_M_dispose(v86); if ( v35 ) { v23 = night::NSASTParse::ast_var(a1); goto LABEL_110; } std::string::basic_string(v86, "function"); v36 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); std::string::_M_dispose(v86); if ( v36 ) { v23 = night::NSASTParse::ast_function(a1); goto LABEL_110; } std::string::basic_string(v86, ";"); v37 = night::NSASTParse::is_punctuation(a1, (int)v86); std::string::_M_dispose(v86); if ( !v37 ) { v41 = night::NSToken::next(a1[7]); v42 = (int)v41; if ( !v41 ) { v43 = (_DWORD **)a1[7]; std::string::basic_string(v86, "End of file"); night::NSToken::err(v43, (int)v86, 0, 0, 0); } if ( std::operator==((int)&night::NS_TYPE_VAR, (int)v41) || std::operator==((int)&night::NS_TYPE_NUM, v42) || std::operator==((int)&night::NS_TYPE_STR, v42) ) { v45 = night::NSToken::peek(a1[7]); if ( v45 ) { v46 = (int)(v45 + 15); if ( std::operator==("[", (int)(v45 + 15)) ) goto LABEL_107; if ( std::operator==(".", v46) ) goto LABEL_109; } if ( night::NSASTParse::is_obj_op_self(a1, (night::NSASTParse *)1, v54) ) { v23 = night::NSASTParse::ast_obj_op_self(a1, v42); goto LABEL_110; } } else { v44 = v42 + 60; if ( !std::operator==((int)&night::NS_TYPE_B_TYPE, v42) ) { v49 = (_DWORD **)a1[7]; std::operator+((int)v85, "Unexpected token `", v44); v50 = std::string::append(v85, "`"); std::string::basic_string(v86, v50); night::NSToken::err(v49, (int)v86, 0, 0, 0); } if ( !std::operator==("Number", v42 + 60) && !std::operator==("Math", v42 + 60) && !std::operator==("Date", v42 + 60) ) { goto LABEL_111; } v47 = night::NSToken::peek(a1[7]); if ( !v47 ) goto LABEL_111; v48 = (int)(v47 + 15); if ( std::operator==("[", (int)(v47 + 15)) ) { LABEL_107: v23 = night::NSASTParse::ast_obj_op(a1, v42); goto LABEL_110; } if ( std::operator==(".", v48) ) { LABEL_109: v23 = night::NSASTParse::ast_obj_dot(a1, v42); goto LABEL_110; } } LABEL_111: v40 = night::NSASTParse::make_call_or_just_expression(a1, v42); goto LABEL_112; } v38 = (void *)a1[6]; std::string::basic_string(v86, (int)&night::NS_TYPE_SKIP); v39 = night::NSGod::gen_son(v38, (int)v86); v69 = night::NSASTParse::make_call_or_just_expression(a1, (int)v39); std::string::_M_dispose(v86); v40 = v69; LABEL_112: v70 = v40; std::string::_M_dispose((void **)v71); return v70; } // 405D36: variable 'v52' is possibly undefined // 405D55: variable 'v53' is possibly undefined // 4066CB: variable 'v54' is possibly undefined //----- (00406BA4) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_op_self(int a1) { _DWORD *v2; // eax void *v3; // ebx _DWORD *v4; // ebx bool v6; // [esp+4h] [ebp-54h] _DWORD *v7; // [esp+1Ch] [ebp-3Ch] void *v8[12]; // [esp+28h] [ebp-30h] BYREF v2 = night::NSToken::next(*(_DWORD *)(a1 + 28)); v3 = *(void **)(a1 + 24); v7 = v2; std::string::basic_string(v8, (int)&night::NS_TYPE_OP_SELF); v4 = night::NSGod::gen_son(v3, (int)v8); std::string::_M_dispose(v8); std::string::_M_assign((int)(v4 + 39), (int)(v7 + 15)); v4[48] = night::NSASTParse::ast_dispatch(0, v6); return v4; } // 406C01: variable 'v6' is possibly undefined //----- (00406C28) -------------------------------------------------------- int __thiscall night::NSASTParse::make_binary_or_just_value(_DWORD *this, int a2, unsigned __int8 a3) { _DWORD *v3; // esi int v4; // edx _DWORD *v5; // esi _DWORD **v6; // esi void *v7; // edi _DWORD *v8; // edi bool v10; // bl char *v11; // eax int v12; // eax int binary_or_just_value; // edi _DWORD **v14; // esi void *v15; // eax _DWORD *v16; // ebx _DWORD **v17; // esi bool v19; // [esp+4h] [ebp-74h] bool v20; // [esp+4h] [ebp-74h] bool v21; // [esp+4h] [ebp-74h] void *v22; // [esp+18h] [ebp-60h] unsigned int v23; // [esp+20h] [ebp-58h] unsigned int v24; // [esp+24h] [ebp-54h] _DWORD *v25; // [esp+28h] [ebp-50h] void *v27[6]; // [esp+30h] [ebp-48h] BYREF void *v28[12]; // [esp+48h] [ebp-30h] BYREF if ( a3 ) { std::string::basic_string(v27, (char *)off_51B9E4); v3 = night::NSASTParse::is_op(this, (int)v27); } else { std::string::basic_string(v28, (char *)off_51B9E4); v3 = night::NSASTParse::is_op_or_comma(this, (int)v28); std::string::_M_dispose(v28); } if ( a3 ) std::string::_M_dispose(v27); if ( v3 && !(unsigned __int8)night::NSASTParse::is_op_self((int)this, 0, v19) && !night::NSASTParse::is_obj_op_self(this, 0, v20) && night::NSASTParse::is_exp(a2) ) { v25 = night::NSToken::next(this[7]) + 15; v4 = *(_DWORD *)(this[7] + 4); v23 = *(_DWORD *)(v4 + 52); v24 = *(_DWORD *)(v4 + 56); if ( std::operator==("?", (int)v25) ) { v5 = night::NSASTParse::ast_ternary_expression(this); if ( !night::NSASTParse::is_exp((int)v5) ) { v6 = (_DWORD **)this[7]; std::string::basic_string(v28, "Expected exp"); night::NSToken::err(v6, (int)v28, v23, v24, 1); } v7 = (void *)this[6]; std::string::basic_string(v28, (int)&night::NS_TYPE_BINARY); v8 = night::NSGod::gen_son(v7, (int)v28); std::string::_M_dispose(v28); std::string::_M_assign((int)(v8 + 39), (int)v25); v8[46] = v5; v8[45] = a2; return night::NSASTParse::make_binary_or_just_value(v8, a3); } else { v10 = std::operator==("=", (int)v25); v11 = "="; if ( !v10 ) v11 = "op not="; std::string::operator=(this + 11, v11); v12 = night::NSASTParse::ast_dispatch(0, v21); binary_or_just_value = night::NSASTParse::make_binary_or_just_value(v12, a3); if ( !night::NSASTParse::is_exp(binary_or_just_value) ) { v14 = (_DWORD **)this[7]; std::string::basic_string(v28, "Expected exp"); night::NSToken::err(v14, (int)v28, v23, v24, 1); } v22 = (void *)this[6]; v15 = &night::NS_TYPE_ASSIGN; if ( !v10 ) v15 = &night::NS_TYPE_BINARY; std::string::basic_string(v28, (int)v15); v16 = night::NSGod::gen_son(v22, (int)v28); std::string::_M_dispose(v28); std::string::_M_assign((int)(v16 + 39), (int)v25); v16[46] = binary_or_just_value; v16[45] = a2; if ( (std::operator==("/", (int)(v16 + 39)) || std::operator==("/=", (int)(v16 + 39))) && (!night::NSASTParse::is_save_for_division(a2) || !night::NSASTParse::is_save_for_division(binary_or_just_value)) ) { v17 = (_DWORD **)this[7]; std::string::basic_string(v28, "Expected exp"); night::NSToken::err(v17, (int)v28, v23, v24, 1); } return night::NSASTParse::make_binary_or_just_value(v16, a3); } } return a2; } // 406CAE: variable 'v19' is possibly undefined // 406CC6: variable 'v20' is possibly undefined // 406E13: variable 'v21' is possibly undefined //----- (00406FBC) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_expression_no_comma(int *a1) { int v1; // eax int binary_or_just_value; // eax bool v4; // [esp+4h] [ebp-24h] v1 = night::NSASTParse::ast_dispatch(0, v4); binary_or_just_value = night::NSASTParse::make_binary_or_just_value(a1, v1, 1u); return night::NSASTParse::make_call_or_just_expression(a1, binary_or_just_value); } // 406FCC: variable 'v4' is possibly undefined //----- (00406FF6) -------------------------------------------------------- int __fastcall night::NSASTParse::ast_varname(int a1) { int v2; // eax unsigned int v3; // edi int v4; // ebx _DWORD **v5; // esi night::NSASTParse *v7; // [esp+0h] [ebp-58h] unsigned int v8; // [esp+1Ch] [ebp-3Ch] void *v9[12]; // [esp+28h] [ebp-30h] BYREF v2 = *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4); v3 = *(_DWORD *)(v2 + 56); v8 = *(_DWORD *)(v2 + 52); v4 = night::NSASTParse::ast_expression_no_comma(v7); if ( (!std::operator==((int)&night::NS_TYPE_ASSIGN, v4) || !std::operator==((int)&night::NS_TYPE_VAR, *(_DWORD *)(v4 + 180))) && !std::operator==((int)&night::NS_TYPE_VAR, v4) ) { v5 = *(_DWORD ***)(a1 + 28); std::string::basic_string(v9, "Expected variable"); night::NSToken::err(v5, (int)v9, v8, v3, 1); } return v4; } // 407010: variable 'v7' is possibly undefined //----- (004070A6) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::ast_obj_op_self(_DWORD *this, int a2) { void *v3; // esi int v4; // ecx _DWORD *v5; // eax _DWORD **v6; // ebx int v7; // edx int v8; // esi _DWORD *v9; // eax _DWORD *v10; // edi _DWORD **v11; // ebx _DWORD **v12; // ebx _DWORD *v13; // eax int v14; // esi void *v15; // edi _DWORD *v16; // edi night::NSASTParse *v18; // [esp+0h] [ebp-68h] int v19; // [esp+14h] [ebp-54h] int v20; // [esp+18h] [ebp-50h] _DWORD *v21; // [esp+1Ch] [ebp-4Ch] _DWORD v22[6]; // [esp+20h] [ebp-48h] BYREF void *v23[12]; // [esp+38h] [ebp-30h] BYREF v3 = (void *)this[6]; std::string::basic_string(v23, (int)&night::NS_TYPE_OBJ_SELF_OP); v21 = night::NSGod::gen_son(v3, (int)v23); std::string::_M_dispose(v23); *((_BYTE *)v21 + 200) = a2 == 0; v20 = (int)(v21 + 39); std::string::operator=(v21 + 39, (char *)off_51B9E4); v4 = this[7]; v21[48] = 0; v5 = night::NSToken::next(v4); if ( !v5 ) { v6 = (_DWORD **)this[7]; std::string::basic_string(v23, "End of file"); night::NSToken::err(v6, (int)v23, 0, 0, 0); } v7 = (int)(v5 + 15); v8 = (int)(v5 + 21); v19 = (int)(v21 + 21); if ( a2 ) { v21[48] = a2; std::string::_M_assign(v20, v7); std::string::_M_assign(v19, v8); } else { std::string::_M_assign(v20, v7); std::string::_M_assign(v19, v8); v9 = night::NSToken::peek(this[7]); v10 = v9; if ( !v9 ) { v11 = (_DWORD **)this[7]; std::string::basic_string(v23, "End of file"); night::NSToken::err(v11, (int)v23, 0, 0, 0); } if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v9) ) { v12 = (_DWORD **)this[7]; std::operator+((int)v22, "Unexpected token `", (int)(v10 + 15)); v13 = std::string::append(v22, "`"); std::string::basic_string(v23, v13); night::NSToken::err(v12, (int)v23, 0, 0, 0); } v14 = night::NSASTParse::ast_expression_no_comma(v18); if ( std::operator==((int)&night::NS_TYPE_OBJ_SELF_OP, v14) ) { v15 = (void *)this[6]; std::string::basic_string(v23, (int)&night::NS_TYPE_OP); v16 = night::NSGod::gen_son(v15, (int)v23); std::string::_M_dispose(v23); std::string::_M_assign((int)(v16 + 15), v14 + 156); std::string::_M_assign((int)(v16 + 21), v14 + 84); night::NSToken::push(this[7], (int)v16); v21[48] = *(_DWORD *)(v14 + 192); } else { v21[48] = v14; } } return v21; } // 40723B: variable 'v18' is possibly undefined // 4070A6: using guessed type _DWORD var_48[6]; //----- (00407324) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::ast_obj_dot(int *this, int a2) { void *v3; // esi void **v4; // edi void *v5; // esi _DWORD *v6; // esi int v7; // ecx int v8; // eax _DWORD *v9; // eax _DWORD **v10; // ebx _DWORD **v11; // edi _DWORD *v12; // eax _DWORD *v13; // eax _DWORD *v15; // [esp+14h] [ebp-54h] unsigned int v16; // [esp+18h] [ebp-50h] unsigned int v17; // [esp+1Ch] [ebp-4Ch] _DWORD v18[6]; // [esp+20h] [ebp-48h] BYREF void *v19[12]; // [esp+38h] [ebp-30h] BYREF v3 = (void *)this[6]; std::string::basic_string(v19, (int)&night::std_v_n); v4 = (void **)night::NSGod::gen_girl(v3, (int)v19); std::string::_M_dispose(v19); v5 = (void *)this[6]; std::string::basic_string(v19, (int)&night::NS_TYPE_OBJ_DOT); v6 = night::NSGod::gen_son(v5, (int)v19); std::string::_M_dispose(v19); v6[49] = v4; v6[48] = a2; do { std::string::basic_string(v19, "."); night::NSASTParse::ignore_punc(this, (int)v19); std::string::_M_dispose(v19); v7 = this[7]; v8 = *(_DWORD *)(v7 + 4); v16 = *(_DWORD *)(v8 + 52); v17 = *(_DWORD *)(v8 + 56); v9 = night::NSToken::peek(v7); if ( !v9 ) { v10 = (_DWORD **)this[7]; std::string::basic_string(v19, "End of file"); night::NSToken::err(v10, (int)v19, 0, 0, 0); } v15 = v9; if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v9) ) { v11 = (_DWORD **)this[7]; std::operator+((int)v18, "Unexpected token `", (int)(v15 + 15)); v12 = std::string::append(v18, "`"); std::string::basic_string(v19, v12); night::NSToken::err(v11, (int)v19, v16, v17, 1); } v19[0] = night::NSASTParse::ast_expression_no_comma(this); std::vector::emplace_back(v4, v19); v13 = night::NSToken::peek(this[7]); } while ( v13 && !(unsigned __int8)std::operator!=(".", (int)(v13 + 15)) ); return v6; } // 407324: using guessed type _DWORD var_48[6]; //----- (00407500) -------------------------------------------------------- unsigned int *__fastcall night::NSASTParse::ast_if(int *a1) { _DWORD *v2; // eax void *v3; // esi int v4; // edi unsigned int *v5; // esi _DWORD *v7; // [esp+1Ch] [ebp-3Ch] _DWORD *v8; // [esp+1Ch] [ebp-3Ch] _DWORD *v9; // [esp+1Ch] [ebp-3Ch] void *v10[12]; // [esp+28h] [ebp-30h] BYREF std::string::basic_string(v10, "if"); night::NSASTParse::ignore_buildin_kw(a1, (int)v10); std::string::_M_dispose(v10); v7 = night::NSASTParse::ast_expression_no_comma(a1); v2 = night::NSASTParse::ast_expression_no_comma(a1); v3 = (void *)a1[6]; v4 = (int)v2; std::string::basic_string(v10, (int)&night::NS_TYPE_IF); v5 = night::NSGod::gen_son(v3, (int)v10); std::string::_M_dispose(v10); v5[52] = v4; v5[53] = 0; v5[51] = (unsigned int)v7; if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_PROG_NO_SEM, v4) ) { if ( !night::NSToken::eof(a1[7]) ) { std::string::basic_string(v10, ";"); v8 = night::NSASTParse::is_punctuation(a1, (int)v10); std::string::_M_dispose(v10); if ( v8 ) night::NSToken::next(a1[7]); } std::string::operator=(v5 + 27, ";"); } std::string::basic_string(v10, "else"); v9 = night::NSASTParse::is_buildin_keywords(a1, (int)v10); std::string::_M_dispose(v10); if ( v9 ) { night::NSToken::next(a1[7]); v5[53] = (unsigned int)night::NSASTParse::ast_expression_no_comma(a1); } return v5; } //----- (00407656) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_ternary_expression(int *a1) { int v2; // edi night::NSASTParse *v3; // ecx int v4; // eax void *v5; // ebx int v6; // esi _DWORD *result; // eax night::NSASTParse *v8; // [esp+0h] [ebp-58h] night::NSASTParse *v9; // [esp+0h] [ebp-58h] _DWORD *v10; // [esp+1Ch] [ebp-3Ch] void *v11[12]; // [esp+28h] [ebp-30h] BYREF v2 = night::NSASTParse::ast_expression_no_comma(v8); std::string::basic_string(v11, ":"); night::NSASTParse::ignore_punc(a1, (int)v11); v9 = v3; std::string::_M_dispose(v11); v4 = night::NSASTParse::ast_expression_no_comma(v9); v5 = (void *)a1[6]; v6 = v4; std::string::basic_string(v11, (int)&night::NS_TYPE_TERNARY); v10 = night::NSGod::gen_son(v5, (int)v11); std::string::_M_dispose(v11); result = v10; v10[45] = v2; v10[46] = v6; return result; } // 407661: variable 'v8' is possibly undefined // 407685: variable 'v3' is possibly undefined //----- (004076EE) -------------------------------------------------------- void **__thiscall night::NSASTParse::make_list_by_parser( int *this, int a2, int a3, int a4, int a5, char a6, int a7, int a8) { void *v9; // edi int v10; // eax int v11; // edi char i; // si _DWORD *v13; // eax night::NSASTParse *v14; // edx _DWORD *v15; // eax night::NSASTParse *v17; // [esp+0h] [ebp-58h] night::NSASTParse *v18; // [esp+0h] [ebp-58h] void *v19; // [esp+18h] [ebp-40h] void **v20; // [esp+1Ch] [ebp-3Ch] _DWORD *v21; // [esp+24h] [ebp-34h] BYREF void *v22[12]; // [esp+28h] [ebp-30h] BYREF v9 = (void *)this[6]; std::string::basic_string(v22, (int)&night::std_v_n); v10 = night::NSGod::gen_girl(v9, (int)v22); v11 = 0; v20 = (void **)v10; std::string::_M_dispose(v22); night::NSASTParse::ignore_punc(this, a2); for ( i = 1; !night::NSToken::eof(this[7]) && !night::NSASTParse::is_punctuation(this, a3); i = 0 ) { if ( !i ) { if ( a6 ) night::NSASTParse::ignore_punc_pass_sem(this, a4); else night::NSASTParse::ignore_punc(this, a4); ++v11; } if ( night::NSASTParse::is_punctuation(this, a3) ) break; if ( std::operator==("ast_expression_no_comma", a5) ) { if ( std::operator==("ast_new_array", a8) ) { v13 = night::NSASTParse::is_punctuation(this, a4); v17 = v14; if ( v13 ) { v19 = (void *)this[6]; std::string::basic_string(v22, (int)&night::NS_TYPE_SKIP); v21 = night::NSGod::gen_son(v19, (int)v22); std::string::_M_dispose(v22); goto LABEL_20; } } v15 = (_DWORD *)night::NSASTParse::ast_expression_no_comma(v17); } else if ( std::operator==("ast_expression", a5) ) { v15 = (_DWORD *)night::NSASTParse::ast_expression(v18); } else { if ( !std::operator==("ast_varname", a5) ) goto LABEL_20; v15 = (_DWORD *)night::NSASTParse::ast_varname((int)this); } v21 = v15; LABEL_20: std::vector::push_back(v20, &v21); } if ( a7 != -1 && v11 != a7 ) return 0; night::NSASTParse::ignore_punc(this, a3); return v20; } // 4077D7: variable 'v14' is possibly undefined // 40780E: variable 'v17' is possibly undefined // 40782E: variable 'v18' is possibly undefined //----- (004078B0) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::ast_call(int *this, int a2) { void *v3; // ebx void *v4; // ebx _DWORD *v5; // ebx int v6; // ecx _DWORD *v7; // edi _DWORD **v8; // ebx _DWORD *v9; // eax void ***i; // eax _DWORD *v11; // edi _DWORD *v12; // eax int v13; // edi _DWORD *v14; // eax _DWORD *v15; // edi _DWORD *v17; // [esp+28h] [ebp-A0h] int v18; // [esp+2Ch] [ebp-9Ch] void **list_by_parser; // [esp+30h] [ebp-98h] BYREF void **v20; // [esp+34h] [ebp-94h] BYREF void *v21[6]; // [esp+38h] [ebp-90h] BYREF void *v22[6]; // [esp+50h] [ebp-78h] BYREF void *v23[6]; // [esp+68h] [ebp-60h] BYREF void *v24[6]; // [esp+80h] [ebp-48h] BYREF void *v25[12]; // [esp+98h] [ebp-30h] BYREF v3 = (void *)this[6]; std::string::basic_string(v25, (int)&night::std_v_v_n); v18 = night::NSGod::gen_girl(v3, (int)v25); std::string::_M_dispose(v25); v4 = (void *)this[6]; std::string::basic_string(v25, (int)&night::NS_TYPE_CALL); v5 = night::NSGod::gen_son(v4, (int)v25); std::string::_M_dispose(v25); v6 = this[7]; v5[55] = a2; v5[56] = v18; v17 = night::NSToken::peek(v6); std::string::basic_string(v25, "("); v7 = night::NSASTParse::is_punctuation(this, (int)v25); std::string::_M_dispose(v25); if ( !v7 ) { v8 = (_DWORD **)this[7]; std::operator+((int)v24, "Unexpected token `", (int)(v17 + 15)); v9 = std::string::append(v24, "`"); std::string::basic_string(v25, v9); night::NSToken::err(v8, (int)v25, 0, 0, 0); } std::string::basic_string(v25, (char *)off_51B9E4); std::string::basic_string(v24, "ast_expression_no_comma"); std::string::basic_string(v23, ","); std::string::basic_string(v22, ")"); std::string::basic_string(v21, "("); list_by_parser = night::NSASTParse::make_list_by_parser(this, (int)v21, (int)v22, (int)v23, (int)v24, 0, -1, (int)v25); std::string::_M_dispose(v21); std::string::_M_dispose(v22); std::string::_M_dispose(v23); std::string::_M_dispose(v24); std::string::_M_dispose(v25); for ( i = &list_by_parser; ; i = &v20 ) { std::vector>>::push_back(v18, i); std::string::basic_string(v25, "("); v11 = night::NSASTParse::is_punctuation(this, (int)v25); std::string::_M_dispose(v25); if ( !v11 ) break; std::string::basic_string(v25, (char *)off_51B9E4); std::string::basic_string(v24, "ast_expression_no_comma"); std::string::basic_string(v23, ","); std::string::basic_string(v22, ")"); std::string::basic_string(v21, "("); v20 = night::NSASTParse::make_list_by_parser(this, (int)v21, (int)v22, (int)v23, (int)v24, 0, -1, (int)v25); std::string::_M_dispose(v21); std::string::_M_dispose(v22); std::string::_M_dispose(v23); std::string::_M_dispose(v24); std::string::_M_dispose(v25); } v12 = night::NSToken::peek(this[7]); if ( v12 ) { v13 = (int)(v12 + 15); if ( std::operator==("[", (int)(v12 + 15)) ) { v5 = night::NSASTParse::ast_obj_op(this, (int)v5); std::string::basic_string(v25, "("); v14 = night::NSASTParse::is_punctuation(this, (int)v25); } else { if ( !std::operator==(".", v13) ) return v5; v5 = (_DWORD *)night::NSASTParse::ast_obj_dot(v5); std::string::basic_string(v25, "("); v14 = night::NSASTParse::is_punctuation(this, (int)v25); } v15 = v14; std::string::_M_dispose(v25); if ( v15 ) return (_DWORD *)night::NSASTParse::ast_call(v5); } return v5; } // 407324: using guessed type __int64 __stdcall night::NSASTParse::ast_obj_dot(_DWORD); //----- (00407CC4) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::make_call_or_just_expression(int *this, int a2) { _DWORD *v3; // ebx void *v5[12]; // [esp+18h] [ebp-30h] BYREF v3 = (_DWORD *)a2; if ( !std::operator==((int)&night::NS_TYPE_PROG, a2) && !std::operator==((int)&night::NS_TYPE_B_TYPE, a2) && !std::operator==((int)&night::NS_TYPE_KW, a2) && (!std::operator==((int)&night::NS_TYPE_FUNC, a2) || !(unsigned __int8)std::operator!=((char *)off_51B9E4, a2 + 132)) ) { std::string::basic_string(v5, "("); if ( night::NSASTParse::is_punctuation(this, (int)v5) ) v3 = night::NSASTParse::ast_call(this, a2); std::string::_M_dispose(v5); } return v3; } //----- (00407D9C) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_expression(int *a1) { _DWORD *v1; // eax int binary_or_just_value; // eax bool v4; // [esp+4h] [ebp-24h] v1 = night::NSASTParse::ast_dispatch(a1, 0, v4); binary_or_just_value = night::NSASTParse::make_binary_or_just_value(a1, (int)v1, 0); return night::NSASTParse::make_call_or_just_expression(a1, binary_or_just_value); } // 407DAC: variable 'v4' is possibly undefined //----- (00407DD6) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::ast_obj_op(int *this, int a2) { void *v3; // ebx void **v4; // edi void *v5; // ebx _DWORD *v6; // ebx _DWORD *v7; // eax _DWORD *v9; // eax night::NSASTParse *v11; // [esp+0h] [ebp-58h] bool v12; // [esp+4h] [ebp-54h] int v13; // [esp+1Ch] [ebp-3Ch] void *v14[12]; // [esp+28h] [ebp-30h] BYREF v3 = (void *)this[6]; std::string::basic_string(v14, (int)&night::std_v_n); v4 = (void **)night::NSGod::gen_girl(v3, (int)v14); std::string::_M_dispose(v14); v5 = (void *)this[6]; std::string::basic_string(v14, (int)&night::NS_TYPE_OBJ_PROPERTY); v6 = night::NSGod::gen_son(v5, (int)v14); std::string::_M_dispose(v14); v6[49] = v4; v6[48] = a2; do { std::string::basic_string(v14, "["); v11 = (night::NSASTParse *)night::NSASTParse::ignore_punc(this, (int)v14); std::string::_M_dispose(v14); v14[0] = (void *)night::NSASTParse::ast_expression(v11); std::vector::emplace_back(v4, v14); std::string::basic_string(v14, "]"); night::NSASTParse::ignore_punc(this, (int)v14); std::string::_M_dispose(v14); v7 = night::NSToken::peek(this[7]); if ( !v7 ) break; v13 = (int)(v7 + 15); if ( std::operator==(";", (int)(v7 + 15)) ) break; } while ( !(unsigned __int8)std::operator!=("[", v13) ); if ( night::NSASTParse::is_obj_op_self(this, 0, v12) ) return night::NSASTParse::ast_obj_op_self(this, (int)v6); v9 = night::NSToken::peek(this[7]); if ( v9 && std::operator==(".", (int)(v9 + 15)) ) return (_DWORD *)night::NSASTParse::ast_obj_dot(v6); return v6; } // 407EF4: variable 'v12' is possibly undefined // 407324: using guessed type __int64 __stdcall night::NSASTParse::ast_obj_dot(_DWORD); //----- (00407F60) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_while(int *a1) { void *v2; // esi _DWORD *v3; // esi night::NSASTParse *v4; // edx _DWORD *result; // eax night::NSASTParse *v6; // [esp+0h] [ebp-38h] night::NSASTParse *v7; // [esp+0h] [ebp-38h] void *v8[8]; // [esp+18h] [ebp-20h] BYREF night::NSToken::next(a1[7]); v2 = (void *)a1[6]; std::string::basic_string(v8, (int)&night::NS_TYPE_WHILE); v3 = night::NSGod::gen_son(v2, (int)v8); std::string::_M_dispose(v8); v3[51] = 0; v3[54] = 0; std::string::basic_string(v8, "("); night::NSASTParse::ignore_punc(a1, (int)v8); v6 = v4; std::string::_M_dispose(v8); v3[51] = night::NSASTParse::ast_expression(v6); std::string::basic_string(v8, ")"); v7 = (night::NSASTParse *)night::NSASTParse::ignore_punc(a1, (int)v8); std::string::_M_dispose(v8); ++a1[9]; ++a1[10]; v3[54] = night::NSASTParse::ast_expression(v7); result = v3; --a1[9]; --a1[10]; return result; } // 407FCE: variable 'v4' is possibly undefined //----- (00408042) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_do_while(int *a1) { void *v2; // esi _DWORD *v3; // esi int v4; // eax int v5; // eax unsigned int v6; // edi _DWORD *v7; // eax night::NSASTParse *v8; // edx _DWORD **v9; // ebx night::NSASTParse *v10; // edx night::NSASTParse *v12; // [esp+0h] [ebp-58h] night::NSASTParse *v13; // [esp+0h] [ebp-58h] _DWORD *v14; // [esp+18h] [ebp-40h] unsigned int v15; // [esp+1Ch] [ebp-3Ch] void *v16[12]; // [esp+28h] [ebp-30h] BYREF night::NSToken::next(a1[7]); v2 = (void *)a1[6]; std::string::basic_string(v16, (int)&night::NS_TYPE_DO_WHILE); v3 = night::NSGod::gen_son(v2, (int)v16); std::string::_M_dispose(v16); v4 = a1[7]; v3[51] = 0; v3[54] = 0; v5 = *(_DWORD *)(v4 + 4); v6 = *(_DWORD *)(v5 + 56); v15 = *(_DWORD *)(v5 + 52); std::string::basic_string(v16, "{"); v7 = night::NSASTParse::is_punctuation(a1, (int)v16); v12 = v8; v14 = v7; std::string::_M_dispose(v16); if ( !v14 ) { v9 = (_DWORD **)a1[7]; std::string::basic_string(v16, "Expected `{`"); night::NSToken::err(v9, (int)v16, v15, v6, 1); } ++a1[9]; ++a1[10]; v3[54] = night::NSASTParse::ast_expression(v12); --a1[9]; --a1[10]; std::string::basic_string(v16, "while"); night::NSASTParse::ignore_buildin_kw(a1, (int)v16); std::string::_M_dispose(v16); std::string::basic_string(v16, "("); night::NSASTParse::ignore_punc(a1, (int)v16); v13 = v10; std::string::_M_dispose(v16); v3[51] = night::NSASTParse::ast_expression(v13); std::string::basic_string(v16, ")"); night::NSASTParse::ignore_punc(a1, (int)v16); std::string::_M_dispose(v16); return v3; } // 4080C0: variable 'v8' is possibly undefined // 408162: variable 'v10' is possibly undefined //----- (004081C4) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_switch(int *a1) { void *v2; // esi int v3; // esi void *v4; // edi void *v5; // edi int v6; // edi _DWORD *v7; // esi int v8; // ecx int v9; // eax void **v10; // edi _DWORD **v11; // esi _DWORD *v12; // eax _DWORD *v13; // esi bool v14; // si void **v15; // esi _DWORD *v16; // eax bool v17; // di _DWORD *v18; // eax night::NSASTParse *v19; // edx _DWORD *v20; // eax void *v21; // edi night::NSToken *v22; // eax night::NSASTParse *v23; // edx void *v24; // esi void *v25; // edi void **v26; // esi _DWORD **v27; // ebx _DWORD *v28; // esi _DWORD *v29; // esi _DWORD *v30; // eax night::NSASTParse *v31; // edx _DWORD *v32; // esi void **v33; // esi _DWORD **v34; // ebx _DWORD *v35; // esi night::NSASTParse *v37; // [esp+0h] [ebp-88h] night::NSASTParse *v38; // [esp+0h] [ebp-88h] night::NSASTParse *v39; // [esp+0h] [ebp-88h] unsigned int v40; // [esp+10h] [ebp-78h] unsigned int v41; // [esp+14h] [ebp-74h] int v42; // [esp+18h] [ebp-70h] bool v43; // [esp+18h] [ebp-70h] void *v44; // [esp+1Ch] [ebp-6Ch] _DWORD *v45; // [esp+1Ch] [ebp-6Ch] night::NSToken *v46; // [esp+24h] [ebp-64h] BYREF void *v47[6]; // [esp+28h] [ebp-60h] BYREF void *v48[6]; // [esp+40h] [ebp-48h] BYREF void *v49[12]; // [esp+58h] [ebp-30h] BYREF night::NSToken::next(a1[7]); v2 = (void *)a1[6]; std::string::basic_string(v49, (int)&night::std_v_n); v3 = night::NSGod::gen_girl(v2, (int)v49); std::string::_M_dispose(v49); v4 = (void *)a1[6]; std::string::basic_string(v49, (int)&night::std_v_v_n); v42 = night::NSGod::gen_girl(v4, (int)v49); std::string::_M_dispose(v49); v5 = (void *)a1[6]; std::string::basic_string(v49, (int)&night::std_v_n); v6 = night::NSGod::gen_girl(v5, (int)v49); std::string::_M_dispose(v49); v44 = (void *)a1[6]; std::string::basic_string(v49, (int)&night::NS_TYPE_SWITCH); v45 = night::NSGod::gen_son(v44, (int)v49); std::string::_M_dispose(v49); v45[58] = v3; v45[51] = 0; v45[59] = v42; v45[60] = v6; std::string::basic_string(v49, "("); v37 = (night::NSASTParse *)night::NSASTParse::ignore_punc(a1, (int)v49); std::string::_M_dispose(v49); v45[51] = night::NSASTParse::ast_expression(v37); std::string::basic_string(v49, ")"); night::NSASTParse::ignore_punc(a1, (int)v49); std::string::_M_dispose(v49); std::string::basic_string(v49, "{"); night::NSASTParse::ignore_punc(a1, (int)v49); std::string::_M_dispose(v49); ++a1[9]; while ( 1 ) { std::string::basic_string(v49, "case"); v7 = night::NSASTParse::is_buildin_keywords(a1, (int)v49); std::string::_M_dispose(v49); if ( !v7 ) break; std::string::basic_string(v49, "case"); night::NSASTParse::ignore_buildin_kw(a1, (int)v49); std::string::_M_dispose(v49); v8 = a1[7]; v9 = *(_DWORD *)(v8 + 4); v40 = *(_DWORD *)(v9 + 52); v41 = *(_DWORD *)(v9 + 56); v10 = (void **)night::NSToken::peek(v8); if ( !v10 ) goto LABEL_4; std::string::basic_string(v48, (char *)&asc_51BF80[2]); v43 = 1; if ( !night::NSASTParse::is_op(a1, (int)v48) ) { std::string::basic_string(v49, (char *)&asc_51BF80[4]); v43 = night::NSASTParse::is_op(a1, (int)v49) != 0; std::string::_M_dispose(v49); } std::string::_M_dispose(v48); if ( v43 ) { night::NSToken::next(a1[7]); v12 = night::NSToken::peek(a1[7]); v13 = v12; if ( !v12 || !std::operator==((int)&night::NS_TYPE_NUM, (int)v12) ) goto LABEL_4; v10 += 15; std::operator+(v49, (int)v10, (int)(v13 + 15)); std::string::operator=(v13 + 15, v49); std::string::_M_dispose(v49); } else if ( !std::operator==((int)&night::NS_TYPE_VAR, (int)v10) && !std::operator==((int)&night::NS_TYPE_NUM, (int)v10) && !std::operator==((int)&night::NS_TYPE_STR, (int)v10) ) { std::string::basic_string(v48, "true"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v48) ) { v14 = 1; } else { v10 = v49; std::string::basic_string(v49, "false"); v14 = night::NSASTParse::is_buildin_keywords(a1, (int)v49) != 0; std::string::_M_dispose(v49); } std::string::_M_dispose(v48); if ( !v14 ) { LABEL_4: v11 = (_DWORD **)a1[7]; std::string::basic_string(v49, "Expected variable|numer|boolean|string"); night::NSToken::err(v11, (int)v49, v40, v41, 1); } } v15 = (void **)v45[58]; v49[0] = night::NSToken::next(a1[7]); std::vector::emplace_back(v15, v49); std::string::basic_string(v49, ":"); night::NSASTParse::ignore_punc(a1, (int)v49); std::string::_M_dispose(v49); v46 = 0; while ( 1 ) { std::string::basic_string(v47, "case"); v16 = night::NSASTParse::is_buildin_keywords(a1, (int)v47); v38 = (night::NSASTParse *)v10; if ( v16 ) { v17 = 0; } else { std::string::basic_string(v48, "default"); v18 = night::NSASTParse::is_buildin_keywords(a1, (int)v48); v17 = 0; v38 = v19; if ( !v18 ) { std::string::basic_string(v49, "}"); v20 = night::NSASTParse::is_punctuation(a1, (int)v49); v38 = 0; v17 = v20 == 0; std::string::_M_dispose(v49); } std::string::_M_dispose(v48); } std::string::_M_dispose(v47); if ( !v17 ) break; if ( !v46 ) { v21 = (void *)a1[6]; std::string::basic_string(v49, (int)&night::std_v_n); v22 = (night::NSToken *)night::NSGod::gen_girl(v21, (int)v49); v38 = v23; v46 = v22; std::string::_M_dispose(v49); } v10 = (void **)v46; v49[0] = (void *)night::NSASTParse::ast_expression(v38); std::vector::emplace_back(v10, v49); while ( !night::NSToken::eof(a1[7]) ) { std::string::basic_string(v49, ";"); v10 = (void **)night::NSASTParse::is_punctuation(a1, (int)v49); std::string::_M_dispose(v49); if ( !v10 ) break; night::NSToken::next(a1[7]); } } if ( !v46 ) { v24 = (void *)a1[6]; std::string::basic_string(v49, (int)&night::std_v_n); v46 = (night::NSToken *)night::NSGod::gen_girl(v24, (int)v49); std::string::_M_dispose(v49); v25 = (void *)a1[6]; v26 = (void **)v46; std::string::basic_string(v49, (int)&night::NS_TYPE_SKIP); v48[0] = night::NSGod::gen_son(v25, (int)v49); std::vector::emplace_back(v26, v48); std::string::_M_dispose(v49); } std::vector>>::push_back(v45[59], &v46); if ( night::NSToken::eof(a1[7]) ) { v27 = (_DWORD **)a1[7]; std::string::basic_string(v49, "End of file"); night::NSToken::err(v27, (int)v49, 0, 0, 0); } std::string::basic_string(v49, "}"); v28 = night::NSASTParse::is_punctuation(a1, (int)v49); std::string::_M_dispose(v49); if ( v28 ) break; std::string::basic_string(v49, "default"); v29 = night::NSASTParse::is_buildin_keywords(a1, (int)v49); std::string::_M_dispose(v49); if ( v29 ) { std::string::basic_string(v49, "default"); night::NSASTParse::ignore_buildin_kw(a1, (int)v49); std::string::_M_dispose(v49); std::string::basic_string(v49, ":"); night::NSASTParse::ignore_punc(a1, (int)v49); std::string::_M_dispose(v49); while ( 1 ) { std::string::basic_string(v49, "}"); v30 = night::NSASTParse::is_punctuation(a1, (int)v49); v39 = v31; v32 = v30; std::string::_M_dispose(v49); if ( v32 ) break; v33 = (void **)v45[60]; v49[0] = (void *)night::NSASTParse::ast_expression(v39); std::vector::emplace_back(v33, v49); if ( night::NSToken::eof(a1[7]) ) { v34 = (_DWORD **)a1[7]; std::string::basic_string(v49, "End of file"); night::NSToken::err(v34, (int)v49, 0, 0, 0); } while ( 1 ) { std::string::basic_string(v49, ";"); v35 = night::NSASTParse::is_punctuation(a1, (int)v49); std::string::_M_dispose(v49); if ( !v35 ) break; night::NSToken::next(a1[7]); } } break; } } --a1[9]; std::string::basic_string(v49, "}"); night::NSASTParse::ignore_punc(a1, (int)v49); std::string::_M_dispose(v49); return v45; } // 408604: variable 'v19' is possibly undefined // 408691: variable 'v23' is possibly undefined // 408898: variable 'v31' is possibly undefined //----- (004089E4) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::top_down(int *a1) { void *v2; // edi _DWORD *v3; // ebx int v4; // edi int v5; // eax _DWORD *v6; // eax _DWORD *v7; // ebx _DWORD **v8; // esi _DWORD *v9; // edi void *v10; // ebx _DWORD *v11; // ebx unsigned int v13; // [esp+14h] [ebp-44h] unsigned int v14; // [esp+18h] [ebp-40h] void **v15; // [esp+1Ch] [ebp-3Ch] _DWORD *v16; // [esp+24h] [ebp-34h] BYREF void *v17[12]; // [esp+28h] [ebp-30h] BYREF v2 = (void *)a1[6]; std::string::basic_string(v17, (int)&night::std_v_n); v15 = (void **)night::NSGod::gen_girl(v2, (int)v17); std::string::_M_dispose(v17); while ( !night::NSToken::eof(a1[7]) ) { v16 = night::NSASTParse::ast_expression(a1); std::vector::push_back(v15, &v16); v3 = v16; v4 = a1[7]; v5 = *(_DWORD *)(v4 + 4); v13 = *(_DWORD *)(v5 + 52); v14 = *(_DWORD *)(v5 + 56); if ( std::operator==((int)&night::NS_TYPE_BOOL, (int)v16) || std::operator==((int)&night::NS_TYPE_VAR, (int)v3) || std::operator==((int)&night::NS_TYPE_STR, (int)v3) || std::operator==((int)&night::NS_TYPE_NUM, (int)v3) || std::operator==((int)&night::NS_TYPE_B_TYPE, (int)v3) || std::operator==((int)&night::NS_TYPE_KW, (int)v3) || std::operator==((int)&night::NS_TYPE_OP_SELF, (int)v3) || std::operator==((int)&night::NS_TYPE_BINARY, (int)v3) || std::operator==((int)&night::NS_TYPE_ASSIGN, (int)v3) || std::operator==((int)&night::NS_TYPE_TERNARY, (int)v3) || std::operator==((int)&night::NS_TYPE_OBJ_DOT, (int)v3) || std::operator==((int)&night::NS_TYPE_OBJ_PROPERTY, (int)v3) || std::operator==((int)&night::NS_TYPE_OBJ_SELF_OP, (int)v3) || std::operator==((int)&night::NS_TYPE_ARRAY, (int)v3) || std::operator==((int)&night::NS_TYPE_BRACKET, (int)v3) || std::operator==((int)&night::NS_TYPE_CALL, (int)v3) ) { v6 = night::NSToken::peek(v4); v7 = v6; if ( v6 ) { if ( (unsigned __int8)std::operator!=(";", (int)(v6 + 15)) && std::string::find(v7 + 21, 10, 0) == (char *)-1 ) { v8 = (_DWORD **)a1[7]; std::string::basic_string(v17, "Expected LineFeed"); night::NSToken::err(v8, (int)v17, v13, v14, 1); } } } while ( !night::NSToken::eof(a1[7]) ) { std::string::basic_string(v17, ";"); v9 = night::NSASTParse::is_punctuation(a1, (int)v17); std::string::_M_dispose(v17); if ( !v9 ) break; night::NSToken::next(a1[7]); } } v10 = (void *)a1[6]; std::string::basic_string(v17, (int)&night::NS_TYPE_PROG); v11 = night::NSGod::gen_son(v10, (int)v17); std::string::_M_dispose(v17); v11[57] = v15; std::string::operator=(v11 + 27, (char *)off_51B9E4); return v11; } //----- (00408CF4) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_require(int *a1) { void *v2; // esi void **v3; // edi void *v4; // esi int v5; // ecx int v6; // eax _DWORD *v7; // eax _DWORD *v8; // esi _DWORD **v9; // ebx _DWORD **v10; // ebx void *v11; // esi void *v12; // esi void *v13; // esi _DWORD *v14; // ecx _DWORD *v15; // eax int v16; // esi _DWORD *v17; // eax unsigned int v19; // [esp+18h] [ebp-60h] unsigned int v20; // [esp+1Ch] [ebp-5Ch] void *v21; // [esp+1Ch] [ebp-5Ch] _DWORD *v22; // [esp+28h] [ebp-50h] BYREF _DWORD *v23; // [esp+2Ch] [ebp-4Ch] BYREF void *v24[2]; // [esp+30h] [ebp-48h] BYREF char v25; // [esp+38h] [ebp-40h] BYREF void *v26[12]; // [esp+48h] [ebp-30h] BYREF v2 = (void *)a1[6]; std::string::basic_string(v26, (int)&night::std_v_n); v3 = (void **)night::NSGod::gen_girl(v2, (int)v26); std::string::_M_dispose(v26); v22 = night::NSToken::next(a1[7]); std::operator+(v26, (int)&night::nsv_, (int)(v22 + 15)); std::string::operator=(v22 + 15, v26); std::string::_M_dispose(v26); std::vector::push_back(v3, &v22); v4 = (void *)a1[6]; std::string::basic_string(v26, (int)&night::NS_TYPE_PUNC); v22 = night::NSGod::gen_son(v4, (int)v26); std::string::_M_dispose(v26); std::string::operator=(v22 + 15, "("); std::vector::push_back(v3, &v22); night::NSToken::next(a1[7]); v5 = a1[7]; v6 = *(_DWORD *)(v5 + 4); v19 = *(_DWORD *)(v6 + 52); v20 = *(_DWORD *)(v6 + 56); v7 = night::NSToken::next(v5); v23 = v7; v8 = v7; if ( !v7 || (unsigned __int8)std::operator!=((int)&night::NS_TYPE_STR, (int)v7) ) { v9 = (_DWORD **)a1[7]; std::string::basic_string(v26, "Expected string"); night::NSToken::err(v9, (int)v26, v19, v20, 1); } v24[0] = &v25; v24[1] = 0; v25 = 0; if ( night::str::path_combine(a1, v8 + 15, v24) ) { v10 = (_DWORD **)a1[7]; std::string::basic_string(v26, "Expected wxs file"); night::NSToken::err(v10, (int)v26, v19, v20, 1); } std::operator+((int)v26, "p_", (int)v24); std::string::operator=(v23 + 15, v26); std::string::_M_dispose(v26); std::vector::push_back(v3, &v23); std::string::_M_dispose(v24); v21 = (void *)a1[6]; std::string::basic_string(v26, (int)&night::NS_TYPE_PUNC); v22 = night::NSGod::gen_son(v21, (int)v26); std::string::_M_dispose(v26); std::string::operator=(v22 + 15, ")"); std::vector::push_back(v3, &v22); night::NSToken::next(a1[7]); v11 = (void *)a1[6]; std::string::basic_string(v26, (int)&night::NS_TYPE_PUNC); v22 = night::NSGod::gen_son(v11, (int)v26); std::string::_M_dispose(v26); std::string::operator=(v22 + 15, "("); std::vector::push_back(v3, &v22); v12 = (void *)a1[6]; std::string::basic_string(v26, (int)&night::NS_TYPE_PUNC); v22 = night::NSGod::gen_son(v12, (int)v26); std::string::_M_dispose(v26); std::string::operator=(v22 + 15, ")"); std::vector::push_back(v3, &v22); v13 = (void *)a1[6]; std::string::basic_string(v26, (int)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); v22 = night::NSGod::gen_son(v13, (int)v26); std::string::_M_dispose(v26); v14 = v22; v22[57] = v3; std::string::operator=(v14 + 27, (char *)off_51B9E4); v15 = night::NSToken::peek(a1[7]); if ( !v15 ) return v22; v16 = (int)(v15 + 15); if ( !std::operator==("[", (int)(v15 + 15)) ) { if ( std::operator==(".", v16) ) { v17 = night::NSASTParse::ast_obj_dot(a1, (int)v22); return night::NSASTParse::make_call_or_just_expression(a1, (int)v17); } return v22; } v17 = night::NSASTParse::ast_obj_op(a1, (int)v22); return night::NSASTParse::make_call_or_just_expression(a1, (int)v17); } //----- (004090B2) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_code_block(int *a1) { void **list_by_parser; // edi void *v3; // esi void **v4; // esi unsigned int *v5; // ecx void *v6; // edi unsigned int *v7; // ecx void *v9; // [esp+2Ch] [ebp-9Ch] void *v10; // [esp+2Ch] [ebp-9Ch] void *v11; // [esp+2Ch] [ebp-9Ch] void *v12[6]; // [esp+38h] [ebp-90h] BYREF void *v13[6]; // [esp+50h] [ebp-78h] BYREF void *v14[6]; // [esp+68h] [ebp-60h] BYREF void *v15[6]; // [esp+80h] [ebp-48h] BYREF void *v16[12]; // [esp+98h] [ebp-30h] BYREF std::string::basic_string(v16, (char *)off_51B9E4); std::string::basic_string(v15, "ast_expression"); std::string::basic_string(v14, ";"); std::string::basic_string(v13, "}"); std::string::basic_string(v12, "{"); list_by_parser = night::NSASTParse::make_list_by_parser(a1, (int)v12, (int)v13, (int)v14, (int)v15, 1, -1, (int)v16); std::string::_M_dispose(v12); std::string::_M_dispose(v13); std::string::_M_dispose(v14); std::string::_M_dispose(v15); std::string::_M_dispose(v16); v3 = (void *)a1[6]; std::string::basic_string(v16, (int)&night::std_v_n); v4 = (void **)night::NSGod::gen_girl(v3, (int)v16); std::string::_M_dispose(v16); v9 = (void *)a1[6]; std::string::basic_string(v16, (int)&night::NS_TYPE_PUNC); v15[0] = night::NSGod::gen_son(v9, (int)v16); std::string::_M_dispose(v16); std::string::operator=((unsigned int *)v15[0] + 15, "{"); std::vector::push_back(v4, v15); if ( *list_by_parser != list_by_parser[1] ) { v10 = (void *)a1[6]; std::string::basic_string(v16, (int)&night::NS_TYPE_PROG); v15[0] = night::NSGod::gen_son(v10, (int)v16); std::string::_M_dispose(v16); v5 = (unsigned int *)v15[0]; *((_DWORD *)v15[0] + 57) = list_by_parser; std::string::operator=(v5 + 27, (char *)off_51B9E4); std::vector::push_back(v4, v15); } v11 = (void *)a1[6]; std::string::basic_string(v16, (int)&night::NS_TYPE_PUNC); v15[0] = night::NSGod::gen_son(v11, (int)v16); std::string::_M_dispose(v16); std::string::operator=((unsigned int *)v15[0] + 15, "}"); std::vector::push_back(v4, v15); v6 = (void *)a1[6]; std::string::basic_string(v16, (int)&night::NS_TYPE_PROG_NO_SEM); v15[0] = night::NSGod::gen_son(v6, (int)v16); std::string::_M_dispose(v16); v7 = (unsigned int *)v15[0]; *((_DWORD *)v15[0] + 57) = v4; std::string::operator=(v7 + 27, (char *)off_51B9E4); return night::NSASTParse::make_call_or_just_expression(a1, (int)v15[0]); } //----- (0040935E) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_function(int *a1) { void *v2; // esi _DWORD *v3; // esi _DWORD *v4; // eax unsigned int *v5; // ecx _DWORD *v6; // edi bool v7; // al int v8; // ecx _DWORD *result; // eax void *v10[6]; // [esp+38h] [ebp-90h] BYREF void *v11[6]; // [esp+50h] [ebp-78h] BYREF void *v12[6]; // [esp+68h] [ebp-60h] BYREF void *v13[6]; // [esp+80h] [ebp-48h] BYREF void *v14[12]; // [esp+98h] [ebp-30h] BYREF v2 = (void *)a1[6]; std::string::basic_string(v14, (int)&night::NS_TYPE_FUNC); v3 = night::NSGod::gen_son(v2, (int)v14); std::string::_M_dispose(v14); std::string::_M_assign((int)v3, (int)&night::NS_TYPE_FUNC); night::NSToken::next(a1[7]); v4 = night::NSToken::peek(a1[7]); v5 = v3 + 33; v6 = v4; if ( v4 && (v7 = std::operator==((int)&night::NS_TYPE_VAR, (int)v4), v5 = v3 + 33, v7) ) { std::string::_M_assign((int)v5, (int)(v6 + 15)); std::string::_M_assign((int)(v3 + 6), (int)(v6 + 6)); v8 = a1[7]; v3[12] = v6[12]; v3[13] = v6[13]; night::NSToken::next(v8); } else { std::string::operator=(v5, (char *)off_51B9E4); } std::string::basic_string(v14, (char *)off_51B9E4); std::string::basic_string(v13, "ast_varname"); std::string::basic_string(v12, ","); std::string::basic_string(v11, ")"); std::string::basic_string(v10, "("); v3[61] = night::NSASTParse::make_list_by_parser(a1, (int)v10, (int)v11, (int)v12, (int)v13, 0, -1, (int)v14); std::string::_M_dispose(v10); std::string::_M_dispose(v11); std::string::_M_dispose(v12); std::string::_M_dispose(v13); std::string::_M_dispose(v14); ++a1[8]; v3[54] = night::NSASTParse::ast_code_block(a1); result = v3; --a1[8]; return result; } //----- (00409540) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_new_array(int *a1) { void **list_by_parser; // edi void *v3; // esi void **v4; // esi unsigned int *v5; // ecx void *v6; // edi unsigned int *v7; // ecx _DWORD *v8; // esi _DWORD *v9; // eax int v10; // edi void *v13; // [esp+2Ch] [ebp-9Ch] void *v14; // [esp+2Ch] [ebp-9Ch] void *v15; // [esp+2Ch] [ebp-9Ch] void *v16[6]; // [esp+38h] [ebp-90h] BYREF void *v17[6]; // [esp+50h] [ebp-78h] BYREF void *v18[6]; // [esp+68h] [ebp-60h] BYREF void *v19[6]; // [esp+80h] [ebp-48h] BYREF void *v20[12]; // [esp+98h] [ebp-30h] BYREF std::string::basic_string(v20, "ast_new_array"); std::string::basic_string(v19, "ast_expression_no_comma"); std::string::basic_string(v18, ","); std::string::basic_string(v17, "]"); std::string::basic_string(v16, "["); list_by_parser = night::NSASTParse::make_list_by_parser(a1, (int)v16, (int)v17, (int)v18, (int)v19, 0, -1, (int)v20); std::string::_M_dispose(v16); std::string::_M_dispose(v17); std::string::_M_dispose(v18); std::string::_M_dispose(v19); std::string::_M_dispose(v20); v3 = (void *)a1[6]; std::string::basic_string(v20, (int)&night::std_v_n); v4 = (void **)night::NSGod::gen_girl(v3, (int)v20); std::string::_M_dispose(v20); v13 = (void *)a1[6]; std::string::basic_string(v20, (int)&night::NS_TYPE_PUNC); v19[0] = night::NSGod::gen_son(v13, (int)v20); std::string::_M_dispose(v20); std::string::operator=((unsigned int *)v19[0] + 15, "["); std::vector::push_back(v4, v19); if ( *list_by_parser != list_by_parser[1] ) { v14 = (void *)a1[6]; std::string::basic_string(v20, (int)&night::NS_TYPE_PROG); v19[0] = night::NSGod::gen_son(v14, (int)v20); std::string::_M_dispose(v20); v5 = (unsigned int *)v19[0]; *((_DWORD *)v19[0] + 57) = list_by_parser; std::string::operator=(v5 + 27, ","); std::vector::push_back(v4, v19); } v15 = (void *)a1[6]; std::string::basic_string(v20, (int)&night::NS_TYPE_PUNC); v19[0] = night::NSGod::gen_son(v15, (int)v20); std::string::_M_dispose(v20); std::string::operator=((unsigned int *)v19[0] + 15, "]"); std::vector::push_back(v4, v19); v6 = (void *)a1[6]; std::string::basic_string(v20, (int)&night::NS_TYPE_ARRAY); v19[0] = night::NSGod::gen_son(v6, (int)v20); std::string::_M_dispose(v20); v7 = (unsigned int *)v19[0]; *((_DWORD *)v19[0] + 57) = v4; std::string::operator=(v7 + 27, (char *)off_51B9E4); v8 = night::NSASTParse::make_call_or_just_expression(a1, (int)v19[0]); v9 = night::NSToken::peek(a1[7]); if ( v9 ) { v10 = (int)(v9 + 15); if ( std::operator==("[", (int)(v9 + 15)) ) return night::NSASTParse::ast_obj_op(a1, (int)v8); if ( std::operator==(".", v10) ) return night::NSASTParse::ast_obj_dot(a1, (int)v8); } return v8; } //----- (00409846) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_for(int *a1) { void *v2; // esi _DWORD *v3; // esi int v4; // edi _DWORD **v5; // ebx night::NSASTParse *v6; // edx _DWORD **v7; // ebx _DWORD *result; // eax night::NSASTParse *v9; // [esp+0h] [ebp-C8h] void *v10; // [esp+2Ch] [ebp-9Ch] void *v11[6]; // [esp+38h] [ebp-90h] BYREF void *v12[6]; // [esp+50h] [ebp-78h] BYREF void *v13[6]; // [esp+68h] [ebp-60h] BYREF void *v14[6]; // [esp+80h] [ebp-48h] BYREF void *v15[12]; // [esp+98h] [ebp-30h] BYREF night::NSToken::next(a1[7]); v2 = (void *)a1[6]; std::string::basic_string(v15, (int)&night::NS_TYPE_FOR); v3 = night::NSGod::gen_son(v2, (int)v15); std::string::_M_dispose(v15); v3[57] = 0; v3[54] = 0; std::string::basic_string(v15, (char *)off_51B9E4); std::string::basic_string(v14, "ast_expression"); std::string::basic_string(v13, ";"); std::string::basic_string(v12, ")"); std::string::basic_string(v11, "("); v3[57] = night::NSASTParse::make_list_by_parser(a1, (int)v11, (int)v12, (int)v13, (int)v14, 0, 2, (int)v15); std::string::_M_dispose(v11); std::string::_M_dispose(v12); std::string::_M_dispose(v13); std::string::_M_dispose(v14); std::string::_M_dispose(v15); v4 = v3[57]; if ( !v4 ) { v5 = (_DWORD **)a1[7]; std::string::basic_string(v15, "Expected `for(xxx;xxx;xxx)`"); night::NSToken::err(v5, (int)v15, 0, 0, 0); } if ( *(_DWORD *)(v4 + 4) - *(_DWORD *)v4 == 8 ) { v10 = (void *)a1[6]; std::string::basic_string(v15, (int)&night::NS_TYPE_SKIP); v14[0] = night::NSGod::gen_son(v10, (int)v15); std::vector::emplace_back((void **)v4, v14); v9 = v6; std::string::_M_dispose(v15); } if ( *(_DWORD *)(v3[57] + 4) - *(_DWORD *)v3[57] != 12 ) { v7 = (_DWORD **)a1[7]; std::string::basic_string(v15, "Expected `for(xxx;xxx;xxx)`"); night::NSToken::err(v7, (int)v15, 0, 0, 0); } ++a1[9]; ++a1[10]; v3[54] = night::NSASTParse::ast_expression(v9); result = v3; --a1[9]; --a1[10]; return result; } // 4099E1: variable 'v6' is possibly undefined // 409A87: variable 'v9' is possibly undefined //----- (00409AA2) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_obj_block(int *a1) { void *v2; // esi void **v3; // edi void *v4; // esi _DWORD *v5; // esi bool v6; // zf _DWORD *v7; // eax int v8; // esi _DWORD **v9; // ebx unsigned int *v10; // eax _DWORD *v11; // eax _DWORD **v12; // ebx int v13; // esi _DWORD *v14; // eax _DWORD **v15; // ebx void *v16; // esi void *v17; // esi unsigned int *v18; // ecx _DWORD *v19; // eax int v20; // esi unsigned int *v21; // eax _DWORD *v23; // [esp+18h] [ebp-40h] void *v24; // [esp+1Ch] [ebp-3Ch] unsigned int *v25; // [esp+24h] [ebp-34h] BYREF void *v26[12]; // [esp+28h] [ebp-30h] BYREF v2 = (void *)a1[6]; std::string::basic_string(v26, (int)&night::std_v_n); v3 = (void **)night::NSGod::gen_girl(v2, (int)v26); std::string::_M_dispose(v26); std::string::basic_string(v26, "{"); night::NSASTParse::ignore_punc(a1, (int)v26); std::string::_M_dispose(v26); v4 = (void *)a1[6]; std::string::basic_string(v26, (int)&night::NS_TYPE_PUNC); v25 = night::NSGod::gen_son(v4, (int)v26); std::string::_M_dispose(v26); std::string::operator=(v25 + 15, "{"); std::vector::push_back(v3, &v25); std::string::basic_string(v26, "}"); v5 = night::NSASTParse::is_punctuation(a1, (int)v26); std::string::_M_dispose(v26); v6 = v5 == 0; LABEL_2: if ( v6 ) { while ( 1 ) { v7 = night::NSToken::next(a1[7]); v8 = (int)v7; if ( !v7 || (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v7) && (unsigned __int8)std::operator!=((int)&night::NS_TYPE_STR, v8) ) { v9 = (_DWORD **)a1[7]; std::string::basic_string(v26, "Expected variable|string"); night::NSToken::err(v9, (int)v26, 0, 0, 0); } if ( std::operator==((int)&night::NS_TYPE_STR, v8) ) { std::operator+(v26, (int)&night::nsv_, v8 + 60); std::string::operator=((_DWORD *)(v8 + 60), v26); std::string::_M_dispose(v26); } std::string::basic_string(v26, ":"); night::NSASTParse::ignore_punc(a1, (int)v26); std::string::_M_dispose(v26); v23 = night::NSASTParse::ast_expression_no_comma(a1); v24 = (void *)a1[6]; std::string::basic_string(v26, (int)&night::NS_TYPE_K_V); v25 = night::NSGod::gen_son(v24, (int)v26); std::string::_M_dispose(v26); v10 = v25; v25[47] = v8; v10[48] = (unsigned int)v23; std::vector::push_back(v3, &v25); v11 = night::NSToken::peek(a1[7]); if ( !v11 ) { v12 = (_DWORD **)a1[7]; std::string::basic_string(v26, "Expected variable|string"); night::NSToken::err(v12, (int)v26, 0, 0, 0); } v13 = (int)(v11 + 15); if ( std::operator==("}", (int)(v11 + 15)) ) break; if ( std::operator==(",", v13) ) { night::NSToken::next(a1[7]); v14 = night::NSToken::peek(a1[7]); if ( !v14 ) { v15 = (_DWORD **)a1[7]; std::string::basic_string(v26, "Expected variable|string"); night::NSToken::err(v15, (int)v26, 0, 0, 0); } v6 = !std::operator==("}", (int)(v14 + 15)); goto LABEL_2; } } } std::string::basic_string(v26, "}"); night::NSASTParse::ignore_punc(a1, (int)v26); std::string::_M_dispose(v26); v16 = (void *)a1[6]; std::string::basic_string(v26, (int)&night::NS_TYPE_PUNC); v25 = night::NSGod::gen_son(v16, (int)v26); std::string::_M_dispose(v26); std::string::operator=(v25 + 15, "}"); std::vector::push_back(v3, &v25); v17 = (void *)a1[6]; std::string::basic_string(v26, (int)&night::NS_TYPE_OBJ_BLOCK); v25 = night::NSGod::gen_son(v17, (int)v26); std::string::_M_dispose(v26); v18 = v25; v25[57] = (unsigned int)v3; std::string::operator=(v18 + 27, (char *)off_51B9E4); v19 = night::NSToken::peek(a1[7]); if ( !v19 ) { LABEL_19: v21 = v25; return night::NSASTParse::make_call_or_just_expression(a1, (int)v21); } v20 = (int)(v19 + 15); if ( !std::operator==("[", (int)(v19 + 15)) ) { if ( std::operator==(".", v20) ) { v21 = night::NSASTParse::ast_obj_dot(a1, (int)v25); return night::NSASTParse::make_call_or_just_expression(a1, (int)v21); } goto LABEL_19; } v21 = night::NSASTParse::ast_obj_op(a1, (int)v25); return night::NSASTParse::make_call_or_just_expression(a1, (int)v21); } //----- (00409ED6) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_var(_DWORD *a1) { void *v2; // edi int v3; // ecx int v4; // eax unsigned int v5; // esi unsigned int v6; // edi _DWORD *v7; // eax int v8; // ecx int v9; // eax _DWORD *v10; // eax _DWORD *v11; // esi void *v12; // ebx _DWORD *v13; // ebx int v15; // edi char v16; // al _DWORD **v17; // esi _DWORD **v18; // ebx _DWORD *v19; // eax _DWORD *v20; // [esp+14h] [ebp-64h] unsigned int v21; // [esp+14h] [ebp-64h] _DWORD **v22; // [esp+18h] [ebp-60h] unsigned int v23; // [esp+18h] [ebp-60h] void **v24; // [esp+1Ch] [ebp-5Ch] _DWORD *v25; // [esp+2Ch] [ebp-4Ch] BYREF _DWORD v26[6]; // [esp+30h] [ebp-48h] BYREF void *v27[12]; // [esp+48h] [ebp-30h] BYREF night::NSToken::next(a1[7]); v2 = (void *)a1[6]; std::string::basic_string(v27, (int)&night::std_v_n); v24 = (void **)night::NSGod::gen_girl(v2, (int)v27); std::string::_M_dispose(v27); while ( 1 ) { v3 = a1[7]; v4 = *(_DWORD *)(v3 + 4); v5 = *(_DWORD *)(v4 + 52); v6 = *(_DWORD *)(v4 + 56); v25 = night::NSToken::next(v3); v22 = (_DWORD **)a1[7]; if ( !v25 ) { std::string::basic_string(v27, "End of file"); night::NSToken::err(v22, (int)v27, 0, 0, 0); } v20 = v25; if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v25) ) { std::string::basic_string(v27, "Expected variable name"); night::NSToken::err(v22, (int)v27, v5, v6, 1); } *((_BYTE *)v20 + 56) = 1; v7 = night::NSToken::peek((int)v22); if ( v7 && std::operator==("=", (int)(v7 + 15)) ) { v27[0] = (void *)night::NSASTParse::make_binary_or_just_value(a1, (int)v25, 1u); std::vector::emplace_back(v24, v27); } else { std::vector::push_back(v24, &v25); } v8 = a1[7]; v9 = *(_DWORD *)(v8 + 4); v21 = *(_DWORD *)(v9 + 52); v23 = *(_DWORD *)(v9 + 56); v10 = night::NSToken::peek(v8); v11 = v10; if ( !v10 ) break; v15 = (int)(v10 + 15); if ( std::operator==(";", (int)(v10 + 15)) || (unsigned __int8)std::operator!=(",", v15) && std::string::find(v11 + 21, 10, 0) != (char *)-1 ) { break; } if ( night::NSToken::eof(a1[7]) ) { v18 = (_DWORD **)a1[7]; std::string::basic_string(v27, "End of file"); night::NSToken::err(v18, (int)v27, 0, 0, 0); } v16 = std::operator!=(",", v15); v17 = (_DWORD **)a1[7]; if ( v16 ) { std::operator+((int)v26, "Unexpected token `", v15); v19 = std::string::append(v26, "`"); std::string::basic_string(v27, v19); night::NSToken::err(v17, (int)v27, v21, v23, 1); } night::NSToken::next(a1[7]); } v12 = (void *)a1[6]; std::string::basic_string(v27, (int)&night::NS_TYPE_PROG); v13 = night::NSGod::gen_son(v12, (int)v27); std::string::_M_dispose(v27); v13[57] = v24; std::string::operator=(v13 + 27, (char *)off_51B9E4); return v13; } // 409ED6: using guessed type _DWORD var_48[6]; //----- (0040A1B8) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_expression_no_binary(int *a1) { int v1; // eax bool v3; // [esp+4h] [ebp-24h] v1 = night::NSASTParse::ast_dispatch(0, v3); return night::NSASTParse::make_call_or_just_expression(a1, v1); } // 40A1C8: variable 'v3' is possibly undefined //----- (0040A1DC) -------------------------------------------------------- void __fastcall std::vector::~vector(void ***a1, int a2) { std::_Destroy_aux::__destroy(a2, *a1, a1[1]); std::_Vector_base::_M_deallocate(*a1); } //----- (0040A202) -------------------------------------------------------- void __fastcall night::NSCompileJs::~NSCompileJs(int a1, int a2) { std::vector::~vector((void ***)(a1 + 36), a2); std::string::_M_dispose((void **)a1); } //----- (0040A21C) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_var[abi:cxx11](_DWORD *this, int a2, int a3) { char v3; // al _DWORD *v4; // eax _DWORD *exception; // ebx char v7; // [esp+1Bh] [ebp-8Dh] void *v9[6]; // [esp+20h] [ebp-88h] BYREF void *v10[6]; // [esp+38h] [ebp-70h] BYREF void *v11[2]; // [esp+50h] [ebp-58h] BYREF char v12; // [esp+58h] [ebp-50h] BYREF int v13; // [esp+68h] [ebp-40h] int v14; // [esp+6Ch] [ebp-3Ch] int v15[2]; // [esp+70h] [ebp-38h] BYREF char v16; // [esp+78h] [ebp-30h] BYREF int v17; // [esp+88h] [ebp-20h] int v18; // [esp+8Ch] [ebp-1Ch] std::string::basic_string(v9, (char *)off_51B9E4); if ( *(_BYTE *)(a3 + 56) ) std::string::operator=((unsigned int *)v9, "var "); *(_DWORD *)(a2 + 48) += v9[1]; std::string::substr(v11, (_DWORD *)(a3 + 60), 0, dword_586E44); if ( (unsigned __int8)std::operator!=((int)v11, (int)&night::nsv_) && (unsigned __int8)std::operator!=("return", a3 + 60) && (unsigned __int8)std::operator!=("delete", a3 + 60) ) { v3 = std::operator!=("void", a3 + 60); } else { v3 = 0; } v7 = v3; std::string::_M_dispose(v11); if ( v7 ) { std::operator+((int)v11, "error : sys error for compile_var `", a3 + 60); v4 = std::string::append(v11, "`"); std::string::basic_string(v10, v4); std::string::_M_dispose(v11); exception = __cxa_allocate_exception(0x18u); std::string::basic_string(exception, v10); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::string, (void (__cdecl *)(void *))std::string::~string); } v12 = 0; v11[0] = &v12; v15[0] = (int)&v16; v11[1] = 0; v13 = 0; v14 = 0; v15[1] = 0; v16 = 0; v17 = 0; v18 = 0; std::string::_M_assign((int)v11, a3 + 24); v13 = *(_DWORD *)(a3 + 48); v14 = *(_DWORD *)(a3 + 52); std::string::_M_assign((int)v15, a3 + 60); v17 = *(_DWORD *)(a3 + 48); v18 = *(_DWORD *)(a2 + 48); std::vector::push_back((char **)(a2 + 36), v11); std::string::basic_string(v10, a3 + 60); *(_DWORD *)(a2 + 48) += v10[1]; std::operator+(this, (int)v9, (int)v10); std::string::_M_dispose(v10); night::ns_sourcemap::~ns_sourcemap(v11); std::string::_M_dispose(v9); return this; } // 534198: using guessed type int *`typeinfo for'std::string; // 586E44: using guessed type int dword_586E44; //----- (0040A47C) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_function[abi:cxx11](int this, int a2, _DWORD *a3) { void **v3; // ecx unsigned int v4; // ebx _DWORD *v5; // ecx int *v6; // eax bool v7; // al _DWORD *v8; // ecx _DWORD *v9; // eax int v10; // eax _DWORD *v11; // ecx int *v12; // eax int v13; // eax _DWORD *v14; // eax _DWORD *v15; // eax int v16; // eax _DWORD *v17; // eax unsigned int v18; // ebx _DWORD *v19; // eax int v20; // eax int v21; // edi int v22; // eax void **v23; // ecx _DWORD *v24; // eax int v25; // eax int v26; // edi int v27; // eax int v29; // [esp+10h] [ebp-E8h] char v30; // [esp+17h] [ebp-E1h] unsigned int v31; // [esp+18h] [ebp-E0h] unsigned int i; // [esp+18h] [ebp-E0h] void *v34[2]; // [esp+28h] [ebp-D0h] BYREF char v35; // [esp+30h] [ebp-C8h] BYREF void *v36[6]; // [esp+40h] [ebp-B8h] BYREF void *v37[6]; // [esp+58h] [ebp-A0h] BYREF char *v38; // [esp+70h] [ebp-88h] BYREF int v39; // [esp+74h] [ebp-84h] char v40; // [esp+78h] [ebp-80h] BYREF void *v41; // [esp+88h] [ebp-70h] BYREF int v42; // [esp+8Ch] [ebp-6Ch] char *v43; // [esp+A0h] [ebp-58h] BYREF int v44; // [esp+A4h] [ebp-54h] char v45; // [esp+A8h] [ebp-50h] BYREF int v46; // [esp+B8h] [ebp-40h] int v47; // [esp+BCh] [ebp-3Ch] int v48[2]; // [esp+C0h] [ebp-38h] BYREF char v49; // [esp+C8h] [ebp-30h] BYREF int v50; // [esp+D8h] [ebp-20h] int v51; // [esp+DCh] [ebp-1Ch] *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 0; v29 = a3[34]; if ( v29 ) { std::string::basic_string(&v41, "function "); std::string::operator+=((_DWORD *)this, (int)&v41); *(_DWORD *)(a2 + 48) += v42; v43 = &v45; v48[0] = (int)&v49; v44 = 0; v45 = 0; v46 = 0; v47 = 0; v48[1] = 0; v49 = 0; v50 = 0; v51 = 0; std::string::_M_assign((int)&v43, (int)(a3 + 6)); v46 = a3[12]; v47 = a3[13]; std::string::_M_assign((int)v48, (int)(a3 + 33)); v50 = a3[12]; v51 = *(_DWORD *)(a2 + 48); std::vector::push_back((char **)(a2 + 36), &v43); std::string::operator+=((_DWORD *)this, (int)(a3 + 33)); *(_DWORD *)(a2 + 48) += a3[34]; night::ns_sourcemap::~ns_sourcemap((void **)&v43); v3 = &v41; } else { std::string::basic_string((void **)&v43, "(function "); std::string::operator+=((_DWORD *)this, (int)&v43); v3 = (void **)&v43; *(_DWORD *)(a2 + 48) += v44; } std::string::_M_dispose(v3); std::string::operator+=((_DWORD *)this, "("); v4 = 0; ++*(_DWORD *)(a2 + 48); v30 = 0; while ( 1 ) { v5 = (_DWORD *)a3[61]; if ( v4 >= (v5[1] - *v5) >> 2 ) break; v6 = (int *)std::vector::at(v5, v4); v7 = std::operator==((int)&night::NS_TYPE_VAR, *v6); v8 = (_DWORD *)a3[61]; if ( v7 ) { v9 = (_DWORD *)std::vector::at(v8, v4); std::string::operator+=((_DWORD *)this, *v9 + 60); *(_DWORD *)(a2 + 48) += *(_DWORD *)(*(_DWORD *)std::vector::at((_DWORD *)a3[61], v4) + 64); } else { v10 = std::vector::at(v8, v4); std::string::operator+=((_DWORD *)this, *(_DWORD *)(*(_DWORD *)v10 + 180) + 60); v30 = 1; *(_DWORD *)(a2 + 48) += *(_DWORD *)(*(_DWORD *)(*(_DWORD *)std::vector::at((_DWORD *)a3[61], v4) + 180) + 64); } v31 = v4 + 1; v4 = (*(_DWORD *)(a3[61] + 4) - *(_DWORD *)a3[61]) >> 2; if ( v31 != v4 ) { v4 = v31; std::string::operator+=((_DWORD *)this, ","); ++*(_DWORD *)(a2 + 48); } } std::string::operator+=((_DWORD *)this, ")"); ++*(_DWORD *)(a2 + 48); if ( v30 ) { std::string::operator+=((_DWORD *)this, "{"); ++*(_DWORD *)(a2 + 48); for ( i = 0; ; ++i ) { v11 = (_DWORD *)a3[61]; if ( i >= (v11[1] - *v11) >> 2 ) break; v35 = 0; v34[0] = &v35; v34[1] = 0; v12 = (int *)std::vector::at(v11, i); if ( std::operator==((int)&night::NS_TYPE_ASSIGN, *v12) ) { v13 = std::vector::at((_DWORD *)a3[61], i); std::string::basic_string(v36, *(_DWORD *)(*(_DWORD *)v13 + 180) + 60); std::string::basic_string(&v41, (int)v36); std::string::append(&v41, "=undefined==="); v14 = std::string::append(&v41, (int)v36); std::string::basic_string(&v43, v14); v15 = std::string::append(&v43, "?"); std::string::basic_string(v37, v15); std::string::_M_dispose((void **)&v43); std::string::_M_dispose(&v41); std::string::operator+=((_DWORD *)this, (int)v37); *(_DWORD *)(a2 + 48) += v37[1]; v16 = std::vector::at((_DWORD *)a3[61], i); night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(*(_DWORD *)v16 + 184)); std::string::operator+=((_DWORD *)this, (int)&v38); std::operator+((int)&v43, ":", (int)v36); v17 = std::string::append(&v43, ";"); std::string::basic_string(&v41, v17); std::string::_M_dispose((void **)&v43); std::string::operator+=((_DWORD *)this, (int)&v41); *(_DWORD *)(a2 + 48) += v42; std::string::_M_dispose(&v41); std::string::_M_dispose((void **)&v38); std::string::_M_dispose(v37); std::string::_M_dispose(v36); } std::string::_M_dispose(v34); } } v18 = (*(_DWORD *)(a2 + 40) - *(_DWORD *)(a2 + 36)) >> 6; night::NSCompileJs::compile[abi:cxx11](a2, a3[54]); if ( v30 ) { v38 = &v40; v39 = 0; v40 = 0; if ( std::string::find((int *)v37, "arguments", 0) != -1 ) { std::operator+((int)&v41, "arguments.", (int)&night::nsv_); v19 = std::string::append(&v41, "length=arguments.length;"); std::string::basic_string(&v43, v19); std::string::operator=(&v38, &v43); std::string::_M_dispose((void **)&v43); std::string::_M_dispose(&v41); std::string::operator+=((_DWORD *)this, (int)&v38); *(_DWORD *)(a2 + 48) += v39; } std::string::substr((void **)&v43, v37, 1u, 0xFFFFFFFF); std::string::operator+=((_DWORD *)this, (int)&v43); std::string::_M_dispose((void **)&v43); --*(_DWORD *)(a2 + 48); while ( v18 < (*(_DWORD *)(a2 + 40) - *(_DWORD *)(a2 + 36)) >> 6 ) { v20 = std::vector::at((_DWORD *)(a2 + 36), v18); v21 = v39 + *(_DWORD *)(v20 + 60) - 1; v22 = std::vector::at((_DWORD *)(a2 + 36), v18++); *(_DWORD *)(v22 + 60) = v21; } v23 = (void **)&v38; goto LABEL_29; } if ( std::string::find((int *)v37, "arguments", 0) != -1 ) { std::operator+((int)&v43, "{arguments.", (int)&night::nsv_); v24 = std::string::append(&v43, "length=arguments.length;"); std::string::basic_string(&v41, v24); std::string::_M_dispose((void **)&v43); std::string::operator+=((_DWORD *)this, (int)&v41); *(_DWORD *)(a2 + 48) += v42; std::string::substr((void **)&v43, v37, 1u, 0xFFFFFFFF); std::string::operator+=((_DWORD *)this, (int)&v43); std::string::_M_dispose((void **)&v43); --*(_DWORD *)(a2 + 48); while ( v18 < (*(_DWORD *)(a2 + 40) - *(_DWORD *)(a2 + 36)) >> 6 ) { v25 = std::vector::at((_DWORD *)(a2 + 36), v18); v26 = v42 + *(_DWORD *)(v25 + 60) - 1; v27 = std::vector::at((_DWORD *)(a2 + 36), v18++); *(_DWORD *)(v27 + 60) = v26; } v23 = &v41; LABEL_29: std::string::_M_dispose(v23); goto LABEL_31; } std::string::operator+=((_DWORD *)this, (int)v37); LABEL_31: if ( !v29 ) { std::string::operator+=((_DWORD *)this, ")"); ++*(_DWORD *)(a2 + 48); } std::string::_M_dispose(v37); return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040AC94) -------------------------------------------------------- void **__thiscall night::NSCompileJs::compile[abi:cxx11](void **this, int a2, _DWORD *a3) { _DWORD *v3; // eax char **v4; // ecx bool v5; // al void *v8[6]; // [esp+20h] [ebp-88h] BYREF char *v9; // [esp+38h] [ebp-70h] BYREF int v10; // [esp+3Ch] [ebp-6Ch] char v11; // [esp+40h] [ebp-68h] BYREF char *v12; // [esp+50h] [ebp-58h] BYREF int v13; // [esp+54h] [ebp-54h] char v14[16]; // [esp+58h] [ebp-50h] BYREF int v15; // [esp+68h] [ebp-40h] int v16; // [esp+6Ch] [ebp-3Ch] char *v17; // [esp+70h] [ebp-38h] BYREF int v18; // [esp+74h] [ebp-34h] char v19[16]; // [esp+78h] [ebp-30h] BYREF int v20; // [esp+88h] [ebp-20h] int v21; // [esp+8Ch] [ebp-1Ch] if ( !*(_DWORD *)(a2 + 4) ) { std::string::basic_string(v8, (int)a3); if ( !std::operator==((int)&night::NS_TYPE_SKIP, (int)v8) ) { if ( std::operator==((int)&night::NS_TYPE_NUM, (int)v8) ) goto LABEL_13; if ( std::operator==((int)&night::NS_TYPE_BOOL, (int)v8) ) { v14[0] = 0; v12 = v14; v17 = v19; v13 = 0; v15 = 0; v16 = 0; v18 = 0; v19[0] = 0; v20 = 0; v21 = 0; std::string::_M_assign((int)&v12, (int)(a3 + 6)); v15 = a3[12]; v16 = a3[13]; std::string::_M_assign((int)&v17, (int)(a3 + 15)); v20 = a3[12]; v21 = *(_DWORD *)(a2 + 48); std::vector::push_back((char **)(a2 + 36), &v12); std::string::basic_string(&v9, (int)(a3 + 15)); *(_DWORD *)(a2 + 48) += v10; std::string::basic_string(this, &v9); std::string::_M_dispose((void **)&v9); night::ns_sourcemap::~ns_sourcemap((void **)&v12); LABEL_60: std::string::_M_dispose(v8); return this; } if ( std::operator==((int)&night::NS_TYPE_STR, (int)v8) ) { std::operator+(&v12, (int)(a3 + 27), (int)(a3 + 15)); v3 = std::string::append(&v12, (int)(a3 + 27)); std::string::basic_string(&v9, v3); std::string::_M_dispose((void **)&v12); *(_DWORD *)(a2 + 48) += v10; std::string::basic_string(this, &v9); LABEL_9: v4 = &v9; LABEL_10: std::string::_M_dispose((void **)v4); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_B_TYPE, (int)v8) || std::operator==((int)&night::NS_TYPE_PUNC, (int)v8) ) { LABEL_13: std::string::basic_string(&v12, (int)(a3 + 15)); *(_DWORD *)(a2 + 48) += v13; std::string::basic_string(this, &v12); v4 = &v12; goto LABEL_10; } if ( std::operator==((int)&night::NS_TYPE_KW, (int)v8) ) { v11 = 0; v9 = &v11; v10 = 0; if ( std::operator==("this", (int)(a3 + 15)) ) { std::string::operator=((unsigned int *)&v9, "(this.constructor===Window?{}:this)"); ++*(_DWORD *)(a2 + 48); } else { std::string::_M_assign((int)&v9, (int)(a3 + 15)); } v14[0] = 0; v12 = v14; v17 = v19; v13 = 0; v15 = 0; v16 = 0; v18 = 0; v19[0] = 0; v20 = 0; v21 = 0; std::string::_M_assign((int)&v12, (int)(a3 + 6)); v15 = a3[12]; v16 = a3[13]; std::string::_M_assign((int)&v17, (int)(a3 + 15)); v20 = a3[12]; v21 = *(_DWORD *)(a2 + 48); std::vector::push_back((char **)(a2 + 36), &v12); v5 = std::operator==("this", (int)(a3 + 15)); *(_DWORD *)(a2 + 48) = !v5 + v10 + *(_DWORD *)(a2 + 48) - 1; std::string::basic_string(this, &v9); night::ns_sourcemap::~ns_sourcemap((void **)&v12); goto LABEL_9; } if ( std::operator==((int)&night::NS_TYPE_VAR, (int)v8) ) { night::NSCompileJs::compile_var[abi:cxx11](this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_K_V, (int)v8) ) { night::NSCompileJs::compile_k_v[abi:cxx11]((int)this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_IF, (int)v8) ) { night::NSCompileJs::compile_if[abi:cxx11]((int)this, a2, a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_FOR, (int)v8) ) { night::NSCompileJs::compile_for[abi:cxx11](this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_WHILE, (int)v8) ) { night::NSCompileJs::compile_while[abi:cxx11]((int)this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_DO_WHILE, (int)v8) ) { night::NSCompileJs::compile_do_while[abi:cxx11]((int)this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_SWITCH, (int)v8) ) { night::NSCompileJs::compile_switch[abi:cxx11]((int)this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_OBJ_SELF_OP, (int)v8) ) { night::NSCompileJs::compile_obj_self_op[abi:cxx11]((int)this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_OBJ_PROPERTY, (int)v8) ) { night::NSCompileJs::compile_obj_property[abi:cxx11]((int)this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_OBJ_DOT, (int)v8) ) { night::NSCompileJs::compile_obj_dot[abi:cxx11]((int)this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_OP_SELF, (int)v8) ) { night::NSCompileJs::compile_op_self[abi:cxx11]((int)this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_TERNARY, (int)v8) ) { night::NSCompileJs::compile_ternary[abi:cxx11]((int)this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_BINARY, (int)v8) || std::operator==((int)&night::NS_TYPE_ASSIGN, (int)v8) ) { night::NSCompileJs::compile_binary[abi:cxx11](this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_FUNC, (int)v8) ) { night::NSCompileJs::compile_function[abi:cxx11]((int)this, a2, a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_CALL, (int)v8) ) { night::NSCompileJs::compile_call[abi:cxx11]((int)this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_PROG, (int)v8) ) { night::NSCompileJs::compile_prog[abi:cxx11]((int)this, a2, (int)a3); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_PROG_NO_SEM, (int)v8) || std::operator==((int)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, (int)v8) || std::operator==((int)&night::NS_TYPE_OBJ_BLOCK, (int)v8) || std::operator==((int)&night::NS_TYPE_ARRAY, (int)v8) || std::operator==((int)&night::NS_TYPE_BRACKET, (int)v8) ) { night::NSCompileJs::compile_prog_no_sem[abi:cxx11]((int)this, a2, (int)a3); goto LABEL_60; } std::string::_M_assign(a2, (int)a3); } std::string::basic_string(this, (char *)off_51B9E4); goto LABEL_60; } std::string::basic_string(this, (char *)off_51B9E4); return this; } //----- (0040B370) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_k_v[abi:cxx11](int this, int a2, int a3) { int v4; // eax _DWORD *v5; // eax int v6; // eax _DWORD *v7; // eax void *v9[6]; // [esp+10h] [ebp-48h] BYREF void *v10[12]; // [esp+28h] [ebp-30h] BYREF *(_DWORD *)this = this + 8; *(_BYTE *)(this + 8) = 0; v4 = *(_DWORD *)(a3 + 188); *(_DWORD *)(this + 4) = 0; night::NSCompileJs::compile[abi:cxx11](a2, v4); v5 = std::string::append(v9, ":"); std::string::basic_string(v10, v5); std::string::operator=((_DWORD *)this, v10); std::string::_M_dispose(v10); std::string::_M_dispose(v9); v6 = *(_DWORD *)(a3 + 192); ++*(_DWORD *)(a2 + 48); night::NSCompileJs::compile[abi:cxx11](a2, v6); v7 = std::string::append(v9, ","); std::string::basic_string(v10, v7); std::string::operator+=((_DWORD *)this, (int)v10); std::string::_M_dispose(v10); std::string::_M_dispose(v9); ++*(_DWORD *)(a2 + 48); return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040B470) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_if[abi:cxx11](int this, int a2, _DWORD *a3) { int v4; // eax void *v6[6]; // [esp+10h] [ebp-48h] BYREF void *v7[12]; // [esp+28h] [ebp-30h] BYREF *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 0; std::string::operator+=((_DWORD *)this, "if "); v4 = a3[51]; *(_DWORD *)(a2 + 48) += 3; night::NSCompileJs::compile[abi:cxx11](a2, v4); std::string::operator+=((_DWORD *)this, (int)v7); std::string::_M_dispose(v7); night::NSCompileJs::compile[abi:cxx11](a2, a3[52]); std::string::operator+=((_DWORD *)this, (int)v7); std::string::_M_dispose(v7); std::string::operator+=((_DWORD *)this, (int)(a3 + 27)); *(_DWORD *)(a2 + 48) += a3[28]; if ( a3[53] ) { std::string::basic_string(v6, " else "); std::string::operator+=((_DWORD *)this, (int)v6); *(_DWORD *)(a2 + 48) += v6[1]; night::NSCompileJs::compile[abi:cxx11](a2, a3[53]); std::string::operator+=((_DWORD *)this, (int)v7); std::string::_M_dispose(v7); std::string::_M_dispose(v6); } return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040B5B6) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_for[abi:cxx11](_DWORD *this, int a2, int a3) { _DWORD *v3; // ecx _DWORD *exception; // ebx _DWORD *v5; // eax _DWORD *v6; // eax _DWORD *v7; // eax _DWORD *v8; // eax _DWORD *v9; // eax int v10; // eax void *v13[2]; // [esp+20h] [ebp-78h] BYREF char v14; // [esp+28h] [ebp-70h] BYREF void *v15[6]; // [esp+38h] [ebp-60h] BYREF void *v16[6]; // [esp+50h] [ebp-48h] BYREF void *v17[12]; // [esp+68h] [ebp-30h] BYREF v13[0] = &v14; v13[1] = 0; v14 = 0; std::string::basic_string(v15, "for("); std::string::operator+=(v13, (int)v15); v3 = *(_DWORD **)(a3 + 228); *(_DWORD *)(a2 + 48) += v15[1]; if ( v3[1] - *v3 != 12 ) { std::string::basic_string(v17, "error : sys error for compile_for"); exception = __cxa_allocate_exception(0x18u); std::string::basic_string(exception, v17); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::string, (void (__cdecl *)(void *))std::string::~string); } v5 = (_DWORD *)std::vector::at(v3, 0); night::NSCompileJs::compile[abi:cxx11](a2, *v5); v6 = std::string::append(v16, ";"); std::string::basic_string(v17, v6); std::string::operator+=(v13, (int)v17); std::string::_M_dispose(v17); std::string::_M_dispose(v16); ++*(_DWORD *)(a2 + 48); v7 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 228), 1u); night::NSCompileJs::compile[abi:cxx11](a2, *v7); v8 = std::string::append(v16, ";"); std::string::basic_string(v17, v8); std::string::operator+=(v13, (int)v17); std::string::_M_dispose(v17); std::string::_M_dispose(v16); ++*(_DWORD *)(a2 + 48); v9 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 228), 2u); night::NSCompileJs::compile[abi:cxx11](a2, *v9); std::string::operator+=(v13, (int)v17); std::string::_M_dispose(v17); std::string::operator+=(v13, ")"); v10 = *(_DWORD *)(a3 + 216); ++*(_DWORD *)(a2 + 48); night::NSCompileJs::compile[abi:cxx11](a2, v10); std::string::operator+=(v13, (int)v17); std::string::_M_dispose(v17); std::string::basic_string(this, v13); std::string::_M_dispose(v15); std::string::_M_dispose(v13); return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); // 534198: using guessed type int *`typeinfo for'std::string; //----- (0040B7FA) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_while[abi:cxx11](int this, int a2, int a3) { int v4; // eax void *v6[6]; // [esp+10h] [ebp-48h] BYREF void *v7[12]; // [esp+28h] [ebp-30h] BYREF *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 0; std::string::basic_string(v6, "while("); std::string::operator+=((_DWORD *)this, (int)v6); *(_DWORD *)(a2 + 48) += v6[1]; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 204)); std::string::operator+=((_DWORD *)this, (int)v7); std::string::_M_dispose(v7); std::string::operator+=((_DWORD *)this, ")"); v4 = *(_DWORD *)(a3 + 216); ++*(_DWORD *)(a2 + 48); night::NSCompileJs::compile[abi:cxx11](a2, v4); std::string::operator+=((_DWORD *)this, (int)v7); std::string::_M_dispose(v7); std::string::_M_dispose(v6); return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040B8EA) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_do_while[abi:cxx11](int this, int a2, int a3) { void *v5[6]; // [esp+18h] [ebp-60h] BYREF void *v6[6]; // [esp+30h] [ebp-48h] BYREF void *v7[12]; // [esp+48h] [ebp-30h] BYREF *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 0; std::string::basic_string(v5, "do"); std::string::operator+=((_DWORD *)this, (int)v5); *(_DWORD *)(a2 + 48) += v5[1]; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 216)); std::string::operator+=((_DWORD *)this, (int)v7); std::string::_M_dispose(v7); std::string::basic_string(v6, "while("); std::string::operator+=((_DWORD *)this, (int)v6); *(_DWORD *)(a2 + 48) += v6[1]; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 204)); std::string::operator+=((_DWORD *)this, (int)v7); std::string::_M_dispose(v7); std::string::basic_string(v7, ");"); std::string::operator+=((_DWORD *)this, (int)v7); *(_DWORD *)(a2 + 48) += v7[1]; std::string::_M_dispose(v7); std::string::_M_dispose(v6); std::string::_M_dispose(v5); return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040BA36) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_switch[abi:cxx11](int this, int a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // eax _DWORD *v5; // eax unsigned int v6; // esi int v7; // eax _DWORD **v8; // eax _DWORD *v9; // eax _DWORD *v10; // eax unsigned int v11; // esi _DWORD *v12; // eax _DWORD *v13; // eax unsigned int i; // [esp+18h] [ebp-80h] void *v17[6]; // [esp+20h] [ebp-78h] BYREF void *v18[6]; // [esp+38h] [ebp-60h] BYREF void *v19[6]; // [esp+50h] [ebp-48h] BYREF void *v20[12]; // [esp+68h] [ebp-30h] BYREF *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 0; std::string::basic_string(v17, "switch("); std::string::operator+=((_DWORD *)this, (int)v17); *(_DWORD *)(a2 + 48) += v17[1]; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 204)); v3 = std::string::append(v19, "){"); std::string::basic_string(v20, v3); std::string::operator+=((_DWORD *)this, (int)v20); std::string::_M_dispose(v20); std::string::_M_dispose(v19); *(_DWORD *)(a2 + 48) += 2; for ( i = 0; i < (*(_DWORD *)(*(_DWORD *)(a3 + 232) + 4) - **(_DWORD **)(a3 + 232)) >> 2; ++i ) { std::string::basic_string(v18, "case "); std::string::operator+=((_DWORD *)this, (int)v18); *(_DWORD *)(a2 + 48) += v18[1]; v4 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 232), i); night::NSCompileJs::compile[abi:cxx11](a2, *v4); v5 = std::string::append(v19, ":"); std::string::basic_string(v20, v5); std::string::operator+=((_DWORD *)this, (int)v20); v6 = 0; std::string::_M_dispose(v20); std::string::_M_dispose(v19); ++*(_DWORD *)(a2 + 48); while ( 1 ) { v7 = std::vector>>::at(*(_DWORD **)(a3 + 236), i); if ( v6 >= (*(_DWORD *)(*(_DWORD *)v7 + 4) - **(_DWORD **)v7) >> 2 ) break; v8 = (_DWORD **)std::vector>>::at( *(_DWORD **)(a3 + 236), i); v9 = (_DWORD *)std::vector::at(*v8, v6); night::NSCompileJs::compile[abi:cxx11](a2, *v9); v10 = std::string::append(v19, ";"); std::string::basic_string(v20, v10); std::string::operator+=((_DWORD *)this, (int)v20); ++v6; std::string::_M_dispose(v20); std::string::_M_dispose(v19); ++*(_DWORD *)(a2 + 48); } std::string::_M_dispose(v18); } v11 = 0; while ( v11 < (*(_DWORD *)(*(_DWORD *)(a3 + 240) + 4) - **(_DWORD **)(a3 + 240)) >> 2 ) { if ( !v11 ) { std::string::basic_string(v20, "default:"); std::string::operator+=((_DWORD *)this, (int)v20); *(_DWORD *)(a2 + 48) += v20[1]; std::string::_M_dispose(v20); } v12 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 240), v11); night::NSCompileJs::compile[abi:cxx11](a2, *v12); v13 = std::string::append(v19, ";"); std::string::basic_string(v20, v13); std::string::operator+=((_DWORD *)this, (int)v20); ++v11; std::string::_M_dispose(v20); std::string::_M_dispose(v19); ++*(_DWORD *)(a2 + 48); } std::string::operator+=((_DWORD *)this, "}"); ++*(_DWORD *)(a2 + 48); std::string::_M_dispose(v17); return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040BD62) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_obj_self_op[abi:cxx11](int this, int a2, int a3) { bool v4; // zf _DWORD *v5; // eax void *v7[6]; // [esp+20h] [ebp-48h] BYREF void *v8[12]; // [esp+38h] [ebp-30h] BYREF *(_DWORD *)this = this + 8; *(_BYTE *)(this + 8) = 0; v4 = *(_BYTE *)(a3 + 200) == 0; *(_DWORD *)(this + 4) = 0; if ( v4 ) { night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); v5 = std::string::append(v7, a3 + 156); std::string::basic_string(v8, v5); std::string::operator+=((_DWORD *)this, (int)v8); std::string::_M_dispose(v8); std::string::_M_dispose(v7); *(_DWORD *)(a2 + 48) += *(_DWORD *)(a3 + 160); } else { std::string::operator+=((_DWORD *)this, a3 + 156); *(_DWORD *)(a2 + 48) += *(_DWORD *)(a3 + 160); night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); std::string::operator+=((_DWORD *)this, (int)v8); std::string::_M_dispose(v8); } return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040BE74) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_obj_property[abi:cxx11](int this, int a2, int a3) { unsigned int *v3; // eax int v4; // eax int *v5; // eax _DWORD *v6; // eax _DWORD *v7; // eax void **v8; // ecx int *v9; // eax _DWORD *v10; // eax _DWORD *v11; // eax _DWORD *v12; // eax _DWORD *v13; // eax _DWORD *v14; // eax _DWORD *v15; // eax _DWORD *v16; // eax _DWORD *v17; // eax _DWORD *v18; // eax _DWORD *v19; // eax _DWORD *v20; // eax _DWORD *v21; // eax _DWORD *v22; // eax _DWORD *v23; // eax unsigned int i; // [esp+18h] [ebp-160h] void *v27[6]; // [esp+28h] [ebp-150h] BYREF int v28; // [esp+40h] [ebp-138h] BYREF int v29; // [esp+44h] [ebp-134h] void *v30[6]; // [esp+58h] [ebp-120h] BYREF void *v31[6]; // [esp+70h] [ebp-108h] BYREF void *v32[6]; // [esp+88h] [ebp-F0h] BYREF void *v33[6]; // [esp+A0h] [ebp-D8h] BYREF void *v34[6]; // [esp+B8h] [ebp-C0h] BYREF void *v35[6]; // [esp+D0h] [ebp-A8h] BYREF void *v36[6]; // [esp+E8h] [ebp-90h] BYREF void *v37[6]; // [esp+100h] [ebp-78h] BYREF void *v38[6]; // [esp+118h] [ebp-60h] BYREF void *v39[6]; // [esp+130h] [ebp-48h] BYREF void *v40[12]; // [esp+148h] [ebp-30h] BYREF std::to_string(v40, *(_DWORD *)(a2 + 32)); v3 = std::string::insert((unsigned int *)v40, 0, (int)&night::nst_); std::string::basic_string(v27, v3); std::string::_M_dispose(v40); ++*(_DWORD *)(a2 + 32); *(_DWORD *)this = this + 8; *(_BYTE *)(this + 8) = 0; v4 = *(_DWORD *)(a3 + 192); *(_DWORD *)(this + 4) = 0; night::NSCompileJs::compile[abi:cxx11](a2, v4); std::string::operator+=((_DWORD *)this, (int)v40); std::string::_M_dispose(v40); for ( i = 0; i < (*(_DWORD *)(*(_DWORD *)(a3 + 196) + 4) - **(_DWORD **)(a3 + 196)) >> 2; ++i ) { std::string::operator+=((_DWORD *)this, "[("); *(_DWORD *)(a2 + 48) += 2; v5 = (int *)std::vector::at(*(_DWORD **)(a3 + 196), i); if ( std::operator==((int)&night::NS_TYPE_STR, *v5) ) { std::operator+((int)v40, "\"", (int)&night::nsv_); v6 = std::string::append(v40, "\"+"); std::string::basic_string(v39, v6); std::string::_M_dispose(v40); std::string::operator+=((_DWORD *)this, (int)v39); *(_DWORD *)(a2 + 48) += v39[1]; v7 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), i); night::NSCompileJs::compile[abi:cxx11](a2, *v7); std::string::operator+=((_DWORD *)this, (int)v40); std::string::_M_dispose(v40); v8 = v39; } else { v9 = (int *)std::vector::at(*(_DWORD **)(a3 + 196), i); if ( std::operator==((int)&night::NS_TYPE_NUM, *v9) ) { v10 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), i); night::NSCompileJs::compile[abi:cxx11](a2, *v10); std::string::operator+=((_DWORD *)this, (int)v40); v8 = v40; } else { std::operator+((int)v40, "(", (int)v27); v11 = std::string::append(v40, "=("); std::string::basic_string(&v28, v11); std::string::_M_dispose(v40); std::string::operator+=((_DWORD *)this, (int)&v28); *(_DWORD *)(a2 + 48) += v29; v12 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), i); night::NSCompileJs::compile[abi:cxx11](a2, *v12); v13 = std::string::append(v39, "),"); std::string::basic_string(v40, v13); std::string::operator+=((_DWORD *)this, (int)v40); std::string::_M_dispose(v40); std::string::_M_dispose(v39); *(_DWORD *)(a2 + 48) += 2; std::operator+((int)v30, "null==", (int)v27); v14 = std::string::append(v30, "?undefined:"); std::string::basic_string(v31, v14); v15 = std::string::append(v31, "'number'=== typeof "); std::string::basic_string(v32, v15); v16 = std::string::append(v32, (int)v27); std::string::basic_string(v33, v16); v17 = std::string::append(v33, "?"); std::string::basic_string(v34, v17); v18 = std::string::append(v34, (int)v27); std::string::basic_string(v35, v18); v19 = std::string::append(v35, ":\""); std::string::basic_string(v36, v19); v20 = std::string::append(v36, (int)&night::nsv_); std::string::basic_string(v37, v20); v21 = std::string::append(v37, "\"+"); std::string::basic_string(v38, v21); v22 = std::string::append(v38, (int)v27); std::string::basic_string(v39, v22); v23 = std::string::append(v39, ")"); std::string::basic_string(v40, v23); std::string::operator=(&v28, v40); std::string::_M_dispose(v40); std::string::_M_dispose(v39); std::string::_M_dispose(v38); std::string::_M_dispose(v37); std::string::_M_dispose(v36); std::string::_M_dispose(v35); std::string::_M_dispose(v34); std::string::_M_dispose(v33); std::string::_M_dispose(v32); std::string::_M_dispose(v31); std::string::_M_dispose(v30); std::string::operator+=((_DWORD *)this, (int)&v28); v8 = (void **)&v28; *(_DWORD *)(a2 + 48) += v29; } } std::string::_M_dispose(v8); std::string::operator+=((_DWORD *)this, ")]"); *(_DWORD *)(a2 + 48) += 2; } std::string::_M_dispose(v27); return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040C4A4) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_obj_dot[abi:cxx11](int this, int a2, int a3) { int v4; // eax unsigned int v5; // esi _DWORD *v6; // ecx _DWORD *v7; // eax void *v9[12]; // [esp+18h] [ebp-30h] BYREF *(_DWORD *)this = this + 8; *(_BYTE *)(this + 8) = 0; v4 = *(_DWORD *)(a3 + 192); *(_DWORD *)(this + 4) = 0; night::NSCompileJs::compile[abi:cxx11](a2, v4); std::string::operator+=((_DWORD *)this, (int)v9); v5 = 0; std::string::_M_dispose(v9); while ( v5 < (*(_DWORD *)(*(_DWORD *)(a3 + 196) + 4) - **(_DWORD **)(a3 + 196)) >> 2 ) { std::string::operator+=((_DWORD *)this, "."); v6 = *(_DWORD **)(a3 + 196); ++*(_DWORD *)(a2 + 48); v7 = (_DWORD *)std::vector::at(v6, v5); night::NSCompileJs::compile[abi:cxx11](a2, *v7); std::string::operator+=((_DWORD *)this, (int)v9); ++v5; std::string::_M_dispose(v9); } return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040C58E) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_op_self[abi:cxx11](int this, int a2, int a3) { void *v5[12]; // [esp+18h] [ebp-30h] BYREF *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 0; std::string::operator+=((_DWORD *)this, a3 + 156); *(_DWORD *)(a2 + 48) += *(_DWORD *)(a3 + 160); night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); std::string::operator+=((_DWORD *)this, (int)v5); std::string::_M_dispose(v5); return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040C61E) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_ternary[abi:cxx11](int this, int a2, int a3) { int v4; // eax _DWORD *v5; // eax int v6; // eax void *v8[6]; // [esp+10h] [ebp-48h] BYREF void *v9[12]; // [esp+28h] [ebp-30h] BYREF *(_DWORD *)this = this + 8; *(_BYTE *)(this + 8) = 0; v4 = *(_DWORD *)(a3 + 180); *(_DWORD *)(this + 4) = 0; night::NSCompileJs::compile[abi:cxx11](a2, v4); v5 = std::string::append(v8, ":"); std::string::basic_string(v9, v5); std::string::operator+=((_DWORD *)this, (int)v9); std::string::_M_dispose(v9); std::string::_M_dispose(v8); v6 = *(_DWORD *)(a3 + 184); ++*(_DWORD *)(a2 + 48); night::NSCompileJs::compile[abi:cxx11](a2, v6); std::string::operator+=((_DWORD *)this, (int)v9); std::string::_M_dispose(v9); return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040C6FA) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_binary[abi:cxx11](_DWORD *this, int a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // eax void *v7[6]; // [esp+20h] [ebp-78h] BYREF void *v8[6]; // [esp+38h] [ebp-60h] BYREF void *v9[6]; // [esp+50h] [ebp-48h] BYREF void *v10[12]; // [esp+68h] [ebp-30h] BYREF night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 180)); std::operator+((int)v10, (char *)asc_51BF80, a3 + 156); v3 = std::string::append(v10, (char *)asc_51BF80); std::string::basic_string(v8, v3); std::string::_M_dispose(v10); *(_DWORD *)(a2 + 48) += v8[1]; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 184)); std::operator+(v10, (int)v7, (int)v8); v4 = std::string::append(v10, (int)v9); std::string::basic_string(this, v4); std::string::_M_dispose(v10); std::string::_M_dispose(v9); std::string::_M_dispose(v8); std::string::_M_dispose(v7); return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040C818) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_assign[abi:cxx11](_DWORD *this, int a2, int a3) { night::NSCompileJs::compile_binary[abi:cxx11](this, a2, a3); return this; } //----- (0040C83C) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_call[abi:cxx11](int this, int a2, int a3) { int v3; // eax unsigned int v4; // edi _DWORD *v5; // ecx int v6; // eax int v7; // eax _DWORD **v8; // eax int *v9; // eax _DWORD **v10; // eax _DWORD *v11; // eax int v12; // eax int v13; // eax int v14; // eax _DWORD **v15; // eax _DWORD *v16; // eax int v17; // eax unsigned int v19; // [esp+14h] [ebp-44h] unsigned int v20; // [esp+14h] [ebp-44h] unsigned int v21; // [esp+18h] [ebp-40h] unsigned int v22; // [esp+18h] [ebp-40h] void *v24[12]; // [esp+28h] [ebp-30h] BYREF *(_DWORD *)this = this + 8; *(_BYTE *)(this + 8) = 0; v3 = *(_DWORD *)(a3 + 220); *(_DWORD *)(this + 4) = 0; night::NSCompileJs::compile[abi:cxx11](a2, v3); std::string::operator=((_DWORD *)this, v24); v4 = 0; std::string::_M_dispose(v24); if ( std::operator==("return", *(_DWORD *)(a3 + 220) + 60) ) { while ( 1 ) { v5 = *(_DWORD **)(a3 + 224); if ( v4 >= (v5[1] - *v5) >> 2 ) break; v6 = std::vector>>::at(v5, v4); if ( **(_DWORD **)v6 != *(_DWORD *)(*(_DWORD *)v6 + 4) ) { v7 = std::vector>>::at(*(_DWORD **)(a3 + 224), v4); if ( *(_DWORD *)(*(_DWORD *)v7 + 4) - **(_DWORD **)v7 != 4 || (v8 = (_DWORD **)std::vector>>::at( *(_DWORD **)(a3 + 224), v4), v9 = (int *)std::vector::at(*v8, 0), !std::operator==((int)&night::NS_TYPE_SKIP, *v9)) ) { std::string::operator+=((_DWORD *)this, "("); v21 = 0; ++*(_DWORD *)(a2 + 48); while ( 1 ) { v13 = std::vector>>::at( *(_DWORD **)(a3 + 224), v4); if ( v21 >= (*(_DWORD *)(*(_DWORD *)v13 + 4) - **(_DWORD **)v13) >> 2 ) break; v10 = (_DWORD **)std::vector>>::at( *(_DWORD **)(a3 + 224), v4); v11 = (_DWORD *)std::vector::at(*v10, v21); night::NSCompileJs::compile[abi:cxx11](a2, *v11); std::string::operator+=((_DWORD *)this, (int)v24); std::string::_M_dispose(v24); v19 = v21 + 1; v12 = std::vector>>::at( *(_DWORD **)(a3 + 224), v4); v21 = (*(_DWORD *)(*(_DWORD *)v12 + 4) - **(_DWORD **)v12) >> 2; if ( v19 != v21 ) { std::string::operator+=((_DWORD *)this, ","); ++*(_DWORD *)(a2 + 48); v21 = v19; } } std::string::operator+=((_DWORD *)this, ")"); ++*(_DWORD *)(a2 + 48); } } ++v4; } } else { while ( v4 < (*(_DWORD *)(*(_DWORD *)(a3 + 224) + 4) - **(_DWORD **)(a3 + 224)) >> 2 ) { std::string::operator+=((_DWORD *)this, "("); ++*(_DWORD *)(a2 + 48); v22 = 0; while ( 1 ) { v14 = std::vector>>::at(*(_DWORD **)(a3 + 224), v4); if ( v22 >= (*(_DWORD *)(*(_DWORD *)v14 + 4) - **(_DWORD **)v14) >> 2 ) break; v15 = (_DWORD **)std::vector>>::at( *(_DWORD **)(a3 + 224), v4); v16 = (_DWORD *)std::vector::at(*v15, v22); night::NSCompileJs::compile[abi:cxx11](a2, *v16); std::string::operator+=((_DWORD *)this, (int)v24); std::string::_M_dispose(v24); v20 = v22 + 1; v17 = std::vector>>::at(*(_DWORD **)(a3 + 224), v4); v22 = (*(_DWORD *)(*(_DWORD *)v17 + 4) - **(_DWORD **)v17) >> 2; if ( v20 != v22 ) { std::string::operator+=((_DWORD *)this, ","); ++*(_DWORD *)(a2 + 48); v22 = v20; } } std::string::operator+=((_DWORD *)this, ")"); ++v4; ++*(_DWORD *)(a2 + 48); } } return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040CB3A) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_prog[abi:cxx11](int this, int a2, int a3) { unsigned int v4; // esi _DWORD *v5; // eax _DWORD *v6; // ecx unsigned int v8; // [esp+1Ch] [ebp-4Ch] void *v9; // [esp+20h] [ebp-48h] BYREF int v10; // [esp+24h] [ebp-44h] void *v11[12]; // [esp+38h] [ebp-30h] BYREF std::string::basic_string(&v9, a3 + 108); if ( !v10 ) std::string::operator=((unsigned int *)&v9, ";"); *(_DWORD *)(this + 4) = 0; v4 = 0; *(_DWORD *)this = this + 8; *(_BYTE *)(this + 8) = 0; while ( 1 ) { v6 = *(_DWORD **)(a3 + 228); if ( v4 >= (v6[1] - *v6) >> 2 ) break; v5 = (_DWORD *)std::vector::at(v6, v4); night::NSCompileJs::compile[abi:cxx11](a2, *v5); std::string::operator+=((_DWORD *)this, (int)v11); std::string::_M_dispose(v11); v8 = v4 + 1; v4 = (*(_DWORD *)(*(_DWORD *)(a3 + 228) + 4) - **(_DWORD **)(a3 + 228)) >> 2; if ( v8 != v4 ) { std::string::operator+=((_DWORD *)this, (int)&v9); v4 = v8; *(_DWORD *)(a2 + 48) += v10; } } std::string::_M_dispose(&v9); return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040CC3E) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_prog_no_sem[abi:cxx11](int this, int a2, int a3) { unsigned int i; // edi _DWORD *v5; // ecx _DWORD *v6; // eax void *v8[12]; // [esp+18h] [ebp-30h] BYREF *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 0; if ( std::operator==((int)&night::NS_TYPE_OBJ_BLOCK, a3) ) { std::string::operator+=((_DWORD *)this, "("); ++*(_DWORD *)(a2 + 48); } for ( i = 0; ; ++i ) { v5 = *(_DWORD **)(a3 + 228); if ( i >= (v5[1] - *v5) >> 2 ) break; v6 = (_DWORD *)std::vector::at(v5, i); night::NSCompileJs::compile[abi:cxx11](a2, *v6); std::string::operator+=((_DWORD *)this, (int)v8); std::string::_M_dispose(v8); } if ( std::operator==((int)&night::NS_TYPE_OBJ_BLOCK, a3) ) { std::string::operator+=((_DWORD *)this, ")"); ++*(_DWORD *)(a2 + 48); } return this; } // 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0040CD26) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_once(_DWORD *this, int a2, unsigned int *a3, int a4, char a5) { const char **v5; // ebx void *v8[12]; // [esp+28h] [ebp-30h] BYREF *(_DWORD *)(a2 + 28) = a4; std::string::operator=(a3, (char *)off_51B9E4); v5 = (const char **)night::NSASTParse::top_down(*(int **)(a2 + 24)); if ( a5 ) { night::ns_node::debug_no_space[abi:cxx11](v8, v5); printf("ast :%s\n", (const char *)v8[0]); std::string::_M_dispose(v8); } night::NSCompileJs::compile[abi:cxx11](v8, a2, v5); std::string::_M_assign((int)a3, (int)v8); std::string::basic_string(this, a2); std::string::_M_dispose(v8); return this; } //----- (0040CDD5) -------------------------------------------------------- int __cdecl night::compile_ns_no_wrapper(int a1, int a2, int a3, unsigned int *a4, char a5) { int v5; // esi int v6; // edx void *v8[3]; // [esp+1Ch] [ebp-12Ch] BYREF void **v9[3]; // [esp+28h] [ebp-120h] BYREF void *v10[6]; // [esp+34h] [ebp-114h] BYREF int v11[7]; // [esp+4Ch] [ebp-FCh] BYREF int v12[5]; // [esp+68h] [ebp-E0h] BYREF void *v13[2]; // [esp+7Ch] [ebp-CCh] BYREF char v14; // [esp+84h] [ebp-C4h] BYREF void **v15; // [esp+94h] [ebp-B4h] int v16; // [esp+98h] [ebp-B0h] int v17; // [esp+9Ch] [ebp-ACh] int v18; // [esp+A0h] [ebp-A8h] int v19; // [esp+A4h] [ebp-A4h] int v20; // [esp+A8h] [ebp-A0h] int v21; // [esp+ACh] [ebp-9Ch] void *v22[15]; // [esp+B0h] [ebp-98h] BYREF void *v23[23]; // [esp+ECh] [ebp-5Ch] BYREF std::string::operator=(a4, (char *)off_51B9E4); memset(v8, 0, sizeof(v8)); night::NSStream::NSStream(v22, a1, a2, a3); v12[2] = (int)v12; v12[3] = (int)v12; v11[1] = (int)v22; v12[0] = 0; v12[1] = 0; v12[4] = 0; v11[0] = (int)v8; memset(&v11[2], 0, 16); std::string::basic_string(v13, a1); night::NSASTParse::NSASTParse((int)v23, (int)v13, (int)v11, (int)v8); std::string::_M_dispose(v13); v13[0] = &v14; v15 = v23; v13[1] = 0; v14 = 0; v18 = 0; v19 = 0; v20 = 0; v16 = 0; v17 = 0; v21 = 1; memset(v9, 0, sizeof(v9)); night::NSCompileJs::compile_once(v10, (int)v13, a4, (int)v9, a5); night::NSGod::hamlet(v8); v5 = 0; if ( v10[1] ) { std::string::_M_assign((int)a4, (int)v10); v5 = 121; } std::string::_M_dispose(v10); std::vector::~vector(v9); night::NSCompileJs::~NSCompileJs((int)v13, v6); night::NSASTParse::~NSASTParse(v23); night::NSToken::~NSToken((int)v11); night::NSStream::~NSStream(v22); std::_Vector_base::~_Vector_base(v8); return v5; } // 40D09F: variable 'v6' is possibly undefined //----- (0040D0D7) -------------------------------------------------------- int __cdecl night::compile_ns(int a1, int a2, int a3, int a4, unsigned int *a5, char a6) { int v6; // ebx _DWORD *v7; // eax _DWORD *v8; // eax _DWORD *v9; // eax _DWORD *v10; // eax _DWORD *v11; // eax _DWORD *v12; // eax _DWORD *v13; // eax int v14; // edx void *v16[3]; // [esp+1Ch] [ebp-1BCh] BYREF void **v17[3]; // [esp+28h] [ebp-1B0h] BYREF void *v18[2]; // [esp+34h] [ebp-1A4h] BYREF char v19; // [esp+3Ch] [ebp-19Ch] BYREF void *v20[6]; // [esp+4Ch] [ebp-18Ch] BYREF void *v21[6]; // [esp+64h] [ebp-174h] BYREF void *v22[6]; // [esp+7Ch] [ebp-15Ch] BYREF void *v23[6]; // [esp+94h] [ebp-144h] BYREF void *v24[6]; // [esp+ACh] [ebp-12Ch] BYREF void *v25[6]; // [esp+C4h] [ebp-114h] BYREF int v26[7]; // [esp+DCh] [ebp-FCh] BYREF int v27[5]; // [esp+F8h] [ebp-E0h] BYREF void *v28[2]; // [esp+10Ch] [ebp-CCh] BYREF char v29; // [esp+114h] [ebp-C4h] BYREF void **v30; // [esp+124h] [ebp-B4h] int v31; // [esp+128h] [ebp-B0h] int v32; // [esp+12Ch] [ebp-ACh] int v33; // [esp+130h] [ebp-A8h] int v34; // [esp+134h] [ebp-A4h] int v35; // [esp+138h] [ebp-A0h] int v36; // [esp+13Ch] [ebp-9Ch] void *v37[15]; // [esp+140h] [ebp-98h] BYREF void *v38[23]; // [esp+17Ch] [ebp-5Ch] BYREF std::string::operator=(a5, (char *)off_51B9E4); memset(v16, 0, sizeof(v16)); night::NSStream::NSStream(v37, a1, a3, a4); v26[1] = (int)v37; v27[0] = 0; v27[1] = 0; v27[2] = (int)v27; v27[3] = (int)v27; v27[4] = 0; v26[0] = (int)v16; memset(&v26[2], 0, 16); std::string::basic_string(v28, a1); night::NSASTParse::NSASTParse((int)v38, (int)v28, (int)v26, (int)v16); std::string::_M_dispose(v28); v28[0] = &v29; v30 = v38; v18[0] = &v19; v28[1] = 0; v29 = 0; v33 = 0; v34 = 0; v35 = 0; v31 = 0; v32 = 0; v36 = 1; v18[1] = 0; v19 = 0; memset(v17, 0, sizeof(v17)); night::NSCompileJs::compile_once(v20, (int)v28, (unsigned int *)v18, (int)v17, a6); night::NSGod::hamlet(v16); if ( v20[1] ) { std::string::_M_assign((int)a5, (int)v20); v6 = 121; } else { std::operator+((int)v23, ";return ", (int)&night::nsv_); v7 = std::string::append(v23, "module."); std::string::basic_string(v24, v7); v8 = std::string::append(v24, (int)&night::nsv_); std::string::basic_string(v25, v8); v9 = std::string::append(v25, "exports;"); std::string::basic_string(v21, v9); std::string::_M_dispose(v25); std::string::_M_dispose(v24); std::string::_M_dispose(v23); std::operator+((int)v24, "function ", a2); v10 = std::string::append(v24, "(){"); std::string::basic_string(v25, v10); std::string::operator=(a5, v25); std::string::_M_dispose(v25); std::string::_M_dispose(v24); std::operator+((int)v22, "var ", (int)&night::nsv_); v11 = std::string::append(v22, "module={"); std::string::basic_string(v23, v11); v12 = std::string::append(v23, (int)&night::nsv_); std::string::basic_string(v24, v12); v13 = std::string::append(v24, "exports:{}};"); std::string::basic_string(v25, v13); std::string::operator+=(a5, (int)v25); std::string::_M_dispose(v25); std::string::_M_dispose(v24); std::string::_M_dispose(v23); std::string::_M_dispose(v22); std::operator+(v25, (int)v18, (int)v21); std::string::operator+=(a5, (int)v25); std::string::_M_dispose(v25); std::string::operator+=(a5, "}"); v6 = 0; std::string::_M_dispose(v21); } std::string::_M_dispose(v20); std::vector::~vector(v17); std::string::_M_dispose(v18); night::NSCompileJs::~NSCompileJs((int)v28, v14); night::NSASTParse::~NSASTParse(v38); night::NSToken::~NSToken((int)v26); night::NSStream::~NSStream(v37); std::_Vector_base::~_Vector_base(v16); return v6; } // 40D64B: variable 'v14' is possibly undefined //----- (0040D683) -------------------------------------------------------- int __cdecl night::compile_ns_with_sourcemap(int *a1, int a2, int a3, int a4, int a5, unsigned int *a6, int a7) { int v7; // ebx _DWORD *v8; // eax _DWORD *v9; // eax _DWORD *v10; // eax _DWORD *v11; // eax _DWORD *v12; // eax _DWORD *v13; // eax _DWORD *v14; // eax int v15; // esi void **v16; // ebx _DWORD *v17; // edi void **v18; // esi int v19; // eax int v20; // edx int v21; // ecx int v22; // edx int v23; // ecx int v24; // eax int v25; // edx int v26; // ecx int v27; // edx int v28; // ecx int v29; // edx int v30; // edx void (__cdecl *v32)(void *); // [esp+4h] [ebp-204h] int v33; // [esp+28h] [ebp-1E0h] int v34; // [esp+2Ch] [ebp-1DCh] void **v35; // [esp+3Ch] [ebp-1CCh] BYREF void *v36[3]; // [esp+40h] [ebp-1C8h] BYREF void **v37[3]; // [esp+4Ch] [ebp-1BCh] BYREF void **v38; // [esp+58h] [ebp-1B0h] BYREF void **v39; // [esp+5Ch] [ebp-1ACh] int v40; // [esp+60h] [ebp-1A8h] void *v41[2]; // [esp+64h] [ebp-1A4h] BYREF char v42; // [esp+6Ch] [ebp-19Ch] BYREF void *v43[6]; // [esp+7Ch] [ebp-18Ch] BYREF void *v44[6]; // [esp+94h] [ebp-174h] BYREF void *v45; // [esp+ACh] [ebp-15Ch] BYREF int v46; // [esp+B0h] [ebp-158h] BYREF int v47; // [esp+B4h] [ebp-154h] int *v48; // [esp+B8h] [ebp-150h] int *v49; // [esp+BCh] [ebp-14Ch] int v50; // [esp+C0h] [ebp-148h] void *v51; // [esp+C4h] [ebp-144h] BYREF int v52; // [esp+C8h] [ebp-140h] BYREF int v53; // [esp+CCh] [ebp-13Ch] int *v54; // [esp+D0h] [ebp-138h] int *v55; // [esp+D4h] [ebp-134h] int v56; // [esp+D8h] [ebp-130h] void **v57; // [esp+DCh] [ebp-12Ch] BYREF int v58; // [esp+E0h] [ebp-128h] BYREF int v59; // [esp+E4h] [ebp-124h] int *v60; // [esp+E8h] [ebp-120h] int *v61; // [esp+ECh] [ebp-11Ch] int v62; // [esp+F0h] [ebp-118h] void *v63; // [esp+F4h] [ebp-114h] BYREF int v64; // [esp+F8h] [ebp-110h] BYREF int v65; // [esp+FCh] [ebp-10Ch] int *v66; // [esp+100h] [ebp-108h] int *v67; // [esp+104h] [ebp-104h] int v68; // [esp+108h] [ebp-100h] int v69[7]; // [esp+10Ch] [ebp-FCh] BYREF int v70[5]; // [esp+128h] [ebp-E0h] BYREF void *v71[2]; // [esp+13Ch] [ebp-CCh] BYREF char v72; // [esp+144h] [ebp-C4h] BYREF void **v73; // [esp+154h] [ebp-B4h] int v74; // [esp+158h] [ebp-B0h] int v75; // [esp+15Ch] [ebp-ACh] _DWORD *v76; // [esp+160h] [ebp-A8h] int v77; // [esp+164h] [ebp-A4h] int v78; // [esp+168h] [ebp-A0h] int v79; // [esp+16Ch] [ebp-9Ch] void *v80[15]; // [esp+170h] [ebp-98h] BYREF void *v81[23]; // [esp+1ACh] [ebp-5Ch] BYREF std::string::operator=(a6, (char *)off_51B9E4); memset(v36, 0, sizeof(v36)); night::NSStream::NSStream(v80, (int)a1, a4, a5); v70[2] = (int)v70; v70[3] = (int)v70; v69[1] = (int)v80; v70[0] = 0; v70[1] = 0; v70[4] = 0; v69[0] = (int)v36; memset(&v69[2], 0, 16); std::string::basic_string(v71, (int)a1); night::NSASTParse::NSASTParse((int)v81, (int)v71, (int)v69, (int)v36); std::string::_M_dispose(v71); v71[0] = &v72; v73 = v81; v41[0] = &v42; v71[1] = 0; v72 = 0; v76 = 0; v77 = 0; v78 = 0; v74 = 0; v75 = 0; v79 = 1; v41[1] = 0; v42 = 0; memset(v37, 0, sizeof(v37)); night::NSCompileJs::compile_once(v43, (int)v71, (unsigned int *)v41, (int)v37, 0); night::NSGod::hamlet(v36); if ( v43[1] ) { std::string::_M_assign((int)a6, (int)v43); v7 = 121; } else { std::operator+((int)&v51, ";return ", (int)&night::nsv_); v8 = std::string::append(&v51, "module."); std::string::basic_string(&v57, v8); v9 = std::string::append(&v57, (int)&night::nsv_); std::string::basic_string(&v63, v9); v10 = std::string::append(&v63, "exports;"); std::string::basic_string(v44, v10); std::string::_M_dispose(&v63); std::string::_M_dispose((void **)&v57); std::string::_M_dispose(&v51); std::operator+((int)&v57, "function ", a3); v11 = std::string::append(&v57, "(){"); std::string::basic_string(&v63, v11); std::string::operator=(a6, &v63); std::string::_M_dispose(&v63); std::string::_M_dispose((void **)&v57); std::operator+((int)&v45, "var ", (int)&night::nsv_); v12 = std::string::append(&v45, "module={"); std::string::basic_string(&v51, v12); v13 = std::string::append(&v51, (int)&night::nsv_); std::string::basic_string(&v57, v13); v14 = std::string::append(&v57, "exports:{}};"); std::string::basic_string(&v63, v14); std::string::operator+=(a6, (int)&v63); std::string::_M_dispose(&v63); std::string::_M_dispose((void **)&v57); std::string::_M_dispose(&v51); std::string::_M_dispose(&v45); v34 = a6[1]; std::operator+(&v63, (int)v41, (int)v44); std::string::operator+=(a6, (int)&v63); std::string::_M_dispose(&v63); std::string::operator+=(a6, "}"); std::operator+((int)&v63, "\n//# sourceMappingURL=", a2); std::string::operator+=(a6, (int)&v63); std::string::_M_dispose(&v63); v15 = v77 - (_DWORD)v76; v38 = 0; v39 = 0; v40 = 0; if ( (v77 - (int)v76) >> 6 ) { if ( (unsigned int)((v77 - (int)v76) >> 6) > 0x1FFFFFF ) std::__throw_bad_alloc(); v16 = (void **)operator new((struct type_info *)(v77 - (_DWORD)v76), v32); } else { v16 = 0; } v17 = v76; v38 = v16; v39 = v16; v33 = v77; v40 = (int)v16 + v15; v18 = v16; while ( (_DWORD *)v33 != v17 ) { night::ns_sourcemap::ns_sourcemap(v18, v17); v18 += 16; v17 += 16; } v39 = v18; v48 = &v46; v49 = &v46; v46 = 0; v47 = 0; v50 = 0; v52 = 0; v53 = 0; v54 = &v52; v55 = &v52; v56 = 0; night::NSToken::get_tokens_for_sourcemap(v69, &v45, &v51); v64 = 0; v65 = 0; v66 = &v64; v67 = &v64; v68 = 0; if ( v53 ) { v57 = &v63; v19 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( v53, (int)&v64, (int)&v57); v20 = v19; do { v21 = v20; v20 = *(_DWORD *)(v20 + 8); } while ( v20 ); v66 = (int *)v21; v22 = v19; do { v23 = v22; v22 = *(_DWORD *)(v22 + 12); } while ( v22 ); v67 = (int *)v23; v65 = v19; v68 = v56; } v58 = 0; v59 = 0; v60 = &v58; v61 = &v58; v62 = 0; if ( v47 ) { v35 = (void **)&v57; v24 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( v47, (int)&v58, (int)&v35); v25 = v24; do { v26 = v25; v25 = *(_DWORD *)(v25 + 8); } while ( v25 ); v60 = (int *)v26; v27 = v24; do { v28 = v27; v27 = *(_DWORD *)(v27 + 12); } while ( v27 ); v61 = (int *)v28; v59 = v24; v62 = v50; } night::sourcemap::gen_sourcemap_content(a1, &v57, &v63, &v38, v34, a7); v7 = 0; std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v57); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v63); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v51); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v45); std::vector::~vector(&v38, v29); std::string::_M_dispose(v44); } std::string::_M_dispose(v43); std::vector::~vector(v37); std::string::_M_dispose(v41); night::NSCompileJs::~NSCompileJs((int)v71, v30); night::NSASTParse::~NSASTParse(v81); night::NSToken::~NSToken((int)v69); night::NSStream::~NSStream(v80); std::_Vector_base::~_Vector_base(v36); return v7; } // 40DAF3: variable 'v32' is possibly undefined // 40DD8D: variable 'v29' is possibly undefined // 40DF7D: variable 'v30' is possibly undefined //----- (0040DFB8) -------------------------------------------------------- void __cdecl __tcf_0() { std::string::_M_dispose((void **)&night::nsv_); } //----- (0040DFC2) -------------------------------------------------------- void __cdecl __tcf_1_0() { std::string::_M_dispose((void **)&night::nst_); } //----- (0040DFCC) -------------------------------------------------------- void __cdecl __tcf_2_1() { std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); } //----- (0040DFD6) -------------------------------------------------------- void __cdecl __tcf_3_1() { std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); } //----- (0040DFE0) -------------------------------------------------------- void __cdecl __tcf_4_1() { std::string::_M_dispose((void **)&night::NS_TYPE_VAR); } //----- (0040DFEA) -------------------------------------------------------- void __cdecl __tcf_5_1() { std::string::_M_dispose((void **)&night::NS_TYPE_STR); } //----- (0040DFF4) -------------------------------------------------------- void __cdecl __tcf_6_1() { std::string::_M_dispose((void **)&night::NS_TYPE_NUM); } //----- (0040DFFE) -------------------------------------------------------- void __cdecl __tcf_7_1() { std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); } //----- (0040E008) -------------------------------------------------------- void __cdecl __tcf_8_1() { std::string::_M_dispose((void **)&night::NS_TYPE_KW); } //----- (0040E012) -------------------------------------------------------- void __cdecl __tcf_9_1() { std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); } //----- (0040E01C) -------------------------------------------------------- void __cdecl __tcf_10_1() { std::string::_M_dispose((void **)&night::NS_TYPE_OP); } //----- (0040E026) -------------------------------------------------------- void __cdecl __tcf_11_1() { std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); } //----- (0040E030) -------------------------------------------------------- void __cdecl __tcf_12_1() { std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); } //----- (0040E03A) -------------------------------------------------------- void __cdecl __tcf_13_1() { std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); } //----- (0040E044) -------------------------------------------------------- void __cdecl __tcf_14_1() { std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); } //----- (0040E04E) -------------------------------------------------------- void __cdecl __tcf_15_1() { std::string::_M_dispose((void **)&night::NS_TYPE_K_V); } //----- (0040E058) -------------------------------------------------------- void __cdecl __tcf_16_1() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); } //----- (0040E062) -------------------------------------------------------- void __cdecl __tcf_17_1() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); } //----- (0040E06C) -------------------------------------------------------- void __cdecl __tcf_18_1() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); } //----- (0040E076) -------------------------------------------------------- void __cdecl __tcf_19_1() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); } //----- (0040E080) -------------------------------------------------------- void __cdecl __tcf_20_1() { std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); } //----- (0040E08A) -------------------------------------------------------- void __cdecl __tcf_21_1() { std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); } //----- (0040E094) -------------------------------------------------------- void __cdecl __tcf_22_1() { std::string::_M_dispose((void **)&night::NS_TYPE_IF); } //----- (0040E09E) -------------------------------------------------------- void __cdecl __tcf_23_1() { std::string::_M_dispose((void **)&night::NS_TYPE_FOR); } //----- (0040E0A8) -------------------------------------------------------- void __cdecl __tcf_24_1() { std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); } //----- (0040E0B2) -------------------------------------------------------- void __cdecl __tcf_25_1() { std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); } //----- (0040E0BC) -------------------------------------------------------- void __cdecl __tcf_26_1() { std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); } //----- (0040E0C6) -------------------------------------------------------- void __cdecl __tcf_27_1() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG); } //----- (0040E0D0) -------------------------------------------------------- void __cdecl __tcf_28_1() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); } //----- (0040E0DA) -------------------------------------------------------- void __cdecl __tcf_29_1() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); } //----- (0040E0E4) -------------------------------------------------------- void __cdecl __tcf_30_1() { std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); } //----- (0040E0EE) -------------------------------------------------------- void __cdecl __tcf_31_1() { std::string::_M_dispose((void **)&night::NS_TYPE_CALL); } //----- (0040E0F8) -------------------------------------------------------- void __cdecl __tcf_32_1() { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); } //----- (0040E102) -------------------------------------------------------- void __cdecl __tcf_33_1() { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); } //----- (0040E10C) -------------------------------------------------------- void __cdecl __tcf_34_1() { std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); } //----- (0040E116) -------------------------------------------------------- void __cdecl __tcf_35_1() { std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); } //----- (0040E120) -------------------------------------------------------- void __cdecl __tcf_36_1() { std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); } //----- (0040E12A) -------------------------------------------------------- void __cdecl __tcf_37_1() { std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); } //----- (0040E134) -------------------------------------------------------- void __cdecl __tcf_38_1() { std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); } //----- (0040E13E) -------------------------------------------------------- int __cdecl night::sourcemap::int2vlq[abi:cxx11](int a1, int a2) { int v2; // esi int v3; // eax int v4; // edx v2 = 2 * a2; if ( a2 < 0 ) v2 = (-2 * a2) | 1; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; do { v3 = v2; v2 >>= 5; v4 = v3 % 32; if ( v2 > 0 ) v4 |= 0x20u; std::string::push_back((_DWORD *)a1, night::sourcemap::g_sVLQ[0][v4]); } while ( v2 > 0 ); return a1; } // 515018: using guessed type char *night::sourcemap::g_sVLQ[14]; //----- (0040E1AF) -------------------------------------------------------- int __cdecl night::sourcemap::gen_sourcemap_content(int *a1, _DWORD *a2, _DWORD *a3, _DWORD *a4, int a5, int a6) { unsigned int i; // ebx char *v7; // eax _DWORD *v8; // eax char *v9; // eax int v10; // esi _DWORD *v11; // ebx _DWORD *v12; // edi _DWORD *v13; // edi int insert_hint_unique_pos; // eax _DWORD *v15; // edx _DWORD *v16; // esi _DWORD *v17; // edi char v18; // al int v19; // eax int v20; // edi void *v22; // [esp+0h] [ebp-A8h] void (__cdecl *v23)(void *); // [esp+4h] [ebp-A4h] int v24; // [esp+1Ch] [ebp-8Ch] int v25; // [esp+20h] [ebp-88h] int v26; // [esp+24h] [ebp-84h] int v27; // [esp+28h] [ebp-80h] int v28; // [esp+2Ch] [ebp-7Ch] int v29; // [esp+30h] [ebp-78h] int v30; // [esp+30h] [ebp-78h] int v31; // [esp+34h] [ebp-74h] _DWORD *v32; // [esp+38h] [ebp-70h] int v33; // [esp+38h] [ebp-70h] unsigned int v34; // [esp+3Ch] [ebp-6Ch] unsigned int v35; // [esp+44h] [ebp-64h] BYREF char *v36; // [esp+48h] [ebp-60h] BYREF int v37; // [esp+4Ch] [ebp-5Ch] char v38; // [esp+50h] [ebp-58h] BYREF void *v39[2]; // [esp+60h] [ebp-48h] BYREF char v40; // [esp+68h] [ebp-40h] BYREF void *v41[12]; // [esp+78h] [ebp-30h] BYREF v36 = &v38; v37 = 0; v38 = 0; std::string::operator+=(&v36, "{\"version\":3,\"sources\":[\""); WXML::Rewrite::ToStringCode((int)v41, a1); std::string::operator+=(&v36, (int)v41); std::string::_M_dispose(v41); std::string::operator+=(&v36, "\"],"); std::string::operator+=(&v36, "\"names\":["); for ( i = 0; i < a3[5]; ++i ) { if ( i ) { v35 = i + 1; v9 = std::map::operator[](a3, (int *)&v35); std::operator+((int)v39, ",\"", (int)v9); } else { v35 = 1; v7 = std::map::operator[](a3, (int *)&v35); std::operator+((int)v39, "\"", (int)v7); } v8 = std::string::append(v39, "\""); std::string::basic_string(v41, v8); std::string::operator+=(&v36, (int)v41); std::string::_M_dispose(v41); std::string::_M_dispose(v39); } std::string::operator+=(&v36, "],"); std::string::operator+=(&v36, "\"mappings\":\""); v34 = 0; v27 = 0; v28 = 0; v29 = 0; v31 = 0; while ( v34 < (a4[1] - *a4) >> 6 ) { v26 = *(_DWORD *)(std::vector::at(a4, v34) + 60) + a5 - 1; v25 = *(_DWORD *)(std::vector::at(a4, v34) + 24) - 1; v24 = *(_DWORD *)(std::vector::at(a4, v34) + 28) - 1; v10 = std::vector::at(a4, v34); v32 = a2 + 1; v11 = a2 + 1; v12 = (_DWORD *)a2[2]; while ( v12 ) { if ( (unsigned __int8)std::operator<((int)(v12 + 4), v10) ) { v12 = (_DWORD *)v12[3]; } else { v11 = v12; v12 = (_DWORD *)v12[2]; } } if ( v32 == v11 || (unsigned __int8)std::operator<(v10, (int)(v11 + 4)) ) { v13 = v11; v11 = operator new((struct type_info *)0x2C, v23); std::string::basic_string(v11 + 4, v10); v11[10] = 0; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( a2, v13, (int)(v11 + 4)); v16 = (_DWORD *)insert_hint_unique_pos; v17 = v15; if ( v15 ) { v18 = v32 == v15 || insert_hint_unique_pos != 0; if ( !v18 ) v18 = std::operator<((int)(v11 + 4), (int)(v15 + 4)); std::_Rb_tree_insert_and_rebalance(v18, v11, v17, v32); ++a2[5]; } else { std::string::_M_dispose((void **)v11 + 4); v22 = v11; v11 = v16; operator delete(v22); } } v19 = v11[10]; v39[1] = 0; v20 = v25 - v29; v40 = 0; v33 = v19 - 1; v30 = v19 - 1 - v27; v39[0] = &v40; night::sourcemap::int2vlq[abi:cxx11]((int)v41, v26 - v31); std::string::operator+=(v39, (int)v41); std::string::_M_dispose(v41); night::sourcemap::int2vlq[abi:cxx11]((int)v41, 0); std::string::operator+=(v39, (int)v41); std::string::_M_dispose(v41); night::sourcemap::int2vlq[abi:cxx11]((int)v41, v20); std::string::operator+=(v39, (int)v41); std::string::_M_dispose(v41); night::sourcemap::int2vlq[abi:cxx11]((int)v41, v24 - v28); std::string::operator+=(v39, (int)v41); std::string::_M_dispose(v41); night::sourcemap::int2vlq[abi:cxx11]((int)v41, v30); std::string::operator+=(v39, (int)v41); std::string::_M_dispose(v41); std::string::basic_string(v41, (int)v39); std::string::append(v41, ","); std::string::operator+=(&v36, (int)v41); std::string::_M_dispose(v41); std::string::_M_dispose(v39); ++v34; v27 = v33; v28 = v24; v29 = v25; v31 = v26; } v36[v37 - 1] = 34; std::string::operator+=(&v36, "}"); std::string::_M_assign(a6, (int)&v36); std::string::_M_dispose((void **)&v36); return 0; } // 40E403: variable 'v23' is possibly undefined // 40E43A: variable 'v15' is possibly undefined //----- (0040E690) -------------------------------------------------------- void __cdecl __tcf_1_1() { std::string::_M_dispose((void **)&night::nsv_); } //----- (0040E69A) -------------------------------------------------------- void __cdecl __tcf_2_2() { std::string::_M_dispose((void **)&night::nst_); } //----- (0040E6A4) -------------------------------------------------------- void __cdecl __tcf_3_2() { std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); } //----- (0040E6AE) -------------------------------------------------------- void __cdecl __tcf_4_2() { std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); } //----- (0040E6B8) -------------------------------------------------------- void __cdecl __tcf_5_2() { std::string::_M_dispose((void **)&night::NS_TYPE_VAR); } //----- (0040E6C2) -------------------------------------------------------- void __cdecl __tcf_6_2() { std::string::_M_dispose((void **)&night::NS_TYPE_STR); } //----- (0040E6CC) -------------------------------------------------------- void __cdecl __tcf_7_2() { std::string::_M_dispose((void **)&night::NS_TYPE_NUM); } //----- (0040E6D6) -------------------------------------------------------- void __cdecl __tcf_8_2() { std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); } //----- (0040E6E0) -------------------------------------------------------- void __cdecl __tcf_9_2() { std::string::_M_dispose((void **)&night::NS_TYPE_KW); } //----- (0040E6EA) -------------------------------------------------------- void __cdecl __tcf_10_2() { std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); } //----- (0040E6F4) -------------------------------------------------------- void __cdecl __tcf_11_2() { std::string::_M_dispose((void **)&night::NS_TYPE_OP); } //----- (0040E6FE) -------------------------------------------------------- void __cdecl __tcf_12_2() { std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); } //----- (0040E708) -------------------------------------------------------- void __cdecl __tcf_13_2() { std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); } //----- (0040E712) -------------------------------------------------------- void __cdecl __tcf_14_2() { std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); } //----- (0040E71C) -------------------------------------------------------- void __cdecl __tcf_15_2() { std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); } //----- (0040E726) -------------------------------------------------------- void __cdecl __tcf_16_2() { std::string::_M_dispose((void **)&night::NS_TYPE_K_V); } //----- (0040E730) -------------------------------------------------------- void __cdecl __tcf_17_2() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); } //----- (0040E73A) -------------------------------------------------------- void __cdecl __tcf_18_2() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); } //----- (0040E744) -------------------------------------------------------- void __cdecl __tcf_19_2() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); } //----- (0040E74E) -------------------------------------------------------- void __cdecl __tcf_20_2() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); } //----- (0040E758) -------------------------------------------------------- void __cdecl __tcf_21_2() { std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); } //----- (0040E762) -------------------------------------------------------- void __cdecl __tcf_22_2() { std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); } //----- (0040E76C) -------------------------------------------------------- void __cdecl __tcf_23_2() { std::string::_M_dispose((void **)&night::NS_TYPE_IF); } //----- (0040E776) -------------------------------------------------------- void __cdecl __tcf_24_2() { std::string::_M_dispose((void **)&night::NS_TYPE_FOR); } //----- (0040E780) -------------------------------------------------------- void __cdecl __tcf_25_2() { std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); } //----- (0040E78A) -------------------------------------------------------- void __cdecl __tcf_26_2() { std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); } //----- (0040E794) -------------------------------------------------------- void __cdecl __tcf_27_2() { std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); } //----- (0040E79E) -------------------------------------------------------- void __cdecl __tcf_28_2() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG); } //----- (0040E7A8) -------------------------------------------------------- void __cdecl __tcf_29_2() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); } //----- (0040E7B2) -------------------------------------------------------- void __cdecl __tcf_30_2() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); } //----- (0040E7BC) -------------------------------------------------------- void __cdecl __tcf_31_2() { std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); } //----- (0040E7C6) -------------------------------------------------------- void __cdecl __tcf_32_2() { std::string::_M_dispose((void **)&night::NS_TYPE_CALL); } //----- (0040E7D0) -------------------------------------------------------- void __cdecl __tcf_33_2() { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); } //----- (0040E7DA) -------------------------------------------------------- void __cdecl __tcf_34_2() { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); } //----- (0040E7E4) -------------------------------------------------------- void __cdecl __tcf_35_2() { std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); } //----- (0040E7EE) -------------------------------------------------------- void __cdecl __tcf_36_2() { std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); } //----- (0040E7F8) -------------------------------------------------------- void __cdecl __tcf_37_2() { std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); } //----- (0040E802) -------------------------------------------------------- void __cdecl __tcf_38_2() { std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); } //----- (0040E80C) -------------------------------------------------------- void __cdecl __tcf_39_1() { std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); } //----- (0040E816) -------------------------------------------------------- int __cdecl night::str::path_combine(_DWORD *a1, _DWORD *a2, _DWORD *a3) { int v3; // ebx char *v5; // [esp+18h] [ebp-60h] BYREF unsigned int v6; // [esp+1Ch] [ebp-5Ch] char v7; // [esp+20h] [ebp-58h] BYREF void *v8[6]; // [esp+30h] [ebp-48h] BYREF void *v9[12]; // [esp+48h] [ebp-30h] BYREF v5 = &v7; v6 = 0; v7 = 0; v3 = MMBizWxaAppComm::PathCombine(a1, a2, (unsigned int *)&v5); if ( !v3 ) { v3 = 1; if ( v6 > 3 ) { std::string::substr(v8, &v5, v6 - 4, 0xFFFFFFFF); v3 = std::string::compare((int)v8, ".wxs"); std::string::_M_dispose(v8); if ( v3 ) { v3 = 2; } else { WXML::Rewrite::ToStringCode((int)v9, (int *)&v5); std::string::operator=(a3, v9); std::string::_M_dispose(v9); } } } std::string::_M_dispose((void **)&v5); return v3; } //----- (0040E8E8) -------------------------------------------------------- int __cdecl night::str::get_token(int a1, _DWORD *a2, unsigned int a3) { char v4; // al *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; while ( a3 < a2[1] ) { v4 = *(_BYTE *)std::string::at(a2, a3); if ( (unsigned __int8)((v4 & 0xDF) - 65) > 0x19u && v4 != 95 && (unsigned __int8)(v4 - 48) > 9u ) break; ++a3; std::string::push_back((_DWORD *)a1, v4); } return a1; } //----- (0040E95F) -------------------------------------------------------- int __cdecl night::readfile(char *FileName, unsigned int *a2) { void *v2; // esp FILE *v3; // ebx int result; // eax char Buffer[4]; // [esp+10h] [ebp-1008h] BYREF char v6[4092]; // [esp+14h] [ebp-1004h] BYREF v2 = alloca(4112); std::string::operator=(a2, (char *)&byte_51C7C9); v3 = fopen(FileName, "r"); result = -1; if ( v3 ) { *(_DWORD *)Buffer = 0; memset(v6, 0, sizeof(v6)); while ( fgets(Buffer, 4096, v3) ) std::string::operator+=(a2, Buffer); fclose(v3); return 0; } return result; } //----- (0040E9F2) -------------------------------------------------------- int __cdecl night::writefile(char *FileName, int a2) { FILE *v2; // ebx int result; // eax v2 = fopen(FileName, "w+"); result = -1; if ( v2 ) { if ( fwrite(*(const void **)a2, *(_DWORD *)(a2 + 4), 1u, v2) == 1 ) { fclose(v2); return 0; } else { fclose(v2); return -1; } } return result; } //----- (0040EA54) -------------------------------------------------------- void __cdecl __tcf_3_3() { std::string::_M_dispose((void **)&night::nsv_); } //----- (0040EA5E) -------------------------------------------------------- void __cdecl __tcf_4_3() { std::string::_M_dispose((void **)&night::nst_); } //----- (0040EA68) -------------------------------------------------------- void __cdecl __tcf_5_3() { std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); } //----- (0040EA72) -------------------------------------------------------- void __cdecl __tcf_6_3() { std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); } //----- (0040EA7C) -------------------------------------------------------- void __cdecl __tcf_7_3() { std::string::_M_dispose((void **)&night::NS_TYPE_VAR); } //----- (0040EA86) -------------------------------------------------------- void __cdecl __tcf_8_3() { std::string::_M_dispose((void **)&night::NS_TYPE_STR); } //----- (0040EA90) -------------------------------------------------------- void __cdecl __tcf_9_3() { std::string::_M_dispose((void **)&night::NS_TYPE_NUM); } //----- (0040EA9A) -------------------------------------------------------- void __cdecl __tcf_10_3() { std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); } //----- (0040EAA4) -------------------------------------------------------- void __cdecl __tcf_11_3() { std::string::_M_dispose((void **)&night::NS_TYPE_KW); } //----- (0040EAAE) -------------------------------------------------------- void __cdecl __tcf_12_3() { std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); } //----- (0040EAB8) -------------------------------------------------------- void __cdecl __tcf_13_3() { std::string::_M_dispose((void **)&night::NS_TYPE_OP); } //----- (0040EAC2) -------------------------------------------------------- void __cdecl __tcf_14_3() { std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); } //----- (0040EACC) -------------------------------------------------------- void __cdecl __tcf_15_3() { std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); } //----- (0040EAD6) -------------------------------------------------------- void __cdecl __tcf_16_3() { std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); } //----- (0040EAE0) -------------------------------------------------------- void __cdecl __tcf_17_3() { std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); } //----- (0040EAEA) -------------------------------------------------------- void __cdecl __tcf_18_3() { std::string::_M_dispose((void **)&night::NS_TYPE_K_V); } //----- (0040EAF4) -------------------------------------------------------- void __cdecl __tcf_19_3() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); } //----- (0040EAFE) -------------------------------------------------------- void __cdecl __tcf_20_3() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); } //----- (0040EB08) -------------------------------------------------------- void __cdecl __tcf_21_3() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); } //----- (0040EB12) -------------------------------------------------------- void __cdecl __tcf_22_3() { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); } //----- (0040EB1C) -------------------------------------------------------- void __cdecl __tcf_23_3() { std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); } //----- (0040EB26) -------------------------------------------------------- void __cdecl __tcf_24_3() { std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); } //----- (0040EB30) -------------------------------------------------------- void __cdecl __tcf_25_3() { std::string::_M_dispose((void **)&night::NS_TYPE_IF); } //----- (0040EB3A) -------------------------------------------------------- void __cdecl __tcf_26_3() { std::string::_M_dispose((void **)&night::NS_TYPE_FOR); } //----- (0040EB44) -------------------------------------------------------- void __cdecl __tcf_27_3() { std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); } //----- (0040EB4E) -------------------------------------------------------- void __cdecl __tcf_28_3() { std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); } //----- (0040EB58) -------------------------------------------------------- void __cdecl __tcf_29_3() { std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); } //----- (0040EB62) -------------------------------------------------------- void __cdecl __tcf_30_3() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG); } //----- (0040EB6C) -------------------------------------------------------- void __cdecl __tcf_31_3() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); } //----- (0040EB76) -------------------------------------------------------- void __cdecl __tcf_32_3() { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); } //----- (0040EB80) -------------------------------------------------------- void __cdecl __tcf_33_3() { std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); } //----- (0040EB8A) -------------------------------------------------------- void __cdecl __tcf_34_3() { std::string::_M_dispose((void **)&night::NS_TYPE_CALL); } //----- (0040EB94) -------------------------------------------------------- void __cdecl __tcf_35_3() { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); } //----- (0040EB9E) -------------------------------------------------------- void __cdecl __tcf_36_3() { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); } //----- (0040EBA8) -------------------------------------------------------- void __cdecl __tcf_37_3() { std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); } //----- (0040EBB2) -------------------------------------------------------- void __cdecl __tcf_38_3() { std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); } //----- (0040EBBC) -------------------------------------------------------- void __cdecl __tcf_39_2() { std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); } //----- (0040EBC6) -------------------------------------------------------- void __cdecl __tcf_40_1() { std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); } //----- (0040EBD0) -------------------------------------------------------- void __cdecl __tcf_41_1() { std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); } //----- (0040EBDF) -------------------------------------------------------- void __cdecl __tcf_2_3() { std::ios_base::Init::~Init(); } //----- (0040EBEA) -------------------------------------------------------- int __fastcall std::_Rb_tree_iterator>>::operator++( int *a1) { int v1; // esi v1 = *a1; *a1 = std::_Rb_tree_increment(*a1); return v1; } //----- (0040EC0A) -------------------------------------------------------- void __usercall std::_Vector_base::_M_deallocate(void *a1@) { if ( a1 ) operator delete(a1); } // 40EC0A: could not find valid save-restore pair for ebp //----- (0040EC20) -------------------------------------------------------- void __fastcall WXML::NameAllocator::~NameAllocator(int a1) { std::string::_M_dispose((void **)(a1 + 28)); std::string::_M_dispose((void **)(a1 + 4)); } //----- (0040EC3A) -------------------------------------------------------- void *__usercall __gnu_cxx::new_allocator::allocate@(unsigned int a1@) { void (__cdecl *v2)(void *); // [esp+4h] [ebp-14h] if ( a1 > 0x5555555 ) std::__throw_bad_alloc(); return operator new((struct type_info *)(24 * a1), v2); } // 40EC52: variable 'v2' is possibly undefined //----- (0040EC59) -------------------------------------------------------- int snprintf_constprop_0_0(char *Buffer, int a2, int a3, ...) { va_list va; // [esp+2Ch] [ebp+14h] BYREF va_start(va, a3); return vsnprintf_2(Buffer, 0x80u, "np_%d", va); } //----- (0040EC84) -------------------------------------------------------- BOOL __fastcall std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::__shared_ptr,std::allocator>>>( _DWORD *a1) { _DWORD *v2; // eax _DWORD *v3; // edi _DWORD *v4; // ebx BOOL result; // eax void (__cdecl *v6)(void *); // [esp+4h] [ebp-24h] *a1 = 0; v2 = operator new((struct type_info *)0xDC, v6); v2[1] = 1; v3 = v2 + 3; v4 = v2; v2[2] = 1; *v2 = &off_538F14; result = std::basic_stringstream,std::allocator>::basic_stringstream((int)(v2 + 3)); a1[1] = v4; *a1 = v3; return result; } // 40EC9C: variable 'v6' is possibly undefined // 538F14: using guessed type int (*off_538F14)(); //----- (0040ECE0) -------------------------------------------------------- int __cdecl WXML::Compiler::GetVersionInfo(int a1, int *a2) { std::ostream::sentry *v2; // eax std::ostream::sentry *v3; // eax std::ostream::sentry *v4; // eax std::ostream::sentry *v5; // eax std::ostream::sentry *v6; // eax std::ostream::sentry *v7; // eax char v9[8]; // [esp+10h] [ebp-D8h] BYREF char v10[4]; // [esp+18h] [ebp-D0h] BYREF int v11[51]; // [esp+1Ch] [ebp-CCh] BYREF std::basic_stringstream,std::allocator>::basic_stringstream((int)v9); v2 = std::operator<<>((std::ostream::sentry *)v10, "/*"); v3 = std::operator<<>(v2, "v0.5vv_20211229_syb_scopedata"); std::operator<<>(v3, "*/"); v4 = std::operator<<((std::ostream::sentry *)v10, a2); v5 = std::operator<<>(v4, ".__wcc_version__='"); v6 = std::operator<<>(v5, "v0.5vv_20211229_syb_scopedata"); std::operator<<>(v6, "';"); v7 = std::operator<<((std::ostream::sentry *)v10, a2); std::operator<<>( v7, ".__wcc_version_info__={\"customComponents\":true,\"fixZeroRpx\":true,\"propValueDeepCopy\":false};"); std::stringbuf::str(a1, v11); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v9); return a1; } // 40ECE0: using guessed type char var_D0[4]; // 40ECE0: using guessed type int var_CC[51]; //----- (0040EDC4) -------------------------------------------------------- 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; } //----- (0040EDD0) -------------------------------------------------------- int __fastcall WXML::DOMLib::Token::~Token(int a1) { std::string::_M_dispose((void **)(a1 + 88)); std::string::_M_dispose((void **)(a1 + 60)); std::string::_M_dispose((void **)(a1 + 32)); return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); } //----- (0040EDF8) -------------------------------------------------------- void __fastcall std::vector::~vector(void **a1) { char *v2; // edi char *i; // esi int v4; // ecx v2 = (char *)a1[1]; for ( i = (char *)*a1; v2 != i; i += 112 ) { v4 = (int)i; WXML::DOMLib::Token::~Token(v4); } if ( *a1 ) operator delete(*a1); } //----- (0040EE2E) -------------------------------------------------------- _DWORD *__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(_DWORD *this, int a2) { _DWORD *result; // eax volatile signed __int32 *v3; // ecx _DWORD *v4; // [esp+Ch] [ebp-Ch] result = this; if ( *this != a2 ) { if ( a2 ) { if ( _CRT_MT ) _InterlockedIncrement((volatile signed __int32 *)(a2 + 4)); else ++*(_DWORD *)(a2 + 4); } v3 = (volatile signed __int32 *)*this; if ( *result ) { v4 = result; std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v3); result = v4; } *result = a2; } return result; } // 78A9D4: using guessed type int _CRT_MT; //----- (0040EE70) -------------------------------------------------------- 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)); } //----- (0040EE84) -------------------------------------------------------- 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)); } //----- (0040EE98) -------------------------------------------------------- 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)); } //----- (0040EEAC) -------------------------------------------------------- void __fastcall std::_Rb_tree,std::less,std::allocator>::~_Rb_tree( int a1) { std::_Rb_tree,std::less,std::allocator>::_M_erase(*(void ***)(a1 + 8)); } //----- (0040EEC0) -------------------------------------------------------- int __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_lower_bound@( int a1@, int a2@, int a3@) { while ( a1 ) { if ( (unsigned __int8)std::operator<(a1 + 16, a3) ) { a1 = *(_DWORD *)(a1 + 12); } else { a2 = a1; a1 = *(_DWORD *)(a1 + 8); } } return a2; } //----- (0040EEFC) -------------------------------------------------------- int __usercall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_lower_bound@( int a1@, int a2@, int a3@) { while ( a1 ) { if ( (unsigned __int8)std::operator<(a1 + 16, a3) ) { a1 = *(_DWORD *)(a1 + 12); } else { a2 = a1; a1 = *(_DWORD *)(a1 + 8); } } return a2; } //----- (0040EF38) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2) { int v3; // [esp+8h] [ebp-10h] *this = this + 2; LOBYTE(v3) = 0; return std::string::_M_construct(this, a2, (size_t)&a2[strlen((const char *)a2)], v3); } // 40EF67: variable 'v3' is possibly undefined //----- (0040EF78) -------------------------------------------------------- void **__cdecl WXML::Compiler::WXMLHelperCode[abi:cxx11](void **a1) { std::string::basic_string(a1, aIfThisThisGUnd); return a1; } //----- (0040EF95) -------------------------------------------------------- void **__cdecl WXML::Compiler::GetFuncId(void **a1, _DWORD *a2, int a3) { int v3; // ebx char *v4; // eax void **v5; // edi _DWORD *v6; // ebx int insert_unique_pos; // eax _DWORD *v8; // edx _DWORD *v9; // eax void (__cdecl *v11)(void *); // [esp+4h] [ebp-A4h] char Buffer[4]; // [esp+10h] [ebp-98h] BYREF int v13[31]; // [esp+14h] [ebp-94h] BYREF if ( !std::map::count(a2, a3) ) { v3 = a2[5]; std::string::basic_string(Buffer, a3); v13[5] = v3; v4 = (char *)operator new((struct type_info *)0x2C, v11); v5 = (void **)(v4 + 16); v6 = v4; std::string::basic_string((_DWORD *)v4 + 4, Buffer); v6[10] = v13[5]; insert_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( a2, (int)v5); if ( v8 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( a2, insert_unique_pos, v8, v6); } else { std::string::_M_dispose(v5); operator delete(v6); } std::string::_M_dispose((void **)Buffer); } *(_DWORD *)Buffer = 0; memset(v13, 0, sizeof(v13)); v9 = std::map::operator[](a2, a3); snprintf_constprop_0_0(Buffer, 128, (int)"np_%d", *v9); std::string::basic_string(a1, (unsigned __int8 *)Buffer); return a1; } // 40EFDC: variable 'v11' is possibly undefined // 40F005: variable 'v8' is possibly undefined //----- (0040F0B0) -------------------------------------------------------- void __fastcall std::vector::~vector(void ***a1, int a2) { std::_Destroy_aux::__destroy(a2, *a1, a1[1]); std::_Vector_base::_M_deallocate(*a1); } //----- (0040F0D6) -------------------------------------------------------- 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, (int)v3); } //----- (0040F12A) -------------------------------------------------------- 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); } } // 40F1CF: variable 'v6' is possibly undefined //----- (0040F210) -------------------------------------------------------- int __fastcall WXML::DOMLib::Parser::~Parser(int a1) { const void *v2; // esi int v3; // eax int v4; // edi int v5; // edx int *i; // esi int v7; // edx int v8; // edx void **v9; // esi unsigned int v10; // edi void *v11; // eax int v13; // [esp+1Ch] [ebp-6Ch] int v14; // [esp+20h] [ebp-68h] int v15; // [esp+24h] [ebp-64h] int v16; // [esp+28h] [ebp-60h] unsigned int v17; // [esp+2Ch] [ebp-5Ch] int v18[4]; // [esp+30h] [ebp-58h] BYREF int v19[4]; // [esp+40h] [ebp-48h] BYREF char v20[16]; // [esp+50h] [ebp-38h] BYREF char v21[16]; // [esp+60h] [ebp-28h] BYREF v2 = (const void *)(a1 + 72); std::string::_M_dispose((void **)(a1 + 328)); WXML::DOMLib::Token::~Token(a1 + 216); WXML::DOMLib::Token::~Token(a1 + 104); std::vector::~vector((void **)(a1 + 88)); qmemcpy(v20, v2, sizeof(v20)); qmemcpy(v21, (const void *)(a1 + 56), sizeof(v21)); qmemcpy(v19, v21, sizeof(v19)); qmemcpy(v18, v20, sizeof(v18)); v3 = v19[0]; v4 = v18[0]; v14 = v19[2]; v16 = v19[3]; v15 = v18[1]; v17 = v18[3]; v5 = v19[3]; for ( i = (int *)(v19[3] + 4); (unsigned int)i < v17; ++i ) { v7 = *i; v13 = v3; std::_Destroy_aux::__destroy *>(v7, v7, v7 + 512); v3 = v13; } if ( v17 == v16 ) { std::_Destroy_aux::__destroy *>(v5, v3, v4); } else { std::_Destroy_aux::__destroy *>(v14, v3, v14); std::_Destroy_aux::__destroy *>(v8, v15, v4); } if ( *(_DWORD *)(a1 + 48) ) { v9 = *(void ***)(a1 + 68); v10 = *(_DWORD *)(a1 + 84) + 4; while ( v10 > (unsigned int)v9 ) { v11 = *v9++; operator delete(v11); } 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)); } // 40F2DB: variable 'v8' is possibly undefined // 40F2E4: variable 'v5' is possibly undefined //----- (0040F32D) -------------------------------------------------------- unsigned int __cdecl WXML::Compiler::ParseWxmlSource(int a1, int *a2, unsigned int *a3, _DWORD *a4, _DWORD *a5) { unsigned int v5; // esi int v7; // [esp+18h] [ebp-180h] BYREF volatile signed __int32 *v8; // [esp+1Ch] [ebp-17Ch] BYREF char v9[376]; // [esp+20h] [ebp-178h] BYREF WXML::DOMLib::Parser::Parser((int)v9); v5 = WXML::DOMLib::Parser::Parse((WXML::DOMLib::Parser *)v9, *a2, a3, a1, a4); if ( !v5 ) { WXML::DOMLib::Parser::GetParsed(&v7, (WXML::DOMLib::Parser *)v9); std::__shared_ptr::operator=(a5, &v7); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v8); } WXML::DOMLib::Parser::~Parser((int)v9); return v5; } //----- (0040F3BF) -------------------------------------------------------- unsigned int __cdecl WXML::Compiler::DealWxsTag( int a1, int **a2, _DWORD *a3, int a4, int *a5, _DWORD *a6, unsigned int *a7) { char *v7; // ebx int *v8; // ecx _BYTE *v9; // ebx int *v10; // eax unsigned int v11; // ecx char *v12; // ebx unsigned int v13; // eax _DWORD *v14; // eax int v15; // ebx int i; // ebx int v17; // esi char v18; // bl int j; // eax int v20; // edx unsigned int v21; // edx char *v22; // eax int v23; // eax std::ostream::sentry *v24; // eax std::ostream::sentry *v25; // eax std::ostream::sentry *v26; // eax std::ostream::sentry *v27; // eax _DWORD *v28; // esi BOOL v29; // esi char *v30; // eax int v31; // eax _BYTE *v32; // eax bool v33; // dl std::ostream::sentry *v34; // eax std::ostream::sentry *v35; // eax std::ostream::sentry *v36; // eax std::ostream::sentry *v37; // eax int *v38; // ebx std::ostream::sentry *v39; // eax std::ostream::sentry *v40; // eax std::ostream::sentry *v41; // eax std::ostream::sentry *v42; // eax unsigned int v44; // [esp+18h] [ebp-3A0h] _DWORD *v45; // [esp+18h] [ebp-3A0h] BOOL v46; // [esp+18h] [ebp-3A0h] char v47; // [esp+18h] [ebp-3A0h] unsigned int v48; // [esp+1Ch] [ebp-39Ch] int v49; // [esp+24h] [ebp-394h] BYREF volatile signed __int32 *v50; // [esp+28h] [ebp-390h] BYREF void *v51[3]; // [esp+2Ch] [ebp-38Ch] BYREF void *v52[6]; // [esp+38h] [ebp-380h] BYREF void *v53[6]; // [esp+50h] [ebp-368h] BYREF void *v54[2]; // [esp+68h] [ebp-350h] BYREF char v55; // [esp+70h] [ebp-348h] BYREF char v56; // [esp+80h] [ebp-338h] BYREF char v57; // [esp+98h] [ebp-320h] BYREF void *v58[6]; // [esp+B0h] [ebp-308h] BYREF void *v59[6]; // [esp+C8h] [ebp-2F0h] BYREF void *v60[6]; // [esp+E0h] [ebp-2D8h] BYREF void *v61[6]; // [esp+F8h] [ebp-2C0h] BYREF void *v62[6]; // [esp+110h] [ebp-2A8h] BYREF void *v63[6]; // [esp+128h] [ebp-290h] BYREF char v64[24]; // [esp+140h] [ebp-278h] BYREF int v65[6]; // [esp+158h] [ebp-260h] BYREF void *v66[2]; // [esp+170h] [ebp-248h] BYREF char v67[4]; // [esp+178h] [ebp-240h] BYREF _DWORD v68[49]; // [esp+17Ch] [ebp-23Ch] BYREF void *v69[94]; // [esp+240h] [ebp-178h] BYREF v7 = std::string::find(*a2, 62, (unsigned int)a2[4]); v44 = (unsigned int)(v7 + 1); std::string::basic_string(v52, ""); v54[0] = &v55; v54[1] = 0; v8 = *a2; v55 = 0; v9 = (_BYTE *)std::string::at(v8, (unsigned int)(v7 - 1)); v10 = a2[4]; v11 = (unsigned int)(v10 + 1); if ( *v9 == 47 ) { v12 = &v56; v13 = v44 - (_DWORD)v10 - 6; } else { v12 = &v57; v13 = v44 - (_DWORD)v10 - 5; } std::string::substr((void **)v12, *a2, v11, v13); std::string::operator=(v54, v12); std::string::_M_dispose((void **)v12); std::string::basic_string(v69, (int)v52); std::string::append(v69, (int)v54); v14 = std::string::append(v69, (int)v53); v15 = 1; std::string::basic_string(v58, v14); std::string::_M_dispose(v69); while ( (int)a2[2] > v15 ) { std::operator+((int)v59, "\n", (int)v58); ++v15; std::string::operator=(v58, v59); std::string::_M_dispose(v59); } for ( i = 1; (int)a2[3] > i; ++i ) { std::operator+((int)v60, " ", (int)v58); std::string::operator=(v58, v60); std::string::_M_dispose(v60); } WXML::DOMLib::Parser::Parser((int)v69); memset(v51, 0, sizeof(v51)); v48 = WXML::DOMLib::Parser::Parse((WXML::DOMLib::Parser *)v69, (int)v58[0], a7, a1, v51); if ( !v48 ) { WXML::DOMLib::Parser::GetParsed(&v49, (WXML::DOMLib::Parser *)v69); *a6 = a2[2]; if ( (int)((int)a2[5] + (_DWORD)a2[4] - v44) <= 0 ) std::string::basic_string(v61, (unsigned __int8 *)&byte_523BD0); else std::string::substr(v61, *a2, v44, (unsigned int)a2[5] + (_DWORD)a2[4] - v44); v17 = 8388627; std::string::operator=(a5, v61); v18 = 1; std::string::_M_dispose(v61); for ( j = 0; j != a5[1]; ++j ) { v20 = *a5; LOBYTE(v20) = *(_BYTE *)(*a5 + j); v21 = v20 - 9; if ( (unsigned __int8)v21 > 0x17u || !_bittest(&v17, v21) ) v18 = 0; } v45 = (_DWORD *)(**(_DWORD **)(v49 + 72) + 48); std::string::basic_string(v62, (unsigned __int8 *)&off_523BD1); v46 = std::map::count(v45, (int)v62); std::string::_M_dispose(v62); if ( !v46 || (std::string::basic_string(v66, (unsigned __int8 *)&off_523BD1), v22 = std::map::operator[]((_DWORD *)(**(_DWORD **)(v49 + 72) + 48), v66), v23 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v22), std::string::_M_assign(a4, v23), std::string::_M_dispose(v66), v18) ) { v28 = (_DWORD *)(**(_DWORD **)(v49 + 72) + 48); std::string::basic_string(v66, "module"); v29 = std::map::count(v28, (int)v66); std::string::_M_dispose(v66); if ( v29 ) { std::string::basic_string(v66, "module"); v30 = std::map::operator[]((_DWORD *)(**(_DWORD **)(v49 + 72) + 48), v66); v31 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v30); std::string::_M_assign((int)a3, v31); std::string::_M_dispose(v66); v32 = (_BYTE *)*a3; v47 = (unsigned __int8)(*(_BYTE *)*a3 - 48) > 9u; while ( (_BYTE *)(*a3 + a3[1]) != v32 ) { v33 = (unsigned __int8)(*v32 - 97) <= 0x19u || (unsigned __int8)(*v32 - 48) <= 9u; if ( !v33 ) v33 = *v32 == 95 || (unsigned __int8)(*v32 - 65) <= 0x19u; v47 &= v33; ++v32; } if ( v47 ) goto LABEL_34; std::basic_stringstream,std::allocator>::basic_stringstream((int)v66); std::operator+(v65, a1, ":"); std::operator<<((std::ostream::sentry *)v67, v65); v34 = (std::ostream::sentry *)std::ostream::operator<<(a2[2]); std::operator<<>(v34, ":"); v35 = (std::ostream::sentry *)std::ostream::operator<<(a2[3]); v36 = std::operator<<>(v35, ": "); v37 = std::operator<<(v36, (int *)a7); std::operator<<>(v37, "invalid module name, [0-9a-zA-Z_] allowed only"); v38 = (int *)v64; std::string::_M_dispose((void **)v65); std::stringbuf::str((int)v64, v68); } else { std::basic_stringstream,std::allocator>::basic_stringstream((int)v66); v38 = v65; std::operator+(v65, a1, ":"); std::operator<<((std::ostream::sentry *)v67, v65); v39 = (std::ostream::sentry *)std::ostream::operator<<(a2[2]); std::operator<<>(v39, ":"); v40 = (std::ostream::sentry *)std::ostream::operator<<(a2[3]); v41 = std::operator<<>(v40, ": "); v42 = std::operator<<(v41, (int *)a7); std::operator<<>(v42, "module expected in wxs tag"); std::string::_M_dispose((void **)v65); std::stringbuf::str((int)v65, v68); } std::string::operator=(a7, v38); std::string::_M_dispose((void **)v38); } else { std::basic_stringstream,std::allocator>::basic_stringstream((int)v66); std::operator+(v65, a1, ":"); std::operator<<((std::ostream::sentry *)v67, v65); v24 = (std::ostream::sentry *)std::ostream::operator<<(a2[2]); std::operator<<>(v24, ":"); v25 = (std::ostream::sentry *)std::ostream::operator<<(a2[3]); v26 = std::operator<<>(v25, ": "); v27 = std::operator<<(v26, (int *)a7); std::operator<<>(v27, "wxs tag with src don't need any content"); std::string::_M_dispose((void **)v65); std::stringbuf::str((int)v63, v68); std::string::operator=(a7, v63); std::string::_M_dispose(v63); } std::basic_stringstream,std::allocator>::~basic_stringstream((int)v66); v48 = 1; LABEL_34: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v50); } std::vector::~vector(v51); WXML::DOMLib::Parser::~Parser((int)v69); std::string::_M_dispose(v58); std::string::_M_dispose(v54); std::string::_M_dispose(v53); std::string::_M_dispose(v52); return v48; } // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 523BD1: using guessed type void *off_523BD1; // 40F3BF: using guessed type char var_240[4]; // 40F3BF: using guessed type _DWORD var_23C[49]; //----- (0040FB75) -------------------------------------------------------- int __cdecl WXML::Compiler::RenderDefine( unsigned int **a1, int *a2, _DWORD *a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, char a9, int *a10, int *a11, int *a12, int a13, int *a14, int *a15, int *a16, int a17, int a18, int a19, int *a20) { unsigned int *v20; // ebx bool v21; // dl int result; // eax char *v23; // eax int v24; // eax _DWORD *v25; // eax unsigned int i; // ebx unsigned int v27; // ecx unsigned int v28; // eax unsigned int *v29; // [esp+54h] [ebp-94h] unsigned int *v30; // [esp+54h] [ebp-94h] int v31; // [esp+5Ch] [ebp-8Ch] void *v32[6]; // [esp+6Ch] [ebp-7Ch] BYREF void *v33[6]; // [esp+84h] [ebp-64h] BYREF void *v34[19]; // [esp+9Ch] [ebp-4Ch] BYREF if ( std::operator==((int)*a1, "template") ) { v20 = *a1; std::string::basic_string(v34, "name"); v29 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v20 + 12, (int)v34); std::string::_M_dispose(v34); if ( v29 != v20 + 13 ) std::string::operator=(*a1, "wx-define"); } v21 = std::operator==((int)*a1, "wx-define"); result = 0; if ( v21 ) { WXML::NameAllocator::NameAllocator(v34, a17, a18); std::string::basic_string(v33, "name"); v23 = std::map::operator[](*a1 + 12, v33); v24 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v23); std::string::basic_string(v32, v24); std::string::_M_dispose(v33); v25 = std::map::operator[](a3, (int)v32); std::string::_M_assign((int)v25, (int)a2); v30 = *a1; std::string::basic_string(v33, "r"); v31 = WXML::DOMLib::WXMLDom::RenderMeAsFunction( v30, a2, a14, a4, (int *)v32, a5, (int *)v34, a10, a11, a12, (int *)v33, a15, a9, a16, 1, a7, a8, a20); std::string::_M_dispose(v33); std::string::_M_dispose(v32); WXML::NameAllocator::~NameAllocator((int)v34); result = v31; } for ( i = 0; ; ++i ) { v27 = (*a1)[18]; if ( (int)((*a1)[19] - v27) >> 3 <= i || result ) break; v28 = v27 + 8 * i; result = WXML::Compiler::RenderDefine( v28, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); } return result; } //----- (0040FE68) -------------------------------------------------------- int __cdecl WXML::Compiler::ProcessWxsInline( int *a1, int *a2, char a3, int a4, int *a5, _DWORD *a6, unsigned int *a7, _DWORD *a8, _DWORD *a9, int a10, char a11) { std::ostream::sentry *v11; // edi std::ostream::sentry *v12; // eax std::ostream::sentry *v13; // eax int v14; // eax int v15; // ebx std::ostream::sentry *v16; // eax std::ostream::sentry *v17; // esi std::ostream::sentry *v18; // eax std::ostream::sentry *v19; // eax std::ostream::sentry *v20; // esi std::ostream::sentry *v21; // eax std::ostream::sentry *v22; // eax std::ostream::sentry *v23; // eax std::ostream::sentry *v24; // eax std::ostream::sentry *v25; // eax std::ostream::sentry *v26; // eax std::ostream::sentry *v27; // eax std::ostream::sentry *v28; // edi std::ostream::sentry *v29; // eax std::ostream::sentry *v30; // eax std::ostream::sentry *v31; // eax std::ostream::sentry *v32; // esi std::ostream::sentry *v33; // eax std::ostream::sentry *v34; // edi std::ostream::sentry *v35; // eax std::ostream::sentry *v36; // eax void **v37; // ecx _DWORD *v38; // eax _DWORD *v39; // eax std::ostream::sentry *v40; // edi _DWORD *v41; // eax _DWORD *v42; // eax std::ostream::sentry *v43; // eax std::ostream::sentry *v44; // eax std::ostream::sentry *v45; // eax _DWORD *v46; // eax std::ostream::sentry *v48; // [esp+24h] [ebp-2A4h] unsigned int i; // [esp+28h] [ebp-2A0h] int v50; // [esp+34h] [ebp-294h] BYREF int v51[2]; // [esp+38h] [ebp-290h] BYREF char v52; // [esp+40h] [ebp-288h] BYREF void *v53[2]; // [esp+50h] [ebp-278h] BYREF char v54; // [esp+58h] [ebp-270h] BYREF int v55; // [esp+68h] [ebp-260h] BYREF int v56; // [esp+6Ch] [ebp-25Ch] char v57; // [esp+70h] [ebp-258h] BYREF void *v58[2]; // [esp+80h] [ebp-248h] BYREF char v59; // [esp+88h] [ebp-240h] BYREF void *v60[2]; // [esp+98h] [ebp-230h] BYREF char v61; // [esp+A0h] [ebp-228h] BYREF void *v62[6]; // [esp+B0h] [ebp-218h] BYREF void *v63[6]; // [esp+C8h] [ebp-200h] BYREF void *v64[6]; // [esp+E0h] [ebp-1E8h] BYREF int v65[6]; // [esp+F8h] [ebp-1D0h] BYREF char v66[8]; // [esp+110h] [ebp-1B8h] BYREF char v67[4]; // [esp+118h] [ebp-1B0h] BYREF int v68[49]; // [esp+11Ch] [ebp-1ACh] BYREF int v69[2]; // [esp+1E0h] [ebp-E8h] BYREF char v70[4]; // [esp+1E8h] [ebp-E0h] BYREF int v71[55]; // [esp+1ECh] [ebp-DCh] BYREF v51[1] = 0; v52 = 0; v51[0] = (int)&v52; std::basic_stringstream,std::allocator>::basic_stringstream((int)v66); if ( *a2 != a2[1] ) { v11 = std::operator<<>((std::ostream::sentry *)v67, "f_['"); WXML::Rewrite::ToStringCode((int)v69, a1); v12 = std::operator<<(v11, v69); v13 = std::operator<<>(v12, "']={};"); std::operator<<>(v13, a3); std::string::_M_dispose((void **)v69); } for ( i = 0; ; ++i ) { v14 = *a2; if ( -1227133513 * ((a2[1] - *a2) >> 4) <= i ) break; v53[1] = 0; v58[0] = &v59; v60[0] = &v61; v53[0] = &v54; v55 = (int)&v57; v54 = 0; v56 = 0; v57 = 0; v58[1] = 0; v59 = 0; v60[1] = 0; v61 = 0; v15 = WXML::Compiler::DealWxsTag((int)a1, (int **)(112 * i + v14), v53, (int)&v55, (int *)v58, &v50, a7); if ( v15 ) goto LABEL_18; v16 = std::operator<<((std::ostream::sentry *)v67, a5); v17 = std::operator<<>(v16, "['"); WXML::Rewrite::ToStringCode((int)v65, a1); v18 = std::operator<<(v17, v65); v48 = std::operator<<>(v18, "']['"); WXML::Rewrite::ToStringCode((int)v69, (int *)v53); v19 = std::operator<<(v48, v69); std::operator<<>(v19, "'] ="); std::string::_M_dispose((void **)v69); std::string::_M_dispose((void **)v65); if ( v56 ) { MMBizWxaAppComm::PathCombine(a1, &v55, (unsigned int *)v60); if ( *(_BYTE *)v60[0] == 47 ) { std::operator+((int)v64, 46, (int)v60); std::string::operator=(v60, v64); std::string::_M_dispose(v64); } if ( a6 + 1 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a6, (int)v60) && (std::operator==(a4, "$gwx") || a11) ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)v69); v21 = std::operator<<((std::ostream::sentry *)v70, a1); std::operator<<>(v21, ":"); v22 = (std::ostream::sentry *)std::ostream::operator<<(v50); std::operator<<>(v22, ":"); v23 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*a2 + 112 * i + 12)); v24 = std::operator<<>(v23, ":"); v25 = std::operator<<(v24, &v55); v26 = std::operator<<>(v25, " not found from "); std::operator<<(v26, a1); std::stringbuf::str((int)v65, v71); v15 = 1; std::string::operator=(a7, v65); std::string::_M_dispose((void **)v65); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v69); LABEL_18: std::string::_M_dispose(v60); std::string::_M_dispose(v58); std::string::_M_dispose((void **)&v55); std::string::_M_dispose(v53); goto LABEL_22; } v20 = std::operator<<>((std::ostream::sentry *)v67, "f_['"); WXML::Rewrite::ToStringCode((int)v69, (int *)v60); v27 = std::operator<<(v20, v69); std::operator<<>(v27, "'] || "); std::string::_M_dispose((void **)v69); v28 = std::operator<<>((std::ostream::sentry *)v67, "nv_require(\""); std::operator+((int)v65, "p_", (int)v60); WXML::Rewrite::ToStringCode((int)v69, v65); v29 = std::operator<<(v28, v69); v30 = std::operator<<>(v29, "\");"); std::operator<<>(v30, a3); std::string::_M_dispose((void **)v69); std::string::_M_dispose((void **)v65); v31 = std::operator<<((std::ostream::sentry *)v67, a5); v32 = std::operator<<>(v31, "['"); WXML::Rewrite::ToStringCode((int)v65, a1); v33 = std::operator<<(v32, v65); v34 = std::operator<<>(v33, "']['"); WXML::Rewrite::ToStringCode((int)v69, (int *)v53); v35 = std::operator<<(v34, v69); v36 = std::operator<<>(v35, "']();"); std::operator<<>(v36, a3); std::string::_M_dispose((void **)v69); v37 = (void **)v65; } else { std::operator+((int)v64, "m_", (int)a1); v38 = std::string::append(v64, ":"); std::string::basic_string(v65, v38); v39 = std::string::append(v65, (int)v53); std::string::basic_string(v69, v39); WXML::Compiler::GetFuncId(v62, a9, (int)v69); std::string::_M_dispose((void **)v69); std::string::_M_dispose((void **)v65); std::string::_M_dispose(v64); v15 = night::compile_ns((int)a1, (int)v62, (int)v58, v50, (unsigned int *)v51, 0); if ( v15 ) { std::string::_M_assign((int)a7, (int)v51); std::string::_M_dispose(v62); goto LABEL_18; } v40 = std::operator<<>((std::ostream::sentry *)v67, "nv_require(\""); std::operator+((int)v63, "m_", (int)a1); v41 = std::string::append(v63, ":"); std::string::basic_string(v64, v41); v42 = std::string::append(v64, (int)v53); std::string::basic_string(v65, v42); WXML::Rewrite::ToStringCode((int)v69, v65); v43 = std::operator<<(v40, v69); v44 = std::operator<<>(v43, "\");"); std::operator<<>(v44, a3); std::string::_M_dispose((void **)v69); std::string::_M_dispose((void **)v65); std::string::_M_dispose(v64); std::string::_M_dispose(v63); v45 = std::operator<<((std::ostream::sentry *)v67, v51); std::operator<<>(v45, a3); v37 = v62; } std::string::_M_dispose(v37); std::string::_M_dispose(v60); std::string::_M_dispose(v58); std::string::_M_dispose((void **)&v55); std::string::_M_dispose(v53); } std::stringbuf::str((int)v69, v68); if ( v69[1] ) { v46 = std::map::operator[](a8, (int)a1); std::string::_M_assign((int)v46, (int)v69); } v15 = 0; std::string::_M_dispose((void **)v69); LABEL_22: std::basic_stringstream,std::allocator>::~basic_stringstream((int)v66); std::string::_M_dispose((void **)v51); return v15; } // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 40FE68: using guessed type char var_1B0[4]; // 40FE68: using guessed type char var_E0[4]; // 40FE68: using guessed type int var_DC[55]; // 40FE68: using guessed type int var_1AC[49]; //----- (004107B5) -------------------------------------------------------- int __cdecl WXML::Compiler::ProcessWxsFile(int *a1, int a2, char a3, int a4, _DWORD *a5, _DWORD *a6) { std::ostream::sentry *v6; // esi std::ostream::sentry *v7; // eax std::ostream::sentry *v8; // eax std::ostream::sentry *v9; // edi std::ostream::sentry *v10; // eax std::ostream::sentry *v11; // eax std::ostream::sentry *v12; // eax std::ostream::sentry *v13; // eax _DWORD *v14; // eax int v16; // [esp+2Ch] [ebp-16Ch] int v17[2]; // [esp+38h] [ebp-160h] BYREF char v18; // [esp+40h] [ebp-158h] BYREF void *v19[6]; // [esp+50h] [ebp-148h] BYREF int v20[6]; // [esp+68h] [ebp-130h] BYREF void *v21[6]; // [esp+80h] [ebp-118h] BYREF int v22[6]; // [esp+98h] [ebp-100h] BYREF void *v23[2]; // [esp+B0h] [ebp-E8h] BYREF char v24[4]; // [esp+B8h] [ebp-E0h] BYREF int v25[55]; // [esp+BCh] [ebp-DCh] BYREF v17[1] = 0; v17[0] = (int)&v18; v18 = 0; std::operator+((int)v23, "p_", (int)a1); WXML::Compiler::GetFuncId(v19, a6, (int)v23); std::string::_M_dispose(v23); v16 = night::compile_ns((int)a1, (int)v19, a2, 1, (unsigned int *)v17, 0); if ( v16 ) { std::string::_M_assign(a4, (int)v17); } else { std::basic_stringstream,std::allocator>::basic_stringstream((int)v23); v6 = std::operator<<>((std::ostream::sentry *)v24, "f_['"); WXML::Rewrite::ToStringCode((int)v20, a1); v7 = std::operator<<(v6, v20); v8 = std::operator<<>(v7, "'] = nv_require("); v9 = std::operator<<>(v8, 34); std::operator+((int)v21, "p_", (int)a1); WXML::Rewrite::ToStringCode((int)v22, (int *)v21); v10 = std::operator<<(v9, v22); v11 = std::operator<<>(v10, 34); v12 = std::operator<<>(v11, ");"); std::operator<<>(v12, a3); std::string::_M_dispose((void **)v22); std::string::_M_dispose(v21); std::string::_M_dispose((void **)v20); v13 = std::operator<<((std::ostream::sentry *)v24, v17); std::operator<<>(v13, a3); std::stringbuf::str((int)v22, v25); v14 = std::map::operator[](a5, (int)a1); std::string::operator=(v14, v22); std::string::_M_dispose((void **)v22); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v23); } std::string::_M_dispose(v19); std::string::_M_dispose((void **)v17); return v16; } // 4107B5: using guessed type char var_E0[4]; // 4107B5: using guessed type int var_DC[55]; //----- (00410A55) -------------------------------------------------------- unsigned int __cdecl WXML::Compiler::Compile( _DWORD *a1, unsigned int *a2, _DWORD *a3, _DWORD *a4, _DWORD *a5, char a6, int *a7, int a8, char a9, int *a10, int *a11, int *a12, int *a13, int *a14, int *a15, int a16, int a17, int a18, int *a19) { _DWORD *v19; // eax _DWORD *v20; // eax int *v21; // edi bool v22; // si int *v23; // esi int *v24; // ebx char *v25; // eax void **v26; // esi int insert_hint_unique_pos; // eax int *v28; // edx char v29; // al std::ostream::sentry *v30; // esi std::ostream::sentry *v31; // eax std::ostream::sentry *v32; // eax int v33; // ebx std::ostream::sentry *v34; // eax std::ostream::sentry *v35; // esi std::ostream::sentry *v36; // eax std::ostream::sentry *v37; // eax bool v38; // al std::ostream::sentry *v39; // esi std::ostream::sentry *v40; // eax std::ostream::sentry *v41; // eax std::ostream::sentry *v42; // eax std::ostream::sentry *v43; // eax std::ostream::sentry *v44; // eax std::ostream::sentry *v45; // eax std::ostream::sentry *v46; // eax std::ostream::sentry *v47; // eax std::ostream::sentry *v48; // eax std::ostream::sentry *v49; // eax std::ostream::sentry *v50; // esi std::ostream::sentry *v51; // eax std::ostream::sentry *v52; // eax std::ostream::sentry *v53; // eax void **v54; // ecx _DWORD *v55; // eax _DWORD *v56; // eax _DWORD *v57; // eax _DWORD *v58; // eax std::ostream::sentry *v59; // eax std::ostream::sentry *v60; // eax std::ostream::sentry *v61; // eax _DWORD *v62; // eax bool v63; // si std::ostream::sentry *v64; // ebx std::ostream::sentry *v65; // eax std::ostream::sentry *v66; // eax std::ostream::sentry *v67; // ebx std::ostream::sentry *v68; // eax std::ostream::sentry *v69; // eax std::ostream::sentry *v70; // eax std::ostream::sentry *v71; // eax _DWORD *v72; // eax int *v73; // esi std::ostream::sentry *v74; // eax std::ostream::sentry *v75; // eax std::ostream::sentry *v76; // eax std::ostream::sentry *v77; // eax std::ostream::sentry *v78; // eax std::ostream::sentry *v79; // eax _DWORD *v80; // eax std::ostream::sentry *v81; // eax std::ostream::sentry *v82; // eax std::ostream::sentry *v83; // eax std::ostream::sentry *v84; // eax std::ostream::sentry *v85; // eax std::ostream::sentry *v86; // eax std::ostream::sentry *v87; // eax std::ostream::sentry *v88; // eax std::ostream::sentry *v89; // eax std::ostream::sentry *v90; // eax std::ostream::sentry *v91; // eax std::ostream::sentry *v92; // eax std::ostream::sentry *v93; // eax std::ostream::sentry *v94; // eax std::ostream::sentry *v95; // eax std::ostream::sentry *v96; // eax std::ostream::sentry *v97; // eax std::ostream::sentry *v98; // eax std::ostream::sentry *v99; // eax std::ostream::sentry *v100; // eax std::ostream::sentry *v101; // eax std::ostream::sentry *v102; // eax std::ostream::sentry *v103; // eax std::ostream::sentry *v104; // eax std::ostream::sentry *v105; // eax std::ostream::sentry *v106; // eax std::ostream::sentry *v107; // eax std::ostream::sentry *v108; // eax std::ostream::sentry *v109; // eax std::ostream::sentry *v110; // eax std::ostream::sentry *v111; // eax std::ostream::sentry *v112; // eax std::ostream::sentry *v113; // eax std::ostream::sentry *v114; // eax std::ostream::sentry *v115; // eax std::ostream::sentry *v116; // eax std::ostream::sentry *v117; // eax std::ostream::sentry *v118; // eax std::ostream::sentry *v119; // eax std::ostream::sentry *v120; // eax std::ostream::sentry *v121; // eax std::ostream::sentry *v122; // eax std::ostream::sentry *v123; // eax std::ostream::sentry *v124; // eax std::ostream::sentry *v125; // eax std::ostream::sentry *v126; // eax std::ostream::sentry *v127; // eax std::ostream::sentry *v128; // eax std::ostream::sentry *v129; // eax int *v130; // eax int *v131; // eax std::ostream::sentry *v132; // eax std::ostream::sentry *v133; // eax std::ostream::sentry *v134; // eax std::ostream::sentry *v135; // eax std::ostream::sentry *v136; // eax std::ostream::sentry *v137; // eax std::ostream::sentry *v138; // eax std::ostream::sentry *v139; // eax std::ostream::sentry *v140; // eax std::ostream::sentry *v141; // eax std::ostream::sentry *v142; // eax std::ostream::sentry *v143; // eax std::ostream::sentry *v144; // eax std::ostream::sentry *v145; // eax std::ostream::sentry *v146; // eax std::ostream::sentry *v147; // eax std::ostream::sentry *v148; // eax std::ostream::sentry *v149; // eax std::ostream::sentry *v150; // eax std::ostream::sentry *v151; // eax std::ostream::sentry *v152; // eax std::ostream::sentry *v153; // eax std::ostream::sentry *v154; // eax std::ostream::sentry *v155; // eax std::ostream::sentry *v156; // eax std::ostream::sentry *v157; // eax std::ostream::sentry *v158; // eax _DWORD *v159; // eax std::ostream::sentry *v160; // eax std::ostream::sentry *v161; // eax std::ostream::sentry *v162; // eax std::ostream::sentry *v163; // eax std::ostream::sentry *v164; // eax std::ostream::sentry *v165; // eax std::ostream::sentry *v166; // eax std::ostream::sentry *v167; // eax std::ostream::sentry *v168; // eax _DWORD *j; // ebx std::ostream::sentry *v170; // eax std::ostream::sentry *v171; // eax std::ostream::sentry *v172; // eax std::ostream::sentry *v173; // eax std::ostream::sentry *v174; // eax _DWORD *k; // ebx std::ostream::sentry *v176; // eax _DWORD *v177; // esi int v178; // ecx int v179; // esi std::ostream::sentry *v180; // eax int StrID; // eax std::ostream::sentry *v182; // eax int *v183; // eax _DWORD *v184; // esi int *v185; // ebx std::ostream::sentry *v186; // eax _DWORD *v187; // esi int v188; // eax std::ostream::sentry *v189; // eax std::ostream::sentry *v190; // eax unsigned int m; // esi int v192; // eax int v193; // edx int v194; // ebx _DWORD *v195; // ebx _DWORD *v196; // ecx int v197; // eax int v198; // eax unsigned int n; // esi int v200; // eax int v201; // edx int v202; // ebx std::ostream::sentry *v203; // ebx _DWORD *v204; // ecx int v205; // eax int v206; // eax std::ostream::sentry *v207; // eax std::ostream::sentry *v208; // eax std::ostream::sentry *v209; // eax std::ostream::sentry *v210; // eax std::ostream::sentry *v211; // eax std::ostream::sentry *v212; // eax std::ostream::sentry *v213; // eax std::ostream::sentry *v214; // eax std::ostream::sentry *v215; // eax std::ostream::sentry *v216; // eax std::ostream::sentry *v217; // eax std::ostream::sentry *v218; // eax std::ostream::sentry *v219; // eax std::ostream::sentry *v220; // eax std::ostream::sentry *v221; // eax std::ostream::sentry *v222; // eax std::ostream::sentry *v223; // eax std::ostream::sentry *v224; // eax std::ostream::sentry *v225; // eax std::ostream::sentry *v226; // eax std::ostream::sentry *v227; // eax std::ostream::sentry *v228; // eax std::ostream::sentry *v229; // eax std::ostream::sentry *v230; // eax std::ostream::sentry *v231; // eax std::ostream::sentry *v232; // eax std::ostream::sentry *v233; // eax std::ostream::sentry *v234; // eax std::ostream::sentry *v235; // eax std::ostream::sentry *v236; // eax std::ostream::sentry *v237; // eax std::ostream::sentry *v238; // eax std::ostream::sentry *v239; // eax std::ostream::sentry *v240; // eax std::ostream::sentry *v241; // eax std::ostream::sentry *v242; // eax std::ostream::sentry *v243; // eax std::ostream::sentry *v244; // eax std::ostream::sentry *v245; // eax std::ostream::sentry *v246; // eax std::ostream::sentry *v247; // eax std::ostream::sentry *v248; // eax std::ostream::sentry *v249; // eax std::ostream::sentry *v250; // eax std::ostream::sentry *v251; // eax std::ostream::sentry *v252; // eax void (__cdecl *v254)(void *); // [esp+4h] [ebp-5E4h] void (__cdecl *v255)(void *); // [esp+4h] [ebp-5E4h] std::ostream::sentry *v256; // [esp+5Ch] [ebp-58Ch] _DWORD *v257; // [esp+60h] [ebp-588h] _DWORD *v258; // [esp+64h] [ebp-584h] int v259; // [esp+64h] [ebp-584h] _DWORD *v260; // [esp+64h] [ebp-584h] int v261; // [esp+68h] [ebp-580h] std::ostream::sentry *v262; // [esp+6Ch] [ebp-57Ch] std::ostream::sentry *v263; // [esp+6Ch] [ebp-57Ch] std::ostream::sentry *v264; // [esp+6Ch] [ebp-57Ch] std::ostream::sentry *v265; // [esp+6Ch] [ebp-57Ch] std::ostream::sentry *v266; // [esp+6Ch] [ebp-57Ch] std::ostream::sentry *v267; // [esp+6Ch] [ebp-57Ch] std::ostream::sentry *v268; // [esp+6Ch] [ebp-57Ch] std::ostream::sentry *v269; // [esp+6Ch] [ebp-57Ch] std::ostream::sentry *v270; // [esp+6Ch] [ebp-57Ch] _DWORD *i; // [esp+78h] [ebp-570h] int v272; // [esp+78h] [ebp-570h] unsigned int v273; // [esp+7Ch] [ebp-56Ch] std::ostream::sentry *v274; // [esp+7Ch] [ebp-56Ch] std::ostream::sentry *v275; // [esp+7Ch] [ebp-56Ch] std::ostream::sentry *v276; // [esp+7Ch] [ebp-56Ch] int v277; // [esp+80h] [ebp-568h] BYREF _DWORD *v278; // [esp+84h] [ebp-564h] volatile signed __int32 *v279; // [esp+88h] [ebp-560h] BYREF int **v280; // [esp+8Ch] [ebp-55Ch] BYREF int **v281; // [esp+90h] [ebp-558h] int v282; // [esp+94h] [ebp-554h] int v283; // [esp+98h] [ebp-550h] BYREF int v284; // [esp+9Ch] [ebp-54Ch] BYREF void *v285; // [esp+A0h] [ebp-548h] void *v286; // [esp+A4h] [ebp-544h] int v287; // [esp+ACh] [ebp-53Ch] void *v288[5]; // [esp+B4h] [ebp-534h] BYREF int v289; // [esp+C8h] [ebp-520h] BYREF _DWORD v290[5]; // [esp+CCh] [ebp-51Ch] BYREF int v291; // [esp+E0h] [ebp-508h] BYREF _DWORD v292[5]; // [esp+E4h] [ebp-504h] BYREF char *v293; // [esp+F8h] [ebp-4F0h] BYREF int v294; // [esp+FCh] [ebp-4ECh] char v295; // [esp+100h] [ebp-4E8h] BYREF int v296[2]; // [esp+110h] [ebp-4D8h] BYREF char v297; // [esp+118h] [ebp-4D0h] BYREF void *v298[2]; // [esp+128h] [ebp-4C0h] BYREF char v299; // [esp+130h] [ebp-4B8h] BYREF int v300; // [esp+140h] [ebp-4A8h] BYREF int v301; // [esp+144h] [ebp-4A4h] char v302; // [esp+148h] [ebp-4A0h] BYREF void *v303[2]; // [esp+158h] [ebp-490h] BYREF char v304; // [esp+160h] [ebp-488h] BYREF int v305[2]; // [esp+170h] [ebp-478h] BYREF char v306; // [esp+178h] [ebp-470h] BYREF void *v307[6]; // [esp+188h] [ebp-460h] BYREF void *v308; // [esp+1A0h] [ebp-448h] BYREF int v309[5]; // [esp+1A4h] [ebp-444h] BYREF int v310; // [esp+1B8h] [ebp-430h] BYREF int v311; // [esp+1BCh] [ebp-42Ch] BYREF char v312; // [esp+1C0h] [ebp-428h] BYREF int v313[2]; // [esp+1D0h] [ebp-418h] BYREF char v314; // [esp+1D8h] [ebp-410h] BYREF int v315[6]; // [esp+1E8h] [ebp-400h] BYREF char v316[8]; // [esp+200h] [ebp-3E8h] BYREF char v317[4]; // [esp+208h] [ebp-3E0h] BYREF int v318[49]; // [esp+20Ch] [ebp-3DCh] BYREF void *v319[2]; // [esp+2D0h] [ebp-318h] BYREF char v320[4]; // [esp+2D8h] [ebp-310h] BYREF int v321[49]; // [esp+2DCh] [ebp-30Ch] BYREF int v322; // [esp+3A0h] [ebp-248h] BYREF volatile signed __int32 *v323; // [esp+3A4h] [ebp-244h] BYREF char v324[4]; // [esp+3A8h] [ebp-240h] BYREF int v325[49]; // [esp+3ACh] [ebp-23Ch] BYREF int v326[2]; // [esp+470h] [ebp-178h] BYREF char v327[4]; // [esp+478h] [ebp-170h] BYREF _DWORD v328[91]; // [esp+47Ch] [ebp-16Ch] BYREF std::basic_stringstream,std::allocator>::basic_stringstream((int)v316); std::_Rb_tree_header::_Rb_tree_header(&v284); std::_Rb_tree_header::_Rb_tree_header(v288); v19 = operator new((struct type_info *)0x24, v254); std::_Rb_tree_header::_Rb_tree_header(v19 + 1); v20[6] = 0; v20[7] = 0; v20[8] = 0; zcc::shared_ptr::shared_ptr(v20); std::_Rb_tree_header::_Rb_tree_header(v290); std::_Rb_tree_header::_Rb_tree_header(v292); for ( i = (_DWORD *)a1[3]; a1 + 1 != i; i = (_DWORD *)std::_Rb_tree_increment(i) ) { v21 = i + 4; std::string::substr((void **)v305, i + 4, i[5] - 5, 0xFFFFFFFF); v22 = std::operator==((int)v305, ".wxml"); std::string::_M_dispose((void **)v305); if ( v22 ) { v280 = 0; v281 = 0; v282 = 0; WXML::DOMLib::Parser::Parser((int)v326); v273 = WXML::DOMLib::Parser::Parse((WXML::DOMLib::Parser *)v326, i[10], a2, (int)v21, &v280); if ( v273 ) { LABEL_37: WXML::DOMLib::Parser::~Parser((int)v326); std::vector::~vector((void **)&v280); goto LABEL_130; } WXML::DOMLib::Parser::GetParsed(&v322, (WXML::DOMLib::Parser *)v326); v23 = (int *)v285; v24 = &v284; while ( v23 ) { if ( (unsigned __int8)std::operator<((int)(v23 + 4), (int)v21) ) { v23 = (int *)v23[3]; } else { v24 = v23; v23 = (int *)v23[2]; } } if ( v24 == &v284 || (unsigned __int8)std::operator<((int)v21, (int)(v24 + 4)) ) { v262 = (std::ostream::sentry *)v24; v25 = (char *)operator new((struct type_info *)0x30, v255); v26 = (void **)(v25 + 16); v24 = (int *)v25; std::string::basic_string((_DWORD *)v25 + 4, (int)v21); v24[10] = 0; v24[11] = 0; insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( &v283, v262, (int)v26); if ( v28 ) { v29 = v28 == &v284 || insert_hint_unique_pos != 0; if ( !v29 ) { v263 = (std::ostream::sentry *)v28; v29 = std::operator<((int)v26, (int)(v28 + 4)); v28 = (int *)v263; } std::_Rb_tree_insert_and_rebalance(v29, v24, v28, &v284); ++v287; } else { v264 = (std::ostream::sentry *)insert_hint_unique_pos; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v24 + 11); std::string::_M_dispose(v26); operator delete(v24); v24 = (int *)v264; } } std::__shared_ptr::operator=(v24 + 10, &v322); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v323); v294 = 0; v293 = &v295; v295 = 0; v296[0] = (int)&v297; v296[1] = 0; v297 = 0; std::basic_stringstream,std::allocator>::basic_stringstream((int)v319); if ( v280 != v281 ) { v30 = std::operator<<>((std::ostream::sentry *)v320, "f_['"); WXML::Rewrite::ToStringCode((int)&v322, v21); v31 = std::operator<<(v30, &v322); v32 = std::operator<<>(v31, "']={};"); std::operator<<>(v32, a9); std::string::_M_dispose((void **)&v322); } while ( v273 < -1227133513 * (((char *)v281 - (char *)v280) >> 4) ) { v303[0] = &v304; v305[0] = (int)&v306; v298[0] = &v299; v300 = (int)&v302; v298[1] = 0; v299 = 0; v301 = 0; v302 = 0; v303[1] = 0; v304 = 0; v305[1] = 0; v306 = 0; v33 = WXML::Compiler::DealWxsTag((int)v21, &v280[28 * v273], v298, (int)&v300, (int *)v303, &v277, a2); if ( v33 ) goto LABEL_33; v34 = std::operator<<((std::ostream::sentry *)v320, a19); v35 = std::operator<<>(v34, "['"); WXML::Rewrite::ToStringCode((int)v315, v21); v36 = std::operator<<(v35, v315); v256 = std::operator<<>(v36, "']['"); WXML::Rewrite::ToStringCode((int)&v322, (int *)v298); v37 = std::operator<<(v256, &v322); std::operator<<>(v37, "'] ="); std::string::_M_dispose((void **)&v322); std::string::_M_dispose((void **)v315); if ( v301 ) { MMBizWxaAppComm::PathCombine(v21, &v300, (unsigned int *)v305); if ( *(_BYTE *)v305[0] == 47 ) { std::operator+((int)v307, 46, (int)v305); std::string::operator=(v305, v307); std::string::_M_dispose(v307); } if ( a1 + 1 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a1, (int)v305) ) { v38 = std::operator==((int)a7, "$gwx"); if ( (a8 & 0x20) != 0 || v38 ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v322); v40 = std::operator<<((std::ostream::sentry *)v324, v21); std::operator<<>(v40, ":"); v41 = (std::ostream::sentry *)std::ostream::operator<<(v277); std::operator<<>(v41, ":"); v42 = (std::ostream::sentry *)std::ostream::operator<<(v280[28 * v273 + 3]); v43 = std::operator<<>(v42, ":"); v44 = std::operator<<(v43, &v300); v45 = std::operator<<>(v44, " not found from "); std::operator<<(v45, v21); std::stringbuf::str((int)&v310, v325); v33 = 1; std::string::operator=(a2, &v310); std::string::_M_dispose((void **)&v310); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v322); LABEL_33: std::string::_M_dispose((void **)v305); std::string::_M_dispose(v303); std::string::_M_dispose((void **)&v300); std::string::_M_dispose(v298); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v319); std::string::_M_dispose((void **)v296); std::string::_M_dispose((void **)&v293); v273 = v33; goto LABEL_37; } } v39 = std::operator<<>((std::ostream::sentry *)v320, "f_['"); WXML::Rewrite::ToStringCode((int)&v322, v305); v46 = std::operator<<(v39, &v322); std::operator<<>(v46, "'] || "); std::string::_M_dispose((void **)&v322); v265 = std::operator<<>((std::ostream::sentry *)v320, "nv_require(\""); std::operator+((int)v315, "p_", (int)v305); WXML::Rewrite::ToStringCode((int)&v322, v315); v47 = std::operator<<(v265, &v322); v48 = std::operator<<>(v47, "\");"); std::operator<<>(v48, a9); std::string::_M_dispose((void **)&v322); std::string::_M_dispose((void **)v315); v49 = std::operator<<((std::ostream::sentry *)v320, a19); v50 = std::operator<<>(v49, "['"); WXML::Rewrite::ToStringCode((int)v315, v21); v51 = std::operator<<(v50, v315); v266 = std::operator<<>(v51, "']['"); WXML::Rewrite::ToStringCode((int)&v322, (int *)v298); v52 = std::operator<<(v266, &v322); v53 = std::operator<<>(v52, "']();"); std::operator<<>(v53, a9); std::string::_M_dispose((void **)&v322); v54 = (void **)v315; } else { std::operator+((int)v313, "m_", (int)v21); v55 = std::string::append(v313, ":"); std::string::basic_string(v315, v55); v56 = std::string::append(v315, (int)v298); std::string::basic_string(&v322, v56); WXML::Compiler::GetFuncId(&v308, &v291, (int)&v322); std::string::_M_dispose((void **)&v322); std::string::_M_dispose((void **)v315); std::string::_M_dispose((void **)v313); v33 = night::compile_ns((int)v21, (int)&v308, (int)v303, v277, (unsigned int *)v296, 0); if ( v33 ) { std::string::_M_assign((int)a2, (int)v296); std::string::_M_dispose(&v308); goto LABEL_33; } v267 = std::operator<<>((std::ostream::sentry *)v320, "nv_require(\""); std::operator+((int)&v310, "m_", (int)v21); v57 = std::string::append(&v310, ":"); std::string::basic_string(v313, v57); v58 = std::string::append(v313, (int)v298); std::string::basic_string(v315, v58); WXML::Rewrite::ToStringCode((int)&v322, v315); v59 = std::operator<<(v267, &v322); v60 = std::operator<<>(v59, "\");"); std::operator<<>(v60, a9); std::string::_M_dispose((void **)&v322); std::string::_M_dispose((void **)v315); std::string::_M_dispose((void **)v313); std::string::_M_dispose((void **)&v310); v61 = std::operator<<((std::ostream::sentry *)v320, v296); std::operator<<>(v61, a9); v54 = &v308; } std::string::_M_dispose(v54); std::string::_M_dispose((void **)v305); std::string::_M_dispose(v303); std::string::_M_dispose((void **)&v300); std::string::_M_dispose(v298); ++v273; } std::stringbuf::str((int)v313, v321); std::string::operator=(&v293, v313); std::string::_M_dispose((void **)v313); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v319); std::string::_M_dispose((void **)v296); if ( v294 ) { v62 = std::map::operator[](&v289, (int)v21); std::string::_M_assign((int)v62, (int)&v293); } std::string::_M_dispose((void **)&v293); WXML::DOMLib::Parser::~Parser((int)v326); std::vector::~vector((void **)&v280); } else { std::string::substr((void **)v315, v21, i[5] - 4, 0xFFFFFFFF); v63 = std::operator==((int)v315, ".wxs"); std::string::_M_dispose((void **)v315); if ( v63 ) { v310 = (int)&v312; v311 = 0; v312 = 0; std::operator+((int)v326, "p_", (int)v21); WXML::Compiler::GetFuncId((void **)v313, &v291, (int)v326); std::string::_M_dispose((void **)v326); v273 = night::compile_ns((int)v21, (int)v313, (int)(i + 10), 1, (unsigned int *)&v310, 0); if ( v273 ) { std::string::_M_assign((int)a2, (int)&v310); std::string::_M_dispose((void **)v313); std::string::_M_dispose((void **)&v310); goto LABEL_130; } std::basic_stringstream,std::allocator>::basic_stringstream((int)v326); v64 = std::operator<<>((std::ostream::sentry *)v327, "f_['"); WXML::Rewrite::ToStringCode((int)v315, v21); v65 = std::operator<<(v64, v315); v66 = std::operator<<>(v65, "'] = nv_require("); v67 = std::operator<<>(v66, 34); std::operator+((int)v319, "p_", (int)v21); WXML::Rewrite::ToStringCode((int)&v322, (int *)v319); v68 = std::operator<<(v67, &v322); v69 = std::operator<<>(v68, 34); v70 = std::operator<<>(v69, ");"); std::operator<<>(v70, a9); std::string::_M_dispose((void **)&v322); std::string::_M_dispose(v319); std::string::_M_dispose((void **)v315); v71 = std::operator<<((std::ostream::sentry *)v327, &v310); std::operator<<>(v71, a9); std::stringbuf::str((int)&v322, v328); v72 = std::map::operator[](&v289, (int)v21); std::string::operator=(v72, &v322); std::string::_M_dispose((void **)&v322); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v326); std::string::_M_dispose((void **)v313); std::string::_M_dispose((void **)&v310); } } } if ( a6 ) std::string::basic_string((void **)&v322, "global"); else std::string::basic_string((void **)&v322, "window"); v73 = &v322; WXML::Compiler::GetVersionInfo((int)v326, &v322); v74 = std::operator<<((std::ostream::sentry *)v317, v326); std::endl>(v74); std::string::_M_dispose((void **)v326); std::string::_M_dispose((void **)&v322); WXML::NameAllocator::NameAllocator(&v322, a16, a17); v75 = std::operator<<>((std::ostream::sentry *)v317, "var $gwxc"); std::operator<<>(v75, a9); v76 = std::operator<<>((std::ostream::sentry *)v317, "var $gaic={}"); std::operator<<>(v76, a9); v77 = std::operator<<((std::ostream::sentry *)v317, a7); v78 = std::operator<<>(v77, "=function(path,global){"); std::operator<<>(v78, a9); std::operator<<>((std::ostream::sentry *)v317, "if(typeof global === 'undefined') global={};"); std::operator<<>((std::ostream::sentry *)v317, "if(typeof __WXML_GLOBAL__ === 'undefined') {"); v79 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__={};"); std::operator<<>(v79, a9); if ( (a8 & 0x80) != 0 ) { std::string::basic_string((void **)v326, "life_cycle_callback_content"); v73 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a5, (int)v326); std::string::_M_dispose((void **)v326); if ( a5 + 1 != v73 ) { std::string::basic_string((void **)v326, "life_cycle_callback_content"); v80 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a5, (int)v326); std::operator<<((std::ostream::sentry *)v317, v80 + 10); std::string::_M_dispose((void **)v326); } } std::operator<<>((std::ostream::sentry *)v317, "}"); v81 = std::operator<<>( (std::ostream::sentry *)v317, "__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};"); std::operator<<>(v81, a9); if ( !std::operator==((int)a7, "$gwx") && (a8 & 0x60) == 0 ) { v82 = std::operator<<>((std::ostream::sentry *)v317, "$gwx('init', global);"); std::operator<<>(v82, a9); } v83 = std::operator<<>( (std::ostream::sentry *)v317, "function _(a,b){if(typeof(b)!='undefined')a.children.push(b);}"); std::operator<<>(v83, a9); v84 = std::operator<<>( (std::ostream::sentry *)v317, "function _v(k){if(typeof(k)!='undefined')return {tag:'virtual','wxKey':k,children:[]};return {tag:'virtual',children:[]};}"); std::operator<<>(v84, a9); v85 = std::operator<<>( (std::ostream::sentry *)v317, "function _n(tag){$gwxc++;if($gwxc>=16000){throw 'Dom limit exceeded, please check if there\\'s any mistake you" "\\'ve made.'};return {tag:'wx-'+tag,attr:{},children:[],n:[],raw:{},generics:{}}}"); std::operator<<>(v85, a9); v86 = std::operator<<>( (std::ostream::sentry *)v317, "function _p(a,b){b&&a.properities.push(b);}"); std::operator<<>(v86, a9); v87 = std::operator<<>( (std::ostream::sentry *)v317, "function _s(scope,env,key){return typeof(scope[key])!='undefined'?scope[key]:env[key]}"); std::operator<<>(v87, a9); v88 = std::operator<<>((std::ostream::sentry *)v317, "function _wp(m){console.warn(\"WXMLRT_"); v89 = std::operator<<(v88, a7); v90 = std::operator<<>(v89, ":\"+m)}"); std::operator<<>(v90, a9); v91 = std::operator<<>( (std::ostream::sentry *)v317, "function _wl(tname,prefix){_wp(prefix+':-1:-1:-1: Template `' + tname + '` is being called recursively, will be stop.')}"); std::operator<<>(v91, a9); v92 = std::operator<<>((std::ostream::sentry *)v317, aGwnConsoleWarn); std::operator<<>(v92, a9); v93 = std::operator<<>( (std::ostream::sentry *)v317, "function wfor( to_iter, func, env, _s, global, father, itemname, indexname, keyname )\n" "{\n" "var _n = wh.hn( to_iter ) === 'n'; \n" "var scope = wh.rv( _s ); \n" "var has_old_item = scope.hasOwnProperty(itemname);\n" "var has_old_index = scope.hasOwnProperty(indexname);\n" "var old_item = scope[itemname];\n" "var old_index = scope[indexname];\n" "var full = Object.prototype.toString.call(wh.rv(to_iter));\n" "var type = full[8]; \n" "if( type === 'N' && full[10] === 'l' ) type = 'X'; \n" "var _y;\n" "if( _n )\n" "{\n" "if( type === 'A' ) \n" "{\n" "var r_iter_item;\n" "for( var i = 0 ; i < to_iter.length ; i++ )\n" "{\n" "scope[itemname] = to_iter[i];\n" "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" "r_iter_item = wh.rv(to_iter[i]);\n" "var key = keyname && r_iter_item ? (keyname===\"*this\" ? r_iter_item : wh.rv(r_iter_item[keyname])) : undefin" "ed;\n" "_y = _v(key);\n" "_(father,_y);\n" "func( env, scope, _y, global );\n" "}\n" "}\n" "else if( type === 'O' ) \n" "{\n" "var i = 0;\n" "var r_iter_item;\n" "for( var k in to_iter )\n" "{\n" "scope[itemname] = to_iter[k];\n" "scope[indexname] = _n ? k : wh.nh(k, 'h');\n" "r_iter_item = wh.rv(to_iter[k]);\n" "var key = keyname && r_iter_item ? (keyname===\"*this\" ? r_iter_item : wh.rv(r_iter_item[keyname])) : undefin" "ed;\n" "_y = _v(key);\n" "_(father,_y);\n" "func( env,scope,_y,global );\n" "i++;\n" "}\n" "}\n" "else if( type === 'S' ) \n" "{\n" "for( var i = 0 ; i < to_iter.length ; i++ )\n" "{\n" "scope[itemname] = to_iter[i];\n" "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" "_y = _v( to_iter[i] + i );\n" "_(father,_y);\n" "func( env,scope,_y,global );\n" "}\n" "}\n" "else if( type === 'N' ) \n" "{\n" "for( var i = 0 ; i < to_iter ; i++ )\n" "{\n" "scope[itemname] = i;\n" "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" "_y = _v( i );\n" "_(father,_y);\n" "func(env,scope,_y,global);\n" "}\n" "}\n" "else\n" "{\n" "}\n" "}\n" "else\n" "{\n" "var r_to_iter = wh.rv(to_iter);\n" "var r_iter_item, iter_item;\n" "if( type === 'A' ) \n" "{\n" "for( var i = 0 ; i < r_to_iter.length ; i++ )\n" "{\n" "iter_item = r_to_iter[i];\n" "iter_item = wh.hn(iter_item)==='n' ? wh.nh(iter_item,'h') : iter_item;\n" "r_iter_item = wh.rv( iter_item );\n" "scope[itemname] = iter_item\n" "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" "var key = keyname && r_iter_item ? (keyname===\"*this\" ? r_iter_item : wh.rv(r_iter_item[keyname])) : undefin" "ed;\n" "_y = _v(key);\n" "_(father,_y);\n" "func( env, scope, _y, global );\n" "}\n" "}\n" "else if( type === 'O' ) \n" "{\n" "var i=0;\n" "for( var k in r_to_iter )\n" "{\n" "iter_item = r_to_iter[k];\n" "iter_item = wh.hn(iter_item)==='n'? wh.nh(iter_item,'h') : iter_item;\n" "r_iter_item = wh.rv( iter_item );\n" "scope[itemname] = iter_item;\n" "scope[indexname] = _n ? k : wh.nh(k, 'h');\n" "var key = keyname && r_iter_item ? (keyname===\"*this\" ? r_iter_item : wh.rv(r_iter_item[keyname])) : undefin" "ed;\n" "_y=_v(key);\n" "_(father,_y);\n" "func( env, scope, _y, global );\n" "i++\n" "}\n" "}\n" "else if( type === 'S' ) \n" "{\n" "for( var i = 0 ; i < r_to_iter.length ; i++ )\n" "{\n" "iter_item = wh.nh(r_to_iter[i],'h');\n" "scope[itemname] = iter_item;\n" "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" "_y = _v( to_iter[i] + i );\n" "_(father,_y);\n" "func( env, scope, _y, global );\n" "}\n" "}\n" "else if( type === 'N' ) \n" "{\n" "for( var i = 0 ; i < r_to_iter ; i++ )\n" "{\n" "iter_item = wh.nh(i,'h');\n" "scope[itemname] = iter_item;\n" "scope[indexname]= _n ? i : wh.nh(i,'h');\n" "_y = _v( i );\n" "_(father,_y);\n" "func(env,scope,_y,global);\n" "}\n" "}\n" "else\n" "{\n" "}\n" "}\n" "if(has_old_item)\n" "{\n" "scope[itemname]=old_item;\n" "}\n" "else\n" "{\n" "delete scope[itemname];\n" "}\n" "if(has_old_index)\n" "{\n" "scope[indexname]=old_index;\n" "}\n" "else\n" "{\n" "delete scope[indexname];\n" "}\n" "}\n"); std::operator<<>(v93, a9); v94 = std::operator<<>( (std::ostream::sentry *)v317, "function _ca(o)\n" "{ \n" "if ( wh.hn(o) == 'h' ) return true;\n" "if ( typeof o !== \"object\" ) return false;\n" "for(var i in o){ \n" "if ( o.hasOwnProperty(i) ){\n" "if (_ca(o[i])) return true;\n" "}\n" "}\n" "return false;\n" "}\n" "function _da( node, attrname, opindex, raw, o )\n" "{\n" "var isaffected = false;\n" "var value = $gdc( raw, \"\", 2 );\n" "if ( o.ap && value && value.constructor===Function ) \n" "{\n" "attrname = \"$wxs:\" + attrname; \n" "node.attr[\"$gdc\"] = $gdc;\n" "}\n" "if ( o.is_affected || _ca(raw) ) \n" "{\n" "node.n.push( attrname );\n" "node.raw[attrname] = raw;\n" "}\n" "node.attr[attrname] = value;\n" "}\n" "function _r( node, attrname, opindex, env, scope, global ) \n" "{\n" "global.opindex=opindex;\n" "var o = {}, _env;\n" "var a = grb( z[opindex], env, scope, global, o );\n" "_da( node, attrname, opindex, a, o );\n" "}\n" "function _rz( z, node, attrname, opindex, env, scope, global ) \n" "{\n" "global.opindex=opindex;\n" "var o = {}, _env;\n" "var a = grb( z[opindex], env, scope, global, o );\n" "_da( node, attrname, opindex, a, o );\n" "}\n" "function _o( opindex, env, scope, global )\n" "{\n" "global.opindex=opindex;\n" "var nothing = {};\n" "var r = grb( z[opindex], env, scope, global, nothing );\n" "return (r&&r.constructor===Function) ? undefined : r;\n" "}\n" "function _oz( z, opindex, env, scope, global )\n" "{\n" "global.opindex=opindex;\n" "var nothing = {};\n" "var r = grb( z[opindex], env, scope, global, nothing );\n" "return (r&&r.constructor===Function) ? undefined : r;\n" "}\n" "function _1( opindex, env, scope, global, o )\n" "{\n" "var o = o || {};\n" "global.opindex=opindex;\n" "return gra( z[opindex], env, scope, global, o );\n" "}\n" "function _1z( z, opindex, env, scope, global, o )\n" "{\n" "var o = o || {};\n" "global.opindex=opindex;\n" "return gra( z[opindex], env, scope, global, o );\n" "}\n" "function _2( opindex, func, env, scope, global, father, itemname, indexname, keyname )\n" "{\n" "var o = {};\n" "var to_iter = _1( opindex, env, scope, global );\n" "wfor( to_iter, func, env, scope, global, father, itemname, indexname, keyname );\n" "}\n" "function _2z( z, opindex, func, env, scope, global, father, itemname, indexname, keyname )\n" "{\n" "var o = {};\n" "var to_iter = _1z( z, opindex, env, scope, global );\n" "wfor( to_iter, func, env, scope, global, father, itemname, indexname, keyname );\n" "}\n"); std::operator<<>(v94, a9); v95 = std::operator<<>( (std::ostream::sentry *)v317, "\n" "function _m(tag,attrs,generics,env,scope,global)\n" "{\n" "var tmp=_n(tag);\n" "var base=0;\n" "for(var i = 0 ; i < attrs.length ; i+=2 )\n" "{\n" "if(base+attrs[i+1]<0)\n" "{\n" "tmp.attr[attrs[i]]=true;\n" "}\n" "else\n" "{\n" "_r(tmp,attrs[i],base+attrs[i+1],env,scope,global);\n" "if(base===0)base=attrs[i+1];\n" "}\n" "}\n" "for(var i=0;i>(v95, a9); v96 = std::operator<<>((std::ostream::sentry *)v317, aVarNfInitFunct); std::operator<<>(v96, a9); v97 = std::operator<<>( (std::ostream::sentry *)v317, "function _af(p, a, r, c){\n" "p.extraAttr = {\"t_action\": a, \"t_rawid\": r };\n" "if ( typeof(c) != 'undefined' ) p.extraAttr.t_cid = c;\n" "}\n"); std::operator<<>(v97, a9); if ( !a6 ) { v98 = std::operator<<>((std::ostream::sentry *)v317, "function _gv( )"); std::operator<<>(v98, a9); v99 = std::operator<<>( (std::ostream::sentry *)v317, "{if( typeof( window.__webview_engine_version__) == 'undefined' ) return 0.0;"); std::operator<<>(v99, a9); v100 = std::operator<<>( (std::ostream::sentry *)v317, "return window.__webview_engine_version__;}"); std::operator<<>(v100, a9); } v101 = std::operator<<>( (std::ostream::sentry *)v317, "function _ai(i,p,e,me,r,c){var x=_grp(p,e,me);if(x)i.push(x);else{i.push('');_wp(me+':import:'+r+':'+c+': Pat" "h `'+p+'` not found from `'+me+'`.')}}"); std::operator<<>(v101, a9); v102 = std::operator<<>( (std::ostream::sentry *)v317, "function _grp(p,e,me){if(p[0]!='/'){var mepart=me.split('/');mepart.pop();var ppart=p.split('/');for(var i=0;" "i>(v102, a9); std::operator<<>( (std::ostream::sentry *)v317, "function _gd(p,c,e,d){if(!c)return;if(d[p][c])return d[p][c];for(var x=e[p].i.length-1;x>=0;x--){if(e[p].i[x]&&d[e[p" "].i[x]][c])return d[e[p].i[x]][c]};"); std::operator<<>( (std::ostream::sentry *)v317, "for(var x=e[p].ti.length-1;x>=0;x--){var q=_grp(e[p].ti[x],e,p);if(q&&d[q][c])return d[q][c]}"); std::operator<<>( (std::ostream::sentry *)v317, "var ii=_gapi(e,p);for(var x=0;x>( (std::ostream::sentry *)v317, "for(var k=e[p].j.length-1;k>=0;k--)if(e[p].j[k]){for(var q=e[e[p].j[k]].ti.length-1;q>=0;q--){var pp=_grp(e[e[p].j[k" "]].ti[q],e,p);if(pp&&d[pp][c]){return d[pp][c]}}}"); v103 = std::operator<<>((std::ostream::sentry *)v317, "}"); std::operator<<>(v103, a9); std::operator<<>( (std::ostream::sentry *)v317, "function _gapi(e,p){if(!p)return [];if($gaic[p]){return $gaic[p]};var ret=[],q=[],h=0,t=0,put={},visited={};q.push(p" ");visited[p]=true;t++;while(h>( (std::ostream::sentry *)v317, "var a=q[h++];for(var i=0;i>( (std::ostream::sentry *)v317, "var nd=e[a].ic[i];var np=_grp(nd,e,a);if(np&&!visited[np]){visited[np]=true;q.push(np);t++;}}for(var i=0;a!=p&&i>( (std::ostream::sentry *)v317, "var ni=e[a].ti[i];var nm=_grp(ni,e,a);if(nm&&!put[nm]){put[nm]=true;ret.push(nm);}}"); v104 = std::operator<<>((std::ostream::sentry *)v317, "}$gaic[p]=ret;return ret;}"); std::operator<<>(v104, a9); std::operator<<>((std::ostream::sentry *)v317, "var $ixc={};"); v105 = std::operator<<>( (std::ostream::sentry *)v317, "function _ic(p,ent,me,e,s,r,gg){var x=_grp(p,ent,me);ent[me].j.push(x);if(x){if($ixc[x]){_wp('-1:include:-1:-" "1: `'+p+'` is being included in a loop, will be stop.');return;}$ixc[x]=true;try{ent[x].f(e,s,r,gg)}catch(e){" "}$ixc[x]=false;}else{_wp(me+':include:-1:-1: Included path `'+p+'` not found from `'+me+'`.')}}"); std::operator<<>(v105, a9); std::operator<<>( (std::ostream::sentry *)v317, "function _w(tn,f,line,c){_wp(f+':template:'+line+':'+c+': Template `'+tn+'` not found.');}"); v106 = std::operator<<>( (std::ostream::sentry *)v317, "function _ev(dom){var changed=false;delete dom.properities;delete dom.n;if(dom.children){do{changed=false;var" " newch = [];for(var i=0;i>(v106, a9); v107 = std::operator<<>( (std::ostream::sentry *)v317, "function _tsd( root )\n" "{\n" "if( root.tag == \"wx-wx-scope\" ) \n" "{\n" "root.tag = \"virtual\";\n" "root.wxCkey = \"11\";\n" "root['wxScopeData'] = root.attr['wx:scope-data'];\n" "delete root.n;\n" "delete root.raw;\n" "delete root.generics;\n" "delete root.attr;\n" "}\n" "for( var i = 0 ; root.children && i < root.children.length ; i++ )\n" "{\n" "_tsd( root.children[i] );\n" "}\n" "return root;\n" "}\n"); std::operator<<>(v107, a9); v108 = std::operator<<>((std::ostream::sentry *)v317, "var "); v109 = std::operator<<(v108, a13); v110 = std::operator<<>(v109, "={}"); std::operator<<>(v110, a9); v111 = std::operator<<>( (std::ostream::sentry *)v317, "if(typeof(global.entrys)==='undefined')global.entrys={};"); v112 = std::operator<<(v111, a13); v113 = std::operator<<>(v112, "=global.entrys;"); std::operator<<>(v113, a9); v114 = std::operator<<>((std::ostream::sentry *)v317, "var "); v115 = std::operator<<(v114, a14); v116 = std::operator<<>(v115, "={}"); std::operator<<>(v116, a9); v117 = std::operator<<>( (std::ostream::sentry *)v317, "if(typeof(global.defines)==='undefined')global.defines={};"); v118 = std::operator<<(v117, a14); v119 = std::operator<<>(v118, "=global.defines;"); std::operator<<>(v119, a9); v120 = std::operator<<>((std::ostream::sentry *)v317, "var "); v121 = std::operator<<(v120, a19); v122 = std::operator<<>(v121, "={}"); std::operator<<>(v122, a9); v123 = std::operator<<>( (std::ostream::sentry *)v317, "if(typeof(global.modules)==='undefined')global.modules={};"); v124 = std::operator<<(v123, a19); v125 = std::operator<<>(v124, "=global.modules || {};"); std::operator<<>(v125, a9); v126 = std::operator<<>((std::ostream::sentry *)v317, "var "); v127 = std::operator<<(v126, a15); v128 = std::operator<<>(v127, "={}"); std::operator<<>(v128, a9); v272 = a8 & 2; if ( (a8 & 2) != 0 ) { v129 = std::operator<<>((std::ostream::sentry *)v317, "var cs"); std::operator<<>(v129, a9); } std::_Rb_tree_header::_Rb_tree_header(v309); v319[0] = v286; while ( v319[0] != &v284 ) { WXML::DOMLib::WXMLDom::RewriteTree(*((_DWORD *)v319[0] + 10), (const char **)v73); v73 = (int *)*((_DWORD *)v319[0] + 10); std::string::basic_string((void **)v326, (unsigned __int8 *)&off_52CB31); v130 = std::map>::operator[](a4, v326); WXML::DOMLib::WXMLDom::MarkIfHasDescendant((int)v73, v130); std::string::_M_dispose((void **)v326); if ( a6 ) { v73 = (int *)*((_DWORD *)v319[0] + 10); std::string::basic_string((void **)v326, (unsigned __int8 *)&off_52CB31); v131 = std::map>::operator[](a4, v326); WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(v73, v131); std::string::_M_dispose((void **)v326); } std::_Rb_tree_iterator>>::operator++((int *)v319); } v132 = std::operator<<>( (std::ostream::sentry *)v317, "__WXML_GLOBAL__.ops_cached = __WXML_GLOBAL__.ops_cached || {}"); std::operator<<>(v132, a9); v133 = std::operator<<>( (std::ostream::sentry *)v317, "__WXML_GLOBAL__.ops_set = __WXML_GLOBAL__.ops_set || {};"); std::operator<<>(v133, a9); v134 = std::operator<<>( (std::ostream::sentry *)v317, "__WXML_GLOBAL__.ops_init = __WXML_GLOBAL__.ops_init || {};"); std::operator<<>(v134, a9); v135 = std::operator<<>((std::ostream::sentry *)v317, "var z=__WXML_GLOBAL__.ops_set."); v136 = std::operator<<(v135, a7); v137 = std::operator<<>(v136, " || [];"); std::operator<<>(v137, a9); if ( (a8 & 4) != 0 ) { v138 = std::operator<<>( (std::ostream::sentry *)v317, "__WXML_GLOBAL__.debuginfo_set = __WXML_GLOBAL__.debuginfo_set || {};"); std::operator<<>(v138, a9); v139 = std::operator<<>( (std::ostream::sentry *)v317, "var debugInfo=__WXML_GLOBAL__.debuginfo_set."); v140 = std::operator<<(v139, a7); v141 = std::operator<<>(v140, " || [];"); std::operator<<>(v141, a9); } v274 = 0; v305[0] = (int)v286; while ( (int *)v305[0] != &v284 ) { std::_Rb_tree_header::_Rb_tree_header(&v311); v274 = (std::ostream::sentry *)((char *)v274 + 1); v307[1] = 0; v307[0] = 0; std::basic_stringstream,std::allocator>::basic_stringstream((int)v326); v142 = std::operator<<((std::ostream::sentry *)v327, a7); std::operator<<>(v142, "_"); std::ostream::operator<<(v274); std::stringbuf::str((int)v313, v328); std::string::basic_string((void **)v315, "gz"); std::string::operator+=(v315, (int)v313); v143 = std::operator<<>((std::ostream::sentry *)v317, "function "); v144 = std::operator<<(v143, v315); v145 = std::operator<<>(v144, "(){"); std::operator<<>(v145, a9); v146 = std::operator<<>((std::ostream::sentry *)v317, "if( __WXML_GLOBAL__.ops_cached."); v147 = std::operator<<(v146, v313); std::operator<<>(v147, ")"); v148 = std::operator<<>((std::ostream::sentry *)v317, "return __WXML_GLOBAL__.ops_cached."); v149 = std::operator<<(v148, v313); std::operator<<>(v149, a9); v150 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__.ops_cached."); v151 = std::operator<<(v150, v313); v152 = std::operator<<>(v151, "=[];"); std::operator<<>(v152, a9); std::operator<<>((std::ostream::sentry *)v317, "(function(z){var a=11;"); if ( (a8 & 4) != 0 ) v153 = std::operator<<>( (std::ostream::sentry *)v317, "function Z(ops,debugLine){z.push(['11182016',ops,debugLine])}"); else v153 = std::operator<<>((std::ostream::sentry *)v317, "function Z(ops){z.push(ops)}"); std::operator<<>(v153, a9); WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord( *(_DWORD **)(v305[0] + 40), (int *)(v305[0] + 16), a2, (int)v316, &v310, (int *)v307, (a8 & 4) != 0, (int)a5); v154 = std::operator<<>((std::ostream::sentry *)v317, "})(__WXML_GLOBAL__.ops_cached."); v155 = std::operator<<(v154, v313); std::operator<<>(v155, ");"); v156 = std::operator<<>((std::ostream::sentry *)v317, "return __WXML_GLOBAL__.ops_cached."); v157 = std::operator<<(v156, v313); std::operator<<>(v157, a9); v158 = std::operator<<>((std::ostream::sentry *)v317, "}"); std::operator<<>(v158, a9); std::string::basic_string(v319, "get_page_z_name"); v159 = std::map::operator[]((_DWORD *)(*(_DWORD *)(v305[0] + 40) + 272), v319); std::string::_M_assign((int)v159, (int)v315); std::string::_M_dispose(v319); std::string::_M_dispose((void **)v315); std::string::_M_dispose((void **)v313); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v326); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v310); std::_Rb_tree_iterator>>::operator++(v305); } v160 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__.ops_set."); v161 = std::operator<<(v160, a7); v162 = std::operator<<>(v161, "=z;"); std::operator<<>(v162, a9); v163 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__.ops_init."); v164 = std::operator<<(v163, a7); v165 = std::operator<<>(v164, "=true;"); std::operator<<>(v165, a9); if ( (a8 & 4) != 0 ) { v166 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__.debuginfo_set."); v167 = std::operator<<(v166, a7); v168 = std::operator<<>(v167, "=debugInfo;"); std::operator<<>(v168, a9); } std::operator<<>((std::ostream::sentry *)v317, "var nv_require=function(){var nnm={"); for ( j = (_DWORD *)v292[2]; j != v292; j = (_DWORD *)std::_Rb_tree_increment((int)j) ) { v275 = std::operator<<>((std::ostream::sentry *)v317, 34); WXML::Rewrite::ToStringCode((int)v326, j + 4); v170 = std::operator<<(v275, v326); v171 = std::operator<<>(v170, 34); std::operator<<>(v171, ":np_"); v172 = (std::ostream::sentry *)std::ostream::operator<<(j[10]); std::operator<<>(v172, ","); std::string::_M_dispose((void **)v326); } std::operator<<>((std::ostream::sentry *)v317, "};var nom={};return function(n){"); std::operator<<>( (std::ostream::sentry *)v317, "if(n[0]==='p'&&n[1]==='_'&&f_[n.slice(2)])return f_[n.slice(2)];"); std::operator<<>( (std::ostream::sentry *)v317, "return function(){if(!nnm[n]) return undefined;"); std::operator<<>( (std::ostream::sentry *)v317, "try{if(!nom[n])nom[n]=nnm[n]();return nom[n];}"); std::operator<<>((std::ostream::sentry *)v317, "catch(e){"); std::operator<<>((std::ostream::sentry *)v317, "e.message=e.message.replace(/nv_/g,'');"); std::operator<<>( (std::ostream::sentry *)v317, "var tmp = e.stack.substring(0,e.stack.lastIndexOf(n));"); std::operator<<>( (std::ostream::sentry *)v317, "e.stack = tmp.substring(0,tmp.lastIndexOf('\\n'));"); std::operator<<>((std::ostream::sentry *)v317, "e.stack = e.stack.replace(/\\snv_/g,' ');"); std::operator<<>((std::ostream::sentry *)v317, "e.stack = $gstack(e.stack);"); v173 = std::operator<<>( (std::ostream::sentry *)v317, "e.stack += '\\n at ' + n.substring(2);console.error(e);}"); std::operator<<>(v173, a9); v174 = std::operator<<>((std::ostream::sentry *)v317, "}}}()"); std::operator<<>(v174, a9); for ( k = (_DWORD *)v290[2]; k != v290; k = (_DWORD *)std::_Rb_tree_increment((int)k) ) { v176 = std::operator<<((std::ostream::sentry *)v317, k + 10); std::operator<<>(v176, a9); } v319[0] = v286; while ( 1 ) { v177 = v278; if ( v319[0] == &v284 ) break; std::string::basic_string(v326, (int)v319[0] + 16); WXML::DOMLib::StrCache::Insert(v177, (int)v326); std::string::_M_dispose((void **)v326); v178 = *((_DWORD *)v319[0] + 10); *(_DWORD *)(v178 + 248) = v278; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((_DWORD *)(v178 + 252), (int)v279); WXML::DOMLib::WXMLDom::RecordAllPath(*((_DWORD *)v319[0] + 10)); std::_Rb_tree_iterator>>::operator++((int *)v319); } WXML::DOMLib::StrCache::RenderPathDefine(v278, (int)v316); v179 = 0; v310 = (int)v286; while ( (int *)v310 != &v284 ) { v180 = std::operator<<((std::ostream::sentry *)v317, a14); std::operator<<>(v180, (char *)off_52D00E); v276 = (std::ostream::sentry *)v278; std::string::basic_string(v326, v310 + 16); StrID = WXML::DOMLib::StrCache::GetStrID(v276, (int)v326); std::ostream::operator<<(StrID); std::string::_M_dispose((void **)v326); v182 = std::operator<<>((std::ostream::sentry *)v317, "]]={}"); std::operator<<>(v182, a9); std::string::basic_string((void **)v326, "get_page_z_name"); v183 = std::map::operator[]((_DWORD *)(*(_DWORD *)(v310 + 40) + 272), v326); v273 = WXML::Compiler::RenderDefine( (unsigned int **)(v310 + 40), (int *)(v310 + 16), &v308, (int)a2, (int)v316, (int)a5, v272 != 0, a8, a9, a10, a11, a12, (int)a7, a13, a14, a15, a16, a17, a18, v183); std::string::_M_dispose((void **)v326); if ( v273 ) goto LABEL_129; std::basic_stringstream,std::allocator>::basic_stringstream((int)v326); v313[0] = (int)&v314; v313[1] = 0; v314 = 0; std::operator<<>((std::ostream::sentry *)v327, "m"); v261 = v179 + 1; std::ostream::operator<<(v179); std::stringbuf::str((int)v319, v328); std::string::operator=(v313, v319); std::string::_M_dispose(v319); v184 = *(_DWORD **)(v310 + 40); std::string::basic_string((void **)v315, "get_page_z_name"); v185 = std::map::operator[]((_DWORD *)(*(_DWORD *)(v310 + 40) + 272), v315); std::string::basic_string(v319, "r"); v273 = WXML::DOMLib::WXMLDom::RenderMeAsFunction( v184, (int *)(v310 + 16), a13, (int)a2, v313, (int)v316, &v322, a10, a11, a12, (int *)v319, a14, a9, a15, 0, v272 != 0, a8, v185); std::string::_M_dispose(v319); std::string::_M_dispose((void **)v315); if ( v273 ) { std::string::_M_dispose((void **)v313); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v326); goto LABEL_129; } v186 = std::operator<<((std::ostream::sentry *)v317, a13); std::operator<<>(v186, (char *)off_52D00E); v187 = v278; std::string::basic_string(v319, v310 + 16); v188 = WXML::DOMLib::StrCache::GetStrID(v187, (int)v319); std::ostream::operator<<(v188); std::string::_M_dispose(v319); v189 = std::operator<<>((std::ostream::sentry *)v317, "]]={f:"); v190 = std::operator<<(v189, v313); std::operator<<>(v190, ",j:[],i:[],ti:["); v268 = 0; for ( m = 0; ; ++m ) { v192 = *(_DWORD *)(v310 + 40); v193 = *(_DWORD *)(v192 + 72); if ( m >= (*(_DWORD *)(v192 + 76) - v193) >> 3 ) break; if ( std::operator==(*(_DWORD *)(v193 + 8 * m), "import") ) { v194 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v310 + 40) + 72) + 8 * m); v258 = (_DWORD *)(v194 + 52); std::string::basic_string(v319, (unsigned __int8 *)&off_523BD1); v195 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v194 + 48), (int)v319); std::string::_M_dispose(v319); if ( v195 != v258 ) { if ( v268 ) std::operator<<>((std::ostream::sentry *)v317, ","); std::operator<<>((std::ostream::sentry *)v317, "x["); v257 = v278; v259 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v310 + 40) + 72) + 8 * m); std::string::basic_string((void **)v315, (unsigned __int8 *)&off_523BD1); v196 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v259 + 48), (int)v315) + 10; v197 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v196); std::string::basic_string(v319, v197); v198 = WXML::DOMLib::StrCache::GetStrID(v257, (int)v319); std::ostream::operator<<(v198); std::string::_M_dispose(v319); std::string::_M_dispose((void **)v315); std::operator<<>((std::ostream::sentry *)v317, "]"); v268 = (std::ostream::sentry *)((char *)v268 + 1); } } } std::operator<<>((std::ostream::sentry *)v317, "],ic:["); for ( n = 0; ; ++n ) { v200 = *(_DWORD *)(v310 + 40); v201 = *(_DWORD *)(v200 + 72); if ( n >= (*(_DWORD *)(v200 + 76) - v201) >> 3 ) break; if ( std::operator==(*(_DWORD *)(v201 + 8 * n), "include") ) { v202 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v310 + 40) + 72) + 8 * n); v269 = (std::ostream::sentry *)(v202 + 52); std::string::basic_string(v319, (unsigned __int8 *)&off_523BD1); v203 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v202 + 48), (int)v319); std::string::_M_dispose(v319); if ( v203 != v269 ) { if ( v273 ) std::operator<<>((std::ostream::sentry *)v317, ","); std::operator<<>((std::ostream::sentry *)v317, "x["); v260 = v278; v270 = *(std::ostream::sentry **)(*(_DWORD *)(*(_DWORD *)(v310 + 40) + 72) + 8 * n); std::string::basic_string((void **)v315, (unsigned __int8 *)&off_523BD1); v204 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)v270 + 12, (int)v315) + 10; v205 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v204); std::string::basic_string(v319, v205); v206 = WXML::DOMLib::StrCache::GetStrID(v260, (int)v319); std::ostream::operator<<(v206); std::string::_M_dispose(v319); std::string::_M_dispose((void **)v315); std::operator<<>((std::ostream::sentry *)v317, "]"); ++v273; } } } v207 = std::operator<<>((std::ostream::sentry *)v317, "]}"); std::operator<<>(v207, a9); std::string::_M_dispose((void **)v313); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v326); std::_Rb_tree_iterator>>::operator++(&v310); v179 = v261; } v208 = std::operator<<>((std::ostream::sentry *)v317, "if(path&&"); v209 = std::operator<<(v208, a13); v210 = std::operator<<>(v209, "[path]){"); std::operator<<>(v210, a9); if ( !a6 ) { v211 = std::operator<<>((std::ostream::sentry *)v317, "window.__wxml_comp_version__=0.02"); std::operator<<>(v211, a9); } v212 = std::operator<<>( (std::ostream::sentry *)v317, "return function(env,dd,global){$gwxc=0;var root={\"tag\":\"wx-page\"};root.children=[]"); std::operator<<>(v212, a9); v213 = std::operator<<>((std::ostream::sentry *)v317, "var main="); v214 = std::operator<<(v213, a13); v215 = std::operator<<>(v214, "[path].f"); std::operator<<>(v215, a9); if ( (a8 & 2) != 0 ) { v216 = std::operator<<>((std::ostream::sentry *)v317, "cs=[]"); std::operator<<>(v216, a9); } if ( (a8 & 0x10) != 0 ) { v217 = std::operator<<>( (std::ostream::sentry *)v317, "console.log(path+': benv:\\n'+JSON.stringify(env))"); std::operator<<>(v217, a9); } std::operator<<>((std::ostream::sentry *)v317, "if (typeof global===\"undefined\")global={};"); v218 = std::operator<<>((std::ostream::sentry *)v317, "global.f=$gdc("); v219 = std::operator<<(v218, a19); v220 = std::operator<<>(v219, "[path],\"\",1);"); std::operator<<>(v220, a9); if ( !a6 ) { v221 = std::operator<<>( (std::ostream::sentry *)v317, "if(typeof(window.__webview_engine_version__)!='undefined'&&window.__webview_engine_version__+1e-6>=0.02+1e-" "6&&window.__mergeData__)"); std::operator<<>(v221, a9); v222 = std::operator<<>((std::ostream::sentry *)v317, "{"); std::operator<<>(v222, a9); v223 = std::operator<<>((std::ostream::sentry *)v317, "env=window.__mergeData__(env,dd);"); std::operator<<>(v223, a9); v224 = std::operator<<>((std::ostream::sentry *)v317, "}"); std::operator<<>(v224, a9); } v225 = std::operator<<>((std::ostream::sentry *)v317, "try{"); std::operator<<>(v225, a9); if ( (a8 & 0x10) != 0 ) { v226 = std::operator<<>( (std::ostream::sentry *)v317, "console.log(path+': aenv:\\n'+JSON.stringify(env)+', '+JSON.stringify(dd))"); std::operator<<>(v226, a9); } if ( (a8 & 0x80) != 0 ) { v227 = std::operator<<>((std::ostream::sentry *)v317, "if(__WXML_GLOBAL__."); v228 = std::operator<<>(v227, "before_calculate"); std::operator<<>(v228, ")"); v229 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__."); v230 = std::operator<<>(v229, "before_calculate"); v231 = std::operator<<>(v230, "(path, env)"); std::operator<<>(v231, a9); } v232 = std::operator<<>((std::ostream::sentry *)v317, "main(env,{},root,global);"); std::operator<<>(v232, a9); if ( (a8 & 0x80) != 0 ) { v233 = std::operator<<>((std::ostream::sentry *)v317, "if(__WXML_GLOBAL__."); v234 = std::operator<<>(v233, "after_calculate"); std::operator<<>(v234, ")"); v235 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__."); v236 = std::operator<<>(v235, "after_calculate"); v237 = std::operator<<>(v236, "(path, root)"); std::operator<<>(v237, a9); } v238 = std::operator<<>((std::ostream::sentry *)v317, "_tsd(root)"); std::operator<<>(v238, a9); if ( !a6 ) { v239 = std::operator<<>( (std::ostream::sentry *)v317, "if(typeof(window.__webview_engine_version__)=='undefined'|| window.__webview_engine_version__+1e-6<0.01+1e-" "6){return _ev(root);}"); std::operator<<>(v239, a9); } v240 = std::operator<<>((std::ostream::sentry *)v317, "}catch(err){"); std::operator<<>(v240, a9); if ( (a8 & 2) != 0 ) { v241 = std::operator<<>((std::ostream::sentry *)v317, "console.log(cs, env);"); std::operator<<>(v241, a9); } v242 = std::operator<<>((std::ostream::sentry *)v317, "console.log(err)"); std::operator<<>(v242, a9); if ( (a8 & 2) != 0 ) { v243 = std::operator<<>((std::ostream::sentry *)v317, "throw err"); std::operator<<>(v243, a9); } v244 = std::operator<<>((std::ostream::sentry *)v317, "}"); std::operator<<>(v244, a9); if ( (a8 & 0x10) != 0 ) { v245 = std::operator<<>( (std::ostream::sentry *)v317, "console.log(path+': resp:\\n'+JSON.stringify(root))"); std::operator<<>(v245, a9); } v246 = std::operator<<>((std::ostream::sentry *)v317, "return root;"); std::operator<<>(v246, a9); v247 = std::operator<<>((std::ostream::sentry *)v317, "}"); std::operator<<>(v247, a9); v248 = std::operator<<>((std::ostream::sentry *)v317, "}"); std::operator<<>(v248, a9); v249 = std::operator<<>((std::ostream::sentry *)v317, "}"); std::operator<<>(v249, a9); if ( (a8 & 8) != 0 ) { v326[0] = (int)v286; while ( (int *)v326[0] != &v284 ) { v250 = std::operator<<>((std::ostream::sentry *)v317, "//"); v251 = std::operator<<(v250, (int *)(v326[0] + 16)); v252 = std::operator<<>(v251, ":"); std::endl>(v252); WXML::DOMLib::WXMLDom::Print(*(_DWORD **)(v326[0] + 40), 0, "//", v316); std::_Rb_tree_iterator>>::operator++(v326); } } std::stringbuf::str((int)v326, v318); std::string::operator=(a3, v326); std::string::_M_dispose((void **)v326); v273 = 0; LABEL_129: std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v308); WXML::NameAllocator::~NameAllocator((int)&v322); LABEL_130: std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v291); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v289); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v279); std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(v288[1]); std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(v285); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v316); return v273; } // 410AB9: variable 'v254' is possibly undefined // 410ACC: variable 'v20' is possibly undefined // 410C5C: variable 'v255' is possibly undefined // 410C9B: variable 'v28' is possibly undefined // 4606E0: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); // 523BD1: using guessed type void *off_523BD1; // 52CB31: using guessed type void *off_52CB31; // 410A55: using guessed type char var_310[4]; // 410A55: using guessed type char var_240[4]; // 410A55: using guessed type int var_23C[49]; // 410A55: using guessed type int var_30C[49]; // 410A55: using guessed type char var_170[4]; // 410A55: using guessed type _DWORD var_16C[91]; // 410A55: using guessed type char var_3E0[4]; // 410A55: using guessed type int var_444[5]; // 410A55: using guessed type int var_3DC[49]; //----- (00413A7C) -------------------------------------------------------- unsigned int __cdecl WXML::Compiler::ParseAndResolveWxmlDependencies( int a1, unsigned int *a2, _DWORD *a3, _DWORD *a4, _DWORD *a5) { int v5; // edi bool v6; // si unsigned int v7; // eax _DWORD *v9; // ebx _DWORD *v10; // esi char *v11; // eax void **v12; // esi int insert_hint_unique_pos; // eax _DWORD *v14; // edx void (__cdecl *v15)(void *); // ecx char v16; // al int v17; // ecx int v18; // eax volatile signed __int32 *v19; // edx volatile signed __int32 *v20; // eax _DWORD *v21; // ebx _DWORD *v22; // esi char *v23; // eax void **v24; // esi int v25; // eax _DWORD *v26; // edx _DWORD *v27; // edi char v28; // al int v29; // ecx volatile signed __int32 *v30; // edx volatile signed __int32 *v31; // eax int j; // ebx unsigned int v33; // esi void *v34; // edi unsigned int v35; // edx _DWORD *v36; // eax char *v37; // ecx int v38; // esi char *v39; // edi volatile signed __int32 **k; // esi _DWORD *v41; // eax int v42; // edx void (__cdecl *v43)(void *); // [esp+4h] [ebp-74h] _DWORD *v44; // [esp+20h] [ebp-58h] _DWORD *v45; // [esp+20h] [ebp-58h] _DWORD *v46; // [esp+20h] [ebp-58h] _DWORD *v47; // [esp+28h] [ebp-50h] int v48; // [esp+28h] [ebp-50h] _DWORD *v49; // [esp+28h] [ebp-50h] int v50; // [esp+28h] [ebp-50h] _DWORD *i; // [esp+2Ch] [ebp-4Ch] unsigned int v52; // [esp+2Ch] [ebp-4Ch] int v53; // [esp+34h] [ebp-44h] BYREF volatile signed __int32 *v54; // [esp+38h] [ebp-40h] BYREF char *v55; // [esp+3Ch] [ebp-3Ch] BYREF int v56; // [esp+40h] [ebp-38h] int v57; // [esp+44h] [ebp-34h] int v58; // [esp+48h] [ebp-30h] BYREF volatile signed __int32 *v59[4]; // [esp+4Ch] [ebp-2Ch] BYREF unsigned int v60; // [esp+5Ch] [ebp-1Ch] std::string::operator=(a2, (char *)&byte_523BD0); for ( i = *(_DWORD **)(a1 + 12); (_DWORD *)(a1 + 4) != i; i = (_DWORD *)std::_Rb_tree_increment(i) ) { v5 = (int)(i + 4); std::string::substr((void **)&v58, i + 4, i[5] - 5, 0xFFFFFFFF); v6 = std::operator==((int)&v58, ".wxml"); std::string::_M_dispose((void **)&v58); if ( v6 ) { v55 = 0; v56 = 0; v57 = 0; v53 = 0; v54 = 0; v7 = WXML::Compiler::ParseWxmlSource(v5, i + 10, a2, &v55, &v53); if ( v7 ) { v52 = v7; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v54); std::vector::~vector((void **)&v55); return v52; } v47 = a3 + 1; v9 = a3 + 1; v10 = (_DWORD *)a3[2]; while ( v10 ) { if ( (unsigned __int8)std::operator<((int)(v10 + 4), v5) ) { v10 = (_DWORD *)v10[3]; } else { v9 = v10; v10 = (_DWORD *)v10[2]; } } if ( v47 == v9 || (unsigned __int8)std::operator<(v5, (int)(v9 + 4)) ) { v44 = v9; v11 = (char *)operator new((struct type_info *)0x30, v43); v12 = (void **)(v11 + 16); v9 = v11; std::string::basic_string((_DWORD *)v11 + 4, v5); v9[10] = 0; v9[11] = 0; insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( a3, v44, (int)v12); v43 = v15; if ( v14 ) { v16 = v47 == v14 || insert_hint_unique_pos != 0; if ( !v16 ) { v45 = v14; v16 = std::operator<((int)v12, (int)(v14 + 4)); v14 = v45; } std::_Rb_tree_insert_and_rebalance(v16, v9, v14, v47); ++a3[5]; } else { v48 = insert_hint_unique_pos; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v9 + 11); std::string::_M_dispose(v12); operator delete(v9); v9 = (_DWORD *)v48; } } v17 = v9[10]; v18 = v53; v53 = 0; v19 = v54; v54 = 0; v58 = v17; v9[10] = v18; v20 = (volatile signed __int32 *)v9[11]; v9[11] = v19; v59[0] = v20; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v59); v49 = a4 + 1; v21 = a4 + 1; v22 = (_DWORD *)a4[2]; while ( v22 ) { if ( (unsigned __int8)std::operator<((int)(v22 + 4), v5) ) { v22 = (_DWORD *)v22[3]; } else { v21 = v22; v22 = (_DWORD *)v22[2]; } } if ( v49 == v21 || (unsigned __int8)std::operator<(v5, (int)(v21 + 4)) ) { v46 = v21; v23 = (char *)operator new((struct type_info *)0x34, v43); v24 = (void **)(v23 + 16); v21 = v23; std::string::basic_string((_DWORD *)v23 + 4, v5); v21[10] = 0; v21[11] = 0; v21[12] = 0; v25 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( a4, v46, (int)v24); v27 = v26; if ( v26 ) { v28 = v49 == v26 || v25 != 0; if ( !v28 ) v28 = std::operator<((int)v24, (int)(v26 + 4)); std::_Rb_tree_insert_and_rebalance(v28, v21, v27, v49); ++a4[5]; } else { v50 = v25; std::vector::~vector((void **)v21 + 10); std::string::_M_dispose(v24); operator delete(v21); v21 = (_DWORD *)v50; } } v29 = v21[10]; v30 = (volatile signed __int32 *)v21[11]; v31 = (volatile signed __int32 *)v21[12]; v21[10] = v55; v21[11] = v56; v21[12] = v57; v58 = v29; v59[0] = v30; v59[1] = v31; v55 = 0; v56 = 0; v57 = 0; std::vector::~vector((void **)&v58); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v54); std::vector::~vector((void **)&v55); } } for ( j = a3[3]; a3 + 1 != (_DWORD *)j; j = std::_Rb_tree_increment(j) ) { std::_Rb_tree_header::_Rb_tree_header(v59); WXML::DOMLib::recurseDependencies((int *)(j + 40), (int *)(j + 16), &v58); v33 = v60; if ( v60 ) { if ( v60 > 0x5555555 ) std::__throw_length_error((std::length_error *)"cannot create std::vector larger than max_size()"); v55 = 0; v56 = 0; v57 = 0; std::_Vector_base::_M_create_storage(&v55, v60); v34 = v55; v35 = v33; v36 = v55; do { v37 = (char *)(v36 + 2); v36[1] = 0; v36 += 6; *(v36 - 6) = v37; *((_BYTE *)v36 - 16) = 0; --v35; } while ( v35 ); v38 = (int)v34 + 24 * v33; v39 = v55; v56 = v38; for ( k = (volatile signed __int32 **)v59[2]; k != v59; k = (volatile signed __int32 **)std::_Rb_tree_increment(k) ) { std::string::_M_assign((int)v39, (int)(k + 4)); v39 += 24; } v41 = std::map>::operator[](a5, j + 16); std::vector::operator=((int)v41, (int *)&v55); std::vector::~vector((void ***)&v55, v42); } std::_Rb_tree,std::less,std::allocator>::~_Rb_tree((int)&v58); } return 0; } // 413BC0: variable 'v43' is possibly undefined // 413BF5: variable 'v15' is possibly undefined // 413BF9: variable 'v14' is possibly undefined // 413D48: variable 'v26' is possibly undefined // 413F20: variable 'v42' is possibly undefined // 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); //----- (00413F7A) -------------------------------------------------------- #error "414028: call analysis failed (funcsize=52)" //----- (00414049) -------------------------------------------------------- int __cdecl WXML::Compiler::CompileLazyWithParsed( _DWORD *a1, _DWORD *a2, int a3, int a4, unsigned int *a5, _DWORD *a6, _DWORD *a7, int a8, _DWORD *a9, std::_Rb_tree_header *a10, char a11, char a12, _DWORD *a13, int a14, _DWORD *a15, char a16, int a17, int a18, char a19, int *a20, int *a21, int *a22, int *a23, int *a24, int *a25, int a26, int a27, int a28, int *a29) { char v29; // dl int v30; // esi char v31; // al std::ostream::sentry *v32; // ecx std::ostream::sentry *v33; // edx std::ostream::sentry *v34; // edi char v35; // al int *v36; // edx int *v37; // edi int v38; // eax int *v39; // ebx _DWORD *v40; // eax _DWORD *v41; // eax int v42; // edx int v43; // esi _DWORD *v44; // eax _DWORD *v45; // eax _DWORD *v46; // eax int v47; // edi _DWORD *v48; // eax int v49; // edx int v50; // esi int insert_hint_unique_pos; // eax int *v52; // edx _DWORD *v53; // edi int i; // ebx int v55; // esi int *v56; // edx char v57; // al int v58; // eax int *p_k; // esi _DWORD *v60; // eax int v61; // edx int v62; // ebx int *v63; // eax _DWORD *v64; // eax std::ostream::sentry *v65; // edi std::ostream::sentry *v66; // ebx int m; // ebx int v68; // edi int *v69; // eax _DWORD *v70; // edi int *v71; // eax std::ostream::sentry *v72; // ebx std::ostream::sentry *v73; // eax std::ostream::sentry *v74; // eax std::ostream::sentry *v75; // eax _DWORD *v76; // eax std::ostream::sentry *v77; // esi std::ostream::sentry *v78; // eax std::ostream::sentry *v79; // eax std::ostream::sentry *v80; // eax std::ostream::sentry *v81; // eax std::ostream::sentry *v82; // eax _DWORD *v83; // eax std::ostream::sentry *v84; // eax std::ostream::sentry *v85; // eax std::ostream::sentry *v86; // eax std::ostream::sentry *v87; // eax std::ostream::sentry *v88; // eax std::ostream::sentry *v89; // eax std::ostream::sentry *v90; // eax std::ostream::sentry *v91; // eax std::ostream::sentry *v92; // eax std::ostream::sentry *v93; // eax std::ostream::sentry *v94; // eax std::ostream::sentry *v95; // eax std::ostream::sentry *v96; // eax std::ostream::sentry *v97; // eax std::ostream::sentry *v98; // eax std::ostream::sentry *v99; // eax std::ostream::sentry *v100; // eax std::ostream::sentry *v101; // eax std::ostream::sentry *v102; // eax std::ostream::sentry *v103; // eax std::ostream::sentry *v104; // eax std::ostream::sentry *v105; // eax std::ostream::sentry *v106; // eax std::ostream::sentry *v107; // eax std::ostream::sentry *v108; // eax std::ostream::sentry *v109; // eax std::ostream::sentry *v110; // eax std::ostream::sentry *v111; // eax std::ostream::sentry *v112; // eax std::ostream::sentry *v113; // eax std::ostream::sentry *v114; // eax std::ostream::sentry *v115; // eax std::ostream::sentry *v116; // eax std::ostream::sentry *v117; // eax int **v118; // eax int *v119; // ebx std::ostream::sentry *v120; // eax std::ostream::sentry *v121; // eax std::ostream::sentry *v122; // eax std::ostream::sentry *v123; // eax std::ostream::sentry *v124; // eax std::ostream::sentry *v125; // eax std::ostream::sentry *v126; // eax std::ostream::sentry *v127; // eax std::ostream::sentry *v128; // eax std::ostream::sentry *v129; // eax std::ostream::sentry *v130; // eax std::ostream::sentry *v131; // eax std::ostream::sentry *v132; // eax std::ostream::sentry *v133; // eax std::ostream::sentry *v134; // eax std::ostream::sentry *v135; // eax _DWORD *v136; // eax std::ostream::sentry *v137; // eax std::ostream::sentry *v138; // eax std::ostream::sentry *v139; // eax std::ostream::sentry *v140; // eax std::ostream::sentry *v141; // eax std::ostream::sentry *v142; // eax std::ostream::sentry *v143; // eax std::ostream::sentry *v144; // eax std::ostream::sentry *v145; // eax _DWORD *ii; // ebx std::ostream::sentry *v147; // eax std::ostream::sentry *v148; // eax std::ostream::sentry *v149; // eax std::ostream::sentry *v150; // eax std::ostream::sentry *v151; // eax _DWORD *jj; // ebx std::ostream::sentry *v153; // eax _DWORD *v154; // eax _DWORD *v155; // eax int *v156; // eax int v157; // ebx _DWORD *v158; // ecx int *v159; // eax int **v160; // eax std::ostream::sentry *v161; // eax int StrID; // eax std::ostream::sentry *v163; // eax int *v164; // eax unsigned int *v165; // eax int *v166; // ebx std::ostream::sentry *v167; // eax int v168; // eax std::ostream::sentry *v169; // eax std::ostream::sentry *v170; // eax unsigned int v171; // edx int v172; // ebx _DWORD *v173; // ebx _DWORD *v174; // ecx int v175; // eax int v176; // eax unsigned int v177; // edx int v178; // ebx _DWORD *v179; // ebx _DWORD *v180; // ecx int v181; // eax int v182; // eax std::ostream::sentry *v183; // eax std::ostream::sentry *v184; // eax std::ostream::sentry *v185; // eax std::ostream::sentry *v186; // eax std::ostream::sentry *v187; // eax std::ostream::sentry *v188; // eax std::ostream::sentry *v189; // eax std::ostream::sentry *v190; // eax std::ostream::sentry *v191; // eax std::ostream::sentry *v192; // eax std::ostream::sentry *v193; // eax std::ostream::sentry *v194; // eax std::ostream::sentry *v195; // eax std::ostream::sentry *v196; // eax std::ostream::sentry *v197; // eax std::ostream::sentry *v198; // eax std::ostream::sentry *v199; // eax std::ostream::sentry *v200; // eax std::ostream::sentry *v201; // eax std::ostream::sentry *v202; // eax std::ostream::sentry *v203; // eax std::ostream::sentry *v204; // eax std::ostream::sentry *v205; // eax std::ostream::sentry *v206; // eax std::ostream::sentry *v207; // eax std::ostream::sentry *v208; // eax std::ostream::sentry *v209; // eax std::ostream::sentry *v210; // eax std::ostream::sentry *v211; // eax std::ostream::sentry *v212; // eax std::ostream::sentry *v213; // eax std::ostream::sentry *v214; // eax std::ostream::sentry *v215; // eax std::ostream::sentry *v216; // eax std::ostream::sentry *v217; // eax std::ostream::sentry *v218; // eax std::ostream::sentry *v219; // eax std::ostream::sentry *v220; // eax int **v221; // eax int *v222; // ebx std::ostream::sentry *v223; // eax std::ostream::sentry *v224; // eax std::ostream::sentry *v225; // eax _DWORD *v226; // eax _DWORD *v227; // eax bool v228; // bl std::ostream::sentry *v229; // esi char *v230; // eax std::ostream::sentry *v231; // eax std::ostream::sentry *v232; // eax std::ostream::sentry *v233; // eax int *nn; // ebx _DWORD *v235; // eax _DWORD *v236; // eax _DWORD *v237; // eax void (__cdecl *v239)(void *); // [esp+4h] [ebp-1D4h] void (__cdecl *v240)(void *); // [esp+4h] [ebp-1D4h] _DWORD *v241; // [esp+54h] [ebp-184h] _DWORD *v242; // [esp+54h] [ebp-184h] int v243; // [esp+58h] [ebp-180h] int *v244; // [esp+5Ch] [ebp-17Ch] int v245; // [esp+60h] [ebp-178h] _DWORD *v246; // [esp+60h] [ebp-178h] _DWORD *v247; // [esp+60h] [ebp-178h] int v248; // [esp+64h] [ebp-174h] int v249; // [esp+64h] [ebp-174h] int v250; // [esp+68h] [ebp-170h] std::ostream::sentry *v251; // [esp+6Ch] [ebp-16Ch] int *v252; // [esp+6Ch] [ebp-16Ch] char v253; // [esp+70h] [ebp-168h] int v254; // [esp+7Ch] [ebp-15Ch] bool v255; // [esp+80h] [ebp-158h] int *v256; // [esp+84h] [ebp-154h] int v257; // [esp+84h] [ebp-154h] _DWORD *v258; // [esp+84h] [ebp-154h] unsigned int v259; // [esp+84h] [ebp-154h] unsigned int mm; // [esp+84h] [ebp-154h] std::ostream::sentry *v261; // [esp+88h] [ebp-150h] int *v262; // [esp+88h] [ebp-150h] int v263; // [esp+88h] [ebp-150h] int *v264; // [esp+88h] [ebp-150h] int v265; // [esp+88h] [ebp-150h] char *v266; // [esp+88h] [ebp-150h] int v267; // [esp+8Ch] [ebp-14Ch] int *v268; // [esp+90h] [ebp-148h] int *kk; // [esp+90h] [ebp-148h] int v270; // [esp+94h] [ebp-144h] char v271; // [esp+98h] [ebp-140h] int v272; // [esp+98h] [ebp-140h] int *v273; // [esp+98h] [ebp-140h] int v274; // [esp+98h] [ebp-140h] _DWORD *v275; // [esp+98h] [ebp-140h] _DWORD *v276; // [esp+98h] [ebp-140h] int v277; // [esp+98h] [ebp-140h] unsigned int **v278; // [esp+98h] [ebp-140h] bool v279; // [esp+9Ch] [ebp-13Ch] std::ostream::sentry *v280; // [esp+9Ch] [ebp-13Ch] bool v281; // [esp+9Ch] [ebp-13Ch] int v282; // [esp+9Ch] [ebp-13Ch] std::ostream::sentry *v283; // [esp+9Ch] [ebp-13Ch] std::ostream::sentry *v284; // [esp+9Ch] [ebp-13Ch] std::ostream::sentry *v285; // [esp+9Ch] [ebp-13Ch] std::ostream::sentry *v286; // [esp+9Ch] [ebp-13Ch] std::ostream::sentry *v287; // [esp+9Ch] [ebp-13Ch] std::ostream::sentry *v288; // [esp+9Ch] [ebp-13Ch] unsigned int *v289; // [esp+9Ch] [ebp-13Ch] std::ostream::sentry *v290; // [esp+9Ch] [ebp-13Ch] int n; // [esp+A8h] [ebp-130h] BYREF int v292[2]; // [esp+ACh] [ebp-12Ch] BYREF int v293; // [esp+B4h] [ebp-124h] BYREF int v294; // [esp+B8h] [ebp-120h] BYREF void *v295; // [esp+BCh] [ebp-11Ch] int *v296; // [esp+C0h] [ebp-118h] int v297; // [esp+CCh] [ebp-10Ch] BYREF _DWORD v298[5]; // [esp+D0h] [ebp-108h] BYREF int v299; // [esp+E4h] [ebp-F4h] BYREF _DWORD v300[5]; // [esp+E8h] [ebp-F0h] BYREF int v301; // [esp+FCh] [ebp-DCh] BYREF int v302[5]; // [esp+100h] [ebp-D8h] BYREF int v303[6]; // [esp+114h] [ebp-C4h] BYREF int v304; // [esp+12Ch] [ebp-ACh] BYREF volatile signed __int32 *v305[5]; // [esp+130h] [ebp-A8h] BYREF int v306[6]; // [esp+144h] [ebp-94h] BYREF int v307; // [esp+15Ch] [ebp-7Ch] BYREF int v308; // [esp+160h] [ebp-78h] BYREF _DWORD *v309; // [esp+164h] [ebp-74h] int v310; // [esp+170h] [ebp-68h] int j; // [esp+174h] [ebp-64h] BYREF volatile signed __int32 *v312; // [esp+178h] [ebp-60h] BYREF int v313; // [esp+17Ch] [ebp-5Ch] int k; // [esp+18Ch] [ebp-4Ch] BYREF volatile signed __int32 *v315[18]; // [esp+190h] [ebp-48h] BYREF std::_Rb_tree_header::_Rb_tree_header(&v294); std::_Rb_tree_header::_Rb_tree_header(v298); std::_Rb_tree_header::_Rb_tree_header(v300); v271 = v29; v30 = a1[3]; v253 = v31; while ( a1 + 1 != (_DWORD *)v30 ) { std::string::substr((void **)&v304, (_DWORD *)(v30 + 16), *(_DWORD *)(v30 + 20) - 5, 0xFFFFFFFF); v279 = std::operator==((int)&v304, ".wxml"); std::string::_M_dispose((void **)&v304); if ( v279 ) { v280 = (std::ostream::sentry *)(a3 + 4); v32 = (std::ostream::sentry *)(a3 + 4); v33 = *(std::ostream::sentry **)(a3 + 8); v34 = v33; while ( v34 ) { v251 = v32; v261 = v33; v35 = std::operator<((int)v34 + 16, v30 + 16); v33 = v261; v32 = v251; if ( v35 ) { v34 = (std::ostream::sentry *)*((_DWORD *)v34 + 3); } else { v32 = v34; v34 = (std::ostream::sentry *)*((_DWORD *)v34 + 2); } } v262 = (int *)v33; if ( v280 == v32 || (unsigned __int8)std::operator<(v30 + 16, (int)v32 + 16) ) { std::operator+((int)&j, "Inner error: wxs source token for '", v30 + 16); v236 = std::string::append(&j, "' not found."); std::string::basic_string(&k, v236); std::string::operator=(a5, &k); std::string::_M_dispose((void **)&k); std::string::_M_dispose((void **)&j); v282 = -1152; goto LABEL_184; } v36 = v262; v37 = (int *)(a3 + 4); while ( v36 ) { v252 = v36; if ( (unsigned __int8)std::operator<((int)(v36 + 4), v30 + 16) ) { v36 = (int *)v252[3]; } else { v37 = v252; v36 = (int *)v252[2]; } } if ( v280 == (std::ostream::sentry *)v37 || (unsigned __int8)std::operator<(v30 + 16, (int)(v37 + 4)) ) std::__throw_out_of_range((std::out_of_range *)"map::at"); v38 = WXML::Compiler::ProcessWxsInline( (int *)(v30 + 16), v37 + 10, v271, a17, a29, a1, a5, &v297, &v299, (a18 & 4) != 0, v253); } else { std::string::substr((void **)v306, (_DWORD *)(v30 + 16), *(_DWORD *)(v30 + 20) - 4, 0xFFFFFFFF); v281 = std::operator==((int)v306, ".wxs"); std::string::_M_dispose((void **)v306); if ( !v281 ) goto LABEL_21; v38 = WXML::Compiler::ProcessWxsFile((int *)(v30 + 16), v30 + 40, v271, (int)a5, &v297, &v299); } v282 = v38; if ( v38 ) goto LABEL_184; LABEL_21: v30 = std::_Rb_tree_increment(v30); } v283 = (std::ostream::sentry *)(a8 + 4); if ( !a12 ) { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(void **)(a8 + 8)); *(_DWORD *)(a8 + 8) = 0; *(_DWORD *)(a8 + 12) = v283; *(_DWORD *)(a8 + 16) = v283; *(_DWORD *)(a8 + 20) = 0; std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::__shared_ptr,std::allocator>>>(&j); v39 = &k; std::string::basic_string((void **)&k, "__COMMON__"); v40 = std::map,std::allocator>>>::operator[]( &v293, &k); std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::operator=( v40, &j); std::string::_M_dispose((void **)&k); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v312); j = 0; v312 = 0; v313 = 0; std::string::basic_string((void **)&k, "__COMMON__"); v41 = std::map>::operator[]((_DWORD *)a8, &k); std::vector::_M_move_assign(v41, &j); std::string::_M_dispose((void **)&k); std::vector::~vector((void ***)&j, v42); if ( a11 ) { if ( a13[1] && *(_BYTE *)*a13 == 47 ) std::string::substr((void **)&k, a13, 1u, 0xFFFFFFFF); else std::string::basic_string(&k, (int)a13); v39 = &k; WXML::Compiler::CalculateOutputChunkKeys(a10, (int)&k, a4, a14, (_DWORD *)a8); std::string::_M_dispose((void **)&k); } else { v272 = *((_DWORD *)a10 + 1); v43 = *(_DWORD *)a10; while ( v43 != v272 ) { std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::__shared_ptr,std::allocator>>>(&k); v44 = std::map,std::allocator>>>::operator[]( &v293, v43); std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::operator=( v44, &k); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v315); std::operator+((int)&j, "./", v43); v45 = std::string::append(&j, ".wxml"); std::string::basic_string(&k, v45); v307 = 0; v308 = 0; v309 = 0; v46 = __gnu_cxx::new_allocator::allocate(1u); v47 = (int)(v46 + 6); v307 = (int)v46; v309 = v46 + 6; std::string::basic_string(v46, (int)&k); v39 = &v307; v308 = v47; v48 = std::map>::operator[]((_DWORD *)a8, v43); v43 += 24; std::vector::_M_move_assign(v48, &v307); std::vector::~vector((void ***)&v307, v49); std::string::_M_dispose((void **)&k); std::string::_M_dispose((void **)&j); } } v263 = *((_DWORD *)a10 + 1); v50 = *(_DWORD *)a10; std::_Rb_tree_header::_Rb_tree_header(&v308); while ( v263 != v50 ) { insert_hint_unique_pos = std::_Rb_tree,std::less,std::allocator>::_M_get_insert_hint_unique_pos( &v307, &v308, v50); v273 = v52; v239 = (void (__cdecl *)(void *))v39; if ( v52 ) { LOBYTE(v39) = v52 == &v308 || insert_hint_unique_pos != 0; if ( !(_BYTE)v39 ) LOBYTE(v39) = std::operator<(v50, (int)(v52 + 4)); v53 = operator new((struct type_info *)0x28, v239); std::string::basic_string(v53 + 4, v50); v39 = (int *)(unsigned __int8)v39; std::_Rb_tree_insert_and_rebalance((char)v39, v53, v273, &v308); ++v310; } v50 += 24; } for ( i = a2[3]; a2 + 1 != (_DWORD *)i; i = std::_Rb_tree_increment(i) ) { std::string::substr((void **)&j, (_DWORD *)(i + 16), 2u, *(_DWORD *)(i + 20) - 7); v55 = (int)v309; v56 = &v308; while ( v55 ) { v264 = v56; v57 = std::operator<(v55 + 16, (int)&j); v56 = v264; if ( v57 ) { v55 = *(_DWORD *)(v55 + 12); } else { v56 = (int *)v55; v55 = *(_DWORD *)(v55 + 8); } } if ( v56 == &v308 || (unsigned __int8)std::operator<((int)&j, (int)(v56 + 4)) ) { std::string::basic_string((void **)&k, "__COMMON__"); v237 = std::map>::operator[]((_DWORD *)a8, &k); std::vector::push_back(v237, i + 16); std::string::_M_dispose((void **)&k); } std::string::_M_dispose((void **)&j); } std::_Rb_tree,std::less,std::allocator>::~_Rb_tree((int)&v307); } std::string::basic_string((void **)&v307, "__COMMON__"); v58 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_lower_bound( *(_DWORD *)(a8 + 8), (int)v283, (int)&v307); p_k = (int *)v58; if ( v283 != (std::ostream::sentry *)v58 && (unsigned __int8)std::operator<((int)&v307, v58 + 16) ) p_k = (int *)(a8 + 4); std::string::_M_dispose((void **)&v307); if ( v283 == (std::ostream::sentry *)p_k ) { j = 0; v312 = 0; v313 = 0; std::string::basic_string((void **)&k, "__COMMON__"); v60 = std::map>::operator[]((_DWORD *)a8, &k); std::vector::_M_move_assign(v60, &j); std::string::_M_dispose((void **)&k); std::vector::~vector((void ***)&j, v61); } for ( j = *(_DWORD *)(a8 + 12); ; std::_Rb_tree_iterator>>::operator++(&j) ) { v254 = j; if ( v283 == (std::ostream::sentry *)j ) break; p_k = &v294; v62 = j + 16; v63 = (int *)std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_lower_bound( (int)v295, (int)&v294, j + 16); if ( v63 == &v294 || (unsigned __int8)std::operator<(v62, (int)(v63 + 4)) ) { std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::__shared_ptr,std::allocator>>>(&k); v64 = std::map,std::allocator>>>::operator[]( &v293, v62); std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::operator=( v64, &k); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v315); } } std::string::basic_string((void **)&k, "__COMMON__"); v265 = *std::map,std::allocator>>>::operator[]( &v293, &k); std::string::_M_dispose((void **)&k); for ( k = *(_DWORD *)(a8 + 12); v254 != k; std::_Rb_tree_iterator>>::operator++(&k) ) { p_k = *(int **)(k + 40); v256 = *(int **)(k + 44); v284 = (std::ostream::sentry *)(a2 + 1); while ( 1 ) { v274 = (int)p_k; if ( p_k == v256 ) break; v65 = (std::ostream::sentry *)(a2 + 1); v66 = (std::ostream::sentry *)a2[2]; while ( v66 ) { if ( (unsigned __int8)std::operator<((int)v66 + 16, (int)p_k) ) { v66 = (std::ostream::sentry *)*((_DWORD *)v66 + 3); } else { v65 = v66; v66 = (std::ostream::sentry *)*((_DWORD *)v66 + 2); } } if ( v65 != v284 && (unsigned __int8)std::operator<((int)p_k, (int)v65 + 16) ) v65 = (std::ostream::sentry *)(a2 + 1); p_k += 6; if ( v284 == v65 ) { std::operator+((int)&j, "WXML file not found: ", v274); std::string::operator=(a5, &j); std::string::_M_dispose((void **)&j); v282 = -1260; goto LABEL_184; } } } std::_Rb_tree_header::_Rb_tree_header(v302); for ( m = a2[3]; a2 + 1 != (_DWORD *)m; m = std::_Rb_tree_increment(m) ) { WXML::DOMLib::WXMLDom::RewriteTree(*(_DWORD *)(m + 40), (const char **)p_k); v68 = *(_DWORD *)(m + 40); p_k = &k; std::string::basic_string((void **)&k, (unsigned __int8 *)&off_52CB31); v69 = std::map>::operator[](a9, &k); WXML::DOMLib::WXMLDom::MarkIfHasDescendant(v68, v69); std::string::_M_dispose((void **)&k); if ( a16 ) { v70 = *(_DWORD **)(m + 40); std::string::basic_string((void **)&k, (unsigned __int8 *)&off_52CB31); v71 = std::map>::operator[](a9, &k); WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(v70, v71); std::string::_M_dispose((void **)&k); } } v72 = (std::ostream::sentry *)(v265 + 8); if ( a16 ) std::string::basic_string((void **)&j, "global"); else std::string::basic_string((void **)&j, "__globalThis"); WXML::Compiler::GetVersionInfo((int)&k, &j); v73 = std::operator<<(v72, &k); std::endl>(v73); std::string::_M_dispose((void **)&k); std::string::_M_dispose((void **)&j); WXML::NameAllocator::NameAllocator(&k, a26, a27); v74 = std::operator<<>(v72, "var $gwxc"); std::operator<<>(v74, a19); v75 = std::operator<<>(v72, "var $gaic={}"); std::operator<<>(v75, a19); if ( !a16 ) std::operator<<>( v72, "var outerGlobal=typeof __globalThis==='undefined'?window:__globalThis;"); v250 = 0; v267 = a18 & 2; for ( n = *(_DWORD *)(a8 + 12); v254 != n; std::_Rb_tree_iterator>>::operator++(&n) ) { v270 = n + 16; v266 = (char *)*std::map,std::allocator>>>::operator[]( &v293, n + 16); v255 = std::operator==(v270, "__COMMON__"); if ( v255 ) { std::string::basic_string(v303, a17); } else { __gnu_cxx::__to_xstring( (void **)&j, (int (__cdecl *)(unsigned __int8 *, int, int, char *))vsnprintf_0, 16, (int)"%d", v250); std::operator+(&v307, a17, "_XC_"); std::operator+(v303, &v307, (unsigned int *)&j); std::string::_M_dispose((void **)&v307); std::string::_M_dispose((void **)&j); ++v250; } v76 = std::map::operator[](a7, v270); std::string::_M_assign((int)v76, (int)v303); v77 = (std::ostream::sentry *)(v266 + 8); if ( (a18 & 2) != 0 ) { v78 = std::operator<<>((std::ostream::sentry *)(v266 + 8), "var cs = cs || [];"); std::operator<<>(v78, a19); } v79 = std::operator<<(v77, v303); v80 = std::operator<<>( v79, "=function(_,_v,_n,_p,_s,_wp,_wl,$gwn,$gwl,$gwh,wh,$gstack,$gwrt,gra,grb,TestTest,wfor,_ca,_da,_r,_rz,_o,_oz," "_1,_1z,_2,_2z,_m,_mz,nv_getDate,nv_getRegExp,nv_console,nv_parseInt,nv_parseFloat,nv_isNaN,nv_isFinite,nv_de" "codeURI,nv_decodeURIComponent,nv_encodeURI,nv_encodeURIComponent,$gdc,nv_JSON,_af,_gv,_ai,_grp,_gd,_gapi,$ix" "c,_ic,_w,_ev,_tsd){"); v81 = std::operator<<>(v80, "return function(path,global){"); std::operator<<>(v81, a19); std::operator<<>( v77, "if(typeof global==='undefined'){if (typeof __GWX_GLOBAL__==='undefined')global={};else global=__GWX_GLOBAL__;}"); std::operator<<>(v77, "if(typeof __WXML_GLOBAL__ === 'undefined') {"); v82 = std::operator<<>(v77, "__WXML_GLOBAL__={};"); std::operator<<>(v82, a19); if ( (a18 & 0x80) != 0 ) { std::string::basic_string((void **)&j, "life_cycle_callback_content"); v275 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a15, (int)&j); std::string::_M_dispose((void **)&j); if ( a15 + 1 != v275 ) { std::string::basic_string((void **)&j, "life_cycle_callback_content"); v83 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a15, (int)&j); std::operator<<(v77, v83 + 10); std::string::_M_dispose((void **)&j); } } std::operator<<>(v77, "}"); v84 = std::operator<<>(v77, "__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};"); std::operator<<>(v84, a19); if ( v255 && !std::operator==(a17, "$gwx") && (a18 & 0x60) == 0 ) { v85 = std::operator<<>(v77, "if (typeof $gwx === 'function') $gwx('init', global);"); std::operator<<>(v85, a19); } v86 = std::operator<<>(v77, "var "); v87 = std::operator<<(v86, a23); v88 = std::operator<<>(v87, "={}"); std::operator<<>(v88, a19); v89 = std::operator<<>(v77, "if(typeof(global.entrys)==='undefined')global.entrys={};"); v90 = std::operator<<(v89, a23); v91 = std::operator<<>(v90, "=global.entrys;"); std::operator<<>(v91, a19); v92 = std::operator<<>(v77, "var "); v93 = std::operator<<(v92, a24); v94 = std::operator<<>(v93, "={}"); std::operator<<>(v94, a19); v95 = std::operator<<>(v77, "if(typeof(global.defines)==='undefined')global.defines={};"); v96 = std::operator<<(v95, a24); v97 = std::operator<<>(v96, "=global.defines;"); std::operator<<>(v97, a19); v98 = std::operator<<>(v77, "var "); v99 = std::operator<<(v98, a29); v100 = std::operator<<>(v99, "={}"); std::operator<<>(v100, a19); v101 = std::operator<<>(v77, "if(typeof(global.modules)==='undefined')global.modules={};"); v102 = std::operator<<(v101, a29); v103 = std::operator<<>(v102, "=global.modules || {};"); std::operator<<>(v103, a19); v104 = std::operator<<>(v77, "var "); v105 = std::operator<<(v104, a25); v106 = std::operator<<>(v105, "={}"); std::operator<<>(v106, a19); if ( (a18 & 2) != 0 ) { v107 = std::operator<<>(v77, "var cs = cs || [];"); std::operator<<>(v107, a19); } v108 = std::operator<<>(v77, "__WXML_GLOBAL__.ops_cached = __WXML_GLOBAL__.ops_cached || {}"); std::operator<<>(v108, a19); v109 = std::operator<<>(v77, "__WXML_GLOBAL__.ops_set = __WXML_GLOBAL__.ops_set || {};"); std::operator<<>(v109, a19); v110 = std::operator<<>(v77, "__WXML_GLOBAL__.ops_init = __WXML_GLOBAL__.ops_init || {};"); std::operator<<>(v110, a19); v111 = std::operator<<>(v77, "var z=__WXML_GLOBAL__.ops_set."); v112 = std::operator<<(v111, v303); v113 = std::operator<<>(v112, " || [];"); std::operator<<>(v113, a19); if ( (a18 & 4) != 0 ) { v114 = std::operator<<>( v77, "__WXML_GLOBAL__.debuginfo_set = __WXML_GLOBAL__.debuginfo_set || {};"); std::operator<<>(v114, a19); v115 = std::operator<<>(v77, "var debugInfo=__WXML_GLOBAL__.debuginfo_set."); v116 = std::operator<<(v115, v303); v117 = std::operator<<>(v116, " || [];"); std::operator<<>(v117, a19); } v118 = (int **)std::map>::operator[]((_DWORD *)a8, v270); v285 = 0; v119 = *v118; v268 = v118[1]; while ( v119 != v268 ) { v276 = std::map>::at(a2, (int)v119); std::_Rb_tree_header::_Rb_tree_header(v305); v285 = (std::ostream::sentry *)((char *)v285 + 1); v292[1] = 0; v292[0] = 0; __gnu_cxx::__to_xstring( (void **)&j, (int (__cdecl *)(unsigned __int8 *, int, int, char *))vsnprintf_0, 16, (int)"%d", v285); std::operator+(&v307, (int)v303, "_"); std::operator+(v306, &v307, (unsigned int *)&j); std::string::_M_dispose((void **)&v307); std::string::_M_dispose((void **)&j); std::operator+((int)&v307, "gz", (int)v306); v120 = std::operator<<>(v77, "function "); v121 = std::operator<<(v120, &v307); v122 = std::operator<<>(v121, "(){"); std::operator<<>(v122, a19); v123 = std::operator<<>(v77, "if( __WXML_GLOBAL__.ops_cached."); v124 = std::operator<<(v123, v306); std::operator<<>(v124, ")"); v125 = std::operator<<>(v77, "return __WXML_GLOBAL__.ops_cached."); v126 = std::operator<<(v125, v306); std::operator<<>(v126, a19); v127 = std::operator<<>(v77, "__WXML_GLOBAL__.ops_cached."); v128 = std::operator<<(v127, v306); v129 = std::operator<<>(v128, "=[];"); std::operator<<>(v129, a19); std::operator<<>(v77, "(function(z){var a=11;"); if ( (a18 & 4) != 0 ) v130 = std::operator<<>( v77, "function Z(ops,debugLine){z.push(['11182016',ops,debugLine])}"); else v130 = std::operator<<>(v77, "function Z(ops){z.push(ops)}"); std::operator<<>(v130, a19); WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord( (_DWORD *)*v276, v119, a5, (int)v266, &v304, v292, (a18 & 4) != 0, (int)a15); v131 = std::operator<<>(v77, "})(__WXML_GLOBAL__.ops_cached."); v132 = std::operator<<(v131, v306); std::operator<<>(v132, ");"); v133 = std::operator<<>(v77, "return __WXML_GLOBAL__.ops_cached."); v134 = std::operator<<(v133, v306); std::operator<<>(v134, a19); v135 = std::operator<<>(v77, "}"); std::operator<<>(v135, a19); std::string::basic_string((void **)&j, "get_page_z_name"); v136 = std::map::operator[]((_DWORD *)(*v276 + 272), &j); std::string::_M_assign((int)v136, (int)&v307); v119 += 6; std::string::_M_dispose((void **)&j); std::string::_M_dispose((void **)&v307); std::string::_M_dispose((void **)v306); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v304); } v137 = std::operator<<>(v77, "__WXML_GLOBAL__.ops_set."); v138 = std::operator<<(v137, v303); v139 = std::operator<<>(v138, "=z;"); std::operator<<>(v139, a19); v140 = std::operator<<>(v77, "__WXML_GLOBAL__.ops_init."); v141 = std::operator<<(v140, v303); v142 = std::operator<<>(v141, "=true;"); std::operator<<>(v142, a19); if ( (a18 & 4) != 0 ) { v143 = std::operator<<>(v77, "__WXML_GLOBAL__.debuginfo_set."); v144 = std::operator<<(v143, v303); v145 = std::operator<<>(v144, "=debugInfo;"); std::operator<<>(v145, a19); } if ( v255 ) { std::operator<<>(v77, "var nv_require=function(){var nnm={"); for ( ii = (_DWORD *)v300[2]; ii != v300; ii = (_DWORD *)std::_Rb_tree_increment((int)ii) ) { v286 = std::operator<<>(v77, 34); WXML::Rewrite::ToStringCode((int)&j, ii + 4); v147 = std::operator<<(v286, &j); v148 = std::operator<<>(v147, 34); std::operator<<>(v148, ":np_"); v149 = (std::ostream::sentry *)std::ostream::operator<<(ii[10]); std::operator<<>(v149, ","); std::string::_M_dispose((void **)&j); } std::operator<<>(v77, "};var nom={};return function(n){"); std::operator<<>(v77, "if(n[0]==='p'&&n[1]==='_'&&f_[n.slice(2)])return f_[n.slice(2)];"); std::operator<<>(v77, "return function(){if(!nnm[n]) return undefined;"); std::operator<<>(v77, "try{if(!nom[n])nom[n]=nnm[n]();return nom[n];}"); std::operator<<>(v77, "catch(e){"); std::operator<<>(v77, "e.message=e.message.replace(/nv_/g,'');"); std::operator<<>(v77, "var tmp = e.stack.substring(0,e.stack.lastIndexOf(n));"); std::operator<<>(v77, "e.stack = tmp.substring(0,tmp.lastIndexOf('\\n'));"); std::operator<<>(v77, "e.stack = e.stack.replace(/\\snv_/g,' ');"); std::operator<<>(v77, "e.stack = $gstack(e.stack);"); v150 = std::operator<<>(v77, "e.stack += '\\n at ' + n.substring(2);console.error(e);}"); std::operator<<>(v150, a19); v151 = std::operator<<>(v77, "}}}()"); std::operator<<>(v151, a19); for ( jj = (_DWORD *)v298[2]; jj != v298; jj = (_DWORD *)std::_Rb_tree_increment((int)jj) ) { v153 = std::operator<<(v77, jj + 10); std::operator<<>(v153, a19); } } v154 = operator new((struct type_info *)0x24, v240); std::_Rb_tree_header::_Rb_tree_header(v154 + 1); v155[6] = 0; v155[7] = 0; v155[8] = 0; zcc::shared_ptr::shared_ptr(v155); v156 = std::map>::operator[]((_DWORD *)a8, v270); v157 = *v156; v277 = v156[1]; while ( 1 ) { v287 = (std::ostream::sentry *)v304; if ( v157 == v277 ) break; std::string::basic_string(&j, v157); WXML::DOMLib::StrCache::Insert(v287, (int)&j); std::string::_M_dispose((void **)&j); v158 = (_DWORD *)(*std::map>::at(a2, v157) + 252); *(v158 - 1) = v304; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v158, (int)v305[0]); v159 = std::map>::at(a2, v157); WXML::DOMLib::WXMLDom::RecordAllPath(*v159); v157 += 24; } WXML::DOMLib::StrCache::RenderPathDefine((_DWORD *)v304, (int)v266); v160 = (int **)std::map>::operator[]((_DWORD *)a8, v270); v257 = 0; v244 = v160[1]; for ( kk = *v160; v244 != kk; kk += 6 ) { v278 = (unsigned int **)std::map>::at(a2, (int)kk); v161 = std::operator<<(v77, a24); std::operator<<>(v161, (char *)off_52D00E); v288 = (std::ostream::sentry *)v304; std::string::basic_string(&j, (int)kk); StrID = WXML::DOMLib::StrCache::GetStrID(v288, (int)&j); std::ostream::operator<<(StrID); std::string::_M_dispose((void **)&j); v163 = std::operator<<>(v77, "]]={}"); std::operator<<>(v163, a19); std::string::basic_string((void **)&j, "get_page_z_name"); v164 = std::map::operator[](*v278 + 68, &j); v282 = WXML::Compiler::RenderDefine( v278, kk, &v301, (int)a5, (int)v266, (int)a15, v267 != 0, a18, a19, a20, a21, a22, a17, a23, a24, a25, a26, a27, a28, v164); std::string::_M_dispose((void **)&j); if ( v282 ) goto LABEL_176; v243 = v257 + 1; __gnu_cxx::__to_xstring( (void **)&j, (int (__cdecl *)(unsigned __int8 *, int, int, char *))vsnprintf_0, 16, (int)"%d", v257); v165 = std::string::insert((unsigned int *)&j, 0, "m"); std::string::basic_string(v306, v165); std::string::_M_dispose((void **)&j); v289 = *v278; std::string::basic_string((void **)&v307, "get_page_z_name"); v166 = std::map::operator[](*v278 + 68, &v307); std::string::basic_string((void **)&j, "r"); v282 = WXML::DOMLib::WXMLDom::RenderMeAsFunction( v289, kk, a23, (int)a5, v306, (int)v266, &k, a20, a21, a22, &j, a24, a19, a25, 0, v267 != 0, a18, v166); std::string::_M_dispose((void **)&j); std::string::_M_dispose((void **)&v307); if ( v282 ) { std::string::_M_dispose((void **)v306); LABEL_176: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v305); std::string::_M_dispose((void **)v303); goto LABEL_181; } v167 = std::operator<<(v77, a23); std::operator<<>(v167, (char *)off_52D00E); v258 = (_DWORD *)v304; std::string::basic_string(&j, (int)kk); v168 = WXML::DOMLib::StrCache::GetStrID(v258, (int)&j); std::ostream::operator<<(v168); std::string::_M_dispose((void **)&j); v169 = std::operator<<>(v77, "]]={f:"); v170 = std::operator<<(v169, v306); std::operator<<>(v170, ",j:[],i:[],ti:["); v259 = 0; v248 = 0; while ( 1 ) { v171 = (*v278)[18]; if ( v259 >= (int)((*v278)[19] - v171) >> 3 ) break; if ( std::operator==(*(_DWORD *)(v171 + 8 * v259), "import") ) { v172 = *(_DWORD *)((*v278)[18] + 8 * v259); v241 = (_DWORD *)(v172 + 52); std::string::basic_string((void **)&j, (unsigned __int8 *)&off_523BD1); v173 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v172 + 48), (int)&j); std::string::_M_dispose((void **)&j); if ( v241 != v173 ) { if ( v248 ) std::operator<<>(v77, ","); std::operator<<>(v77, "x["); v242 = (_DWORD *)v304; v245 = *(_DWORD *)((*v278)[18] + 8 * v259); std::string::basic_string((void **)&v307, (unsigned __int8 *)&off_523BD1); v174 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v245 + 48), (int)&v307) + 10; v175 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v174); std::string::basic_string(&j, v175); v176 = WXML::DOMLib::StrCache::GetStrID(v242, (int)&j); std::ostream::operator<<(v176); std::string::_M_dispose((void **)&j); std::string::_M_dispose((void **)&v307); std::operator<<>(v77, "]"); ++v248; } } ++v259; } std::operator<<>(v77, "],ic:["); for ( mm = 0; ; ++mm ) { v177 = (*v278)[18]; if ( mm >= (int)((*v278)[19] - v177) >> 3 ) break; if ( std::operator==(*(_DWORD *)(v177 + 8 * mm), "include") ) { v178 = *(_DWORD *)((*v278)[18] + 8 * mm); v246 = (_DWORD *)(v178 + 52); std::string::basic_string((void **)&j, (unsigned __int8 *)&off_523BD1); v179 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v178 + 48), (int)&j); std::string::_M_dispose((void **)&j); if ( v246 != v179 ) { if ( v282 ) std::operator<<>(v77, ","); std::operator<<>(v77, "x["); v247 = (_DWORD *)v304; v249 = *(_DWORD *)((*v278)[18] + 8 * mm); std::string::basic_string((void **)&v307, (unsigned __int8 *)&off_523BD1); v180 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v249 + 48), (int)&v307) + 10; v181 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v180); std::string::basic_string(&j, v181); v182 = WXML::DOMLib::StrCache::GetStrID(v247, (int)&j); std::ostream::operator<<(v182); std::string::_M_dispose((void **)&j); std::string::_M_dispose((void **)&v307); std::operator<<>(v77, "]"); ++v282; } } } v183 = std::operator<<>(v77, "]}"); std::operator<<>(v183, a19); std::string::_M_dispose((void **)v306); v257 = v243; } v184 = std::operator<<>(v77, "if(path&&"); v185 = std::operator<<(v184, a23); v186 = std::operator<<>(v185, "[path]){"); std::operator<<>(v186, a19); if ( !a16 ) { v187 = std::operator<<>(v77, "outerGlobal.__wxml_comp_version__=0.02"); std::operator<<>(v187, a19); } v188 = std::operator<<>( v77, "return function(env,dd,global){$gwxc=0;var root={\"tag\":\"wx-page\"};root.children=[]"); std::operator<<>(v188, a19); v189 = std::operator<<>(v77, ";g=\""); v190 = std::operator<<(v189, v303); std::operator<<>(v190, "\";"); v191 = std::operator<<>(v77, "var main="); v192 = std::operator<<(v191, a23); v193 = std::operator<<>(v192, "[path].f"); std::operator<<>(v193, a19); if ( (a18 & 2) != 0 ) { v194 = std::operator<<>(v77, "cs=[]"); std::operator<<>(v194, a19); } if ( (a18 & 0x10) != 0 ) { v195 = std::operator<<>(v77, "console.log(path+': benv:\\n'+JSON.stringify(env))"); std::operator<<>(v195, a19); } std::operator<<>(v77, "if (typeof global===\"undefined\")global={};"); v196 = std::operator<<>(v77, "global.f=$gdc("); v197 = std::operator<<(v196, a29); v198 = std::operator<<>(v197, "[path],\"\",1);"); std::operator<<>(v198, a19); if ( !a16 ) { v199 = std::operator<<>( v77, "if(typeof(outerGlobal.__webview_engine_version__)!='undefined'&&outerGlobal.__webview_engine_version__+1e" "-6>=0.02+1e-6&&outerGlobal.__mergeData__)"); std::operator<<>(v199, a19); v200 = std::operator<<>(v77, "{"); std::operator<<>(v200, a19); v201 = std::operator<<>(v77, "env=outerGlobal.__mergeData__(env,dd);"); std::operator<<>(v201, a19); v202 = std::operator<<>(v77, "}"); std::operator<<>(v202, a19); } v203 = std::operator<<>(v77, "try{"); std::operator<<>(v203, a19); if ( (a18 & 0x10) != 0 ) { v204 = std::operator<<>( v77, "console.log(path+': aenv:\\n'+JSON.stringify(env)+', '+JSON.stringify(dd))"); std::operator<<>(v204, a19); } if ( (a18 & 0x80) != 0 ) { std::operator<<>(v77, "if(__WXML_GLOBAL__.before_calculate)"); v205 = std::operator<<>(v77, "__WXML_GLOBAL__.before_calculate(path, env)"); std::operator<<>(v205, a19); } v206 = std::operator<<>(v77, "main(env,{},root,global);"); std::operator<<>(v206, a19); if ( (a18 & 0x80) != 0 ) { std::operator<<>(v77, "if(__WXML_GLOBAL__.after_calculate)"); v207 = std::operator<<>(v77, "__WXML_GLOBAL__.after_calculate(path, root)"); std::operator<<>(v207, a19); } v208 = std::operator<<>(v77, "_tsd(root)"); std::operator<<>(v208, a19); if ( !a16 ) { v209 = std::operator<<>( v77, "if(typeof(outerGlobal.__webview_engine_version__)=='undefined'|| outerGlobal.__webview_engine_version__+1" "e-6<0.01+1e-6){return _ev(root);}"); std::operator<<>(v209, a19); } v210 = std::operator<<>(v77, "}catch(err){"); std::operator<<>(v210, a19); if ( (a18 & 2) != 0 ) { v211 = std::operator<<>(v77, "console.log(cs, env);"); std::operator<<>(v211, a19); } v212 = std::operator<<>(v77, "console.log(err)"); std::operator<<>(v212, a19); if ( (a18 & 2) != 0 ) { v213 = std::operator<<>(v77, "throw err"); std::operator<<>(v213, a19); } v214 = std::operator<<>(v77, "}"); std::operator<<>(v214, a19); if ( (a18 & 0x10) != 0 ) { v215 = std::operator<<>(v77, "console.log(path+': resp:\\n'+JSON.stringify(root))"); std::operator<<>(v215, a19); } v216 = std::operator<<>(v77, ";g=\"\";"); std::operator<<>(v216, a19); v217 = std::operator<<>(v77, "return root;"); std::operator<<>(v217, a19); v218 = std::operator<<>(v77, "}"); std::operator<<>(v218, a19); v219 = std::operator<<>(v77, "}"); std::operator<<>(v219, a19); v220 = std::operator<<>(v77, "}"); std::operator<<>(v220, a19); std::operator<<>( v77, "}(__g.a,__g.b,__g.c,__g.d,__g.e,__g.f,__g.g,__g.h,__g.i,__g.j,__g.k,__g.l,__g.m,__g.n,__g.o,__g.p,__g.q,__g.r,__g." "s,__g.t,__g.u,__g.v,__g.w,__g.x,__g.y,__g.z,__g.A,__g.B,__g.C,__g.D,__g.E,__g.F,__g.G,__g.H,__g.I,__g.J,__g.K,__g." "L,__g.M,__g.N,__g.O,__g.P,__g.Q,__g.R,__g.S,__g.T,__g.U,__g.V,__g.W,__g.X,__g.Y,__g.Z,__g.aa);"); if ( (a18 & 8) != 0 ) { v221 = (int **)std::map>::operator[]((_DWORD *)a8, v270); v222 = *v221; v290 = (std::ostream::sentry *)v221[1]; while ( v222 != (int *)v290 ) { v223 = std::operator<<>(v77, "//"); v224 = std::operator<<(v223, v222); v225 = std::operator<<>(v224, ":"); std::operator<<>(v225, a19); v226 = std::map>::at(a2, (int)v222); WXML::DOMLib::WXMLDom::Print((_DWORD *)*v226, 0, "//", v266); v222 += 6; } } v227 = std::map>::operator[]((_DWORD *)a8, v270); v228 = v227[1] == *v227; v229 = std::operator<<>(v77, "if(__vd_version_info__.delayedGwx||"); v230 = "true"; if ( !v255 && !v228 ) v230 = "false"; std::string::basic_string((void **)&j, (unsigned __int8 *)v230); v231 = std::operator<<(v229, &j); v232 = std::operator<<>(v231, ")"); v233 = std::operator<<(v232, v303); std::operator<<>(v233, "();"); std::string::_M_dispose((void **)&j); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v305); std::string::_M_dispose((void **)v303); } for ( nn = v296; nn != &v294; nn = (int *)std::_Rb_tree_increment((int)nn) ) { std::stringbuf::str((int)&j, (_DWORD *)(nn[10] + 12)); v235 = std::map::operator[](a6, (int)(nn + 4)); std::string::operator=(v235, &j); std::string::_M_dispose((void **)&j); } v282 = 0; LABEL_181: WXML::NameAllocator::~NameAllocator((int)&k); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v301); LABEL_184: std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v299); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v297); std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase(v295); return v282; } // 4140CF: variable 'v29' is possibly undefined // 4140DB: variable 'v31' is possibly undefined // 41440B: variable 'v42' is possibly undefined // 4144F3: variable 'v49' is possibly undefined // 4145E5: variable 'v52' is possibly undefined // 41461D: variable 'v239' is possibly undefined // 4147DE: variable 'v61' is possibly undefined // 4156C4: variable 'v240' is possibly undefined // 4156D7: variable 'v155' is possibly undefined // 4606E0: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); // 523BD1: using guessed type void *off_523BD1; // 52CB31: using guessed type void *off_52CB31; // 414049: using guessed type int var_D8[5]; //----- (004168B2) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int __cdecl WXML::Compiler::CompileLazy( std::_Rb_tree_header *a1, unsigned int *a2, _DWORD *a3, _DWORD *a4, _DWORD *a5, int a6, int a7, std::_Rb_tree_header *a8, char a9, _DWORD *a10, int a11, _DWORD *a12, char a13, int a14, int a15, char a16, int *a17, int *a18, int *a19, int *a20, int *a21, int *a22, int a23, int a24, int a25, int *a26) { _DWORD *v26; // eax _DWORD *v27; // edx unsigned int v28; // eax int v29; // eax int v30; // ecx int *v31; // edx _DWORD *v32; // eax _DWORD *v33; // edx int v34; // ecx _DWORD *v35; // edx int v36; // ecx int v38; // [esp+8Ch] [ebp-6Ch] int v39; // [esp+8Ch] [ebp-6Ch] int v40; // [esp+94h] [ebp-64h] BYREF int v41; // [esp+98h] [ebp-60h] BYREF void *v42[5]; // [esp+9Ch] [ebp-5Ch] BYREF int v43; // [esp+B0h] [ebp-48h] BYREF void *v44[5]; // [esp+B4h] [ebp-44h] BYREF int v45; // [esp+C8h] [ebp-30h] BYREF int v46; // [esp+CCh] [ebp-2Ch] BYREF void *v47; // [esp+D0h] [ebp-28h] int v48; // [esp+D4h] [ebp-24h] int v49; // [esp+D8h] [ebp-20h] int v50; // [esp+DCh] [ebp-1Ch] std::_Rb_tree_header::_Rb_tree_header(v42); std::_Rb_tree_header::_Rb_tree_header(v44); v28 = WXML::Compiler::ParseAndResolveWxmlDependencies((int)a1, a2, v26, v27, a5); if ( !v28 ) { std::_Rb_tree_header::_Rb_tree_header(&v46); v31 = *(int **)(a7 + 8); if ( v31 ) { v40 = v29; v32 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( v31, v30, (int)&v40); v33 = v32; do { v34 = (int)v33; v33 = (_DWORD *)v33[2]; } while ( v33 ); v48 = v34; v35 = v32; do { v36 = (int)v35; v35 = (_DWORD *)v35[3]; } while ( v35 ); v49 = v36; v47 = v32; v50 = *(_DWORD *)(a7 + 20); } v38 = WXML::Compiler::CompileLazyWithParsed( a1, &v41, (int)&v43, (int)a5, a2, a3, a4, a6, &v45, a8, a9, 0, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26); std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(v47); v28 = v38; } v39 = v28; std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase((void **)v44[1]); std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(v42[1]); return v39; } // 416A8E: positive sp value 4 has been found // 4168F9: variable 'v26' is possibly undefined // 4168F9: variable 'v27' is possibly undefined // 41693B: variable 'v29' is possibly undefined // 41693E: variable 'v30' is possibly undefined //----- (00416ABC) -------------------------------------------------------- void __thiscall WXML::NameAllocator::NameAllocator(_DWORD *this, int a2, int a3) { int v3; // esi bool v5; // zf v3 = (int)(this + 7); v5 = WXML::NameAllocator::ALPAHBETLEN == 0; this[1] = this + 3; this[2] = 0; *((_BYTE *)this + 12) = 0; this[7] = this + 9; this[8] = 0; *((_BYTE *)this + 36) = 0; if ( v5 ) WXML::NameAllocator::ALPAHBETLEN = strlen(WXML::NameAllocator::ALPAHBET[0]); std::string::_M_assign((int)(this + 1), a2); std::string::_M_assign(v3, a3); *this = 0; } // 51501C: using guessed type char *WXML::NameAllocator::ALPAHBET[13]; // 587954: using guessed type int WXML::NameAllocator::ALPAHBETLEN; //----- (00416B58) -------------------------------------------------------- void __thiscall WXML::NameAllocator::GetNextName(int *this, _DWORD *a2) { int v3; // esi std::ostream::sentry *v4; // eax void *v5[6]; // [esp+18h] [ebp-F0h] BYREF char v6[8]; // [esp+30h] [ebp-D8h] BYREF char v7[4]; // [esp+38h] [ebp-D0h] BYREF int v8[51]; // [esp+3Ch] [ebp-CCh] BYREF v3 = *this; std::basic_stringstream,std::allocator>::basic_stringstream((int)v6); v4 = std::operator<<((std::ostream::sentry *)v7, this + 1); std::operator<<>(v4, *(_BYTE *)(this[7] + *this % (unsigned int)this[8])); while ( v3 ) { std::operator<<>( (std::ostream::sentry *)v7, WXML::NameAllocator::ALPAHBET[0][v3 % WXML::NameAllocator::ALPAHBETLEN]); v3 /= WXML::NameAllocator::ALPAHBETLEN; } ++*this; std::stringbuf::str((int)v5, v8); std::string::operator=(a2, v5); std::string::_M_dispose(v5); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v6); } // 51501C: using guessed type char *WXML::NameAllocator::ALPAHBET[13]; // 587954: using guessed type int WXML::NameAllocator::ALPAHBETLEN; // 416B58: using guessed type char var_D0[4]; // 416B58: using guessed type int var_CC[51]; //----- (00416C30) -------------------------------------------------------- void __usercall std::_Vector_base::_M_deallocate(void *a1@) { if ( a1 ) operator delete(a1); } // 416C30: could not find valid save-restore pair for ebp //----- (00416C45) -------------------------------------------------------- _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)]; } //----- (00416C9E) -------------------------------------------------------- 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); } //----- (00416CCC) -------------------------------------------------------- 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); } } //----- (00416D76) -------------------------------------------------------- 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_52DCE9); 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; } // 4DB640: using guessed type _DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); // 416D76: using guessed type _BYTE var_28[40]; //----- (00416F70) -------------------------------------------------------- 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; } //----- (00416FBC) -------------------------------------------------------- bool __cdecl WXML::DOMLib::AttrsCompartor(int a1, int a2) { return *(_DWORD *)(a1 + 80) < *(_DWORD *)(a2 + 80); } //----- (00416FD0) -------------------------------------------------------- void __cdecl __tcf_1_2() { std::ios_base::Init::~Init(); } //----- (00416FDA) -------------------------------------------------------- void __usercall std::_Vector_base::_M_deallocate(void *a1@) { if ( a1 ) operator delete(a1); } // 416FDA: could not find valid save-restore pair for ebp //----- (00416FEF) -------------------------------------------------------- _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)]; } //----- (00417047) -------------------------------------------------------- volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) { if ( _CRT_MT ) _InterlockedIncrement(result); else ++*result; return result; } // 78A9D4: using guessed type int _CRT_MT; //----- (00417058) -------------------------------------------------------- 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); } //----- (00417086) -------------------------------------------------------- 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 += 7 ) { v4 = i; std::string::_M_dispose(v4); } if ( *a1 ) operator delete(*a1); } //----- (004170BC) -------------------------------------------------------- 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 += 8 ) { v4 = i; std::string::_M_dispose(v4); } if ( *a1 ) operator delete(*a1); } //----- (004170F2) -------------------------------------------------------- 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); } //----- (0041712A) -------------------------------------------------------- int __userpurge WXML::DOMLib::WXMLDom::GenRawId@( _DWORD *a1@, WXML::DOMLib::WXMLDom *this, unsigned __int64 *a3) { unsigned int i; // esi int v5; // edx int v6; // eax int result; // eax unsigned __int64 *v8; // [esp+4h] [ebp-24h] for ( i = 0; (a1[19] - a1[18]) >> 3 > i; ++i ) WXML::DOMLib::WXMLDom::GenRawId(this, v8); v5 = *((_DWORD *)this + 1); v6 = *(_DWORD *)this; a1[67] = v5; a1[66] = v6; *(_DWORD *)this = v6; result = 0; *((_DWORD *)this + 1) = v5 + 1; return result; } // 417150: variable 'v8' is possibly undefined //----- (0041717C) -------------------------------------------------------- _DWORD *__thiscall WXML::DOMLib::Parser::GetParsed(_DWORD *ecx0, WXML::DOMLib::Parser *this) { std::__shared_ptr::__shared_ptr(ecx0, this); return ecx0; } //----- (00417198) -------------------------------------------------------- void __fastcall WXML::DOMLib::Parser::Match(int a1) { ++*(_DWORD *)(a1 + 100); } //----- (0041719C) -------------------------------------------------------- bool __stdcall WXML::DOMLib::Parser::IsValidTag(const char **a1) { return strncmp(*a1, "wx-", 3u) != 0; } //----- (004171C8) -------------------------------------------------------- _DWORD *__fastcall WXML::DOMLib::Parser::Peek(_DWORD *a1) { _DWORD *result; // eax int v2; // esi unsigned int v3; // ebx result = a1 + 26; v2 = a1[22]; v3 = a1[25]; if ( v3 < -1227133513 * ((a1[23] - v2) >> 4) ) return (_DWORD *)(v2 + 112 * v3); return result; } //----- (004171F2) -------------------------------------------------------- int __cdecl WXML::DOMLib::WXMLDom::Error(int a1, int *a2, int a3, int *a4, int *a5) { std::ostream::sentry *v5; // eax std::ostream::sentry *v6; // eax std::ostream::sentry *v7; // eax std::ostream::sentry *v8; // eax std::ostream::sentry *v9; // eax std::ostream::sentry *v10; // eax std::ostream::sentry *v11; // eax void *v13[6]; // [esp+18h] [ebp-100h] BYREF char v14[8]; // [esp+30h] [ebp-E8h] BYREF char v15[4]; // [esp+38h] [ebp-E0h] BYREF int v16[55]; // [esp+3Ch] [ebp-DCh] BYREF std::basic_stringstream,std::allocator>::basic_stringstream((int)v14); v5 = std::operator<<((std::ostream::sentry *)v15, a2); std::operator<<>(v5, ":"); v6 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(a3 + 8)); std::operator<<>(v6, ":"); v7 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(a3 + 12)); std::operator<<>(v7, ":"); if ( a4[1] ) { v8 = std::operator<<>((std::ostream::sentry *)v15, " Bad attr `"); v9 = std::operator<<(v8, a4); std::operator<<>(v9, "`"); } else { std::operator<<>((std::ostream::sentry *)v15, " Bad value"); } v10 = std::operator<<>((std::ostream::sentry *)v15, " with message: "); v11 = std::operator<<(v10, a5); std::operator<<>(v11, "."); std::stringbuf::str((int)v13, v16); *(_DWORD *)a1 = a1 + 8; *(_DWORD *)(a1 + 4) = 0; *(_BYTE *)(a1 + 8) = 0; std::string::_M_assign(a1, (int)v13); std::string::_M_dispose(v13); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v14); return a1; } // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 4171F2: using guessed type char var_E0[4]; // 4171F2: using guessed type int var_DC[55]; //----- (0041735E) -------------------------------------------------------- int __cdecl WXML::DOMLib::joinString(int a1, _DWORD *a2, char a3) { unsigned int v3; // ebx char v5[8]; // [esp+20h] [ebp-E8h] BYREF char v6[4]; // [esp+28h] [ebp-E0h] BYREF int v7[55]; // [esp+2Ch] [ebp-DCh] BYREF v3 = 0; std::basic_stringstream,std::allocator>::basic_stringstream((int)v5); while ( v3 < -1431655765 * ((a2[1] - *a2) >> 3) ) { std::operator<<((std::ostream::sentry *)v6, (int *)(24 * v3 + *a2)); if ( -1431655765 * ((a2[1] - *a2) >> 3) - 1 != v3 ) std::operator<<>((std::ostream::sentry *)v6, a3); ++v3; } std::stringbuf::str(a1, v7); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v5); return a1; } // 41735E: using guessed type char var_E0[4]; // 41735E: using guessed type int var_DC[55]; //----- (00417422) -------------------------------------------------------- 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; } //----- (0041742E) -------------------------------------------------------- int __fastcall WXML::DOMLib::Token::~Token(int a1) { std::string::_M_dispose((void **)(a1 + 88)); std::string::_M_dispose((void **)(a1 + 60)); std::string::_M_dispose((void **)(a1 + 32)); return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); } //----- (00417456) -------------------------------------------------------- void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node( void **a1@) { void **v1; // esi v1 = a1 + 4; WXML::DOMLib::Token::~Token((int)(a1 + 10)); std::string::_M_dispose(v1); operator delete(a1); } //----- (00417482) -------------------------------------------------------- void __fastcall std::pair::~pair(void **a1) { WXML::DOMLib::Token::~Token((int)(a1 + 6)); std::string::_M_dispose(a1); } //----- (0041749C) -------------------------------------------------------- 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 += 34 ) { v4 = i; std::pair::~pair(v4); } if ( *a1 ) operator delete(*a1); } //----- (004174D6) -------------------------------------------------------- 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; } //----- (00417506) -------------------------------------------------------- _DWORD *__thiscall WXML::DOMLib::Parser::Error( _DWORD *ecx0, WXML::DOMLib::Parser *this, char *a3, WXML::DOMLib::Token *a4) { WXML::DOMLib::Token *v5; // esi WXML::DOMLib::Token *v6; // eax std::ostream::sentry *v7; // eax std::ostream::sentry *v8; // eax std::ostream::sentry *v9; // eax std::ostream::sentry *v10; // eax std::ostream::sentry *v11; // eax int v12; // edi char v13; // al const WXML::DOMLib::Token *v15; // [esp+4h] [ebp-194h] int v16; // [esp+18h] [ebp-180h] int v17; // [esp+1Ch] [ebp-17Ch] void *v18[6]; // [esp+28h] [ebp-170h] BYREF int v19[5]; // [esp+40h] [ebp-158h] BYREF int v20; // [esp+54h] [ebp-144h] int v21; // [esp+58h] [ebp-140h] char v22[8]; // [esp+B0h] [ebp-E8h] BYREF char v23[4]; // [esp+B8h] [ebp-E0h] BYREF int v24[55]; // [esp+BCh] [ebp-DCh] BYREF v5 = a4; std::basic_stringstream,std::allocator>::basic_stringstream((int)v22); v6 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(this); WXML::DOMLib::Token::Token((int)v19, v6, v15); if ( v21 == 4 ) { if ( !a4 ) v5 = (WXML::DOMLib::Token *)(*((_DWORD *)this + 22) + 112 * (*((_DWORD *)this + 25) - 1)); a3 = "end tag missing"; WXML::DOMLib::Token::operator=((int)v19, (int)v5); } v7 = std::operator<<((std::ostream::sentry *)v23, (int *)this + 82); std::operator<<>(v7, ":"); v8 = (std::ostream::sentry *)std::ostream::operator<<(v19[2]); std::operator<<>(v8, ":"); v9 = (std::ostream::sentry *)std::ostream::operator<<(v19[3]); v10 = std::operator<<>(v9, ": "); v11 = std::operator<<>(v10, a3); std::operator<<>(v11, ", near `"); v12 = 0; v16 = *(_DWORD *)v19[0]; v17 = v19[4]; while ( v20 > v12 ) { if ( v12 == 7 ) { if ( v20 > 7 ) std::operator<<>((std::ostream::sentry *)v23, "..."); break; } v13 = *(_BYTE *)(v17 + v16 + v12); if ( v13 == 13 ) { std::operator<<>((std::ostream::sentry *)v23, "\\r"); } else if ( v13 == 10 ) { std::operator<<>((std::ostream::sentry *)v23, "\\n"); } else { std::operator<<>((std::ostream::sentry *)v23, *(_BYTE *)(v17 + v16 + v12)); } ++v12; } std::operator<<>((std::ostream::sentry *)v23, "`"); std::stringbuf::str((int)v18, v24); *ecx0 = ecx0 + 2; ecx0[1] = 0; *((_BYTE *)ecx0 + 8) = 0; std::string::_M_assign((int)ecx0, (int)v18); std::string::_M_dispose(v18); WXML::DOMLib::Token::~Token((int)v19); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v22); return ecx0; } // 417535: variable 'v15' is possibly undefined // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 417506: using guessed type char var_E0[4]; // 417506: using guessed type int var_DC[55]; //----- (00417724) -------------------------------------------------------- void __fastcall WXML::DOMLib::WXMLDom::~WXMLDom(int a1) { int v2; // edi int i; // esi volatile signed __int32 **v4; // ecx std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 280)); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 252)); std::string::_M_dispose((void **)(a1 + 220)); std::string::_M_dispose((void **)(a1 + 196)); WXML::DOMLib::Token::~Token(a1 + 84); v2 = *(_DWORD *)(a1 + 76); for ( i = *(_DWORD *)(a1 + 72); v2 != i; i += 8 ) { v4 = (volatile signed __int32 **)(i + 4); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); } if ( *(_DWORD *)(a1 + 72) ) operator delete(*(void **)(a1 + 72)); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 56)); std::string::_M_dispose((void **)(a1 + 24)); std::string::_M_dispose((void **)a1); } //----- (004177B8) -------------------------------------------------------- int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound@( int a1@, int a2@, int a3@) { while ( a1 ) { if ( (unsigned __int8)std::operator<(a1 + 16, a3) ) { a1 = *(_DWORD *)(a1 + 12); } else { a2 = a1; a1 = *(_DWORD *)(a1 + 8); } } return a2; } //----- (004177F4) -------------------------------------------------------- int __cdecl WXML::DOMLib::splitString(int a1, int *a2, char a3) { char *v3; // eax unsigned int v4; // edx char *i; // ebx char *v6; // eax void *v8[12]; // [esp+28h] [ebp-30h] BYREF *(_DWORD *)a1 = 0; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; v3 = std::string::find(a2, a3, 0); v4 = 0; for ( i = v3; i != (char *)-1; i = v6 ) { std::string::substr(v8, a2, v4, (unsigned int)&i[-v4]); std::vector::emplace_back((void ***)a1, v8); std::string::_M_dispose(v8); v6 = std::string::find(a2, a3, (unsigned int)(i + 1)); v4 = (unsigned int)(i + 1); } std::string::substr(v8, a2, v4, 0xFFFFFFFF); std::vector::emplace_back((void ***)a1, v8); std::string::_M_dispose(v8); return a1; } //----- (004178E2) -------------------------------------------------------- int __cdecl WXML::DOMLib::resolvePath(int a1, int *a2, int *a3) { _BYTE *v3; // eax int v4; // esi unsigned int v5; // eax bool v6; // di unsigned int i; // [esp+1Ch] [ebp-5Ch] void **v9; // [esp+24h] [ebp-54h] BYREF void **v10; // [esp+28h] [ebp-50h] void *v11[6]; // [esp+30h] [ebp-48h] BYREF int v12[12]; // [esp+48h] [ebp-30h] BYREF *(_BYTE *)(a1 + 8) = 0; *(_DWORD *)a1 = a1 + 8; v3 = (_BYTE *)*a3; *(_DWORD *)(a1 + 4) = 0; if ( *v3 != 47 ) { WXML::DOMLib::splitString((int)&v9, a2, 47); v10 -= 6; std::string::_M_dispose(v10); WXML::DOMLib::splitString((int)v12, a3, 47); for ( i = 0; i < -1431655765 * ((v12[1] - v12[0]) >> 3); ++i ) { v4 = 24 * i; if ( std::operator==(24 * i + v12[0], "..") ) { v10 -= 6; std::string::_M_dispose(v10); } else if ( !std::operator==(v4 + v12[0], (char *)&byte_52DD60) && !std::operator==(v4 + v12[0], ".") ) { std::vector::push_back(&v9, v12[0] + v4); } } WXML::DOMLib::joinString((int)v11, &v9, 47); std::string::operator=((_DWORD *)a1, v11); std::string::_M_dispose(v11); std::vector::~vector((void ***)v12); std::vector::~vector(&v9); } if ( *(_BYTE *)*a2 == 46 && *(_BYTE *)*a3 == 47 ) { std::operator+((int)v12, ".", (int)a3); std::string::operator=((_DWORD *)a1, v12); std::string::_M_dispose((void **)v12); } v5 = *(_DWORD *)(a1 + 4); if ( v5 <= 4 || (std::string::substr((void **)v12, (_DWORD *)a1, v5 - 5, 0xFFFFFFFF), v6 = std::operator==((int)v12, ".wxml"), std::string::_M_dispose((void **)v12), !v6) ) { std::string::operator+=((_DWORD *)a1, ".wxml"); } return a1; } //----- (00417ADC) -------------------------------------------------------- int __fastcall WXML::DOMLib::Parser::ATTR(WXML::DOMLib::Parser *a1) { WXML::DOMLib::Token *v2; // eax int i; // edx char v4; // cl _DWORD *exception; // esi _DWORD *v6; // eax _DWORD *v7; // eax WXML::DOMLib::Token *v8; // eax int v9; // eax _DWORD *v10; // eax int v11; // eax _DWORD *v12; // eax const WXML::DOMLib::Token *v14; // [esp+4h] [ebp-134h] const char *v15; // [esp+4h] [ebp-134h] const char *v16; // [esp+4h] [ebp-134h] const char *v17; // [esp+4h] [ebp-134h] const WXML::DOMLib::Token *v18; // [esp+4h] [ebp-134h] void *v19[6]; // [esp+28h] [ebp-110h] BYREF int v20[5]; // [esp+40h] [ebp-F8h] BYREF int v21; // [esp+54h] [ebp-E4h] char v22[24]; // [esp+B0h] [ebp-88h] BYREF int v23; // [esp+C8h] [ebp-70h] v2 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::Token((int)v20, v2, v14); if ( !WXML::DOMLib::Token::IsMatch((int)v20, (WXML::DOMLib::Token *)">", v15) && !WXML::DOMLib::Token::IsMatch((int)v20, (WXML::DOMLib::Token *)"/>", v16) ) { if ( !v20[0] ) goto LABEL_12; for ( i = 0; v21 > i; ++i ) { v4 = *(_BYTE *)(*(_DWORD *)v20[0] + v20[4] + i); if ( (unsigned __int8)((v4 & 0xDF) - 65) > 0x19u && (unsigned __int8)(v4 - 48) > 0xAu && v4 != 95 && v4 != 45 ) goto LABEL_12; } if ( (unsigned int)(v21 - 1) > 0xFFFE ) { LABEL_12: exception = __cxa_allocate_exception(0x18u); WXML::DOMLib::Parser::Error(exception, a1, "unexpected attribute name", 0); __cxa_throw( exception, (struct type_info *)&`typeinfo for'WXML::DOMLib::ParseException, WXML::DOMLib::ParseException::~ParseException); } v6 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v20); std::string::basic_string(v19, (int)v6); ++*((_DWORD *)a1 + 25); v7 = WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::operator=((int)v20, (int)v7); if ( WXML::DOMLib::Token::IsMatch((int)v20, (WXML::DOMLib::Token *)"=", v17) ) { ++*((_DWORD *)a1 + 25); v8 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::Token((int)v22, v8, v18); if ( v23 == 2 ) { ++*((_DWORD *)a1 + 25); v9 = std::deque>::back((_DWORD *)a1 + 12); v10 = std::map::operator[]((_DWORD *)(*(_DWORD *)v9 + 48), (int)v19); WXML::DOMLib::Token::operator=((int)v10, (int)v22); } WXML::DOMLib::Token::~Token((int)v22); } else { v11 = std::deque>::back((_DWORD *)a1 + 12); v12 = std::map::operator[]((_DWORD *)(*(_DWORD *)v11 + 48), (int)v19); WXML::DOMLib::Token::operator=((int)v12, (int)a1 + 216); } std::string::_M_dispose(v19); } return WXML::DOMLib::Token::~Token((int)v20); } // 417AF8: variable 'v14' is possibly undefined // 417B0B: variable 'v15' is possibly undefined // 417B26: variable 'v16' is possibly undefined // 417C14: variable 'v17' is possibly undefined // 417C33: variable 'v18' is possibly undefined // 533C64: using guessed type int *`typeinfo for'WXML::DOMLib::ParseException; //----- (00417CF8) -------------------------------------------------------- int __fastcall WXML::DOMLib::Parser::ATTR_LIST(WXML::DOMLib::Parser *a1) { WXML::DOMLib::Token *v2; // eax WXML::DOMLib::Parser *v3; // edx const WXML::DOMLib::Token *v5; // [esp+4h] [ebp-84h] const char *v6; // [esp+4h] [ebp-84h] const char *v7; // [esp+4h] [ebp-84h] char v8[116]; // [esp+10h] [ebp-78h] BYREF WXML::DOMLib::Parser::ATTR(a1); v2 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::Token((int)v8, v2, v5); if ( !WXML::DOMLib::Token::IsMatch((int)v8, (WXML::DOMLib::Token *)">", v6) && !WXML::DOMLib::Token::IsMatch((int)v8, (WXML::DOMLib::Token *)"/>", v7) ) { WXML::DOMLib::Parser::ATTR_LIST(v3); } return WXML::DOMLib::Token::~Token((int)v8); } // 417D16: variable 'v5' is possibly undefined // 417D26: variable 'v6' is possibly undefined // 417D3A: variable 'v7' is possibly undefined // 417D53: variable 'v3' is possibly undefined //----- (00417D6C) -------------------------------------------------------- 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); } // 417DA2: variable 'v5' is possibly undefined //----- (00417DB3) -------------------------------------------------------- void **__cdecl WXML::DOMLib::removern(void **a1, _DWORD *a2) { unsigned int v2; // ebx unsigned int v3; // edx v2 = 0; std::string::basic_string(a1, (char *)&byte_52DD60); while ( 1 ) { v3 = a2[1]; if ( v2 >= v3 ) break; if ( v3 - 1 <= v2 || *(_BYTE *)(*a2 + v2) != 13 || *(_BYTE *)(*a2 + v2 + 1) != 10 ) std::string::push_back(a1, *(_BYTE *)(*a2 + v2)); ++v2; } return a1; } //----- (00417E1A) -------------------------------------------------------- int __thiscall WXML::DOMLib::WXMLDom::AddTestAttr(_DWORD *this, int *a2, int a3, char a4) { BOOL v4; // edi unsigned int i; // esi BOOL v7; // edi std::ostream::sentry *v8; // eax std::ostream::sentry *v9; // eax std::ostream::sentry *v10; // eax std::ostream::sentry *v11; // eax 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 std::ostream::sentry *v19; // eax void **v20; // ebx unsigned int v22; // [esp+1Ch] [ebp-10Ch] void *v23[6]; // [esp+20h] [ebp-108h] BYREF _QWORD v24[3]; // [esp+38h] [ebp-F0h] BYREF void *v25[6]; // [esp+50h] [ebp-D8h] BYREF void *v26[6]; // [esp+68h] [ebp-C0h] BYREF _QWORD v27[3]; // [esp+80h] [ebp-A8h] BYREF void *v28; // [esp+98h] [ebp-90h] BYREF void *v29; // [esp+B0h] [ebp-78h] BYREF void *v30; // [esp+C8h] [ebp-60h] BYREF void *v31; // [esp+E0h] [ebp-48h] BYREF void *v32; // [esp+F8h] [ebp-30h] BYREF char v33; // [esp+110h] [ebp-18h] BYREF v4 = 1; if ( !std::operator==((int)this, "button") ) v4 = std::operator==((int)this, "navigator"); std::string::basic_string((void **)v27, "bind"); std::string::basic_string(&v28, "bind:"); std::string::basic_string(&v29, "catch"); std::string::basic_string(&v30, "catch:"); std::string::basic_string(&v31, "capture-bind"); std::string::basic_string(&v32, "capture-catch"); std::string::basic_string((void **)v24, (char *)&off_52DE26); std::string::basic_string(v25, "touchstart"); std::string::basic_string(v26, "touchend"); for ( i = 0; i <= 5 && !v4; ++i ) { v22 = 0; do { std::string::basic_string(v23, (int)&v27[3 * i]); std::string::append(v23, (int)&v24[3 * v22]); v7 = std::map::count(this + 12, (int)v23); std::string::_M_dispose(v23); ++v22; } while ( v22 <= 2 && !v7 ); v4 = v7; } if ( v4 ) { ++WXML::DOMLib::WXMLDom::componentCnt; v8 = std::operator<<>((std::ostream::sentry *)(a3 + 8), "_af("); v9 = std::operator<<(v8, a2); v10 = std::operator<<>(v9, ","); v11 = std::ostream::_M_insert(v10, 1); v12 = std::operator<<>(v11, ","); v13 = std::ostream::_M_insert(v12, this[66], this[67]); } else { v14 = std::operator<<>((std::ostream::sentry *)(a3 + 8), "_af("); v15 = std::operator<<(v14, a2); v16 = std::operator<<>(v15, ","); v13 = std::ostream::_M_insert(v16, 0); } v17 = std::operator<<>(v13, ","); v18 = std::ostream::_M_insert(v17, this[66], this[67]); v19 = std::operator<<>(v18, ");"); std::operator<<>(v19, a4); v20 = (void **)&v33; std::string::_M_dispose(v26); std::string::_M_dispose(v25); std::string::_M_dispose((void **)v24); do { v20 -= 6; std::string::_M_dispose(v20); } while ( v20 != (void **)v27 ); return 0; } // 52DE26: using guessed type void *off_52DE26; // 587958: using guessed type int WXML::DOMLib::WXMLDom::componentCnt; //----- (004181FA) -------------------------------------------------------- int __usercall WXML::DOMLib::WXMLDom::RewriteTree@(int a1@, const char **a2@) { unsigned int i; // ebx int v4; // edx int v5; // esi _DWORD *v6; // ecx const char **v7; // eax WXML::DOMLib::WXMLDom *v8; // edx char *v9; // eax int v10; // edx int v11; // ebx _DWORD *v12; // eax WXML::DOMLib::WXMLDom *v13; // edx char **v14; // edx char *v15; // ebx int v16; // esi _DWORD *v17; // ecx const char **v18; // eax WXML::DOMLib::WXMLDom *v19; // edx void *v20; // eax int v21; // edx char *v22; // eax unsigned int k; // ebx int v24; // edx int v25; // esi const char **v26; // eax unsigned int m; // ebx int v28; // edx WXML::DOMLib::WXMLDom *v29; // ecx int v30; // edx int v31; // ebx _DWORD *v32; // eax WXML::DOMLib::WXMLDom *v33; // edx void *v34; // eax int v35; // edx unsigned int *v36; // ebx char *v37; // eax _DWORD *v38; // esi int v39; // ebx _DWORD *v40; // ebx unsigned int *v41; // ebx char *v42; // eax _DWORD *v43; // esi int v44; // ebx _DWORD *v45; // ebx unsigned int *v46; // ebx char *v47; // eax _DWORD *v48; // esi int v49; // ebx _DWORD *v50; // esi _DWORD *v51; // ebx unsigned int *v52; // esi char *v53; // eax _DWORD *v54; // ebx WXML::DOMLib::WXMLDom *v55; // ecx unsigned int ii; // ebx int v57; // edx int v58; // esi _DWORD *v59; // eax WXML::DOMLib::WXMLDom *v60; // edx void *v61; // eax int v62; // edx char *v63; // eax WXML::DOMLib::WXMLDom *v64; // ecx unsigned int jj; // ebx WXML::DOMLib::WXMLDom *v67; // [esp+0h] [ebp-158h] const WXML::DOMLib::Token *v68; // [esp+4h] [ebp-154h] const WXML::DOMLib::Token *v69; // [esp+4h] [ebp-154h] const WXML::DOMLib::Token *v70; // [esp+4h] [ebp-154h] const WXML::DOMLib::Token *v71; // [esp+4h] [ebp-154h] char **v72; // [esp+10h] [ebp-148h] _DWORD *v73; // [esp+14h] [ebp-144h] const char **v74; // [esp+14h] [ebp-144h] char **v75; // [esp+14h] [ebp-144h] _DWORD *v76; // [esp+14h] [ebp-144h] _DWORD *v77; // [esp+14h] [ebp-144h] _DWORD *v78; // [esp+14h] [ebp-144h] int v79; // [esp+18h] [ebp-140h] int v80; // [esp+18h] [ebp-140h] unsigned int n; // [esp+18h] [ebp-140h] _DWORD *v82; // [esp+18h] [ebp-140h] const char **v83; // [esp+1Ch] [ebp-13Ch] int v84; // [esp+1Ch] [ebp-13Ch] unsigned int j; // [esp+1Ch] [ebp-13Ch] int v86; // [esp+1Ch] [ebp-13Ch] int v87; // [esp+1Ch] [ebp-13Ch] char **v88; // [esp+1Ch] [ebp-13Ch] _DWORD *v89; // [esp+1Ch] [ebp-13Ch] int v90; // [esp+2Ch] [ebp-12Ch] BYREF volatile signed __int32 *v91; // [esp+30h] [ebp-128h] BYREF unsigned int *v92; // [esp+34h] [ebp-124h] BYREF volatile signed __int32 *v93; // [esp+38h] [ebp-120h] BYREF void *v94[6]; // [esp+3Ch] [ebp-11Ch] BYREF void *v95[6]; // [esp+54h] [ebp-104h] BYREF void *v96[6]; // [esp+6Ch] [ebp-ECh] BYREF _DWORD *v97; // [esp+84h] [ebp-D4h] BYREF volatile signed __int32 *v98[5]; // [esp+88h] [ebp-D0h] BYREF char **v99; // [esp+9Ch] [ebp-BCh] BYREF volatile signed __int32 *v100[5]; // [esp+A0h] [ebp-B8h] BYREF void *v101[6]; // [esp+B4h] [ebp-A4h] BYREF const char *v102; // [esp+CCh] [ebp-8Ch] BYREF char v103[136]; // [esp+D0h] [ebp-88h] BYREF for ( i = 0; ; ++i ) { v4 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v4) >> 3 <= i ) break; v5 = *(_DWORD *)(v4 + 8 * i); std::string::basic_string((void **)&v102, "wx:for"); v6 = (_DWORD *)(v5 + 48); a2 = (const char **)(v5 + 52); v7 = (const char **)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v6, (int)&v102); v67 = v8; v83 = v7; std::string::_M_dispose((void **)&v102); if ( v83 != a2 ) { v84 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * i); std::string::basic_string(v101, "wx:for"); v9 = std::map::operator[]( (_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * i) + 48), v101); v102 = "wx:for-items"; WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v9, v68); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( (_DWORD *)(v84 + 48), (char **)&v102); WXML::DOMLib::Token::~Token((int)v103); std::string::_M_dispose(v101); a2 = (const char **)(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * i) + 48); std::string::basic_string((void **)&v102, "wx:for"); v67 = (WXML::DOMLib::WXMLDom *)std::map::erase(a2, (int)&v102); std::string::_M_dispose((void **)&v102); } } for ( j = 0; ; ++j ) { v10 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v10) >> 3 <= j ) break; a2 = &v102; v79 = 8 * j; v11 = *(_DWORD *)(v10 + 8 * j); std::string::basic_string((void **)&v102, "wx:for-items"); v12 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v11 + 48), (int)&v102); v67 = v13; v73 = v12; std::string::_M_dispose((void **)&v102); if ( v73 == (_DWORD *)(v11 + 52) && !std::operator==(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j), "block") ) { v14 = WXML::DOMLib::szWXIFControlAttrs; while ( 1 ) { v15 = *v14; v72 = v14; if ( !*v14 ) break; v16 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j); std::string::basic_string((void **)&v102, v15); v17 = (_DWORD *)(v16 + 48); a2 = (const char **)(v16 + 52); v18 = (const char **)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v17, (int)&v102); v67 = v19; v74 = v18; std::string::_M_dispose((void **)&v102); v14 = v72 + 1; if ( v74 != a2 ) { std::__shared_ptr::__shared_ptr( &v97, (_DWORD *)(*(_DWORD *)(a1 + 72) + v79)); v20 = operator new((struct type_info *)0x128, (void (__cdecl *)(void *))v68); WXML::DOMLib::WXMLDom::WXMLDom((int)v20); zcc::shared_ptr::shared_ptr(v21); v75 = v99; std::string::basic_string(v101, v15); v22 = std::map::operator[](v97 + 12, v101); v102 = v15; WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v22, v69); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( v75 + 12, (char **)&v102); WXML::DOMLib::Token::~Token((int)v103); std::string::_M_dispose(v101); std::string::operator=((unsigned int *)v99, "block"); WXML::DOMLib::Token::operator=((int)(v99 + 21), (int)(v97 + 21)); std::string::_M_assign((int)(v99 + 6), (int)(v97 + 6)); a2 = (const char **)(v97 + 12); std::string::basic_string((void **)&v102, v15); std::map::erase(a2, (int)&v102); std::string::_M_dispose((void **)&v102); std::vector>::push_back(v99 + 18, &v97); v67 = (WXML::DOMLib::WXMLDom *)std::__shared_ptr::operator=( (_DWORD *)(*(_DWORD *)(a1 + 72) + v79), &v99); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v100); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v98); break; } } } } for ( k = 0; ; ++k ) { v24 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v24) >> 3 <= k ) break; if ( !std::operator==(*(_DWORD *)(v24 + 8 * k), "template") ) goto LABEL_22; v80 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * k); std::string::basic_string(v101, "is"); a2 = 0; if ( (_DWORD *)(v80 + 52) != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v80 + 48), (int)v101) ) { v25 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * k); std::string::basic_string((void **)&v102, "name"); v26 = (const char **)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v25 + 48), (int)&v102); LOBYTE(v26) = v25 + 52 == (_DWORD)v26; a2 = v26; std::string::_M_dispose((void **)&v102); } std::string::_M_dispose(v101); if ( (_BYTE)a2 ) { std::string::operator=(*(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * k), "wx-template"); } else { LABEL_22: if ( !std::operator==(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * k), "template") ) continue; std::string::operator=(*(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * k), "wx-define"); } v67 = (WXML::DOMLib::WXMLDom *)a2; } for ( m = 0; ; ++m ) { v28 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v28) >> 3 <= m ) break; if ( std::operator==(*(_DWORD *)(v28 + 8 * m), "block") ) { std::string::operator=(*(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * m), "block"); v67 = v29; } } for ( n = 0; ; ++n ) { v30 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v30) >> 3 <= n ) break; v86 = 8 * n; if ( (unsigned __int8)std::operator!=(*(_DWORD *)(v30 + 8 * n), "wx-repeat") ) { if ( (unsigned __int8)std::operator!=(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * n), "wx-define") ) { if ( (unsigned __int8)std::operator!=(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * n), "wx-import") ) { if ( (unsigned __int8)std::operator!=(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * n), "import") ) { v31 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * n); std::string::basic_string((void **)&v102, "wx:for-items"); v32 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v31 + 48), (int)&v102); v67 = v33; v76 = v32; std::string::_M_dispose((void **)&v102); if ( v76 != (_DWORD *)(v31 + 52) ) { std::__shared_ptr::__shared_ptr( &v90, (_DWORD *)(*(_DWORD *)(a1 + 72) + v86)); v34 = operator new((struct type_info *)0x128, (void (__cdecl *)(void *))v68); WXML::DOMLib::WXMLDom::WXMLDom((int)v34); zcc::shared_ptr::shared_ptr(v35); std::string::operator=(v92, "wx-repeat"); std::string::_M_assign((int)(v92 + 6), *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * n) + 24); WXML::DOMLib::Token::operator=((int)(v92 + 21), v90 + 84); std::vector>::push_back((char **)v92 + 18, &v90); v36 = v92; std::string::basic_string(v101, "wx:for-items"); v37 = std::map::operator[]((_DWORD *)(v90 + 48), v101); v102 = "wx:for-items"; WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v37, v70); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( v36 + 12, (char **)&v102); WXML::DOMLib::Token::~Token((int)v103); std::string::_M_dispose(v101); v38 = (_DWORD *)(v90 + 48); std::string::basic_string(v94, "wx:for-items"); std::map::erase(v38, (int)v94); std::string::_M_dispose(v94); v39 = v90; v77 = (_DWORD *)(v90 + 52); std::string::basic_string(v95, "wx:for-item"); v40 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v39 + 48), (int)v95); std::string::_M_dispose(v95); if ( v40 != v77 ) { v41 = v92; std::string::basic_string(v101, "wx:for-item"); v42 = std::map::operator[]((_DWORD *)(v90 + 48), v101); v102 = "wx:for-item"; WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v42, v68); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( v41 + 12, (char **)&v102); WXML::DOMLib::Token::~Token((int)v103); std::string::_M_dispose(v101); v43 = (_DWORD *)(v90 + 48); std::string::basic_string(v96, "wx:for-item"); std::map::erase(v43, (int)v96); std::string::_M_dispose(v96); } v44 = v90; v78 = (_DWORD *)(v90 + 52); std::string::basic_string((void **)&v97, "wx:for-index"); v45 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v44 + 48), (int)&v97); std::string::_M_dispose((void **)&v97); if ( v45 != v78 ) { v46 = v92; std::string::basic_string(v101, "wx:for-index"); v47 = std::map::operator[]((_DWORD *)(v90 + 48), v101); v102 = "wx:for-index"; WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v47, v68); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( v46 + 12, (char **)&v102); WXML::DOMLib::Token::~Token((int)v103); std::string::_M_dispose(v101); v48 = (_DWORD *)(v90 + 48); std::string::basic_string((void **)&v99, "wx:for-index"); std::map::erase(v48, (int)&v99); std::string::_M_dispose((void **)&v99); } v49 = v90; v50 = (_DWORD *)(v90 + 52); std::string::basic_string(v101, "wx:key"); v51 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v49 + 48), (int)v101); std::string::_M_dispose(v101); if ( v51 != v50 ) { v52 = v92; std::string::basic_string(v101, "wx:key"); v53 = std::map::operator[]((_DWORD *)(v90 + 48), v101); v102 = "wx:key"; WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v53, v68); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( v52 + 12, (char **)&v102); WXML::DOMLib::Token::~Token((int)v103); std::string::_M_dispose(v101); v54 = (_DWORD *)(v90 + 48); std::string::basic_string((void **)&v102, "wx:key"); std::map::erase(v54, (int)&v102); std::string::_M_dispose((void **)&v102); } std::__shared_ptr::operator=( (_DWORD *)(*(_DWORD *)(a1 + 72) + v86), &v92); v67 = v55; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v93); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); } } } } } } for ( ii = 0; ; ++ii ) { v57 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v57) >> 3 <= ii ) break; v58 = 8 * ii; v87 = *(_DWORD *)(v57 + 8 * ii); std::string::basic_string((void **)&v102, "wx:scope-data"); v59 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v87 + 48), (int)&v102); v67 = v60; v82 = v59; std::string::_M_dispose((void **)&v102); if ( v82 != (_DWORD *)(v87 + 52) ) { std::__shared_ptr::__shared_ptr( &v97, (_DWORD *)(v58 + *(_DWORD *)(a1 + 72))); v61 = operator new((struct type_info *)0x128, (void (__cdecl *)(void *))v68); WXML::DOMLib::WXMLDom::WXMLDom((int)v61); zcc::shared_ptr::shared_ptr(v62); std::string::operator=((unsigned int *)v99, "wx-scope"); std::string::_M_assign((int)(v99 + 6), *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * ii) + 24); WXML::DOMLib::Token::operator=((int)(v99 + 21), (int)(v97 + 21)); std::vector>::push_back(v99 + 18, &v97); v88 = v99; std::string::basic_string(v101, "wx:scope-data"); v63 = std::map::operator[](v97 + 12, v101); v102 = "wx:scope-data"; WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v63, v71); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( v88 + 12, (char **)&v102); WXML::DOMLib::Token::~Token((int)v103); std::string::_M_dispose(v101); v89 = v97 + 12; std::string::basic_string((void **)&v102, "wx:scope-data"); std::map::erase(v89, (int)&v102); std::string::_M_dispose((void **)&v102); std::__shared_ptr::operator=( (_DWORD *)(*(_DWORD *)(a1 + 72) + v58), &v99); v67 = v64; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v100); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v98); } } for ( jj = 0; (*(_DWORD *)(a1 + 76) - *(_DWORD *)(a1 + 72)) >> 3 > jj; ++jj ) WXML::DOMLib::WXMLDom::RewriteTree(v67); return 0; } // 41825A: variable 'v8' is possibly undefined // 4182B8: variable 'v68' is possibly undefined // 41838B: variable 'v13' is possibly undefined // 418411: variable 'v19' is possibly undefined // 418464: variable 'v21' is possibly undefined // 4184A8: variable 'v69' is possibly undefined // 418722: variable 'v29' is possibly undefined // 418814: variable 'v33' is possibly undefined // 418864: variable 'v35' is possibly undefined // 41890B: variable 'v70' is possibly undefined // 418C15: variable 'v55' is possibly undefined // 418C8C: variable 'v60' is possibly undefined // 418CDF: variable 'v62' is possibly undefined // 418D90: variable 'v71' is possibly undefined // 418E19: variable 'v64' is possibly undefined // 418E4F: variable 'v67' is possibly undefined // 460640: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 52E434: using guessed type char *WXML::DOMLib::szWXIFControlAttrs[4]; //----- (00418F4E) -------------------------------------------------------- int __fastcall WXML::DOMLib::Parser::DOM(WXML::DOMLib::Parser *a1) { WXML::DOMLib::Token *v2; // eax _DWORD *v3; // eax const char **v4; // eax _DWORD *v5; // eax _DWORD *v6; // ecx void *v7; // eax int v8; // edx _DWORD *v9; // eax int v10; // eax _DWORD *v11; // eax _DWORD *exception; // esi WXML::DOMLib::Token *v14; // eax _DWORD *v15; // esi _DWORD *v16; // eax int v17; // eax _DWORD *v18; // eax _DWORD *v19; // eax _DWORD *v20; // esi _DWORD *v21; // esi _DWORD *v22; // esi _DWORD *v23; // esi _DWORD *v24; // edx int v25; // eax int v26; // edi int v27; // ecx _DWORD *v28; // eax void *v29; // eax int v30; // edx const WXML::DOMLib::Token *v32; // [esp+4h] [ebp-1D4h] char *v33; // [esp+4h] [ebp-1D4h] const WXML::DOMLib::Token *v34; // [esp+4h] [ebp-1D4h] void (__cdecl *v35)(void *); // [esp+4h] [ebp-1D4h] const char *v36; // [esp+4h] [ebp-1D4h] const WXML::DOMLib::Token *v37; // [esp+4h] [ebp-1D4h] const char *v38; // [esp+4h] [ebp-1D4h] const char *v39; // [esp+4h] [ebp-1D4h] const char *v40; // [esp+4h] [ebp-1D4h] WXML::DOMLib::Token *v41[6]; // [esp+28h] [ebp-1B0h] BYREF char *v42; // [esp+40h] [ebp-198h] BYREF void *v43[6]; // [esp+58h] [ebp-180h] BYREF int v44[6]; // [esp+70h] [ebp-168h] BYREF int v45; // [esp+88h] [ebp-150h] int v46; // [esp+E0h] [ebp-F8h] BYREF volatile signed __int32 *v47; // [esp+E4h] [ebp-F4h] BYREF unsigned int *v48; // [esp+150h] [ebp-88h] BYREF volatile signed __int32 *v49[33]; // [esp+154h] [ebp-84h] BYREF v2 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::Token((int)v44, v2, v32); if ( v45 ) { if ( v45 == 4 ) return WXML::DOMLib::Token::~Token((int)v44); } else { if ( WXML::DOMLib::Token::IsMatch((int)v44, (WXML::DOMLib::Token *)"<", v33) ) { ++*((_DWORD *)a1 + 25); v3 = WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::operator=((int)v44, (int)v3); WXML::DOMLib::Token::Token((int)&v46, (WXML::DOMLib::Token *)v44, v34); v4 = (const char **)WXML::DOMLib::Token::ToString[abi:cxx11]((int)v44); if ( !WXML::DOMLib::Parser::IsValidTag(v4) ) { exception = __cxa_allocate_exception(0x18u); WXML::DOMLib::Parser::Error(exception, a1, "unexpected tag", 0); __cxa_throw( exception, (struct type_info *)&`typeinfo for'WXML::DOMLib::ParseException, WXML::DOMLib::ParseException::~ParseException); } ++*((_DWORD *)a1 + 25); v5 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v44); v6 = (_DWORD *)*((_DWORD *)a1 + 8); if ( v6 == (_DWORD *)(*((_DWORD *)a1 + 10) - 24) ) { std::deque::_M_push_back_aux(v5); } else { std::string::basic_string(v6, (int)v5); *((_DWORD *)a1 + 8) += 24; } v7 = operator new((struct type_info *)0x128, v35); WXML::DOMLib::WXMLDom::WXMLDom((int)v7); zcc::shared_ptr::shared_ptr(v8); v9 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v44); std::string::_M_assign((int)v48, (int)v9); std::string::_M_assign((int)(v48 + 6), (int)v48); WXML::DOMLib::Token::operator=((int)(v48 + 21), (int)v44); v10 = std::deque>::back((_DWORD *)a1 + 12); std::vector>::push_back((char **)(*(_DWORD *)v10 + 72), &v48); std::deque>::push_back((_DWORD *)a1 + 12, &v48); WXML::DOMLib::Parser::ATTR_LIST(a1); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v49); v11 = WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::operator=((int)v44, (int)v11); if ( !v45 ) { if ( WXML::DOMLib::Token::IsMatch((int)v44, (WXML::DOMLib::Token *)">", v36) ) { ++*((_DWORD *)a1 + 25); WXML::DOMLib::Parser::DOMS((WXML::DOMLib::Parser *)&v48); v14 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::Token((int)&v48, v14, v37); if ( v49[5] || !WXML::DOMLib::Token::IsMatch((int)&v48, (WXML::DOMLib::Token *)"((int)v43, "expect end-tag `", (int)v41); v19 = std::string::append(v43, "`."); std::string::basic_string(&v42, v19); std::string::_M_dispose(v43); v20 = __cxa_allocate_exception(0x18u); WXML::DOMLib::Parser::Error(v20, a1, v42, 0); __cxa_throw( v20, (struct type_info *)&`typeinfo for'WXML::DOMLib::ParseException, WXML::DOMLib::ParseException::~ParseException); } ++*((_DWORD *)a1 + 25); std::deque::pop_back((_DWORD *)a1 + 2); std::deque>::pop_back((_DWORD *)a1 + 12); v18 = WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::operator=((int)&v48, (int)v18); if ( !WXML::DOMLib::Token::IsMatch((int)&v48, (WXML::DOMLib::Token *)">", v40) ) { v21 = __cxa_allocate_exception(0x18u); WXML::DOMLib::Parser::Error(v21, a1, "unexpected token", 0); __cxa_throw( v21, (struct type_info *)&`typeinfo for'WXML::DOMLib::ParseException, WXML::DOMLib::ParseException::~ParseException); } ++*((_DWORD *)a1 + 25); std::string::_M_dispose((void **)v41); WXML::DOMLib::Token::~Token((int)&v48); goto LABEL_27; } if ( WXML::DOMLib::Token::IsMatch((int)v44, (WXML::DOMLib::Token *)"/>", (const char *)v37) ) { ++*((_DWORD *)a1 + 25); std::deque>::pop_back((_DWORD *)a1 + 12); std::deque::pop_back((_DWORD *)a1 + 2); LABEL_27: WXML::DOMLib::Token::~Token((int)&v46); return WXML::DOMLib::Token::~Token((int)v44); } } v22 = __cxa_allocate_exception(0x18u); WXML::DOMLib::Parser::Error(v22, a1, "unexpected token", 0); __cxa_throw( v22, (struct type_info *)&`typeinfo for'WXML::DOMLib::ParseException, WXML::DOMLib::ParseException::~ParseException); } if ( WXML::DOMLib::Token::IsMatch((int)v44, (WXML::DOMLib::Token *)" v25 ) { LOBYTE(v24) = *(_BYTE *)(v27 + v25); v24 = (_DWORD *)((char *)v24 - 9); if ( (unsigned __int8)v24 > 0x17u || !_bittest(&v26, (unsigned int)v24) ) { v28 = (_DWORD *)std::deque>::back((_DWORD *)a1 + 12); std::__shared_ptr::__shared_ptr(&v46, v28); v29 = operator new((struct type_info *)0x128, (void (__cdecl *)(void *))v33); WXML::DOMLib::WXMLDom::WXMLDom((int)v29); zcc::shared_ptr::shared_ptr(v30); std::string::operator=(v48, "TEXTNODE"); WXML::DOMLib::Token::operator=((int)(v48 + 21), (int)v44); std::vector>::push_back((char **)(v46 + 72), &v48); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v49); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v47); return WXML::DOMLib::Token::~Token((int)v44); } ++v25; } } return WXML::DOMLib::Token::~Token((int)v44); } // 418F6A: variable 'v32' is possibly undefined // 418F8B: variable 'v33' is possibly undefined // 418FC1: variable 'v34' is possibly undefined // 419028: variable 'v35' is possibly undefined // 41903F: variable 'v8' is possibly undefined // 419139: variable 'v36' is possibly undefined // 419167: variable 'v37' is possibly undefined // 419180: variable 'v38' is possibly undefined // 41922F: variable 'v39' is possibly undefined // 41926E: variable 'v40' is possibly undefined // 4194CD: variable 'v30' is possibly undefined // 460640: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 4D7A1C: using guessed type _DWORD __stdcall std::deque::_M_push_back_aux(_DWORD); // 533C64: using guessed type int *`typeinfo for'WXML::DOMLib::ParseException; //----- (004195FE) -------------------------------------------------------- int __fastcall WXML::DOMLib::Parser::DOMS(WXML::DOMLib::Parser *a1) { WXML::DOMLib::Token *v2; // eax _DWORD *exception; // esi const WXML::DOMLib::Token *v5; // [esp+4h] [ebp-84h] const char *v6; // [esp+4h] [ebp-84h] char v7[24]; // [esp+10h] [ebp-78h] BYREF int v8; // [esp+28h] [ebp-60h] while ( 1 ) { WXML::DOMLib::Parser::DOM(a1); v2 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::Token((int)v7, v2, v5); if ( v8 == 4 ) break; if ( WXML::DOMLib::Token::IsMatch((int)v7, (WXML::DOMLib::Token *)"::pop_back((_DWORD *)this + 2); while ( *((_DWORD *)this + 18) != *((_DWORD *)this + 14) ) std::deque>::pop_back((_DWORD *)this + 12); v6 = *((_DWORD *)this + 22); v7 = *((_DWORD *)this + 23); *((_DWORD *)this + 25) = 0; if ( v6 != v7 ) { v8 = v6; do { v14 = v7; v15 = v8; WXML::DOMLib::Token::~Token(v8); v7 = v14; v8 = v15 + 112; } while ( v14 != v15 + 112 ); *((_DWORD *)this + 23) = v6; } *((_DWORD *)this + 32) = 4; std::string::_M_assign((int)this + 328, a4); WXML::DOMLib::Tokenizer::Tokenizer(a2, a4); Tokens = WXML::DOMLib::Tokenizer::GetTokens(v18, (_DWORD *)this + 22, a3, a5); if ( !Tokens ) { v10 = operator new((struct type_info *)0x128, v13); WXML::DOMLib::WXMLDom::WXMLDom((int)v10); zcc::shared_ptr::shared_ptr(v11); std::__shared_ptr::operator=(this, &v16); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v17); std::string::operator=(*(unsigned int **)this, "root"); std::deque>::push_back((_DWORD *)this + 12, this); WXML::DOMLib::Parser::DOMS(this); } std::string::_M_dispose(&v20); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v19); return Tokens; } // 419782: variable 'v13' is possibly undefined // 419798: variable 'v11' is possibly undefined // 420974: using guessed type _DWORD __stdcall WXML::DOMLib::Tokenizer::Tokenizer(_DWORD, _DWORD); // 460640: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 4196C2: using guessed type char var_54[4]; //----- (00419837) -------------------------------------------------------- unsigned int __cdecl WXML::DOMLib::recurseDependencies(int *a1, int *a2, _DWORD *a3) { _DWORD *v3; // edi BOOL v4; // edi char *v5; // eax int *v6; // eax int insert_unique_pos; // eax _DWORD *v8; // edx _DWORD *v9; // edi unsigned int i; // ebx int v11; // edx unsigned int result; // eax int v13; // eax void (__cdecl *v14)(void *); // [esp+4h] [ebp-64h] _DWORD *v15; // [esp+18h] [ebp-50h] char v16; // [esp+1Fh] [ebp-49h] void *v17[6]; // [esp+20h] [ebp-48h] BYREF void *v18[12]; // [esp+38h] [ebp-30h] BYREF if ( std::operator==(*a1, "import") || std::operator==(*a1, "include") ) { v3 = (_DWORD *)(*a1 + 48); std::string::basic_string(v18, (char *)&off_52DF44); v4 = std::map::count(v3, (int)v18); std::string::_M_dispose(v18); if ( v4 ) { std::string::basic_string(v17, (char *)&off_52DF44); v5 = std::map::operator[]((_DWORD *)(*a1 + 48), v17); v6 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v5); WXML::DOMLib::resolvePath((int)v18, a2, v6); insert_unique_pos = std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( a3, (int)v18); v9 = v8; if ( v8 ) { v16 = 1; if ( !insert_unique_pos && v8 != a3 + 1 ) v16 = std::operator<((int)v18, (int)(v8 + 4)); v15 = operator new((struct type_info *)0x28, v14); std::string::basic_string(v15 + 4, v18); std::_Rb_tree_insert_and_rebalance(v16, v15, v9, a3 + 1); ++a3[5]; } std::string::_M_dispose(v18); std::string::_M_dispose(v17); } } for ( i = 0; ; ++i ) { v11 = *(_DWORD *)(*a1 + 72); result = (*(_DWORD *)(*a1 + 76) - v11) >> 3; if ( i >= result ) break; v13 = v11 + 8 * i; WXML::DOMLib::recurseDependencies(v13, a2, a3); } return result; } // 4198EB: variable 'v8' is possibly undefined // 419920: variable 'v14' is possibly undefined // 52DF44: using guessed type void *off_52DF44; //----- (004199C0) -------------------------------------------------------- int __fastcall WXML::DOMLib::WXMLDom::RecordAllPath(int a1) { BOOL v2; // edi _DWORD *v3; // edi char *v4; // eax int v5; // eax unsigned int i; // esi int v7; // edx int v8; // ecx volatile signed __int32 **v9; // eax int v11; // [esp+1Ch] [ebp-4Ch] void *v12[6]; // [esp+20h] [ebp-48h] BYREF void *v13[12]; // [esp+38h] [ebp-30h] BYREF if ( std::operator==(a1, "import") || std::operator==(a1, "include") ) { std::string::basic_string(v13, (char *)&off_52DF44); v2 = std::map::count((_DWORD *)(a1 + 48), (int)v13); std::string::_M_dispose(v13); if ( v2 ) { v3 = *(_DWORD **)(a1 + 248); std::string::basic_string(v12, (char *)&off_52DF44); v4 = std::map::operator[]((_DWORD *)(a1 + 48), v12); v5 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v4); std::string::basic_string(v13, v5); if ( v3 + 1 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v3, (int)v13) ) { v11 = v3[5]; *std::map::operator[](v3, (int)v13) = v11; std::vector::push_back(v3 + 6, (int)v13); } std::string::_M_dispose(v13); std::string::_M_dispose(v12); } } for ( i = 0; ; ++i ) { v7 = *(_DWORD *)(a1 + 72); if ( i >= (*(_DWORD *)(a1 + 76) - v7) >> 3 ) break; v8 = *(_DWORD *)(v7 + 8 * i); *(_DWORD *)(v8 + 248) = *(_DWORD *)(a1 + 248); v9 = std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( (volatile signed __int32 **)(v8 + 252), *(volatile signed __int32 **)(a1 + 252)); WXML::DOMLib::WXMLDom::RecordAllPath((WXML::DOMLib::WXMLDom *)v9); } return 0; } // 52DF44: using guessed type void *off_52DF44; //----- (00419B0E) -------------------------------------------------------- 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); } } // 419BB3: variable 'v6' is possibly undefined //----- (00419BF4) -------------------------------------------------------- void __fastcall WXML::EXPRLib::Parser::~Parser(int a1) { const void *v2; // esi int v3; // eax int v4; // edi int v5; // edx int *i; // esi int v7; // edx int v8; // edx void **v9; // esi unsigned int v10; // edi void *v11; // 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 v2 = (const void *)(a1 + 64); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 84)); qmemcpy(v19, v2, sizeof(v19)); qmemcpy(v20, (const void *)(a1 + 48), sizeof(v20)); qmemcpy(v18, v20, sizeof(v18)); qmemcpy(v17, v19, sizeof(v17)); v3 = v18[0]; v4 = v17[0]; v13 = v18[2]; v15 = v18[3]; v14 = v17[1]; v16 = v17[3]; v5 = v18[3]; for ( i = (int *)(v18[3] + 4); (unsigned int)i < v16; ++i ) { v7 = *i; v12 = v3; std::_Destroy_aux::__destroy *>(v7, v7, v7 + 512); v3 = v12; } if ( v16 == v15 ) { std::_Destroy_aux::__destroy *>(v5, v3, v4); } else { std::_Destroy_aux::__destroy *>(v13, v3, v13); std::_Destroy_aux::__destroy *>(v8, v14, v4); } if ( *(_DWORD *)(a1 + 40) ) { v9 = *(void ***)(a1 + 60); v10 = *(_DWORD *)(a1 + 76) + 4; while ( v10 > (unsigned int)v9 ) { v11 = *v9++; operator delete(v11); } operator delete(*(void **)(a1 + 40)); } std::deque>::~deque(a1); } // 419CA1: variable 'v8' is possibly undefined // 419CAA: variable 'v5' is possibly undefined //----- (00419CEA) -------------------------------------------------------- int __cdecl WXML::DOMLib::WXMLDom::DealSingleTokenToOps( int *a1, unsigned int *a2, int a3, _DWORD *a4, _DWORD *a5, char a6, int a7, char a8, int *a9, char a10, int a11) { const char **v11; // eax const char *v12; // eax void *exception; // ebx int v14; // ebx int v15; // edx int v16; // esi int v17; // esi int v18; // edi char *v19; // esi _DWORD *v20; // ecx char *v21; // eax char *v22; // ebx char *v23; // edi int i; // edi int v25; // eax unsigned int j; // esi int v27; // ebx char *v28; // edi char *v29; // ecx char *k; // eax int v31; // edx std::ostream::sentry *v32; // ebx char *v33; // esi bool v34; // zf char *v35; // eax _DWORD *v36; // edx _DWORD *v37; // edi _DWORD *v38; // esi char v39; // al _DWORD *v40; // esi void *v41; // eax _DWORD *v42; // esi void *v43; // eax int v44; // edi int v45; // eax unsigned int v46; // esi std::ostream::sentry *v47; // esi std::ostream::sentry *v48; // eax std::ostream::sentry *v49; // eax std::ostream::sentry *v50; // eax int *v51; // edi int v52; // edi int v53; // esi char *v54; // edi int v55; // eax std::ostream::sentry *v56; // eax int v57; // eax std::ostream::sentry *v58; // eax std::ostream::sentry *v59; // eax char **v61; // [esp+4h] [ebp-114h] void (__cdecl *v62)(void *); // [esp+4h] [ebp-114h] void (__cdecl *v63)(void *); // [esp+4h] [ebp-114h] void (__cdecl *v64)(void *); // [esp+4h] [ebp-114h] _DWORD *v65; // [esp+28h] [ebp-F0h] char *v66; // [esp+30h] [ebp-E8h] char *v67; // [esp+34h] [ebp-E4h] int v68; // [esp+40h] [ebp-D8h] int v69; // [esp+44h] [ebp-D4h] unsigned int m; // [esp+48h] [ebp-D0h] int v71; // [esp+4Ch] [ebp-CCh] int v72; // [esp+4Ch] [ebp-CCh] char v73; // [esp+4Ch] [ebp-CCh] char v74; // [esp+5Ah] [ebp-BEh] BYREF char v75; // [esp+5Bh] [ebp-BDh] BYREF char *v76; // [esp+5Ch] [ebp-BCh] BYREF char *v77; // [esp+60h] [ebp-B8h] char *v78; // [esp+64h] [ebp-B4h] char *v79; // [esp+68h] [ebp-B0h] BYREF char *v80; // [esp+6Ch] [ebp-ACh] char *v81; // [esp+70h] [ebp-A8h] void *v82[2]; // [esp+74h] [ebp-A4h] BYREF char v83; // [esp+7Ch] [ebp-9Ch] BYREF int *v84; // [esp+8Ch] [ebp-8Ch] BYREF void *v85[2]; // [esp+90h] [ebp-88h] BYREF char v86; // [esp+98h] [ebp-80h] BYREF void *v87; // [esp+A8h] [ebp-70h] BYREF int v88; // [esp+ACh] [ebp-6Ch] BYREF void *v89; // [esp+B0h] [ebp-68h] BYREF void *v90; // [esp+B4h] [ebp-64h] BYREF int v91; // [esp+B8h] [ebp-60h] _DWORD *v92; // [esp+BCh] [ebp-5Ch] int v93; // [esp+C0h] [ebp-58h] int v94; // [esp+C4h] [ebp-54h] int v95; // [esp+C8h] [ebp-50h] _DWORD *v96; // [esp+CCh] [ebp-4Ch] void *v97; // [esp+D0h] [ebp-48h] int v98; // [esp+D4h] [ebp-44h] void *v99; // [esp+D8h] [ebp-40h] void *v100; // [esp+DCh] [ebp-3Ch] int v101; // [esp+E0h] [ebp-38h] _DWORD *v102; // [esp+E4h] [ebp-34h] void *v103; // [esp+E8h] [ebp-30h] void *v104; // [esp+ECh] [ebp-2Ch] int v105; // [esp+F0h] [ebp-28h] _DWORD *v106; // [esp+F4h] [ebp-24h] int *v107; // [esp+F8h] [ebp-20h] volatile signed __int32 *v108; // [esp+FCh] [ebp-1Ch] if ( a8 ) v11 = (const char **)WXML::DOMLib::Token::ToString[abi:cxx11]((int)a5); else v11 = (const char **)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)a5); v12 = *v11; v74 = 0; v76 = 0; v77 = 0; v78 = 0; v68 = WXML::StringTemplating::Deal(v12, (int)a2, &v76, &v74); if ( v68 ) { exception = __cxa_allocate_exception(0x18u); std::string::basic_string(&v87, "did you forget }}, ' or \""); std::string::basic_string((void **)&v84, (char *)&byte_52DD60); WXML::DOMLib::WXMLDom::Error((int)exception, a1, (int)a5, (int *)&v84, (int *)&v87); std::string::_M_dispose((void **)&v84); std::string::_M_dispose(&v87); __cxa_throw( exception, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } if ( a8 ) { v14 = a11 + 4; std::string::basic_string(&v87, "plain_text_marker"); v15 = *(_DWORD *)(a11 + 8); v16 = a11 + 4; while ( v15 ) { v71 = v15; if ( (unsigned __int8)std::operator<(v15 + 16, (int)&v87) ) { v15 = *(_DWORD *)(v71 + 12); } else { v16 = v71; v15 = *(_DWORD *)(v71 + 8); } } if ( v14 != v16 && (unsigned __int8)std::operator<((int)&v87, v16 + 16) ) v16 = a11 + 4; std::string::_M_dispose(&v87); if ( v14 != v16 ) { std::string::basic_string(&v87, "plain_text_marker"); v17 = *(_DWORD *)(a11 + 8); v18 = a11 + 4; while ( v17 ) { if ( (unsigned __int8)std::operator<(v17 + 16, (int)&v87) ) { v17 = *(_DWORD *)(v17 + 12); } else { v18 = v17; v17 = *(_DWORD *)(v17 + 8); } } if ( v14 == v18 || (unsigned __int8)std::operator<((int)&v87, v18 + 16) ) std::__throw_out_of_range((std::out_of_range *)"map::at"); std::string::basic_string(v82, v18 + 40); std::string::_M_dispose(&v87); v85[0] = &v86; v85[1] = 0; v86 = 0; v84 = 0; std::string::operator=((unsigned int *)v85, (char *)&byte_52DD60); v19 = v76; if ( v76 != v77 && *(_DWORD *)v76 == 1 ) { if ( v77 == v78 ) { std::vector::_M_realloc_insert( &v76, v76, &v84); } else { v87 = &v76; v88 = (int)v84; std::string::basic_string(&v89, (int)v85); v20 = v77 + 4; v21 = v77 - 24; *(_DWORD *)v77 = *((_DWORD *)v77 - 7); std::string::basic_string(v20, v21); v22 = v77 - 28; v23 = v77 - 28; v77 += 28; for ( i = -1227133513 * ((v23 - v19) >> 2); i > 0; --i ) { v25 = *((_DWORD *)v22 - 7); v22 -= 28; *((_DWORD *)v22 + 7) = v25; std::string::operator=((_DWORD *)v22 + 8, (_DWORD *)v22 + 1); } *(_DWORD *)v19 = v88; std::string::operator=((_DWORD *)v19 + 1, &v89); std::string::_M_dispose(&v89); } } if ( v76 != v77 && *((_DWORD *)v77 - 7) == 1 ) std::vector::push_back(&v76, &v84); for ( j = 1; -1227133513 * ((v77 - v76) >> 2) > j; ++j ) { v27 = 28 * j; v28 = &v76[28 * j]; if ( *(_DWORD *)v28 == 1 ) { v29 = &v76[v27 - 28]; if ( !*(_DWORD *)v29 ) std::string::operator+=((_DWORD *)v29 + 1, (int)v82); } else if ( !*(_DWORD *)v28 && *(_DWORD *)&v76[v27 - 28] == 1 ) { std::string::basic_string(&v87, (int)v82); std::string::append(&v87, (int)(v28 + 4)); std::string::operator=(&v76[v27 + 4], &v87); std::string::_M_dispose(&v87); } } std::string::_M_dispose(v85); std::string::_M_dispose(v82); } } if ( a7 ) { v72 = 0; for ( k = v76; v77 != k; k += 28 ) { v31 = *(_DWORD *)k != 0; v72 += v31; } if ( v72 != a7 ) { a5[14] = -3; std::string::operator=(a5 + 15, "the very attr must be an expression (surrouned by `{{..}}`)"); v68 = -1; goto LABEL_109; } } if ( v77 == v76 ) { v88 = (int)&v90; v89 = 0; LOBYTE(v90) = 0; v87 = 0; std::string::operator=((unsigned int *)&v88, (char *)&byte_52DD60); v87 = 0; std::vector::push_back(&v76, &v87); std::string::_M_dispose((void **)&v88); } v73 = 1; if ( (unsigned int)(-1227133513 * ((v77 - v76) >> 2)) <= 1 ) { v73 = 0; if ( v77 - v76 == 28 ) v73 = a8 & (*(_DWORD *)v76 == 1); } v32 = (std::ostream::sentry *)(a3 + 8); std::operator<<>((std::ostream::sentry *)(a3 + 8), "Z("); v79 = 0; v80 = 0; v81 = 0; if ( v73 ) { std::operator<<>(v32, "[a,"); ++a9[1]; } v67 = (char *)&off_52DFC8; if ( a8 ) v67 = "t_"; v66 = (char *)&byte_52DD60; if ( a6 ) v66 = (char *)&unk_52DFCC; for ( m = 0; -1227133513 * ((v77 - v76) >> 2) > m; ++m ) { if ( m ) std::operator<<>(v32, ","); v82[1] = 0; v83 = 0; v33 = &v76[28 * m]; v69 = 28 * m; v34 = *(_DWORD *)v33 == 0; v82[0] = &v83; v35 = "s_"; if ( !v34 ) v35 = "e_"; std::string::operator=((unsigned int *)v82, v35); std::string::operator+=(v82, v67); std::string::operator+=(v82, (int)(v33 + 4)); std::string::operator+=(v82, v66); v36 = a4 + 1; v37 = (_DWORD *)a4[2]; v38 = a4 + 1; while ( v37 ) { v65 = v36; v39 = std::operator<((int)(v37 + 4), (int)v82); v36 = v65; if ( v39 ) { v37 = (_DWORD *)v37[3]; } else { v38 = v37; v37 = (_DWORD *)v37[2]; } } if ( v36 == v38 || (unsigned __int8)std::operator<((int)v82, (int)(v38 + 4)) ) { if ( *(_DWORD *)&v76[28 * m] ) { v87 = 0; v89 = 0; v90 = 0; v91 = 0; v92 = 0; v93 = 0; v94 = 0; v95 = 0; v96 = 0; v88 = 8; v87 = operator new((struct type_info *)0x20, (void (__cdecl *)(void *))v61); v40 = (char *)v87 + ((2 * v88 - 2) & 0xFFFFFFFC); v41 = operator new((struct type_info *)0x200, v62); *v40 = v41; v92 = v40; v90 = v41; v91 = (int)v41 + 512; v96 = v40; v94 = (int)v41; v95 = (int)v41 + 512; v89 = v41; v93 = (int)v41; v97 = 0; v99 = 0; v100 = 0; v101 = 0; v102 = 0; v103 = 0; v104 = 0; v105 = 0; v106 = 0; v98 = 8; v97 = operator new((struct type_info *)0x20, v63); v42 = (char *)v97 + ((2 * v98 - 2) & 0xFFFFFFFC); v43 = operator new((struct type_info *)0x200, v64); *v42 = v43; v102 = v42; v100 = v43; v101 = (int)v43 + 512; v106 = v42; v104 = v43; v105 = (int)v43 + 512; v99 = v43; v103 = v43; v107 = 0; v108 = 0; std::string::basic_string((void **)&v84, (char *)&byte_52DD60); v44 = WXML::EXPRLib::Parser::Parse( (int)&v87, (void (__cdecl *)(void *))&v84, (char **)&v76[v69 + 4], (int)&v84, 1, 1, a2, a6); std::string::_M_dispose((void **)&v84); if ( v44 ) { a5[14] = -3; std::string::_M_assign((int)(a5 + 15), (int)a2); std::operator<<>(v32, "undefined"); WXML::EXPRLib::Parser::~Parser((int)&v87); std::string::_M_dispose(v82); break; } v84 = v107; v85[0] = (void *)v108; if ( v108 ) __gnu_cxx::__atomic_add_dispatch(v108 + 1); v51 = v84; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v85); std::string::basic_string((void **)&v84, (char *)&byte_52DD60); WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(v51, a3, (int)&v84, &v75); std::string::_M_dispose((void **)&v84); WXML::EXPRLib::Parser::~Parser((int)&v87); } else { std::operator<<>(v32, "[3,'"); WXML::DOMLib::removern(&v87, &v76[v69 + 4]); WXML::Rewrite::ToStringCode((int *)&v87, a3); std::operator<<>(v32, "']"); std::string::_M_dispose(&v87); } v52 = *a9; v53 = a9[1]; if ( !v73 ) v53 = -1; std::string::basic_string(&v87, (int)v82); v93 = v52; v54 = v80; v94 = v53; if ( v80 == v81 ) { v61 = std::vector>::_M_realloc_insert>( &v79, v80, &v87); } else { std::string::basic_string(v80, &v87); v80 += 32; v55 = v93; *((_DWORD *)v54 + 7) = v94; *((_DWORD *)v54 + 6) = v55; } std::string::_M_dispose(&v87); } else { if ( v38[11] == -1 ) { if ( a10 ) { std::operator<<>(v32, "z["); v56 = (std::ostream::sentry *)std::ostream::operator<<(v38[10]); std::operator<<>(v56, "][1]"); goto LABEL_99; } std::operator<<>(v32, "z["); v57 = v38[10]; } else { std::operator<<>(v32, "z["); v59 = (std::ostream::sentry *)std::ostream::operator<<(v38[10]); if ( a10 ) std::operator<<>(v59, "][1]["); else std::operator<<>(v59, "]["); v57 = v38[11]; } v58 = (std::ostream::sentry *)std::ostream::operator<<(v57); std::operator<<>(v58, "]"); } LABEL_99: ++a9[1]; std::string::_M_dispose(v82); } if ( v73 ) std::operator<<>(v32, "]"); v45 = *a9; if ( a5[14] == -1 ) a5[14] = v45; v46 = 0; a9[1] = 0; *a9 = v45 + 1; while ( (v80 - v79) >> 5 > v46 ) std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( a4, (int)&v79[32 * v46++]); std::vector>::~vector((void ***)&v79); if ( a10 ) { v47 = std::operator<<>(v32, ",['"); WXML::Rewrite::ToStringCode((int)&v87, a1); v48 = std::operator<<(v47, (int *)&v87); std::operator<<>(v48, "',"); v49 = (std::ostream::sentry *)std::ostream::operator<<(a5[2]); std::operator<<>(v49, ","); v50 = (std::ostream::sentry *)std::ostream::operator<<(a5[3]); std::operator<<>(v50, "])\n"); std::string::_M_dispose(&v87); } else { std::operator<<>(v32, ")\n"); } LABEL_109: std::vector::~vector((void **)&v76); return v68; } // 41A456: variable 'v61' is possibly undefined // 41A471: variable 'v62' is possibly undefined // 41A4E3: variable 'v63' is possibly undefined // 41A4FE: variable 'v64' is possibly undefined // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 52DFC8: using guessed type void *off_52DFC8; // 533C6C: using guessed type int *`typeinfo for'WXML::DOMLib::RenderException; //----- (0041AA88) -------------------------------------------------------- int __thiscall WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord( _DWORD *this, int *a2, unsigned int *a3, int a4, _DWORD *a5, int *a6, unsigned __int8 a7, int a8) { int i; // esi unsigned int j; // esi if ( std::operator==((int)this, "TEXTNODE") ) { WXML::DOMLib::WXMLDom::DealSingleTokenToOps(a2, a3, a4, a5, this + 21, 0, 0, 1, a6, a7, a8); } else { for ( i = this[15]; (_DWORD *)i != this + 13; i = std::_Rb_tree_increment(i) ) { if ( *(_DWORD *)(i + 60) && !std::operator==((int)this, "import") && !std::operator==((int)this, "include") ) { if ( std::operator==((int)this, "wx-template") && std::operator==(i + 16, "data") || std::operator==((int)this, "wx-scope") && std::operator==(i + 16, "wx:scope-data") ) { WXML::DOMLib::WXMLDom::DealSingleTokenToOps(a2, a3, a4, a5, (_DWORD *)(i + 40), 1, 1, 0, a6, a7, a8); } else { WXML::DOMLib::WXMLDom::DealSingleTokenToOps(a2, a3, a4, a5, (_DWORD *)(i + 40), 0, 0, 0, a6, a7, a8); } } } for ( j = 0; j < (this[19] - this[18]) >> 3; ++j ) WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord(a2, a3, a4, a5, a6, a7, a8); } return 0; } //----- (0041ACA2) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int __thiscall WXML::DOMLib::WXMLDom::RenderNonDefine( int this, int *a2, int *a3, int a4, int *a5, int a6, int *a7, int *a8, int *a9, int *a10, int *a11, char a12, unsigned __int8 a13, int a14, int a15) { std::ostream::sentry *v16; // esi std::ostream::sentry *v17; // eax std::ostream::sentry *v18; // eax std::ostream::sentry *v19; // eax std::ostream::sentry *v20; // eax std::ostream::sentry *v21; // eax std::ostream::sentry *v22; // eax int v23; // eax void *exception; // ebx std::ostream::sentry *v25; // eax std::ostream::sentry *v26; // eax std::ostream::sentry *v27; // eax std::ostream::sentry *v28; // eax std::ostream::sentry *v29; // eax std::ostream::sentry *v30; // eax std::ostream::sentry *v31; // eax std::ostream::sentry *v32; // eax std::ostream::sentry *v33; // eax _DWORD *v34; // eax int v35; // eax _DWORD *v36; // eax int v37; // eax void *v38; // ebx _DWORD *v39; // esi _DWORD *v40; // eax void *v41; // ebx _DWORD *v42; // esi _DWORD *v43; // eax void *v44; // esi _DWORD *v45; // edi _DWORD *v46; // eax void *v47; // esi std::ostream::sentry *v48; // ebx std::ostream::sentry *v49; // eax std::ostream::sentry *v50; // eax std::ostream::sentry *v51; // eax std::ostream::sentry *v52; // eax std::ostream::sentry *v53; // eax std::ostream::sentry *v54; // eax std::ostream::sentry *v55; // eax int v56; // eax char *v57; // eax char *v58; // ebx char *v59; // eax char *v60; // esi std::ostream::sentry *v61; // eax std::ostream::sentry *v62; // eax std::ostream::sentry *v63; // eax _DWORD *v64; // eax std::ostream::sentry *v65; // eax std::ostream::sentry *v66; // eax std::ostream::sentry *v67; // eax std::ostream::sentry *v68; // eax std::ostream::sentry *v69; // eax std::ostream::sentry *v70; // eax std::ostream::sentry *v71; // eax std::ostream::sentry *v72; // eax std::ostream::sentry *v73; // eax std::ostream::sentry *v74; // eax std::ostream::sentry *v75; // eax std::ostream::sentry *v76; // eax std::ostream::sentry *v77; // eax std::ostream::sentry *v78; // eax std::ostream::sentry *v79; // eax std::ostream::sentry *v80; // ebx _DWORD *v81; // eax int *v82; // eax std::ostream::sentry *v83; // eax std::ostream::sentry *v84; // eax void **v85; // ecx char *v86; // ebx int v87; // ebx void *v88; // esi char *v89; // ebx char *v90; // eax char *v91; // eax int v92; // eax int StrID; // eax std::ostream::sentry *v94; // eax std::ostream::sentry *v95; // eax int v96; // eax std::ostream::sentry *v97; // eax std::ostream::sentry *v98; // eax std::ostream::sentry *v99; // eax std::ostream::sentry *v100; // eax std::ostream::sentry *v101; // eax std::ostream::sentry *v102; // eax std::ostream::sentry *v103; // eax std::ostream::sentry *v104; // eax char *v105; // ebx bool v106; // bl std::ostream::sentry *v107; // eax std::ostream::sentry *v108; // eax std::ostream::sentry *v109; // eax char *v110; // eax int *v111; // eax std::ostream::sentry *v112; // ebx std::ostream::sentry *v113; // eax std::ostream::sentry *v114; // eax char *v115; // eax std::ostream::sentry *v116; // eax std::ostream::sentry *v117; // eax std::ostream::sentry *v118; // eax std::ostream::sentry *v119; // eax std::ostream::sentry *v120; // eax std::ostream::sentry *v121; // eax std::ostream::sentry *v122; // eax std::ostream::sentry *v123; // eax std::ostream::sentry *v124; // eax std::ostream::sentry *v125; // eax int v126; // eax std::ostream::sentry *v127; // eax std::ostream::sentry *v128; // eax std::ostream::sentry *v129; // eax std::ostream::sentry *v130; // eax std::ostream::sentry *v131; // eax std::ostream::sentry *v132; // eax std::ostream::sentry *v133; // eax std::ostream::sentry *v134; // eax std::ostream::sentry *v135; // eax std::ostream::sentry *v136; // eax char *v137; // eax std::ostream::sentry *v138; // eax std::ostream::sentry *v139; // eax std::ostream::sentry *v140; // eax int v141; // esi void *v142; // ebx char *v143; // eax std::ostream::sentry *v144; // eax std::ostream::sentry *v145; // eax char *v146; // eax std::ostream::sentry *v147; // eax std::ostream::sentry *v148; // eax std::ostream::sentry *v149; // eax std::ostream::sentry *v150; // eax std::ostream::sentry *v151; // eax std::ostream::sentry *v152; // eax std::ostream::sentry *v153; // eax std::ostream::sentry *v154; // eax std::ostream::sentry *v155; // eax std::ostream::sentry *v156; // eax std::ostream::sentry *v157; // eax std::ostream::sentry *v158; // eax std::ostream::sentry *v159; // eax std::ostream::sentry *v160; // eax std::ostream::sentry *v161; // eax std::ostream::sentry *v162; // eax std::ostream::sentry *v163; // eax std::ostream::sentry *v164; // eax std::ostream::sentry *v165; // eax std::ostream::sentry *v166; // eax std::ostream::sentry *v167; // eax std::ostream::sentry *v168; // eax std::ostream::sentry *v169; // eax std::ostream::sentry *v170; // eax std::ostream::sentry *v171; // eax std::ostream::sentry *v172; // eax std::ostream::sentry *v173; // eax std::ostream::sentry *v174; // eax int v175; // eax char *v176; // eax std::ostream::sentry *v177; // eax char *v178; // eax std::ostream::sentry *v179; // eax std::ostream::sentry *v180; // eax int *v181; // ebx int v182; // eax void *v183; // esi int v184; // eax void *v185; // esi char v186; // dl char *v187; // esi int v188; // ebx char v189; // si std::ostream::sentry *v190; // esi std::ostream::sentry *v191; // eax std::ostream::sentry *v192; // eax int *v193; // eax std::ostream::sentry *v194; // eax int *v195; // esi int *v196; // ebx char *v197; // ecx char *v198; // eax int k; // ebx char *v200; // esi _DWORD *v201; // eax _DWORD *v202; // eax std::ostream::sentry *v203; // ebx std::ostream::sentry *v204; // eax std::ostream::sentry *v205; // eax std::ostream::sentry *v206; // eax std::ostream::sentry *v207; // eax int *v208; // esi std::ostream::sentry *v209; // eax std::ostream::sentry *v210; // eax unsigned int v211; // esi char *v212; // edx std::ostream::sentry *v213; // eax std::ostream::sentry *v214; // eax int v215; // eax std::ostream::sentry *v216; // eax std::ostream::sentry *v217; // eax std::ostream::sentry *v218; // eax std::ostream::sentry *v219; // eax std::ostream::sentry *v220; // eax std::ostream::sentry *v221; // eax std::ostream::sentry *v222; // eax std::ostream::sentry *v223; // eax std::ostream::sentry *v224; // eax std::ostream::sentry *v225; // eax std::ostream::sentry *v226; // eax std::ostream::sentry *v227; // eax int m; // esi std::ostream::sentry *v229; // eax std::ostream::sentry *v230; // eax std::ostream::sentry *v231; // eax std::ostream::sentry *v232; // eax std::ostream::sentry *v233; // eax std::ostream::sentry *v234; // eax std::ostream::sentry *v235; // eax std::ostream::sentry *v236; // eax std::ostream::sentry *v237; // eax std::ostream::sentry *v238; // eax std::ostream::sentry *v239; // eax std::ostream::sentry *v240; // eax std::ostream::sentry *v241; // eax std::ostream::sentry *v242; // eax std::ostream::sentry *v243; // eax void *v244; // ebx std::ostream::sentry *v245; // eax std::ostream::sentry *v246; // eax std::ostream::sentry *v247; // eax std::ostream::sentry *v248; // eax std::ostream::sentry *v249; // eax std::ostream::sentry *v250; // eax std::ostream::sentry *v251; // eax std::ostream::sentry *v252; // eax std::ostream::sentry *v253; // eax std::ostream::sentry *v254; // eax std::ostream::sentry *v255; // eax std::ostream::sentry *v256; // eax char IsValidVariableName; // bl std::ostream::sentry *v258; // ebx std::ostream::sentry *v259; // eax std::ostream::sentry *v260; // eax std::ostream::sentry *v261; // eax std::ostream::sentry *v262; // eax std::ostream::sentry *v263; // eax std::ostream::sentry *v264; // ebx std::ostream::sentry *v265; // eax std::ostream::sentry *v266; // ebx std::ostream::sentry *v267; // eax std::ostream::sentry *v268; // eax int *v269; // ecx int i; // eax std::ostream::sentry *v271; // ebx std::ostream::sentry *v272; // eax std::ostream::sentry *v273; // eax std::ostream::sentry *v274; // eax std::ostream::sentry *v275; // eax std::ostream::sentry *v276; // eax std::ostream::sentry *v277; // ebx std::ostream::sentry *v278; // eax std::ostream::sentry *v279; // eax std::ostream::sentry *v281; // [esp-4h] [ebp-32Ch] char *v282; // [esp+0h] [ebp-328h] const WXML::DOMLib::Token *v283; // [esp+0h] [ebp-328h] const WXML::DOMLib::Token *v284; // [esp+0h] [ebp-328h] _DWORD *v285; // [esp+54h] [ebp-2D4h] std::ostream::sentry *v286; // [esp+5Ch] [ebp-2CCh] std::ostream::sentry *v287; // [esp+5Ch] [ebp-2CCh] char *v288; // [esp+60h] [ebp-2C8h] char *v289; // [esp+60h] [ebp-2C8h] char *v290; // [esp+60h] [ebp-2C8h] char *v291; // [esp+60h] [ebp-2C8h] char Str1; // [esp+64h] [ebp-2C4h] bool Str1a; // [esp+64h] [ebp-2C4h] char *Str1e; // [esp+64h] [ebp-2C4h] char *Str1b; // [esp+64h] [ebp-2C4h] char *Str1c; // [esp+64h] [ebp-2C4h] char *Str1d; // [esp+64h] [ebp-2C4h] std::ostream::sentry *v298; // [esp+6Ch] [ebp-2BCh] std::ostream::sentry *v299; // [esp+6Ch] [ebp-2BCh] std::ostream::sentry *v300; // [esp+6Ch] [ebp-2BCh] std::ostream::sentry *v301; // [esp+6Ch] [ebp-2BCh] char *v302; // [esp+6Ch] [ebp-2BCh] std::ostream::sentry *j; // [esp+6Ch] [ebp-2BCh] std::ostream::sentry *v304; // [esp+6Ch] [ebp-2BCh] void *v305[6]; // [esp+7Ch] [ebp-2ACh] BYREF void *v306[6]; // [esp+94h] [ebp-294h] BYREF void *v307[6]; // [esp+ACh] [ebp-27Ch] BYREF void *v308[6]; // [esp+C4h] [ebp-264h] BYREF void *v309[2]; // [esp+DCh] [ebp-24Ch] BYREF char v310; // [esp+E4h] [ebp-244h] BYREF int v311; // [esp+F4h] [ebp-234h] BYREF int v312; // [esp+F8h] [ebp-230h] char v313; // [esp+FCh] [ebp-22Ch] BYREF int v314; // [esp+10Ch] [ebp-21Ch] BYREF int v315; // [esp+110h] [ebp-218h] char v316; // [esp+114h] [ebp-214h] BYREF int v317; // [esp+124h] [ebp-204h] BYREF char *v318; // [esp+128h] [ebp-200h] int v319; // [esp+12Ch] [ebp-1FCh] BYREF int v320; // [esp+13Ch] [ebp-1ECh] BYREF int v321; // [esp+140h] [ebp-1E8h] char v322[16]; // [esp+144h] [ebp-1E4h] BYREF void **v323; // [esp+154h] [ebp-1D4h] BYREF int v324; // [esp+158h] [ebp-1D0h] BYREF void *v325[4]; // [esp+15Ch] [ebp-1CCh] BYREF int v326; // [esp+16Ch] [ebp-1BCh] BYREF int v327; // [esp+170h] [ebp-1B8h] char v328[16]; // [esp+174h] [ebp-1B4h] BYREF int v329; // [esp+184h] [ebp-1A4h] BYREF int v330; // [esp+188h] [ebp-1A0h] char v331; // [esp+18Ch] [ebp-19Ch] BYREF int v332; // [esp+19Ch] [ebp-18Ch] BYREF int v333; // [esp+1A0h] [ebp-188h] int v334[4]; // [esp+1A4h] [ebp-184h] BYREF int v335[2]; // [esp+1B4h] [ebp-174h] BYREF char v336; // [esp+1BCh] [ebp-16Ch] BYREF int v337; // [esp+1CCh] [ebp-15Ch] BYREF int v338; // [esp+1D0h] [ebp-158h] BYREF char v339[108]; // [esp+1D4h] [ebp-154h] BYREF int v340[2]; // [esp+240h] [ebp-E8h] BYREF char v341[4]; // [esp+248h] [ebp-E0h] BYREF int v342[3]; // [esp+24Ch] [ebp-DCh] BYREF _DWORD v343[52]; // [esp+258h] [ebp-D0h] BYREF if ( a13 && *(_DWORD *)(this + 28) ) { v16 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "cs.push(\""); WXML::Rewrite::ToStringCode((int)v340, a2); v17 = std::operator<<(v16, v340); v18 = std::operator<<>(v17, ":"); v19 = std::operator<<(v18, (int *)(this + 24)); std::operator<<>(v19, ":"); v20 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v20, ":"); v21 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); v22 = std::operator<<>(v21, "\")"); std::operator<<>(v22, a12); std::string::_M_dispose((void **)v340); } Str1 = std::operator==(this, "TEXTNODE"); if ( Str1 ) { v23 = *(_DWORD *)(this + 140); if ( v23 == -3 ) { exception = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)v340, (char *)&byte_52DD60); WXML::DOMLib::WXMLDom::Error((int)exception, a2, this + 84, v340, (int *)(this + 144)); goto LABEL_9; } if ( v23 == -1 ) { exception = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)v340, "value not set"); std::string::basic_string((void **)&v337, (char *)&byte_52DD60); WXML::DOMLib::WXMLDom::Error((int)exception, a2, this + 84, &v337, v340); std::string::_M_dispose((void **)&v337); LABEL_9: std::string::_M_dispose((void **)v340); __cxa_throw( exception, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } v25 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); v26 = std::operator<<(v25, a5); std::operator<<>(v26, "=_oz(z,"); v27 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 140)); v28 = std::operator<<>(v27, ","); v29 = std::operator<<(v28, a8); v30 = std::operator<<>(v29, ","); v31 = std::operator<<(v30, a9); v32 = std::operator<<>(v31, ","); v33 = std::operator<<(v32, a10); v282 = ")"; goto LABEL_68; } if ( !(unsigned __int8)std::operator!=(this, "wx-define") || !(unsigned __int8)std::operator!=(this, "wx-import") || !(unsigned __int8)std::operator!=(this, "import") || !(unsigned __int8)std::operator!=(this, "template") ) { goto LABEL_167; } if ( std::operator==(this, "wx-repeat") ) { std::string::basic_string(v305, "items"); v288 = (char *)(this + 48); v298 = (std::ostream::sentry *)(this + 52); if ( (_DWORD *)(this + 52) == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)v305) ) std::string::operator=((unsigned int *)v305, "wx:for-items"); std::string::basic_string(v306, "index"); if ( v298 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)v306) ) std::string::operator=((unsigned int *)v306, "wx:for-index"); std::string::basic_string(v307, "item"); if ( v298 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)v307) ) std::string::operator=((unsigned int *)v307, "wx:for-item"); std::string::basic_string(v308, "wx:key"); v309[1] = 0; v309[0] = &v310; v311 = (int)&v313; v310 = 0; v312 = 0; v313 = 0; v314 = (int)&v316; v315 = 0; v316 = 0; if ( v298 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)v305) ) { std::string::_M_dispose((void **)&v314); std::string::_M_dispose((void **)&v311); std::string::_M_dispose(v309); std::string::_M_dispose(v308); std::string::_M_dispose(v307); std::string::_M_dispose(v306); std::string::_M_dispose(v305); return 0; } if ( v298 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)v306) ) { std::string::operator=((unsigned int *)&v311, "index"); } else { v34 = std::map::operator[]((_DWORD *)(this + 48), (int)v306); v35 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v34); std::string::_M_assign((int)&v311, v35); } if ( v298 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)v307) ) { std::string::operator=((unsigned int *)&v314, "item"); } else { v36 = std::map::operator[]((_DWORD *)(this + 48), (int)v307); v37 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v36); std::string::_M_assign((int)&v314, v37); } if ( v298 != (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)v306) && std::map::operator[]((_DWORD *)(this + 48), (int)v306)[14] == -3 && (a14 & 1) == 0 ) { v38 = __cxa_allocate_exception(0x18u); v39 = std::map::operator[](v288, (int)v306); v40 = std::map::operator[](v288, (int)v306); WXML::DOMLib::WXMLDom::Error((int)v38, a2, (int)v40, (int *)v306, v39 + 15); __cxa_throw( v38, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } if ( v298 != (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)v308) && std::map::operator[]((_DWORD *)(this + 48), (int)v308)[14] == -3 && (a14 & 1) == 0 ) { v41 = __cxa_allocate_exception(0x18u); v42 = std::map::operator[](v288, (int)v308); v43 = std::map::operator[](v288, (int)v308); WXML::DOMLib::WXMLDom::Error((int)v41, a2, (int)v43, (int *)v308, v42 + 15); __cxa_throw( v41, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } if ( !v312 ) std::string::operator=((unsigned int *)&v311, "index"); if ( !v315 ) std::string::operator=((unsigned int *)&v314, "item"); v318 = 0; v317 = (int)&v319; LOBYTE(v319) = 0; WXML::NameAllocator::GetNextName(a7, &v317); v320 = (int)v322; v321 = 0; v322[0] = 0; WXML::NameAllocator::GetNextName(a7, &v320); v323 = v325; v324 = 0; LOBYTE(v325[0]) = 0; WXML::NameAllocator::GetNextName(a7, &v323); v326 = (int)v328; v327 = 0; v328[0] = 0; WXML::NameAllocator::GetNextName(a7, &v326); std::string::basic_string((void **)v340, (char *)&byte_52DD60); std::string::basic_string((void **)&v337, (char *)&byte_52DD60); WXML::DOMLib::WXMLDom::RenderMeAsFunction( a2, a3, a4, &v317, a6, a7, &v323, &v320, a10, &v326, a11, a12, &v337, 0, a13, a14, v340); std::string::_M_dispose((void **)&v337); std::string::_M_dispose((void **)v340); if ( std::map::operator[]((_DWORD *)(this + 48), (int)v305)[14] == -3 ) { v44 = __cxa_allocate_exception(0x18u); v45 = std::map::operator[](v288, (int)v305); v46 = std::map::operator[](v288, (int)v305); WXML::DOMLib::WXMLDom::Error((int)v44, a2, (int)v46, (int *)v305, v45 + 15); __cxa_throw( v44, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } if ( std::map::operator[]((_DWORD *)(this + 48), (int)v305)[14] == -1 ) { v47 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)v340, "value not set"); WXML::DOMLib::WXMLDom::Error((int)v47, a2, this + 84, (int *)v305, v340); std::string::_M_dispose((void **)v340); __cxa_throw( v47, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } if ( !a13 ) goto LABEL_57; if ( v298 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)v308) ) { v337 = (int)v339; v338 = 0; v339[0] = 0; v48 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp('"); WXML::Rewrite::ToStringCode((int)v340, a2); v49 = std::operator<<(v48, v340); v50 = std::operator<<>(v49, ":"); v51 = std::operator<<(v50, (int *)(this + 24)); std::operator<<>(v51, ":"); v52 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v52, ":"); v53 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); v54 = std::operator<<>( v53, ": Now you can provide attr `wx:key` for a `wx:for` to improve performance.')"); std::operator<<>(v54, a12); std::string::_M_dispose((void **)v340); std::string::_M_dispose((void **)&v337); } v55 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)v308); if ( v55 == v298 ) goto LABEL_57; v56 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v55 + 40); std::string::basic_string(&v329, v56); v332 = (int)v334; v333 = 0; LOBYTE(v334[0]) = 0; v57 = std::string::find(&v329, 46, 0); v58 = v57; if ( v57 != (char *)-1 ) { std::string::substr((void **)&v337, &v329, 0, (unsigned int)v57); Str1 = WXML::DOMLib::Token::IsValidVariableName((char **)&v337); if ( Str1 ) { std::string::substr((void **)v340, &v329, (unsigned int)(v58 + 1), 0xFFFFFFFF); Str1 = WXML::DOMLib::Token::IsValidVariableName((char **)v340); std::string::_M_dispose((void **)v340); } std::string::_M_dispose((void **)&v337); if ( Str1 ) { std::string::substr((void **)&v337, &v329, (unsigned int)(v58 + 1), 0xFFFFFFFF); std::string::operator=(&v332, &v337); std::string::_M_dispose((void **)&v337); } } if ( WXML::DOMLib::Token::GetTemplateContent(&v329, &v332) ) { if ( Str1 ) goto LABEL_179; } else { if ( Str1 == 1 || WXML::DOMLib::Token::IsValidVariableName((char **)&v332) ) goto LABEL_179; v59 = std::string::find(&v332, 46, 0); v60 = v59; if ( v59 != (char *)-1 ) { std::string::substr((void **)&v337, &v332, 0, (unsigned int)v59); IsValidVariableName = WXML::DOMLib::Token::IsValidVariableName((char **)&v337); if ( IsValidVariableName ) { std::string::substr((void **)v340, &v332, (unsigned int)(v60 + 1), 0xFFFFFFFF); IsValidVariableName = WXML::DOMLib::Token::IsValidVariableName((char **)v340); std::string::_M_dispose((void **)v340); } std::string::_M_dispose((void **)&v337); if ( IsValidVariableName ) { std::string::substr((void **)v340, &v332, (unsigned int)(v60 + 1), 0xFFFFFFFF); std::string::operator=(&v332, v340); std::string::_M_dispose((void **)v340); LABEL_179: v258 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp('"); WXML::Rewrite::ToStringCode((int)v335, a2); v259 = std::operator<<(v258, v335); v260 = std::operator<<>(v259, ":"); v261 = std::operator<<(v260, (int *)(this + 24)); std::operator<<>(v261, ":"); v262 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v262, ":"); v263 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); v264 = std::operator<<>(v263, ": wx:key=\""); WXML::Rewrite::ToStringCode((int)&v337, &v329); v265 = std::operator<<(v264, &v337); v266 = std::operator<<>( v265, "\" does not look like a valid key name (did you mean wx:key=\""); WXML::Rewrite::ToStringCode((int)v340, &v332); v267 = std::operator<<(v266, v340); v268 = std::operator<<>(v267, "\" ?)')"); std::operator<<>(v268, a12); std::string::_M_dispose((void **)v340); std::string::_M_dispose((void **)&v337); v269 = v335; LABEL_189: std::string::_M_dispose((void **)v269); goto LABEL_56; } } } if ( !WXML::DOMLib::Token::IsValidVariableName((char **)&v329) ) { if ( v330 ) { if ( std::operator==((int)&v329, "0") ) goto LABEL_56; if ( *(_BYTE *)v329 != 48 ) { for ( i = 0; v330 != i; ++i ) { if ( (unsigned __int8)(*(_BYTE *)(v329 + i) - 48) > 9u ) goto LABEL_187; } goto LABEL_56; } } LABEL_187: if ( !std::operator==((int)&v329, "*this") ) { v271 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp('"); WXML::Rewrite::ToStringCode((int)&v337, a2); v272 = std::operator<<(v271, &v337); v273 = std::operator<<>(v272, ":"); v274 = std::operator<<(v273, (int *)(this + 24)); std::operator<<>(v274, ":"); v275 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v275, ":"); v276 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); v277 = std::operator<<>(v276, ": wx:key=\""); WXML::Rewrite::ToStringCode((int)v340, &v329); v278 = std::operator<<(v277, v340); v279 = std::operator<<>(v278, "\" does not look like a valid key name.')"); std::operator<<>(v279, a12); std::string::_M_dispose((void **)v340); v269 = &v337; goto LABEL_189; } } LABEL_56: std::string::_M_dispose((void **)&v332); std::string::_M_dispose((void **)&v329); LABEL_57: v281 = (std::ostream::sentry *)(a6 + 8); if ( *(_BYTE *)(this + 256) ) { v61 = std::operator<<(v281, a5); v62 = std::operator<<>(v61, ".wxXCkey=4"); } else { v63 = std::operator<<(v281, a5); v62 = std::operator<<>(v63, ".wxXCkey=2"); } std::operator<<>(v62, a12); std::operator<<>((std::ostream::sentry *)(a6 + 8), "_2z(z,"); v64 = std::map::operator[](v288, (int)v305); v65 = (std::ostream::sentry *)std::ostream::operator<<(v64[14]); v66 = std::operator<<>(v65, ","); v67 = std::operator<<(v66, &v317); v68 = std::operator<<>(v67, ","); v69 = std::operator<<(v68, a8); v70 = std::operator<<>(v69, ","); v71 = std::operator<<(v70, a9); v72 = std::operator<<>(v71, ","); v73 = std::operator<<(v72, a10); v74 = std::operator<<>(v73, ","); v75 = std::operator<<(v74, a5); v76 = std::operator<<>(v75, ",'"); v77 = std::operator<<(v76, &v314); v78 = std::operator<<>(v77, "','"); v79 = std::operator<<(v78, &v311); v80 = std::operator<<>(v79, "','"); v81 = std::map::operator[](v288, (int)v308); v82 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v81); v83 = std::operator<<(v80, v82); v84 = std::operator<<>(v83, "')"); std::operator<<>(v84, a12); std::string::_M_dispose((void **)&v326); std::string::_M_dispose((void **)&v323); std::string::_M_dispose((void **)&v320); std::string::_M_dispose((void **)&v317); std::string::_M_dispose((void **)&v314); std::string::_M_dispose((void **)&v311); std::string::_M_dispose(v309); std::string::_M_dispose(v308); std::string::_M_dispose(v307); std::string::_M_dispose(v306); v85 = v305; goto LABEL_84; } if ( std::operator==(this, "block") ) { WXML::DOMLib::WXMLDom::RenderChildren(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); goto LABEL_167; } v286 = (std::ostream::sentry *)(this + 48); v289 = (char *)(this + 52); if ( std::operator==(this, "include") ) { std::string::basic_string((void **)v340, (char *)&off_52DF44); v86 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)v340); std::string::_M_dispose((void **)v340); if ( v86 == v289 ) goto LABEL_167; std::string::basic_string((void **)v340, (char *)&off_52DF44); v87 = *((_DWORD *)std::map::operator[]((_DWORD *)(this + 48), v340) + 14); std::string::_M_dispose((void **)v340); if ( v87 == -3 ) { v88 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)&v337, (char *)&off_52DF44); v89 = std::map::operator[](v286, &v337); std::string::basic_string((void **)v340, (char *)&off_52DF44); std::string::basic_string((void **)v335, (char *)&off_52DF44); v90 = std::map::operator[](v286, v335); WXML::DOMLib::WXMLDom::Error((int)v88, a2, (int)v90, v340, (int *)v89 + 15); std::string::_M_dispose((void **)v335); std::string::_M_dispose((void **)v340); std::string::_M_dispose((void **)&v337); __cxa_throw( v88, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } std::operator<<>((std::ostream::sentry *)(a6 + 8), "_ic(x["); v299 = *(std::ostream::sentry **)(this + 248); std::string::basic_string((void **)&v337, (char *)&off_52DF44); v91 = std::map::operator[]((_DWORD *)(this + 48), &v337); v92 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v91); std::string::basic_string(v340, v92); StrID = WXML::DOMLib::StrCache::GetStrID(v299, (int)v340); std::ostream::operator<<(StrID); std::string::_M_dispose((void **)v340); std::string::_M_dispose((void **)&v337); v94 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "],"); v95 = std::operator<<(v94, a3); std::operator<<>(v95, (char *)off_52E146); v300 = *(std::ostream::sentry **)(this + 248); std::string::basic_string(v340, (int)a2); v96 = WXML::DOMLib::StrCache::GetStrID(v300, (int)v340); std::ostream::operator<<(v96); std::string::_M_dispose((void **)v340); v97 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "],"); v98 = std::operator<<(v97, a8); v99 = std::operator<<>(v98, ","); v100 = std::operator<<(v99, a9); v101 = std::operator<<>(v100, ","); v102 = std::operator<<(v101, a5); v103 = std::operator<<>(v102, ","); v33 = std::operator<<(v103, a10); v282 = ");"; LABEL_68: v104 = std::operator<<>(v33, v282); LABEL_69: std::operator<<>(v104, a12); goto LABEL_167; } Str1a = std::operator==(this, "wx-template"); if ( Str1a ) { std::string::basic_string((void **)v340, "is"); v105 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)v340); std::string::_M_dispose((void **)v340); if ( v105 == v289 ) goto LABEL_167; std::string::basic_string((void **)&v337, "is"); v106 = Str1a; if ( *((_DWORD *)std::map::operator[]((_DWORD *)(this + 48), &v337) + 14) != -3 ) { std::string::basic_string((void **)v340, "is"); v106 = *((_DWORD *)std::map::operator[]((_DWORD *)(this + 48), v340) + 14) == -1; std::string::_M_dispose((void **)v340); } std::string::_M_dispose((void **)&v337); if ( v106 ) { v301 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp(\""); WXML::Rewrite::ToStringCode((int)v340, a2); v107 = std::operator<<(v301, v340); std::operator<<>(v107, ":template:"); v108 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v108, ":"); v109 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); std::operator<<>(v109, (char *)off_52E15B); std::string::_M_dispose((void **)v340); std::string::basic_string((void **)v340, "is"); v110 = std::map::operator[]((_DWORD *)(this + 48), v340); v111 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v110); WXML::Rewrite::ToStringCode(v111, a6); std::string::_M_dispose((void **)v340); v104 = std::operator<<>( (std::ostream::sentry *)(a6 + 8), "` is not a valid expression for a template.\")"); goto LABEL_69; } v327 = 0; v326 = (int)v328; v328[0] = 0; WXML::NameAllocator::GetNextName(a7, &v326); v112 = (std::ostream::sentry *)(a6 + 8); v113 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); v114 = std::operator<<(v113, &v326); std::operator<<>(v114, "=_oz(z,"); std::string::basic_string((void **)v340, "is"); v115 = std::map::operator[]((_DWORD *)(this + 48), v340); v116 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v115 + 14)); v117 = std::operator<<>(v116, ","); v118 = std::operator<<(v117, a8); v119 = std::operator<<>(v118, ","); v120 = std::operator<<(v119, a9); v121 = std::operator<<>(v120, ","); v122 = std::operator<<(v121, a10); v123 = std::operator<<>(v122, ")"); std::operator<<>(v123, a12); std::string::_M_dispose((void **)v340); v329 = (int)&v331; v330 = 0; v331 = 0; WXML::NameAllocator::GetNextName(a7, &v329); v124 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); v125 = std::operator<<(v124, &v329); std::operator<<>(v125, "=_gd(x["); v285 = *(_DWORD **)(this + 248); std::string::basic_string(v340, (int)a2); v126 = WXML::DOMLib::StrCache::GetStrID(v285, (int)v340); std::ostream::operator<<(v126); std::string::_M_dispose((void **)v340); v127 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "],"); v128 = std::operator<<(v127, &v326); v129 = std::operator<<>(v128, ","); v130 = std::operator<<(v129, a3); v131 = std::operator<<>(v130, ","); v132 = std::operator<<(v131, a11); v133 = std::operator<<>(v132, ")"); std::operator<<>(v133, a12); v134 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "if("); v135 = std::operator<<(v134, &v329); v136 = std::operator<<>(v135, "){"); std::operator<<>(v136, a12); v333 = 0; v332 = (int)v334; LOBYTE(v334[0]) = 0; WXML::NameAllocator::GetNextName(a7, &v332); std::string::basic_string((void **)&v337, "data"); if ( v289 != (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)&v337) ) { std::string::basic_string((void **)v340, "data"); v137 = std::map::operator[]((_DWORD *)(this + 48), v340); Str1a = *(_DWORD *)(WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v137) + 4) == 0; std::string::_M_dispose((void **)v340); } std::string::_M_dispose((void **)&v337); if ( Str1a ) { v138 = std::operator<<>(v112, "var "); v139 = std::operator<<(v138, &v332); v140 = std::operator<<>(v139, "={}"); std::operator<<>(v140, a12); } else { std::string::basic_string((void **)v340, "data"); v141 = *((_DWORD *)std::map::operator[]((_DWORD *)(this + 48), v340) + 14); std::string::_M_dispose((void **)v340); if ( v141 == -3 ) { v142 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)&v337, "data"); v302 = std::map::operator[](v286, &v337); std::string::basic_string((void **)v340, "data"); std::string::basic_string((void **)v335, "data"); v143 = std::map::operator[](v286, v335); WXML::DOMLib::WXMLDom::Error((int)v142, a2, (int)v143, v340, (int *)v302 + 15); std::string::_M_dispose((void **)v335); std::string::_M_dispose((void **)v340); std::string::_M_dispose((void **)&v337); __cxa_throw( v142, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } v144 = std::operator<<>(v112, "var "); v145 = std::operator<<(v144, &v332); std::operator<<>(v145, "=_1z(z,"); std::string::basic_string((void **)v340, "data"); v146 = std::map::operator[]((_DWORD *)(this + 48), v340); v147 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v146 + 14)); v148 = std::operator<<>(v147, ","); v149 = std::operator<<(v148, a8); v150 = std::operator<<>(v149, ","); v151 = std::operator<<(v150, a9); v152 = std::operator<<>(v151, ","); v153 = std::operator<<(v152, a10); v154 = std::operator<<>(v153, ") || {}"); std::operator<<>(v154, a12); std::string::_M_dispose((void **)v340); } v155 = std::operator<<>(v112, "var cur_globalf="); v156 = std::operator<<(v155, a10); v157 = std::operator<<>(v156, ".f"); std::operator<<>(v157, a12); v158 = std::operator<<(v112, a5); v159 = std::operator<<>(v158, ".wxXCkey=3"); std::operator<<>(v159, a12); v160 = std::operator<<(v112, &v329); v161 = std::operator<<>(v160, "("); v162 = std::operator<<(v161, &v332); v163 = std::operator<<>(v162, ","); v164 = std::operator<<(v163, &v332); v165 = std::operator<<>(v164, ","); v166 = std::operator<<(v165, a5); v167 = std::operator<<>(v166, ","); v168 = std::operator<<(v167, a10); v169 = std::operator<<>(v168, ")"); std::operator<<>(v169, a12); v170 = std::operator<<(v112, a10); v171 = std::operator<<>(v170, ".f=cur_globalf"); std::operator<<>(v171, a12); std::string::_M_dispose((void **)&v332); v172 = std::operator<<>(v112, "}"); std::operator<<>(v172, a12); v173 = std::operator<<>(v112, "else _w("); v174 = std::operator<<(v173, &v326); std::operator<<>(v174, (char *)off_52E146); Str1e = *(char **)(this + 248); std::string::basic_string(v340, (int)a2); v175 = WXML::DOMLib::StrCache::GetStrID(Str1e, (int)v340); std::ostream::operator<<(v175); std::string::_M_dispose((void **)v340); std::operator<<>(v112, "],"); std::string::basic_string((void **)&v337, "is"); v176 = std::map::operator[]((_DWORD *)(this + 48), &v337); v177 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v176 + 2)); std::operator<<>(v177, ","); std::string::basic_string((void **)v340, "is"); v178 = std::map::operator[]((_DWORD *)(this + 48), v340); v179 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v178 + 3)); v180 = std::operator<<>(v179, ")"); std::operator<<>(v180, a12); std::string::_M_dispose((void **)v340); std::string::_M_dispose((void **)&v337); std::string::_M_dispose((void **)&v329); v85 = (void **)&v326; LABEL_84: std::string::_M_dispose(v85); goto LABEL_167; } v317 = 0; v181 = *(int **)(this + 60); v318 = 0; v319 = 0; while ( v181 != (int *)v289 ) { v182 = v181[24]; if ( v182 == -3 ) { if ( (a14 & 1) == 0 ) { v183 = __cxa_allocate_exception(0x18u); WXML::DOMLib::WXMLDom::Error((int)v183, a2, (int)(v181 + 10), v181 + 4, v181 + 25); __cxa_throw( v183, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } } else if ( v182 == -1 && v181[15] > 0 ) { v185 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)v340, "interal error(1010)"); WXML::DOMLib::WXMLDom::Error((int)v185, a2, (int)(v181 + 10), v181 + 4, v340); std::string::_M_dispose((void **)v340); __cxa_throw( v185, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } v184 = v181[4]; if ( *(_BYTE *)v184 != 119 || *(_BYTE *)(v184 + 1) != 120 || (v186 = *(_BYTE *)(v184 + 2), v186 != 58) && v186 != 45 || !_stricmp((const char *)v184, "wx:scope-data") ) { std::string::basic_string(v340, (int)(v181 + 4)); WXML::DOMLib::Token::Token((int)v343, (WXML::DOMLib::Token *)(v181 + 10), v283); std::vector>::emplace_back>( &v317, v340); std::pair::~pair((void **)v340); } v181 = (int *)std::_Rb_tree_increment((int)v181); } std::sort<__gnu_cxx::__normal_iterator *,std::vector>>,bool (*)(std::pair const&,std::pair const&)>( (char *)v317, v318, (unsigned __int8 (__cdecl *)(int, int))WXML::DOMLib::AttrsCompartor); v187 = v318; v321 = 0; v320 = (int)v322; v188 = v317; v322[0] = 0; v324 = 0; v325[0] = 0; v325[1] = &v324; v325[2] = &v324; v325[3] = 0; while ( v187 != (char *)v188 ) { std::set::insert(&v323, v188); v188 += 136; } std::basic_stringstream,std::allocator>::basic_stringstream((int)v340); for ( j = 0; (unsigned int)j < -252645135 * ((int)&v318[-v317] >> 3); j = (std::ostream::sentry *)((char *)j + 1) ) { v290 = (char *)(136 * (_DWORD)j); Str1b = (char *)(136 * (_DWORD)j + v317); std::string::substr((void **)&v326, Str1b, 0, 6u); v189 = std::operator!=((int)&v326, "model:"); std::string::_M_dispose((void **)&v326); if ( !v189 ) { v190 = std::operator<<>((std::ostream::sentry *)v341, "\"model:"); std::string::substr((void **)v335, Str1b, 6u, 0xFFFFFFFF); v191 = std::operator<<(v190, v335); v192 = std::operator<<>(v191, "\""); v287 = std::operator<<>(v192, ":\""); v193 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)&v290[v317 + 24]); WXML::Rewrite::ToStringCode((int)&v337, v193); v194 = std::operator<<(v287, &v337); std::operator<<>(v194, "\","); std::string::_M_dispose((void **)&v337); std::string::_M_dispose((void **)v335); std::string::substr((void **)&v329, Str1b, 6u, 0xFFFFFFFF); v195 = (int *)v325[0]; v196 = &v324; while ( v195 ) { if ( (unsigned __int8)std::operator<((int)(v195 + 4), (int)&v329) ) { v195 = (int *)v195[3]; } else { v196 = v195; v195 = (int *)v195[2]; } } if ( v196 != &v324 && (unsigned __int8)std::operator<((int)&v329, (int)(v196 + 4)) ) v196 = &v324; std::string::_M_dispose((void **)&v329); if ( v196 == &v324 ) { std::string::substr((void **)&v332, Str1b, 6u, 0xFFFFFFFF); std::string::operator=(&v290[v317], &v332); std::string::_M_dispose((void **)&v332); } else { v197 = &v290[v317]; v198 = &v290[v317 + 136]; if ( v318 != v198 ) { for ( k = -252645135 * ((v318 - v198) >> 3); ; --k ) { v200 = v197 + 136; if ( k <= 0 ) break; std::pair::operator=(v197, (_DWORD *)v197 + 34); v197 = v200; } } v318 -= 136; std::pair::~pair((void **)v318); j = (std::ostream::sentry *)((char *)j - 1); } } } std::stringbuf::str((int)v335, v342); std::string::operator=(&v320, v335); std::string::_M_dispose((void **)v335); if ( v321 ) { std::string::basic_string(&v332, (int)a5); std::string::append(&v332, ".rawAttr={"); v201 = std::string::append(&v332, (int)&v320); std::string::basic_string(v335, v201); v202 = std::string::append(v335, "};"); std::string::basic_string(&v337, v202); std::string::operator=(&v320, &v337); std::string::_M_dispose((void **)&v337); std::string::_M_dispose((void **)v335); std::string::_M_dispose((void **)&v332); } std::basic_stringstream,std::allocator>::~basic_stringstream((int)v340); std::_Rb_tree,std::less,std::allocator>::_M_erase((void **)v325[0]); v203 = (std::ostream::sentry *)(a6 + 8); if ( (unsigned int)(-252645135 * ((int)&v318[-v317] >> 3)) <= 1 ) { v223 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); v224 = std::operator<<(v223, a5); v225 = std::operator<<>(v224, "=_n('"); v226 = std::operator<<(v225, (int *)this); v227 = std::operator<<>(v226, "')"); std::operator<<>(v227, a12); for ( m = v317; ; m += 136 ) { if ( (char *)m == v318 ) goto LABEL_162; Str1d = *(char **)m; v337 = (int)v339; v338 = 0; v339[0] = 0; if ( !strncmp(Str1d, "data-", 5u) || std::string::find((int *)m, 58, 0) != (char *)-1 ) { std::string::_M_assign((int)&v337, m); if ( !strncmp(Str1d, "generic:", 8u) ) { std::operator<<>(v203, "var $tmp="); if ( *(_DWORD *)(m + 44) ) { std::operator<<>(v203, "grb(z["); v229 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(m + 80)); v230 = std::operator<<>(v229, "],"); v231 = std::operator<<(v230, a8); v232 = std::operator<<>(v231, ","); v233 = std::operator<<(v232, a9); v234 = std::operator<<>(v233, ","); v235 = std::operator<<(v234, a10); v236 = std::operator<<>(v235, ")"); std::operator<<>(v236, a12); v237 = std::operator<<>(v203, "if ($tmp!=\"\") $tmp=\"wx-\"+$tmp"); } else { v237 = std::operator<<>(v203, "\"\""); } std::operator<<>(v237, a12); v238 = std::operator<<(v203, a5); std::operator<<>(v238, ".generics['"); v239 = std::operator<<>(v203, "wx-"); v240 = std::operator<<>(v239, Str1d + 8); v241 = std::operator<<>(v240, "']=$tmp"); goto LABEL_156; } } else { WXML::DOMLib::WXMLDom::ToCamelStyle((int)v340, m); std::string::operator=(&v337, v340); std::string::_M_dispose((void **)v340); } if ( *(_DWORD *)(m + 44) ) { if ( *(_DWORD *)(m + 80) == -1 ) { v244 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)v340, "interal error(1010)"); WXML::DOMLib::WXMLDom::Error((int)v244, a2, m + 24, (int *)m, v340); std::string::_M_dispose((void **)v340); __cxa_throw( v244, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } v245 = std::operator<<>(v203, "_rz(z,"); v246 = std::operator<<(v245, a5); v247 = std::operator<<>(v246, ",'"); v248 = std::operator<<(v247, &v337); std::operator<<>(v248, "',"); v249 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(m + 80)); v250 = std::operator<<>(v249, ","); v251 = std::operator<<(v250, a8); v252 = std::operator<<>(v251, ","); v253 = std::operator<<(v252, a9); v254 = std::operator<<>(v253, ","); v255 = std::operator<<(v254, a10); v241 = std::operator<<>(v255, ")"); } else { v242 = std::operator<<(v203, a5); std::operator<<>(v242, ".attr['"); v243 = std::operator<<(v203, &v337); v241 = std::operator<<>(v243, "']=true"); } LABEL_156: std::operator<<>(v241, a12); std::string::_M_dispose((void **)&v337); } } v332 = 0; v333 = 0; v334[0] = 0; v204 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); v205 = std::operator<<(v204, a5); v206 = std::operator<<>(v205, "=_mz(z,'"); v207 = std::operator<<(v206, (int *)this); std::operator<<>(v207, (char *)off_52E22D); v304 = 0; v208 = (int *)v317; v291 = (char *)&byte_52DD60; while ( v208 != (int *)v318 ) { Str1c = (char *)*v208; v335[0] = (int)&v336; v335[1] = 0; v336 = 0; if ( !strncmp(Str1c, "data-", 5u) || std::string::find(v208, 58, 0) != (char *)-1 ) { std::string::_M_assign((int)v335, (int)v208); if ( !strncmp(Str1c, "generic:", 8u) ) { v337 = (int)(Str1c + 8); WXML::DOMLib::Token::Token((int)&v338, (WXML::DOMLib::Token *)(v208 + 6), v284); std::string::basic_string((void **)v340, (char *)v337); WXML::DOMLib::Token::Token(v343, (int)&v338); std::vector>::emplace_back>( &v332, v340); std::pair::~pair((void **)v340); WXML::DOMLib::Token::~Token((int)&v338); std::string::_M_dispose((void **)v335); goto LABEL_137; } } else { WXML::DOMLib::WXMLDom::ToCamelStyle((int)&v337, (int)v208); std::string::operator=(v335, &v337); std::string::_M_dispose((void **)&v337); } std::operator<<>(v203, v291); v209 = std::operator<<>(v203, "'"); v210 = std::operator<<(v209, v335); std::operator<<>(v210, "',"); if ( v208[11] ) { std::ostream::operator<<(v208[20] - (_DWORD)v304); if ( !v304 ) v304 = (std::ostream::sentry *)v208[20]; } else { std::operator<<>(v203, "-1"); } std::string::_M_dispose((void **)v335); v291 = ","; LABEL_137: v208 += 34; } std::operator<<>(v203, (char *)off_52E245); v211 = 0; v212 = (char *)&byte_52DD60; while ( v211 < -252645135 * ((v333 - v332) >> 3) ) { std::operator<<>(v203, v212); v213 = std::operator<<>(v203, "'wx-"); v214 = std::operator<<(v213, (int *)(v332 + 136 * v211)); std::operator<<>(v214, "',"); v215 = v332 + 136 * v211; if ( *(_DWORD *)(v215 + 44) ) { std::ostream::operator<<(*(_DWORD *)(v215 + 80) - (_DWORD)v304); if ( !v304 ) v304 = *(std::ostream::sentry **)(v332 + 136 * v211 + 80); } else { std::operator<<>(v203, "-1"); } ++v211; v212 = ","; } v216 = std::operator<<>(v203, "],"); v217 = std::operator<<(v216, a8); v218 = std::operator<<>(v217, ","); v219 = std::operator<<(v218, a9); v220 = std::operator<<>(v219, ","); v221 = std::operator<<(v220, a10); v222 = std::operator<<>(v221, ")"); std::operator<<>(v222, a12); std::vector>::~vector((void ***)&v332); LABEL_162: if ( v321 ) std::operator<<(v203, &v320); WXML::DOMLib::WXMLDom::RenderChildren(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); if ( (a14 & 1) != 0 ) WXML::DOMLib::WXMLDom::AddTestAttr((_DWORD *)this, a5, a6, 10); std::string::_M_dispose((void **)&v320); std::vector>::~vector((void ***)&v317); LABEL_167: if ( a13 && *(_DWORD *)(this + 28) ) { v256 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "cs.pop()"); std::operator<<>(v256, a12); } return 0; } // 41D9E3: positive sp value 4 has been found // 41C88C: variable 'v283' is possibly undefined // 41CF3C: variable 'v284' is possibly undefined // 41DF58: using guessed type _DWORD __stdcall WXML::DOMLib::WXMLDom::RenderChildren(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, char, char, _DWORD, _DWORD); // 41F5F4: using guessed type _DWORD __stdcall WXML::DOMLib::WXMLDom::RenderMeAsFunction(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 52DF44: using guessed type void *off_52DF44; // 533C6C: using guessed type int *`typeinfo for'WXML::DOMLib::RenderException; // 41ACA2: using guessed type _DWORD var_D0[52]; // 41ACA2: using guessed type char var_E0[4]; // 41ACA2: using guessed type int var_DC[3]; //----- (0041DF58) -------------------------------------------------------- int __thiscall WXML::DOMLib::WXMLDom::RenderChildren( _DWORD *this, int *a2, int *a3, int a4, int *a5, int a6, int *a7, int *a8, int *a9, int *a10, int *a11, char a12, unsigned __int8 a13, int a14, int a15) { std::ostream::sentry *v16; // edi _DWORD *exception; // esi int v18; // edx std::ostream::sentry *v19; // eax std::ostream::sentry *v20; // eax std::ostream::sentry *v21; // eax std::ostream::sentry *v22; // eax int StrID; // eax std::ostream::sentry *v24; // eax int v25; // ebx _DWORD *v26; // ebx std::ostream::sentry *v27; // eax std::ostream::sentry *v28; // eax std::ostream::sentry *v29; // eax std::ostream::sentry *v30; // eax int v31; // eax std::ostream::sentry *v32; // eax int v33; // edx bool v34; // bl int v35; // ebx int v36; // ebx int v37; // ebx _DWORD *v38; // ebx int v39; // ecx void *v40; // ebx int v41; // ebx _DWORD *v42; // ebx int v43; // ecx void *v44; // ebx int v45; // ebx _DWORD *v46; // eax std::ostream::sentry *v47; // eax std::ostream::sentry *v48; // eax std::ostream::sentry *v49; // eax std::ostream::sentry *v50; // eax std::ostream::sentry *v51; // eax std::ostream::sentry *v52; // eax std::ostream::sentry *v53; // eax std::ostream::sentry *v54; // eax _DWORD *v55; // eax std::ostream::sentry *v56; // eax std::ostream::sentry *v57; // eax std::ostream::sentry *v58; // eax std::ostream::sentry *v59; // eax std::ostream::sentry *v60; // eax std::ostream::sentry *v61; // eax std::ostream::sentry *v62; // eax std::ostream::sentry *v63; // eax int v64; // eax _DWORD *v65; // eax std::ostream::sentry *v66; // eax std::ostream::sentry *v67; // eax std::ostream::sentry *v68; // eax std::ostream::sentry *v69; // eax std::ostream::sentry *v70; // eax std::ostream::sentry *v71; // eax std::ostream::sentry *v72; // eax std::ostream::sentry *v73; // eax std::ostream::sentry *v74; // eax std::ostream::sentry *v75; // eax std::ostream::sentry *v76; // eax std::ostream::sentry *v77; // eax std::ostream::sentry *v78; // eax _DWORD *v79; // eax int v80; // eax int v81; // eax std::ostream::sentry *v82; // eax int v83; // eax std::ostream::sentry *v84; // eax std::ostream::sentry *v85; // eax std::ostream::sentry *v86; // eax std::ostream::sentry *v87; // eax std::ostream::sentry *v88; // eax std::ostream::sentry *v89; // eax std::ostream::sentry *v90; // eax std::ostream::sentry *v91; // eax std::ostream::sentry *v92; // eax std::ostream::sentry *v93; // eax std::ostream::sentry *v94; // eax std::ostream::sentry *v96; // eax std::ostream::sentry *v97; // eax std::ostream::sentry *v98; // eax std::ostream::sentry *v99; // eax std::ostream::sentry *v100; // eax std::ostream::sentry *v101; // eax unsigned int k; // ebx std::ostream::sentry *v103; // eax std::ostream::sentry *v104; // eax int m; // ebx std::ostream::sentry *v106; // eax std::ostream::sentry *v107; // eax int n; // ebx std::ostream::sentry *v109; // eax std::ostream::sentry *v110; // eax int v112; // [esp+48h] [ebp-100h] int v113; // [esp+4Ch] [ebp-FCh] _DWORD *v114; // [esp+4Ch] [ebp-FCh] char **v115; // [esp+50h] [ebp-F8h] char *v116; // [esp+50h] [ebp-F8h] _DWORD *v117; // [esp+50h] [ebp-F8h] int v118; // [esp+54h] [ebp-F4h] int v119; // [esp+54h] [ebp-F4h] int v120; // [esp+54h] [ebp-F4h] int v121; // [esp+54h] [ebp-F4h] int v122; // [esp+58h] [ebp-F0h] int v123; // [esp+5Ch] [ebp-ECh] char *v124; // [esp+60h] [ebp-E8h] char *v125; // [esp+60h] [ebp-E8h] char *v126; // [esp+60h] [ebp-E8h] char *v127; // [esp+60h] [ebp-E8h] char *v128; // [esp+60h] [ebp-E8h] char *v129; // [esp+60h] [ebp-E8h] int v130; // [esp+68h] [ebp-E0h] _DWORD *v131; // [esp+68h] [ebp-E0h] _DWORD *v132; // [esp+68h] [ebp-E0h] _DWORD *v133; // [esp+68h] [ebp-E0h] _DWORD *v134; // [esp+68h] [ebp-E0h] int i; // [esp+68h] [ebp-E0h] unsigned int j; // [esp+68h] [ebp-E0h] _DWORD *v137; // [esp+68h] [ebp-E0h] unsigned int v138; // [esp+6Ch] [ebp-DCh] void *v139; // [esp+6Ch] [ebp-DCh] void *v140; // [esp+6Ch] [ebp-DCh] void **v141; // [esp+74h] [ebp-D4h] BYREF int v142; // [esp+78h] [ebp-D0h] int v143; // [esp+7Ch] [ebp-CCh] int v144[2]; // [esp+80h] [ebp-C8h] BYREF char v145; // [esp+88h] [ebp-C0h] BYREF int v146[2]; // [esp+98h] [ebp-B0h] BYREF char v147; // [esp+A0h] [ebp-A8h] BYREF void *v148[2]; // [esp+B0h] [ebp-98h] BYREF char v149; // [esp+B8h] [ebp-90h] BYREF void *v150[6]; // [esp+C8h] [ebp-80h] BYREF int v151[2]; // [esp+E0h] [ebp-68h] BYREF char v152; // [esp+E8h] [ebp-60h] BYREF int v153[2]; // [esp+F8h] [ebp-50h] BYREF char v154; // [esp+100h] [ebp-48h] BYREF __int64 v155; // [esp+110h] [ebp-38h] BYREF char v156[16]; // [esp+118h] [ebp-30h] BYREF int v157; // [esp+128h] [ebp-20h] v16 = (std::ostream::sentry *)(a6 + 8); std::ostream::tellp(&v155, (std::ostream *)(a6 + 8)); if ( v155 > 52428800 ) { exception = __cxa_allocate_exception(0x18u); std::string::basic_string( (void **)&v155, "Interal error: generated code (>10M) will be too heavy to fly in a narrow wind."); *exception = exception + 2; exception[1] = 0; *((_BYTE *)exception + 8) = 0; std::string::_M_assign((int)exception, (int)&v155); std::string::_M_dispose((void **)&v155); __cxa_throw( exception, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } v144[1] = 0; v144[0] = (int)&v145; v146[0] = (int)&v147; v145 = 0; v146[1] = 0; v147 = 0; v138 = 0; v122 = 0; v123 = 0; while ( 1 ) { v18 = this[18]; if ( (this[19] - v18) >> 3 <= v138 ) break; if ( (std::operator==(*(_DWORD *)(v18 + 8 * v138), "import") || std::operator==(*(_DWORD *)(this[18] + 8 * v138), "wx-import")) && (v130 = *(_DWORD *)(this[18] + 8 * v138), v118 = v130 + 52, std::string::basic_string((void **)&v155, (char *)&off_52DF44), v131 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v130 + 48), (int)&v155), std::string::_M_dispose((void **)&v155), v131 != (_DWORD *)v118) ) { if ( !v123 ) { WXML::NameAllocator::GetNextName(a7, v144); v19 = std::operator<<>(v16, "var "); v20 = std::operator<<(v19, v144); v21 = std::operator<<>(v20, "="); v22 = std::operator<<(v21, a3); std::operator<<>(v22, (char *)off_52E30A); v132 = (_DWORD *)this[62]; std::string::basic_string(&v155, (int)a2); StrID = WXML::DOMLib::StrCache::GetStrID(v132, (int)&v155); std::ostream::operator<<(StrID); std::string::_M_dispose((void **)&v155); v24 = std::operator<<>(v16, "]].i"); std::operator<<>(v24, a12); } ++v123; } else if ( std::operator==(*(_DWORD *)(this[18] + 8 * v138), "include") ) { v25 = *(_DWORD *)(this[18] + 8 * v138); v133 = (_DWORD *)(v25 + 52); std::string::basic_string((void **)&v155, (char *)&off_52DF44); v26 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v25 + 48), (int)&v155); std::string::_M_dispose((void **)&v155); if ( v26 != v133 ) { if ( !v122 ) { WXML::NameAllocator::GetNextName(a7, v146); v27 = std::operator<<>(v16, "var "); v28 = std::operator<<(v27, v146); v29 = std::operator<<>(v28, "="); v30 = std::operator<<(v29, a3); std::operator<<>(v30, (char *)off_52E30A); v134 = (_DWORD *)this[62]; std::string::basic_string(&v155, (int)a2); v31 = WXML::DOMLib::StrCache::GetStrID(v134, (int)&v155); std::ostream::operator<<(v31); std::string::_M_dispose((void **)&v155); v32 = std::operator<<>(v16, "]].j"); std::operator<<>(v32, a12); } ++v122; } } ++v138; } v148[1] = 0; v148[0] = &v149; v149 = 0; v124 = 0; for ( i = 0; ; i = v36 ) { v33 = this[18]; if ( (this[19] - v33) >> 3 <= (unsigned int)v124 ) break; v119 = *(_DWORD *)(v33 + 8 * (_DWORD)v124); std::string::basic_string((void **)v153, "wx-if"); v34 = 1; if ( (_DWORD *)(v119 + 52) == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v119 + 48), (int)v153) ) { v35 = *(_DWORD *)(this[18] + 8 * (_DWORD)v124); std::string::basic_string((void **)&v155, "wx:if"); v34 = v35 + 52 != (_DWORD)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v35 + 48), (int)&v155); std::string::_M_dispose((void **)&v155); } std::string::_M_dispose((void **)v153); if ( v34 ) { WXML::NameAllocator::GetNextName(a7, v148); std::string::_M_assign(*(_DWORD *)(this[18] + 8 * (_DWORD)v124) + 220, (int)v148); v36 = 2; *(_DWORD *)(*(_DWORD *)(this[18] + 8 * (_DWORD)v124) + 244) = 1; } else { v37 = *(_DWORD *)(this[18] + 8 * (_DWORD)v124); v120 = v37 + 52; std::string::basic_string(v150, "wx:elif"); v38 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v37 + 48), (int)v150); std::string::_M_dispose(v150); if ( v38 == (_DWORD *)v120 ) { v41 = *(_DWORD *)(this[18] + 8 * (_DWORD)v124); v121 = v41 + 52; std::string::basic_string((void **)v153, "wx:else"); v42 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v41 + 48), (int)v153); std::string::_M_dispose((void **)v153); if ( v42 != (_DWORD *)v121 ) { if ( !i ) { v44 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)&v155, "`wx:if not found, then something must be wrong`"); std::string::basic_string((void **)v153, "wx:else"); WXML::DOMLib::WXMLDom::Error( (int)v44, a2, *(_DWORD *)(this[18] + 8 * (_DWORD)v124) + 84, v153, (int *)&v155); std::string::_M_dispose((void **)v153); std::string::_M_dispose((void **)&v155); __cxa_throw( v44, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } v43 = *(_DWORD *)(this[18] + 8 * (_DWORD)v124); *(_DWORD *)(v43 + 244) = i; std::string::_M_assign(v43 + 220, (int)v148); } v36 = 0; } else { if ( !i ) { v40 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)&v155, "`wx:if not found, then something must be wrong`"); std::string::basic_string((void **)v153, "wx:elif"); WXML::DOMLib::WXMLDom::Error((int)v40, a2, *(_DWORD *)(this[18] + 8 * (_DWORD)v124) + 84, v153, (int *)&v155); std::string::_M_dispose((void **)v153); std::string::_M_dispose((void **)&v155); __cxa_throw( v40, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } v36 = i + 1; v39 = *(_DWORD *)(this[18] + 8 * (_DWORD)v124); *(_DWORD *)(v39 + 244) = i; std::string::_M_assign(v39 + 220, (int)v148); } } ++v124; } v152 = 0; v151[0] = (int)&v152; v151[1] = 0; v141 = 0; v142 = 0; v143 = 0; for ( j = 0; (this[19] - this[18]) >> 3 > j; ++j ) { std::string::_M_assign((int)v151, (int)a5); v45 = 8 * j; if ( *(int *)(*(_DWORD *)(this[18] + 8 * j) + 244) <= 0 ) goto LABEL_56; v154 = 0; v153[0] = (int)&v154; v153[1] = 0; v115 = WXML::DOMLib::szWXIFControlAttrs; while ( 1 ) { v125 = *v115; v113 = *(_DWORD *)(this[18] + 8 * j); if ( !*v115 ) break; v112 = *(_DWORD *)(this[18] + 8 * j) + 52; std::string::basic_string((void **)&v155, v125); v114 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v113 + 48), (int)&v155); std::string::_M_dispose((void **)&v155); ++v115; if ( v114 != (_DWORD *)v112 ) { std::string::operator=((unsigned int *)v153, v125); break; } } if ( std::map::operator[]( (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), (int)v153)[14] == -3 ) { v139 = __cxa_allocate_exception(0x18u); v137 = std::map::operator[]( (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), (int)v153); v46 = std::map::operator[]( (_DWORD *)(*(_DWORD *)(this[18] + v45) + 48), (int)v153); WXML::DOMLib::WXMLDom::Error((int)v139, a2, (int)v46, v153, v137 + 15); __cxa_throw( v139, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } if ( std::map::operator[]( (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), (int)v153)[14] == -1 && (unsigned __int8)std::operator!=((int)v153, "wx:else") ) { v140 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)&v155, "value not set"); WXML::DOMLib::WXMLDom::Error((int)v140, a2, *(_DWORD *)(this[18] + 8 * j) + 84, v153, (int *)&v155); std::string::_M_dispose((void **)&v155); __cxa_throw( v140, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } if ( std::operator==((int)v153, "wx-if") || std::operator==((int)v153, "wx:if") ) { v47 = std::operator<<>(v16, "var "); v48 = std::operator<<(v47, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); v49 = std::operator<<>(v48, "=_v()"); std::operator<<>(v49, a12); v50 = std::operator<<>(v16, "_("); v51 = std::operator<<(v50, a5); v52 = std::operator<<>(v51, ","); v53 = std::operator<<(v52, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); v54 = std::operator<<>(v53, ")"); std::operator<<>(v54, a12); std::operator<<>(v16, "if(_oz(z,"); v55 = std::map::operator[]( (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), (int)v153); std::ostream::operator<<(v55[14]); v56 = std::operator<<>(v16, ","); v57 = std::operator<<(v56, a8); v58 = std::operator<<>(v57, ","); v59 = std::operator<<(v58, a9); v60 = std::operator<<>(v59, ","); v61 = std::operator<<(v60, a10); std::operator<<>(v61, ")){"); v62 = std::operator<<(v16, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); std::operator<<>(v62, ".wxVkey="); v63 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 244)); std::operator<<>(v63, a12); std::string::basic_string(&v155, *(_DWORD *)(this[18] + 8 * j) + 220); v157 = 1; std::vector>::emplace_back>((int)&v141, &v155); std::string::_M_dispose((void **)&v155); v64 = *(_DWORD *)(this[18] + 8 * j); if ( *(_BYTE *)(v64 + 256) ) goto LABEL_54; } else { if ( !std::operator==((int)v153, "wx:elif") ) { v74 = std::operator<<>(v16, "else{"); v75 = std::operator<<(v74, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); std::operator<<>(v75, ".wxVkey="); v76 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 244)); std::operator<<>(v76, a12); v64 = *(_DWORD *)(this[18] + 8 * j); if ( !*(_BYTE *)(v64 + 256) ) goto LABEL_55; LABEL_54: std::string::basic_string(&v155, v64 + 220); v157 = 3; std::vector>::emplace_back>((int)&v141, &v155); std::string::_M_dispose((void **)&v155); goto LABEL_55; } std::operator<<>(v16, "else if(_oz(z,"); v65 = std::map::operator[]( (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), (int)v153); std::ostream::operator<<(v65[14]); v66 = std::operator<<>(v16, ","); v67 = std::operator<<(v66, a8); v68 = std::operator<<>(v67, ","); v69 = std::operator<<(v68, a9); v70 = std::operator<<>(v69, ","); v71 = std::operator<<(v70, a10); std::operator<<>(v71, ")){"); v72 = std::operator<<(v16, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); std::operator<<>(v72, ".wxVkey="); v73 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 244)); std::operator<<>(v73, a12); v64 = *(_DWORD *)(this[18] + 8 * j); if ( *(_BYTE *)(v64 + 256) ) goto LABEL_54; } LABEL_55: std::string::_M_assign((int)v151, *(_DWORD *)(this[18] + 8 * j) + 220); std::string::_M_dispose((void **)v153); LABEL_56: if ( std::operator==(*(_DWORD *)(this[18] + 8 * j), "import") || std::operator==(*(_DWORD *)(this[18] + 8 * j), "wx-import") ) { v126 = *(char **)(this[18] + 8 * j); v116 = v126 + 52; std::string::basic_string((void **)&v155, (char *)&off_52DF44); v127 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)v126 + 12, (int)&v155); std::string::_M_dispose((void **)&v155); if ( v127 != v116 ) { v77 = std::operator<<>(v16, "_ai("); v78 = std::operator<<(v77, v144); std::operator<<>(v78, (char *)off_52E146); v117 = (_DWORD *)this[62]; v128 = *(char **)(this[18] + 8 * j); std::string::basic_string((void **)v153, (char *)&off_52DF44); v79 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)v128 + 12, (int)v153); v80 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)(v79 + 10)); std::string::basic_string(&v155, v80); v81 = WXML::DOMLib::StrCache::GetStrID(v117, (int)&v155); std::ostream::operator<<(v81); std::string::_M_dispose((void **)&v155); std::string::_M_dispose((void **)v153); std::operator<<>(v16, "],"); v82 = std::operator<<(v16, a3); std::operator<<>(v82, (char *)off_52E146); v129 = (char *)this[62]; std::string::basic_string(&v155, (int)a2); v83 = WXML::DOMLib::StrCache::GetStrID(v129, (int)&v155); std::ostream::operator<<(v83); std::string::_M_dispose((void **)&v155); std::operator<<>(v16, "],"); v84 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 92)); std::operator<<>(v84, ","); v85 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 96)); v86 = std::operator<<>(v85, ")"); std::operator<<>(v86, a12); goto LABEL_74; } } if ( !std::operator==(*(_DWORD *)(this[18] + 8 * j), "import") && !std::operator==(*(_DWORD *)(this[18] + 8 * j), "wx-import") ) { if ( std::operator==(*(_DWORD *)(this[18] + 8 * j), "wx-repeat") || std::operator==(*(_DWORD *)(this[18] + 8 * j), "wx-template") ) { v155 = (unsigned int)v156; v156[0] = 0; WXML::NameAllocator::GetNextName(a7, &v155); v87 = std::operator<<>(v16, "var "); v88 = std::operator<<(v87, (int *)&v155); v89 = std::operator<<>(v88, "=_v()"); std::operator<<>(v89, a12); v90 = std::operator<<>(v16, "_("); v91 = std::operator<<(v90, v151); v92 = std::operator<<>(v91, ","); v93 = std::operator<<(v92, (int *)&v155); v94 = std::operator<<>(v93, ")"); std::operator<<>(v94, a12); WXML::DOMLib::WXMLDom::RenderNonDefine( *(_DWORD *)(this[18] + 8 * j), a2, a3, a4, (int *)&v155, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); LABEL_73: std::string::_M_dispose((void **)&v155); goto LABEL_74; } if ( std::operator==(*(_DWORD *)(this[18] + 8 * j), "block") || std::operator==(*(_DWORD *)(this[18] + 8 * j), "include") ) { WXML::DOMLib::WXMLDom::RenderNonDefine( *(_DWORD *)(this[18] + 8 * j), a2, a3, a4, v151, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); goto LABEL_74; } if ( (unsigned __int8)std::operator!=(*(_DWORD *)(this[18] + 8 * j), "wx-import") ) { if ( (unsigned __int8)std::operator!=(*(_DWORD *)(this[18] + 8 * j), "wx-define") ) { v155 = (unsigned int)v156; v156[0] = 0; WXML::NameAllocator::GetNextName(a7, &v155); WXML::DOMLib::WXMLDom::RenderNonDefine( *(_DWORD *)(this[18] + 8 * j), a2, a3, a4, (int *)&v155, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); v96 = std::operator<<>(v16, "_("); v97 = std::operator<<(v96, v151); v98 = std::operator<<>(v97, ","); v99 = std::operator<<(v98, (int *)&v155); v100 = std::operator<<>(v99, ")"); std::operator<<>(v100, a12); goto LABEL_73; } } } LABEL_74: if ( *(int *)(*(_DWORD *)(this[18] + 8 * j) + 244) > 0 ) { v101 = std::operator<<>(v16, "}"); std::operator<<>(v101, a12); } } for ( k = 0; k < -1227133513 * ((v142 - (int)v141) >> 2); ++k ) { v103 = std::operator<<(v16, (int *)&v141[7 * k]); std::operator<<>(v103, ".wxXCkey="); v104 = (std::ostream::sentry *)std::ostream::operator<<(v141[7 * k + 6]); std::operator<<>(v104, a12); } for ( m = 0; v123 != m; ++m ) { v106 = std::operator<<(v16, v144); v107 = std::operator<<>(v106, ".pop()"); std::operator<<>(v107, a12); } for ( n = 0; v122 != n; ++n ) { v109 = std::operator<<(v16, v146); v110 = std::operator<<>(v109, ".pop()"); std::operator<<>(v110, a12); } std::vector>::~vector(&v141); std::string::_M_dispose((void **)v151); std::string::_M_dispose(v148); std::string::_M_dispose((void **)v146); std::string::_M_dispose((void **)v144); return 0; } // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 52DF44: using guessed type void *off_52DF44; // 52E434: using guessed type char *WXML::DOMLib::szWXIFControlAttrs[4]; // 533C6C: using guessed type int *`typeinfo for'WXML::DOMLib::RenderException; //----- (0041F5F4) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int __thiscall WXML::DOMLib::WXMLDom::RenderMeAsFunction( _DWORD *this, int *a2, int *a3, int a4, int *a5, int a6, int *a7, int *a8, int *a9, int *a10, int *a11, int *a12, char a13, int *a14, char a15, unsigned __int8 a16, int a17, int *a18) { std::ostream::sentry *v18; // ebx std::ostream::sentry *v19; // eax _DWORD *v20; // edi int StrID; // eax std::ostream::sentry *v22; // eax std::ostream::sentry *v23; // eax std::ostream::sentry *v24; // eax std::ostream::sentry *v25; // eax std::ostream::sentry *v26; // eax std::ostream::sentry *v27; // eax std::ostream::sentry *v28; // eax std::ostream::sentry *v29; // eax std::ostream::sentry *v30; // eax std::ostream::sentry *v31; // eax std::ostream::sentry *v32; // eax std::ostream::sentry *v33; // eax std::ostream::sentry *v34; // eax std::ostream::sentry *v35; // eax std::ostream::sentry *v36; // eax int v37; // eax std::ostream::sentry *v38; // eax std::ostream::sentry *v39; // eax std::ostream::sentry *v40; // eax std::ostream::sentry *v41; // eax std::ostream::sentry *v42; // eax std::ostream::sentry *v43; // eax std::ostream::sentry *v44; // eax std::ostream::sentry *v45; // eax std::ostream::sentry *v46; // eax std::ostream::sentry *v47; // eax std::ostream::sentry *v48; // eax std::ostream::sentry *v49; // eax int v50; // eax std::ostream::sentry *v51; // eax std::ostream::sentry *v52; // eax std::ostream::sentry *v53; // eax std::ostream::sentry *v54; // eax std::ostream::sentry *v55; // eax std::ostream::sentry *v56; // eax std::ostream::sentry *v57; // eax std::ostream::sentry *v58; // eax std::ostream::sentry *v59; // eax std::ostream::sentry *v60; // eax std::ostream::sentry *v61; // eax std::ostream::sentry *v62; // eax std::ostream::sentry *v63; // eax std::ostream::sentry *v64; // eax std::ostream::sentry *v65; // eax std::ostream::sentry *v66; // eax std::ostream::sentry *v67; // eax std::ostream::sentry *v68; // eax std::ostream::sentry *v69; // eax std::ostream::sentry *v70; // eax std::ostream::sentry *v71; // eax _DWORD *v73; // [esp+50h] [ebp-58h] std::ostream::sentry *v74; // [esp+54h] [ebp-54h] std::ostream::sentry *v75; // [esp+54h] [ebp-54h] int v77[2]; // [esp+60h] [ebp-48h] BYREF char v78; // [esp+68h] [ebp-40h] BYREF int v79; // [esp+78h] [ebp-30h] BYREF int v80; // [esp+7Ch] [ebp-2Ch] BYREF void *v81; // [esp+80h] [ebp-28h] int *v82; // [esp+84h] [ebp-24h] int *v83; // [esp+88h] [ebp-20h] int v84; // [esp+8Ch] [ebp-1Ch] v77[0] = (int)&v78; v77[1] = 0; v78 = 0; WXML::NameAllocator::GetNextName(a7, v77); v18 = (std::ostream::sentry *)(a6 + 8); if ( a15 ) { v19 = std::operator<<((std::ostream::sentry *)(a6 + 8), a12); std::operator<<>(v19, (char *)off_52E30A); v20 = (_DWORD *)this[62]; std::string::basic_string(&v79, (int)a2); StrID = WXML::DOMLib::StrCache::GetStrID(v20, (int)&v79); std::ostream::operator<<(StrID); std::string::_M_dispose((void **)&v79); std::operator<<>(v18, "]][\""); WXML::Rewrite::ToStringCode(a5, a6); std::operator<<>(v18, "\"]"); } else { v22 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); std::operator<<(v22, a5); } v23 = std::operator<<>(v18, "=function("); v24 = std::operator<<(v23, a8); v25 = std::operator<<>(v24, ","); v26 = std::operator<<(v25, a9); v27 = std::operator<<>(v26, ","); v28 = std::operator<<(v27, a11); v29 = std::operator<<>(v28, ","); v30 = std::operator<<(v29, a10); v31 = std::operator<<>(v30, "){"); std::operator<<>(v31, a13); if ( a18[1] ) { v32 = std::operator<<>(v18, "var z="); v33 = std::operator<<(v32, a18); v34 = std::operator<<>(v33, "()"); std::operator<<>(v34, a13); } if ( a15 ) { v35 = std::operator<<>(v18, "var "); v36 = std::operator<<(v35, v77); std::operator<<>(v36, (char *)off_52E3CC); v74 = (std::ostream::sentry *)this[62]; std::string::basic_string(&v79, (int)a2); v37 = WXML::DOMLib::StrCache::GetStrID(v74, (int)&v79); std::ostream::operator<<(v37); std::string::_M_dispose((void **)&v79); std::operator<<>(v18, "]"); std::operator<<>(v18, "+':"); WXML::Rewrite::ToStringCode(a5, a6); std::operator<<>(v18, "'"); std::operator<<>(v18, a13); v38 = std::operator<<(v18, a11); v39 = std::operator<<>(v38, ".wxVkey="); v40 = std::operator<<(v39, v77); std::operator<<>(v40, a13); v41 = std::operator<<(v18, a10); v75 = std::operator<<>(v41, ".f=$gdc(f_[\""); WXML::Rewrite::ToStringCode((int)&v79, a2); v42 = std::operator<<(v75, &v79); v43 = std::operator<<>(v42, "\"],\"\",1)"); std::operator<<>(v43, a13); std::string::_M_dispose((void **)&v79); v44 = std::operator<<>(v18, "if("); v45 = std::operator<<(v44, a14); v46 = std::operator<<>(v45, "["); v47 = std::operator<<(v46, v77); v48 = std::operator<<>(v47, "]){_wl("); v49 = std::operator<<(v48, v77); std::operator<<>(v49, (char *)off_52E146); v73 = (_DWORD *)this[62]; std::string::basic_string(&v79, (int)a2); v50 = WXML::DOMLib::StrCache::GetStrID(v73, (int)&v79); v51 = (std::ostream::sentry *)std::ostream::operator<<(v50); v52 = std::operator<<>(v51, "]);return}"); std::operator<<>(v52, a13); std::string::_M_dispose((void **)&v79); v53 = std::operator<<(v18, a14); v54 = std::operator<<>(v53, "["); v55 = std::operator<<(v54, v77); v56 = std::operator<<>(v55, "]=true"); std::operator<<>(v56, a13); v57 = std::operator<<>(v18, "try{"); std::operator<<>(v57, a13); } v80 = 0; v82 = &v80; v83 = &v80; v81 = 0; v84 = 0; WXML::DOMLib::WXMLDom::RenderChildren(this, a2, a3, a4, a11, a6, a7, a8, a9, a10, a12, a13, a16, a17, (int)&v79); if ( a15 ) { v58 = std::operator<<>(v18, "}catch(err){"); std::operator<<>(v58, a13); v59 = std::operator<<(v18, a14); v60 = std::operator<<>(v59, "["); v61 = std::operator<<(v60, v77); v62 = std::operator<<>(v61, "]=false"); std::operator<<>(v62, a13); v63 = std::operator<<>(v18, "throw err"); std::operator<<>(v63, a13); v64 = std::operator<<>(v18, "}"); std::operator<<>(v64, a13); v65 = std::operator<<(v18, a14); v66 = std::operator<<>(v65, "["); v67 = std::operator<<(v66, v77); v68 = std::operator<<>(v67, "]=false"); std::operator<<>(v68, a13); } v69 = std::operator<<>(v18, "return "); v70 = std::operator<<(v69, a11); std::operator<<>(v70, a13); v71 = std::operator<<>(v18, "}"); std::operator<<>(v71, a13); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase((void **)v81); std::string::_M_dispose((void **)v77); return 0; } // 41FC5E: positive sp value 4 has been found // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); //----- (0041FC74) -------------------------------------------------------- void __cdecl __tcf_0_0() { std::ios_base::Init::~Init(); } //----- (0041FC7E) -------------------------------------------------------- volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) { if ( _CRT_MT ) _InterlockedIncrement(result); else ++*result; return result; } // 78A9D4: using guessed type int _CRT_MT; //----- (0041FC8E) -------------------------------------------------------- int __fastcall WXML::DOMLib::Machine::Reset(_DWORD *a1) { int result; // eax a1[1] = 0; result = 0; *a1 = 0; a1[2] = 1; a1[3] = 0; a1[4] = 1; a1[5] = 1; a1[6] = 1; return result; } //----- (0041FCC2) -------------------------------------------------------- void WXML::DOMLib::Machine::InitTransitTable() { const char *v0; // edx int v1; // eax const char *i; // edx int v3; // eax const char *v4; // edx int v5; // eax const char *j; // edx int v7; // eax const char *k; // edx int v9; // eax const char *v10; // edx int v11; // eax const char *m; // edx int v13; // eax const char *v14; // edx int v15; // eax const char *n; // edx int v17; // eax const char *ii; // edx int v19; // eax const char *v20; // edx int v21; // eax const char *v22; // edx int v23; // eax const char *v24; // edx int v25; // eax if ( !WXML::DOMLib::Machine::InitTransitTable(void)::bInited ) { WXML::DOMLib::Machine::InitTransitTable(void)::bInited = 1; v0 = " \n\t\r"; memset(&WXML::DOMLib::Machine::TT, 0, 0x101000u); dword_5A1AEC = 99; dword_588E54 = 131074; dword_588F50 = 15; dword_589164 = 1; dword_588D64 = 131171; dword_58C788 = 16; dword_58C99C = 1; dword_58CB94 = 17; dword_58C9A0 = -1; dword_58CDA0 = 16; dword_58CF98 = 1; dword_58D1A4 = 1048592; dword_58CA28 = 11; dword_58CA3C = 13; dword_58B6FC = 12; dword_58BD90 = 11; dword_58B614 = 16; dword_58B58C = -1; dword_58B98C = 11; dword_58BF04 = 14; dword_58C598 = 13; dword_58BE30 = 16; dword_58BD94 = -1; dword_58C194 = 13; while ( 1 ) { v1 = *v0; if ( !(_BYTE)v1 ) break; dword_589168[v1] = 655363; ++v0; } for ( i = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; ; ++i ) { v3 = *i; if ( !(_BYTE)v3 ) break; dword_589168[v3] = 131076; } dword_589224 = 262147; v4 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; dword_5891EC = 33; dword_589344 = 22; dword_589568 = -1; dword_590E98 = 34; dword_5911E4 = -1; dword_59129C = 19; dword_5915E8 = -1; dword_58D660 = 20; dword_58D9AC = 19; dword_58DA64 = 21; dword_58DDB0 = 19; dword_58DEAC = 524289; dword_58DE68 = 21; dword_58E1B4 = 19; while ( 1 ) { v5 = *v4; if ( !(_BYTE)v5 ) break; dword_589970[v5] = 4; ++v4; } for ( j = "0123456789"; ; ++j ) { v7 = *j; if ( !(_BYTE)v7 ) break; dword_589970[v7] = 4; } for ( k = " \n\t\r"; ; ++k ) { v9 = *k; if ( !(_BYTE)v9 ) break; dword_589970[v9] = 655363; } dword_589A64 = 131078; v10 = " \n\t\r"; dword_5899F8 = -1; dword_589A68 = 393217; dword_589A2C = 131090; dword_589D70 = 131075; dword_589970[0] = -1; while ( 1 ) { v11 = *v10; if ( !(_BYTE)v11 ) break; dword_58A178[v11] = 655363; ++v10; } for ( m = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; ; ++m ) { v13 = *m; if ( !(_BYTE)v13 ) break; dword_58A178[v13] = 131077; } dword_58A200 = 131077; v14 = " \n\t\r"; dword_58A214 = 131081; dword_58A178[0] = -1; dword_58A578 = -1; while ( 1 ) { v15 = *v14; if ( !(_BYTE)v15 ) break; dword_58956C[v15] = 524291; ++v14; } for ( n = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; ; ++n ) { v17 = *n; if ( !(_BYTE)v17 ) break; dword_58956C[v17] = 4; } for ( ii = "0123456789"; ; ++ii ) { v19 = *ii; if ( !(_BYTE)v19 ) break; dword_58956C[v19] = -1; } dword_58965C = -1; v20 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; dword_5895F4 = 5; dword_589608 = 9; dword_589628 = 18; dword_589664 = 262145; dword_589660 = 6; dword_58956C[0] = -1; dword_58996C = -1; while ( 1 ) { v21 = *v20; if ( !(_BYTE)v21 ) break; dword_58D1A8[v21] = 131076; ++v20; } dword_58D2A0 = 262145; v22 = " \n\t\r"; dword_58D5A8 = -1; dword_589EE4 = 7; dword_589D9C = -1; dword_58A97C = 5; dword_58A5A4 = 655363; dword_589DFC = 262147; dword_589D74 = -1; dword_58A174 = 5; dword_58AEF4 = 10; dword_58ADAC = -1; dword_58B588 = 9; dword_58B1B0 = 655363; dword_58AE20 = 262147; dword_58AD84 = -1; dword_58B184 = 9; dword_58E398 = 23; dword_58E5B8 = 3145732; dword_58E788 = 24; dword_58E9BC = 3145732; while ( 1 ) { v23 = *v22; if ( !(_BYTE)v23 ) break; dword_58E9C0[v23] = 25; ++v22; } dword_58EAB8 = 31; v24 = " \n\t\r"; dword_58EDC0 = 3145732; dword_58EEBC = 31; dword_58EE80 = 32; dword_58F1C4 = 25; dword_590AD8 = 262145; dword_590DE0 = 1048601; dword_5906CC = 131098; dword_5909DC = 31; dword_58F284 = 27; dword_58F5C8 = (int)&byte_50001F; dword_58F7A8 = 28; dword_58F9CC = (int)&byte_50001F; dword_58FBB0 = 29; dword_58FDD0 = (int)&byte_50001F; dword_58FFA0 = 30; dword_5901D4 = (int)&byte_50001F; while ( 1 ) { v25 = *v24; if ( !(_BYTE)v25 ) break; dword_5901D8[v25] = 30; ++v24; } dword_5902D0 = 524289; dword_5905D8 = -1; dword_587964 = 1; dword_587974 = 2; dword_587984 = 2; dword_5879DC = 3; dword_5879E0 = 3; } } // 50001F: using guessed type char byte_50001F; // 587964: using guessed type int dword_587964; // 587974: using guessed type int dword_587974; // 587984: using guessed type int dword_587984; // 5879DC: using guessed type int dword_5879DC; // 5879E0: using guessed type int dword_5879E0; // 588960: using guessed type int WXML::DOMLib::Machine::TT; // 588D64: using guessed type int dword_588D64; // 588E54: using guessed type int dword_588E54; // 588F50: using guessed type int dword_588F50; // 589164: using guessed type int dword_589164; // 589168: using guessed type int dword_589168[33]; // 5891EC: using guessed type int dword_5891EC; // 589224: using guessed type int dword_589224; // 589344: using guessed type int dword_589344; // 589568: using guessed type int dword_589568; // 58956C: using guessed type int dword_58956C[34]; // 5895F4: using guessed type int dword_5895F4; // 589608: using guessed type int dword_589608; // 589628: using guessed type int dword_589628; // 58965C: using guessed type int dword_58965C; // 589660: using guessed type int dword_589660; // 589664: using guessed type int dword_589664; // 58996C: using guessed type int dword_58996C; // 589970: using guessed type int dword_589970[34]; // 5899F8: using guessed type int dword_5899F8; // 589A2C: using guessed type int dword_589A2C; // 589A64: using guessed type int dword_589A64; // 589A68: using guessed type int dword_589A68; // 589D70: using guessed type int dword_589D70; // 589D74: using guessed type int dword_589D74; // 589D9C: using guessed type int dword_589D9C; // 589DFC: using guessed type int dword_589DFC; // 589EE4: using guessed type int dword_589EE4; // 58A174: using guessed type int dword_58A174; // 58A178: using guessed type int dword_58A178[]; // 58A200: using guessed type int dword_58A200; // 58A214: using guessed type int dword_58A214; // 58A578: using guessed type int dword_58A578; // 58A5A4: using guessed type int dword_58A5A4; // 58A97C: using guessed type int dword_58A97C; // 58AD84: using guessed type int dword_58AD84; // 58ADAC: using guessed type int dword_58ADAC; // 58AE20: using guessed type int dword_58AE20; // 58AEF4: using guessed type int dword_58AEF4; // 58B184: using guessed type int dword_58B184; // 58B1B0: using guessed type int dword_58B1B0; // 58B588: using guessed type int dword_58B588; // 58B58C: using guessed type int dword_58B58C; // 58B614: using guessed type int dword_58B614; // 58B6FC: using guessed type int dword_58B6FC; // 58B98C: using guessed type int dword_58B98C; // 58BD90: using guessed type int dword_58BD90; // 58BD94: using guessed type int dword_58BD94; // 58BE30: using guessed type int dword_58BE30; // 58BF04: using guessed type int dword_58BF04; // 58C194: using guessed type int dword_58C194; // 58C598: using guessed type int dword_58C598; // 58C788: using guessed type int dword_58C788; // 58C99C: using guessed type int dword_58C99C; // 58C9A0: using guessed type int dword_58C9A0; // 58CA28: using guessed type int dword_58CA28; // 58CA3C: using guessed type int dword_58CA3C; // 58CB94: using guessed type int dword_58CB94; // 58CDA0: using guessed type int dword_58CDA0; // 58CF98: using guessed type int dword_58CF98; // 58D1A4: using guessed type int dword_58D1A4; // 58D1A8: using guessed type int dword_58D1A8[62]; // 58D2A0: using guessed type int dword_58D2A0; // 58D5A8: using guessed type int dword_58D5A8; // 58D660: using guessed type int dword_58D660; // 58D9AC: using guessed type int dword_58D9AC; // 58DA64: using guessed type int dword_58DA64; // 58DDB0: using guessed type int dword_58DDB0; // 58DE68: using guessed type int dword_58DE68; // 58DEAC: using guessed type int dword_58DEAC; // 58E1B4: using guessed type int dword_58E1B4; // 58E398: using guessed type int dword_58E398; // 58E5B8: using guessed type int dword_58E5B8; // 58E788: using guessed type int dword_58E788; // 58E9BC: using guessed type int dword_58E9BC; // 58E9C0: using guessed type int dword_58E9C0[62]; // 58EAB8: using guessed type int dword_58EAB8; // 58EDC0: using guessed type int dword_58EDC0; // 58EE80: using guessed type int dword_58EE80; // 58EEBC: using guessed type int dword_58EEBC; // 58F1C4: using guessed type int dword_58F1C4; // 58F284: using guessed type int dword_58F284; // 58F5C8: using guessed type int dword_58F5C8; // 58F7A8: using guessed type int dword_58F7A8; // 58F9CC: using guessed type int dword_58F9CC; // 58FBB0: using guessed type int dword_58FBB0; // 58FDD0: using guessed type int dword_58FDD0; // 58FFA0: using guessed type int dword_58FFA0; // 5901D4: using guessed type int dword_5901D4; // 5901D8: using guessed type int dword_5901D8[62]; // 5902D0: using guessed type int dword_5902D0; // 5905D8: using guessed type int dword_5905D8; // 5906CC: using guessed type int dword_5906CC; // 5909DC: using guessed type int dword_5909DC; // 590AD8: using guessed type int dword_590AD8; // 590DE0: using guessed type int dword_590DE0; // 590E98: using guessed type int dword_590E98; // 5911E4: using guessed type int dword_5911E4; // 59129C: using guessed type int dword_59129C; // 5915E8: using guessed type int dword_5915E8; // 5A1AEC: using guessed type int dword_5A1AEC; // 689960: using guessed type char WXML::DOMLib::Machine::InitTransitTable(void)::bInited; //----- (00420232) -------------------------------------------------------- void __thiscall WXML::DOMLib::Machine::Machine(int this, int a2) { int v2; // esi v2 = this + 28; *(_DWORD *)(this + 28) = this + 36; *(_DWORD *)(this + 32) = 0; *(_BYTE *)(this + 36) = 0; WXML::DOMLib::Machine::InitTransitTable(); std::string::_M_assign(v2, a2); } //----- (0042027C) -------------------------------------------------------- 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; } //----- (00420288) -------------------------------------------------------- int __fastcall WXML::DOMLib::Token::~Token(int a1) { std::string::_M_dispose((void **)(a1 + 88)); std::string::_M_dispose((void **)(a1 + 60)); std::string::_M_dispose((void **)(a1 + 32)); return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); } //----- (004202AF) -------------------------------------------------------- int __usercall std::__relocate_a_1>@( int a1@, int a2@, int a3@) { int v4; // esi int i; // ebx int v6; // eax _DWORD *v7; // ecx int v8; // ecx v4 = a3; for ( i = a1; i != a2; i += 112 ) { *(_DWORD *)v4 = *(_DWORD *)i; v6 = *(_DWORD *)(i + 4); *(_DWORD *)(v4 + 4) = v6; if ( v6 ) __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v6 + 4)); *(_DWORD *)(v4 + 8) = *(_DWORD *)(i + 8); *(_DWORD *)(v4 + 12) = *(_DWORD *)(i + 12); *(_DWORD *)(v4 + 16) = *(_DWORD *)(i + 16); *(_DWORD *)(v4 + 20) = *(_DWORD *)(i + 20); *(_DWORD *)(v4 + 24) = *(_DWORD *)(i + 24); *(_BYTE *)(v4 + 28) = *(_BYTE *)(i + 28); std::string::basic_string((_DWORD *)(v4 + 32), (_DWORD *)(i + 32)); *(_DWORD *)(v4 + 56) = *(_DWORD *)(i + 56); std::string::basic_string((_DWORD *)(v4 + 60), (_DWORD *)(i + 60)); v7 = (_DWORD *)(v4 + 88); v4 += 112; *(_BYTE *)(v4 - 28) = *(_BYTE *)(i + 84); std::string::basic_string(v7, (_DWORD *)(i + 88)); v8 = i; WXML::DOMLib::Token::~Token(v8); } return a3 + 112 * ((115043767 * ((unsigned int)(i - a1) >> 4)) & 0xFFFFFFF); } //----- (00420372) -------------------------------------------------------- int __thiscall WXML::DOMLib::Machine::Feed(int *this, unsigned __int8 a2, int a3, _DWORD *a4, int a5, int a6) { int v7; // esi std::ostream::sentry *v8; // eax std::ostream::sentry *v9; // eax std::ostream::sentry *v10; // eax std::ostream::sentry *v11; // eax std::ostream::sentry *v12; // eax std::ostream::sentry *v13; // eax std::ostream::sentry *v14; // eax std::ostream::sentry *v15; // eax int result; // eax int v17; // eax int v18; // edx int v19; // edx int v20; // ecx int v21; // eax int v22; // edx int v23; // ecx int v24; // ecx int v25; // ecx int v26; // eax int v27; // eax int v28; // eax int v29; // ecx int v30; // eax int v31; // edi int v32; // ecx int v33; // ecx int v34; // ecx int v35; // edx int v36; // eax int v37; // eax int v38; // ecx const WXML::DOMLib::Token *v39; // [esp+4h] [ebp-124h] int v40; // [esp+18h] [ebp-110h] void *v41[6]; // [esp+28h] [ebp-100h] BYREF int v42; // [esp+40h] [ebp-E8h] BYREF int v43; // [esp+44h] [ebp-E4h] int v44; // [esp+48h] [ebp-E0h] BYREF int v45; // [esp+4Ch] [ebp-DCh] BYREF int v46; // [esp+50h] [ebp-D8h] int v47; // [esp+54h] [ebp-D4h] int v48; // [esp+58h] [ebp-D0h] char v49; // [esp+5Ch] [ebp-CCh] char *v50; // [esp+60h] [ebp-C8h] int v51; // [esp+64h] [ebp-C4h] char v52[16]; // [esp+68h] [ebp-C0h] BYREF int v53; // [esp+78h] [ebp-B0h] char *v54; // [esp+7Ch] [ebp-ACh] int v55; // [esp+80h] [ebp-A8h] char v56[16]; // [esp+84h] [ebp-A4h] BYREF char v57; // [esp+94h] [ebp-94h] char *v58; // [esp+98h] [ebp-90h] int v59; // [esp+9Ch] [ebp-8Ch] char v60[136]; // [esp+A0h] [ebp-88h] BYREF if ( a2 == 10 ) { ++this[2]; this[3] = 0; } do { v40 = this[6]; v7 = WXML::DOMLib::Machine::TT[257 * v40 + a2]; if ( !v7 ) { v7 = dword_588D60[257 * v40]; if ( !v7 ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v42); std::operator<<>((std::ostream::sentry *)&v44, "BAD STATE MACHINE! AT INPUT "); v8 = (std::ostream::sentry *)std::ostream::operator<<(this[6]); v9 = std::operator<<>(v8, " "); std::operator<<>(v9, a2); std::stringbuf::str((int)v41, &v45); LABEL_11: std::string::operator=(a4, v41); std::string::_M_dispose(v41); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v42); return -1; } } if ( v7 < 0 ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v42); v10 = std::operator<<((std::ostream::sentry *)&v44, this + 7); std::operator<<>(v10, ":"); v11 = (std::ostream::sentry *)std::ostream::operator<<(this[2]); std::operator<<>(v11, ":"); v12 = (std::ostream::sentry *)std::ostream::operator<<(this[3]); v13 = std::operator<<>(v12, ": "); if ( a2 ) { v14 = std::operator<<>(v13, "unexpected character `"); v15 = std::operator<<>(v14, a2); std::operator<<>(v15, "`"); } else { std::operator<<>(v13, "unexpected end"); } std::stringbuf::str((int)v41, &v45); goto LABEL_11; } this[6] = (unsigned __int16)v7; if ( (v7 & 0x200000) != 0 ) { v17 = this[1]; if ( *this > v17 ) { v46 = this[1]; v50 = v52; v54 = v56; v58 = v60; v18 = this[4]; this[1] = v17 + 1; v44 = v18; v19 = this[5]; v42 = 0; v45 = v19; this[5] = v19 + 1; v43 = 0; v51 = 0; v52[0] = 0; v55 = 0; v56[0] = 0; v59 = 0; v60[0] = 0; v49 = 0; v57 = 0; v53 = -1; v47 = 1; v48 = 0; std::vector::push_back(a3, (WXML::DOMLib::Token *)&v42); WXML::DOMLib::Token::~Token((int)&v42); } } if ( (v7 & 0x400000) != 0 ) { WXML::DOMLib::Token::Token((int)&v42, (WXML::DOMLib::Token *)(*(_DWORD *)(a5 + 4) - 112), v39); v20 = *(_DWORD *)(a5 + 4) - 112; *(_DWORD *)(a5 + 4) = v20; WXML::DOMLib::Token::~Token(v20); this[4] = v44; this[5] = v45; this[1] = v46; WXML::DOMLib::Token::~Token((int)&v42); } } while ( (v7 & 0x100000) != 0 ); if ( (v7 & 0x20000) != 0 ) { v21 = *this; v22 = this[1]; if ( v22 < *this ) { this[1] = v21; v50 = v52; v54 = v56; v58 = v60; v23 = this[4]; v42 = 0; v44 = v23; v24 = this[5]; v43 = 0; v45 = v24; v25 = v21; v26 = this[3]; v46 = v22; this[5] = v26; v27 = this[2]; v51 = 0; this[4] = v27; v52[0] = 0; v28 = WXML::DOMLib::Machine::STT[v40]; v47 = v25 - v22; v55 = 0; v56[0] = 0; v59 = 0; v60[0] = 0; v49 = 0; v57 = 0; v53 = -1; v48 = v28; if ( v28 == 3 ) v29 = a5; else v29 = a3; std::vector::push_back(v29, (WXML::DOMLib::Token *)&v42); WXML::DOMLib::Token::~Token((int)&v42); } } v30 = *this + 1; v31 = this[3] + 1; *this = v30; this[3] = v31; if ( (v7 & 0x40000) != 0 ) { v42 = 0; v50 = v52; v54 = v56; v58 = v60; v32 = this[4]; v43 = 0; v44 = v32; v33 = this[5]; v51 = 0; v45 = v33; v34 = this[1]; this[1] = v30; v35 = v30 - v34; v52[0] = 0; this[5] = v31; v36 = this[2]; v55 = 0; this[4] = v36; v56[0] = 0; v37 = WXML::DOMLib::Machine::STT[v40]; v60[0] = 0; v59 = 0; v49 = 0; v57 = 0; v53 = -1; v46 = v34; v47 = v35; v48 = v37; if ( v37 == 3 ) v38 = a5; else v38 = a3; std::vector::push_back(v38, (WXML::DOMLib::Token *)&v42); WXML::DOMLib::Token::~Token((int)&v42); } result = v7 & 0x80000; if ( (v7 & 0x80000) != 0 ) { this[1] = *this; this[5] = this[3]; return 0; } return result; } // 42069E: variable 'v39' is possibly undefined // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 587960: using guessed type int WXML::DOMLib::Machine::STT[]; // 588960: using guessed type int WXML::DOMLib::Machine::TT[]; // 588D60: using guessed type int dword_588D60[]; //----- (00420944) -------------------------------------------------------- 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; } //----- (00420974) -------------------------------------------------------- #error "420A8F: call analysis failed (funcsize=92)" //----- (00420AE6) -------------------------------------------------------- unsigned int __thiscall WXML::DOMLib::Tokenizer::GetTokens(char *this, _DWORD *a2, unsigned int *a3, _DWORD *a4) { int *v5; // ecx unsigned int v6; // ebx unsigned int v7; // edx int v8; // eax int v9; // eax unsigned int v10; // edx volatile signed __int32 **v11; // ecx int v12; // eax volatile signed __int32 **v13; // ecx unsigned int v15; // [esp+28h] [ebp-20h] unsigned int v16; // [esp+28h] [ebp-20h] int *v17; // [esp+2Ch] [ebp-1Ch] int *v18; // [esp+2Ch] [ebp-1Ch] int v19; // [esp+2Ch] [ebp-1Ch] v17 = (int *)(this + 8); WXML::DOMLib::Machine::Reset((_DWORD *)this + 2); v5 = v17; if ( *(_DWORD *)this ) { v7 = 0; v6 = 0; while ( *(_DWORD *)(*(_DWORD *)this + 4) > v7 ) { if ( v6 ) return v6; v15 = v7; v18 = v5; v8 = WXML::DOMLib::Machine::Feed(v5, *(_BYTE *)(**(_DWORD **)this + v7), (int)a2, a3, (int)a4, 0); v5 = v18; v6 = v8; v7 = v15 + 1; } if ( !v6 ) { v9 = WXML::DOMLib::Machine::Feed(v5, 0, (int)a2, a3, (int)a4, 0); v10 = 0; v19 = v9; while ( -1227133513 * ((a2[1] - *a2) >> 4) > v10 ) { v16 = v10; v11 = (volatile signed __int32 **)(112 * v10 + *a2 + 4); *(v11 - 1) = *(volatile signed __int32 **)this; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v11, *((volatile signed __int32 **)this + 1)); v10 = v16 + 1; } while ( -1227133513 * ((a4[1] - *a4) >> 4) > v6 ) { v12 = 112 * v6++; v13 = (volatile signed __int32 **)(v12 + *a4 + 4); *(v13 - 1) = *(volatile signed __int32 **)this; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v13, *((volatile signed __int32 **)this + 1)); } return v19; } } else { v6 = -1; std::string::operator=(a3, "FATAL: no source was set or failed to allocate space for input source"); } return v6; } //----- (00420C25) -------------------------------------------------------- void __cdecl __tcf_0_1() { std::ios_base::Init::~Init(); } //----- (00420C30) -------------------------------------------------------- int (__stdcall *__fastcall std::_Function_base::~_Function_base(int a1))(int, int, int, int, int, int) { int (__stdcall *result)(int, int, int, int, int, int); // eax int v2; // [esp+Ch] [ebp-10h] int v3; // [esp+10h] [ebp-Ch] int v4; // [esp+14h] [ebp-8h] result = *(int (__stdcall **)(int, int, int, int, int, int))(a1 + 8); if ( result ) return (int (__stdcall *)(int, int, int, int, int, int))result(a1, a1, 3, v2, v3, v4); return result; } // 420C4C: variable 'v2' is possibly undefined // 420C4C: variable 'v3' is possibly undefined // 420C4C: variable 'v4' is possibly undefined //----- (00420C51) -------------------------------------------------------- int __cdecl std::_Function_base::_Base_manager const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}>::_M_manager( void **a1, const void **a2, unsigned int a3) { void *v3; // eax const void *v4; // esi void (__cdecl *v6)(void *); // [esp+4h] [ebp-24h] if ( a3 == 2 ) { v4 = *a2; v3 = operator new((struct type_info *)0xC, v6); qmemcpy(v3, v4, 0xCu); goto LABEL_9; } if ( a3 <= 2 ) { if ( !a3 ) { *a1 = &`typeinfo for'WXML::Compiler::CalculateOutputChunkKeys(std::vector const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}; return 0; } v3 = (void *)*a2; LABEL_9: *a1 = v3; return 0; } if ( a3 == 3 && *a1 ) operator delete(*a1); return 0; } // 420C8A: variable 'v6' is possibly undefined // 52E5A0: using guessed type int *`typeinfo for'WXML::Compiler::CalculateOutputChunkKeys(std::vector const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}; //----- (00420CB4) -------------------------------------------------------- void __fastcall std::vector>::~vector(void ***a1) { void **v2; // edi void **i; // esi v2 = a1[1]; for ( i = *a1; v2 != i; i += 3 ) { if ( *i ) operator delete(*i); } if ( *a1 ) operator delete(*a1); } //----- (00420CF1) -------------------------------------------------------- unsigned int __cdecl std::_Function_handler const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}>::_M_invoke( int *a1, _DWORD *a2, int *a3) { unsigned int v3; // ebx int v4; // esi _DWORD *v5; // edi unsigned int result; // eax _DWORD *v7; // ecx _DWORD *v8; // edx _DWORD *v9; // eax int v10; // [esp+18h] [ebp-30h] _DWORD *v11; // [esp+1Ch] [ebp-2Ch] unsigned int v12[7]; // [esp+2Ch] [ebp-1Ch] BYREF v3 = 0; v4 = *a1; v12[0] = *a3; v10 = 12 * *a2; while ( 1 ) { v5 = (_DWORD *)(**(_DWORD **)v4 + v10); result = (v5[1] - *v5) >> 2; if ( result <= v3 ) break; v11 = (_DWORD *)(*v5 + 4 * v3); v7 = (_DWORD *)(**(_DWORD **)(v4 + 4) + 24 * *v11); v8 = v7 + 1; v9 = (_DWORD *)v7[2]; while ( v9 ) { if ( v9[4] < v12[0] ) { v9 = (_DWORD *)v9[3]; } else { v8 = v9; v9 = (_DWORD *)v9[2]; } } if ( v7 + 1 == v8 || v8[4] > v12[0] ) { std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( v7, v12); std::function::operator()(*(_DWORD *)(v4 + 8), *v11, v12[0]); } ++v3; } return result; } // 420CF1: using guessed type unsigned int var_1C[7]; //----- (00420D9A) -------------------------------------------------------- void __fastcall std::_Rb_tree,std::less,std::allocator>::~_Rb_tree( int a1) { std::_Rb_tree,std::less,std::allocator>::_M_erase(*(void ***)(a1 + 8)); } //----- (00420DAE) -------------------------------------------------------- void __fastcall std::vector>::~vector(void **a1) { char *v2; // edi char *i; // esi int v4; // ecx v2 = (char *)a1[1]; for ( i = (char *)*a1; v2 != i; i += 24 ) { v4 = (int)i; std::_Rb_tree,std::less,std::allocator>::~_Rb_tree(v4); } if ( *a1 ) operator delete(*a1); } //----- (00420DE4) -------------------------------------------------------- void __cdecl WXML::Compiler::CalculateOutputChunkKeys(_DWORD *a1, int a2, int a3, int a4, _DWORD *a5) { unsigned int v5; // edi int v6; // ebx unsigned int v7; // edx int v8; // esi struct type_info *v9; // ebx void **v10; // eax int v11; // ebx _DWORD *i; // ebx _DWORD *v13; // esi void **v14; // edi _DWORD *v15; // eax _DWORD *j; // ebx void **v17; // esi _DWORD *v18; // eax int v19; // esi int v20; // esi int v21; // esi int v22; // edx char *v23; // eax unsigned int m; // eax int v25; // ebx unsigned int v26; // edx int v27; // edi unsigned int n; // edx _BYTE *v29; // ebx unsigned int v30; // ecx _DWORD *v31; // eax int v32; // ebx char *v33; // edx _DWORD *v34; // eax int *v35; // ebx int *v36; // esi char *v37; // edi unsigned int v38; // eax unsigned int v39; // edx unsigned int v40; // edx _DWORD *v41; // eax void (__cdecl *v42)(void *); // ecx char *v43; // ebx int *v44; // edx int v45; // esi _DWORD *v46; // ebx _DWORD *v47; // edi _DWORD *v48; // edi _DWORD *v49; // edx int insert_hint_unique_pos; // esi _DWORD *v51; // edi char v52; // al void **v53; // edi void **v54; // ecx int v55; // esi _DWORD *v56; // eax _DWORD *v57; // eax _DWORD *v58; // edx int v59; // ecx _DWORD *v60; // edx int v61; // ecx int v62; // edx void *v63; // [esp+0h] [ebp-118h] void (__cdecl *v64)(void *); // [esp+4h] [ebp-114h] void (__cdecl *v65)(void *); // [esp+4h] [ebp-114h] _DWORD *v66; // [esp+24h] [ebp-F4h] int v67; // [esp+24h] [ebp-F4h] _DWORD *v68; // [esp+28h] [ebp-F0h] _DWORD *v69; // [esp+28h] [ebp-F0h] void **v70; // [esp+28h] [ebp-F0h] _DWORD *k; // [esp+2Ch] [ebp-ECh] unsigned int v72; // [esp+2Ch] [ebp-ECh] void **v73; // [esp+34h] [ebp-E4h] BYREF int v74; // [esp+38h] [ebp-E0h] int v75; // [esp+3Ch] [ebp-DCh] _DWORD *v76; // [esp+40h] [ebp-D8h] BYREF int v77; // [esp+44h] [ebp-D4h] int v78; // [esp+48h] [ebp-D0h] int v79[4]; // [esp+4Ch] [ebp-CCh] BYREF char *v80; // [esp+5Ch] [ebp-BCh] BYREF int v81; // [esp+60h] [ebp-B8h] char *v82; // [esp+64h] [ebp-B4h] int v83; // [esp+68h] [ebp-B0h] char *v84; // [esp+6Ch] [ebp-ACh] int v85; // [esp+70h] [ebp-A8h] BYREF int v86; // [esp+74h] [ebp-A4h] BYREF void *v87; // [esp+78h] [ebp-A0h] int *v88; // [esp+7Ch] [ebp-9Ch] int *v89; // [esp+80h] [ebp-98h] int v90; // [esp+84h] [ebp-94h] int v91; // [esp+88h] [ebp-90h] BYREF int v92; // [esp+8Ch] [ebp-8Ch] BYREF void *v93; // [esp+90h] [ebp-88h] int *v94; // [esp+94h] [ebp-84h] int *v95; // [esp+98h] [ebp-80h] int v96; // [esp+9Ch] [ebp-7Ch] void *v97[6]; // [esp+A0h] [ebp-78h] BYREF int *p_ii; // [esp+B8h] [ebp-60h] BYREF int v99; // [esp+BCh] [ebp-5Ch] int v100[4]; // [esp+C0h] [ebp-58h] BYREF unsigned int ii; // [esp+D0h] [ebp-48h] BYREF int v102; // [esp+D4h] [ebp-44h] BYREF _DWORD *v103; // [esp+D8h] [ebp-40h] BYREF int *v104; // [esp+DCh] [ebp-3Ch] int *v105; // [esp+E0h] [ebp-38h] int v106; // [esp+E4h] [ebp-34h] void *v107[12]; // [esp+E8h] [ebp-30h] BYREF v5 = 0; v88 = &v86; v86 = 0; v87 = 0; v89 = &v86; v90 = 0; while ( 1 ) { v6 = (a1[1] - *a1) >> 3; v7 = -1431655765 * v6; v8 = -1431655765 * v6; if ( v5 >= -1431655765 * v6 ) break; *std::map::operator[](&v85, 24 * v5 + *a1) = v5; ++v5; } if ( v7 > 0xAAAAAAA ) std::__throw_length_error((std::length_error *)"cannot create std::vector larger than max_size()"); v73 = 0; v9 = (struct type_info *)(4 * v6); v74 = 0; v75 = 0; if ( v7 ) v10 = (void **)operator new(v9, v64); else v10 = 0; v11 = (int)v9 + (_DWORD)v10; v73 = v10; v75 = v11; while ( v8 ) { *v10 = 0; --v8; v10 += 3; *(v10 - 2) = 0; *(v10 - 1) = 0; } v74 = v11; for ( i = *(_DWORD **)(a3 + 12); (_DWORD *)(a3 + 4) != i; i = (_DWORD *)std::_Rb_tree_increment(i) ) { std::string::substr((void **)&p_ii, i + 4, 2u, i[5] - 7); if ( &v86 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( &v85, (int)&p_ii) ) { v13 = (_DWORD *)i[10]; v68 = (_DWORD *)i[11]; while ( v13 != v68 ) { std::string::substr((void **)&ii, v13, 2u, v13[1] - 7); if ( &v86 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( &v85, (int)&ii) ) { v14 = &v73[3 * *std::map::operator[](&v85, (int)&p_ii)]; v15 = std::map::operator[](&v85, (int)&ii); std::vector::push_back((int)v14, v15); } v13 += 6; std::string::_M_dispose((void **)&ii); } } std::string::_M_dispose((void **)&p_ii); } for ( j = *(_DWORD **)(a4 + 12); (_DWORD *)(a4 + 4) != j; j = (_DWORD *)std::_Rb_tree_increment(j) ) { if ( &v86 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( &v85, (int)(j + 4)) ) { v66 = (_DWORD *)j[11]; for ( k = (_DWORD *)j[10]; k != v66; k += 6 ) { p_ii = v100; v99 = 0; LOBYTE(v100[0]) = 0; MMBizWxaAppComm::PathCombine(j + 4, k, (unsigned int *)&p_ii); if ( v99 && *(_BYTE *)p_ii == 47 ) { std::string::substr((void **)&ii, &p_ii, 1u, 0xFFFFFFFF); std::string::operator=(&p_ii, &ii); std::string::_M_dispose((void **)&ii); } if ( &v86 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( &v85, (int)&p_ii) ) { v17 = &v73[3 * *std::map::operator[](&v85, (int)(j + 4))]; v18 = std::map::operator[](&v85, (int)&p_ii); std::vector::push_back((int)v17, v18); } std::string::_M_dispose((void **)&p_ii); } } } v80 = 0; v81 = 0; v82 = 0; v19 = a1[1]; v83 = 0; v20 = v19 - *a1; v84 = 0; v21 = -1431655765 * (v20 >> 3); if ( v21 ) { v80 = (char *)operator new((struct type_info *)(4 * ((unsigned int)(v21 + 31) >> 5)), v64); v84 = &v80[4 * ((unsigned int)(v21 + 31) >> 5)]; v81 = 0; } v22 = v21 % 32; v23 = &v80[4 * (v21 / 32)]; if ( v21 % 32 < 0 ) { v22 += 32; v23 -= 4; } v82 = v23; v83 = v22; if ( v80 ) memset(v80, 255, v84 - v80); for ( m = 0; ; ++m ) { v25 = a1[1] - *a1; v26 = -1431655765 * (v25 >> 3); v72 = v26; if ( m >= v26 ) break; v27 = 3 * m; for ( n = 0; ; ++n ) { v29 = v73[v27]; if ( n >= ((_BYTE *)v73[v27 + 1] - v29) >> 2 ) break; v30 = *(_DWORD *)&v29[4 * n]; *(_DWORD *)&v80[4 * (v30 >> 5)] &= ~(1 << v30); } } if ( v26 > 0x5555555 ) std::__throw_length_error((std::length_error *)"cannot create std::vector larger than max_size()"); v76 = 0; v77 = 0; v78 = 0; if ( v26 ) v31 = operator new((struct type_info *)v25, v64); else v31 = 0; v32 = (int)v31 + v25; v76 = v31; v78 = v32; while ( v72 ) { v33 = (char *)(v31 + 1); --v72; v31 += 6; *(v31 - 5) = 0; *(v31 - 4) = 0; *(v31 - 3) = v33; *(v31 - 2) = v33; *(v31 - 1) = 0; } v77 = v32; v34 = operator new((struct type_info *)0xC, v64); v79[0] = (int)v34; *v34 = &v73; v34[1] = &v76; v34[2] = v79; v79[3] = (int)std::_Function_handler const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}>::_M_invoke; v79[2] = (int)std::_Function_base::_Base_manager const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}>::_M_manager; for ( ii = 0; ii < -1431655765 * ((a1[1] - *a1) >> 3); ++ii ) { if ( ((1 << ii) & *(_DWORD *)&v80[4 * (ii >> 5)]) != 0 ) { std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( &v76[6 * ii], &ii); std::function::operator()((int)v79, ii, ii); } } v96 = 0; v92 = 0; v93 = 0; v94 = &v92; v95 = &v92; while ( 1 ) { v35 = (int *)v93; if ( v72 >= -1431655765 * ((a1[1] - *a1) >> 3) ) break; v36 = &v92; v67 = 6 * v72; v37 = (char *)&v76[6 * v72]; while ( v35 ) { if ( std::operator<((int)(v35 + 4), (int)v37) ) { v35 = (int *)v35[3]; } else { v36 = v35; v35 = (int *)v35[2]; } } if ( v36 == &v92 || std::operator<((int)v37, (int)(v36 + 4)) ) { __gnu_cxx::__to_xstring( (void **)&ii, (int (__cdecl *)(unsigned __int8 *, int, int, char *))vsnprintf_1, 16, (int)"%u", v96); std::string::basic_string(&p_ii, a2); std::string::append(&p_ii, "chunk_"); v38 = v99 + v102; v39 = 15; if ( p_ii != v100 ) v39 = v100[0]; if ( v38 <= v39 ) goto LABEL_98; v40 = 15; if ( (_DWORD **)ii != &v103 ) v40 = (unsigned int)v103; if ( v38 > v40 ) { LABEL_98: v41 = std::string::append(&p_ii, (int)&ii); } else { v41 = std::string::insert(&ii, 0, (int)&p_ii); v65 = v42; } std::string::basic_string(v97, v41); std::string::_M_dispose((void **)&p_ii); std::string::_M_dispose((void **)&ii); v43 = (char *)&v76[v67]; v103 = 0; v104 = &v102; v105 = &v102; v44 = (int *)v76[v67 + 2]; v102 = 0; v106 = 0; if ( v44 ) { p_ii = (int *)ⅈ v57 = std::_Rb_tree,std::less,std::allocator>::_M_copy,std::less,std::allocator>::_Alloc_node>( v44, (int)&v102, (int)&p_ii); v58 = v57; do { v59 = (int)v58; v58 = (_DWORD *)v58[2]; } while ( v58 ); v104 = (int *)v59; v60 = v57; do { v61 = (int)v60; v60 = (_DWORD *)v60[3]; } while ( v60 ); v62 = *((_DWORD *)v43 + 5); v105 = (int *)v61; v103 = v57; v106 = v62; } std::string::basic_string(v107, (int)v97); v36 = (int *)std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_M_emplace_unique,std::string>>( &v91, &ii); std::string::_M_dispose(v107); std::_Rb_tree,std::less,std::allocator>::~_Rb_tree((int)&ii); std::string::_M_dispose(v97); } v45 = (int)(v36 + 10); v69 = a5 + 1; v46 = a5 + 1; v47 = (_DWORD *)a5[2]; while ( v47 ) { if ( (unsigned __int8)std::operator<((int)(v47 + 4), v45) ) { v47 = (_DWORD *)v47[3]; } else { v46 = v47; v47 = (_DWORD *)v47[2]; } } if ( v69 == v46 || (unsigned __int8)std::operator<(v45, (int)(v46 + 4)) ) { v48 = v46; v46 = operator new((struct type_info *)0x34, v65); std::string::basic_string(v46 + 4, v45); v46[10] = 0; v46[11] = 0; v46[12] = 0; insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( a5, v48, (int)(v46 + 4)); v51 = v49; if ( v49 ) { v52 = insert_hint_unique_pos != 0 || v69 == v49; if ( !v52 ) v52 = std::operator<((int)(v46 + 4), (int)(v49 + 4)); std::_Rb_tree_insert_and_rebalance(v52, v46, v51, v69); ++a5[5]; } else { v53 = (void **)v46[10]; v70 = (void **)v46[11]; while ( v70 != v53 ) { v54 = v53; v53 += 6; std::string::_M_dispose(v54); } if ( v46[10] ) operator delete((void *)v46[10]); std::string::_M_dispose((void **)v46 + 4); v63 = v46; v46 = (_DWORD *)insert_hint_unique_pos; operator delete(v63); } } LOBYTE(v100[0]) = 0; v99 = 0; v55 = *a1 + v67 * 4; p_ii = v100; std::string::reserve(&p_ii, *(_DWORD *)(v55 + 4) + 2); std::string::append(&p_ii, "./", 2u); std::string::append(&p_ii, v55); v56 = std::string::append(&p_ii, ".wxml"); std::string::basic_string(&ii, v56); if ( v46[11] == v46[12] ) { std::vector::_M_realloc_insert(v46 + 10, (char *)v46[11], &ii); } else { std::string::basic_string((_DWORD *)v46[11], &ii); v46[11] += 24; } std::string::_M_dispose((void **)&ii); std::string::_M_dispose((void **)&p_ii); ++v72; } std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_M_erase((void **)v93); std::_Function_base::~_Function_base((int)v79); std::vector>::~vector((void **)&v76); std::_Bvector_base>::_M_deallocate((int)&v80); std::vector>::~vector(&v73); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase((void **)v87); } // 420E9B: variable 'v64' is possibly undefined // 4214C4: variable 'v42' is possibly undefined // 4215BA: variable 'v65' is possibly undefined // 4215FF: variable 'v49' is possibly undefined // 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); //----- (00421910) -------------------------------------------------------- void __cdecl __tcf_1_3() { std::ios_base::Init::~Init(); } //----- (0042191A) -------------------------------------------------------- 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; } // 42191A: using guessed type unsigned int var_1C[7]; //----- (0042199B) -------------------------------------------------------- volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) { if ( _CRT_MT ) _InterlockedIncrement(result); else ++*result; return result; } // 78A9D4: using guessed type int _CRT_MT; //----- (004219AB) -------------------------------------------------------- std::ostream::sentry *__cdecl WXML::EXPRLib::OutputAsStringOrKeyWord(int a1, int *a2, int a3, _BYTE *a4) { std::ostream::sentry *v4; // ebx std::ostream::sentry *v5; // eax bool v6; // al std::ostream::sentry *v7; // eax std::ostream::sentry *v8; // eax std::ostream::sentry *v10; // [esp+30h] [ebp+8h] char *v11; // [esp+34h] [ebp+Ch] v4 = (std::ostream::sentry *)(a1 + 8); if ( std::operator==((int)a2, "true") ) { v5 = std::operator<<>(v4, WXML::EXPRLib::OPShort::CONST); v11 = ",true"; LABEL_8: v10 = v5; return std::operator<<>(v10, v11); } if ( std::operator==((int)a2, "false") ) { v5 = std::operator<<>(v4, WXML::EXPRLib::OPShort::CONST); v11 = ",false"; goto LABEL_8; } v6 = std::operator==((int)a2, "$global"); *a4 = 1; if ( !v6 ) { v7 = std::operator<<>(v4, WXML::EXPRLib::OPShort::NAME); v8 = std::operator<<>(v7, ",'"); v5 = std::operator<<(v8, a2); v11 = (char *)off_52E6CD; goto LABEL_8; } v10 = (std::ostream::sentry *)(a1 + 8); v11 = WXML::EXPRLib::OPShort::CS_GLOBAL[0]; return std::operator<<>(v10, v11); } // 515024: using guessed type char *WXML::EXPRLib::OPShort::CS_GLOBAL[11]; //----- (00421A86) -------------------------------------------------------- int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(int *this, int a2, int a3, _BYTE *a4) { _BYTE *v5; // edi std::ostream::sentry *v6; // esi char *Literal; // eax std::ostream::sentry *v8; // eax int v9; // ebx const char *v10; // eax std::ostream::sentry *v11; // eax std::ostream::sentry *v12; // eax std::ostream::sentry *v13; // eax std::ostream::sentry *v14; // eax std::ostream::sentry *v15; // eax unsigned int v16; // edi std::ostream::sentry *v17; // eax std::ostream::sentry *v18; // eax unsigned int v19; // edi std::ostream::sentry *v20; // eax std::ostream::sentry *v21; // eax std::ostream::sentry *v22; // eax std::ostream::sentry *v23; // eax std::ostream::sentry *v24; // edi char *v25; // eax std::ostream::sentry *v26; // eax std::ostream::sentry *v27; // eax std::ostream::sentry *v28; // eax unsigned int v29; // edi std::ostream::sentry *v30; // eax std::ostream::sentry *v31; // eax unsigned int v32; // edi std::ostream::sentry *v33; // eax std::ostream::sentry *v34; // eax unsigned int v35; // edi std::ostream::sentry *v36; // eax std::ostream::sentry *v37; // eax std::ostream::sentry *v38; // eax std::ostream::sentry *v39; // eax std::ostream::sentry *v40; // eax std::ostream::sentry *v41; // eax char *v43; // [esp+4h] [ebp-54h] _DWORD *v44; // [esp+1Ch] [ebp-3Ch] void *v45[12]; // [esp+28h] [ebp-30h] BYREF v5 = (_BYTE *)*this; v6 = (std::ostream::sentry *)(a2 + 8); std::operator<<>((std::ostream::sentry *)(a2 + 8), (char *)&off_52E6CD[2]); if ( *v5 == 36 ) { if ( std::operator==((int)this, "$VAR") ) { Literal = (char *)WXML::EXPRLib::Token::GetLiteral(this + 6); std::string::basic_string(v45, Literal); WXML::EXPRLib::OutputAsStringOrKeyWord(a2, (int *)v45, a3, a4); std::string::_M_dispose(v45); } else { v44 = this + 6; if ( std::operator==((int)this, "$STRING") ) { v8 = std::operator<<>(v6, WXML::EXPRLib::OPShort::CONST); std::operator<<>(v8, ",'"); v9 = *(_DWORD *)(this[9] + 4); v10 = WXML::EXPRLib::Token::GetLiteral(v44); WXML::Rewrite::ToStringCode((int)(v10 + 1), v9 - 2, a2); std::operator<<>(v6, (char *)off_52E6CD); } else { v11 = std::operator<<>(v6, WXML::EXPRLib::OPShort::CONST); std::operator<<>(v11, ","); v43 = (char *)WXML::EXPRLib::Token::GetLiteral(v44); std::operator<<>(v6, v43); } } goto LABEL_45; } if ( *v5 == 79 && v5[1] == 80 && v5[2] == 95 ) { if ( std::operator==((int)this, "OP_PATH") ) { if ( this[14] - this[13] == 8 ) { v12 = std::operator<<>(v6, (char *)&off_52E6CD[2]); v13 = std::operator<<>(v12, WXML::EXPRLib::OPShort::GET_FROM_ENV); std::operator<<>(v13, "],"); WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); } goto LABEL_45; } if ( std::operator==((int)this, "OP_LIST") ) { v14 = std::operator<<>(v6, (char *)&off_52E6CD[2]); v15 = std::operator<<>(v14, WXML::EXPRLib::OPShort::MAKE_LIST); std::operator<<>(v15, "]"); std::operator<<>(v6, ","); if ( this[13] == this[14] ) goto LABEL_45; LABEL_15: WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); goto LABEL_45; } if ( std::operator==((int)this, "OP_LIST_CONCAT") ) { v16 = 0; v17 = std::operator<<>(v6, (char *)&off_52E6CD[2]); v18 = std::operator<<>(v17, WXML::EXPRLib::OPShort::CON_LIST); std::operator<<>(v18, "]"); while ( (this[14] - this[13]) >> 3 > v16 ) { std::operator<<>(v6, ","); ++v16; WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); } goto LABEL_45; } if ( std::operator==((int)this, "OP_DICT_CONCAT") ) { v19 = 0; v20 = std::operator<<>(v6, (char *)&off_52E6CD[2]); v21 = std::operator<<>(v20, WXML::EXPRLib::OPShort::UNION_KV); std::operator<<>(v21, "]"); while ( (this[14] - this[13]) >> 3 > v19 ) { std::operator<<>(v6, ","); ++v19; WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); } goto LABEL_45; } if ( std::operator==((int)this, "OP_MAKE_DICT") ) { v22 = std::operator<<>(v6, (char *)&off_52E6CD[2]); v23 = std::operator<<>(v22, WXML::EXPRLib::OPShort::MAKE_KV); std::operator<<>(v23, "],"); v24 = std::operator<<>(v6, (char *)off_52E6CD); v25 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); v26 = std::operator<<>(v24, v25); std::operator<<>(v26, "',"); if ( (unsigned int)(this[14] - this[13]) <= 0xF ) { std::operator<<>(v6, (char *)&off_52E6CD[2]); std::operator<<>(v6, "[7],"); WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); std::operator<<>(v6, "]"); } else { WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); } goto LABEL_45; } if ( std::operator==((int)this, "OP_EXPAND") ) { v27 = std::operator<<>(v6, (char *)&off_52E6CD[2]); v28 = std::operator<<>(v27, WXML::EXPRLib::OPShort::EX_DICT); std::operator<<>(v28, "],"); goto LABEL_15; } if ( std::operator==((int)this, "OP_DICT") ) { v29 = 0; v30 = std::operator<<>(v6, (char *)&off_52E6CD[2]); v31 = std::operator<<>(v30, WXML::EXPRLib::OPShort::GET_NAME); std::operator<<>(v31, "]"); while ( (this[14] - this[13]) >> 3 > v29 ) { std::operator<<>(v6, ","); ++v29; WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); } } else if ( std::operator==((int)this, "OP_FUNC") ) { v32 = 0; v33 = std::operator<<>(v6, (char *)&off_52E6CD[2]); v34 = std::operator<<>(v33, WXML::EXPRLib::OPShort::DO_FUNC); std::operator<<>(v34, "]"); while ( (this[14] - this[13]) >> 3 > v32 ) { std::operator<<>(v6, ","); ++v32; WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); } } } else { v35 = 0; v36 = std::operator<<>(v6, (char *)&off_52E6CD[2]); v37 = std::operator<<>(v36, WXML::EXPRLib::OPShort::AOP); v38 = std::operator<<>(v37, ","); v39 = std::operator<<>(v38, (char *)off_52E6CD); v40 = std::operator<<(v39, this); v41 = std::operator<<>(v40, (char *)off_52E6CD); std::operator<<>(v41, "]"); std::operator<<>(v6, ","); while ( (this[14] - this[13]) >> 3 > v35 ) { if ( v35 ) std::operator<<>(v6, ","); ++v35; WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); } } LABEL_45: std::operator<<>(v6, "]"); return 0; } //----- (00422134) -------------------------------------------------------- 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; } //----- (00422140) -------------------------------------------------------- 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 += 28 ) { v4 = (volatile signed __int32 **)(i + 16); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); } if ( *a1 ) operator delete(*a1); } //----- (00422178) -------------------------------------------------------- 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); } //----- (004221AF) -------------------------------------------------------- _DWORD *__usercall std::__relocate_a_1>@( _DWORD *a1@, _DWORD *a2@, _DWORD *a3@) { _DWORD *v4; // esi _DWORD *v5; // ebx int v6; // edx int v7; // eax int v8; // eax volatile signed __int32 **v9; // ecx v4 = a3; v5 = a1; while ( v5 != a2 ) { *v4 = *v5; v6 = v5[2]; v4[1] = v5[1]; v4[2] = v6; v4[3] = v5[3]; v7 = v5[4]; v4[4] = v7; if ( v7 ) __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v7 + 4)); v8 = v5[5]; v9 = (volatile signed __int32 **)(v5 + 4); v4 += 7; v5 += 7; *(v4 - 2) = v8; *(v4 - 1) = *(v5 - 1); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v9); } return &a3[7 * ((920350135 * ((unsigned int)((char *)v5 - (char *)a1) >> 2)) & 0x3FFFFFFF)]; } //----- (0042222E) -------------------------------------------------------- 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; } //----- (0042225E) -------------------------------------------------------- int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderCode( int *this, WXML::EXPRLib::Token *a2, int *a3, int *a4, int *a5, int *a6, int *a7, char a8, int a9) { _BYTE *v10; // eax char v11; // dl std::ostream::sentry *v12; // esi const char *Literal; // edi 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 std::ostream::sentry *v19; // eax std::ostream::sentry *v20; // eax std::ostream::sentry *v21; // eax std::ostream::sentry *v22; // eax std::ostream::sentry *v23; // eax std::ostream::sentry *v24; // eax std::ostream::sentry *v25; // eax std::ostream::sentry *v26; // edi char *v27; // eax std::ostream::sentry *v28; // eax std::ostream::sentry *v29; // eax std::ostream::sentry *v30; // eax std::ostream::sentry *v31; // eax std::ostream::sentry *v32; // eax std::ostream::sentry *v33; // edi char *v34; // eax std::ostream::sentry *v35; // eax std::ostream::sentry *v36; // eax std::ostream::sentry *v37; // eax std::ostream::sentry *v38; // eax std::ostream::sentry *v39; // eax std::ostream::sentry *v40; // eax std::ostream::sentry *v41; // eax std::ostream::sentry *v42; // eax int v43; // edi const char *v44; // eax std::ostream::sentry *v45; // eax std::ostream::sentry *v46; // eax std::ostream::sentry *v47; // eax std::ostream::sentry *v48; // eax int v49; // edx const char *v50; // ebx std::ostream::sentry *v51; // esi int v52; // esi char *v53; // eax std::ostream::sentry *v54; // eax std::ostream::sentry *v55; // eax std::ostream::sentry *v56; // eax std::ostream::sentry *v57; // eax std::ostream::sentry *v58; // eax std::ostream::sentry *v59; // ebx char *v60; // eax std::ostream::sentry *v61; // eax std::ostream::sentry *v62; // eax std::ostream::sentry *v63; // eax std::ostream::sentry *v64; // eax std::ostream::sentry *v65; // eax unsigned int i; // ebx int v67; // edx std::ostream::sentry *v68; // eax std::ostream::sentry *v69; // eax std::ostream::sentry *v70; // eax std::ostream::sentry *v71; // eax unsigned int j; // ebx int v73; // edx std::ostream::sentry *v74; // eax char *v75; // eax std::ostream::sentry *v76; // eax std::ostream::sentry *v77; // eax char *v78; // eax std::ostream::sentry *v79; // eax std::ostream::sentry *v80; // eax std::ostream::sentry *v81; // eax char *v82; // eax std::ostream::sentry *v83; // eax std::ostream::sentry *v84; // eax std::ostream::sentry *v85; // eax char *v86; // eax std::ostream::sentry *v87; // eax int v88; // esi char *v89; // eax std::ostream::sentry *v90; // eax std::ostream::sentry *v91; // esi char *v92; // eax std::ostream::sentry *v93; // eax std::ostream::sentry *v94; // eax int *v95; // esi std::ostream::sentry *v96; // eax std::ostream::sentry *v97; // eax std::ostream::sentry *v98; // eax std::ostream::sentry *v99; // eax std::ostream::sentry *v100; // eax std::ostream::sentry *v101; // eax std::ostream::sentry *v102; // eax std::ostream::sentry *v103; // eax int *v104; // ecx std::ostream::sentry *v105; // eax std::ostream::sentry *v106; // eax std::ostream::sentry *v107; // eax std::ostream::sentry *v108; // eax std::ostream::sentry *v109; // eax std::ostream::sentry *v110; // eax std::ostream::sentry *v111; // esi std::ostream::sentry *v112; // eax std::ostream::sentry *v113; // eax std::ostream::sentry *v114; // eax std::ostream::sentry *v115; // eax std::ostream::sentry *v116; // eax std::ostream::sentry *v117; // eax std::ostream::sentry *v118; // eax std::ostream::sentry *v119; // eax std::ostream::sentry *v120; // eax std::ostream::sentry *v121; // eax std::ostream::sentry *v122; // eax std::ostream::sentry *v123; // eax std::ostream::sentry *v124; // eax std::ostream::sentry *v125; // eax std::ostream::sentry *v126; // eax std::ostream::sentry *v127; // eax std::ostream::sentry *v128; // eax std::ostream::sentry *v129; // eax std::ostream::sentry *v130; // eax std::ostream::sentry *v131; // eax std::ostream::sentry *v132; // eax std::ostream::sentry *v133; // eax std::ostream::sentry *v134; // eax std::ostream::sentry *v135; // eax std::ostream::sentry *v136; // eax std::ostream::sentry *v137; // eax std::ostream::sentry *v138; // eax std::ostream::sentry *v139; // eax std::ostream::sentry *v140; // eax std::ostream::sentry *v141; // eax std::ostream::sentry *v142; // eax std::ostream::sentry *v143; // eax std::ostream::sentry *v144; // eax std::ostream::sentry *v145; // eax std::ostream::sentry *v146; // eax std::ostream::sentry *v147; // eax std::ostream::sentry *v148; // eax std::ostream::sentry *v149; // eax std::ostream::sentry *v150; // eax std::ostream::sentry *v151; // eax std::ostream::sentry *v152; // eax std::ostream::sentry *v153; // eax std::ostream::sentry *v154; // eax std::ostream::sentry *v155; // eax std::ostream::sentry *v156; // eax std::ostream::sentry *v157; // eax std::ostream::sentry *v158; // eax std::ostream::sentry *v159; // eax std::ostream::sentry *v160; // eax std::ostream::sentry *v161; // eax int v162; // eax std::ostream::sentry *v163; // eax std::ostream::sentry *v164; // eax std::ostream::sentry *v165; // eax std::ostream::sentry *v166; // eax std::ostream::sentry *v167; // eax std::ostream::sentry *v168; // eax std::ostream::sentry *v169; // eax std::ostream::sentry *v170; // eax std::ostream::sentry *v171; // eax std::ostream::sentry *v172; // eax std::ostream::sentry *v173; // eax char *v175; // [esp+4h] [ebp-94h] char *v176; // [esp+4h] [ebp-94h] std::ostream::sentry *v177; // [esp+28h] [ebp-70h] std::ostream::sentry *v178; // [esp+28h] [ebp-70h] std::ostream::sentry *v179; // [esp+28h] [ebp-70h] std::ostream::sentry *v180; // [esp+28h] [ebp-70h] std::ostream::sentry *v181; // [esp+28h] [ebp-70h] int v182[2]; // [esp+38h] [ebp-60h] BYREF char v183; // [esp+40h] [ebp-58h] BYREF int v184; // [esp+50h] [ebp-48h] BYREF int v185; // [esp+54h] [ebp-44h] char v186[16]; // [esp+58h] [ebp-40h] BYREF int v187; // [esp+68h] [ebp-30h] BYREF int v188; // [esp+6Ch] [ebp-2Ch] char v189[40]; // [esp+70h] [ebp-28h] BYREF v10 = (_BYTE *)*this; v11 = *(_BYTE *)*this; if ( v11 == 36 ) { v177 = (std::ostream::sentry *)(this + 6); v12 = (WXML::EXPRLib::Token *)((char *)a2 + 8); if ( std::operator==((int)this, "$VAR") ) { Literal = WXML::EXPRLib::Token::GetLiteral(v177); if ( !strcmp(Literal, "true") ) { v14 = std::operator<<>(v12, "var "); v15 = std::operator<<(v14, a3); v16 = std::operator<<>(v15, "=true"); LABEL_7: std::operator<<>(v16, a8); return 0; } if ( !strcmp(Literal, "false") ) { v17 = std::operator<<>(v12, "var "); v18 = std::operator<<(v17, a3); v16 = std::operator<<>(v18, "=false"); goto LABEL_7; } if ( !strcmp(Literal, "$global") ) { v19 = std::operator<<>(v12, "var "); v20 = std::operator<<(v19, a3); v21 = std::operator<<>(v20, "="); v16 = std::operator<<(v21, a6); goto LABEL_7; } v22 = std::operator<<>(v12, "var "); v23 = std::operator<<(v22, a3); std::operator<<>(v23, a8); v24 = std::operator<<>(v12, "if(typeof("); v25 = std::operator<<(v24, a5); v26 = std::operator<<>(v25, "."); v27 = (char *)WXML::EXPRLib::Token::GetLiteral(v177); v28 = std::operator<<>(v26, v27); v29 = std::operator<<>(v28, ")!='undefined')"); v30 = std::operator<<(v29, a3); v31 = std::operator<<>(v30, "="); v32 = std::operator<<(v31, a5); v33 = std::operator<<>(v32, "."); v34 = (char *)WXML::EXPRLib::Token::GetLiteral(v177); v35 = std::operator<<>(v33, v34); std::operator<<>(v35, a8); v36 = std::operator<<>(v12, "else "); v37 = std::operator<<(v36, a3); v38 = std::operator<<>(v37, "="); v39 = std::operator<<(v38, a4); v40 = std::operator<<>(v39, "."); } else { if ( std::operator==((int)this, "$STRING") ) { v41 = std::operator<<>(v12, "var "); v42 = std::operator<<(v41, a3); std::operator<<>(v42, "=\""); v43 = *(_DWORD *)(this[9] + 4); v44 = WXML::EXPRLib::Token::GetLiteral(v177); WXML::Rewrite::ToStringCode((int)(v44 + 1), v43 - 2, (int)a2); v175 = "\""; LABEL_13: v16 = std::operator<<>(v12, v175); goto LABEL_7; } v45 = std::operator<<>(v12, "var "); v46 = std::operator<<(v45, a3); v40 = std::operator<<>(v46, "="); } v12 = v40; v175 = (char *)WXML::EXPRLib::Token::GetLiteral(v177); goto LABEL_13; } if ( v11 != 79 || v10[1] != 80 || v10[2] != 95 ) { if ( std::operator==((int)this, "?:") ) { v182[1] = 0; v182[0] = (int)&v183; v183 = 0; WXML::NameAllocator::GetNextName(a7, v182); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)v182, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v122 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v123 = std::operator<<(v122, a3); std::endl>(v123); v124 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "if("); v125 = std::operator<<(v124, v182); v126 = std::operator<<>(v125, "){"); std::operator<<>(v126, a8); v185 = 0; v184 = (int)v186; v186[0] = 0; WXML::NameAllocator::GetNextName(a7, &v184); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v127 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v128 = std::operator<<>(v127, "="); v129 = std::operator<<(v128, &v184); v130 = std::operator<<>(v129, "}"); std::operator<<>(v130, a8); v131 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "else{"); std::operator<<>(v131, a8); v188 = 0; v187 = (int)v189; v189[0] = 0; WXML::NameAllocator::GetNextName(a7, &v187); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v132 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v133 = std::operator<<>(v132, "="); v134 = std::operator<<(v133, &v187); v135 = std::operator<<>(v134, "}"); std::operator<<>(v135, a8); std::string::_M_dispose((void **)&v187); std::string::_M_dispose((void **)&v184); v104 = v182; goto LABEL_79; } if ( std::operator==((int)this, "&&") ) { v185 = 0; v184 = (int)v186; v186[0] = 0; WXML::NameAllocator::GetNextName(a7, &v184); v187 = (int)v189; v188 = 0; v189[0] = 0; WXML::NameAllocator::GetNextName(a7, &v187); v136 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v137 = std::operator<<(v136, a3); std::endl>(v137); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v138 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "if(!"); v139 = std::operator<<(v138, &v184); v140 = std::operator<<>(v139, ")"); v141 = std::operator<<(v140, a3); v142 = std::operator<<>(v141, "="); v143 = std::operator<<(v142, &v184); std::operator<<>(v143, a8); v144 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "else{"); std::operator<<>(v144, a8); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v145 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v146 = std::operator<<>(v145, "="); v147 = std::operator<<(v146, &v187); v148 = std::operator<<>(v147, "}"); std::operator<<>(v148, a8); } else { if ( !std::operator==((int)this, "||") ) { v162 = this[14] - this[13]; if ( v162 == 16 ) { v185 = 0; v184 = (int)v186; v186[0] = 0; WXML::NameAllocator::GetNextName(a7, &v184); v187 = (int)v189; v188 = 0; v189[0] = 0; WXML::NameAllocator::GetNextName(a7, &v187); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v163 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v164 = std::operator<<(v163, a3); v165 = std::operator<<>(v164, "="); v95 = &v184; v166 = std::operator<<(v165, &v184); v167 = std::operator<<(v166, this); v168 = std::operator<<(v167, &v187); std::operator<<>(v168, a8); std::string::_M_dispose((void **)&v187); } else { if ( v162 != 8 ) return 0; v188 = 0; v187 = (int)v189; v189[0] = 0; WXML::NameAllocator::GetNextName(a7, &v187); v95 = &v187; WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v169 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v170 = std::operator<<(v169, a3); v171 = std::operator<<>(v170, "="); v172 = std::operator<<(v171, this); v173 = std::operator<<(v172, &v187); std::operator<<>(v173, a8); } goto LABEL_78; } v185 = 0; v184 = (int)v186; v186[0] = 0; WXML::NameAllocator::GetNextName(a7, &v184); v187 = (int)v189; v188 = 0; v189[0] = 0; WXML::NameAllocator::GetNextName(a7, &v187); v149 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v150 = std::operator<<(v149, a3); std::endl>(v150); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v151 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "if("); v152 = std::operator<<(v151, &v184); v153 = std::operator<<>(v152, ")"); v154 = std::operator<<(v153, a3); v155 = std::operator<<>(v154, "="); v156 = std::operator<<(v155, &v184); std::operator<<>(v156, a8); v157 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "else{"); std::operator<<>(v157, a8); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v158 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v159 = std::operator<<>(v158, "="); v160 = std::operator<<(v159, &v187); v161 = std::operator<<>(v160, "}"); std::operator<<>(v161, a8); } LABEL_73: std::string::_M_dispose((void **)&v187); v104 = &v184; goto LABEL_79; } if ( v10[3] == 80 && v10[4] == 65 ) { if ( a3[1] ) { v47 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v48 = std::operator<<(v47, a3); std::operator<<>(v48, "="); } v49 = this[13]; if ( this[14] - v49 == 8 ) { v50 = WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)v49 + 24)); v51 = (WXML::EXPRLib::Token *)((char *)a2 + 8); if ( !strcmp(v50, "true") ) { std::operator<<>(v51, "true"); goto LABEL_34; } if ( !strcmp(v50, "false") ) { std::operator<<>(v51, "false"); goto LABEL_34; } if ( !strcmp(v50, "$global") ) { std::operator<<(v51, a6); LABEL_34: if ( a3[1] ) std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), a8); return 0; } } if ( a9 ) { v52 = *(_DWORD *)(a9 + 4); v187 = (int)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); if ( v52 == std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( *(_DWORD *)a9, *(_DWORD *)(a9 + 4), (char **)&v187) ) { v53 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); std::string::basic_string((void **)&v187, v53); std::vector::emplace_back((void ***)a9, &v187); std::string::_M_dispose((void **)&v187); } } v54 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "_s("); v55 = std::operator<<(v54, a5); v56 = std::operator<<>(v55, ","); v57 = std::operator<<(v56, a4); v58 = std::operator<<>(v57, ","); v59 = std::operator<<>(v58, (char *)off_52E6CD); v60 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); v61 = std::operator<<>(v59, v60); v62 = std::operator<<>(v61, "')"); std::operator<<>(v62, a8); goto LABEL_34; } if ( !std::operator==((int)this, "OP_LIST") ) { if ( std::operator==((int)this, "OP_LIST_CONCAT") ) { for ( i = 0; ; ++i ) { v67 = this[13]; if ( i >= (this[14] - v67) >> 3 ) break; if ( std::operator==(*(_DWORD *)(v67 + 8 * i), "OP_LIST_CONCAT") ) { WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)a3, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); } else { v188 = 0; v187 = (int)v189; v189[0] = 0; WXML::NameAllocator::GetNextName(a7, &v187); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v68 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v69 = std::operator<<>(v68, ".push("); v70 = std::operator<<(v69, &v187); v71 = std::operator<<>(v70, ")"); std::operator<<>(v71, a8); std::string::_M_dispose((void **)&v187); } } return 0; } if ( std::operator==((int)this, "OP_DICT_CONCAT") ) { for ( j = 0; ; ++j ) { v73 = this[13]; if ( j >= (this[14] - v73) >> 3 ) break; if ( std::operator==(*(_DWORD *)(v73 + 8 * j), "$VAR") ) { v74 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v178 = std::operator<<>(v74, "[\""); v75 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * j) + 24)); v76 = std::operator<<>(v178, v75); std::operator<<>(v76, "\"]="); v77 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a5); v179 = std::operator<<>(v77, "."); v78 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * j) + 24)); v79 = std::operator<<>(v179, v78); v80 = std::operator<<>(v79, "?"); v81 = std::operator<<(v80, a5); v180 = std::operator<<>(v81, "."); v82 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * j) + 24)); v83 = std::operator<<>(v180, v82); v84 = std::operator<<>(v83, ":"); v85 = std::operator<<(v84, a4); v181 = std::operator<<>(v85, "."); v86 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * j) + 24)); v87 = std::operator<<>(v181, v86); std::operator<<>(v87, a8); } else { WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)a3, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); } } return 0; } if ( std::operator==((int)this, "OP_MAKE_DICT") ) { v185 = 0; v184 = (int)v186; v186[0] = 0; WXML::NameAllocator::GetNextName(a7, &v184); if ( (unsigned int)(this[14] - this[13]) <= 0xF ) { WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); if ( a9 ) { v88 = *(_DWORD *)(a9 + 4); v187 = (int)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); if ( v88 == std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( *(_DWORD *)a9, *(_DWORD *)(a9 + 4), (char **)&v187) ) { v89 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); std::string::basic_string((void **)&v187, v89); std::vector::emplace_back((void ***)a9, &v187); std::string::_M_dispose((void **)&v187); } } } else { WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); } v90 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v91 = std::operator<<>(v90, "[\""); v92 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); v93 = std::operator<<>(v91, v92); v94 = std::operator<<>(v93, "\"]="); v95 = &v184; v96 = std::operator<<(v94, &v184); std::operator<<>(v96, a8); LABEL_78: v104 = v95; goto LABEL_79; } if ( std::operator==((int)this, "OP_EXPAND") ) { v188 = 0; v187 = (int)v189; v189[0] = 0; WXML::NameAllocator::GetNextName(a7, &v187); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v97 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "{var ks=Object.keys("); v98 = std::operator<<(v97, &v187); std::operator<<>(v98, "||{});"); v99 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "for(var k in ks){"); v100 = std::operator<<(v99, a3); v101 = std::operator<<>(v100, "[ks[k]]="); v102 = std::operator<<(v101, &v187); v103 = std::operator<<>(v102, "[ks[k]]}}"); std::endl>(v103); v104 = &v187; LABEL_79: std::string::_M_dispose((void **)v104); return 0; } if ( !std::operator==((int)this, "OP_DICT") ) return 0; v185 = 0; v184 = (int)v186; v186[0] = 0; v187 = (int)v189; v188 = 0; v189[0] = 0; WXML::NameAllocator::GetNextName(a7, &v184); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); if ( std::operator==(*(_DWORD *)(this[13] + 8), "$VAR") ) { v105 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v106 = std::operator<<(v105, a3); v107 = std::operator<<>(v106, "="); v108 = std::operator<<(v107, &v184); v109 = std::operator<<>(v108, "?"); v110 = std::operator<<(v109, &v184); v111 = std::operator<<>(v110, "."); v176 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8) + 24)); v112 = std::operator<<>(v111, v176); } else { WXML::NameAllocator::GetNextName(a7, &v187); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v113 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v114 = std::operator<<(v113, a3); v115 = std::operator<<>(v114, "="); v116 = std::operator<<(v115, &v184); v117 = std::operator<<>(v116, "?"); v118 = std::operator<<(v117, &v184); v119 = std::operator<<>(v118, (char *)&off_52E6CD[2]); v120 = std::operator<<(v119, &v187); v112 = std::operator<<>(v120, "]"); } v121 = std::operator<<>(v112, ":undefined"); std::operator<<>(v121, a8); goto LABEL_73; } v63 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v64 = std::operator<<(v63, a3); v65 = std::operator<<>(v64, (char *)off_52E79F); std::operator<<>(v65, a8); if ( this[13] != this[14] ) WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)a3, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); return 0; } //----- (0042391C) -------------------------------------------------------- int __userpurge WXML::EXPRLib::Parser::Parse@( int a1@, void (__cdecl *a2)(void *)@, char **a3, int a4, int a5, int a6, unsigned int *a7, char a8) { void (__cdecl *v8)(void *); // edx _DWORD *v9; // esi char *v10; // ecx int v11; // edx _DWORD *v12; // ebx WXML::EXPRLib::Token *v13; // esi _DWORD *v14; // eax int v15; // ebx int AttrListNTType; // eax int v17; // eax int v18; // edx int v19; // eax int v20; // eax _DWORD *v21; // ebx char *TokenName; // eax _DWORD *v23; // ebx char **v24; // ebx int i; // eax char *v26; // eax volatile signed __int32 **v27; // ecx _DWORD *v28; // ebx _DWORD *v29; // eax _DWORD *v30; // eax _DWORD *v31; // esi int j; // ebx _DWORD *v33; // eax char *v34; // esi volatile signed __int32 **v35; // ebx volatile signed __int32 **k; // esi volatile signed __int32 **v37; // ecx volatile signed __int32 **v38; // ecx char *v39; // ebx char *v40; // eax char *v41; // esi int v42; // ebx char *v43; // edi char *v44; // eax char *v45; // eax char *v46; // eax bool v47; // bl char *Literal; // eax char *v49; // eax char *v50; // eax char *v51; // eax volatile signed __int32 *v52; // edx char *v53; // esi int m; // ebx int v55; // ecx volatile signed __int32 **v56; // eax WXML::EXPRLib::TransitTable *v58; // [esp+0h] [ebp-F8h] volatile signed __int32 *v59; // [esp+0h] [ebp-F8h] volatile signed __int32 *v60; // [esp+0h] [ebp-F8h] const WXML::EXPRLib::Token *v61; // [esp+4h] [ebp-F4h] void (__cdecl *v62)(void *); // [esp+4h] [ebp-F4h] void (__cdecl *v63)(void *); // [esp+4h] [ebp-F4h] const WXML::EXPRLib::Token *v64; // [esp+4h] [ebp-F4h] int v65; // [esp+1Ch] [ebp-DCh] int v66; // [esp+20h] [ebp-D8h] char *v67; // [esp+20h] [ebp-D8h] unsigned int v68; // [esp+24h] [ebp-D4h] int Tokens; // [esp+28h] [ebp-D0h] int v71; // [esp+38h] [ebp-C0h] BYREF WXML::EXPRLib::Token *v72; // [esp+3Ch] [ebp-BCh] BYREF volatile signed __int32 *v73; // [esp+40h] [ebp-B8h] BYREF int v74; // [esp+44h] [ebp-B4h] BYREF volatile signed __int32 *v75; // [esp+48h] [ebp-B0h] BYREF _DWORD *v76; // [esp+4Ch] [ebp-ACh] volatile signed __int32 *v77; // [esp+50h] [ebp-A8h] BYREF char *v78; // [esp+54h] [ebp-A4h] BYREF int v79; // [esp+58h] [ebp-A0h] int v80; // [esp+5Ch] [ebp-9Ch] void *v81[6]; // [esp+60h] [ebp-98h] BYREF char **v82; // [esp+78h] [ebp-80h] BYREF volatile signed __int32 *v83[5]; // [esp+7Ch] [ebp-7Ch] BYREF char **v84; // [esp+90h] [ebp-68h] BYREF volatile signed __int32 *v85[5]; // [esp+94h] [ebp-64h] BYREF int v86[4]; // [esp+A8h] [ebp-50h] BYREF char v87; // [esp+B8h] [ebp-40h] BYREF char *v88; // [esp+C4h] [ebp-34h] BYREF char v89[8]; // [esp+C8h] [ebp-30h] BYREF char *v90; // [esp+D0h] [ebp-28h] volatile signed __int32 *v91[9]; // [esp+D4h] [ebp-24h] BYREF while ( *(_DWORD *)(a1 + 24) != *(_DWORD *)(a1 + 8) ) std::deque>::pop_back((_DWORD *)a1); while ( *(_DWORD *)(a1 + 64) != *(_DWORD *)(a1 + 48) ) std::deque>::pop_back((_DWORD *)(a1 + 40)); if ( !(_BYTE)`guard variable for'WXML::EXPRLib::TransitTable::GetInstance(void)::ret && __cxa_guard_acquire(&`guard variable for'WXML::EXPRLib::TransitTable::GetInstance(void)::ret) ) { dword_516B80 = 0; dword_516B84 = 0; dword_516B88 = (int)&dword_516B80; dword_516B8C = (int)&dword_516B80; dword_516B90 = 0; byte_516B94 = 0; __cxa_guard_release(&`guard variable for'WXML::EXPRLib::TransitTable::GetInstance(void)::ret); atexit(__tcf_0_2); } WXML::EXPRLib::TransitTable::Init(v58); WXML::EXPRLib::Tokenizer::Tokenizer(v81, *a3, a4, a5, a6); v78 = 0; v79 = 0; v80 = 0; Tokens = WXML::EXPRLib::Tokenizer::GetTokens((int *)v81, (int)&v78, a7); v61 = (const WXML::EXPRLib::Token *)v8; if ( Tokens ) goto LABEL_76; if ( v78 == (char *)v79 ) { v9 = operator new((struct type_info *)0x40, v8); memset(v9, 0, 0x40u); *v9 = v9 + 2; WXML::EXPRLib::Token::Token(v9 + 6); v9[13] = 0; v9[14] = 0; v9[15] = 0; zcc::shared_ptr::shared_ptr(v9); std::__shared_ptr::operator=( (volatile signed __int32 **)(a1 + 80), (volatile signed __int32 **)&v88); v10 = v89; goto LABEL_75; } WXML::EXPRLib::Token::Token(v86); v86[0] = 5; if ( v79 == v80 ) { std::vector::_M_realloc_insert( &v78, (char *)v79, (WXML::EXPRLib::Token *)v86); v62 = a2; } else { WXML::EXPRLib::Token::Token(v11, (_DWORD *)v79, (WXML::EXPRLib::Token *)v86, v61); v79 += 28; } v12 = operator new((struct type_info *)0x38, v62); *v12 = &off_537860; v12[1] = v12 + 3; v12[2] = 0; *((_BYTE *)v12 + 12) = 0; WXML::EXPRLib::Token::Token(v12 + 7); zcc::shared_ptr::shared_ptr(&v72, (int)v12); v13 = v72; std::string::basic_string((void **)&v88, "$"); std::string::_M_assign((int)v13 + 4, (int)&v88); std::string::_M_dispose((void **)&v88); std::deque>::push_back((_DWORD *)a1, &v72); v14 = operator new((struct type_info *)8, v63); *v14 = &off_537824; v14[1] = 0; zcc::shared_ptr::shared_ptr(&v74, (int)v14); v15 = v74; if ( a8 ) AttrListNTType = WXML::EXPRLib::TransitTable::GetAttrListNTType(); else AttrListNTType = WXML::EXPRLib::TransitTable::GetExprNTType(); *(_DWORD *)(v15 + 4) = AttrListNTType; std::deque>::push_back((_DWORD *)a1, &v74); v76 = 0; v77 = 0; v68 = 0; while ( 1 ) { v17 = *(_DWORD *)(a1 + 24); if ( *(_DWORD *)(a1 + 8) == v17 ) break; if ( v17 == *(_DWORD *)(a1 + 28) ) v17 = *(_DWORD *)(*(_DWORD *)(a1 + 36) - 4) + 512; v59 = *(volatile signed __int32 **)(v17 - 4); v76 = *(_DWORD **)(v17 - 8); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(&v77, v59); v19 = WXML::EXPRLib::Token::Token(v18, &v88, (WXML::EXPRLib::Token *)&v78[28 * v68], v64); v20 = (*(int (__thiscall **)(_DWORD *, int))(*v76 + 8))(v76, v19); v21 = v76; if ( v20 == 1 ) { TokenName = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v88); if ( !std::operator==((int)(v21 + 1), TokenName) || v68 >= -1227133513 * ((v79 - (int)v78) >> 2) ) { std::string::operator=(a7, "error at token `"); goto LABEL_64; } ++v68; std::deque>::pop_back((_DWORD *)a1); if ( (unsigned int)(v88 - 1) <= 3 ) { v23 = operator new((struct type_info *)0x40, (void (__cdecl *)(void *))v64); *v23 = v23 + 2; v23[1] = 0; *((_BYTE *)v23 + 8) = 0; WXML::EXPRLib::Token::Token(v23 + 6); v23[13] = 0; v23[14] = 0; v23[15] = 0; zcc::shared_ptr::shared_ptr(v23); v24 = v84; v84[6] = v88; for ( i = 0; i != 8; ++i ) *((_BYTE *)v24 + i + 28) = v89[i]; v24[9] = v90; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v24 + 10, v91[0]); v24[11] = (char *)v91[1]; v24[12] = (char *)v91[2]; v26 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v88); std::string::operator=((unsigned int *)v84, v26); std::deque>::push_back((_DWORD *)(a1 + 40), &v84); v27 = v85; LABEL_37: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v27); } } else { if ( (*(int (__fastcall **)(_DWORD *))(*v76 + 8))(v76) == 3 ) { std::deque>::pop_back((_DWORD *)a1); v28 = v76; v66 = v76[7]; if ( v66 == 2 ) { if ( *(_DWORD *)(a1 + 48) == *(_DWORD *)(a1 + 64) ) { std::string::operator=(a7, "interal error: "); std::string::operator+=(a7, "1001"); std::string::operator+=(a7, ", expr: `"); std::string::operator+=(a7, (int)a3); std::string::operator+=(a7, "`"); Tokens = 1001; goto LABEL_70; } v29 = (_DWORD *)std::deque>::back((_DWORD *)(a1 + 40)); std::__shared_ptr::__shared_ptr(&v82, v29); std::deque>::pop_back((_DWORD *)(a1 + 40)); if ( *(_DWORD *)(a1 + 64) == *(_DWORD *)(a1 + 48) ) { std::string::operator=(a7, "interal error: "); std::string::operator+=(a7, "1002"); std::string::operator+=(a7, ", expr: `"); std::string::operator+=(a7, (int)a3); std::string::operator+=(a7, "`"); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v83); Tokens = 1002; goto LABEL_70; } v30 = (_DWORD *)std::deque>::back((_DWORD *)(a1 + 40)); std::__shared_ptr::__shared_ptr(&v84, v30); std::vector>::push_back(v84 + 13, &v82); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v85); } else { v65 = v76[8]; v31 = operator new((struct type_info *)0x40, (void (__cdecl *)(void *))v64); memset(v31, 0, 0x40u); *v31 = v31 + 2; WXML::EXPRLib::Token::Token(v31 + 6); v31[13] = 0; v31[14] = 0; v31[15] = 0; zcc::shared_ptr::shared_ptr(v31); std::string::_M_assign((int)v82, (int)(v28 + 1)); for ( j = 0; j < v65; ++j ) { if ( *(_DWORD *)(a1 + 64) == *(_DWORD *)(a1 + 48) ) { std::string::operator=(a7, "interal error: "); std::string::operator+=(a7, "1003"); std::string::operator+=(a7, ", expr: `"); std::string::operator+=(a7, (int)a3); std::string::operator+=(a7, "`"); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v83); Tokens = 1003; goto LABEL_70; } v33 = (_DWORD *)std::deque>::back((_DWORD *)(a1 + 40)); std::vector>::push_back(v82 + 13, v33); std::deque>::pop_back((_DWORD *)(a1 + 40)); } if ( !v66 ) { v34 = v82[14]; v35 = (volatile signed __int32 **)v82[13]; if ( v35 != (volatile signed __int32 **)v34 ) { for ( k = (volatile signed __int32 **)(v34 - 8); k > v35; k -= 2 ) { std::__shared_ptr::__shared_ptr(&v84, v35); v37 = v35; v35 += 2; std::__shared_ptr::operator=(v37, k); v38 = k; std::__shared_ptr::operator=( v38, (volatile signed __int32 **)&v84); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v85); } } } std::deque>::push_back((_DWORD *)(a1 + 40), &v82); } v27 = v83; goto LABEL_37; } if ( (*(int (__fastcall **)(_DWORD *))(*v76 + 8))(v76) == 2 ) { v71 = v76[1]; v67 = std::map>>::operator[]( &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, &v71) + 4; v39 = std::map>>::operator[]( &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, &v71); v40 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v88); std::string::basic_string((void **)&v82, v40); v41 = v39 + 4; v42 = *((_DWORD *)v39 + 2); v43 = v41; while ( v42 ) { if ( (unsigned __int8)std::operator<(v42 + 16, (int)&v82) ) { v42 = *(_DWORD *)(v42 + 12); } else { v43 = (char *)v42; v42 = *(_DWORD *)(v42 + 8); } } if ( v41 != v43 && (unsigned __int8)std::operator<((int)&v82, (int)(v43 + 16)) ) v43 = v41; if ( v67 == v43 ) { v47 = 1; } else { v44 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v88); std::string::basic_string((void **)&v84, v44); v45 = std::map>>::operator[]( &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, &v71); v46 = std::map>::operator[](v45, &v84); v47 = *((_DWORD *)v46 + 1) == *(_DWORD *)v46; std::string::_M_dispose((void **)&v84); } std::string::_M_dispose((void **)&v82); if ( v47 ) { std::string::operator=(a7, "unexpected token `"); LABEL_64: Literal = (char *)WXML::EXPRLib::Token::GetLiteral(&v88); std::string::operator+=(a7, Literal); std::string::operator+=(a7, "`"); Tokens = -1; LABEL_70: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v91); goto LABEL_74; } std::deque>::pop_back((_DWORD *)a1); v49 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v88); std::string::basic_string((void **)&v84, v49); v50 = std::map>>::operator[]( &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, &v71); v51 = std::map>::operator[](v50, &v84); v60 = v52; v53 = v51; std::string::_M_dispose((void **)&v84); for ( m = (*(_DWORD *)(*(_DWORD *)v53 + 4) - **(_DWORD **)v53) >> 3; ; v60 = std::deque>::push_back( (_DWORD *)a1, (_DWORD *)(**(_DWORD **)v53 + 8 * m)) ) { if ( --m >= 0 ) { v55 = *(_DWORD *)(**(_DWORD **)v53 + 8 * m); if ( (*(int (__thiscall **)(int, volatile signed __int32 *))(*(_DWORD *)v55 + 8))(v55, v60) != 4 ) continue; } break; } } } std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v91); } if ( *(_DWORD *)(a1 + 64) == *(_DWORD *)(a1 + 48) ) { std::string::operator=(a7, "interal error: "); std::string::operator+=(a7, "1004"); std::string::operator+=(a7, ", expr: `"); std::string::operator+=(a7, (int)a3); std::string::operator+=(a7, "`"); Tokens = 1004; } else { v56 = (volatile signed __int32 **)std::deque>::back((_DWORD *)(a1 + 40)); std::__shared_ptr::operator=( (volatile signed __int32 **)(a1 + 80), v56); } LABEL_74: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v77); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v75); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v73); v10 = &v87; LABEL_75: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v10); LABEL_76: std::vector::~vector((void **)&v78); std::string::_M_dispose(v81); return Tokens; } // 4239CF: variable 'v58' is possibly undefined // 423A3E: variable 'v8' is possibly undefined // 423ADB: variable 'v11' is possibly undefined // 423B05: variable 'v62' is possibly undefined // 423B81: variable 'v63' is possibly undefined // 423C4B: variable 'v18' is possibly undefined // 423C4B: variable 'v64' is possibly undefined // 424220: variable 'v52' is possibly undefined // 460788: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // 516B7C: using guessed type _DWORD WXML::EXPRLib::TransitTable::GetInstance(void)::ret; // 516B80: using guessed type int dword_516B80; // 516B88: using guessed type int dword_516B88; // 516B8C: using guessed type int dword_516B8C; // 516B90: using guessed type int dword_516B90; // 516B94: using guessed type char byte_516B94; // 537824: using guessed type void (__cdecl *off_537824)(WXML::EXPRLib::NonTerminal *__hidden this); // 537860: using guessed type void (__cdecl *off_537860)(WXML::EXPRLib::Terminal *__hidden this); // 42391C: using guessed type char var_30[8]; //----- (0042442B) -------------------------------------------------------- void __cdecl __tcf_0_2() { std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase((void **)dword_516B84); } //----- (00424448) -------------------------------------------------------- void __cdecl __tcf_0_3() { std::ios_base::Init::~Init(); } //----- (00424452) -------------------------------------------------------- const char *__fastcall WXML::EXPRLib::Token::GetTokenName(const char **a1) { const char *result; // eax result = *a1; switch ( (unsigned int)*a1 ) { case 0u: result = (const char *)(a1 + 1); break; case 1u: result = "$DECIMAL"; break; case 2u: result = "$STRING"; break; case 3u: result = "$VAR"; break; case 4u: result = "$KEYWORD"; break; default: return result; } return result; } //----- (00424482) -------------------------------------------------------- const char *__fastcall WXML::EXPRLib::Token::GetLiteral(_DWORD *a1) { const char *result; // eax int v2; // edx result = (const char *)(a1 + 1); if ( *a1 ) { result = "$"; if ( *a1 != 5 ) { v2 = a1[3]; result = (const char *)&unk_52E8FC; if ( v2 ) return *(const char **)v2; } } return result; } //----- (004244A4) -------------------------------------------------------- void WXML::EXPRLib::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 *n; // edx int v11; // eax const char *ii; // edx int v13; // eax const char *v14; // edx int v15; // eax const char *v16; // edx int v17; // eax if ( !WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited ) { WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited = 1; for ( i = " \n\t\r"; ; ++i ) { v1 = *i; if ( !(_BYTE)v1 ) break; dword_689DA4[v1] = 8388609; } for ( j = "$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"; ; ++j ) { v3 = *j; if ( !(_BYTE)v3 ) break; dword_689DA4[v3] = 13; } for ( k = "0123456789"; ; ++k ) { v5 = *k; if ( !(_BYTE)v5 ) break; dword_689DA4[v5] = 10; } for ( m = "+-*/%^~()[],?:{}"; ; ++m ) { v7 = *m; if ( !(_BYTE)v7 ) break; dword_689DA4[v7] = 327681; } dword_689E5C = 3; v8 = "$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"; dword_689E2C = 6; dword_689E40 = 8; dword_689E98 = 12; dword_689F94 = 15; dword_689E3C = 14; dword_689E94 = 16; dword_689E9C = 17; dword_689E28 = 18; dword_689DA4[0] = 8519681; dword_68A1A4 = -1; dword_689E60 = 21; dword_68EE9C = 22; dword_68F1F4 = 4325377; dword_68F2A0 = 23; dword_68F5F8 = 8388630; dword_68F6B8 = 8388609; dword_68F6A4 = 4194326; dword_68F9FC = 22; while ( 1 ) { v9 = *v8; if ( !(_BYTE)v9 ) break; dword_68CDD4[v9] = 13; ++v8; } for ( n = "0123456789"; ; ++n ) { v11 = *n; if ( !(_BYTE)v11 ) break; dword_68CDD4[v11] = 13; } dword_68D1D4 = (int)&unk_620001; for ( ii = "0123456789"; ; ++ii ) { v13 = *ii; if ( !(_BYTE)v13 ) break; dword_68A5AC[v13] = 11; } dword_68A664 = 4; v14 = "0123456789"; dword_68A9AC = (int)&loc_460000 + 1; dword_68AA68 = 327681; dword_68ADB0 = -1; while ( 1 ) { v15 = *v14; if ( !(_BYTE)v15 ) break; dword_68C1C8[v15] = 10; ++v14; } dword_68C280 = 11; v16 = "0123456789"; dword_68C5C8 = (int)&loc_49FFFE + 3; while ( 1 ) { v17 = *v16; if ( !(_BYTE)v17 ) break; dword_68C5CC[v17] = 11; ++v16; } dword_68C9CC = (int)&loc_49FFFE + 3; dword_68CAC4 = 19; dword_68CDD0 = -1; dword_68E6E0 = 327681; dword_68E9EC = (int)&loc_460000 + 1; dword_68D270 = 327681; dword_68D5D8 = 4325377; dword_68D7CC = 327681; dword_68D9DC = 4325377; dword_68A29C = 327681; dword_68A5A8 = (int)&loc_460000 + 1; dword_68B328 = 7; dword_68B1E0 = 9568257; dword_68B9BC = 6; dword_68B5E4 = 9568257; dword_68B240 = 1114113; dword_68B5B8 = 6; dword_68BB30 = 9; dword_68B9E8 = 9568257; dword_68C1C4 = 8; dword_68BDEC = 9568257; dword_68BA5C = 1114113; dword_68BDC0 = 8; dword_68DAD4 = 327681; dword_68DAD0 = 327681; dword_68DDE0 = (int)&loc_460000 + 1; dword_68DED8 = 327681; dword_68DEDC = 327681; dword_68E1E4 = (int)&loc_460000 + 1; dword_68E2DC = 20; dword_68EAE4 = 327681; dword_68EDF0 = (int)&loc_460000 + 1; dword_68E5E8 = (int)&loc_460000 + 1; } } // 689DA4: using guessed type int dword_689DA4[33]; // 689E28: using guessed type int dword_689E28; // 689E2C: using guessed type int dword_689E2C; // 689E3C: using guessed type int dword_689E3C; // 689E40: using guessed type int dword_689E40; // 689E5C: using guessed type int dword_689E5C; // 689E60: using guessed type int dword_689E60; // 689E94: using guessed type int dword_689E94; // 689E98: using guessed type int dword_689E98; // 689E9C: using guessed type int dword_689E9C; // 689F94: using guessed type int dword_689F94; // 68A1A4: using guessed type int dword_68A1A4; // 68A29C: using guessed type int dword_68A29C; // 68A5A8: using guessed type int dword_68A5A8; // 68A5AC: using guessed type int dword_68A5AC[46]; // 68A664: using guessed type int dword_68A664; // 68A9AC: using guessed type int dword_68A9AC; // 68AA68: using guessed type int dword_68AA68; // 68ADB0: using guessed type int dword_68ADB0; // 68B1E0: using guessed type int dword_68B1E0; // 68B240: using guessed type int dword_68B240; // 68B328: using guessed type int dword_68B328; // 68B5B8: using guessed type int dword_68B5B8; // 68B5E4: using guessed type int dword_68B5E4; // 68B9BC: using guessed type int dword_68B9BC; // 68B9E8: using guessed type int dword_68B9E8; // 68BA5C: using guessed type int dword_68BA5C; // 68BB30: using guessed type int dword_68BB30; // 68BDC0: using guessed type int dword_68BDC0; // 68BDEC: using guessed type int dword_68BDEC; // 68C1C4: using guessed type int dword_68C1C4; // 68C1C8: using guessed type int dword_68C1C8[46]; // 68C280: using guessed type int dword_68C280; // 68C5C8: using guessed type int dword_68C5C8; // 68C5CC: using guessed type int dword_68C5CC[256]; // 68C9CC: using guessed type int dword_68C9CC; // 68CAC4: using guessed type int dword_68CAC4; // 68CDD0: using guessed type int dword_68CDD0; // 68CDD4: using guessed type int dword_68CDD4[256]; // 68D1D4: using guessed type int dword_68D1D4; // 68D270: using guessed type int dword_68D270; // 68D5D8: using guessed type int dword_68D5D8; // 68D7CC: using guessed type int dword_68D7CC; // 68D9DC: using guessed type int dword_68D9DC; // 68DAD0: using guessed type int dword_68DAD0; // 68DAD4: using guessed type int dword_68DAD4; // 68DDE0: using guessed type int dword_68DDE0; // 68DED8: using guessed type int dword_68DED8; // 68DEDC: using guessed type int dword_68DEDC; // 68E1E4: using guessed type int dword_68E1E4; // 68E2DC: using guessed type int dword_68E2DC; // 68E5E8: using guessed type int dword_68E5E8; // 68E6E0: using guessed type int dword_68E6E0; // 68E9EC: using guessed type int dword_68E9EC; // 68EAE4: using guessed type int dword_68EAE4; // 68EDF0: using guessed type int dword_68EDF0; // 68EE9C: using guessed type int dword_68EE9C; // 68F1F4: using guessed type int dword_68F1F4; // 68F2A0: using guessed type int dword_68F2A0; // 68F5F8: using guessed type int dword_68F5F8; // 68F6A4: using guessed type int dword_68F6A4; // 68F6B8: using guessed type int dword_68F6B8; // 68F9FC: using guessed type int dword_68F9FC; // 78A9A0: using guessed type char WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited; //----- (004247F2) -------------------------------------------------------- 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; } //----- (004247FE) -------------------------------------------------------- _DWORD *__usercall std::__relocate_a_1>@( _DWORD *a1@, _DWORD *a2@, _DWORD *a3@) { _DWORD *v4; // esi _DWORD *i; // ebx int v6; // edx int v7; // ecx volatile signed __int32 **v8; // ecx _DWORD *v10; // [esp+8h] [ebp-20h] v4 = a3; for ( i = a1; i != a2; i += 7 ) { *v4 = *i; v6 = i[1]; v4[2] = i[2]; v4[1] = v6; v4[3] = i[3]; v7 = i[4]; v4[4] = v7; if ( v7 ) { if ( _CRT_MT ) _InterlockedIncrement((volatile signed __int32 *)(v7 + 4)); else ++*(_DWORD *)(v7 + 4); } v10 = a1; v4 += 7; *(v4 - 2) = i[5]; *(v4 - 1) = i[6]; v8 = (volatile signed __int32 **)(i + 4); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v8); a1 = v10; } return &a3[7 * ((920350135 * ((unsigned int)((char *)i - (char *)a1) >> 2)) & 0x3FFFFFFF)]; } // 78A9D4: using guessed type int _CRT_MT; //----- (00424888) -------------------------------------------------------- unsigned int __thiscall WXML::EXPRLib::Tokenizer::Tokenizer(void **this, char *a2, int a3, int a4, int a5) { size_t v6; // eax int v8; // [esp+8h] [ebp-10h] *this = this + 2; v6 = -1; if ( a2 ) v6 = (size_t)&a2[strlen(a2)]; LOBYTE(v8) = 0; return std::string::_M_construct(this, (unsigned __int8 *)a2, v6, v8); } // 4248BE: variable 'v8' is possibly undefined //----- (004248D0) -------------------------------------------------------- int __thiscall WXML::EXPRLib::Tokenizer::GetTokens(int *this, int a2, unsigned int *a3) { unsigned __int8 v3; // bl int v4; // esi std::ostream::sentry *v5; // eax std::ostream::sentry *v6; // eax std::ostream::sentry *v7; // eax std::ostream::sentry *v8; // eax int v9; // ebx char *v10; // edx bool v11; // zf char *v12; // ebx char v13; // al void **v14; // edi volatile signed __int32 *v15; // eax int v16; // edx volatile signed __int32 *v17; // edx volatile signed __int32 *v18; // ebx const char **v19; // ebx const char **v20; // edi _DWORD *v21; // ecx void (__cdecl *v23)(void *); // [esp+4h] [ebp-134h] void (__cdecl *v24)(void *); // [esp+4h] [ebp-134h] const char *v25; // [esp+4h] [ebp-134h] int v26; // [esp+8h] [ebp-130h] int v27; // [esp+10h] [ebp-128h] int v29; // [esp+18h] [ebp-120h] int v30; // [esp+1Ch] [ebp-11Ch] int v31; // [esp+20h] [ebp-118h] int v32; // [esp+28h] [ebp-110h] int v33; // [esp+2Ch] [ebp-10Ch] int v34; // [esp+30h] [ebp-108h] volatile signed __int32 *v35; // [esp+34h] [ebp-104h] BYREF void **v36; // [esp+38h] [ebp-100h] BYREF volatile signed __int32 *v37; // [esp+3Ch] [ebp-FCh] BYREF int v38; // [esp+50h] [ebp-E8h] BYREF char v39[8]; // [esp+54h] [ebp-E4h] BYREF const char **v40; // [esp+5Ch] [ebp-DCh] BYREF volatile signed __int32 *v41[54]; // [esp+60h] [ebp-D8h] BYREF WXML::EXPRLib::Tokenizer::InitTransitTable(); v27 = 18899; v31 = 1; v33 = 0; v32 = 0; v29 = this[1]; while ( v33 <= v29 ) { if ( !--v27 ) { std::string::operator=(a3, "something must be wrong"); return -1; } v30 = *this; v3 = *(_BYTE *)(*this + v33); if ( v33 == v29 ) v3 = 0; v4 = WXML::EXPRLib::Tokenizer::TT[257 * v31 + v3]; if ( !v4 ) { v4 = dword_689DA0[257 * v31]; if ( !v4 ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v38); std::operator<<>((std::ostream::sentry *)&v39[4], "no transition for "); v5 = (std::ostream::sentry *)std::ostream::operator<<(v31); v6 = std::operator<<>(v5, " with input "); std::operator<<>(v6, v3); std::stringbuf::str((int)&v36, &v40); std::string::operator=(a3, &v36); std::string::_M_dispose((void **)&v36); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v38); return -1; } } if ( v4 == -1 ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v38); v7 = std::operator<<>((std::ostream::sentry *)&v39[4], "unexpected `"); v8 = std::operator<<>(v7, v3); std::operator<<>(v8, "` at pos"); std::ostream::operator<<(v33); std::stringbuf::str((int)&v36, &v40); std::string::operator=(a3, &v36); std::string::_M_dispose((void **)&v36); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v38); return v4; } v31 = (unsigned __int16)v4; if ( (v4 & 0x30000) != 0 ) { v9 = 1; if ( (v4 & 0x80000) == 0 ) { v9 = 2; if ( (v4 & 0x100000) == 0 ) v9 = (v4 << 10 >> 31) & 3; } if ( v32 <= ((v4 & 0x20000) == 0) + v33 - 1 ) { v10 = v39; v40 = 0; memset(v41, 0, 12); v11 = v9 == 0; memset(v39, 0, sizeof(v39)); v38 = v9; v12 = (char *)(v30 + v32); if ( v11 ) { do { v13 = *v12++; *v10++ = v13; } while ( v12 != (char *)(v30 + ((v4 & 0x20000) == 0) + v33) ); v39[((v4 & 0x20000) == 0) + v33 - v32] = 0; } else { v14 = (void **)operator new((struct type_info *)0x18, v23); *v14 = v14 + 2; LOBYTE(v26) = 0; std::string::_M_construct( v14, (unsigned __int8 *)(v30 + v32), ((v4 & 0x20000) == 0) + v33 + v30, v26); v36 = v14; v35 = 0; v37 = 0; v15 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v24); v16 = (int)v36; *((_DWORD *)v15 + 3) = v14; *((_DWORD *)v15 + 1) = 1; *((_DWORD *)v15 + 2) = 1; *v15 = (volatile signed __int32)&off_538A2C; v34 = v16; v17 = v35; v36 = 0; v35 = v15; v37 = v17; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v37); v18 = v35; v40 = (const char **)v34; if ( v35 != v41[0] ) { if ( v35 ) { if ( _CRT_MT ) _InterlockedIncrement(v35 + 1); else ++*((_DWORD *)v35 + 1); } if ( v41[0] ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v41[0]); v41[0] = v18; } v19 = (const char **)WXML::EXPRLib::Tokenizer::GetTokens(std::vector &,std::string &)::KEYWORDS; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v35); v20 = v40; while ( *v19 ) { v25 = *v19++; if ( !strcmp(*v20, v25) ) { v38 = 4; break; } } } v21 = *(_DWORD **)(a2 + 4); if ( v21 == *(_DWORD **)(a2 + 8) ) { v23 = (void (__cdecl *)(void *))std::vector::_M_realloc_insert( (char **)a2, *(char **)(a2 + 4), (WXML::EXPRLib::Token *)&v38); } else { WXML::EXPRLib::Token::Token(v21, (WXML::EXPRLib::Token *)&v38, (const WXML::EXPRLib::Token *)v23); *(_DWORD *)(a2 + 4) += 28; } v32 = ((v4 & 0x20000) == 0) + v33; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v41); } } v33 += (v4 & 0x400000) == 0; if ( (v4 & 0x800000) != 0 ) v32 = v33; } return 0; } // 424BAF: variable 'v23' is possibly undefined // 424BD9: variable 'v26' is possibly undefined // 424C0C: variable 'v24' is possibly undefined // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 52EA04: using guessed type char *WXML::EXPRLib::Tokenizer::GetTokens(std::vector &,std::string &)::KEYWORDS[4]; // 538A2C: using guessed type int (*off_538A2C)(); // 6899A0: using guessed type int WXML::EXPRLib::Tokenizer::TT[]; // 689DA0: using guessed type int dword_689DA0[]; // 78A9D4: using guessed type int _CRT_MT; //----- (00424DCC) -------------------------------------------------------- void __cdecl __tcf_1_4() { std::ios_base::Init::~Init(); } //----- (00424DD6) -------------------------------------------------------- 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; } // 424DD6: using guessed type unsigned int var_1C[7]; //----- (00424E47) -------------------------------------------------------- volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) { if ( _CRT_MT ) _InterlockedIncrement(result); else ++*result; return result; } // 78A9D4: using guessed type int _CRT_MT; //----- (00424E58) -------------------------------------------------------- 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); } } } // 424E88: variable 'v4' is possibly undefined // 424E88: variable 'v5' is possibly undefined // 424E88: variable 'v6' is possibly undefined // 424E88: variable 'v8' is possibly undefined // 424E88: variable 'v9' is possibly undefined // 424E9A: variable 'v7' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (00424EB8) -------------------------------------------------------- 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); } //----- (00424EF0) -------------------------------------------------------- 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); } //----- (00424F26) -------------------------------------------------------- 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); } //----- (00424F7A) -------------------------------------------------------- int WXML::EXPRLib::TransitTable::GetExprNTType() { return 14; } //----- (00424F80) -------------------------------------------------------- int WXML::EXPRLib::TransitTable::GetAttrListNTType() { return 12; } //----- (00424F86) -------------------------------------------------------- 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; } //----- (00424FFE) -------------------------------------------------------- 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)); } //----- (00425012) -------------------------------------------------------- #error "425012: too big function (funcsize=0)" //----- (00443018) -------------------------------------------------------- void __cdecl __tcf_0_4() { std::ios_base::Init::~Init(); } //----- (00443022) -------------------------------------------------------- int __cdecl WXML::StringTemplating::Deal(const char *a1, int a2, _DWORD *a3, _BYTE *a4) { int v4; // esi signed int v5; // ebx unsigned int v6; // kr04_4 signed int v7; // eax char v8; // dl char v9; // cl int v10; // edx char v11; // cl char v12; // cl bool v13; // zf int v14; // edx int v15; // ebx int v17; // [esp+8h] [ebp-70h] signed int v18; // [esp+1Ch] [ebp-5Ch] void *v19[2]; // [esp+2Ch] [ebp-4Ch] BYREF char v20[16]; // [esp+34h] [ebp-44h] BYREF int v21; // [esp+44h] [ebp-34h] BYREF char *v22; // [esp+48h] [ebp-30h] BYREF int v23; // [esp+4Ch] [ebp-2Ch] char v24[40]; // [esp+50h] [ebp-28h] BYREF v4 = 0; v5 = 0; v6 = strlen(a1) + 1; v18 = v6 - 1; v7 = 0; while ( 1 ) { v8 = a1[v5]; if ( v5 >= v18 || !v8 ) break; v9 = a1[v5 + 1]; if ( v4 == 2 ) { if ( v8 == 92 ) goto LABEL_38; v13 = v8 == 34; goto LABEL_40; } if ( v4 > 2 ) { if ( v8 == 92 ) { LABEL_38: ++v5; goto LABEL_43; } v13 = v8 == 39; LABEL_40: if ( !v13 ) goto LABEL_43; goto LABEL_41; } if ( v4 ) { if ( v8 == 125 && v9 == 125 ) { if ( v5 > v7 ) { v10 = v5 - 1; while ( 1 ) { v11 = a1[v7]; if ( v11 != 32 && v11 != 9 ) break; ++v7; } while ( v7 < v10 ) { v12 = a1[v10]; if ( v12 != 32 && v12 != 9 ) goto LABEL_30; --v10; } if ( v7 != v10 ) goto LABEL_31; LABEL_30: LOBYTE(v17) = 0; v22 = v24; v19[0] = v20; v23 = 0; v24[0] = 0; v21 = 0; std::string::_M_construct(v19, (unsigned __int8 *)&a1[v7], (size_t)&a1[v10 + 1], v17); std::string::operator=(&v22, v19); std::string::_M_dispose(v19); v21 = 1; std::vector::push_back(a3, &v21); *a4 = 1; std::string::_M_dispose((void **)&v22); } LABEL_31: v7 = v5 + 2; v4 = 0; ++v5; } else if ( v8 == 34 ) { v4 = 2; } else if ( v8 == 39 ) { v4 = 4; } } else if ( v8 == 123 && v9 == 123 ) { if ( v5 > v7 ) { LOBYTE(v17) = 0; v22 = v24; v19[0] = v20; v23 = 0; v24[0] = 0; v21 = 0; std::string::_M_construct(v19, (unsigned __int8 *)&a1[v7], (size_t)&a1[v5], v17); std::string::operator=(&v22, v19); std::string::_M_dispose(v19); v21 = 0; std::vector::push_back(a3, &v21); std::string::_M_dispose((void **)&v22); } v7 = v5 + 2; ++v5; LABEL_41: v4 = 1; } LABEL_43: ++v5; } if ( v4 ) return 1; v14 = 0; if ( v5 >= (int)(v6 - 2) ) v14 = ~(v5 - v18); v15 = v14 + v5; if ( v7 <= v15 ) { LOBYTE(v17) = 0; v22 = v24; v19[0] = v20; v23 = 0; v24[0] = 0; v21 = 0; std::string::_M_construct(v19, (unsigned __int8 *)&a1[v7], (size_t)&a1[v15 + 1], v17); std::string::operator=(&v22, v19); std::string::_M_dispose(v19); std::vector::push_back(a3, &v21); std::string::_M_dispose((void **)&v22); } return v4; } // 443068: conditional instruction was optimized away because esi.4==1 // 443076: conditional instruction was optimized away because esi.4==4 // 4430E0: variable 'v17' is possibly undefined //----- (00443300) -------------------------------------------------------- _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; } //----- (00443360) -------------------------------------------------------- _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; } //----- (004433D0) -------------------------------------------------------- _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; } // 443448: variable 'v6' is possibly undefined //----- (00443480) -------------------------------------------------------- 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; } //----- (00443520) -------------------------------------------------------- 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; } //----- (004435E0) -------------------------------------------------------- _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; } //----- (00443620) -------------------------------------------------------- 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; } //----- (00443660) -------------------------------------------------------- _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; } //----- (004436C0) -------------------------------------------------------- _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; } //----- (00443850) -------------------------------------------------------- _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; } //----- (004438A0) -------------------------------------------------------- _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_531B44 ) 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; } //----- (00443A90) -------------------------------------------------------- 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; } //----- (00443B00) -------------------------------------------------------- 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; } //----- (00443B60) -------------------------------------------------------- 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; } //----- (00443BC0) -------------------------------------------------------- _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; } //----- (00443C80) -------------------------------------------------------- _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; } //----- (00443CD0) -------------------------------------------------------- _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; } //----- (00443D10) -------------------------------------------------------- _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; } } // 443D55: variable 'a3' is possibly undefined //----- (00443D80) -------------------------------------------------------- _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); } // 443EA5: variable 'v60' is possibly undefined // 4440A4: variable 'v54' is possibly undefined // 4440A4: variable 'v56' is possibly undefined // 4440A4: variable 'v57' is possibly undefined // 4440A4: variable 'v58' is possibly undefined // 4440A4: variable 'v59' is possibly undefined // 4440A4: variable 'v62' is possibly undefined // 4440A4: variable 'v63' is possibly undefined // 4440A4: variable 'v64' is possibly undefined // 4440A4: variable 'v65' is possibly undefined // 44412E: variable 'v61' is possibly undefined // 4444F0: using guessed type int d_expression_1(void); //----- (004444F0) -------------------------------------------------------- _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); } // 444683: variable 'v52' is possibly undefined // 444683: variable 'v54' is possibly undefined // 444683: variable 'v55' is possibly undefined // 444683: variable 'v56' is possibly undefined // 444683: variable 'v57' is possibly undefined // 444683: variable 'v58' is possibly undefined // 444683: variable 'v59' is possibly undefined // 444683: variable 'v60' is possibly undefined // 444683: variable 'v61' is possibly undefined // 444683: variable 'v62' is possibly undefined // 444683: variable 'v63' is possibly undefined //----- (00444B60) -------------------------------------------------------- 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; } //----- (00444BF0) -------------------------------------------------------- _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; } } // 444B60: using guessed type int d_template_arg(void); //----- (00444CA0) -------------------------------------------------------- _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); } //----- (00444CD0) -------------------------------------------------------- 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; } // 444FBA: variable 'v58' is possibly undefined // 444FBA: variable 'v60' is possibly undefined // 444FBA: variable 'v62' is possibly undefined // 444FBA: variable 'v64' is possibly undefined // 444FBA: variable 'v66' is possibly undefined // 444FBA: variable 'v68' is possibly undefined // 444FBA: variable 'v70' is possibly undefined // 444FBA: variable 'v72' is possibly undefined // 444FBA: variable 'v74' is possibly undefined // 444FBA: variable 'v76' is possibly undefined // 444FBA: variable 'v78' is possibly undefined // 445071: variable 'v59' is possibly undefined // 445071: variable 'v61' is possibly undefined // 445071: variable 'v63' is possibly undefined // 445071: variable 'v65' is possibly undefined // 445071: variable 'v67' is possibly undefined // 445071: variable 'v69' is possibly undefined // 445071: variable 'v71' is possibly undefined // 445071: variable 'v73' is possibly undefined // 445071: variable 'v75' is possibly undefined // 445071: variable 'v77' is possibly undefined // 445071: variable 'v79' is possibly undefined // 4450AA: variable 'v37' is possibly undefined // 4450E3: variable 'v39' is possibly undefined // 44512A: variable 'v41' is possibly undefined //----- (004453C0) -------------------------------------------------------- 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_5310E3; 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; } // 444CD0: using guessed type int __fastcall d_encoding(_DWORD, _DWORD); // 4458B0: using guessed type int d_type(void); // 5310E3: using guessed type void *off_5310E3; //----- (004458B0) -------------------------------------------------------- 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_53249C; *(_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_5324B0; *(_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_532488; *(_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_5324C4; *(_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_532500; *(_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_532514; *(_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_5324EC; *(_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_5324D8; *(_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 + 5448320; 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; } // 445A0A: variable 'v14' is possibly undefined // 4444F0: using guessed type int d_expression_1(void); // 532488: using guessed type char *off_532488; // 53249C: using guessed type char *off_53249C; // 5324B0: using guessed type char *off_5324B0; // 5324C4: using guessed type char *off_5324C4; // 5324D8: using guessed type char *off_5324D8; // 5324EC: using guessed type char *off_5324EC; // 532500: using guessed type char *off_532500; // 532514: using guessed type char *off_532514; //----- (004461D0) -------------------------------------------------------- _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; } // 4458B0: using guessed type int d_type(void); // 531D00: using guessed type void *cplus_demangle_operators; //----- (00446380) -------------------------------------------------------- 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; } // 4458B0: using guessed type int d_type(void); //----- (00446450) -------------------------------------------------------- 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; } // 4444F0: using guessed type int d_expression_1(void); //----- (00446670) -------------------------------------------------------- _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; } // 4458B0: using guessed type int d_type(void); //----- (004466E0) -------------------------------------------------------- _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; } //----- (00446770) -------------------------------------------------------- _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; } // 4458B0: using guessed type int d_type(void); //----- (00446B80) -------------------------------------------------------- _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; } // 446BAB: variable 'v16' is possibly undefined // 446BAB: variable 'v17' is possibly undefined // 446BAB: variable 'v18' is possibly undefined // 446BAB: variable 'v19' is possibly undefined // 446BAB: variable 'v20' is possibly undefined // 446BAB: variable 'v21' is possibly undefined // 446BAB: variable 'v22' is possibly undefined // 446BAB: variable 'v23' is possibly undefined // 446BAB: variable 'v24' is possibly undefined // 446BAB: variable 'v25' is possibly undefined // 446BAB: variable 'v26' is possibly undefined // 444CD0: using guessed type int __fastcall d_encoding(_DWORD, _DWORD); //----- (00446CD0) -------------------------------------------------------- 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_532320 ) { 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_5314FE, 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; } // 446F59: variable 'v586' is possibly undefined // 44A41A: variable 'v408' is possibly undefined // 44B3E0: variable 'v407' is possibly undefined // 5314FE: using guessed type void *off_5314FE; // 532320: using guessed type void **off_532320; //----- (0044B840) -------------------------------------------------------- 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); } } // 446CD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); //----- (0044C180) -------------------------------------------------------- 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; } } } // 446CD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); //----- (0044C4B0) -------------------------------------------------------- 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; } // 446CD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); // 44C180: using guessed type _DWORD __cdecl d_print_function_type_isra_0(_DWORD); // 44C4B0: using guessed type char Str[53]; //----- (0044C8A0) -------------------------------------------------------- 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_5318D8; 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_5318DA == (_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; } // 446CD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); // 44C4B0: using guessed type _DWORD __cdecl d_print_mod_list(_DWORD); //----- (0044CB70) -------------------------------------------------------- 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; } // 446CD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); //----- (0044CC20) -------------------------------------------------------- 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; } // 446CD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); //----- (0044CD20) -------------------------------------------------------- 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; } //----- (0044D0C0) -------------------------------------------------------- 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; } // 44D35F: variable 'v19' is possibly undefined //----- (0044D680) -------------------------------------------------------- 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; } //----- (0044D7D0) -------------------------------------------------------- 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; } //----- (0044D810) -------------------------------------------------------- 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; } // 515050: using guessed type int _CRT_glob; //----- (0044DBB0) -------------------------------------------------------- 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 ( (_EDX & 0x800000) != 0 ) v14 |= 4u; if ( (_EDX & 0x1000000) != 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; } // 44DBB0: could not find valid save-restore pair for ebp // 78A9CC: using guessed type int __cpu_features; // 44DBB0: using guessed type __int32 var_140[79]; //----- (0044DCC0) -------------------------------------------------------- void __cdecl __do_global_dtors() { void (*v0)(void); // eax v0 = (void (*)(void))*off_51505C; if ( *off_51505C ) { do { v0(); v0 = (void (*)(void))off_51505C[1]; ++off_51505C; } while ( v0 ); } } // 51505C: using guessed type int *off_51505C; //----- (0044DD00) -------------------------------------------------------- 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); } //----- (0044DD60) -------------------------------------------------------- int __main() { int result; // eax result = dword_78A9D0; if ( !dword_78A9D0 ) { dword_78A9D0 = 1; return __do_global_ctors(); } return result; } // 78A9D0: using guessed type int dword_78A9D0; //----- (0044DD80) -------------------------------------------------------- int __stdcall TlsCallback_1(int a1, int a2, int a3) { if ( a2 != 3 && a2 ) return 1; __mingw_TLScallback(a1, a2); return 1; } //----- (0044DDD0) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (0044DE80) -------------------------------------------------------- int __tlregdtor() { return 0; } //----- (0044DE90) -------------------------------------------------------- void sub_44DE90() { int i; // ebx LPVOID Value; // esi EnterCriticalSection(&CriticalSection); for ( i = dword_78A9E8; i; i = *(_DWORD *)(i + 8) ) { Value = TlsGetValue(*(_DWORD *)i); if ( !GetLastError() && Value ) (*(void (__cdecl **)(LPVOID))(i + 4))(Value); } LeaveCriticalSection(&CriticalSection); } // 78A9E8: using guessed type int dword_78A9E8; //----- (0044DEF0) -------------------------------------------------------- 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_78A9EC; if ( dword_78A9EC ) { v3 = calloc(1u, 0xCu); v4 = (int)v3; if ( v3 ) { *v3 = a1; v3[1] = a2; EnterCriticalSection(&CriticalSection); v5 = dword_78A9E8; dword_78A9E8 = v4; *(_DWORD *)(v4 + 8) = v5; LeaveCriticalSection(&CriticalSection); return 0; } else { return -1; } } return result; } // 78A9E8: using guessed type int dword_78A9E8; // 78A9EC: using guessed type int dword_78A9EC; //----- (0044DF70) -------------------------------------------------------- int __cdecl ___w64_mingwthr_remove_key_dtor(int a1) { _DWORD *v2; // eax _DWORD *v3; // ecx int v4; // edx if ( !dword_78A9EC ) return 0; EnterCriticalSection(&CriticalSection); v2 = (_DWORD *)dword_78A9E8; if ( dword_78A9E8 ) { 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_78A9E8 = v2[2]; __mingw_free((unsigned int)v2); } LABEL_11: LeaveCriticalSection(&CriticalSection); return 0; } // 78A9E8: using guessed type int dword_78A9E8; // 78A9EC: using guessed type int dword_78A9EC; //----- (0044E000) -------------------------------------------------------- int __cdecl __mingw_TLScallback(int a1, int a2) { if ( a2 == 1 ) { if ( !dword_78A9EC ) InitializeCriticalSection(&CriticalSection); dword_78A9EC = 1; return 1; } else { if ( a2 != 3 ) { if ( !a2 && dword_78A9EC ) { sub_44DE90(); if ( dword_78A9EC == 1 ) { dword_78A9EC = 0; DeleteCriticalSection(&CriticalSection); } } return 1; } if ( !dword_78A9EC ) return 1; sub_44DE90(); return 1; } } // 78A9EC: using guessed type int dword_78A9EC; //----- (0044E0C0) -------------------------------------------------------- void __noreturn sub_44E0C0(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(); } //----- (0044E110) -------------------------------------------------------- DWORD __usercall sub_44E110@(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_44E0C0(" 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; } //----- (0044E200) -------------------------------------------------------- int _pei386_runtime_relocator() { int result; // eax result = dword_78AA08; if ( !dword_78AA08 ) { dword_78AA08 = 1; return 0; } return result; } // 44E200: could not find valid save-restore pair for ebx // 44E200: could not find valid save-restore pair for edi // 44E200: could not find valid save-restore pair for esi // 78AA08: using guessed type int dword_78AA08; //----- (0044E3F0) -------------------------------------------------------- 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_515060 = -1; } else { if ( Env == (const fenv_t *)-4 ) { dword_515060 = -2; LABEL_12: __fpreset(); goto LABEL_8; } if ( !Env ) _EAX = (const fenv_t *)dword_515060; 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; } // 515060: using guessed type int dword_515060; // 78A9CC: using guessed type int __cpu_features; //----- (0044E470) -------------------------------------------------------- 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_515064, &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; } // 515064: using guessed type int dword_515064[5]; //----- (0044E520) -------------------------------------------------------- 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; } //----- (0044E5C0) -------------------------------------------------------- int __usercall sub_44E5C0@(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; } // 44E5C0: using guessed type int var_20[8]; //----- (0044E9B0) -------------------------------------------------------- _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; } //----- (0044E9F0) -------------------------------------------------------- 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; } //----- (0044EAC0) -------------------------------------------------------- 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_532858[v32] + (long double)(unsigned int)v135; if ( v142 > 53 || v139 > 15 ) { v38 = v156 - (_DWORD)i; goto LABEL_105; } if ( !v166 ) { v37 = sub_44E5C0(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_532800[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_44E5C0(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; } } } // 532800: using guessed type int dword_532800[22]; // 532858: using guessed type double dbl_532858[]; // 5328A0: using guessed type double __tens_D2A[24]; // 532960: using guessed type double __tinytens_D2A[4]; // 5329A0: using guessed type double __bigtens_D2A[4]; //----- (004506C0) -------------------------------------------------------- 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_78B450 ) 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; } // 78B450: using guessed type char byte_78B450; //----- (00450AB0) -------------------------------------------------------- void __usercall sub_450AB0(int a1@) { LONG v2; // eax switch ( Target ) { case 2: LABEL_10: EnterCriticalSection((LPCRITICAL_SECTION)(24 * a1 + 7910272)); return; case 0: v2 = InterlockedExchange(&Target, 1); if ( v2 ) { if ( v2 != 2 ) goto LABEL_5; Target = 2; } else { InitializeCriticalSection(&stru_78B380); InitializeCriticalSection(&stru_78B398); atexit(sub_450B80); Target = 2; } goto LABEL_10; case 1: do { Sleep(1u); LABEL_5: ; } while ( Target == 1 ); if ( Target == 2 ) goto LABEL_10; break; } } //----- (00450B80) -------------------------------------------------------- void __cdecl sub_450B80() { if ( InterlockedExchange(&Target, 3) == 2 ) { DeleteCriticalSection(&stru_78B380); DeleteCriticalSection(&stru_78B398); } } //----- (00450BD0) -------------------------------------------------------- int *__cdecl __Balloc_D2A(int a1) { int v1; // esi int *result; // eax bool v3; // zf int *v4; // [esp+1Ch] [ebp-10h] sub_450AB0(0); if ( a1 > 9 ) goto LABEL_2; result = (int *)dword_78B340[a1]; if ( result ) { v3 = Target == 2; dword_78B340[a1] = *result; if ( !v3 ) goto LABEL_4; LABEL_8: v4 = result; LeaveCriticalSection(&stru_78B380); result = v4; goto LABEL_4; } result = (int *)off_515078; v1 = 1 << a1; if ( ((unsigned int)(4 * (1 << a1) + 27) >> 3) + (((_BYTE *)off_515078 - (_BYTE *)&unk_78AA40) >> 3) > 0x120 ) { LABEL_2: v1 = 1 << a1; result = (int *)malloc((4 * (1 << a1) + 27) & 0xFFFFFFF8); if ( !result ) return result; } else { off_515078 = (char *)off_515078 + ((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; } // 515078: using guessed type void *off_515078; // 78B340: using guessed type int dword_78B340[10]; //----- (00450CC0) -------------------------------------------------------- void __cdecl __Bfree_D2A(unsigned int a1) { int v1; // eax bool v2; // zf int v3; // edx if ( a1 ) { if ( *(int *)(a1 + 4) <= 9 ) { sub_450AB0(0); v1 = *(_DWORD *)(a1 + 4); v2 = Target == 2; v3 = dword_78B340[v1]; dword_78B340[v1] = a1; *(_DWORD *)a1 = v3; if ( v2 ) LeaveCriticalSection(&stru_78B380); } else { __mingw_free(a1); } } } // 78B340: using guessed type int dword_78B340[10]; //----- (00450D20) -------------------------------------------------------- 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; } //----- (00450E00) -------------------------------------------------------- int *__cdecl __i2b_D2A(int a1) { int *result; // eax result = __Balloc_D2A(1); if ( result ) { result[4] = 1; result[5] = a1; } return result; } //----- (00450E30) -------------------------------------------------------- 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; } //----- (00450FD0) -------------------------------------------------------- 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_53287C[a2 & 3], 0)) != 0 ) { v3 = a2 >> 2; v4 = (int)v2; if ( a2 >> 2 ) { v5 = (int **)dword_78AA20; if ( !dword_78AA20 ) { sub_450AB0(1); v5 = (int **)dword_78AA20; if ( !dword_78AA20 ) { v10 = __Balloc_D2A(1); v5 = (int **)v10; if ( !v10 ) { dword_78AA20 = 0; return 0; } v10[5] = 625; v10[4] = 1; dword_78AA20 = (int)v10; *v10 = 0; } if ( Target == 2 ) LeaveCriticalSection(&stru_78B398); } 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_450AB0(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_78B398); } 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; } // 53287C: using guessed type int dword_53287C[7]; // 78AA20: using guessed type int dword_78AA20; //----- (00451150) -------------------------------------------------------- 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; } //----- (00451290) -------------------------------------------------------- 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; } //----- (004512E0) -------------------------------------------------------- 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; } } //----- (00451520) -------------------------------------------------------- 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; } //----- (00451630) -------------------------------------------------------- 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; } //----- (00451720) -------------------------------------------------------- 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; } //----- (00451750) -------------------------------------------------------- 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_51507C, v6, (int *)&v5); switch ( v2 & 7 ) { case 1: case 5: LODWORD(v3) = LODWORD(v5) & 0x7FFFFF | ((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; } // 51507C: using guessed type int dword_51507C[5]; // 451750: using guessed type int var_10[4]; //----- (004517F0) -------------------------------------------------------- unsigned __int64 __cdecl strtoull(const char *String, char **EndPtr, int Radix) { const char *v3; // edi int v4; // eax int C; // eax int v6; // ebx char v7; // al int v8; // edx int v9; // eax unsigned __int16 v10; // ax int v11; // eax char *v12; // edx int v13; // esi int v14; // edi char *i; // ebx int v16; // eax int v17; // ebp unsigned __int16 v18; // ax int v19; // eax unsigned __int64 v21; // rax int v22; // eax int v23; // eax unsigned int v24; // [esp+20h] [ebp-2Ch] int v25; // [esp+24h] [ebp-28h] char v26; // [esp+2Fh] [ebp-1Dh] v3 = String; if ( EndPtr ) *EndPtr = (char *)String; if ( Radix == 1 || (unsigned int)Radix > 0x24 ) { v13 = 0; v14 = 0; *_errno() = 33; return __PAIR64__(v14, v13); } while ( 1 ) { C = *v3; if ( ___mb_cur_max != 1 ) break; v4 = __pctype[C] & 8; if ( !v4 ) goto LABEL_10; LABEL_7: ++v3; } v4 = _isctype(C, 8); if ( v4 ) goto LABEL_7; LABEL_10: v6 = v4; v26 = *v3; v7 = *v3; if ( ((*v3 - 43) & 0xFD) == 0 ) v7 = *++v3; if ( Radix ) { if ( Radix == 16 && v7 == 48 ) { if ( (v3[1] & 0xDF) == 88 ) goto LABEL_54; v24 = 16; v9 = 0; goto LABEL_21; } LABEL_14: v8 = v7; v9 = v7 - 48; if ( (unsigned int)v9 <= 9 ) goto LABEL_20; if ( ___mb_cur_max == 1 ) { v10 = __pctype[v8]; if ( (v10 & 1) == 0 ) goto LABEL_17; } else if ( !_isctype(v8, 1) ) { v23 = *v3; if ( ___mb_cur_max != 1 ) { v11 = _isctype(v23, 2); goto LABEL_18; } v10 = __pctype[v23]; LABEL_17: v11 = v10 & 2; LABEL_18: if ( !v11 ) return 0LL; v9 = *v3 - 87; LABEL_20: v24 = Radix; goto LABEL_21; } v9 = *v3 - 55; v24 = Radix; goto LABEL_21; } Radix = 10; if ( v7 != 48 ) goto LABEL_14; if ( (v3[1] & 0xDF) == 88 ) { LABEL_54: v7 = v3[2]; Radix = 16; v3 += 2; goto LABEL_14; } v24 = 8; v9 = 0; Radix = 8; LABEL_21: v12 = (char *)(v3 + 1); if ( v9 >= v24 ) return 0LL; v13 = v9; v25 = v6; v14 = v9 >> 31; for ( i = v12; ; ++i ) { v16 = *i; v17 = v16 - 48; if ( (unsigned int)(v16 - 48) <= 9 ) goto LABEL_40; if ( ___mb_cur_max == 1 ) { v18 = __pctype[v16]; if ( (v18 & 1) != 0 ) goto LABEL_46; } else { if ( _isctype(v16, 1) ) { LABEL_46: v17 = *i - 55; goto LABEL_40; } v22 = *i; if ( ___mb_cur_max != 1 ) { v19 = _isctype(v22, 2); goto LABEL_27; } v18 = __pctype[v22]; } v19 = v18 & 2; LABEL_27: if ( !v19 ) break; v17 = *i - 87; LABEL_40: if ( v17 >= v24 ) break; if ( 0xFFFFFFFFFFFFFFFFLL / Radix + 1 < __PAIR64__(v14, v13) || (v21 = v17 + Radix * __PAIR64__(v14, v13), v21 < __PAIR64__(v14, v13)) ) { v25 = 1; } else { v14 = HIDWORD(v21); v13 = v21; } } if ( EndPtr ) *EndPtr = i; if ( v25 ) { v13 = -1; v14 = -1; *_errno() = 34; } else if ( v26 == 45 ) { v13 = -v13; v14 = (unsigned __int64)-__SPAIR64__(v14, v13) >> 32; } return __PAIR64__(v14, v13); } //----- (00451BA0) -------------------------------------------------------- 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; } // 451BA0: using guessed type WCHAR var_E[7]; //----- (00451C00) -------------------------------------------------------- int __cdecl vsnprintf_2(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; } //----- (00451C80) -------------------------------------------------------- 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; } // 78C408: using guessed type int __cdecl ___msvcrt_realloc(_DWORD, _DWORD); //----- (00451D00) -------------------------------------------------------- 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); } // 78C404: using guessed type int __cdecl ___msvcrt_free(_DWORD); // 451D00: using guessed type unsigned int var_1C[7]; //----- (00451D30) -------------------------------------------------------- char *__usercall sub_451D30@(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; } //----- (00452060) -------------------------------------------------------- int __usercall sub_452060@(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_451D30(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_451D30(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_452060(v14, v9); if ( !v15 ) break; ++v9; } while ( *(v9 - 1) ); return v15; } return C; } //----- (00452290) -------------------------------------------------------- int __usercall sub_452290@(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; } //----- (00452330) -------------------------------------------------------- int __usercall sub_452330@(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; } //----- (00452390) -------------------------------------------------------- int __usercall sub_452390@(_DWORD *a1@, _DWORD *a2@, int a3@) { int v5; // eax if ( *a1 ) ((void (*)(void))sub_452390)(); v5 = a1[2]; if ( v5 && a2 ) sub_452330(v5, a2); if ( a1[1] ) sub_452390(a3, a2); return __mingw_free((unsigned int)a1); } // 4523B8: variable 'a3' is possibly undefined //----- (004523E0) -------------------------------------------------------- int __usercall sub_4523E0@(_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; } //----- (00452430) -------------------------------------------------------- int __usercall sub_452430@(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_4523E0(v116); if ( !v115 ) { if ( v11 && sub_452290(v11, v114) ) { v115 = sub_452430(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_452330((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_452290(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_452330((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_452060(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_452330((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_452390(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_452430(a4); if ( v49 == 1 ) return 1; if ( *v35 == 44 ) { v25 = v35[1]; continue; } return v49; } } // 452AF1: variable 'v75' is possibly undefined // 452430: using guessed type _DWORD var_28[2]; // 452430: using guessed type char String[4]; //----- (00452CD0) -------------------------------------------------------- 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_4523E0(a4); *a4 = "glob-1.0-mingw32"; } v5 = sub_452430(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_452330((int)v13, a4); return v18; } } return (int *)v5; } //----- (00452DD0) -------------------------------------------------------- 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; } //----- (00452E30) -------------------------------------------------------- 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_78B3C0 = (int)__mingw_realloc(dword_78B3C0, MaxCount); v4 = (char *)dword_78B3C0; wcstombs((char *)dword_78B3C0, &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_78B3C0 = (int)__mingw_realloc(dword_78B3C0, v3); wcstombs((char *)dword_78B3C0, L".", v3); setlocale(2, v2); __mingw_free((unsigned int)v2); return (char *)dword_78B3C0; } return v4; } // 78B3C0: using guessed type int dword_78B3C0; //----- (00453250) -------------------------------------------------------- HANDLE __usercall sub_453250@(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; } //----- (00453340) -------------------------------------------------------- BOOL __usercall sub_453340@(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; } } //----- (00453400) -------------------------------------------------------- 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_453250(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; } // 453400: using guessed type char var_120[288]; //----- (00453600) -------------------------------------------------------- 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_453340(*(void **)(a1 + 272), a1) ? a1 : 0; } else { v2 = 0; *_errno() = 9; } return v2; } //----- (00453650) -------------------------------------------------------- int __cdecl __mingw_closedir(unsigned int a1) { if ( a1 && FindClose(*(HANDLE *)(a1 + 272)) ) { __mingw_free(a1); return 0; } else { *_errno() = 9; return -1; } } //----- (004536A0) -------------------------------------------------------- _DWORD *__cdecl __mingw_rewinddir(int a1) { _DWORD *result; // eax if ( a1 && FindClose(*(HANDLE *)(a1 + 272)) ) { result = sub_453250((const CHAR *)(a1 + 280), a1); *(_DWORD *)(a1 + 272) = result; if ( result != (_DWORD *)-1 ) *(_DWORD *)(a1 + 276) = 0; } else { result = _errno(); *result = 9; } return result; } //----- (00453700) -------------------------------------------------------- int __cdecl __mingw_telldir(int a1) { if ( a1 ) return *(_DWORD *)(a1 + 276); *_errno() = 9; return -1; } //----- (00453730) -------------------------------------------------------- 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_453340(*(void **)(a1 + 272), a1); } while ( result ); } } return result; } //----- (004537B0) -------------------------------------------------------- int __mingw_mbrtowc_codeset_init() { int v0; // ebx v0 = __mb_codeset_for_locale(); *__emutls_get_address(dword_515090) = v0; return v0; } // 515090: using guessed type size_t dword_515090[4]; //----- (004537D0) -------------------------------------------------------- UINT __cdecl __mingw_mbrlen_cur_max_init(UINT a1) { UINT v1; // ebx v1 = __mb_cur_max_for_codeset(a1); *__emutls_get_address(dword_5150A0) = v1; return v1; } // 5150A0: using guessed type size_t dword_5150A0[4]; //----- (00453800) -------------------------------------------------------- int __mingw_mbrlen_cur_max() { return *__emutls_get_address(dword_5150A0); } // 5150A0: using guessed type size_t dword_5150A0[4]; //----- (00453820) -------------------------------------------------------- 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_515090); do { SetLastError(0); v6 = MultiByteToWideChar(*address, dwFlags, lpMultiByteStr, a2 == 0 ? -1 : a2, lpWideCharStr, cchWideChar); if ( v6 ) break; dwFlags = 0; } while ( GetLastError() == 1004 ); return v6; } // 515090: using guessed type size_t dword_515090[4]; //----- (004538B0) -------------------------------------------------------- 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_5150A0); 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; } // 5150A0: using guessed type size_t dword_5150A0[4]; //----- (00453B40) -------------------------------------------------------- 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_5150A0) <= 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; } // 5150A0: using guessed type size_t dword_5150A0[4]; //----- (00453C60) -------------------------------------------------------- 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_532A14; } if ( !State ) v7 = (mbstate_t *)&unk_78B3C4; return __mingw_mbrtowc_handler(DstCh, (int)v4, SizeInBytes, v7); } //----- (00453CB0) -------------------------------------------------------- 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_78B3C8; 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; } //----- (00453DD0) -------------------------------------------------------- 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; } // 453DD0: using guessed type WCHAR var_20[9]; // 453DD0: using guessed type CHAR var_D[13]; //----- (00453E20) -------------------------------------------------------- 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_532A80)[2 * v2]; } return word_532A84[4 * v2]; } // 532A80: using guessed type char *off_532A80; // 532A84: using guessed type __int16 word_532A84[]; //----- (00453E70) -------------------------------------------------------- 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; } //----- (00453EB0) -------------------------------------------------------- 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; } //----- (00453F20) -------------------------------------------------------- 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; } //----- (00453F60) -------------------------------------------------------- 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; } //----- (00453FC0) -------------------------------------------------------- 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; } //----- (00453FF0) -------------------------------------------------------- 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_78B450 ) 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; } // 78B450: using guessed type char byte_78B450; //----- (004549F0) -------------------------------------------------------- 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; } //----- (00454B00) -------------------------------------------------------- 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; } //----- (00454B40) -------------------------------------------------------- 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; } //----- (00454C40) -------------------------------------------------------- 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; } } // 454C40: using guessed type int var_10[4]; //----- (00454D00) -------------------------------------------------------- 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; } //----- (00454D50) -------------------------------------------------------- _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; } //----- (00454DB0) -------------------------------------------------------- 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; } //----- (00454E20) -------------------------------------------------------- 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; } //----- (00454FC0) -------------------------------------------------------- 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; } //----- (00455040) -------------------------------------------------------- int __usercall sub_455040@(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; } // 4550A9: conditional instruction was optimized away because ecx.4==49 //----- (00455100) -------------------------------------------------------- int *__usercall sub_455100@(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_5150B0, v14, (int *)&v17, &v19, a1, a5, a6, &v20); } // 455134: variable 'v12' is possibly undefined // 455139: variable 'v10' is possibly undefined // 4551BB: variable 'v11' is possibly undefined // 5150B0: using guessed type int dword_5150B0[5]; //----- (00455200) -------------------------------------------------------- int __usercall sub_455200@(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; } //----- (00455260) -------------------------------------------------------- int __usercall sub_455260@(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_455200(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_455200(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_455200(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; } //----- (00455390) -------------------------------------------------------- int __usercall sub_455390@(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_455200(32, a3); result = *(_DWORD *)(a3 + 8); *(_DWORD *)(a3 + 8) = result - 1; } while ( result > 0 ); return result; } } else { *(_DWORD *)(a3 + 8) = v10 - 1; do { sub_455200(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_455200(v9, a3); } while ( a1 != v8 ); result = *(_DWORD *)(a3 + 8); *(_DWORD *)(a3 + 8) = result - 1; if ( result > 0 ) goto LABEL_9; return result; } //----- (00455460) -------------------------------------------------------- int __usercall sub_455460@(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_455390(&v8, v4 + 3 - &v8, a3); } //----- (00455500) -------------------------------------------------------- int __usercall sub_455500@(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_455200(v11, a3); } while ( v8 != v10 ); return 0; } // 455500: using guessed type char var_40[16]; //----- (00455580) -------------------------------------------------------- int __usercall sub_455580@(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; } //----- (00455660) -------------------------------------------------------- int __usercall sub_455660@(_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; } //----- (004556E0) -------------------------------------------------------- int __usercall sub_4556E0@(int *a1@) { int result; // eax _BYTE *v3; // edx int v4; // ecx _BYTE *v5; // [esp+Ch] [ebp-8h] BYREF v5 = (_BYTE *)*a1; result = sub_455660(&v5); v3 = v5; v4 = (int)++v5; if ( *v3 == 36 ) *a1 = v4; return result; } //----- (00455710) -------------------------------------------------------- int __usercall sub_455710@(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_78B3CD & 1) == 0 || v5 != 2) ) return 8; return result; } // 78B3CD: using guessed type char byte_78B3CD; //----- (00455790) -------------------------------------------------------- int __usercall sub_455790@(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_455500(v3, v2, a1); if ( result ) return sub_455200(46, a1); return result; } //----- (00455840) -------------------------------------------------------- int __usercall sub_455840@(int a1@, int a2@) { if ( a1 == 44 ) return sub_455500(*(_WORD *)(a2 + 40), *(_DWORD *)(a2 + 36), a2); if ( a1 == 46 ) return sub_455790(a2); return sub_455200(a1, a2); } //----- (00455880) -------------------------------------------------------- int __usercall sub_455880@(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_455580(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_455200(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_455840(v27, (int)v4); } while ( v26 != v25 ); result = v4[2]; for ( v4[2] = result - 1; result > 0; v4[2] = result - 1 ) { sub_455200(32, (int)v4); LABEL_42: result = v4[2]; } return result; } //----- (00455C50) -------------------------------------------------------- int __usercall sub_455C50@(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_455580(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_455200(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_455200(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_455200(43, a4); } else if ( (v11 & 0x40) != 0 ) { sub_455200(32, a4); } LABEL_23: v14 = *(_DWORD *)(a4 + 8); if ( v14 > 0 && (*(_DWORD *)(a4 + 4) & 0x600) == 512 ) { *(_DWORD *)(a4 + 8) = v14 - 1; do { sub_455200(48, a4); v25 = *(_DWORD *)(a4 + 8); *(_DWORD *)(a4 + 8) = v25 - 1; } while ( v25 > 0 ); } if ( v5 <= 0 ) { sub_455200(48, a4); } else { v32 = a2; v15 = v33; do { while ( 1 ) { v16 = 48; if ( *v32 ) v16 = (char)*v32++; sub_455200(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_455840(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_455790(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_455200(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_455200(v24, v6); LABEL_47: result = *(_DWORD *)(v6 + 12); } return result; } //----- (00455FC0) -------------------------------------------------------- int __usercall sub_455FC0@(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_455C50(a1, a2, 1, (int)a4); a4[3] = a4[8]; v9 = a4[1]; a4[1] = v9 | 0x1C0; sub_455200(v9 & 0x20 | 0x45, (int)a4); a4[2] += v6 + 1; return sub_455880(v12, HIDWORD(v12), (int)a4); } //----- (00456090) -------------------------------------------------------- void __usercall sub_456090(_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_455100(2, *(__int64 *)&v9, SHIDWORD(v9), v10, v4, &v8, &v7); v6 = v5; if ( v8 == -32768 ) sub_455460(v7, (int)v5, (int)a1); else sub_455FC0(v7, v5, v8, a1); __freedtoa(v6); } //----- (00456140) -------------------------------------------------------- void __usercall sub_456140(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_455100(3, *(__int64 *)&v9, SHIDWORD(v9), v10, v3, &v8, &v7); v5 = v4; if ( v8 == -32768 ) { sub_455460(v7, (int)v4, a1); __freedtoa(v5); } else { sub_455C50(v7, v4, v8, a1); while ( 1 ) { v6 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 8) = v6 - 1; if ( v6 <= 0 ) break; sub_455200(32, a1); } __freedtoa(v5); } } //----- (00456210) -------------------------------------------------------- void __usercall sub_456210(_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_455100(2, *(__int64 *)&v15, SHIDWORD(v15), v16, v3, &v14, &v13); v5 = v14; Str = v4; if ( v14 == -32768 ) { sub_455460(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_455FC0(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_455C50(v13, Str, v5, (int)a1); while ( 1 ) { v9 = a1[2]; a1[2] = v9 - 1; if ( v9 <= 0 ) break; sub_455200(32, (int)a1); } __freedtoa(Str); } } } //----- (004563A0) -------------------------------------------------------- int __usercall sub_4563A0@(_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_455460(0, (int)&off_532BD9, (int)a1); if ( (SWORD4(a2) & 0x8000u) != 0 ) a1[1] |= 0x80u; __asm { fxam } if ( (v5 & 0x4500) == 1280 ) return sub_455460(WORD4(a2) & 0x8000, (int)&off_532BDD, (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_455200(32, (int)a1); v37 = a1[2]; a1[2] = v37 - 1; } while ( v37 > 0 ); v41 = a1[1]; } } } LABEL_30: if ( (v41 & 0x80u) != 0 ) { sub_455200(45, (int)a1); } else if ( (v41 & 0x100) != 0 ) { sub_455200(43, (int)a1); } else if ( (v41 & 0x40) != 0 ) { sub_455200(32, (int)a1); } sub_455200(48, (int)a1); sub_455200(a1[1] & 0x20 | 0x58, (int)a1); v20 = a1[2]; if ( v20 > 0 && (a1[1] & 0x600) == 512 ) { a1[2] = v20 - 1; do { sub_455200(48, (int)a1); v36 = a1[2]; a1[2] = v36 - 1; } while ( v36 > 0 ); } if ( v13 <= &v46 ) goto LABEL_40; do { v21 = *--v13; sub_455840(v21, (int)a1); } while ( v13 != &v46 ); v22 = a1[3]; a1[3] = v22 - 1; if ( v22 > 0 ) { do { sub_455200(48, (int)a1); LABEL_40: v23 = a1[3]; a1[3] = v23 - 1; } while ( v23 > 0 ); } sub_455200(a1[1] & 0x20 | 0x50, (int)a1); a1[2] += v19; a1[1] |= 0x1C0u; return sub_455880(v38, v38 >> 31, (int)a1); } // 532BD9: using guessed type void *off_532BD9; // 532BDD: using guessed type void *off_532BDD; //----- (00456950) -------------------------------------------------------- int __usercall sub_456950@(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_455580(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_455200(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_455200(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_455200(v23, v21); } while ( v22 < (unsigned int)v20 ); v24 = (int)v39; if ( v40 > 0 ) goto LABEL_27; return result; } //----- (00456D50) -------------------------------------------------------- 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_455660(&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_455040((int *)&v141); v17 = (_BYTE *)LODWORD(v141); LOBYTE(v139) = *(_BYTE *)LODWORD(v141); v18 = strchr("aAeEfFgGcCdiouxXnpsS", (char)v139); v19 = v139; if ( v18 && (unsigned int)(v18 - 5450677) > 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_455660(&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_455660(&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_455040((int *)&v141); v17 = (_BYTE *)LODWORD(v141); LOBYTE(v137) = *(_BYTE *)LODWORD(v141); v52 = strchr("aAeEfFgGcCdiouxXnpsS", (char)v137); v19 = v137; if ( v52 ) { if ( (unsigned int)(v52 - 5450677) > 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_78B3CD & 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_455660(&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_455040((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_455660(&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_455660(&v141); if ( !v128 ) { sub_455040((int *)&v141); v37 = LODWORD(v141); LOBYTE(v135) = *(_BYTE *)LODWORD(v141); goto LABEL_97; } ++LODWORD(v141); LABEL_38: v35 = sub_455040((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_455710(v140), v120 = sub_455710(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_455200(v61, (int)&v142); v63 = a4; goto LABEL_80; } if ( v138 ) { v68 = sub_4556E0((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_4556E0((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_455200(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_455040((int *)&a4); v64 = a4; v137 = v83; if ( v65 != 108 || (byte_78B3CD & 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_456950(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_4563A0(&v142, v92); v63 = a4; } else { LABEL_180: v98 = *v62++; sub_4563A0(&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_455260((int)&v141, 1, (int)&v142); v63 = a4; } else { v62 = (double *)((char *)v62 + 4); LOBYTE(v141) = *(_DWORD *)v86; sub_455390((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_455880(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_456090(&v142, v94); v63 = a4; } else { LABEL_172: v97 = *v62++; sub_456090(&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_456140((int)&v142, v93); v63 = a4; } else { LABEL_168: v95 = *v62++; sub_456140((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_456210(&v142, v96); v63 = a4; } else { LABEL_201: v109 = *v62++; sub_456210(&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_456950(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_532BE2; v116 = wcslen(v115); sub_455260((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_455390(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; } } } // 532BE2: using guessed type void *off_532BE2; // 78B3CD: using guessed type char byte_78B3CD; //----- (00457C80) -------------------------------------------------------- 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; } // 78B3D0: using guessed type int __mingw_memalign_lwm; //----- (00457D40) -------------------------------------------------------- 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; } // 78B3D0: using guessed type int __mingw_memalign_lwm; // 78C408: using guessed type int __cdecl ___msvcrt_realloc(_DWORD, _DWORD); //----- (00457E20) -------------------------------------------------------- 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_532D84); 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; } // 457E20: using guessed type char var_3C[16]; //----- (00457F50) -------------------------------------------------------- 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; } //----- (00457F80) -------------------------------------------------------- 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; } } } //----- (00458170) -------------------------------------------------------- int __mingw_wctomb_codeset_init() { int v0; // ebx v0 = __mb_codeset_for_locale(); *__emutls_get_address(dword_5150C4) = v0; return v0; } // 5150C4: using guessed type size_t dword_5150C4[4]; //----- (00458190) -------------------------------------------------------- UINT __cdecl __mingw_wctomb_cur_max_init(UINT a1) { UINT v1; // ebx v1 = __mb_cur_max_for_codeset(a1); *__emutls_get_address(dword_5150D4) = v1; return v1; } // 5150D4: using guessed type size_t dword_5150D4[4]; //----- (004581C0) -------------------------------------------------------- int __mingw_wctomb_cur_max() { return *__emutls_get_address(dword_5150D4); } // 5150D4: using guessed type size_t dword_5150D4[4]; //----- (004581E0) -------------------------------------------------------- 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_5150C4); 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; } // 5150C4: using guessed type size_t dword_5150C4[4]; //----- (00458410) -------------------------------------------------------- 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_532DA9, 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_532898[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; } // 532898: using guessed type double dbl_532898[]; // 5328A0: using guessed type double __tens_D2A[24]; // 532DA9: using guessed type void *off_532DA9; // 458410: using guessed type unsigned int var_20[8]; //----- (00459A80) -------------------------------------------------------- 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; } //----- (00459AC0) -------------------------------------------------------- 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; } //----- (00459B40) -------------------------------------------------------- void __cdecl __freedtoa(_DWORD *a1) { int v1; // ecx v1 = *(a1 - 1); *a1 = v1; a1[1] = 1 << v1; __Bfree_D2A((unsigned int)(a1 - 1)); } //----- (00459B60) -------------------------------------------------------- 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; } //----- (0045A000) -------------------------------------------------------- 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; } //----- (0045A080) -------------------------------------------------------- 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); } //----- (0045A0C0) -------------------------------------------------------- int __cdecl __gthr_win32_key_delete(__gthread_key_t key) { if ( TlsFree(key) ) return 0; else return GetLastError(); } //----- (0045A0F0) -------------------------------------------------------- void *__cdecl __gthr_win32_getspecific(__gthread_key_t key) { DWORD LastError; // esi void *Value; // ebx LastError = GetLastError(); Value = TlsGetValue(key); SetLastError(LastError); return Value; } //----- (0045A120) -------------------------------------------------------- int __cdecl __gthr_win32_setspecific(__gthread_key_t key, const void *ptr) { if ( TlsSetValue(key, (LPVOID)ptr) ) return 0; else return GetLastError(); } //----- (0045A150) -------------------------------------------------------- void __cdecl __gthr_win32_mutex_init_function(__gthread_mutex_t *mutex) { mutex->counter = -1; mutex->sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); } //----- (0045A190) -------------------------------------------------------- void __cdecl __gthr_win32_mutex_destroy(__gthread_mutex_t *mutex) { CloseHandle(mutex->sema); } //----- (0045A1B0) -------------------------------------------------------- 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; } //----- (0045A200) -------------------------------------------------------- int __cdecl __gthr_win32_mutex_trylock(__gthread_mutex_t *mutex) { return _InterlockedCompareExchange(&mutex->counter, 0, -1) >= 0; } //----- (0045A220) -------------------------------------------------------- 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; } //----- (0045A270) -------------------------------------------------------- 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); } //----- (0045A2C0) -------------------------------------------------------- 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; } } //----- (0045A350) -------------------------------------------------------- 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; } //----- (0045A3A0) -------------------------------------------------------- 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; } //----- (0045A400) -------------------------------------------------------- int __cdecl __gthr_win32_recursive_mutex_destroy(__gthread_recursive_mutex_t *mutex) { CloseHandle(mutex->sema); return 0; } //----- (0045A420) -------------------------------------------------------- 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; } //----- (0045A560) -------------------------------------------------------- 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]; } //----- (0045A5D0) -------------------------------------------------------- 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; } // 45A5D0: using guessed type unsigned int var_1C[7]; //----- (0045AD70) -------------------------------------------------------- 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; } //----- (0045ADF0) -------------------------------------------------------- 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; } //----- (0045B480) -------------------------------------------------------- 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; } //----- (0045B610) -------------------------------------------------------- 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; } // 45B610: using guessed type int var_11C[71]; //----- (0045BC40) -------------------------------------------------------- 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; } } } //----- (0045BF30) -------------------------------------------------------- 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; } // 5150E4: using guessed type int once_regsizes_22907; // 78A9D4: using guessed type int _CRT_MT; //----- (0045C130) -------------------------------------------------------- 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; } //----- (0045C1A0) -------------------------------------------------------- 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; } // 45C1A0: using guessed type _DWORD var_DC[42]; //----- (0045C270) -------------------------------------------------------- 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; } //----- (0045C3B0) -------------------------------------------------------- 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; } //----- (0045C3F0) -------------------------------------------------------- _Unwind_Word __cdecl _Unwind_GetCFA(_Unwind_Context *context) { return (_Unwind_Word)context->cfa; } //----- (0045C400) -------------------------------------------------------- _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; } //----- (0045C450) -------------------------------------------------------- _Unwind_Ptr __cdecl _Unwind_GetIP(_Unwind_Context *context) { return (_Unwind_Ptr)context->ra; } //----- (0045C460) -------------------------------------------------------- _Unwind_Ptr __cdecl _Unwind_GetIPInfo(_Unwind_Context *context, int *ip_before_insn) { *ip_before_insn = context->flags >> 31; return (_Unwind_Ptr)context->ra; } //----- (0045C480) -------------------------------------------------------- void __cdecl _Unwind_SetIP(_Unwind_Context *context, _Unwind_Ptr val) { context->ra = (void *)val; } //----- (0045C490) -------------------------------------------------------- void *__cdecl _Unwind_GetLanguageSpecificData(_Unwind_Context *context) { return context->lsda; } //----- (0045C4A0) -------------------------------------------------------- _Unwind_Ptr __cdecl _Unwind_GetRegionStart(_Unwind_Context *context) { return (_Unwind_Ptr)context->bases.func; } //----- (0045C4B0) -------------------------------------------------------- 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; } //----- (0045C4E0) -------------------------------------------------------- _Unwind_Ptr __cdecl _Unwind_GetDataRelBase(_Unwind_Context *context) { return (_Unwind_Ptr)context->bases.dbase; } //----- (0045C4F0) -------------------------------------------------------- _Unwind_Ptr __cdecl _Unwind_GetTextRelBase(_Unwind_Context *context) { return (_Unwind_Ptr)context->bases.tbase; } //----- (0045C500) -------------------------------------------------------- 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; } //----- (0045C5F0) -------------------------------------------------------- _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; } // 45C602: variable 'v2' is possibly undefined // 45C608: variable 'v1' is possibly undefined // 45C71E: variable 'v9' is possibly undefined //----- (0045C740) -------------------------------------------------------- _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; } // 45C752: variable 'v4' is possibly undefined // 45C758: variable 'v3' is possibly undefined // 45C7C5: variable 'v8' is possibly undefined //----- (0045C7F0) -------------------------------------------------------- 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; } // 45C861: variable 'v5' is possibly undefined // 45C861: variable 'v4' is possibly undefined //----- (0045C890) -------------------------------------------------------- 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); } } // 45C922: variable 'v5' is possibly undefined //----- (0045C940) -------------------------------------------------------- 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); } //----- (0045C960) -------------------------------------------------------- _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; } //----- (0045C9E0) -------------------------------------------------------- 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; } //----- (0045CA00) -------------------------------------------------------- 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; } } } //----- (0045CAD0) -------------------------------------------------------- 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 ); } } //----- (0045CB70) -------------------------------------------------------- void init_object_mutex() { object_mutex.counter = -1; object_mutex.sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); } //----- (0045CBB0) -------------------------------------------------------- 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; } //----- (0045CC00) -------------------------------------------------------- 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); } //----- (0045CC50) -------------------------------------------------------- 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; } //----- (0045CD90) -------------------------------------------------------- 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; } // 45CD90: using guessed type _Unwind_Ptr y_ptr[4]; //----- (0045CE00) -------------------------------------------------------- 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; } // 45CE00: using guessed type _Unwind_Ptr dummy[4]; //----- (0045CF00) -------------------------------------------------------- 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; } // 45CF00: using guessed type _Unwind_Ptr pc_begin[8]; //----- (0045D060) -------------------------------------------------------- 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; } } } } // 45D060: using guessed type _Unwind_Ptr pc_begin[8]; //----- (0045D170) -------------------------------------------------------- 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; } // 45D170: using guessed type _Unwind_Ptr pc_range[8]; //----- (0045D2A0) -------------------------------------------------------- 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; } // 45D2A0: using guessed type _Unwind_Ptr y_ptr[8]; //----- (0045D320) -------------------------------------------------------- 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; } //----- (0045D9A0) -------------------------------------------------------- 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_5150F0) ) { 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); } } // 5150EC: using guessed type int once_22341; // 78A9D4: using guessed type int _CRT_MT; //----- (0045DB00) -------------------------------------------------------- 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); } } //----- (0045DB30) -------------------------------------------------------- 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); } } //----- (0045DB60) -------------------------------------------------------- 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); } } //----- (0045DBA0) -------------------------------------------------------- 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_5150F0) ) { 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); } } // 5150EC: using guessed type int once_22341; // 78A9D4: using guessed type int _CRT_MT; //----- (0045DD10) -------------------------------------------------------- void __cdecl __register_frame_info_table(void *begin, object *ob) { __register_frame_info_table_bases(begin, ob, 0, 0); } //----- (0045DD40) -------------------------------------------------------- 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); } //----- (0045DD80) -------------------------------------------------------- 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_5150F0) ) { 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; } // 5150EC: using guessed type int once_22341; // 78A9D4: using guessed type int _CRT_MT; //----- (0045DF90) -------------------------------------------------------- void __cdecl __deregister_frame(void *begin) { void *v1; // eax if ( *(_DWORD *)begin ) { v1 = __deregister_frame_info_bases(begin); __mingw_free((unsigned int)v1); } } //----- (0045DFC0) -------------------------------------------------------- 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_5150F0) ) { 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; } } // 5150EC: using guessed type int once_22341; // 78A9D4: using guessed type int _CRT_MT; // 45DFC0: using guessed type _Unwind_Ptr func[8]; //----- (0045E240) -------------------------------------------------------- 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); } //----- (0045E290) -------------------------------------------------------- _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; } //----- (0045E330) -------------------------------------------------------- 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; } //----- (0045E3A0) -------------------------------------------------------- _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_5150F8) ) { 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; } // 5150F4: using guessed type int once_21263; // 78A9D4: using guessed type int _CRT_MT; //----- (0045E610) -------------------------------------------------------- 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; } } //----- (0045E990) -------------------------------------------------------- int __cdecl __mingwthr_key_dtor(int a1, int a2) { if ( a2 ) return ___w64_mingwthr_add_key_dtor(a1, a2); else return 0; } //----- (0045E9B0) -------------------------------------------------------- int __cdecl GetUnicode[abi:cxx11](int a1, unsigned int a2) { char v2; // bl unsigned int v3; // eax unsigned int v4; // eax v2 = a2; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; if ( a2 > 0x7F ) { if ( a2 > 0x7FF ) { if ( a2 > 0xFFFF ) { std::string::push_back((_DWORD *)a1, (a2 >> 18) | 0xF0); v4 = (a2 >> 12) & 0x3F | 0xFFFFFF80; } else { v4 = (a2 >> 12) | 0xFFFFFFE0; } std::string::push_back((_DWORD *)a1, v4); v3 = (a2 >> 6) & 0x3F | 0xFFFFFF80; } else { v3 = (a2 >> 6) | 0xFFFFFFC0; } std::string::push_back((_DWORD *)a1, v3); v2 = a2 & 0x3F | 0x80; } std::string::push_back((_DWORD *)a1, v2); return a1; } //----- (0045EA6C) -------------------------------------------------------- int __cdecl GetJsonDict(int *a1, int a2) { _BYTE *v2; // eax unsigned int v3; // edx int JsonString; // eax unsigned int v5; // edx _DWORD *v6; // eax unsigned int v7; // edx int v9; // [esp+1Ch] [ebp-5Ch] unsigned int v10; // [esp+2Ch] [ebp-4Ch] BYREF void *v11[2]; // [esp+30h] [ebp-48h] BYREF char v12; // [esp+38h] [ebp-40h] BYREF void *v13[2]; // [esp+48h] [ebp-30h] BYREF char v14; // [esp+50h] [ebp-28h] BYREF std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a2 + 8)); *(_DWORD *)(a2 + 12) = a2 + 4; *(_DWORD *)(a2 + 16) = a2 + 4; v2 = (_BYTE *)*a1; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 20) = 0; if ( *v2 != 123 ) return -1; v10 = 1; while ( 1 ) { v3 = a1[1]; if ( v10 >= v3 ) return 0; v11[1] = 0; v11[0] = &v12; v12 = 0; v13[0] = &v14; v13[1] = 0; v14 = 0; while ( v10 < v3 ) { if ( *(_BYTE *)(*a1 + v10) == 34 ) goto LABEL_9; ++v10; } if ( v10 == v3 ) goto LABEL_26; LABEL_9: JsonString = GetJsonString(a1, (int *)&v10, v11); if ( JsonString ) goto LABEL_27; v5 = a1[1]; while ( v10 < v5 ) { if ( *(_BYTE *)(*a1 + v10) == 58 ) goto LABEL_18; ++v10; } if ( v10 == v5 ) { LABEL_26: std::string::_M_dispose(v13); std::string::_M_dispose(v11); return 0; } LABEL_18: while ( v10 < v5 ) { if ( *(_BYTE *)(*a1 + v10) == 34 ) goto LABEL_20; ++v10; } if ( v10 == v5 ) goto LABEL_26; LABEL_20: JsonString = GetJsonString(a1, (int *)&v10, v13); if ( JsonString ) { LABEL_27: v9 = JsonString; std::string::_M_dispose(v13); std::string::_M_dispose(v11); return v9; } v6 = std::map::operator[]((_DWORD *)a2, (int)v11); std::string::_M_assign((int)v6, (int)v13); v7 = a1[1]; while ( v10 < v7 && *(_BYTE *)(*a1 + v10) != 44 ) ++v10; std::string::_M_dispose(v13); std::string::_M_dispose(v11); } } //----- (0045EC00) -------------------------------------------------------- int __cdecl GetJsonString(int *a1, int *a2, _DWORD *a3) { int v3; // ebx int v4; // edx char v5; // al int v6; // eax char v7; // al int UnicodeNum; // edi int v9; // eax __int16 v10; // ax char v12; // [esp+4h] [ebp-114h] int v13; // [esp+18h] [ebp-100h] unsigned int v14; // [esp+1Ch] [ebp-FCh] int v15; // [esp+1Ch] [ebp-FCh] int v16[6]; // [esp+20h] [ebp-F8h] BYREF char v17[4]; // [esp+38h] [ebp-E0h] BYREF int v18[55]; // [esp+3Ch] [ebp-DCh] BYREF std::ostringstream::basic_ostringstream((int)v17); v3 = *a2; if ( *(_BYTE *)(*a1 + *a2) != 34 ) { LABEL_41: v9 = ~v3; goto LABEL_42; } for ( *a2 = v3 + 1; ; ++*a2 ) { v3 = *a2; v14 = a1[1]; if ( *a2 >= v14 ) goto LABEL_41; v4 = *a1; v5 = *(_BYTE *)(*a1 + v3); if ( v5 == 34 ) break; if ( v5 == 92 ) { if ( v3 + 1 >= v14 ) { v6 = -2; LABEL_31: v9 = v6 - v3; goto LABEL_42; } v7 = *(_BYTE *)(v4 + v3 + 1); if ( v7 == 110 ) { v12 = 10; goto LABEL_26; } if ( v7 <= 110 ) { if ( v7 == 98 ) { v12 = 8; goto LABEL_26; } if ( v7 <= 98 ) { if ( v7 != 47 && v7 != 92 && v7 != 34 ) goto LABEL_41; std::operator<<>((std::ostream::sentry *)v17, *(_BYTE *)(v4 + v3 + 1)); goto LABEL_27; } if ( v7 != 102 ) goto LABEL_41; v12 = 12; LABEL_26: std::operator<<>((std::ostream::sentry *)v17, v12); LABEL_27: ++*a2; continue; } if ( v7 == 116 ) { v12 = 9; goto LABEL_26; } if ( v7 != 117 ) { if ( v7 != 114 ) goto LABEL_41; v12 = 13; goto LABEL_26; } v13 = *a1; UnicodeNum = GetUnicodeNum(a1, v3); if ( (unsigned int)(UnicodeNum - 55296) > 0x3FF ) { *a2 = v3 + 5; } else { if ( v3 + 11 >= v14 || *(_BYTE *)(v13 + v3 + 6) != 92 ) { v6 = -7; goto LABEL_31; } if ( *(_BYTE *)(v13 + v3 + 7) != 117 ) { v6 = -8; goto LABEL_31; } v10 = GetUnicodeNum(a1, v3 + 6); *a2 = v3 + 11; UnicodeNum = (v10 & 0x3FF | (UnicodeNum << 10) & 0xFFC00) + 0x10000; } GetUnicode[abi:cxx11]((int)v16, UnicodeNum); std::operator<<((std::ostream::sentry *)v17, v16); std::string::_M_dispose((void **)v16); } else { std::operator<<>((std::ostream::sentry *)v17, *(_BYTE *)(*a1 + v3)); } } *a2 = v3 + 1; std::stringbuf::str((int)v16, v18); std::string::operator=(a3, v16); std::string::_M_dispose((void **)v16); v9 = 0; LABEL_42: v15 = v9; std::ostringstream::~ostringstream((int)v17); return v15; } // 45EC00: using guessed type char var_E0[4]; // 45EC00: using guessed type int var_DC[55]; //----- (0045EE44) -------------------------------------------------------- int __cdecl GetUnicodeNum(int *a1, int a2) { int v2; // edi int v3; // ebx int v4; // ebx int v5; // ebx v2 = *a1; v3 = HexDigit(*(_BYTE *)(*a1 + a2 + 2), 12); v4 = HexDigit(*(_BYTE *)(v2 + a2 + 3), 8) + v3; v5 = HexDigit(*(_BYTE *)(v2 + a2 + 4), 4) + v4; return v5 + HexDigit(*(_BYTE *)(v2 + a2 + 5), 0); } //----- (0045EEBC) -------------------------------------------------------- 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; } // 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); // 45EEBC: using guessed type char var_E0[4]; // 45EEBC: using guessed type int var_DC[55]; //----- (0045F034) -------------------------------------------------------- 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; } // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 45F034: using guessed type char var_D0[4]; // 45F034: using guessed type int var_CC[51]; //----- (0045F110) -------------------------------------------------------- int __cdecl _txnal_cow_string_D1() { int v0; // eax v0 = MEMORY[0](); return MEMORY[0](1, 0, v0 - 12); } //----- (0045F140) -------------------------------------------------------- void __cdecl __noreturn _txnal_cow_string_c_str() { JUMPOUT(0); } // 45F144: control flows out of bounds to 0 //----- (0045F150) -------------------------------------------------------- void __cdecl __noreturn _txnal_sso_string_c_str() { JUMPOUT(0); } // 45F154: control flows out of bounds to 0 //----- (0045F160) -------------------------------------------------------- char *__cdecl _txnal_logic_error_get_msg(char *a1) { return a1 + 4; } //----- (0045F170) -------------------------------------------------------- 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); } } // 78A9D4: using guessed type int _CRT_MT; // 45F170: using guessed type int var_D[3]; //----- (0045F1C0) -------------------------------------------------------- char *__cdecl _txnal_runtime_error_get_msg(char *a1) { return a1 + 4; } //----- (0045F1D0) -------------------------------------------------------- _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; } // 506514: using guessed type void __noreturn _txnal_cow_string_C1_for_exceptions(void); //----- (0045F240) -------------------------------------------------------- int __cdecl HexDigit(char a1, char a2) { int v2; // eax if ( (unsigned __int8)(a1 - 48) > 9u ) { if ( (unsigned __int8)(a1 - 97) > 5u ) { v2 = 0; if ( (unsigned __int8)(a1 - 65) <= 5u ) v2 = a1 - 55; } else { v2 = a1 - 87; } } else { v2 = a1 - 48; } return v2 << a2; } //----- (0045F280) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNKSt11logic_error4whatEv(int a1) { JUMPOUT(0); } // 45F287: control flows out of bounds to 0 //----- (0045F2A0) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNKSt13runtime_error4whatEv(int a1) { JUMPOUT(0); } // 45F2A7: control flows out of bounds to 0 //----- (0045F2C0) -------------------------------------------------------- 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_530AF4, v1); MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::logic_error::~logic_error(v2); } // 45F2D3: variable 'v1' is possibly undefined // 45F2C0: using guessed type _DWORD var_14[5]; //----- (0045F320) -------------------------------------------------------- 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_530AF4, v1); MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::logic_error::~logic_error(v2); } // 45F333: variable 'v1' is possibly undefined // 45F320: using guessed type _DWORD var_14[5]; //----- (0045F380) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt11logic_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 45F39B: control flows out of bounds to 0 //----- (0045F3A0) -------------------------------------------------------- int _ZGTtNSt11logic_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0045F3B0) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_5385E4; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::range_error::~range_error(v2); } // 45F3C3: variable 'v1' is possibly undefined // 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); //----- (0045F420) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_5385E4; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::range_error::~range_error(v2); } // 45F433: variable 'v1' is possibly undefined // 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); //----- (0045F490) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt11range_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 45F4AB: control flows out of bounds to 0 //----- (0045F4B0) -------------------------------------------------------- int _ZGTtNSt11range_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0045F4C0) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_538668; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::domain_error::~domain_error(v2); } // 45F4D3: variable 'v1' is possibly undefined // 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); //----- (0045F530) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_538668; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::domain_error::~domain_error(v2); } // 45F543: variable 'v1' is possibly undefined // 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); //----- (0045F5A0) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt12domain_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 45F5BB: control flows out of bounds to 0 //----- (0045F5C0) -------------------------------------------------------- int _ZGTtNSt12domain_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0045F5D0) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_53867C; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::length_error::~length_error(v2); } // 45F5E3: variable 'v1' is possibly undefined // 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); //----- (0045F640) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_53867C; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::length_error::~length_error(v2); } // 45F653: variable 'v1' is possibly undefined // 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); //----- (0045F6B0) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt12length_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 45F6CB: control flows out of bounds to 0 //----- (0045F6D0) -------------------------------------------------------- int _ZGTtNSt12length_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0045F6E0) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_538690; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::out_of_range::~out_of_range(v2); } // 45F6F3: variable 'v1' is possibly undefined // 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); //----- (0045F750) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_538690; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::out_of_range::~out_of_range(v2); } // 45F763: variable 'v1' is possibly undefined // 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); //----- (0045F7C0) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt12out_of_rangeD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 45F7DB: control flows out of bounds to 0 //----- (0045F7E0) -------------------------------------------------------- int _ZGTtNSt12out_of_rangeD2Ev() { return _txnal_cow_string_D1(); } //----- (0045F7F0) -------------------------------------------------------- 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_530AF4, v1); MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::runtime_error::~runtime_error(v2); } // 45F803: variable 'v1' is possibly undefined // 45F7F0: using guessed type _DWORD var_14[5]; //----- (0045F850) -------------------------------------------------------- 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_530AF4, v1); MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::runtime_error::~runtime_error(v2); } // 45F863: variable 'v1' is possibly undefined // 45F850: using guessed type _DWORD var_14[5]; //----- (0045F8B0) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt13runtime_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 45F8CB: control flows out of bounds to 0 //----- (0045F8D0) -------------------------------------------------------- int _ZGTtNSt13runtime_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0045F8E0) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_5389A8; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::overflow_error::~overflow_error(v2); } // 45F8F3: variable 'v1' is possibly undefined // 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); //----- (0045F950) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_5389A8; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::overflow_error::~overflow_error(v2); } // 45F963: variable 'v1' is possibly undefined // 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); //----- (0045F9C0) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt14overflow_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 45F9DB: control flows out of bounds to 0 //----- (0045F9E0) -------------------------------------------------------- int _ZGTtNSt14overflow_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0045F9F0) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_538BC0; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::underflow_error::~underflow_error(v2); } // 45FA03: variable 'v1' is possibly undefined // 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); //----- (0045FA60) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_538BC0; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::underflow_error::~underflow_error(v2); } // 45FA73: variable 'v1' is possibly undefined // 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); //----- (0045FAD0) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt15underflow_errorD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 45FAEB: control flows out of bounds to 0 //----- (0045FAF0) -------------------------------------------------------- int _ZGTtNSt15underflow_errorD2Ev() { return _txnal_cow_string_D1(); } //----- (0045FB00) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_538BF4; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::invalid_argument::~invalid_argument(v2); } // 45FB13: variable 'v1' is possibly undefined // 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); //----- (0045FB70) -------------------------------------------------------- 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_530AF4, v1); v2[0] = (int)&off_538BF4; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::invalid_argument::~invalid_argument(v2); } // 45FB83: variable 'v1' is possibly undefined // 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); //----- (0045FBE0) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt16invalid_argumentD0Ev(int a1) { _txnal_cow_string_D1(); JUMPOUT(0); } // 45FBFB: control flows out of bounds to 0 //----- (0045FC00) -------------------------------------------------------- int _ZGTtNSt16invalid_argumentD2Ev() { return _txnal_cow_string_D1(); } //----- (0045FC10) -------------------------------------------------------- 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); } } //----- (0045FC60) -------------------------------------------------------- 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]; } // 45FC60: using guessed type int var_10[4]; //----- (0045FCE0) -------------------------------------------------------- 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; } //----- (0045FD40) -------------------------------------------------------- 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; } //----- (0045FE20) -------------------------------------------------------- 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; } //----- (0045FE90) -------------------------------------------------------- _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); } //----- (0045FF10) -------------------------------------------------------- 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]); } } //----- (0045FF60) -------------------------------------------------------- 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; } //----- (004600A0) -------------------------------------------------------- void __cdecl __noreturn __cxxabiv1::__terminate(void (*a1)(void)) { a1(); JUMPOUT(0x504A20); } // 4600A7: control flows out of bounds to 504A20 // 504A18: using guessed type void __noreturn __cxxabiv1::__terminate(void); //----- (004600C0) -------------------------------------------------------- void __cdecl __noreturn __cxxabiv1::__unexpected(void (*a1)(void)) { a1(); std::terminate(); } //----- (004600D0) -------------------------------------------------------- void __fastcall __cxxabiv1::__forced_unwind::~__forced_unwind(void *a1) { operator delete(a1, 4u); } //----- (00460100) -------------------------------------------------------- void __fastcall __cxxabiv1::__class_type_info::~__class_type_info(_DWORD *a1) { std::type_info *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_537714; std::type_info::~type_info(v2); operator delete(a1, 8u); } // 46010C: variable 'v2' is possibly undefined // 537714: using guessed type void (__cdecl *off_537714)(__cxxabiv1::__class_type_info *__hidden this); //----- (00460130) -------------------------------------------------------- void __cdecl __cxxabiv1::__class_type_info::~__class_type_info(__cxxabiv1::__class_type_info *this) { _DWORD *v1; // ecx *v1 = &off_537714; std::type_info::~type_info(this); } // 460130: variable 'v1' is possibly undefined // 537714: using guessed type void (__cdecl *off_537714)(__cxxabiv1::__class_type_info *__hidden this); //----- (00460140) -------------------------------------------------------- void __fastcall __cxxabiv1::__foreign_exception::~__foreign_exception(void *a1) { operator delete(a1, 4u); } //----- (00460170) -------------------------------------------------------- void __fastcall __cxxabiv1::__si_class_type_info::~__si_class_type_info(_DWORD *a1) { __cxxabiv1::__class_type_info *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_537754; __cxxabiv1::__class_type_info::~__class_type_info(v2); operator delete(a1, 0xCu); } // 46017C: variable 'v2' is possibly undefined // 537754: using guessed type void (__cdecl *off_537754)(__cxxabiv1::__si_class_type_info *__hidden this); //----- (004601A0) -------------------------------------------------------- void __cdecl __cxxabiv1::__si_class_type_info::~__si_class_type_info(__cxxabiv1::__si_class_type_info *this) { _DWORD *v1; // ecx *v1 = &off_537754; __cxxabiv1::__class_type_info::~__class_type_info(this); } // 4601A0: variable 'v1' is possibly undefined // 537754: using guessed type void (__cdecl *off_537754)(__cxxabiv1::__si_class_type_info *__hidden this); //----- (004601B0) -------------------------------------------------------- void __fastcall __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(_DWORD *a1) { __cxxabiv1::__class_type_info *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_537780; __cxxabiv1::__class_type_info::~__class_type_info(v2); operator delete(a1, 0x18u); } // 4601BC: variable 'v2' is possibly undefined // 537780: using guessed type void (__cdecl *off_537780)(__cxxabiv1::__vmi_class_type_info *__hidden this); //----- (004601E0) -------------------------------------------------------- void __cdecl __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__cxxabiv1::__vmi_class_type_info *this) { _DWORD *v1; // ecx *v1 = &off_537780; __cxxabiv1::__class_type_info::~__class_type_info(this); } // 4601E0: variable 'v1' is possibly undefined // 537780: using guessed type void (__cdecl *off_537780)(__cxxabiv1::__vmi_class_type_info *__hidden this); //----- (004601F0) -------------------------------------------------------- __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_8); } return &`anonymous namespace'::get_locale_mutex(void)::locale_mutex; } // 78A9D4: using guessed type int _CRT_MT; //----- (00460270) -------------------------------------------------------- void __fastcall `anonymous namespace'::io_error_category::~io_error_category(_DWORD *a1) { std::_V2::error_category *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5377AC; std::_V2::error_category::~error_category(v2); operator delete(a1); } // 46027C: variable 'v2' is possibly undefined // 5377AC: using guessed type void (__cdecl *off_5377AC)(_anonymous_namespace_::io_error_category *__hidden this); //----- (00460290) -------------------------------------------------------- void __cdecl `anonymous namespace'::io_error_category::~io_error_category( _anonymous_namespace_::io_error_category *this) { _DWORD *v1; // ecx *v1 = &off_5377AC; std::_V2::error_category::~error_category(this); } // 460290: variable 'v1' is possibly undefined // 5377AC: using guessed type void (__cdecl *off_5377AC)(_anonymous_namespace_::io_error_category *__hidden this); //----- (004602A0) -------------------------------------------------------- void __fastcall `anonymous namespace'::system_error_category::~system_error_category(void *a1) { operator delete(a1); } //----- (004602C0) -------------------------------------------------------- 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_9); } return &`anonymous namespace'::__io_category_instance(void)::__ec; } // 516B70: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); //----- (00460320) -------------------------------------------------------- void __fastcall `anonymous namespace'::generic_error_category::~generic_error_category(void *a1) { operator delete(a1); } //----- (00460340) -------------------------------------------------------- _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_515398; v6 = (_DWORD *)(a1 - 16); if ( !dword_515398 || (v11 = *(_DWORD *)(a1 - 16), v7 = (_DWORD *)((char *)v6 + v11), dword_515398 > (unsigned int)v6 + v11) ) { *(_DWORD *)(a1 - 12) = dword_515398; dword_515398 = a1 - 16; goto LABEL_18; } v8 = *(_DWORD **)(dword_515398 + 4); if ( (_DWORD *)dword_515398 == (_DWORD *)((char *)v6 + v11) ) { v10 = *(_DWORD *)dword_515398 + v11; *(_DWORD *)(a1 - 12) = v8; *(_DWORD *)(a1 - 16) = v10; dword_515398 = a1 - 16; goto LABEL_18; } if ( v8 ) { v9 = &dword_515398; 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_515398; } 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; } // 515398: using guessed type int dword_515398; // 78A9D4: using guessed type int _CRT_MT; //----- (004604B0) -------------------------------------------------------- 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_515398; v4 = (v11 + 15) & 0xFFFFFFF0; if ( !dword_515398 ) { LABEL_19: v3 = 0; LABEL_11: if ( _CRT_MT && __gthr_win32_mutex_unlock(&`anonymous namespace'::emergency_pool) ) JUMPOUT(0x50483D); return v3; } LABEL_5: v5 = &dword_515398; 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_515398; v4 = (v2 + 15) & 0xFFFFFFF0; if ( dword_515398 ) goto LABEL_5; return v3; } // 460521: control flows out of bounds to 50483D // 515398: using guessed type int dword_515398; // 78A9D4: using guessed type int _CRT_MT; //----- (004605A0) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004605E0) -------------------------------------------------------- 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; } //----- (00460640) -------------------------------------------------------- #error "4606AE: call analysis failed (funcsize=38)" //----- (004606E0) -------------------------------------------------------- #error "46074E: call analysis failed (funcsize=40)" //----- (00460788) -------------------------------------------------------- #error "4607F6: call analysis failed (funcsize=42)" //----- (00460838) -------------------------------------------------------- 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_538A10; v7 = v4; return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v7); } // 460863: variable 'v6' is possibly undefined // 538A10: using guessed type int (*off_538A10)(); //----- (004608D0) -------------------------------------------------------- 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_538A10; v6 = v4; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v6); } // 4608FB: variable 'v5' is possibly undefined // 538A10: using guessed type int (*off_538A10)(); //----- (00460978) -------------------------------------------------------- int __fastcall WXML::DOMLib::Token::ToAttrContent[abi:cxx11](int a1) { _BYTE *v2; // esi int v3; // edi char v4; // al char v5; // cl int v6; // eax unsigned __int8 v7; // dl int v9; // [esp+8h] [ebp-70h] int v10; // [esp+1Ch] [ebp-5Ch] void *v11[2]; // [esp+28h] [ebp-50h] BYREF char v12[16]; // [esp+30h] [ebp-48h] BYREF unsigned __int8 v13[30]; // [esp+40h] [ebp-38h] BYREF size_t Size[6]; // [esp+5Eh] [ebp-1Ah] BYREF if ( !*(_DWORD *)a1 || *(_BYTE *)(a1 + 84) ) return a1 + 88; v2 = (_BYTE *)(**(_DWORD **)a1 + *(_DWORD *)(a1 + 16)); v3 = *(_DWORD *)(a1 + 20); v10 = *v2 == 39 || *v2 == 34; if ( v3 > 0 ) { v4 = v2[v3 - 1]; if ( v4 == 34 || v4 == 39 ) --v3; } v5 = 0; v6 = 0; while ( v3 > v10 ) { v7 = v2[v10]; if ( v7 == 92 ) { if ( !v5 ) { v5 = 1; goto LABEL_22; } } else if ( v5 ) { switch ( v7 ) { case 'n': v13[v6] = 10; goto LABEL_20; case 't': v13[v6] = 9; goto LABEL_20; case 'r': v13[v6] = 13; goto LABEL_20; } } v13[v6] = v7; LABEL_20: ++v6; v5 = 0; v13[v6] = 0; if ( v6 == 30 ) { LOBYTE(v9) = 0; v11[0] = v12; std::string::_M_construct(v11, v13, (size_t)Size, v9); std::string::operator+=((_DWORD *)(a1 + 88), (int)v11); std::string::_M_dispose(v11); v13[0] = 0; v5 = 0; v6 = 0; } LABEL_22: ++v10; } if ( v6 ) { LOBYTE(v9) = 0; v11[0] = v12; std::string::_M_construct(v11, v13, (size_t)&v13[v6], v9); std::string::operator+=((_DWORD *)(a1 + 88), (int)v11); std::string::_M_dispose(v11); } *(_BYTE *)(a1 + 84) = 1; return a1 + 88; } // 460A3A: variable 'v9' is possibly undefined // 460978: using guessed type unsigned __int8 var_38[30]; // 460978: using guessed type size_t Size[6]; //----- (00460ACC) -------------------------------------------------------- int __cdecl WXML::DOMLib::Token::GetTemplateContent(int *a1, _DWORD *a2) { int v2; // edi int v3; // eax signed int v4; // edx int v5; // ebx int v6; // ecx signed int v7; // eax int v9; // [esp+1Ch] [ebp-3Ch] void *v10[12]; // [esp+28h] [ebp-30h] BYREF v2 = 0; v9 = a1[1]; v3 = v9 - 1; while ( v2 < v9 && *(_BYTE *)(*a1 + v2) == 32 ) ++v2; while ( v3 >= 0 && *(_BYTE *)(*a1 + v3) == 32 ) --v3; v4 = v2 + 2; if ( v2 + 2 >= v9 ) return -1; v5 = *a1; v6 = -1; if ( *(_BYTE *)(*a1 + v2) != 123 ) return v6; if ( *(_BYTE *)(v5 + v2 + 1) != 123 || v3 <= 1 ) return -1; if ( *(_BYTE *)(v5 + v3) == 125 && *(_BYTE *)(v5 + v3 - 1) == 125 ) { v7 = v3 - 2; do { if ( *(_BYTE *)(v5 + v4) != 32 ) break; ++v4; } while ( v9 != v4 ); do { if ( *(_BYTE *)(v5 + v7) != 32 ) break; --v7; } while ( v7 != -1 ); v6 = -1; if ( v4 < v7 ) { std::string::substr(v10, a1, v4, v7 - v4 + 1); std::string::operator=(a2, v10); std::string::_M_dispose(v10); return 0; } } return v6; } //----- (00460B90) -------------------------------------------------------- char __cdecl WXML::DOMLib::Token::IsValidVariableName(char **a1) { char v1; // al unsigned __int8 v2; // dl char result; // al unsigned int i; // edx char v5; // al bool v6; // cc bool v7; // zf v1 = **a1; if ( v1 == 95 || v1 == 36 || (v2 = (v1 & 0xDF) - 65, result = 0, v2 <= 0x19u) ) { for ( i = 1; ; ++i ) { if ( (unsigned int)a1[1] <= i ) return 1; v5 = (*a1)[i]; if ( v5 <= 96 ) { if ( v5 > 64 ) { if ( v5 <= 90 ) continue; v7 = v5 == 95; goto LABEL_13; } if ( v5 <= 47 ) { v7 = v5 == 36; LABEL_13: if ( !v7 ) return 0; continue; } v6 = v5 <= 57; } else { v6 = v5 <= 122; } if ( !v6 ) return 0; } } return result; } //----- (00460BEC) -------------------------------------------------------- bool __userpurge WXML::DOMLib::Token::IsMatch@(int a1@, WXML::DOMLib::Token *this, const char *a3) { bool result; // al int v4; // edi int i; // eax result = 0; if ( *(_DWORD *)a1 ) { v4 = *(_DWORD *)(a1 + 20); for ( i = 0; ; ++i ) { if ( v4 <= i ) return *((_BYTE *)this + v4) == 0; if ( *(_BYTE *)(**(_DWORD **)a1 + *(_DWORD *)(a1 + 16) + i) != *((_BYTE *)this + i) ) break; } return 0; } return result; } //----- (00460C28) -------------------------------------------------------- _DWORD *__fastcall WXML::DOMLib::Token::ToString[abi:cxx11](int a1) { _DWORD *v1; // edi void *v4[12]; // [esp+18h] [ebp-30h] BYREF v1 = (_DWORD *)(a1 + 32); if ( *(_DWORD *)a1 && !*(_BYTE *)(a1 + 28) ) { std::string::substr(v4, *(_DWORD **)a1, *(_DWORD *)(a1 + 16), *(_DWORD *)(a1 + 20)); std::string::operator=(v1, v4); std::string::_M_dispose(v4); *(_BYTE *)(a1 + 28) = 1; } return v1; } //----- (00460C80) -------------------------------------------------------- _DWORD *__thiscall WXML::DOMLib::Token::Token(_DWORD *this, int a2) { int v3; // eax *this = *(_DWORD *)a2; v3 = *(_DWORD *)(a2 + 4); this[1] = v3; if ( v3 ) __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v3 + 4)); this[2] = *(_DWORD *)(a2 + 8); this[3] = *(_DWORD *)(a2 + 12); this[4] = *(_DWORD *)(a2 + 16); this[5] = *(_DWORD *)(a2 + 20); this[6] = *(_DWORD *)(a2 + 24); *((_BYTE *)this + 28) = *(_BYTE *)(a2 + 28); std::string::basic_string(this + 8, (_DWORD *)(a2 + 32)); this[14] = *(_DWORD *)(a2 + 56); std::string::basic_string(this + 15, (_DWORD *)(a2 + 60)); *((_BYTE *)this + 84) = *(_BYTE *)(a2 + 84); return std::string::basic_string(this + 22, (_DWORD *)(a2 + 88)); } //----- (00460D08) -------------------------------------------------------- _BYTE *__userpurge WXML::DOMLib::Token::Token@( int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3) { int v4; // eax *(_DWORD *)a1 = *(_DWORD *)this; v4 = *((_DWORD *)this + 1); *(_DWORD *)(a1 + 4) = v4; if ( v4 ) __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v4 + 4)); *(_DWORD *)(a1 + 8) = *((_DWORD *)this + 2); *(_DWORD *)(a1 + 12) = *((_DWORD *)this + 3); *(_DWORD *)(a1 + 16) = *((_DWORD *)this + 4); *(_DWORD *)(a1 + 20) = *((_DWORD *)this + 5); *(_DWORD *)(a1 + 24) = *((_DWORD *)this + 6); *(_BYTE *)(a1 + 28) = *((_BYTE *)this + 28); std::string::basic_string((_DWORD *)(a1 + 32), (int)this + 32); *(_DWORD *)(a1 + 56) = *((_DWORD *)this + 14); std::string::basic_string((_DWORD *)(a1 + 60), (int)this + 60); *(_BYTE *)(a1 + 84) = *((_BYTE *)this + 84); return std::string::basic_string((_DWORD *)(a1 + 88), (int)this + 88); } //----- (00460DC4) -------------------------------------------------------- _BYTE *__userpurge WXML::DOMLib::Token::Token@( int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3) { int v4; // eax *(_DWORD *)a1 = *(_DWORD *)this; v4 = *((_DWORD *)this + 1); *(_DWORD *)(a1 + 4) = v4; if ( v4 ) __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v4 + 4)); *(_DWORD *)(a1 + 8) = *((_DWORD *)this + 2); *(_DWORD *)(a1 + 12) = *((_DWORD *)this + 3); *(_DWORD *)(a1 + 16) = *((_DWORD *)this + 4); *(_DWORD *)(a1 + 20) = *((_DWORD *)this + 5); *(_DWORD *)(a1 + 24) = *((_DWORD *)this + 6); *(_BYTE *)(a1 + 28) = *((_BYTE *)this + 28); std::string::basic_string((_DWORD *)(a1 + 32), (int)this + 32); *(_DWORD *)(a1 + 56) = *((_DWORD *)this + 14); std::string::basic_string((_DWORD *)(a1 + 60), (int)this + 60); *(_BYTE *)(a1 + 84) = *((_BYTE *)this + 84); return std::string::basic_string((_DWORD *)(a1 + 88), (int)this + 88); } //----- (00460E80) -------------------------------------------------------- int __thiscall WXML::DOMLib::Token::operator=(int this, int a2) { volatile signed __int32 **v3; // ecx v3 = (volatile signed __int32 **)(this + 4); *(v3 - 1) = *(volatile signed __int32 **)a2; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v3, *(volatile signed __int32 **)(a2 + 4)); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_BYTE *)(this + 28) = *(_BYTE *)(a2 + 28); std::string::operator=((_DWORD *)(this + 32), (_DWORD *)(a2 + 32)); *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); std::string::operator=((_DWORD *)(this + 60), (_DWORD *)(a2 + 60)); *(_BYTE *)(this + 84) = *(_BYTE *)(a2 + 84); std::string::operator=((_DWORD *)(this + 88), (_DWORD *)(a2 + 88)); return this; } //----- (00460F0C) -------------------------------------------------------- int __thiscall WXML::DOMLib::Token::operator=(int this, int a2) { volatile signed __int32 **v3; // ecx v3 = (volatile signed __int32 **)(this + 4); *(v3 - 1) = *(volatile signed __int32 **)a2; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v3, *(volatile signed __int32 **)(a2 + 4)); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_BYTE *)(this + 28) = *(_BYTE *)(a2 + 28); std::string::_M_assign(this + 32, a2 + 32); *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); std::string::_M_assign(this + 60, a2 + 60); *(_BYTE *)(this + 84) = *(_BYTE *)(a2 + 84); std::string::_M_assign(this + 88, a2 + 88); return this; } //----- (00460F98) -------------------------------------------------------- int __fastcall WXML::DOMLib::Parser::Parser(int a1) { char *v2; // eax int v3; // edx char *v4; // esi char *v5; // eax char *v6; // eax int v7; // edx char *v8; // esi char *v9; // eax int result; // eax void (__cdecl *v11)(void *); // [esp+4h] [ebp-14h] void (__cdecl *v12)(void *); // [esp+4h] [ebp-14h] void (__cdecl *v13)(void *); // [esp+4h] [ebp-14h] void (__cdecl *v14)(void *); // [esp+4h] [ebp-14h] *(_DWORD *)a1 = 0; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; *(_DWORD *)(a1 + 28) = 0; *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = 0; *(_DWORD *)(a1 + 40) = 0; *(_DWORD *)(a1 + 44) = 0; *(_DWORD *)(a1 + 12) = 8; v2 = (char *)operator new((struct type_info *)0x20, v11); v3 = *(_DWORD *)(a1 + 12); *(_DWORD *)(a1 + 8) = v2; v4 = &v2[(2 * v3 - 2) & 0xFFFFFFFC]; v5 = (char *)operator new((struct type_info *)0x1F8, v12); *(_DWORD *)v4 = v5; *(_DWORD *)(a1 + 28) = v4; *(_DWORD *)(a1 + 20) = v5; *(_DWORD *)(a1 + 24) = v5 + 504; *(_DWORD *)(a1 + 44) = v4; *(_DWORD *)(a1 + 36) = v5; *(_DWORD *)(a1 + 40) = v5 + 504; *(_DWORD *)(a1 + 16) = v5; *(_DWORD *)(a1 + 32) = v5; *(_DWORD *)(a1 + 48) = 0; *(_DWORD *)(a1 + 56) = 0; *(_DWORD *)(a1 + 60) = 0; *(_DWORD *)(a1 + 64) = 0; *(_DWORD *)(a1 + 68) = 0; *(_DWORD *)(a1 + 72) = 0; *(_DWORD *)(a1 + 76) = 0; *(_DWORD *)(a1 + 80) = 0; *(_DWORD *)(a1 + 84) = 0; *(_DWORD *)(a1 + 52) = 8; v6 = (char *)operator new((struct type_info *)0x20, v13); v7 = *(_DWORD *)(a1 + 52); *(_DWORD *)(a1 + 48) = v6; v8 = &v6[(2 * v7 - 2) & 0xFFFFFFFC]; v9 = (char *)operator new((struct type_info *)0x200, v14); *(_DWORD *)v8 = v9; *(_DWORD *)(a1 + 60) = v9; *(_DWORD *)(a1 + 76) = v9; *(_DWORD *)(a1 + 56) = v9; *(_DWORD *)(a1 + 72) = v9; *(_DWORD *)(a1 + 136) = a1 + 144; *(_DWORD *)(a1 + 164) = a1 + 172; *(_DWORD *)(a1 + 192) = a1 + 200; *(_DWORD *)(a1 + 68) = v8; *(_DWORD *)(a1 + 84) = v8; *(_DWORD *)(a1 + 64) = v9 + 512; *(_DWORD *)(a1 + 80) = v9 + 512; *(_DWORD *)(a1 + 88) = 0; *(_DWORD *)(a1 + 92) = 0; *(_DWORD *)(a1 + 96) = 0; *(_DWORD *)(a1 + 104) = 0; *(_DWORD *)(a1 + 108) = 0; *(_DWORD *)(a1 + 140) = 0; *(_BYTE *)(a1 + 144) = 0; *(_DWORD *)(a1 + 168) = 0; *(_BYTE *)(a1 + 172) = 0; *(_DWORD *)(a1 + 196) = 0; *(_BYTE *)(a1 + 200) = 0; *(_BYTE *)(a1 + 132) = 0; *(_BYTE *)(a1 + 188) = 0; *(_DWORD *)(a1 + 124) = 0; *(_DWORD *)(a1 + 112) = 0; *(_DWORD *)(a1 + 116) = 0; *(_DWORD *)(a1 + 120) = 0; *(_DWORD *)(a1 + 160) = -1; *(_DWORD *)(a1 + 216) = 0; *(_DWORD *)(a1 + 220) = 0; *(_DWORD *)(a1 + 248) = a1 + 256; *(_DWORD *)(a1 + 276) = a1 + 284; *(_DWORD *)(a1 + 304) = a1 + 312; result = a1 + 336; *(_DWORD *)(a1 + 252) = 0; *(_BYTE *)(a1 + 256) = 0; *(_DWORD *)(a1 + 280) = 0; *(_BYTE *)(a1 + 284) = 0; *(_DWORD *)(a1 + 308) = 0; *(_BYTE *)(a1 + 312) = 0; *(_BYTE *)(a1 + 244) = 0; *(_BYTE *)(a1 + 300) = 0; *(_DWORD *)(a1 + 236) = 0; *(_DWORD *)(a1 + 224) = 0; *(_DWORD *)(a1 + 228) = 0; *(_DWORD *)(a1 + 232) = 0; *(_DWORD *)(a1 + 272) = -1; *(_DWORD *)(a1 + 328) = a1 + 336; *(_DWORD *)(a1 + 332) = 0; *(_BYTE *)(a1 + 336) = 0; return result; } // 460FFC: variable 'v11' is possibly undefined // 461017: variable 'v12' is possibly undefined // 461089: variable 'v13' is possibly undefined // 4610A4: variable 'v14' is possibly undefined //----- (004612EC) -------------------------------------------------------- char __thiscall WXML::DOMLib::WXMLDom::IfHasItsElse(_DWORD *this, signed int a2, int *a3) { _DWORD *v4; // edi int v5; // edi _DWORD *v6; // ecx bool v7; // di _DWORD *v8; // edi int v9; // eax unsigned int i; // edi int v11; // edx bool v12; // bl _DWORD *v13; // ebx int v14; // ebx _DWORD *v16; // [esp+18h] [ebp-50h] bool v17; // [esp+1Ch] [ebp-4Ch] _DWORD *v18; // [esp+1Ch] [ebp-4Ch] signed int v19; // [esp+1Ch] [ebp-4Ch] void *v20[6]; // [esp+20h] [ebp-48h] BYREF void *v21[12]; // [esp+38h] [ebp-30h] BYREF v4 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); std::string::basic_string(v20, "wx:else"); v17 = 1; if ( !std::map::count(v4, (int)v20) ) { v18 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); std::string::basic_string(v21, "wx:elif"); v17 = std::map::count(v18, (int)v21); std::string::_M_dispose(v21); } std::string::_M_dispose(v20); if ( v17 ) return 1; v5 = *(_DWORD *)(this[18] + 8 * a2) + 48; std::string::basic_string(v20, "wx:if"); v6 = (_DWORD *)v5; v7 = 0; if ( !std::map::count(v6, (int)v20) ) { v8 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); std::string::basic_string(v21, "wx-if"); v7 = !std::map::count(v8, (int)v21); std::string::_M_dispose(v21); } std::string::_M_dispose(v20); if ( !v7 ) { v19 = a2 - 1; v9 = *(_DWORD *)(this[18] + 8 * a2); if ( *(_DWORD *)(v9 + 72) == *(_DWORD *)(v9 + 76) ) { for ( i = a2 + 1; ; ++i ) { v11 = this[18]; if ( (this[19] - v11) >> 3 <= i ) break; v16 = (_DWORD *)(*(_DWORD *)(v11 + 8 * i) + 48); std::string::basic_string(v20, "wx:else"); v12 = 1; if ( !std::map::count(v16, (int)v20) ) { v13 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * i) + 48); std::string::basic_string(v21, "wx:elif"); v12 = std::map::count(v13, (int)v21); std::string::_M_dispose(v21); } std::string::_M_dispose(v20); if ( !v12 ) break; v14 = a3[1]; if ( v14 != std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( *a3, v14, *(_DWORD *)(this[18] + 8 * i)) || *(_DWORD *)(*(_DWORD *)(this[18] + 8 * i) + 76) != *(_DWORD *)(*(_DWORD *)(this[18] + 8 * i) + 72) ) { return 1; } v19 = i; } } while ( v19 >= a2 ) std::vector>::_M_erase(this + 18, (_DWORD *)(this[18] + 8 * v19--)); return 1; } return v17; } //----- (00461550) -------------------------------------------------------- int __cdecl WXML::DOMLib::WXMLDom::ToCamelStyle(int a1, int a2) { char *v2; // edi char v3; // si char v4; // al *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; std::string::reserve((_DWORD *)a1, *(_DWORD *)(a2 + 4)); v2 = *(char **)a2; v3 = 0; while ( 1 ) { v4 = *v2; if ( !*v2 ) return a1; if ( v4 > 46 ) { if ( v4 == 58 ) { LABEL_11: v3 = 1; goto LABEL_12; } } else if ( v4 > 44 ) { goto LABEL_11; } if ( (unsigned __int8)(v4 - 97) <= 0x19u && v3 ) { std::string::push_back((_DWORD *)a1, v4 - 32); v3 = 0; } else { std::string::push_back((_DWORD *)a1, *v2); } LABEL_12: ++v2; } } //----- (004615EC) -------------------------------------------------------- char __fastcall WXML::DOMLib::WXMLDom::HasSpAttrPrefix(int a1) { int i; // ebx const char *v3; // edi const char *v5; // edi for ( i = *(_DWORD *)(a1 + 60); i != a1 + 52; i = std::_Rb_tree_increment(i) ) { v3 = *(const char **)(i + 16); if ( strncmp(v3, "bind", 4u) ) { if ( strncmp(v3, "catch", 5u) ) { if ( strncmp(v3, "capture-bind", 0xCu) ) { if ( strncmp(v3, "capture-catch", 0xDu) ) { if ( !std::operator==(i + 16, "slot") ) { v5 = *(const char **)(i + 16); if ( strncmp(v5, "wx:", 3u) ) { if ( strncmp(v5, "mark:", 5u) ) continue; } } } } } } return 1; } return 0; } //----- (004616F4) -------------------------------------------------------- int __thiscall WXML::DOMLib::WXMLDom::MarkIfHasDescendant(int this, int *a2) { int result; // eax int v4; // ebx int v5; // ecx int v6; // eax int v7; // [esp+1Ch] [ebp-1Ch] result = a2[1]; if ( *a2 != result ) { v4 = (*(_DWORD *)(this + 76) - *(_DWORD *)(this + 72)) >> 3; while ( --v4 >= 0 ) { WXML::DOMLib::WXMLDom::MarkIfHasDescendant(a2); v5 = *a2; v6 = *(_DWORD *)(*(_DWORD *)(this + 72) + 8 * v4); *(_BYTE *)(this + 256) |= *(_BYTE *)(v6 + 256); v7 = a2[1]; result = std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( v5, v7, v6); if ( v7 != result ) *(_BYTE *)(this + 256) = 1; } } return result; } //----- (00461770) -------------------------------------------------------- void __thiscall WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(_DWORD *this, int *a2) { int v3; // ebx int *v4; // eax int v5; // [esp+1Ch] [ebp-1Ch] v3 = (this[19] - this[18]) >> 3; while ( --v3 >= 0 ) { WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(a2); if ( !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "include") && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "import") && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "wx-template") && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "wx-define") && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "template") && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "slot") && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "wx-import") ) { v5 = a2[1]; if ( v5 == std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( *a2, v5, *(_DWORD *)(this[18] + 8 * v3)) && !WXML::DOMLib::WXMLDom::IfHasItsElse(this, v3, a2) ) { v4 = (int *)(8 * v3 + this[18]); if ( *(_DWORD *)(*v4 + 76) == *(_DWORD *)(*v4 + 72) ) { std::vector>::_M_erase(this + 18, v4); } else if ( *(_DWORD *)(*v4 + 76) - *(_DWORD *)(*v4 + 72) == 8 && !WXML::DOMLib::WXMLDom::HasSpAttrPrefix(*v4) ) { std::__shared_ptr::operator=( (_DWORD *)(this[18] + 8 * v3), *(_DWORD **)(*(_DWORD *)(this[18] + 8 * v3) + 72)); } } } } } //----- (0046191C) -------------------------------------------------------- unsigned int __thiscall WXML::DOMLib::WXMLDom::Print(_DWORD *this, int a2, char *a3, char *a4) { unsigned int v4; // esi unsigned int result; // eax v4 = 0; WXML::DOMLib::WXMLDom::PrintMe((int)this, a2, a3, a4); while ( 1 ) { result = (this[19] - this[18]) >> 3; if ( result <= v4 ) break; ++v4; WXML::DOMLib::WXMLDom::Print(a2 + 1, a3, a4); } return result; } //----- (00461980) -------------------------------------------------------- void __thiscall WXML::DOMLib::WXMLDom::PrintMe(int this, int a2, char *a3, char *a4) { char *v5; // ebx int i; // edi int v7; // eax std::ostream::sentry *v8; // eax std::ostream::sentry *v9; // eax std::ostream::sentry *v10; // eax std::ostream::sentry *v11; // eax bool v12; // zf int v13; // eax int j; // edi const char **v15; // eax std::ostream::sentry *v16; // eax int *v17; // eax std::ostream::sentry *v18; // eax std::ostream::sentry *v19; // eax const char **v20; // eax std::ostream::sentry *v21; // eax std::ostream::sentry *v22; // eax std::ostream::sentry *v23; // eax std::ostream::sentry *v24; // edi int *v25; // eax std::ostream::sentry *v26; // eax std::ostream::sentry *v27; // eax std::ostream::sentry *v28; // eax std::ostream::sentry *v29; // eax std::ostream::sentry *v30; // eax std::ostream::sentry *v31; // eax std::ostream::sentry *v32; // [esp+2Ch] [ebp-ECh] char v33[232]; // [esp+30h] [ebp-E8h] BYREF v5 = a4; std::basic_stringstream,std::allocator>::basic_stringstream((int)v33); if ( !a4 ) v5 = v33; if ( (v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 20] & 5) != 0 ) printf("%s", a3); else std::operator<<>((std::ostream::sentry *)(v5 + 8), a3); for ( i = 0; ; ++i ) { v7 = *(_DWORD *)&v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 20] & 5; if ( i >= a2 ) break; if ( v7 ) printf(" "); else std::operator<<>((std::ostream::sentry *)(v5 + 8), " "); } if ( v7 ) { printf("pos: %d, %d, tag: %s, ", *(_DWORD *)(this + 92), *(_DWORD *)(this + 96), *(const char **)this); } else { std::operator<<>((std::ostream::sentry *)(v5 + 8), "pos: "); v8 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v8, ", "); v9 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); v10 = std::operator<<>(v9, " tag: "); v11 = std::operator<<(v10, (int *)this); std::operator<<>(v11, ", "); } v12 = !std::operator==(this, "TEXTNODE"); v13 = *(_DWORD *)(*(_DWORD *)v5 - 12); if ( v12 ) { if ( (v5[v13 + 20] & 5) != 0 ) printf("attr: "); else std::operator<<>((std::ostream::sentry *)(v5 + 8), "attr: "); for ( j = *(_DWORD *)(this + 60); j != this + 52; j = std::_Rb_tree_increment(j) ) { if ( (*(_DWORD *)&v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 20] & 5) != 0 ) { v15 = (const char **)WXML::DOMLib::Token::ToString[abi:cxx11](j + 40); printf("%s->%s,", *(const char **)(j + 16), *v15); } else { v16 = std::operator<<((std::ostream::sentry *)(v5 + 8), (int *)(j + 16)); v32 = std::operator<<>(v16, "->"); v17 = WXML::DOMLib::Token::ToString[abi:cxx11](j + 40); v18 = std::operator<<(v32, v17); std::operator<<>(v18, " "); v19 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(j + 96)); std::operator<<>(v19, " "); } } } else if ( (v5[v13 + 20] & 5) != 0 ) { v20 = (const char **)WXML::DOMLib::Token::ToString[abi:cxx11](this + 84); printf("pos: %d, %d, len: %d, %s", *(_DWORD *)(this + 92), *(_DWORD *)(this + 96), *(_DWORD *)(this + 104), *v20); } else { std::operator<<>((std::ostream::sentry *)(v5 + 8), "pos: "); v21 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v21, ", "); v22 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); std::operator<<>(v22, ", len: "); v23 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 104)); v24 = std::operator<<>(v23, ", "); v25 = WXML::DOMLib::Token::ToString[abi:cxx11](this + 84); std::operator<<(v24, v25); } if ( (v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 20] & 5) != 0 ) { printf( "icn: %s, icc: %u, ivwn: %s", *(const char **)(this + 196), *(_DWORD *)(this + 244), *(const char **)(this + 220)); } else { v26 = std::operator<<>((std::ostream::sentry *)(v5 + 8), "icn:"); v27 = std::operator<<(v26, (int *)(this + 196)); v28 = std::operator<<>(v27, ", "); std::operator<<>(v28, "icc: "); v29 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 244)); v30 = std::operator<<>(v29, ", ivwn: "); std::operator<<(v30, (int *)(this + 220)); } if ( (v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 20] & 5) != 0 ) { printf(", hasXComponentDescendant %d", *(unsigned __int8 *)(this + 256)); } else { v31 = std::operator<<>((std::ostream::sentry *)(v5 + 8), ", hasXComponentDescendant"); std::ostream::operator<<(v31, *(_BYTE *)(this + 256)); } if ( (v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 20] & 5) != 0 ) putchar(10); else std::operator<<>((std::ostream::sentry *)(v5 + 8), "\n"); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v33); } // 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); //----- (00461DC4) -------------------------------------------------------- int __fastcall WXML::DOMLib::WXMLDom::WXMLDom(int a1) { int result; // eax *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_DWORD *)(a1 + 24) = a1 + 32; *(_DWORD *)(a1 + 60) = a1 + 52; *(_DWORD *)(a1 + 64) = a1 + 52; *(_DWORD *)(a1 + 116) = a1 + 124; *(_DWORD *)(a1 + 144) = a1 + 152; *(_DWORD *)(a1 + 172) = a1 + 180; *(_BYTE *)(a1 + 8) = 0; *(_DWORD *)(a1 + 28) = 0; *(_BYTE *)(a1 + 32) = 0; *(_DWORD *)(a1 + 52) = 0; *(_DWORD *)(a1 + 56) = 0; *(_DWORD *)(a1 + 68) = 0; *(_DWORD *)(a1 + 72) = 0; *(_DWORD *)(a1 + 76) = 0; *(_DWORD *)(a1 + 80) = 0; *(_DWORD *)(a1 + 84) = 0; *(_DWORD *)(a1 + 88) = 0; *(_DWORD *)(a1 + 120) = 0; *(_BYTE *)(a1 + 124) = 0; *(_DWORD *)(a1 + 148) = 0; *(_BYTE *)(a1 + 152) = 0; *(_DWORD *)(a1 + 176) = 0; *(_BYTE *)(a1 + 180) = 0; *(_BYTE *)(a1 + 112) = 0; *(_BYTE *)(a1 + 168) = 0; *(_DWORD *)(a1 + 104) = 0; *(_DWORD *)(a1 + 92) = 0; *(_DWORD *)(a1 + 96) = 0; *(_DWORD *)(a1 + 100) = 0; *(_DWORD *)(a1 + 140) = -1; *(_DWORD *)(a1 + 196) = a1 + 204; *(_DWORD *)(a1 + 220) = a1 + 228; result = a1 + 276; *(_DWORD *)(a1 + 200) = 0; *(_BYTE *)(a1 + 204) = 0; *(_DWORD *)(a1 + 224) = 0; *(_BYTE *)(a1 + 228) = 0; *(_DWORD *)(a1 + 248) = 0; *(_DWORD *)(a1 + 252) = 0; *(_DWORD *)(a1 + 276) = 0; *(_DWORD *)(a1 + 280) = 0; *(_DWORD *)(a1 + 284) = a1 + 276; *(_DWORD *)(a1 + 288) = a1 + 276; *(_DWORD *)(a1 + 292) = 0; *(_DWORD *)(a1 + 244) = 0; *(_BYTE *)(a1 + 256) = 0; *(_DWORD *)(a1 + 264) = 0; *(_DWORD *)(a1 + 268) = 0; return result; } //----- (00461F48) -------------------------------------------------------- std::ostream::sentry *__thiscall WXML::DOMLib::StrCache::RenderPathDefine(_DWORD *this, int a2) { unsigned int v3; // esi std::ostream::sentry *v4; // ebx int *v5; // eax v3 = 0; v4 = (std::ostream::sentry *)(a2 + 8); std::operator<<>((std::ostream::sentry *)(a2 + 8), "var x=["); while ( v3 < -1431655765 * ((this[7] - this[6]) >> 3) ) { if ( v3 ) std::operator<<>(v4, ","); std::operator<<>(v4, "'"); v5 = (int *)(this[6] + 24 * v3++); WXML::Rewrite::ToStringCode(v5, a2); std::operator<<>(v4, "'"); } return std::operator<<>(v4, "];"); } //----- (00461FE4) -------------------------------------------------------- _BYTE *__thiscall WXML::DOMLib::StrCache::Insert(_DWORD *this, int a2) { _BYTE *result; // eax int v4; // edi result = (_BYTE *)std::map::count(this, a2); if ( !result ) { v4 = this[5]; *std::map::operator[](this, a2) = v4; return std::vector::push_back(this + 6, a2); } return result; } //----- (0046202C) -------------------------------------------------------- int __thiscall WXML::DOMLib::StrCache::GetStrID(_DWORD *this, int a2) { BOOL v2; // edx int result; // eax v2 = std::map::count(this, a2); result = -1; if ( v2 ) return *std::map::operator[](this, a2); return result; } //----- (00462060) -------------------------------------------------------- void __fastcall WXML::EXPRLib::NonTerminal::~NonTerminal(void *a1) { operator delete(a1); } //----- (00462074) -------------------------------------------------------- void __fastcall WXML::EXPRLib::EPS::~EPS(void *a1) { operator delete(a1); } //----- (00462088) -------------------------------------------------------- int __userpurge WXML::EXPRLib::Token::Token@( int a1@, _DWORD *a2@, WXML::EXPRLib::Token *this, const WXML::EXPRLib::Token *a4) { int v4; // edx int v5; // eax int v6; // eax v4 = *((_DWORD *)this + 2); *a2 = *(_DWORD *)this; v5 = *((_DWORD *)this + 1); a2[2] = v4; a2[1] = v5; a2[3] = *((_DWORD *)this + 3); v6 = *((_DWORD *)this + 4); a2[4] = v6; if ( v6 ) __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v6 + 4)); a2[5] = *((_DWORD *)this + 5); a2[6] = *((_DWORD *)this + 6); return a1; } // 4620BB: variable 'a2' is possibly undefined //----- (004620CC) -------------------------------------------------------- int __userpurge WXML::EXPRLib::Token::Token@( _DWORD *a1@, WXML::EXPRLib::Token *this, const WXML::EXPRLib::Token *a3) { int v3; // edx int v4; // eax int v5; // eax int result; // eax v3 = *((_DWORD *)this + 2); *a1 = *(_DWORD *)this; v4 = *((_DWORD *)this + 1); a1[2] = v3; a1[1] = v4; a1[3] = *((_DWORD *)this + 3); v5 = *((_DWORD *)this + 4); a1[4] = v5; if ( v5 ) { if ( _CRT_MT ) _InterlockedIncrement((volatile signed __int32 *)(v5 + 4)); else ++*(_DWORD *)(v5 + 4); } a1[5] = *((_DWORD *)this + 5); result = *((_DWORD *)this + 6); a1[6] = result; return result; } // 78A9D4: using guessed type int _CRT_MT; //----- (00462118) -------------------------------------------------------- int __fastcall WXML::EXPRLib::Token::Token(_DWORD *a1) { int result; // eax result = 0; a1[3] = 0; a1[4] = 0; memset(a1 + 1, 0, 8u); a1[5] = 0; a1[6] = 0; return result; } //----- (00462150) -------------------------------------------------------- int __fastcall WXML::EXPRLib::Action::Action(int a1) { int result; // eax *(_DWORD *)a1 = &off_53784C; *(_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; } // 53784C: using guessed type void (__cdecl *off_53784C)(WXML::EXPRLib::Action *__hidden this); //----- (00462180) -------------------------------------------------------- void __fastcall WXML::EXPRLib::Action::~Action(void **a1) { WXML::EXPRLib::Action::~Action(a1); operator delete(a1); } //----- (0046219C) -------------------------------------------------------- void __fastcall WXML::EXPRLib::Action::~Action(void **a1) { WXML::EXPRLib::Action::~Action(a1, (WXML::EXPRLib::Action *)2); } //----- (004621B4) -------------------------------------------------------- void __thiscall WXML::EXPRLib::Action::~Action(void **ecx0, WXML::EXPRLib::Action *this) { void **v3; // ecx v3 = ecx0 + 9; *(v3 - 9) = &off_53784C; std::string::_M_dispose(v3); std::string::_M_dispose(ecx0 + 1); } // 53784C: using guessed type void (__cdecl *off_53784C)(WXML::EXPRLib::Action *__hidden this); //----- (004621D8) -------------------------------------------------------- int __fastcall WXML::EXPRLib::Terminal::Terminal(int a1) { int result; // eax *(_DWORD *)(a1 + 4) = a1 + 12; result = 0; *(_DWORD *)a1 = &off_537860; *(_DWORD *)(a1 + 8) = 0; *(_BYTE *)(a1 + 12) = 0; *(_DWORD *)(a1 + 40) = 0; *(_DWORD *)(a1 + 44) = 0; memset((void *)(a1 + 32), 0, 8u); *(_DWORD *)(a1 + 48) = 0; *(_DWORD *)(a1 + 52) = 0; return result; } // 537860: using guessed type void (__cdecl *off_537860)(WXML::EXPRLib::Terminal *__hidden this); //----- (00462224) -------------------------------------------------------- void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1) { WXML::EXPRLib::Terminal::~Terminal(a1); operator delete(a1); } //----- (00462240) -------------------------------------------------------- void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1) { WXML::EXPRLib::Terminal::~Terminal(a1, (WXML::EXPRLib::Terminal *)2); } //----- (00462258) -------------------------------------------------------- void __thiscall WXML::EXPRLib::Terminal::~Terminal(void **ecx0, WXML::EXPRLib::Terminal *this) { volatile signed __int32 **v3; // ecx v3 = (volatile signed __int32 **)(ecx0 + 11); *(v3 - 11) = (volatile signed __int32 *)&off_537860; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); std::string::_M_dispose(ecx0 + 1); } // 537860: using guessed type void (__cdecl *off_537860)(WXML::EXPRLib::Terminal *__hidden this); //----- (0046227C) -------------------------------------------------------- void __thiscall WXML::EXPRLib::Terminal::~Terminal(void **ecx0, WXML::EXPRLib::Terminal *this) { volatile signed __int32 **v3; // ecx v3 = (volatile signed __int32 **)(ecx0 + 11); *(v3 - 11) = (volatile signed __int32 *)&off_537860; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); std::string::_M_dispose(ecx0 + 1); } // 537860: using guessed type void (__cdecl *off_537860)(WXML::EXPRLib::Terminal *__hidden this); //----- (004622A0) -------------------------------------------------------- unsigned int *__thiscall night::NSASTParse::NSASTParse(int this, int a2, int a3, int a4) { unsigned int *v5; // edi v5 = (unsigned int *)(this + 44); std::string::basic_string((_DWORD *)this, a2); *(_BYTE *)(this + 52) = 0; *(_DWORD *)(this + 44) = this + 52; *(_DWORD *)(this + 28) = a3; *(_DWORD *)(this + 48) = 0; *(_DWORD *)(this + 24) = a4; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 40) = 0; return std::string::operator=(v5, (char *)off_51B9E4); } //----- (00462320) -------------------------------------------------------- int __thiscall night::ns_sourcemap::ns_sourcemap(_DWORD *this, _DWORD *a2) { int result; // eax std::string::basic_string(this, (int)a2); this[6] = a2[6]; this[7] = a2[7]; std::string::basic_string(this + 8, (int)(a2 + 8)); this[14] = a2[14]; result = a2[15]; this[15] = result; return result; } //----- (00462378) -------------------------------------------------------- bool __cdecl night::NSToken::rw_cb_number(night::NSToken *this, _BYTE *a2) { bool result; // al if ( (_BYTE)this != 46 ) return (unsigned __int8)((_BYTE)this - 48) <= 9u; result = 0; if ( !*a2 ) { *a2 = 1; return 1; } return result; } //----- (004623A0) -------------------------------------------------------- char __cdecl night::NSToken::tk_is_comment2(night::NSToken *this, night::NSStream *a2) { int v3[3]; // [esp+18h] [ebp-20h] BYREF _DWORD v4[4]; // [esp+24h] [ebp-14h] BYREF night::NSStream::peek(v3, a2); if ( LOBYTE(v3[0]) != 42 ) return 1; night::NSStream::peek_2(v4, a2); if ( LOBYTE(v4[0]) != 47 ) return 1; night::NSStream::next(v4, a2); return 0; } // 4623A0: using guessed type int var_20[3]; // 4623A0: using guessed type _DWORD var_14[4]; //----- (004623E8) -------------------------------------------------------- int __cdecl night::NSToken::tk_is_var_start(unsigned int this) { unsigned int v1; // edx unsigned int v2; // eax v1 = this; v2 = (this & 0xFFFFFFDF) - 65; LOBYTE(v2) = (unsigned __int8)v2 <= 0x19u; LOBYTE(v1) = (_BYTE)this == 95; return v1 | v2; } //----- (00462408) -------------------------------------------------------- bool __cdecl night::NSToken::tk_is_whitespace(night::NSToken *this) { int v1; // ebx void *v3[2]; // [esp+18h] [ebp-20h] BYREF char v4; // [esp+20h] [ebp-18h] BYREF v3[0] = &v4; std::string::_M_construct(v3, 1u, (char)this); v1 = std::string::find(night::NS_BUILTIN_SPACE, (int)v3, 0); std::string::_M_dispose(v3); return v1 != -1; } // 586AE0: using guessed type int night::NS_BUILTIN_SPACE[6]; //----- (0046245C) -------------------------------------------------------- char __cdecl night::NSToken::tk_is_valid_op_str(night::NSToken *this, int a2) { char v2; // al char v4; // [esp+1Fh] [ebp-49h] void *v5[2]; // [esp+20h] [ebp-48h] BYREF char v6; // [esp+28h] [ebp-40h] BYREF void *v7[12]; // [esp+38h] [ebp-30h] BYREF v5[0] = &v6; std::string::_M_construct(v5, 1u, (char)this); if ( std::string::find(night::NS_BUILTIN_OP, (int)v5, 0) == -1 || (std::string::basic_string(v7, a2), std::string::append(v7, 1u, (char)this), std::string::operator=(v5, v7), std::string::_M_dispose(v7), std::string::find(night::NS_BUILTIN_ALL_OP, (int)v5, 0) == -1) ) { v2 = 0; } else { std::string::_M_assign(a2, (int)v5); v2 = 1; } v4 = v2; std::string::_M_dispose(v5); return v4; } // 586B10: using guessed type int night::NS_BUILTIN_ALL_OP[6]; // 586B40: using guessed type int night::NS_BUILTIN_OP[6]; //----- (00462538) -------------------------------------------------------- bool __cdecl night::NSToken::tk_is_not_line_break(night::NSToken *this) { void *v2[2]; // [esp+18h] [ebp-20h] BYREF char v3; // [esp+20h] [ebp-18h] BYREF v2[0] = &v3; std::string::_M_construct(v2, 1u, (char)this); std::string::_M_dispose(v2); return (_BYTE)this != 10; } //----- (00462574) -------------------------------------------------------- _DWORD *__thiscall night::NSToken::get_tokens_for_sourcemap(_DWORD *this, _DWORD *a2, _DWORD *a3) { int i; // esi _DWORD *result; // eax _DWORD *v5; // ebx _DWORD *v6; // eax int v7; // eax _DWORD *v8; // edx void (__cdecl *v9)(void *); // ecx bool v10; // al void (__cdecl *v11)(void *); // [esp+4h] [ebp-44h] _DWORD *v12; // [esp+24h] [ebp-24h] int insert_hint_unique_pos; // [esp+24h] [ebp-24h] _DWORD *v15; // [esp+2Ch] [ebp-1Ch] for ( i = this[9]; ; i = std::_Rb_tree_increment(i) ) { result = this + 7; if ( (_DWORD *)i == this + 7 ) break; v5 = a3 + 1; *std::map::operator[](a2, i + 16) = *(_DWORD *)(i + 40); v15 = a3 + 1; v6 = (_DWORD *)a3[2]; while ( v6 ) { if ( v6[4] < *(_DWORD *)(i + 40) ) { v6 = (_DWORD *)v6[3]; } else { v5 = v6; v6 = (_DWORD *)v6[2]; } } if ( v15 == v5 || *(_DWORD *)(i + 40) < v5[4] ) { v12 = v5; v5 = operator new((struct type_info *)0x2C, v11); v7 = *(_DWORD *)(i + 40); v5[6] = 0; v5[4] = v7; v5[5] = v5 + 7; *((_BYTE *)v5 + 28) = 0; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( a3, v12, v5 + 4); v11 = v9; if ( v8 ) { v10 = insert_hint_unique_pos != 0 || v15 == v8; if ( !v10 ) v10 = v5[4] < v8[4]; std::_Rb_tree_insert_and_rebalance(v10, v5, v8, v15); ++a3[5]; } else { std::string::_M_dispose((void **)v5 + 5); operator delete(v5); v5 = (_DWORD *)insert_hint_unique_pos; } } std::string::_M_assign((int)(v5 + 5), i + 16); } return result; } // 4625EA: variable 'v11' is possibly undefined // 462625: variable 'v9' is possibly undefined // 462629: variable 'v8' is possibly undefined //----- (004626A0) -------------------------------------------------------- int __cdecl night::NSToken::tk_is_var(night::NSToken *this) { int result; // eax int v2; // edx unsigned int v3; // eax result = night::NSToken::tk_is_var_start((char)this); if ( !(_BYTE)result ) { v3 = (unsigned int)this - 48; LOBYTE(v3) = (unsigned __int8)((_BYTE)this - 48) <= 9u; LOBYTE(v2) = (_BYTE)this == 95; return v2 | v3; } return result; } // 4626CF: variable 'v2' is possibly undefined //----- (004626D8) -------------------------------------------------------- void **__thiscall night::ns_node::debug_no_space[abi:cxx11](void **this, const char **a2) { const char *v2; // ecx const char *v3; // ecx __int64 v4; // rax int v5; // edi const char *v6; // ebx const char *v7; // edx const char *v8; // ebx const char *v9; // ecx _DWORD *v10; // eax const char *v11; // edi const char *v12; // eax const char *v13; // ecx __int64 v14; // rax _DWORD *v15; // eax _DWORD *v16; // eax __int64 v17; // rcx const char *v18; // edx const char *v19; // edi int v20; // eax _DWORD *v21; // eax unsigned int v22; // edi char *v23; // ecx _DWORD *v24; // eax _DWORD *v25; // eax int *v26; // ebx const char *v27; // edx const char *v28; // ebx const char *v29; // ecx _DWORD *v30; // eax _DWORD *v31; // eax _DWORD *v32; // eax int *v33; // ecx __int64 v34; // rcx const char *v35; // edx const char *v36; // edi int v37; // eax unsigned int i; // edi char *v39; // ecx _DWORD *v40; // eax _DWORD *v41; // eax const char *v42; // ecx __int64 v43; // rax _DWORD *v44; // eax _DWORD *v45; // eax int *v46; // ecx __int64 v47; // rcx const char *v48; // edx const char *v49; // edi int v50; // eax _DWORD *v51; // eax unsigned int j; // edi char *v53; // ecx _DWORD *v54; // eax _DWORD *v55; // eax _DWORD *v56; // eax int v57; // eax _DWORD *v58; // eax _DWORD *v59; // eax _DWORD **v60; // eax _DWORD *v61; // eax _DWORD *v62; // eax unsigned int k; // edi char *v64; // ecx _DWORD *v65; // eax const char *v66; // ecx __int64 v67; // rax const char *v68; // edi const char *v69; // edx const char *v70; // ebx const char *v71; // ecx int v72; // eax unsigned int m; // edi char *v74; // ecx _DWORD *v75; // eax __int64 v76; // rcx const char *v77; // edx const char *v78; // edi int v79; // eax _DWORD *v80; // eax unsigned int v81; // edi int v82; // eax _DWORD *v83; // eax _DWORD *v84; // eax _DWORD **v85; // eax _DWORD *v86; // eax _DWORD *v87; // eax const char *v88; // edi const char *v89; // edx const char *v90; // ebx unsigned int v91; // eax const char *v92; // ecx bool v93; // zf int v94; // eax unsigned int v95; // edi char *v96; // ecx _DWORD *v97; // eax _DWORD *v98; // eax _DWORD *v99; // eax const char *ArgList; // [esp+38h] [ebp-4D0h] const char *ArgLista; // [esp+38h] [ebp-4D0h] unsigned int ArgListb; // [esp+38h] [ebp-4D0h] const char *ArgListc; // [esp+38h] [ebp-4D0h] unsigned int ArgListd; // [esp+38h] [ebp-4D0h] unsigned int ArgListe; // [esp+38h] [ebp-4D0h] char *v108; // [esp+48h] [ebp-4C0h] BYREF int v109; // [esp+4Ch] [ebp-4BCh] char v110[16]; // [esp+50h] [ebp-4B8h] BYREF int v111[2]; // [esp+60h] [ebp-4A8h] BYREF char v112[16]; // [esp+68h] [ebp-4A0h] BYREF int v113[2]; // [esp+78h] [ebp-490h] BYREF char v114; // [esp+80h] [ebp-488h] BYREF int v115; // [esp+90h] [ebp-478h] BYREF int v116; // [esp+94h] [ebp-474h] char v117[16]; // [esp+98h] [ebp-470h] BYREF int v118[2]; // [esp+A8h] [ebp-460h] BYREF char v119[16]; // [esp+B0h] [ebp-458h] BYREF int v120[2]; // [esp+C0h] [ebp-448h] BYREF char v121; // [esp+C8h] [ebp-440h] BYREF int v122[6]; // [esp+D8h] [ebp-430h] BYREF char Buffer[4]; // [esp+F0h] [ebp-418h] BYREF char v124[1020]; // [esp+F4h] [ebp-414h] BYREF memset(v124, 0, sizeof(v124)); *(_DWORD *)Buffer = 0; if ( std::operator==("skip", (int)a2) ) snprintf_constprop_0(Buffer, 1024, "type[%s]", *a2); if ( std::operator==("bool", (int)a2) ) { v2 = *a2; if ( *((_QWORD *)a2 + 6) ) snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] value[%s]", a2[12], a2[13], v2, a2[15]); else snprintf_constprop_0(Buffer, 1024, "type[%s] value[%s]", v2, a2[15]); } if ( std::operator==((char *)off_51BA74, (int)a2) || std::operator==("builtin_type", (int)a2) || std::operator==("kw", (int)a2) || std::operator==((char *)off_51BA88, (int)a2) || std::operator==("punc", (int)a2) || std::operator==("op", (int)a2) ) { v3 = *a2; if ( *((_QWORD *)a2 + 6) ) snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] value[%s]", a2[12], a2[13], v3, a2[15]); else snprintf_constprop_0(Buffer, 1024, "type[%s] value[%s]", v3, a2[15]); } if ( std::operator==((char *)off_51BA88, (int)a2) ) { v4 = *((_QWORD *)a2 + 6); v5 = *((unsigned __int8 *)a2 + 56); ArgList = *a2; v6 = a2[15]; if ( v4 ) snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] value[%s] flag[%d]", (_DWORD)v4, HIDWORD(v4), ArgList, v6, v5); else snprintf_constprop_0(Buffer, 1024, "type[%s] value[%s] flag[%d]", ArgList, v6, v5); } if ( std::operator==("op_self", (int)a2) ) { v7 = a2[13]; v117[0] = 0; v8 = a2[39]; v9 = *a2; v115 = (int)v117; v116 = 0; if ( __PAIR64__((unsigned int)v7, a2[12]) ) snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] op[%s]", a2[12], v7, v9, v8); else snprintf_constprop_0(Buffer, 1024, "type[%s] op[%s]", v9, v8); std::string::operator=((unsigned int *)&v115, Buffer); night::ns_node::debug_no_space[abi:cxx11](a2[48]); std::operator+(v120, "\nobj=>", (unsigned int *)v118); v10 = std::string::append(v120, "\nobj<="); std::string::basic_string(v122, v10); std::string::operator+=(&v115, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); LABEL_65: std::string::_M_dispose((void **)v118); LABEL_131: std::string::basic_string(this, &v115); v46 = &v115; goto LABEL_132; } if ( std::operator==((char *)off_51BB10, (int)a2) ) { v11 = a2[15]; ArgLista = *a2; v12 = a2[27]; if ( *((_QWORD *)a2 + 6) ) snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] value[%s%s%s]", a2[12], a2[13], ArgLista, v12, v11, a2[27]); else snprintf_constprop_0(Buffer, 1024, "type[%s] value[%s%s%s]", ArgLista, v12, v11, a2[27]); } if ( !std::operator==((char *)off_51BB49, (int)a2) ) { if ( std::operator==("obj_self_op", (int)a2) ) { if ( a2[12] || a2[13] ) { night::ns_node::debug_no_space[abi:cxx11](a2[48]); snprintf_constprop_0( Buffer, 1024, "(%d,%d)type[%s] after[%d] op[%s] obj[%s]", a2[12], a2[13], *a2, *((unsigned __int8 *)a2 + 200), a2[39], (const char *)v122[0]); } else { night::ns_node::debug_no_space[abi:cxx11](a2[48]); snprintf_constprop_0( Buffer, 1024, "type[%s] after[%d] op[%s] obj[%s]", *a2, *((unsigned __int8 *)a2 + 200), a2[39], (const char *)v122[0]); } std::string::_M_dispose((void **)v122); } if ( std::operator==("obj_dot", (int)a2) || std::operator==("obj_property", (int)a2) ) { v17 = *((_QWORD *)a2 + 6); v112[0] = 0; v18 = a2[49]; v19 = *a2; v111[0] = (int)v112; v111[1] = 0; v20 = *((_DWORD *)v18 + 1); if ( v17 ) snprintf_constprop_0( Buffer, 1024, "(%d,%d)type[%s] propertys[%zu]", (_DWORD)v17, HIDWORD(v17), v19, (v20 - *(_DWORD *)v18) >> 2); else snprintf_constprop_0(Buffer, 1024, "type[%s] propertys[%zu]", v19, (v20 - *(_DWORD *)v18) >> 2); std::string::operator=((unsigned int *)v111, Buffer); night::ns_node::debug_no_space[abi:cxx11](a2[48]); std::operator+(v120, "\nobj =>", (unsigned int *)v118); v21 = std::string::append(v120, "\nobj<="); std::string::basic_string(v122, v21); std::string::operator+=(v111, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); std::string::_M_dispose((void **)v118); std::string::operator+=(v111, "\npropertys =>"); v22 = 0; while ( 1 ) { v23 = (char *)a2[49]; if ( v22 >= (*((_DWORD *)v23 + 1) - *(_DWORD *)v23) >> 2 ) break; v24 = (_DWORD *)std::vector::at(v23, v22); night::ns_node::debug_no_space[abi:cxx11](*v24); v113[0] = (int)&v114; std::string::_M_construct(v113, 1u, v22 + 48); std::operator+(&v115, "\n[", (unsigned int *)v113); v25 = std::string::append(&v115, "] "); std::string::basic_string(v118, v25); std::operator+(v122, v118, (unsigned int *)v120); std::string::operator+=(v111, (int)v122); ++v22; std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v118); std::string::_M_dispose((void **)&v115); std::string::_M_dispose((void **)v113); std::string::_M_dispose((void **)v120); } v26 = v111; std::string::operator+=(v111, "\npropertys<="); goto LABEL_122; } if ( std::operator==("if", (int)a2) ) { v27 = a2[13]; v117[0] = 0; v28 = a2[27]; v29 = *a2; v115 = (int)v117; v116 = 0; if ( __PAIR64__((unsigned int)v27, a2[12]) ) snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] punc[%s]", a2[12], v27, v29, v28); else snprintf_constprop_0(Buffer, 1024, "type[%s] punc[%s]", v29, v28); v26 = &v115; std::string::operator=((unsigned int *)&v115, Buffer); night::ns_node::debug_no_space[abi:cxx11](a2[51]); std::operator+(v120, "\ncond =>", (unsigned int *)v118); v30 = std::string::append(v120, "\ncond<="); std::string::basic_string(v122, v30); std::string::operator+=(&v115, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); std::string::_M_dispose((void **)v118); night::ns_node::debug_no_space[abi:cxx11](a2[52]); std::operator+(v120, "\nifd =>", (unsigned int *)v118); v31 = std::string::append(v120, "\nifd<="); std::string::basic_string(v122, v31); std::string::operator+=(&v115, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); std::string::_M_dispose((void **)v118); if ( !a2[53] ) goto LABEL_122; night::ns_node::debug_no_space[abi:cxx11](a2[53]); std::operator+(v120, "\nelsed =>", (unsigned int *)v118); v32 = std::string::append(v120, "\nelsed<="); std::string::basic_string(v122, v32); std::string::operator+=(&v115, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); v33 = v118; } else { if ( std::operator==((char *)off_51BC9A, (int)a2) ) { v34 = *((_QWORD *)a2 + 6); v117[0] = 0; v35 = a2[57]; v36 = *a2; v115 = (int)v117; v116 = 0; v37 = *((_DWORD *)v35 + 1); if ( v34 ) snprintf_constprop_0( Buffer, 1024, "(%d,%d)type[%s] progs[%zu]", (_DWORD)v34, HIDWORD(v34), v36, (v37 - *(_DWORD *)v35) >> 2); else snprintf_constprop_0(Buffer, 1024, "type[%s] progs[%zu]", v36, (v37 - *(_DWORD *)v35) >> 2); std::string::operator=((unsigned int *)&v115, Buffer); std::string::operator+=(&v115, "\nprogs =>"); for ( i = 0; ; ++i ) { v39 = (char *)a2[57]; if ( i >= (*((_DWORD *)v39 + 1) - *(_DWORD *)v39) >> 2 ) break; v40 = (_DWORD *)std::vector::at(v39, i); night::ns_node::debug_no_space[abi:cxx11](*v40); std::operator+(v122, "\n", (unsigned int *)v120); std::string::operator+=(&v115, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); } std::string::operator+=(&v115, "\nprogs<="); night::ns_node::debug_no_space[abi:cxx11](a2[54]); std::operator+(v120, "\nbody =>", (unsigned int *)v118); v41 = std::string::append(v120, "\nbody<="); std::string::basic_string(v122, v41); std::string::operator+=(&v115, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); goto LABEL_65; } if ( std::operator==("while", (int)a2) || std::operator==("do_while", (int)a2) ) { HIDWORD(v43) = a2[13]; v42 = *a2; v116 = 0; v115 = (int)v117; LODWORD(v43) = a2[12]; v117[0] = 0; if ( v43 ) snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s]", (_DWORD)v43, HIDWORD(v43), v42); else snprintf_constprop_0(Buffer, 1024, "type[%s]", v42); std::string::operator=((unsigned int *)&v115, Buffer); night::ns_node::debug_no_space[abi:cxx11](a2[51]); std::operator+(v120, "\ncond =>", (unsigned int *)v118); v44 = std::string::append(v120, "\ncond<="); std::string::basic_string(v122, v44); std::string::operator+=(&v115, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); std::string::_M_dispose((void **)v118); night::ns_node::debug_no_space[abi:cxx11](a2[54]); std::operator+(v120, "\nbody =>", (unsigned int *)v118); v45 = std::string::append(v120, "\nbody<="); std::string::basic_string(v122, v45); std::string::operator+=(&v115, (int)v122); goto LABEL_74; } if ( std::operator==("switch", (int)a2) ) { v47 = *((_QWORD *)a2 + 6); v110[0] = 0; v48 = a2[58]; v49 = *a2; v108 = v110; v109 = 0; v50 = *((_DWORD *)v48 + 1); if ( v47 ) snprintf_constprop_0( Buffer, 1024, "(%d,%d)type[%s] cases[%zu]", (_DWORD)v47, HIDWORD(v47), v49, (v50 - *(_DWORD *)v48) >> 2); else snprintf_constprop_0(Buffer, 1024, "type[%s] cases[%zu]", v49, (v50 - *(_DWORD *)v48) >> 2); std::string::operator=((unsigned int *)&v108, Buffer); night::ns_node::debug_no_space[abi:cxx11](a2[51]); std::operator+(v120, "\ncond =>", (unsigned int *)v118); v51 = std::string::append(v120, "\ncond<="); std::string::basic_string(v122, v51); std::string::operator+=(&v108, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); std::string::_M_dispose((void **)v118); std::string::operator+=(&v108, "\ncases=>\n"); for ( j = 0; ; ++j ) { v53 = (char *)a2[58]; if ( j >= (*((_DWORD *)v53 + 1) - *(_DWORD *)v53) >> 2 ) break; v54 = (_DWORD *)std::vector::at(v53, j); night::ns_node::debug_no_space[abi:cxx11](*v54); v111[0] = (int)v112; std::string::_M_construct(v111, 1u, j + 48); std::operator+(v113, "cases[", (unsigned int *)v111); v55 = std::string::append(v113, "]=>"); std::string::basic_string(&v115, v55); std::operator+(v120, &v115, (unsigned int *)v118); v56 = std::string::append(v120, "<=cases"); std::string::basic_string(v122, v56); std::string::operator+=(&v108, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); std::string::_M_dispose((void **)&v115); std::string::_M_dispose((void **)v113); std::string::_M_dispose((void **)v111); std::string::_M_dispose((void **)v118); for ( ArgListb = 0; ; ++ArgListb ) { v57 = std::vector>>::at(a2[59], j); if ( ArgListb >= (*(_DWORD *)(*(_DWORD *)v57 + 4) - **(_DWORD **)v57) >> 2 ) break; v118[0] = (int)v119; std::string::_M_construct(v118, 1u, ArgListb + 48); v111[0] = (int)v112; std::string::_M_construct(v111, 1u, j + 48); std::operator+(v113, "\ncase_progs[", (unsigned int *)v111); v58 = std::string::append(v113, ","); std::string::basic_string(&v115, v58); std::operator+(v120, &v115, (unsigned int *)v118); v59 = std::string::append(v120, "]=>"); std::string::basic_string(v122, v59); std::string::operator+=(&v108, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); std::string::_M_dispose((void **)&v115); std::string::_M_dispose((void **)v113); std::string::_M_dispose((void **)v111); std::string::_M_dispose((void **)v118); v60 = (_DWORD **)std::vector>>::at(a2[59], j); v61 = (_DWORD *)std::vector::at(*v60, ArgListb); night::ns_node::debug_no_space[abi:cxx11](*v61); v62 = std::string::append(v120, "<=case_progs\n"); std::string::basic_string(v122, v62); std::string::operator+=(&v108, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); } } std::string::operator+=(&v108, "cases<="); std::string::operator+=(&v108, "\ndefault=>"); for ( k = 0; ; ++k ) { v64 = (char *)a2[60]; if ( k >= (*((_DWORD *)v64 + 1) - *(_DWORD *)v64) >> 2 ) break; v65 = (_DWORD *)std::vector::at(v64, k); night::ns_node::debug_no_space[abi:cxx11](*v65); std::operator+(v122, "\n", (unsigned int *)v120); std::string::operator+=(&v108, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); } std::string::operator+=(&v108, "\ndefault<="); std::string::basic_string(this, &v108); v46 = (int *)&v108; goto LABEL_132; } if ( !std::operator==("binary", (int)a2) && !std::operator==("assign", (int)a2) && !std::operator==("ternary", (int)a2) ) { if ( std::operator==("prog", (int)a2) || std::operator==("prog_no_sem", (int)a2) || std::operator==("prog_no_sem_require", (int)a2) || std::operator==("obj_block", (int)a2) || std::operator==("array", (int)a2) || std::operator==("bracket", (int)a2) ) { v68 = a2[12]; v69 = a2[57]; v119[0] = 0; v70 = *a2; v71 = a2[27]; v118[0] = (int)v119; v118[1] = 0; ArgListc = a2[13]; v72 = *((_DWORD *)v69 + 1); if ( (unsigned int)v68 | (unsigned int)ArgListc ) snprintf_constprop_0( Buffer, 1024, "(%d,%d)type[%s] punc[%s] progs[%zu] =>", v68, ArgListc, v70, v71, (v72 - *(_DWORD *)v69) >> 2); else snprintf_constprop_0(Buffer, 1024, "type[%s] punc[%s] progs[%zu] =>", v70, v71, (v72 - *(_DWORD *)v69) >> 2); std::string::operator=((unsigned int *)v118, Buffer); for ( m = 0; ; ++m ) { v74 = (char *)a2[57]; if ( m >= (*((_DWORD *)v74 + 1) - *(_DWORD *)v74) >> 2 ) break; v75 = (_DWORD *)std::vector::at(v74, m); night::ns_node::debug_no_space[abi:cxx11](*v75); std::operator+(v122, "\n", (unsigned int *)v120); std::string::operator+=(v118, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); } std::string::operator+=(v118, "\nprogs<="); std::string::basic_string(this, v118); v46 = v118; goto LABEL_132; } if ( !std::operator==("call", (int)a2) ) { if ( !std::operator==("function", (int)a2) ) { std::string::basic_string(this, Buffer); return this; } v88 = a2[12]; v89 = a2[61]; v117[0] = 0; v90 = *a2; v115 = (int)v117; v91 = (unsigned int)a2[13]; v92 = a2[33]; v116 = 0; ArgListe = v91; v93 = ((unsigned int)v88 | v91) == 0; v94 = *((_DWORD *)v89 + 1); if ( v93 ) snprintf_constprop_0( Buffer, 1024, "func type[%s] name[%s] fargs[%zu] =>", v90, v92, (v94 - *(_DWORD *)v89) >> 2); else snprintf_constprop_0( Buffer, 1024, "func (%d,%d)type[%s] name[%s] fargs[%zu] =>", v88, ArgListe, v90, v92, (v94 - *(_DWORD *)v89) >> 2); std::string::operator=((unsigned int *)&v115, Buffer); v95 = 0; while ( 1 ) { v96 = (char *)a2[61]; if ( v95 >= (*((_DWORD *)v96 + 1) - *(_DWORD *)v96) >> 2 ) break; v97 = (_DWORD *)std::vector::at(v96, v95); night::ns_node::debug_no_space[abi:cxx11](*v97); std::operator+(v120, "\nfargs[]=>", (unsigned int *)v118); v98 = std::string::append(v120, "<=[]fargs"); std::string::basic_string(v122, v98); std::string::operator+=(&v115, (int)v122); ++v95; std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); std::string::_M_dispose((void **)v118); } std::string::operator+=(&v115, "\nfargs<="); night::ns_node::debug_no_space[abi:cxx11](a2[54]); std::operator+(v120, "\nbody=>", (unsigned int *)v118); v99 = std::string::append(v120, "\nbody<="); std::string::basic_string(v122, v99); std::string::operator+=(&v115, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); std::string::_M_dispose((void **)v118); std::string::operator+=(&v115, "\nfunc<="); goto LABEL_131; } v76 = *((_QWORD *)a2 + 6); v110[0] = 0; v77 = a2[56]; v78 = *a2; v108 = v110; v109 = 0; v79 = *((_DWORD *)v77 + 1); if ( v76 ) snprintf_constprop_0( Buffer, 1024, "call (%d,%d)type[%s] argss[%zu] =>", (_DWORD)v76, HIDWORD(v76), v78, (v79 - *(_DWORD *)v77) >> 2); else snprintf_constprop_0(Buffer, 1024, "call type[%s] argss[%zu] =>", v78, (v79 - *(_DWORD *)v77) >> 2); std::string::operator=((unsigned int *)&v108, Buffer); night::ns_node::debug_no_space[abi:cxx11](a2[55]); std::operator+(v120, "\nfunc=>", (unsigned int *)v118); v80 = std::string::append(v120, "\nfunc<="); std::string::basic_string(v122, v80); std::string::operator+=(&v108, (int)v122); std::string::_M_dispose((void **)v122); v81 = 0; std::string::_M_dispose((void **)v120); std::string::_M_dispose((void **)v118); while ( v81 < (*((_DWORD *)a2[56] + 1) - *(_DWORD *)a2[56]) >> 2 ) { for ( ArgListd = 0; ; ++ArgListd ) { v82 = std::vector>>::at(a2[56], v81); if ( ArgListd >= (*(_DWORD *)(*(_DWORD *)v82 + 4) - **(_DWORD **)v82) >> 2 ) break; v118[0] = (int)v119; std::string::_M_construct(v118, 1u, ArgListd + 48); v111[0] = (int)v112; std::string::_M_construct(v111, 1u, v81 + 48); std::operator+(v113, "\nargss[", (unsigned int *)v111); v83 = std::string::append(v113, ","); std::string::basic_string(&v115, v83); std::operator+(v120, &v115, (unsigned int *)v118); v84 = std::string::append(v120, "]=>"); std::string::basic_string(v122, v84); std::string::operator+=(&v108, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); std::string::_M_dispose((void **)&v115); std::string::_M_dispose((void **)v113); std::string::_M_dispose((void **)v111); std::string::_M_dispose((void **)v118); v85 = (_DWORD **)std::vector>>::at(a2[56], v81); v86 = (_DWORD *)std::vector::at(*v85, ArgListd); night::ns_node::debug_no_space[abi:cxx11](*v86); v87 = std::string::append(v120, "<="); std::string::basic_string(v122, v87); std::string::operator+=(&v108, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); } ++v81; } v26 = (int *)&v108; std::string::operator+=(&v108, "\ncall<="); goto LABEL_122; } HIDWORD(v67) = a2[13]; v66 = *a2; v120[1] = 0; v120[0] = (int)&v121; LODWORD(v67) = a2[12]; v121 = 0; if ( v67 ) snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] op[%s]", (_DWORD)v67, HIDWORD(v67), v66, a2[39]); else snprintf_constprop_0(Buffer, 1024, "type[%s] op[%s]", v66, a2[39]); v26 = v120; std::string::operator=((unsigned int *)v120, Buffer); std::string::operator+=(v120, "\nleft <="); night::ns_node::debug_no_space[abi:cxx11](a2[45]); std::string::operator+=(v120, (int)v122); std::string::_M_dispose((void **)v122); std::string::operator+=(v120, "\nright <="); night::ns_node::debug_no_space[abi:cxx11](a2[46]); std::string::operator+=(v120, (int)v122); v33 = v122; } std::string::_M_dispose((void **)v33); LABEL_122: std::string::basic_string(this, v26); v46 = v26; goto LABEL_132; } HIDWORD(v14) = a2[13]; v13 = *a2; v116 = 0; v115 = (int)v117; LODWORD(v14) = a2[12]; v117[0] = 0; if ( v14 ) snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s]", (_DWORD)v14, HIDWORD(v14), v13); else snprintf_constprop_0(Buffer, 1024, "type[%s]", v13); std::string::operator=((unsigned int *)&v115, Buffer); night::ns_node::debug_no_space[abi:cxx11](a2[47]); std::operator+(v120, " key[", (unsigned int *)v118); v15 = std::string::append(v120, "]"); std::string::basic_string(v122, v15); std::string::operator+=(&v115, (int)v122); std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); std::string::_M_dispose((void **)v118); night::ns_node::debug_no_space[abi:cxx11](a2[48]); std::operator+(v120, " value[", (unsigned int *)v118); v16 = std::string::append(v120, "]"); std::string::basic_string(v122, v16); std::string::operator+=(&v115, (int)v122); LABEL_74: std::string::_M_dispose((void **)v122); std::string::_M_dispose((void **)v120); std::string::_M_dispose((void **)v118); std::string::basic_string(this, &v115); v46 = &v115; LABEL_132: std::string::_M_dispose((void **)v46); return this; } //----- (00464774) -------------------------------------------------------- void **__gnu_cxx::__to_xstring( void **a1, int (__cdecl *a2)(unsigned __int8 *, int, int, char *), int a3, int a4, ...) { int v4; // eax void *v5; // esp void *v6; // esp unsigned int v7; // eax unsigned __int8 *v8; // edi unsigned int v9; // eax _BYTE *v10; // edx unsigned __int8 v12[12]; // [esp+10h] [ebp-28h] BYREF unsigned int v13[7]; // [esp+1Ch] [ebp-1Ch] BYREF va_list va; // [esp+50h] [ebp+18h] BYREF va_start(va, a4); v4 = 16 * ((unsigned int)(a3 + 27) >> 4); v5 = alloca(v4); v6 = alloca(v4); v7 = a2(v12, a3, a4, va); *a1 = a1 + 2; v8 = &v12[v7]; v13[0] = v7; if ( v7 > 0xF ) { *a1 = std::string::_M_create(v13, 0); a1[2] = (void *)v13[0]; } std::string::_S_copy_chars(*a1, v12, (size_t)v8); v9 = v13[0]; v10 = *a1; a1[1] = (void *)v13[0]; v10[v9] = 0; return a1; } // 464774: using guessed type unsigned int var_1C[7]; //----- (00464810) -------------------------------------------------------- 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_53799C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); } } } // 533CF4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; // 53799C: using guessed type void (__cdecl *off_53799C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); // 78A9D4: using guessed type int _CRT_MT; //----- (00464880) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) { return std::__basic_file::fd(a1 + 40); } //----- (00464890) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) { return std::__basic_file::file(a1 + 40); } //----- (004648B0) -------------------------------------------------------- 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_537874; 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; } // 537874: using guessed type int (*off_537874)(); //----- (00464950) -------------------------------------------------------- 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_537874; 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; } // 537874: using guessed type int (*off_537874)(); //----- (004649F0) -------------------------------------------------------- void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) { void *result; // eax result = std::filebuf::basic_filebuf((int)a1); *a1 = &off_537874; return result; } // 537874: using guessed type int (*off_537874)(); //----- (00464A10) -------------------------------------------------------- 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_537874; 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; } // 537874: using guessed type int (*off_537874)(); //----- (00464AB0) -------------------------------------------------------- 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_537874; 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; } // 537874: using guessed type int (*off_537874)(); //----- (00464B50) -------------------------------------------------------- void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) { void *result; // eax result = std::filebuf::basic_filebuf((int)a1); *a1 = &off_537874; return result; } // 537874: using guessed type int (*off_537874)(); //----- (00464B70) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1) { *a1 = &off_5386E0; std::filebuf::close((int)a1); std::__basic_file::~__basic_file(a1 + 10); *a1 = &off_538A48; std::locale::~locale(a1 + 7); operator delete(a1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538A48: using guessed type int (*off_538A48)(); //----- (00464BC0) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) { *(_DWORD *)a1 = &off_5386E0; std::filebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538A48: using guessed type int (*off_538A48)(); //----- (00464C00) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) { *(_DWORD *)a1 = &off_5386E0; std::filebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538A48: using guessed type int (*off_538A48)(); //----- (00464C40) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) { return std::__basic_file::fd(a1 + 40); } //----- (00464C50) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) { return std::__basic_file::file(a1 + 40); } //----- (00464C70) -------------------------------------------------------- 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_5378B4; 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; } // 5378B4: using guessed type int (*off_5378B4)(); //----- (00464D10) -------------------------------------------------------- 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_5378B4; 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; } // 5378B4: using guessed type int (*off_5378B4)(); //----- (00464DB0) -------------------------------------------------------- void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) { void *result; // eax result = std::wfilebuf::basic_filebuf((int)a1); *a1 = &off_5378B4; return result; } // 5378B4: using guessed type int (*off_5378B4)(); //----- (00464DD0) -------------------------------------------------------- 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_5378B4; 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; } // 5378B4: using guessed type int (*off_5378B4)(); //----- (00464E70) -------------------------------------------------------- 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_5378B4; 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; } // 5378B4: using guessed type int (*off_5378B4)(); //----- (00464F10) -------------------------------------------------------- void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) { void *result; // eax result = std::wfilebuf::basic_filebuf((int)a1); *a1 = &off_5378B4; return result; } // 5378B4: using guessed type int (*off_5378B4)(); //----- (00464F30) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1) { *a1 = &off_538720; std::wfilebuf::close((int)a1); std::__basic_file::~__basic_file(a1 + 10); *a1 = &off_538A88; std::locale::~locale(a1 + 7); operator delete(a1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 538A88: using guessed type int (*off_538A88)(); //----- (00464F80) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) { *(_DWORD *)a1 = &off_538720; std::wfilebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 538A88: using guessed type int (*off_538A88)(); //----- (00464FC0) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) { *(_DWORD *)a1 = &off_538720; std::wfilebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 538A88: using guessed type int (*off_538A88)(); //----- (00465000) -------------------------------------------------------- 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_52FFF5[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; } //----- (00465090) -------------------------------------------------------- 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; } //----- (004651B0) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) { return *(_DWORD *)(a1 + 32); } //----- (004651C0) -------------------------------------------------------- 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; } // 465228: variable 'v17' is possibly undefined //----- (00465280) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) { return fflush(*(FILE **)(a1 + 32)); } //----- (004652A0) -------------------------------------------------------- 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; } //----- (004652E0) -------------------------------------------------------- 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; } //----- (00465330) -------------------------------------------------------- size_t __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, void *Buffer, size_t ElementCount) { return fwrite(Buffer, 1u, ElementCount, this[8]); } //----- (00465360) -------------------------------------------------------- _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; } //----- (004653F0) -------------------------------------------------------- _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; } } //----- (004654C0) -------------------------------------------------------- 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; } //----- (00465530) -------------------------------------------------------- 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; } //----- (00465570) -------------------------------------------------------- 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); } //----- (004655B0) -------------------------------------------------------- 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_5378F4; *(_DWORD *)(a2 + 32) = 0; this[8] = v3; result = *(_DWORD *)(a2 + 36); *(_DWORD *)(a2 + 36) = -1; this[9] = result; return result; } // 4655BE: variable 'v5' is possibly undefined // 5378F4: using guessed type int (*off_5378F4)(); //----- (004655F0) -------------------------------------------------------- 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_538A48; *(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_5378F4; this[9] = -1; this[8] = a2; return result; } // 5378F4: using guessed type int (*off_5378F4)(); // 538A48: using guessed type int (*off_538A48)(); //----- (00465650) -------------------------------------------------------- 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_5378F4; *(_DWORD *)(a2 + 32) = 0; this[8] = v3; result = *(_DWORD *)(a2 + 36); *(_DWORD *)(a2 + 36) = -1; this[9] = result; return result; } // 46565E: variable 'v5' is possibly undefined // 5378F4: using guessed type int (*off_5378F4)(); //----- (00465690) -------------------------------------------------------- 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_538A48; *(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_5378F4; this[9] = -1; this[8] = a2; return result; } // 5378F4: using guessed type int (*off_5378F4)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004656F0) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1) { _DWORD **v2; // ecx v2 = (_DWORD **)(a1 + 28); *(v2 - 7) = &off_538A48; std::locale::~locale(v2); operator delete(a1); } // 538A48: using guessed type int (*off_538A48)(); //----- (00465720) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) { *(_DWORD *)a1 = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 28)); } // 538A48: using guessed type int (*off_538A48)(); //----- (00465730) -------------------------------------------------------- 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; } //----- (00465770) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) { return *(_DWORD *)(a1 + 32); } //----- (00465780) -------------------------------------------------------- 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; } // 4657E8: variable 'v17' is possibly undefined //----- (00465840) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) { return fflush(*(FILE **)(a1 + 32)); } //----- (00465860) -------------------------------------------------------- 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; } //----- (00465880) -------------------------------------------------------- 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; } } //----- (00465900) -------------------------------------------------------- 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; } //----- (00465950) -------------------------------------------------------- _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; } //----- (004659E0) -------------------------------------------------------- _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; } } //----- (00465AB0) -------------------------------------------------------- __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; } //----- (00465AF0) -------------------------------------------------------- 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; } //----- (00465B60) -------------------------------------------------------- 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)); } //----- (00465B90) -------------------------------------------------------- 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_537934; *(_DWORD *)(a2 + 32) = 0; *(_DWORD *)(this + 32) = v3; *(_WORD *)(this + 36) = *(_WORD *)(a2 + 36); result = -1; *(_WORD *)(a2 + 36) = -1; return result; } // 465B9E: variable 'v5' is possibly undefined // 537934: using guessed type int (*off_537934)(); //----- (00465BE0) -------------------------------------------------------- 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_538A88; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_537934; this[8] = a2; result = -1; *((_WORD *)this + 18) = -1; return result; } // 537934: using guessed type int (*off_537934)(); // 538A88: using guessed type int (*off_538A88)(); //----- (00465C40) -------------------------------------------------------- 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_537934; *(_DWORD *)(a2 + 32) = 0; *(_DWORD *)(this + 32) = v3; *(_WORD *)(this + 36) = *(_WORD *)(a2 + 36); result = -1; *(_WORD *)(a2 + 36) = -1; return result; } // 465C4E: variable 'v5' is possibly undefined // 537934: using guessed type int (*off_537934)(); //----- (00465C90) -------------------------------------------------------- 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_538A88; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_537934; this[8] = a2; result = -1; *((_WORD *)this + 18) = -1; return result; } // 537934: using guessed type int (*off_537934)(); // 538A88: using guessed type int (*off_538A88)(); //----- (00465CF0) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1) { _DWORD **v2; // ecx v2 = (_DWORD **)(a1 + 28); *(v2 - 7) = &off_538A88; std::locale::~locale(v2); operator delete(a1); } // 538A88: using guessed type int (*off_538A88)(); //----- (00465D20) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) { *(_DWORD *)a1 = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 28)); } // 538A88: using guessed type int (*off_538A88)(); //----- (00465D30) -------------------------------------------------------- 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; } //----- (00465D70) -------------------------------------------------------- void __fastcall __gnu_cxx::recursive_init_error::recursive_init_error(_DWORD *a1) { *a1 = &off_537974; } // 537974: using guessed type void (__cdecl *off_537974)(__gnu_cxx::recursive_init_error *__hidden this); //----- (00465D80) -------------------------------------------------------- void __fastcall __gnu_cxx::recursive_init_error::~recursive_init_error(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_537974; std::exception::~exception(v2); operator delete(a1, 4u); } // 465D8C: variable 'v2' is possibly undefined // 537974: using guessed type void (__cdecl *off_537974)(__gnu_cxx::recursive_init_error *__hidden this); //----- (00465DB0) -------------------------------------------------------- void __cdecl __gnu_cxx::recursive_init_error::~recursive_init_error(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_537974; std::exception::~exception(a1); } // 465DB0: variable 'v1' is possibly undefined // 537974: using guessed type void (__cdecl *off_537974)(__gnu_cxx::recursive_init_error *__hidden this); //----- (00465DC0) -------------------------------------------------------- void __fastcall __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_537988; std::exception::~exception(v2); operator delete(a1, 4u); } // 465DCC: variable 'v2' is possibly undefined // 537988: using guessed type void (__cdecl *off_537988)(__gnu_cxx::__concurrence_lock_error *__hidden this); //----- (00465DF0) -------------------------------------------------------- void __cdecl __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_537988; std::exception::~exception(a1); } // 465DF0: variable 'v1' is possibly undefined // 537988: using guessed type void (__cdecl *off_537988)(__gnu_cxx::__concurrence_lock_error *__hidden this); //----- (00465E00) -------------------------------------------------------- void __fastcall __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_53799C; std::exception::~exception(v2); operator delete(a1, 4u); } // 465E0C: variable 'v2' is possibly undefined // 53799C: using guessed type void (__cdecl *off_53799C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (00465E30) -------------------------------------------------------- void __cdecl __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_53799C; std::exception::~exception(a1); } // 465E30: variable 'v1' is possibly undefined // 53799C: using guessed type void (__cdecl *off_53799C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (00465E40) -------------------------------------------------------- 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_52FF8C; 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); } //----- (00465ED0) -------------------------------------------------------- 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); } // 516B98: using guessed type char __gnu_cxx::__verbose_terminate_handler(void)::terminating; // 465ED0: using guessed type int status[8]; //----- (00465FC0) -------------------------------------------------------- void __noreturn __gnu_cxx::__throw_concurrence_lock_error(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_537988; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); } // 533CE8: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; // 537988: using guessed type void (__cdecl *off_537988)(__gnu_cxx::__concurrence_lock_error *__hidden this); //----- (00465FF0) -------------------------------------------------------- void __noreturn __gnu_cxx::__throw_concurrence_unlock_error(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_53799C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); } // 533CF4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; // 53799C: using guessed type void (__cdecl *off_53799C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (00466020) -------------------------------------------------------- int __gnu_cxx::__freeres(void) { int result; // eax result = dword_51539C; if ( dword_51539C ) { result = __mingw_free(dword_51539C); dword_51539C = 0; } return result; } // 51539C: using guessed type int dword_51539C; //----- (00466050) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00466060) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00466070) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00466080) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00466090) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (004660A0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (004660B0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (004660C0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (004660D0) -------------------------------------------------------- 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; } //----- (00466110) -------------------------------------------------------- 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; } //----- (00466150) -------------------------------------------------------- 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; } //----- (004661C0) -------------------------------------------------------- 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; } } //----- (00466230) -------------------------------------------------------- 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; } //----- (00466250) -------------------------------------------------------- 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; } //----- (004662B0) -------------------------------------------------------- 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; } //----- (004663B0) -------------------------------------------------------- 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); } //----- (00466420) -------------------------------------------------------- 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; } // 466448: variable 'v5' is possibly undefined //----- (00466650) -------------------------------------------------------- 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; } } //----- (00466D10) -------------------------------------------------------- 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; } //----- (00466DF0) -------------------------------------------------------- const char *`anonymous namespace'::io_error_category::name() { return "iostream"; } //----- (00466E00) -------------------------------------------------------- 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; } //----- (00466EA0) -------------------------------------------------------- _anonymous_namespace_::system_error_category *__stdcall `anonymous namespace'::system_error_category::default_error_condition( _anonymous_namespace_::system_error_category *this, int a2) { return this; } //----- (00466EE0) -------------------------------------------------------- const char *`anonymous namespace'::system_error_category::name() { return "system"; } //----- (00466EF0) -------------------------------------------------------- const char *`anonymous namespace'::generic_error_category::name() { return "generic"; } //----- (00466F00) -------------------------------------------------------- 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; } // 466F3B: variable 'v7' is possibly undefined //----- (00466F50) -------------------------------------------------------- int WXML::EXPRLib::NonTerminal::GetClass() { return 2; } //----- (00466F58) -------------------------------------------------------- int WXML::EXPRLib::EPS::GetClass() { return 4; } //----- (00466F60) -------------------------------------------------------- int WXML::EXPRLib::Action::GetClass() { return 3; } //----- (00466F68) -------------------------------------------------------- int WXML::EXPRLib::Terminal::GetClass() { return 1; } //----- (00466F70) -------------------------------------------------------- const char *__gnu_cxx::__concurrence_lock_error::what() { return "__gnu_cxx::__concurrence_lock_error"; } //----- (00466F80) -------------------------------------------------------- const char *__gnu_cxx::__concurrence_unlock_error::what() { return "__gnu_cxx::__concurrence_unlock_error"; } //----- (00466F90) -------------------------------------------------------- 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; } //----- (00466FC0) -------------------------------------------------------- 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); } //----- (00467000) -------------------------------------------------------- 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; } //----- (00467080) -------------------------------------------------------- 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)); } //----- (004670B0) -------------------------------------------------------- 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; } //----- (00467100) -------------------------------------------------------- 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); } //----- (00467140) -------------------------------------------------------- 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; } //----- (004671B0) -------------------------------------------------------- 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)); } //----- (004671E0) -------------------------------------------------------- int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3) { return std::wstring::find(this, C, a3); } //----- (004671F0) -------------------------------------------------------- void *__thiscall std::wstring::get_allocator(void *this, int a2) { return this; } //----- (00467200) -------------------------------------------------------- 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; } //----- (00467230) -------------------------------------------------------- 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); } //----- (00467270) -------------------------------------------------------- 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; } // 4672BC: conditional instruction was optimized away because %arg_8.4!=0 //----- (00467300) -------------------------------------------------------- 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)); } //----- (00467330) -------------------------------------------------------- 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; } //----- (00467380) -------------------------------------------------------- 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); } //----- (004673C0) -------------------------------------------------------- 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; } //----- (00467440) -------------------------------------------------------- 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)); } //----- (00467470) -------------------------------------------------------- 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; } //----- (004674B0) -------------------------------------------------------- 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; } //----- (004674E0) -------------------------------------------------------- int __fastcall std::wstring::end(_DWORD *a1) { return *a1 + 2 * *(_DWORD *)(*a1 - 12); } //----- (004674F0) -------------------------------------------------------- int __fastcall std::wstring::_Rep::_M_is_leaked(int a1) { return *(_DWORD *)(a1 + 8) >> 31; } //----- (00467500) -------------------------------------------------------- bool __fastcall std::wstring::_Rep::_M_is_shared(int a1) { return *(_DWORD *)(a1 + 8) > 0; } //----- (00467510) -------------------------------------------------------- int __fastcall std::wstring::back(_DWORD *a1) { return *a1 + 2 * *(_DWORD *)(*a1 - 12) - 2; } //----- (00467520) -------------------------------------------------------- int __fastcall std::wstring::cend(_DWORD *a1) { return *a1 + 2 * *(_DWORD *)(*a1 - 12); } //----- (00467530) -------------------------------------------------------- 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; } //----- (004675C0) -------------------------------------------------------- int __fastcall std::wstring::data(int a1) { return *(_DWORD *)a1; } //----- (004675D0) -------------------------------------------------------- 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); } //----- (00467610) -------------------------------------------------------- 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; } //----- (004676D0) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, wchar_t **a2, int a3) { return std::wstring::find(this, *a2, a3, *((_DWORD *)*a2 - 3)); } //----- (00467700) -------------------------------------------------------- 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; } //----- (00467750) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (00467760) -------------------------------------------------------- int __fastcall std::wstring::size(_DWORD *a1) { return *(_DWORD *)(*a1 - 12); } //----- (00467770) -------------------------------------------------------- int __fastcall std::wstring::begin(int a1) { return *(_DWORD *)a1; } //----- (00467780) -------------------------------------------------------- int __fastcall std::wstring::c_str(int a1) { return *(_DWORD *)a1; } //----- (00467790) -------------------------------------------------------- _DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (004677A0) -------------------------------------------------------- bool __fastcall std::wstring::empty(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) == 0; } //----- (004677B0) -------------------------------------------------------- int __fastcall std::wstring::front(int a1) { return *(_DWORD *)a1; } //----- (004677C0) -------------------------------------------------------- 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); } //----- (00467800) -------------------------------------------------------- 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; } // 467845: conditional instruction was optimized away because %arg_8.4!=0 //----- (00467870) -------------------------------------------------------- unsigned int __thiscall std::wstring::rfind(int *this, wchar_t **a2, int a3) { return std::wstring::rfind(this, *a2, a3, *((_DWORD *)*a2 - 3)); } //----- (004678A0) -------------------------------------------------------- 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; } //----- (004678E0) -------------------------------------------------------- int __fastcall std::wstring::_M_rep(_DWORD *a1) { return *a1 - 12; } //----- (004678F0) -------------------------------------------------------- int __fastcall std::wstring::cbegin(int a1) { return *(_DWORD *)a1; } //----- (00467900) -------------------------------------------------------- int __fastcall std::wstring::length(_DWORD *a1) { return *(_DWORD *)(*a1 - 12); } //----- (00467910) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); return result; } //----- (00467930) -------------------------------------------------------- _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; } //----- (00467990) -------------------------------------------------------- int __fastcall std::wstring::_M_data(int a1) { return *(_DWORD *)a1; } //----- (004679A0) -------------------------------------------------------- int __fastcall std::wstring::_M_iend(_DWORD *a1) { return *a1 + 2 * *(_DWORD *)(*a1 - 12); } //----- (004679B0) -------------------------------------------------------- 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; } //----- (00467A10) -------------------------------------------------------- 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; } //----- (00467A60) -------------------------------------------------------- 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; } //----- (00467B00) -------------------------------------------------------- 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; } //----- (00467BA0) -------------------------------------------------------- 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; } //----- (00467C40) -------------------------------------------------------- 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; } //----- (00467D20) -------------------------------------------------------- _DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); return result; } //----- (00467D40) -------------------------------------------------------- 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; } //----- (00467D80) -------------------------------------------------------- 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; } //----- (00467DA0) -------------------------------------------------------- int __fastcall std::wstring::capacity(_DWORD *a1) { return *(_DWORD *)(*a1 - 8); } //----- (00467DB0) -------------------------------------------------------- int std::wstring::max_size() { return 536870910; } //----- (00467DC0) -------------------------------------------------------- int __fastcall std::wstring::_M_ibegin(int a1) { return *(_DWORD *)a1; } //----- (00467DD0) -------------------------------------------------------- int __thiscall std::wstring::operator[](_DWORD *this, int a2) { return *this + 2 * a2; } //----- (00467DE0) -------------------------------------------------------- int __fastcall std::istream::gcount(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00467DF0) -------------------------------------------------------- int __fastcall std::istream::sentry::operator bool(unsigned __int8 *a1) { return *a1; } //----- (00467E00) -------------------------------------------------------- int __fastcall std::ostream::sentry::operator bool(unsigned __int8 *a1) { return *a1; } //----- (00467E10) -------------------------------------------------------- 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; } //----- (00467E30) -------------------------------------------------------- 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); } // 467E54: variable 'v7' is possibly undefined //----- (00467E70) -------------------------------------------------------- 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; } //----- (00467EF0) -------------------------------------------------------- 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); } // 467F0B: variable 'v5' is possibly undefined //----- (00467F20) -------------------------------------------------------- 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; } //----- (00467F70) -------------------------------------------------------- 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); } // 467F94: variable 'v7' is possibly undefined //----- (00467FB0) -------------------------------------------------------- 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; } //----- (00468020) -------------------------------------------------------- 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); } // 46803B: variable 'v5' is possibly undefined //----- (00468050) -------------------------------------------------------- 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); } //----- (00468060) -------------------------------------------------------- void *__thiscall std::string::get_allocator(void *ecx0, std::string *this) { return ecx0; } //----- (00468070) -------------------------------------------------------- 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; } //----- (004680A0) -------------------------------------------------------- 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); } // 4680C4: variable 'v7' is possibly undefined //----- (004680E0) -------------------------------------------------------- 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; } //----- (00468150) -------------------------------------------------------- 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); } // 46816B: variable 'v5' is possibly undefined //----- (00468180) -------------------------------------------------------- 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; } //----- (004681D0) -------------------------------------------------------- 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); } // 4681F4: variable 'v7' is possibly undefined //----- (00468210) -------------------------------------------------------- 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; } //----- (00468270) -------------------------------------------------------- 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); } // 46828B: variable 'v5' is possibly undefined //----- (004682A0) -------------------------------------------------------- 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; } //----- (004682E0) -------------------------------------------------------- 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; } //----- (00468310) -------------------------------------------------------- int __fastcall std::string::end(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) + *a1; } //----- (00468320) -------------------------------------------------------- int __fastcall std::string::_Rep::_M_is_leaked(int a1) { return *(_DWORD *)(a1 + 8) >> 31; } //----- (00468330) -------------------------------------------------------- bool __fastcall std::string::_Rep::_M_is_shared(int a1) { return *(_DWORD *)(a1 + 8) > 0; } //----- (00468340) -------------------------------------------------------- int __fastcall std::string::back(_DWORD *a1) { return *a1 + *(_DWORD *)(*a1 - 12) - 1; } //----- (00468350) -------------------------------------------------------- int __fastcall std::string::cend(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) + *a1; } //----- (00468360) -------------------------------------------------------- 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; } //----- (004683E0) -------------------------------------------------------- int __fastcall std::string::data(int a1) { return *(_DWORD *)a1; } //----- (004683F0) -------------------------------------------------------- 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); } // 468414: variable 'v7' is possibly undefined //----- (00468430) -------------------------------------------------------- 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; } //----- (00468500) -------------------------------------------------------- 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); } // 46851B: variable 'v5' is possibly undefined //----- (00468530) -------------------------------------------------------- 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; } //----- (00468580) -------------------------------------------------------- _DWORD *__thiscall std::string::rend(_DWORD *ecx0, std::string *this) { _DWORD *result; // eax result = ecx0; *ecx0 = *(_DWORD *)this; return result; } //----- (00468590) -------------------------------------------------------- int __fastcall std::string::size(_DWORD *a1) { return *(_DWORD *)(*a1 - 12); } //----- (004685A0) -------------------------------------------------------- int __fastcall std::string::begin(int a1) { return *(_DWORD *)a1; } //----- (004685B0) -------------------------------------------------------- int __fastcall std::string::c_str(int a1) { return *(_DWORD *)a1; } //----- (004685C0) -------------------------------------------------------- _DWORD *__thiscall std::string::crend(_DWORD *ecx0, std::string *this) { _DWORD *result; // eax result = ecx0; *ecx0 = *(_DWORD *)this; return result; } //----- (004685D0) -------------------------------------------------------- bool __fastcall std::string::empty(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) == 0; } //----- (004685E0) -------------------------------------------------------- int __fastcall std::string::front(int a1) { return *(_DWORD *)a1; } //----- (004685F0) -------------------------------------------------------- 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); } // 468614: variable 'v7' is possibly undefined //----- (00468630) -------------------------------------------------------- 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; } // 46867D: conditional instruction was optimized away because %arg_8.4!=0 //----- (004686B0) -------------------------------------------------------- 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); } // 4686CB: variable 'v5' is possibly undefined //----- (004686E0) -------------------------------------------------------- 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; } //----- (00468720) -------------------------------------------------------- int __fastcall std::string::_M_rep(_DWORD *a1) { return *a1 - 12; } //----- (00468730) -------------------------------------------------------- int __fastcall std::string::cbegin(int a1) { return *(_DWORD *)a1; } //----- (00468740) -------------------------------------------------------- int __fastcall std::string::length(_DWORD *a1) { return *(_DWORD *)(*a1 - 12); } //----- (00468750) -------------------------------------------------------- _DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, std::string *this) { _DWORD *result; // eax result = ecx0; *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; return result; } //----- (00468760) -------------------------------------------------------- _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; } // 468788: variable 'v6' is possibly undefined //----- (004687C0) -------------------------------------------------------- int __fastcall std::string::_M_data(int a1) { return *(_DWORD *)a1; } //----- (004687D0) -------------------------------------------------------- int __fastcall std::string::_M_iend(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) + *a1; } //----- (004687E0) -------------------------------------------------------- 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; } //----- (00468830) -------------------------------------------------------- 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; } //----- (00468870) -------------------------------------------------------- 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; } //----- (00468900) -------------------------------------------------------- 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; } //----- (00468990) -------------------------------------------------------- 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; } //----- (00468A20) -------------------------------------------------------- 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; } //----- (00468AF0) -------------------------------------------------------- _DWORD *__thiscall std::string::crbegin(_DWORD *ecx0, std::string *this) { _DWORD *result; // eax result = ecx0; *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; return result; } //----- (00468B00) -------------------------------------------------------- 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; } //----- (00468B40) -------------------------------------------------------- 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; } //----- (00468B60) -------------------------------------------------------- int __fastcall std::string::capacity(_DWORD *a1) { return *(_DWORD *)(*a1 - 8); } //----- (00468B70) -------------------------------------------------------- int std::string::max_size() { return 1073741820; } //----- (00468B80) -------------------------------------------------------- int __fastcall std::string::_M_ibegin(int a1) { return *(_DWORD *)a1; } //----- (00468B90) -------------------------------------------------------- int __thiscall std::string::operator[](_DWORD *this, int a2) { return a2 + *this; } //----- (00468BA0) -------------------------------------------------------- const char *std::bad_typeid::what() { return "std::bad_typeid"; } //----- (00468BB0) -------------------------------------------------------- int __fastcall std::error_code::default_error_condition(int a1) { return (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(a1 + 4) + 20))(*(_DWORD *)(a1 + 4), *(_DWORD *)a1); } //----- (00468BD0) -------------------------------------------------------- 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(); } //----- (00468BF0) -------------------------------------------------------- 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(); } //----- (00468C10) -------------------------------------------------------- _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; } // 468C10: using guessed type int var_D[3]; //----- (00468C70) -------------------------------------------------------- _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; } // 468C70: using guessed type int var_D[3]; //----- (00468CA0) -------------------------------------------------------- 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(); } //----- (00468CC0) -------------------------------------------------------- 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(); } //----- (00468CE0) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (00468CF0) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (00468D00) -------------------------------------------------------- _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; } // 468D00: using guessed type int var_D[3]; //----- (00468D60) -------------------------------------------------------- _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; } // 468D60: using guessed type int var_D[3]; //----- (00468DC0) -------------------------------------------------------- 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(); } //----- (00468DE0) -------------------------------------------------------- _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; } // 468DE0: using guessed type int var_D[3]; //----- (00468E10) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); } //----- (00468E20) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); } //----- (00468E30) -------------------------------------------------------- _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; } // 468E30: using guessed type int var_D[3]; //----- (00468E60) -------------------------------------------------------- _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; } // 468E60: using guessed type int var_D[3]; //----- (00468E90) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00468EA0) -------------------------------------------------------- _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; } // 468EA0: using guessed type int var_D[3]; //----- (00468F00) -------------------------------------------------------- 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(); } //----- (00468F20) -------------------------------------------------------- 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(); } //----- (00468F40) -------------------------------------------------------- _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; } // 468F40: using guessed type int var_D[3]; //----- (00468FA0) -------------------------------------------------------- _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; } // 468FA0: using guessed type int var_D[3]; //----- (00468FD0) -------------------------------------------------------- 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(); } //----- (00468FF0) -------------------------------------------------------- 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(); } //----- (00469010) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (00469020) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (00469030) -------------------------------------------------------- _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; } // 469030: using guessed type int var_D[3]; //----- (00469090) -------------------------------------------------------- _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; } // 469090: using guessed type int var_D[3]; //----- (004690F0) -------------------------------------------------------- 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(); } //----- (00469110) -------------------------------------------------------- _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; } // 469110: using guessed type int var_D[3]; //----- (00469140) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); } //----- (00469150) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); } //----- (00469160) -------------------------------------------------------- _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; } // 469160: using guessed type int var_D[3]; //----- (00469190) -------------------------------------------------------- _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; } // 469190: using guessed type int var_D[3]; //----- (004691C0) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (004691D0) -------------------------------------------------------- _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; } // 4691D0: using guessed type int var_D[3]; //----- (00469230) -------------------------------------------------------- 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(); } //----- (00469250) -------------------------------------------------------- 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(); } //----- (00469270) -------------------------------------------------------- _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; } // 469270: using guessed type int var_D[3]; //----- (004692D0) -------------------------------------------------------- _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; } // 4692D0: using guessed type int var_D[3]; //----- (00469300) -------------------------------------------------------- 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(); } //----- (00469320) -------------------------------------------------------- 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(); } //----- (00469340) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); } //----- (00469350) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (00469360) -------------------------------------------------------- _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; } // 469360: using guessed type int var_D[3]; //----- (004693C0) -------------------------------------------------------- _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; } // 4693C0: using guessed type int var_D[3]; //----- (00469420) -------------------------------------------------------- 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(); } //----- (00469440) -------------------------------------------------------- _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; } // 469440: using guessed type int var_D[3]; //----- (00469470) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (00469480) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00469490) -------------------------------------------------------- _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; } // 469490: using guessed type int var_D[3]; //----- (004694C0) -------------------------------------------------------- _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; } // 4694C0: using guessed type int var_D[3]; //----- (004694F0) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); } //----- (00469500) -------------------------------------------------------- _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; } // 469500: using guessed type int var_D[3]; //----- (00469560) -------------------------------------------------------- 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(); } //----- (00469580) -------------------------------------------------------- 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(); } //----- (004695A0) -------------------------------------------------------- _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; } // 4695A0: using guessed type int var_D[3]; //----- (00469600) -------------------------------------------------------- _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; } // 469600: using guessed type int var_D[3]; //----- (00469630) -------------------------------------------------------- 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(); } //----- (00469650) -------------------------------------------------------- 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(); } //----- (00469670) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); } //----- (00469680) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (00469690) -------------------------------------------------------- _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; } // 469690: using guessed type int var_D[3]; //----- (004696F0) -------------------------------------------------------- _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; } // 4696F0: using guessed type int var_D[3]; //----- (00469750) -------------------------------------------------------- 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(); } //----- (00469770) -------------------------------------------------------- _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; } // 469770: using guessed type int var_D[3]; //----- (004697A0) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (004697B0) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (004697C0) -------------------------------------------------------- _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; } // 4697C0: using guessed type int var_D[3]; //----- (004697F0) -------------------------------------------------------- _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; } // 4697F0: using guessed type int var_D[3]; //----- (00469820) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); } //----- (00469830) -------------------------------------------------------- _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; } // 469830: using guessed type int var_D[3]; //----- (004698A0) -------------------------------------------------------- _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; } //----- (004698C0) -------------------------------------------------------- _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; } //----- (004698E0) -------------------------------------------------------- _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; } //----- (00469920) -------------------------------------------------------- _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; } //----- (00469940) -------------------------------------------------------- _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; } //----- (004699C0) -------------------------------------------------------- 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; } //----- (00469A70) -------------------------------------------------------- _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; } //----- (00469AB0) -------------------------------------------------------- _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; } //----- (00469AD0) -------------------------------------------------------- _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; } //----- (00469B40) -------------------------------------------------------- _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; } //----- (00469B60) -------------------------------------------------------- _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; } //----- (00469B80) -------------------------------------------------------- _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; } //----- (00469BC0) -------------------------------------------------------- _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; } //----- (00469BE0) -------------------------------------------------------- _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; } //----- (00469C60) -------------------------------------------------------- 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; } //----- (00469D20) -------------------------------------------------------- _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; } //----- (00469D60) -------------------------------------------------------- _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; } //----- (00469D80) -------------------------------------------------------- _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; } //----- (00469DE0) -------------------------------------------------------- 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_538BD4; 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; } // 469E17: variable 'v5' is possibly undefined // 469E7D: variable 'v6' is possibly undefined // 516628: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); //----- (00469ED0) -------------------------------------------------------- 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_538BE4; 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; } // 469F07: variable 'v5' is possibly undefined // 469F71: variable 'v6' is possibly undefined // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (00469FC0) -------------------------------------------------------- int __fastcall std::logic_error::what(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00469FD0) -------------------------------------------------------- bool __fastcall std::__basic_file::is_open(_DWORD *a1) { return *a1 != 0; } //----- (00469FE0) -------------------------------------------------------- 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); } // 46A00E: variable 'v6' is possibly undefined //----- (0046A020) -------------------------------------------------------- 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); } // 46A04E: variable 'v6' is possibly undefined //----- (0046A060) -------------------------------------------------------- _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; } // 46A094: variable 'v6' is possibly undefined //----- (0046A0F0) -------------------------------------------------------- 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; } // 46A124: variable 'v7' is possibly undefined // 46A14B: variable 'v8' is possibly undefined //----- (0046A180) -------------------------------------------------------- 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); } // 46A1AE: variable 'v6' is possibly undefined //----- (0046A1C0) -------------------------------------------------------- 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); } // 46A1EE: variable 'v6' is possibly undefined //----- (0046A200) -------------------------------------------------------- _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; } // 46A234: variable 'v6' is possibly undefined //----- (0046A290) -------------------------------------------------------- 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; } // 46A2C4: variable 'v7' is possibly undefined // 46A2EC: variable 'v8' is possibly undefined //----- (0046A320) -------------------------------------------------------- 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; } // 46A36B: variable 'v9' is possibly undefined // 46A392: variable 'v10' is possibly undefined //----- (0046A3D0) -------------------------------------------------------- _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; } // 46A41B: variable 'v8' is possibly undefined //----- (0046A470) -------------------------------------------------------- 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); } // 46A497: variable 'v4' is possibly undefined //----- (0046A4B0) -------------------------------------------------------- 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); } // 46A4D7: variable 'v4' is possibly undefined //----- (0046A4F0) -------------------------------------------------------- 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); } // 46A506: variable 'v3' is possibly undefined //----- (0046A520) -------------------------------------------------------- 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); } // 46A536: variable 'v3' is possibly undefined //----- (0046A550) -------------------------------------------------------- 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; } // 46A59B: variable 'v9' is possibly undefined // 46A5C3: variable 'v10' is possibly undefined //----- (0046A600) -------------------------------------------------------- _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; } // 46A64B: variable 'v8' is possibly undefined //----- (0046A6A0) -------------------------------------------------------- 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); } // 46A6C7: variable 'v4' is possibly undefined //----- (0046A6E0) -------------------------------------------------------- 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); } // 46A707: variable 'v4' is possibly undefined //----- (0046A720) -------------------------------------------------------- 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); } // 46A736: variable 'v3' is possibly undefined //----- (0046A750) -------------------------------------------------------- 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); } // 46A766: variable 'v3' is possibly undefined //----- (0046A780) -------------------------------------------------------- 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); } // 46A7CE: variable 'v9' is possibly undefined //----- (0046A7E0) -------------------------------------------------------- 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); } // 46A82E: variable 'v9' is possibly undefined //----- (0046A840) -------------------------------------------------------- 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); } // 46A88E: variable 'v9' is possibly undefined //----- (0046A8A0) -------------------------------------------------------- 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); } // 46A8EE: variable 'v9' is possibly undefined //----- (0046A900) -------------------------------------------------------- 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); } // 46A94E: variable 'v9' is possibly undefined //----- (0046A960) -------------------------------------------------------- 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); } // 46A9AE: variable 'v9' is possibly undefined //----- (0046A9C0) -------------------------------------------------------- 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)); } // 46A9CE: variable 'v2' is possibly undefined //----- (0046A9E0) -------------------------------------------------------- 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)); } // 46A9EE: variable 'v2' is possibly undefined //----- (0046AA00) -------------------------------------------------------- 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); } // 46AA4E: variable 'v9' is possibly undefined //----- (0046AA60) -------------------------------------------------------- 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); } // 46AAAE: variable 'v9' is possibly undefined //----- (0046AAC0) -------------------------------------------------------- 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); } // 46AB0E: variable 'v9' is possibly undefined //----- (0046AB20) -------------------------------------------------------- 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); } // 46AB6E: variable 'v9' is possibly undefined //----- (0046AB80) -------------------------------------------------------- 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); } // 46ABCE: variable 'v9' is possibly undefined //----- (0046ABE0) -------------------------------------------------------- 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); } // 46AC2E: variable 'v9' is possibly undefined //----- (0046AC40) -------------------------------------------------------- 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); } // 46AC8E: variable 'v9' is possibly undefined //----- (0046ACA0) -------------------------------------------------------- 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); } // 46ACEE: variable 'v9' is possibly undefined //----- (0046AD00) -------------------------------------------------------- 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); } // 46AD4E: variable 'v9' is possibly undefined //----- (0046AD60) -------------------------------------------------------- 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); } // 46ADAE: variable 'v9' is possibly undefined //----- (0046ADC0) -------------------------------------------------------- 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)); } // 46ADCE: variable 'v2' is possibly undefined //----- (0046ADE0) -------------------------------------------------------- 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)); } // 46ADEE: variable 'v2' is possibly undefined //----- (0046AE00) -------------------------------------------------------- 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); } // 46AE4E: variable 'v9' is possibly undefined //----- (0046AE60) -------------------------------------------------------- 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); } // 46AEAE: variable 'v9' is possibly undefined //----- (0046AEC0) -------------------------------------------------------- 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); } // 46AF0E: variable 'v9' is possibly undefined //----- (0046AF20) -------------------------------------------------------- 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); } // 46AF6E: variable 'v9' is possibly undefined //----- (0046AF80) -------------------------------------------------------- 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; } // 46AFE6: variable 'v13' is possibly undefined // 46B040: variable 'v15' is possibly undefined //----- (0046B150) -------------------------------------------------------- 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_51641C ) { 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; } // 46B1B3: variable 'v13' is possibly undefined // 46B218: variable 'v15' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (0046B290) -------------------------------------------------------- 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; } // 46B2F1: variable 'v10' is possibly undefined // 46B290: using guessed type long double var_1C[2]; //----- (0046B320) -------------------------------------------------------- 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; } // 46B381: variable 'v10' is possibly undefined // 46B320: using guessed type long double var_1C[2]; //----- (0046B3B0) -------------------------------------------------------- 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; } // 46B416: variable 'v15' is possibly undefined // 46B486: variable 'v17' is possibly undefined //----- (0046B570) -------------------------------------------------------- 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_51640C ) { 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; } // 46B5D3: variable 'v13' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (0046B6C0) -------------------------------------------------------- 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; } // 46B72B: variable 'v10' is possibly undefined // 46B6C0: using guessed type long double var_1C[2]; //----- (0046B780) -------------------------------------------------------- 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; } // 46B7EB: variable 'v10' is possibly undefined // 46B780: using guessed type long double var_1C[2]; //----- (0046B840) -------------------------------------------------------- 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; } // 46B87C: variable 'v12' is possibly undefined // 46B8C6: variable 'v10' is possibly undefined //----- (0046B8F0) -------------------------------------------------------- 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; } // 46B916: variable 'v11' is possibly undefined // 46B96B: variable 'v10' is possibly undefined //----- (0046B9A0) -------------------------------------------------------- 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); } // 46B9E8: variable 'v8' is possibly undefined //----- (0046BA00) -------------------------------------------------------- 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); } // 46BA48: variable 'v8' is possibly undefined //----- (0046BA60) -------------------------------------------------------- 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; } // 46BA9D: variable 'v12' is possibly undefined // 46BAE7: variable 'v10' is possibly undefined //----- (0046BB20) -------------------------------------------------------- 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; } // 46BB99: variable 'v10' is possibly undefined //----- (0046BBD0) -------------------------------------------------------- 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); } // 46BC18: variable 'v8' is possibly undefined //----- (0046BC30) -------------------------------------------------------- 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); } // 46BC78: variable 'v8' is possibly undefined //----- (0046BC90) -------------------------------------------------------- const char *_ZGTtNKSt13bad_exception4whatEv() { return "std::bad_exception"; } //----- (0046BCA0) -------------------------------------------------------- bool __fastcall std::filebuf::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 40)); } //----- (0046BCB0) -------------------------------------------------------- bool __fastcall std::wfilebuf::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 40)); } //----- (0046BCC0) -------------------------------------------------------- int __fastcall std::fstream::rdbuf(int a1) { return a1 + 12; } //----- (0046BCD0) -------------------------------------------------------- bool __fastcall std::fstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 52)); } //----- (0046BCE0) -------------------------------------------------------- int __fastcall std::wfstream::rdbuf(int a1) { return a1 + 12; } //----- (0046BCF0) -------------------------------------------------------- bool __fastcall std::wfstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 52)); } //----- (0046BD00) -------------------------------------------------------- int __fastcall std::wistream::gcount(int a1) { return *(_DWORD *)(a1 + 4); } //----- (0046BD10) -------------------------------------------------------- int __fastcall std::wistream::sentry::operator bool(unsigned __int8 *a1) { return *a1; } //----- (0046BD20) -------------------------------------------------------- int __fastcall std::wostream::sentry::operator bool(unsigned __int8 *a1) { return *a1; } //----- (0046BD30) -------------------------------------------------------- int __fastcall std::runtime_error::what(int a1) { return *(_DWORD *)(a1 + 4); } //----- (0046BD40) -------------------------------------------------------- int __fastcall std::ifstream::rdbuf(int a1) { return a1 + 8; } //----- (0046BD50) -------------------------------------------------------- bool __fastcall std::ifstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 48)); } //----- (0046BD60) -------------------------------------------------------- int __fastcall std::wifstream::rdbuf(int a1) { return a1 + 8; } //----- (0046BD70) -------------------------------------------------------- bool __fastcall std::wifstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 48)); } //----- (0046BD80) -------------------------------------------------------- int __fastcall std::ofstream::rdbuf(int a1) { return a1 + 4; } //----- (0046BD90) -------------------------------------------------------- bool __fastcall std::ofstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 44)); } //----- (0046BDA0) -------------------------------------------------------- int __fastcall std::wofstream::rdbuf(int a1) { return a1 + 4; } //----- (0046BDB0) -------------------------------------------------------- bool __fastcall std::wofstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 44)); } //----- (0046BDC0) -------------------------------------------------------- int __fastcall std::streambuf::gptr(int a1) { return *(_DWORD *)(a1 + 8); } //----- (0046BDD0) -------------------------------------------------------- int __fastcall std::streambuf::pptr(int a1) { return *(_DWORD *)(a1 + 20); } //----- (0046BDE0) -------------------------------------------------------- int __fastcall std::streambuf::eback(int a1) { return *(_DWORD *)(a1 + 4); } //----- (0046BDF0) -------------------------------------------------------- int __fastcall std::streambuf::egptr(int a1) { return *(_DWORD *)(a1 + 12); } //----- (0046BE00) -------------------------------------------------------- int __fastcall std::streambuf::epptr(int a1) { return *(_DWORD *)(a1 + 24); } //----- (0046BE10) -------------------------------------------------------- int __fastcall std::streambuf::pbase(int a1) { return *(_DWORD *)(a1 + 16); } //----- (0046BE20) -------------------------------------------------------- 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; } // 46BE30: variable 'v4' is possibly undefined //----- (0046BE50) -------------------------------------------------------- int __fastcall std::wstreambuf::gptr(int a1) { return *(_DWORD *)(a1 + 8); } //----- (0046BE60) -------------------------------------------------------- int __fastcall std::wstreambuf::pptr(int a1) { return *(_DWORD *)(a1 + 20); } //----- (0046BE70) -------------------------------------------------------- int __fastcall std::wstreambuf::eback(int a1) { return *(_DWORD *)(a1 + 4); } //----- (0046BE80) -------------------------------------------------------- int __fastcall std::wstreambuf::egptr(int a1) { return *(_DWORD *)(a1 + 12); } //----- (0046BE90) -------------------------------------------------------- int __fastcall std::wstreambuf::epptr(int a1) { return *(_DWORD *)(a1 + 24); } //----- (0046BEA0) -------------------------------------------------------- int __fastcall std::wstreambuf::pbase(int a1) { return *(_DWORD *)(a1 + 16); } //----- (0046BEB0) -------------------------------------------------------- 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; } // 46BEC0: variable 'v4' is possibly undefined //----- (0046BEE0) -------------------------------------------------------- const char *std::bad_function_call::what() { return "bad_function_call"; } //----- (0046BEF0) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; } //----- (0046BF10) -------------------------------------------------------- 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; } //----- (0046BF70) -------------------------------------------------------- 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; } //----- (0046C010) -------------------------------------------------------- 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); } //----- (0046C080) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 3 : 6; } //----- (0046C0A0) -------------------------------------------------------- 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; } //----- (0046C110) -------------------------------------------------------- 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; } //----- (0046C180) -------------------------------------------------------- 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; } //----- (0046C1B0) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 3 : 6; } //----- (0046C1D0) -------------------------------------------------------- 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; } //----- (0046C240) -------------------------------------------------------- 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; } //----- (0046C2B0) -------------------------------------------------------- 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; } //----- (0046C2E0) -------------------------------------------------------- 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; } //----- (0046C330) -------------------------------------------------------- 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; } //----- (0046C3D0) -------------------------------------------------------- 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; } //----- (0046C420) -------------------------------------------------------- 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; } //----- (0046C4C0) -------------------------------------------------------- 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; } //----- (0046C510) -------------------------------------------------------- int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 6; } //----- (0046C530) -------------------------------------------------------- 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; } //----- (0046C620) -------------------------------------------------------- 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; } //----- (0046C760) -------------------------------------------------------- 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; } //----- (0046C7D0) -------------------------------------------------------- int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 2 : 4; } //----- (0046C7F0) -------------------------------------------------------- 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; } //----- (0046C860) -------------------------------------------------------- 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; } //----- (0046C8D0) -------------------------------------------------------- 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; } //----- (0046C910) -------------------------------------------------------- int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 2 : 4; } //----- (0046C930) -------------------------------------------------------- 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; } //----- (0046C9A0) -------------------------------------------------------- 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; } //----- (0046CA10) -------------------------------------------------------- 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; } //----- (0046CA50) -------------------------------------------------------- const char *std::bad_array_new_length::what() { return "std::bad_array_new_length"; } //----- (0046CA60) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; } //----- (0046CA80) -------------------------------------------------------- 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; } //----- (0046CBA0) -------------------------------------------------------- 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; } //----- (0046CCA0) -------------------------------------------------------- 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; } //----- (0046CCD0) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; } //----- (0046CCF0) -------------------------------------------------------- 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; } //----- (0046CD60) -------------------------------------------------------- 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; } //----- (0046CDC0) -------------------------------------------------------- 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; } //----- (0046CDF0) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 4 : 7; } //----- (0046CE10) -------------------------------------------------------- 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; } //----- (0046CF30) -------------------------------------------------------- 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; } //----- (0046D030) -------------------------------------------------------- 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; } //----- (0046D060) -------------------------------------------------------- _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; } // 46D090: variable 'v5' is possibly undefined //----- (0046D0C0) -------------------------------------------------------- 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_51641C ) { 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; } // 46D0F1: variable 'v7' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (0046D160) -------------------------------------------------------- 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; } //----- (0046D180) -------------------------------------------------------- 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; } // 46D194: variable 'v4' is possibly undefined //----- (0046D1C0) -------------------------------------------------------- std::_V2::error_category *__stdcall std::_V2::error_category::default_error_condition( std::_V2::error_category *this, int a2) { return this; } //----- (0046D1D0) -------------------------------------------------------- BOOL __thiscall std::map::count(_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)) ) v3 = v2; return v2 != v3; } //----- (0046D234) -------------------------------------------------------- _DWORD *__thiscall std::map>::at(_DWORD *this, int a2) { _DWORD *v2; // edi _DWORD *v3; // esi _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)) ) std::__throw_out_of_range((std::out_of_range *)"map::at"); return v3 + 10; } //----- (0046D2A0) -------------------------------------------------------- BOOL __thiscall std::map::count(_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)) ) v3 = v2; return v2 != v3; } //----- (0046D310) -------------------------------------------------------- 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; } //----- (0046D370) -------------------------------------------------------- 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; } //----- (0046D390) -------------------------------------------------------- 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; } //----- (0046D3F0) -------------------------------------------------------- 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; } //----- (0046D410) -------------------------------------------------------- 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; } // 46D410: using guessed type char var_1C[28]; //----- (0046D4C0) -------------------------------------------------------- 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; } // 46D4C0: using guessed type char var_1C[28]; //----- (0046D5D0) -------------------------------------------------------- _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; } //----- (0046D660) -------------------------------------------------------- _BYTE *__stdcall std::ctype::do_widen(_BYTE *Src, _BYTE *a2, void *a3) { if ( a2 != Src ) memcpy(a3, Src, a2 - Src); return a2; } //----- (0046D6A0) -------------------------------------------------------- int __stdcall std::ctype::do_widen(unsigned __int8 a1) { return a1; } //----- (0046D6B0) -------------------------------------------------------- _BYTE *__stdcall std::ctype::do_narrow(_BYTE *Src, _BYTE *a2, int a3, void *a4) { if ( a2 != Src ) memcpy(a4, Src, a2 - Src); return a2; } //----- (0046D6F0) -------------------------------------------------------- int __stdcall std::ctype::do_narrow(unsigned __int8 a1, int a2) { return a1; } //----- (0046D700) -------------------------------------------------------- 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; } //----- (0046D750) -------------------------------------------------------- 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; } //----- (0046D7A0) -------------------------------------------------------- wint_t __stdcall std::ctype::do_tolower(wint_t C) { return towlower(C); } //----- (0046D7C0) -------------------------------------------------------- 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; } //----- (0046D810) -------------------------------------------------------- wint_t __stdcall std::ctype::do_toupper(wint_t C) { return towupper(C); } //----- (0046D830) -------------------------------------------------------- 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; } //----- (0046D880) -------------------------------------------------------- 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; } //----- (0046D9A0) -------------------------------------------------------- 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; } //----- (0046DA40) -------------------------------------------------------- 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; } //----- (0046DAA0) -------------------------------------------------------- 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; } //----- (0046DAE0) -------------------------------------------------------- int __thiscall std::ctype::do_widen(unsigned __int16 *this, unsigned __int8 a2) { return this[a2 + 71]; } //----- (0046DAF0) -------------------------------------------------------- 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; } //----- (0046DBD0) -------------------------------------------------------- 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; } //----- (0046DC20) -------------------------------------------------------- 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; } // 51658C: using guessed type int std::locale::id::_S_refcount; // 78A9D4: using guessed type int _CRT_MT; //----- (0046DC60) -------------------------------------------------------- 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; } // 533574: using guessed type char **std::locale::_S_categories; //----- (0046DFD0) -------------------------------------------------------- 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_51641C; 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_51641C ) { *(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_51641C ) { *(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_51641C ) { *(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; } } // 46E03E: variable 'v24' is possibly undefined // 46E05E: variable 'v28' is possibly undefined // 46E07F: variable 'v25' is possibly undefined // 46E0B8: variable 'v29' is possibly undefined // 46E0E1: variable 'v26' is possibly undefined // 46E11B: variable 'v30' is possibly undefined // 46E13F: variable 'v27' is possibly undefined // 46E17C: variable 'v31' is possibly undefined // 46E230: variable 'v32' is possibly undefined // 533574: using guessed type char **std::locale::_S_categories; //----- (0046E270) -------------------------------------------------------- _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_538BD4; *((_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_5393A0; 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_537A90; 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_539234; 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_5379B0; } 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_5393E8; v12[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v12 = &off_537B20; } 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_5394A8; v18[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v18 = &off_537BC8; } 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_5394D8; v19[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v19 = &off_537C28; } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v20 = operator new((struct type_info *)0x44, v51); *v20 = &off_538D1C; 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_538514; 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_537CF0; 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_538D0C; *((_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_5384E0; 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_537C88; 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_537A20; } 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_538BE4; 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_5393C4; 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_537AD8; 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_539250; 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_5379E8; } 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_539410; v33[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v33 = &off_537B74; } 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_5394C0; v34[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v34 = &off_537BF8; } 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_5394F0; v35[2] = a1; if ( v36 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v35 = &off_537C58; } 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_538D3C; 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_53857C; 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_537DC0; 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_538D2C; 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_538548; 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_537D58; 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_537A58; } return v5; } // 46E377: variable 'v51' is possibly undefined // 46E40A: variable 'v52' is possibly undefined // 46E458: variable 'v45' is possibly undefined // 46E63D: variable 'v53' is possibly undefined // 46E696: variable 'v46' is possibly undefined // 46E71D: variable 'v54' is possibly undefined // 46E777: variable 'v47' is possibly undefined // 46E84E: variable 'v55' is possibly undefined // 46E89F: variable 'v48' is possibly undefined // 46EA12: variable 'v56' is possibly undefined // 46EA6C: variable 'v49' is possibly undefined // 46EAFE: variable 'v57' is possibly undefined // 46EB54: variable 'v50' is possibly undefined // 51642C: using guessed type int std::moneypunct::id; // 516430: using guessed type int std::moneypunct::id; // 516434: using guessed type int std::moneypunct::id; // 516438: using guessed type int std::moneypunct::id; // 516600: using guessed type int std::collate::id; // 516604: using guessed type int std::collate::id; // 516620: using guessed type int std::messages::id; // 516624: using guessed type int std::messages::id; // 516628: using guessed type int std::numpunct::id; // 51662C: using guessed type int std::numpunct::id; // 516630: using guessed type int std::time_get>::id; // 516634: using guessed type int std::time_get>::id; // 516640: using guessed type int std::money_get>::id; // 516644: using guessed type int std::money_get>::id; // 516648: using guessed type int std::money_put>::id; // 51664C: using guessed type int std::money_put>::id[5]; // 534108: using guessed type int *`typeinfo for'std::locale::facet::__shim; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5379B0: using guessed type int (*off_5379B0)(); // 5379E8: using guessed type int (*off_5379E8)(); // 537A20: using guessed type int (*off_537A20)(); // 537A58: using guessed type int (*off_537A58)(); // 537A90: using guessed type int (*off_537A90)(); // 537AD8: using guessed type int (*off_537AD8)(); // 537B20: using guessed type int (*off_537B20)(); // 537B74: using guessed type int (*off_537B74)(); // 537BC8: using guessed type int (*off_537BC8)(); // 537BF8: using guessed type int (*off_537BF8)(); // 537C28: using guessed type int (*off_537C28)(); // 537C58: using guessed type int (*off_537C58)(); // 537C88: using guessed type int (*off_537C88)(); // 537CF0: using guessed type int (*off_537CF0)(); // 537D58: using guessed type int (*off_537D58)(); // 537DC0: using guessed type int (*off_537DC0)(); // 5384E0: using guessed type int (*off_5384E0)(); // 538514: using guessed type int (*off_538514)(); // 538548: using guessed type int (*off_538548)(); // 53857C: using guessed type int (*off_53857C)(); // 538BD4: using guessed type int (*off_538BD4)(); // 538BE4: using guessed type int (*off_538BE4)(); // 538D0C: using guessed type int (*off_538D0C)(); // 538D1C: using guessed type int (*off_538D1C)(); // 538D2C: using guessed type int (*off_538D2C)(); // 538D3C: using guessed type int (*off_538D3C)(); // 539234: using guessed type int (*off_539234)(); // 539250: using guessed type int (*off_539250)(); // 5393A0: using guessed type int (*off_5393A0)(); // 5393C4: using guessed type int (*off_5393C4)(); // 5393E8: using guessed type int (*off_5393E8)(); // 539410: using guessed type int (*off_539410)(); // 5394A8: using guessed type int (*off_5394A8)(); // 5394C0: using guessed type int (*off_5394C0)(); // 5394D8: using guessed type int (*off_5394D8)(); // 5394F0: using guessed type int (*off_5394F0)(); // 78A9D4: using guessed type int _CRT_MT; //----- (0046EC20) -------------------------------------------------------- _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_538BD4; *((_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_538318; 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_537AB4; 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_5382A8; 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_5379CC; } 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_538360; v12[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v12 = &off_537B48; } 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_5383B8; v18[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v18 = &off_537BE0; } 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_5383E8; v19[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v19 = &off_537C40; } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v20 = operator new((struct type_info *)0x44, v51); *v20 = &off_538D1C; 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_537E94; 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_537D24; 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_538D0C; *((_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_537E60; 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_537CBC; 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_537A3C; } 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_538BE4; 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_53833C; 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_537AFC; 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_5382C4; 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_537A04; } 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_53838C; v33[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v33 = &off_537B9C; } 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_5383D0; v34[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v34 = &off_537C10; } 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_538400; v35[2] = a1; if ( v36 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v35 = &off_537C70; } 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_538D3C; 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_537EFC; 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_537DF4; 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_538D2C; 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_537EC8; 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_537D8C; 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_537A74; } return v5; } // 46ED27: variable 'v51' is possibly undefined // 46EDBA: variable 'v52' is possibly undefined // 46EE08: variable 'v45' is possibly undefined // 46EFED: variable 'v53' is possibly undefined // 46F046: variable 'v46' is possibly undefined // 46F0CD: variable 'v54' is possibly undefined // 46F127: variable 'v47' is possibly undefined // 46F1FE: variable 'v55' is possibly undefined // 46F24F: variable 'v48' is possibly undefined // 46F3C2: variable 'v56' is possibly undefined // 46F41C: variable 'v49' is possibly undefined // 46F4AE: variable 'v57' is possibly undefined // 46F504: variable 'v50' is possibly undefined // 534108: using guessed type int *`typeinfo for'std::locale::facet::__shim; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5379CC: using guessed type int (*off_5379CC)(); // 537A04: using guessed type int (*off_537A04)(); // 537A3C: using guessed type int (*off_537A3C)(); // 537A74: using guessed type int (*off_537A74)(); // 537AB4: using guessed type int (*off_537AB4)(); // 537AFC: using guessed type int (*off_537AFC)(); // 537B48: using guessed type int (*off_537B48)(); // 537B9C: using guessed type int (*off_537B9C)(); // 537BE0: using guessed type int (*off_537BE0)(); // 537C10: using guessed type int (*off_537C10)(); // 537C40: using guessed type int (*off_537C40)(); // 537C70: using guessed type int (*off_537C70)(); // 537CBC: using guessed type int (*off_537CBC)(); // 537D24: using guessed type int (*off_537D24)(); // 537D8C: using guessed type int (*off_537D8C)(); // 537DF4: using guessed type int (*off_537DF4)(); // 537E60: using guessed type int (*off_537E60)(); // 537E94: using guessed type int (*off_537E94)(); // 537EC8: using guessed type int (*off_537EC8)(); // 537EFC: using guessed type int (*off_537EFC)(); // 5382A8: using guessed type int (*off_5382A8)(); // 5382C4: using guessed type int (*off_5382C4)(); // 538318: using guessed type int (*off_538318)(); // 53833C: using guessed type int (*off_53833C)(); // 538360: using guessed type int (*off_538360)(); // 53838C: using guessed type int (*off_53838C)(); // 5383B8: using guessed type int (*off_5383B8)(); // 5383D0: using guessed type int (*off_5383D0)(); // 5383E8: using guessed type int (*off_5383E8)(); // 538400: using guessed type int (*off_538400)(); // 538BD4: using guessed type int (*off_538BD4)(); // 538BE4: using guessed type int (*off_538BE4)(); // 538D0C: using guessed type int (*off_538D0C)(); // 538D1C: using guessed type int (*off_538D1C)(); // 538D2C: using guessed type int (*off_538D2C)(); // 538D3C: using guessed type int (*off_538D3C)(); // 78A9D4: using guessed type int _CRT_MT; //----- (0046F5D0) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (0046F610) -------------------------------------------------------- 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; } //----- (0046F720) -------------------------------------------------------- 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; } //----- (0046F774) -------------------------------------------------------- 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 = (this[1] - *this) >> 2; if ( 0x1FFFFFFF - v3 < a2 ) std::__throw_length_error(a3); v4 = a2; if ( a2 < v3 ) v4 = (this[1] - *this) >> 2; v5 = 0x1FFFFFFF; v6 = __CFADD__(v4, v3); v7 = v4 + v3; if ( !v6 ) { v5 = v7; if ( v7 > 0x1FFFFFFF ) return 0x1FFFFFFF; } return v5; } //----- (0046F7D0) -------------------------------------------------------- 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(); } //----- (0046F7F0) -------------------------------------------------------- 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(); } //----- (0046F810) -------------------------------------------------------- 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; } } // 46F854: variable 'v7' is possibly undefined //----- (0046F890) -------------------------------------------------------- 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; } // 46F8C7: variable 'v6' is possibly undefined //----- (0046F8E0) -------------------------------------------------------- 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(); } //----- (0046F900) -------------------------------------------------------- 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(); } //----- (0046F920) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (0046F930) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (0046F940) -------------------------------------------------------- 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; } } // 46F984: variable 'v7' is possibly undefined //----- (0046F9C0) -------------------------------------------------------- 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; } } // 46FA04: variable 'v7' is possibly undefined //----- (0046FA40) -------------------------------------------------------- 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(); } //----- (0046FA60) -------------------------------------------------------- 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; } // 46FA97: variable 'v6' is possibly undefined //----- (0046FAB0) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); } //----- (0046FAC0) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); } //----- (0046FAD0) -------------------------------------------------------- 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; } // 46FB07: variable 'v6' is possibly undefined //----- (0046FB20) -------------------------------------------------------- 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; } // 46FB57: variable 'v6' is possibly undefined //----- (0046FB70) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (0046FB80) -------------------------------------------------------- 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; } } // 46FBC4: variable 'v7' is possibly undefined //----- (0046FC00) -------------------------------------------------------- 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(); } //----- (0046FC20) -------------------------------------------------------- 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(); } //----- (0046FC40) -------------------------------------------------------- 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; } } // 46FC84: variable 'v7' is possibly undefined //----- (0046FCC0) -------------------------------------------------------- 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; } // 46FCF7: variable 'v6' is possibly undefined //----- (0046FD10) -------------------------------------------------------- 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(); } //----- (0046FD30) -------------------------------------------------------- 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(); } //----- (0046FD50) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (0046FD60) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (0046FD70) -------------------------------------------------------- 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; } } // 46FDB4: variable 'v7' is possibly undefined //----- (0046FDF0) -------------------------------------------------------- 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; } } // 46FE34: variable 'v7' is possibly undefined //----- (0046FE70) -------------------------------------------------------- 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(); } //----- (0046FE90) -------------------------------------------------------- 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; } // 46FEC7: variable 'v6' is possibly undefined //----- (0046FEE0) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); } //----- (0046FEF0) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); } //----- (0046FF00) -------------------------------------------------------- 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; } // 46FF37: variable 'v6' is possibly undefined //----- (0046FF50) -------------------------------------------------------- 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; } // 46FF87: variable 'v6' is possibly undefined //----- (0046FFA0) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (0046FFB0) -------------------------------------------------------- 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; } } // 46FFF4: variable 'v7' is possibly undefined //----- (00470030) -------------------------------------------------------- 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(); } //----- (00470050) -------------------------------------------------------- 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(); } //----- (00470070) -------------------------------------------------------- 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; } } // 4700B5: variable 'v7' is possibly undefined //----- (004700F0) -------------------------------------------------------- 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; } // 470127: variable 'v6' is possibly undefined //----- (00470140) -------------------------------------------------------- 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(); } //----- (00470160) -------------------------------------------------------- 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(); } //----- (00470180) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); } //----- (00470190) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (004701A0) -------------------------------------------------------- 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; } } // 4701E5: variable 'v7' is possibly undefined //----- (00470220) -------------------------------------------------------- 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; } } // 470265: variable 'v7' is possibly undefined //----- (004702A0) -------------------------------------------------------- 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(); } //----- (004702C0) -------------------------------------------------------- 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; } // 4702F8: variable 'v6' is possibly undefined //----- (00470310) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (00470320) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00470330) -------------------------------------------------------- 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; } // 470368: variable 'v6' is possibly undefined //----- (00470380) -------------------------------------------------------- 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; } // 4703B8: variable 'v6' is possibly undefined //----- (004703D0) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); } //----- (004703E0) -------------------------------------------------------- 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; } } // 470424: variable 'v7' is possibly undefined //----- (00470460) -------------------------------------------------------- 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(); } //----- (00470480) -------------------------------------------------------- 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(); } //----- (004704A0) -------------------------------------------------------- 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; } } // 4704E5: variable 'v7' is possibly undefined //----- (00470520) -------------------------------------------------------- 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; } // 470557: variable 'v6' is possibly undefined //----- (00470570) -------------------------------------------------------- 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(); } //----- (00470590) -------------------------------------------------------- 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(); } //----- (004705B0) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); } //----- (004705C0) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (004705D0) -------------------------------------------------------- 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; } } // 470615: variable 'v7' is possibly undefined //----- (00470650) -------------------------------------------------------- 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; } } // 470695: variable 'v7' is possibly undefined //----- (004706D0) -------------------------------------------------------- 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(); } //----- (004706F0) -------------------------------------------------------- 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; } // 470728: variable 'v6' is possibly undefined //----- (00470740) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (00470750) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00470760) -------------------------------------------------------- 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; } // 470798: variable 'v6' is possibly undefined //----- (004707B0) -------------------------------------------------------- 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; } // 4707E8: variable 'v6' is possibly undefined //----- (00470800) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); } //----- (00470810) -------------------------------------------------------- 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; } } // 470854: variable 'v7' is possibly undefined //----- (00470890) -------------------------------------------------------- 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; } //----- (004708B0) -------------------------------------------------------- bool __fastcall std::string::_M_is_local(_DWORD *a1) { return a1 + 2 == (_DWORD *)*a1; } //----- (004708C0) -------------------------------------------------------- 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); } //----- (00470900) -------------------------------------------------------- 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; } //----- (00470990) -------------------------------------------------------- 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)); } //----- (004709C0) -------------------------------------------------------- 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; } //----- (00470A00) -------------------------------------------------------- int __fastcall std::string::_M_local_data(int a1) { return a1 + 8; } //----- (00470A10) -------------------------------------------------------- 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); } //----- (00470A50) -------------------------------------------------------- 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; } //----- (00470AC0) -------------------------------------------------------- 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)); } //----- (00470AF0) -------------------------------------------------------- char *__thiscall std::string::find_first_of(int *this, char a2, unsigned int a3) { return std::string::find(this, a2, a3); } //----- (00470B00) -------------------------------------------------------- void *__thiscall std::string::get_allocator(void *this, int a2) { return this; } //----- (00470B10) -------------------------------------------------------- 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; } //----- (00470B40) -------------------------------------------------------- int __fastcall std::string::_M_get_allocator(int a1) { return a1; } //----- (00470B50) -------------------------------------------------------- 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); } //----- (00470B90) -------------------------------------------------------- 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; } //----- (00470C00) -------------------------------------------------------- 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)); } //----- (00470C30) -------------------------------------------------------- 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; } //----- (00470C70) -------------------------------------------------------- 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); } //----- (00470CB0) -------------------------------------------------------- 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; } //----- (00470D10) -------------------------------------------------------- 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)); } //----- (00470D40) -------------------------------------------------------- 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; } //----- (00470D80) -------------------------------------------------------- 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; } //----- (00470DB0) -------------------------------------------------------- int __fastcall std::string::end(_DWORD *a1) { return a1[1] + *a1; } //----- (00470DC0) -------------------------------------------------------- int __fastcall std::string::back(_DWORD *a1) { return *a1 + a1[1] - 1; } //----- (00470DD0) -------------------------------------------------------- int __fastcall std::string::cend(_DWORD *a1) { return a1[1] + *a1; } //----- (00470DE0) -------------------------------------------------------- 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; } //----- (00470E60) -------------------------------------------------------- int __fastcall std::string::data(int a1) { return *(_DWORD *)a1; } //----- (00470E70) -------------------------------------------------------- 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); } //----- (00470EB0) -------------------------------------------------------- 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; } //----- (00470F70) -------------------------------------------------------- int __thiscall std::string::find(int *this, int a2, int a3) { return std::string::find(this, *(char **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (00470FA0) -------------------------------------------------------- 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; } //----- (00470FF0) -------------------------------------------------------- _DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (00471000) -------------------------------------------------------- int __fastcall std::string::size(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00471010) -------------------------------------------------------- int __fastcall std::string::begin(int a1) { return *(_DWORD *)a1; } //----- (00471020) -------------------------------------------------------- int __fastcall std::string::c_str(int a1) { return *(_DWORD *)a1; } //----- (00471030) -------------------------------------------------------- _DWORD *__thiscall std::string::crend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (00471040) -------------------------------------------------------- bool __fastcall std::string::empty(int a1) { return *(_DWORD *)(a1 + 4) == 0; } //----- (00471050) -------------------------------------------------------- int __fastcall std::string::front(int a1) { return *(_DWORD *)a1; } //----- (00471060) -------------------------------------------------------- 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); } //----- (004710A0) -------------------------------------------------------- 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; } // 4710EE: conditional instruction was optimized away because %arg_8.4!=0 //----- (00471120) -------------------------------------------------------- unsigned int __thiscall std::string::rfind(int *this, int a2, int a3) { return std::string::rfind(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (00471150) -------------------------------------------------------- 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; } //----- (00471190) -------------------------------------------------------- int __fastcall std::string::cbegin(int a1) { return *(_DWORD *)a1; } //----- (004711A0) -------------------------------------------------------- int __fastcall std::string::length(int a1) { return *(_DWORD *)(a1 + 4); } //----- (004711B0) -------------------------------------------------------- _DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + a2[1]; return result; } //----- (004711C0) -------------------------------------------------------- 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; } // 4711FC: variable 'v8' is possibly undefined //----- (00471230) -------------------------------------------------------- int __fastcall std::string::_M_data(int a1) { return *(_DWORD *)a1; } //----- (00471240) -------------------------------------------------------- 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; } //----- (00471290) -------------------------------------------------------- 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; } //----- (004712D0) -------------------------------------------------------- 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; } //----- (00471360) -------------------------------------------------------- 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; } //----- (004713E0) -------------------------------------------------------- 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; } //----- (00471470) -------------------------------------------------------- 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; } //----- (00471540) -------------------------------------------------------- _DWORD *__thiscall std::string::crbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + a2[1]; return result; } //----- (00471550) -------------------------------------------------------- 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; } //----- (00471580) -------------------------------------------------------- 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; } //----- (004715A0) -------------------------------------------------------- int __fastcall std::string::capacity(_DWORD *a1) { if ( (_DWORD *)*a1 == a1 + 2 ) return 15; else return a1[2]; } //----- (004715C0) -------------------------------------------------------- int std::string::max_size() { return 0x3FFFFFFF; } //----- (004715D0) -------------------------------------------------------- int __thiscall std::string::operator[](_DWORD *this, int a2) { return a2 + *this; } //----- (004715E0) -------------------------------------------------------- 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; } //----- (00471600) -------------------------------------------------------- bool __fastcall std::wstring::_M_is_local(_DWORD *a1) { return a1 + 2 == (_DWORD *)*a1; } //----- (00471610) -------------------------------------------------------- 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); } //----- (00471650) -------------------------------------------------------- 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; } //----- (004716D0) -------------------------------------------------------- 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)); } //----- (00471700) -------------------------------------------------------- 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; } //----- (00471740) -------------------------------------------------------- int __fastcall std::wstring::_M_local_data(int a1) { return a1 + 8; } //----- (00471750) -------------------------------------------------------- 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); } //----- (00471790) -------------------------------------------------------- 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; } //----- (00471800) -------------------------------------------------------- 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)); } //----- (00471830) -------------------------------------------------------- int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3) { return std::wstring::find(this, C, a3); } //----- (00471840) -------------------------------------------------------- void *__thiscall std::wstring::get_allocator(void *this, int a2) { return this; } //----- (00471850) -------------------------------------------------------- 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; } //----- (00471880) -------------------------------------------------------- int __fastcall std::wstring::_M_get_allocator(int a1) { return a1; } //----- (00471890) -------------------------------------------------------- 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); } //----- (004718D0) -------------------------------------------------------- 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; } //----- (00471940) -------------------------------------------------------- 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)); } //----- (00471970) -------------------------------------------------------- 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; } //----- (004719B0) -------------------------------------------------------- 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); } //----- (004719F0) -------------------------------------------------------- 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; } //----- (00471A60) -------------------------------------------------------- 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)); } //----- (00471A90) -------------------------------------------------------- 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; } //----- (00471AD0) -------------------------------------------------------- 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; } //----- (00471B00) -------------------------------------------------------- int __fastcall std::wstring::end(_DWORD *a1) { return *a1 + 2 * a1[1]; } //----- (00471B10) -------------------------------------------------------- int __fastcall std::wstring::back(_DWORD *a1) { return *a1 + 2 * a1[1] - 2; } //----- (00471B20) -------------------------------------------------------- int __fastcall std::wstring::cend(_DWORD *a1) { return *a1 + 2 * a1[1]; } //----- (00471B30) -------------------------------------------------------- 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; } //----- (00471BB0) -------------------------------------------------------- int __fastcall std::wstring::data(int a1) { return *(_DWORD *)a1; } //----- (00471BC0) -------------------------------------------------------- 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); } //----- (00471C00) -------------------------------------------------------- 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; } //----- (00471CC0) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, int a2, int a3) { return std::wstring::find(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (00471CF0) -------------------------------------------------------- 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; } //----- (00471D50) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (00471D60) -------------------------------------------------------- int __fastcall std::wstring::size(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00471D70) -------------------------------------------------------- int __fastcall std::wstring::begin(int a1) { return *(_DWORD *)a1; } //----- (00471D80) -------------------------------------------------------- int __fastcall std::wstring::c_str(int a1) { return *(_DWORD *)a1; } //----- (00471D90) -------------------------------------------------------- _DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (00471DA0) -------------------------------------------------------- bool __fastcall std::wstring::empty(int a1) { return *(_DWORD *)(a1 + 4) == 0; } //----- (00471DB0) -------------------------------------------------------- int __fastcall std::wstring::front(int a1) { return *(_DWORD *)a1; } //----- (00471DC0) -------------------------------------------------------- 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); } //----- (00471E00) -------------------------------------------------------- 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; } // 471E45: conditional instruction was optimized away because %arg_8.4!=0 //----- (00471E70) -------------------------------------------------------- unsigned int __thiscall std::wstring::rfind(int *this, int a2, int a3) { return std::wstring::rfind(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (00471EA0) -------------------------------------------------------- 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; } //----- (00471EE0) -------------------------------------------------------- int __fastcall std::wstring::cbegin(int a1) { return *(_DWORD *)a1; } //----- (00471EF0) -------------------------------------------------------- int __fastcall std::wstring::length(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00471F00) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * a2[1]; return result; } //----- (00471F20) -------------------------------------------------------- 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; } // 471F5C: variable 'v8' is possibly undefined //----- (00471F90) -------------------------------------------------------- int __fastcall std::wstring::_M_data(int a1) { return *(_DWORD *)a1; } //----- (00471FA0) -------------------------------------------------------- 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; } //----- (00472000) -------------------------------------------------------- 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; } //----- (00472050) -------------------------------------------------------- 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; } //----- (004720F0) -------------------------------------------------------- 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; } //----- (00472180) -------------------------------------------------------- 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; } //----- (00472220) -------------------------------------------------------- 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; } //----- (00472300) -------------------------------------------------------- _DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * a2[1]; return result; } //----- (00472320) -------------------------------------------------------- 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; } //----- (00472350) -------------------------------------------------------- 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; } //----- (00472370) -------------------------------------------------------- int __fastcall std::wstring::capacity(_DWORD *a1) { if ( (_DWORD *)*a1 == a1 + 2 ) return 7; else return a1[2]; } //----- (00472390) -------------------------------------------------------- int std::wstring::max_size() { return 0x1FFFFFFF; } //----- (004723A0) -------------------------------------------------------- int __thiscall std::wstring::operator[](_DWORD *this, int a2) { return *this + 2 * a2; } //----- (004723B0) -------------------------------------------------------- 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; } } //----- (00472460) -------------------------------------------------------- _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; } } //----- (00472510) -------------------------------------------------------- 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; } } //----- (004725C0) -------------------------------------------------------- int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) { return a1 + 12; } //----- (004725D0) -------------------------------------------------------- _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; } } //----- (00472680) -------------------------------------------------------- int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) { return a1 + 12; } //----- (00472690) -------------------------------------------------------- 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; } } //----- (00472740) -------------------------------------------------------- int __fastcall std::istringstream::rdbuf(int a1) { return a1 + 8; } //----- (00472750) -------------------------------------------------------- _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; } } //----- (00472800) -------------------------------------------------------- int __fastcall std::wistringstream::rdbuf(int a1) { return a1 + 8; } //----- (00472810) -------------------------------------------------------- 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; } } //----- (004728C0) -------------------------------------------------------- int __fastcall std::ostringstream::rdbuf(int a1) { return a1 + 4; } //----- (004728D0) -------------------------------------------------------- _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; } } //----- (00472980) -------------------------------------------------------- int __fastcall std::wostringstream::rdbuf(int a1) { return a1 + 4; } //----- (00472990) -------------------------------------------------------- int __stdcall std::collate::_M_compare(char *String1, char *String2) { int v2; // eax v2 = strcoll(String1, String2); return (v2 >> 30) | (v2 != 0); } //----- (004729C0) -------------------------------------------------------- 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; } // 4729E8: variable 'v10' is possibly undefined // 472A0D: variable 'v11' is possibly undefined //----- (00472AF0) -------------------------------------------------------- size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) { return strxfrm(Destination, Source, MaxCount); } //----- (00472B20) -------------------------------------------------------- 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; } // 472B59: variable 'v12' is possibly undefined //----- (00472D10) -------------------------------------------------------- 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); } //----- (00472D30) -------------------------------------------------------- int __fastcall std::collate::compare(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (00472D40) -------------------------------------------------------- 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; } //----- (00472D70) -------------------------------------------------------- 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; } //----- (00472DA0) -------------------------------------------------------- int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) { int v2; // eax v2 = wcscoll(String1, String2); return (v2 >> 30) | (v2 != 0); } //----- (00472DD0) -------------------------------------------------------- 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; } // 472DF8: variable 'v10' is possibly undefined // 472E1D: variable 'v11' is possibly undefined //----- (00472F00) -------------------------------------------------------- size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) { return wcsxfrm(Destination, Source, MaxCount); } //----- (00472F30) -------------------------------------------------------- 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; } // 472F6B: variable 'v12' is possibly undefined //----- (00473150) -------------------------------------------------------- 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); } //----- (00473170) -------------------------------------------------------- int __fastcall std::collate::compare(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (00473180) -------------------------------------------------------- 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; } //----- (004731B0) -------------------------------------------------------- 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; } //----- (004731E0) -------------------------------------------------------- int __stdcall std::messages::_M_convert_to_char(int a1) { return *(_DWORD *)a1; } //----- (004731F0) -------------------------------------------------------- _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; } //----- (00473210) -------------------------------------------------------- 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; } //----- (00473250) -------------------------------------------------------- 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); } //----- (00473270) -------------------------------------------------------- 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); } //----- (004732B0) -------------------------------------------------------- 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; } // 473320: using guessed type int __stdcall std::messages::do_close(int); //----- (004732D0) -------------------------------------------------------- _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; } // 4732F4: variable 'v8' is possibly undefined //----- (00473310) -------------------------------------------------------- int __stdcall std::messages::do_open(int a1, int a2) { return 0; } //----- (00473330) -------------------------------------------------------- int __stdcall std::messages::_M_convert_to_char(int a1) { return *(_DWORD *)a1; } //----- (00473340) -------------------------------------------------------- _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; } //----- (00473360) -------------------------------------------------------- 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; } //----- (004733A0) -------------------------------------------------------- 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); } //----- (004733C0) -------------------------------------------------------- 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); } //----- (00473400) -------------------------------------------------------- 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; } // 473470: using guessed type int __stdcall std::messages::do_close(int); //----- (00473420) -------------------------------------------------------- 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; } // 473443: variable 'v8' is possibly undefined //----- (00473460) -------------------------------------------------------- int __stdcall std::messages::do_open(int a1, int a2) { return 0; } //----- (00473480) -------------------------------------------------------- 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; } // 4734B7: variable 'v6' is possibly undefined //----- (004734D0) -------------------------------------------------------- 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; } // 473507: variable 'v6' is possibly undefined //----- (00473520) -------------------------------------------------------- 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; } // 473557: variable 'v6' is possibly undefined //----- (00473570) -------------------------------------------------------- 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(); } //----- (00473590) -------------------------------------------------------- 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(); } //----- (004735B0) -------------------------------------------------------- int __fastcall std::numpunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); } //----- (004735C0) -------------------------------------------------------- int __fastcall std::numpunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); } //----- (004735D0) -------------------------------------------------------- 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; } } // 473614: variable 'v7' is possibly undefined //----- (00473650) -------------------------------------------------------- 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; } } // 473694: variable 'v7' is possibly undefined //----- (004736D0) -------------------------------------------------------- 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; } } // 473714: variable 'v7' is possibly undefined //----- (00473750) -------------------------------------------------------- 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; } // 473787: variable 'v6' is possibly undefined //----- (004737A0) -------------------------------------------------------- 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; } // 4737D8: variable 'v6' is possibly undefined //----- (004737F0) -------------------------------------------------------- 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; } // 473828: variable 'v6' is possibly undefined //----- (00473840) -------------------------------------------------------- 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(); } //----- (00473860) -------------------------------------------------------- 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(); } //----- (00473880) -------------------------------------------------------- int __fastcall std::numpunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); } //----- (00473890) -------------------------------------------------------- int __fastcall std::numpunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); } //----- (004738A0) -------------------------------------------------------- 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; } } // 4738E4: variable 'v7' is possibly undefined //----- (00473920) -------------------------------------------------------- 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; } } // 473965: variable 'v7' is possibly undefined //----- (004739A0) -------------------------------------------------------- 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; } } // 4739E5: variable 'v7' is possibly undefined //----- (00473A20) -------------------------------------------------------- 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(); } //----- (00473A40) -------------------------------------------------------- _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; } // 473AA9: variable 'v9' is possibly undefined //----- (00473B40) -------------------------------------------------------- _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; } // 473BA9: variable 'v9' is possibly undefined //----- (00473C40) -------------------------------------------------------- _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; } // 473CD1: variable 'v7' is possibly undefined // 473C40: using guessed type int var_20[8]; //----- (00473DA0) -------------------------------------------------------- int __fastcall std::time_get>::get_weekday(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); } //----- (00473DB0) -------------------------------------------------------- int std::time_get>::do_date_order() { return 0; } //----- (00473DC0) -------------------------------------------------------- int __fastcall std::time_get>::get_monthname(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); } //----- (00473DD0) -------------------------------------------------------- _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; } //----- (00474090) -------------------------------------------------------- _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; } // 47419F: variable 'v10' is possibly undefined //----- (00474260) -------------------------------------------------------- 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; } //----- (004747E0) -------------------------------------------------------- _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; } // 47498C: variable 'v10' is possibly undefined //----- (00474A50) -------------------------------------------------------- _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_52F882, 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; } // 474E00: variable 'v31' is possibly undefined // 474F2B: variable 'v35' is possibly undefined // 474FE7: variable 'v38' is possibly undefined // 4750E5: variable 'v46' is possibly undefined // 475226: variable 'v54' is possibly undefined // 475230: variable 'v55' is possibly undefined // 4752D7: variable 'v58' is possibly undefined // 475382: variable 'v62' is possibly undefined // 475431: variable 'v63' is possibly undefined // 4754EB: variable 'v66' is possibly undefined // 47569F: variable 'v74' is possibly undefined // 4757A6: variable 'v77' is possibly undefined // 4757F8: variable 'Str' is possibly undefined // 475ABF: variable 'v85' is possibly undefined // 516500: using guessed type void *std::__timepunct_cache::_S_timezones[2]; //----- (00475B50) -------------------------------------------------------- _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; } //----- (00476010) -------------------------------------------------------- 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; } // 476300: variable 'v33' is possibly undefined //----- (00476890) -------------------------------------------------------- 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; } // 47696A: variable 'v14' is possibly undefined //----- (00476AE0) -------------------------------------------------------- _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; } // 476B9D: variable 'v12' is possibly undefined //----- (00476CA0) -------------------------------------------------------- int __fastcall std::time_get>::get_date(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); } //----- (00476CB0) -------------------------------------------------------- int __fastcall std::time_get>::get_time(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); } //----- (00476CC0) -------------------------------------------------------- int __fastcall std::time_get>::get_year(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); } //----- (00476CD0) -------------------------------------------------------- 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(); } //----- (00476CF0) -------------------------------------------------------- _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; } // 476D69: variable 'v9' is possibly undefined //----- (00476E30) -------------------------------------------------------- _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; } // 476EA9: variable 'v9' is possibly undefined //----- (00476F70) -------------------------------------------------------- _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; } // 476FEA: variable 'v8' is possibly undefined // 476F70: using guessed type int var_20[8]; //----- (004770F0) -------------------------------------------------------- int __fastcall std::time_get>::get_weekday(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); } //----- (00477100) -------------------------------------------------------- int std::time_get>::do_date_order() { return 0; } //----- (00477110) -------------------------------------------------------- int __fastcall std::time_get>::get_monthname(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); } //----- (00477120) -------------------------------------------------------- _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; } //----- (004773B0) -------------------------------------------------------- _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; } // 4774DD: variable 'v10' is possibly undefined //----- (004775B0) -------------------------------------------------------- _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; } //----- (00477AF0) -------------------------------------------------------- _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; } // 477CBA: variable 'v10' is possibly undefined //----- (00477D90) -------------------------------------------------------- _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_52FB3E, 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; } // 478100: variable 'v28' is possibly undefined // 478254: variable 'v32' is possibly undefined // 478345: variable 'v35' is possibly undefined // 4783DD: variable 'v36' is possibly undefined // 47845F: variable 'v37' is possibly undefined // 478516: variable 'v38' is possibly undefined // 4785C7: variable 'v39' is possibly undefined // 478646: variable 'v40' is possibly undefined // 4786E8: variable 'v43' is possibly undefined // 47885E: variable 'v51' is possibly undefined // 478875: variable 'v52' is possibly undefined // 478906: variable 'v54' is possibly undefined // 478B83: variable 'v57' is possibly undefined // 478C4C: variable 'v60' is possibly undefined // 478CEB: variable 'v61' is possibly undefined // 478DD8: variable 'v64' is possibly undefined // 478E9E: variable 'v66' is possibly undefined // 478FCD: variable 'v67' is possibly undefined // 47916C: variable 'v73' is possibly undefined // 516540: using guessed type void *std::__timepunct_cache::_S_timezones[2]; //----- (00479290) -------------------------------------------------------- _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; } //----- (00479770) -------------------------------------------------------- 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; } // 479A54: variable 'v27' is possibly undefined // 479DE8: variable 'v50' is possibly undefined //----- (00479F50) -------------------------------------------------------- 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; } // 47A02D: variable 'v14' is possibly undefined //----- (0047A180) -------------------------------------------------------- _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; } // 47A262: variable 'v12' is possibly undefined //----- (0047A340) -------------------------------------------------------- int __fastcall std::time_get>::get_date(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); } //----- (0047A350) -------------------------------------------------------- int __fastcall std::time_get>::get_time(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); } //----- (0047A360) -------------------------------------------------------- int __fastcall std::time_get>::get_year(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); } //----- (0047A370) -------------------------------------------------------- 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_538D0C; 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; } } } // 47B087: variable 'v87' is possibly undefined // 47B113: variable 'v88' is possibly undefined // 47A940: variable 'v49' is possibly undefined // 47AAB0: variable 'v54' is possibly undefined // 47B24D: variable 'v8' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 5165A8: using guessed type int std::moneypunct::id; // 538D0C: using guessed type int (*off_538D0C)(); //----- (0047B5A0) -------------------------------------------------------- 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_538D1C; 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; } } } // 47C2B7: variable 'v87' is possibly undefined // 47C343: variable 'v88' is possibly undefined // 47BB70: variable 'v49' is possibly undefined // 47BCE0: variable 'v54' is possibly undefined // 47C47D: variable 'v8' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 5165AC: using guessed type int std::moneypunct::id; // 538D1C: using guessed type int (*off_538D1C)(); //----- (0047C7D0) -------------------------------------------------------- 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); } //----- (0047C7E0) -------------------------------------------------------- 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); } //----- (0047C7F0) -------------------------------------------------------- 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; } //----- (0047C990) -------------------------------------------------------- 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; } //----- (0047CA60) -------------------------------------------------------- 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_538D2C; 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; } } } // 47D7D7: variable 'v107' is possibly undefined // 47D864: variable 'v108' is possibly undefined // 47D0D9: variable 'v9' is possibly undefined // 47D289: variable 'v59' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 5165B0: using guessed type int std::moneypunct::id; // 538D2C: using guessed type int (*off_538D2C)(); //----- (0047DCA0) -------------------------------------------------------- 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_538D3C; 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; } } } // 47EA17: variable 'v107' is possibly undefined // 47EAA4: variable 'v108' is possibly undefined // 47E319: variable 'v9' is possibly undefined // 47E4C9: variable 'v59' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 5165B4: using guessed type int std::moneypunct::id; // 538D3C: using guessed type int (*off_538D3C)(); //----- (0047EEE0) -------------------------------------------------------- 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); } //----- (0047EEF0) -------------------------------------------------------- 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); } //----- (0047EF00) -------------------------------------------------------- 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; } //----- (0047F020) -------------------------------------------------------- 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; } //----- (0047F100) -------------------------------------------------------- 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); } //----- (0047F120) -------------------------------------------------------- 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); } //----- (0047F140) -------------------------------------------------------- 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); } //----- (0047F1B0) -------------------------------------------------------- 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; } //----- (0047F3E0) -------------------------------------------------------- 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_538D0C; 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; } // 47F917: variable 'v31' is possibly undefined // 47F9A3: variable 'v32' is possibly undefined // 5165A8: using guessed type int std::moneypunct::id; // 538D0C: using guessed type int (*off_538D0C)(); //----- (0047FBB0) -------------------------------------------------------- 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_538D1C; 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; } // 4800E7: variable 'v31' is possibly undefined // 480173: variable 'v32' is possibly undefined // 5165AC: using guessed type int std::moneypunct::id; // 538D1C: using guessed type int (*off_538D1C)(); //----- (00480380) -------------------------------------------------------- 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); } //----- (004803A0) -------------------------------------------------------- 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); } //----- (004803C0) -------------------------------------------------------- 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); } //----- (00480430) -------------------------------------------------------- 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; } // 480543: variable 'v17' is possibly undefined // 480543: variable 'v18' is possibly undefined // 480543: variable 'v19' is possibly undefined // 480543: variable 'v20' is possibly undefined // 480543: variable 'v21' is possibly undefined //----- (004805E0) -------------------------------------------------------- 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_538D2C; 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; } // 480B27: variable 'v32' is possibly undefined // 480BB4: variable 'v33' is possibly undefined // 5165B0: using guessed type int std::moneypunct::id; // 538D2C: using guessed type int (*off_538D2C)(); //----- (00480DF0) -------------------------------------------------------- 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_538D3C; 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; } // 481337: variable 'v32' is possibly undefined // 4813C4: variable 'v33' is possibly undefined // 5165B4: using guessed type int std::moneypunct::id; // 538D3C: using guessed type int (*off_538D3C)(); //----- (00481600) -------------------------------------------------------- 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; } //----- (00481690) -------------------------------------------------------- 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; } //----- (00481720) -------------------------------------------------------- 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); } //----- (00481780) -------------------------------------------------------- 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; } //----- (004817E0) -------------------------------------------------------- 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; } //----- (00481870) -------------------------------------------------------- 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); } //----- (004818D0) -------------------------------------------------------- int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (004818F0) -------------------------------------------------------- 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; } //----- (004819E0) -------------------------------------------------------- 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; } //----- (00481AD0) -------------------------------------------------------- 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); } //----- (00481B70) -------------------------------------------------------- int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (00481B90) -------------------------------------------------------- int std::codecvt::do_encoding() { return 0; } //----- (00481BA0) -------------------------------------------------------- int std::codecvt::do_max_length() { return 4; } //----- (00481BB0) -------------------------------------------------------- int std::codecvt::do_always_noconv() { return 0; } //----- (00481BC0) -------------------------------------------------------- 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; } //----- (00481C20) -------------------------------------------------------- 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; } //----- (00481C80) -------------------------------------------------------- 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; } //----- (00481CB0) -------------------------------------------------------- int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (00481CD0) -------------------------------------------------------- int std::codecvt::do_max_length() { return 1; } //----- (00481CE0) -------------------------------------------------------- int std::codecvt::do_always_noconv() { return 1; } //----- (00481CF0) -------------------------------------------------------- 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; } //----- (00481D10) -------------------------------------------------------- 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; } //----- (00481D30) -------------------------------------------------------- BOOL std::codecvt::do_encoding() { return ___mb_cur_max == 1; } //----- (00481D40) -------------------------------------------------------- int std::codecvt::do_max_length() { return ___mb_cur_max; } //----- (00481D50) -------------------------------------------------------- int std::codecvt::do_always_noconv() { return 0; } //----- (00481D60) -------------------------------------------------------- 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; } //----- (00481E50) -------------------------------------------------------- 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; } //----- (00481F80) -------------------------------------------------------- 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; } //----- (00482010) -------------------------------------------------------- int __stdcall std::collate::_M_compare(char *String1, char *String2) { int v2; // eax v2 = strcoll(String1, String2); return (v2 >> 30) | (v2 != 0); } //----- (00482040) -------------------------------------------------------- // 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_51641C ) goto LABEL_9; goto LABEL_12; } v4 = v6 + 1; v5 = v7 + 1; } v9 = v17; v8 = -1; v10 = v17 - 12; if ( v17 == (char *)&unk_51641C ) 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_51641C ) { 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; } // 4821EB: positive sp value 4 has been found // 78A9D4: using guessed type int _CRT_MT; //----- (00482200) -------------------------------------------------------- size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) { return strxfrm(Destination, Source, MaxCount); } //----- (00482230) -------------------------------------------------------- // 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_51641C; 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_51641C ) { *(v8 - 1) = 0; *(v8 - 3) = (unsigned int)v18; *(_BYTE *)(v9 + v16 + 13) = 0; } } operator delete[](v19); if ( Str != (char *)&unk_51641C ) { 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; } // 482407: positive sp value 4 has been found // 4822A5: variable 'v13' is possibly undefined // 48231E: variable 'v14' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; // 482230: using guessed type int var_19[6]; //----- (00482430) -------------------------------------------------------- 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); } //----- (00482450) -------------------------------------------------------- int __fastcall std::collate::compare(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (00482460) -------------------------------------------------------- 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; } //----- (00482490) -------------------------------------------------------- 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; } //----- (004824C0) -------------------------------------------------------- int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) { int v2; // eax v2 = wcscoll(String1, String2); return (v2 >> 30) | (v2 != 0); } //----- (004824F0) -------------------------------------------------------- // 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_51640C ) goto LABEL_9; goto LABEL_12; } v4 = v6 + 1; v5 = v7 + 1; } v9 = v17; v8 = -1; v10 = v17 - 6; if ( v17 == (wchar_t *)&unk_51640C ) 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_51640C ) { 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; } // 482697: positive sp value 4 has been found // 78A9D4: using guessed type int _CRT_MT; //----- (004826A0) -------------------------------------------------------- size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) { return wcsxfrm(Destination, Source, MaxCount); } //----- (004826D0) -------------------------------------------------------- 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_51640C; 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_51640C ) { *((_DWORD *)v7 - 1) = 0; *((_DWORD *)v7 - 3) = v14; v7[(_DWORD)v14] = 0; } } operator delete[](v6); if ( String != (wchar_t *)&unk_51640C ) { 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; } // 78A9D4: using guessed type int _CRT_MT; // 4826D0: using guessed type int var_19[6]; //----- (004828F0) -------------------------------------------------------- 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); } //----- (00482910) -------------------------------------------------------- int __fastcall std::collate::compare(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (00482920) -------------------------------------------------------- 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; } //----- (00482950) -------------------------------------------------------- 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; } //----- (00482980) -------------------------------------------------------- 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_538BD4; *((_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; } // 4832B7: variable 'v73' is possibly undefined // 483320: variable 'v74' is possibly undefined // 5165C8: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); //----- (004836A0) -------------------------------------------------------- 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_538BD4; *((_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; } // 483FF7: variable 'v74' is possibly undefined // 484060: variable 'v75' is possibly undefined // 5165C8: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); //----- (004843E0) -------------------------------------------------------- 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_538BD4; *((_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; } // 484D17: variable 'v73' is possibly undefined // 484D80: variable 'v74' is possibly undefined // 5165C8: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); //----- (00485100) -------------------------------------------------------- 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_538BD4; *((_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; } // 485A5F: variable 'v73' is possibly undefined // 485AC8: variable 'v74' is possibly undefined // 5165C8: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); //----- (00485E40) -------------------------------------------------------- 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_538BD4; *((_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; } // 48685F: variable 'v79' is possibly undefined // 4868CE: variable 'v80' is possibly undefined // 5165C8: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); //----- (00486C70) -------------------------------------------------------- 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_538BD4; 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; } // 487667: variable 'v75' is possibly undefined // 4876D4: variable 'v76' is possibly undefined // 5165C8: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); //----- (00487A70) -------------------------------------------------------- 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_538BD4; *((_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_51641C; 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_51641C; 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_51641C ) { *(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_51641C ) { *(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; } // 4883C7: variable 'v58' is possibly undefined // 48842D: variable 'v59' is possibly undefined // 488442: variable 'v22' is possibly undefined // 516628: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); //----- (00488630) -------------------------------------------------------- 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_51641C; 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_51641C; 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_51641C ) { *(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_51641C ) return a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)v26 - 3, (int)&v74); return v28; } // 488763: variable 'v52' is possibly undefined // 488F22: variable 'v21' is possibly undefined //----- (004890B0) -------------------------------------------------------- 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_538BD4; *((_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_51641C; 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_51641C; 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_51641C ) { *(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_51641C ) { *(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; } // 489A07: variable 'v58' is possibly undefined // 489A6D: variable 'v59' is possibly undefined // 489A82: variable 'v22' is possibly undefined // 516628: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); //----- (00489C70) -------------------------------------------------------- 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_51641C; 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_51641C; 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_51641C ) { *(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_51641C ) return a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)v26 - 3, (int)&v72); return v28; } // 489DA3: variable 'v51' is possibly undefined // 48A552: variable 'v20' is possibly undefined //----- (0048A6E0) -------------------------------------------------------- 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_51641C; 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_51641C; 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_51641C ) { *(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_51641C ) { v90 = a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)v31 - 3, (int)&v91); return v90; } return result; } // 48A81D: variable 'v69' is possibly undefined // 48ACBC: variable 'v70' is possibly undefined //----- (0048B230) -------------------------------------------------------- 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_51641C; 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_51641C; 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_51641C ) { *(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_51641C ) return a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)v31 - 3, (int)&v88); return v34; } // 48B36D: variable 'v69' is possibly undefined // 48B7DC: variable 'v70' is possibly undefined //----- (0048BD20) -------------------------------------------------------- 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_51641C; 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_51641C ) { 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_51641C; 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_51641C ) { *(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_51641C ) { *(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_51641C ) { *(v81 - 1) = 0; *(v81 - 3) = 0; *(_BYTE *)v81 = 0; } } else { if ( v81 != (unsigned int *)&unk_51641C ) std::string::_Rep::_M_dispose((volatile signed __int32 *)v81 - 3, (int)&v100); *v6 = (unsigned int *)&unk_51641C; } 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_51641C ) 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_51641C ) { *(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_51641C ) { *(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_51641C ) { *(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_51641C ) { 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_51641C ) { *(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_51641C ) 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_51641C ) return a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)v38 - 3, (int)&v100); return v42; } // 48BE04: variable 'v83' is possibly undefined // 48BFA2: variable 'v15' is possibly undefined // 48C8BA: variable 'v70' is possibly undefined // 48C8E2: variable 'v32' is possibly undefined //----- (0048CC00) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); } //----- (0048CC10) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (0048CC20) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); } //----- (0048CC30) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); } //----- (0048CC40) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); } //----- (0048CC50) -------------------------------------------------------- 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); } // 48D6F0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (0048CC70) -------------------------------------------------------- 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); } // 48D700: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (0048CC90) -------------------------------------------------------- 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); } // 48D710: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (0048CCB0) -------------------------------------------------------- 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); } // 48D720: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (0048CCD0) -------------------------------------------------------- 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); } // 48D730: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (0048CCF0) -------------------------------------------------------- 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); } // 48D740: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (0048CD10) -------------------------------------------------------- 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; } // 48CD10: using guessed type unsigned int var_20[8]; //----- (0048CD80) -------------------------------------------------------- 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; } // 48CD80: using guessed type unsigned int var_20[8]; //----- (0048D1E0) -------------------------------------------------------- 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_51641C; 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_51641C ) { 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; } // 48D210: variable 'v13' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; // 48D1E0: using guessed type int var_1C[7]; //----- (0048D390) -------------------------------------------------------- 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_51641C; 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_51641C ) { 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; } // 48D3C0: variable 'v13' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; // 48D390: using guessed type int var_1C[7]; //----- (0048D540) -------------------------------------------------------- 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_51641C; 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_51641C ) { 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; } // 48D570: variable 'v13' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; // 48D540: using guessed type int var_1C[7]; //----- (0048D750) -------------------------------------------------------- _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_538BE4; *((_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; } // 48E137: variable 'v75' is possibly undefined // 48E1AA: variable 'v76' is possibly undefined // 5165CC: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (0048E440) -------------------------------------------------------- _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_538BE4; *((_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; } // 48EE37: variable 'v76' is possibly undefined // 48EEAA: variable 'v77' is possibly undefined // 5165CC: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (0048F140) -------------------------------------------------------- _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_538BE4; *((_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; } // 48FB27: variable 'v75' is possibly undefined // 48FB9A: variable 'v76' is possibly undefined // 5165CC: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (0048FE30) -------------------------------------------------------- _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_538BE4; *((_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; } // 490827: variable 'v74' is possibly undefined // 49089A: variable 'v75' is possibly undefined // 5165CC: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (00490B30) -------------------------------------------------------- _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_538BE4; *((_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; } // 491657: variable 'v79' is possibly undefined // 4916C4: variable 'v80' is possibly undefined // 5165CC: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (00491980) -------------------------------------------------------- _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_538BE4; *((_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; } // 492427: variable 'v72' is possibly undefined // 49249A: variable 'v73' is possibly undefined // 5165CC: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (00492740) -------------------------------------------------------- __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_538BE4; *((_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_51641C; 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_51641C; 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_51641C ) { *(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; } // 493117: variable 'v69' is possibly undefined // 493181: variable 'v70' is possibly undefined // 4931D5: variable 'v25' is possibly undefined // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (00493340) -------------------------------------------------------- __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_538BE4; *((_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_51641C; 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_51641C; 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_51641C ) { *(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; } // 493D17: variable 'v70' is possibly undefined // 493D81: variable 'v71' is possibly undefined // 493DD5: variable 'v25' is possibly undefined // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (00493F40) -------------------------------------------------------- __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_538BE4; *((_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_51641C; 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_51641C; 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_51641C ) { *(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; } // 494917: variable 'v69' is possibly undefined // 494981: variable 'v70' is possibly undefined // 4949D5: variable 'v25' is possibly undefined // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (00494B40) -------------------------------------------------------- __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_538BE4; *((_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_51641C; 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_51641C; 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_51641C ) { *(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; } // 495517: variable 'v71' is possibly undefined // 495581: variable 'v72' is possibly undefined // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (00495740) -------------------------------------------------------- __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_538BE4; 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_51641C; 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_51641C; 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_51641C ) { *(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; } // 4961B7: variable 'v88' is possibly undefined // 496227: variable 'v90' is possibly undefined // 495D2E: variable 'v89' is possibly undefined // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (004963E0) -------------------------------------------------------- __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_538BE4; *((_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_51641C; 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_51641C; 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_51641C ) { *(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; } // 496E57: variable 'v78' is possibly undefined // 496EC1: variable 'v80' is possibly undefined // 4969B8: variable 'v79' is possibly undefined // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (00497080) -------------------------------------------------------- __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_51641C; 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_51641C ) { 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_51641C; 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_51641C ) { *(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_51641C ) { *(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_51641C ) { *(v99 - 1) = 0; *(v99 - 3) = 0; *(_BYTE *)v99 = 0; } } else { if ( v99 != (unsigned int *)&unk_51641C ) std::string::_Rep::_M_dispose((volatile signed __int32 *)v99 - 3, (int)&v119); *v6 = (unsigned int *)&unk_51641C; } 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_51641C ) { *(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_51641C ) { *(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_51641C ) { *(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_51641C ) { *(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_51641C ) { *(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_51641C ) { *(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_51641C ) { *(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_51641C ) return a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)v29 - 3, (int)&v119); return v45; } // 49715C: variable 'v102' is possibly undefined // 497CAA: variable 'v34' is possibly undefined //----- (00497FE0) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); } //----- (00497FF0) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (00498000) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); } //----- (00498010) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); } //----- (00498020) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); } //----- (00498030) -------------------------------------------------------- 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); } // 498C60: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (00498050) -------------------------------------------------------- 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); } // 498C70: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (00498070) -------------------------------------------------------- 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); } // 498C80: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (00498090) -------------------------------------------------------- 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); } // 498C90: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004980B0) -------------------------------------------------------- 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); } // 498CA0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004980D0) -------------------------------------------------------- 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); } // 498CB0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004980F0) -------------------------------------------------------- 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; } // 4980F0: using guessed type unsigned int var_20[8]; //----- (00498190) -------------------------------------------------------- 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_538BE4; *((_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; } // 498517: variable 'v37' is possibly undefined // 498584: variable 'v38' is possibly undefined // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); // 498190: using guessed type unsigned int var_1C[7]; //----- (004986F0) -------------------------------------------------------- _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_51641C; 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_51641C ) { 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; } // 498723: variable 'v19' is possibly undefined // 4987C0: variable 'v10' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; // 4986F0: using guessed type int var_1C[7]; //----- (004988C0) -------------------------------------------------------- _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_51641C; 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_51641C ) { 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; } // 4988F3: variable 'v19' is possibly undefined // 498990: variable 'v10' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; // 4988C0: using guessed type int var_1C[7]; //----- (00498A90) -------------------------------------------------------- _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_51641C; 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_51641C ) { 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; } // 498AC3: variable 'v19' is possibly undefined // 498B60: variable 'v10' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; // 498A90: using guessed type int var_1C[7]; //----- (00498CC0) -------------------------------------------------------- _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; } //----- (00498D10) -------------------------------------------------------- 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_538BD4; *((_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; } // 516628: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); // 498D10: using guessed type char anonymous_2[20]; //----- (00499030) -------------------------------------------------------- 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_538BD4; *((_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; } // 516628: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); // 499030: using guessed type char anonymous_2[16]; //----- (00499300) -------------------------------------------------------- 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_538BD4; *((_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; } // 516628: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); // 499300: using guessed type unsigned int anonymous_1[6]; //----- (00499640) -------------------------------------------------------- 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_538BD4; *((_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; } // 516628: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); // 499640: using guessed type unsigned int anonymous_1[9]; //----- (00499920) -------------------------------------------------------- _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; } //----- (004999E0) -------------------------------------------------------- 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_538BD4; 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; } // 516628: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); //----- (00499F30) -------------------------------------------------------- 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_538BD4; 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; } // 516628: using guessed type int std::numpunct::id; // 538BD4: using guessed type int (*off_538BD4)(); //----- (0049A470) -------------------------------------------------------- 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); } //----- (0049A480) -------------------------------------------------------- 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); } //----- (0049A4A0) -------------------------------------------------------- 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); } //----- (0049A4B0) -------------------------------------------------------- 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); } //----- (0049A4C0) -------------------------------------------------------- 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); } //----- (0049A4F0) -------------------------------------------------------- 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); } //----- (0049A520) -------------------------------------------------------- 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)); } //----- (0049A550) -------------------------------------------------------- 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); } //----- (0049A580) -------------------------------------------------------- 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; } //----- (0049A5D0) -------------------------------------------------------- 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; } //----- (0049A650) -------------------------------------------------------- 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; } //----- (0049A840) -------------------------------------------------------- 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); } //----- (0049A890) -------------------------------------------------------- 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); } //----- (0049A8E0) -------------------------------------------------------- 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); } //----- (0049A8F0) -------------------------------------------------------- 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); } //----- (0049A900) -------------------------------------------------------- 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); } //----- (0049A910) -------------------------------------------------------- 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); } //----- (0049A920) -------------------------------------------------------- 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; } //----- (0049A970) -------------------------------------------------------- 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_538BE4; *((_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; } // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); // 49A970: using guessed type unsigned int anonymous_1[8]; //----- (0049ACA0) -------------------------------------------------------- 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_538BE4; *((_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; } // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); // 49ACA0: using guessed type unsigned int anonymous_1[7]; //----- (0049AF80) -------------------------------------------------------- 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_538BE4; *((_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; } // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); // 49AF80: using guessed type __int16 anonymous_2[8]; //----- (0049B2D0) -------------------------------------------------------- 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_538BE4; *((_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; } // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); // 49B2D0: using guessed type __int16 anonymous_2[14]; //----- (0049B5C0) -------------------------------------------------------- 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; } //----- (0049B690) -------------------------------------------------------- // 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_538BE4; *((_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; } // 49B7DD: bad sp value at call // 49B7B7: variable 'v45' is possibly undefined // 49B7B7: variable 'v46' is possibly undefined // 49B7B7: variable 'v47' is possibly undefined // 49B7B7: variable 'v48' is possibly undefined // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (0049BB70) -------------------------------------------------------- // 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_538BE4; *((_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; } // 49BCB7: bad sp value at call // 49BC91: variable 'v46' is possibly undefined // 49BC91: variable 'v47' is possibly undefined // 49BC91: variable 'v51' is possibly undefined // 49BC91: variable 'v53' is possibly undefined // 49BC91: variable 'v54' is possibly undefined // 51662C: using guessed type int std::numpunct::id; // 538BE4: using guessed type int (*off_538BE4)(); //----- (0049C040) -------------------------------------------------------- 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); } //----- (0049C050) -------------------------------------------------------- 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); } //----- (0049C070) -------------------------------------------------------- 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); } //----- (0049C080) -------------------------------------------------------- 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); } //----- (0049C090) -------------------------------------------------------- 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); } //----- (0049C0C0) -------------------------------------------------------- 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); } //----- (0049C0F0) -------------------------------------------------------- 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)); } //----- (0049C120) -------------------------------------------------------- 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); } //----- (0049C150) -------------------------------------------------------- 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; } //----- (0049C1A0) -------------------------------------------------------- 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; } //----- (0049C220) -------------------------------------------------------- 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; } //----- (0049C410) -------------------------------------------------------- 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); } //----- (0049C460) -------------------------------------------------------- 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); } //----- (0049C4B0) -------------------------------------------------------- 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); } //----- (0049C4C0) -------------------------------------------------------- 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); } //----- (0049C4D0) -------------------------------------------------------- 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); } //----- (0049C4E0) -------------------------------------------------------- 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); } //----- (0049C4F0) -------------------------------------------------------- _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; } //----- (0049C550) -------------------------------------------------------- _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; } //----- (0049C5B0) -------------------------------------------------------- const char *std::bad_cast::what() { return "std::bad_cast"; } //----- (0049C5C0) -------------------------------------------------------- int __thiscall std::function::operator()(int this, char a2, char a3) { if ( !*(_DWORD *)(this + 8) ) std::__throw_bad_function_call(); return (*(int (__cdecl **)(int, char *, char *))(this + 12))(this, &a2, &a3); } //----- (0049C5F0) -------------------------------------------------------- int __fastcall std::ios_base::failure::what(int a1) { return *(_DWORD *)(a1 + 4); } //----- (0049C610) -------------------------------------------------------- int __stdcall std::messages::_M_convert_to_char(int a1) { return *(_DWORD *)a1; } //----- (0049C620) -------------------------------------------------------- _DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) { *this = &unk_51641C; return this; } //----- (0049C630) -------------------------------------------------------- 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; } //----- (0049C670) -------------------------------------------------------- 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); } //----- (0049C690) -------------------------------------------------------- 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); } //----- (0049C6D0) -------------------------------------------------------- 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; } // 49C720: using guessed type int __stdcall std::messages::do_close(int); //----- (0049C6F0) -------------------------------------------------------- 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; } // 49C6FD: variable 'v8' is possibly undefined //----- (0049C710) -------------------------------------------------------- int __stdcall std::messages::do_open(int a1, int a2) { return 0; } //----- (0049C730) -------------------------------------------------------- int __stdcall std::messages::_M_convert_to_char(int a1) { return *(_DWORD *)a1; } //----- (0049C740) -------------------------------------------------------- _DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) { *this = &unk_51640C; return this; } //----- (0049C750) -------------------------------------------------------- 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; } //----- (0049C790) -------------------------------------------------------- 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); } //----- (0049C7B0) -------------------------------------------------------- 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); } //----- (0049C7F0) -------------------------------------------------------- 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; } // 49C840: using guessed type int __stdcall std::messages::do_close(int); //----- (0049C810) -------------------------------------------------------- _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; } //----- (0049C830) -------------------------------------------------------- int __stdcall std::messages::do_open(int a1, int a2) { return 0; } //----- (0049C850) -------------------------------------------------------- _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; } // 49C850: using guessed type int var_D[3]; //----- (0049C880) -------------------------------------------------------- _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; } // 49C880: using guessed type int var_D[3]; //----- (0049C8B0) -------------------------------------------------------- _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; } // 49C8B0: using guessed type int var_D[3]; //----- (0049C8E0) -------------------------------------------------------- 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(); } //----- (0049C900) -------------------------------------------------------- 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(); } //----- (0049C920) -------------------------------------------------------- int __fastcall std::numpunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); } //----- (0049C930) -------------------------------------------------------- int __fastcall std::numpunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); } //----- (0049C940) -------------------------------------------------------- _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; } // 49C940: using guessed type int var_D[3]; //----- (0049C9A0) -------------------------------------------------------- _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; } // 49C9A0: using guessed type int var_D[3]; //----- (0049CA00) -------------------------------------------------------- _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; } // 49CA00: using guessed type int var_D[3]; //----- (0049CA60) -------------------------------------------------------- _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; } // 49CA60: using guessed type int var_D[3]; //----- (0049CA90) -------------------------------------------------------- _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; } // 49CA90: using guessed type int var_D[3]; //----- (0049CAC0) -------------------------------------------------------- _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; } // 49CAC0: using guessed type int var_D[3]; //----- (0049CAF0) -------------------------------------------------------- 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(); } //----- (0049CB10) -------------------------------------------------------- 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(); } //----- (0049CB30) -------------------------------------------------------- int __fastcall std::numpunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); } //----- (0049CB40) -------------------------------------------------------- int __fastcall std::numpunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); } //----- (0049CB50) -------------------------------------------------------- _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; } // 49CB50: using guessed type int var_D[3]; //----- (0049CBB0) -------------------------------------------------------- _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; } // 49CBB0: using guessed type int var_D[3]; //----- (0049CC10) -------------------------------------------------------- _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; } // 49CC10: using guessed type int var_D[3]; //----- (0049CC70) -------------------------------------------------------- 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(); } //----- (0049CC90) -------------------------------------------------------- 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; } //----- (0049CD90) -------------------------------------------------------- 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; } //----- (0049CE90) -------------------------------------------------------- _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; } // 49CF21: variable 'v7' is possibly undefined // 49CE90: using guessed type int var_20[8]; //----- (0049CFF0) -------------------------------------------------------- int __fastcall std::time_get>::get_weekday(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); } //----- (0049D000) -------------------------------------------------------- int std::time_get>::do_date_order() { return 0; } //----- (0049D010) -------------------------------------------------------- int __fastcall std::time_get>::get_monthname(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); } //----- (0049D020) -------------------------------------------------------- _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; } //----- (0049D2E0) -------------------------------------------------------- _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; } // 49D3EF: variable 'v10' is possibly undefined //----- (0049D4B0) -------------------------------------------------------- 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; } //----- (0049DA30) -------------------------------------------------------- _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; } // 49DBDC: variable 'v10' is possibly undefined //----- (0049DCA0) -------------------------------------------------------- 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_52FE7E, &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; } // 49DCF9: variable 'v11' is possibly undefined // 49DE94: variable 'Str' is possibly undefined // 49E066: variable 'v35' is possibly undefined // 49E1A9: variable 'v39' is possibly undefined // 49E269: variable 'v40' is possibly undefined // 49E3B6: variable 'v45' is possibly undefined // 49E3CC: variable 'v46' is possibly undefined // 49E579: variable 'v49' is possibly undefined // 49E652: variable 'v50' is possibly undefined // 49E721: variable 'v51' is possibly undefined // 49E8E6: variable 'v53' is possibly undefined // 49EA75: variable 'v63' is possibly undefined // 49EB55: variable 'v66' is possibly undefined // 49ECA6: variable 'v68' is possibly undefined // 516500: using guessed type void *std::__timepunct_cache::_S_timezones[2]; // 52FE7E: using guessed type _BYTE byte_52FE7E[2]; //----- (0049ECD0) -------------------------------------------------------- _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; } //----- (0049F190) -------------------------------------------------------- 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; } //----- (0049F960) -------------------------------------------------------- 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; } //----- (0049FB20) -------------------------------------------------------- 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; } //----- (0049FCE0) -------------------------------------------------------- int __fastcall std::time_get>::get_date(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); } //----- (0049FCF0) -------------------------------------------------------- int __fastcall std::time_get>::get_time(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); } //----- (0049FD00) -------------------------------------------------------- int __fastcall std::time_get>::get_year(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); } //----- (0049FD10) -------------------------------------------------------- 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(); } //----- (0049FD30) -------------------------------------------------------- _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; } //----- (0049FE70) -------------------------------------------------------- _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; } //----- (0049FFB0) -------------------------------------------------------- _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; } // 4A002A: variable 'v8' is possibly undefined // 49FFB0: using guessed type int var_20[8]; //----- (004A0130) -------------------------------------------------------- int __fastcall std::time_get>::get_weekday(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); } //----- (004A0140) -------------------------------------------------------- int std::time_get>::do_date_order() { return 0; } //----- (004A0150) -------------------------------------------------------- int __fastcall std::time_get>::get_monthname(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); } //----- (004A0160) -------------------------------------------------------- _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; } //----- (004A03F0) -------------------------------------------------------- _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; } // 4A051D: variable 'v10' is possibly undefined //----- (004A05F0) -------------------------------------------------------- _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; } //----- (004A0B30) -------------------------------------------------------- _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; } // 4A0CFA: variable 'v10' is possibly undefined //----- (004A0DD0) -------------------------------------------------------- __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_530262, 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; } // 4A0E2D: variable 'v12' is possibly undefined // 4A1AC4: variable 'v36' is possibly undefined // 4A1BEE: variable 'v40' is possibly undefined // 4A2038: variable 'v45' is possibly undefined // 4A2340: variable 'v50' is possibly undefined // 516540: using guessed type void *std::__timepunct_cache::_S_timezones[2]; //----- (004A2370) -------------------------------------------------------- _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; } //----- (004A2850) -------------------------------------------------------- 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; } // 4A2DD6: variable 'v47' is possibly undefined // 4A2DE4: variable 'v53' is possibly undefined // 4A2E15: variable 'v46' is possibly undefined // 4A2E22: variable 'v57' is possibly undefined //----- (004A2FE0) -------------------------------------------------------- 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; } //----- (004A3170) -------------------------------------------------------- _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; } //----- (004A3330) -------------------------------------------------------- int __fastcall std::time_get>::get_date(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); } //----- (004A3340) -------------------------------------------------------- int __fastcall std::time_get>::get_time(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); } //----- (004A3350) -------------------------------------------------------- int __fastcall std::time_get>::get_year(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); } //----- (004A3360) -------------------------------------------------------- __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; } //----- (004A35F0) -------------------------------------------------------- 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); } //----- (004A3610) -------------------------------------------------------- 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; } // 4A3610: using guessed type char var_9C[156]; //----- (004A3790) -------------------------------------------------------- _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; } //----- (004A3960) -------------------------------------------------------- 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); } //----- (004A3980) -------------------------------------------------------- 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; } //----- (004A3AA0) -------------------------------------------------------- const char *std::bad_alloc::what() { return "std::bad_alloc"; } //----- (004A3AB0) -------------------------------------------------------- int __fastcall std::ios::exceptions(int a1) { return *(_DWORD *)(a1 + 16); } //----- (004A3AC0) -------------------------------------------------------- int __fastcall std::ios::bad(int a1) { return *(_DWORD *)(a1 + 20) & 1; } //----- (004A3AD0) -------------------------------------------------------- int __fastcall std::ios::eof(int a1) { return (*(_DWORD *)(a1 + 20) >> 1) & 1; } //----- (004A3AE0) -------------------------------------------------------- int __fastcall std::ios::tie(int a1) { return *(_DWORD *)(a1 + 112); } //----- (004A3AF0) -------------------------------------------------------- bool __fastcall std::ios::fail(int a1) { return (*(_BYTE *)(a1 + 20) & 5) != 0; } //----- (004A3B00) -------------------------------------------------------- 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; } //----- (004A3B70) -------------------------------------------------------- bool __fastcall std::ios::good(int a1) { return *(_DWORD *)(a1 + 20) == 0; } //----- (004A3B80) -------------------------------------------------------- int __fastcall std::ios::rdbuf(int a1) { return *(_DWORD *)(a1 + 120); } //----- (004A3B90) -------------------------------------------------------- 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; } //----- (004A3BF0) -------------------------------------------------------- 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; } //----- (004A3C60) -------------------------------------------------------- int __fastcall std::ios::rdstate(int a1) { return *(_DWORD *)(a1 + 20); } //----- (004A3C70) -------------------------------------------------------- int __fastcall std::ios::operator void *(int a1) { return (*(_DWORD *)(a1 + 20) & 5) == 0 ? a1 : 0; } //----- (004A3C80) -------------------------------------------------------- bool __fastcall std::ios::operator bool(int a1) { return (*(_BYTE *)(a1 + 20) & 5) == 0; } //----- (004A3C90) -------------------------------------------------------- bool __fastcall std::ios::operator!(int a1) { return (*(_BYTE *)(a1 + 20) & 5) != 0; } //----- (004A3CA0) -------------------------------------------------------- int __fastcall std::wios::exceptions(int a1) { return *(_DWORD *)(a1 + 16); } //----- (004A3CB0) -------------------------------------------------------- int __fastcall std::wios::bad(int a1) { return *(_DWORD *)(a1 + 20) & 1; } //----- (004A3CC0) -------------------------------------------------------- int __fastcall std::wios::eof(int a1) { return (*(_DWORD *)(a1 + 20) >> 1) & 1; } //----- (004A3CD0) -------------------------------------------------------- int __fastcall std::wios::tie(int a1) { return *(_DWORD *)(a1 + 112); } //----- (004A3CE0) -------------------------------------------------------- bool __fastcall std::wios::fail(int a1) { return (*(_BYTE *)(a1 + 20) & 5) != 0; } //----- (004A3CF0) -------------------------------------------------------- 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; } //----- (004A3D30) -------------------------------------------------------- bool __fastcall std::wios::good(int a1) { return *(_DWORD *)(a1 + 20) == 0; } //----- (004A3D40) -------------------------------------------------------- int __fastcall std::wios::rdbuf(int a1) { return *(_DWORD *)(a1 + 120); } //----- (004A3D50) -------------------------------------------------------- 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); } //----- (004A3D80) -------------------------------------------------------- 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); } //----- (004A3DC0) -------------------------------------------------------- int __fastcall std::wios::rdstate(int a1) { return *(_DWORD *)(a1 + 20); } //----- (004A3DD0) -------------------------------------------------------- int __fastcall std::wios::operator void *(int a1) { return (*(_DWORD *)(a1 + 20) & 5) == 0 ? a1 : 0; } //----- (004A3DE0) -------------------------------------------------------- bool __fastcall std::wios::operator bool(int a1) { return (*(_BYTE *)(a1 + 20) & 5) == 0; } //----- (004A3DF0) -------------------------------------------------------- bool __fastcall std::wios::operator!(int a1) { return (*(_BYTE *)(a1 + 20) & 5) != 0; } //----- (004A3E00) -------------------------------------------------------- const char *_ZGTtNKSt9exception4whatEv() { return "std::exception"; } //----- (004A3E10) -------------------------------------------------------- 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_538D0C; 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_51641C; if ( !v9 ) std::string::reserve((unsigned int **)&v89, (std::string *)0x20, (unsigned int)v66); v90 = (volatile signed __int32 *)&unk_51641C; 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_51641C ) std::string::_Rep::_M_dispose(v90 - 3, (int)&v88); if ( v89 != (volatile signed __int32 *)&unk_51641C ) 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_51641C ) { *((_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_51641C ) { *((_DWORD *)v90 - 1) = 0; *((_DWORD *)v20 - 3) = v19 + 1; *((_BYTE *)v20 + v19 + 1) = 0; } ++v87; goto LABEL_33; default: v31 = 0; goto LABEL_171; } } } // 4A49C7: variable 'v66' is possibly undefined // 4A4A53: variable 'v68' is possibly undefined // 4A3FFB: variable 'v67' is possibly undefined // 4A492F: variable 'v69' is possibly undefined // 4A4B05: variable 'v70' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 51642C: using guessed type int std::moneypunct::id; // 538D0C: using guessed type int (*off_538D0C)(); //----- (004A4CB0) -------------------------------------------------------- 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_538D1C; 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_51641C; if ( !v9 ) std::string::reserve((unsigned int **)&v89, (std::string *)0x20, (unsigned int)v66); v90 = (volatile signed __int32 *)&unk_51641C; 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_51641C ) std::string::_Rep::_M_dispose(v90 - 3, (int)&v88); if ( v89 != (volatile signed __int32 *)&unk_51641C ) 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_51641C ) { *((_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_51641C ) { *((_DWORD *)v90 - 1) = 0; *((_DWORD *)v20 - 3) = v19 + 1; *((_BYTE *)v20 + v19 + 1) = 0; } ++v87; goto LABEL_33; default: v31 = 0; goto LABEL_171; } } } // 4A5867: variable 'v66' is possibly undefined // 4A58F3: variable 'v68' is possibly undefined // 4A4E9B: variable 'v67' is possibly undefined // 4A57CF: variable 'v69' is possibly undefined // 4A59A5: variable 'v70' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 516430: using guessed type int std::moneypunct::id; // 538D1C: using guessed type int (*off_538D1C)(); //----- (004A5B50) -------------------------------------------------------- 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); } //----- (004A5B60) -------------------------------------------------------- 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); } //----- (004A5B70) -------------------------------------------------------- // 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_51641C; 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_51641C ) 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_51641C ) 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; } // 4A5D69: positive sp value 4 has been found // 4A5C1E: variable 'v16' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; // 4A5B70: using guessed type _DWORD *arg_8; //----- (004A5D80) -------------------------------------------------------- // 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_51641C; 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_51641C ) { 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; } // 4A5E76: positive sp value 4 has been found // 78A9D4: using guessed type int _CRT_MT; // 4A5D80: using guessed type int var_1C[7]; //----- (004A5E80) -------------------------------------------------------- _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_538D2C; 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_51641C; if ( !v10 ) std::string::reserve(&v115, (std::string *)0x20, (unsigned int)v92); v116 = (volatile signed __int32 *)&unk_51641C; 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_51641C ) { v61 = (volatile signed __int32 *)(v115 - 3); if ( v115 == (unsigned int *)&unk_51641C ) 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_51641C ) 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_51641C ) { *((_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_51641C ) { *(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; } } } // 4A6AB7: variable 'v92' is possibly undefined // 4A6B44: variable 'v94' is possibly undefined // 4A609D: variable 'v93' is possibly undefined // 4A6A17: variable 'v95' is possibly undefined // 4A6C0D: variable 'v96' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 516434: using guessed type int std::moneypunct::id; // 538D2C: using guessed type int (*off_538D2C)(); //----- (004A6D90) -------------------------------------------------------- _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_538D3C; 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_51641C; if ( !v10 ) std::string::reserve(&v115, (std::string *)0x20, (unsigned int)v92); v116 = (volatile signed __int32 *)&unk_51641C; 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_51641C ) { v61 = (volatile signed __int32 *)(v115 - 3); if ( v115 == (unsigned int *)&unk_51641C ) 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_51641C ) 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_51641C ) { *((_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_51641C ) { *(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; } } } // 4A79C7: variable 'v92' is possibly undefined // 4A7A54: variable 'v94' is possibly undefined // 4A6FAD: variable 'v93' is possibly undefined // 4A7927: variable 'v95' is possibly undefined // 4A7B1D: variable 'v96' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 516438: using guessed type int std::moneypunct::id; // 538D3C: using guessed type int (*off_538D3C)(); //----- (004A7CA0) -------------------------------------------------------- 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); } //----- (004A7CB0) -------------------------------------------------------- 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); } //----- (004A7CC0) -------------------------------------------------------- // 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_51641C; 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_51641C ) 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_51641C ) { 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; } // 4A7E26: positive sp value 4 has been found // 78A9D4: using guessed type int _CRT_MT; //----- (004A7E30) -------------------------------------------------------- // 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_51641C; 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_51641C ) { 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; } // 4A7F36: positive sp value 4 has been found // 78A9D4: using guessed type int _CRT_MT; // 4A7E30: using guessed type int var_1C[7]; //----- (004A7F40) -------------------------------------------------------- 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); } //----- (004A7F60) -------------------------------------------------------- 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); } //----- (004A7F80) -------------------------------------------------------- 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); } //----- (004A7FF0) -------------------------------------------------------- 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_51641C ) { 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004A8280) -------------------------------------------------------- // 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_538D0C; 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_51641C; 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_51641C; 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_51641C ) std::string::_Rep::_M_dispose((volatile signed __int32 *)v29 - 3, (int)&v51); if ( v52 != (std::string *)&unk_51641C ) 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; } // 4A8856: positive sp value 4 has been found // 4A86D7: variable 'v33' is possibly undefined // 4A8763: variable 'v36' is possibly undefined // 4A83D1: variable 'v39' is possibly undefined // 4A8461: variable 'v38' is possibly undefined // 4A84A9: variable 'v34' is possibly undefined // 4A8507: variable 'v35' is possibly undefined // 4A87D4: variable 'v37' is possibly undefined // 51642C: using guessed type int std::moneypunct::id; // 538D0C: using guessed type int (*off_538D0C)(); //----- (004A88B0) -------------------------------------------------------- // 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_538D1C; 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_51641C; 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_51641C; 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_51641C ) std::string::_Rep::_M_dispose((volatile signed __int32 *)v29 - 3, (int)&v51); if ( v52 != (std::string *)&unk_51641C ) 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; } // 4A8E86: positive sp value 4 has been found // 4A8D07: variable 'v33' is possibly undefined // 4A8D93: variable 'v36' is possibly undefined // 4A8A01: variable 'v39' is possibly undefined // 4A8A91: variable 'v38' is possibly undefined // 4A8AD9: variable 'v34' is possibly undefined // 4A8B37: variable 'v35' is possibly undefined // 4A8E04: variable 'v37' is possibly undefined // 516430: using guessed type int std::moneypunct::id; // 538D1C: using guessed type int (*off_538D1C)(); //----- (004A8EE0) -------------------------------------------------------- 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); } //----- (004A8F00) -------------------------------------------------------- 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); } //----- (004A8F20) -------------------------------------------------------- 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); } //----- (004A8F90) -------------------------------------------------------- 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_51640C ) { 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; } // 4A90AF: variable 'v19' is possibly undefined // 4A90AF: variable 'v20' is possibly undefined // 4A90AF: variable 'v21' is possibly undefined // 4A90AF: variable 'v22' is possibly undefined // 4A90AF: variable 'v23' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004A91C0) -------------------------------------------------------- // 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_538D2C; 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_51640C; 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_51640C ) { *(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_51640C; 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_51640C ) std::wstring::_Rep::_M_dispose(v30 - 3, (int)&v49); if ( v50 != (_DWORD *)&unk_51640C ) 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; } // 4A97FD: positive sp value 4 has been found // 4A9637: variable 'v36' is possibly undefined // 4A96C4: variable 'v37' is possibly undefined // 516434: using guessed type int std::moneypunct::id; // 538D2C: using guessed type int (*off_538D2C)(); //----- (004A9850) -------------------------------------------------------- // 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_538D3C; 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_51640C; 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_51640C ) { *(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_51640C; 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_51640C ) { *(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_51640C ) std::wstring::_Rep::_M_dispose(v29 - 3, (int)&v50); if ( v51 != (_DWORD *)&unk_51640C ) 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; } // 4A9EF5: positive sp value 4 has been found // 4A9D07: variable 'v36' is possibly undefined // 4A9D94: variable 'v37' is possibly undefined // 516438: using guessed type int std::moneypunct::id; // 538D3C: using guessed type int (*off_538D3C)(); //----- (004A9F20) -------------------------------------------------------- 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); } //----- (004A9F40) -------------------------------------------------------- int __stdcall std::type_info::__do_upcast(std::type_info *this, const __cxxabiv1::__class_type_info *a2, void **a3) { return 0; } //----- (004A9F50) -------------------------------------------------------- int std::type_info::__is_function_p() { return 0; } //----- (004A9F60) -------------------------------------------------------- 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; } //----- (004A9FA0) -------------------------------------------------------- int __cdecl std::wstring::_S_compare(int a1, int a2) { return a1 - a2; } //----- (004A9FB0) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004A9FC0) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004A9FD0) -------------------------------------------------------- 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_51640C ) { 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; } //----- (004AA030) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_S_construct(unsigned int a1, wchar_t a2) { if ( a1 ) return std::wstring::_S_construct(a1, a2); else return &unk_51640C; } //----- (004AA060) -------------------------------------------------------- _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; } //----- (004AA0E0) -------------------------------------------------------- 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_51640C; 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; } //----- (004AA170) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2) { if ( a1 == (const wchar_t *)a2 ) return &unk_51640C; if ( !a1 ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); return std::wstring::_S_construct(a1, a2); } //----- (004AA1B0) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2) { if ( a1 == (const wchar_t *)a2 ) return &unk_51640C; if ( !a1 ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); return std::wstring::_S_construct(a1, a2); } //----- (004AA1F0) -------------------------------------------------------- _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; } //----- (004AA280) -------------------------------------------------------- void *std::wstring::_S_empty_rep() { return &std::wstring::_Rep::_S_empty_rep_storage; } //----- (004AA290) -------------------------------------------------------- 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; } //----- (004AA2D0) -------------------------------------------------------- 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; } //----- (004AA310) -------------------------------------------------------- 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; } //----- (004AA350) -------------------------------------------------------- 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; } //----- (004AA390) -------------------------------------------------------- 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; } // 4AA390: could not find valid save-restore pair for ebp //----- (004AA3D0) -------------------------------------------------------- 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; } //----- (004AA460) -------------------------------------------------------- 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; } //----- (004AA4D0) -------------------------------------------------------- _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_51640C; } //----- (004AA500) -------------------------------------------------------- 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]; } //----- (004AA550) -------------------------------------------------------- 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)]; } //----- (004AA580) -------------------------------------------------------- void __thiscall std::wstring::_Rep::_M_destroy(void *this, int a2) { operator delete(this); } //----- (004AA5A0) -------------------------------------------------------- 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); } } // 78A9D4: using guessed type int _CRT_MT; //----- (004AA5F0) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004AA630) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004AA670) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004AA6A0) -------------------------------------------------------- int __fastcall std::wstring::_Rep::_M_refdata(int a1) { return a1 + 12; } //----- (004AA6B0) -------------------------------------------------------- void *std::wstring::_Rep::_S_empty_rep() { return &std::wstring::_Rep::_S_empty_rep_storage; } //----- (004AA6C0) -------------------------------------------------------- void __fastcall std::wstring::_Rep::_M_set_leaked(int a1) { *(_DWORD *)(a1 + 8) = -1; } //----- (004AA6D0) -------------------------------------------------------- void __fastcall std::wstring::_Rep::_M_set_sharable(int a1) { *(_DWORD *)(a1 + 8) = 0; } //----- (004AA6E0) -------------------------------------------------------- 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; } //----- (004AA710) -------------------------------------------------------- _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); } // 78A9D4: using guessed type int _CRT_MT; //----- (004AA760) -------------------------------------------------------- _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; } //----- (004AA7F0) -------------------------------------------------------- _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; } // 4AA849: variable 'v6' is possibly undefined //----- (004AA880) -------------------------------------------------------- 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]; } //----- (004AA8B0) -------------------------------------------------------- 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; } //----- (004AA8E0) -------------------------------------------------------- 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; } //----- (004AA910) -------------------------------------------------------- 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; } //----- (004AA940) -------------------------------------------------------- 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_51640C ) { *(v1 - 1) = 0; *(v1 - 3) = 0; *(_WORD *)v1 = 0; } } else if ( v1 == (_DWORD *)&unk_51640C ) { *a1 = &unk_51640C; } 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_51640C; } } // 78A9D4: using guessed type int _CRT_MT; //----- (004AA9E0) -------------------------------------------------------- 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; } //----- (004AAA20) -------------------------------------------------------- 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; } //----- (004AAA80) -------------------------------------------------------- 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; } //----- (004AAAF0) -------------------------------------------------------- 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; } //----- (004AAB20) -------------------------------------------------------- void **__thiscall std::wstring::append(void **this, wchar_t *String) { size_t v3; // eax v3 = wcslen(String); return std::wstring::append(this, String, v3); } //----- (004AAB50) -------------------------------------------------------- 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_51640C ) { *((_DWORD *)v5 - 1) = 0; *((_DWORD *)v5 - 3) = v7; v5[(_DWORD)v7] = 0; } return this; } //----- (004AAC30) -------------------------------------------------------- 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_51640C ) { *(v5 - 1) = 0; *(v5 - 3) = v4; *((_WORD *)v5 + v4) = 0; } return this; } //----- (004AACE0) -------------------------------------------------------- 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_51640C ) { *(v9 - 1) = 0; *(v9 - 3) = v7; *((_WORD *)v9 + (_DWORD)v7) = 0; } return this; } //----- (004AADD0) -------------------------------------------------------- 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_51640C ) { *(v7 - 1) = 0; *(v7 - 3) = v6; *((_WORD *)v7 + (_DWORD)v6) = 0; } } return this; } //----- (004AAE70) -------------------------------------------------------- int __thiscall std::wstring::assign(int *this, int *a2) { int v2; // ecx std::wstring::swap(this, a2); return v2; } // 4AAE82: variable 'v2' is possibly undefined //----- (004AAE90) -------------------------------------------------------- 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); } //----- (004AAEC0) -------------------------------------------------------- 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_51640C ) { *((_DWORD *)v6 - 1) = 0; *((_DWORD *)v6 - 3) = N; v6[N] = 0; } return result; } //----- (004AAFC0) -------------------------------------------------------- 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_51640C || (_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; } // 78A9D4: using guessed type int _CRT_MT; // 4AAFC0: using guessed type char var_D[13]; //----- (004AB080) -------------------------------------------------------- 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); } //----- (004AB0F0) -------------------------------------------------------- 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); } //----- (004AB130) -------------------------------------------------------- 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); } //----- (004AB150) -------------------------------------------------------- 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); } //----- (004AB190) -------------------------------------------------------- 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; } //----- (004AB1E0) -------------------------------------------------------- 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); } //----- (004AB220) -------------------------------------------------------- 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; } } //----- (004AB3F0) -------------------------------------------------------- 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)); } //----- (004AB420) -------------------------------------------------------- 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); } //----- (004AB490) -------------------------------------------------------- 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); } //----- (004AB4F0) -------------------------------------------------------- _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; } //----- (004AB530) -------------------------------------------------------- void __thiscall std::wstring::resize(void **this, size_t a2) { std::wstring::resize(this, a2, 0); } //----- (004AB550) -------------------------------------------------------- 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); } } //----- (004AB5D0) -------------------------------------------------------- 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; } //----- (004AB600) -------------------------------------------------------- int __thiscall std::wstring::_M_data(_DWORD *this, int a2) { int result; // eax result = a2; *this = a2; return result; } //----- (004AB610) -------------------------------------------------------- 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; } //----- (004AB630) -------------------------------------------------------- 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; } //----- (004AB660) -------------------------------------------------------- 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); } //----- (004AB690) -------------------------------------------------------- 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); } //----- (004AB6E0) -------------------------------------------------------- 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); } //----- (004AB710) -------------------------------------------------------- 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); } //----- (004AB730) -------------------------------------------------------- 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)); } //----- (004AB770) -------------------------------------------------------- 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); } //----- (004AB7A0) -------------------------------------------------------- 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); } //----- (004AB7D0) -------------------------------------------------------- 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); } //----- (004AB800) -------------------------------------------------------- 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); } //----- (004AB830) -------------------------------------------------------- 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); } //----- (004AB870) -------------------------------------------------------- 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_51640C ) { 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004ABA70) -------------------------------------------------------- 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)); } //----- (004ABAB0) -------------------------------------------------------- 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); } //----- (004ABB20) -------------------------------------------------------- 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); } //----- (004ABB90) -------------------------------------------------------- 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_51640C ) { 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; } // 78A9D4: using guessed type int _CRT_MT; // 4ABB90: using guessed type char var_D[13]; //----- (004ABC40) -------------------------------------------------------- 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); } //----- (004ABCA0) -------------------------------------------------------- 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; } // 4ABCA0: using guessed type size_t C; //----- (004ABCE0) -------------------------------------------------------- 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_51640C ) { 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004ABEB0) -------------------------------------------------------- _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_51640C ) { *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = v4; result[v4] = 0; } return result; } //----- (004ABF20) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_51640C; return result; } //----- (004ABF40) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_51640C; return result; } //----- (004ABF60) -------------------------------------------------------- _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; } //----- (004ABFB0) -------------------------------------------------------- _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; } //----- (004ABFF0) -------------------------------------------------------- void __thiscall std::wstring::basic_string(_DWORD *this, int a2) { *this = &unk_51640C; } //----- (004AC000) -------------------------------------------------------- _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; } // 78A9D4: using guessed type int _CRT_MT; // 4AC000: using guessed type char var_D[13]; //----- (004AC080) -------------------------------------------------------- _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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004AC100) -------------------------------------------------------- _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; } //----- (004AC160) -------------------------------------------------------- _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; } //----- (004AC1D0) -------------------------------------------------------- _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; } //----- (004AC240) -------------------------------------------------------- _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; } //----- (004AC280) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4) { _DWORD *result; // eax result = &unk_51640C; if ( a2 ) { result = std::wstring::_S_construct(a2, a3); *this = result; } else { *this = &unk_51640C; } return result; } //----- (004AC2C0) -------------------------------------------------------- void __fastcall std::wstring::basic_string(_DWORD *a1) { *a1 = &unk_51640C; } //----- (004AC2D0) -------------------------------------------------------- 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; } //----- (004AC300) -------------------------------------------------------- _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; } //----- (004AC330) -------------------------------------------------------- _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; } //----- (004AC360) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_51640C; return result; } //----- (004AC380) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_51640C; return result; } //----- (004AC3A0) -------------------------------------------------------- _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; } //----- (004AC3F0) -------------------------------------------------------- _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; } //----- (004AC430) -------------------------------------------------------- void __thiscall std::wstring::basic_string(_DWORD *this, int a2) { *this = &unk_51640C; } //----- (004AC440) -------------------------------------------------------- _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; } // 78A9D4: using guessed type int _CRT_MT; // 4AC440: using guessed type char var_D[13]; //----- (004AC4C0) -------------------------------------------------------- _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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004AC540) -------------------------------------------------------- _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; } //----- (004AC5A0) -------------------------------------------------------- _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; } //----- (004AC610) -------------------------------------------------------- _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; } //----- (004AC680) -------------------------------------------------------- _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; } //----- (004AC6C0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4) { _DWORD *result; // eax result = &unk_51640C; if ( a2 ) { result = std::wstring::_S_construct(a2, a3); *this = result; } else { *this = &unk_51640C; } return result; } //----- (004AC700) -------------------------------------------------------- void __fastcall std::wstring::basic_string(_DWORD *a1) { *a1 = &unk_51640C; } //----- (004AC710) -------------------------------------------------------- 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; } //----- (004AC740) -------------------------------------------------------- _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; } //----- (004AC770) -------------------------------------------------------- _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; } //----- (004AC7A0) -------------------------------------------------------- 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_51640C ) { 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)); } } // 78A9D4: using guessed type int _CRT_MT; //----- (004AC800) -------------------------------------------------------- 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_51640C ) { 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)); } } // 78A9D4: using guessed type int _CRT_MT; //----- (004AC860) -------------------------------------------------------- int __thiscall std::wstring::operator=(int *this, int *a2) { int v2; // ecx std::wstring::swap(this, a2); return v2; } // 4AC872: variable 'v2' is possibly undefined //----- (004AC880) -------------------------------------------------------- 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); } //----- (004AC8C0) -------------------------------------------------------- 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; } //----- (004AC8F0) -------------------------------------------------------- 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; } //----- (004AC930) -------------------------------------------------------- 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]; } //----- (004AC960) -------------------------------------------------------- void **__thiscall std::wstring::operator+=(void **this, wchar_t *String) { size_t v3; // eax v3 = wcslen(String); return std::wstring::append(this, String, v3); } //----- (004AC9B0) -------------------------------------------------------- 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_51640C ) { *((_DWORD *)v5 - 1) = 0; *((_DWORD *)v5 - 3) = v4; v5[v4] = 0; } return this; } //----- (004ACA20) -------------------------------------------------------- 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; } // 4ACA41: variable 'v10' is possibly undefined //----- (004ACAB0) -------------------------------------------------------- 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_5339C0; *((_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_5339D4; 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_538444; this[3] = off_53846C; this[2] = off_538458; return result; } // 4ACB23: variable 'v9' is possibly undefined // 538444: using guessed type void (__cdecl *off_538444)(std::iostream *__hidden this); // 538458: using guessed type void (__cdecl *off_538458[2])(std::iostream *__hidden this); // 53846C: using guessed type void (__cdecl *off_53846C[2])(std::iostream *__hidden this); //----- (004ACBA0) -------------------------------------------------------- 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_5339C0; this[3] = &unk_5339D4; this[1] = 0; std::ios::init(v2, a2); this[2] = &unk_5339E8; this[3] = &unk_5339FC; result = std::ios::init(v2, a2); *this = &off_538444; this[3] = off_53846C; this[2] = off_538458; return result; } // 538444: using guessed type void (__cdecl *off_538444)(std::iostream *__hidden this); // 538458: using guessed type void (__cdecl *off_538458[2])(std::iostream *__hidden this); // 53846C: using guessed type void (__cdecl *off_53846C[2])(std::iostream *__hidden this); //----- (004ACC80) -------------------------------------------------------- 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_5339C0; *(_DWORD *)(a1 + 12) = &unk_5339D4; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_5339E8; *(_DWORD *)(a1 + 12) = &unk_5339FC; result = std::ios::init(v1, 0); *(_DWORD *)a1 = &off_538444; *(_DWORD *)(a1 + 12) = off_53846C; *(_DWORD *)(a1 + 8) = off_538458; return result; } // 538444: using guessed type void (__cdecl *off_538444)(std::iostream *__hidden this); // 538458: using guessed type void (__cdecl *off_538458[2])(std::iostream *__hidden this); // 53846C: using guessed type void (__cdecl *off_53846C[2])(std::iostream *__hidden this); //----- (004ACD60) -------------------------------------------------------- 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; } // 4ACD9B: variable 'v13' is possibly undefined //----- (004ACE10) -------------------------------------------------------- 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; } //----- (004ACEA0) -------------------------------------------------------- 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; } //----- (004ACF30) -------------------------------------------------------- void __fastcall std::iostream::~iostream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 3; *(v2 - 1) = &unk_5339E8; *(v2 - 3) = &unk_5339C0; *(v2 - 2) = 0; *v2 = &off_539474; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 539474: using guessed type int (*off_539474)(); //----- (004ACF70) -------------------------------------------------------- void __fastcall std::iostream::~iostream(int a1) { _DWORD *v1; // ecx *(_DWORD *)(a1 + 8) = &unk_5339E8; v1 = (_DWORD *)(a1 + 12); *(v1 - 3) = &unk_5339C0; *(v1 - 2) = 0; *v1 = &off_539474; std::ios_base::~ios_base((int)v1); } // 539474: using guessed type int (*off_539474)(); //----- (004ACFA0) -------------------------------------------------------- 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; } //----- (004ACFF0) -------------------------------------------------------- _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; } // 4AD011: variable 'v10' is possibly undefined //----- (004AD080) -------------------------------------------------------- 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; } // 4AD099: variable 'v7' is possibly undefined // 4AD080: using guessed type int var_1C[7]; //----- (004AD1B0) -------------------------------------------------------- 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; } // 4AD1C9: variable 'v7' is possibly undefined // 4AD1B0: using guessed type int var_1C[7]; //----- (004AD2E0) -------------------------------------------------------- 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; } // 4AD2F9: variable 'v7' is possibly undefined // 4AD2E0: using guessed type int var_1C[7]; //----- (004AD410) -------------------------------------------------------- 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; } // 4AD429: variable 'v7' is possibly undefined // 4AD410: using guessed type int var_1C[7]; //----- (004AD540) -------------------------------------------------------- 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; } // 4AD559: variable 'v7' is possibly undefined // 4AD540: using guessed type int var_1C[7]; //----- (004AD670) -------------------------------------------------------- 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; } // 4AD689: variable 'v7' is possibly undefined // 4AD670: using guessed type int var_1C[7]; //----- (004AD7A0) -------------------------------------------------------- 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; } // 4AD7B9: variable 'v7' is possibly undefined // 4AD7A0: using guessed type int var_1C[7]; //----- (004AD8D0) -------------------------------------------------------- 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; } // 4AD8E9: variable 'v7' is possibly undefined // 4AD8D0: using guessed type int var_1C[7]; //----- (004ADA00) -------------------------------------------------------- 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; } // 4ADA19: variable 'v7' is possibly undefined // 4ADA00: using guessed type int var_1C[7]; //----- (004ADB30) -------------------------------------------------------- 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; } // 4ADB49: variable 'v7' is possibly undefined // 4ADB30: using guessed type int var_1C[7]; //----- (004ADC60) -------------------------------------------------------- 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; } // 4ADC79: variable 'v7' is possibly undefined // 4ADC60: using guessed type int var_1C[7]; //----- (004ADD90) -------------------------------------------------------- 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); } // 4ADDC3: variable 'v10' is possibly undefined //----- (004ADE10) -------------------------------------------------------- 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; } // 4ADE37: variable 'v15' is possibly undefined // 4ADE10: using guessed type char var_1D[29]; //----- (004AE080) -------------------------------------------------------- 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); } //----- (004AE100) -------------------------------------------------------- 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; } // 4AE128: variable 'v14' is possibly undefined // 4AE100: using guessed type char var_19[25]; //----- (004AE290) -------------------------------------------------------- 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; } // 4AE2AC: variable 'v10' is possibly undefined // 4AE290: using guessed type char var_D[13]; //----- (004AE3A0) -------------------------------------------------------- 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; } // 4AE3BC: variable 'v6' is possibly undefined // 4AE3A0: using guessed type char var_D[13]; //----- (004AE4B0) -------------------------------------------------------- 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; } // 4AE4CC: variable 'v5' is possibly undefined // 4AE4B0: using guessed type char var_D[13]; //----- (004AE5A0) -------------------------------------------------------- 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; } // 4AE5BE: variable 'v7' is possibly undefined // 4AE5A0: using guessed type char var_9[5]; //----- (004AE690) -------------------------------------------------------- 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; } // 4AE6B1: variable 'v10' is possibly undefined //----- (004AE720) -------------------------------------------------------- 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; } // 4AE735: variable 'v4' is possibly undefined // 4AE720: using guessed type char var_D[13]; //----- (004AE800) -------------------------------------------------------- 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; } // 4AE847: variable 'v10' is possibly undefined //----- (004AE950) -------------------------------------------------------- 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; } // 4AE985: variable 'v7' is possibly undefined //----- (004AEA70) -------------------------------------------------------- _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; } // 4AEA9F: variable 'v5' is possibly undefined //----- (004AEB70) -------------------------------------------------------- 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; } // 4AEBA4: variable 'v7' is possibly undefined // 4AEB70: using guessed type char var_9[5]; //----- (004AEC90) -------------------------------------------------------- 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; } // 4AECBC: variable 'v14' is possibly undefined // 506980: using guessed type int __stdcall std::istream::ignore(_DWORD); // 4AEC90: using guessed type char var_1D[29]; //----- (004AEE30) -------------------------------------------------------- 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; } // 4AEE5E: variable 'MaxCount' is possibly undefined // 4AEF9B: variable 'Val' is possibly undefined // 506244: using guessed type int __stdcall std::istream::ignore(_DWORD, _DWORD); // 4AEE30: using guessed type char var_1D[29]; //----- (004AF0D0) -------------------------------------------------------- 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; } // 4AF0EC: variable 'v5' is possibly undefined // 4AF0D0: using guessed type char var_D[13]; //----- (004AF1C0) -------------------------------------------------------- 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; } //----- (004AF380) -------------------------------------------------------- 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; } //----- (004AF540) -------------------------------------------------------- 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); } // 4AF573: variable 'v10' is possibly undefined //----- (004AF5C0) -------------------------------------------------------- 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; } // 4AF941: control flows out of bounds to 5061B8 // 4AF5E7: variable 'MaxCount' is possibly undefined // 5061B4: using guessed type int __stdcall std::istream::getline(_DWORD, _DWORD, _DWORD); // 4AF5C0: using guessed type char var_1D[29]; //----- (004AF950) -------------------------------------------------------- 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; } // 4AF988: variable 'v9' is possibly undefined // 4AF950: using guessed type char var_9[9]; //----- (004AFA80) -------------------------------------------------------- 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; } // 4AFA9E: variable 'v8' is possibly undefined // 4AFA80: using guessed type char var_9[5]; //----- (004AFB90) -------------------------------------------------------- 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_538480; *((_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_538494; 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; } // 4AFC00: variable 'v9' is possibly undefined // 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); // 538494: using guessed type void (__cdecl *off_538494[2])(std::istream *__hidden this); //----- (004AFC70) -------------------------------------------------------- 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_538480; this[2] = off_538494; this[1] = 0; return std::ios::init(v2, a2); } // 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); // 538494: using guessed type void (__cdecl *off_538494[2])(std::istream *__hidden this); //----- (004AFD00) -------------------------------------------------------- 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_538480; *(_DWORD *)(a1 + 8) = off_538494; *(_DWORD *)(a1 + 4) = 0; return std::ios::init(v1, 0); } // 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); // 538494: using guessed type void (__cdecl *off_538494[2])(std::istream *__hidden this); //----- (004AFD90) -------------------------------------------------------- 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; } // 4AFDC0: variable 'v10' is possibly undefined //----- (004AFE10) -------------------------------------------------------- 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); } //----- (004AFE50) -------------------------------------------------------- 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); } //----- (004AFE80) -------------------------------------------------------- void __fastcall std::istream::~istream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 2; *(v2 - 2) = &off_538480; *(v2 - 1) = 0; *v2 = &off_539474; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); // 539474: using guessed type int (*off_539474)(); //----- (004AFEB0) -------------------------------------------------------- void __fastcall std::istream::~istream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_538480; v1 = a1 + 2; *(v1 - 1) = 0; *v1 = &off_539474; std::ios_base::~ios_base((int)v1); } // 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); // 539474: using guessed type int (*off_539474)(); //----- (004AFED0) -------------------------------------------------------- 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; } //----- (004AFEF0) -------------------------------------------------------- _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; } // 4AFF11: variable 'v10' is possibly undefined //----- (004AFF80) -------------------------------------------------------- int __thiscall std::istream::operator>>(void *this, int (__cdecl *a2)(void *)) { return a2(this); } //----- (004AFF90) -------------------------------------------------------- char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004AFFB0) -------------------------------------------------------- char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004AFFD0) -------------------------------------------------------- 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; } // 4AFFEA: variable 'v6' is possibly undefined // 4AFFD0: using guessed type char var_D[13]; //----- (004B0150) -------------------------------------------------------- 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; } // 4B0169: variable 'v7' is possibly undefined // 4B0150: using guessed type int var_1C[7]; //----- (004B02B0) -------------------------------------------------------- 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; } // 4B037B: conditional instruction was optimized away because eax.4>=4u // 4B02C9: variable 'v8' is possibly undefined // 4B02B0: using guessed type int var_1C[7]; //----- (004B0450) -------------------------------------------------------- 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; } // 4B0463: variable 'v9' is possibly undefined // 4B0450: using guessed type char var_10[4]; //----- (004B0580) -------------------------------------------------------- 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; } // 4B0598: variable 'v9' is possibly undefined //----- (004B05F0) -------------------------------------------------------- _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; } //----- (004B06A0) -------------------------------------------------------- _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; } //----- (004B07C0) -------------------------------------------------------- _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; } //----- (004B08B0) -------------------------------------------------------- _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; } //----- (004B09A0) -------------------------------------------------------- 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; } // 4B09B0: variable 'v8' is possibly undefined // 4B09A0: using guessed type char var_10[4]; //----- (004B0AD0) -------------------------------------------------------- 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; } //----- (004B0B30) -------------------------------------------------------- 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; } //----- (004B0B90) -------------------------------------------------------- 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); } } } } } //----- (004B0C00) -------------------------------------------------------- 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); } } } } } //----- (004B0C70) -------------------------------------------------------- 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; } //----- (004B0CC0) -------------------------------------------------------- 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; } // 4B0CD1: variable 'v13' is possibly undefined // 4B0D3D: variable 'v5' is possibly undefined // 4B0CC0: using guessed type char var_20[4]; //----- (004B0EB0) -------------------------------------------------------- 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; } // 4B0EC7: variable 'v13' is possibly undefined // 4B0F3A: variable 'v5' is possibly undefined // 4B0EB0: using guessed type char var_20[4]; //----- (004B10B0) -------------------------------------------------------- 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; } // 4B10C7: variable 'v13' is possibly undefined // 4B1133: variable 'v5' is possibly undefined // 4B10B0: using guessed type char var_20[4]; //----- (004B12B0) -------------------------------------------------------- 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; } // 4B12C1: variable 'v13' is possibly undefined // 4B132D: variable 'v5' is possibly undefined // 4B12B0: using guessed type char var_20[4]; //----- (004B14A0) -------------------------------------------------------- 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; } // 4B14B1: variable 'v13' is possibly undefined // 4B151D: variable 'v5' is possibly undefined // 4B14A0: using guessed type char var_20[4]; //----- (004B1690) -------------------------------------------------------- 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; } // 4B16A1: variable 'v13' is possibly undefined // 4B170D: variable 'v5' is possibly undefined // 4B1690: using guessed type char var_20[4]; //----- (004B1880) -------------------------------------------------------- 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; } // 4B189D: variable 'v14' is possibly undefined // 4B191A: variable 'v6' is possibly undefined // 4B1880: using guessed type char var_20[4]; //----- (004B1A90) -------------------------------------------------------- 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; } // 4B1AAD: variable 'v14' is possibly undefined // 4B1B2A: variable 'v6' is possibly undefined // 4B1A90: using guessed type char var_20[4]; //----- (004B1CA0) -------------------------------------------------------- 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_5384A8; this[32] = 0; this[33] = 0; this[34] = 0; this[1] = off_5384BC; 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; } // 4B1D01: variable 'v8' is possibly undefined // 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); // 5384BC: using guessed type void (__cdecl *off_5384BC[2])(std::ostream *__hidden this); //----- (004B1D60) -------------------------------------------------------- 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_5384A8; this[1] = off_5384BC; return std::ios::init(v2, a2); } // 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); // 5384BC: using guessed type void (__cdecl *off_5384BC[2])(std::ostream *__hidden this); //----- (004B1DF0) -------------------------------------------------------- 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_5384A8; *(_DWORD *)(a1 + 4) = off_5384BC; return result; } // 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); // 5384BC: using guessed type void (__cdecl *off_5384BC[2])(std::ostream *__hidden this); //----- (004B1E50) -------------------------------------------------------- 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_5384A8; *(_DWORD *)(a1 + 4) = off_5384BC; return std::ios::init(v1, 0); } // 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); // 5384BC: using guessed type void (__cdecl *off_5384BC[2])(std::ostream *__hidden this); //----- (004B1EE0) -------------------------------------------------------- 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; } // 4B1F03: variable 'v10' is possibly undefined //----- (004B1F50) -------------------------------------------------------- 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); } //----- (004B1F80) -------------------------------------------------------- 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; } //----- (004B1FA0) -------------------------------------------------------- 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); } //----- (004B1FC0) -------------------------------------------------------- void __fastcall std::ostream::~ostream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 1; *(v2 - 1) = &off_5384A8; *v2 = &off_539474; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); // 539474: using guessed type int (*off_539474)(); //----- (004B1FF0) -------------------------------------------------------- void __fastcall std::ostream::~ostream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_5384A8; v1 = a1 + 1; *v1 = &off_539474; std::ios_base::~ios_base((int)v1); } // 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); // 539474: using guessed type int (*off_539474)(); //----- (004B2010) -------------------------------------------------------- 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); } //----- (004B2030) -------------------------------------------------------- _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; } // 4B204D: variable 'v9' is possibly undefined //----- (004B20B0) -------------------------------------------------------- int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)) { return a2(this); } //----- (004B20C0) -------------------------------------------------------- char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004B20E0) -------------------------------------------------------- char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004B2110) -------------------------------------------------------- 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; } // 4B2123: variable 'v8' is possibly undefined // 4B2110: using guessed type char var_10[4]; //----- (004B2260) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int8 a2) { return std::ostream::_M_insert(this, a2); } //----- (004B2290) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, float a2) { return std::ostream::_M_insert(this, a2); } //----- (004B22F0) -------------------------------------------------------- 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); } //----- (004B2330) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2) { return std::ostream::_M_insert(this, a2); } //----- (004B2360) -------------------------------------------------------- char *__cdecl std::string::_S_compare(std::string *this, unsigned int a2) { return (char *)this - a2; } //----- (004B2370) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004B2380) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004B2390) -------------------------------------------------------- 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_51641C ) { 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; } // 4B23CF: variable 'v3' is possibly undefined //----- (004B23F0) -------------------------------------------------------- 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_51641C; } //----- (004B2420) -------------------------------------------------------- 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; } //----- (004B24A0) -------------------------------------------------------- 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_51641C; 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; } //----- (004B2520) -------------------------------------------------------- _DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2) { if ( a1 == (_BYTE *)a2 ) return &unk_51641C; if ( !a1 ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); return std::string::_S_construct(a1, a2); } //----- (004B2560) -------------------------------------------------------- _DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2) { if ( a1 == (_BYTE *)a2 ) return &unk_51641C; if ( !a1 ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); return std::string::_S_construct(a1, a2); } //----- (004B25A0) -------------------------------------------------------- _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; } //----- (004B2620) -------------------------------------------------------- unsigned int *std::string::_S_empty_rep() { return &std::string::_Rep::_S_empty_rep_storage; } //----- (004B2630) -------------------------------------------------------- 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; } //----- (004B2670) -------------------------------------------------------- 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; } //----- (004B26B0) -------------------------------------------------------- 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; } //----- (004B26F0) -------------------------------------------------------- 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; } //----- (004B2730) -------------------------------------------------------- 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; } // 4B2730: could not find valid save-restore pair for ebp // 4B274D: variable 'v2' is possibly undefined //----- (004B2770) -------------------------------------------------------- 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; } // 4B27A5: variable 'v9' is possibly undefined //----- (004B2800) -------------------------------------------------------- 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; } // 4B281F: variable 'v9' is possibly undefined //----- (004B2870) -------------------------------------------------------- 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_51641C; } //----- (004B28A0) -------------------------------------------------------- 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; } //----- (004B28E0) -------------------------------------------------------- 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); } //----- (004B2910) -------------------------------------------------------- void __thiscall std::string::_Rep::_M_destroy(void *this, int a2) { operator delete(this); } //----- (004B2930) -------------------------------------------------------- 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); } } // 78A9D4: using guessed type int _CRT_MT; //----- (004B2980) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004B29C0) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004B2A00) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004B2A40) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004B2A70) -------------------------------------------------------- int __fastcall std::string::_Rep::_M_refdata(int a1) { return a1 + 12; } //----- (004B2A80) -------------------------------------------------------- unsigned int *std::string::_Rep::_S_empty_rep() { return &std::string::_Rep::_S_empty_rep_storage; } //----- (004B2A90) -------------------------------------------------------- void __fastcall std::string::_Rep::_M_set_leaked(int a1) { *(_DWORD *)(a1 + 8) = -1; } //----- (004B2AA0) -------------------------------------------------------- void __fastcall std::string::_Rep::_M_set_sharable(int a1) { *(_DWORD *)(a1 + 8) = 0; } //----- (004B2AB0) -------------------------------------------------------- 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; } //----- (004B2AE0) -------------------------------------------------------- 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); } // 78A9D4: using guessed type int _CRT_MT; //----- (004B2B30) -------------------------------------------------------- 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; } //----- (004B2BC0) -------------------------------------------------------- _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; } // 4B2C11: variable 'v5' is possibly undefined //----- (004B2C40) -------------------------------------------------------- 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; } //----- (004B2C70) -------------------------------------------------------- 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; } //----- (004B2CA0) -------------------------------------------------------- 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; } //----- (004B2CD0) -------------------------------------------------------- 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; } //----- (004B2D00) -------------------------------------------------------- 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_51641C ) { *(v1 - 1) = 0; *(v1 - 3) = 0; *(_BYTE *)v1 = 0; } } else if ( v1 == (_DWORD *)&unk_51641C ) { *a1 = &unk_51641C; } 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_51641C; } } // 78A9D4: using guessed type int _CRT_MT; //----- (004B2DA0) -------------------------------------------------------- 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; } // 4B2DC2: variable 'v6' is possibly undefined //----- (004B2DE0) -------------------------------------------------------- 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; } // 4B2E15: variable 'v7' is possibly undefined //----- (004B2E30) -------------------------------------------------------- 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; } // 4B2E63: variable 'v8' is possibly undefined //----- (004B2EA0) -------------------------------------------------------- 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; } //----- (004B2ED0) -------------------------------------------------------- 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); } // 4B2EEC: variable 'v6' is possibly undefined //----- (004B2F00) -------------------------------------------------------- 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_51641C ) { *(v10 - 1) = 0; *(v10 - 3) = (unsigned int)v8; *((_BYTE *)v8 + (_DWORD)v10) = 0; } return a1; } // 4B2F42: variable 'Src' is possibly undefined //----- (004B2FE0) -------------------------------------------------------- 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_51641C ) { *(v8 - 1) = 0; *(v8 - 3) = v5; *((_BYTE *)v8 + v5) = 0; } return a1; } // 4B3008: variable 'Src' is possibly undefined //----- (004B3080) -------------------------------------------------------- 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_51641C ) { *(v12 - 1) = 0; *(v12 - 3) = v9; *((_BYTE *)v12 + v9) = 0; } return a1; } // 4B30C8: variable 'Src' is possibly undefined //----- (004B3160) -------------------------------------------------------- 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; } //----- (004B3190) -------------------------------------------------------- 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_51641C ) { *(result - 1) = 0; *(result - 3) = (unsigned int)v6; *((_BYTE *)v6 + (_DWORD)result) = 0; } return result; } // 4B31C1: variable 'Val' is possibly undefined //----- (004B3240) -------------------------------------------------------- #error "4B324A: call analysis failed (funcsize=8)" //----- (004B3260) -------------------------------------------------------- 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); } // 4B327C: variable 'v6' is possibly undefined //----- (004B3290) -------------------------------------------------------- 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_51641C ) { *((_DWORD *)v7 - 1) = 0; *((_DWORD *)v7 - 3) = Size; *((_BYTE *)v7 + Size) = 0; } return result; } // 4B32C6: variable 'v9' is possibly undefined //----- (004B3390) -------------------------------------------------------- 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_51641C || (_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; } // 78A9D4: using guessed type int _CRT_MT; // 4B3390: using guessed type char var_D[13]; //----- (004B3450) -------------------------------------------------------- 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); } // 4B347E: variable 'v7' is possibly undefined //----- (004B34C0) -------------------------------------------------------- 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); } // 4B34E4: variable 'v5' is possibly undefined //----- (004B3500) -------------------------------------------------------- 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); } //----- (004B3510) -------------------------------------------------------- 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; } // 4B353B: variable 'v7' is possibly undefined //----- (004B3560) -------------------------------------------------------- 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); } // 4B3585: variable 'v5' is possibly undefined //----- (004B35A0) -------------------------------------------------------- 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); } // 4B35C4: variable 'v7' is possibly undefined //----- (004B35E0) -------------------------------------------------------- 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; } } // 4B3626: variable 'v17' is possibly undefined // 4B3662: variable 'v16' is possibly undefined //----- (004B3790) -------------------------------------------------------- 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); } // 4B37AB: variable 'v5' is possibly undefined //----- (004B37C0) -------------------------------------------------------- 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); } // 4B37F6: variable 'v8' is possibly undefined //----- (004B3830) -------------------------------------------------------- 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); } // 4B385D: variable 'v6' is possibly undefined //----- (004B3890) -------------------------------------------------------- _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; } //----- (004B38C0) -------------------------------------------------------- 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); } // 4B38D2: variable 'v3' is possibly undefined //----- (004B38E0) -------------------------------------------------------- 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); } } // 4B3931: variable 'v5' is possibly undefined //----- (004B3950) -------------------------------------------------------- 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; } //----- (004B3980) -------------------------------------------------------- std::string *__userpurge std::string::_M_data@(_DWORD *a1@, std::string *this, char *a3) { std::string *result; // eax result = this; *a1 = this; return result; } //----- (004B3990) -------------------------------------------------------- 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; } //----- (004B39B0) -------------------------------------------------------- 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; } //----- (004B39E0) -------------------------------------------------------- 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); } //----- (004B3A00) -------------------------------------------------------- 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); } // 4B3A31: variable 'v7' is possibly undefined //----- (004B3A50) -------------------------------------------------------- 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); } //----- (004B3A70) -------------------------------------------------------- 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); } //----- (004B3A90) -------------------------------------------------------- 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); } // 4B3AB8: variable 'v5' is possibly undefined //----- (004B3AD0) -------------------------------------------------------- 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); } //----- (004B3AF0) -------------------------------------------------------- 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); } //----- (004B3B10) -------------------------------------------------------- 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); } //----- (004B3B30) -------------------------------------------------------- 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); } //----- (004B3B50) -------------------------------------------------------- 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); } // 4B3B7C: variable 'v8' is possibly undefined //----- (004B3B90) -------------------------------------------------------- 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_51641C ) { 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; } // 4B3BE7: variable 'v17' is possibly undefined // 4B3C4C: variable 'v16' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004B3D80) -------------------------------------------------------- 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); } // 4B3DA3: variable 'v6' is possibly undefined //----- (004B3DC0) -------------------------------------------------------- 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); } // 4B3DFE: variable 'v9' is possibly undefined //----- (004B3E30) -------------------------------------------------------- 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); } //----- (004B3EA0) -------------------------------------------------------- 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_51641C ) { 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; } // 78A9D4: using guessed type int _CRT_MT; // 4B3EA0: using guessed type char var_D[13]; //----- (004B3F50) -------------------------------------------------------- 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); } // 4B3F72: variable 'v2' is possibly undefined //----- (004B3FB0) -------------------------------------------------------- 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; } //----- (004B3FF0) -------------------------------------------------------- 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_51641C ) 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_51641C ) { 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004B41E0) -------------------------------------------------------- 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_51641C ) { *(result - 1) = 0; *(result - 3) = v4 + 1; *((_BYTE *)result + v4 + 1) = 0; } return result; } // 4B4206: variable 'v6' is possibly undefined //----- (004B4250) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_51641C; return result; } //----- (004B4270) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_51641C; return result; } //----- (004B4290) -------------------------------------------------------- _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; } //----- (004B42E0) -------------------------------------------------------- _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; } //----- (004B4320) -------------------------------------------------------- void __thiscall std::string::string(_DWORD *this, int a2) { *this = &unk_51641C; } //----- (004B4330) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; // 4B4330: using guessed type char var_D[13]; //----- (004B43B0) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004B4430) -------------------------------------------------------- _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; } //----- (004B4490) -------------------------------------------------------- _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; } //----- (004B4500) -------------------------------------------------------- _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; } //----- (004B4570) -------------------------------------------------------- _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; } //----- (004B45B0) -------------------------------------------------------- unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4) { unsigned int *result; // eax result = (unsigned int *)&unk_51641C; if ( a2 ) { result = std::string::_S_construct(a2, a3); *this = result; } else { *this = (unsigned int *)&unk_51641C; } return result; } //----- (004B45F0) -------------------------------------------------------- void __fastcall std::string::string(_DWORD *a1) { *a1 = &unk_51641C; } //----- (004B4600) -------------------------------------------------------- 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; } //----- (004B4630) -------------------------------------------------------- _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; } //----- (004B4660) -------------------------------------------------------- _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; } //----- (004B4690) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_51641C; return result; } //----- (004B46B0) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_51641C; return result; } //----- (004B46D0) -------------------------------------------------------- _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; } //----- (004B4720) -------------------------------------------------------- _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; } //----- (004B4760) -------------------------------------------------------- void __thiscall std::string::string(_DWORD *this, int a2) { *this = &unk_51641C; } //----- (004B4770) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; // 4B4770: using guessed type char var_D[13]; //----- (004B47F0) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004B4870) -------------------------------------------------------- _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; } //----- (004B48D0) -------------------------------------------------------- _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; } //----- (004B4940) -------------------------------------------------------- _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; } //----- (004B49B0) -------------------------------------------------------- _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; } //----- (004B49F0) -------------------------------------------------------- unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4) { unsigned int *result; // eax result = (unsigned int *)&unk_51641C; if ( a2 ) { result = std::string::_S_construct(a2, a3); *this = result; } else { *this = (unsigned int *)&unk_51641C; } return result; } //----- (004B4A30) -------------------------------------------------------- void __fastcall std::string::string(_DWORD *a1) { *a1 = &unk_51641C; } //----- (004B4A40) -------------------------------------------------------- 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; } //----- (004B4A70) -------------------------------------------------------- _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; } //----- (004B4AA0) -------------------------------------------------------- _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; } //----- (004B4AD0) -------------------------------------------------------- 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_51641C ) { 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)); } } // 78A9D4: using guessed type int _CRT_MT; //----- (004B4B30) -------------------------------------------------------- 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_51641C ) { 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)); } } // 78A9D4: using guessed type int _CRT_MT; //----- (004B4B90) -------------------------------------------------------- #error "4B4B9A: call analysis failed (funcsize=8)" //----- (004B4BB0) -------------------------------------------------------- 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); } // 4B4BCC: variable 'v5' is possibly undefined //----- (004B4BF0) -------------------------------------------------------- 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; } // 4B4C05: variable 'v5' is possibly undefined //----- (004B4C20) -------------------------------------------------------- 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; } // 4B4C47: variable 'v4' is possibly undefined //----- (004B4C60) -------------------------------------------------------- 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; } //----- (004B4C90) -------------------------------------------------------- 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); } // 4B4CAC: variable 'v5' is possibly undefined //----- (004B4CE0) -------------------------------------------------------- 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_51641C ) { *(v4 - 1) = 0; *(v4 - 3) = v3 + 1; *((_BYTE *)v4 + v3 + 1) = 0; } return this; } // 4B4D06: variable 'v6' is possibly undefined //----- (004B4D50) -------------------------------------------------------- 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; } //----- (004B4DF0) -------------------------------------------------------- void __fastcall std::bad_typeid::~bad_typeid(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5384CC; std::exception::~exception(v2); operator delete(a1, 4u); } // 4B4DFC: variable 'v2' is possibly undefined // 5384CC: using guessed type void (__cdecl *off_5384CC)(std::bad_typeid *__hidden this); //----- (004B4E20) -------------------------------------------------------- void __cdecl std::bad_typeid::~bad_typeid(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_5384CC; std::exception::~exception(a1); } // 4B4E20: variable 'v1' is possibly undefined // 5384CC: using guessed type void (__cdecl *off_5384CC)(std::bad_typeid *__hidden this); //----- (004B4E30) -------------------------------------------------------- int __cdecl std::money_base::_S_construct_pattern() { return std::money_base::_S_default_pattern; } // 533540: using guessed type int std::money_base::_S_default_pattern; //----- (004B4E40) -------------------------------------------------------- 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_538D0C; 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_52F140; v6[3] = 0; v6[5] = &unk_52F140; v6[6] = 0; v6[7] = &unk_52F140; v6[8] = 0; v6[9] = &unk_52F140; 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; } // 4B4EE7: variable 'v8' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 533540: using guessed type int std::money_base::_S_default_pattern; // 538D0C: using guessed type int (*off_538D0C)(); //----- (004B4F60) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_5384E0; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 5384E0: using guessed type int (*off_5384E0)(); //----- (004B4FC0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_5384E0; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 5384E0: using guessed type int (*off_5384E0)(); //----- (004B5020) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_5384E0; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 5384E0: using guessed type int (*off_5384E0)(); //----- (004B5080) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_5384E0; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 5384E0: using guessed type int (*off_5384E0)(); //----- (004B50E0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_5384E0; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 5384E0: using guessed type int (*off_5384E0)(); //----- (004B5140) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_5384E0; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 5384E0: using guessed type int (*off_5384E0)(); //----- (004B51A0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4B51A7: variable 'v2' is possibly undefined //----- (004B51D0) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_5384E0; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4B51D7: variable 'v1' is possibly undefined // 5384E0: using guessed type int (*off_5384E0)(); //----- (004B5200) -------------------------------------------------------- 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_538D1C; 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_52F140; v6[3] = 0; v6[5] = &unk_52F140; v6[6] = 0; v6[7] = &unk_52F140; v6[8] = 0; v6[9] = &unk_52F140; 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; } // 4B52A7: variable 'v8' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 533540: using guessed type int std::money_base::_S_default_pattern; // 538D1C: using guessed type int (*off_538D1C)(); //----- (004B5320) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_538514; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 538514: using guessed type int (*off_538514)(); //----- (004B5380) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_538514; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 538514: using guessed type int (*off_538514)(); //----- (004B53E0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_538514; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 538514: using guessed type int (*off_538514)(); //----- (004B5440) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_538514; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 538514: using guessed type int (*off_538514)(); //----- (004B54A0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_538514; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 538514: using guessed type int (*off_538514)(); //----- (004B5500) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_538514; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 538514: using guessed type int (*off_538514)(); //----- (004B5560) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4B5567: variable 'v2' is possibly undefined //----- (004B5590) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_538514; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4B5597: variable 'v1' is possibly undefined // 538514: using guessed type int (*off_538514)(); //----- (004B55C0) -------------------------------------------------------- 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_538D2C; 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_52F140; v5 = std::money_base::_S_atoms; v4[13] = std::money_base::_S_default_pattern; v4[3] = 0; v4[6] = &unk_52F142; v4[7] = 0; v4[8] = &unk_52F142; v4[9] = 0; v4[10] = &unk_52F142; 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; } // 4B565F: variable 'v8' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 533540: using guessed type int std::money_base::_S_default_pattern; // 538D2C: using guessed type int (*off_538D2C)(); //----- (004B56E0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_538548; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 538548: using guessed type int (*off_538548)(); //----- (004B5740) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_538548; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 538548: using guessed type int (*off_538548)(); //----- (004B57A0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_538548; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 538548: using guessed type int (*off_538548)(); //----- (004B5800) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_538548; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 538548: using guessed type int (*off_538548)(); //----- (004B5860) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_538548; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 538548: using guessed type int (*off_538548)(); //----- (004B58C0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_538548; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 538548: using guessed type int (*off_538548)(); //----- (004B5920) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4B5927: variable 'v2' is possibly undefined //----- (004B5950) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_538548; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4B5957: variable 'v1' is possibly undefined // 538548: using guessed type int (*off_538548)(); //----- (004B5980) -------------------------------------------------------- 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_538D3C; 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_52F140; v5 = std::money_base::_S_atoms; v4[13] = std::money_base::_S_default_pattern; v4[3] = 0; v4[6] = &unk_52F142; v4[7] = 0; v4[8] = &unk_52F142; v4[9] = 0; v4[10] = &unk_52F142; 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; } // 4B5A1F: variable 'v8' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 533540: using guessed type int std::money_base::_S_default_pattern; // 538D3C: using guessed type int (*off_538D3C)(); //----- (004B5AA0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_53857C; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 53857C: using guessed type int (*off_53857C)(); //----- (004B5B00) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_53857C; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 53857C: using guessed type int (*off_53857C)(); //----- (004B5B60) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_53857C; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 53857C: using guessed type int (*off_53857C)(); //----- (004B5BC0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_53857C; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 53857C: using guessed type int (*off_53857C)(); //----- (004B5C20) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_53857C; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 53857C: using guessed type int (*off_53857C)(); //----- (004B5C80) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_53857C; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 53857C: using guessed type int (*off_53857C)(); //----- (004B5CE0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4B5CE7: variable 'v2' is possibly undefined //----- (004B5D10) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_53857C; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4B5D17: variable 'v1' is possibly undefined // 53857C: using guessed type int (*off_53857C)(); //----- (004B5D40) -------------------------------------------------------- _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_538C08; 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_530836; result[7] = &off_530836; result[8] = 5441591; result[9] = &unk_53083A; result[10] = &off_530836; result[11] = "Sunday"; result[12] = "Monday"; result[13] = "Tuesday"; result[14] = "Wednesday"; result[15] = "Thursday"; result[16] = "Friday"; result[17] = "Saturday"; result[18] = &off_530876; result[19] = &off_53087A; result[20] = &off_53087E; result[21] = &off_530882; result[22] = &off_530886; result[23] = &off_53088A; result[24] = &off_53088E; result[25] = "January"; result[26] = "February"; result[27] = "March"; result[28] = "April"; result[29] = "May"; result[30] = "June"; result[31] = "July"; result[32] = "August"; result[33] = "September"; result[34] = "October"; result[35] = "November"; result[36] = "December"; result[37] = &off_5308E8; result[38] = &off_5308EC; result[39] = &off_5308F0; result[40] = &off_5308F4; result[41] = "May"; result[42] = &off_5308F8; result[43] = &off_5308FC; result[44] = &off_530900; result[45] = &off_530904; result[46] = &off_530908; result[47] = &off_53090C; result[48] = &off_530910; return result; } // 4B5EE1: variable 'v4' is possibly undefined // 530836: using guessed type void *off_530836; // 530876: using guessed type void *off_530876; // 53087A: using guessed type void *off_53087A; // 53087E: using guessed type void *off_53087E; // 530882: using guessed type void *off_530882; // 530886: using guessed type void *off_530886; // 53088A: using guessed type void *off_53088A; // 53088E: using guessed type void *off_53088E; // 5308E8: using guessed type void *off_5308E8; // 5308EC: using guessed type void *off_5308EC; // 5308F0: using guessed type void *off_5308F0; // 5308F4: using guessed type void *off_5308F4; // 5308F8: using guessed type void *off_5308F8; // 5308FC: using guessed type void *off_5308FC; // 530900: using guessed type void *off_530900; // 530904: using guessed type void *off_530904; // 530908: using guessed type void *off_530908; // 53090C: using guessed type void *off_53090C; // 530910: using guessed type void *off_530910; // 538C08: using guessed type int (*off_538C08)(); //----- (004B6080) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) { *this = &off_5385B0; this[1] = a3 != 0; this[2] = a2; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 5385B0: using guessed type int (*off_5385B0)(); //----- (004B60E0) -------------------------------------------------------- #error "4B6193: call analysis failed (funcsize=61)" //----- (004B61C0) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) { *this = &off_5385B0; this[2] = 0; this[1] = a2 != 0; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 5385B0: using guessed type int (*off_5385B0)(); //----- (004B6220) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) { *this = &off_5385B0; this[1] = a3 != 0; this[2] = a2; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 5385B0: using guessed type int (*off_5385B0)(); //----- (004B6280) -------------------------------------------------------- #error "4B6333: call analysis failed (funcsize=61)" //----- (004B6360) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) { *this = &off_5385B0; this[2] = 0; this[1] = a2 != 0; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 5385B0: using guessed type int (*off_5385B0)(); //----- (004B63C0) -------------------------------------------------------- void __fastcall std::__timepunct::~__timepunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::__timepunct::~__timepunct(v2); operator delete(a1); } // 4B63C6: variable 'v2' is possibly undefined //----- (004B63E0) -------------------------------------------------------- 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_5385B0; 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); } // 4B63E2: variable 'v1' is possibly undefined // 5385B0: using guessed type int (*off_5385B0)(); //----- (004B6430) -------------------------------------------------------- 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_5385B0; 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); } // 4B6432: variable 'v1' is possibly undefined // 5385B0: using guessed type int (*off_5385B0)(); //----- (004B6480) -------------------------------------------------------- _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_538C18; 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_530914; result[3] = &off_530914; result[4] = "%"; result[5] = "%"; result[6] = &unk_530938; result[7] = &unk_530938; result[8] = &off_53093A; result[9] = &off_530940; result[10] = &unk_530938; result[11] = &off_530946; result[12] = &off_530954; result[13] = &off_530962; result[14] = &off_530972; result[15] = &off_530986; result[16] = &off_530998; result[17] = &off_5309A6; result[18] = &off_5309B8; result[19] = &off_5309C0; result[20] = &off_5309C8; result[21] = &off_5309D0; result[22] = &off_5309D8; result[23] = &off_5309E0; result[24] = &off_5309E8; result[25] = &off_5309F0; result[26] = &off_530A00; result[27] = &off_530A12; result[28] = &off_530A1E; result[29] = &off_530A2A; result[30] = &off_530A32; result[31] = &off_530A3C; result[32] = &off_530A46; result[33] = &off_530A54; result[34] = &off_530A68; result[35] = &off_530A78; result[36] = &off_530A8A; result[37] = &off_530A9C; result[38] = &off_530AA4; result[39] = &off_530AAC; result[40] = &off_530AB4; result[41] = &off_530A2A; result[42] = &off_530ABC; result[43] = &off_530AC4; result[44] = &off_530ACC; result[45] = &off_530AD4; result[46] = &off_530ADC; result[47] = &off_530AE4; result[48] = &off_530AEC; return result; } // 4B6621: variable 'v4' is possibly undefined // 530914: using guessed type void *off_530914; // 53093A: using guessed type void *off_53093A; // 530940: using guessed type int (*off_530940)(); // 530946: using guessed type void *off_530946; // 530954: using guessed type void *off_530954; // 530962: using guessed type void *off_530962; // 530972: using guessed type void *off_530972; // 530986: using guessed type void *off_530986; // 530998: using guessed type void *off_530998; // 5309A6: using guessed type void *off_5309A6; // 5309B8: using guessed type void *off_5309B8; // 5309C0: using guessed type void *off_5309C0; // 5309C8: using guessed type void *off_5309C8; // 5309D0: using guessed type void *off_5309D0; // 5309D8: using guessed type void *off_5309D8; // 5309E0: using guessed type void *off_5309E0; // 5309E8: using guessed type void *off_5309E8; // 5309F0: using guessed type void *off_5309F0; // 530A00: using guessed type void *off_530A00; // 530A12: using guessed type void *off_530A12; // 530A1E: using guessed type void *off_530A1E; // 530A2A: using guessed type void *off_530A2A; // 530A32: using guessed type void *off_530A32; // 530A3C: using guessed type void *off_530A3C; // 530A46: using guessed type void *off_530A46; // 530A54: using guessed type void *off_530A54; // 530A68: using guessed type void *off_530A68; // 530A78: using guessed type void *off_530A78; // 530A8A: using guessed type void *off_530A8A; // 530A9C: using guessed type void *off_530A9C; // 530AA4: using guessed type void *off_530AA4; // 530AAC: using guessed type void *off_530AAC; // 530AB4: using guessed type void *off_530AB4; // 530ABC: using guessed type void *off_530ABC; // 530AC4: using guessed type void *off_530AC4; // 530ACC: using guessed type void *off_530ACC; // 530AD4: using guessed type void *off_530AD4; // 530ADC: using guessed type void *off_530ADC; // 530AE4: using guessed type void *off_530AE4; // 530AEC: using guessed type void *off_530AEC; // 538C18: using guessed type int (*off_538C18)(); //----- (004B67C0) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) { *this = &off_5385C0; this[1] = a3 != 0; this[2] = a2; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 5385C0: using guessed type int (*off_5385C0)(); //----- (004B6820) -------------------------------------------------------- #error "4B68D3: call analysis failed (funcsize=61)" //----- (004B6900) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) { *this = &off_5385C0; this[2] = 0; this[1] = a2 != 0; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 5385C0: using guessed type int (*off_5385C0)(); //----- (004B6960) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) { *this = &off_5385C0; this[1] = a3 != 0; this[2] = a2; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 5385C0: using guessed type int (*off_5385C0)(); //----- (004B69C0) -------------------------------------------------------- #error "4B6A73: call analysis failed (funcsize=61)" //----- (004B6AA0) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) { *this = &off_5385C0; this[2] = 0; this[1] = a2 != 0; this[4] = std::locale::facet::_S_get_c_name(); return std::__timepunct::_M_initialize_timepunct(this, 0); } // 5385C0: using guessed type int (*off_5385C0)(); //----- (004B6B00) -------------------------------------------------------- void __fastcall std::__timepunct::~__timepunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::__timepunct::~__timepunct(v2); operator delete(a1); } // 4B6B06: variable 'v2' is possibly undefined //----- (004B6B20) -------------------------------------------------------- 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_5385C0; 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); } // 4B6B22: variable 'v1' is possibly undefined // 5385C0: using guessed type int (*off_5385C0)(); //----- (004B6B70) -------------------------------------------------------- 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_5385C0; 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); } // 4B6B72: variable 'v1' is possibly undefined // 5385C0: using guessed type int (*off_5385C0)(); //----- (004B6BC0) -------------------------------------------------------- int __thiscall std::logic_error::logic_error(_DWORD *this, int a2) { int result; // eax result = a2; *this = &off_5385D0; this[1] = *(_DWORD *)(a2 + 4); *(_DWORD *)(a2 + 4) = &unk_51641C; return result; } // 5385D0: using guessed type void (__cdecl *off_5385D0)(std::logic_error *__hidden this); //----- (004B6BE0) -------------------------------------------------------- _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_5385D0; return std::string::string(v3, (char *)this, (int)&v5); } // 5385D0: using guessed type void (__cdecl *off_5385D0)(std::logic_error *__hidden this); //----- (004B6C20) -------------------------------------------------------- _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_5385D0; return std::__cow_string::__cow_string(v2, *(std::__cow_string **)a2, *(const char **)(a2 + 4), v4); } // 4B6C43: variable 'v4' is possibly undefined // 5385D0: using guessed type void (__cdecl *off_5385D0)(std::logic_error *__hidden this); //----- (004B6C60) -------------------------------------------------------- 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_5385D0; return std::string::string((unsigned int **)(a1 + 4), this + 1, v4); } // 4B6C76: variable 'v4' is possibly undefined // 5385D0: using guessed type void (__cdecl *off_5385D0)(std::logic_error *__hidden this); //----- (004B6C90) -------------------------------------------------------- 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_5385D0; return std::string::string(v3, this, v5); } // 4B6CAA: variable 'v5' is possibly undefined // 5385D0: using guessed type void (__cdecl *off_5385D0)(std::logic_error *__hidden this); //----- (004B6CD0) -------------------------------------------------------- void __fastcall std::logic_error::~logic_error(_DWORD *a1) { std::logic_error::~logic_error(a1); operator delete(a1); } //----- (004B6CF0) -------------------------------------------------------- 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_5385D0; if ( v1 != (volatile signed __int32 *)&unk_51641C ) { 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); } // 4B6D09: variable 'v3' is possibly undefined // 5385D0: using guessed type void (__cdecl *off_5385D0)(std::logic_error *__hidden this); // 78A9D4: using guessed type int _CRT_MT; // 4B6CF0: using guessed type int var_D[3]; //----- (004B6D60) -------------------------------------------------------- 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; } // 4B6D73: variable 'v4' is possibly undefined //----- (004B6D90) -------------------------------------------------------- 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; } // 4B6DA3: variable 'v4' is possibly undefined //----- (004B6DC0) -------------------------------------------------------- _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_5385E4; return result; } // 4B6DCD: variable 'v5' is possibly undefined // 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); //----- (004B6DF0) -------------------------------------------------------- _DWORD *__thiscall std::range_error::range_error(_DWORD *this, int a2) { _DWORD *result; // eax result = std::runtime_error::runtime_error(this, a2); *this = &off_5385E4; return result; } // 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); //----- (004B6E20) -------------------------------------------------------- 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_5385E4; return result; } // 4B6E2D: variable 'v5' is possibly undefined // 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); //----- (004B6E50) -------------------------------------------------------- void __fastcall std::range_error::~range_error(_DWORD *a1) { *a1 = &off_5385E4; std::runtime_error::~runtime_error(a1); operator delete(a1); } // 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); //----- (004B6E70) -------------------------------------------------------- void __fastcall std::range_error::~range_error(_DWORD *a1) { *a1 = &off_5385E4; std::runtime_error::~runtime_error(a1); } // 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); //----- (004B6E80) -------------------------------------------------------- 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; } //----- (004B6EA0) -------------------------------------------------------- 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; } //----- (004B6EC0) -------------------------------------------------------- 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; } //----- (004B6EE0) -------------------------------------------------------- void __cdecl std::_Destroy_aux::__destroy(void **a1, char **a2) { char *v3; // edi char *i; // esi volatile signed __int32 **v5; // ecx while ( a1 != (void **)a2 ) { v3 = (char *)a1[1]; for ( i = (char *)*a1; v3 != i; i += 8 ) { v5 = (volatile signed __int32 **)(i + 4); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v5); } if ( *a1 ) operator delete(*a1); a1 += 3; } } //----- (004B6F24) -------------------------------------------------------- int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3) { void **v4; // ecx while ( a2 != a3 ) { v4 = a2; a2 += 16; night::ns_sourcemap::~ns_sourcemap(v4); } return a1; } //----- (004B6F44) -------------------------------------------------------- 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; } //----- (004B6F70) -------------------------------------------------------- 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; } } } //----- (004B7020) -------------------------------------------------------- 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; } // 533554: using guessed type _WORD std::`anonymous namespace'::utf16le_bom[2]; // 53355C: using guessed type _WORD std::`anonymous namespace'::utf16_bom[2]; //----- (004B7070) -------------------------------------------------------- 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; } //----- (004B70A0) -------------------------------------------------------- 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; } //----- (004B7100) -------------------------------------------------------- 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; } //----- (004B72C0) -------------------------------------------------------- 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; } //----- (004B7480) -------------------------------------------------------- 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; } //----- (004B7530) -------------------------------------------------------- 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; } //----- (004B7640) -------------------------------------------------------- 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; } //----- (004B7730) -------------------------------------------------------- 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; } //----- (004B7780) -------------------------------------------------------- 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; } //----- (004B7810) -------------------------------------------------------- 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; } //----- (004B7890) -------------------------------------------------------- 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; } //----- (004B78C0) -------------------------------------------------------- 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; } // 533558: using guessed type __int16 std::`anonymous namespace'::utf8_bom; //----- (004B7900) -------------------------------------------------------- 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; } // 533558: using guessed type __int16 std::`anonymous namespace'::utf8_bom; //----- (004B7940) -------------------------------------------------------- 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; } //----- (004B79D0) -------------------------------------------------------- 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; } //----- (004B7AC0) -------------------------------------------------------- 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; } //----- (004B7B20) -------------------------------------------------------- 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 ); } } //----- (004B7B90) -------------------------------------------------------- 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); } } //----- (004B7BE0) -------------------------------------------------------- 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; } //----- (004B7C90) -------------------------------------------------------- char *__thiscall std::_Vector_base::_M_create_storage(_DWORD *this, unsigned int a2) { char *v2; // eax char *result; // eax v2 = 0; if ( a2 ) v2 = (char *)__gnu_cxx::new_allocator::allocate(a2); *this = v2; this[1] = v2; result = &v2[24 * a2]; this[2] = result; return result; } //----- (004B7CC0) -------------------------------------------------------- int __fastcall std::__basic_file::fd(int a1) { return *(_DWORD *)(*(_DWORD *)a1 + 16); } //----- (004B7CD0) -------------------------------------------------------- int __fastcall std::__basic_file::file(int a1) { return *(_DWORD *)a1; } //----- (004B7CE0) -------------------------------------------------------- _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; } //----- (004B7D40) -------------------------------------------------------- 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; } //----- (004B7E90) -------------------------------------------------------- int __fastcall std::__basic_file::sync(FILE **a1) { return fflush(*a1); } //----- (004B7EB0) -------------------------------------------------------- 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; } } //----- (004B7F10) -------------------------------------------------------- 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; } //----- (004B7F60) -------------------------------------------------------- unsigned int __thiscall std::__basic_file::xsputn(void *this, char *a2, unsigned int a3) { return `anonymous namespace'::xwrite(*(_DWORD *)(*(_DWORD *)this + 16), a2, a3); } //----- (004B7F80) -------------------------------------------------------- __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); } //----- (004B7FE0) -------------------------------------------------------- _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; } //----- (004B8060) -------------------------------------------------------- _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; } //----- (004B80E0) -------------------------------------------------------- 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; } //----- (004B8130) -------------------------------------------------------- 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; } //----- (004B81B0) -------------------------------------------------------- void __thiscall std::__basic_file::__basic_file(_BYTE *this, int a2) { *(_DWORD *)this = 0; this[4] = 0; } //----- (004B81D0) -------------------------------------------------------- _DWORD *__thiscall std::__cow_string::__cow_string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = a2; *this = *a2; *a2 = &unk_51641C; return result; } //----- (004B81F0) -------------------------------------------------------- _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); } // 4B81F0: using guessed type char var_D[13]; //----- (004B8220) -------------------------------------------------------- _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); } // 4B8233: variable 'v3' is possibly undefined //----- (004B8250) -------------------------------------------------------- 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); } // 4B825A: variable 'v4' is possibly undefined //----- (004B8280) -------------------------------------------------------- void __fastcall std::__cow_string::__cow_string(_DWORD *a1) { *a1 = &unk_51641C; } //----- (004B8290) -------------------------------------------------------- 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_51641C ) { 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); } } // 78A9D4: using guessed type int _CRT_MT; // 4B8290: using guessed type int var_D[3]; //----- (004B82F0) -------------------------------------------------------- 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; } // 4B82FD: variable 'v4' is possibly undefined //----- (004B8310) -------------------------------------------------------- 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; } // 4B831D: variable 'v4' is possibly undefined //----- (004B8330) -------------------------------------------------------- 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; } //----- (004B8354) -------------------------------------------------------- _DWORD *__thiscall std::__shared_ptr::operator=( _DWORD *this, _DWORD *a2) { _DWORD *v3; // ecx int v4; // eax v3 = this + 1; v4 = a2[1]; *(v3 - 1) = *a2; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v3, v4); return this; } //----- (004B8380) -------------------------------------------------------- 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; } //----- (004B83A4) -------------------------------------------------------- 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; } //----- (004B83D0) -------------------------------------------------------- _DWORD *__thiscall std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::operator=( _DWORD *this, int *a2) { int v3; // ebx int v4; // ecx volatile signed __int32 *v5; // edx volatile signed __int32 *v8; // [esp+1Ch] [ebp-Ch] BYREF v3 = *a2; v4 = a2[1]; *a2 = 0; a2[1] = 0; *this = v3; v5 = (volatile signed __int32 *)this[1]; this[1] = v4; v8 = v5; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v8); return this; } //----- (004B8420) -------------------------------------------------------- _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; } //----- (004B8480) -------------------------------------------------------- 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); } // 4B849E: variable 'v5' is possibly undefined //----- (004B84B0) -------------------------------------------------------- _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); } // 4B84D0: variable 'v3' is possibly undefined //----- (004B84E0) -------------------------------------------------------- _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); } // 4B8500: variable 'v4' is possibly undefined //----- (004B8510) -------------------------------------------------------- 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); } // 4B8523: variable 'v4' is possibly undefined //----- (004B8540) -------------------------------------------------------- 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; } //----- (004B8560) -------------------------------------------------------- void __fastcall std::__sso_string::~__sso_string(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004B8590) -------------------------------------------------------- _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; } //----- (004B8640) -------------------------------------------------------- void *__thiscall std::__sso_string::operator=(void *this, int a2) { std::string::_M_assign((int)this, a2); return this; } //----- (004B8660) -------------------------------------------------------- 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_5385F8; 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; } // 5385F8: using guessed type int (*off_5385F8)(); //----- (004B8700) -------------------------------------------------------- unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) { return std::ctype_byname::ctype_byname(this, *a2, a3); } //----- (004B8710) -------------------------------------------------------- unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) { return std::ctype_byname::ctype_byname(this, *a2, a3); } //----- (004B8720) -------------------------------------------------------- void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5385F8; std::ctype::~ctype(v2); operator delete(a1); } // 4B872C: variable 'v2' is possibly undefined // 5385F8: using guessed type int (*off_5385F8)(); //----- (004B8740) -------------------------------------------------------- void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5385F8; std::ctype::~ctype(a1); } // 4B8740: variable 'v1' is possibly undefined // 5385F8: using guessed type int (*off_5385F8)(); //----- (004B8750) -------------------------------------------------------- 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_538628; 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; } // 538628: using guessed type int (*off_538628)(); //----- (004B87E0) -------------------------------------------------------- char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) { return std::ctype_byname::ctype_byname(this, *a2, a3); } //----- (004B87F0) -------------------------------------------------------- char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) { return std::ctype_byname::ctype_byname(this, *a2, a3); } //----- (004B8800) -------------------------------------------------------- void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5390EC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); *a1 = &unk_538ED4; std::locale::facet::~facet(v2); operator delete(a1); } // 4B881F: variable 'v2' is possibly undefined // 5390EC: using guessed type int (*off_5390EC)(); //----- (004B8840) -------------------------------------------------------- void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx v2 = v1; *v1 = &off_5390EC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); *v2 = &unk_538ED4; std::locale::facet::~facet(a1); } // 4B8844: variable 'v1' is possibly undefined // 5390EC: using guessed type int (*off_5390EC)(); //----- (004B8870) -------------------------------------------------------- _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_538668; return result; } // 4B887D: variable 'v5' is possibly undefined // 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); //----- (004B88A0) -------------------------------------------------------- _DWORD *__thiscall std::domain_error::domain_error(_DWORD *this, int a2) { _DWORD *result; // eax result = std::logic_error::logic_error(this, a2); *this = &off_538668; return result; } // 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); //----- (004B88D0) -------------------------------------------------------- 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_538668; return result; } // 4B88DD: variable 'v5' is possibly undefined // 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); //----- (004B8900) -------------------------------------------------------- void __fastcall std::domain_error::~domain_error(_DWORD *a1) { *a1 = &off_538668; std::logic_error::~logic_error(a1); operator delete(a1); } // 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); //----- (004B8920) -------------------------------------------------------- void __fastcall std::domain_error::~domain_error(_DWORD *a1) { *a1 = &off_538668; std::logic_error::~logic_error(a1); } // 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); //----- (004B8930) -------------------------------------------------------- _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_53867C; return result; } // 4B893D: variable 'v5' is possibly undefined // 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); //----- (004B8960) -------------------------------------------------------- _DWORD *__thiscall std::length_error::length_error(_DWORD *this, int a2) { _DWORD *result; // eax result = std::logic_error::logic_error(this, a2); *this = &off_53867C; return result; } // 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); //----- (004B8990) -------------------------------------------------------- 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_53867C; return result; } // 4B899D: variable 'v5' is possibly undefined // 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); //----- (004B89C0) -------------------------------------------------------- void __fastcall std::length_error::~length_error(_DWORD *a1) { *a1 = &off_53867C; std::logic_error::~logic_error(a1); operator delete(a1); } // 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); //----- (004B89E0) -------------------------------------------------------- void __fastcall std::length_error::~length_error(_DWORD *a1) { *a1 = &off_53867C; std::logic_error::~logic_error(a1); } // 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); //----- (004B89F0) -------------------------------------------------------- _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_538690; return result; } // 4B89FD: variable 'v5' is possibly undefined // 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); //----- (004B8A20) -------------------------------------------------------- _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_538690; return result; } // 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); //----- (004B8A50) -------------------------------------------------------- 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_538690; return result; } // 4B8A5D: variable 'v5' is possibly undefined // 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); //----- (004B8A80) -------------------------------------------------------- void __fastcall std::out_of_range::~out_of_range(_DWORD *a1) { *a1 = &off_538690; std::logic_error::~logic_error(a1); operator delete(a1); } // 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); //----- (004B8AA0) -------------------------------------------------------- void __fastcall std::out_of_range::~out_of_range(_DWORD *a1) { *a1 = &off_538690; std::logic_error::~logic_error(a1); } // 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); //----- (004B8AB0) -------------------------------------------------------- void __fastcall std::system_error::~system_error(_DWORD *a1) { *a1 = &off_5386A4; std::runtime_error::~runtime_error(a1); operator delete(a1); } // 5386A4: using guessed type void (__cdecl *off_5386A4)(std::system_error *__hidden this); //----- (004B8AD0) -------------------------------------------------------- void __fastcall std::system_error::~system_error(_DWORD *a1) { *a1 = &off_5386A4; std::runtime_error::~runtime_error(a1); } // 5386A4: using guessed type void (__cdecl *off_5386A4)(std::system_error *__hidden this); //----- (004B8AE0) -------------------------------------------------------- void *__fastcall std::_Bvector_base>::_M_deallocate(int a1) { void *result; // eax int v3; // edx result = *(void **)a1; if ( *(_DWORD *)a1 ) { operator delete(result); *(_DWORD *)(a1 + 8) = 0; result = *(void **)(a1 + 8); *(_DWORD *)(a1 + 12) = 0; v3 = *(_DWORD *)(a1 + 12); *(_DWORD *)a1 = result; *(_DWORD *)(a1 + 4) = v3; *(_DWORD *)(a1 + 16) = 0; } return result; } //----- (004B8B20) -------------------------------------------------------- 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; } //----- (004B8C90) -------------------------------------------------------- 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; } //----- (004B8E00) -------------------------------------------------------- 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; } //----- (004B8F70) -------------------------------------------------------- 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; } //----- (004B90E0) -------------------------------------------------------- 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_51641C; 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_51641C ) { 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; } // 4B91F3: variable 'v18' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004B9250) -------------------------------------------------------- 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; } // 4B9361: variable 'v16' is possibly undefined //----- (004B9390) -------------------------------------------------------- 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_51640C; 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_51640C ) { 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004B9500) -------------------------------------------------------- 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; } // 4B961A: variable 'v16' is possibly undefined //----- (004B9650) -------------------------------------------------------- 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_51641C ) { 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004B97B0) -------------------------------------------------------- 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; } // 4B97F6: variable 'v11' is possibly undefined //----- (004B98D0) -------------------------------------------------------- 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_51640C ) { 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004B9A30) -------------------------------------------------------- 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; } // 4B9A7A: variable 'v12' is possibly undefined //----- (004B9B50) -------------------------------------------------------- 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_5379B0; 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_539234; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v5); operator delete(a1); } // 4B9B8E: variable 'v5' is possibly undefined // 5379B0: using guessed type int (*off_5379B0)(); // 539234: using guessed type int (*off_539234)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004B9BB0) -------------------------------------------------------- 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_5379CC; 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_5382A8; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v5); operator delete(a1); } // 4B9BEE: variable 'v5' is possibly undefined // 5379CC: using guessed type int (*off_5379CC)(); // 5382A8: using guessed type int (*off_5382A8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004B9C10) -------------------------------------------------------- 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_5379B0; 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_539234; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); std::locale::facet::~facet(a1); } // 4B9C11: variable 'v1' is possibly undefined // 5379B0: using guessed type int (*off_5379B0)(); // 539234: using guessed type int (*off_539234)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004B9C70) -------------------------------------------------------- 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_5379CC; 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_5382A8; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); std::locale::facet::~facet(a1); } // 4B9C71: variable 'v1' is possibly undefined // 5379CC: using guessed type int (*off_5379CC)(); // 5382A8: using guessed type int (*off_5382A8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004B9CD0) -------------------------------------------------------- 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_5379E8; 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_539250; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v5); operator delete(a1); } // 4B9D0E: variable 'v5' is possibly undefined // 5379E8: using guessed type int (*off_5379E8)(); // 539250: using guessed type int (*off_539250)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004B9D30) -------------------------------------------------------- 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_537A04; 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_5382C4; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v5); operator delete(a1); } // 4B9D6E: variable 'v5' is possibly undefined // 537A04: using guessed type int (*off_537A04)(); // 5382C4: using guessed type int (*off_5382C4)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004B9D90) -------------------------------------------------------- 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_5379E8; 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_539250; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); std::locale::facet::~facet(a1); } // 4B9D91: variable 'v1' is possibly undefined // 5379E8: using guessed type int (*off_5379E8)(); // 539250: using guessed type int (*off_539250)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004B9DF0) -------------------------------------------------------- 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_537A04; 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_5382C4; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); std::locale::facet::~facet(a1); } // 4B9DF1: variable 'v1' is possibly undefined // 537A04: using guessed type int (*off_537A04)(); // 5382C4: using guessed type int (*off_5382C4)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004B9E50) -------------------------------------------------------- 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_537A20; 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); } // 4B9E7D: variable 'v5' is possibly undefined // 537A20: using guessed type int (*off_537A20)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004B9EA0) -------------------------------------------------------- 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_537A3C; 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); } // 4B9ECD: variable 'v5' is possibly undefined // 537A3C: using guessed type int (*off_537A3C)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004B9EF0) -------------------------------------------------------- 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_537A20; 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); } // 4B9EFB: variable 'v1' is possibly undefined // 537A20: using guessed type int (*off_537A20)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004B9F40) -------------------------------------------------------- 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_537A3C; 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); } // 4B9F4B: variable 'v1' is possibly undefined // 537A3C: using guessed type int (*off_537A3C)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004B9F90) -------------------------------------------------------- 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_537A58; 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); } // 4B9FBD: variable 'v5' is possibly undefined // 537A58: using guessed type int (*off_537A58)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004B9FE0) -------------------------------------------------------- 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_537A74; 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); } // 4BA00D: variable 'v5' is possibly undefined // 537A74: using guessed type int (*off_537A74)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA030) -------------------------------------------------------- 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_537A58; 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); } // 4BA03B: variable 'v1' is possibly undefined // 537A58: using guessed type int (*off_537A58)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA080) -------------------------------------------------------- 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_537A74; 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); } // 4BA08B: variable 'v1' is possibly undefined // 537A74: using guessed type int (*off_537A74)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA0D0) -------------------------------------------------------- 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_537A90; 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); } // 4BA107: variable 'v5' is possibly undefined // 537A90: using guessed type int (*off_537A90)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA130) -------------------------------------------------------- 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_537AB4; 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); } // 4BA167: variable 'v5' is possibly undefined // 537AB4: using guessed type int (*off_537AB4)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA190) -------------------------------------------------------- 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_537A90; 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); } // 4BA196: variable 'v1' is possibly undefined // 537A90: using guessed type int (*off_537A90)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA1E0) -------------------------------------------------------- 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_537AB4; 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); } // 4BA1E6: variable 'v1' is possibly undefined // 537AB4: using guessed type int (*off_537AB4)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA230) -------------------------------------------------------- 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_537AD8; 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); } // 4BA267: variable 'v5' is possibly undefined // 537AD8: using guessed type int (*off_537AD8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA290) -------------------------------------------------------- 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_537AFC; 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); } // 4BA2C7: variable 'v5' is possibly undefined // 537AFC: using guessed type int (*off_537AFC)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA2F0) -------------------------------------------------------- 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_537AD8; 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); } // 4BA2F6: variable 'v1' is possibly undefined // 537AD8: using guessed type int (*off_537AD8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA340) -------------------------------------------------------- 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_537AFC; 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); } // 4BA346: variable 'v1' is possibly undefined // 537AFC: using guessed type int (*off_537AFC)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA390) -------------------------------------------------------- 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_537B20; 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_5393E8; std::locale::facet::~facet(v5); operator delete(a1); } // 4BA3C3: variable 'v5' is possibly undefined // 537B20: using guessed type int (*off_537B20)(); // 5393E8: using guessed type int (*off_5393E8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA3F0) -------------------------------------------------------- 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_537B48; 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_538360; std::locale::facet::~facet(v5); operator delete(a1); } // 4BA423: variable 'v5' is possibly undefined // 537B48: using guessed type int (*off_537B48)(); // 538360: using guessed type int (*off_538360)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA450) -------------------------------------------------------- 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_537B20; 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_5393E8; std::locale::facet::~facet(a1); } // 4BA451: variable 'v1' is possibly undefined // 537B20: using guessed type int (*off_537B20)(); // 5393E8: using guessed type int (*off_5393E8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA4A0) -------------------------------------------------------- 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_537B48; 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_538360; std::locale::facet::~facet(a1); } // 4BA4A1: variable 'v1' is possibly undefined // 537B48: using guessed type int (*off_537B48)(); // 538360: using guessed type int (*off_538360)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA4F0) -------------------------------------------------------- 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_537B74; 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_539410; std::locale::facet::~facet(v5); operator delete(a1); } // 4BA523: variable 'v5' is possibly undefined // 537B74: using guessed type int (*off_537B74)(); // 539410: using guessed type int (*off_539410)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA550) -------------------------------------------------------- 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_537B9C; 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_53838C; std::locale::facet::~facet(v5); operator delete(a1); } // 4BA583: variable 'v5' is possibly undefined // 537B9C: using guessed type int (*off_537B9C)(); // 53838C: using guessed type int (*off_53838C)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA5B0) -------------------------------------------------------- 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_537B74; 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_539410; std::locale::facet::~facet(a1); } // 4BA5B1: variable 'v1' is possibly undefined // 537B74: using guessed type int (*off_537B74)(); // 539410: using guessed type int (*off_539410)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA600) -------------------------------------------------------- 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_537B9C; 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_53838C; std::locale::facet::~facet(a1); } // 4BA601: variable 'v1' is possibly undefined // 537B9C: using guessed type int (*off_537B9C)(); // 53838C: using guessed type int (*off_53838C)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA650) -------------------------------------------------------- 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_537BC8; 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_5394A8; std::locale::facet::~facet(v5); operator delete(a1); } // 4BA683: variable 'v5' is possibly undefined // 537BC8: using guessed type int (*off_537BC8)(); // 5394A8: using guessed type int (*off_5394A8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA6B0) -------------------------------------------------------- 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_537BE0; 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_5383B8; std::locale::facet::~facet(v5); operator delete(a1); } // 4BA6E3: variable 'v5' is possibly undefined // 537BE0: using guessed type int (*off_537BE0)(); // 5383B8: using guessed type int (*off_5383B8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA710) -------------------------------------------------------- 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_537BC8; 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_5394A8; std::locale::facet::~facet(a1); } // 4BA711: variable 'v1' is possibly undefined // 537BC8: using guessed type int (*off_537BC8)(); // 5394A8: using guessed type int (*off_5394A8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA760) -------------------------------------------------------- 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_537BE0; 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_5383B8; std::locale::facet::~facet(a1); } // 4BA761: variable 'v1' is possibly undefined // 537BE0: using guessed type int (*off_537BE0)(); // 5383B8: using guessed type int (*off_5383B8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA7B0) -------------------------------------------------------- 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_537BF8; 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_5394C0; std::locale::facet::~facet(v5); operator delete(a1); } // 4BA7E3: variable 'v5' is possibly undefined // 537BF8: using guessed type int (*off_537BF8)(); // 5394C0: using guessed type int (*off_5394C0)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA810) -------------------------------------------------------- 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_537C10; 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_5383D0; std::locale::facet::~facet(v5); operator delete(a1); } // 4BA843: variable 'v5' is possibly undefined // 537C10: using guessed type int (*off_537C10)(); // 5383D0: using guessed type int (*off_5383D0)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA870) -------------------------------------------------------- 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_537BF8; 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_5394C0; std::locale::facet::~facet(a1); } // 4BA871: variable 'v1' is possibly undefined // 537BF8: using guessed type int (*off_537BF8)(); // 5394C0: using guessed type int (*off_5394C0)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA8C0) -------------------------------------------------------- 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_537C10; 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_5383D0; std::locale::facet::~facet(a1); } // 4BA8C1: variable 'v1' is possibly undefined // 537C10: using guessed type int (*off_537C10)(); // 5383D0: using guessed type int (*off_5383D0)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA910) -------------------------------------------------------- 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_537C28; 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_5394D8; std::locale::facet::~facet(v5); operator delete(a1); } // 4BA943: variable 'v5' is possibly undefined // 537C28: using guessed type int (*off_537C28)(); // 5394D8: using guessed type int (*off_5394D8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA970) -------------------------------------------------------- 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_537C40; 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_5383E8; std::locale::facet::~facet(v5); operator delete(a1); } // 4BA9A3: variable 'v5' is possibly undefined // 537C40: using guessed type int (*off_537C40)(); // 5383E8: using guessed type int (*off_5383E8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BA9D0) -------------------------------------------------------- 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_537C28; 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_5394D8; std::locale::facet::~facet(a1); } // 4BA9D1: variable 'v1' is possibly undefined // 537C28: using guessed type int (*off_537C28)(); // 5394D8: using guessed type int (*off_5394D8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BAA20) -------------------------------------------------------- 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_537C40; 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_5383E8; std::locale::facet::~facet(a1); } // 4BAA21: variable 'v1' is possibly undefined // 537C40: using guessed type int (*off_537C40)(); // 5383E8: using guessed type int (*off_5383E8)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BAA70) -------------------------------------------------------- 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_537C58; 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_5394F0; std::locale::facet::~facet(v5); operator delete(a1); } // 4BAAA3: variable 'v5' is possibly undefined // 537C58: using guessed type int (*off_537C58)(); // 5394F0: using guessed type int (*off_5394F0)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BAAD0) -------------------------------------------------------- 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_537C70; 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_538400; std::locale::facet::~facet(v5); operator delete(a1); } // 4BAB03: variable 'v5' is possibly undefined // 537C70: using guessed type int (*off_537C70)(); // 538400: using guessed type int (*off_538400)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BAB30) -------------------------------------------------------- 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_537C58; 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_5394F0; std::locale::facet::~facet(a1); } // 4BAB31: variable 'v1' is possibly undefined // 537C58: using guessed type int (*off_537C58)(); // 5394F0: using guessed type int (*off_5394F0)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BAB80) -------------------------------------------------------- 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_537C70; 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_538400; std::locale::facet::~facet(a1); } // 4BAB81: variable 'v1' is possibly undefined // 537C70: using guessed type int (*off_537C70)(); // 538400: using guessed type int (*off_538400)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BABD0) -------------------------------------------------------- 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_537C88; 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); } // 4BAC1C: variable 'v5' is possibly undefined // 537C88: using guessed type int (*off_537C88)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BAC40) -------------------------------------------------------- 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_537CBC; 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); } // 4BAC8C: variable 'v5' is possibly undefined // 537CBC: using guessed type int (*off_537CBC)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BACB0) -------------------------------------------------------- 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_537C88; 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); } // 4BACB6: variable 'v1' is possibly undefined // 537C88: using guessed type int (*off_537C88)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BAD20) -------------------------------------------------------- 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_537CBC; 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); } // 4BAD26: variable 'v1' is possibly undefined // 537CBC: using guessed type int (*off_537CBC)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BAD90) -------------------------------------------------------- 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_537CF0; 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); } // 4BADDC: variable 'v5' is possibly undefined // 537CF0: using guessed type int (*off_537CF0)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BAE00) -------------------------------------------------------- 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_537D24; 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); } // 4BAE4C: variable 'v5' is possibly undefined // 537D24: using guessed type int (*off_537D24)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BAE70) -------------------------------------------------------- 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_537CF0; 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); } // 4BAE76: variable 'v1' is possibly undefined // 537CF0: using guessed type int (*off_537CF0)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BAEE0) -------------------------------------------------------- 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_537D24; 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); } // 4BAEE6: variable 'v1' is possibly undefined // 537D24: using guessed type int (*off_537D24)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BAF50) -------------------------------------------------------- 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_537D58; 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); } // 4BAF9C: variable 'v5' is possibly undefined // 537D58: using guessed type int (*off_537D58)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BAFC0) -------------------------------------------------------- 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_537D8C; 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); } // 4BB00C: variable 'v5' is possibly undefined // 537D8C: using guessed type int (*off_537D8C)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BB030) -------------------------------------------------------- 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_537D58; 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); } // 4BB036: variable 'v1' is possibly undefined // 537D58: using guessed type int (*off_537D58)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BB0A0) -------------------------------------------------------- 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_537D8C; 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); } // 4BB0A6: variable 'v1' is possibly undefined // 537D8C: using guessed type int (*off_537D8C)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BB110) -------------------------------------------------------- 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_537DC0; 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); } // 4BB15C: variable 'v5' is possibly undefined // 537DC0: using guessed type int (*off_537DC0)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BB180) -------------------------------------------------------- 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_537DF4; 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); } // 4BB1CC: variable 'v5' is possibly undefined // 537DF4: using guessed type int (*off_537DF4)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BB1F0) -------------------------------------------------------- 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_537DC0; 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); } // 4BB1F6: variable 'v1' is possibly undefined // 537DC0: using guessed type int (*off_537DC0)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BB260) -------------------------------------------------------- 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_537DF4; 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); } // 4BB266: variable 'v1' is possibly undefined // 537DF4: using guessed type int (*off_537DF4)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004BB2D0) -------------------------------------------------------- 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_51641C ) { 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); } } // 78A9D4: using guessed type int _CRT_MT; // 4BB2D0: using guessed type int var_D[3]; //----- (004BB330) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004BB360) -------------------------------------------------------- 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_51640C ) { 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); } } // 78A9D4: using guessed type int _CRT_MT; // 4BB360: using guessed type int var_D[3]; //----- (004BB3C0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004BB3F0) -------------------------------------------------------- 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_51641C ) { 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_51641C ) { 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); } } // 4BB45B: variable 'v15' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004BB550) -------------------------------------------------------- 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]); } // 4BB57C: variable 'v11' is possibly undefined // 4BB5D5: variable 'v12' is possibly undefined //----- (004BB640) -------------------------------------------------------- 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_51640C ) { 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_51640C ) { 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); } } // 78A9D4: using guessed type int _CRT_MT; //----- (004BB7A0) -------------------------------------------------------- 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]); } // 4BB7CD: variable 'v11' is possibly undefined // 4BB827: variable 'v12' is possibly undefined //----- (004BB890) -------------------------------------------------------- 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_51641C ) { 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004BB950) -------------------------------------------------------- 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; } // 4BB97B: variable 'v7' is possibly undefined //----- (004BB9D0) -------------------------------------------------------- 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_51641C ) { 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004BBA90) -------------------------------------------------------- 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; } // 4BBABB: variable 'v7' is possibly undefined //----- (004BBB10) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) { return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); } //----- (004BBB30) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) { return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); } //----- (004BBB50) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) { return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); } //----- (004BBB70) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) { return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); } //----- (004BBB90) -------------------------------------------------------- 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); } //----- (004BBBD0) -------------------------------------------------------- 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); } //----- (004BBC10) -------------------------------------------------------- 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); } //----- (004BBC50) -------------------------------------------------------- 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); } //----- (004BBC90) -------------------------------------------------------- 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_51641C ) { 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); } } // 4BBCCD: variable 'v10' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004BBD60) -------------------------------------------------------- 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); } // 4BBDB0: variable 'v8' is possibly undefined //----- (004BBE00) -------------------------------------------------------- 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_51640C ) { 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); } } // 78A9D4: using guessed type int _CRT_MT; //----- (004BBED0) -------------------------------------------------------- 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); } // 4BBF21: variable 'v8' is possibly undefined //----- (004BBF70) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) { return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); } //----- (004BBF80) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) { return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); } //----- (004BBF90) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) { return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); } //----- (004BBFA0) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) { return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); } //----- (004BBFB0) -------------------------------------------------------- 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_51641C ) { 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_51641C ) { 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_51641C ) { 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); } } // 4BC025: variable 'v15' is possibly undefined // 4BC084: variable 'v16' is possibly undefined // 4BC0DD: variable 'v17' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004BC200) -------------------------------------------------------- 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); } //----- (004BC380) -------------------------------------------------------- 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_51641C ) { 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_51640C ) { 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_51640C ) { 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); } } // 4BC3FA: variable 'v17' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004BC640) -------------------------------------------------------- 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); } //----- (004BC7F0) -------------------------------------------------------- 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_51641C ) { 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_51641C ) { 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_51641C ) { 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_51641C ) { 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; } // 4BC876: variable 'v18' is possibly undefined // 4BC8D5: variable 'v19' is possibly undefined // 4BC934: variable 'v20' is possibly undefined // 4BC993: variable 'v21' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004BCB20) -------------------------------------------------------- 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; } //----- (004BCD30) -------------------------------------------------------- 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_51641C ) { 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_51641C ) { 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_51641C ) { 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_51641C ) { 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; } // 4BCDB6: variable 'v18' is possibly undefined // 4BCE15: variable 'v19' is possibly undefined // 4BCE74: variable 'v20' is possibly undefined // 4BCED3: variable 'v21' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004BD060) -------------------------------------------------------- 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; } //----- (004BD270) -------------------------------------------------------- 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_51641C ) { 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_51640C ) { 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_51640C ) { 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_51640C ) { 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; } // 4BD2F8: variable 'v21' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004BD610) -------------------------------------------------------- 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; } //----- (004BD880) -------------------------------------------------------- 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_51641C ) { 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_51640C ) { 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_51640C ) { 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_51640C ) { 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; } // 4BD908: variable 'v21' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004BDC20) -------------------------------------------------------- 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; } //----- (004BDE90) -------------------------------------------------------- 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_5386B8; v11 = (char *)std::runtime_error::what((int)a1); std::__construct_ios_failure(a1 + 4, v11); } // 5386B8: using guessed type void (__cdecl *off_5386B8)(std::__ios_failure *__hidden this); //----- (004BE0E0) -------------------------------------------------------- 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_5386B8; a1[2] = a3; v12 = (char *)std::runtime_error::what((int)a1); std::__construct_ios_failure(a1 + 4, v12); } // 5386B8: using guessed type void (__cdecl *off_5386B8)(std::__ios_failure *__hidden this); //----- (004BE3B0) -------------------------------------------------------- void __fastcall std::__ios_failure::~__ios_failure(int a1) { *(_DWORD *)a1 = &off_5386B8; std::__destroy_ios_failure((int (__fastcall ***)(_DWORD))(a1 + 16)); *(_DWORD *)a1 = &off_538418; std::system_error::~system_error((_DWORD *)a1); operator delete((void *)a1); } // 538418: using guessed type int (*off_538418)(); // 5386B8: using guessed type void (__cdecl *off_5386B8)(std::__ios_failure *__hidden this); //----- (004BE3F0) -------------------------------------------------------- void __fastcall std::__ios_failure::~__ios_failure(int a1) { *(_DWORD *)a1 = &off_5386B8; std::__destroy_ios_failure((int (__fastcall ***)(_DWORD))(a1 + 16)); *(_DWORD *)a1 = &off_538418; std::system_error::~system_error((_DWORD *)a1); } // 538418: using guessed type int (*off_538418)(); // 5386B8: using guessed type void (__cdecl *off_5386B8)(std::__ios_failure *__hidden this); //----- (004BE420) -------------------------------------------------------- void __fastcall std::bad_exception::~bad_exception(void *a1) { operator delete(a1, 4u); } //----- (004BE450) -------------------------------------------------------- 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; } //----- (004BE4D0) -------------------------------------------------------- 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); } //----- (004BE530) -------------------------------------------------------- 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; } //----- (004BE560) -------------------------------------------------------- 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; } //----- (004BE5A0) -------------------------------------------------------- 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; } // 4BE5A0: using guessed type char var_1C[28]; //----- (004BE6B0) -------------------------------------------------------- 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; } //----- (004BE820) -------------------------------------------------------- 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; } //----- (004BE880) -------------------------------------------------------- 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; } } //----- (004BE8C0) -------------------------------------------------------- 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); } //----- (004BE930) -------------------------------------------------------- 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; } //----- (004BEA00) -------------------------------------------------------- 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); } //----- (004BEA70) -------------------------------------------------------- char *__thiscall std::filebuf::open(char *this, char *a2, int a3) { return std::filebuf::open(this, *(char **)a2, a3); } //----- (004BEA80) -------------------------------------------------------- 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; } // 4BEAE8: variable 'v40' is possibly undefined //----- (004BEC10) -------------------------------------------------------- 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); } //----- (004BEC50) -------------------------------------------------------- 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; } //----- (004BED10) -------------------------------------------------------- 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; } //----- (004BEEF0) -------------------------------------------------------- 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; } //----- (004BEF50) -------------------------------------------------------- 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; } //----- (004BF170) -------------------------------------------------------- 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; } //----- (004BF2A0) -------------------------------------------------------- _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; } //----- (004BF350) -------------------------------------------------------- _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; } //----- (004BF5B0) -------------------------------------------------------- _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; } //----- (004BF680) -------------------------------------------------------- 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; } //----- (004BF870) -------------------------------------------------------- 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; } //----- (004BF9A0) -------------------------------------------------------- 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; } //----- (004BFA30) -------------------------------------------------------- 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; } //----- (004BFEC0) -------------------------------------------------------- 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_5386E0; *(_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; } // 4BFECE: variable 'v17' is possibly undefined // 5386E0: using guessed type int (*off_5386E0)(); //----- (004C0000) -------------------------------------------------------- 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_538A48; *(_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_5386E0; *(_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; } // 5386E0: using guessed type int (*off_5386E0)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004C0120) -------------------------------------------------------- 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_5386E0; *(_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; } // 4C012E: variable 'v17' is possibly undefined // 5386E0: using guessed type int (*off_5386E0)(); //----- (004C0260) -------------------------------------------------------- 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_538A48; *(_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_5386E0; *(_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; } // 5386E0: using guessed type int (*off_5386E0)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004C0380) -------------------------------------------------------- void __fastcall std::filebuf::~filebuf(_DWORD **a1) { *a1 = &off_5386E0; std::filebuf::close((int)a1); std::__basic_file::~__basic_file(a1 + 10); *a1 = &off_538A48; std::locale::~locale(a1 + 7); operator delete(a1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004C03D0) -------------------------------------------------------- void __fastcall std::filebuf::~filebuf(int a1) { *(_DWORD *)a1 = &off_5386E0; std::filebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004C0410) -------------------------------------------------------- void __fastcall std::filebuf::~filebuf(int a1) { *(_DWORD *)a1 = &off_5386E0; std::filebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004C0450) -------------------------------------------------------- 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; } //----- (004C0570) -------------------------------------------------------- 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; } //----- (004C05F0) -------------------------------------------------------- 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); } //----- (004C0660) -------------------------------------------------------- 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; } //----- (004C0690) -------------------------------------------------------- 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; } //----- (004C06D0) -------------------------------------------------------- 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; } // 4C06D0: using guessed type char var_1C[28]; //----- (004C07E0) -------------------------------------------------------- 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; } //----- (004C0950) -------------------------------------------------------- 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; } //----- (004C09B0) -------------------------------------------------------- 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; } //----- (004C09D0) -------------------------------------------------------- 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; } //----- (004C0A00) -------------------------------------------------------- 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); } //----- (004C0A80) -------------------------------------------------------- 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; } //----- (004C0B20) -------------------------------------------------------- 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); } //----- (004C0BA0) -------------------------------------------------------- char *__thiscall std::wfilebuf::open(void *this, char *a2, int a3) { return std::wfilebuf::open((int)this, *(char **)a2, a3); } //----- (004C0BB0) -------------------------------------------------------- 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; } // 4C0C18: variable 'v40' is possibly undefined //----- (004C0D40) -------------------------------------------------------- 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); } //----- (004C0D80) -------------------------------------------------------- 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; } //----- (004C0E40) -------------------------------------------------------- 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; } //----- (004C1020) -------------------------------------------------------- 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; } //----- (004C1080) -------------------------------------------------------- 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; } //----- (004C12A0) -------------------------------------------------------- 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; } //----- (004C13D0) -------------------------------------------------------- _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; } //----- (004C1480) -------------------------------------------------------- _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; } //----- (004C16F0) -------------------------------------------------------- _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; } //----- (004C17C0) -------------------------------------------------------- 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; } //----- (004C19A0) -------------------------------------------------------- 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; } //----- (004C1AD0) -------------------------------------------------------- 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; } //----- (004C1B60) -------------------------------------------------------- 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; } //----- (004C2020) -------------------------------------------------------- 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_538720; *(_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; } // 4C202E: variable 'v17' is possibly undefined // 538720: using guessed type int (*off_538720)(); //----- (004C2160) -------------------------------------------------------- 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_538A88; *(_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_538720; *(_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; } // 538720: using guessed type int (*off_538720)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004C2290) -------------------------------------------------------- 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_538720; *(_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; } // 4C229E: variable 'v17' is possibly undefined // 538720: using guessed type int (*off_538720)(); //----- (004C23D0) -------------------------------------------------------- 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_538A88; *(_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_538720; *(_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; } // 538720: using guessed type int (*off_538720)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004C2500) -------------------------------------------------------- void __fastcall std::wfilebuf::~wfilebuf(_DWORD **a1) { *a1 = &off_538720; std::wfilebuf::close((int)a1); std::__basic_file::~__basic_file(a1 + 10); *a1 = &off_538A88; std::locale::~locale(a1 + 7); operator delete(a1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004C2550) -------------------------------------------------------- void __fastcall std::wfilebuf::~wfilebuf(int a1) { *(_DWORD *)a1 = &off_538720; std::wfilebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004C2590) -------------------------------------------------------- void __fastcall std::wfilebuf::~wfilebuf(int a1) { *(_DWORD *)a1 = &off_538720; std::wfilebuf::close(a1); std::__basic_file::~__basic_file(a1 + 40); *(_DWORD *)a1 = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 28)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004C25D0) -------------------------------------------------------- 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; } //----- (004C26F0) -------------------------------------------------------- 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); } //----- (004C2760) -------------------------------------------------------- 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); } //----- (004C27D0) -------------------------------------------------------- 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); } //----- (004C2840) -------------------------------------------------------- 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)); } // 4C2864: variable 'v10' is possibly undefined //----- (004C28E0) -------------------------------------------------------- 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; } //----- (004C2920) -------------------------------------------------------- bool __fastcall std::fstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 52)); } //----- (004C2930) -------------------------------------------------------- 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_533A4C; *((_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_533A60; 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_538764; this[30] = off_53878C; this[2] = off_538778; result = std::filebuf::basic_filebuf((int)(this + 3), (int)(a2 + 3)); this[60] = this + 3; return result; } // 4C29A5: variable 'v9' is possibly undefined // 538764: using guessed type int (*off_538764)(); // 538778: using guessed type int (*off_538778[2])(); // 53878C: using guessed type int (*off_53878C[2])(); //----- (004C2A60) -------------------------------------------------------- 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_533A4C; *((_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_533A60; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *((_DWORD *)this + 2) = &unk_533A74; *((_DWORD *)this + 30) = &unk_533A88; std::ios::init(v3, 0); *(_DWORD *)this = &off_538764; *((_DWORD *)this + 30) = off_53878C; *((_DWORD *)this + 2) = off_538778; 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); } // 538764: using guessed type int (*off_538764)(); // 538778: using guessed type int (*off_538778[2])(); // 53878C: using guessed type int (*off_53878C[2])(); //----- (004C2BD0) -------------------------------------------------------- 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_533A4C; *((_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_533A60; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *((_DWORD *)this + 2) = &unk_533A74; *((_DWORD *)this + 30) = &unk_533A88; std::ios::init(v3, 0); *(_DWORD *)this = &off_538764; *((_DWORD *)this + 30) = off_53878C; *((_DWORD *)this + 2) = off_538778; 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); } // 538764: using guessed type int (*off_538764)(); // 538778: using guessed type int (*off_538778[2])(); // 53878C: using guessed type int (*off_53878C[2])(); //----- (004C2D40) -------------------------------------------------------- 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_533A4C; *((_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_533A60; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *((_DWORD *)this + 2) = &unk_533A74; *((_DWORD *)this + 30) = &unk_533A88; std::ios::init(v3, 0); *(_DWORD *)this = &off_538764; *((_DWORD *)this + 30) = off_53878C; *((_DWORD *)this + 2) = off_538778; 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); } // 538764: using guessed type int (*off_538764)(); // 538778: using guessed type int (*off_538778[2])(); // 53878C: using guessed type int (*off_53878C[2])(); //----- (004C2EB0) -------------------------------------------------------- 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_533A4C; *(_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_533A60; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_533A74; *(_DWORD *)(a1 + 120) = &unk_533A88; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_538764; *(_DWORD *)(a1 + 120) = off_53878C; *(_DWORD *)(a1 + 8) = off_538778; std::filebuf::basic_filebuf(a1 + 12); return std::ios::init(v1, a1 + 12); } // 538764: using guessed type int (*off_538764)(); // 538778: using guessed type int (*off_538778[2])(); // 53878C: using guessed type int (*off_53878C[2])(); //----- (004C2FC0) -------------------------------------------------------- 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; } // 4C2FFD: variable 'v14' is possibly undefined //----- (004C30E0) -------------------------------------------------------- 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); } //----- (004C3230) -------------------------------------------------------- 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); } //----- (004C3380) -------------------------------------------------------- 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); } //----- (004C34D0) -------------------------------------------------------- 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)); } //----- (004C35D0) -------------------------------------------------------- void __fastcall std::fstream::~fstream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 3; *(v2 - 3) = &off_538764; v2[27] = off_53878C; *(v2 - 1) = off_538778; *v2 = &off_5386E0; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 13); a1[3] = &off_538A48; std::locale::~locale((_DWORD **)a1 + 10); a1[2] = &unk_533A74; *a1 = &unk_533A4C; a1[1] = 0; a1[30] = &off_539474; std::ios_base::~ios_base((int)(a1 + 30)); operator delete(a1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538764: using guessed type int (*off_538764)(); // 538778: using guessed type int (*off_538778[2])(); // 53878C: using guessed type int (*off_53878C[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004C3650) -------------------------------------------------------- void __fastcall std::fstream::~fstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 12); *(v2 - 3) = &off_538764; v2[27] = off_53878C; *(v2 - 1) = off_538778; *v2 = &off_5386E0; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 52); *(_DWORD *)(a1 + 12) = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 40)); *(_DWORD *)(a1 + 8) = &unk_533A74; *(_DWORD *)a1 = &unk_533A4C; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 120) = &off_539474; std::ios_base::~ios_base(a1 + 120); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538764: using guessed type int (*off_538764)(); // 538778: using guessed type int (*off_538778[2])(); // 53878C: using guessed type int (*off_53878C[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004C36D0) -------------------------------------------------------- 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_5386E0; *(v3 - 1) = v5; std::filebuf::close((int)v3); std::__basic_file::~__basic_file(this + 13); this[3] = &off_538A48; 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; } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004C3770) -------------------------------------------------------- _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; } // 4C3794: variable 'v10' is possibly undefined //----- (004C3810) -------------------------------------------------------- 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); } //----- (004C3880) -------------------------------------------------------- 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); } //----- (004C38F0) -------------------------------------------------------- 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); } //----- (004C3960) -------------------------------------------------------- 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)); } // 4C3984: variable 'v9' is possibly undefined //----- (004C3A00) -------------------------------------------------------- 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; } //----- (004C3A40) -------------------------------------------------------- bool __fastcall std::wfstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 52)); } //----- (004C3A50) -------------------------------------------------------- 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_533A9C; this[62] = 0; this[31] = &unk_533AB0; 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_5387A0; this[31] = off_5387C8; this[2] = off_5387B4; result = std::wfilebuf::basic_filebuf((int)(this + 3), (int)(a2 + 3)); this[61] = this + 3; return result; } // 4C3ACC: variable 'v9' is possibly undefined // 5387A0: using guessed type int (*off_5387A0)(); // 5387B4: using guessed type int (*off_5387B4[2])(); // 5387C8: using guessed type int (*off_5387C8[2])(); //----- (004C3B90) -------------------------------------------------------- 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_533A9C; this[31] = &unk_533AB0; this[1] = 0; std::wios::init(v3, 0); this[2] = &unk_533B00; this[31] = &unk_533B14; std::wios::init(v3, 0); *this = &off_5387A0; this[31] = off_5387C8; this[2] = off_5387B4; 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); } // 5387A0: using guessed type int (*off_5387A0)(); // 5387B4: using guessed type int (*off_5387B4[2])(); // 5387C8: using guessed type int (*off_5387C8[2])(); //----- (004C3D00) -------------------------------------------------------- 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_533A9C; this[31] = &unk_533AB0; this[1] = 0; std::wios::init(v3, 0); this[2] = &unk_533B00; this[31] = &unk_533B14; std::wios::init(v3, 0); *this = &off_5387A0; this[31] = off_5387C8; this[2] = off_5387B4; 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); } // 5387A0: using guessed type int (*off_5387A0)(); // 5387B4: using guessed type int (*off_5387B4[2])(); // 5387C8: using guessed type int (*off_5387C8[2])(); //----- (004C3E70) -------------------------------------------------------- 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_533A9C; this[31] = &unk_533AB0; this[1] = 0; std::wios::init(v3, 0); this[2] = &unk_533B00; this[31] = &unk_533B14; std::wios::init(v3, 0); *this = &off_5387A0; this[31] = off_5387C8; this[2] = off_5387B4; 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); } // 5387A0: using guessed type int (*off_5387A0)(); // 5387B4: using guessed type int (*off_5387B4[2])(); // 5387C8: using guessed type int (*off_5387C8[2])(); //----- (004C3FE0) -------------------------------------------------------- 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_533A9C; *(_DWORD *)(a1 + 124) = &unk_533AB0; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_533B00; *(_DWORD *)(a1 + 124) = &unk_533B14; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_5387A0; *(_DWORD *)(a1 + 124) = off_5387C8; *(_DWORD *)(a1 + 8) = off_5387B4; std::wfilebuf::basic_filebuf(a1 + 12); return std::wios::init(v1, a1 + 12); } // 5387A0: using guessed type int (*off_5387A0)(); // 5387B4: using guessed type int (*off_5387B4[2])(); // 5387C8: using guessed type int (*off_5387C8[2])(); //----- (004C4100) -------------------------------------------------------- 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; } // 4C413D: variable 'v14' is possibly undefined //----- (004C4220) -------------------------------------------------------- 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); } //----- (004C4370) -------------------------------------------------------- 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); } //----- (004C44C0) -------------------------------------------------------- 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); } //----- (004C4610) -------------------------------------------------------- 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)); } //----- (004C4710) -------------------------------------------------------- void __fastcall std::wfstream::~wfstream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 3; *(v2 - 3) = &off_5387A0; v2[28] = off_5387C8; *(v2 - 1) = off_5387B4; *v2 = &off_538720; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 13); a1[3] = &off_538A88; std::locale::~locale((_DWORD **)a1 + 10); a1[2] = &unk_533B00; *a1 = &unk_533A9C; a1[1] = 0; a1[31] = &off_539484; std::ios_base::~ios_base((int)(a1 + 31)); operator delete(a1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 5387A0: using guessed type int (*off_5387A0)(); // 5387B4: using guessed type int (*off_5387B4[2])(); // 5387C8: using guessed type int (*off_5387C8[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004C4790) -------------------------------------------------------- void __fastcall std::wfstream::~wfstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 12); *(v2 - 3) = &off_5387A0; v2[28] = off_5387C8; *(v2 - 1) = off_5387B4; *v2 = &off_538720; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 52); *(_DWORD *)(a1 + 12) = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 40)); *(_DWORD *)(a1 + 8) = &unk_533B00; *(_DWORD *)a1 = &unk_533A9C; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 124) = &off_539484; std::ios_base::~ios_base(a1 + 124); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 5387A0: using guessed type int (*off_5387A0)(); // 5387B4: using guessed type int (*off_5387B4[2])(); // 5387C8: using guessed type int (*off_5387C8[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004C4810) -------------------------------------------------------- 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_538720; *(v3 - 1) = v5; std::wfilebuf::close((int)v3); std::__basic_file::~__basic_file(this + 13); this[3] = &off_538A88; 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; } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004C48B0) -------------------------------------------------------- _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; } // 4C48D4: variable 'v9' is possibly undefined //----- (004C4950) -------------------------------------------------------- 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; } // 4C4950: using guessed type int var_1C[7]; //----- (004C4A80) -------------------------------------------------------- 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; } // 4C4A80: using guessed type int var_1C[7]; //----- (004C4BB0) -------------------------------------------------------- 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; } // 4C4BB0: using guessed type int var_1C[7]; //----- (004C4CE0) -------------------------------------------------------- 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; } // 4C4CE0: using guessed type int var_1C[7]; //----- (004C4E10) -------------------------------------------------------- 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; } // 4C4E10: using guessed type int var_1C[7]; //----- (004C4F40) -------------------------------------------------------- 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; } // 4C4F40: using guessed type int var_1C[7]; //----- (004C5070) -------------------------------------------------------- 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; } // 4C5070: using guessed type int var_1C[7]; //----- (004C51A0) -------------------------------------------------------- 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; } // 4C51A0: using guessed type int var_1C[7]; //----- (004C52D0) -------------------------------------------------------- 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; } // 4C52D0: using guessed type int var_1C[7]; //----- (004C5400) -------------------------------------------------------- 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; } // 4C5400: using guessed type int var_1C[7]; //----- (004C5530) -------------------------------------------------------- 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; } // 4C5530: using guessed type int var_1C[7]; //----- (004C5660) -------------------------------------------------------- _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); } //----- (004C56B0) -------------------------------------------------------- _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; } // 4C56B0: using guessed type char var_1D[29]; //----- (004C5950) -------------------------------------------------------- _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); } //----- (004C59A0) -------------------------------------------------------- _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; } // 4C59A0: using guessed type char var_19[25]; //----- (004C5B60) -------------------------------------------------------- _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; } // 4C5B60: using guessed type char var_D[13]; //----- (004C5C80) -------------------------------------------------------- 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; } // 4C5C80: using guessed type char var_D[13]; //----- (004C5D90) -------------------------------------------------------- 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; } // 4C5D90: using guessed type char var_D[13]; //----- (004C5E80) -------------------------------------------------------- _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; } // 4C5E80: using guessed type char var_9[5]; //----- (004C5F70) -------------------------------------------------------- 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; } // 4C5F91: variable 'v8' is possibly undefined //----- (004C6000) -------------------------------------------------------- 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; } // 4C6000: using guessed type char var_D[13]; //----- (004C60E0) -------------------------------------------------------- _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; } //----- (004C6230) -------------------------------------------------------- _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; } //----- (004C6350) -------------------------------------------------------- _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; } //----- (004C6450) -------------------------------------------------------- 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; } // 4C6450: using guessed type char var_9[5]; //----- (004C6570) -------------------------------------------------------- _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); } // 5069EC: using guessed type int __stdcall std::wistream::ignore(_DWORD); // 4C6570: using guessed type char var_1D[29]; //----- (004C6710) -------------------------------------------------------- _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; } // 4C6945: variable 'i' is possibly undefined // 5063E8: using guessed type int __stdcall std::wistream::ignore(_DWORD, _DWORD); // 4C6710: using guessed type char var_1D[29]; //----- (004C69A0) -------------------------------------------------------- _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; } // 4C69A0: using guessed type char var_D[13]; //----- (004C6AA0) -------------------------------------------------------- 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; } //----- (004C6C80) -------------------------------------------------------- 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; } //----- (004C6E60) -------------------------------------------------------- _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); } //----- (004C6EB0) -------------------------------------------------------- _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; } // 4C723A: control flows out of bounds to 506354 // 50634C: using guessed type int __stdcall std::wistream::getline(_DWORD, _DWORD, _DWORD); // 4C6EB0: using guessed type char var_1D[29]; //----- (004C7250) -------------------------------------------------------- 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; } // 4C7250: using guessed type char var_9[9]; //----- (004C7380) -------------------------------------------------------- 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; } // 4C7380: using guessed type char var_9[5]; //----- (004C74B0) -------------------------------------------------------- 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_5387DC; this[33] = 0; v6 = (std::ios_base *)((char *)a2 + v5); this[2] = off_5387F0; 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; } // 4C7524: variable 'v9' is possibly undefined // 5387DC: using guessed type int (*off_5387DC)(); // 5387F0: using guessed type int (*off_5387F0[2])(); //----- (004C7590) -------------------------------------------------------- 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_5387DC; this[2] = off_5387F0; this[1] = 0; return std::wios::init(v2, a2); } // 5387DC: using guessed type int (*off_5387DC)(); // 5387F0: using guessed type int (*off_5387F0[2])(); //----- (004C7630) -------------------------------------------------------- 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_5387DC; *(_DWORD *)(a1 + 8) = off_5387F0; *(_DWORD *)(a1 + 4) = 0; return std::wios::init(v1, 0); } // 5387DC: using guessed type int (*off_5387DC)(); // 5387F0: using guessed type int (*off_5387F0[2])(); //----- (004C76D0) -------------------------------------------------------- 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; } // 4C7700: variable 'v10' is possibly undefined //----- (004C7750) -------------------------------------------------------- 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); } //----- (004C7790) -------------------------------------------------------- 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); } //----- (004C77C0) -------------------------------------------------------- void __fastcall std::wistream::~wistream(char *a1) { _DWORD *v2; // ecx v2 = a1 + 8; *(v2 - 2) = &off_5387DC; *(v2 - 1) = 0; *v2 = &off_539484; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 5387DC: using guessed type int (*off_5387DC)(); // 539484: using guessed type int (*off_539484)(); //----- (004C77F0) -------------------------------------------------------- void __fastcall std::wistream::~wistream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_5387DC; v1 = a1 + 2; *(v1 - 1) = 0; *v1 = &off_539484; std::ios_base::~ios_base((int)v1); } // 5387DC: using guessed type int (*off_5387DC)(); // 539484: using guessed type int (*off_539484)(); //----- (004C7810) -------------------------------------------------------- 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; } //----- (004C7830) -------------------------------------------------------- _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; } // 4C7851: variable 'v9' is possibly undefined //----- (004C78C0) -------------------------------------------------------- int __thiscall std::wistream::operator>>(void *this, int (__cdecl *a2)(void *)) { return a2(this); } //----- (004C78D0) -------------------------------------------------------- char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004C78F0) -------------------------------------------------------- char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004C7910) -------------------------------------------------------- _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; } // 4C7910: using guessed type char var_D[13]; //----- (004C7A90) -------------------------------------------------------- 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; } // 4C7A90: using guessed type int var_1C[7]; //----- (004C7BF0) -------------------------------------------------------- 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; } // 4C7CBB: conditional instruction was optimized away because eax.4>=4u // 4C7BF0: using guessed type int var_1C[7]; //----- (004C7D90) -------------------------------------------------------- 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; } //----- (004C7EE0) -------------------------------------------------------- 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; } // 4C7EF8: variable 'v7' is possibly undefined //----- (004C7F60) -------------------------------------------------------- _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; } //----- (004C8010) -------------------------------------------------------- _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; } //----- (004C8130) -------------------------------------------------------- _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; } //----- (004C8220) -------------------------------------------------------- _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; } //----- (004C8310) -------------------------------------------------------- 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; } //----- (004C8440) -------------------------------------------------------- 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; } //----- (004C84A0) -------------------------------------------------------- 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; } //----- (004C8500) -------------------------------------------------------- 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; } //----- (004C8570) -------------------------------------------------------- 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; } //----- (004C85E0) -------------------------------------------------------- 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; } //----- (004C8630) -------------------------------------------------------- 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; } // 4C86AF: variable 'v5' is possibly undefined //----- (004C87D0) -------------------------------------------------------- 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; } // 4C8860: variable 'v5' is possibly undefined //----- (004C8980) -------------------------------------------------------- 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; } // 4C8A00: variable 'v6' is possibly undefined //----- (004C8B20) -------------------------------------------------------- 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; } // 4C8B9A: variable 'v6' is possibly undefined //----- (004C8CC0) -------------------------------------------------------- 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; } // 4C8D3F: variable 'v5' is possibly undefined //----- (004C8E60) -------------------------------------------------------- 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; } // 4C8EDF: variable 'v5' is possibly undefined //----- (004C9000) -------------------------------------------------------- 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; } // 4C909C: variable 'v6' is possibly undefined //----- (004C91C0) -------------------------------------------------------- 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; } // 4C925C: variable 'v6' is possibly undefined //----- (004C9380) -------------------------------------------------------- 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_538804; this[31] = 0; this[32] = 0; this[33] = 0; this[34] = 0; this[1] = off_538818; 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; } // 4C93E5: variable 'v8' is possibly undefined // 538804: using guessed type int (*off_538804)(); // 538818: using guessed type int (*off_538818[2])(); //----- (004C9450) -------------------------------------------------------- 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_538804; this[1] = off_538818; return std::wios::init(v2, a2); } // 538804: using guessed type int (*off_538804)(); // 538818: using guessed type int (*off_538818[2])(); //----- (004C94E0) -------------------------------------------------------- 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_538804; this[1] = off_538818; return result; } // 538804: using guessed type int (*off_538804)(); // 538818: using guessed type int (*off_538818[2])(); //----- (004C9540) -------------------------------------------------------- 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_538804; *(_DWORD *)(a1 + 4) = off_538818; return std::wios::init(v1, 0); } // 538804: using guessed type int (*off_538804)(); // 538818: using guessed type int (*off_538818[2])(); //----- (004C95D0) -------------------------------------------------------- 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; } // 4C95F3: variable 'v10' is possibly undefined //----- (004C9640) -------------------------------------------------------- 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); } //----- (004C9670) -------------------------------------------------------- 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; } //----- (004C9690) -------------------------------------------------------- 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); } //----- (004C96B0) -------------------------------------------------------- void __fastcall std::wostream::~wostream(char *a1) { _DWORD *v2; // ecx v2 = a1 + 4; *(v2 - 1) = &off_538804; *v2 = &off_539484; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 538804: using guessed type int (*off_538804)(); // 539484: using guessed type int (*off_539484)(); //----- (004C96E0) -------------------------------------------------------- void __fastcall std::wostream::~wostream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_538804; v1 = a1 + 1; *v1 = &off_539484; std::ios_base::~ios_base((int)v1); } // 538804: using guessed type int (*off_538804)(); // 539484: using guessed type int (*off_539484)(); //----- (004C9700) -------------------------------------------------------- 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; } //----- (004C9720) -------------------------------------------------------- _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; } // 4C973D: variable 'v8' is possibly undefined //----- (004C97A0) -------------------------------------------------------- int __thiscall std::wostream::operator<<(void *this, int (__cdecl *a2)(void *)) { return a2(this); } //----- (004C97B0) -------------------------------------------------------- char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004C97D0) -------------------------------------------------------- char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004C9800) -------------------------------------------------------- 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; } //----- (004C9950) -------------------------------------------------------- int *__thiscall std::wostream::operator<<(int *this, unsigned __int8 a2) { return std::wostream::_M_insert(this, a2); } //----- (004C9980) -------------------------------------------------------- int *__thiscall std::wostream::operator<<(int *this, float a2) { return std::wostream::_M_insert(this, a2); } //----- (004C99E0) -------------------------------------------------------- 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); } //----- (004C9A20) -------------------------------------------------------- int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2) { return std::wostream::_M_insert(this, a2); } //----- (004C9A50) -------------------------------------------------------- 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; } // 4C9A62: variable 'EndPtr' is possibly undefined //----- (004C9AF0) -------------------------------------------------------- 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; } // 4C9B06: variable 'Mode' is possibly undefined // 4C9B8C: variable 'Modea' is possibly undefined // 4C9BA1: variable 'Modeb' is possibly undefined //----- (004C9BE0) -------------------------------------------------------- int __thiscall std::runtime_error::runtime_error(_DWORD *this, int a2) { int result; // eax result = a2; *this = &off_538828; this[1] = *(_DWORD *)(a2 + 4); *(_DWORD *)(a2 + 4) = &unk_51641C; return result; } // 538828: using guessed type void (__cdecl *off_538828)(std::runtime_error *__hidden this); //----- (004C9C00) -------------------------------------------------------- _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_538828; return std::string::string(v3, (char *)this, (int)&v5); } // 538828: using guessed type void (__cdecl *off_538828)(std::runtime_error *__hidden this); //----- (004C9C40) -------------------------------------------------------- _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_538828; return std::__cow_string::__cow_string(v2, *(std::__cow_string **)a2, *(const char **)(a2 + 4), v4); } // 4C9C63: variable 'v4' is possibly undefined // 538828: using guessed type void (__cdecl *off_538828)(std::runtime_error *__hidden this); //----- (004C9C80) -------------------------------------------------------- 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_538828; return std::string::string((unsigned int **)(a1 + 4), this + 1, v4); } // 4C9C96: variable 'v4' is possibly undefined // 538828: using guessed type void (__cdecl *off_538828)(std::runtime_error *__hidden this); //----- (004C9CB0) -------------------------------------------------------- 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_538828; return std::string::string(v3, this, v5); } // 4C9CCA: variable 'v5' is possibly undefined // 538828: using guessed type void (__cdecl *off_538828)(std::runtime_error *__hidden this); //----- (004C9CF0) -------------------------------------------------------- void __fastcall std::runtime_error::~runtime_error(_DWORD *a1) { std::runtime_error::~runtime_error(a1); operator delete(a1); } //----- (004C9D10) -------------------------------------------------------- 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_538828; if ( v1 != (volatile signed __int32 *)&unk_51641C ) { 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); } // 4C9D29: variable 'v3' is possibly undefined // 538828: using guessed type void (__cdecl *off_538828)(std::runtime_error *__hidden this); // 78A9D4: using guessed type int _CRT_MT; // 4C9D10: using guessed type int var_D[3]; //----- (004C9D80) -------------------------------------------------------- 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; } // 4C9D93: variable 'v4' is possibly undefined //----- (004C9DB0) -------------------------------------------------------- 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; } // 4C9DC3: variable 'v4' is possibly undefined //----- (004C9DE0) -------------------------------------------------------- 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); } //----- (004C9E50) -------------------------------------------------------- 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); } //----- (004C9EC0) -------------------------------------------------------- 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); } //----- (004C9F30) -------------------------------------------------------- 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)); } // 4C9F54: variable 'v10' is possibly undefined //----- (004C9FD0) -------------------------------------------------------- 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; } //----- (004CA010) -------------------------------------------------------- bool __fastcall std::ifstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 48)); } //----- (004CA020) -------------------------------------------------------- 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_533B28; *((_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_533B3C; 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_538840; this[29] = off_538854; result = std::filebuf::basic_filebuf((int)(this + 2), (int)(a2 + 2)); this[59] = this + 2; return result; } // 4CA095: variable 'v9' is possibly undefined // 538840: using guessed type int (*off_538840)(); // 538854: using guessed type int (*off_538854[2])(); //----- (004CA140) -------------------------------------------------------- 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_533B28; *((_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_533B3C; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *(_DWORD *)this = &off_538840; *((_DWORD *)this + 29) = off_538854; 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); } // 538840: using guessed type int (*off_538840)(); // 538854: using guessed type int (*off_538854[2])(); //----- (004CA280) -------------------------------------------------------- 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_533B28; *((_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_533B3C; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *(_DWORD *)this = &off_538840; *((_DWORD *)this + 29) = off_538854; 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); } // 538840: using guessed type int (*off_538840)(); // 538854: using guessed type int (*off_538854[2])(); //----- (004CA3C0) -------------------------------------------------------- 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_533B28; *((_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_533B3C; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *(_DWORD *)this = &off_538840; *((_DWORD *)this + 29) = off_538854; 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); } // 538840: using guessed type int (*off_538840)(); // 538854: using guessed type int (*off_538854[2])(); //----- (004CA500) -------------------------------------------------------- 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_533B28; *(_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_533B3C; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_538840; *(_DWORD *)(a1 + 116) = off_538854; std::filebuf::basic_filebuf(a1 + 8); return std::ios::init(v1, a1 + 8); } // 538840: using guessed type int (*off_538840)(); // 538854: using guessed type int (*off_538854[2])(); //----- (004CA5E0) -------------------------------------------------------- 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; } // 4CA61D: variable 'v10' is possibly undefined //----- (004CA6B0) -------------------------------------------------------- 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); } //----- (004CA7A0) -------------------------------------------------------- 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); } //----- (004CA890) -------------------------------------------------------- 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); } //----- (004CA980) -------------------------------------------------------- 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); } //----- (004CAA20) -------------------------------------------------------- void __fastcall std::ifstream::~ifstream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 2; *(v2 - 2) = &off_538840; v2[27] = off_538854; *v2 = &off_5386E0; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 12); a1[2] = &off_538A48; std::locale::~locale((_DWORD **)a1 + 9); *a1 = &unk_533B28; a1[1] = 0; a1[29] = &off_539474; std::ios_base::~ios_base((int)(a1 + 29)); operator delete(a1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538840: using guessed type int (*off_538840)(); // 538854: using guessed type int (*off_538854[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004CAAA0) -------------------------------------------------------- void __fastcall std::ifstream::~ifstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 8); *(v2 - 2) = &off_538840; v2[27] = off_538854; *v2 = &off_5386E0; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 48); *(_DWORD *)(a1 + 8) = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 36)); *(_DWORD *)a1 = &unk_533B28; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 116) = &off_539474; std::ios_base::~ios_base(a1 + 116); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538840: using guessed type int (*off_538840)(); // 538854: using guessed type int (*off_538854[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004CAB10) -------------------------------------------------------- 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_5386E0; std::filebuf::close((int)v3); std::__basic_file::~__basic_file(this + 12); this[2] = &off_538A48; 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; } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004CAB80) -------------------------------------------------------- _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; } // 4CABA4: variable 'v10' is possibly undefined //----- (004CAC20) -------------------------------------------------------- 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); } //----- (004CAC90) -------------------------------------------------------- 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); } //----- (004CAD00) -------------------------------------------------------- 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); } //----- (004CAD70) -------------------------------------------------------- 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)); } // 4CAD94: variable 'v9' is possibly undefined //----- (004CAE10) -------------------------------------------------------- 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; } //----- (004CAE50) -------------------------------------------------------- bool __fastcall std::wifstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 48)); } //----- (004CAE60) -------------------------------------------------------- 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_533B50; this[61] = 0; this[30] = &unk_533B64; 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_538868; this[30] = off_53887C; result = std::wfilebuf::basic_filebuf((int)(this + 2), (int)(a2 + 2)); this[60] = this + 2; return result; } // 4CAEDC: variable 'v9' is possibly undefined // 538868: using guessed type int (*off_538868)(); // 53887C: using guessed type int (*off_53887C[2])(); //----- (004CAF90) -------------------------------------------------------- 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_533B50; this[30] = &unk_533B64; this[1] = 0; std::wios::init(v3, 0); *this = &off_538868; this[30] = off_53887C; 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); } // 538868: using guessed type int (*off_538868)(); // 53887C: using guessed type int (*off_53887C[2])(); //----- (004CB0D0) -------------------------------------------------------- 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_533B50; this[30] = &unk_533B64; this[1] = 0; std::wios::init(v3, 0); *this = &off_538868; this[30] = off_53887C; 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); } // 538868: using guessed type int (*off_538868)(); // 53887C: using guessed type int (*off_53887C[2])(); //----- (004CB210) -------------------------------------------------------- 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_533B50; this[30] = &unk_533B64; this[1] = 0; std::wios::init(v3, 0); *this = &off_538868; this[30] = off_53887C; 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); } // 538868: using guessed type int (*off_538868)(); // 53887C: using guessed type int (*off_53887C[2])(); //----- (004CB350) -------------------------------------------------------- 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_533B50; *(_DWORD *)(a1 + 120) = &unk_533B64; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_538868; *(_DWORD *)(a1 + 120) = off_53887C; std::wfilebuf::basic_filebuf(a1 + 8); return std::wios::init(v1, a1 + 8); } // 538868: using guessed type int (*off_538868)(); // 53887C: using guessed type int (*off_53887C[2])(); //----- (004CB440) -------------------------------------------------------- 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; } // 4CB47D: variable 'v10' is possibly undefined //----- (004CB520) -------------------------------------------------------- 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); } //----- (004CB610) -------------------------------------------------------- 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); } //----- (004CB700) -------------------------------------------------------- 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); } //----- (004CB7F0) -------------------------------------------------------- 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); } //----- (004CB890) -------------------------------------------------------- void __fastcall std::wifstream::~wifstream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 2; *(v2 - 2) = &off_538868; v2[28] = off_53887C; *v2 = &off_538720; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 12); a1[2] = &off_538A88; std::locale::~locale((_DWORD **)a1 + 9); *a1 = &unk_533B50; a1[1] = 0; a1[30] = &off_539484; std::ios_base::~ios_base((int)(a1 + 30)); operator delete(a1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 538868: using guessed type int (*off_538868)(); // 53887C: using guessed type int (*off_53887C[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004CB910) -------------------------------------------------------- void __fastcall std::wifstream::~wifstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 8); *(v2 - 2) = &off_538868; v2[28] = off_53887C; *v2 = &off_538720; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 48); *(_DWORD *)(a1 + 8) = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 36)); *(_DWORD *)a1 = &unk_533B50; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 120) = &off_539484; std::ios_base::~ios_base(a1 + 120); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 538868: using guessed type int (*off_538868)(); // 53887C: using guessed type int (*off_53887C[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004CB980) -------------------------------------------------------- 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_538720; std::wfilebuf::close((int)v3); std::__basic_file::~__basic_file(this + 12); this[2] = &off_538A88; 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; } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004CB9F0) -------------------------------------------------------- _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; } // 4CBA14: variable 'v9' is possibly undefined //----- (004CBA90) -------------------------------------------------------- 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; } // 4CBAB1: variable 'v8' is possibly undefined //----- (004CBB20) -------------------------------------------------------- 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_533B78; *((_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_533B8C; 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_538890; this[3] = off_5388B8; this[2] = off_5388A4; return result; } // 4CBB9A: variable 'v9' is possibly undefined // 538890: using guessed type int (*off_538890)(); // 5388A4: using guessed type int (*off_5388A4[2])(); // 5388B8: using guessed type int (*off_5388B8[2])(); //----- (004CBC20) -------------------------------------------------------- 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_533B78; this[3] = &unk_533B8C; this[1] = 0; std::wios::init(v2, a2); this[2] = &unk_533BA0; this[3] = &unk_533BB4; result = std::wios::init(v2, a2); *this = &off_538890; this[3] = off_5388B8; this[2] = off_5388A4; return result; } // 538890: using guessed type int (*off_538890)(); // 5388A4: using guessed type int (*off_5388A4[2])(); // 5388B8: using guessed type int (*off_5388B8[2])(); //----- (004CBD00) -------------------------------------------------------- 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_533B78; *(_DWORD *)(a1 + 12) = &unk_533B8C; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_533BA0; *(_DWORD *)(a1 + 12) = &unk_533BB4; result = std::wios::init(v1, 0); *(_DWORD *)a1 = &off_538890; *(_DWORD *)(a1 + 12) = off_5388B8; *(_DWORD *)(a1 + 8) = off_5388A4; return result; } // 538890: using guessed type int (*off_538890)(); // 5388A4: using guessed type int (*off_5388A4[2])(); // 5388B8: using guessed type int (*off_5388B8[2])(); //----- (004CBDE0) -------------------------------------------------------- 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; } // 4CBE16: variable 'v14' is possibly undefined //----- (004CBE90) -------------------------------------------------------- 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; } //----- (004CBF20) -------------------------------------------------------- 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; } //----- (004CBFB0) -------------------------------------------------------- void __fastcall std::wiostream::~basic_iostream(char *a1) { _DWORD *v2; // ecx v2 = a1 + 12; *(v2 - 1) = &unk_533BA0; *(v2 - 3) = &unk_533B78; *(v2 - 2) = 0; *v2 = &off_539484; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 539484: using guessed type int (*off_539484)(); //----- (004CBFF0) -------------------------------------------------------- void __fastcall std::wiostream::~basic_iostream(int a1) { _DWORD *v1; // ecx *(_DWORD *)(a1 + 8) = &unk_533BA0; v1 = (_DWORD *)(a1 + 12); *(v1 - 3) = &unk_533B78; *(v1 - 2) = 0; *v1 = &off_539484; std::ios_base::~ios_base((int)v1); } // 539484: using guessed type int (*off_539484)(); //----- (004CC020) -------------------------------------------------------- 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; } //----- (004CC070) -------------------------------------------------------- _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; } // 4CC091: variable 'v9' is possibly undefined //----- (004CC100) -------------------------------------------------------- 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); } //----- (004CC170) -------------------------------------------------------- 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); } //----- (004CC1E0) -------------------------------------------------------- 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); } //----- (004CC250) -------------------------------------------------------- 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)); } // 4CC274: variable 'v9' is possibly undefined //----- (004CC2E0) -------------------------------------------------------- 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; } //----- (004CC320) -------------------------------------------------------- bool __fastcall std::ofstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 44)); } //----- (004CC330) -------------------------------------------------------- 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_533BC8; *((_WORD *)this + 114) = 0; v4 = *a2; this[56] = 0; v5 = *(_DWORD *)(v4 - 12); this[58] = 0; this[59] = 0; this[28] = &unk_533BDC; 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_5388CC; this[58] = 0; v6 = *((_DWORD *)v9 + 28); this[28] = off_5388E0; *((_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; } // 4CC39F: variable 'v8' is possibly undefined // 5388CC: using guessed type int (*off_5388CC)(); // 5388E0: using guessed type int (*off_5388E0[2])(); //----- (004CC440) -------------------------------------------------------- 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_533BC8; *((_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_533BDC; std::ios::init(v3, 0); *(_DWORD *)this = &off_5388CC; *((_DWORD *)this + 28) = off_5388E0; 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); } // 5388CC: using guessed type int (*off_5388CC)(); // 5388E0: using guessed type int (*off_5388E0[2])(); //----- (004CC560) -------------------------------------------------------- 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_533BC8; *((_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_533BDC; std::ios::init(v3, 0); *(_DWORD *)this = &off_5388CC; *((_DWORD *)this + 28) = off_5388E0; 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); } // 5388CC: using guessed type int (*off_5388CC)(); // 5388E0: using guessed type int (*off_5388E0[2])(); //----- (004CC680) -------------------------------------------------------- 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_533BC8; *((_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_533BDC; std::ios::init(v3, 0); *(_DWORD *)this = &off_5388CC; *((_DWORD *)this + 28) = off_5388E0; 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); } // 5388CC: using guessed type int (*off_5388CC)(); // 5388E0: using guessed type int (*off_5388E0[2])(); //----- (004CC7B0) -------------------------------------------------------- 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_533BC8; *(_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_533BDC; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_5388CC; *(_DWORD *)(a1 + 112) = off_5388E0; std::filebuf::basic_filebuf(a1 + 4); return std::ios::init(v1, a1 + 4); } // 5388CC: using guessed type int (*off_5388CC)(); // 5388E0: using guessed type int (*off_5388E0[2])(); //----- (004CC880) -------------------------------------------------------- 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; } // 4CC8B5: variable 'v11' is possibly undefined //----- (004CC940) -------------------------------------------------------- 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); } //----- (004CCA20) -------------------------------------------------------- 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); } //----- (004CCB00) -------------------------------------------------------- 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); } //----- (004CCBE0) -------------------------------------------------------- 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); } //----- (004CCC70) -------------------------------------------------------- void __fastcall std::ofstream::~ofstream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 1; *(v2 - 1) = &off_5388CC; v2[27] = off_5388E0; *v2 = &off_5386E0; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 11); a1[1] = &off_538A48; std::locale::~locale((_DWORD **)a1 + 8); *a1 = &unk_533BC8; a1[28] = &off_539474; std::ios_base::~ios_base((int)(a1 + 28)); operator delete(a1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 5388CC: using guessed type int (*off_5388CC)(); // 5388E0: using guessed type int (*off_5388E0[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004CCCE0) -------------------------------------------------------- void __fastcall std::ofstream::~ofstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 1) = &off_5388CC; v2[27] = off_5388E0; *v2 = &off_5386E0; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_533BC8; *(_DWORD *)(a1 + 112) = &off_539474; std::ios_base::~ios_base(a1 + 112); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 5388CC: using guessed type int (*off_5388CC)(); // 5388E0: using guessed type int (*off_5388E0[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004CCD50) -------------------------------------------------------- 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_5386E0; std::filebuf::close((int)v3); std::__basic_file::~__basic_file(this + 11); this[1] = &off_538A48; std::locale::~locale((_DWORD **)this + 8); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(_DWORD *)((char *)this + result) = a2[2]; return result; } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004CCDC0) -------------------------------------------------------- _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; } // 4CCDE4: variable 'v9' is possibly undefined //----- (004CCE50) -------------------------------------------------------- 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); } //----- (004CCEC0) -------------------------------------------------------- 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); } //----- (004CCF30) -------------------------------------------------------- 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); } //----- (004CCFA0) -------------------------------------------------------- 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)); } // 4CCFC4: variable 'v8' is possibly undefined //----- (004CD030) -------------------------------------------------------- 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; } //----- (004CD070) -------------------------------------------------------- bool __fastcall std::wofstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 44)); } //----- (004CD080) -------------------------------------------------------- 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_533BF0; this[59] = 0; this[60] = 0; this[61] = 0; this[62] = 0; this[29] = &unk_533C04; 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_5388F4; this[59] = 0; v6 = *((_DWORD *)v9 + 28); this[29] = off_538908; *((_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; } // 4CD0F6: variable 'v8' is possibly undefined // 5388F4: using guessed type int (*off_5388F4)(); // 538908: using guessed type int (*off_538908[2])(); //----- (004CD1A0) -------------------------------------------------------- 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_533BF0; this[29] = &unk_533C04; std::wios::init(v3, 0); *this = &off_5388F4; this[29] = off_538908; 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); } // 5388F4: using guessed type int (*off_5388F4)(); // 538908: using guessed type int (*off_538908[2])(); //----- (004CD2D0) -------------------------------------------------------- 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_533BF0; this[29] = &unk_533C04; std::wios::init(v3, 0); *this = &off_5388F4; this[29] = off_538908; 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); } // 5388F4: using guessed type int (*off_5388F4)(); // 538908: using guessed type int (*off_538908[2])(); //----- (004CD400) -------------------------------------------------------- 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_533BF0; this[29] = &unk_533C04; std::wios::init(v3, 0); *this = &off_5388F4; this[29] = off_538908; 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); } // 5388F4: using guessed type int (*off_5388F4)(); // 538908: using guessed type int (*off_538908[2])(); //----- (004CD530) -------------------------------------------------------- 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_533BF0; *(_DWORD *)(a1 + 116) = &unk_533C04; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_5388F4; *(_DWORD *)(a1 + 116) = off_538908; std::wfilebuf::basic_filebuf(a1 + 4); return std::wios::init(v1, a1 + 4); } // 5388F4: using guessed type int (*off_5388F4)(); // 538908: using guessed type int (*off_538908[2])(); //----- (004CD610) -------------------------------------------------------- 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; } // 4CD645: variable 'v11' is possibly undefined //----- (004CD6E0) -------------------------------------------------------- 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); } //----- (004CD7C0) -------------------------------------------------------- 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); } //----- (004CD8A0) -------------------------------------------------------- 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); } //----- (004CD980) -------------------------------------------------------- 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); } //----- (004CDA10) -------------------------------------------------------- void __fastcall std::wofstream::~wofstream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 1; *(v2 - 1) = &off_5388F4; v2[28] = off_538908; *v2 = &off_538720; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 11); a1[1] = &off_538A88; std::locale::~locale((_DWORD **)a1 + 8); *a1 = &unk_533BF0; a1[29] = &off_539484; std::ios_base::~ios_base((int)(a1 + 29)); operator delete(a1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 5388F4: using guessed type int (*off_5388F4)(); // 538908: using guessed type int (*off_538908[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004CDA80) -------------------------------------------------------- void __fastcall std::wofstream::~wofstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 1) = &off_5388F4; v2[28] = off_538908; *v2 = &off_538720; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_533BF0; *(_DWORD *)(a1 + 116) = &off_539484; std::ios_base::~ios_base(a1 + 116); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 5388F4: using guessed type int (*off_5388F4)(); // 538908: using guessed type int (*off_538908[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004CDAF0) -------------------------------------------------------- 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_538720; std::wfilebuf::close((int)v3); std::__basic_file::~__basic_file(this + 11); this[1] = &off_538A88; std::locale::~locale((_DWORD **)this + 8); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(_DWORD *)((char *)this + result) = a2[2]; return result; } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004CDB60) -------------------------------------------------------- _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; } // 4CDB84: variable 'v8' is possibly undefined //----- (004CDBF0) -------------------------------------------------------- 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_538918; 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; } // 538918: using guessed type int (*off_538918)(); //----- (004CDC90) -------------------------------------------------------- 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_538918; 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; } // 538918: using guessed type int (*off_538918)(); //----- (004CDD30) -------------------------------------------------------- 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_538918; 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; } // 538918: using guessed type int (*off_538918)(); //----- (004CDDD0) -------------------------------------------------------- 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_538918; 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; } // 538918: using guessed type int (*off_538918)(); //----- (004CDE70) -------------------------------------------------------- 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_538918; 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; } // 538918: using guessed type int (*off_538918)(); //----- (004CDF10) -------------------------------------------------------- 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_538918; 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; } // 538918: using guessed type int (*off_538918)(); //----- (004CDFB0) -------------------------------------------------------- void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538918; std::codecvt::~codecvt(v2); operator delete(a1); } // 4CDFBC: variable 'v2' is possibly undefined // 538918: using guessed type int (*off_538918)(); //----- (004CDFD0) -------------------------------------------------------- void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538918; std::codecvt::~codecvt(a1); } // 4CDFD0: variable 'v1' is possibly undefined // 538918: using guessed type int (*off_538918)(); //----- (004CDFE0) -------------------------------------------------------- void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538918; std::codecvt::~codecvt(a1); } // 4CDFE0: variable 'v1' is possibly undefined // 538918: using guessed type int (*off_538918)(); //----- (004CDFF0) -------------------------------------------------------- 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_538944; 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; } // 538944: using guessed type int (*off_538944)(); //----- (004CE090) -------------------------------------------------------- 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_538944; 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; } // 538944: using guessed type int (*off_538944)(); //----- (004CE130) -------------------------------------------------------- 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_538944; 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; } // 538944: using guessed type int (*off_538944)(); //----- (004CE1D0) -------------------------------------------------------- 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_538944; 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; } // 538944: using guessed type int (*off_538944)(); //----- (004CE270) -------------------------------------------------------- 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_538944; 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; } // 538944: using guessed type int (*off_538944)(); //----- (004CE310) -------------------------------------------------------- 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_538944; 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; } // 538944: using guessed type int (*off_538944)(); //----- (004CE3B0) -------------------------------------------------------- void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538944; std::codecvt::~codecvt(v2); operator delete(a1); } // 4CE3BC: variable 'v2' is possibly undefined // 538944: using guessed type int (*off_538944)(); //----- (004CE3D0) -------------------------------------------------------- void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538944; std::codecvt::~codecvt(a1); } // 4CE3D0: variable 'v1' is possibly undefined // 538944: using guessed type int (*off_538944)(); //----- (004CE3E0) -------------------------------------------------------- void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538944; std::codecvt::~codecvt(a1); } // 4CE3E0: variable 'v1' is possibly undefined // 538944: using guessed type int (*off_538944)(); //----- (004CE3F0) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_539234; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_538970; 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; } // 538970: using guessed type int (*off_538970)(); // 539234: using guessed type int (*off_539234)(); //----- (004CE4B0) -------------------------------------------------------- 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_539234; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_538970; 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; } // 538970: using guessed type int (*off_538970)(); // 539234: using guessed type int (*off_539234)(); //----- (004CE580) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_539234; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_538970; 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; } // 538970: using guessed type int (*off_538970)(); // 539234: using guessed type int (*off_539234)(); //----- (004CE640) -------------------------------------------------------- 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_539234; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_538970; 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; } // 538970: using guessed type int (*off_538970)(); // 539234: using guessed type int (*off_539234)(); //----- (004CE710) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539234; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4CE729: variable 'v2' is possibly undefined // 539234: using guessed type int (*off_539234)(); //----- (004CE740) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539234; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CE749: variable 'v1' is possibly undefined // 539234: using guessed type int (*off_539234)(); //----- (004CE770) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539234; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CE779: variable 'v1' is possibly undefined // 539234: using guessed type int (*off_539234)(); //----- (004CE7A0) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_539250; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_53898C; 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; } // 53898C: using guessed type int (*off_53898C)(); // 539250: using guessed type int (*off_539250)(); //----- (004CE860) -------------------------------------------------------- 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_539250; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_53898C; 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; } // 53898C: using guessed type int (*off_53898C)(); // 539250: using guessed type int (*off_539250)(); //----- (004CE930) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_539250; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_53898C; 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; } // 53898C: using guessed type int (*off_53898C)(); // 539250: using guessed type int (*off_539250)(); //----- (004CE9F0) -------------------------------------------------------- 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_539250; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_53898C; 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; } // 53898C: using guessed type int (*off_53898C)(); // 539250: using guessed type int (*off_539250)(); //----- (004CEAC0) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539250; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4CEAD9: variable 'v2' is possibly undefined // 539250: using guessed type int (*off_539250)(); //----- (004CEAF0) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539250; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CEAF9: variable 'v1' is possibly undefined // 539250: using guessed type int (*off_539250)(); //----- (004CEB20) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539250; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4CEB29: variable 'v1' is possibly undefined // 539250: using guessed type int (*off_539250)(); //----- (004CEB50) -------------------------------------------------------- _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_5389A8; return result; } // 4CEB5D: variable 'v5' is possibly undefined // 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); //----- (004CEB80) -------------------------------------------------------- _DWORD *__thiscall std::overflow_error::overflow_error(_DWORD *this, int a2) { _DWORD *result; // eax result = std::runtime_error::runtime_error(this, a2); *this = &off_5389A8; return result; } // 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); //----- (004CEBB0) -------------------------------------------------------- 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_5389A8; return result; } // 4CEBBD: variable 'v5' is possibly undefined // 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); //----- (004CEBE0) -------------------------------------------------------- void __fastcall std::overflow_error::~overflow_error(_DWORD *a1) { *a1 = &off_5389A8; std::runtime_error::~runtime_error(a1); operator delete(a1); } // 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); //----- (004CEC00) -------------------------------------------------------- void __fastcall std::overflow_error::~overflow_error(_DWORD *a1) { *a1 = &off_5389A8; std::runtime_error::~runtime_error(a1); } // 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); //----- (004CEC10) -------------------------------------------------------- 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; } //----- (004CEC2C) -------------------------------------------------------- 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; } //----- (004CEC48) -------------------------------------------------------- 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; } //----- (004CEC64) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) { operator delete(a1); } //----- (004CEC74) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) { void *v1; // ebx v1 = *(void **)(a1 + 12); if ( v1 ) { WXML::DOMLib::WXMLDom::~WXMLDom(*(_DWORD *)(a1 + 12)); operator delete(v1); } } //----- (004CEC98) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004CECA0) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) { operator delete(a1); } //----- (004CECB4) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) { operator delete(a1); } //----- (004CECC4) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1, int a2) { void ***v2; // ebx v2 = *(void ****)(a1 + 12); if ( v2 ) { std::vector::~vector(v2 + 6, a2); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)v2); operator delete(v2); } } //----- (004CECF0) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004CECF8) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) { operator delete(a1); } //----- (004CED0C) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) { operator delete(a1); } //----- (004CED1C) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) { int v1; // ebx v1 = *(_DWORD *)(a1 + 12); if ( v1 ) { std::vector>::~vector((void **)(v1 + 52)); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v1 + 40)); std::string::_M_dispose((void **)v1); operator delete((void *)v1); } } //----- (004CED50) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004CED58) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( void *a1) { operator delete(a1); } //----- (004CED6C) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) { operator delete(a1); } //----- (004CED7C) -------------------------------------------------------- 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; } //----- (004CED8C) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004CED94) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) { operator delete(a1); } //----- (004CEDA8) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) { operator delete(a1); } //----- (004CEDB8) -------------------------------------------------------- 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); } } //----- (004CEDDC) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004CEDE4) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) { operator delete(a1); } //----- (004CEE00) -------------------------------------------------------- _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; } //----- (004CEE80) -------------------------------------------------------- _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; } //----- (004CEF20) -------------------------------------------------------- int __thiscall std::streambuf::__safe_gbump(_DWORD *this, int a2) { int result; // eax result = a2; this[2] += a2; return result; } //----- (004CEF30) -------------------------------------------------------- int __thiscall std::streambuf::__safe_pbump(_DWORD *this, int a2) { int result; // eax result = a2; this[5] += a2; return result; } //----- (004CEF40) -------------------------------------------------------- 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; } //----- (004CEF60) -------------------------------------------------------- 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; } //----- (004CEF80) -------------------------------------------------------- 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); } // 4CEFE1: variable 'v14' is possibly undefined //----- (004CF020) -------------------------------------------------------- int std::streambuf::sync() { return 0; } //----- (004CF030) -------------------------------------------------------- int __thiscall std::streambuf::gbump(_DWORD *this, int a2) { int result; // eax result = a2; this[2] += a2; return result; } //----- (004CF050) -------------------------------------------------------- int __thiscall std::streambuf::pbump(_DWORD *this, int a2) { int result; // eax result = a2; this[5] += a2; return result; } //----- (004CF060) -------------------------------------------------------- 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; } //----- (004CF090) -------------------------------------------------------- int __fastcall std::streambuf::sgetn(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); } //----- (004CF0A0) -------------------------------------------------------- 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); } //----- (004CF0E0) -------------------------------------------------------- int __fastcall std::streambuf::sputn(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); } //----- (004CF0F0) -------------------------------------------------------- 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; } //----- (004CF140) -------------------------------------------------------- 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; } //----- (004CF1C0) -------------------------------------------------------- int __fastcall std::streambuf::sbumpc(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); } //----- (004CF1D0) -------------------------------------------------------- void *__thiscall std::streambuf::setbuf(void *this, int a2, int a3) { return this; } //----- (004CF1E0) -------------------------------------------------------- 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(); } //----- (004CF2A0) -------------------------------------------------------- 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; } //----- (004CF300) -------------------------------------------------------- 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; } //----- (004CF3D0) -------------------------------------------------------- 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; } //----- (004CF470) -------------------------------------------------------- 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(); } //----- (004CF490) -------------------------------------------------------- _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; } //----- (004CF4B0) -------------------------------------------------------- _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; } //----- (004CF4D0) -------------------------------------------------------- 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; } //----- (004CF520) -------------------------------------------------------- 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; } //----- (004CF550) -------------------------------------------------------- int __stdcall std::streambuf::overflow(int a1) { return -1; } //----- (004CF560) -------------------------------------------------------- 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; } // 4CF574: variable 'v6' is possibly undefined // 4CF040: using guessed type int __stdcall std::streambuf::imbue(int); //----- (004CF5D0) -------------------------------------------------------- int __stdcall std::streambuf::pbackfail(int a1) { return -1; } //----- (004CF5E0) -------------------------------------------------------- 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; } //----- (004CF600) -------------------------------------------------------- int std::streambuf::showmanyc() { return 0; } //----- (004CF610) -------------------------------------------------------- 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; } //----- (004CF650) -------------------------------------------------------- int std::streambuf::underflow() { return -1; } //----- (004CF660) -------------------------------------------------------- volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( _DWORD *a1@, int a2, const std::locale *a3) { volatile signed __int32 **v3; // ecx *a1 = &off_538A48; 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); } // 538A48: using guessed type int (*off_538A48)(); //----- (004CF6A0) -------------------------------------------------------- int __fastcall std::streambuf::basic_streambuf(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_538A48; 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); } // 538A48: using guessed type int (*off_538A48)(); //----- (004CF6E0) -------------------------------------------------------- volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( _DWORD *a1@, int a2, const std::locale *a3) { volatile signed __int32 **v3; // ecx *a1 = &off_538A48; 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); } // 538A48: using guessed type int (*off_538A48)(); //----- (004CF720) -------------------------------------------------------- int __fastcall std::streambuf::basic_streambuf(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_538A48; 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); } // 538A48: using guessed type int (*off_538A48)(); //----- (004CF760) -------------------------------------------------------- void __fastcall std::streambuf::~streambuf(char *a1) { _DWORD **v2; // ecx v2 = (_DWORD **)(a1 + 28); *(v2 - 7) = &off_538A48; std::locale::~locale(v2); operator delete(a1); } // 538A48: using guessed type int (*off_538A48)(); //----- (004CF790) -------------------------------------------------------- void __fastcall std::streambuf::~streambuf(int a1) { *(_DWORD *)a1 = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 28)); } // 538A48: using guessed type int (*off_538A48)(); //----- (004CF7A0) -------------------------------------------------------- void __fastcall std::streambuf::~streambuf(int a1) { *(_DWORD *)a1 = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 28)); } // 538A48: using guessed type int (*off_538A48)(); //----- (004CF7B0) -------------------------------------------------------- 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; } //----- (004CF800) -------------------------------------------------------- _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; } //----- (004CF880) -------------------------------------------------------- _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; } //----- (004CF920) -------------------------------------------------------- int __thiscall std::wstreambuf::__safe_gbump(_DWORD *this, int a2) { int result; // eax result = 2 * a2; this[2] += 2 * a2; return result; } //----- (004CF930) -------------------------------------------------------- int __thiscall std::wstreambuf::__safe_pbump(_DWORD *this, int a2) { int result; // eax result = 2 * a2; this[5] += 2 * a2; return result; } //----- (004CF940) -------------------------------------------------------- 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; } //----- (004CF960) -------------------------------------------------------- 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; } //----- (004CF980) -------------------------------------------------------- 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); } // 4CF9E1: variable 'v14' is possibly undefined //----- (004CFA20) -------------------------------------------------------- int std::wstreambuf::sync() { return 0; } //----- (004CFA30) -------------------------------------------------------- int __thiscall std::wstreambuf::gbump(_DWORD *this, int a2) { int result; // eax result = 2 * a2; this[2] += 2 * a2; return result; } //----- (004CFA50) -------------------------------------------------------- int __thiscall std::wstreambuf::pbump(_DWORD *this, int a2) { int result; // eax result = 2 * a2; this[5] += 2 * a2; return result; } //----- (004CFA60) -------------------------------------------------------- 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; } //----- (004CFA90) -------------------------------------------------------- int __fastcall std::wstreambuf::sgetn(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); } //----- (004CFAA0) -------------------------------------------------------- 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; } //----- (004CFAE0) -------------------------------------------------------- int __fastcall std::wstreambuf::sputn(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); } //----- (004CFAF0) -------------------------------------------------------- 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; } //----- (004CFB40) -------------------------------------------------------- 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; } //----- (004CFBC0) -------------------------------------------------------- int __fastcall std::wstreambuf::sbumpc(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); } //----- (004CFBD0) -------------------------------------------------------- void *__thiscall std::wstreambuf::setbuf(void *this, int a2, int a3) { return this; } //----- (004CFBE0) -------------------------------------------------------- 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(); } //----- (004CFCA0) -------------------------------------------------------- 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; } //----- (004CFD00) -------------------------------------------------------- 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; } //----- (004CFDD0) -------------------------------------------------------- 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; } //----- (004CFE70) -------------------------------------------------------- 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(); } //----- (004CFE90) -------------------------------------------------------- _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; } //----- (004CFEB0) -------------------------------------------------------- _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; } //----- (004CFED0) -------------------------------------------------------- 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; } //----- (004CFF20) -------------------------------------------------------- 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; } //----- (004CFF50) -------------------------------------------------------- int __stdcall std::wstreambuf::overflow(int a1) { return -1; } //----- (004CFF60) -------------------------------------------------------- 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; } // 4CFF74: variable 'v6' is possibly undefined // 4CFA40: using guessed type int __stdcall std::wstreambuf::imbue(int); //----- (004CFFD0) -------------------------------------------------------- int __stdcall std::wstreambuf::pbackfail(int a1) { return -1; } //----- (004CFFE0) -------------------------------------------------------- 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; } //----- (004D0000) -------------------------------------------------------- int std::wstreambuf::showmanyc() { return 0; } //----- (004D0010) -------------------------------------------------------- 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 (__stdcall **)(_DWORD))(*this + 44))((unsigned __int16)a2); } return result; } //----- (004D0050) -------------------------------------------------------- int std::wstreambuf::underflow() { return -1; } //----- (004D0060) -------------------------------------------------------- volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( _DWORD *a1@, int a2, const std::locale *a3) { volatile signed __int32 **v3; // ecx *a1 = &off_538A88; 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); } // 538A88: using guessed type int (*off_538A88)(); //----- (004D00A0) -------------------------------------------------------- int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_538A88; 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); } // 538A88: using guessed type int (*off_538A88)(); //----- (004D00E0) -------------------------------------------------------- volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( _DWORD *a1@, int a2, const std::locale *a3) { volatile signed __int32 **v3; // ecx *a1 = &off_538A88; 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); } // 538A88: using guessed type int (*off_538A88)(); //----- (004D0120) -------------------------------------------------------- int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_538A88; 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); } // 538A88: using guessed type int (*off_538A88)(); //----- (004D0160) -------------------------------------------------------- void __fastcall std::wstreambuf::~wstreambuf(char *a1) { _DWORD **v2; // ecx v2 = (_DWORD **)(a1 + 28); *(v2 - 7) = &off_538A88; std::locale::~locale(v2); operator delete(a1); } // 538A88: using guessed type int (*off_538A88)(); //----- (004D0190) -------------------------------------------------------- void __fastcall std::wstreambuf::~wstreambuf(int a1) { *(_DWORD *)a1 = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 28)); } // 538A88: using guessed type int (*off_538A88)(); //----- (004D01A0) -------------------------------------------------------- void __fastcall std::wstreambuf::~wstreambuf(int a1) { *(_DWORD *)a1 = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 28)); } // 538A88: using guessed type int (*off_538A88)(); //----- (004D01B0) -------------------------------------------------------- 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; } //----- (004D0200) -------------------------------------------------------- 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_538AC8; 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; } // 538AC8: using guessed type int (*off_538AC8)(); //----- (004D02A0) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) { return std::messages_byname::messages_byname(this, *a2, a3); } //----- (004D02B0) -------------------------------------------------------- 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_538AC8; 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; } // 538AC8: using guessed type int (*off_538AC8)(); //----- (004D0350) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) { return std::messages_byname::messages_byname(this, *a2, a3); } //----- (004D0360) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539368; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4D0379: variable 'v2' is possibly undefined // 539368: using guessed type int (*off_539368)(); //----- (004D0390) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539368; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4D0399: variable 'v1' is possibly undefined // 539368: using guessed type int (*off_539368)(); //----- (004D03C0) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539368; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4D03C9: variable 'v1' is possibly undefined // 539368: using guessed type int (*off_539368)(); //----- (004D03F0) -------------------------------------------------------- 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_538AE4; 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; } // 538AE4: using guessed type int (*off_538AE4)(); //----- (004D0490) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) { return std::messages_byname::messages_byname(this, *a2, a3); } //----- (004D04A0) -------------------------------------------------------- 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_538AE4; 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; } // 538AE4: using guessed type int (*off_538AE4)(); //----- (004D0540) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) { return std::messages_byname::messages_byname(this, *a2, a3); } //----- (004D0550) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539384; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4D0569: variable 'v2' is possibly undefined // 539384: using guessed type int (*off_539384)(); //----- (004D0580) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539384; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4D0589: variable 'v1' is possibly undefined // 539384: using guessed type int (*off_539384)(); //----- (004D05B0) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539384; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4D05B9: variable 'v1' is possibly undefined // 539384: using guessed type int (*off_539384)(); //----- (004D05E0) -------------------------------------------------------- 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_5393A0; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538B00; 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; } // 538B00: using guessed type int (*off_538B00)(); // 5393A0: using guessed type int (*off_5393A0)(); //----- (004D06D0) -------------------------------------------------------- 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_5393A0; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538B00; 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; } // 538B00: using guessed type int (*off_538B00)(); // 5393A0: using guessed type int (*off_5393A0)(); //----- (004D07C0) -------------------------------------------------------- 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_5393A0; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538B00; 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; } // 538B00: using guessed type int (*off_538B00)(); // 5393A0: using guessed type int (*off_5393A0)(); //----- (004D08B0) -------------------------------------------------------- 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_5393A0; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538B00; 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; } // 538B00: using guessed type int (*off_538B00)(); // 5393A0: using guessed type int (*off_5393A0)(); //----- (004D09A0) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538B00; std::numpunct::~numpunct(v2); operator delete(a1); } // 4D09AC: variable 'v2' is possibly undefined // 538B00: using guessed type int (*off_538B00)(); //----- (004D09C0) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538B00; std::numpunct::~numpunct(a1); } // 4D09C0: variable 'v1' is possibly undefined // 538B00: using guessed type int (*off_538B00)(); //----- (004D09D0) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538B00; std::numpunct::~numpunct(a1); } // 4D09D0: variable 'v1' is possibly undefined // 538B00: using guessed type int (*off_538B00)(); //----- (004D09E0) -------------------------------------------------------- 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_5393C4; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538B24; 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; } // 538B24: using guessed type int (*off_538B24)(); // 5393C4: using guessed type int (*off_5393C4)(); //----- (004D0AD0) -------------------------------------------------------- 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_5393C4; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538B24; 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; } // 538B24: using guessed type int (*off_538B24)(); // 5393C4: using guessed type int (*off_5393C4)(); //----- (004D0BC0) -------------------------------------------------------- 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_5393C4; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538B24; 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; } // 538B24: using guessed type int (*off_538B24)(); // 5393C4: using guessed type int (*off_5393C4)(); //----- (004D0CB0) -------------------------------------------------------- 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_5393C4; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538B24; 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; } // 538B24: using guessed type int (*off_538B24)(); // 5393C4: using guessed type int (*off_5393C4)(); //----- (004D0DA0) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538B24; std::numpunct::~numpunct(v2); operator delete(a1); } // 4D0DAC: variable 'v2' is possibly undefined // 538B24: using guessed type int (*off_538B24)(); //----- (004D0DC0) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538B24; std::numpunct::~numpunct(a1); } // 4D0DC0: variable 'v1' is possibly undefined // 538B24: using guessed type int (*off_538B24)(); //----- (004D0DD0) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538B24; std::numpunct::~numpunct(a1); } // 4D0DD0: variable 'v1' is possibly undefined // 538B24: using guessed type int (*off_538B24)(); //----- (004D0DE0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B48; result = a3 != 0; this[1] = result; return result; } // 538B48: using guessed type int (*off_538B48)(); //----- (004D0E00) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B48; result = a3 != 0; this[1] = result; return result; } // 538B48: using guessed type int (*off_538B48)(); //----- (004D0E20) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B48; result = a3 != 0; this[1] = result; return result; } // 538B48: using guessed type int (*off_538B48)(); //----- (004D0E40) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B48; result = a3 != 0; this[1] = result; return result; } // 538B48: using guessed type int (*off_538B48)(); //----- (004D0E60) -------------------------------------------------------- void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5393E8; std::locale::facet::~facet(v2); operator delete(a1); } // 4D0E6C: variable 'v2' is possibly undefined // 5393E8: using guessed type int (*off_5393E8)(); //----- (004D0E80) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5393E8; std::locale::facet::~facet(a1); } // 4D0E80: variable 'v1' is possibly undefined // 5393E8: using guessed type int (*off_5393E8)(); //----- (004D0E90) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5393E8; std::locale::facet::~facet(a1); } // 4D0E90: variable 'v1' is possibly undefined // 5393E8: using guessed type int (*off_5393E8)(); //----- (004D0EA0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B70; result = a3 != 0; this[1] = result; return result; } // 538B70: using guessed type int (*off_538B70)(); //----- (004D0EC0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B70; result = a3 != 0; this[1] = result; return result; } // 538B70: using guessed type int (*off_538B70)(); //----- (004D0EE0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B70; result = a3 != 0; this[1] = result; return result; } // 538B70: using guessed type int (*off_538B70)(); //----- (004D0F00) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B70; result = a3 != 0; this[1] = result; return result; } // 538B70: using guessed type int (*off_538B70)(); //----- (004D0F20) -------------------------------------------------------- void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539410; std::locale::facet::~facet(v2); operator delete(a1); } // 4D0F2C: variable 'v2' is possibly undefined // 539410: using guessed type int (*off_539410)(); //----- (004D0F40) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539410; std::locale::facet::~facet(a1); } // 4D0F40: variable 'v1' is possibly undefined // 539410: using guessed type int (*off_539410)(); //----- (004D0F50) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539410; std::locale::facet::~facet(a1); } // 4D0F50: variable 'v1' is possibly undefined // 539410: using guessed type int (*off_539410)(); //----- (004D0F60) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B98; result = a3 != 0; this[1] = result; return result; } // 538B98: using guessed type int (*off_538B98)(); //----- (004D0F80) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B98; result = a3 != 0; this[1] = result; return result; } // 538B98: using guessed type int (*off_538B98)(); //----- (004D0FA0) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B98; result = a3 != 0; this[1] = result; return result; } // 538B98: using guessed type int (*off_538B98)(); //----- (004D0FC0) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B98; result = a3 != 0; this[1] = result; return result; } // 538B98: using guessed type int (*off_538B98)(); //----- (004D0FE0) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B98; result = a3 != 0; this[1] = result; return result; } // 538B98: using guessed type int (*off_538B98)(); //----- (004D1000) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538B98; result = a3 != 0; this[1] = result; return result; } // 538B98: using guessed type int (*off_538B98)(); //----- (004D1020) -------------------------------------------------------- void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539438; std::locale::facet::~facet(v2); operator delete(a1); } // 4D102C: variable 'v2' is possibly undefined // 539438: using guessed type int (*off_539438)(); //----- (004D1040) -------------------------------------------------------- void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539438; std::locale::facet::~facet(a1); } // 4D1040: variable 'v1' is possibly undefined // 539438: using guessed type int (*off_539438)(); //----- (004D1050) -------------------------------------------------------- void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539438; std::locale::facet::~facet(a1); } // 4D1050: variable 'v1' is possibly undefined // 539438: using guessed type int (*off_539438)(); //----- (004D1060) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538BAC; result = a3 != 0; this[1] = result; return result; } // 538BAC: using guessed type int (*off_538BAC)(); //----- (004D1080) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538BAC; result = a3 != 0; this[1] = result; return result; } // 538BAC: using guessed type int (*off_538BAC)(); //----- (004D10A0) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538BAC; result = a3 != 0; this[1] = result; return result; } // 538BAC: using guessed type int (*off_538BAC)(); //----- (004D10C0) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538BAC; result = a3 != 0; this[1] = result; return result; } // 538BAC: using guessed type int (*off_538BAC)(); //----- (004D10E0) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538BAC; result = a3 != 0; this[1] = result; return result; } // 538BAC: using guessed type int (*off_538BAC)(); //----- (004D1100) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538BAC; result = a3 != 0; this[1] = result; return result; } // 538BAC: using guessed type int (*off_538BAC)(); //----- (004D1120) -------------------------------------------------------- void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_53944C; std::locale::facet::~facet(v2); operator delete(a1); } // 4D112C: variable 'v2' is possibly undefined // 53944C: using guessed type int (*off_53944C)(); //----- (004D1140) -------------------------------------------------------- void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_53944C; std::locale::facet::~facet(a1); } // 4D1140: variable 'v1' is possibly undefined // 53944C: using guessed type int (*off_53944C)(); //----- (004D1150) -------------------------------------------------------- void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_53944C; std::locale::facet::~facet(a1); } // 4D1150: variable 'v1' is possibly undefined // 53944C: using guessed type int (*off_53944C)(); //----- (004D1160) -------------------------------------------------------- _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_538BC0; return result; } // 4D116D: variable 'v5' is possibly undefined // 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); //----- (004D1190) -------------------------------------------------------- _DWORD *__thiscall std::underflow_error::underflow_error(_DWORD *this, int a2) { _DWORD *result; // eax result = std::runtime_error::runtime_error(this, a2); *this = &off_538BC0; return result; } // 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); //----- (004D11C0) -------------------------------------------------------- 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_538BC0; return result; } // 4D11CD: variable 'v5' is possibly undefined // 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); //----- (004D11F0) -------------------------------------------------------- void __fastcall std::underflow_error::~underflow_error(_DWORD *a1) { *a1 = &off_538BC0; std::runtime_error::~runtime_error(a1); operator delete(a1); } // 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); //----- (004D1210) -------------------------------------------------------- void __fastcall std::underflow_error::~underflow_error(_DWORD *a1) { *a1 = &off_538BC0; std::runtime_error::~runtime_error(a1); } // 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); //----- (004D1220) -------------------------------------------------------- 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; } // 4D124A: variable 'v4' is possibly undefined // 4D124A: variable 'v5' is possibly undefined // 4D124A: variable 'v6' is possibly undefined // 4D124A: variable 'v8' is possibly undefined // 4D124A: variable 'v9' is possibly undefined // 4D125C: variable 'v7' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004D1280) -------------------------------------------------------- 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_51641C ) { v21 = v31 - 3; if ( v31 == (_DWORD *)&unk_51641C ) goto LABEL_23; } else { std::string::_Rep::_M_dispose((volatile signed __int32 *)(v32[0] - 12), (int)v30); v21 = v31 - 3; if ( v31 == (_DWORD *)&unk_51641C ) { LABEL_23: v22 = (volatile signed __int32 *)(*(_DWORD *)&v30[1] - 12); if ( *(_UNKNOWN **)&v30[1] == &unk_51641C ) 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_51641C ) goto LABEL_36; } // 4D12F1: variable 'v23' is possibly undefined // 4D136F: variable 'v24' is possibly undefined // 4D13D0: variable 'v25' is possibly undefined // 516420: using guessed type char *std::__num_base::_S_atoms_in[3]; // 516424: using guessed type char *std::__num_base::_S_atoms_out[2]; //----- (004D1790) -------------------------------------------------------- int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_538BD4; 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; } // 538BD4: using guessed type int (*off_538BD4)(); //----- (004D17E0) -------------------------------------------------------- int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_538BD4; 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; } // 538BD4: using guessed type int (*off_538BD4)(); //----- (004D1830) -------------------------------------------------------- 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); } // 4D1837: variable 'v2' is possibly undefined //----- (004D1860) -------------------------------------------------------- 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_538BD4; 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); } // 4D1861: variable 'v1' is possibly undefined // 538BD4: using guessed type int (*off_538BD4)(); //----- (004D18B0) -------------------------------------------------------- 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_538BD4; 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); } // 4D18B1: variable 'v1' is possibly undefined // 538BD4: using guessed type int (*off_538BD4)(); //----- (004D1900) -------------------------------------------------------- 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_51640C ) { v18 = v24 - 3; if ( v24 == (_DWORD *)&unk_51640C ) goto LABEL_17; } else { std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v25[0] - 12), (int)v23); v18 = v24 - 3; if ( v24 == (_DWORD *)&unk_51640C ) { LABEL_17: v19 = (volatile signed __int32 *)(*(_DWORD *)&v23[1] - 12); if ( *(_UNKNOWN **)&v23[1] == &unk_51641C ) 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_51641C ) goto LABEL_26; } // 4D196E: variable 'v20' is possibly undefined // 516420: using guessed type char *std::__num_base::_S_atoms_in[3]; // 516424: using guessed type char *std::__num_base::_S_atoms_out[2]; //----- (004D1D40) -------------------------------------------------------- BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538BE4; 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; } // 538BE4: using guessed type int (*off_538BE4)(); //----- (004D1DA0) -------------------------------------------------------- BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538BE4; 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; } // 538BE4: using guessed type int (*off_538BE4)(); //----- (004D1E00) -------------------------------------------------------- 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); } // 4D1E07: variable 'v2' is possibly undefined //----- (004D1E30) -------------------------------------------------------- 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_538BE4; 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); } // 4D1E31: variable 'v1' is possibly undefined // 538BE4: using guessed type int (*off_538BE4)(); //----- (004D1E80) -------------------------------------------------------- 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_538BE4; 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); } // 4D1E81: variable 'v1' is possibly undefined // 538BE4: using guessed type int (*off_538BE4)(); //----- (004D1ED0) -------------------------------------------------------- _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_538BF4; return result; } // 4D1EDD: variable 'v5' is possibly undefined // 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); //----- (004D1F00) -------------------------------------------------------- _DWORD *__thiscall std::invalid_argument::invalid_argument(_DWORD *this, int a2) { _DWORD *result; // eax result = std::logic_error::logic_error(this, a2); *this = &off_538BF4; return result; } // 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); //----- (004D1F30) -------------------------------------------------------- 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_538BF4; return result; } // 4D1F3D: variable 'v5' is possibly undefined // 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); //----- (004D1F60) -------------------------------------------------------- void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1) { *a1 = &off_538BF4; std::logic_error::~logic_error(a1); operator delete(a1); } // 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); //----- (004D1F80) -------------------------------------------------------- void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1) { *a1 = &off_538BF4; std::logic_error::~logic_error(a1); } // 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); //----- (004D1F90) -------------------------------------------------------- int *__fastcall std::_Rb_tree_iterator>>::operator++(int *a1) { *a1 = std::_Rb_tree_increment(*a1); return a1; } //----- (004D1FB0) -------------------------------------------------------- BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538C08; 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; } // 538C08: using guessed type int (*off_538C08)(); //----- (004D2150) -------------------------------------------------------- BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538C08; 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; } // 538C08: using guessed type int (*off_538C08)(); //----- (004D22F0) -------------------------------------------------------- void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538C08; std::locale::facet::~facet(v2); operator delete(a1); } // 4D22FC: variable 'v2' is possibly undefined // 538C08: using guessed type int (*off_538C08)(); //----- (004D2310) -------------------------------------------------------- void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538C08; std::locale::facet::~facet(a1); } // 4D2310: variable 'v1' is possibly undefined // 538C08: using guessed type int (*off_538C08)(); //----- (004D2320) -------------------------------------------------------- void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538C08; std::locale::facet::~facet(a1); } // 4D2320: variable 'v1' is possibly undefined // 538C08: using guessed type int (*off_538C08)(); //----- (004D2330) -------------------------------------------------------- BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538C18; 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; } // 538C18: using guessed type int (*off_538C18)(); //----- (004D24D0) -------------------------------------------------------- BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538C18; 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; } // 538C18: using guessed type int (*off_538C18)(); //----- (004D2670) -------------------------------------------------------- void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538C18; std::locale::facet::~facet(v2); operator delete(a1); } // 4D267C: variable 'v2' is possibly undefined // 538C18: using guessed type int (*off_538C18)(); //----- (004D2690) -------------------------------------------------------- void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538C18; std::locale::facet::~facet(a1); } // 4D2690: variable 'v1' is possibly undefined // 538C18: using guessed type int (*off_538C18)(); //----- (004D26A0) -------------------------------------------------------- void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538C18; std::locale::facet::~facet(a1); } // 4D26A0: variable 'v1' is possibly undefined // 538C18: using guessed type int (*off_538C18)(); //----- (004D26B0) -------------------------------------------------------- void __fastcall std::bad_function_call::~bad_function_call(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538C28; std::exception::~exception(v2); operator delete(a1); } // 4D26BC: variable 'v2' is possibly undefined // 538C28: using guessed type void (__cdecl *off_538C28)(std::bad_function_call *__hidden this); //----- (004D26D0) -------------------------------------------------------- void __cdecl std::bad_function_call::~bad_function_call(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_538C28; std::exception::~exception(a1); } // 4D26D0: variable 'v1' is possibly undefined // 538C28: using guessed type void (__cdecl *off_538C28)(std::bad_function_call *__hidden this); //----- (004D26E0) -------------------------------------------------------- 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_5384E0; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538C3C; 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; } // 5384E0: using guessed type int (*off_5384E0)(); // 538C3C: using guessed type int (*off_538C3C)(); //----- (004D27E0) -------------------------------------------------------- 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_5384E0; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538C3C; 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; } // 5384E0: using guessed type int (*off_5384E0)(); // 538C3C: using guessed type int (*off_538C3C)(); //----- (004D28E0) -------------------------------------------------------- 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_5384E0; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538C3C; 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; } // 5384E0: using guessed type int (*off_5384E0)(); // 538C3C: using guessed type int (*off_538C3C)(); //----- (004D29E0) -------------------------------------------------------- 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_5384E0; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538C3C; 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; } // 5384E0: using guessed type int (*off_5384E0)(); // 538C3C: using guessed type int (*off_538C3C)(); //----- (004D2AE0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538C3C; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4D2AEC: variable 'v2' is possibly undefined // 538C3C: using guessed type int (*off_538C3C)(); //----- (004D2B00) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538C3C; std::moneypunct::~moneypunct(a1); } // 4D2B00: variable 'v1' is possibly undefined // 538C3C: using guessed type int (*off_538C3C)(); //----- (004D2B10) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538C3C; std::moneypunct::~moneypunct(a1); } // 4D2B10: variable 'v1' is possibly undefined // 538C3C: using guessed type int (*off_538C3C)(); //----- (004D2B20) -------------------------------------------------------- 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_538514; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538C70; 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; } // 538514: using guessed type int (*off_538514)(); // 538C70: using guessed type int (*off_538C70)(); //----- (004D2C20) -------------------------------------------------------- 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_538514; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538C70; 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; } // 538514: using guessed type int (*off_538514)(); // 538C70: using guessed type int (*off_538C70)(); //----- (004D2D20) -------------------------------------------------------- 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_538514; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538C70; 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; } // 538514: using guessed type int (*off_538514)(); // 538C70: using guessed type int (*off_538C70)(); //----- (004D2E20) -------------------------------------------------------- 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_538514; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538C70; 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; } // 538514: using guessed type int (*off_538514)(); // 538C70: using guessed type int (*off_538C70)(); //----- (004D2F20) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538C70; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4D2F2C: variable 'v2' is possibly undefined // 538C70: using guessed type int (*off_538C70)(); //----- (004D2F40) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538C70; std::moneypunct::~moneypunct(a1); } // 4D2F40: variable 'v1' is possibly undefined // 538C70: using guessed type int (*off_538C70)(); //----- (004D2F50) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538C70; std::moneypunct::~moneypunct(a1); } // 4D2F50: variable 'v1' is possibly undefined // 538C70: using guessed type int (*off_538C70)(); //----- (004D2F60) -------------------------------------------------------- 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_538548; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538CA4; 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; } // 538548: using guessed type int (*off_538548)(); // 538CA4: using guessed type int (*off_538CA4)(); //----- (004D3060) -------------------------------------------------------- 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_538548; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538CA4; 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; } // 538548: using guessed type int (*off_538548)(); // 538CA4: using guessed type int (*off_538CA4)(); //----- (004D3160) -------------------------------------------------------- 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_538548; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538CA4; 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; } // 538548: using guessed type int (*off_538548)(); // 538CA4: using guessed type int (*off_538CA4)(); //----- (004D3260) -------------------------------------------------------- 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_538548; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538CA4; 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; } // 538548: using guessed type int (*off_538548)(); // 538CA4: using guessed type int (*off_538CA4)(); //----- (004D3360) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538CA4; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4D336C: variable 'v2' is possibly undefined // 538CA4: using guessed type int (*off_538CA4)(); //----- (004D3380) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538CA4; std::moneypunct::~moneypunct(a1); } // 4D3380: variable 'v1' is possibly undefined // 538CA4: using guessed type int (*off_538CA4)(); //----- (004D3390) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538CA4; std::moneypunct::~moneypunct(a1); } // 4D3390: variable 'v1' is possibly undefined // 538CA4: using guessed type int (*off_538CA4)(); //----- (004D33A0) -------------------------------------------------------- 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_53857C; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538CD8; 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; } // 53857C: using guessed type int (*off_53857C)(); // 538CD8: using guessed type int (*off_538CD8)(); //----- (004D34A0) -------------------------------------------------------- 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_53857C; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538CD8; 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; } // 53857C: using guessed type int (*off_53857C)(); // 538CD8: using guessed type int (*off_538CD8)(); //----- (004D35A0) -------------------------------------------------------- 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_53857C; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538CD8; 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; } // 53857C: using guessed type int (*off_53857C)(); // 538CD8: using guessed type int (*off_538CD8)(); //----- (004D36A0) -------------------------------------------------------- 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_53857C; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538CD8; 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; } // 53857C: using guessed type int (*off_53857C)(); // 538CD8: using guessed type int (*off_538CD8)(); //----- (004D37A0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538CD8; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4D37AC: variable 'v2' is possibly undefined // 538CD8: using guessed type int (*off_538CD8)(); //----- (004D37C0) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538CD8; std::moneypunct::~moneypunct(a1); } // 4D37C0: variable 'v1' is possibly undefined // 538CD8: using guessed type int (*off_538CD8)(); //----- (004D37D0) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538CD8; std::moneypunct::~moneypunct(a1); } // 4D37D0: variable 'v1' is possibly undefined // 538CD8: using guessed type int (*off_538CD8)(); //----- (004D37E0) -------------------------------------------------------- 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_51641C ) std::string::_Rep::_M_dispose((volatile signed __int32 *)(v41[0] - 12), (int)v38); if ( v40 == (_DWORD *)&unk_51641C ) { v28 = v39 - 3; if ( v39 == (_DWORD *)&unk_51641C ) goto LABEL_29; } else { std::string::_Rep::_M_dispose(v40 - 3, (int)v38); v28 = v39 - 3; if ( v39 == (_DWORD *)&unk_51641C ) { LABEL_29: v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); if ( *(_UNKNOWN **)&v38[1] == &unk_51641C ) 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_51641C ) goto LABEL_44; } // 4D389A: variable 'v30' is possibly undefined // 4D3916: variable 'v31' is possibly undefined // 4D3975: variable 'v32' is possibly undefined // 4D39D4: variable 'v33' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; //----- (004D3DC0) -------------------------------------------------------- int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_538D0C; 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; } // 538D0C: using guessed type int (*off_538D0C)(); //----- (004D3E40) -------------------------------------------------------- int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_538D0C; 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; } // 538D0C: using guessed type int (*off_538D0C)(); //----- (004D3EC0) -------------------------------------------------------- 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); } // 4D3EC7: variable 'v2' is possibly undefined //----- (004D3EF0) -------------------------------------------------------- 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_538D0C; 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); } // 4D3EF1: variable 'v1' is possibly undefined // 538D0C: using guessed type int (*off_538D0C)(); //----- (004D3F50) -------------------------------------------------------- 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_538D0C; 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); } // 4D3F51: variable 'v1' is possibly undefined // 538D0C: using guessed type int (*off_538D0C)(); //----- (004D3FB0) -------------------------------------------------------- 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_51641C ) std::string::_Rep::_M_dispose((volatile signed __int32 *)(v41[0] - 12), (int)v38); if ( v40 == (_DWORD *)&unk_51641C ) { v28 = v39 - 3; if ( v39 == (_DWORD *)&unk_51641C ) goto LABEL_29; } else { std::string::_Rep::_M_dispose(v40 - 3, (int)v38); v28 = v39 - 3; if ( v39 == (_DWORD *)&unk_51641C ) { LABEL_29: v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); if ( *(_UNKNOWN **)&v38[1] == &unk_51641C ) 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_51641C ) goto LABEL_44; } // 4D406A: variable 'v30' is possibly undefined // 4D40E6: variable 'v31' is possibly undefined // 4D4145: variable 'v32' is possibly undefined // 4D41A4: variable 'v33' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; //----- (004D4590) -------------------------------------------------------- int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_538D1C; 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; } // 538D1C: using guessed type int (*off_538D1C)(); //----- (004D4610) -------------------------------------------------------- int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_538D1C; 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; } // 538D1C: using guessed type int (*off_538D1C)(); //----- (004D4690) -------------------------------------------------------- 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); } // 4D4697: variable 'v2' is possibly undefined //----- (004D46C0) -------------------------------------------------------- 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_538D1C; 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); } // 4D46C1: variable 'v1' is possibly undefined // 538D1C: using guessed type int (*off_538D1C)(); //----- (004D4720) -------------------------------------------------------- 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_538D1C; 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); } // 4D4721: variable 'v1' is possibly undefined // 538D1C: using guessed type int (*off_538D1C)(); //----- (004D4780) -------------------------------------------------------- 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_51640C ) { v23 = v36 - 3; if ( v36 == (_DWORD *)&unk_51640C ) goto LABEL_23; } else { std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v37[0] - 12), (int)v34); v23 = v36 - 3; if ( v36 == (_DWORD *)&unk_51640C ) goto LABEL_23; } std::wstring::_Rep::_M_dispose(v23, (int)v34); LABEL_23: if ( v35 == (_DWORD *)&unk_51640C ) { v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); if ( *(_UNKNOWN **)&v34[1] == &unk_51641C ) 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_51641C ) goto LABEL_36; } // 4D4838: variable 'v29' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; //----- (004D4D60) -------------------------------------------------------- BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538D2C; 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; } // 538D2C: using guessed type int (*off_538D2C)(); //----- (004D4DE0) -------------------------------------------------------- BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538D2C; 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; } // 538D2C: using guessed type int (*off_538D2C)(); //----- (004D4E60) -------------------------------------------------------- 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); } // 4D4E67: variable 'v2' is possibly undefined //----- (004D4E90) -------------------------------------------------------- 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_538D2C; 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); } // 4D4E91: variable 'v1' is possibly undefined // 538D2C: using guessed type int (*off_538D2C)(); //----- (004D4EF0) -------------------------------------------------------- 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_538D2C; 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); } // 4D4EF1: variable 'v1' is possibly undefined // 538D2C: using guessed type int (*off_538D2C)(); //----- (004D4F50) -------------------------------------------------------- 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_51640C ) { v23 = v36 - 3; if ( v36 == (_DWORD *)&unk_51640C ) goto LABEL_23; } else { std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v37[0] - 12), (int)v34); v23 = v36 - 3; if ( v36 == (_DWORD *)&unk_51640C ) goto LABEL_23; } std::wstring::_Rep::_M_dispose(v23, (int)v34); LABEL_23: if ( v35 == (_DWORD *)&unk_51640C ) { v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); if ( *(_UNKNOWN **)&v34[1] == &unk_51641C ) 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_51641C ) goto LABEL_36; } // 4D5008: variable 'v29' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; //----- (004D5530) -------------------------------------------------------- BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538D3C; 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; } // 538D3C: using guessed type int (*off_538D3C)(); //----- (004D55B0) -------------------------------------------------------- BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538D3C; 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; } // 538D3C: using guessed type int (*off_538D3C)(); //----- (004D5630) -------------------------------------------------------- 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); } // 4D5637: variable 'v2' is possibly undefined //----- (004D5660) -------------------------------------------------------- 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_538D3C; 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); } // 4D5661: variable 'v1' is possibly undefined // 538D3C: using guessed type int (*off_538D3C)(); //----- (004D56C0) -------------------------------------------------------- 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_538D3C; 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); } // 4D56C1: variable 'v1' is possibly undefined // 538D3C: using guessed type int (*off_538D3C)(); //----- (004D5720) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_538F5C; std::locale::facet::~facet(v2); operator delete(a1); } // 4D572C: variable 'v2' is possibly undefined //----- (004D5740) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_538F5C; std::locale::facet::~facet(a1); } // 4D5740: variable 'v1' is possibly undefined //----- (004D5750) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_538FB4; std::locale::facet::~facet(v2); operator delete(a1); } // 4D575C: variable 'v2' is possibly undefined //----- (004D5770) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_538FB4; std::locale::facet::~facet(a1); } // 4D5770: variable 'v1' is possibly undefined //----- (004D5780) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538DA4; std::codecvt::~codecvt(v2); operator delete(a1); } // 4D578C: variable 'v2' is possibly undefined // 538DA4: using guessed type int (*off_538DA4)(); //----- (004D57A0) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538DA4; std::codecvt::~codecvt(a1); } // 4D57A0: variable 'v1' is possibly undefined // 538DA4: using guessed type int (*off_538DA4)(); //----- (004D57B0) -------------------------------------------------------- void __fastcall std::__iosfail_type_info::~__iosfail_type_info(_DWORD *a1) { __cxxabiv1::__si_class_type_info *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538DD0; __cxxabiv1::__si_class_type_info::~__si_class_type_info(v2); operator delete(a1); } // 4D57BC: variable 'v2' is possibly undefined // 538DD0: using guessed type void (__cdecl *off_538DD0)(std::__iosfail_type_info *__hidden this); //----- (004D57D0) -------------------------------------------------------- void __cdecl std::__iosfail_type_info::~__iosfail_type_info(std::__iosfail_type_info *this) { _DWORD *v1; // ecx *v1 = &off_538DD0; __cxxabiv1::__si_class_type_info::~__si_class_type_info(this); } // 4D57D0: variable 'v1' is possibly undefined // 538DD0: using guessed type void (__cdecl *off_538DD0)(std::__iosfail_type_info *__hidden this); //----- (004D57E0) -------------------------------------------------------- void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_538F5C; std::locale::facet::~facet(v2); operator delete(a1); } // 4D57EC: variable 'v2' is possibly undefined //----- (004D5800) -------------------------------------------------------- void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_538F5C; std::locale::facet::~facet(a1); } // 4D5800: variable 'v1' is possibly undefined //----- (004D5810) -------------------------------------------------------- void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_538FB4; std::locale::facet::~facet(v2); operator delete(a1); } // 4D581C: variable 'v2' is possibly undefined //----- (004D5830) -------------------------------------------------------- void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_538FB4; std::locale::facet::~facet(a1); } // 4D5830: variable 'v1' is possibly undefined //----- (004D5840) -------------------------------------------------------- void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538E54; std::codecvt::~codecvt(v2); operator delete(a1); } // 4D584C: variable 'v2' is possibly undefined // 538E54: using guessed type int (*off_538E54)(); //----- (004D5860) -------------------------------------------------------- void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538E54; std::codecvt::~codecvt(a1); } // 4D5860: variable 'v1' is possibly undefined // 538E54: using guessed type int (*off_538E54)(); //----- (004D5870) -------------------------------------------------------- _DWORD *__cdecl std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>( int a1, int a2, _DWORD *a3) { while ( a1 != a2 ) { std::string::basic_string(a3, a1); a3 += 6; a1 += 24; } return a3; } //----- (004D58CC) -------------------------------------------------------- _DWORD *__cdecl std::__uninitialized_copy::__uninit_copy( _DWORD *a1, _DWORD *a2, _DWORD *a3) { while ( a1 != a2 ) { night::ns_sourcemap::ns_sourcemap(a3, a1); a1 += 16; a3 += 16; } return a3; } //----- (004D5930) -------------------------------------------------------- void __fastcall std::bad_array_new_length::~bad_array_new_length(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538E80; std::bad_alloc::~bad_alloc(v2); operator delete(a1, 4u); } // 4D593C: variable 'v2' is possibly undefined // 538E80: using guessed type void (__cdecl *off_538E80)(std::bad_array_new_length *__hidden this); //----- (004D5960) -------------------------------------------------------- void __cdecl std::bad_array_new_length::~bad_array_new_length(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_538E80; std::bad_alloc::~bad_alloc(a1); } // 4D5960: variable 'v1' is possibly undefined // 538E80: using guessed type void (__cdecl *off_538E80)(std::bad_array_new_length *__hidden this); //----- (004D5970) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::_M_destroy( void *a1) { operator delete(a1); } //----- (004D5980) -------------------------------------------------------- int __fastcall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::_M_dispose( int a1) { return (**(int (__fastcall ***)(int))(a1 + 12))(a1 + 12); } //----- (004D598C) -------------------------------------------------------- char *__thiscall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::_M_get_deleter( char *this, _DWORD *a2) { char *v2; // ebx v2 = this + 12; if ( a2 != (_DWORD *)&std::_Sp_make_shared_tag::_S_ti(void)::__tag && !std::type_info::operator==(a2, (int)&`typeinfo for'std::_Sp_make_shared_tag) ) { return 0; } return v2; } // 534780: using guessed type int *`typeinfo for'std::_Sp_make_shared_tag; //----- (004D59C0) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace( void *a1) { operator delete(a1); } //----- (004D59E0) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_538F5C; std::locale::facet::~facet(v2); operator delete(a1); } // 4D59EC: variable 'v2' is possibly undefined //----- (004D5A00) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_538F5C; std::locale::facet::~facet(a1); } // 4D5A00: variable 'v1' is possibly undefined //----- (004D5A10) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_538FB4; std::locale::facet::~facet(v2); operator delete(a1); } // 4D5A1C: variable 'v2' is possibly undefined //----- (004D5A30) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_538FB4; std::locale::facet::~facet(a1); } // 4D5A30: variable 'v1' is possibly undefined //----- (004D5A40) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539090; std::codecvt::~codecvt(v2); operator delete(a1); } // 4D5A4C: variable 'v2' is possibly undefined // 539090: using guessed type int (*off_539090)(); //----- (004D5A60) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539090; std::codecvt::~codecvt(a1); } // 4D5A60: variable 'v1' is possibly undefined // 539090: using guessed type int (*off_539090)(); //----- (004D5A70) -------------------------------------------------------- void __fastcall std::_V2::error_category::~error_category(void *a1) { operator delete(a1); } //----- (004D5A90) -------------------------------------------------------- void (__cdecl ***std::_V2::system_category())(_anonymous_namespace_::system_error_category *__hidden this) { return `anonymous namespace'::system_category_instance; } // 515F64: using guessed type void (__cdecl **`anonymous namespace'::system_category_instance[2])(_anonymous_namespace_::system_error_category *__hidden this); //----- (004D5AA0) -------------------------------------------------------- void (__cdecl ***std::_V2::generic_category())(_anonymous_namespace_::generic_error_category *__hidden this) { return &`anonymous namespace'::generic_category_instance; } // 515F68: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); //----- (004D5AB0) -------------------------------------------------------- int __thiscall std::map::erase(_DWORD *this, int a2) { int v3; // eax int *v4; // edx int v5; // esi int *v6; // edi int *v7; // ecx int *v8; // eax int *v10; // [esp+18h] [ebp-20h] int v11; // [esp+1Ch] [ebp-1Ch] v3 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::equal_range( this, a2); v5 = this[5]; v6 = v4; v7 = (int *)v3; if ( v3 == this[3] && v4 == this + 1 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(this[2]); this[2] = 0; this[3] = v6; this[4] = v6; this[5] = 0; } else { while ( v6 != v7 ) { v10 = v7; v11 = std::_Rb_tree_increment(v7); v8 = std::_Rb_tree_rebalance_for_erase(v10, this + 1); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node((void **)v8); --this[5]; v7 = (int *)v11; } } return v5 - this[5]; } // 4D5ACA: variable 'v4' is possibly undefined // 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); //----- (004D5B40) -------------------------------------------------------- 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 *)0x98, v10); std::string::basic_string(v3 + 4, a2); v3[18] = v3 + 20; v3[25] = v3 + 27; v3[32] = v3 + 34; v3[10] = 0; v3[11] = 0; v3[19] = 0; *((_BYTE *)v3 + 80) = 0; v3[26] = 0; *((_BYTE *)v3 + 108) = 0; v3[33] = 0; *((_BYTE *)v3 + 136) = 0; *((_BYTE *)v3 + 68) = 0; *((_BYTE *)v3 + 124) = 0; v3[15] = 0; v3[12] = 0; v3[13] = 0; v3[14] = 0; v3[24] = -1; 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; WXML::DOMLib::Token::~Token((int)(v3 + 10)); std::string::_M_dispose((void **)v3 + 4); operator delete(v3); v3 = v14; } } return (char *)(v3 + 10); } // 4D5BA8: variable 'v10' is possibly undefined // 4D5C4C: variable 'v6' is possibly undefined //----- (004D5CC4) -------------------------------------------------------- _DWORD *__thiscall std::map::operator[](_DWORD *this, int a2) { _DWORD *v3; // ebx int v4; // eax _DWORD *inserted; // esi _DWORD *v6; // ebx int insert_hint_unique_pos; // eax _DWORD *v8; // edx void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] v3 = this + 1; v4 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound( this[2], (int)(this + 1), a2); inserted = (_DWORD *)v4; if ( (_DWORD *)v4 == v3 || (unsigned __int8)std::operator<(a2, v4 + 16) ) { v6 = operator new((struct type_info *)0x98, v10); std::string::basic_string(v6 + 4, a2); v6[18] = v6 + 20; v6[25] = v6 + 27; v6[32] = v6 + 34; v6[10] = 0; v6[11] = 0; v6[19] = 0; *((_BYTE *)v6 + 80) = 0; v6[26] = 0; *((_BYTE *)v6 + 108) = 0; v6[33] = 0; *((_BYTE *)v6 + 136) = 0; *((_BYTE *)v6 + 68) = 0; *((_BYTE *)v6 + 124) = 0; v6[15] = 0; v6[12] = 0; v6[13] = 0; v6[14] = 0; v6[24] = -1; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( this, inserted, (int)(v6 + 4)); inserted = (_DWORD *)insert_hint_unique_pos; if ( v8 ) inserted = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( this, insert_hint_unique_pos, v8, v6); else std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node((void **)v6); } return inserted + 10; } // 4D5D06: variable 'v10' is possibly undefined // 4D5DB1: variable 'v8' is possibly undefined //----- (004D5E04) -------------------------------------------------------- _DWORD *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2) { _DWORD *v3; // ebx int v4; // eax _DWORD *inserted; // edi char *v6; // ebx int insert_hint_unique_pos; // eax _DWORD *v8; // edx void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] v3 = this + 1; v4 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound( this[2], (int)(this + 1), (int)a2); inserted = (_DWORD *)v4; if ( (_DWORD *)v4 == v3 || (unsigned __int8)std::operator<((int)a2, v4 + 16) ) { v6 = (char *)operator new((struct type_info *)0x40, v10); std::string::basic_string((_DWORD *)v6 + 4, a2); *((_DWORD *)v6 + 10) = v6 + 48; *((_DWORD *)v6 + 11) = 0; v6[48] = 0; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( this, inserted, (int)(v6 + 16)); inserted = (_DWORD *)insert_hint_unique_pos; if ( v8 ) { inserted = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( this, insert_hint_unique_pos, v8, v6); } else { std::pair::~pair((void **)v6 + 4); operator delete(v6); } } return inserted + 10; } // 4D5E42: variable 'v10' is possibly undefined // 4D5E86: variable 'v8' is possibly undefined //----- (004D5EC0) -------------------------------------------------------- _DWORD *__thiscall std::map::operator[](_DWORD *this, int a2) { _DWORD *v3; // esi int v4; // eax _DWORD *inserted; // ebx char *v6; // esi int insert_hint_unique_pos; // eax _DWORD *v8; // edx void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] v3 = this + 1; v4 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound( this[2], (int)(this + 1), a2); inserted = (_DWORD *)v4; if ( (_DWORD *)v4 == v3 || (unsigned __int8)std::operator<(a2, v4 + 16) ) { v6 = (char *)operator new((struct type_info *)0x40, v10); std::string::basic_string((_DWORD *)v6 + 4, a2); *((_DWORD *)v6 + 10) = v6 + 48; *((_DWORD *)v6 + 11) = 0; v6[48] = 0; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( this, inserted, (int)(v6 + 16)); inserted = (_DWORD *)insert_hint_unique_pos; if ( v8 ) { inserted = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( this, insert_hint_unique_pos, v8, v6); } else { std::pair::~pair((void **)v6 + 4); operator delete(v6); } } return inserted + 10; } // 4D5F02: variable 'v10' is possibly undefined // 4D5F46: variable 'v8' is possibly undefined //----- (004D5FA4) -------------------------------------------------------- _DWORD *__thiscall std::map,std::allocator>>>::operator[]( _DWORD *this, _DWORD *a2) { _DWORD *v3; // ebx int v4; // eax _DWORD *inserted; // edi _DWORD *v6; // ebx int insert_hint_unique_pos; // eax _DWORD *v8; // edx void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] v3 = this + 1; v4 = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_lower_bound( this[2], (int)(this + 1), (int)a2); inserted = (_DWORD *)v4; if ( (_DWORD *)v4 == v3 || (unsigned __int8)std::operator<((int)a2, v4 + 16) ) { v6 = operator new((struct type_info *)0x30, v10); std::string::basic_string(v6 + 4, a2); v6[10] = 0; v6[11] = 0; insert_hint_unique_pos = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_hint_unique_pos( this, inserted, (int)(v6 + 4)); inserted = (_DWORD *)insert_hint_unique_pos; if ( v8 ) { inserted = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_insert_node( this, insert_hint_unique_pos, v8, v6); } else { std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v6 + 11); std::string::_M_dispose((void **)v6 + 4); operator delete(v6); } } return inserted + 10; } // 4D5FE2: variable 'v10' is possibly undefined // 4D6023: variable 'v8' is possibly undefined //----- (004D6064) -------------------------------------------------------- _DWORD *__thiscall std::map,std::allocator>>>::operator[]( _DWORD *this, int a2) { _DWORD *v3; // esi int v4; // eax _DWORD *inserted; // ebx _DWORD *v6; // esi int insert_hint_unique_pos; // eax _DWORD *v8; // edx void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] v3 = this + 1; v4 = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_lower_bound( this[2], (int)(this + 1), a2); inserted = (_DWORD *)v4; if ( (_DWORD *)v4 == v3 || (unsigned __int8)std::operator<(a2, v4 + 16) ) { v6 = operator new((struct type_info *)0x30, v10); std::string::basic_string(v6 + 4, a2); v6[10] = 0; v6[11] = 0; insert_hint_unique_pos = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_hint_unique_pos( this, inserted, (int)(v6 + 4)); inserted = (_DWORD *)insert_hint_unique_pos; if ( v8 ) { inserted = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_insert_node( this, insert_hint_unique_pos, v8, v6); } else { std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v6 + 11); std::string::_M_dispose((void **)v6 + 4); operator delete(v6); } } return inserted + 10; } // 4D60A6: variable 'v10' is possibly undefined // 4D60E7: variable 'v8' is possibly undefined //----- (004D614C) -------------------------------------------------------- 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 *v10; // [esp+0h] [ebp-38h] void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] _DWORD *v12; // [esp+18h] [ebp-20h] _DWORD *v13; // [esp+18h] [ebp-20h] _DWORD *v14; // [esp+18h] [ebp-20h] _DWORD *v15; // [esp+1Ch] [ebp-1Ch] v3 = this + 1; v4 = (_DWORD *)this[2]; v15 = this + 1; while ( v4 ) { v12 = v4; if ( (unsigned __int8)std::operator<((int)(v4 + 4), (int)a2) ) { v4 = (_DWORD *)v12[3]; } else { v3 = v12; v4 = (_DWORD *)v12[2]; } } if ( v15 == v3 || (unsigned __int8)std::operator<((int)a2, (int)(v3 + 4)) ) { v13 = 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, v13, (int)(v3 + 4)); v7 = (_DWORD *)insert_hint_unique_pos; if ( v6 ) { v8 = insert_hint_unique_pos != 0 || v15 == v6; if ( v7 == 0 && v15 != v6 ) { v14 = v6; v8 = std::operator<((int)(v3 + 4), (int)(v6 + 4)); v6 = v14; } std::_Rb_tree_insert_and_rebalance(v8, v3, v6, v15); ++this[5]; } else { std::_Destroy_aux::__destroy((void **)v3[10], (char **)v3[11]); if ( v3[10] ) operator delete((void *)v3[10]); std::string::_M_dispose((void **)v3 + 4); v10 = v3; v3 = v7; operator delete(v10); } } return (char *)(v3 + 10); } // 4D61B4: variable 'v11' is possibly undefined // 4D61FB: variable 'v6' is possibly undefined //----- (004D6284) -------------------------------------------------------- _DWORD *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2) { _DWORD *v2; // edx _DWORD *inserted; // edi _DWORD *v5; // ebx char v6; // al _DWORD *v7; // ebx 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), (int)a2); v2 = v12; if ( v6 ) { v5 = (_DWORD *)v5[3]; } else { inserted = v5; v5 = (_DWORD *)v5[2]; } } if ( v2 == inserted || (unsigned __int8)std::operator<((int)a2, (int)(inserted + 4)) ) { v7 = operator new((struct type_info *)0x34, v11); std::string::basic_string(v7 + 4, a2); v7[10] = 0; v7[11] = 0; v7[12] = 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::vector::~vector((void ***)v7 + 10, 0); std::string::_M_dispose((void **)v7 + 4); operator delete(v7); } } return inserted + 10; } // 4D62E8: variable 'v11' is possibly undefined // 4D6330: variable 'v9' is possibly undefined //----- (004D6370) -------------------------------------------------------- _DWORD *__thiscall std::map>::operator[](_DWORD *this, int a2) { _DWORD *v3; // esi int v4; // eax _DWORD *inserted; // ebx _DWORD *v6; // esi int insert_hint_unique_pos; // eax _DWORD *v8; // edx void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] v3 = this + 1; v4 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_lower_bound( this[2], (int)(this + 1), a2); inserted = (_DWORD *)v4; if ( (_DWORD *)v4 == v3 || (unsigned __int8)std::operator<(a2, v4 + 16) ) { v6 = operator new((struct type_info *)0x34, v10); std::string::basic_string(v6 + 4, a2); v6[10] = 0; v6[11] = 0; v6[12] = 0; insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( this, inserted, (int)(v6 + 4)); inserted = (_DWORD *)insert_hint_unique_pos; if ( v8 ) { inserted = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( this, insert_hint_unique_pos, v8, v6); } else { std::vector::~vector((void ***)v6 + 10, 0); std::string::_M_dispose((void **)v6 + 4); operator delete(v6); } } return inserted + 10; } // 4D63B2: variable 'v10' is possibly undefined // 4D63FA: variable 'v8' is possibly undefined //----- (004D6460) -------------------------------------------------------- _DWORD *__thiscall std::map::operator[](_DWORD *this, int a2) { _DWORD *v2; // edx _DWORD *inserted; // ebx _DWORD *v5; // esi char v6; // al void **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 = (void **)operator new((struct type_info *)0x2C, v11); std::string::basic_string(v7 + 4, a2); v7[10] = 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::string::_M_dispose(v7 + 4); operator delete(v7); } } return inserted + 10; } // 4D64C4: variable 'v11' is possibly undefined // 4D64FE: variable 'v9' is possibly undefined //----- (004D655C) -------------------------------------------------------- _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; } // 4D65C1: variable 'v11' is possibly undefined // 4D65F5: variable 'v5' is possibly undefined //----- (004D6684) -------------------------------------------------------- _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; } // 4D66CD: variable 'v9' is possibly undefined // 4D6705: variable 'v6' is possibly undefined //----- (004D675C) -------------------------------------------------------- char *__thiscall std::map>>::operator[](_DWORD *this, int *a2) { _DWORD *v3; // edi _DWORD *v4; // ebx _DWORD *v5; // eax int v6; // eax int insert_hint_unique_pos; // eax _DWORD *v8; // edx bool v9; // cl void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] _DWORD *v12; // [esp+1Ch] [ebp-1Ch] _DWORD *v13; // [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] ) { v12 = v4; v4 = operator new((struct type_info *)0x2C, v11); v6 = *a2; v4[6] = 0; v4[7] = 0; v4[4] = v6; v4[8] = v4 + 6; v4[9] = v4 + 6; v4[10] = 0; insert_hint_unique_pos = std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos( this, v12, v4 + 4); if ( v8 ) { v9 = insert_hint_unique_pos != 0 || v3 == v8; if ( !v9 ) v9 = v4[4] < v8[4]; std::_Rb_tree_insert_and_rebalance(v9, v4, v8, v3); ++this[5]; } else { v13 = (_DWORD *)insert_hint_unique_pos; std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase((void *)v4[7]); operator delete(v4); v4 = v13; } } return (char *)(v4 + 5); } // 4D67A5: variable 'v11' is possibly undefined // 4D67F0: variable 'v8' is possibly undefined //----- (004D6854) -------------------------------------------------------- char *__thiscall std::map::operator[](_DWORD *this, int *a2) { _DWORD *v3; // edi _DWORD *v4; // ebx _DWORD *v5; // eax int v6; // eax int insert_hint_unique_pos; // eax _DWORD *v8; // edx bool v9; // cl void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] _DWORD *v12; // [esp+1Ch] [ebp-1Ch] _DWORD *v13; // [esp+1Ch] [ebp-1Ch] v3 = this + 1; v4 = this + 1; v5 = (_DWORD *)this[2]; while ( v5 ) { if ( v5[4] < (unsigned int)*a2 ) { v5 = (_DWORD *)v5[3]; } else { v4 = v5; v5 = (_DWORD *)v5[2]; } } if ( v3 == v4 || (unsigned int)*a2 < v4[4] ) { v12 = v4; v4 = operator new((struct type_info *)0x2C, v11); v6 = *a2; v4[6] = 0; *((_BYTE *)v4 + 28) = 0; v4[4] = v6; v4[5] = v4 + 7; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( this, v12, v4 + 4); if ( v8 ) { v9 = insert_hint_unique_pos != 0 || v3 == v8; if ( !v9 ) v9 = v4[4] < v8[4]; std::_Rb_tree_insert_and_rebalance(v9, v4, v8, v3); ++this[5]; } else { v13 = (_DWORD *)insert_hint_unique_pos; std::string::_M_dispose((void **)v4 + 5); operator delete(v4); v4 = v13; } } return (char *)(v4 + 5); } // 4D689D: variable 'v11' is possibly undefined // 4D68DB: variable 'v8' is possibly undefined //----- (004D6938) -------------------------------------------------------- _DWORD *__thiscall std::set::insert(_DWORD *this, int a2) { int insert_unique_pos; // eax _DWORD *v4; // edx _DWORD *v5; // edi _DWORD *v6; // ebx void (__cdecl *v8)(void *); // [esp+4h] [ebp-34h] char v9; // [esp+1Fh] [ebp-19h] insert_unique_pos = std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( this, a2); if ( !v4 ) return (_DWORD *)insert_unique_pos; v9 = 1; v5 = v4; if ( !insert_unique_pos && v4 != this + 1 ) v9 = std::operator<(a2, (int)(v4 + 4)); v6 = operator new((struct type_info *)0x28, v8); std::string::basic_string(v6 + 4, a2); std::_Rb_tree_insert_and_rebalance(v9, v6, v5, this + 1); ++this[5]; return v6; } // 4D6951: variable 'v4' is possibly undefined // 4D6987: variable 'v8' is possibly undefined //----- (004D69F8) -------------------------------------------------------- int __thiscall std::pair::swap(_DWORD *this, _DWORD *a2) { int v2; // ebx _DWORD v4[34]; // [esp+10h] [ebp-88h] BYREF v2 = (int)(this + 6); std::string::swap(this, a2); WXML::DOMLib::Token::Token(v4, v2); WXML::DOMLib::Token::operator=(v2, (int)(a2 + 6)); WXML::DOMLib::Token::operator=((int)(a2 + 6), (int)v4); return WXML::DOMLib::Token::~Token((int)v4); } // 4D69F8: using guessed type _DWORD var_88[34]; //----- (004D6A50) -------------------------------------------------------- _DWORD *__thiscall std::pair::pair(_DWORD *this, _DWORD *a2) { std::string::basic_string(this, a2); return WXML::DOMLib::Token::Token(this + 6, (int)(a2 + 6)); } //----- (004D6A7C) -------------------------------------------------------- _DWORD *__thiscall std::pair::operator=(_DWORD *this, _DWORD *a2) { std::string::operator=(this, a2); WXML::DOMLib::Token::operator=((int)(this + 6), (int)(a2 + 6)); return this; } //----- (004D6AB0) -------------------------------------------------------- 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; } //----- (004D6DD0) -------------------------------------------------------- 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; } //----- (004D6FF0) -------------------------------------------------------- void *std::ctype::classic_table() { return &std::ctype::classic_table(void)::_S_classic_table; } //----- (004D7000) -------------------------------------------------------- int __thiscall std::ctype::ctype(_DWORD *this, void *a2, char a3, int a4) { void *v4; // eax int result; // eax v4 = a2; *this = &off_5390BC; 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; } // 5390BC: using guessed type int (*off_5390BC)(); //----- (004D70B0) -------------------------------------------------------- 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_5390BC; 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; } // 5390BC: using guessed type int (*off_5390BC)(); //----- (004D7160) -------------------------------------------------------- void __fastcall std::ctype::~ctype(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::ctype::~ctype(v2); operator delete(a1); } // 4D7166: variable 'v2' is possibly undefined //----- (004D7180) -------------------------------------------------------- void __cdecl std::ctype::~ctype(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx v2 = v1; *v1 = &off_5390BC; 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); } // 4D7184: variable 'v1' is possibly undefined // 5390BC: using guessed type int (*off_5390BC)(); //----- (004D71C0) -------------------------------------------------------- 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; } //----- (004D7260) -------------------------------------------------------- wctype_t __thiscall std::ctype::ctype(_DWORD *this, char a2, int a3) { int v4; // eax *this = &off_5390EC; 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); } // 5390EC: using guessed type int (*off_5390EC)(); //----- (004D72A0) -------------------------------------------------------- wctype_t __thiscall std::ctype::ctype(_DWORD *this, int a2) { *this = &off_5390EC; 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); } // 5390EC: using guessed type int (*off_5390EC)(); //----- (004D72E0) -------------------------------------------------------- void __fastcall std::ctype::~ctype(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5390EC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); *a1 = &unk_538ED4; std::locale::facet::~facet(v2); operator delete(a1); } // 4D72FF: variable 'v2' is possibly undefined // 5390EC: using guessed type int (*off_5390EC)(); //----- (004D7320) -------------------------------------------------------- void __cdecl std::ctype::~ctype(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx v2 = v1; *v1 = &off_5390EC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); *v2 = &unk_538ED4; std::locale::facet::~facet(a1); } // 4D7324: variable 'v1' is possibly undefined // 5390EC: using guessed type int (*off_5390EC)(); //----- (004D7350) -------------------------------------------------------- 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; } // 4D743C: variable 'v20' is possibly undefined //----- (004D74EC) -------------------------------------------------------- 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; } //----- (004D7504) -------------------------------------------------------- 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); } } //----- (004D755C) -------------------------------------------------------- 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; } //----- (004D7594) -------------------------------------------------------- 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; } // 4D7680: variable 'v20' is possibly undefined //----- (004D7730) -------------------------------------------------------- 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; } //----- (004D7748) -------------------------------------------------------- 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); } } //----- (004D77A0) -------------------------------------------------------- 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; } //----- (004D77D8) -------------------------------------------------------- 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; } // 4D78C4: variable 'v22' is possibly undefined //----- (004D7984) -------------------------------------------------------- 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); } } //----- (004D79DC) -------------------------------------------------------- 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; } // 4D7A07: variable 'this' is possibly undefined //----- (004D7A1C) -------------------------------------------------------- #error "4D7BC7: call analysis failed (funcsize=146)" //----- (004D7BF0) -------------------------------------------------------- void __fastcall std::deque::pop_back(_DWORD *a1) { char *v2; // ecx void **v3; // ecx int v4; // eax int v5; // ecx int v6; // eax v2 = (char *)a1[6]; if ( v2 == (char *)a1[7] ) { operator delete(v2); v4 = a1[9]; v5 = *(_DWORD *)(v4 - 4); a1[9] = v4 - 4; v6 = v5 + 504; a1[7] = v5; v3 = (void **)(v5 + 480); a1[8] = v6; } else { v3 = (void **)(v2 - 24); } a1[6] = v3; std::string::_M_dispose(v3); } //----- (004D7C40) -------------------------------------------------------- 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; } // 4D7C89: variable 'func' is possibly undefined // 51533C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; // 516588: using guessed type int std::locale::_S_classic; // 5165A4: using guessed type int std::locale::_S_global; // 78A9D4: using guessed type int _CRT_MT; //----- (004D7CB0) -------------------------------------------------------- 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; } // 4D7CBF: variable 'v0' is possibly undefined // 51533C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; // 516588: using guessed type int std::locale::_S_classic; // 5165A4: using guessed type int std::locale::_S_global; //----- (004D7CE0) -------------------------------------------------------- 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; } // 5333C8: using guessed type int CSWTCH_107[6]; //----- (004D7D20) -------------------------------------------------------- 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_5393A0; v6 = *((_DWORD *)this + 1); v40 = v5; v29 = v4; dword_516468 = 1; dword_51646C = v4; std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_c, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_516468, 1u); else ++dword_516468; v31 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v31 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_c; dword_5164E0 = 1; std::`anonymous namespace'::collate_c = (int)&off_539234; dword_5164E4 = std::locale::facet::_S_get_c_locale(); if ( _CRT_MT ) _InterlockedAdd(&dword_5164E0, 1u); else ++dword_5164E0; v32 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v32 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_c; dword_5164B0 = 1; std::`anonymous namespace'::moneypunct_cf = (int)&off_5384E0; dword_5164B4 = v6; std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_cf, 0, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_5164B0, 1u); else ++dword_5164B0; v33 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v33 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_cf; dword_5164BC = 1; std::`anonymous namespace'::moneypunct_ct = (int)&off_538514; dword_5164C0 = v40; std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_ct, 0, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_5164BC, 1u); else ++dword_5164BC; v34 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v34 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_ct; dword_516490 = 1; std::`anonymous namespace'::money_get_c = (int)&off_5394A8; if ( _CRT_MT ) _InterlockedAdd(&dword_516490, 1u); else dword_516490 = 2; v35 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v35 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = &std::`anonymous namespace'::money_get_c; dword_5164A0 = 1; std::`anonymous namespace'::money_put_c = (int)&off_5394D8; if ( _CRT_MT ) _InterlockedAdd(&dword_5164A0, 1u); else dword_5164A0 = 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_516480 = 1; std::`anonymous namespace'::time_get_c = (int)&off_5393E8; if ( v8 ) _InterlockedAdd(&dword_516480, 1u); else dword_516480 = 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_516448, 1u); else ++dword_516448[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_516474 = 1; v10 = *((_DWORD *)this + 5); v39 = *((_DWORD *)this + 4); v28 = v9; std::`anonymous namespace'::numpunct_w = (int)&off_5393C4; dword_516478 = v9; std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_w, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_516474, 1u); else ++dword_516474; v19 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v19 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_w; dword_5164EC = 1; std::`anonymous namespace'::collate_w = (int)&off_539250; dword_5164F0 = std::locale::facet::_S_get_c_locale(); if ( _CRT_MT ) _InterlockedAdd(&dword_5164EC, 1u); else ++dword_5164EC; v20 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v20 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_w; dword_5164C8 = 1; std::`anonymous namespace'::moneypunct_wf = (int)&off_538548; dword_5164CC = v39; std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wf, 0, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_5164C8, 1u); else ++dword_5164C8; v21 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v21 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wf; dword_5164D4 = 1; std::`anonymous namespace'::moneypunct_wt = (int)&off_53857C; dword_5164D8 = v10; std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wt, 0, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_5164D4, 1u); else ++dword_5164D4; v22 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v22 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wt; dword_516498 = 1; std::`anonymous namespace'::money_get_w = (int)&off_5394C0; if ( _CRT_MT ) _InterlockedAdd(&dword_516498, 1u); else dword_516498 = 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_5164A8 = 1; std::`anonymous namespace'::money_put_w = (int)&off_5394F0; if ( v12 ) _InterlockedAdd(&dword_5164A8, 1u); else dword_5164A8 = 2; v24 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v24 + 4 * std::locale::id::_M_id(std::money_put>::id)) = &std::`anonymous namespace'::money_put_w; dword_516488 = 1; std::`anonymous namespace'::time_get_w = (int)&off_539410; if ( _CRT_MT ) _InterlockedAdd(&dword_516488, 1u); else dword_516488 = 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_516458, 1u); else ++dword_516458[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; } // 51642C: using guessed type int std::moneypunct::id; // 516430: using guessed type int std::moneypunct::id; // 516434: using guessed type int std::moneypunct::id; // 516438: using guessed type int std::moneypunct::id; // 516444: using guessed type _DWORD std::`anonymous namespace'::messages_c; // 516448: using guessed type signed __int32 dword_516448[3]; // 516454: using guessed type _DWORD std::`anonymous namespace'::messages_w; // 516458: using guessed type signed __int32 dword_516458[3]; // 516464: using guessed type int std::`anonymous namespace'::numpunct_c; // 516468: using guessed type int dword_516468; // 51646C: using guessed type int dword_51646C; // 516470: using guessed type int std::`anonymous namespace'::numpunct_w; // 516474: using guessed type int dword_516474; // 516478: using guessed type int dword_516478; // 51647C: using guessed type int std::`anonymous namespace'::time_get_c; // 516480: using guessed type int dword_516480; // 516484: using guessed type int std::`anonymous namespace'::time_get_w; // 516488: using guessed type int dword_516488; // 51648C: using guessed type int std::`anonymous namespace'::money_get_c; // 516490: using guessed type int dword_516490; // 516494: using guessed type int std::`anonymous namespace'::money_get_w; // 516498: using guessed type int dword_516498; // 51649C: using guessed type int std::`anonymous namespace'::money_put_c; // 5164A0: using guessed type int dword_5164A0; // 5164A4: using guessed type int std::`anonymous namespace'::money_put_w; // 5164A8: using guessed type int dword_5164A8; // 5164AC: using guessed type int std::`anonymous namespace'::moneypunct_cf; // 5164B0: using guessed type int dword_5164B0; // 5164B4: using guessed type int dword_5164B4; // 5164B8: using guessed type int std::`anonymous namespace'::moneypunct_ct; // 5164BC: using guessed type int dword_5164BC; // 5164C0: using guessed type int dword_5164C0; // 5164C4: using guessed type int std::`anonymous namespace'::moneypunct_wf; // 5164C8: using guessed type int dword_5164C8; // 5164CC: using guessed type int dword_5164CC; // 5164D0: using guessed type int std::`anonymous namespace'::moneypunct_wt; // 5164D4: using guessed type int dword_5164D4; // 5164D8: using guessed type int dword_5164D8; // 5164DC: using guessed type int std::`anonymous namespace'::collate_c; // 5164E0: using guessed type int dword_5164E0; // 5164E4: using guessed type int dword_5164E4; // 5164E8: using guessed type int std::`anonymous namespace'::collate_w; // 5164EC: using guessed type int dword_5164EC; // 5164F0: using guessed type int dword_5164F0; // 516600: using guessed type int std::collate::id; // 516604: using guessed type int std::collate::id; // 516620: using guessed type int std::messages::id; // 516624: using guessed type int std::messages::id; // 516628: using guessed type int std::numpunct::id; // 51662C: using guessed type int std::numpunct::id; // 516630: using guessed type int std::time_get>::id; // 516634: using guessed type int std::time_get>::id; // 516640: using guessed type int std::money_get>::id; // 516644: using guessed type int std::money_get>::id; // 516648: using guessed type int std::money_put>::id; // 51664C: using guessed type int std::money_put>::id[5]; // 5384E0: using guessed type int (*off_5384E0)(); // 538514: using guessed type int (*off_538514)(); // 538548: using guessed type int (*off_538548)(); // 53857C: using guessed type int (*off_53857C)(); // 539234: using guessed type int (*off_539234)(); // 539250: using guessed type int (*off_539250)(); // 5393A0: using guessed type int (*off_5393A0)(); // 5393C4: using guessed type int (*off_5393C4)(); // 5393E8: using guessed type int (*off_5393E8)(); // 539410: using guessed type int (*off_539410)(); // 5394A8: using guessed type int (*off_5394A8)(); // 5394C0: using guessed type int (*off_5394C0)(); // 5394D8: using guessed type int (*off_5394D8)(); // 5394F0: using guessed type int (*off_5394F0)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004D8420) -------------------------------------------------------- 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_5393A0; 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_539234; *((_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_5384E0; 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_538514; 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_5394A8; 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_5394D8; 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_5393E8; 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_5393C4; 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_539250; *((_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_538548; 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_53857C; 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_5394C0; 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_5394F0; 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_539410; 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; } // 4D8435: variable 'v34' is possibly undefined // 4D848E: variable 'v35' is possibly undefined // 4D84E3: variable 'v36' is possibly undefined // 4D8543: variable 'v37' is possibly undefined // 4D85A3: variable 'v38' is possibly undefined // 4D85E8: variable 'v39' is possibly undefined // 4D862D: variable 'v40' is possibly undefined // 4D8673: variable 'v41' is possibly undefined // 4D86C7: variable 'v42' is possibly undefined // 4D871F: variable 'v43' is possibly undefined // 4D8774: variable 'v44' is possibly undefined // 4D87D6: variable 'v45' is possibly undefined // 4D8838: variable 'v46' is possibly undefined // 4D887D: variable 'v47' is possibly undefined // 4D88C3: variable 'v48' is possibly undefined // 4D8909: variable 'v49' is possibly undefined // 51642C: using guessed type int std::moneypunct::id; // 516430: using guessed type int std::moneypunct::id; // 516434: using guessed type int std::moneypunct::id; // 516438: using guessed type int std::moneypunct::id; // 516600: using guessed type int std::collate::id; // 516604: using guessed type int std::collate::id; // 516620: using guessed type int std::messages::id; // 516624: using guessed type int std::messages::id; // 516628: using guessed type int std::numpunct::id; // 51662C: using guessed type int std::numpunct::id; // 516630: using guessed type int std::time_get>::id; // 516634: using guessed type int std::time_get>::id; // 516640: using guessed type int std::money_get>::id; // 516644: using guessed type int std::money_get>::id; // 516648: using guessed type int std::money_put>::id; // 51664C: using guessed type int std::money_put>::id[5]; // 5384E0: using guessed type int (*off_5384E0)(); // 538514: using guessed type int (*off_538514)(); // 538548: using guessed type int (*off_538548)(); // 53857C: using guessed type int (*off_53857C)(); // 539234: using guessed type int (*off_539234)(); // 539250: using guessed type int (*off_539250)(); // 5393A0: using guessed type int (*off_5393A0)(); // 5393C4: using guessed type int (*off_5393C4)(); // 5393E8: using guessed type int (*off_5393E8)(); // 539410: using guessed type int (*off_539410)(); // 5394A8: using guessed type int (*off_5394A8)(); // 5394C0: using guessed type int (*off_5394C0)(); // 5394D8: using guessed type int (*off_5394D8)(); // 5394F0: using guessed type int (*off_5394F0)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004D8A90) -------------------------------------------------------- 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_7); } if ( _CRT_MT && __gthr_win32_mutex_lock(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) { exception = __cxa_allocate_exception(4u); *exception = &off_537988; __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); } } // 4D8AED: variable 'v7' is possibly undefined // 4D8AFC: variable 'v9' is possibly undefined // 533580: using guessed type int *std::locale::_S_twinned_facets; // 533CE8: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; // 537988: using guessed type void (__cdecl *off_537988)(__gnu_cxx::__concurrence_lock_error *__hidden this); // 78A9D4: using guessed type int _CRT_MT; //----- (004D8CA0) -------------------------------------------------------- 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; } // 4D8E10: variable 'v27' is possibly undefined // 4D8E20: variable 'v26' is possibly undefined // 4D8E50: variable 'v29' is possibly undefined // 4D8E5A: variable 'v45' is possibly undefined // 4D8FCE: variable 'v42' is possibly undefined // 504CD0: using guessed type void __stdcall __noreturn std::locale::_Impl::_M_install_facet(_DWORD, _DWORD); // 533580: using guessed type int *std::locale::_S_twinned_facets; // 78A9D4: using guessed type int _CRT_MT; //----- (004D90B0) -------------------------------------------------------- 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); } // 4D90E7: variable 'v6' is possibly undefined //----- (004D9100) -------------------------------------------------------- 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; } // 4D912C: variable 'v7' is possibly undefined //----- (004D9150) -------------------------------------------------------- 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; } // 504CAC: using guessed type void __stdcall __noreturn std::locale::_Impl::_Impl(_DWORD, _DWORD); // 78A9D4: using guessed type int _CRT_MT; //----- (004D92E0) -------------------------------------------------------- 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_515D7C ); 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_5153C4 = 1; word_5153E4 = 0; `anonymous namespace'::numpunct_cache_c = (int)&off_538BD4; dword_5153C8 = 0; dword_5153CC = 0; byte_5153D0 = 0; dword_5153D4 = 0; dword_5153D8 = 0; dword_5153DC = 0; dword_5153E0 = 0; byte_515424 = 0; dword_5152AC = 1; `anonymous namespace'::numpunct_c = &off_538318; dword_5152B0 = (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_515F44 = 1; `anonymous namespace'::num_get_c = &off_53926C; 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_515F54 = 1; `anonymous namespace'::num_put_c = &off_5392E4; 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_515E5C = 1; `anonymous namespace'::collate_c = &off_5382A8; dword_515E60 = 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_538D0C; dword_5156C4 = 1; dword_5156C8 = 0; dword_5156CC = 0; word_5156D0 = 0; byte_5156D2 = 0; dword_5156D4 = 0; dword_5156D8 = 0; dword_5156DC = 0; dword_5156E0 = 0; dword_5156E4 = 0; dword_5156E8 = 0; dword_5156EC = 0; dword_5156F0 = 0; dword_5156F4 = 0; byte_515703 = 0; dword_515354 = 1; `anonymous namespace'::moneypunct_cf = &off_537E60; dword_515358 = (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_538D1C; dword_515724 = 1; dword_515728 = 0; dword_51572C = 0; word_515730 = 0; byte_515732 = 0; dword_515734 = 0; dword_515738 = 0; dword_51573C = 0; dword_515740 = 0; dword_515744 = 0; dword_515748 = 0; dword_51574C = 0; dword_515750 = 0; dword_515754 = 0; byte_515763 = 0; dword_515360 = 1; `anonymous namespace'::moneypunct_ct = &off_537E94; dword_515364 = (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_5152F4 = 1; `anonymous namespace'::money_get_c = &off_5383B8; 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_515304 = 1; `anonymous namespace'::money_put_c = &off_5383E8; 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_515504 = 1; `anonymous namespace'::timepunct_cache_c = (int)&off_538C08; dword_515508 = 0; dword_51550C = 0; dword_515510 = 0; dword_515514 = 0; dword_515518 = 0; dword_51551C = 0; dword_515520 = 0; dword_515524 = 0; dword_515528 = 0; dword_51552C = 0; dword_515530 = 0; dword_515534 = 0; dword_515538 = 0; dword_51553C = 0; dword_515540 = 0; dword_515544 = 0; dword_515548 = 0; dword_51554C = 0; dword_515550 = 0; dword_515554 = 0; dword_515558 = 0; dword_51555C = 0; dword_515560 = 0; dword_515564 = 0; dword_515568 = 0; dword_51556C = 0; dword_515570 = 0; dword_515574 = 0; dword_515578 = 0; dword_51557C = 0; dword_515580 = 0; dword_515584 = 0; dword_515588 = 0; dword_51558C = 0; dword_515590 = 0; dword_515594 = 0; dword_515598 = 0; dword_51559C = 0; dword_5155A0 = 0; dword_5155A4 = 0; dword_5155A8 = 0; dword_5155AC = 0; dword_5155B0 = 0; dword_5155B4 = 0; dword_5155B8 = 0; dword_5155BC = 0; dword_5155C0 = 0; byte_5155C4 = 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_5152C4 = 1; `anonymous namespace'::time_get_c = &off_538360; 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_5152D4 = 1; `anonymous namespace'::time_put_c = &off_539438; 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_515444 = 1; `anonymous namespace'::numpunct_cache_w = (int)&off_538BE4; dword_515448 = 0; dword_51544C = 0; byte_515450 = 0; dword_515454 = 0; dword_515458 = 0; dword_51545C = 0; dword_515460 = 0; dword_515464 = 0; byte_5154E4 = 0; dword_5152B8 = 1; `anonymous namespace'::numpunct_w = &off_53833C; dword_5152BC = (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_515F4C = 1; `anonymous namespace'::num_get_w = &off_5392A8; 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_515F5C = 1; `anonymous namespace'::num_put_w = &off_539314; 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_515E68 = 1; `anonymous namespace'::collate_w = &off_5382C4; dword_515E6C = 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_515784 = 1; `anonymous namespace'::moneypunct_cache_wf = (int)&off_538D2C; dword_515788 = 0; dword_51578C = 0; byte_515790 = 0; dword_515792 = 0; dword_515798 = 0; dword_51579C = 0; dword_5157A0 = 0; dword_5157A4 = 0; dword_5157A8 = 0; dword_5157AC = 0; dword_5157B0 = 0; dword_5157B4 = 0; dword_5157B8 = 0; byte_5157D2 = 0; dword_51536C = 1; `anonymous namespace'::moneypunct_wf = &off_537EC8; dword_515370 = (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_5157E4 = 1; `anonymous namespace'::moneypunct_cache_wt = (int)&off_538D3C; dword_5157E8 = 0; dword_5157EC = 0; byte_5157F0 = 0; dword_5157F2 = 0; dword_5157F8 = 0; dword_5157FC = 0; dword_515800 = 0; dword_515804 = 0; dword_515808 = 0; dword_51580C = 0; dword_515810 = 0; dword_515814 = 0; dword_515818 = 0; byte_515832 = 0; dword_515378 = 1; `anonymous namespace'::moneypunct_wt = &off_537EFC; dword_51537C = (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_5152FC = 1; `anonymous namespace'::money_get_w = &off_5383D0; 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_51530C = 1; `anonymous namespace'::money_put_w = &off_538400; 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_5155E4 = 1; `anonymous namespace'::timepunct_cache_w = (int)&off_538C18; dword_5155E8 = 0; dword_5155EC = 0; dword_5155F0 = 0; dword_5155F4 = 0; dword_5155F8 = 0; dword_5155FC = 0; dword_515600 = 0; dword_515604 = 0; dword_515608 = 0; dword_51560C = 0; dword_515610 = 0; dword_515614 = 0; dword_515618 = 0; dword_51561C = 0; dword_515620 = 0; dword_515624 = 0; dword_515628 = 0; dword_51562C = 0; dword_515630 = 0; dword_515634 = 0; dword_515638 = 0; dword_51563C = 0; dword_515640 = 0; dword_515644 = 0; dword_515648 = 0; dword_51564C = 0; dword_515650 = 0; dword_515654 = 0; dword_515658 = 0; dword_51565C = 0; dword_515660 = 0; dword_515664 = 0; dword_515668 = 0; dword_51566C = 0; dword_515670 = 0; dword_515674 = 0; dword_515678 = 0; dword_51567C = 0; dword_515680 = 0; dword_515684 = 0; dword_515688 = 0; dword_51568C = 0; dword_515690 = 0; dword_515694 = 0; dword_515698 = 0; dword_51569C = 0; dword_5156A0 = 0; byte_5156A4 = 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_5152CC = 1; `anonymous namespace'::time_get_w = &off_53838C; 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_5152DC = 1; `anonymous namespace'::time_put_w = &off_53944C; 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_5152E4 = 1; `anonymous namespace'::codecvt_c16 = &off_5391B0; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::codecvt::id, (const std::locale::id *)&`anonymous namespace'::codecvt_c16, v46); dword_5152EC = 1; `anonymous namespace'::codecvt_c32 = &off_539158; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::codecvt::id, (const std::locale::id *)&`anonymous namespace'::codecvt_c32, v47); dword_515384 = 1; `anonymous namespace'::codecvt_c16_c8 = &off_539184; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::codecvt::id, (const std::locale::id *)&`anonymous namespace'::codecvt_c16_c8, v48); dword_51538C = 1; `anonymous namespace'::codecvt_c32_c8 = &off_53912C; 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; } // 4D93AC: variable 'v18' is possibly undefined // 4D93D9: variable 'v19' is possibly undefined // 4D948B: variable 'v20' is possibly undefined // 4D94B8: variable 'v21' is possibly undefined // 4D94E5: variable 'v22' is possibly undefined // 4D951C: variable 'v23' is possibly undefined // 4D9608: variable 'v24' is possibly undefined // 4D96F3: variable 'v25' is possibly undefined // 4D9720: variable 'v26' is possibly undefined // 4D974D: variable 'v27' is possibly undefined // 4D9973: variable 'v28' is possibly undefined // 4D99A0: variable 'v29' is possibly undefined // 4D99CD: variable 'v30' is possibly undefined // 4D99FA: variable 'v31' is possibly undefined // 4D9A27: variable 'v32' is possibly undefined // 4D9A54: variable 'v33' is possibly undefined // 4D9B07: variable 'v34' is possibly undefined // 4D9B34: variable 'v35' is possibly undefined // 4D9B61: variable 'v36' is possibly undefined // 4D9B98: variable 'v37' is possibly undefined // 4D9C85: variable 'v38' is possibly undefined // 4D9D72: variable 'v39' is possibly undefined // 4D9D9F: variable 'v40' is possibly undefined // 4D9DCC: variable 'v41' is possibly undefined // 4D9FF2: variable 'v42' is possibly undefined // 4DA01F: variable 'v43' is possibly undefined // 4DA04C: variable 'v44' is possibly undefined // 4DA079: variable 'v45' is possibly undefined // 4DA0A6: variable 'v46' is possibly undefined // 4DA0D3: variable 'v47' is possibly undefined // 4DA100: variable 'v48' is possibly undefined // 4DA12D: variable 'v49' is possibly undefined // 4DA167: variable 'v17' is possibly undefined // 515288: using guessed type _DWORD `anonymous namespace'::messages_c[4]; // 515298: using guessed type _DWORD `anonymous namespace'::messages_w[4]; // 5152AC: using guessed type int dword_5152AC; // 5152B0: using guessed type int dword_5152B0; // 5152B8: using guessed type int dword_5152B8; // 5152BC: using guessed type int dword_5152BC; // 5152C4: using guessed type int dword_5152C4; // 5152CC: using guessed type int dword_5152CC; // 5152D4: using guessed type int dword_5152D4; // 5152DC: using guessed type int dword_5152DC; // 5152E4: using guessed type int dword_5152E4; // 5152EC: using guessed type int dword_5152EC; // 5152F4: using guessed type int dword_5152F4; // 5152FC: using guessed type int dword_5152FC; // 515304: using guessed type int dword_515304; // 51530C: using guessed type int dword_51530C; // 515310: using guessed type _DWORD `anonymous namespace'::timepunct_c[5]; // 515324: using guessed type _DWORD `anonymous namespace'::timepunct_w[5]; // 515354: using guessed type int dword_515354; // 515358: using guessed type int dword_515358; // 515360: using guessed type int dword_515360; // 515364: using guessed type int dword_515364; // 51536C: using guessed type int dword_51536C; // 515370: using guessed type int dword_515370; // 515378: using guessed type int dword_515378; // 51537C: using guessed type int dword_51537C; // 515384: using guessed type int dword_515384; // 51538C: using guessed type int dword_51538C; // 5153C0: using guessed type int `anonymous namespace'::numpunct_cache_c; // 5153C4: using guessed type int dword_5153C4; // 5153C8: using guessed type int dword_5153C8; // 5153CC: using guessed type int dword_5153CC; // 5153D0: using guessed type char byte_5153D0; // 5153D4: using guessed type int dword_5153D4; // 5153D8: using guessed type int dword_5153D8; // 5153DC: using guessed type int dword_5153DC; // 5153E0: using guessed type int dword_5153E0; // 5153E4: using guessed type __int16 word_5153E4; // 515424: using guessed type char byte_515424; // 515440: using guessed type int `anonymous namespace'::numpunct_cache_w; // 515444: using guessed type int dword_515444; // 515448: using guessed type int dword_515448; // 51544C: using guessed type int dword_51544C; // 515450: using guessed type char byte_515450; // 515454: using guessed type int dword_515454; // 515458: using guessed type int dword_515458; // 51545C: using guessed type int dword_51545C; // 515460: using guessed type int dword_515460; // 515464: using guessed type int dword_515464; // 5154E4: using guessed type char byte_5154E4; // 515500: using guessed type int `anonymous namespace'::timepunct_cache_c; // 515504: using guessed type int dword_515504; // 515508: using guessed type int dword_515508; // 51550C: using guessed type int dword_51550C; // 515510: using guessed type int dword_515510; // 515514: using guessed type int dword_515514; // 515518: using guessed type int dword_515518; // 51551C: using guessed type int dword_51551C; // 515520: using guessed type int dword_515520; // 515524: using guessed type int dword_515524; // 515528: using guessed type int dword_515528; // 51552C: using guessed type int dword_51552C; // 515530: using guessed type int dword_515530; // 515534: using guessed type int dword_515534; // 515538: using guessed type int dword_515538; // 51553C: using guessed type int dword_51553C; // 515540: using guessed type int dword_515540; // 515544: using guessed type int dword_515544; // 515548: using guessed type int dword_515548; // 51554C: using guessed type int dword_51554C; // 515550: using guessed type int dword_515550; // 515554: using guessed type int dword_515554; // 515558: using guessed type int dword_515558; // 51555C: using guessed type int dword_51555C; // 515560: using guessed type int dword_515560; // 515564: using guessed type int dword_515564; // 515568: using guessed type int dword_515568; // 51556C: using guessed type int dword_51556C; // 515570: using guessed type int dword_515570; // 515574: using guessed type int dword_515574; // 515578: using guessed type int dword_515578; // 51557C: using guessed type int dword_51557C; // 515580: using guessed type int dword_515580; // 515584: using guessed type int dword_515584; // 515588: using guessed type int dword_515588; // 51558C: using guessed type int dword_51558C; // 515590: using guessed type int dword_515590; // 515594: using guessed type int dword_515594; // 515598: using guessed type int dword_515598; // 51559C: using guessed type int dword_51559C; // 5155A0: using guessed type int dword_5155A0; // 5155A4: using guessed type int dword_5155A4; // 5155A8: using guessed type int dword_5155A8; // 5155AC: using guessed type int dword_5155AC; // 5155B0: using guessed type int dword_5155B0; // 5155B4: using guessed type int dword_5155B4; // 5155B8: using guessed type int dword_5155B8; // 5155BC: using guessed type int dword_5155BC; // 5155C0: using guessed type int dword_5155C0; // 5155C4: using guessed type char byte_5155C4; // 5155E0: using guessed type int `anonymous namespace'::timepunct_cache_w; // 5155E4: using guessed type int dword_5155E4; // 5155E8: using guessed type int dword_5155E8; // 5155EC: using guessed type int dword_5155EC; // 5155F0: using guessed type int dword_5155F0; // 5155F4: using guessed type int dword_5155F4; // 5155F8: using guessed type int dword_5155F8; // 5155FC: using guessed type int dword_5155FC; // 515600: using guessed type int dword_515600; // 515604: using guessed type int dword_515604; // 515608: using guessed type int dword_515608; // 51560C: using guessed type int dword_51560C; // 515610: using guessed type int dword_515610; // 515614: using guessed type int dword_515614; // 515618: using guessed type int dword_515618; // 51561C: using guessed type int dword_51561C; // 515620: using guessed type int dword_515620; // 515624: using guessed type int dword_515624; // 515628: using guessed type int dword_515628; // 51562C: using guessed type int dword_51562C; // 515630: using guessed type int dword_515630; // 515634: using guessed type int dword_515634; // 515638: using guessed type int dword_515638; // 51563C: using guessed type int dword_51563C; // 515640: using guessed type int dword_515640; // 515644: using guessed type int dword_515644; // 515648: using guessed type int dword_515648; // 51564C: using guessed type int dword_51564C; // 515650: using guessed type int dword_515650; // 515654: using guessed type int dword_515654; // 515658: using guessed type int dword_515658; // 51565C: using guessed type int dword_51565C; // 515660: using guessed type int dword_515660; // 515664: using guessed type int dword_515664; // 515668: using guessed type int dword_515668; // 51566C: using guessed type int dword_51566C; // 515670: using guessed type int dword_515670; // 515674: using guessed type int dword_515674; // 515678: using guessed type int dword_515678; // 51567C: using guessed type int dword_51567C; // 515680: using guessed type int dword_515680; // 515684: using guessed type int dword_515684; // 515688: using guessed type int dword_515688; // 51568C: using guessed type int dword_51568C; // 515690: using guessed type int dword_515690; // 515694: using guessed type int dword_515694; // 515698: using guessed type int dword_515698; // 51569C: using guessed type int dword_51569C; // 5156A0: using guessed type int dword_5156A0; // 5156A4: using guessed type char byte_5156A4; // 5156C0: using guessed type int `anonymous namespace'::moneypunct_cache_cf; // 5156C4: using guessed type int dword_5156C4; // 5156C8: using guessed type int dword_5156C8; // 5156CC: using guessed type int dword_5156CC; // 5156D0: using guessed type __int16 word_5156D0; // 5156D2: using guessed type char byte_5156D2; // 5156D4: using guessed type int dword_5156D4; // 5156D8: using guessed type int dword_5156D8; // 5156DC: using guessed type int dword_5156DC; // 5156E0: using guessed type int dword_5156E0; // 5156E4: using guessed type int dword_5156E4; // 5156E8: using guessed type int dword_5156E8; // 5156EC: using guessed type int dword_5156EC; // 5156F0: using guessed type int dword_5156F0; // 5156F4: using guessed type int dword_5156F4; // 515703: using guessed type char byte_515703; // 515720: using guessed type int `anonymous namespace'::moneypunct_cache_ct; // 515724: using guessed type int dword_515724; // 515728: using guessed type int dword_515728; // 51572C: using guessed type int dword_51572C; // 515730: using guessed type __int16 word_515730; // 515732: using guessed type char byte_515732; // 515734: using guessed type int dword_515734; // 515738: using guessed type int dword_515738; // 51573C: using guessed type int dword_51573C; // 515740: using guessed type int dword_515740; // 515744: using guessed type int dword_515744; // 515748: using guessed type int dword_515748; // 51574C: using guessed type int dword_51574C; // 515750: using guessed type int dword_515750; // 515754: using guessed type int dword_515754; // 515763: using guessed type char byte_515763; // 515780: using guessed type int `anonymous namespace'::moneypunct_cache_wf; // 515784: using guessed type int dword_515784; // 515788: using guessed type int dword_515788; // 51578C: using guessed type int dword_51578C; // 515790: using guessed type char byte_515790; // 515792: using guessed type int dword_515792; // 515798: using guessed type int dword_515798; // 51579C: using guessed type int dword_51579C; // 5157A0: using guessed type int dword_5157A0; // 5157A4: using guessed type int dword_5157A4; // 5157A8: using guessed type int dword_5157A8; // 5157AC: using guessed type int dword_5157AC; // 5157B0: using guessed type int dword_5157B0; // 5157B4: using guessed type int dword_5157B4; // 5157B8: using guessed type int dword_5157B8; // 5157D2: using guessed type char byte_5157D2; // 5157E0: using guessed type int `anonymous namespace'::moneypunct_cache_wt; // 5157E4: using guessed type int dword_5157E4; // 5157E8: using guessed type int dword_5157E8; // 5157EC: using guessed type int dword_5157EC; // 5157F0: using guessed type char byte_5157F0; // 5157F2: using guessed type int dword_5157F2; // 5157F8: using guessed type int dword_5157F8; // 5157FC: using guessed type int dword_5157FC; // 515800: using guessed type int dword_515800; // 515804: using guessed type int dword_515804; // 515808: using guessed type int dword_515808; // 51580C: using guessed type int dword_51580C; // 515810: using guessed type int dword_515810; // 515814: using guessed type int dword_515814; // 515818: using guessed type int dword_515818; // 515832: using guessed type char byte_515832; // 515840: using guessed type __int16 `anonymous namespace'::name_c; // 515860: using guessed type _DWORD `anonymous namespace'::ctype_c[136]; // 515A80: using guessed type _DWORD `anonymous namespace'::ctype_w[184]; // 515D64: using guessed type int `anonymous namespace'::name_vec; // 515E40: using guessed type _DWORD `anonymous namespace'::codecvt_c[3]; // 515E4C: using guessed type _DWORD `anonymous namespace'::codecvt_w[3]; // 515E5C: using guessed type int dword_515E5C; // 515E60: using guessed type int dword_515E60; // 515E68: using guessed type int dword_515E68; // 515E6C: using guessed type int dword_515E6C; // 515F44: using guessed type int dword_515F44; // 515F4C: using guessed type int dword_515F4C; // 515F54: using guessed type int dword_515F54; // 515F5C: using guessed type int dword_515F5C; // 51643C: using guessed type int std::__timepunct::id; // 516440: using guessed type int std::__timepunct::id; // 5165A8: using guessed type int std::moneypunct::id; // 5165AC: using guessed type int std::moneypunct::id; // 5165B0: using guessed type int std::moneypunct::id; // 5165B4: using guessed type int std::moneypunct::id; // 5165C8: using guessed type int std::numpunct::id; // 5165CC: using guessed type int std::numpunct::id; // 537E60: using guessed type int (*off_537E60)(); // 537E94: using guessed type int (*off_537E94)(); // 537EC8: using guessed type int (*off_537EC8)(); // 537EFC: using guessed type int (*off_537EFC)(); // 5382A8: using guessed type int (*off_5382A8)(); // 5382C4: using guessed type int (*off_5382C4)(); // 538318: using guessed type int (*off_538318)(); // 53833C: using guessed type int (*off_53833C)(); // 538360: using guessed type int (*off_538360)(); // 53838C: using guessed type int (*off_53838C)(); // 5383B8: using guessed type int (*off_5383B8)(); // 5383D0: using guessed type int (*off_5383D0)(); // 5383E8: using guessed type int (*off_5383E8)(); // 538400: using guessed type int (*off_538400)(); // 538BD4: using guessed type int (*off_538BD4)(); // 538BE4: using guessed type int (*off_538BE4)(); // 538C08: using guessed type int (*off_538C08)(); // 538C18: using guessed type int (*off_538C18)(); // 538D0C: using guessed type int (*off_538D0C)(); // 538D1C: using guessed type int (*off_538D1C)(); // 538D2C: using guessed type int (*off_538D2C)(); // 538D3C: using guessed type int (*off_538D3C)(); // 53912C: using guessed type int (*off_53912C)(); // 539158: using guessed type int (*off_539158)(); // 539184: using guessed type int (*off_539184)(); // 5391B0: using guessed type int (*off_5391B0)(); // 53926C: using guessed type int (*off_53926C)(); // 5392A8: using guessed type int (*off_5392A8)(); // 5392E4: using guessed type int (*off_5392E4)(); // 539314: using guessed type int (*off_539314)(); // 539438: using guessed type int (*off_539438)(); // 53944C: using guessed type int (*off_53944C)(); //----- (004DA270) -------------------------------------------------------- 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); } } // 504C5C: using guessed type int std::locale::_Impl::~_Impl(void); // 78A9D4: using guessed type int _CRT_MT; //----- (004DA3F0) -------------------------------------------------------- int *const *std::locale::facet::_S_get_c_name() { return &std::locale::facet::_S_c_name; } //----- (004DA400) -------------------------------------------------------- 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; } // 516590: using guessed type int std::locale::facet::_S_c_locale; // 78A9D4: using guessed type int _CRT_MT; //----- (004DA470) -------------------------------------------------------- int __cdecl std::locale::facet::_S_clone_c_locale() { return 0; } //----- (004DA480) -------------------------------------------------------- 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; } //----- (004DA4C0) -------------------------------------------------------- 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); } // 516590: using guessed type int std::locale::facet::_S_c_locale; //----- (004DA4F0) -------------------------------------------------------- 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; } //----- (004DA500) -------------------------------------------------------- int __cdecl std::locale::facet::_S_lc_ctype_c_locale() { return 0; } //----- (004DA510) -------------------------------------------------------- void __fastcall std::locale::facet::~facet(void *a1) { operator delete(a1); } //----- (004DA530) -------------------------------------------------------- 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; } // 4DA5B6: variable 'v6' is possibly undefined // 516588: using guessed type int std::locale::_S_classic; // 5165A4: using guessed type int std::locale::_S_global; // 78A9D4: using guessed type int _CRT_MT; //----- (004DA660) -------------------------------------------------------- _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; } // 4DA675: variable 'v1' is possibly undefined // 515D60: using guessed type _DWORD `anonymous namespace'::c_locale; // 516588: using guessed type int std::locale::_S_classic; //----- (004DA690) -------------------------------------------------------- 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; } //----- (004DA6A0) -------------------------------------------------------- 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; } // 516588: using guessed type int std::locale::_S_classic; // 78A9D4: using guessed type int _CRT_MT; //----- (004DA6D0) -------------------------------------------------------- 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_53799C; __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; } // 516588: using guessed type int std::locale::_S_classic; // 5165A4: using guessed type int std::locale::_S_global; // 533CF4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; // 53799C: using guessed type void (__cdecl *off_53799C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); // 78A9D4: using guessed type int _CRT_MT; //----- (004DA780) -------------------------------------------------------- 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; } } // 516588: using guessed type int std::locale::_S_classic; // 78A9D4: using guessed type int _CRT_MT; //----- (004DA7E0) -------------------------------------------------------- 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; } // 516588: using guessed type int std::locale::_S_classic; // 78A9D4: using guessed type int _CRT_MT; //----- (004DA880) -------------------------------------------------------- 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; } // 4DA8ED: variable 'v16' is possibly undefined //----- (004DA9A0) -------------------------------------------------------- _DWORD *__thiscall std::vector>::_M_erase(_DWORD *this, _DWORD *a2) { char *v3; // ebx _DWORD *v4; // ecx int i; // ebx _DWORD *v6; // edi int v7; // ecx v3 = (char *)this[1]; if ( a2 + 2 != (_DWORD *)v3 ) { v4 = a2; for ( i = (v3 - (char *)(a2 + 2)) >> 3; i > 0; --i ) { v6 = v4 + 2; std::__shared_ptr::operator=(v4, v4 + 2); v4 = v6; } } v7 = this[1]; this[1] = v7 - 8; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v7 - 4)); return a2; } //----- (004DA9F4) -------------------------------------------------------- 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; } //----- (004DAA30) -------------------------------------------------------- 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 _DWORD *v7; // esi char *v8; // edi int v9; // eax volatile signed __int32 **v10; // ecx char *v11; // esi _DWORD *v12; // edx int v13; // eax volatile signed __int32 **v14; // ecx char *v15; // esi char *result; // eax void (__cdecl *v17)(void *); // [esp+4h] [ebp-44h] _DWORD *v18; // [esp+18h] [ebp-30h] _DWORD *v19; // [esp+18h] [ebp-30h] char *v20; // [esp+1Ch] [ebp-2Ch] char *v22; // [esp+28h] [ebp-20h] _DWORD *v23; // [esp+2Ch] [ebp-1Ch] v20 = this[1]; v22 = *this; v3 = (v20 - *this) >> 3; if ( v3 == 0xFFFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = (v20 - *this) >> 3; if ( !v3 ) v4 = 1; v5 = __CFADD__(v4, v3); v6 = v4 + v3; if ( v5 ) goto LABEL_8; v23 = 0; if ( !v6 ) goto LABEL_10; if ( v6 > 0xFFFFFFF ) LABEL_8: v6 = 0xFFFFFFF; v23 = operator new((struct type_info *)(8 * v6), v17); LABEL_10: v7 = v23; v8 = v22; std::__shared_ptr::__shared_ptr( (_DWORD *)((char *)v23 + a2 - v22), a3); while ( a2 != v8 ) { *v7 = *(_DWORD *)v8; v9 = *((_DWORD *)v8 + 1); v7[1] = v9; if ( v9 ) __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v9 + 4)); v10 = (volatile signed __int32 **)(v8 + 4); v7 += 2; v8 += 8; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v10); } v11 = v8; v12 = (_DWORD *)((char *)v23 + v8 - v22 + 8); while ( v11 != v20 ) { *v12 = *(_DWORD *)v11; v13 = *((_DWORD *)v11 + 1); v12[1] = v13; if ( v13 ) { v18 = v12; __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v13 + 4)); v12 = v18; } v14 = (volatile signed __int32 **)(v11 + 4); v19 = v12; v11 += 8; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v14); v12 = v19 + 2; } v15 = &v11[(char *)v23 - v22 + 8]; if ( v22 ) operator delete(v22); this[1] = v15; *this = (char *)v23; result = (char *)&v23[2 * v6]; this[2] = result; return result; } // 4DAAA2: variable 'v17' is possibly undefined //----- (004DAB6C) -------------------------------------------------------- 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; } //----- (004DABA8) -------------------------------------------------------- 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; } // 4DAC1E: variable 'v20' is possibly undefined //----- (004DACF0) -------------------------------------------------------- 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; } // 4DAD18: variable 'this' is possibly undefined //----- (004DAD34) -------------------------------------------------------- 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; } // 4DAD71: variable 'v9' is possibly undefined // 4DADAF: variable 'v6' is possibly undefined // 4DADB7: variable 'v4' is possibly undefined //----- (004DADC8) -------------------------------------------------------- int __thiscall std::vector::_M_realloc_insert( _DWORD *this, char *a2, _DWORD *a3) { int v3; // esi int v5; // eax char *v6; // esi char *v7; // ebx char *v8; // ebx char *i; // eax char *v10; // eax unsigned int v11; // eax char *v12; // ebx char *v13; // eax void **v14; // edx void **v15; // edx int result; // eax void (__cdecl *v17)(void *); // [esp+4h] [ebp-44h] char *v18; // [esp+14h] [ebp-34h] void **v19; // [esp+18h] [ebp-30h] char *v20; // [esp+1Ch] [ebp-2Ch] char *v21; // [esp+1Ch] [ebp-2Ch] char *v22; // [esp+20h] [ebp-28h] void **v23; // [esp+20h] [ebp-28h] char *v24; // [esp+24h] [ebp-24h] unsigned int v25; // [esp+28h] [ebp-20h] char *v26; // [esp+2Ch] [ebp-1Ch] v24 = (char *)this[1]; v26 = (char *)*this; v3 = -1227133513 * ((int)&v24[-*this] >> 2); if ( v3 == 76695844 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v5 = -1227133513 * ((int)&v24[-*this] >> 2); if ( !v3 ) v5 = 1; v25 = v5 - 1227133513 * ((int)&v24[-*this] >> 2); if ( __CFADD__(v5, v3) ) goto LABEL_8; v6 = 0; if ( v25 ) { if ( v25 <= 0x4924924 ) { LABEL_9: v6 = (char *)operator new((struct type_info *)(28 * v25), v17); goto LABEL_10; } LABEL_8: v25 = 76695844; goto LABEL_9; } LABEL_10: v7 = &v6[a2 - v26 + 4]; *((_DWORD *)v7 - 1) = *a3; std::string::basic_string(v7, (int)(a3 + 1)); v8 = v26; for ( i = v6; ; i = v21 ) { v10 = i + 28; if ( a2 == v8 ) break; v21 = v10; *((_DWORD *)v10 - 7) = *(_DWORD *)v8; v14 = (void **)(v8 + 4); v8 += 28; v23 = v14; std::string::basic_string((_DWORD *)v10 - 6, v14); std::string::_M_dispose(v23); } v11 = (920350135 * ((unsigned int)(a2 - v26) >> 2)) & 0x3FFFFFFF; v20 = &v26[28 * v11]; v12 = v20; v22 = &v6[28 * v11 + 28]; v13 = v22; while ( v24 != v12 ) { v18 = v13; *(_DWORD *)v13 = *(_DWORD *)v12; v15 = (void **)(v12 + 4); v12 += 28; v19 = v15; std::string::basic_string((_DWORD *)v13 + 1, v15); std::string::_M_dispose(v19); v13 = v18 + 28; } if ( v26 ) operator delete(v26); result = 28 * v25; *this = v6; this[1] = &v22[28 * ((920350135 * ((unsigned int)(v24 - v20) >> 2)) & 0x3FFFFFFF)]; this[2] = &v6[28 * v25]; return result; } // 4DAE3F: variable 'v17' is possibly undefined //----- (004DAF78) -------------------------------------------------------- _BYTE *__thiscall std::vector::push_back(_DWORD *this, _DWORD *a2) { char *v3; // ecx _DWORD *v4; // ecx _BYTE *result; // eax v3 = (char *)this[1]; if ( v3 == (char *)this[2] ) return (_BYTE *)std::vector::_M_realloc_insert( this, v3, a2); v4 = v3 + 4; *(v4 - 1) = *a2; result = std::string::basic_string(v4, (int)(a2 + 1)); this[1] += 28; return result; } //----- (004DAFC0) -------------------------------------------------------- void *__thiscall std::vector::_M_realloc_insert( void **this, int a2, WXML::DOMLib::Token *a3) { int v3; // ebx int v5; // eax bool v6; // cf unsigned int v7; // ebx char *v8; // esi int v9; // eax void *result; // eax void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] int v12; // [esp+14h] [ebp-24h] int v13; // [esp+18h] [ebp-20h] void *v14; // [esp+1Ch] [ebp-1Ch] v12 = (int)this[1]; v14 = *this; v3 = -1227133513 * ((v12 - (int)*this) >> 4); if ( v3 == 19173961 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v5 = -1227133513 * ((v12 - (int)*this) >> 4); if ( !v3 ) v5 = 1; v6 = __CFADD__(v5, v3); v7 = v5 - 1227133513 * ((v12 - (int)*this) >> 4); if ( v6 ) goto LABEL_8; v8 = 0; if ( !v7 ) goto LABEL_10; if ( v7 > 0x1249249 ) LABEL_8: v7 = 19173961; v8 = (char *)operator new((struct type_info *)(112 * v7), v11); LABEL_10: WXML::DOMLib::Token::Token((int)&v8[a2 - (_DWORD)v14], a3, (const WXML::DOMLib::Token *)v11); v9 = std::__relocate_a_1>( (int)v14, a2, (int)v8); result = (void *)std::__relocate_a_1>( a2, v12, v9 + 112); if ( v14 ) { v13 = (int)result; operator delete(v14); result = (void *)v13; } *this = v8; this[1] = result; this[2] = &v8[112 * v7]; return result; } // 4DB031: variable 'v11' is possibly undefined //----- (004DB0CC) -------------------------------------------------------- _BYTE *__thiscall std::vector::push_back(int this, WXML::DOMLib::Token *a2) { int v3; // ecx _BYTE *result; // eax const WXML::DOMLib::Token *v5; // [esp+4h] [ebp-14h] v3 = *(_DWORD *)(this + 4); if ( v3 == *(_DWORD *)(this + 8) ) return std::vector::_M_realloc_insert((void **)this, v3, a2); result = WXML::DOMLib::Token::Token(v3, a2, v5); *(_DWORD *)(this + 4) += 112; return result; } // 4DB0E3: variable 'v5' is possibly undefined //----- (004DB108) -------------------------------------------------------- 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; } // 4DB17F: variable 'v16' is possibly undefined //----- (004DB2C0) -------------------------------------------------------- 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; } //----- (004DB2FC) -------------------------------------------------------- _DWORD *__thiscall std::vector::_M_realloc_insert( char **this, char *a2, WXML::EXPRLib::Token *a3) { int v3; // ebx int v5; // eax bool v6; // cf unsigned int v7; // ebx int v8; // edx char *v9; // esi _DWORD *v10; // eax _DWORD *result; // eax void (__cdecl *v12)(void *); // [esp+4h] [ebp-34h] char *v13; // [esp+18h] [ebp-20h] _DWORD *v14; // [esp+18h] [ebp-20h] char *v15; // [esp+1Ch] [ebp-1Ch] v13 = this[1]; v15 = *this; v3 = -1227133513 * ((v13 - *this) >> 2); if ( v3 == 76695844 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v5 = -1227133513 * ((v13 - *this) >> 2); if ( !v3 ) v5 = 1; v6 = __CFADD__(v5, v3); v7 = v5 - 1227133513 * ((v13 - *this) >> 2); v8 = a2 - v15; if ( v6 ) goto LABEL_8; v9 = 0; if ( !v7 ) goto LABEL_10; if ( v7 > 0x4924924 ) LABEL_8: v7 = 76695844; v9 = (char *)operator new((struct type_info *)(28 * v7), v12); LABEL_10: WXML::EXPRLib::Token::Token(v8, &v9[a2 - v15], a3, (const WXML::EXPRLib::Token *)v12); v10 = std::__relocate_a_1>( v15, a2, v9); result = std::__relocate_a_1>( a2, v13, v10 + 7); if ( v15 ) { v14 = result; operator delete(v15); result = v14; } *this = v9; this[1] = (char *)result; this[2] = &v9[28 * v7]; return result; } // 4DB36D: variable 'v12' is possibly undefined // 4DB37F: variable 'v8' is possibly undefined //----- (004DB3D0) -------------------------------------------------------- unsigned int __thiscall std::vector::_M_realloc_insert( char **this, char *a2, _DWORD *a3) { int v3; // ebx int v5; // eax char *v6; // ebx char *v7; // edi int v8; // edx unsigned int result; // eax void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] _DWORD *v11; // [esp+8h] [ebp-30h] void **v12; // [esp+14h] [ebp-24h] char *v13; // [esp+18h] [ebp-20h] unsigned int v14; // [esp+1Ch] [ebp-1Ch] v12 = (void **)this[1]; v13 = *this; v3 = ((char *)v12 - *this) >> 6; if ( v3 == 0x1FFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v5 = ((char *)v12 - *this) >> 6; if ( !v3 ) v5 = 1; v14 = v5 + v3; if ( __CFADD__(v5, v3) ) goto LABEL_8; v6 = 0; if ( v14 ) { if ( v14 <= 0x1FFFFFF ) { LABEL_9: v6 = (char *)operator new((struct type_info *)(v14 << 6), v10); goto LABEL_10; } LABEL_8: v14 = 0x1FFFFFF; goto LABEL_9; } LABEL_10: night::ns_sourcemap::ns_sourcemap(&v6[a2 - v13], a3); v11 = std::__uninitialized_copy::__uninit_copy(v13, a2, v6) + 16; v7 = (char *)std::__uninitialized_copy::__uninit_copy( a2, v12, v11); std::_Destroy_aux::__destroy(v8, (void **)v13, v12); std::_Vector_base::_M_deallocate(v13); *this = v6; this[1] = v7; result = v14 << 6; this[2] = &v6[64 * v14]; return result; } // 4DB443: variable 'v10' is possibly undefined // 4DB4A3: variable 'v8' is possibly undefined //----- (004DB50C) -------------------------------------------------------- int __thiscall std::vector::at(_DWORD *this, unsigned int a2) { if ( a2 >= (this[1] - *this) >> 6 ) std::__throw_out_of_range_fmt( "vector::_M_range_check: __n (which is %zu) >= this->size() (which is %zu)", a2, (this[1] - *this) >> 6); return *this + (a2 << 6); } //----- (004DB548) -------------------------------------------------------- int __thiscall std::vector::push_back(char **this, _DWORD *a2) { char *v3; // ecx int result; // eax v3 = this[1]; if ( v3 == this[2] ) return std::vector::_M_realloc_insert(this, v3, a2); result = night::ns_sourcemap::ns_sourcemap(v3, a2); this[1] += 64; return result; } //----- (004DB584) -------------------------------------------------------- void __thiscall std::vector::emplace_back(void ***this, _DWORD *a2) { void **v3; // esi int v4; // edi _DWORD *v5; // eax char *v6; // [esp+10h] [ebp-28h] void **v7; // [esp+14h] [ebp-24h] void **v8; // [esp+18h] [ebp-20h] void **v9; // [esp+1Ch] [ebp-1Ch] void **v10; // [esp+1Ch] [ebp-1Ch] v9 = this[1]; if ( v9 == this[2] ) { v3 = 0; v4 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); v8 = *this; v7 = this[1]; v6 = (char *)((char *)v9 - (char *)*this); if ( v4 ) v3 = (void **)__gnu_cxx::new_allocator::allocate(v4); std::string::basic_string(&v6[(_DWORD)v3], a2); v5 = std::__relocate_a_1>(v8, v9, v3); v10 = (void **)std::__relocate_a_1>(v9, v7, v5 + 6); std::_Vector_base::_M_deallocate(v8); *this = v3; this[2] = &v3[6 * v4]; this[1] = v10; } else { std::string::basic_string(v9, a2); this[1] += 6; } } //----- (004DB640) -------------------------------------------------------- #error "4DB6E0: call analysis failed (funcsize=70)" //----- (004DB71C) -------------------------------------------------------- char *__thiscall std::vector::_M_realloc_insert(_DWORD *this, char *a2, _DWORD *a3) { char *v3; // esi int v4; // eax int v6; // edx bool v7; // cf unsigned int v8; // eax void **v9; // ebx _DWORD *i; // ecx unsigned int v11; // ebx _DWORD *v12; // edx void **j; // ebx void **v14; // ecx void **v15; // ecx _DWORD *v16; // ebx char *result; // eax void (__cdecl *v18)(void *); // [esp+4h] [ebp-44h] _DWORD *v19; // [esp+18h] [ebp-30h] void **v20; // [esp+1Ch] [ebp-2Ch] char *v21; // [esp+20h] [ebp-28h] _DWORD *v22; // [esp+24h] [ebp-24h] _DWORD *v23; // [esp+24h] [ebp-24h] int v24; // [esp+28h] [ebp-20h] _DWORD *v25; // [esp+2Ch] [ebp-1Ch] v3 = (char *)*this; v21 = (char *)this[1]; v4 = -1431655765 * ((int)&v21[-*this] >> 3); if ( v4 == 89478485 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v6 = -1431655765 * ((v21 - v3) >> 3); if ( !v4 ) v6 = 1; v7 = __CFADD__(v6, v4); v8 = v6 - 1431655765 * ((v21 - v3) >> 3); v24 = v8; if ( v7 ) goto LABEL_8; v25 = 0; if ( v8 ) { if ( v8 <= 0x5555555 ) { LABEL_9: v25 = operator new((struct type_info *)(24 * v24), v18); goto LABEL_10; } LABEL_8: v24 = 89478485; goto LABEL_9; } LABEL_10: v9 = (void **)v3; std::string::basic_string((_DWORD *)((char *)v25 + a2 - v3), a3); for ( i = v25; ; i = v22 ) { v22 = i + 6; if ( a2 == (char *)v9 ) break; std::string::basic_string(i, v9); v14 = v9; v9 += 6; std::string::_M_dispose(v14); } v11 = (178956971 * ((unsigned int)(a2 - v3) >> 3)) & 0x1FFFFFFF; v23 = &v25[6 * v11 + 6]; v12 = v23; v20 = (void **)&v3[24 * v11]; for ( j = v20; j != (void **)v21; j += 6 ) { v19 = v12; std::string::basic_string(v12, j); v15 = j; std::string::_M_dispose(v15); v12 = v19 + 6; } v16 = &v23[6 * ((178956971 * ((unsigned int)((char *)j - (char *)v20) >> 3)) & 0x1FFFFFFF)]; if ( v3 ) operator delete(v3); this[1] = v16; *this = v25; result = (char *)&v25[6 * v24]; this[2] = result; return result; } // 4DB78C: variable 'v18' is possibly undefined //----- (004DB864) -------------------------------------------------------- _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; } // 4DB640: using guessed type _DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); //----- (004DB8A0) -------------------------------------------------------- int __thiscall std::vector::operator=(int this, int *a2) { int v3; // ecx int v4; // edx _DWORD *v5; // ebx _DWORD *v6; // eax int v7; // edx int v8; // ebx void **v9; // esi int v10; // ebx int v11; // ecx int v12; // eax void **i; // ebx void **v14; // ecx int v15; // ebx _DWORD *v16; // esi int v18; // [esp+1Ch] [ebp-2Ch] void **v19; // [esp+20h] [ebp-28h] int v20; // [esp+24h] [ebp-24h] void **v21; // [esp+28h] [ebp-20h] int v22; // [esp+28h] [ebp-20h] int v23; // [esp+28h] [ebp-20h] int v24; // [esp+2Ch] [ebp-1Ch] if ( a2 != (int *)this ) { v3 = a2[1]; v24 = *a2; v20 = v3 - *a2; v4 = -1431655765 * (v20 >> 3); v21 = *(void ***)this; if ( -1431655765 * ((*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 3) >= (unsigned int)v4 ) { v19 = *(void ***)(this + 4); v8 = -1431655765 * (((char *)v19 - (char *)v21) >> 3); if ( v4 > (unsigned int)v8 ) { while ( v8 > 0 ) { --v8; std::string::_M_assign((int)v21, v24); v24 += 24; v21 += 6; } v23 = a2[1]; v15 = *a2 + *(_DWORD *)(this + 4) - *(_DWORD *)this; v16 = *(_DWORD **)(this + 4); while ( v23 != v15 ) { std::string::basic_string(v16, v15); v15 += 24; v16 += 6; } } else { v9 = *(void ***)this; v10 = -1431655765 * ((v3 - v24) >> 3); while ( v10 > 0 ) { v11 = (int)v9; v18 = v4; v9 += 6; --v10; std::string::_M_assign(v11, v24); v24 += 24; v4 = v18; } v12 = v4; if ( v4 < 0 ) v12 = 0; for ( i = &v21[6 * v12]; v19 != i; i += 6 ) { v14 = i; std::string::_M_dispose(v14); } } } else { v5 = 0; if ( v4 ) { v22 = a2[1]; v6 = __gnu_cxx::new_allocator::allocate(-1431655765 * ((v3 - v24) >> 3)); v3 = v22; v5 = v6; } std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>( v24, v3, v5); std::_Destroy_aux::__destroy(v7, *(void ***)this, *(void ***)(this + 4)); std::_Vector_base::_M_deallocate(*(void **)this); *(_DWORD *)this = v5; *(_DWORD *)(this + 8) = (char *)v5 + v20; } *(_DWORD *)(this + 4) = *(_DWORD *)this + v20; } return this; } // 4DB91B: variable 'v7' is possibly undefined //----- (004DBA44) -------------------------------------------------------- char *__thiscall std::vector::_M_realloc_insert( void **this, _BYTE *a2, _DWORD *a3) { _BYTE *v3; // edi int v4; // eax int v5; // edx bool v6; // cf unsigned int v7; // eax signed int v8; // esi char *v9; // ebx unsigned int v10; // eax char *v11; // edx char *v12; // esi char *result; // eax void (__cdecl *v14)(void *); // [esp+4h] [ebp-34h] _BYTE *Src; // [esp+18h] [ebp-20h] int v17; // [esp+1Ch] [ebp-1Ch] v3 = this[1]; Src = *this; v4 = (v3 - (_BYTE *)*this) >> 2; if ( v4 == 0x1FFFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v5 = (v3 - (_BYTE *)*this) >> 2; if ( !v4 ) v5 = 1; v6 = __CFADD__(v5, v4); v7 = v5 + v4; v17 = v7; v8 = a2 - Src; if ( v6 ) goto LABEL_8; v9 = 0; if ( !v7 ) goto LABEL_10; if ( v7 > 0x1FFFFFFF ) LABEL_8: v17 = 0x1FFFFFFF; v9 = (char *)operator new((struct type_info *)(4 * v17), v14); LABEL_10: *(_DWORD *)&v9[v8] = *a3; if ( v8 > 0 ) memmove(v9, Src, v8); v10 = v3 - a2; v11 = &v9[v8 + 4]; if ( v3 - a2 > 0 ) qmemcpy(v11, a2, v10); v12 = &v11[v10]; if ( Src ) operator delete(Src); *this = v9; this[1] = v12; result = &v9[4 * v17]; this[2] = result; return result; } // 4DBAAF: variable 'v14' is possibly undefined //----- (004DBB20) -------------------------------------------------------- char *__thiscall std::vector::push_back(int this, _DWORD *a2) { int v2; // eax char *result; // eax v2 = *(_DWORD *)(this + 4); if ( v2 == *(_DWORD *)(this + 8) ) return std::vector::_M_realloc_insert( (void **)this, *(_BYTE **)(this + 4), a2); result = (char *)(v2 + 4); *((_DWORD *)result - 1) = *a2; *(_DWORD *)(this + 4) = result; return result; } //----- (004DBB50) -------------------------------------------------------- char *__thiscall std::vector::emplace_back(void **this, _DWORD *a2) { char *v3; // edi char *result; // eax void (__cdecl *v5)(void *); // edx void *v6; // esi int v7; // eax int v8; // edi char *v9; // [esp+10h] [ebp-28h] int v10; // [esp+14h] [ebp-24h] void *v11; // [esp+18h] [ebp-20h] unsigned int v12; // [esp+1Ch] [ebp-1Ch] v3 = (char *)this[1]; if ( v3 == this[2] ) { v12 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); v11 = *this; v10 = (int)this[1]; v9 = (char *)(v3 - (_BYTE *)*this); if ( v12 ) { if ( v12 > 0x1FFFFFFF ) std::__throw_bad_alloc(); v6 = operator new((struct type_info *)(4 * v12), v5); } else { v6 = 0; } *(_DWORD *)&v9[(_DWORD)v6] = *a2; v7 = std::__relocate_a_1(v6, v11, (int)v3); v8 = std::__relocate_a_1((void *)(v7 + 4), v3, v10); std::_Vector_base::_M_deallocate(v11); *this = v6; this[1] = (void *)v8; result = (char *)v6 + 4 * v12; this[2] = result; } else { *(_DWORD *)v3 = *a2; result = v3 + 4; this[1] = v3 + 4; } return result; } // 4DBBBE: variable 'v5' is possibly undefined //----- (004DBC10) -------------------------------------------------------- int __thiscall std::vector::at(_DWORD *this, unsigned int a2) { if ( a2 >= (this[1] - *this) >> 2 ) std::__throw_out_of_range_fmt( "vector::_M_range_check: __n (which is %zu) >= this->size() (which is %zu)", a2, (this[1] - *this) >> 2); return *this + 4 * a2; } //----- (004DBC48) -------------------------------------------------------- char *__thiscall std::vector::push_back(void **this, _DWORD *a2) { char *v3; // edi char *result; // eax void (__cdecl *v5)(void *); // edx void *v6; // esi int v7; // eax int v8; // edi char *v9; // [esp+10h] [ebp-28h] int v10; // [esp+14h] [ebp-24h] void *v11; // [esp+18h] [ebp-20h] unsigned int v12; // [esp+1Ch] [ebp-1Ch] v3 = (char *)this[1]; if ( v3 == this[2] ) { v12 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); v11 = *this; v10 = (int)this[1]; v9 = (char *)(v3 - (_BYTE *)*this); if ( v12 ) { if ( v12 > 0x1FFFFFFF ) std::__throw_bad_alloc(); v6 = operator new((struct type_info *)(4 * v12), v5); } else { v6 = 0; } *(_DWORD *)&v9[(_DWORD)v6] = *a2; v7 = std::__relocate_a_1(v6, v11, (int)v3); v8 = std::__relocate_a_1((void *)(v7 + 4), v3, v10); std::_Vector_base::_M_deallocate(v11); *this = v6; this[1] = (void *)v8; result = (char *)v6 + 4 * v12; this[2] = result; } else { *(_DWORD *)v3 = *a2; result = v3 + 4; this[1] = v3 + 4; } return result; } // 4DBCB6: variable 'v5' is possibly undefined //----- (004DBD08) -------------------------------------------------------- char *__thiscall std::vector>>::_M_realloc_insert> const&>( void **this, _BYTE *a2, _DWORD *a3) { _BYTE *v3; // edi int v4; // eax int v5; // edx bool v6; // cf unsigned int v7; // eax signed int v8; // esi char *v9; // ebx unsigned int v10; // eax char *v11; // edx char *v12; // esi char *result; // eax void (__cdecl *v14)(void *); // [esp+4h] [ebp-34h] _BYTE *Src; // [esp+18h] [ebp-20h] int v17; // [esp+1Ch] [ebp-1Ch] v3 = this[1]; Src = *this; v4 = (v3 - (_BYTE *)*this) >> 2; if ( v4 == 0x1FFFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v5 = (v3 - (_BYTE *)*this) >> 2; if ( !v4 ) v5 = 1; v6 = __CFADD__(v5, v4); v7 = v5 + v4; v17 = v7; v8 = a2 - Src; if ( v6 ) goto LABEL_8; v9 = 0; if ( !v7 ) goto LABEL_10; if ( v7 > 0x1FFFFFFF ) LABEL_8: v17 = 0x1FFFFFFF; v9 = (char *)operator new((struct type_info *)(4 * v17), v14); LABEL_10: *(_DWORD *)&v9[v8] = *a3; if ( v8 > 0 ) memmove(v9, Src, v8); v10 = v3 - a2; v11 = &v9[v8 + 4]; if ( v3 - a2 > 0 ) qmemcpy(v11, a2, v10); v12 = &v11[v10]; if ( Src ) operator delete(Src); *this = v9; this[1] = v12; result = &v9[4 * v17]; this[2] = result; return result; } // 4DBD73: variable 'v14' is possibly undefined //----- (004DBDE4) -------------------------------------------------------- int __thiscall std::vector>>::at( _DWORD *this, unsigned int a2) { if ( a2 >= (this[1] - *this) >> 2 ) std::__throw_out_of_range_fmt( "vector::_M_range_check: __n (which is %zu) >= this->size() (which is %zu)", a2, (this[1] - *this) >> 2); return *this + 4 * a2; } //----- (004DBE1C) -------------------------------------------------------- char *__thiscall std::vector>>::push_back( int this, _DWORD *a2) { int v2; // eax char *result; // eax v2 = *(_DWORD *)(this + 4); if ( v2 == *(_DWORD *)(this + 8) ) return std::vector>>::_M_realloc_insert> const&>( (void **)this, *(_BYTE **)(this + 4), a2); result = (char *)(v2 + 4); *((_DWORD *)result - 1) = *a2; *(_DWORD *)(this + 4) = result; return result; } //----- (004DBE4C) -------------------------------------------------------- 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 char *v7; // esi int v8; // edx _DWORD *v9; // ebx void **v10; // esi void **v11; // ebx int v12; // edx _DWORD *v13; // eax _DWORD *v14; // ecx void **v15; // ecx int v16; // edx void *v17; // ecx void **v18; // ecx int v19; // ebx char **result; // eax void (__cdecl *v21)(void *); // [esp+4h] [ebp-44h] int v22; // [esp+18h] [ebp-30h] _DWORD *v23; // [esp+1Ch] [ebp-2Ch] void **v24; // [esp+20h] [ebp-28h] char *v26; // [esp+28h] [ebp-20h] char *v27; // [esp+2Ch] [ebp-1Ch] v24 = (void **)this[1]; v26 = *this; v3 = ((char *)v24 - *this) >> 5; if ( v3 == 0x3FFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = ((char *)v24 - *this) >> 5; if ( !v3 ) v4 = 1; v5 = __CFADD__(v4, v3); v6 = v4 + v3; if ( v5 ) goto LABEL_8; v27 = 0; if ( v6 ) { if ( v6 <= 0x3FFFFFF ) { LABEL_9: v27 = (char *)operator new((struct type_info *)(32 * v6), v21); goto LABEL_10; } LABEL_8: v6 = 0x3FFFFFF; goto LABEL_9; } LABEL_10: v7 = &v27[a2 - v26]; std::string::basic_string(v7, a3); v8 = a3[7]; v9 = v27; *((_DWORD *)v7 + 6) = a3[6]; *((_DWORD *)v7 + 7) = v8; v10 = (void **)v26; while ( a2 != (char *)v10 ) { v14 = v9; v9 += 8; std::string::basic_string(v14, v10); v15 = v10; v10 += 8; v16 = (int)*(v10 - 1); *(v9 - 2) = *(v10 - 2); *(v9 - 1) = v16; std::string::_M_dispose(v15); } v11 = v10; v12 = (int)&v27[(char *)v10 - v26 + 32]; v13 = (_DWORD *)v12; while ( v11 != v24 ) { v23 = v13; v22 = v12; std::string::basic_string(v13, v11); v17 = v11[7]; v23[6] = v11[6]; v23[7] = v17; v18 = v11; v11 += 8; std::string::_M_dispose(v18); v12 = v22; v13 = v23 + 8; } v19 = v12 + (char *)v11 - (char *)v10; if ( v26 ) operator delete(v26); this[1] = (char *)v19; *this = v27; result = this; this[2] = &v27[32 * v6]; return result; } // 4DBEBF: variable 'v21' is possibly undefined //----- (004DBF98) -------------------------------------------------------- char *__thiscall std::vector>::emplace_back>( _DWORD *this, _DWORD *a2) { char *v3; // ecx char *result; // eax v3 = (char *)this[1]; if ( v3 == (char *)this[2] ) return std::vector>::_M_realloc_insert>( this, v3, a2); result = (char *)std::pair::pair(v3, a2); this[1] += 136; return result; } //----- (004DBFD8) -------------------------------------------------------- char *__thiscall std::vector>::_M_realloc_insert>( _DWORD *this, char *a2, _DWORD *a3) { char *v3; // esi int v4; // eax int v6; // edx bool v7; // cf unsigned int v8; // eax void **v9; // ebx _DWORD *i; // ecx unsigned int v11; // ebx _DWORD *v12; // edx void **j; // ebx void **v14; // ecx void **v15; // ecx _DWORD *v16; // ebx char *result; // eax void (__cdecl *v18)(void *); // [esp+4h] [ebp-44h] _DWORD *v19; // [esp+18h] [ebp-30h] void **v20; // [esp+1Ch] [ebp-2Ch] char *v21; // [esp+20h] [ebp-28h] _DWORD *v22; // [esp+24h] [ebp-24h] _DWORD *v23; // [esp+24h] [ebp-24h] int v24; // [esp+28h] [ebp-20h] _DWORD *v25; // [esp+2Ch] [ebp-1Ch] v3 = (char *)*this; v21 = (char *)this[1]; v4 = -252645135 * ((int)&v21[-*this] >> 3); if ( v4 == 15790320 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v6 = -252645135 * ((v21 - v3) >> 3); if ( !v4 ) v6 = 1; v7 = __CFADD__(v6, v4); v8 = v6 - 252645135 * ((v21 - v3) >> 3); v24 = v8; if ( v7 ) goto LABEL_8; v25 = 0; if ( v8 ) { if ( v8 <= 0xF0F0F0 ) { LABEL_9: v25 = operator new((struct type_info *)(136 * v24), v18); goto LABEL_10; } LABEL_8: v24 = 15790320; goto LABEL_9; } LABEL_10: v9 = (void **)v3; std::pair::pair((_DWORD *)((char *)v25 + a2 - v3), a3); for ( i = v25; ; i = v22 ) { v22 = i + 34; if ( a2 == (char *)v9 ) break; std::pair::pair(i, v9); v14 = v9; v9 += 34; std::pair::~pair(v14); } v11 = (284225777 * ((unsigned int)(a2 - v3) >> 3)) & 0x1FFFFFFF; v23 = &v25[34 * v11 + 34]; v12 = v23; v20 = (void **)&v3[136 * v11]; for ( j = v20; j != (void **)v21; j += 34 ) { v19 = v12; std::pair::pair(v12, j); v15 = j; std::pair::~pair(v15); v12 = v19 + 34; } v16 = &v23[34 * ((284225777 * ((unsigned int)((char *)j - (char *)v20) >> 3)) & 0x1FFFFFFF)]; if ( v3 ) operator delete(v3); this[1] = v16; *this = v25; result = (char *)&v25[34 * v24]; this[2] = result; return result; } // 4DC04B: variable 'v18' is possibly undefined //----- (004DC13C) -------------------------------------------------------- int __thiscall std::vector>::emplace_back>(int this, _DWORD *a2) { int v3; // esi int 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 = a2[6]; *(_DWORD *)(v3 + 24) = result; *(_DWORD *)(this + 4) += 28; return result; } //----- (004DC184) -------------------------------------------------------- int __thiscall std::vector>::_M_realloc_insert>( char **this, char *a2, _DWORD *a3) { int v3; // eax int v5; // esi BOOL v6; // edx unsigned int v7; // esi void **v8; // ebx _DWORD *v9; // eax unsigned int v10; // ebx _DWORD *v11; // edx void **i; // ebx void **v13; // ecx void **v14; // ecx char *v15; // ebx int result; // eax void (__cdecl *v17)(void *); // [esp+4h] [ebp-44h] _DWORD *v18; // [esp+18h] [ebp-30h] void **v19; // [esp+1Ch] [ebp-2Ch] _DWORD *v20; // [esp+20h] [ebp-28h] _DWORD *v21; // [esp+20h] [ebp-28h] _DWORD *v22; // [esp+20h] [ebp-28h] void **v23; // [esp+24h] [ebp-24h] _DWORD *v24; // [esp+28h] [ebp-20h] char *v25; // [esp+2Ch] [ebp-1Ch] v23 = (void **)this[1]; v25 = *this; v3 = -1227133513 * (((char *)v23 - *this) >> 2); if ( v3 == 76695844 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v5 = -1227133513 * (((char *)v23 - v25) >> 2); if ( !v3 ) v5 = 1; v6 = __CFADD__(v5, v3); v7 = v5 - 1227133513 * (((char *)v23 - v25) >> 2); if ( v6 ) goto LABEL_8; v24 = 0; if ( v7 ) { if ( v7 <= 0x4924924 ) { LABEL_9: v24 = operator new((struct type_info *)(28 * v7), v17); goto LABEL_10; } LABEL_8: v7 = 76695844; goto LABEL_9; } LABEL_10: v20 = (_DWORD *)((char *)v24 + a2 - v25); std::string::basic_string(v20, a3); v8 = (void **)v25; v20[6] = a3[6]; v9 = v24; while ( a2 != (char *)v8 ) { v22 = v9; std::string::basic_string(v9, v8); v13 = v8; v8 += 7; v22[6] = *(v8 - 1); std::string::_M_dispose(v13); v9 = v22 + 7; } v10 = (920350135 * ((unsigned int)(a2 - v25) >> 2)) & 0x3FFFFFFF; v19 = (void **)&v25[28 * v10]; v21 = &v24[7 * v10 + 7]; v11 = v21; for ( i = v19; i != v23; i += 7 ) { v18 = v11; std::string::basic_string(v11, i); v18[6] = i[6]; v14 = i; std::string::_M_dispose(v14); v11 = v18 + 7; } v15 = (char *)&v21[7 * ((920350135 * ((unsigned int)((char *)i - (char *)v19) >> 2)) & 0x3FFFFFFF)]; if ( v25 ) operator delete(v25); this[1] = v15; *this = (char *)v24; result = 28 * v7; this[2] = (char *)&v24[7 * v7]; return result; } // 4DC1FE: variable 'v17' is possibly undefined //----- (004DC2FC) -------------------------------------------------------- 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; } // 4DC36F: variable 'v20' is possibly undefined //----- (004DC478) -------------------------------------------------------- char *__thiscall std::vector::_M_realloc_insert(void **this, _BYTE *a2, _DWORD *a3) { _BYTE *v3; // edi int v4; // eax int v5; // edx bool v6; // cf unsigned int v7; // eax signed int v8; // esi char *v9; // ebx unsigned int v10; // eax char *v11; // edx char *v12; // esi char *result; // eax void (__cdecl *v14)(void *); // [esp+4h] [ebp-34h] _BYTE *Src; // [esp+18h] [ebp-20h] int v17; // [esp+1Ch] [ebp-1Ch] v3 = this[1]; Src = *this; v4 = (v3 - (_BYTE *)*this) >> 2; if ( v4 == 0x1FFFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v5 = (v3 - (_BYTE *)*this) >> 2; if ( !v4 ) v5 = 1; v6 = __CFADD__(v5, v4); v7 = v5 + v4; v17 = v7; v8 = a2 - Src; if ( v6 ) goto LABEL_8; v9 = 0; if ( !v7 ) goto LABEL_10; if ( v7 > 0x1FFFFFFF ) LABEL_8: v17 = 0x1FFFFFFF; v9 = (char *)operator new((struct type_info *)(4 * v17), v14); LABEL_10: *(_DWORD *)&v9[v8] = *a3; if ( v8 > 0 ) memmove(v9, Src, v8); v10 = v3 - a2; v11 = &v9[v8 + 4]; if ( v3 - a2 > 0 ) qmemcpy(v11, a2, v10); v12 = &v11[v10]; if ( Src ) operator delete(Src); *this = v9; this[1] = v12; result = &v9[4 * v17]; this[2] = result; return result; } // 4DC4E3: variable 'v14' is possibly undefined //----- (004DC554) -------------------------------------------------------- char *__thiscall std::vector::push_back(int this, _DWORD *a2) { int v2; // eax char *result; // eax v2 = *(_DWORD *)(this + 4); if ( v2 == *(_DWORD *)(this + 8) ) return std::vector::_M_realloc_insert((void **)this, *(_BYTE **)(this + 4), a2); result = (char *)(v2 + 4); *((_DWORD *)result - 1) = *a2; *(_DWORD *)(this + 4) = result; return result; } //----- (004DC590) -------------------------------------------------------- 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_538D0C; 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_52F13C; v6[3] = 0; v6[5] = &unk_52F13C; v6[6] = 0; v6[7] = &unk_52F13C; v6[8] = 0; v6[9] = &unk_52F13C; 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; } // 4DC637: variable 'v8' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 533540: using guessed type int std::money_base::_S_default_pattern; // 538D0C: using guessed type int (*off_538D0C)(); //----- (004DC6B0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_537E60; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537E60: using guessed type int (*off_537E60)(); //----- (004DC710) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_537E60; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 537E60: using guessed type int (*off_537E60)(); //----- (004DC770) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_537E60; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537E60: using guessed type int (*off_537E60)(); //----- (004DC7D0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_537E60; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537E60: using guessed type int (*off_537E60)(); //----- (004DC830) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_537E60; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 537E60: using guessed type int (*off_537E60)(); //----- (004DC890) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_537E60; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537E60: using guessed type int (*off_537E60)(); //----- (004DC8F0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4DC8F7: variable 'v2' is possibly undefined //----- (004DC920) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_537E60; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4DC927: variable 'v1' is possibly undefined // 537E60: using guessed type int (*off_537E60)(); //----- (004DC950) -------------------------------------------------------- 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_538D1C; 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_52F13C; v6[3] = 0; v6[5] = &unk_52F13C; v6[6] = 0; v6[7] = &unk_52F13C; v6[8] = 0; v6[9] = &unk_52F13C; 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; } // 4DC9F7: variable 'v8' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 533540: using guessed type int std::money_base::_S_default_pattern; // 538D1C: using guessed type int (*off_538D1C)(); //----- (004DCA70) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_537E94; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537E94: using guessed type int (*off_537E94)(); //----- (004DCAD0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_537E94; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 537E94: using guessed type int (*off_537E94)(); //----- (004DCB30) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_537E94; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537E94: using guessed type int (*off_537E94)(); //----- (004DCB90) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_537E94; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537E94: using guessed type int (*off_537E94)(); //----- (004DCBF0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_537E94; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 537E94: using guessed type int (*off_537E94)(); //----- (004DCC50) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_537E94; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537E94: using guessed type int (*off_537E94)(); //----- (004DCCB0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4DCCB7: variable 'v2' is possibly undefined //----- (004DCCE0) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_537E94; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4DCCE7: variable 'v1' is possibly undefined // 537E94: using guessed type int (*off_537E94)(); //----- (004DCD10) -------------------------------------------------------- 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_538D2C; 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_52F13C; v5 = std::money_base::_S_atoms; v4[13] = std::money_base::_S_default_pattern; v4[3] = 0; v4[6] = &unk_52F13E; v4[7] = 0; v4[8] = &unk_52F13E; v4[9] = 0; v4[10] = &unk_52F13E; 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; } // 4DCDAF: variable 'v8' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 533540: using guessed type int std::money_base::_S_default_pattern; // 538D2C: using guessed type int (*off_538D2C)(); //----- (004DCE30) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_537EC8; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537EC8: using guessed type int (*off_537EC8)(); //----- (004DCE90) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_537EC8; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 537EC8: using guessed type int (*off_537EC8)(); //----- (004DCEF0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_537EC8; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537EC8: using guessed type int (*off_537EC8)(); //----- (004DCF50) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_537EC8; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537EC8: using guessed type int (*off_537EC8)(); //----- (004DCFB0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_537EC8; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 537EC8: using guessed type int (*off_537EC8)(); //----- (004DD010) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_537EC8; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537EC8: using guessed type int (*off_537EC8)(); //----- (004DD070) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4DD077: variable 'v2' is possibly undefined //----- (004DD0A0) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_537EC8; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4DD0A7: variable 'v1' is possibly undefined // 537EC8: using guessed type int (*off_537EC8)(); //----- (004DD0D0) -------------------------------------------------------- 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_538D3C; 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_52F13C; v5 = std::money_base::_S_atoms; v4[13] = std::money_base::_S_default_pattern; v4[3] = 0; v4[6] = &unk_52F13E; v4[7] = 0; v4[8] = &unk_52F13E; v4[9] = 0; v4[10] = &unk_52F13E; 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; } // 4DD16F: variable 'v8' is possibly undefined // 516428: using guessed type char *std::money_base::_S_atoms; // 533540: using guessed type int std::money_base::_S_default_pattern; // 538D3C: using guessed type int (*off_538D3C)(); //----- (004DD1F0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_537EFC; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537EFC: using guessed type int (*off_537EFC)(); //----- (004DD250) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_537EFC; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 537EFC: using guessed type int (*off_537EFC)(); //----- (004DD2B0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_537EFC; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537EFC: using guessed type int (*off_537EFC)(); //----- (004DD310) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { *this = &off_537EFC; this[1] = a3 != 0; this[2] = a2; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537EFC: using guessed type int (*off_537EFC)(); //----- (004DD370) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_537EFC; this[2] = 0; this[1] = a4 != 0; return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 537EFC: using guessed type int (*off_537EFC)(); //----- (004DD3D0) -------------------------------------------------------- int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { *this = &off_537EFC; this[2] = 0; this[1] = a2 != 0; return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 537EFC: using guessed type int (*off_537EFC)(); //----- (004DD430) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4DD437: variable 'v2' is possibly undefined //----- (004DD460) -------------------------------------------------------- void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_537EFC; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4DD467: variable 'v1' is possibly undefined // 537EFC: using guessed type int (*off_537EFC)(); //----- (004DD490) -------------------------------------------------------- void __thiscall std::string::_M_destroy(void **this, int a2) { operator delete(*this); } //----- (004DD4B0) -------------------------------------------------------- void __fastcall std::string::_M_dispose(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004DD4E0) -------------------------------------------------------- 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; } //----- (004DD7E0) -------------------------------------------------------- int __cdecl std::string::_S_compare(int a1, int a2) { return a1 - a2; } //----- (004DD7F0) -------------------------------------------------------- int __thiscall std::string::_M_capacity(_DWORD *this, int a2) { int result; // eax result = a2; this[2] = a2; return result; } //----- (004DD800) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004DD810) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004DD820) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004DD830) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004DD840) -------------------------------------------------------- _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; } //----- (004DD8E0) -------------------------------------------------------- _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; } // 4DD8E0: using guessed type unsigned int var_10[4]; //----- (004DD980) -------------------------------------------------------- _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; } // 4DD980: using guessed type unsigned int var_10[4]; //----- (004DDA20) -------------------------------------------------------- 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; } // 4DDA20: using guessed type unsigned int var_1C[7]; //----- (004DDAA0) -------------------------------------------------------- _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; } // 4DDAA0: using guessed type unsigned int var_10[4]; //----- (004DDB60) -------------------------------------------------------- int __fastcall std::string::_M_local_data(int a1) { return a1 + 8; } //----- (004DDB70) -------------------------------------------------------- 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; } //----- (004DDB80) -------------------------------------------------------- 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; } //----- (004DDBC0) -------------------------------------------------------- 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; } //----- (004DDC00) -------------------------------------------------------- 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; } //----- (004DDC40) -------------------------------------------------------- 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; } //----- (004DDC80) -------------------------------------------------------- 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); } // 4DDC80: could not find valid save-restore pair for ebp //----- (004DDCD0) -------------------------------------------------------- _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; } //----- (004DDDF0) -------------------------------------------------------- int __fastcall std::string::_M_get_allocator(int a1) { return a1; } //----- (004DDE00) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct_aux_2(_DWORD *this, size_t a2, char a3) { return std::string::_M_construct(this, a2, a3); } //----- (004DDE10) -------------------------------------------------------- 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; } //----- (004DDE40) -------------------------------------------------------- int __fastcall std::string::end(_DWORD *a1) { return a1[1] + *a1; } //----- (004DDE50) -------------------------------------------------------- int __fastcall std::string::back(_DWORD *a1) { return *a1 + a1[1] - 1; } //----- (004DDE60) -------------------------------------------------------- _DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (004DDE70) -------------------------------------------------------- _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; } //----- (004DDFE0) -------------------------------------------------------- int __fastcall std::string::begin(int a1) { return *(_DWORD *)a1; } //----- (004DDFF0) -------------------------------------------------------- _BYTE *__fastcall std::string::clear(int a1) { _BYTE *result; // eax result = *(_BYTE **)a1; *(_DWORD *)(a1 + 4) = 0; *result = 0; return result; } //----- (004DE000) -------------------------------------------------------- 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; } //----- (004DE030) -------------------------------------------------------- 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; } //----- (004DE090) -------------------------------------------------------- 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; } //----- (004DE0C0) -------------------------------------------------------- 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; } //----- (004DE120) -------------------------------------------------------- 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; } //----- (004DE1A0) -------------------------------------------------------- int __fastcall std::string::front(int a1) { return *(_DWORD *)a1; } //----- (004DE1B0) -------------------------------------------------------- _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); } //----- (004DE200) -------------------------------------------------------- _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); } //----- (004DE230) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, int a2) { return std::string::_M_append(this, *(_BYTE **)a2, *(_DWORD *)(a2 + 4)); } //----- (004DE260) -------------------------------------------------------- _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); } //----- (004DE2C0) -------------------------------------------------------- _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); } //----- (004DE2F0) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, size_t a2, char a3) { return std::string::_M_replace_aux(this, this[1], 0, a2, a3); } //----- (004DE320) -------------------------------------------------------- _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; } //----- (004DE3D0) -------------------------------------------------------- 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); } //----- (004DE410) -------------------------------------------------------- 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); } //----- (004DE440) -------------------------------------------------------- void *__thiscall std::string::assign(void *this, int a2) { std::string::_M_assign((int)this, a2); return this; } //----- (004DE460) -------------------------------------------------------- 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); } //----- (004DE4D0) -------------------------------------------------------- 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); } //----- (004DE500) -------------------------------------------------------- _DWORD *__thiscall std::string::assign(_DWORD *this, size_t a2, char a3) { return std::string::_M_replace_aux(this, 0, this[1], a2, a3); } //----- (004DE530) -------------------------------------------------------- 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; } //----- (004DE5A0) -------------------------------------------------------- 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; } //----- (004DE5E0) -------------------------------------------------------- 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; } //----- (004DE620) -------------------------------------------------------- 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); } //----- (004DE680) -------------------------------------------------------- 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; } //----- (004DE6C0) -------------------------------------------------------- _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); } //----- (004DE700) -------------------------------------------------------- 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); } //----- (004DE770) -------------------------------------------------------- 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); } //----- (004DE7D0) -------------------------------------------------------- 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)); } //----- (004DE830) -------------------------------------------------------- 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); } //----- (004DE8C0) -------------------------------------------------------- _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); } //----- (004DE920) -------------------------------------------------------- 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); } //----- (004DE980) -------------------------------------------------------- _DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + a2[1]; return result; } //----- (004DE990) -------------------------------------------------------- _DWORD *__thiscall std::string::resize(int *this, _DWORD *a2) { return std::string::resize(this, a2, 0); } //----- (004DE9B0) -------------------------------------------------------- _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; } //----- (004DEA00) -------------------------------------------------------- int __thiscall std::string::_M_data(_DWORD *this, int a2) { int result; // eax result = a2; *this = a2; return result; } //----- (004DEA10) -------------------------------------------------------- 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; } //----- (004DEA40) -------------------------------------------------------- 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; } //----- (004DEA70) -------------------------------------------------------- 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); } //----- (004DEAF0) -------------------------------------------------------- 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); } //----- (004DEB70) -------------------------------------------------------- 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)); } //----- (004DEBF0) -------------------------------------------------------- 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); } //----- (004DEC70) -------------------------------------------------------- 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); } //----- (004DECF0) -------------------------------------------------------- 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); } //----- (004DED60) -------------------------------------------------------- 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); } //----- (004DEDE0) -------------------------------------------------------- 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); } //----- (004DEE50) -------------------------------------------------------- _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); } //----- (004DEE70) -------------------------------------------------------- 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); } //----- (004DEEF0) -------------------------------------------------------- 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); } //----- (004DEF70) -------------------------------------------------------- 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); } //----- (004DEFF0) -------------------------------------------------------- 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); } //----- (004DF060) -------------------------------------------------------- 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)); } //----- (004DF0E0) -------------------------------------------------------- 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); } //----- (004DF160) -------------------------------------------------------- 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); } //----- (004DF1E0) -------------------------------------------------------- _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); } //----- (004DF200) -------------------------------------------------------- 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); } //----- (004DF270) -------------------------------------------------------- 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); } //----- (004DF2D0) -------------------------------------------------------- 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)); } //----- (004DF340) -------------------------------------------------------- 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); } //----- (004DF3E0) -------------------------------------------------------- _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); } //----- (004DF450) -------------------------------------------------------- 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; } } } //----- (004DF560) -------------------------------------------------------- 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; } //----- (004DF5D0) -------------------------------------------------------- int __fastcall std::string::pop_back(int *a1) { return std::string::_M_erase(a1, a1[1] - 1, 1); } //----- (004DF5F0) -------------------------------------------------------- _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; } //----- (004DF690) -------------------------------------------------------- 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; } } // 4DF690: using guessed type unsigned int var_20[8]; //----- (004DF750) -------------------------------------------------------- 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); } // 4DF784: variable 'v5' is possibly undefined //----- (004DF7C0) -------------------------------------------------------- int __thiscall std::string::_M_length(_DWORD *this, int a2) { int result; // eax result = a2; this[1] = a2; return result; } //----- (004DF7D0) -------------------------------------------------------- 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; } // 4DF7D0: using guessed type size_t var_20[8]; //----- (004DF920) -------------------------------------------------------- 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; } //----- (004DF960) -------------------------------------------------------- _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; } //----- (004DF9E0) -------------------------------------------------------- _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; } //----- (004DFA40) -------------------------------------------------------- _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; } //----- (004DFAB0) -------------------------------------------------------- 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); } // 4DFAE1: variable 'v6' is possibly undefined //----- (004DFB00) -------------------------------------------------------- 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); } //----- (004DFB20) -------------------------------------------------------- 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; } //----- (004DFB40) -------------------------------------------------------- _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); } // 4DFB60: variable 'v3' is possibly undefined //----- (004DFB70) -------------------------------------------------------- _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); } // 4DFB90: variable 'v4' is possibly undefined //----- (004DFBA0) -------------------------------------------------------- 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); } //----- (004DFBF0) -------------------------------------------------------- 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); } //----- (004DFC50) -------------------------------------------------------- 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); } // 4DFC85: variable 'v8' is possibly undefined //----- (004DFCC0) -------------------------------------------------------- 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); } //----- (004DFCE0) -------------------------------------------------------- _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); } //----- (004DFD10) -------------------------------------------------------- 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; } //----- (004DFD30) -------------------------------------------------------- _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); } //----- (004DFD40) -------------------------------------------------------- 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); } //----- (004DFD50) -------------------------------------------------------- _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); } //----- (004DFD60) -------------------------------------------------------- _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; } //----- (004DFDC0) -------------------------------------------------------- _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; } //----- (004DFE30) -------------------------------------------------------- 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); } // 4DFE61: variable 'v6' is possibly undefined //----- (004DFE80) -------------------------------------------------------- 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); } //----- (004DFEA0) -------------------------------------------------------- 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; } //----- (004DFEC0) -------------------------------------------------------- _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); } // 4DFEE0: variable 'v3' is possibly undefined //----- (004DFEF0) -------------------------------------------------------- _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); } // 4DFF10: variable 'v4' is possibly undefined //----- (004DFF20) -------------------------------------------------------- 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); } //----- (004DFF70) -------------------------------------------------------- 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); } //----- (004DFFD0) -------------------------------------------------------- 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); } // 4E0005: variable 'v8' is possibly undefined //----- (004E0040) -------------------------------------------------------- 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); } //----- (004E0060) -------------------------------------------------------- _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); } //----- (004E0090) -------------------------------------------------------- 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; } //----- (004E00B0) -------------------------------------------------------- _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); } //----- (004E00C0) -------------------------------------------------------- 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); } //----- (004E00D0) -------------------------------------------------------- _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); } //----- (004E00E0) -------------------------------------------------------- void __fastcall std::string::~string(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004E0110) -------------------------------------------------------- void __fastcall std::string::~string(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004E0140) -------------------------------------------------------- _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; } //----- (004E01F0) -------------------------------------------------------- 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); } //----- (004E0230) -------------------------------------------------------- void *__thiscall std::string::operator=(void *this, int a2) { std::string::_M_assign((int)this, a2); return this; } //----- (004E0250) -------------------------------------------------------- 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; } //----- (004E0290) -------------------------------------------------------- _DWORD *__thiscall std::string::operator=(_DWORD *this, char a2) { std::string::_M_replace_aux(this, 0, this[1], 1u, a2); return this; } //----- (004E02D0) -------------------------------------------------------- int __thiscall std::string::operator[](_DWORD *this, int a2) { return a2 + *this; } //----- (004E02E0) -------------------------------------------------------- _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); } //----- (004E0330) -------------------------------------------------------- _DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2) { return std::string::_M_append(this, *(_BYTE **)a2, *(_DWORD *)(a2 + 4)); } //----- (004E0360) -------------------------------------------------------- _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); } //----- (004E0390) -------------------------------------------------------- _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; } //----- (004E0410) -------------------------------------------------------- void __thiscall std::wstring::_M_destroy(void **this, int a2) { operator delete(*this); } //----- (004E0430) -------------------------------------------------------- void __fastcall std::wstring::_M_dispose(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004E0460) -------------------------------------------------------- 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; } //----- (004E0780) -------------------------------------------------------- int __cdecl std::wstring::_S_compare(int a1, int a2) { return a1 - a2; } //----- (004E0790) -------------------------------------------------------- int __thiscall std::wstring::_M_capacity(_DWORD *this, int a2) { int result; // eax result = a2; this[2] = a2; return result; } //----- (004E07A0) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004E07B0) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004E07C0) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004E07D0) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004E07E0) -------------------------------------------------------- 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; } //----- (004E0860) -------------------------------------------------------- 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; } // 4E0860: using guessed type unsigned int var_10[4]; //----- (004E08F0) -------------------------------------------------------- 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; } // 4E08F0: using guessed type unsigned int var_10[4]; //----- (004E0980) -------------------------------------------------------- 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; } //----- (004E0A30) -------------------------------------------------------- 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; } //----- (004E0AE0) -------------------------------------------------------- int __fastcall std::wstring::_M_local_data(int a1) { return a1 + 8; } //----- (004E0AF0) -------------------------------------------------------- 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; } //----- (004E0B10) -------------------------------------------------------- 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; } //----- (004E0B50) -------------------------------------------------------- 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; } //----- (004E0B90) -------------------------------------------------------- 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; } //----- (004E0BD0) -------------------------------------------------------- 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; } //----- (004E0C10) -------------------------------------------------------- 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); } // 4E0C10: could not find valid save-restore pair for ebp //----- (004E0C60) -------------------------------------------------------- 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; } //----- (004E0D90) -------------------------------------------------------- int __fastcall std::wstring::_M_get_allocator(int a1) { return a1; } //----- (004E0DA0) -------------------------------------------------------- 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); } //----- (004E0DB0) -------------------------------------------------------- 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; } //----- (004E0DE0) -------------------------------------------------------- int __fastcall std::wstring::end(_DWORD *a1) { return *a1 + 2 * a1[1]; } //----- (004E0DF0) -------------------------------------------------------- int __fastcall std::wstring::back(_DWORD *a1) { return *a1 + 2 * a1[1] - 2; } //----- (004E0E00) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (004E0E10) -------------------------------------------------------- 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; } } //----- (004E0F90) -------------------------------------------------------- int __fastcall std::wstring::begin(int a1) { return *(_DWORD *)a1; } //----- (004E0FA0) -------------------------------------------------------- _WORD *__fastcall std::wstring::clear(int a1) { _WORD *result; // eax result = *(_WORD **)a1; *(_DWORD *)(a1 + 4) = 0; *result = 0; return result; } //----- (004E0FB0) -------------------------------------------------------- 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; } //----- (004E0FE0) -------------------------------------------------------- _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; } //----- (004E1050) -------------------------------------------------------- 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; } //----- (004E1080) -------------------------------------------------------- _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; } //----- (004E10F0) -------------------------------------------------------- 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; } //----- (004E1180) -------------------------------------------------------- int __fastcall std::wstring::front(int a1) { return *(_DWORD *)a1; } //----- (004E1190) -------------------------------------------------------- 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); } //----- (004E11E0) -------------------------------------------------------- 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); } //----- (004E1210) -------------------------------------------------------- int __thiscall std::wstring::append(void *this, int a2) { return std::wstring::_M_append((int)this, *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); } //----- (004E1240) -------------------------------------------------------- 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); } //----- (004E12A0) -------------------------------------------------------- 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); } //----- (004E12D0) -------------------------------------------------------- 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); } //----- (004E1300) -------------------------------------------------------- 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; } //----- (004E13C0) -------------------------------------------------------- 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); } //----- (004E1400) -------------------------------------------------------- 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); } //----- (004E1430) -------------------------------------------------------- void *__thiscall std::wstring::assign(void *this, int a2) { std::wstring::_M_assign((int)this, a2); return this; } //----- (004E1450) -------------------------------------------------------- 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); } //----- (004E14C0) -------------------------------------------------------- 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); } //----- (004E14F0) -------------------------------------------------------- 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); } //----- (004E1520) -------------------------------------------------------- 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; } //----- (004E1590) -------------------------------------------------------- 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; } //----- (004E15E0) -------------------------------------------------------- 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; } //----- (004E1630) -------------------------------------------------------- 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); } //----- (004E1690) -------------------------------------------------------- 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); } //----- (004E16D0) -------------------------------------------------------- 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; } //----- (004E1720) -------------------------------------------------------- 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); } //----- (004E1790) -------------------------------------------------------- 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); } //----- (004E17F0) -------------------------------------------------------- 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)); } //----- (004E1850) -------------------------------------------------------- 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); } //----- (004E18E0) -------------------------------------------------------- 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); } //----- (004E1940) -------------------------------------------------------- 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); } //----- (004E19B0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * a2[1]; return result; } //----- (004E19D0) -------------------------------------------------------- int __thiscall std::wstring::resize(int *this, unsigned int a2) { return std::wstring::resize(this, a2, 0); } //----- (004E19F0) -------------------------------------------------------- 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; } //----- (004E1A50) -------------------------------------------------------- int __thiscall std::wstring::_M_data(_DWORD *this, int a2) { int result; // eax result = a2; *this = a2; return result; } //----- (004E1A60) -------------------------------------------------------- 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; } //----- (004E1A90) -------------------------------------------------------- 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; } //----- (004E1AC0) -------------------------------------------------------- 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); } //----- (004E1B30) -------------------------------------------------------- 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); } //----- (004E1BA0) -------------------------------------------------------- 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)); } //----- (004E1C20) -------------------------------------------------------- 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); } //----- (004E1CA0) -------------------------------------------------------- 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); } //----- (004E1D10) -------------------------------------------------------- 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); } //----- (004E1D80) -------------------------------------------------------- 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); } //----- (004E1DF0) -------------------------------------------------------- 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); } //----- (004E1E60) -------------------------------------------------------- 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); } //----- (004E1E90) -------------------------------------------------------- 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); } //----- (004E1F00) -------------------------------------------------------- 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); } //----- (004E1F80) -------------------------------------------------------- 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); } //----- (004E1FF0) -------------------------------------------------------- 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); } //----- (004E2060) -------------------------------------------------------- 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)); } //----- (004E20E0) -------------------------------------------------------- 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); } //----- (004E2150) -------------------------------------------------------- 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); } //----- (004E21C0) -------------------------------------------------------- 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); } //----- (004E21F0) -------------------------------------------------------- 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); } //----- (004E2260) -------------------------------------------------------- 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); } //----- (004E22C0) -------------------------------------------------------- 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)); } //----- (004E2330) -------------------------------------------------------- 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); } //----- (004E23D0) -------------------------------------------------------- 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); } //----- (004E2440) -------------------------------------------------------- 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; } } } //----- (004E2560) -------------------------------------------------------- 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; } //----- (004E25D0) -------------------------------------------------------- int __fastcall std::wstring::pop_back(int *a1) { return std::wstring::_M_erase(a1, a1[1] - 1, 1); } //----- (004E25F0) -------------------------------------------------------- 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; } //----- (004E2690) -------------------------------------------------------- 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; } } // 4E2690: using guessed type unsigned int var_20[8]; //----- (004E2750) -------------------------------------------------------- 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); } // 4E2786: variable 'v5' is possibly undefined //----- (004E27C0) -------------------------------------------------------- int __thiscall std::wstring::_M_length(_DWORD *this, int a2) { int result; // eax result = a2; this[1] = a2; return result; } //----- (004E27D0) -------------------------------------------------------- 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; } // 4E27D0: using guessed type unsigned int var_20[8]; //----- (004E2910) -------------------------------------------------------- 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; } // 4E2910: using guessed type size_t C; //----- (004E2950) -------------------------------------------------------- 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; } //----- (004E29D0) -------------------------------------------------------- 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; } //----- (004E2A30) -------------------------------------------------------- _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; } //----- (004E2AA0) -------------------------------------------------------- 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); } // 4E2AD5: variable 'v6' is possibly undefined //----- (004E2AF0) -------------------------------------------------------- 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); } //----- (004E2B10) -------------------------------------------------------- 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; } //----- (004E2B30) -------------------------------------------------------- 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); } // 4E2B50: variable 'v3' is possibly undefined //----- (004E2B60) -------------------------------------------------------- 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); } // 4E2B80: variable 'v4' is possibly undefined //----- (004E2B90) -------------------------------------------------------- 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); } //----- (004E2BF0) -------------------------------------------------------- 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); } //----- (004E2C60) -------------------------------------------------------- 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); } // 4E2C97: variable 'v8' is possibly undefined //----- (004E2CD0) -------------------------------------------------------- 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); } //----- (004E2CF0) -------------------------------------------------------- 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); } //----- (004E2D20) -------------------------------------------------------- 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; } //----- (004E2D40) -------------------------------------------------------- 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); } //----- (004E2D50) -------------------------------------------------------- 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); } //----- (004E2D60) -------------------------------------------------------- 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); } //----- (004E2D70) -------------------------------------------------------- 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; } //----- (004E2DD0) -------------------------------------------------------- _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; } //----- (004E2E40) -------------------------------------------------------- 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); } // 4E2E75: variable 'v6' is possibly undefined //----- (004E2E90) -------------------------------------------------------- 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); } //----- (004E2EB0) -------------------------------------------------------- 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; } //----- (004E2ED0) -------------------------------------------------------- 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); } // 4E2EF0: variable 'v3' is possibly undefined //----- (004E2F00) -------------------------------------------------------- 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); } // 4E2F20: variable 'v4' is possibly undefined //----- (004E2F30) -------------------------------------------------------- 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); } //----- (004E2F90) -------------------------------------------------------- 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); } //----- (004E3000) -------------------------------------------------------- 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); } // 4E3037: variable 'v8' is possibly undefined //----- (004E3070) -------------------------------------------------------- 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); } //----- (004E3090) -------------------------------------------------------- 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); } //----- (004E30C0) -------------------------------------------------------- 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; } //----- (004E30E0) -------------------------------------------------------- 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); } //----- (004E30F0) -------------------------------------------------------- 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); } //----- (004E3100) -------------------------------------------------------- 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); } //----- (004E3110) -------------------------------------------------------- void __fastcall std::wstring::~wstring(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004E3140) -------------------------------------------------------- void __fastcall std::wstring::~wstring(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004E3170) -------------------------------------------------------- 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; } //----- (004E3220) -------------------------------------------------------- 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); } //----- (004E3260) -------------------------------------------------------- void *__thiscall std::wstring::operator=(void *this, int a2) { std::wstring::_M_assign((int)this, a2); return this; } //----- (004E3280) -------------------------------------------------------- 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; } //----- (004E32C0) -------------------------------------------------------- int *__thiscall std::wstring::operator=(int *this, wchar_t a2) { std::wstring::_M_replace_aux((int)this, 0, this[1], 1u, a2); return this; } //----- (004E3300) -------------------------------------------------------- int __thiscall std::wstring::operator[](_DWORD *this, int a2) { return *this + 2 * a2; } //----- (004E3310) -------------------------------------------------------- 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); } //----- (004E3360) -------------------------------------------------------- int __thiscall std::wstring::operator+=(void *this, int a2) { return std::wstring::_M_append((int)this, *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); } //----- (004E3390) -------------------------------------------------------- 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); } //----- (004E33C0) -------------------------------------------------------- _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; } //----- (004E3440) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_5382A8; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_537F30; 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; } // 537F30: using guessed type int (*off_537F30)(); // 5382A8: using guessed type int (*off_5382A8)(); //----- (004E3500) -------------------------------------------------------- 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_5382A8; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_537F30; 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; } // 537F30: using guessed type int (*off_537F30)(); // 5382A8: using guessed type int (*off_5382A8)(); //----- (004E35D0) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_5382A8; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_537F30; 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; } // 537F30: using guessed type int (*off_537F30)(); // 5382A8: using guessed type int (*off_5382A8)(); //----- (004E3690) -------------------------------------------------------- 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_5382A8; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_537F30; 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; } // 537F30: using guessed type int (*off_537F30)(); // 5382A8: using guessed type int (*off_5382A8)(); //----- (004E3760) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5382A8; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4E3779: variable 'v2' is possibly undefined // 5382A8: using guessed type int (*off_5382A8)(); //----- (004E3790) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382A8; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4E3799: variable 'v1' is possibly undefined // 5382A8: using guessed type int (*off_5382A8)(); //----- (004E37C0) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382A8; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4E37C9: variable 'v1' is possibly undefined // 5382A8: using guessed type int (*off_5382A8)(); //----- (004E37F0) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_5382C4; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_537F4C; 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; } // 537F4C: using guessed type int (*off_537F4C)(); // 5382C4: using guessed type int (*off_5382C4)(); //----- (004E38B0) -------------------------------------------------------- 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_5382C4; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_537F4C; 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; } // 537F4C: using guessed type int (*off_537F4C)(); // 5382C4: using guessed type int (*off_5382C4)(); //----- (004E3980) -------------------------------------------------------- char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { int c_locale; // eax bool v5; // zf *this = &off_5382C4; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_537F4C; 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; } // 537F4C: using guessed type int (*off_537F4C)(); // 5382C4: using guessed type int (*off_5382C4)(); //----- (004E3A40) -------------------------------------------------------- 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_5382C4; this[1] = a3 != 0; c_locale = std::locale::facet::_S_get_c_locale(); this[2] = c_locale; *this = &off_537F4C; 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; } // 537F4C: using guessed type int (*off_537F4C)(); // 5382C4: using guessed type int (*off_5382C4)(); //----- (004E3B10) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5382C4; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4E3B29: variable 'v2' is possibly undefined // 5382C4: using guessed type int (*off_5382C4)(); //----- (004E3B40) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382C4; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4E3B49: variable 'v1' is possibly undefined // 5382C4: using guessed type int (*off_5382C4)(); //----- (004E3B70) -------------------------------------------------------- void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382C4; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4E3B79: variable 'v1' is possibly undefined // 5382C4: using guessed type int (*off_5382C4)(); //----- (004E3BA0) -------------------------------------------------------- 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; } //----- (004E3C90) -------------------------------------------------------- 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; } //----- (004E3D80) -------------------------------------------------------- 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; } //----- (004E3E10) -------------------------------------------------------- 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; } //----- (004E3EA0) -------------------------------------------------------- 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; } //----- (004E3ED0) -------------------------------------------------------- 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); } //----- (004E3F10) -------------------------------------------------------- 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); } //----- (004E3F70) -------------------------------------------------------- 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; } // 4E41D2: variable 'v38' is possibly undefined // 4E420F: variable 'v39' is possibly undefined // 4E4226: variable 'v40' is possibly undefined // 4E4260: variable 'v41' is possibly undefined //----- (004E4480) -------------------------------------------------------- _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; } // 4E44C8: variable 'v5' is possibly undefined //----- (004E44D0) -------------------------------------------------------- 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; } //----- (004E45D0) -------------------------------------------------------- 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; } //----- (004E4810) -------------------------------------------------------- _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; } //----- (004E48F0) -------------------------------------------------------- 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; } //----- (004E4950) -------------------------------------------------------- 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; } //----- (004E4BB0) -------------------------------------------------------- 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; } //----- (004E4C00) -------------------------------------------------------- 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); } //----- (004E4C30) -------------------------------------------------------- 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; } //----- (004E4C70) -------------------------------------------------------- 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_537F68; 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); } // 4E4DFE: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4E4D5F: variable 'v12' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); //----- (004E4EB0) -------------------------------------------------------- _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_537F68; 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; } // 4E4EBE: variable 'v8' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); //----- (004E4F30) -------------------------------------------------------- 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_538A48; *(_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_537F68; 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); } // 4E4FAD: variable 'v8' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004E5000) -------------------------------------------------------- char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) { _DWORD *v3; // ecx char *result; // eax v3 = this + 7; *(v3 - 7) = &off_538A48; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_537F68; this[10] = 0; this[8] = a2; result = (char *)(this + 11); this[9] = this + 11; *((_BYTE *)this + 44) = 0; return result; } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004E5070) -------------------------------------------------------- int __fastcall std::stringbuf::basic_stringbuf(int a1) { _DWORD *v2; // ecx int result; // eax v2 = (_DWORD *)(a1 + 28); *(v2 - 7) = &off_538A48; *(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_537F68; *(_DWORD *)(a1 + 32) = 24; *(_DWORD *)(a1 + 36) = a1 + 44; *(_DWORD *)(a1 + 40) = 0; return result; } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004E50E0) -------------------------------------------------------- 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_537F68; 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); } // 4E526E: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4E51CF: variable 'v12' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); //----- (004E5320) -------------------------------------------------------- _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_537F68; 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; } // 4E532E: variable 'v8' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); //----- (004E53A0) -------------------------------------------------------- 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_538A48; *(_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_537F68; 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); } // 4E541D: variable 'v8' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004E5470) -------------------------------------------------------- char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) { _DWORD *v3; // ecx char *result; // eax v3 = this + 7; *(v3 - 7) = &off_538A48; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_537F68; this[10] = 0; this[8] = a2; result = (char *)(this + 11); this[9] = this + 11; *((_BYTE *)this + 44) = 0; return result; } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004E54E0) -------------------------------------------------------- int __fastcall std::stringbuf::basic_stringbuf(int a1) { _DWORD *v2; // ecx int result; // eax v2 = (_DWORD *)(a1 + 28); *(v2 - 7) = &off_538A48; *(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_537F68; *(_DWORD *)(a1 + 32) = 24; *(_DWORD *)(a1 + 36) = a1 + 44; *(_DWORD *)(a1 + 40) = 0; return result; } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004E5550) -------------------------------------------------------- void __fastcall std::stringbuf::~stringbuf(_DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[9]; *a1 = &off_537F68; if ( v2 != a1 + 11 ) operator delete(v2); *a1 = &off_538A48; std::locale::~locale((_DWORD **)a1 + 7); operator delete(a1); } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004E5590) -------------------------------------------------------- void __fastcall std::stringbuf::~stringbuf(int a1) { void *v2; // eax v2 = *(void **)(a1 + 36); *(_DWORD *)a1 = &off_537F68; if ( v2 != (void *)(a1 + 44) ) operator delete(v2); *(_DWORD *)a1 = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 28)); } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004E55C0) -------------------------------------------------------- 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; } // 4E56BE: variable 'v22' is possibly undefined // 4E56CC: variable 'v23' is possibly undefined //----- (004E58F0) -------------------------------------------------------- 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; } //----- (004E59F0) -------------------------------------------------------- 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; } //----- (004E5AF0) -------------------------------------------------------- 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; } //----- (004E5B80) -------------------------------------------------------- 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; } //----- (004E5C10) -------------------------------------------------------- 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; } //----- (004E5C40) -------------------------------------------------------- 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); } //----- (004E5C80) -------------------------------------------------------- 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); } //----- (004E5CE0) -------------------------------------------------------- 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; } // 4E5F5E: variable 'v39' is possibly undefined // 4E5F9B: variable 'v40' is possibly undefined // 4E5FB2: variable 'v41' is possibly undefined // 4E5FEC: variable 'v42' is possibly undefined //----- (004E6200) -------------------------------------------------------- _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; } // 4E624A: variable 'v5' is possibly undefined //----- (004E6260) -------------------------------------------------------- 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; } //----- (004E6350) -------------------------------------------------------- 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; } //----- (004E65A0) -------------------------------------------------------- _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; } //----- (004E6690) -------------------------------------------------------- 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; } //----- (004E66F0) -------------------------------------------------------- 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; } //----- (004E6950) -------------------------------------------------------- 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; } //----- (004E69B0) -------------------------------------------------------- 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; } //----- (004E69E0) -------------------------------------------------------- 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; } //----- (004E6A10) -------------------------------------------------------- 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_537FA8; *(_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); } // 4E6BBF: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4E6B0D: variable 'v12' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); //----- (004E6C80) -------------------------------------------------------- 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_537FA8; *(_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; } // 4E6C92: variable 'S2' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); //----- (004E6D00) -------------------------------------------------------- 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_538A88; *(_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_537FA8; *(_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); } // 4E6D78: variable 'v8' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004E6DD0) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) { _DWORD *v3; // ecx int result; // eax v3 = this + 7; *(v3 - 7) = &off_538A88; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_537FA8; this[10] = 0; this[8] = a2; this[9] = this + 11; result = 0; *((_WORD *)this + 22) = 0; return result; } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004E6E40) -------------------------------------------------------- int __fastcall std::wstringbuf::basic_stringbuf(int a1) { _DWORD *v2; // ecx int result; // eax v2 = (_DWORD *)(a1 + 28); *(v2 - 7) = &off_538A88; *(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_537FA8; *(_DWORD *)(a1 + 36) = a1 + 44; result = 0; *(_DWORD *)(a1 + 32) = 24; *(_DWORD *)(a1 + 40) = 0; *(_WORD *)(a1 + 44) = 0; return result; } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004E6EB0) -------------------------------------------------------- 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_537FA8; *(_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); } // 4E705F: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4E6FAD: variable 'v12' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); //----- (004E7120) -------------------------------------------------------- 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_537FA8; *(_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; } // 4E7132: variable 'S2' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); //----- (004E71A0) -------------------------------------------------------- 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_538A88; *(_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_537FA8; *(_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); } // 4E7218: variable 'v8' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004E7270) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) { _DWORD *v3; // ecx int result; // eax v3 = this + 7; *(v3 - 7) = &off_538A88; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_537FA8; this[10] = 0; this[8] = a2; this[9] = this + 11; result = 0; *((_WORD *)this + 22) = 0; return result; } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004E72E0) -------------------------------------------------------- int __fastcall std::wstringbuf::basic_stringbuf(int a1) { _DWORD *v2; // ecx int result; // eax v2 = (_DWORD *)(a1 + 28); *(v2 - 7) = &off_538A88; *(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_537FA8; *(_DWORD *)(a1 + 36) = a1 + 44; result = 0; *(_DWORD *)(a1 + 32) = 24; *(_DWORD *)(a1 + 40) = 0; *(_WORD *)(a1 + 44) = 0; return result; } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004E7350) -------------------------------------------------------- void __fastcall std::wstringbuf::~wstringbuf(_DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[9]; *a1 = &off_537FA8; if ( v2 != a1 + 11 ) operator delete(v2); *a1 = &off_538A88; std::locale::~locale((_DWORD **)a1 + 7); operator delete(a1); } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004E7390) -------------------------------------------------------- void __fastcall std::wstringbuf::~wstringbuf(int a1) { void *v2; // eax v2 = *(void **)(a1 + 36); *(_DWORD *)a1 = &off_537FA8; if ( v2 != (void *)(a1 + 44) ) operator delete(v2); *(_DWORD *)a1 = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 28)); } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004E73C0) -------------------------------------------------------- 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; } // 4E74CC: variable 'v20' is possibly undefined // 4E74DA: variable 'v21' is possibly undefined //----- (004E76F0) -------------------------------------------------------- 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_537FE8; 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; } // 537FE8: using guessed type int (*off_537FE8)(); //----- (004E7790) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { return std::messages_byname::messages_byname(this, (int **)*a2, a3); } //----- (004E77A0) -------------------------------------------------------- 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_537FE8; 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; } // 537FE8: using guessed type int (*off_537FE8)(); //----- (004E7840) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { return std::messages_byname::messages_byname(this, (int **)*a2, a3); } //----- (004E7850) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5382E0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4E7869: variable 'v2' is possibly undefined // 5382E0: using guessed type int (*off_5382E0)(); //----- (004E7880) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382E0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4E7889: variable 'v1' is possibly undefined // 5382E0: using guessed type int (*off_5382E0)(); //----- (004E78B0) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382E0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4E78B9: variable 'v1' is possibly undefined // 5382E0: using guessed type int (*off_5382E0)(); //----- (004E78E0) -------------------------------------------------------- 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_538004; 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; } // 538004: using guessed type int (*off_538004)(); //----- (004E7980) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { return std::messages_byname::messages_byname(this, (int **)*a2, a3); } //----- (004E7990) -------------------------------------------------------- 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_538004; 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; } // 538004: using guessed type int (*off_538004)(); //----- (004E7A30) -------------------------------------------------------- unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { return std::messages_byname::messages_byname(this, (int **)*a2, a3); } //----- (004E7A40) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5382FC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4E7A59: variable 'v2' is possibly undefined // 5382FC: using guessed type int (*off_5382FC)(); //----- (004E7A70) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382FC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4E7A79: variable 'v1' is possibly undefined // 5382FC: using guessed type int (*off_5382FC)(); //----- (004E7AA0) -------------------------------------------------------- void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382FC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4E7AA9: variable 'v1' is possibly undefined // 5382FC: using guessed type int (*off_5382FC)(); //----- (004E7AD0) -------------------------------------------------------- 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_538318; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538020; 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; } // 538020: using guessed type int (*off_538020)(); // 538318: using guessed type int (*off_538318)(); //----- (004E7BC0) -------------------------------------------------------- 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_538318; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538020; 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; } // 538020: using guessed type int (*off_538020)(); // 538318: using guessed type int (*off_538318)(); //----- (004E7CB0) -------------------------------------------------------- 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_538318; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538020; 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; } // 538020: using guessed type int (*off_538020)(); // 538318: using guessed type int (*off_538318)(); //----- (004E7DA0) -------------------------------------------------------- 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_538318; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538020; 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; } // 538020: using guessed type int (*off_538020)(); // 538318: using guessed type int (*off_538318)(); //----- (004E7E90) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538020; std::numpunct::~numpunct(v2); operator delete(a1); } // 4E7E9C: variable 'v2' is possibly undefined // 538020: using guessed type int (*off_538020)(); //----- (004E7EB0) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538020; std::numpunct::~numpunct(a1); } // 4E7EB0: variable 'v1' is possibly undefined // 538020: using guessed type int (*off_538020)(); //----- (004E7EC0) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538020; std::numpunct::~numpunct(a1); } // 4E7EC0: variable 'v1' is possibly undefined // 538020: using guessed type int (*off_538020)(); //----- (004E7ED0) -------------------------------------------------------- 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_53833C; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538044; 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; } // 538044: using guessed type int (*off_538044)(); // 53833C: using guessed type int (*off_53833C)(); //----- (004E7FC0) -------------------------------------------------------- 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_53833C; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538044; 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; } // 538044: using guessed type int (*off_538044)(); // 53833C: using guessed type int (*off_53833C)(); //----- (004E80B0) -------------------------------------------------------- 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_53833C; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538044; 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; } // 538044: using guessed type int (*off_538044)(); // 53833C: using guessed type int (*off_53833C)(); //----- (004E81A0) -------------------------------------------------------- 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_53833C; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_538044; 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; } // 538044: using guessed type int (*off_538044)(); // 53833C: using guessed type int (*off_53833C)(); //----- (004E8290) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538044; std::numpunct::~numpunct(v2); operator delete(a1); } // 4E829C: variable 'v2' is possibly undefined // 538044: using guessed type int (*off_538044)(); //----- (004E82B0) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538044; std::numpunct::~numpunct(a1); } // 4E82B0: variable 'v1' is possibly undefined // 538044: using guessed type int (*off_538044)(); //----- (004E82C0) -------------------------------------------------------- void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538044; std::numpunct::~numpunct(a1); } // 4E82C0: variable 'v1' is possibly undefined // 538044: using guessed type int (*off_538044)(); //----- (004E82D0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538068; result = a3 != 0; this[1] = result; return result; } // 538068: using guessed type int (*off_538068)(); //----- (004E82F0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538068; result = a3 != 0; this[1] = result; return result; } // 538068: using guessed type int (*off_538068)(); //----- (004E8310) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538068; result = a3 != 0; this[1] = result; return result; } // 538068: using guessed type int (*off_538068)(); //----- (004E8330) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538068; result = a3 != 0; this[1] = result; return result; } // 538068: using guessed type int (*off_538068)(); //----- (004E8350) -------------------------------------------------------- void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538360; std::locale::facet::~facet(v2); operator delete(a1); } // 4E835C: variable 'v2' is possibly undefined // 538360: using guessed type int (*off_538360)(); //----- (004E8370) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538360; std::locale::facet::~facet(a1); } // 4E8370: variable 'v1' is possibly undefined // 538360: using guessed type int (*off_538360)(); //----- (004E8380) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538360; std::locale::facet::~facet(a1); } // 4E8380: variable 'v1' is possibly undefined // 538360: using guessed type int (*off_538360)(); //----- (004E8390) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538094; result = a3 != 0; this[1] = result; return result; } // 538094: using guessed type int (*off_538094)(); //----- (004E83B0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538094; result = a3 != 0; this[1] = result; return result; } // 538094: using guessed type int (*off_538094)(); //----- (004E83D0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538094; result = a3 != 0; this[1] = result; return result; } // 538094: using guessed type int (*off_538094)(); //----- (004E83F0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_538094; result = a3 != 0; this[1] = result; return result; } // 538094: using guessed type int (*off_538094)(); //----- (004E8410) -------------------------------------------------------- void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_53838C; std::locale::facet::~facet(v2); operator delete(a1); } // 4E841C: variable 'v2' is possibly undefined // 53838C: using guessed type int (*off_53838C)(); //----- (004E8430) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_53838C; std::locale::facet::~facet(a1); } // 4E8430: variable 'v1' is possibly undefined // 53838C: using guessed type int (*off_53838C)(); //----- (004E8440) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_53838C; std::locale::facet::~facet(a1); } // 4E8440: variable 'v1' is possibly undefined // 53838C: using guessed type int (*off_53838C)(); //----- (004E8450) -------------------------------------------------------- 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_537E60; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_5380C0; 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; } // 537E60: using guessed type int (*off_537E60)(); // 5380C0: using guessed type int (*off_5380C0)(); //----- (004E8550) -------------------------------------------------------- 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_537E60; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_5380C0; 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; } // 537E60: using guessed type int (*off_537E60)(); // 5380C0: using guessed type int (*off_5380C0)(); //----- (004E8650) -------------------------------------------------------- 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_537E60; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_5380C0; 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; } // 537E60: using guessed type int (*off_537E60)(); // 5380C0: using guessed type int (*off_5380C0)(); //----- (004E8750) -------------------------------------------------------- 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_537E60; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_5380C0; 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; } // 537E60: using guessed type int (*off_537E60)(); // 5380C0: using guessed type int (*off_5380C0)(); //----- (004E8850) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5380C0; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4E885C: variable 'v2' is possibly undefined // 5380C0: using guessed type int (*off_5380C0)(); //----- (004E8870) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5380C0; std::moneypunct::~moneypunct(a1); } // 4E8870: variable 'v1' is possibly undefined // 5380C0: using guessed type int (*off_5380C0)(); //----- (004E8880) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5380C0; std::moneypunct::~moneypunct(a1); } // 4E8880: variable 'v1' is possibly undefined // 5380C0: using guessed type int (*off_5380C0)(); //----- (004E8890) -------------------------------------------------------- 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_537E94; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_5380F4; 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; } // 537E94: using guessed type int (*off_537E94)(); // 5380F4: using guessed type int (*off_5380F4)(); //----- (004E8990) -------------------------------------------------------- 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_537E94; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_5380F4; 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; } // 537E94: using guessed type int (*off_537E94)(); // 5380F4: using guessed type int (*off_5380F4)(); //----- (004E8A90) -------------------------------------------------------- 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_537E94; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_5380F4; 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; } // 537E94: using guessed type int (*off_537E94)(); // 5380F4: using guessed type int (*off_5380F4)(); //----- (004E8B90) -------------------------------------------------------- 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_537E94; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_5380F4; 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; } // 537E94: using guessed type int (*off_537E94)(); // 5380F4: using guessed type int (*off_5380F4)(); //----- (004E8C90) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5380F4; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4E8C9C: variable 'v2' is possibly undefined // 5380F4: using guessed type int (*off_5380F4)(); //----- (004E8CB0) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5380F4; std::moneypunct::~moneypunct(a1); } // 4E8CB0: variable 'v1' is possibly undefined // 5380F4: using guessed type int (*off_5380F4)(); //----- (004E8CC0) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5380F4; std::moneypunct::~moneypunct(a1); } // 4E8CC0: variable 'v1' is possibly undefined // 5380F4: using guessed type int (*off_5380F4)(); //----- (004E8CD0) -------------------------------------------------------- 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_537EC8; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538128; 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; } // 537EC8: using guessed type int (*off_537EC8)(); // 538128: using guessed type int (*off_538128)(); //----- (004E8DD0) -------------------------------------------------------- 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_537EC8; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538128; 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; } // 537EC8: using guessed type int (*off_537EC8)(); // 538128: using guessed type int (*off_538128)(); //----- (004E8ED0) -------------------------------------------------------- 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_537EC8; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538128; 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; } // 537EC8: using guessed type int (*off_537EC8)(); // 538128: using guessed type int (*off_538128)(); //----- (004E8FD0) -------------------------------------------------------- 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_537EC8; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_538128; 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; } // 537EC8: using guessed type int (*off_537EC8)(); // 538128: using guessed type int (*off_538128)(); //----- (004E90D0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538128; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4E90DC: variable 'v2' is possibly undefined // 538128: using guessed type int (*off_538128)(); //----- (004E90F0) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538128; std::moneypunct::~moneypunct(a1); } // 4E90F0: variable 'v1' is possibly undefined // 538128: using guessed type int (*off_538128)(); //----- (004E9100) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538128; std::moneypunct::~moneypunct(a1); } // 4E9100: variable 'v1' is possibly undefined // 538128: using guessed type int (*off_538128)(); //----- (004E9110) -------------------------------------------------------- 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_537EFC; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_53815C; 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; } // 537EFC: using guessed type int (*off_537EFC)(); // 53815C: using guessed type int (*off_53815C)(); //----- (004E9210) -------------------------------------------------------- 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_537EFC; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_53815C; 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; } // 537EFC: using guessed type int (*off_537EFC)(); // 53815C: using guessed type int (*off_53815C)(); //----- (004E9310) -------------------------------------------------------- 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_537EFC; this[2] = 0; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_53815C; 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; } // 537EFC: using guessed type int (*off_537EFC)(); // 53815C: using guessed type int (*off_53815C)(); //----- (004E9410) -------------------------------------------------------- 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_537EFC; this[2] = 0; v8 = v4; v5 = v4; this[1] = a3 != 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_53815C; 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; } // 537EFC: using guessed type int (*off_537EFC)(); // 53815C: using guessed type int (*off_53815C)(); //----- (004E9510) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_53815C; std::moneypunct::~moneypunct(v2); operator delete(a1); } // 4E951C: variable 'v2' is possibly undefined // 53815C: using guessed type int (*off_53815C)(); //----- (004E9530) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_53815C; std::moneypunct::~moneypunct(a1); } // 4E9530: variable 'v1' is possibly undefined // 53815C: using guessed type int (*off_53815C)(); //----- (004E9540) -------------------------------------------------------- void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_53815C; std::moneypunct::~moneypunct(a1); } // 4E9540: variable 'v1' is possibly undefined // 53815C: using guessed type int (*off_53815C)(); //----- (004E9550) -------------------------------------------------------- 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); } //----- (004E95C0) -------------------------------------------------------- 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)); } // 4E95E4: variable 'v10' is possibly undefined //----- (004E9660) -------------------------------------------------------- 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_533844; *((_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_533858; 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_538194; this[18] = off_5381BC; this[2] = off_5381A8; 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_537F68; 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; } // 4E98D4: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4E96D9: variable 'v18' is possibly undefined // 4E9829: variable 'v19' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); // 538194: using guessed type int (*off_538194)(); // 5381A8: using guessed type int (*off_5381A8[2])(); // 5381BC: using guessed type int (*off_5381BC[2])(); //----- (004E99F0) -------------------------------------------------------- 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_533844; *((_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_533858; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *((_DWORD *)this + 2) = &unk_53386C; *((_DWORD *)this + 18) = &unk_533880; std::ios::init(v3, 0); *(_DWORD *)this = &off_538194; *((_DWORD *)this + 18) = off_5381BC; *((_DWORD *)this + 2) = off_5381A8; *((_DWORD *)this + 3) = &off_538A48; *((_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_537F68; 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)); } // 4E9B0A: variable 'v9' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); // 538194: using guessed type int (*off_538194)(); // 5381A8: using guessed type int (*off_5381A8[2])(); // 5381BC: using guessed type int (*off_5381BC[2])(); // 538A48: using guessed type int (*off_538A48)(); //----- (004E9BB0) -------------------------------------------------------- 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_533844; this[46] = 0; *((_WORD *)this + 94) = 0; this[48] = 0; this[49] = 0; this[50] = 0; this[51] = 0; this[18] = &unk_533858; this[1] = 0; std::ios::init(v2, 0); this[2] = &unk_53386C; this[18] = &unk_533880; std::ios::init(v2, 0); *this = &off_538194; this[18] = off_5381BC; this[2] = off_5381A8; this[3] = &off_538A48; 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_537F68; this[11] = a2; this[12] = this + 14; this[13] = 0; return std::ios::init(v2, (int)(this + 3)); } // 537F68: using guessed type int (*off_537F68)(); // 538194: using guessed type int (*off_538194)(); // 5381A8: using guessed type int (*off_5381A8[2])(); // 5381BC: using guessed type int (*off_5381BC[2])(); // 538A48: using guessed type int (*off_538A48)(); //----- (004E9D20) -------------------------------------------------------- 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_533844; *(_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_533858; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_53386C; *(_DWORD *)(a1 + 72) = &unk_533880; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_538194; *(_DWORD *)(a1 + 72) = off_5381BC; *(_DWORD *)(a1 + 8) = off_5381A8; *(_DWORD *)(a1 + 12) = &off_538A48; *(_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_537F68; *(_DWORD *)(a1 + 44) = 24; *(_DWORD *)(a1 + 48) = a1 + 56; *(_DWORD *)(a1 + 52) = 0; return std::ios::init(v1, a1 + 12); } // 537F68: using guessed type int (*off_537F68)(); // 538194: using guessed type int (*off_538194)(); // 5381A8: using guessed type int (*off_5381A8[2])(); // 5381BC: using guessed type int (*off_5381BC[2])(); // 538A48: using guessed type int (*off_538A48)(); //----- (004E9E90) -------------------------------------------------------- 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_537F68; 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; } // 4EA0F7: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4E9ECA: variable 'v23' is possibly undefined // 4EA040: variable 'v24' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); //----- (004EA200) -------------------------------------------------------- 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_538A48; *((_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_537F68; 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)); } // 4EA2F1: variable 'v17' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004EA3B0) -------------------------------------------------------- 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_538A48; 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_537F68; return std::ios::init((int)this + *(_DWORD *)(v12 - 12), (int)(this + 3)); } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004EA510) -------------------------------------------------------- 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_538A48; 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_537F68; v12 = *(_DWORD *)(v11 - 12); this[11] = 24; return std::ios::init((int)this + v12, (int)(this + 3)); } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004EA670) -------------------------------------------------------- void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[12]; *a1 = &off_538194; a1[18] = off_5381BC; a1[2] = off_5381A8; a1[3] = &off_537F68; if ( v2 != a1 + 14 ) operator delete(v2); a1[3] = &off_538A48; std::locale::~locale((_DWORD **)a1 + 10); a1[2] = &unk_53386C; *a1 = &unk_533844; a1[1] = 0; a1[18] = &off_539474; std::ios_base::~ios_base((int)(a1 + 18)); operator delete(a1); } // 537F68: using guessed type int (*off_537F68)(); // 538194: using guessed type int (*off_538194)(); // 5381A8: using guessed type int (*off_5381A8[2])(); // 5381BC: using guessed type int (*off_5381BC[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004EA6F0) -------------------------------------------------------- void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1) { void *v2; // eax v2 = *(void **)(a1 + 48); *(_DWORD *)a1 = &off_538194; *(_DWORD *)(a1 + 72) = off_5381BC; *(_DWORD *)(a1 + 8) = off_5381A8; *(_DWORD *)(a1 + 12) = &off_537F68; if ( v2 != (void *)(a1 + 56) ) operator delete(v2); *(_DWORD *)(a1 + 12) = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 40)); *(_DWORD *)(a1 + 8) = &unk_53386C; *(_DWORD *)a1 = &unk_533844; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 72) = &off_539474; std::ios_base::~ios_base(a1 + 72); } // 537F68: using guessed type int (*off_537F68)(); // 538194: using guessed type int (*off_538194)(); // 5381A8: using guessed type int (*off_5381A8[2])(); // 5381BC: using guessed type int (*off_5381BC[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004EA760) -------------------------------------------------------- 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_537F68; *((_DWORD *)this + 2) = v4; if ( *((char **)this + 12) != this + 56 ) operator delete(*((void **)this + 12)); *((_DWORD *)this + 3) = &off_538A48; 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; } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004EA7F0) -------------------------------------------------------- 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; } // 4EA810: variable 'v24' is possibly undefined // 4EA96E: variable 'v25' is possibly undefined // 4EA982: variable 'v26' is possibly undefined //----- (004EAB80) -------------------------------------------------------- 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); } //----- (004EABF0) -------------------------------------------------------- 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)); } // 4EAC14: variable 'v9' is possibly undefined //----- (004EAC90) -------------------------------------------------------- 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_533894; *((_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_5338A8; 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_5381D0; *((_DWORD *)this + 18) = off_5381F8; *((_DWORD *)this + 2) = off_5381E4; 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_537FA8; 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; } // 4EAF36: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4EAD10: variable 'v19' is possibly undefined // 4EAE78: variable 'v20' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); // 5381D0: using guessed type int (*off_5381D0)(); // 5381E4: using guessed type int (*off_5381E4[2])(); // 5381F8: using guessed type int (*off_5381F8[2])(); //----- (004EB030) -------------------------------------------------------- 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_533894; *((_DWORD *)this + 18) = &unk_5338A8; *((_DWORD *)this + 1) = 0; std::wios::init(v3, 0); *((_DWORD *)this + 2) = &unk_5338F8; *((_DWORD *)this + 18) = &unk_53390C; std::wios::init(v3, 0); *(_DWORD *)this = &off_5381D0; *((_DWORD *)this + 18) = off_5381F8; *((_DWORD *)this + 2) = off_5381E4; *((_DWORD *)this + 3) = &off_538A88; *((_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_537FA8; 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)); } // 4EB154: variable 'v9' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); // 5381D0: using guessed type int (*off_5381D0)(); // 5381E4: using guessed type int (*off_5381E4[2])(); // 5381F8: using guessed type int (*off_5381F8[2])(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EB200) -------------------------------------------------------- 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_533894; this[18] = &unk_5338A8; this[1] = 0; std::wios::init(v2, 0); this[2] = &unk_5338F8; this[18] = &unk_53390C; std::wios::init(v2, 0); *this = &off_5381D0; this[18] = off_5381F8; this[2] = off_5381E4; this[3] = &off_538A88; 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_537FA8; this[11] = a2; this[12] = this + 14; this[13] = 0; *((_WORD *)this + 28) = 0; return std::wios::init(v2, (int)(this + 3)); } // 537FA8: using guessed type int (*off_537FA8)(); // 5381D0: using guessed type int (*off_5381D0)(); // 5381E4: using guessed type int (*off_5381E4[2])(); // 5381F8: using guessed type int (*off_5381F8[2])(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EB370) -------------------------------------------------------- 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_533894; *(_DWORD *)(a1 + 72) = &unk_5338A8; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_5338F8; *(_DWORD *)(a1 + 72) = &unk_53390C; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_5381D0; *(_DWORD *)(a1 + 72) = off_5381F8; *(_DWORD *)(a1 + 8) = off_5381E4; *(_DWORD *)(a1 + 12) = &off_538A88; *(_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_537FA8; *(_DWORD *)(a1 + 44) = 24; *(_DWORD *)(a1 + 52) = 0; *(_WORD *)(a1 + 56) = 0; return std::wios::init(v1, a1 + 12); } // 537FA8: using guessed type int (*off_537FA8)(); // 5381D0: using guessed type int (*off_5381D0)(); // 5381E4: using guessed type int (*off_5381E4[2])(); // 5381F8: using guessed type int (*off_5381F8[2])(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EB4E0) -------------------------------------------------------- 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_537FA8; 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; } // 4EB767: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4EB51E: variable 'v26' is possibly undefined // 4EB6A9: variable 'v27' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); //----- (004EB860) -------------------------------------------------------- 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_538A88; *((_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_537FA8; 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)); } // 4EB954: variable 'v17' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EBA10) -------------------------------------------------------- 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_538A88; 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_537FA8; this[11] = a3; this[12] = (int)(this + 14); *((_WORD *)this + 28) = 0; return std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EBB70) -------------------------------------------------------- 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_538A88; 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_537FA8; v12 = *(_DWORD *)(v11 - 12); this[11] = 24; return std::wios::init((int)this + v12, (int)(this + 3)); } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EBCD0) -------------------------------------------------------- void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[12]; *a1 = &off_5381D0; a1[18] = off_5381F8; a1[2] = off_5381E4; a1[3] = &off_537FA8; if ( v2 != a1 + 14 ) operator delete(v2); a1[3] = &off_538A88; std::locale::~locale((_DWORD **)a1 + 10); a1[2] = &unk_5338F8; *a1 = &unk_533894; a1[1] = 0; a1[18] = &off_539484; std::ios_base::~ios_base((int)(a1 + 18)); operator delete(a1); } // 537FA8: using guessed type int (*off_537FA8)(); // 5381D0: using guessed type int (*off_5381D0)(); // 5381E4: using guessed type int (*off_5381E4[2])(); // 5381F8: using guessed type int (*off_5381F8[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004EBD50) -------------------------------------------------------- void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( int a1) { void *v2; // eax v2 = *(void **)(a1 + 48); *(_DWORD *)a1 = &off_5381D0; *(_DWORD *)(a1 + 72) = off_5381F8; *(_DWORD *)(a1 + 8) = off_5381E4; *(_DWORD *)(a1 + 12) = &off_537FA8; if ( v2 != (void *)(a1 + 56) ) operator delete(v2); *(_DWORD *)(a1 + 12) = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 40)); *(_DWORD *)(a1 + 8) = &unk_5338F8; *(_DWORD *)a1 = &unk_533894; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 72) = &off_539484; std::ios_base::~ios_base(a1 + 72); } // 537FA8: using guessed type int (*off_537FA8)(); // 5381D0: using guessed type int (*off_5381D0)(); // 5381E4: using guessed type int (*off_5381E4[2])(); // 5381F8: using guessed type int (*off_5381F8[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004EBDC0) -------------------------------------------------------- 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_537FA8; *((_DWORD *)this + 2) = v4; if ( *((char **)this + 12) != this + 56 ) operator delete(*((void **)this + 12)); *((_DWORD *)this + 3) = &off_538A88; 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; } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EBE50) -------------------------------------------------------- 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; } // 4EBE70: variable 'v27' is possibly undefined // 4EBFDA: variable 'v28' is possibly undefined // 4EBFEE: variable 'v29' is possibly undefined //----- (004EC1E0) -------------------------------------------------------- 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); } //----- (004EC250) -------------------------------------------------------- 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)); } // 4EC274: variable 'v10' is possibly undefined //----- (004EC2F0) -------------------------------------------------------- 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_533920; *((_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_533934; 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_53820C; this[17] = off_538220; 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_537F68; 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; } // 4EC55D: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4EC369: variable 'v18' is possibly undefined // 4EC4B2: variable 'v19' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); // 53820C: using guessed type int (*off_53820C)(); // 538220: using guessed type int (*off_538220[2])(); //----- (004EC660) -------------------------------------------------------- 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_533920; *((_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_533934; *((_DWORD *)this + 1) = 0; std::ios::init(v3, 0); *(_DWORD *)this = &off_53820C; *((_DWORD *)this + 17) = off_538220; *((_DWORD *)this + 2) = &off_538A48; *((_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_537F68; *((_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)); } // 4EC75A: variable 'v9' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); // 53820C: using guessed type int (*off_53820C)(); // 538220: using guessed type int (*off_538220[2])(); // 538A48: using guessed type int (*off_538A48)(); //----- (004EC7F0) -------------------------------------------------------- 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_533920; this[45] = 0; *((_WORD *)this + 92) = 0; this[47] = 0; this[48] = 0; this[49] = 0; this[50] = 0; this[17] = &unk_533934; this[1] = 0; std::ios::init(v2, 0); *this = &off_53820C; this[17] = off_538220; this[2] = &off_538A48; 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_537F68; this[12] = 0; this[10] = a2 | 8; this[11] = this + 13; return std::ios::init(v2, (int)(this + 2)); } // 537F68: using guessed type int (*off_537F68)(); // 53820C: using guessed type int (*off_53820C)(); // 538220: using guessed type int (*off_538220[2])(); // 538A48: using guessed type int (*off_538A48)(); //----- (004EC920) -------------------------------------------------------- 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_533920; *(_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_533934; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_53820C; *(_DWORD *)(a1 + 68) = off_538220; *(_DWORD *)(a1 + 8) = &off_538A48; *(_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_537F68; *(_DWORD *)(a1 + 40) = 8; *(_DWORD *)(a1 + 44) = a1 + 52; *(_DWORD *)(a1 + 48) = 0; return std::ios::init(v1, a1 + 8); } // 537F68: using guessed type int (*off_537F68)(); // 53820C: using guessed type int (*off_53820C)(); // 538220: using guessed type int (*off_538220[2])(); // 538A48: using guessed type int (*off_538A48)(); //----- (004ECA50) -------------------------------------------------------- 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_537F68; 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; } // 4ECC74: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4ECA8F: variable 'v19' is possibly undefined // 4ECBCB: variable 'v20' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); //----- (004ECD60) -------------------------------------------------------- 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_538A48; *((_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_537F68; *((_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)); } // 4ECE19: variable 'v13' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004ECEB0) -------------------------------------------------------- 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_538A48; 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_537F68; this[10] = a3 | 8; this[11] = (int)(this + 13); return std::ios::init((int)this + *(_DWORD *)(*this - 12), v4); } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004ECFA0) -------------------------------------------------------- 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_538A48; 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_537F68; v8 = *(_DWORD *)(v7 - 12); this[10] = 8; return std::ios::init((int)this + v8, v3); } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004ED090) -------------------------------------------------------- void __fastcall std::istringstream::~istringstream(_DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[11]; *a1 = &off_53820C; a1[17] = off_538220; a1[2] = &off_537F68; if ( v2 != a1 + 13 ) operator delete(v2); a1[2] = &off_538A48; std::locale::~locale((_DWORD **)a1 + 9); *a1 = &unk_533920; a1[1] = 0; a1[17] = &off_539474; std::ios_base::~ios_base((int)(a1 + 17)); operator delete(a1); } // 537F68: using guessed type int (*off_537F68)(); // 53820C: using guessed type int (*off_53820C)(); // 538220: using guessed type int (*off_538220[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004ED100) -------------------------------------------------------- void __fastcall std::istringstream::~istringstream(int a1) { void *v2; // eax v2 = *(void **)(a1 + 44); *(_DWORD *)a1 = &off_53820C; *(_DWORD *)(a1 + 68) = off_538220; *(_DWORD *)(a1 + 8) = &off_537F68; if ( v2 != (void *)(a1 + 52) ) operator delete(v2); *(_DWORD *)(a1 + 8) = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 36)); *(_DWORD *)a1 = &unk_533920; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 68) = &off_539474; std::ios_base::~ios_base(a1 + 68); } // 537F68: using guessed type int (*off_537F68)(); // 53820C: using guessed type int (*off_53820C)(); // 538220: using guessed type int (*off_538220[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004ED160) -------------------------------------------------------- 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_537F68; if ( v4 != (char *)(this + 13) ) operator delete(v4); this[2] = (int)&off_538A48; 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; } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004ED1C0) -------------------------------------------------------- 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; } // 4ED1E0: variable 'v24' is possibly undefined // 4ED33E: variable 'v25' is possibly undefined // 4ED352: variable 'v26' is possibly undefined //----- (004ED550) -------------------------------------------------------- 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); } //----- (004ED5C0) -------------------------------------------------------- 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)); } // 4ED5E4: variable 'v9' is possibly undefined //----- (004ED660) -------------------------------------------------------- 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_533948; *((_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_53395C; 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_538234; *((_DWORD *)this + 17) = off_538248; 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_537FA8; 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; } // 4ED8FF: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4ED6E0: variable 'v19' is possibly undefined // 4ED841: variable 'v20' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); // 538234: using guessed type int (*off_538234)(); // 538248: using guessed type int (*off_538248[2])(); //----- (004EDA00) -------------------------------------------------------- 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_533948; *((_DWORD *)this + 17) = &unk_53395C; *((_DWORD *)this + 1) = 0; std::wios::init(v3, 0); *(_DWORD *)this = &off_538234; *((_DWORD *)this + 17) = off_538248; *((_DWORD *)this + 2) = &off_538A88; *((_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_537FA8; *((_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)); } // 4EDB04: variable 'v9' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); // 538234: using guessed type int (*off_538234)(); // 538248: using guessed type int (*off_538248[2])(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EDBA0) -------------------------------------------------------- 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_533948; this[17] = &unk_53395C; this[1] = 0; std::wios::init(v2, 0); *this = &off_538234; this[17] = off_538248; this[2] = &off_538A88; 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_537FA8; this[12] = 0; this[10] = a2 | 8; this[11] = this + 13; *((_WORD *)this + 26) = 0; return std::wios::init(v2, (int)(this + 2)); } // 537FA8: using guessed type int (*off_537FA8)(); // 538234: using guessed type int (*off_538234)(); // 538248: using guessed type int (*off_538248[2])(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EDCE0) -------------------------------------------------------- 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_533948; *(_DWORD *)(a1 + 68) = &unk_53395C; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_538234; *(_DWORD *)(a1 + 68) = off_538248; *(_DWORD *)(a1 + 8) = &off_538A88; *(_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_537FA8; *(_DWORD *)(a1 + 40) = 8; *(_DWORD *)(a1 + 48) = 0; *(_WORD *)(a1 + 52) = 0; return std::wios::init(v1, a1 + 8); } // 537FA8: using guessed type int (*off_537FA8)(); // 538234: using guessed type int (*off_538234)(); // 538248: using guessed type int (*off_538248[2])(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EDE20) -------------------------------------------------------- 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_537FA8; *((_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; } // 4EE070: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4EDE5F: variable 'v19' is possibly undefined // 4EDFB0: variable 'v20' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); //----- (004EE150) -------------------------------------------------------- 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_538A88; *((_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_537FA8; *((_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)); } // 4EE20C: variable 'v13' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EE2B0) -------------------------------------------------------- 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_538A88; 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_537FA8; this[10] = a3 | 8; this[11] = (int)(this + 13); *((_WORD *)this + 26) = 0; return std::wios::init((int)this + *(_DWORD *)(*this - 12), v4); } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EE3A0) -------------------------------------------------------- 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_538A88; 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_537FA8; v8 = *(_DWORD *)(v7 - 12); this[10] = 8; return std::wios::init((int)this + v8, v3); } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EE490) -------------------------------------------------------- void __fastcall std::wistringstream::~wistringstream(_DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[11]; *a1 = &off_538234; a1[17] = off_538248; a1[2] = &off_537FA8; if ( v2 != a1 + 13 ) operator delete(v2); a1[2] = &off_538A88; std::locale::~locale((_DWORD **)a1 + 9); *a1 = &unk_533948; a1[1] = 0; a1[17] = &off_539484; std::ios_base::~ios_base((int)(a1 + 17)); operator delete(a1); } // 537FA8: using guessed type int (*off_537FA8)(); // 538234: using guessed type int (*off_538234)(); // 538248: using guessed type int (*off_538248[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004EE500) -------------------------------------------------------- void __fastcall std::wistringstream::~wistringstream(int a1) { void *v2; // eax v2 = *(void **)(a1 + 44); *(_DWORD *)a1 = &off_538234; *(_DWORD *)(a1 + 68) = off_538248; *(_DWORD *)(a1 + 8) = &off_537FA8; if ( v2 != (void *)(a1 + 52) ) operator delete(v2); *(_DWORD *)(a1 + 8) = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 36)); *(_DWORD *)a1 = &unk_533948; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 68) = &off_539484; std::ios_base::~ios_base(a1 + 68); } // 537FA8: using guessed type int (*off_537FA8)(); // 538234: using guessed type int (*off_538234)(); // 538248: using guessed type int (*off_538248[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004EE560) -------------------------------------------------------- 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_537FA8; if ( v4 != (char *)(this + 13) ) operator delete(v4); this[2] = (int)&off_538A88; 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; } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004EE5C0) -------------------------------------------------------- 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; } // 4EE5E0: variable 'v27' is possibly undefined // 4EE74A: variable 'v28' is possibly undefined // 4EE75E: variable 'v29' is possibly undefined //----- (004EE950) -------------------------------------------------------- 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); } //----- (004EE9C0) -------------------------------------------------------- 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)); } // 4EE9E4: variable 'v9' is possibly undefined //----- (004EEA50) -------------------------------------------------------- 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_533970; *((_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_533984; 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_53825C; this[16] = off_538270; 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_537F68; 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; } // 4EECB0: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4EEAC3: variable 'v17' is possibly undefined // 4EEC05: variable 'v18' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); // 53825C: using guessed type int (*off_53825C)(); // 538270: using guessed type int (*off_538270[2])(); //----- (004EEDB0) -------------------------------------------------------- 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_533970; *((_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_533984; std::ios::init(v3, 0); *(_DWORD *)this = &off_53825C; *((_DWORD *)this + 16) = off_538270; *((_DWORD *)this + 1) = &off_538A48; *((_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_537F68; *((_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)); } // 4EEEA3: variable 'v9' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); // 53825C: using guessed type int (*off_53825C)(); // 538270: using guessed type int (*off_538270[2])(); // 538A48: using guessed type int (*off_538A48)(); //----- (004EEF40) -------------------------------------------------------- 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_533970; this[44] = 0; *((_WORD *)this + 90) = 0; this[46] = 0; this[47] = 0; this[48] = 0; this[49] = 0; this[16] = &unk_533984; std::ios::init(v2, 0); *this = &off_53825C; this[16] = off_538270; this[1] = &off_538A48; 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_537F68; this[11] = 0; this[9] = a2 | 0x10; this[10] = this + 12; return std::ios::init(v2, (int)(this + 1)); } // 537F68: using guessed type int (*off_537F68)(); // 53825C: using guessed type int (*off_53825C)(); // 538270: using guessed type int (*off_538270[2])(); // 538A48: using guessed type int (*off_538A48)(); //----- (004EF060) -------------------------------------------------------- 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_533970; *(_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_533984; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_53825C; *(_DWORD *)(a1 + 64) = off_538270; *(_DWORD *)(a1 + 4) = &off_538A48; *(_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_537F68; *(_DWORD *)(a1 + 36) = 16; *(_DWORD *)(a1 + 40) = a1 + 48; *(_DWORD *)(a1 + 44) = 0; return std::ios::init(v1, a1 + 4); } // 537F68: using guessed type int (*off_537F68)(); // 53825C: using guessed type int (*off_53825C)(); // 538270: using guessed type int (*off_538270[2])(); // 538A48: using guessed type int (*off_538A48)(); //----- (004EF180) -------------------------------------------------------- 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_537F68; 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; } // 4EF391: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4EF1B3: variable 'v19' is possibly undefined // 4EF2E8: variable 'v20' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); //----- (004EF480) -------------------------------------------------------- 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_538A48; *((_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_537F68; *((_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)); } // 4EF52E: variable 'v13' is possibly undefined // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004EF5C0) -------------------------------------------------------- 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_538A48; 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_537F68; this[9] = a3 | 0x10; this[10] = (int)(this + 12); return std::ios::init((int)this + *(_DWORD *)(*this - 12), v4); } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004EF6A0) -------------------------------------------------------- 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_538A48; 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_537F68; v9 = *(_DWORD *)(v8 - 12); this[9] = 16; return std::ios::init((int)this + v9, v3); } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004EF780) -------------------------------------------------------- void __fastcall std::ostringstream::~ostringstream(_DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[10]; *a1 = &off_53825C; a1[16] = off_538270; a1[1] = &off_537F68; if ( v2 != a1 + 12 ) operator delete(v2); a1[1] = &off_538A48; std::locale::~locale((_DWORD **)a1 + 8); *a1 = &unk_533970; a1[16] = &off_539474; std::ios_base::~ios_base((int)(a1 + 16)); operator delete(a1); } // 537F68: using guessed type int (*off_537F68)(); // 53825C: using guessed type int (*off_53825C)(); // 538270: using guessed type int (*off_538270[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004EF7E0) -------------------------------------------------------- void __fastcall std::ostringstream::~ostringstream(int a1) { void *v2; // eax v2 = *(void **)(a1 + 40); *(_DWORD *)a1 = &off_53825C; *(_DWORD *)(a1 + 64) = off_538270; *(_DWORD *)(a1 + 4) = &off_537F68; if ( v2 != (void *)(a1 + 48) ) operator delete(v2); *(_DWORD *)(a1 + 4) = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_533970; *(_DWORD *)(a1 + 64) = &off_539474; std::ios_base::~ios_base(a1 + 64); } // 537F68: using guessed type int (*off_537F68)(); // 53825C: using guessed type int (*off_53825C)(); // 538270: using guessed type int (*off_538270[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004EF840) -------------------------------------------------------- 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_537F68; if ( v4 != (char *)(this + 12) ) operator delete(v4); this[1] = (int)&off_538A48; std::locale::~locale((_DWORD **)this + 8); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(int *)((char *)this + result) = a2[2]; return result; } // 537F68: using guessed type int (*off_537F68)(); // 538A48: using guessed type int (*off_538A48)(); //----- (004EF8A0) -------------------------------------------------------- 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; } // 4EF8C0: variable 'v22' is possibly undefined // 4EFA12: variable 'v23' is possibly undefined // 4EFA26: variable 'v24' is possibly undefined //----- (004EFC10) -------------------------------------------------------- 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); } //----- (004EFC80) -------------------------------------------------------- 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)); } // 4EFCA4: variable 'v8' is possibly undefined //----- (004EFD10) -------------------------------------------------------- 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_533998; *((_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_5339AC; 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_538284; this[182] = v6; v21 = this + 4; v8 = a2[2]; *((_DWORD *)this + 16) = off_538298; 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_537FA8; 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; } // 4EFFA2: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4EFD8A: variable 'v17' is possibly undefined // 4EFEE4: variable 'v18' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); // 538284: using guessed type int (*off_538284)(); // 538298: using guessed type int (*off_538298[2])(); //----- (004F0090) -------------------------------------------------------- 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_533998; *((_DWORD *)this + 16) = &unk_5339AC; std::wios::init(v3, 0); *(_DWORD *)this = &off_538284; *((_DWORD *)this + 16) = off_538298; *((_DWORD *)this + 1) = &off_538A88; *((_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_537FA8; *((_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)); } // 4F018D: variable 'v9' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); // 538284: using guessed type int (*off_538284)(); // 538298: using guessed type int (*off_538298[2])(); // 538A88: using guessed type int (*off_538A88)(); //----- (004F0220) -------------------------------------------------------- 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_533998; this[16] = &unk_5339AC; std::wios::init(v2, 0); *this = &off_538284; this[16] = off_538298; this[1] = &off_538A88; 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_537FA8; this[11] = 0; this[9] = a2 | 0x10; this[10] = this + 12; *((_WORD *)this + 24) = 0; return std::wios::init(v2, (int)(this + 1)); } // 537FA8: using guessed type int (*off_537FA8)(); // 538284: using guessed type int (*off_538284)(); // 538298: using guessed type int (*off_538298[2])(); // 538A88: using guessed type int (*off_538A88)(); //----- (004F0350) -------------------------------------------------------- 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_533998; *(_DWORD *)(a1 + 64) = &unk_5339AC; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_538284; *(_DWORD *)(a1 + 64) = off_538298; *(_DWORD *)(a1 + 4) = &off_538A88; *(_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_537FA8; *(_DWORD *)(a1 + 36) = 16; *(_DWORD *)(a1 + 44) = 0; *(_WORD *)(a1 + 48) = 0; return std::wios::init(v1, a1 + 4); } // 537FA8: using guessed type int (*off_537FA8)(); // 538284: using guessed type int (*off_538284)(); // 538298: using guessed type int (*off_538298[2])(); // 538A88: using guessed type int (*off_538A88)(); //----- (004F0480) -------------------------------------------------------- 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_537FA8; *((_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; } // 4F06BD: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) // 4F04B3: variable 'v19' is possibly undefined // 4F05FD: variable 'v20' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); //----- (004F07A0) -------------------------------------------------------- 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_538A88; *((_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_537FA8; *((_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)); } // 4F0851: variable 'v13' is possibly undefined // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004F08F0) -------------------------------------------------------- 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_538A88; 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_537FA8; this[9] = a3 | 0x10; this[10] = (int)(this + 12); *((_WORD *)this + 24) = 0; return std::wios::init((int)this + *(_DWORD *)(*this - 12), v4); } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004F09D0) -------------------------------------------------------- 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_538A88; 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_537FA8; v9 = *(_DWORD *)(v8 - 12); this[9] = 16; return std::wios::init((int)this + v9, v3); } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004F0AB0) -------------------------------------------------------- void __fastcall std::wostringstream::~wostringstream(_DWORD *a1) { _DWORD *v2; // eax v2 = (_DWORD *)a1[10]; *a1 = &off_538284; a1[16] = off_538298; a1[1] = &off_537FA8; if ( v2 != a1 + 12 ) operator delete(v2); a1[1] = &off_538A88; std::locale::~locale((_DWORD **)a1 + 8); *a1 = &unk_533998; a1[16] = &off_539484; std::ios_base::~ios_base((int)(a1 + 16)); operator delete(a1); } // 537FA8: using guessed type int (*off_537FA8)(); // 538284: using guessed type int (*off_538284)(); // 538298: using guessed type int (*off_538298[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004F0B10) -------------------------------------------------------- void __fastcall std::wostringstream::~wostringstream(int a1) { void *v2; // eax v2 = *(void **)(a1 + 40); *(_DWORD *)a1 = &off_538284; *(_DWORD *)(a1 + 64) = off_538298; *(_DWORD *)(a1 + 4) = &off_537FA8; if ( v2 != (void *)(a1 + 48) ) operator delete(v2); *(_DWORD *)(a1 + 4) = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_533998; *(_DWORD *)(a1 + 64) = &off_539484; std::ios_base::~ios_base(a1 + 64); } // 537FA8: using guessed type int (*off_537FA8)(); // 538284: using guessed type int (*off_538284)(); // 538298: using guessed type int (*off_538298[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004F0B70) -------------------------------------------------------- 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_537FA8; if ( v4 != (char *)(this + 12) ) operator delete(v4); this[1] = (int)&off_538A88; std::locale::~locale((_DWORD **)this + 8); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(int *)((char *)this + result) = a2[2]; return result; } // 537FA8: using guessed type int (*off_537FA8)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004F0BD0) -------------------------------------------------------- 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; } // 4F0BF0: variable 'v24' is possibly undefined // 4F0D4E: variable 'v25' is possibly undefined // 4F0D62: variable 'v26' is possibly undefined //----- (004F0F50) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_5382A8; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 5382A8: using guessed type int (*off_5382A8)(); //----- (004F0F80) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_5382A8; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 5382A8: using guessed type int (*off_5382A8)(); //----- (004F0FC0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_5382A8; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 5382A8: using guessed type int (*off_5382A8)(); //----- (004F0FF0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_5382A8; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 5382A8: using guessed type int (*off_5382A8)(); //----- (004F1030) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5382A8; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4F1049: variable 'v2' is possibly undefined // 5382A8: using guessed type int (*off_5382A8)(); //----- (004F1060) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382A8; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F1069: variable 'v1' is possibly undefined // 5382A8: using guessed type int (*off_5382A8)(); //----- (004F1090) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382A8; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F1099: variable 'v1' is possibly undefined // 5382A8: using guessed type int (*off_5382A8)(); //----- (004F10C0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_5382C4; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 5382C4: using guessed type int (*off_5382C4)(); //----- (004F10F0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_5382C4; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 5382C4: using guessed type int (*off_5382C4)(); //----- (004F1130) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_5382C4; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 5382C4: using guessed type int (*off_5382C4)(); //----- (004F1160) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_5382C4; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 5382C4: using guessed type int (*off_5382C4)(); //----- (004F11A0) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5382C4; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4F11B9: variable 'v2' is possibly undefined // 5382C4: using guessed type int (*off_5382C4)(); //----- (004F11D0) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382C4; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F11D9: variable 'v1' is possibly undefined // 5382C4: using guessed type int (*off_5382C4)(); //----- (004F1200) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382C4; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F1209: variable 'v1' is possibly undefined // 5382C4: using guessed type int (*off_5382C4)(); //----- (004F1230) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_5382E0; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 5382E0: using guessed type int (*off_5382E0)(); //----- (004F1270) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_5382E0; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 5382E0: using guessed type int (*off_5382E0)(); //----- (004F12B0) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_5382E0; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 5382E0: using guessed type int (*off_5382E0)(); //----- (004F12F0) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_5382E0; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 5382E0: using guessed type int (*off_5382E0)(); //----- (004F1330) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5382E0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4F1349: variable 'v2' is possibly undefined // 5382E0: using guessed type int (*off_5382E0)(); //----- (004F1360) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382E0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F1369: variable 'v1' is possibly undefined // 5382E0: using guessed type int (*off_5382E0)(); //----- (004F1390) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382E0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F1399: variable 'v1' is possibly undefined // 5382E0: using guessed type int (*off_5382E0)(); //----- (004F13C0) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_5382FC; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 5382FC: using guessed type int (*off_5382FC)(); //----- (004F1400) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_5382FC; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 5382FC: using guessed type int (*off_5382FC)(); //----- (004F1440) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_5382FC; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 5382FC: using guessed type int (*off_5382FC)(); //----- (004F1480) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_5382FC; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 5382FC: using guessed type int (*off_5382FC)(); //----- (004F14C0) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5382FC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4F14D9: variable 'v2' is possibly undefined // 5382FC: using guessed type int (*off_5382FC)(); //----- (004F14F0) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382FC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F14F9: variable 'v1' is possibly undefined // 5382FC: using guessed type int (*off_5382FC)(); //----- (004F1520) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5382FC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F1529: variable 'v1' is possibly undefined // 5382FC: using guessed type int (*off_5382FC)(); //----- (004F1550) -------------------------------------------------------- _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_538BD4; 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_52F144; 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; } // 4F15F2: variable 'v9' is possibly undefined // 516420: using guessed type char *std::__num_base::_S_atoms_in[3]; // 516424: using guessed type char *std::__num_base::_S_atoms_out[2]; // 538BD4: using guessed type int (*off_538BD4)(); //----- (004F1650) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_538318; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 538318: using guessed type int (*off_538318)(); //----- (004F16A0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_538318; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 538318: using guessed type int (*off_538318)(); //----- (004F16F0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_538318; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 538318: using guessed type int (*off_538318)(); //----- (004F1740) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_538318; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 538318: using guessed type int (*off_538318)(); //----- (004F1790) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_538318; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 538318: using guessed type int (*off_538318)(); //----- (004F17E0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_538318; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 538318: using guessed type int (*off_538318)(); //----- (004F1830) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::numpunct::~numpunct(v2); operator delete(a1); } // 4F1837: variable 'v2' is possibly undefined //----- (004F1860) -------------------------------------------------------- void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_538318; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4F1867: variable 'v1' is possibly undefined // 538318: using guessed type int (*off_538318)(); //----- (004F1890) -------------------------------------------------------- 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_538BE4; 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_52F144; 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_52F150; v2[6] = 4; v2[7] = &off_52F15A; v2[8] = 5; return result; } // 4F1920: variable 'v8' is possibly undefined // 516420: using guessed type char *std::__num_base::_S_atoms_in[3]; // 516424: using guessed type char *std::__num_base::_S_atoms_out[2]; // 52F150: using guessed type void *off_52F150; // 52F15A: using guessed type void *off_52F15A; // 538BE4: using guessed type int (*off_538BE4)(); //----- (004F1980) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_53833C; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 53833C: using guessed type int (*off_53833C)(); //----- (004F19D0) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_53833C; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 53833C: using guessed type int (*off_53833C)(); //----- (004F1A20) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_53833C; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 53833C: using guessed type int (*off_53833C)(); //----- (004F1A70) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_53833C; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 53833C: using guessed type int (*off_53833C)(); //----- (004F1AC0) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_53833C; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 53833C: using guessed type int (*off_53833C)(); //----- (004F1B10) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_53833C; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 53833C: using guessed type int (*off_53833C)(); //----- (004F1B60) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::numpunct::~numpunct(v2); operator delete(a1); } // 4F1B67: variable 'v2' is possibly undefined //----- (004F1B90) -------------------------------------------------------- void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_53833C; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4F1B97: variable 'v1' is possibly undefined // 53833C: using guessed type int (*off_53833C)(); //----- (004F1BC0) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538360; result = a2 != 0; this[1] = result; return result; } // 538360: using guessed type int (*off_538360)(); //----- (004F1BE0) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538360; result = a2 != 0; this[1] = result; return result; } // 538360: using guessed type int (*off_538360)(); //----- (004F1C00) -------------------------------------------------------- void __fastcall std::time_get>::~time_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538360; std::locale::facet::~facet(v2); operator delete(a1); } // 4F1C0C: variable 'v2' is possibly undefined // 538360: using guessed type int (*off_538360)(); //----- (004F1C20) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538360; std::locale::facet::~facet(a1); } // 4F1C20: variable 'v1' is possibly undefined // 538360: using guessed type int (*off_538360)(); //----- (004F1C30) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538360; std::locale::facet::~facet(a1); } // 4F1C30: variable 'v1' is possibly undefined // 538360: using guessed type int (*off_538360)(); //----- (004F1C40) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_53838C; result = a2 != 0; this[1] = result; return result; } // 53838C: using guessed type int (*off_53838C)(); //----- (004F1C60) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_53838C; result = a2 != 0; this[1] = result; return result; } // 53838C: using guessed type int (*off_53838C)(); //----- (004F1C80) -------------------------------------------------------- void __fastcall std::time_get>::~time_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_53838C; std::locale::facet::~facet(v2); operator delete(a1); } // 4F1C8C: variable 'v2' is possibly undefined // 53838C: using guessed type int (*off_53838C)(); //----- (004F1CA0) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_53838C; std::locale::facet::~facet(a1); } // 4F1CA0: variable 'v1' is possibly undefined // 53838C: using guessed type int (*off_53838C)(); //----- (004F1CB0) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_53838C; std::locale::facet::~facet(a1); } // 4F1CB0: variable 'v1' is possibly undefined // 53838C: using guessed type int (*off_53838C)(); //----- (004F1CC0) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5383B8; result = a2 != 0; this[1] = result; return result; } // 5383B8: using guessed type int (*off_5383B8)(); //----- (004F1CE0) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5383B8; result = a2 != 0; this[1] = result; return result; } // 5383B8: using guessed type int (*off_5383B8)(); //----- (004F1D00) -------------------------------------------------------- void __fastcall std::money_get>::~money_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5383B8; std::locale::facet::~facet(v2); operator delete(a1); } // 4F1D0C: variable 'v2' is possibly undefined // 5383B8: using guessed type int (*off_5383B8)(); //----- (004F1D20) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5383B8; std::locale::facet::~facet(a1); } // 4F1D20: variable 'v1' is possibly undefined // 5383B8: using guessed type int (*off_5383B8)(); //----- (004F1D30) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5383B8; std::locale::facet::~facet(a1); } // 4F1D30: variable 'v1' is possibly undefined // 5383B8: using guessed type int (*off_5383B8)(); //----- (004F1D40) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5383D0; result = a2 != 0; this[1] = result; return result; } // 5383D0: using guessed type int (*off_5383D0)(); //----- (004F1D60) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5383D0; result = a2 != 0; this[1] = result; return result; } // 5383D0: using guessed type int (*off_5383D0)(); //----- (004F1D80) -------------------------------------------------------- void __fastcall std::money_get>::~money_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5383D0; std::locale::facet::~facet(v2); operator delete(a1); } // 4F1D8C: variable 'v2' is possibly undefined // 5383D0: using guessed type int (*off_5383D0)(); //----- (004F1DA0) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5383D0; std::locale::facet::~facet(a1); } // 4F1DA0: variable 'v1' is possibly undefined // 5383D0: using guessed type int (*off_5383D0)(); //----- (004F1DB0) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5383D0; std::locale::facet::~facet(a1); } // 4F1DB0: variable 'v1' is possibly undefined // 5383D0: using guessed type int (*off_5383D0)(); //----- (004F1DC0) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5383E8; result = a2 != 0; this[1] = result; return result; } // 5383E8: using guessed type int (*off_5383E8)(); //----- (004F1DE0) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5383E8; result = a2 != 0; this[1] = result; return result; } // 5383E8: using guessed type int (*off_5383E8)(); //----- (004F1E00) -------------------------------------------------------- void __fastcall std::money_put>::~money_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5383E8; std::locale::facet::~facet(v2); operator delete(a1); } // 4F1E0C: variable 'v2' is possibly undefined // 5383E8: using guessed type int (*off_5383E8)(); //----- (004F1E20) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5383E8; std::locale::facet::~facet(a1); } // 4F1E20: variable 'v1' is possibly undefined // 5383E8: using guessed type int (*off_5383E8)(); //----- (004F1E30) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5383E8; std::locale::facet::~facet(a1); } // 4F1E30: variable 'v1' is possibly undefined // 5383E8: using guessed type int (*off_5383E8)(); //----- (004F1E40) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538400; result = a2 != 0; this[1] = result; return result; } // 538400: using guessed type int (*off_538400)(); //----- (004F1E60) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_538400; result = a2 != 0; this[1] = result; return result; } // 538400: using guessed type int (*off_538400)(); //----- (004F1E80) -------------------------------------------------------- void __fastcall std::money_put>::~money_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_538400; std::locale::facet::~facet(v2); operator delete(a1); } // 4F1E8C: variable 'v2' is possibly undefined // 538400: using guessed type int (*off_538400)(); //----- (004F1EA0) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538400; std::locale::facet::~facet(a1); } // 4F1EA0: variable 'v1' is possibly undefined // 538400: using guessed type int (*off_538400)(); //----- (004F1EB0) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_538400; std::locale::facet::~facet(a1); } // 4F1EB0: variable 'v1' is possibly undefined // 538400: using guessed type int (*off_538400)(); //----- (004F1EC0) -------------------------------------------------------- void **__cdecl std::to_string(void **this, unsigned int a2) { __gnu_cxx::__to_xstring( this, (int (__cdecl *)(unsigned __int8 *, int, int, char *))vsnprintf, 16, 5356005, a2); return this; } //----- (004F1F00) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_538F30; std::locale::facet::~facet(v2); operator delete(a1); } // 4F1F0C: variable 'v2' is possibly undefined //----- (004F1F20) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_538F30; std::locale::facet::~facet(a1); } // 4F1F20: variable 'v1' is possibly undefined //----- (004F1F30) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_538F5C; std::locale::facet::~facet(v2); operator delete(a1); } // 4F1F3C: variable 'v2' is possibly undefined //----- (004F1F50) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_538F5C; std::locale::facet::~facet(a1); } // 4F1F50: variable 'v1' is possibly undefined //----- (004F1F60) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_538F88; std::locale::facet::~facet(v2); operator delete(a1); } // 4F1F6C: variable 'v2' is possibly undefined //----- (004F1F80) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_538F88; std::locale::facet::~facet(a1); } // 4F1F80: variable 'v1' is possibly undefined //----- (004F1F90) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &unk_538FB4; std::locale::facet::~facet(v2); operator delete(a1); } // 4F1F9C: variable 'v2' is possibly undefined //----- (004F1FB0) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_538FB4; std::locale::facet::~facet(a1); } // 4F1FB0: variable 'v1' is possibly undefined //----- (004F1FC0) -------------------------------------------------------- int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_5391DC; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 5391DC: using guessed type int (*off_5391DC)(); //----- (004F1FF0) -------------------------------------------------------- int __thiscall std::codecvt::codecvt(_DWORD *this, int a2) { int result; // eax *this = &off_5391DC; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 5391DC: using guessed type int (*off_5391DC)(); //----- (004F2030) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::codecvt::~codecvt(v2); operator delete(a1); } // 4F2037: variable 'v2' is possibly undefined //----- (004F2060) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx v2 = v1; *v1 = &off_5391DC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); *v2 = &unk_538FE0; std::locale::facet::~facet(a1); } // 4F2065: variable 'v1' is possibly undefined // 5391DC: using guessed type int (*off_5391DC)(); //----- (004F20A0) -------------------------------------------------------- int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_539208; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 539208: using guessed type int (*off_539208)(); //----- (004F20D0) -------------------------------------------------------- int __thiscall std::codecvt::codecvt(_DWORD *this, int a2) { int result; // eax *this = &off_539208; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 539208: using guessed type int (*off_539208)(); //----- (004F2110) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::codecvt::~codecvt(v2); operator delete(a1); } // 4F2117: variable 'v2' is possibly undefined //----- (004F2140) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx _DWORD *v2; // ebx v2 = v1; *v1 = &off_539208; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); *v2 = &unk_53900C; std::locale::facet::~facet(a1); } // 4F2145: variable 'v1' is possibly undefined // 539208: using guessed type int (*off_539208)(); //----- (004F2180) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_539234; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 539234: using guessed type int (*off_539234)(); //----- (004F21B0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_539234; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 539234: using guessed type int (*off_539234)(); //----- (004F21F0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_539234; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 539234: using guessed type int (*off_539234)(); //----- (004F2220) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_539234; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 539234: using guessed type int (*off_539234)(); //----- (004F2260) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539234; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4F2279: variable 'v2' is possibly undefined // 539234: using guessed type int (*off_539234)(); //----- (004F2290) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539234; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F2299: variable 'v1' is possibly undefined // 539234: using guessed type int (*off_539234)(); //----- (004F22C0) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539234; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F22C9: variable 'v1' is possibly undefined // 539234: using guessed type int (*off_539234)(); //----- (004F22F0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_539250; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 539250: using guessed type int (*off_539250)(); //----- (004F2320) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_539250; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 539250: using guessed type int (*off_539250)(); //----- (004F2360) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_539250; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 539250: using guessed type int (*off_539250)(); //----- (004F2390) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, int a2) { int result; // eax *this = &off_539250; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 539250: using guessed type int (*off_539250)(); //----- (004F23D0) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539250; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4F23E9: variable 'v2' is possibly undefined // 539250: using guessed type int (*off_539250)(); //----- (004F2400) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539250; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F2409: variable 'v1' is possibly undefined // 539250: using guessed type int (*off_539250)(); //----- (004F2430) -------------------------------------------------------- void __cdecl std::collate::~collate(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539250; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F2439: variable 'v1' is possibly undefined // 539250: using guessed type int (*off_539250)(); //----- (004F2460) -------------------------------------------------------- BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_53926C; result = a2 != 0; this[1] = result; return result; } // 53926C: using guessed type int (*off_53926C)(); //----- (004F2480) -------------------------------------------------------- BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_53926C; result = a2 != 0; this[1] = result; return result; } // 53926C: using guessed type int (*off_53926C)(); //----- (004F24A0) -------------------------------------------------------- void __fastcall std::num_get>::~num_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_53926C; std::locale::facet::~facet(v2); operator delete(a1); } // 4F24AC: variable 'v2' is possibly undefined // 53926C: using guessed type int (*off_53926C)(); //----- (004F24C0) -------------------------------------------------------- void __cdecl std::num_get>::~num_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_53926C; std::locale::facet::~facet(a1); } // 4F24C0: variable 'v1' is possibly undefined // 53926C: using guessed type int (*off_53926C)(); //----- (004F24D0) -------------------------------------------------------- void __cdecl std::num_get>::~num_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_53926C; std::locale::facet::~facet(a1); } // 4F24D0: variable 'v1' is possibly undefined // 53926C: using guessed type int (*off_53926C)(); //----- (004F24E0) -------------------------------------------------------- BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5392A8; result = a2 != 0; this[1] = result; return result; } // 5392A8: using guessed type int (*off_5392A8)(); //----- (004F2500) -------------------------------------------------------- BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5392A8; result = a2 != 0; this[1] = result; return result; } // 5392A8: using guessed type int (*off_5392A8)(); //----- (004F2520) -------------------------------------------------------- void __fastcall std::num_get>::~num_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5392A8; std::locale::facet::~facet(v2); operator delete(a1); } // 4F252C: variable 'v2' is possibly undefined // 5392A8: using guessed type int (*off_5392A8)(); //----- (004F2540) -------------------------------------------------------- void __cdecl std::num_get>::~num_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5392A8; std::locale::facet::~facet(a1); } // 4F2540: variable 'v1' is possibly undefined // 5392A8: using guessed type int (*off_5392A8)(); //----- (004F2550) -------------------------------------------------------- void __cdecl std::num_get>::~num_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5392A8; std::locale::facet::~facet(a1); } // 4F2550: variable 'v1' is possibly undefined // 5392A8: using guessed type int (*off_5392A8)(); //----- (004F2560) -------------------------------------------------------- BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5392E4; result = a2 != 0; this[1] = result; return result; } // 5392E4: using guessed type int (*off_5392E4)(); //----- (004F2580) -------------------------------------------------------- BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5392E4; result = a2 != 0; this[1] = result; return result; } // 5392E4: using guessed type int (*off_5392E4)(); //----- (004F25A0) -------------------------------------------------------- void __fastcall std::num_put>::~num_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5392E4; std::locale::facet::~facet(v2); operator delete(a1); } // 4F25AC: variable 'v2' is possibly undefined // 5392E4: using guessed type int (*off_5392E4)(); //----- (004F25C0) -------------------------------------------------------- void __cdecl std::num_put>::~num_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5392E4; std::locale::facet::~facet(a1); } // 4F25C0: variable 'v1' is possibly undefined // 5392E4: using guessed type int (*off_5392E4)(); //----- (004F25D0) -------------------------------------------------------- void __cdecl std::num_put>::~num_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5392E4; std::locale::facet::~facet(a1); } // 4F25D0: variable 'v1' is possibly undefined // 5392E4: using guessed type int (*off_5392E4)(); //----- (004F25E0) -------------------------------------------------------- BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_539314; result = a2 != 0; this[1] = result; return result; } // 539314: using guessed type int (*off_539314)(); //----- (004F2600) -------------------------------------------------------- BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_539314; result = a2 != 0; this[1] = result; return result; } // 539314: using guessed type int (*off_539314)(); //----- (004F2620) -------------------------------------------------------- void __fastcall std::num_put>::~num_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539314; std::locale::facet::~facet(v2); operator delete(a1); } // 4F262C: variable 'v2' is possibly undefined // 539314: using guessed type int (*off_539314)(); //----- (004F2640) -------------------------------------------------------- void __cdecl std::num_put>::~num_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539314; std::locale::facet::~facet(a1); } // 4F2640: variable 'v1' is possibly undefined // 539314: using guessed type int (*off_539314)(); //----- (004F2650) -------------------------------------------------------- void __cdecl std::num_put>::~num_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539314; std::locale::facet::~facet(a1); } // 4F2650: variable 'v1' is possibly undefined // 539314: using guessed type int (*off_539314)(); //----- (004F2660) -------------------------------------------------------- int __thiscall std::_Rb_tree,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; } //----- (004F26E0) -------------------------------------------------------- int __thiscall std::_Rb_tree,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::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::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::less,std::allocator>::_M_get_insert_unique_pos( this, a3); result = (int)a2; if ( !*(_DWORD *)(v5 + 12) ) return 0; return result; } //----- (004F27DC) -------------------------------------------------------- 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); } } //----- (004F2820) -------------------------------------------------------- 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; } //----- (004F28A0) -------------------------------------------------------- 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; } //----- (004F299C) -------------------------------------------------------- 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); } } //----- (004F29E8) -------------------------------------------------------- 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); } } //----- (004F2A34) -------------------------------------------------------- void **__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( _DWORD *this, int a2) { void **v3; // ebx void *v4; // edx _DWORD *v5; // edi _DWORD *v6; // edx char v7; // al _DWORD *v8; // ecx int v9; // eax _DWORD *v10; // edi char v11; // al char v13; // al void (__cdecl *v14)(void *); // [esp+4h] [ebp-34h] _DWORD *v15; // [esp+14h] [ebp-24h] _DWORD *v16; // [esp+14h] [ebp-24h] _DWORD *v17; // [esp+14h] [ebp-24h] _DWORD *v18; // [esp+18h] [ebp-20h] void **v19; // [esp+1Ch] [ebp-1Ch] v3 = (void **)operator new((struct type_info *)0x30, v14); v19 = v3 + 4; std::string::basic_string(v3 + 4, a2); v4 = *(void **)(a2 + 28); v5 = (_DWORD *)this[2]; v3[10] = *(void **)(a2 + 24); v3[11] = v4; v6 = this + 1; v18 = this + 1; v7 = 1; while ( v5 ) { v7 = std::operator<((int)v19, (int)(v5 + 4)); if ( v7 ) v8 = (_DWORD *)v5[2]; else v8 = (_DWORD *)v5[3]; v6 = v5; v5 = v8; } if ( v7 ) { if ( (_DWORD *)this[3] == v6 ) goto LABEL_14; v15 = v6; v9 = std::_Rb_tree_decrement(v6); v6 = v15; v10 = (_DWORD *)v9; } else { v10 = v6; } v16 = v6; v11 = std::operator<((int)(v10 + 4), (int)v19); v6 = v16; if ( !v11 ) { std::string::_M_dispose(v19); operator delete(v3); return (void **)v10; } LABEL_14: v13 = 1; if ( v18 != v6 ) { v17 = v6; v13 = std::operator<((int)v19, (int)(v6 + 4)); v6 = v17; } std::_Rb_tree_insert_and_rebalance(v13, v3, v6, v18); ++this[5]; return v3; } // 4F2A49: variable 'v14' is possibly undefined //----- (004F2B64) -------------------------------------------------------- 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); } } //----- (004F2BA8) -------------------------------------------------------- int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::equal_range( _DWORD *this, int a2) { _DWORD *v2; // ebx int i; // esi int v4; // edi char v5; // al int v6; // ecx int v8; // [esp+1Ch] [ebp-1Ch] v2 = this + 1; for ( i = this[2]; ; i = v4 ) { if ( !i ) return (int)v2; if ( (unsigned __int8)std::operator<(i + 16, a2) ) { v4 = *(_DWORD *)(i + 12); i = (int)v2; goto LABEL_5; } v5 = std::operator<(a2, i + 16); v4 = *(_DWORD *)(i + 8); if ( !v5 ) break; LABEL_5: v2 = (_DWORD *)i; } v6 = *(_DWORD *)(i + 12); while ( v6 ) { v8 = v6; if ( (unsigned __int8)std::operator<(a2, v6 + 16) ) v6 = *(_DWORD *)(v8 + 8); else v6 = *(_DWORD *)(v8 + 12); } return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound( v4, i, a2); } //----- (004F2C40) -------------------------------------------------------- _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; } //----- (004F2C9C) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( _DWORD *this, char **a2) { void **v2; // eax int v3; // edi void **v4; // ebx int insert_unique_pos; // eax _DWORD *v6; // edx int v7; // esi void (__cdecl *v9)(void *); // [esp+4h] [ebp-34h] v2 = (void **)operator new((struct type_info *)0x98, v9); v3 = (int)(v2 + 4); v4 = v2; std::string::basic_string(v2 + 4, *a2); WXML::DOMLib::Token::Token(v4 + 10, (int)(a2 + 1)); insert_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this, v3); v7 = insert_unique_pos; if ( v6 ) return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( this, insert_unique_pos, v6, v4); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node(v4); return (_DWORD *)v7; } // 4F2CB2: variable 'v9' is possibly undefined // 4F2CE8: variable 'v6' is possibly undefined //----- (004F2D40) -------------------------------------------------------- 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; } //----- (004F2DC0) -------------------------------------------------------- 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; } //----- (004F2EBC) -------------------------------------------------------- _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; } //----- (004F2F1C) -------------------------------------------------------- int __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( int a1) { int result; // eax int v2; // esi int v3; // [esp+20h] [ebp+8h] for ( result = a1; result; result = v2 ) { v3 = result; std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(result + 12)); v2 = *(_DWORD *)(v3 + 8); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node((void **)v3); } return result; } //----- (004F2F58) -------------------------------------------------------- _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; } //----- (004F2FB4) -------------------------------------------------------- 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; } //----- (004F3034) -------------------------------------------------------- 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; } //----- (004F3130) -------------------------------------------------------- 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::pair::~pair(a1 + 4); v3 = a1; a1 = v2; operator delete(v3); } } //----- (004F3174) -------------------------------------------------------- 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; } //----- (004F31F4) -------------------------------------------------------- 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; } //----- (004F32F0) -------------------------------------------------------- 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); } } //----- (004F333C) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,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; } //----- (004F3398) -------------------------------------------------------- int __thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,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; } //----- (004F3418) -------------------------------------------------------- int __thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,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::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,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::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,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::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_unique_pos( this, a3); result = (int)a2; if ( !*(_DWORD *)(v5 + 12) ) return 0; return result; } //----- (004F3514) -------------------------------------------------------- void __stdcall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase( void *a1) { void *v2; // edi void *v3; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,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); } } //----- (004F3560) -------------------------------------------------------- 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; } //----- (004F35E0) -------------------------------------------------------- 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; } //----- (004F36DC) -------------------------------------------------------- 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::vector::~vector(a1 + 10); std::string::_M_dispose(a1 + 4); v3 = a1; a1 = v2; operator delete(v3); } } //----- (004F3728) -------------------------------------------------------- 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; } //----- (004F37A8) -------------------------------------------------------- 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; } //----- (004F38A4) -------------------------------------------------------- void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( void *a1) { void *v2; // esi void *v3; // [esp+0h] [ebp-38h] while ( a1 ) { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*((void **)a1 + 3)); v2 = (void *)*((_DWORD *)a1 + 2); std::_Destroy_aux::__destroy(*((void ***)a1 + 10), *((char ***)a1 + 11)); if ( *((_DWORD *)a1 + 10) ) operator delete(*((void **)a1 + 10)); std::string::_M_dispose((void **)a1 + 4); v3 = a1; a1 = v2; operator delete(v3); } } //----- (004F390C) -------------------------------------------------------- _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; } //----- (004F3968) -------------------------------------------------------- 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; } //----- (004F39E8) -------------------------------------------------------- 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; } //----- (004F3AE4) -------------------------------------------------------- _DWORD *__stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( int *a1, int a2, int a3) { _DWORD *v3; // ebx int v4; // eax int *i; // edi _DWORD *v6; // esi int v7; // eax _DWORD *v9; // [esp+1Ch] [ebp-1Ch] v3 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(a1); v3[1] = a2; v4 = a1[3]; if ( v4 ) v3[3] = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( v4, v3, a3); v9 = v3; for ( i = (int *)a1[2]; i; i = (int *)i[2] ) { v6 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(i); v9[2] = v6; v6[1] = v9; v7 = i[3]; if ( v7 ) v6[3] = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( v7, v6, a3); v9 = v6; } return v3; } //----- (004F3BA0) -------------------------------------------------------- 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); } } // 4F3BC6: variable 'v3' is possibly undefined //----- (004F3BEC) -------------------------------------------------------- int *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_Rb_tree( _DWORD *this, int a2) { int v3; // edx int *result; // eax int *v5; // edx int *v6; // ecx int *v7; // edx int *v8; // ecx int v9; // edx int v10[3]; // [esp+1Ch] [ebp-Ch] BYREF std::_Rb_tree_header::_Rb_tree_header(this + 1); result = *(int **)(a2 + 8); if ( result ) { v10[0] = (int)this; result = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( result, v3, (int)v10); v5 = result; do { v6 = v5; v5 = (int *)v5[2]; } while ( v5 ); this[3] = v6; v7 = result; do { v8 = v7; v7 = (int *)v7[3]; } while ( v7 ); v9 = *(_DWORD *)(a2 + 20); this[4] = v8; this[2] = result; this[5] = v9; } return result; } // 4F3C1D: variable 'v3' is possibly undefined // 4F3BEC: using guessed type int var_C[3]; //----- (004F3C54) -------------------------------------------------------- _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; } //----- (004F3CB0) -------------------------------------------------------- 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; } //----- (004F3D30) -------------------------------------------------------- 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; } //----- (004F3E2C) -------------------------------------------------------- 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); } } //----- (004F3E70) -------------------------------------------------------- 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; } //----- (004F3EF0) -------------------------------------------------------- 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; } //----- (004F3FEC) -------------------------------------------------------- _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; } //----- (004F404C) -------------------------------------------------------- int __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( int a1, int a2, int a3) { int v3; // ebx int v4; // eax int i; // edi int v6; // esi int v7; // eax int v9; // [esp+1Ch] [ebp-1Ch] v3 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); *(_DWORD *)(v3 + 4) = a2; v4 = *(_DWORD *)(a1 + 12); if ( v4 ) *(_DWORD *)(v3 + 12) = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( v4, v3, a3); v9 = v3; for ( i = *(_DWORD *)(a1 + 8); i; i = *(_DWORD *)(i + 8) ) { v6 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); *(_DWORD *)(v9 + 8) = v6; *(_DWORD *)(v6 + 4) = v9; v7 = *(_DWORD *)(i + 12); if ( v7 ) *(_DWORD *)(v6 + 12) = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( v7, v6, a3); v9 = v6; } return v3; } // 40306C: using guessed type int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); //----- (004F4108) -------------------------------------------------------- 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); } } //----- (004F414C) -------------------------------------------------------- void **__thiscall std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_M_emplace_unique,std::string>>( _DWORD *this, _DWORD *a2) { _DWORD *v3; // eax _DWORD *v4; // edx void **v5; // ebx char *v6; // eax void *v7; // ecx void *v8; // eax _DWORD *v9; // esi _DWORD *v10; // edx bool v11; // al _DWORD *v12; // ecx int v13; // eax _DWORD *v14; // esi bool v15; // al bool v17; // al void (__cdecl *v18)(void *); // [esp+4h] [ebp-34h] _DWORD *v19; // [esp+10h] [ebp-28h] _DWORD *v20; // [esp+10h] [ebp-28h] _DWORD *v21; // [esp+14h] [ebp-24h] _DWORD *v22; // [esp+18h] [ebp-20h] int v23; // [esp+1Ch] [ebp-1Ch] v3 = operator new((struct type_info *)0x40, v18); v4 = (_DWORD *)a2[2]; v5 = (void **)v3; v23 = (int)(v3 + 4); v6 = (char *)(v3 + 5); if ( v4 ) { v7 = (void *)a2[1]; v5[6] = v4; v5[5] = v7; v5[7] = (void *)a2[3]; v5[8] = (void *)a2[4]; v4[1] = v6; v8 = (void *)a2[5]; a2[2] = 0; v5[9] = v8; a2[3] = a2 + 1; a2[4] = a2 + 1; a2[5] = 0; } else { v5[5] = 0; v5[6] = 0; v5[7] = v6; v5[8] = v6; v5[9] = 0; } std::string::basic_string(v5 + 10, a2 + 6); v9 = (_DWORD *)this[2]; v22 = this + 1; v10 = this + 1; v11 = 1; while ( v9 ) { v11 = std::operator<(v23, (int)(v9 + 4)); if ( v11 ) v12 = (_DWORD *)v9[2]; else v12 = (_DWORD *)v9[3]; v10 = v9; v9 = v12; } if ( v11 ) { if ( (_DWORD *)this[3] == v10 ) goto LABEL_16; v19 = v10; v13 = std::_Rb_tree_decrement(v10); v10 = v19; v14 = (_DWORD *)v13; } else { v14 = v10; } v20 = v10; v15 = std::operator<((int)(v14 + 4), v23); v10 = v20; if ( !v15 ) { std::string::_M_dispose(v5 + 10); std::_Rb_tree,std::less,std::allocator>::~_Rb_tree(v23); operator delete(v5); return (void **)v14; } LABEL_16: v17 = 1; if ( v22 != v10 ) { v21 = v10; v17 = std::operator<(v23, (int)(v10 + 4)); v10 = v21; } std::_Rb_tree_insert_and_rebalance(v17, v5, v10, v22); ++this[5]; return v5; } // 4F4161: variable 'v18' is possibly undefined //----- (004F42B8) -------------------------------------------------------- void __stdcall std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_M_erase( void **a1) { void **v2; // esi void **v3; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_M_erase(a1[3]); v2 = (void **)a1[2]; std::string::_M_dispose(a1 + 10); std::_Rb_tree,std::less,std::allocator>::~_Rb_tree((int)(a1 + 4)); v3 = a1; a1 = v2; operator delete(v3); } } //----- (004F4304) -------------------------------------------------------- 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; } //----- (004F4364) -------------------------------------------------------- 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; } //----- (004F4404) -------------------------------------------------------- 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::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(a1[7]); v3 = a1; a1 = v2; operator delete(v3); } } //----- (004F444C) -------------------------------------------------------- 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; } //----- (004F44AC) -------------------------------------------------------- int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( _DWORD *this, _DWORD *a2, unsigned int *a3) { unsigned 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; } //----- (004F454C) -------------------------------------------------------- int __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( int a1, int a2, int a3) { int v3; // ebx int v4; // eax int i; // edi int v6; // esi int v7; // eax int v9; // [esp+1Ch] [ebp-1Ch] v3 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); *(_DWORD *)(v3 + 4) = a2; v4 = *(_DWORD *)(a1 + 12); if ( v4 ) *(_DWORD *)(v3 + 12) = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( v4, v3, a3); v9 = v3; for ( i = *(_DWORD *)(a1 + 8); i; i = *(_DWORD *)(i + 8) ) { v6 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); *(_DWORD *)(v9 + 8) = v6; *(_DWORD *)(v6 + 4) = v9; v7 = *(_DWORD *)(i + 12); if ( v7 ) *(_DWORD *)(v6 + 12) = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( v7, v6, a3); v9 = v6; } return v3; } // 403000: using guessed type int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); //----- (004F4608) -------------------------------------------------------- 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 + 5); v3 = a1; a1 = v2; operator delete(v3); } } //----- (004F464C) -------------------------------------------------------- int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( _DWORD *this, _DWORD *a2) { _DWORD *v3; // ebx _DWORD *v4; // eax char v5; // cl _DWORD *v6; // edx int result; // eax bool v8; // cl _DWORD *v9; // edi void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] char v11; // [esp+1Bh] [ebp-1Dh] _DWORD *v12; // [esp+1Ch] [ebp-1Ch] _DWORD *v13; // [esp+1Ch] [ebp-1Ch] v3 = this + 1; v4 = (_DWORD *)this[2]; v12 = this + 1; v5 = 1; while ( v4 ) { if ( *a2 >= v4[4] ) { v6 = (_DWORD *)v4[3]; v5 = 0; } else { v6 = (_DWORD *)v4[2]; v5 = 1; } v3 = v4; v4 = v6; } if ( !v5 ) { result = (int)v3; LABEL_11: if ( *(_DWORD *)(result + 16) >= *a2 ) return result; goto LABEL_12; } if ( (_DWORD *)this[3] != v3 ) { result = std::_Rb_tree_decrement(v3); goto LABEL_11; } LABEL_12: v8 = 1; if ( v12 != v3 ) v8 = *a2 < v3[4]; v11 = v8; v9 = v12; v13 = operator new((struct type_info *)0x14, v10); v13[4] = *a2; std::_Rb_tree_insert_and_rebalance(v11, v13, v3, v9); ++this[5]; return (int)v13; } // 4F46BB: variable 'v10' is possibly undefined //----- (004F46F8) -------------------------------------------------------- _DWORD *__stdcall std::_Rb_tree,std::less,std::allocator>::_M_copy,std::less,std::allocator>::_Alloc_node>( int *a1, int a2, int a3) { _DWORD *v3; // ebx int v4; // eax int v5; // eax int v6; // eax int *i; // edi _DWORD *v8; // esi int v9; // eax int v10; // eax void (__cdecl *v12)(void *); // [esp+4h] [ebp-34h] void (__cdecl *v13)(void *); // [esp+4h] [ebp-34h] _DWORD *v14; // [esp+1Ch] [ebp-1Ch] v3 = operator new((struct type_info *)0x14, v12); v4 = a1[4]; v3[2] = 0; v3[4] = v4; v5 = *a1; v3[3] = 0; *v3 = v5; v3[1] = a2; v6 = a1[3]; if ( v6 ) v3[3] = std::_Rb_tree,std::less,std::allocator>::_M_copy,std::less,std::allocator>::_Alloc_node>( v6, v3, a3); v14 = v3; for ( i = (int *)a1[2]; i; i = (int *)i[2] ) { v8 = operator new((struct type_info *)0x14, v13); v8[4] = i[4]; v9 = *i; v8[2] = 0; *v8 = v9; v8[3] = 0; v14[2] = v8; v8[1] = v14; v10 = i[3]; if ( v10 ) v8[3] = std::_Rb_tree,std::less,std::allocator>::_M_copy,std::less,std::allocator>::_Alloc_node>( v10, v8, a3); v14 = v8; } return v3; } // 4F470E: variable 'v12' is possibly undefined // 4F476B: variable 'v13' is possibly undefined //----- (004F47F4) -------------------------------------------------------- void __stdcall std::_Rb_tree,std::less,std::allocator>::_M_erase( void **a1) { void **v2; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree,std::less,std::allocator>::_M_erase(a1[3]); v2 = a1; a1 = (void **)a1[2]; operator delete(v2); } } //----- (004F4830) -------------------------------------------------------- void __fastcall std::bad_cast::~bad_cast(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539344; std::exception::~exception(v2); operator delete(a1, 4u); } // 4F483C: variable 'v2' is possibly undefined // 539344: using guessed type void (__cdecl *off_539344)(std::bad_cast *__hidden this); //----- (004F4860) -------------------------------------------------------- void __cdecl std::bad_cast::~bad_cast(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_539344; std::exception::~exception(a1); } // 4F4860: variable 'v1' is possibly undefined // 539344: using guessed type void (__cdecl *off_539344)(std::bad_cast *__hidden this); //----- (004F4870) -------------------------------------------------------- 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; } //----- (004F49C0) -------------------------------------------------------- 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_538A48; std::locale::~locale((_DWORD **)&dword_51601C); __gnu_internal::buf_cin_sync = &off_538A48; std::locale::~locale((_DWORD **)&dword_515F9C); __gnu_internal::buf_cerr_sync = &off_538A48; std::locale::~locale((_DWORD **)&dword_515FDC); __gnu_internal::buf_wcout_sync = &off_538A88; std::locale::~locale((_DWORD **)&dword_5160DC); __gnu_internal::buf_wcin_sync = &off_538A88; std::locale::~locale((_DWORD **)&dword_51605C); __gnu_internal::buf_wcerr_sync = &off_538A88; std::locale::~locale((_DWORD **)&dword_51609C); __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_516844, (int)__gnu_internal::buf_cout); std::ios::rdbuf(dword_516668, (int)__gnu_internal::buf_cin); std::ios::rdbuf(&dword_516704, (int)__gnu_internal::buf_cerr); std::ios::rdbuf(dword_5167A4, (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_516AC4, (int)__gnu_internal::buf_wcout); std::wios::rdbuf(dword_5168E8, (int)__gnu_internal::buf_wcin); std::wios::rdbuf(&dword_516984, (int)__gnu_internal::buf_wcerr); std::wios::rdbuf(dword_516A24, (int)__gnu_internal::buf_wcerr); std::ios_base::Init::~Init(); return v1; } // 515F9C: using guessed type _DWORD dword_515F9C; // 515FDC: using guessed type _DWORD dword_515FDC; // 51601C: using guessed type _DWORD dword_51601C; // 51605C: using guessed type _DWORD dword_51605C; // 51609C: using guessed type _DWORD dword_51609C; // 5160DC: using guessed type _DWORD dword_5160DC; // 51661C: using guessed type char std::ios_base::Init::_S_synced_with_stdio; // 516668: using guessed type int dword_516668[28]; // 516704: using guessed type int dword_516704; // 5167A4: using guessed type int dword_5167A4[28]; // 516844: using guessed type int dword_516844[28]; // 5168E8: using guessed type int dword_5168E8[28]; // 516984: using guessed type int dword_516984; // 516A24: using guessed type int dword_516A24[28]; // 516AC4: using guessed type int dword_516AC4[28]; // 538A48: using guessed type int (*off_538A48)(); // 538A88: using guessed type int (*off_538A88)(); //----- (004F4C00) -------------------------------------------------------- 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; } // 505C10: using guessed type int __stdcall std::ios_base::_M_call_callbacks(_DWORD); //----- (004F4C40) -------------------------------------------------------- _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; } // 4F4C4D: variable 'v6' is possibly undefined //----- (004F4C80) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (004F4CE0) -------------------------------------------------------- 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_538A48; dword_516004 = 0; dword_516008 = 0; dword_51600C = 0; dword_516010 = 0; dword_516014 = 0; dword_516018 = 0; std::locale::locale(&dword_51601C); __gnu_internal::buf_cout_sync = &off_5378F4; dword_516024 = -1; __gnu_internal::buf_cin_sync = &off_538A48; dword_516020 = (int)&__iob[1]; dword_515F84 = 0; dword_515F88 = 0; dword_515F8C = 0; dword_515F90 = 0; dword_515F94 = 0; dword_515F98 = 0; std::locale::locale(&dword_515F9C); __gnu_internal::buf_cin_sync = &off_5378F4; dword_515FA0 = (int)__iob[0]._ptr; dword_515FA4 = -1; __gnu_internal::buf_cerr_sync = &off_538A48; dword_515FC4 = 0; dword_515FC8 = 0; dword_515FCC = 0; dword_515FD0 = 0; dword_515FD4 = 0; dword_515FD8 = 0; std::locale::locale(&dword_515FDC); __gnu_internal::buf_cerr_sync = &off_5378F4; dword_515FE0 = (int)&__iob[2]; dword_515FE4 = -1; std::ios_base::ios_base(dword_516844); dword_5168B4 = 0; word_5168B8 = 0; dword_5168BC = 0; dword_5168C0 = 0; dword_5168C4 = 0; dword_5168C8 = 0; std::cout = (int)&off_5384A8; dword_516844[0] = (int)off_5384BC; std::ios::init((int)dword_516844, (int)&__gnu_internal::buf_cout_sync); std::ios_base::ios_base(dword_516668); word_5166DC = 0; dword_5166D8 = 0; dword_5166E0 = 0; dword_5166E4 = 0; dword_5166E8 = 0; dword_5166EC = 0; std::cin = (int)&off_538480; dword_516668[0] = (int)off_538494; dword_516664 = 0; std::ios::init((int)dword_516668, (int)&__gnu_internal::buf_cin_sync); std::ios_base::ios_base(&dword_516704); dword_516774 = 0; word_516778 = 0; dword_51677C = 0; dword_516780 = 0; dword_516784 = 0; dword_516788 = 0; std::cerr = (int)&off_5384A8; dword_516704 = (int)off_5384BC; std::ios::init((int)&dword_516704, (int)&__gnu_internal::buf_cerr_sync); std::ios_base::ios_base(dword_5167A4); dword_516814 = 0; word_516818 = 0; dword_51681C = 0; dword_516820 = 0; dword_516824 = 0; dword_516828 = 0; std::clog = (int)&off_5384A8; dword_5167A4[0] = (int)off_5384BC; std::ios::init((int)dword_5167A4, (int)&__gnu_internal::buf_cerr_sync); dword_516710 |= 0x2000u; dword_5166D8 = (int)&std::cout; dword_516774 = (int)&std::cout; __gnu_internal::buf_wcout_sync = &off_538A88; dword_5160C4 = 0; dword_5160C8 = 0; dword_5160CC = 0; dword_5160D0 = 0; dword_5160D4 = 0; dword_5160D8 = 0; std::locale::locale(&dword_5160DC); __gnu_internal::buf_wcout_sync = &off_537934; dword_5160E0 = (int)&__iob[1]; word_5160E4 = -1; __gnu_internal::buf_wcin_sync = &off_538A88; dword_516044 = 0; dword_516048 = 0; dword_51604C = 0; dword_516050 = 0; dword_516054 = 0; dword_516058 = 0; std::locale::locale(&dword_51605C); dword_516060 = (int)__iob[0]._ptr; word_516064 = -1; __gnu_internal::buf_wcin_sync = &off_537934; __gnu_internal::buf_wcerr_sync = &off_538A88; dword_516084 = 0; dword_516088 = 0; dword_51608C = 0; dword_516090 = 0; dword_516094 = 0; dword_516098 = 0; std::locale::locale(&dword_51609C); __gnu_internal::buf_wcerr_sync = &off_537934; word_5160A4 = -1; dword_5160A0 = (int)&__iob[2]; std::ios_base::ios_base(dword_516AC4); dword_516B34 = 0; word_516B38 = 0; byte_516B3A = 0; dword_516B3C = 0; dword_516B40 = 0; dword_516B44 = 0; dword_516B48 = 0; std::wcout = (int)&off_538804; dword_516AC4[0] = (int)off_538818; std::wios::init((int)dword_516AC4, (int)&__gnu_internal::buf_wcout_sync); std::ios_base::ios_base(dword_5168E8); dword_516958 = 0; word_51695C = 0; byte_51695E = 0; dword_516960 = 0; dword_516964 = 0; dword_516968 = 0; dword_51696C = 0; std::wcin = (int)&off_5387DC; dword_5168E8[0] = (int)off_5387F0; dword_5168E4 = 0; std::wios::init((int)dword_5168E8, (int)&__gnu_internal::buf_wcin_sync); std::ios_base::ios_base(&dword_516984); word_5169F8 = 0; dword_5169F4 = 0; byte_5169FA = 0; dword_5169FC = 0; dword_516A00 = 0; dword_516A04 = 0; dword_516A08 = 0; std::wcerr = (int)&off_538804; dword_516984 = (int)off_538818; std::wios::init((int)&dword_516984, (int)&__gnu_internal::buf_wcerr_sync); std::ios_base::ios_base(dword_516A24); dword_516A94 = 0; word_516A98 = 0; byte_516A9A = 0; dword_516A9C = 0; dword_516AA0 = 0; dword_516AA4 = 0; dword_516AA8 = 0; std::wclog = (int)&off_538804; dword_516A24[0] = (int)off_538818; std::wios::init((int)dword_516A24, (int)&__gnu_internal::buf_wcerr_sync); result = _CRT_MT; dword_516990 |= 0x2000u; dword_516958 = (int)&std::wcout; dword_5169F4 = (int)&std::wcout; if ( _CRT_MT ) _InterlockedAdd(&std::ios_base::Init::_S_refcount, 1u); else ++std::ios_base::Init::_S_refcount; return result; } // 4F4CE0: could not find valid save-restore pair for ebp // 515F84: using guessed type int dword_515F84; // 515F88: using guessed type int dword_515F88; // 515F8C: using guessed type int dword_515F8C; // 515F90: using guessed type int dword_515F90; // 515F94: using guessed type int dword_515F94; // 515F98: using guessed type int dword_515F98; // 515F9C: using guessed type _DWORD dword_515F9C; // 515FA0: using guessed type int dword_515FA0; // 515FA4: using guessed type int dword_515FA4; // 515FC4: using guessed type int dword_515FC4; // 515FC8: using guessed type int dword_515FC8; // 515FCC: using guessed type int dword_515FCC; // 515FD0: using guessed type int dword_515FD0; // 515FD4: using guessed type int dword_515FD4; // 515FD8: using guessed type int dword_515FD8; // 515FDC: using guessed type _DWORD dword_515FDC; // 515FE0: using guessed type int dword_515FE0; // 515FE4: using guessed type int dword_515FE4; // 516004: using guessed type int dword_516004; // 516008: using guessed type int dword_516008; // 51600C: using guessed type int dword_51600C; // 516010: using guessed type int dword_516010; // 516014: using guessed type int dword_516014; // 516018: using guessed type int dword_516018; // 51601C: using guessed type _DWORD dword_51601C; // 516020: using guessed type int dword_516020; // 516024: using guessed type int dword_516024; // 516044: using guessed type int dword_516044; // 516048: using guessed type int dword_516048; // 51604C: using guessed type int dword_51604C; // 516050: using guessed type int dword_516050; // 516054: using guessed type int dword_516054; // 516058: using guessed type int dword_516058; // 51605C: using guessed type _DWORD dword_51605C; // 516060: using guessed type int dword_516060; // 516064: using guessed type __int16 word_516064; // 516084: using guessed type int dword_516084; // 516088: using guessed type int dword_516088; // 51608C: using guessed type int dword_51608C; // 516090: using guessed type int dword_516090; // 516094: using guessed type int dword_516094; // 516098: using guessed type int dword_516098; // 51609C: using guessed type _DWORD dword_51609C; // 5160A0: using guessed type int dword_5160A0; // 5160A4: using guessed type __int16 word_5160A4; // 5160C4: using guessed type int dword_5160C4; // 5160C8: using guessed type int dword_5160C8; // 5160CC: using guessed type int dword_5160CC; // 5160D0: using guessed type int dword_5160D0; // 5160D4: using guessed type int dword_5160D4; // 5160D8: using guessed type int dword_5160D8; // 5160DC: using guessed type _DWORD dword_5160DC; // 5160E0: using guessed type int dword_5160E0; // 5160E4: using guessed type __int16 word_5160E4; // 516618: using guessed type int std::ios_base::Init::_S_refcount; // 51661C: using guessed type char std::ios_base::Init::_S_synced_with_stdio; // 516660: using guessed type int std::cin; // 516664: using guessed type int dword_516664; // 516668: using guessed type int dword_516668[28]; // 5166D8: using guessed type int dword_5166D8; // 5166DC: using guessed type __int16 word_5166DC; // 5166E0: using guessed type int dword_5166E0; // 5166E4: using guessed type int dword_5166E4; // 5166E8: using guessed type int dword_5166E8; // 5166EC: using guessed type int dword_5166EC; // 516700: using guessed type int std::cerr; // 516704: using guessed type int dword_516704; // 516710: using guessed type int dword_516710; // 516774: using guessed type int dword_516774; // 516778: using guessed type __int16 word_516778; // 51677C: using guessed type int dword_51677C; // 516780: using guessed type int dword_516780; // 516784: using guessed type int dword_516784; // 516788: using guessed type int dword_516788; // 5167A0: using guessed type int std::clog; // 5167A4: using guessed type int dword_5167A4[28]; // 516814: using guessed type int dword_516814; // 516818: using guessed type __int16 word_516818; // 51681C: using guessed type int dword_51681C; // 516820: using guessed type int dword_516820; // 516824: using guessed type int dword_516824; // 516828: using guessed type int dword_516828; // 516840: using guessed type int std::cout; // 516844: using guessed type int dword_516844[28]; // 5168B4: using guessed type int dword_5168B4; // 5168B8: using guessed type __int16 word_5168B8; // 5168BC: using guessed type int dword_5168BC; // 5168C0: using guessed type int dword_5168C0; // 5168C4: using guessed type int dword_5168C4; // 5168C8: using guessed type int dword_5168C8; // 5168E0: using guessed type int std::wcin; // 5168E4: using guessed type int dword_5168E4; // 5168E8: using guessed type int dword_5168E8[28]; // 516958: using guessed type int dword_516958; // 51695C: using guessed type __int16 word_51695C; // 51695E: using guessed type char byte_51695E; // 516960: using guessed type int dword_516960; // 516964: using guessed type int dword_516964; // 516968: using guessed type int dword_516968; // 51696C: using guessed type int dword_51696C; // 516980: using guessed type int std::wcerr; // 516984: using guessed type int dword_516984; // 516990: using guessed type int dword_516990; // 5169F4: using guessed type int dword_5169F4; // 5169F8: using guessed type __int16 word_5169F8; // 5169FA: using guessed type char byte_5169FA; // 5169FC: using guessed type int dword_5169FC; // 516A00: using guessed type int dword_516A00; // 516A04: using guessed type int dword_516A04; // 516A08: using guessed type int dword_516A08; // 516A20: using guessed type int std::wclog; // 516A24: using guessed type int dword_516A24[28]; // 516A94: using guessed type int dword_516A94; // 516A98: using guessed type __int16 word_516A98; // 516A9A: using guessed type char byte_516A9A; // 516A9C: using guessed type int dword_516A9C; // 516AA0: using guessed type int dword_516AA0; // 516AA4: using guessed type int dword_516AA4; // 516AA8: using guessed type int dword_516AA8; // 516AC0: using guessed type int std::wcout; // 516AC4: using guessed type int dword_516AC4[28]; // 516B34: using guessed type int dword_516B34; // 516B38: using guessed type __int16 word_516B38; // 516B3A: using guessed type char byte_516B3A; // 516B3C: using guessed type int dword_516B3C; // 516B40: using guessed type int dword_516B40; // 516B44: using guessed type int dword_516B44; // 516B48: using guessed type int dword_516B48; // 5378F4: using guessed type int (*off_5378F4)(); // 537934: using guessed type int (*off_537934)(); // 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); // 538494: using guessed type void (__cdecl *off_538494[2])(std::istream *__hidden this); // 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); // 5384BC: using guessed type void (__cdecl *off_5384BC[2])(std::ostream *__hidden this); // 5387DC: using guessed type int (*off_5387DC)(); // 5387F0: using guessed type int (*off_5387F0[2])(); // 538804: using guessed type int (*off_538804)(); // 538818: using guessed type int (*off_538818[2])(); // 538A48: using guessed type int (*off_538A48)(); // 538A88: using guessed type int (*off_538A88)(); // 78A9D4: using guessed type int _CRT_MT; //----- (004F53E0) -------------------------------------------------------- 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; } // 516618: using guessed type int std::ios_base::Init::_S_refcount; // 516700: using guessed type int std::cerr; // 5167A0: using guessed type int std::clog; // 516840: using guessed type int std::cout; // 516980: using guessed type int std::wcerr; // 516A20: using guessed type int std::wclog; // 516AC0: using guessed type int std::wcout; // 78A9D4: using guessed type int _CRT_MT; //----- (004F5460) -------------------------------------------------------- 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; } // 4F5472: variable 'v5' is possibly undefined //----- (004F54B0) -------------------------------------------------------- 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; } // 516B9C: using guessed type int std::ios_base::xalloc(void)::_S_top; // 78A9D4: using guessed type int _CRT_MT; //----- (004F54F0) -------------------------------------------------------- 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); } //----- (004F5540) -------------------------------------------------------- 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); } //----- (004F5610) -------------------------------------------------------- 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); } // 4F56B7: variable 'v28' is possibly undefined //----- (004F5760) -------------------------------------------------------- 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_538418; this[2] = v13; return result; } // 538418: using guessed type int (*off_538418)(); //----- (004F5990) -------------------------------------------------------- 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_538418; } // 4F5A12: variable 'v12' is possibly undefined // 538418: using guessed type int (*off_538418)(); //----- (004F5C00) -------------------------------------------------------- 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_538418; this[2] = v16; return result; } // 4F5C98: variable 'v15' is possibly undefined // 538418: using guessed type int (*off_538418)(); //----- (004F5EB0) -------------------------------------------------------- void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1) { *a1 = &off_538418; std::system_error::~system_error(a1); operator delete(a1); } // 538418: using guessed type int (*off_538418)(); //----- (004F5ED0) -------------------------------------------------------- void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1) { *a1 = &off_538418; std::system_error::~system_error(a1); } // 538418: using guessed type int (*off_538418)(); //----- (004F5EE0) -------------------------------------------------------- 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_53842C; return std::string::string(v3, this, v5); } // 4F5EFB: variable 'v5' is possibly undefined // 53842C: using guessed type void (__cdecl *off_53842C)(std::ios_base::failure *__hidden this); //----- (004F5F20) -------------------------------------------------------- void __fastcall std::ios_base::failure::~failure(_DWORD *a1) { std::ios_base::failure::~failure(a1); operator delete(a1); } //----- (004F5F40) -------------------------------------------------------- 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_53842C; if ( v1 != (volatile signed __int32 *)&unk_51641C ) { 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); } // 4F5F59: variable 'v3' is possibly undefined // 53842C: using guessed type void (__cdecl *off_53842C)(std::ios_base::failure *__hidden this); // 78A9D4: using guessed type int _CRT_MT; // 4F5F40: using guessed type int var_D[3]; //----- (004F5FB0) -------------------------------------------------------- int __fastcall std::ios_base::ios_base(_DWORD *a1) { _DWORD *v1; // ebx _DWORD *v2; // eax _DWORD *v3; // ecx v1 = a1 + 9; *a1 = &off_539358; 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); } // 539358: using guessed type void (__cdecl *off_539358)(std::ios_base *__hidden this); //----- (004F6030) -------------------------------------------------------- void __fastcall std::ios_base::~ios_base(void *a1) { std::ios_base::~ios_base((int)a1); operator delete(a1); } //----- (004F6050) -------------------------------------------------------- void __fastcall std::ios_base::~ios_base(int a1) { void *v2; // eax *(_DWORD *)a1 = &off_539358; 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)); } // 539358: using guessed type void (__cdecl *off_539358)(std::ios_base *__hidden this); //----- (004F60A0) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_539368; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 539368: using guessed type int (*off_539368)(); //----- (004F60E0) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_539368; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 539368: using guessed type int (*off_539368)(); //----- (004F6120) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_539368; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 539368: using guessed type int (*off_539368)(); //----- (004F6160) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_539368; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 539368: using guessed type int (*off_539368)(); //----- (004F61A0) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539368; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4F61B9: variable 'v2' is possibly undefined // 539368: using guessed type int (*off_539368)(); //----- (004F61D0) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539368; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F61D9: variable 'v1' is possibly undefined // 539368: using guessed type int (*off_539368)(); //----- (004F6200) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539368; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F6209: variable 'v1' is possibly undefined // 539368: using guessed type int (*off_539368)(); //----- (004F6230) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_539384; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 539384: using guessed type int (*off_539384)(); //----- (004F6270) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_539384; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 539384: using guessed type int (*off_539384)(); //----- (004F62B0) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { int result; // eax *this = &off_539384; this[1] = a4 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 539384: using guessed type int (*off_539384)(); //----- (004F62F0) -------------------------------------------------------- int __thiscall std::messages::messages(_DWORD *this, int a2) { int result; // eax *this = &off_539384; this[1] = a2 != 0; result = std::locale::facet::_S_get_c_locale(); this[2] = result; return result; } // 539384: using guessed type int (*off_539384)(); //----- (004F6330) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539384; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet(v2); operator delete(a1); } // 4F6349: variable 'v2' is possibly undefined // 539384: using guessed type int (*off_539384)(); //----- (004F6360) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539384; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F6369: variable 'v1' is possibly undefined // 539384: using guessed type int (*off_539384)(); //----- (004F6390) -------------------------------------------------------- void __cdecl std::messages::~messages(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539384; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); std::locale::facet::~facet(a1); } // 4F6399: variable 'v1' is possibly undefined // 539384: using guessed type int (*off_539384)(); //----- (004F63C0) -------------------------------------------------------- _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_538BD4; 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_52F168; 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; } // 4F6462: variable 'v9' is possibly undefined // 516420: using guessed type char *std::__num_base::_S_atoms_in[3]; // 516424: using guessed type char *std::__num_base::_S_atoms_out[2]; // 538BD4: using guessed type int (*off_538BD4)(); //----- (004F64C0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_5393A0; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 5393A0: using guessed type int (*off_5393A0)(); //----- (004F6510) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_5393A0; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 5393A0: using guessed type int (*off_5393A0)(); //----- (004F6560) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_5393A0; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 5393A0: using guessed type int (*off_5393A0)(); //----- (004F65B0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_5393A0; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 5393A0: using guessed type int (*off_5393A0)(); //----- (004F6600) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_5393A0; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 5393A0: using guessed type int (*off_5393A0)(); //----- (004F6650) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_5393A0; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 5393A0: using guessed type int (*off_5393A0)(); //----- (004F66A0) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::numpunct::~numpunct(v2); operator delete(a1); } // 4F66A7: variable 'v2' is possibly undefined //----- (004F66D0) -------------------------------------------------------- void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_5393A0; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4F66D7: variable 'v1' is possibly undefined // 5393A0: using guessed type int (*off_5393A0)(); //----- (004F6700) -------------------------------------------------------- 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_538BE4; 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_52F168; 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_52F174; v2[6] = 4; v2[7] = &off_52F17E; v2[8] = 5; return result; } // 4F6790: variable 'v8' is possibly undefined // 516420: using guessed type char *std::__num_base::_S_atoms_in[3]; // 516424: using guessed type char *std::__num_base::_S_atoms_out[2]; // 52F174: using guessed type void *off_52F174; // 52F17E: using guessed type void *off_52F17E; // 538BE4: using guessed type int (*off_538BE4)(); //----- (004F67F0) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_5393C4; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 5393C4: using guessed type int (*off_5393C4)(); //----- (004F6840) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_5393C4; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 5393C4: using guessed type int (*off_5393C4)(); //----- (004F6890) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_5393C4; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 5393C4: using guessed type int (*off_5393C4)(); //----- (004F68E0) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_5393C4; this[1] = a3 != 0; this[2] = a2; return std::numpunct::_M_initialize_numpunct(this, 0); } // 5393C4: using guessed type int (*off_5393C4)(); //----- (004F6930) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_5393C4; this[2] = 0; this[1] = a3 != 0; return std::numpunct::_M_initialize_numpunct(this, a2); } // 5393C4: using guessed type int (*off_5393C4)(); //----- (004F6980) -------------------------------------------------------- int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { *this = &off_5393C4; this[2] = 0; this[1] = a2 != 0; return std::numpunct::_M_initialize_numpunct(this, 0); } // 5393C4: using guessed type int (*off_5393C4)(); //----- (004F69D0) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(void *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] std::numpunct::~numpunct(v2); operator delete(a1); } // 4F69D7: variable 'v2' is possibly undefined //----- (004F6A00) -------------------------------------------------------- void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) { _DWORD *v1; // ecx int v2; // ecx *v1 = &off_5393C4; v2 = v1[2]; if ( v2 ) (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); std::locale::facet::~facet(a1); } // 4F6A07: variable 'v1' is possibly undefined // 5393C4: using guessed type int (*off_5393C4)(); //----- (004F6A30) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5393E8; result = a2 != 0; this[1] = result; return result; } // 5393E8: using guessed type int (*off_5393E8)(); //----- (004F6A50) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5393E8; result = a2 != 0; this[1] = result; return result; } // 5393E8: using guessed type int (*off_5393E8)(); //----- (004F6A70) -------------------------------------------------------- void __fastcall std::time_get>::~time_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5393E8; std::locale::facet::~facet(v2); operator delete(a1); } // 4F6A7C: variable 'v2' is possibly undefined // 5393E8: using guessed type int (*off_5393E8)(); //----- (004F6A90) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5393E8; std::locale::facet::~facet(a1); } // 4F6A90: variable 'v1' is possibly undefined // 5393E8: using guessed type int (*off_5393E8)(); //----- (004F6AA0) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5393E8; std::locale::facet::~facet(a1); } // 4F6AA0: variable 'v1' is possibly undefined // 5393E8: using guessed type int (*off_5393E8)(); //----- (004F6AB0) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_539410; result = a2 != 0; this[1] = result; return result; } // 539410: using guessed type int (*off_539410)(); //----- (004F6AD0) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_539410; result = a2 != 0; this[1] = result; return result; } // 539410: using guessed type int (*off_539410)(); //----- (004F6AF0) -------------------------------------------------------- void __fastcall std::time_get>::~time_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539410; std::locale::facet::~facet(v2); operator delete(a1); } // 4F6AFC: variable 'v2' is possibly undefined // 539410: using guessed type int (*off_539410)(); //----- (004F6B10) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539410; std::locale::facet::~facet(a1); } // 4F6B10: variable 'v1' is possibly undefined // 539410: using guessed type int (*off_539410)(); //----- (004F6B20) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539410; std::locale::facet::~facet(a1); } // 4F6B20: variable 'v1' is possibly undefined // 539410: using guessed type int (*off_539410)(); //----- (004F6B30) -------------------------------------------------------- BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_539438; result = a2 != 0; this[1] = result; return result; } // 539438: using guessed type int (*off_539438)(); //----- (004F6B50) -------------------------------------------------------- BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_539438; result = a2 != 0; this[1] = result; return result; } // 539438: using guessed type int (*off_539438)(); //----- (004F6B70) -------------------------------------------------------- void __fastcall std::time_put>::~time_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539438; std::locale::facet::~facet(v2); operator delete(a1); } // 4F6B7C: variable 'v2' is possibly undefined // 539438: using guessed type int (*off_539438)(); //----- (004F6B90) -------------------------------------------------------- void __cdecl std::time_put>::~time_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539438; std::locale::facet::~facet(a1); } // 4F6B90: variable 'v1' is possibly undefined // 539438: using guessed type int (*off_539438)(); //----- (004F6BA0) -------------------------------------------------------- void __cdecl std::time_put>::~time_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_539438; std::locale::facet::~facet(a1); } // 4F6BA0: variable 'v1' is possibly undefined // 539438: using guessed type int (*off_539438)(); //----- (004F6BB0) -------------------------------------------------------- BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_53944C; result = a2 != 0; this[1] = result; return result; } // 53944C: using guessed type int (*off_53944C)(); //----- (004F6BD0) -------------------------------------------------------- BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_53944C; result = a2 != 0; this[1] = result; return result; } // 53944C: using guessed type int (*off_53944C)(); //----- (004F6BF0) -------------------------------------------------------- void __fastcall std::time_put>::~time_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_53944C; std::locale::facet::~facet(v2); operator delete(a1); } // 4F6BFC: variable 'v2' is possibly undefined // 53944C: using guessed type int (*off_53944C)(); //----- (004F6C10) -------------------------------------------------------- void __cdecl std::time_put>::~time_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_53944C; std::locale::facet::~facet(a1); } // 4F6C10: variable 'v1' is possibly undefined // 53944C: using guessed type int (*off_53944C)(); //----- (004F6C20) -------------------------------------------------------- void __cdecl std::time_put>::~time_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_53944C; std::locale::facet::~facet(a1); } // 4F6C20: variable 'v1' is possibly undefined // 53944C: using guessed type int (*off_53944C)(); //----- (004F6C30) -------------------------------------------------------- void __fastcall std::bad_alloc::~bad_alloc(_DWORD *a1) { std::exception *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_539460; std::exception::~exception(v2); operator delete(a1, 4u); } // 4F6C3C: variable 'v2' is possibly undefined // 539460: using guessed type void (__cdecl *off_539460)(std::bad_alloc *__hidden this); //----- (004F6C60) -------------------------------------------------------- void __cdecl std::bad_alloc::~bad_alloc(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_539460; std::exception::~exception(a1); } // 4F6C60: variable 'v1' is possibly undefined // 539460: using guessed type void (__cdecl *off_539460)(std::bad_alloc *__hidden this); //----- (004F6C70) -------------------------------------------------------- int __thiscall std::ios::exceptions(_DWORD *this, int a2) { this[4] = a2; return std::ios::clear(this, this[5]); } //----- (004F6C90) -------------------------------------------------------- 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; } //----- (004F6CB0) -------------------------------------------------------- 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; } //----- (004F6D50) -------------------------------------------------------- int __thiscall std::ios::tie(_DWORD *this, int a2) { int result; // eax result = this[28]; this[28] = a2; return result; } //----- (004F6D60) -------------------------------------------------------- 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; } //----- (004F6DE0) -------------------------------------------------------- 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; } //----- (004F6E30) -------------------------------------------------------- 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; } // 4F6E3E: variable 'v5' is possibly undefined //----- (004F6E80) -------------------------------------------------------- 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; } // 4F6E8E: variable 'v5' is possibly undefined //----- (004F6ED0) -------------------------------------------------------- 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; } // 4F6EDE: variable 'v7' is possibly undefined //----- (004F6F40) -------------------------------------------------------- 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; } //----- (004F6F80) -------------------------------------------------------- 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; } // 4F6F97: variable 'v6' is possibly undefined // 4F6FDB: variable 'v7' is possibly undefined //----- (004F7030) -------------------------------------------------------- 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; } //----- (004F7070) -------------------------------------------------------- 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; } // 4F717D: variable 'v24' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004F72F0) -------------------------------------------------------- int __thiscall std::ios::setstate(_DWORD *this, int a2) { return std::ios::clear(this, this[5] | a2); } //----- (004F7300) -------------------------------------------------------- int __thiscall std::ios::set_rdbuf(_DWORD *this, int a2) { int result; // eax result = a2; this[30] = a2; return result; } //----- (004F7310) -------------------------------------------------------- BOOL __thiscall std::ios::basic_ios(int this, int a2) { std::ios_base::ios_base((_DWORD *)this); *(_DWORD *)this = &off_539474; *(_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); } // 539474: using guessed type int (*off_539474)(); //----- (004F7380) -------------------------------------------------------- int __fastcall std::ios::basic_ios(int a1) { int result; // eax std::ios_base::ios_base((_DWORD *)a1); result = 0; *(_DWORD *)a1 = &off_539474; *(_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; } // 539474: using guessed type int (*off_539474)(); //----- (004F73D0) -------------------------------------------------------- BOOL __thiscall std::ios::basic_ios(int this, int a2) { std::ios_base::ios_base((_DWORD *)this); *(_DWORD *)this = &off_539474; *(_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); } // 539474: using guessed type int (*off_539474)(); //----- (004F7440) -------------------------------------------------------- int __fastcall std::ios::basic_ios(int a1) { int result; // eax std::ios_base::ios_base((_DWORD *)a1); result = 0; *(_DWORD *)a1 = &off_539474; *(_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; } // 539474: using guessed type int (*off_539474)(); //----- (004F7490) -------------------------------------------------------- void __fastcall std::ios::~ios(_DWORD *a1) { *a1 = &off_539474; std::ios_base::~ios_base((int)a1); operator delete(a1); } // 539474: using guessed type int (*off_539474)(); //----- (004F74B0) -------------------------------------------------------- void __fastcall std::ios::~ios(int a1) { *(_DWORD *)a1 = &off_539474; std::ios_base::~ios_base(a1); } // 539474: using guessed type int (*off_539474)(); //----- (004F74C0) -------------------------------------------------------- void __fastcall std::ios::~ios(int a1) { *(_DWORD *)a1 = &off_539474; std::ios_base::~ios_base(a1); } // 539474: using guessed type int (*off_539474)(); //----- (004F74D0) -------------------------------------------------------- int __thiscall std::wios::exceptions(_DWORD *this, int a2) { this[4] = a2; return std::wios::clear(this, this[5]); } //----- (004F74F0) -------------------------------------------------------- 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; } //----- (004F7510) -------------------------------------------------------- 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; } //----- (004F75B0) -------------------------------------------------------- int __thiscall std::wios::tie(_DWORD *this, int a2) { int result; // eax result = this[28]; this[28] = a2; return result; } //----- (004F75C0) -------------------------------------------------------- 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; } //----- (004F7620) -------------------------------------------------------- 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; } //----- (004F7670) -------------------------------------------------------- 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; } // 4F767E: variable 'v5' is possibly undefined //----- (004F76D0) -------------------------------------------------------- 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; } // 4F76DE: variable 'v5' is possibly undefined //----- (004F7730) -------------------------------------------------------- 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; } // 4F773E: variable 'v6' is possibly undefined //----- (004F77A0) -------------------------------------------------------- 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; } //----- (004F77E0) -------------------------------------------------------- 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; } // 4F77F7: variable 'v6' is possibly undefined // 4F783B: variable 'v7' is possibly undefined //----- (004F7890) -------------------------------------------------------- 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; } //----- (004F78D0) -------------------------------------------------------- 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; } // 4F79DE: variable 'v23' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004F7B00) -------------------------------------------------------- int __thiscall std::wios::setstate(_DWORD *this, int a2) { return std::wios::clear(this, this[5] | a2); } //----- (004F7B10) -------------------------------------------------------- int __thiscall std::wios::set_rdbuf(_DWORD *this, int a2) { int result; // eax result = a2; this[30] = a2; return result; } //----- (004F7B20) -------------------------------------------------------- BOOL __thiscall std::wios::basic_ios(int this, int a2) { std::ios_base::ios_base((_DWORD *)this); *(_DWORD *)this = &off_539484; *(_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); } // 539484: using guessed type int (*off_539484)(); //----- (004F7BA0) -------------------------------------------------------- int __fastcall std::wios::basic_ios(int a1) { int result; // eax std::ios_base::ios_base((_DWORD *)a1); result = 0; *(_DWORD *)a1 = &off_539484; *(_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; } // 539484: using guessed type int (*off_539484)(); //----- (004F7BF0) -------------------------------------------------------- BOOL __thiscall std::wios::basic_ios(int this, int a2) { std::ios_base::ios_base((_DWORD *)this); *(_DWORD *)this = &off_539484; *(_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); } // 539484: using guessed type int (*off_539484)(); //----- (004F7C70) -------------------------------------------------------- int __fastcall std::wios::basic_ios(int a1) { int result; // eax std::ios_base::ios_base((_DWORD *)a1); result = 0; *(_DWORD *)a1 = &off_539484; *(_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; } // 539484: using guessed type int (*off_539484)(); //----- (004F7CC0) -------------------------------------------------------- void __fastcall std::wios::~wios(_DWORD *a1) { *a1 = &off_539484; std::ios_base::~ios_base((int)a1); operator delete(a1); } // 539484: using guessed type int (*off_539484)(); //----- (004F7CE0) -------------------------------------------------------- void __fastcall std::wios::~wios(int a1) { *(_DWORD *)a1 = &off_539484; std::ios_base::~ios_base(a1); } // 539484: using guessed type int (*off_539484)(); //----- (004F7CF0) -------------------------------------------------------- void __fastcall std::wios::~wios(int a1) { *(_DWORD *)a1 = &off_539484; std::ios_base::~ios_base(a1); } // 539484: using guessed type int (*off_539484)(); //----- (004F7D00) -------------------------------------------------------- void __fastcall std::exception::~exception(void *a1) { operator delete(a1, 4u); } //----- (004F7D30) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5394A8; result = a2 != 0; this[1] = result; return result; } // 5394A8: using guessed type int (*off_5394A8)(); //----- (004F7D50) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5394A8; result = a2 != 0; this[1] = result; return result; } // 5394A8: using guessed type int (*off_5394A8)(); //----- (004F7D70) -------------------------------------------------------- void __fastcall std::money_get>::~money_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5394A8; std::locale::facet::~facet(v2); operator delete(a1); } // 4F7D7C: variable 'v2' is possibly undefined // 5394A8: using guessed type int (*off_5394A8)(); //----- (004F7D90) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5394A8; std::locale::facet::~facet(a1); } // 4F7D90: variable 'v1' is possibly undefined // 5394A8: using guessed type int (*off_5394A8)(); //----- (004F7DA0) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5394A8; std::locale::facet::~facet(a1); } // 4F7DA0: variable 'v1' is possibly undefined // 5394A8: using guessed type int (*off_5394A8)(); //----- (004F7DB0) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5394C0; result = a2 != 0; this[1] = result; return result; } // 5394C0: using guessed type int (*off_5394C0)(); //----- (004F7DD0) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5394C0; result = a2 != 0; this[1] = result; return result; } // 5394C0: using guessed type int (*off_5394C0)(); //----- (004F7DF0) -------------------------------------------------------- void __fastcall std::money_get>::~money_get(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5394C0; std::locale::facet::~facet(v2); operator delete(a1); } // 4F7DFC: variable 'v2' is possibly undefined // 5394C0: using guessed type int (*off_5394C0)(); //----- (004F7E10) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5394C0; std::locale::facet::~facet(a1); } // 4F7E10: variable 'v1' is possibly undefined // 5394C0: using guessed type int (*off_5394C0)(); //----- (004F7E20) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5394C0; std::locale::facet::~facet(a1); } // 4F7E20: variable 'v1' is possibly undefined // 5394C0: using guessed type int (*off_5394C0)(); //----- (004F7E30) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5394D8; result = a2 != 0; this[1] = result; return result; } // 5394D8: using guessed type int (*off_5394D8)(); //----- (004F7E50) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5394D8; result = a2 != 0; this[1] = result; return result; } // 5394D8: using guessed type int (*off_5394D8)(); //----- (004F7E70) -------------------------------------------------------- void __fastcall std::money_put>::~money_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5394D8; std::locale::facet::~facet(v2); operator delete(a1); } // 4F7E7C: variable 'v2' is possibly undefined // 5394D8: using guessed type int (*off_5394D8)(); //----- (004F7E90) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5394D8; std::locale::facet::~facet(a1); } // 4F7E90: variable 'v1' is possibly undefined // 5394D8: using guessed type int (*off_5394D8)(); //----- (004F7EA0) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5394D8; std::locale::facet::~facet(a1); } // 4F7EA0: variable 'v1' is possibly undefined // 5394D8: using guessed type int (*off_5394D8)(); //----- (004F7EB0) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5394F0; result = a2 != 0; this[1] = result; return result; } // 5394F0: using guessed type int (*off_5394F0)(); //----- (004F7ED0) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5394F0; result = a2 != 0; this[1] = result; return result; } // 5394F0: using guessed type int (*off_5394F0)(); //----- (004F7EF0) -------------------------------------------------------- void __fastcall std::money_put>::~money_put(_DWORD *a1) { std::locale::facet *v2; // [esp+0h] [ebp-1Ch] *a1 = &off_5394F0; std::locale::facet::~facet(v2); operator delete(a1); } // 4F7EFC: variable 'v2' is possibly undefined // 5394F0: using guessed type int (*off_5394F0)(); //----- (004F7F10) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5394F0; std::locale::facet::~facet(a1); } // 4F7F10: variable 'v1' is possibly undefined // 5394F0: using guessed type int (*off_5394F0)(); //----- (004F7F20) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5394F0; std::locale::facet::~facet(a1); } // 4F7F20: variable 'v1' is possibly undefined // 5394F0: using guessed type int (*off_5394F0)(); //----- (004F7F30) -------------------------------------------------------- void __fastcall std::type_info::~type_info(void *a1) { operator delete(a1, 8u); } //----- (004F7F60) -------------------------------------------------------- void __cdecl std::__pop_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( _DWORD *a1, int a2, _DWORD *a3, unsigned __int8 (__cdecl **a4)(int, int)) { void *v4[34]; // [esp+20h] [ebp-128h] BYREF void *v5[40]; // [esp+A8h] [ebp-A0h] BYREF std::pair::pair(v4, a3); std::pair::operator=(a3, a1); std::pair::pair(v5, v4); std::__adjust_heap<__gnu_cxx::__normal_iterator *,std::vector>>,int,std::pair,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( (int)a1, 0, -252645135 * ((a2 - (int)a1) >> 3), v5, *a4); std::pair::~pair(v5); std::pair::~pair(v4); } //----- (004F8000) -------------------------------------------------------- void __noreturn std::unexpected(void) { __cxxabiv1::__unexpected(__cxxabiv1::__unexpected_handler); } //----- (004F8010) -------------------------------------------------------- void __cdecl std::__make_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( int a1, int a2, unsigned __int8 (__cdecl **a3)(int, int)) { int v3; // ebx int i; // esi void *v5[34]; // [esp+20h] [ebp-128h] BYREF void *v6[40]; // [esp+A8h] [ebp-A0h] BYREF if ( a2 - a1 > 136 ) { v3 = -252645135 * ((a2 - a1) >> 3); for ( i = (v3 - 2) / 2; ; --i ) { std::pair::pair(v5, (_DWORD *)(a1 + 136 * i)); std::pair::pair(v6, v5); std::__adjust_heap<__gnu_cxx::__normal_iterator *,std::vector>>,int,std::pair,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( a1, i, v3, v6, *a3); std::pair::~pair(v6); if ( !i ) break; std::pair::~pair(v5); } std::pair::~pair(v5); } } //----- (004F80E0) -------------------------------------------------------- void __cdecl std::__adjust_heap<__gnu_cxx::__normal_iterator *,std::vector>>,int,std::pair,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( int a1, int a2, int a3, _DWORD *a4, unsigned __int8 (__cdecl *a5)(int, int)) { int v5; // ebx int v6; // esi int v7; // ecx int i; // eax int v9; // [esp+1Ch] [ebp-ACh] void *v10[40]; // [esp+28h] [ebp-A0h] BYREF v5 = a2; while ( (a3 - 1) / 2 > v5 ) { v6 = 2 * (v5 + 1); if ( a5(a1 + 272 * (v5 + 1), a1 + 136 * (v6 - 1)) ) --v6; v7 = 136 * v5; v5 = v6; std::pair::operator=((_DWORD *)(a1 + v7), (_DWORD *)(a1 + 136 * v6)); } if ( (a3 & 1) == 0 && (a3 - 2) / 2 == v5 ) { std::pair::operator=( (_DWORD *)(a1 + 136 * v5), (_DWORD *)(a1 + 136 * (2 * v5 + 1))); v5 = 2 * v5 + 1; } std::pair::pair(v10, a4); for ( i = v5 - 1; ; i = v9 - 1 ) { v9 = i / 2; if ( a2 >= v5 || !a5(a1 + 136 * v9, (int)v10) ) break; std::pair::operator=((_DWORD *)(a1 + 136 * v5), (_DWORD *)(a1 + 136 * v9)); v5 = v9; } std::pair::operator=((_DWORD *)(a1 + 136 * v5), v10); std::pair::~pair(v10); } //----- (004F8240) -------------------------------------------------------- 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; } //----- (004F82F0) -------------------------------------------------------- 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; } //----- (004F83F0) -------------------------------------------------------- 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; } //----- (004F84B0) -------------------------------------------------------- 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; } //----- (004F85C0) -------------------------------------------------------- void (*std::get_terminate(void))(void) { return __cxxabiv1::__terminate_handler; } //----- (004F85D0) -------------------------------------------------------- __int32 __cdecl std::set_terminate(void (*a1)(void)) { return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__terminate_handler, (__int32)a1); } //----- (004F85E0) -------------------------------------------------------- _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; } //----- (004F87B0) -------------------------------------------------------- _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; } //----- (004F8990) -------------------------------------------------------- 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); } //----- (004F8AC0) -------------------------------------------------------- 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); } //----- (004F8BE0) -------------------------------------------------------- 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); } //----- (004F8D10) -------------------------------------------------------- void (*std::get_unexpected(void))(void) { return __cxxabiv1::__unexpected_handler; } //----- (004F8D20) -------------------------------------------------------- __int32 __cdecl std::set_unexpected(void (*a1)(void)) { return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__unexpected_handler, (__int32)a1); } //----- (004F8D30) -------------------------------------------------------- int std::get_new_handler(void) { return `anonymous namespace'::__new_handler; } // 515338: using guessed type int `anonymous namespace'::__new_handler; //----- (004F8D40) -------------------------------------------------------- __int32 __cdecl std::set_new_handler(void (*a1)(void)) { return _InterlockedExchange(&`anonymous namespace'::__new_handler, (__int32)a1); } // 515338: using guessed type int `anonymous namespace'::__new_handler; //----- (004F8D50) -------------------------------------------------------- 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_2(Buffer, BufferCount, Format, va); v6 = strlen(v4) + 1; Locale = (void *)operator new[](v6); memcpy(Locale, v4, v6); setlocale(4, "C"); v8 = vsnprintf_2(Buffer, BufferCount, Format, va); setlocale(4, (const char *)Locale); operator delete[](Locale); return v8; } //----- (004F8E30) -------------------------------------------------------- void __cdecl std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( char *a1, char *a2, int (__cdecl *a3)(void **, char *)) { char *i; // edi char *v4; // esi _DWORD *v5; // ecx int v6; // edi _DWORD *v7; // [esp+1Ch] [ebp-ACh] void *v8[40]; // [esp+28h] [ebp-A0h] BYREF if ( a1 != a2 ) { for ( i = a1 + 136; i != a2; i = v4 ) { v4 = i + 136; if ( (unsigned __int8)a3((void **)i, a1) ) { std::pair::pair(v8, i); v5 = i + 136; v6 = -252645135 * ((i - a1) >> 3); while ( v6 > 0 ) { --v6; v7 = v5 - 34; std::pair::operator=(v5 - 34, v5 - 68); v5 = v7; } std::pair::operator=(a1, v8); std::pair::~pair(v8); } else { std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Val_comp_iter const&,std::pair const&)>>( i, (int (__cdecl *)(void **, _DWORD *))a3); } } } } //----- (004F8EEC) -------------------------------------------------------- int __cdecl std::__introsort_loop<__gnu_cxx::__normal_iterator *,std::vector>>,int,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( _DWORD *a1, int a2, int a3, unsigned __int8 (__cdecl *a4)(int, int)) { int result; // eax char *i; // ebx char *v6; // eax int v7; // ebx unsigned __int8 v8; // al _DWORD *v9; // ebx _DWORD *v10; // edi _DWORD *v11; // edx unsigned __int8 v12; // al _DWORD *v13; // [esp+0h] [ebp-48h] int v14; // [esp+4h] [ebp-44h] _DWORD *v15; // [esp+18h] [ebp-30h] _DWORD *v16; // [esp+18h] [ebp-30h] unsigned __int8 (__cdecl *v18)(int, int); // [esp+28h] [ebp-20h] BYREF unsigned __int8 (__cdecl *v19)(int, int); // [esp+2Ch] [ebp-1Ch] BYREF while ( 1 ) { result = a2 - (_DWORD)a1; if ( a2 - (int)a1 <= 2176 ) return result; if ( !a3 ) { v18 = a4; v19 = a4; std::__make_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( (int)a1, a2, &v19); for ( i = (char *)a2; ; std::__pop_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( a1, (int)i, i, &v18) ) { v6 = i; i -= 136; result = v6 - (char *)a1; if ( result <= 136 ) break; } return result; } --a3; v15 = &a1[34 * ((-252645135 * (result >> 3)) >> 1)]; v7 = a2 - 136; v8 = a4((int)(a1 + 34), (int)v15); v14 = a2 - 136; if ( v8 ) { if ( a4((int)v15, v14) ) goto LABEL_14; if ( a4((int)(a1 + 34), v7) ) goto LABEL_13; } else if ( !a4((int)(a1 + 34), v14) ) { if ( !a4((int)v15, v7) ) { LABEL_14: v13 = v15; goto LABEL_15; } LABEL_13: v13 = (_DWORD *)(a2 - 136); goto LABEL_15; } v13 = a1 + 34; LABEL_15: v9 = a1 + 34; std::pair::swap(a1, v13); v10 = (_DWORD *)a2; while ( 1 ) { if ( a4((int)v9, (int)a1) ) goto LABEL_17; v11 = v10 - 34; do { v10 = v11; v16 = v11; v12 = a4((int)a1, (int)v11); v11 = v16 - 34; } while ( v12 ); if ( v9 >= v10 ) break; std::pair::swap(v9, v10); LABEL_17: v9 += 34; } std::__introsort_loop<__gnu_cxx::__normal_iterator *,std::vector>>,int,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( v9, a2, a3, a4); a2 = (int)v9; } } //----- (004F9070) -------------------------------------------------------- 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; } // 4F9082: variable 'v20' is possibly undefined // 4F9070: using guessed type char var_20[4]; //----- (004F9430) -------------------------------------------------------- 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; } //----- (004F97B0) -------------------------------------------------------- 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); } // 4F97B0: using guessed type char var_D[13]; //----- (004F97E0) -------------------------------------------------------- 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); } // 4F97E0: using guessed type char var_D[13]; //----- (004F9810) -------------------------------------------------------- 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)); } //----- (004F9850) -------------------------------------------------------- int __cdecl std::__verify_grouping(char *a1, unsigned int a2, const char **a3) { return std::__verify_grouping_impl(a1, a2, *a3, *((_DWORD *)*a3 - 3)); } //----- (004F9880) -------------------------------------------------------- void (__cdecl ***std::iostream_category(void))(_anonymous_namespace_::io_error_category *__hidden this) { return `anonymous namespace'::__io_category_instance(); } //----- (004F9890) -------------------------------------------------------- int __cdecl std::_Rb_tree_decrement(_DWORD *a1) { return std::local_Rb_tree_decrement(a1); } //----- (004F98A0) -------------------------------------------------------- int __cdecl std::_Rb_tree_decrement(_DWORD *a1) { return std::local_Rb_tree_decrement(a1); } //----- (004F98C0) -------------------------------------------------------- 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; } //----- (004F9910) -------------------------------------------------------- bool std::uncaught_exception(void) { return __cxa_get_globals()[1] != 0; } //----- (004F9930) -------------------------------------------------------- int std::uncaught_exceptions(void) { return __cxa_get_globals()[1]; } //----- (004F9940) -------------------------------------------------------- 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; } //----- (004F9970) -------------------------------------------------------- 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; } //----- (004F99D0) -------------------------------------------------------- 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; } //----- (004F9A30) -------------------------------------------------------- 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; } //----- (004F9B30) -------------------------------------------------------- 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; } //----- (004F9C30) -------------------------------------------------------- int __cdecl std::__destroy_ios_failure(int (__fastcall ***a1)(_DWORD)) { return (**a1)(a1); } //----- (004F9C40) -------------------------------------------------------- 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; } //----- (004F9D10) -------------------------------------------------------- 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_51641C ) { 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); } } // 4F9D38: variable 'v4' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (004F9D90) -------------------------------------------------------- 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); } // 53437C: using guessed type int *`typeinfo for'std::ios_base::failure; //----- (004F9DB0) -------------------------------------------------------- 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); } // 4F9E0C: variable 'v7' is possibly undefined // 5344E4: using guessed type int *`typeinfo for'std::out_of_range; //----- (004F9E40) -------------------------------------------------------- void __cdecl std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Val_comp_iter const&,std::pair const&)>>( _DWORD *a1, int (__cdecl *a2)(void **, _DWORD *)) { _DWORD *v2; // ebx _DWORD *v3; // esi _DWORD *v4; // edi char v5; // al void *v6[40]; // [esp+18h] [ebp-A0h] BYREF v2 = a1 - 34; std::pair::pair(v6, a1); while ( 1 ) { v3 = v2 + 34; v4 = v2; v5 = a2(v6, v2); v2 -= 34; if ( !v5 ) break; std::pair::operator=(v3, v4); } std::pair::operator=(v3, v6); std::pair::~pair(v6); } //----- (004F9ED0) -------------------------------------------------------- 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; } //----- (004FA390) -------------------------------------------------------- _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; } //----- (004FA630) -------------------------------------------------------- _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; } // 4FA64F: variable 'v7' is possibly undefined //----- (004FA700) -------------------------------------------------------- _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; } // 4FA71F: variable 'v8' is possibly undefined //----- (004FA7F0) -------------------------------------------------------- std::ios_base *__cdecl std::hex(std::ios_base *a1) { *((_DWORD *)a1 + 3) = *((_DWORD *)a1 + 3) & 0xFFFFFFB5 | 8; return a1; } //----- (004FA810) -------------------------------------------------------- _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); } // 4FA835: variable 'v7' is possibly undefined //----- (004FA890) -------------------------------------------------------- _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); } //----- (004FA8E0) -------------------------------------------------------- std::ostream::sentry *__cdecl std::ends>(std::ostream::sentry *a1) { char v2; // [esp+4h] [ebp-18h] return std::ostream::put(a1, 0, v2); } // 4FA8EE: variable 'v2' is possibly undefined //----- (004FA900) -------------------------------------------------------- int *__cdecl std::ends>(int *a1) { return std::wostream::put(a1, 0); } //----- (004FA920) -------------------------------------------------------- void __cdecl std::sort<__gnu_cxx::__normal_iterator *,std::vector>>,bool (*)(std::pair const&,std::pair const&)>( char *a1, char *a2, unsigned __int8 (__cdecl *a3)(int, int)) { unsigned int v3; // eax char *v4; // ebx char *v5; // [esp+0h] [ebp-38h] if ( a1 != a2 ) { _BitScanReverse(&v3, -252645135 * ((a2 - a1) >> 3)); std::__introsort_loop<__gnu_cxx::__normal_iterator *,std::vector>>,int,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( a1, (int)a2, 2 * (31 - (v3 ^ 0x1F)), a3); if ( a2 - a1 <= 2176 ) { std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( a1, a2, (int (__cdecl *)(void **, char *))a3); } else { v4 = a1 + 2176; std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( a1, a1 + 2176, (int (__cdecl *)(void **, char *))a3); while ( v4 != a2 ) { v5 = v4; v4 += 136; std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Val_comp_iter const&,std::pair const&)>>( v5, (int (__cdecl *)(void **, _DWORD *))a3); } } } } //----- (004FA9D0) -------------------------------------------------------- _DWORD *__cdecl std::flush>(_DWORD *a1) { return std::ostream::flush(a1); } //----- (004FA9E0) -------------------------------------------------------- _DWORD *__cdecl std::flush>(_DWORD *a1) { return std::wostream::flush(a1); } //----- (004FA9F0) -------------------------------------------------------- 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); } //----- (004FAA70) -------------------------------------------------------- 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; } // 4FAD12: control flows out of bounds to 5060B3 // 4FAA93: variable 'v21' is possibly undefined // 5060AC: using guessed type int std::getline,std::allocator>(void); // 4FAA70: using guessed type char var_19[25]; //----- (004FAD20) -------------------------------------------------------- _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; } // 4FAFF9: control flows out of bounds to 506137 // 506130: using guessed type int std::getline,std::allocator>(void); // 4FAD20: using guessed type char var_19[25]; //----- (004FB010) -------------------------------------------------------- int __cdecl std::setfill(unsigned __int8 a1) { return a1; } //----- (004FB020) -------------------------------------------------------- int __cdecl std::setfill(unsigned __int16 a1) { return a1; } //----- (004FB030) -------------------------------------------------------- int __cdecl std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( int a1, int a2, int a3) { int v3; // ebx int v4; // esi int v5; // eax int i; // [esp+1Ch] [ebp-1Ch] v3 = a1; for ( i = (-1431655765 * ((a2 - a1) >> 3)) >> 2; ; --i ) { v4 = v3; if ( i <= 0 ) break; if ( std::operator==(v3, a3) ) return v3; v4 = v3 + 24; if ( std::operator==(v3 + 24, a3) ) return v4; v4 = v3 + 48; if ( std::operator==(v3 + 48, a3) ) return v4; v4 = v3 + 72; v3 += 96; if ( std::operator==(v4, a3) ) return v4; } v5 = a2 - v3; if ( a2 - v3 != 48 ) { if ( v5 != 72 ) { if ( v5 != 24 ) return a2; goto LABEL_17; } if ( std::operator==(v3, a3) ) return v3; v4 = v3 + 24; } if ( std::operator==(v4, a3) ) return v4; v4 += 24; LABEL_17: if ( std::operator==(v4, a3) ) return v4; return a2; } //----- (004FB110) -------------------------------------------------------- int __cdecl std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( int a1, int a2, char **a3) { int v3; // ebx int i; // edi int v5; // edx bool v6; // al int v7; // edx bool v8; // al int v9; // edx bool v10; // al int v11; // eax bool v12; // al int v14; // [esp+1Ch] [ebp-1Ch] int v15; // [esp+1Ch] [ebp-1Ch] int v16; // [esp+1Ch] [ebp-1Ch] v3 = a1; for ( i = (-1431655765 * ((a2 - a1) >> 3)) >> 2; ; --i ) { v5 = v3; if ( i <= 0 ) break; if ( std::operator==(v3, *a3) ) return v3; v6 = std::operator==(v3 + 24, *a3); v7 = v3 + 24; if ( v6 ) return v7; v8 = std::operator==(v3 + 48, *a3); v7 = v3 + 48; if ( v8 ) return v7; v9 = v3 + 72; v3 += 96; v14 = v9; v10 = std::operator==(v9, *a3); v7 = v14; if ( v10 ) return v7; } v11 = a2 - v3; if ( a2 - v3 != 48 ) { if ( v11 != 72 ) { if ( v11 != 24 ) return a2; goto LABEL_17; } if ( std::operator==(v3, *a3) ) return v3; v5 = v3 + 24; } v15 = v5; v12 = std::operator==(v5, *a3); v7 = v15; if ( !v12 ) { v5 = v15 + 24; LABEL_17: v16 = v5; if ( std::operator==(v5, *a3) ) return v16; return a2; } return v7; } //----- (004FB224) -------------------------------------------------------- int __cdecl std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( int a1, int a2, int a3) { int v3; // ebx int v4; // esi int v5; // eax int i; // [esp+1Ch] [ebp-1Ch] v3 = a1; for ( i = (-1431655765 * ((a2 - a1) >> 3)) >> 2; ; --i ) { v4 = v3; if ( i <= 0 ) break; if ( std::operator==(v3, a3) ) return v3; v4 = v3 + 24; if ( std::operator==(v3 + 24, a3) ) return v4; v4 = v3 + 48; if ( std::operator==(v3 + 48, a3) ) return v4; v4 = v3 + 72; v3 += 96; if ( std::operator==(v4, a3) ) return v4; } v5 = a2 - v3; if ( a2 - v3 != 48 ) { if ( v5 != 72 ) { if ( v5 != 24 ) return a2; goto LABEL_17; } if ( std::operator==(v3, a3) ) return v3; v4 = v3 + 24; } if ( std::operator==(v4, a3) ) return v4; v4 += 24; LABEL_17: if ( std::operator==(v4, a3) ) return v4; return a2; } //----- (004FB310) -------------------------------------------------------- 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; } // 4FB359: variable 'v2' is possibly undefined // 5165A8: using guessed type int std::moneypunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534118: using guessed type int *`typeinfo for'std::moneypunct; //----- (004FB360) -------------------------------------------------------- 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; } // 4FB3A9: variable 'v2' is possibly undefined // 5165B0: using guessed type int std::moneypunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534158: using guessed type int *`typeinfo for'std::moneypunct; //----- (004FB3B0) -------------------------------------------------------- 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; } // 4FB3F9: variable 'v2' is possibly undefined // 5165B8: using guessed type int std::collate::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534290: using guessed type int *`typeinfo for'std::collate; //----- (004FB400) -------------------------------------------------------- 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; } // 4FB449: variable 'v2' is possibly undefined // 5165BC: using guessed type int std::collate::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 53429C: using guessed type int *`typeinfo for'std::collate; //----- (004FB450) -------------------------------------------------------- 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; } // 4FB499: variable 'v2' is possibly undefined // 5165C0: using guessed type int std::messages::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5342A8: using guessed type int *`typeinfo for'std::messages; //----- (004FB4A0) -------------------------------------------------------- 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; } // 4FB4E9: variable 'v2' is possibly undefined // 5165C4: using guessed type int std::messages::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5342C8: using guessed type int *`typeinfo for'std::messages; //----- (004FB4F0) -------------------------------------------------------- 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; } // 4FB539: variable 'v2' is possibly undefined // 5165C8: using guessed type int std::numpunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5342E8: using guessed type int *`typeinfo for'std::numpunct; //----- (004FB540) -------------------------------------------------------- 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; } // 4FB589: variable 'v2' is possibly undefined // 5165CC: using guessed type int std::numpunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5342F4: using guessed type int *`typeinfo for'std::numpunct; //----- (004FB590) -------------------------------------------------------- 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; } // 4FB5D9: variable 'v2' is possibly undefined // 5165D0: using guessed type int std::time_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534300: using guessed type int *`typeinfo for'std::time_get>; //----- (004FB5E0) -------------------------------------------------------- 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; } // 4FB629: variable 'v2' is possibly undefined // 5165D4: using guessed type int std::time_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534320: using guessed type int *`typeinfo for'std::time_get>; //----- (004FB630) -------------------------------------------------------- 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; } // 4FB679: variable 'v2' is possibly undefined // 5165D8: using guessed type int std::money_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534340: using guessed type int *`typeinfo for'std::money_get>; //----- (004FB680) -------------------------------------------------------- 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; } // 4FB6C9: variable 'v2' is possibly undefined // 5165DC: using guessed type int std::money_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 53434C: using guessed type int *`typeinfo for'std::money_get>; //----- (004FB6D0) -------------------------------------------------------- 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; } // 4FB719: variable 'v2' is possibly undefined // 5165E0: using guessed type int std::money_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534358: using guessed type int *`typeinfo for'std::money_put>; //----- (004FB720) -------------------------------------------------------- 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; } // 4FB769: variable 'v2' is possibly undefined // 5165E4: using guessed type int std::money_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534364: using guessed type int *`typeinfo for'std::money_put>; //----- (004FB770) -------------------------------------------------------- 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; } // 4FB7B9: variable 'v2' is possibly undefined // 51642C: using guessed type int std::moneypunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5343F4: using guessed type int *`typeinfo for'std::moneypunct; //----- (004FB7C0) -------------------------------------------------------- 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; } // 4FB809: variable 'v2' is possibly undefined // 516434: using guessed type int std::moneypunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534434: using guessed type int *`typeinfo for'std::moneypunct; //----- (004FB810) -------------------------------------------------------- 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; } // 4FB859: variable 'v2' is possibly undefined // 51643C: using guessed type int std::__timepunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 53447C: using guessed type int *`typeinfo for'std::__timepunct; //----- (004FB860) -------------------------------------------------------- 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; } // 4FB8A9: variable 'v2' is possibly undefined // 516440: using guessed type int std::__timepunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534488: using guessed type int *`typeinfo for'std::__timepunct; //----- (004FB8B0) -------------------------------------------------------- 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; } // 4FB8F9: variable 'v2' is possibly undefined // 516580: using guessed type int std::ctype::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534924: using guessed type int *`typeinfo for'std::ctype; //----- (004FB900) -------------------------------------------------------- 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; } // 4FB949: variable 'v2' is possibly undefined // 516584: using guessed type int std::ctype::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534944: using guessed type int *`typeinfo for'std::ctype; //----- (004FB950) -------------------------------------------------------- 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; } // 4FB999: variable 'v2' is possibly undefined // 5165F8: using guessed type int std::codecvt::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534980: using guessed type int *`typeinfo for'std::codecvt; //----- (004FB9A0) -------------------------------------------------------- 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; } // 4FB9E9: variable 'v2' is possibly undefined // 5165FC: using guessed type int std::codecvt::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 53498C: using guessed type int *`typeinfo for'std::codecvt; //----- (004FB9F0) -------------------------------------------------------- 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; } // 4FBA39: variable 'v2' is possibly undefined // 516600: using guessed type int std::collate::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534998: using guessed type int *`typeinfo for'std::collate; //----- (004FBA40) -------------------------------------------------------- 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; } // 4FBA89: variable 'v2' is possibly undefined // 516604: using guessed type int std::collate::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5349A4: using guessed type int *`typeinfo for'std::collate; //----- (004FBA90) -------------------------------------------------------- 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; } // 4FBAD9: variable 'v2' is possibly undefined // 516608: using guessed type int std::num_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5349B0: using guessed type int *`typeinfo for'std::num_get>; //----- (004FBAE0) -------------------------------------------------------- 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; } // 4FBB29: variable 'v2' is possibly undefined // 51660C: using guessed type int std::num_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5349BC: using guessed type int *`typeinfo for'std::num_get>; //----- (004FBB30) -------------------------------------------------------- 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; } // 4FBB79: variable 'v2' is possibly undefined // 516610: using guessed type int std::num_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5349C8: using guessed type int *`typeinfo for'std::num_put>; //----- (004FBB80) -------------------------------------------------------- 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; } // 4FBBC9: variable 'v2' is possibly undefined // 516614: using guessed type int std::num_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5349D4: using guessed type int *`typeinfo for'std::num_put>; //----- (004FBBD0) -------------------------------------------------------- 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; } // 4FBC19: variable 'v2' is possibly undefined // 516620: using guessed type int std::messages::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5349F4: using guessed type int *`typeinfo for'std::messages; //----- (004FBC20) -------------------------------------------------------- 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; } // 4FBC69: variable 'v2' is possibly undefined // 516624: using guessed type int std::messages::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A14: using guessed type int *`typeinfo for'std::messages; //----- (004FBC70) -------------------------------------------------------- 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; } // 4FBCB9: variable 'v2' is possibly undefined // 516628: using guessed type int std::numpunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A34: using guessed type int *`typeinfo for'std::numpunct; //----- (004FBCC0) -------------------------------------------------------- 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; } // 4FBD09: variable 'v2' is possibly undefined // 51662C: using guessed type int std::numpunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A40: using guessed type int *`typeinfo for'std::numpunct; //----- (004FBD10) -------------------------------------------------------- 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; } // 4FBD59: variable 'v2' is possibly undefined // 516630: using guessed type int std::time_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A4C: using guessed type int *`typeinfo for'std::time_get>; //----- (004FBD60) -------------------------------------------------------- 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; } // 4FBDA9: variable 'v2' is possibly undefined // 516634: using guessed type int std::time_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A6C: using guessed type int *`typeinfo for'std::time_get>; //----- (004FBDB0) -------------------------------------------------------- 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; } // 4FBDF9: variable 'v2' is possibly undefined // 516638: using guessed type int std::time_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A8C: using guessed type int *`typeinfo for'std::time_put>; //----- (004FBE00) -------------------------------------------------------- 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; } // 4FBE49: variable 'v2' is possibly undefined // 51663C: using guessed type int std::time_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A98: using guessed type int *`typeinfo for'std::time_put>; //----- (004FBE50) -------------------------------------------------------- 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; } // 4FBE99: variable 'v2' is possibly undefined // 516640: using guessed type int std::money_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534AD0: using guessed type int *`typeinfo for'std::money_get>; //----- (004FBEA0) -------------------------------------------------------- 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; } // 4FBEE9: variable 'v2' is possibly undefined // 516644: using guessed type int std::money_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534ADC: using guessed type int *`typeinfo for'std::money_get>; //----- (004FBEF0) -------------------------------------------------------- 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; } // 4FBF39: variable 'v2' is possibly undefined // 516648: using guessed type int std::money_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534AE8: using guessed type int *`typeinfo for'std::money_put>; //----- (004FBF40) -------------------------------------------------------- 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; } // 4FBF89: variable 'v2' is possibly undefined // 51664C: using guessed type int std::money_put>::id[5]; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534AF4: using guessed type int *`typeinfo for'std::money_put>; //----- (004FBF90) -------------------------------------------------------- void __noreturn std::terminate(void) { __cxxabiv1::__terminate(__cxxabiv1::__terminate_handler); } //----- (004FBFA0) -------------------------------------------------------- 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; } // 5165A8: using guessed type int std::moneypunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534118: using guessed type int *`typeinfo for'std::moneypunct; //----- (004FC000) -------------------------------------------------------- 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; } // 5165AC: using guessed type int std::moneypunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534138: using guessed type int *`typeinfo for'std::moneypunct; //----- (004FC060) -------------------------------------------------------- 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; } // 5165B0: using guessed type int std::moneypunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534158: using guessed type int *`typeinfo for'std::moneypunct; //----- (004FC0C0) -------------------------------------------------------- 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; } // 5165B4: using guessed type int std::moneypunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534178: using guessed type int *`typeinfo for'std::moneypunct; //----- (004FC120) -------------------------------------------------------- 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; } // 5165B8: using guessed type int std::collate::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534290: using guessed type int *`typeinfo for'std::collate; //----- (004FC180) -------------------------------------------------------- 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; } // 5165BC: using guessed type int std::collate::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 53429C: using guessed type int *`typeinfo for'std::collate; //----- (004FC1E0) -------------------------------------------------------- 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; } // 5165C0: using guessed type int std::messages::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5342A8: using guessed type int *`typeinfo for'std::messages; //----- (004FC240) -------------------------------------------------------- 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; } // 5165C4: using guessed type int std::messages::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5342C8: using guessed type int *`typeinfo for'std::messages; //----- (004FC2A0) -------------------------------------------------------- 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; } // 5165C8: using guessed type int std::numpunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5342E8: using guessed type int *`typeinfo for'std::numpunct; //----- (004FC300) -------------------------------------------------------- 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; } // 5165CC: using guessed type int std::numpunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5342F4: using guessed type int *`typeinfo for'std::numpunct; //----- (004FC360) -------------------------------------------------------- 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; } // 5165D0: using guessed type int std::time_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534300: using guessed type int *`typeinfo for'std::time_get>; //----- (004FC3C0) -------------------------------------------------------- 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; } // 5165D4: using guessed type int std::time_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534320: using guessed type int *`typeinfo for'std::time_get>; //----- (004FC420) -------------------------------------------------------- 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; } // 5165D8: using guessed type int std::money_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534340: using guessed type int *`typeinfo for'std::money_get>; //----- (004FC480) -------------------------------------------------------- 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; } // 5165DC: using guessed type int std::money_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 53434C: using guessed type int *`typeinfo for'std::money_get>; //----- (004FC4E0) -------------------------------------------------------- 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; } // 5165E0: using guessed type int std::money_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534358: using guessed type int *`typeinfo for'std::money_put>; //----- (004FC540) -------------------------------------------------------- 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; } // 5165E4: using guessed type int std::money_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534364: using guessed type int *`typeinfo for'std::money_put>; //----- (004FC5A0) -------------------------------------------------------- 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; } // 51642C: using guessed type int std::moneypunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5343F4: using guessed type int *`typeinfo for'std::moneypunct; //----- (004FC600) -------------------------------------------------------- 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; } // 516430: using guessed type int std::moneypunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534414: using guessed type int *`typeinfo for'std::moneypunct; //----- (004FC660) -------------------------------------------------------- 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; } // 516434: using guessed type int std::moneypunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534434: using guessed type int *`typeinfo for'std::moneypunct; //----- (004FC6C0) -------------------------------------------------------- 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; } // 516438: using guessed type int std::moneypunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534454: using guessed type int *`typeinfo for'std::moneypunct; //----- (004FC720) -------------------------------------------------------- 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; } // 51643C: using guessed type int std::__timepunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 53447C: using guessed type int *`typeinfo for'std::__timepunct; //----- (004FC780) -------------------------------------------------------- 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; } // 516440: using guessed type int std::__timepunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534488: using guessed type int *`typeinfo for'std::__timepunct; //----- (004FC7E0) -------------------------------------------------------- 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; } // 516580: using guessed type int std::ctype::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534924: using guessed type int *`typeinfo for'std::ctype; //----- (004FC840) -------------------------------------------------------- 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; } // 516584: using guessed type int std::ctype::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534944: using guessed type int *`typeinfo for'std::ctype; //----- (004FC8A0) -------------------------------------------------------- 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; } // 5165F8: using guessed type int std::codecvt::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534980: using guessed type int *`typeinfo for'std::codecvt; //----- (004FC900) -------------------------------------------------------- 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; } // 5165FC: using guessed type int std::codecvt::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 53498C: using guessed type int *`typeinfo for'std::codecvt; //----- (004FC960) -------------------------------------------------------- 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; } // 516600: using guessed type int std::collate::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534998: using guessed type int *`typeinfo for'std::collate; //----- (004FC9C0) -------------------------------------------------------- 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; } // 516604: using guessed type int std::collate::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5349A4: using guessed type int *`typeinfo for'std::collate; //----- (004FCA20) -------------------------------------------------------- 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; } // 516608: using guessed type int std::num_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5349B0: using guessed type int *`typeinfo for'std::num_get>; //----- (004FCA80) -------------------------------------------------------- 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; } // 51660C: using guessed type int std::num_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5349BC: using guessed type int *`typeinfo for'std::num_get>; //----- (004FCAE0) -------------------------------------------------------- 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; } // 516610: using guessed type int std::num_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5349C8: using guessed type int *`typeinfo for'std::num_put>; //----- (004FCB40) -------------------------------------------------------- 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; } // 516614: using guessed type int std::num_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5349D4: using guessed type int *`typeinfo for'std::num_put>; //----- (004FCBA0) -------------------------------------------------------- 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; } // 516620: using guessed type int std::messages::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 5349F4: using guessed type int *`typeinfo for'std::messages; //----- (004FCC00) -------------------------------------------------------- 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; } // 516624: using guessed type int std::messages::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A14: using guessed type int *`typeinfo for'std::messages; //----- (004FCC60) -------------------------------------------------------- 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; } // 516628: using guessed type int std::numpunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A34: using guessed type int *`typeinfo for'std::numpunct; //----- (004FCCC0) -------------------------------------------------------- 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; } // 51662C: using guessed type int std::numpunct::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A40: using guessed type int *`typeinfo for'std::numpunct; //----- (004FCD20) -------------------------------------------------------- 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; } // 516630: using guessed type int std::time_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A4C: using guessed type int *`typeinfo for'std::time_get>; //----- (004FCD80) -------------------------------------------------------- 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; } // 516634: using guessed type int std::time_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A6C: using guessed type int *`typeinfo for'std::time_get>; //----- (004FCDE0) -------------------------------------------------------- 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; } // 516638: using guessed type int std::time_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A8C: using guessed type int *`typeinfo for'std::time_put>; //----- (004FCE40) -------------------------------------------------------- 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; } // 51663C: using guessed type int std::time_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534A98: using guessed type int *`typeinfo for'std::time_put>; //----- (004FCEA0) -------------------------------------------------------- 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; } // 516640: using guessed type int std::money_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534AD0: using guessed type int *`typeinfo for'std::money_get>; //----- (004FCF00) -------------------------------------------------------- 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; } // 516644: using guessed type int std::money_get>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534ADC: using guessed type int *`typeinfo for'std::money_get>; //----- (004FCF60) -------------------------------------------------------- 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; } // 516648: using guessed type int std::money_put>::id; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534AE8: using guessed type int *`typeinfo for'std::money_put>; //----- (004FCFC0) -------------------------------------------------------- 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; } // 51664C: using guessed type int std::money_put>::id[5]; // 534110: using guessed type int *`typeinfo for'std::locale::facet; // 534AF4: using guessed type int *`typeinfo for'std::money_put>; //----- (004FD020) -------------------------------------------------------- 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; } //----- (004FD080) -------------------------------------------------------- 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; } //----- (004FD0BC) -------------------------------------------------------- bool __cdecl std::operator==(char *a1, int a2) { return std::string::compare(a2, a1) == 0; } //----- (004FD0D8) -------------------------------------------------------- bool __cdecl std::operator==(int a1, char *a2) { return std::string::compare(a1, a2) == 0; } //----- (004FD100) -------------------------------------------------------- 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; } //----- (004FD160) -------------------------------------------------------- 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; } //----- (004FD1C0) -------------------------------------------------------- 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; } //----- (004FD220) -------------------------------------------------------- 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); } // 4FD220: using guessed type int var_D[3]; //----- (004FD250) -------------------------------------------------------- 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); } // 4FD250: using guessed type int var_10[4]; //----- (004FD280) -------------------------------------------------------- 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); } // 4FD280: using guessed type int var_D[3]; //----- (004FD2B0) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; return result; } //----- (004FD2D0) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; return result; } //----- (004FD2F0) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; return result; } //----- (004FD310) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; return result; } //----- (004FD330) -------------------------------------------------------- _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; } //----- (004FD370) -------------------------------------------------------- _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; } //----- (004FD3E0) -------------------------------------------------------- std::ostream::sentry *__cdecl std::operator<<(std::ostream::sentry *a1, int *a2) { return std::__ostream_insert>(a1, *a2, a2[1]); } //----- (004FD410) -------------------------------------------------------- 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; } //----- (004FD470) -------------------------------------------------------- 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; } } //----- (004FD5D0) -------------------------------------------------------- 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); } // 4FD5D0: using guessed type __int16 var_10[8]; //----- (004FD600) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; return result; } //----- (004FD620) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; return result; } //----- (004FD640) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; return result; } //----- (004FD660) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; return result; } //----- (004FD680) -------------------------------------------------------- _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; } //----- (004FD6C0) -------------------------------------------------------- _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; } //----- (004FD720) -------------------------------------------------------- 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); } // 4FD720: using guessed type __int16 var_E[7]; //----- (004FD770) -------------------------------------------------------- unsigned int __cdecl std::operator<(int a1, int a2) { return (unsigned int)std::string::compare(a1, a2) >> 31; } //----- (004FD78C) -------------------------------------------------------- bool __cdecl std::operator<(int a1, int a2) { int v2; // ebx int v3; // esi int v4; // edi unsigned int v5; // eax v2 = *(_DWORD *)(a2 + 12); v3 = *(_DWORD *)(a1 + 12); v4 = a2 + 4; while ( a1 + 4 != v3 ) { if ( v4 == v2 ) return 0; v5 = *(_DWORD *)(v2 + 16); if ( *(_DWORD *)(v3 + 16) < v5 ) return 1; if ( *(_DWORD *)(v3 + 16) > v5 ) return 0; v3 = std::_Rb_tree_increment(v3); v2 = std::_Rb_tree_increment(v2); } return v4 != v2; } // 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); //----- (004FD7E8) -------------------------------------------------------- int __cdecl std::operator!=(char *a1, int a2) { int v2; // eax LOBYTE(v2) = std::operator==(a1, a2); return v2 ^ 1; } // 4FD801: variable 'v2' is possibly undefined //----- (004FD808) -------------------------------------------------------- int __cdecl std::operator!=(int a1, char *a2) { int v2; // eax LOBYTE(v2) = std::operator==(a1, a2); return v2 ^ 1; } // 4FD821: variable 'v2' is possibly undefined //----- (004FD828) -------------------------------------------------------- int __cdecl std::operator!=(int a1, int a2) { int v2; // eax LOBYTE(v2) = std::operator==(a1, a2); return v2 ^ 1; } // 4FD841: variable 'v2' is possibly undefined //----- (004FD848) -------------------------------------------------------- _DWORD *__cdecl std::operator+(_DWORD *a1, _DWORD *a2, unsigned int *a3) { unsigned int v3; // ebx unsigned int v4; // edx unsigned int v5; // ebx _DWORD *v6; // eax v3 = 15; v4 = a2[1] + a3[1]; if ( (_DWORD *)*a2 != a2 + 2 ) v3 = a2[2]; if ( v4 <= v3 ) goto LABEL_8; v5 = 15; if ( (unsigned int *)*a3 != a3 + 2 ) v5 = a3[2]; if ( v4 > v5 ) LABEL_8: v6 = std::string::append(a2, (int)a3); else v6 = std::string::insert(a3, 0, (int)a2); std::string::basic_string(a1, v6); return a1; } //----- (004FD8B8) -------------------------------------------------------- _DWORD *__cdecl std::operator+(_DWORD *a1, char *a2, unsigned int *a3) { unsigned int *v3; // eax v3 = std::string::insert(a3, 0, a2); std::string::basic_string(a1, v3); return a1; } //----- (004FD8E8) -------------------------------------------------------- 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; } //----- (004FD960) -------------------------------------------------------- _DWORD *__cdecl std::operator+(_DWORD *a1, int a2, char *a3) { std::string::basic_string(a1, a2); std::string::append(a1, a3); return a1; } //----- (004FD9A0) -------------------------------------------------------- _DWORD *__cdecl std::operator+(_DWORD *a1, int a2, int a3) { std::string::basic_string(a1, a2); std::string::append(a1, a3); return a1; } //----- (004FD9E0) -------------------------------------------------------- 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::append((_DWORD *)a1, 1u, a2); std::string::append((_DWORD *)a1, a3); return a1; } //----- (004FDA50) -------------------------------------------------------- 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_51641C; 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; } // 4FDA7E: variable 'v6' is possibly undefined // 4FDA92: variable 'v8' is possibly undefined // 4FDA9F: variable 'v7' is possibly undefined //----- (004FDAD0) -------------------------------------------------------- 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; } // 4FDAFC: variable 'v6' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; // 4FDAD0: using guessed type char var_9[9]; //----- (004FDB70) -------------------------------------------------------- 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_51641C; 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; } // 4FDB95: variable 'v4' is possibly undefined // 4FDBBC: variable 'v5' is possibly undefined //----- (004FDBF0) -------------------------------------------------------- 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; } //----- (004FDCA0) -------------------------------------------------------- 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; } // 4FDCCD: variable 'v4' is possibly undefined //----- (004FDD10) -------------------------------------------------------- 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; } //----- (004FDDB0) -------------------------------------------------------- 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_51640C; v4 = v3; std::wstring::reserve(a1, (char *)(v3 + *((_DWORD *)*a3 - 3))); std::wstring::append(a1, String, v4); std::wstring::append(a1, a3); return a1; } //----- (004FDE30) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; // 4FDE30: using guessed type char var_9[9]; //----- (004FDED0) -------------------------------------------------------- void **__cdecl std::operator+(void **a1, wchar_t a2, const wchar_t **a3) { *a1 = &unk_51640C; std::wstring::reserve(a1, (char *)(*((_DWORD *)*a3 - 3) + 1)); std::wstring::append(a1, 1u, a2); std::wstring::append(a1, a3); return a1; } //----- (004FDF90) -------------------------------------------------------- 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; } // 4FE2F3: control flows out of bounds to 5062B2 // 4FDFAA: variable 'Size' is possibly undefined // 4FDFE7: variable 'Src' is possibly undefined // 5062B0: using guessed type int std::operator>>>(void); //----- (004FE310) -------------------------------------------------------- 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; } // 4FE327: variable 'v7' is possibly undefined // 4FE310: using guessed type char var_D[13]; //----- (004FE400) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; return result; } //----- (004FE420) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; return result; } //----- (004FE440) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; return result; } //----- (004FE460) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; return result; } //----- (004FE480) -------------------------------------------------------- _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; } //----- (004FE4C0) -------------------------------------------------------- _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; } //----- (004FE530) -------------------------------------------------------- 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; } // 4FE82C: control flows out of bounds to 50601A // 4FE831: control flows out of bounds to 506041 // 4FE54D: variable 'v21' is possibly undefined // 4FE5BA: variable 'v20' is possibly undefined //----- (004FE840) -------------------------------------------------------- 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; } // 4FE895: variable 'v17' is possibly undefined //----- (004FEB30) -------------------------------------------------------- _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; } // 4FEB30: using guessed type char var_D[13]; //----- (004FEC20) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; return result; } //----- (004FEC40) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; return result; } //----- (004FEC60) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; return result; } //----- (004FEC80) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; return result; } //----- (004FECA0) -------------------------------------------------------- _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; } //----- (004FECE0) -------------------------------------------------------- _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; } //----- (004FED40) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::iostream::~iostream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 1) = &unk_5339E8; *(v2 - 3) = &unk_5339C0; *(v2 - 2) = 0; *v2 = &off_539474; std::ios_base::~ios_base((int)v2); operator delete((void *)(a1 - 8)); } // 539474: using guessed type int (*off_539474)(); //----- (004FED80) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::iostream::~iostream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &unk_5339E8; v1 = a1 + 1; *(v1 - 3) = &unk_5339C0; *(v1 - 2) = 0; *v1 = &off_539474; std::ios_base::~ios_base((int)v1); } // 539474: using guessed type int (*off_539474)(); //----- (004FEDB0) -------------------------------------------------------- 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_538764; v3[27] = off_53878C; *(v3 - 1) = off_538778; *v3 = &off_5386E0; std::filebuf::close((int)v3); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_533A74; *(_DWORD *)(a1 - 8) = &unk_533A4C; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 112) = &off_539474; std::ios_base::~ios_base(a1 + 112); operator delete(v1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538764: using guessed type int (*off_538764)(); // 538778: using guessed type int (*off_538778[2])(); // 53878C: using guessed type int (*off_53878C[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FEE40) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 3) = &off_538764; v2[27] = off_53878C; *(v2 - 1) = off_538778; *v2 = &off_5386E0; std::filebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_533A74; *(_DWORD *)(a1 - 8) = &unk_533A4C; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 112) = &off_539474; std::ios_base::~ios_base(a1 + 112); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538764: using guessed type int (*off_538764)(); // 538778: using guessed type int (*off_538778[2])(); // 53878C: using guessed type int (*off_53878C[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FEEC0) -------------------------------------------------------- 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_5387A0; v3[28] = off_5387C8; *(v3 - 1) = off_5387B4; *v3 = &off_538720; std::wfilebuf::close((int)v3); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_533B00; *(_DWORD *)(a1 - 8) = &unk_533A9C; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 116) = &off_539484; std::ios_base::~ios_base(a1 + 116); operator delete(v1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 5387A0: using guessed type int (*off_5387A0)(); // 5387B4: using guessed type int (*off_5387B4[2])(); // 5387C8: using guessed type int (*off_5387C8[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FEF50) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 3) = &off_5387A0; v2[28] = off_5387C8; *(v2 - 1) = off_5387B4; *v2 = &off_538720; std::wfilebuf::close((int)v2); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_533B00; *(_DWORD *)(a1 - 8) = &unk_533A9C; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 116) = &off_539484; std::ios_base::~ios_base(a1 + 116); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 5387A0: using guessed type int (*off_5387A0)(); // 5387B4: using guessed type int (*off_5387B4[2])(); // 5387C8: using guessed type int (*off_5387C8[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FEFD0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 1) = &unk_533BA0; *(v2 - 3) = &unk_533B78; *(v2 - 2) = 0; *v2 = &off_539484; std::ios_base::~ios_base((int)v2); operator delete((void *)(a1 - 8)); } // 539484: using guessed type int (*off_539484)(); //----- (004FF010) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &unk_533BA0; v1 = a1 + 1; *(v1 - 3) = &unk_533B78; *(v1 - 2) = 0; *v1 = &off_539484; std::ios_base::~ios_base((int)v1); } // 539484: using guessed type int (*off_539484)(); //----- (004FF040) -------------------------------------------------------- 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_538194; *(_DWORD *)(a1 + 64) = off_5381BC; *(_DWORD *)a1 = off_5381A8; *(_DWORD *)(a1 + 4) = &off_537F68; if ( v3 != (void *)(a1 + 48) ) operator delete(v3); *(_DWORD *)(a1 + 4) = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_53386C; *(_DWORD *)(a1 - 8) = &unk_533844; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 64) = &off_539474; std::ios_base::~ios_base(a1 + 64); operator delete(v1); } // 537F68: using guessed type int (*off_537F68)(); // 538194: using guessed type int (*off_538194)(); // 5381A8: using guessed type int (*off_5381A8[2])(); // 5381BC: using guessed type int (*off_5381BC[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FF0C0) -------------------------------------------------------- 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_538194; *(_DWORD *)(a1 + 64) = off_5381BC; *(_DWORD *)a1 = off_5381A8; *(_DWORD *)(a1 + 4) = &off_537F68; if ( v2 != (void *)(a1 + 48) ) operator delete(v2); *(_DWORD *)(a1 + 4) = &off_538A48; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_53386C; *(_DWORD *)(a1 - 8) = &unk_533844; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 64) = &off_539474; std::ios_base::~ios_base(a1 + 64); } // 537F68: using guessed type int (*off_537F68)(); // 538194: using guessed type int (*off_538194)(); // 5381A8: using guessed type int (*off_5381A8[2])(); // 5381BC: using guessed type int (*off_5381BC[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FF130) -------------------------------------------------------- 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_5381D0; *(_DWORD *)(a1 + 64) = off_5381F8; *(_DWORD *)a1 = off_5381E4; *(_DWORD *)(a1 + 4) = &off_537FA8; if ( v3 != (void *)(a1 + 48) ) operator delete(v3); *(_DWORD *)(a1 + 4) = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_5338F8; *(_DWORD *)(a1 - 8) = &unk_533894; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 64) = &off_539484; std::ios_base::~ios_base(a1 + 64); operator delete(v1); } // 537FA8: using guessed type int (*off_537FA8)(); // 5381D0: using guessed type int (*off_5381D0)(); // 5381E4: using guessed type int (*off_5381E4[2])(); // 5381F8: using guessed type int (*off_5381F8[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FF1B0) -------------------------------------------------------- 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_5381D0; *(_DWORD *)(a1 + 64) = off_5381F8; *(_DWORD *)a1 = off_5381E4; *(_DWORD *)(a1 + 4) = &off_537FA8; if ( v2 != (void *)(a1 + 48) ) operator delete(v2); *(_DWORD *)(a1 + 4) = &off_538A88; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_5338F8; *(_DWORD *)(a1 - 8) = &unk_533894; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 64) = &off_539484; std::ios_base::~ios_base(a1 + 64); } // 537FA8: using guessed type int (*off_537FA8)(); // 5381D0: using guessed type int (*off_5381D0)(); // 5381E4: using guessed type int (*off_5381E4[2])(); // 5381F8: using guessed type int (*off_5381F8[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FF220) -------------------------------------------------------- void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) { _DWORD *v1; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v1[2] = &unk_5339E8; *v1 = &unk_5339C0; v1[1] = 0; v1[3] = &off_539474; std::ios_base::~ios_base((int)(v1 + 3)); operator delete(v1); } // 539474: using guessed type int (*off_539474)(); //----- (004FF260) -------------------------------------------------------- void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v1[2] = &unk_5339E8; v1 += 3; *(v1 - 3) = &unk_5339C0; *(v1 - 2) = 0; *v1 = &off_539474; std::ios_base::~ios_base((int)v1); } // 539474: using guessed type int (*off_539474)(); //----- (004FF290) -------------------------------------------------------- void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) { _DWORD *v1; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_538480; v1[1] = 0; v1[2] = &off_539474; std::ios_base::~ios_base((int)(v1 + 2)); operator delete(v1); } // 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); // 539474: using guessed type int (*off_539474)(); //----- (004FF2D0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_538480; v1 += 2; *(v1 - 1) = 0; *v1 = &off_539474; std::ios_base::~ios_base((int)v1); } // 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); // 539474: using guessed type int (*off_539474)(); //----- (004FF2F0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) { _DWORD *v1; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_5384A8; v1[1] = &off_539474; std::ios_base::~ios_base((int)(v1 + 1)); operator delete(v1); } // 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); // 539474: using guessed type int (*off_539474)(); //----- (004FF320) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1++ = &off_5384A8; *v1 = &off_539474; std::ios_base::~ios_base((int)v1); } // 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); // 539474: using guessed type int (*off_539474)(); //----- (004FF340) -------------------------------------------------------- void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_538764; *((_DWORD *)v1 + 30) = off_53878C; *((_DWORD *)v1 + 2) = off_538778; *((_DWORD *)v1 + 3) = &off_5386E0; std::filebuf::close((int)(v1 + 12)); std::__basic_file::~__basic_file(v1 + 52); *((_DWORD *)v1 + 3) = &off_538A48; std::locale::~locale((_DWORD **)v1 + 10); *((_DWORD *)v1 + 2) = &unk_533A74; *(_DWORD *)v1 = &unk_533A4C; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 30) = &off_539474; std::ios_base::~ios_base((int)(v1 + 120)); operator delete(v1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538764: using guessed type int (*off_538764)(); // 538778: using guessed type int (*off_538778[2])(); // 53878C: using guessed type int (*off_53878C[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FF3D0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_538764; *((_DWORD *)v1 + 30) = off_53878C; *((_DWORD *)v1 + 2) = off_538778; *((_DWORD *)v1 + 3) = &off_5386E0; std::filebuf::close((int)(v1 + 12)); std::__basic_file::~__basic_file(v1 + 52); *((_DWORD *)v1 + 3) = &off_538A48; std::locale::~locale((_DWORD **)v1 + 10); *((_DWORD *)v1 + 2) = &unk_533A74; *(_DWORD *)v1 = &unk_533A4C; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 30) = &off_539474; std::ios_base::~ios_base((int)(v1 + 120)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538764: using guessed type int (*off_538764)(); // 538778: using guessed type int (*off_538778[2])(); // 53878C: using guessed type int (*off_53878C[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FF450) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_5387A0; *((_DWORD *)v1 + 31) = off_5387C8; *((_DWORD *)v1 + 2) = off_5387B4; *((_DWORD *)v1 + 3) = &off_538720; std::wfilebuf::close((int)(v1 + 12)); std::__basic_file::~__basic_file(v1 + 52); *((_DWORD *)v1 + 3) = &off_538A88; std::locale::~locale((_DWORD **)v1 + 10); *((_DWORD *)v1 + 2) = &unk_533B00; *(_DWORD *)v1 = &unk_533A9C; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 31) = &off_539484; std::ios_base::~ios_base((int)(v1 + 124)); operator delete(v1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 5387A0: using guessed type int (*off_5387A0)(); // 5387B4: using guessed type int (*off_5387B4[2])(); // 5387C8: using guessed type int (*off_5387C8[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FF4E0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_5387A0; *((_DWORD *)v1 + 31) = off_5387C8; *((_DWORD *)v1 + 2) = off_5387B4; *((_DWORD *)v1 + 3) = &off_538720; std::wfilebuf::close((int)(v1 + 12)); std::__basic_file::~__basic_file(v1 + 52); *((_DWORD *)v1 + 3) = &off_538A88; std::locale::~locale((_DWORD **)v1 + 10); *((_DWORD *)v1 + 2) = &unk_533B00; *(_DWORD *)v1 = &unk_533A9C; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 31) = &off_539484; std::ios_base::~ios_base((int)(v1 + 124)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 5387A0: using guessed type int (*off_5387A0)(); // 5387B4: using guessed type int (*off_5387B4[2])(); // 5387C8: using guessed type int (*off_5387C8[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FF560) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) { _DWORD *v1; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_5387DC; v1[1] = 0; v1[2] = &off_539484; std::ios_base::~ios_base((int)(v1 + 2)); operator delete(v1); } // 5387DC: using guessed type int (*off_5387DC)(); // 539484: using guessed type int (*off_539484)(); //----- (004FF5A0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_5387DC; v1 += 2; *(v1 - 1) = 0; *v1 = &off_539484; std::ios_base::~ios_base((int)v1); } // 5387DC: using guessed type int (*off_5387DC)(); // 539484: using guessed type int (*off_539484)(); //----- (004FF5C0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) { _DWORD *v1; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_538804; v1[1] = &off_539484; std::ios_base::~ios_base((int)(v1 + 1)); operator delete(v1); } // 538804: using guessed type int (*off_538804)(); // 539484: using guessed type int (*off_539484)(); //----- (004FF5F0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1++ = &off_538804; *v1 = &off_539484; std::ios_base::~ios_base((int)v1); } // 538804: using guessed type int (*off_538804)(); // 539484: using guessed type int (*off_539484)(); //----- (004FF610) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_538840; *((_DWORD *)v1 + 29) = off_538854; *((_DWORD *)v1 + 2) = &off_5386E0; std::filebuf::close((int)(v1 + 8)); std::__basic_file::~__basic_file(v1 + 48); *((_DWORD *)v1 + 2) = &off_538A48; std::locale::~locale((_DWORD **)v1 + 9); *(_DWORD *)v1 = &unk_533B28; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 29) = &off_539474; std::ios_base::~ios_base((int)(v1 + 116)); operator delete(v1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538840: using guessed type int (*off_538840)(); // 538854: using guessed type int (*off_538854[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FF690) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_538840; *((_DWORD *)v1 + 29) = off_538854; *((_DWORD *)v1 + 2) = &off_5386E0; std::filebuf::close((int)(v1 + 8)); std::__basic_file::~__basic_file(v1 + 48); *((_DWORD *)v1 + 2) = &off_538A48; std::locale::~locale((_DWORD **)v1 + 9); *(_DWORD *)v1 = &unk_533B28; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 29) = &off_539474; std::ios_base::~ios_base((int)(v1 + 116)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 538840: using guessed type int (*off_538840)(); // 538854: using guessed type int (*off_538854[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FF700) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_538868; *((_DWORD *)v1 + 30) = off_53887C; *((_DWORD *)v1 + 2) = &off_538720; std::wfilebuf::close((int)(v1 + 8)); std::__basic_file::~__basic_file(v1 + 48); *((_DWORD *)v1 + 2) = &off_538A88; std::locale::~locale((_DWORD **)v1 + 9); *(_DWORD *)v1 = &unk_533B50; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 30) = &off_539484; std::ios_base::~ios_base((int)(v1 + 120)); operator delete(v1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 538868: using guessed type int (*off_538868)(); // 53887C: using guessed type int (*off_53887C[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FF780) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_538868; *((_DWORD *)v1 + 30) = off_53887C; *((_DWORD *)v1 + 2) = &off_538720; std::wfilebuf::close((int)(v1 + 8)); std::__basic_file::~__basic_file(v1 + 48); *((_DWORD *)v1 + 2) = &off_538A88; std::locale::~locale((_DWORD **)v1 + 9); *(_DWORD *)v1 = &unk_533B50; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 30) = &off_539484; std::ios_base::~ios_base((int)(v1 + 120)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 538868: using guessed type int (*off_538868)(); // 53887C: using guessed type int (*off_53887C[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FF7F0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) { _DWORD *v1; // ebx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v1[2] = &unk_533BA0; *v1 = &unk_533B78; v1[1] = 0; v1[3] = &off_539484; std::ios_base::~ios_base((int)(v1 + 3)); operator delete(v1); } // 539484: using guessed type int (*off_539484)(); //----- (004FF830) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v1[2] = &unk_533BA0; v1 += 3; *(v1 - 3) = &unk_533B78; *(v1 - 2) = 0; *v1 = &off_539484; std::ios_base::~ios_base((int)v1); } // 539484: using guessed type int (*off_539484)(); //----- (004FF860) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_5388CC; *((_DWORD *)v1 + 28) = off_5388E0; *((_DWORD *)v1 + 1) = &off_5386E0; std::filebuf::close((int)(v1 + 4)); std::__basic_file::~__basic_file(v1 + 44); *((_DWORD *)v1 + 1) = &off_538A48; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_533BC8; *((_DWORD *)v1 + 28) = &off_539474; std::ios_base::~ios_base((int)(v1 + 112)); operator delete(v1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 5388CC: using guessed type int (*off_5388CC)(); // 5388E0: using guessed type int (*off_5388E0[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FF8D0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_5388CC; *((_DWORD *)v1 + 28) = off_5388E0; *((_DWORD *)v1 + 1) = &off_5386E0; std::filebuf::close((int)(v1 + 4)); std::__basic_file::~__basic_file(v1 + 44); *((_DWORD *)v1 + 1) = &off_538A48; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_533BC8; *((_DWORD *)v1 + 28) = &off_539474; std::ios_base::~ios_base((int)(v1 + 112)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 5386E0: using guessed type int (*off_5386E0)(); // 5388CC: using guessed type int (*off_5388CC)(); // 5388E0: using guessed type int (*off_5388E0[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FF940) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_5388F4; *((_DWORD *)v1 + 29) = off_538908; *((_DWORD *)v1 + 1) = &off_538720; std::wfilebuf::close((int)(v1 + 4)); std::__basic_file::~__basic_file(v1 + 44); *((_DWORD *)v1 + 1) = &off_538A88; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_533BF0; *((_DWORD *)v1 + 29) = &off_539484; std::ios_base::~ios_base((int)(v1 + 116)); operator delete(v1); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 5388F4: using guessed type int (*off_5388F4)(); // 538908: using guessed type int (*off_538908[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FF9B0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) { char *v1; // ebx v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); *(_DWORD *)v1 = &off_5388F4; *((_DWORD *)v1 + 29) = off_538908; *((_DWORD *)v1 + 1) = &off_538720; std::wfilebuf::close((int)(v1 + 4)); std::__basic_file::~__basic_file(v1 + 44); *((_DWORD *)v1 + 1) = &off_538A88; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_533BF0; *((_DWORD *)v1 + 29) = &off_539484; std::ios_base::~ios_base((int)(v1 + 116)); } // 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); // 538720: using guessed type int (*off_538720)(); // 5388F4: using guessed type int (*off_5388F4)(); // 538908: using guessed type int (*off_538908[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FFA20) -------------------------------------------------------- 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_538194; v3 = v1; v1[18] = off_5381BC; v1[2] = off_5381A8; v1[3] = &off_537F68; if ( v2 != v1 + 14 ) operator delete(v2); v3[3] = &off_538A48; std::locale::~locale((_DWORD **)v3 + 10); v3[2] = &unk_53386C; *v3 = &unk_533844; v3[1] = 0; v3[18] = &off_539474; std::ios_base::~ios_base((int)(v3 + 18)); operator delete(v3); } // 537F68: using guessed type int (*off_537F68)(); // 538194: using guessed type int (*off_538194)(); // 5381A8: using guessed type int (*off_5381A8[2])(); // 5381BC: using guessed type int (*off_5381BC[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FFAA0) -------------------------------------------------------- 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_538194; v3 = v1; v1[18] = off_5381BC; v1[2] = off_5381A8; v1[3] = &off_537F68; if ( v2 != v1 + 14 ) operator delete(v2); v3[3] = &off_538A48; std::locale::~locale((_DWORD **)v3 + 10); v3[2] = &unk_53386C; *v3 = &unk_533844; v3[1] = 0; v3[18] = &off_539474; std::ios_base::~ios_base((int)(v3 + 18)); } // 537F68: using guessed type int (*off_537F68)(); // 538194: using guessed type int (*off_538194)(); // 5381A8: using guessed type int (*off_5381A8[2])(); // 5381BC: using guessed type int (*off_5381BC[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FFB10) -------------------------------------------------------- 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_5381D0; v3 = v1; v1[18] = off_5381F8; v1[2] = off_5381E4; v1[3] = &off_537FA8; if ( v2 != v1 + 14 ) operator delete(v2); v3[3] = &off_538A88; std::locale::~locale((_DWORD **)v3 + 10); v3[2] = &unk_5338F8; *v3 = &unk_533894; v3[1] = 0; v3[18] = &off_539484; std::ios_base::~ios_base((int)(v3 + 18)); operator delete(v3); } // 537FA8: using guessed type int (*off_537FA8)(); // 5381D0: using guessed type int (*off_5381D0)(); // 5381E4: using guessed type int (*off_5381E4[2])(); // 5381F8: using guessed type int (*off_5381F8[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FFB90) -------------------------------------------------------- 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_5381D0; v3 = v1; v1[18] = off_5381F8; v1[2] = off_5381E4; v1[3] = &off_537FA8; if ( v2 != v1 + 14 ) operator delete(v2); v3[3] = &off_538A88; std::locale::~locale((_DWORD **)v3 + 10); v3[2] = &unk_5338F8; *v3 = &unk_533894; v3[1] = 0; v3[18] = &off_539484; std::ios_base::~ios_base((int)(v3 + 18)); } // 537FA8: using guessed type int (*off_537FA8)(); // 5381D0: using guessed type int (*off_5381D0)(); // 5381E4: using guessed type int (*off_5381E4[2])(); // 5381F8: using guessed type int (*off_5381F8[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FFC00) -------------------------------------------------------- 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_53820C; v3 = v1; v1[17] = off_538220; v1[2] = &off_537F68; if ( v2 != v1 + 13 ) operator delete(v2); v3[2] = &off_538A48; std::locale::~locale((_DWORD **)v3 + 9); *v3 = &unk_533920; v3[1] = 0; v3[17] = &off_539474; std::ios_base::~ios_base((int)(v3 + 17)); operator delete(v3); } // 537F68: using guessed type int (*off_537F68)(); // 53820C: using guessed type int (*off_53820C)(); // 538220: using guessed type int (*off_538220[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FFC70) -------------------------------------------------------- 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_53820C; v3 = v1; v1[17] = off_538220; v1[2] = &off_537F68; if ( v2 != v1 + 13 ) operator delete(v2); v3[2] = &off_538A48; std::locale::~locale((_DWORD **)v3 + 9); *v3 = &unk_533920; v3[1] = 0; v3[17] = &off_539474; std::ios_base::~ios_base((int)(v3 + 17)); } // 537F68: using guessed type int (*off_537F68)(); // 53820C: using guessed type int (*off_53820C)(); // 538220: using guessed type int (*off_538220[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FFCD0) -------------------------------------------------------- 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_538234; v3 = v1; v1[17] = off_538248; v1[2] = &off_537FA8; if ( v2 != v1 + 13 ) operator delete(v2); v3[2] = &off_538A88; std::locale::~locale((_DWORD **)v3 + 9); *v3 = &unk_533948; v3[1] = 0; v3[17] = &off_539484; std::ios_base::~ios_base((int)(v3 + 17)); operator delete(v3); } // 537FA8: using guessed type int (*off_537FA8)(); // 538234: using guessed type int (*off_538234)(); // 538248: using guessed type int (*off_538248[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FFD40) -------------------------------------------------------- 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_538234; v3 = v1; v1[17] = off_538248; v1[2] = &off_537FA8; if ( v2 != v1 + 13 ) operator delete(v2); v3[2] = &off_538A88; std::locale::~locale((_DWORD **)v3 + 9); *v3 = &unk_533948; v3[1] = 0; v3[17] = &off_539484; std::ios_base::~ios_base((int)(v3 + 17)); } // 537FA8: using guessed type int (*off_537FA8)(); // 538234: using guessed type int (*off_538234)(); // 538248: using guessed type int (*off_538248[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FFDA0) -------------------------------------------------------- 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_53825C; v3 = v1; v1[16] = off_538270; v1[1] = &off_537F68; if ( v2 != v1 + 12 ) operator delete(v2); v3[1] = &off_538A48; std::locale::~locale((_DWORD **)v3 + 8); *v3 = &unk_533970; v3[16] = &off_539474; std::ios_base::~ios_base((int)(v3 + 16)); operator delete(v3); } // 537F68: using guessed type int (*off_537F68)(); // 53825C: using guessed type int (*off_53825C)(); // 538270: using guessed type int (*off_538270[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FFE10) -------------------------------------------------------- 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_53825C; *((_DWORD *)v1 + 16) = off_538270; *((_DWORD *)v1 + 1) = &off_537F68; if ( v2 != v1 + 48 ) operator delete(v2); *((_DWORD *)v1 + 1) = &off_538A48; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_533970; *((_DWORD *)v1 + 16) = &off_539474; std::ios_base::~ios_base((int)(v1 + 64)); } // 537F68: using guessed type int (*off_537F68)(); // 53825C: using guessed type int (*off_53825C)(); // 538270: using guessed type int (*off_538270[2])(); // 538A48: using guessed type int (*off_538A48)(); // 539474: using guessed type int (*off_539474)(); //----- (004FFE70) -------------------------------------------------------- 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_538284; v3 = v1; v1[16] = off_538298; v1[1] = &off_537FA8; if ( v2 != v1 + 12 ) operator delete(v2); v3[1] = &off_538A88; std::locale::~locale((_DWORD **)v3 + 8); *v3 = &unk_533998; v3[16] = &off_539484; std::ios_base::~ios_base((int)(v3 + 16)); operator delete(v3); } // 537FA8: using guessed type int (*off_537FA8)(); // 538284: using guessed type int (*off_538284)(); // 538298: using guessed type int (*off_538298[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FFEE0) -------------------------------------------------------- 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_538284; *((_DWORD *)v1 + 16) = off_538298; *((_DWORD *)v1 + 1) = &off_537FA8; if ( v2 != v1 + 48 ) operator delete(v2); *((_DWORD *)v1 + 1) = &off_538A88; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_533998; *((_DWORD *)v1 + 16) = &off_539484; std::ios_base::~ios_base((int)(v1 + 64)); } // 537FA8: using guessed type int (*off_537FA8)(); // 538284: using guessed type int (*off_538284)(); // 538298: using guessed type int (*off_538298[2])(); // 538A88: using guessed type int (*off_538A88)(); // 539484: using guessed type int (*off_539484)(); //----- (004FFF40) -------------------------------------------------------- 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; } //----- (004FFF90) -------------------------------------------------------- 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; } //----- (00500020) -------------------------------------------------------- int __cdecl operator new[](unsigned int a1) { return operator new[](a1); } // 505E70: using guessed type int operator new[](void); //----- (00500040) -------------------------------------------------------- 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; } //----- (00500080) -------------------------------------------------------- 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; } //----- (005000E0) -------------------------------------------------------- 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; } //----- (00500140) -------------------------------------------------------- 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; } } //----- (005001D0) -------------------------------------------------------- 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(); } //----- (00500220) -------------------------------------------------------- void __cdecl __noreturn __cxa_call_unexpected(void *a1) { __cxa_begin_catch(a1); __cxxabiv1::__unexpected(*((void (**)(void))a1 - 10)); } // 504978: using guessed type void __noreturn __cxa_call_unexpected_cold(void); //----- (00500260) -------------------------------------------------------- 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; } //----- (00500280) -------------------------------------------------------- void __noreturn __cxa_deleted_virtual(void) { write(2, "deleted virtual method called\n", 0x1Eu); std::terminate(); } //----- (005002B0) -------------------------------------------------------- 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; } } //----- (00500350) -------------------------------------------------------- _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_51539C || a1 >= dword_5153A0 + dword_51539C ) return (_DWORD *)__mingw_free(a1); else return `anonymous namespace'::pool::free(a1, v2, v3); } // 50036B: variable 'v2' is possibly undefined // 50036B: variable 'v3' is possibly undefined // 51539C: using guessed type int dword_51539C; // 5153A0: using guessed type int dword_5153A0; //----- (00500390) -------------------------------------------------------- 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_51539C || (unsigned int)v1 >= dword_5153A0 + dword_51539C ) __mingw_free((unsigned int)a1 - 96); else `anonymous namespace'::pool::free((int)v1, v2, v3); } // 5003AE: variable 'v2' is possibly undefined // 5003AE: variable 'v3' is possibly undefined // 51539C: using guessed type int dword_51539C; // 5153A0: using guessed type int dword_5153A0; //----- (005003D0) -------------------------------------------------------- void *__cdecl __cxa_get_exception_ptr(void *a1) { return (void *)*((_DWORD *)a1 - 2); } //----- (005003E0) -------------------------------------------------------- _DWORD *__cxa_get_globals() { _DWORD *v0; // ebx _DWORD *ptr; // eax v0 = &eh_globals; if ( byte_51526C ) { 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; } // 51526C: using guessed type char byte_51526C; //----- (00500450) -------------------------------------------------------- void *__cxa_get_globals_fast() { if ( byte_51526C ) return __gthr_win32_getspecific(init); else return &eh_globals; } // 51526C: using guessed type char byte_51526C; //----- (00500480) -------------------------------------------------------- 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(); } } // 504AC0: using guessed type void __noreturn __cxa_guard_abort_cold(void); // 78A9D4: using guessed type int _CRT_MT; //----- (005004C0) -------------------------------------------------------- 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; } // 78A9D4: using guessed type int _CRT_MT; //----- (00500570) -------------------------------------------------------- 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(); } } // 504AD8: using guessed type void __noreturn __cxa_guard_release_cold(void); // 78A9D4: using guessed type int _CRT_MT; //----- (005005B0) -------------------------------------------------------- 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; } //----- (00500600) -------------------------------------------------------- void __noreturn __cxa_pure_virtual(void) { write(2, "pure virtual method called\n", 0x1Bu); std::terminate(); } //----- (00500630) -------------------------------------------------------- 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(); } //----- (00500690) -------------------------------------------------------- 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(); } //----- (00500700) -------------------------------------------------------- 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; } //----- (00500810) -------------------------------------------------------- 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; } // 504968: using guessed type void __noreturn __gxx_personality_v0_cold(void); // 533C0C: using guessed type int *`typeinfo for'__cxxabiv1::__forced_unwind; // 533C20: using guessed type int *`typeinfo for'__cxxabiv1::__foreign_exception; //----- (00500DD0) -------------------------------------------------------- void __cdecl __tcf_0_5() { if ( _CRT_MT ) __gthr_win32_mutex_destroy(&`anonymous namespace'::emergency_pool); } // 78A9D4: using guessed type int _CRT_MT; //----- (00500E00) -------------------------------------------------------- void __cdecl __tcf_0_6() { if ( byte_51526C ) __gthr_win32_key_delete(init); } // 51526C: using guessed type char byte_51526C; //----- (00500E30) -------------------------------------------------------- void __cdecl __tcf_0_7() { if ( _CRT_MT ) __gthr_win32_mutex_destroy(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); } // 78A9D4: using guessed type int _CRT_MT; //----- (00500E60) -------------------------------------------------------- void __cdecl __tcf_0_8() { if ( _CRT_MT ) __gthr_win32_mutex_destroy(&`anonymous namespace'::get_locale_mutex(void)::locale_mutex); } // 78A9D4: using guessed type int _CRT_MT; //----- (00500E90) -------------------------------------------------------- void __cdecl __tcf_0_9(std::_V2::error_category *a1) { `anonymous namespace'::__io_category_instance(void)::__ec = &off_5377AC; std::_V2::error_category::~error_category(a1); } // 516B70: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); // 5377AC: using guessed type void (__cdecl *off_5377AC)(_anonymous_namespace_::io_error_category *__hidden this); //----- (00500ED0) -------------------------------------------------------- int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // ebx std::_Rb_tree_header *v4; // ecx char **v5; // edi int v6; // eax bool v7; // dl std::_Rb_tree_header *v8; // ecx int v9; // edi int v10; // ebx _DWORD *v11; // eax _BYTE *v12; // edx char v13; // al char v14; // al _BYTE **v15; // eax _BYTE **v16; // eax std::_Rb_tree_header *v17; // esi std::_Rb_tree_header *v18; // eax std::_Rb_tree_header *v19; // edx int v20; // edx char *v21; // eax _BYTE *v22; // eax int v23; // eax std::_Rb_tree_header *v24; // ecx char v25; // dl int v26; // ebx char *v27; // ecx int v28; // edx int v29; // eax int v30; // eax std::_Rb_tree_header *v31; // ecx FILE *v32; // ebx int JsonDict; // eax char *i; // ebx int v35; // edi char *v36; // esi std::_Rb_tree_header *v38; // [esp-70h] [ebp-418h] std::_Rb_tree_header *v39; // [esp-70h] [ebp-418h] std::_Rb_tree_header *v40; // [esp-70h] [ebp-418h] char v41; // [esp+6h] [ebp-3A2h] char v42; // [esp+7h] [ebp-3A1h] char v43; // [esp+8h] [ebp-3A0h] char v44; // [esp+Ah] [ebp-39Eh] const char **v45; // [esp+Ch] [ebp-39Ch] int v46; // [esp+10h] [ebp-398h] int v47; // [esp+18h] [ebp-390h] bool excb; // [esp+1Ch] [ebp-38Ch] unsigned int exc; // [esp+1Ch] [ebp-38Ch] int exca; // [esp+1Ch] [ebp-38Ch] char *FileName; // [esp+28h] [ebp-380h] int v52[3]; // [esp+2Ch] [ebp-37Ch] BYREF int v53; // [esp+38h] [ebp-370h] BYREF int v54; // [esp+3Ch] [ebp-36Ch] int v55; // [esp+40h] [ebp-368h] char *v56; // [esp+44h] [ebp-364h] BYREF int v57; // [esp+48h] [ebp-360h] int v58; // [esp+4Ch] [ebp-35Ch] int v59[2]; // [esp+50h] [ebp-358h] BYREF char v60; // [esp+58h] [ebp-350h] BYREF char *v61; // [esp+68h] [ebp-340h] BYREF int v62; // [esp+6Ch] [ebp-33Ch] char v63; // [esp+70h] [ebp-338h] BYREF int v64; // [esp+80h] [ebp-328h] BYREF int v65[6]; // [esp+98h] [ebp-310h] BYREF char v66[24]; // [esp+B0h] [ebp-2F8h] BYREF int v67; // [esp+C8h] [ebp-2E0h] BYREF int v68; // [esp+218h] [ebp-190h] BYREF int v69; // [esp+21Ch] [ebp-18Ch] int v70; // [esp+220h] [ebp-188h] int v71; // [esp+230h] [ebp-178h] BYREF char *String[2]; // [esp+248h] [ebp-160h] BYREF int v73; // [esp+250h] [ebp-158h] BYREF int v74; // [esp+260h] [ebp-148h] BYREF char v75; // [esp+264h] [ebp-144h] BYREF char *v76; // [esp+26Ch] [ebp-13Ch] char *v77; // [esp+278h] [ebp-130h] BYREF int v78; // [esp+290h] [ebp-118h] BYREF int v79; // [esp+294h] [ebp-114h] char v80[16]; // [esp+298h] [ebp-110h] BYREF char *Format; // [esp+2A8h] [ebp-100h] BYREF int v82; // [esp+2ACh] [ebp-FCh] int v83; // [esp+2B0h] [ebp-F8h] BYREF int v84; // [esp+2C0h] [ebp-E8h] BYREF char v85[192]; // [esp+2D8h] [ebp-D0h] BYREF int *p_argc; // [esp+398h] [ebp-10h] p_argc = &argc; v46 = argc; v45 = argv; __main(); FileName = 0; v59[0] = (int)&v60; memset(v52, 0, sizeof(v52)); v59[1] = 0; v60 = 0; v61 = &v63; v62 = 0; v63 = 0; v53 = 0; v54 = 0; v55 = 0; v56 = 0; v57 = 0; v58 = 0; std::_Rb_tree_header::_Rb_tree_header(v38); std::string::basic_string("$gwx"); std::string::basic_string(" "); v3 = 1; std::_Rb_tree_header::_Rb_tree_header(v4); while ( v3 < v46 ) { std::string::basic_string("--config-path"); v5 = (char **)&v45[v3]; v6 = std::string::compare(*v5); v7 = 0; if ( !v6 ) v7 = v3 + 1 < v46; excb = v7; std::string::_M_dispose(&v84); if ( excb ) { std::string::operator=((char *)v45[++v3]); v39 = v8; } else { std::string::basic_string(*v5); v39 = (std::_Rb_tree_header *)std::vector::emplace_back(&v84); std::string::_M_dispose(&v84); } ++v3; } if ( v62 ) { v79 = 0; v78 = (int)v80; v80[0] = 0; ReadFile(v61, (int)&v78); while ( v79 ) { std::string::basic_string("\n"); GetNextArg(&v84, &v78, &Format); v39 = (std::_Rb_tree_header *)std::vector::emplace_back(&v84); std::string::_M_dispose(&v84); std::string::_M_dispose(&Format); } std::string::_M_dispose(&v78); } v9 = 0; exc = 0; v41 = 0; v42 = 0; v43 = 0; v47 = -1431655765 * ((v54 - v53) >> 3); v44 = 0; while ( v9 < v47 ) { v10 = 24 * v9; v11 = (_DWORD *)(v53 + 24 * v9); v12 = (_BYTE *)*v11; if ( *(_BYTE *)*v11 != 45 ) { std::vector::push_back(v11); goto LABEL_86; } v13 = v12[1]; switch ( v13 ) { case 'd': v14 = v12[2]; if ( !v14 ) { exc |= 2u; goto LABEL_90; } if ( v14 == 115 ) { exc |= 4u; goto LABEL_90; } break; case 's': if ( v12[2] == 116 ) { exc |= 8u; goto LABEL_90; } if ( v9 + 1 < v47 ) { v39 = (std::_Rb_tree_header *)std::vector::push_back(v53 + v10 + 24); goto LABEL_90; } break; case 'v': if ( v12[2] == 98 ) exc |= 0x10u; else v44 = 1; goto LABEL_90; case 'x': if ( v12[2] == 99 && v9 + 1 < v47 ) { v15 = (_BYTE **)(v53 + v10 + 24); if ( **v15 != 45 ) { ++v9; v39 = (std::_Rb_tree_header *)std::string::_M_assign(v15); } goto LABEL_90; } break; case 'c': if ( v12[2] == 99 && v9 + 1 < v47 ) { v16 = (_BYTE **)(v53 + v10 + 24); if ( **v16 != 45 ) { std::string::_M_assign(v16); v39 = (std::_Rb_tree_header *)v9++; } goto LABEL_90; } break; case 'o': if ( v9 + 1 < v47 ) { ++v9; FileName = *(char **)(v53 + v10 + 24); goto LABEL_90; } break; case 'g': if ( v12[2] == 110 && v9 + 1 < v47 ) { std::string::_M_assign(v53 + v10 + 24); ++v9; v39 = (std::_Rb_tree_header *)v10; goto LABEL_90; } break; case 'p': exc |= 0x20u; goto LABEL_90; case 't': exc |= 1u; goto LABEL_90; case 'i': exc |= 0x40u; goto LABEL_90; } std::string::basic_string("--split"); v17 = (std::_Rb_tree_header *)std::operator==(v10 + v53, &v84); if ( (_BYTE)v17 ) { v18 = (std::_Rb_tree_header *)(v9 + 1); LOBYTE(v18) = v9 + 1 < v47; v17 = v18; } std::string::_M_dispose(&v84); if ( (_BYTE)v17 ) { ++v9; std::string::_M_assign(v53 + v10 + 24); LABEL_86: v39 = v19; goto LABEL_90; } v20 = *(_DWORD *)(v53 + 24 * v9); if ( *(_BYTE *)(v20 + 1) == 99 && *(_BYTE *)(v20 + 2) == 98 ) { ++v9; LOBYTE(v83) = 0; Format = (char *)&v83; v21 = *(char **)(v53 + v10 + 24); exc |= 0x80u; v82 = 0; ReadFile(v21, (int)&Format); if ( v82 ) { std::string::basic_string("life_cycle_callback_content"); std::map::operator[](&v84); v39 = (std::_Rb_tree_header *)std::string::_M_assign(&Format); std::string::_M_dispose(&v84); } std::string::_M_dispose(&Format); } else if ( !std::string::compare("--pm") && v9 + 1 < v47 ) { std::string::basic_string("plain_text_marker"); std::map::operator[](&v84); std::string::_M_assign(v53 + v10 + 24); v39 = (std::_Rb_tree_header *)(v53 + v10 + 24); std::string::_M_dispose(&v84); ++v9; } else { v22 = *(_BYTE **)(v10 + v53); if ( v22[1] == 108 && v22[2] == 108 ) { v25 = v22[3]; if ( v25 != 119 && v25 != 97 ) { fprintf(&__iob[2], "Error: expected -llw or -lla, but got %s", *(const char **)(v10 + v53)); exca = -1; goto LABEL_114; } if ( !std::string::compare(" ") ) std::string::basic_string(","); else std::string::basic_string(v66); ++v9; Split(&v68, v53 + v10 + 24, &v84); v26 = v68; v27 = v56; v68 = 0; v28 = v57; v56 = (char *)v26; Format = v27; v57 = v69; v83 = v58; v82 = v28; v58 = v70; v69 = 0; v70 = 0; std::vector::~vector(&Format); std::vector::~vector(&v68); std::string::_M_dispose(&v84); } else { v23 = std::string::compare("--wxs"); v39 = v24; if ( v23 ) { v29 = std::string::compare("--gdc"); v39 = v17; if ( v29 ) { v30 = std::string::compare("--wxs-env"); v39 = v31; if ( !v30 ) v41 = 1; } else { v42 = 1; } } else { v43 = 1; } } } LABEL_90: ++v9; } if ( v44 ) { std::string::basic_string("global"); WXML::Compiler::GetVersionInfo(&Format, &v84); std::string::_M_dispose(&v84); if ( FileName && *FileName ) v32 = fopen(FileName, "w"); else v32 = &__iob[1]; fprintf(v32, "%s\n", Format); fclose(v32); std::string::_M_dispose(&Format); } if ( v43 ) { String[1] = 0; String[0] = (char *)&v73; LOBYTE(v73) = 0; std::_Rb_tree_header::_Rb_tree_header(v39); std::_Rb_tree_header::_Rb_tree_header(v40); if ( ReadFile(*(char **)v52[0], (int)String) ) { fprintf(&__iob[2], "Failed to read input from %s", *(const char **)v52[0]); exca = -1; } else { JsonDict = GetJsonDict(String, &v74); exca = JsonDict; if ( JsonDict ) { fprintf(&__iob[2], "Failed to read JSON at position %d (%c)", ~JsonDict, String[0][~JsonDict]); LABEL_106: exca = -2; } else { for ( i = v76; i != &v75; i = (char *)std::_Rb_tree_increment(i) ) { std::string::basic_string(i + 16); std::string::basic_string(i + 40); v78 = (int)v80; v79 = 0; v80[0] = 0; if ( night::compile_ns_no_wrapper(&v84, v85, 1, &v78, 0) ) { fprintf(&__iob[2], "Error in file %s: %s\n", (const char *)v84, (const char *)v78); std::string::_M_dispose(&v78); std::pair::~pair(&v84); goto LABEL_106; } v35 = snprintf(0, 0, WXML::GlassEaselWxs::sWrapper, v78) + 1; v36 = (char *)operator new[](v35); snprintf(v36, v35, WXML::GlassEaselWxs::sWrapper, v78); std::string::basic_string(v36); std::map::operator[](&v84); std::string::operator=(&Format); std::string::_M_dispose(&Format); operator delete[](v36); std::string::_M_dispose(&v78); std::pair::~pair(&v84); } DictToJsonString(&v71, &v77); main::{lambda(std::string const&)#1}::operator()(); std::string::_M_dispose(&v71); } } std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(&v77); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(&v74); std::string::_M_dispose(String); } else if ( v42 || v41 ) { main::{lambda(std::string const&)#1}::operator()(); exca = 0; } else { exca = Usage(v46, v45); } LABEL_114: std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(&v67); std::string::_M_dispose(v66); std::string::_M_dispose(v65); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(&v64); std::vector::~vector(&v56); std::vector::~vector(&v53); std::string::_M_dispose(&v61); std::string::_M_dispose(v59); std::vector::~vector(v52); return exca; } // 501A5E: conditional instruction was optimized away because %var_37C.4==0 // 500FA1: variable 'v38' is possibly undefined // 500FD7: variable 'v4' is possibly undefined // 501062: variable 'v8' is possibly undefined // 501508: variable 'v24' is possibly undefined // 501681: variable 'v31' is possibly undefined // 50169D: variable 'v19' is possibly undefined // 501782: variable 'v39' is possibly undefined // 50178D: variable 'v40' is possibly undefined // 4015F0: using guessed type int main::{lambda(std::string const&)#1}::operator()(void); // 401664: using guessed type int __fastcall std::pair::~pair(_DWORD); // 4016F6: using guessed type _DWORD __stdcall std::string::basic_string(_DWORD); // 4019B7: using guessed type _DWORD __cdecl GetNextArg(_DWORD, _DWORD, _DWORD); // 401ABA: using guessed type int __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(_DWORD); // 401ACE: using guessed type int __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound(_DWORD, _DWORD, _DWORD); // 401B0A: using guessed type int __fastcall std::vector::~vector(_DWORD); // 401B30: using guessed type _DWORD __cdecl Split(_DWORD, _DWORD, _DWORD); // 401BF0: using guessed type int __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(_DWORD); // 402415: using guessed type _DWORD __cdecl WXML::Rewrite::ToStringCode(_DWORD, _DWORD); // 40CDD5: using guessed type _DWORD __cdecl night::compile_ns_no_wrapper(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 40ECE0: using guessed type _DWORD __cdecl WXML::Compiler::GetVersionInfo(_DWORD, _DWORD); // 40EF78: using guessed type _DWORD __cdecl WXML::Compiler::WXMLHelperCode[abi:cxx11](_DWORD); // 410A55: using guessed type int __cdecl WXML::Compiler::Compile(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 44DD60: using guessed type int __main(void); // 45EA6C: using guessed type _DWORD __cdecl GetJsonDict(_DWORD, _DWORD); // 45EEBC: using guessed type _DWORD __cdecl DictToJsonString(_DWORD, _DWORD); // 4711C0: using guessed type _DWORD __stdcall std::string::substr(_DWORD, _DWORD, _DWORD); // 4723B0: using guessed type _DWORD __stdcall std::stringbuf::str(_DWORD); // 4D5E04: using guessed type _DWORD __stdcall std::map::operator[](_DWORD); // 4D5EC0: using guessed type _DWORD __stdcall std::map::operator[](_DWORD); // 4D6284: using guessed type _DWORD __stdcall std::map>::operator[](_DWORD); // 4DB584: using guessed type _DWORD __stdcall std::vector::emplace_back(_DWORD); // 4DB864: using guessed type _DWORD __stdcall std::vector::push_back(_DWORD); // 4DB8A0: using guessed type _DWORD __stdcall std::vector::operator=(_DWORD); // 4DD4B0: using guessed type int __fastcall std::string::_M_dispose(_DWORD); // 4DE230: using guessed type _DWORD __stdcall std::string::append(_DWORD); // 4DF690: using guessed type _DWORD __stdcall std::string::_M_assign(_DWORD); // 4DF9E0: using guessed type _DWORD __stdcall std::string::basic_string(_DWORD); // 4DFB40: using guessed type _DWORD __stdcall std::string::basic_string(_DWORD); // 4E0140: using guessed type _DWORD __stdcall std::string::operator=(_DWORD); // 4E0330: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 4E9D20: using guessed type int __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD); // 4EA6F0: using guessed type int __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD); // 4F390C: using guessed type _DWORD __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node(_DWORD, _DWORD, _DWORD); // 4F39E8: using guessed type __int64 __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD, _DWORD); // 4F3BEC: using guessed type _DWORD __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_Rb_tree(_DWORD); // 4F98C0: using guessed type _DWORD __cdecl std::_Rb_tree_increment(_DWORD); // 4FB224: using guessed type _DWORD __cdecl std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>(_DWORD, _DWORD, _DWORD); // 4FD080: using guessed type _DWORD __cdecl std::operator==(_DWORD, _DWORD); // 4FD770: using guessed type _DWORD __cdecl std::operator<(_DWORD, _DWORD); // 4FD848: using guessed type _DWORD __cdecl std::operator+(_DWORD, _DWORD, _DWORD); // 500ED0: using guessed type int var_310[6]; // 500ED0: using guessed type char var_D0[192]; //----- (00502E49) -------------------------------------------------------- int _GLOBAL__sub_I_sCliVersion() { std::ios_base::Init::Init(); atexit(__tcf_2); std::string::basic_string((void **)&night::nsv_, (char *)&off_517814); atexit(__tcf_3); std::string::basic_string((void **)&night::nst_, (char *)&off_517818); atexit(__tcf_4); std::string::basic_string((void **)&night::NS_TYPE_SKIP, "skip"); atexit(__tcf_5); std::string::basic_string((void **)&night::NS_TYPE_BOOL, "bool"); atexit(__tcf_6); std::string::basic_string((void **)&night::NS_TYPE_VAR, (char *)&off_517826); atexit(__tcf_7); std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)&off_51782A); atexit(__tcf_8); std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)&off_51782E); atexit(__tcf_9); std::string::basic_string((void **)&night::NS_TYPE_B_TYPE, "builtin_type"); atexit(__tcf_10); std::string::basic_string((void **)&night::NS_TYPE_KW, "kw"); atexit(__tcf_11); std::string::basic_string((void **)&night::NS_TYPE_PUNC, "punc"); atexit(__tcf_12); std::string::basic_string((void **)&night::NS_TYPE_OP, "op"); atexit(__tcf_13); std::string::basic_string((void **)&night::NS_TYPE_OP_SELF, "op_self"); atexit(__tcf_14); std::string::basic_string((void **)&night::NS_TYPE_BINARY, "binary"); atexit(__tcf_15); std::string::basic_string((void **)&night::NS_TYPE_ASSIGN, "assign"); atexit(__tcf_16); std::string::basic_string((void **)&night::NS_TYPE_TERNARY, "ternary"); atexit(__tcf_17); std::string::basic_string((void **)&night::NS_TYPE_K_V, (char *)&off_517868); atexit(__tcf_18); std::string::basic_string((void **)&night::NS_TYPE_OBJ_DOT, "obj_dot"); atexit(__tcf_19); std::string::basic_string((void **)&night::NS_TYPE_OBJ_PROPERTY, "obj_property"); atexit(__tcf_20); std::string::basic_string((void **)&night::NS_TYPE_OBJ_SELF_OP, "obj_self_op"); atexit(__tcf_21); std::string::basic_string((void **)&night::NS_TYPE_OBJ_BLOCK, "obj_block"); atexit(__tcf_22); std::string::basic_string((void **)&night::NS_TYPE_ARRAY, "array"); atexit(__tcf_23); std::string::basic_string((void **)&night::NS_TYPE_BRACKET, "bracket"); atexit(__tcf_24); std::string::basic_string((void **)&night::NS_TYPE_IF, "if"); atexit(__tcf_25); std::string::basic_string((void **)&night::NS_TYPE_FOR, (char *)&off_5178A8); atexit(__tcf_26); std::string::basic_string((void **)&night::NS_TYPE_WHILE, "while"); atexit(__tcf_27); std::string::basic_string((void **)&night::NS_TYPE_DO_WHILE, "do_while"); atexit(__tcf_28); std::string::basic_string((void **)&night::NS_TYPE_SWITCH, "switch"); atexit(__tcf_29); std::string::basic_string((void **)&night::NS_TYPE_PROG, "prog"); atexit(__tcf_30); std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM, "prog_no_sem"); atexit(__tcf_31); std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, "prog_no_sem_require"); atexit(__tcf_32); std::string::basic_string((void **)&night::NS_TYPE_FUNC, "function"); atexit(__tcf_33); std::string::basic_string((void **)&night::NS_TYPE_CALL, "call"); atexit(__tcf_34); std::string::basic_string((void **)&night::NS_BUILTIN_OP, "+-*/%=&^|<>~!?"); atexit(__tcf_35); std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); atexit(__tcf_36); std::string::basic_string( (void **)&night::NS_BUILTIN_ALL_OP, " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); atexit(__tcf_37); std::string::basic_string((void **)&night::NS_BUILTIN_PUNC, ".,;(){}[]:"); atexit(__tcf_38); std::string::basic_string((void **)&night::NS_BUILTIN_SPACE, " \t\r\n"); atexit(__tcf_39); std::string::basic_string( (void **)&night::NS_BUILTIN_KW, " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" "ile do break continue switch case default "); atexit(__tcf_40); std::string::basic_string((void **)&night::NS_BUILTIN_TYPE, " Number Math Date "); atexit(__tcf_41); std::string::basic_string((void **)&WXML::GlassEaselWxs::sGitHash, "541c39f8b49d62929ed72f2363ee6c90f3c35e04"); atexit(__tcf_42); std::string::basic_string( (void **)&WXML::GlassEaselWxs::sWrapper, "function n(nv_require,nv_exports,nv_module){%s}const t={nv_exports:{}};n((function(n){n.startsWith(\"p_\")&&(n=\"/\"" "+n.slice(2)),n.endsWith(\".wxs\")&&(n=n.slice(0,n.length-4));const t=gdc(require(n),\"nv_\");return function(){retur" "n t}}),t.nv_exports,t),Object.assign(module,gdc(t,void 0));"); atexit(__tcf_43); std::string::basic_string( (void **)&WXML::GlassEaselWxs::sGenFuncDeepCopy, "var gdc=function(){var e=function(){return void 0!==this?this:\"undefined\"!=typeof globalThis?globalThis:\"undefine" "d\"!=typeof self?self:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:{}}();return function(" "n,t,o,i=e){if(null==n)return n;if(\"undefined\"!=typeof __wxCodeSpace__&&\"function\"==typeof __wxCodeSpace__.isWxsS" "tateObject&&__wxCodeSpace__.isWxsStateObject(n))return n;if(\"string\"==typeof n||\"boolean\"==typeof n||\"number\"=" "=typeof n)return n;if(Array.isArray(n)){const e=[];for(let i=0;i~!?"); atexit(__tcf_33_0); std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); atexit(__tcf_34_0); std::string::basic_string( (void **)night::NS_BUILTIN_ALL_OP, " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); atexit(__tcf_35_0); std::string::basic_string((void **)night::NS_BUILTIN_PUNC, ".,;(){}[]:"); atexit(__tcf_36_0); std::string::basic_string((void **)night::NS_BUILTIN_SPACE, " \t\r\n"); atexit(__tcf_37_0); std::string::basic_string( (void **)night::NS_BUILTIN_KW, " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" "ile do break continue switch case default "); atexit(__tcf_38_0); std::string::basic_string((void **)night::NS_BUILTIN_TYPE, " Number Math Date "); atexit(__tcf_39_0); std::string::basic_string((void **)&night::std_v_n, "new std::vector"); atexit(__tcf_40_0); std::string::basic_string((void **)&night::std_v_v_n, "new std::vector*>"); return atexit(__tcf_41_0); } // 51C33E: using guessed type void *off_51C33E; // 51C342: using guessed type void *off_51C342; // 586AB0: using guessed type int night::NS_BUILTIN_TYPE[6]; // 586AC8: using guessed type int night::NS_BUILTIN_KW[6]; // 586AE0: using guessed type int night::NS_BUILTIN_SPACE[6]; // 586AF8: using guessed type int night::NS_BUILTIN_PUNC[6]; // 586B10: using guessed type int night::NS_BUILTIN_ALL_OP[6]; // 586B40: using guessed type int night::NS_BUILTIN_OP[6]; // 586E40: using guessed type void *night::nsv_; //----- (0050384C) -------------------------------------------------------- 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; } // 50384C: using guessed type unsigned int var_1C[7]; //----- (005038BD) -------------------------------------------------------- int _GLOBAL__sub_I__ZN5night9sourcemap21gen_sourcemap_contentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt3mapIS6_jSt4lessIS6_ESaISt4pairIS7_jEEES9_IjS6_SA_IjESaISC_IKjS6_EEERSt6vectorINS_12ns_sourcemapESaISM_EEiRS6_PS6_() { std::string::basic_string((void **)&night::nsv_, (char *)&off_51C55B); atexit(__tcf_0); std::string::basic_string((void **)&night::nst_, (char *)&off_51C55F); atexit(__tcf_1_0); std::string::basic_string((void **)&night::NS_TYPE_SKIP, "skip"); atexit(__tcf_2_1); std::string::basic_string((void **)&night::NS_TYPE_BOOL, "bool"); atexit(__tcf_3_1); std::string::basic_string((void **)&night::NS_TYPE_VAR, (char *)&off_51C56D); atexit(__tcf_4_1); std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)&off_51C571); atexit(__tcf_5_1); std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)&off_51C575); atexit(__tcf_6_1); std::string::basic_string((void **)&night::NS_TYPE_B_TYPE, "builtin_type"); atexit(__tcf_7_1); std::string::basic_string((void **)&night::NS_TYPE_KW, "kw"); atexit(__tcf_8_1); std::string::basic_string((void **)&night::NS_TYPE_PUNC, "punc"); atexit(__tcf_9_1); std::string::basic_string((void **)&night::NS_TYPE_OP, "op"); atexit(__tcf_10_1); std::string::basic_string((void **)&night::NS_TYPE_OP_SELF, "op_self"); atexit(__tcf_11_1); std::string::basic_string((void **)&night::NS_TYPE_BINARY, "binary"); atexit(__tcf_12_1); std::string::basic_string((void **)&night::NS_TYPE_ASSIGN, "assign"); atexit(__tcf_13_1); std::string::basic_string((void **)&night::NS_TYPE_TERNARY, "ternary"); atexit(__tcf_14_1); std::string::basic_string((void **)&night::NS_TYPE_K_V, (char *)&off_51C5AF); atexit(__tcf_15_1); std::string::basic_string((void **)&night::NS_TYPE_OBJ_DOT, "obj_dot"); atexit(__tcf_16_1); std::string::basic_string((void **)&night::NS_TYPE_OBJ_PROPERTY, "obj_property"); atexit(__tcf_17_1); std::string::basic_string((void **)&night::NS_TYPE_OBJ_SELF_OP, "obj_self_op"); atexit(__tcf_18_1); std::string::basic_string((void **)&night::NS_TYPE_OBJ_BLOCK, "obj_block"); atexit(__tcf_19_1); std::string::basic_string((void **)&night::NS_TYPE_ARRAY, "array"); atexit(__tcf_20_1); std::string::basic_string((void **)&night::NS_TYPE_BRACKET, "bracket"); atexit(__tcf_21_1); std::string::basic_string((void **)&night::NS_TYPE_IF, "if"); atexit(__tcf_22_1); std::string::basic_string((void **)&night::NS_TYPE_FOR, (char *)&off_51C5EF); atexit(__tcf_23_1); std::string::basic_string((void **)&night::NS_TYPE_WHILE, "while"); atexit(__tcf_24_1); std::string::basic_string((void **)&night::NS_TYPE_DO_WHILE, "do_while"); atexit(__tcf_25_1); std::string::basic_string((void **)&night::NS_TYPE_SWITCH, "switch"); atexit(__tcf_26_1); std::string::basic_string((void **)&night::NS_TYPE_PROG, "prog"); atexit(__tcf_27_1); std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM, "prog_no_sem"); atexit(__tcf_28_1); std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, "prog_no_sem_require"); atexit(__tcf_29_1); std::string::basic_string((void **)&night::NS_TYPE_FUNC, "function"); atexit(__tcf_30_1); std::string::basic_string((void **)&night::NS_TYPE_CALL, "call"); atexit(__tcf_31_1); std::string::basic_string((void **)&night::NS_BUILTIN_OP, "+-*/%=&^|<>~!?"); atexit(__tcf_32_1); std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); atexit(__tcf_33_1); std::string::basic_string( (void **)&night::NS_BUILTIN_ALL_OP, " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); atexit(__tcf_34_1); std::string::basic_string((void **)&night::NS_BUILTIN_PUNC, ".,;(){}[]:"); atexit(__tcf_35_1); std::string::basic_string((void **)&night::NS_BUILTIN_SPACE, " \t\r\n"); atexit(__tcf_36_1); std::string::basic_string( (void **)&night::NS_BUILTIN_KW, " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" "ile do break continue switch case default "); atexit(__tcf_37_1); std::string::basic_string((void **)&night::NS_BUILTIN_TYPE, " Number Math Date "); return atexit(__tcf_38_1); } // 51C55B: using guessed type void *off_51C55B; // 51C55F: using guessed type void *off_51C55F; // 51C56D: using guessed type void *off_51C56D; // 51C571: using guessed type void *off_51C571; // 51C575: using guessed type void *off_51C575; // 51C5AF: using guessed type void *off_51C5AF; // 51C5EF: using guessed type void *off_51C5EF; //----- (00503D58) -------------------------------------------------------- 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; } // 503D58: using guessed type unsigned int var_1C[7]; //----- (00503DC9) -------------------------------------------------------- int _GLOBAL__sub_I__ZN5night3str12path_combineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_RS6_() { std::string::basic_string((void **)&night::nsv_, (char *)&off_51C7CF); atexit(__tcf_1_1); std::string::basic_string((void **)&night::nst_, (char *)&off_51C7D3); atexit(__tcf_2_2); std::string::basic_string((void **)&night::NS_TYPE_SKIP, "skip"); atexit(__tcf_3_2); std::string::basic_string((void **)&night::NS_TYPE_BOOL, "bool"); atexit(__tcf_4_2); std::string::basic_string((void **)&night::NS_TYPE_VAR, (char *)&off_51C7E1); atexit(__tcf_5_2); std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)&off_51C7E5); atexit(__tcf_6_2); std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)&off_51C7E9); atexit(__tcf_7_2); std::string::basic_string((void **)&night::NS_TYPE_B_TYPE, "builtin_type"); atexit(__tcf_8_2); std::string::basic_string((void **)&night::NS_TYPE_KW, "kw"); atexit(__tcf_9_2); std::string::basic_string((void **)&night::NS_TYPE_PUNC, "punc"); atexit(__tcf_10_2); std::string::basic_string((void **)&night::NS_TYPE_OP, "op"); atexit(__tcf_11_2); std::string::basic_string((void **)&night::NS_TYPE_OP_SELF, "op_self"); atexit(__tcf_12_2); std::string::basic_string((void **)&night::NS_TYPE_BINARY, "binary"); atexit(__tcf_13_2); std::string::basic_string((void **)&night::NS_TYPE_ASSIGN, "assign"); atexit(__tcf_14_2); std::string::basic_string((void **)&night::NS_TYPE_TERNARY, "ternary"); atexit(__tcf_15_2); std::string::basic_string((void **)&night::NS_TYPE_K_V, (char *)&off_51C823); atexit(__tcf_16_2); std::string::basic_string((void **)&night::NS_TYPE_OBJ_DOT, "obj_dot"); atexit(__tcf_17_2); std::string::basic_string((void **)&night::NS_TYPE_OBJ_PROPERTY, "obj_property"); atexit(__tcf_18_2); std::string::basic_string((void **)&night::NS_TYPE_OBJ_SELF_OP, "obj_self_op"); atexit(__tcf_19_2); std::string::basic_string((void **)&night::NS_TYPE_OBJ_BLOCK, "obj_block"); atexit(__tcf_20_2); std::string::basic_string((void **)&night::NS_TYPE_ARRAY, "array"); atexit(__tcf_21_2); std::string::basic_string((void **)&night::NS_TYPE_BRACKET, "bracket"); atexit(__tcf_22_2); std::string::basic_string((void **)&night::NS_TYPE_IF, "if"); atexit(__tcf_23_2); std::string::basic_string((void **)&night::NS_TYPE_FOR, (char *)&off_51C863); atexit(__tcf_24_2); std::string::basic_string((void **)&night::NS_TYPE_WHILE, "while"); atexit(__tcf_25_2); std::string::basic_string((void **)&night::NS_TYPE_DO_WHILE, "do_while"); atexit(__tcf_26_2); std::string::basic_string((void **)&night::NS_TYPE_SWITCH, "switch"); atexit(__tcf_27_2); std::string::basic_string((void **)&night::NS_TYPE_PROG, "prog"); atexit(__tcf_28_2); std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM, "prog_no_sem"); atexit(__tcf_29_2); std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, "prog_no_sem_require"); atexit(__tcf_30_2); std::string::basic_string((void **)&night::NS_TYPE_FUNC, "function"); atexit(__tcf_31_2); std::string::basic_string((void **)&night::NS_TYPE_CALL, "call"); atexit(__tcf_32_2); std::string::basic_string((void **)&night::NS_BUILTIN_OP, "+-*/%=&^|<>~!?"); atexit(__tcf_33_2); std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); atexit(__tcf_34_2); std::string::basic_string( (void **)&night::NS_BUILTIN_ALL_OP, " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); atexit(__tcf_35_2); std::string::basic_string((void **)&night::NS_BUILTIN_PUNC, ".,;(){}[]:"); atexit(__tcf_36_2); std::string::basic_string((void **)&night::NS_BUILTIN_SPACE, " \t\r\n"); atexit(__tcf_37_2); std::string::basic_string( (void **)&night::NS_BUILTIN_KW, " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" "ile do break continue switch case default "); atexit(__tcf_38_2); std::string::basic_string((void **)&night::NS_BUILTIN_TYPE, " Number Math Date "); return atexit(__tcf_39_1); } // 51C7CF: using guessed type void *off_51C7CF; // 51C7D3: using guessed type void *off_51C7D3; // 51C7E1: using guessed type void *off_51C7E1; // 51C7E5: using guessed type void *off_51C7E5; // 51C7E9: using guessed type void *off_51C7E9; // 51C823: using guessed type void *off_51C823; // 51C863: using guessed type void *off_51C863; //----- (00504264) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXML8Compiler9GetFuncIdERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS7_ESaISt4pairIKS7_iEEERSB_() { std::ios_base::Init::Init(); atexit(__tcf_2_3); std::string::basic_string((void **)&night::nsv_, (unsigned __int8 *)&off_52DA7A); atexit(__tcf_3_3); std::string::basic_string((void **)&night::nst_, (unsigned __int8 *)&off_52DA7E); atexit(__tcf_4_3); std::string::basic_string((void **)&night::NS_TYPE_SKIP, "skip"); atexit(__tcf_5_3); std::string::basic_string((void **)&night::NS_TYPE_BOOL, "bool"); atexit(__tcf_6_3); std::string::basic_string((void **)&night::NS_TYPE_VAR, (unsigned __int8 *)&off_52DA8C); atexit(__tcf_7_3); std::string::basic_string((void **)&night::NS_TYPE_STR, (unsigned __int8 *)&off_52DA90); atexit(__tcf_8_3); std::string::basic_string((void **)&night::NS_TYPE_NUM, (unsigned __int8 *)&off_52DA94); atexit(__tcf_9_3); std::string::basic_string((void **)&night::NS_TYPE_B_TYPE, "builtin_type"); atexit(__tcf_10_3); std::string::basic_string((void **)&night::NS_TYPE_KW, "kw"); atexit(__tcf_11_3); std::string::basic_string((void **)&night::NS_TYPE_PUNC, "punc"); atexit(__tcf_12_3); std::string::basic_string((void **)&night::NS_TYPE_OP, "op"); atexit(__tcf_13_3); std::string::basic_string((void **)&night::NS_TYPE_OP_SELF, "op_self"); atexit(__tcf_14_3); std::string::basic_string((void **)&night::NS_TYPE_BINARY, "binary"); atexit(__tcf_15_3); std::string::basic_string((void **)&night::NS_TYPE_ASSIGN, "assign"); atexit(__tcf_16_3); std::string::basic_string((void **)&night::NS_TYPE_TERNARY, "ternary"); atexit(__tcf_17_3); std::string::basic_string((void **)&night::NS_TYPE_K_V, (unsigned __int8 *)&off_52DACE); atexit(__tcf_18_3); std::string::basic_string((void **)&night::NS_TYPE_OBJ_DOT, "obj_dot"); atexit(__tcf_19_3); std::string::basic_string((void **)&night::NS_TYPE_OBJ_PROPERTY, "obj_property"); atexit(__tcf_20_3); std::string::basic_string((void **)&night::NS_TYPE_OBJ_SELF_OP, "obj_self_op"); atexit(__tcf_21_3); std::string::basic_string((void **)&night::NS_TYPE_OBJ_BLOCK, "obj_block"); atexit(__tcf_22_3); std::string::basic_string((void **)&night::NS_TYPE_ARRAY, "array"); atexit(__tcf_23_3); std::string::basic_string((void **)&night::NS_TYPE_BRACKET, "bracket"); atexit(__tcf_24_3); std::string::basic_string((void **)&night::NS_TYPE_IF, "if"); atexit(__tcf_25_3); std::string::basic_string((void **)&night::NS_TYPE_FOR, (unsigned __int8 *)&off_52DB0E); atexit(__tcf_26_3); std::string::basic_string((void **)&night::NS_TYPE_WHILE, "while"); atexit(__tcf_27_3); std::string::basic_string((void **)&night::NS_TYPE_DO_WHILE, "do_while"); atexit(__tcf_28_3); std::string::basic_string((void **)&night::NS_TYPE_SWITCH, "switch"); atexit(__tcf_29_3); std::string::basic_string((void **)&night::NS_TYPE_PROG, "prog"); atexit(__tcf_30_3); std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM, "prog_no_sem"); atexit(__tcf_31_3); std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, "prog_no_sem_require"); atexit(__tcf_32_3); std::string::basic_string((void **)&night::NS_TYPE_FUNC, "function"); atexit(__tcf_33_3); std::string::basic_string((void **)&night::NS_TYPE_CALL, "call"); atexit(__tcf_34_3); std::string::basic_string((void **)&night::NS_BUILTIN_OP, "+-*/%=&^|<>~!?"); atexit(__tcf_35_3); std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); atexit(__tcf_36_3); std::string::basic_string( (void **)&night::NS_BUILTIN_ALL_OP, " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); atexit(__tcf_37_3); std::string::basic_string((void **)&night::NS_BUILTIN_PUNC, ".,;(){}[]:"); atexit(__tcf_38_3); std::string::basic_string((void **)&night::NS_BUILTIN_SPACE, " \t\r\n"); atexit(__tcf_39_2); std::string::basic_string( (void **)&night::NS_BUILTIN_KW, " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" "ile do break continue switch case default "); atexit(__tcf_40_1); std::string::basic_string((void **)&night::NS_BUILTIN_TYPE, " Number Math Date "); return atexit(__tcf_41_1); } // 52DA7A: using guessed type void *off_52DA7A; // 52DA7E: using guessed type void *off_52DA7E; // 52DA8C: using guessed type void *off_52DA8C; // 52DA90: using guessed type void *off_52DA90; // 52DA94: using guessed type void *off_52DA94; // 52DACE: using guessed type void *off_52DACE; // 52DB0E: using guessed type void *off_52DB0E; //----- (00504714) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXML6DOMLib7WXMLDom12componentCntE() { std::ios_base::Init::Init(); return atexit(__tcf_1_2); } //----- (00504734) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXML6DOMLib7Machine5ResetEv() { std::ios_base::Init::Init(); return atexit(__tcf_0_0); } //----- (00504754) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXML8Compiler24CalculateOutputChunkKeysERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKS7_RKSt3mapIS7_S9_St4lessIS7_ESaISt4pairISC_S9_EEESM_RSK_() { std::ios_base::Init::Init(); return atexit(__tcf_0_1); } //----- (00504774) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXML7EXPRLib7OPShort5CONSTE() { std::ios_base::Init::Init(); return atexit(__tcf_1_3); } //----- (00504794) -------------------------------------------------------- int _GLOBAL__sub_I__ZNK4WXML7EXPRLib5Token12GetTokenNameEv() { std::ios_base::Init::Init(); return atexit(__tcf_0_3); } //----- (005047B4) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXML7EXPRLib12TransitTable13GetExprNTTypeEv() { std::ios_base::Init::Init(); return atexit(__tcf_1_4); } //----- (005047D4) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXML16StringTemplating4DealEPKcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorINS0_5TokenESaISB_EERb() { std::ios_base::Init::Init(); return atexit(__tcf_0_4); } //----- (005047F4) -------------------------------------------------------- #error "5047FB: call analysis failed (funcsize=7)" //----- (00504838) -------------------------------------------------------- void __cdecl __noreturn `anonymous namespace'::pool::allocate() { __gnu_cxx::__throw_concurrence_lock_error(); } //----- (00504880) -------------------------------------------------------- int _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv() { _DWORD *v0; // eax if ( _CRT_MT ) __gthr_win32_mutex_init_function(&`anonymous namespace'::emergency_pool); dword_5153A0 = 18944; v0 = malloc(0x4A00u); dword_51539C = (int)v0; if ( v0 ) { dword_515398 = (int)v0; *v0 = 18944; v0[1] = 0; } else { dword_5153A0 = 0; dword_515398 = 0; } return atexit(__tcf_0_5); } // 515398: using guessed type int dword_515398; // 51539C: using guessed type int dword_51539C; // 5153A0: using guessed type int dword_5153A0; // 78A9D4: using guessed type int _CRT_MT; //----- (00504900) -------------------------------------------------------- int _GLOBAL__sub_I___cxa_get_globals_fast() { byte_51526C = 0; if ( _CRT_MT ) byte_51526C = __gthr_win32_key_create(&init, (void (*)(void *))eh_globals_dtor) == 0; return atexit(__tcf_0_6); } // 51526C: using guessed type char byte_51526C; // 78A9D4: using guessed type int _CRT_MT; //----- (00504968) -------------------------------------------------------- #error "50496B: call analysis failed (funcsize=3)" //----- (00504978) -------------------------------------------------------- #error "50497B: call analysis failed (funcsize=37)" //----- (00504A18) -------------------------------------------------------- #error "504A1B: call analysis failed (funcsize=3)" //----- (00504A28) -------------------------------------------------------- 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); } // 533CDC: using guessed type int *`typeinfo for'__gnu_cxx::recursive_init_error; //----- (00504A5C) -------------------------------------------------------- #error "504A63: call analysis failed (funcsize=7)" //----- (00504AF0) -------------------------------------------------------- #error "504AF7: call analysis failed (funcsize=7)" //----- (00504B1C) -------------------------------------------------------- #error "504B33: call analysis failed (funcsize=5)" //----- (00504BFC) -------------------------------------------------------- // 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(); } // 504C07: positive sp value 1C has been found //----- (00504C0C) -------------------------------------------------------- #error "504C17: call analysis failed (funcsize=4)" //----- (00504C1C) -------------------------------------------------------- #error "504C26: call analysis failed (funcsize=7)" //----- (00504C34) -------------------------------------------------------- #error "504C41: call analysis failed (funcsize=13)" //----- (00504C5C) -------------------------------------------------------- #error "504C5F: call analysis failed (funcsize=5)" //----- (00504CAC) -------------------------------------------------------- #error "504CAF: call analysis failed (funcsize=5)" //----- (00504CD0) -------------------------------------------------------- #error "504CD3: call analysis failed (funcsize=6)" //----- (00504D88) -------------------------------------------------------- #error "504D8F: call analysis failed (funcsize=7)" //----- (00504E14) -------------------------------------------------------- #error "504E1B: call analysis failed (funcsize=4)" //----- (00504E28) -------------------------------------------------------- #error "504E2D: call analysis failed (funcsize=9)" //----- (00504F0C) -------------------------------------------------------- #error "504F13: call analysis failed (funcsize=7)" //----- (00504F60) -------------------------------------------------------- #error "504F62: call analysis failed (funcsize=4)" //----- (00504F70) -------------------------------------------------------- #error "504F73: call analysis failed (funcsize=4)" //----- (00504F80) -------------------------------------------------------- #error "504F82: call analysis failed (funcsize=4)" //----- (00504F90) -------------------------------------------------------- #error "504F93: call analysis failed (funcsize=4)" //----- (00504FA0) -------------------------------------------------------- #error "504FA2: call analysis failed (funcsize=4)" //----- (00504FB0) -------------------------------------------------------- #error "504FB3: call analysis failed (funcsize=4)" //----- (00504FC0) -------------------------------------------------------- #error "504FC2: call analysis failed (funcsize=4)" //----- (00504FD0) -------------------------------------------------------- #error "504FD3: call analysis failed (funcsize=4)" //----- (00504FE0) -------------------------------------------------------- #error "504FE2: call analysis failed (funcsize=4)" //----- (00504FF0) -------------------------------------------------------- #error "504FF3: call analysis failed (funcsize=4)" //----- (00505000) -------------------------------------------------------- #error "505002: call analysis failed (funcsize=4)" //----- (00505010) -------------------------------------------------------- #error "505013: call analysis failed (funcsize=4)" //----- (00505020) -------------------------------------------------------- #error "505022: call analysis failed (funcsize=4)" //----- (00505030) -------------------------------------------------------- #error "505033: call analysis failed (funcsize=4)" //----- (00505040) -------------------------------------------------------- #error "505042: call analysis failed (funcsize=4)" //----- (00505050) -------------------------------------------------------- #error "505053: call analysis failed (funcsize=4)" //----- (00505060) -------------------------------------------------------- #error "505062: call analysis failed (funcsize=4)" //----- (00505070) -------------------------------------------------------- #error "505073: call analysis failed (funcsize=4)" //----- (00505080) -------------------------------------------------------- #error "505082: call analysis failed (funcsize=4)" //----- (00505090) -------------------------------------------------------- #error "505093: call analysis failed (funcsize=4)" //----- (005050A0) -------------------------------------------------------- #error "5050A2: call analysis failed (funcsize=4)" //----- (005050B0) -------------------------------------------------------- #error "5050B3: call analysis failed (funcsize=4)" //----- (005050C0) -------------------------------------------------------- #error "5050C2: call analysis failed (funcsize=4)" //----- (005050D0) -------------------------------------------------------- #error "5050D3: call analysis failed (funcsize=4)" //----- (005050E0) -------------------------------------------------------- #error "5050E5: call analysis failed (funcsize=4)" //----- (00505170) -------------------------------------------------------- #error "505172: call analysis failed (funcsize=6)" //----- (0050521C) -------------------------------------------------------- // 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_51641C ) { 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); } // 505248: positive sp value 4 has been found // 50524C: variable 'v4' is possibly undefined // 50524C: variable 'a1' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (0050525C) -------------------------------------------------------- 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); } // 78A9D4: using guessed type int _CRT_MT; //----- (00505290) -------------------------------------------------------- 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); } // 78A9D4: using guessed type int _CRT_MT; //----- (005052C4) -------------------------------------------------------- #error "5052D3: call analysis failed (funcsize=7)" //----- (005052D8) -------------------------------------------------------- #error "5052E7: call analysis failed (funcsize=7)" //----- (005052EC) -------------------------------------------------------- #error "5052FB: call analysis failed (funcsize=7)" //----- (00505300) -------------------------------------------------------- #error "50530F: call analysis failed (funcsize=7)" //----- (00505314) -------------------------------------------------------- #error "505323: call analysis failed (funcsize=7)" //----- (00505328) -------------------------------------------------------- #error "505337: call analysis failed (funcsize=7)" //----- (0050533C) -------------------------------------------------------- #error "50534B: call analysis failed (funcsize=7)" //----- (00505350) -------------------------------------------------------- #error "50535F: call analysis failed (funcsize=7)" //----- (00505364) -------------------------------------------------------- #error "505366: call analysis failed (funcsize=6)" //----- (005054AC) -------------------------------------------------------- #error "5054B4: call analysis failed (funcsize=5)" //----- (005054C4) -------------------------------------------------------- #error "5054CD: call analysis failed (funcsize=8)" //----- (005054E8) -------------------------------------------------------- #error "5054EA: call analysis failed (funcsize=4)" //----- (00505500) -------------------------------------------------------- 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; } // 515130: using guessed type char `guard variable for'std::moneypunct::id; // 515138: using guessed type char `guard variable for'std::moneypunct::id; // 515150: using guessed type char `guard variable for'std::collate::id; // 515160: using guessed type char `guard variable for'std::messages::id; // 515170: using guessed type char `guard variable for'std::numpunct::id; // 515180: using guessed type char `guard variable for'std::time_get>::id; // 515190: using guessed type char `guard variable for'std::money_get>::id; // 5151A0: using guessed type char `guard variable for'std::money_put>::id; //----- (00505590) -------------------------------------------------------- #error "50559F: call analysis failed (funcsize=7)" //----- (005055A4) -------------------------------------------------------- #error "5055B3: call analysis failed (funcsize=7)" //----- (005055B8) -------------------------------------------------------- #error "5055C7: call analysis failed (funcsize=7)" //----- (005055CC) -------------------------------------------------------- #error "5055DB: call analysis failed (funcsize=7)" //----- (005055E0) -------------------------------------------------------- #error "5055EF: call analysis failed (funcsize=7)" //----- (005055F4) -------------------------------------------------------- #error "505603: call analysis failed (funcsize=7)" //----- (00505608) -------------------------------------------------------- #error "505617: call analysis failed (funcsize=7)" //----- (0050561C) -------------------------------------------------------- #error "50562E: call analysis failed (funcsize=8)" //----- (00505634) -------------------------------------------------------- #error "505636: call analysis failed (funcsize=6)" //----- (00505780) -------------------------------------------------------- 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; } // 515140: using guessed type char `guard variable for'std::moneypunct::id; // 515148: using guessed type char `guard variable for'std::moneypunct::id; // 515158: using guessed type char `guard variable for'std::collate::id; // 515168: using guessed type char `guard variable for'std::messages::id; // 515178: using guessed type char `guard variable for'std::numpunct::id; // 515188: using guessed type char `guard variable for'std::time_get>::id; // 515198: using guessed type char `guard variable for'std::money_get>::id; // 5151A8: using guessed type char `guard variable for'std::money_put>::id; //----- (00505818) -------------------------------------------------------- void __noreturn std::__throw_bad_exception(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_5386CC; __cxa_throw(exception, (struct type_info *)&`typeinfo for'std::bad_exception, std::bad_exception::~bad_exception); } // 534508: using guessed type int *`typeinfo for'std::bad_exception; // 5386CC: using guessed type void (__cdecl *off_5386CC)(std::bad_exception *__hidden this); //----- (00505848) -------------------------------------------------------- void __noreturn std::__throw_bad_alloc(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_539460; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_alloc, (void (__cdecl *)(void *))std::bad_alloc::~bad_alloc); } // 534AA4: using guessed type int *`typeinfo for'std::bad_alloc; // 539460: using guessed type void (__cdecl *off_539460)(std::bad_alloc *__hidden this); //----- (00505878) -------------------------------------------------------- void __noreturn std::__throw_bad_cast(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_539344; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_cast, (void (__cdecl *)(void *))std::bad_cast::~bad_cast); } // 5349E0: using guessed type int *`typeinfo for'std::bad_cast; // 539344: using guessed type void (__cdecl *off_539344)(std::bad_cast *__hidden this); //----- (005058A8) -------------------------------------------------------- void __noreturn std::__throw_bad_typeid(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_5384CC; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_typeid, (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); } // 5343D8: using guessed type int `typeinfo for'std::bad_typeid; // 5384CC: using guessed type void (__cdecl *off_5384CC)(std::bad_typeid *__hidden this); //----- (005058D8) -------------------------------------------------------- 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); } // 5058F6: variable 'v2' is possibly undefined // 534494: using guessed type int *`typeinfo for'std::logic_error; //----- (00505928) -------------------------------------------------------- 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); } // 505946: variable 'v2' is possibly undefined // 5344CC: using guessed type int *`typeinfo for'std::domain_error; //----- (00505978) -------------------------------------------------------- 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); } // 505996: variable 'v2' is possibly undefined // 5346F0: using guessed type int *`typeinfo for'std::invalid_argument; //----- (005059C8) -------------------------------------------------------- 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); } // 5059E6: variable 'v2' is possibly undefined // 5344D8: using guessed type int *`typeinfo for'std::length_error; //----- (00505A18) -------------------------------------------------------- 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); } // 505A36: variable 'v2' is possibly undefined // 5344E4: using guessed type int *`typeinfo for'std::out_of_range; //----- (00505A68) -------------------------------------------------------- #error "505A6B: call analysis failed (funcsize=4)" //----- (00505A78) -------------------------------------------------------- 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); } // 505A96: variable 'v2' is possibly undefined // 53457C: using guessed type int *`typeinfo for'std::runtime_error; //----- (00505AC8) -------------------------------------------------------- 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); } // 505AE6: variable 'v2' is possibly undefined // 5344A0: using guessed type int *`typeinfo for'std::range_error; //----- (00505B18) -------------------------------------------------------- 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); } // 505B36: variable 'v2' is possibly undefined // 534608: using guessed type int *`typeinfo for'std::overflow_error; //----- (00505B68) -------------------------------------------------------- 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); } // 505B86: variable 'v2' is possibly undefined // 5346C0: using guessed type int *`typeinfo for'std::underflow_error; //----- (00505BB8) -------------------------------------------------------- void __noreturn std::__throw_bad_function_call(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_538C28; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_function_call, (void (__cdecl *)(void *))std::bad_function_call::~bad_function_call); } // 534714: using guessed type int *`typeinfo for'std::bad_function_call; // 538C28: using guessed type void (__cdecl *off_538C28)(std::bad_function_call *__hidden this); //----- (00505BE8) -------------------------------------------------------- #error "505C09: call analysis failed (funcsize=9)" //----- (00505C10) -------------------------------------------------------- #error "505C13: call analysis failed (funcsize=4)" //----- (00505C40) -------------------------------------------------------- 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; } // 515100: using guessed type char `guard variable for'std::moneypunct::id; // 515108: using guessed type char `guard variable for'std::moneypunct::id; // 515120: using guessed type char `guard variable for'std::__timepunct::id; // 5151B0: using guessed type char `guard variable for'std::collate::id; // 5151C0: using guessed type char `guard variable for'std::num_get>::id; // 5151D0: using guessed type char `guard variable for'std::num_put>::id; // 5151E0: using guessed type char `guard variable for'std::messages::id; // 5151F0: using guessed type char `guard variable for'std::numpunct::id; // 515200: using guessed type char `guard variable for'std::time_get>::id; // 515210: using guessed type char `guard variable for'std::time_put>::id; // 515220: using guessed type char `guard variable for'std::money_get>::id; // 515230: using guessed type char `guard variable for'std::money_put>::id; //----- (00505D10) -------------------------------------------------------- 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; } // 515110: using guessed type char `guard variable for'std::moneypunct::id; // 515118: using guessed type char `guard variable for'std::moneypunct::id; // 515128: using guessed type char `guard variable for'std::__timepunct::id; // 5151B8: using guessed type char `guard variable for'std::collate::id; // 5151C8: using guessed type char `guard variable for'std::num_get>::id; // 5151D8: using guessed type char `guard variable for'std::num_put>::id; // 5151E8: using guessed type char `guard variable for'std::messages::id; // 5151F8: using guessed type char `guard variable for'std::numpunct::id; // 515208: using guessed type char `guard variable for'std::time_get>::id; // 515218: using guessed type char `guard variable for'std::time_put>::id; // 515228: using guessed type char `guard variable for'std::money_get>::id; // 515238: using guessed type char `guard variable for'std::money_put>::id; //----- (00505DE0) -------------------------------------------------------- void __noreturn __cxa_bad_cast(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_539344; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_cast, (void (__cdecl *)(void *))std::bad_cast::~bad_cast); } // 5349E0: using guessed type int *`typeinfo for'std::bad_cast; // 539344: using guessed type void (__cdecl *off_539344)(std::bad_cast *__hidden this); //----- (00505E10) -------------------------------------------------------- void __noreturn __cxa_bad_typeid(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_5384CC; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_typeid, (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); } // 5343D8: using guessed type int `typeinfo for'std::bad_typeid; // 5384CC: using guessed type void (__cdecl *off_5384CC)(std::bad_typeid *__hidden this); //----- (00505E40) -------------------------------------------------------- void __noreturn __cxa_throw_bad_array_new_length(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_538E80; __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); } // 5347E8: using guessed type int *`typeinfo for'std::bad_array_new_length; // 538E80: using guessed type void (__cdecl *off_538E80)(std::bad_array_new_length *__hidden this); //----- (00505E70) -------------------------------------------------------- #error "505E73: call analysis failed (funcsize=5)" //----- (00505E84) -------------------------------------------------------- #error "505EA7: call analysis failed (funcsize=8)" //----- (00505F4C) -------------------------------------------------------- #error "505F59: call analysis failed (funcsize=5)" //----- (00505F60) -------------------------------------------------------- #error "505F6D: call analysis failed (funcsize=5)" //----- (00505F74) -------------------------------------------------------- #error "505F81: call analysis failed (funcsize=5)" //----- (00505F88) -------------------------------------------------------- #error "505F90: call analysis failed (funcsize=5)" //----- (00505FA0) -------------------------------------------------------- #error "505FA8: call analysis failed (funcsize=5)" //----- (00505FB8) -------------------------------------------------------- #error "505FBB: call analysis failed (funcsize=4)" //----- (00505FC8) -------------------------------------------------------- #error "505FCB: call analysis failed (funcsize=4)" //----- (00505FD8) -------------------------------------------------------- #error "505FE0: call analysis failed (funcsize=5)" //----- (00505FF0) -------------------------------------------------------- #error "505FF8: call analysis failed (funcsize=5)" //----- (00506008) -------------------------------------------------------- #error "50604A: call analysis failed (funcsize=34)" //----- (005060AC) -------------------------------------------------------- #error "5060DA: call analysis failed (funcsize=27)" //----- (00506130) -------------------------------------------------------- #error "50615E: call analysis failed (funcsize=27)" //----- (005061B4) -------------------------------------------------------- #error "5061DA: call analysis failed (funcsize=30)" //----- (00506244) -------------------------------------------------------- #error "506265: call analysis failed (funcsize=22)" //----- (005062B0) -------------------------------------------------------- #error "5062EA: call analysis failed (funcsize=30)" //----- (0050634C) -------------------------------------------------------- #error "506376: call analysis failed (funcsize=32)" //----- (005063E8) -------------------------------------------------------- #error "506409: call analysis failed (funcsize=22)" //----- (00506454) -------------------------------------------------------- #error "506461: call analysis failed (funcsize=5)" //----- (00506468) -------------------------------------------------------- #error "50646A: call analysis failed (funcsize=4)" //----- (00506478) -------------------------------------------------------- #error "50647A: call analysis failed (funcsize=4)" //----- (00506488) -------------------------------------------------------- #error "506495: call analysis failed (funcsize=5)" //----- (0050649C) -------------------------------------------------------- #error "5064A9: call analysis failed (funcsize=5)" //----- (005064B0) -------------------------------------------------------- #error "5064B2: call analysis failed (funcsize=4)" //----- (005064C0) -------------------------------------------------------- #error "5064C2: call analysis failed (funcsize=4)" //----- (005064D0) -------------------------------------------------------- // 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_51641C ) { 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); } // 5064FD: positive sp value 4 has been found // 506501: variable 'v3' is possibly undefined // 506501: variable 'a1' is possibly undefined // 78A9D4: using guessed type int _CRT_MT; //----- (00506514) -------------------------------------------------------- #error "506517: call analysis failed (funcsize=3)" //----- (00506530) -------------------------------------------------------- #error "50653C: call analysis failed (funcsize=4)" //----- (00506544) -------------------------------------------------------- #error "506550: call analysis failed (funcsize=4)" //----- (00506558) -------------------------------------------------------- #error "506564: call analysis failed (funcsize=4)" //----- (0050656C) -------------------------------------------------------- #error "506578: call analysis failed (funcsize=4)" //----- (00506580) -------------------------------------------------------- #error "50658C: call analysis failed (funcsize=4)" //----- (00506594) -------------------------------------------------------- #error "5065A0: call analysis failed (funcsize=4)" //----- (005065A8) -------------------------------------------------------- #error "5065B4: call analysis failed (funcsize=4)" //----- (005065BC) -------------------------------------------------------- #error "5065C8: call analysis failed (funcsize=4)" //----- (005065D0) -------------------------------------------------------- #error "5065DC: call analysis failed (funcsize=4)" //----- (005065E4) -------------------------------------------------------- #error "5065F0: call analysis failed (funcsize=4)" //----- (005065F8) -------------------------------------------------------- #error "506604: call analysis failed (funcsize=4)" //----- (0050660C) -------------------------------------------------------- #error "506618: call analysis failed (funcsize=4)" //----- (00506620) -------------------------------------------------------- #error "50662C: call analysis failed (funcsize=4)" //----- (00506634) -------------------------------------------------------- #error "506640: call analysis failed (funcsize=4)" //----- (00506648) -------------------------------------------------------- #error "506654: call analysis failed (funcsize=4)" //----- (0050665C) -------------------------------------------------------- #error "506668: call analysis failed (funcsize=4)" //----- (00506670) -------------------------------------------------------- #error "50667C: call analysis failed (funcsize=4)" //----- (00506684) -------------------------------------------------------- #error "506690: call analysis failed (funcsize=4)" //----- (00506698) -------------------------------------------------------- #error "5066A1: call analysis failed (funcsize=7)" //----- (005066B0) -------------------------------------------------------- #error "5066BA: call analysis failed (funcsize=18)" //----- (00506718) -------------------------------------------------------- #error "506722: call analysis failed (funcsize=18)" //----- (00506780) -------------------------------------------------------- #error "50678B: call analysis failed (funcsize=7)" //----- (005067D4) -------------------------------------------------------- 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); } // 5067F2: variable 'v2' is possibly undefined // 5344FC: using guessed type int *`typeinfo for'std::__ios_failure; //----- (00506824) -------------------------------------------------------- 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); } // 506849: variable 'v3' is possibly undefined // 5344FC: using guessed type int *`typeinfo for'std::__ios_failure; //----- (0050687C) -------------------------------------------------------- #error "50687E: call analysis failed (funcsize=4)" //----- (0050688C) -------------------------------------------------------- #error "50688E: call analysis failed (funcsize=4)" //----- (0050689C) -------------------------------------------------------- #error "5068A9: call analysis failed (funcsize=8)" //----- (005068B8) -------------------------------------------------------- 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_5386A4; 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); } // 515F68: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); // 5344F0: using guessed type int *`typeinfo for'std::system_error; // 5386A4: using guessed type void (__cdecl *off_5386A4)(std::system_error *__hidden this); //----- (00506960) -------------------------------------------------------- int _GLOBAL__sub_I__ZSt20__throw_system_errori() { atexit(__tcf_0_10); return atexit(__tcf_1_5); } //----- (00506980) -------------------------------------------------------- #error "5069A1: call analysis failed (funcsize=22)" //----- (005069EC) -------------------------------------------------------- #error "506A0D: call analysis failed (funcsize=22)" //----- (00506A58) -------------------------------------------------------- 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(); } //----- (00506AEC) -------------------------------------------------------- #error "506AEE: call analysis failed (funcsize=7)" // nfuncs=4970 queued=4720 decompiled=4720 lumina nreq=0 worse=0 better=0 #error "There were 138 decompilation failure(s) on 4720 function(s)"