/* This file was generated by the Hex-Rays decompiler version 7.7.0.220118. Copyright (c) 2007-2021 Hex-Rays Detected compiler: GNU C++ */ #include #include #include //------------------------------------------------------------------------- // Function declarations #define __thiscall __cdecl // Test compile in C mode void __cdecl __mingw_invalidParameterHandler(const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t pReserved); int pre_c_init(); // idb void pre_cpp_init(); // idb // int __usercall __tmainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5); // int __usercall WinMainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5); // int __usercall mainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5); int __cdecl atexit(_PVFV func); int __gcc_register_frame(); void __gcc_deregister_frame(void); // idb int printf(char *a1, ...); int fprintf(_iobuf *a1, char *a2, ...); void __tcf_1(void); // idb // void *__usercall std::_Vector_base::_M_allocate@(unsigned int a1@); unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); size_t __thiscall std::string::basic_string(void **this, char *Str); // void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); int __cdecl Usage(int a1, const char **a2); int __cdecl ReadFile(char *FileName, unsigned int *a2); int __cdecl Trim(int a1, int a2); int __cdecl GetNextArg(int a1, int *a2, int a3); int __cdecl EscapeToJsonString(int a1, int a2); int __cdecl DictToJsonString(int a1, int a2); int __cdecl Split(int a1, int *a2, int a3); // void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int a1@); void __thiscall std::vector::operator=(int this, int *a2); int std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(void); // weak // int __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>@(int a1@, int a2@); _DWORD __stdcall std::string::operator+=(_DWORD); // weak unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); 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); std::ostream::sentry *__cdecl WXML::Rewrite::ToStringCode(int a1, int a2, int a3); std::ostream::sentry *__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, int a2); int __cdecl WXML::Rewrite::ToStringCode(int a1, int *a2); unsigned int __thiscall std::string::basic_string(void **this, char *Str); void __cdecl WXML::Rewrite::GetToken(int a1, int a2); BOOL __cdecl WXML::Rewrite::RewriteRPX(int a1, unsigned int *a2, char *a3, char *Str); int __cdecl WXML::Rewrite::RewriteImg(int a1, unsigned int *a2, int *a3, int a4, int a5); void __tcf_3(void); // idb void __tcf_4(void); // idb void __tcf_5(void); // idb void __tcf_6(void); // idb void __tcf_7(void); // idb void __tcf_8(void); // idb void __tcf_9(void); // idb void __tcf_10(void); // idb void __tcf_11(void); // idb void __tcf_12(void); // idb void __tcf_13(void); // idb void __tcf_14(void); // idb void __tcf_15(void); // idb void __tcf_16(void); // idb void __tcf_17(void); // idb void __tcf_18(void); // idb void __tcf_19(void); // idb void __tcf_20(void); // idb void __tcf_21(void); // idb void __tcf_22(void); // idb void __tcf_23(void); // idb void __tcf_24(void); // idb void __tcf_25(void); // idb void __tcf_26(void); // idb void __tcf_27(void); // idb void __tcf_28(void); // idb void __tcf_29(void); // idb void __tcf_30(void); // idb void __tcf_31(void); // idb void __tcf_32(void); // idb void __tcf_33(void); // idb void __tcf_34(void); // idb void __tcf_35(void); // idb void __tcf_36(void); // idb void __tcf_37(void); // idb void __tcf_38(void); // idb void __tcf_39(void); // idb void __tcf_40(void); // idb void __tcf_41(void); // idb int printf(char *a1, ...); void __tcf_2(void); // idb int sprintf(FILE *a1, int a2, ...); // int __usercall __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>@(int a1@, int a2@); // void *__usercall std::_Vector_base::_M_allocate@(unsigned int a1@); // void __usercall std::_Rb_tree,std::less,std::allocator>::_M_erase(int a1@); // void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)); unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); // void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); // void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); int __cdecl WXML::Compiler::GetVersionInfo(int a1, int *a2); // void __usercall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(int a1@); // void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int a1@); // void __usercall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase(int a1@); int __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, volatile signed __int32 *a2); unsigned int __thiscall std::string::basic_string(void **this, char *Str); void **__cdecl WXML::Compiler::WXMLHelperCode[abi:cxx11](void **a1); void **__cdecl WXML::Compiler::GetFuncId(void **a1, _DWORD *a2, int a3); void __thiscall std::vector::operator=(void *this, int *a2); // void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int a1@); void __fastcall std::deque::~deque(int a1); int __cdecl WXML::Compiler::DealWxsTag(int a1, int **a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); struct _Unwind_Exception *__cdecl WXML::Compiler::RenderDefine(unsigned int **a1, WXML::NameAllocator *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); // struct _Unwind_Exception *__usercall WXML::Compiler::ParseSource@(WXML::DOMLib::Parser *a1@, int *a2, char **a3, char a4, int a5, int *a6, _DWORD *a7, int *a8, _DWORD *a9, _DWORD *a10, _DWORD *a11, int a12, char a13); // std::ostream::sentry *__usercall WXML::Compiler::Compile@(int *a1@, _DWORD *a2, int *a3, unsigned __int8 **a4, _DWORD *a5, _DWORD *a6, char a7, int *a8, int a9, char a10, int *a11, int *a12, int *a13, int *a14, int *a15, int *a16, int a17, int a18, int a19, int *a20); struct _Unwind_Exception *__cdecl WXML::Compiler::CompileLazy(_DWORD *a1, int *a2, _DWORD *a3, _DWORD *a4, _DWORD *a5, _DWORD *a6, int *a7, _DWORD *a8, char a9, int a10, int a11, char a12, int *a13, int *a14, int *a15, int *a16, int *a17, int *a18, int a19, int a20, int a21, int *a22); void __thiscall WXML::NameAllocator::NameAllocator(_DWORD *this, int a2, int a3); void __thiscall WXML::NameAllocator::GetNextName(int *this, int a2); unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); void __cdecl MMBizWxaAppComm::SplitBySlash(_DWORD *a1, void **a2); int __cdecl MMBizWxaAppComm::PathCombine(_DWORD *a1, _DWORD *a2, unsigned int *a3); void __tcf_1_0(void); // idb void __tcf_2_0(void); // idb void __tcf_3_0(void); // idb void __tcf_4_0(void); // idb void __tcf_5_0(void); // idb void __tcf_6_0(void); // idb void __tcf_7_0(void); // idb void __tcf_8_0(void); // idb void __tcf_9_0(void); // idb void __tcf_10_0(void); // idb void __tcf_11_0(void); // idb void __tcf_12_0(void); // idb void __tcf_13_0(void); // idb void __tcf_14_0(void); // idb void __tcf_15_0(void); // idb void __tcf_16_0(void); // idb void __tcf_17_0(void); // idb void __tcf_18_0(void); // idb void __tcf_19_0(void); // idb void __tcf_20_0(void); // idb void __tcf_21_0(void); // idb void __tcf_22_0(void); // idb void __tcf_23_0(void); // idb void __tcf_24_0(void); // idb void __tcf_25_0(void); // idb void __tcf_26_0(void); // idb void __tcf_27_0(void); // idb void __tcf_28_0(void); // idb void __tcf_29_0(void); // idb void __tcf_30_0(void); // idb void __tcf_31_0(void); // idb void __tcf_32_0(void); // idb void __tcf_33_0(void); // idb void __tcf_34_0(void); // idb void __tcf_35_0(void); // idb void __tcf_36_0(void); // idb void __tcf_37_0(void); // idb void __tcf_38_0(void); // idb void __tcf_39_0(void); // idb void __tcf_40_0(void); // idb void __tcf_41_0(void); // idb unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); _DWORD __stdcall std::string::operator+=(_DWORD); // weak _DWORD __stdcall std::string::operator+=(_DWORD); // weak unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); // int __usercall night::NSToken::tk_is_var_start@(int a1@); // void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); // void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); // weak // int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>@(int a1@, int a2@); int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); // weak // int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>@(int a1@, int a2@); size_t __thiscall std::string::basic_string(void **this, char *Str); void __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); void __thiscall __noreturn night::NSStream::err(_DWORD *this, int a2, unsigned int a3, unsigned int a4, char a5); // void __userpurge __noreturn night::NSToken::err(int a1@, int a2, unsigned int a3, unsigned int a4, char a5); 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, unsigned __int8 **a2); 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); _DWORD *__thiscall night::NSGod::gen_son(void *this, int a2); struct _Unwind_Exception *__thiscall night::NSToken::read_string(night::NSStream **this, char a2, int a3); struct _Unwind_Exception *__thiscall night::NSToken::read_number(night::NSStream **this, int a2); int __thiscall night::NSGod::gen_girl(void *this, int a2); void __thiscall night::NSToken::push(int this, int a2); struct _Unwind_Exception *__thiscall night::NSToken::read_var(int this, int a2); unsigned __int8 **__fastcall night::NSToken::read_next(int a1); unsigned __int8 **__fastcall night::NSToken::peek(int a1); bool __fastcall night::NSToken::eof(int a1); unsigned __int8 **__thiscall night::NSASTParse::is_punctuation(int *this, int a2); unsigned __int8 **__thiscall night::NSASTParse::is_buildin_keywords(int *this, int a2); unsigned __int8 **__thiscall night::NSASTParse::is_op(int *this, int a2); unsigned __int8 **__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); unsigned __int8 **__fastcall night::NSToken::next(int a1); void __thiscall night::NSASTParse::ignore_punc_pass_sem(int *this, int a2); void __thiscall night::NSASTParse::ignore_punc(int *this, int a2); void __thiscall night::NSASTParse::ignore_buildin_kw(int *this, int a2); void __thiscall night::NSASTParse::ignore_op(int *this, int a2); struct _Unwind_Exception *__fastcall night::NSASTParse::ast_trans_kw(int *a1); // _DWORD *__userpurge night::NSASTParse::ast_dispatch@(_DWORD *a1@, night::NSASTParse *this, bool a3); struct _Unwind_Exception *__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); struct _Unwind_Exception *__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); struct _Unwind_Exception *__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, _DWORD *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); struct _Unwind_Exception *__fastcall night::NSASTParse::top_down(int *a1); unsigned __int8 **__fastcall night::NSASTParse::ast_require(int *a1); _DWORD *__fastcall night::NSASTParse::ast_code_block(int *a1); struct _Unwind_Exception *__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); struct _Unwind_Exception *__fastcall night::NSASTParse::ast_var(_DWORD *a1); _DWORD *__fastcall night::NSASTParse::ast_expression_no_binary(int *a1); char *__thiscall night::NSCompileJs::compile_var[abi:cxx11](char *this, int a2, int a3); _DWORD *__thiscall night::NSCompileJs::compile_function[abi:cxx11](_DWORD *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); _DWORD *__thiscall night::NSCompileJs::compile_if[abi:cxx11](_DWORD *this, int a2, _DWORD *a3); _DWORD *__thiscall night::NSCompileJs::compile_for[abi:cxx11](_DWORD *this, int a2, int a3); _DWORD *__thiscall night::NSCompileJs::compile_while[abi:cxx11](_DWORD *this, int a2, int a3); _DWORD *__thiscall night::NSCompileJs::compile_do_while[abi:cxx11](_DWORD *this, int a2, int a3); _DWORD *__thiscall night::NSCompileJs::compile_switch[abi:cxx11](_DWORD *this, int a2, int a3); _BYTE *__thiscall night::NSCompileJs::compile_obj_self_op[abi:cxx11](_BYTE *this, int a2, int a3); _BYTE *__thiscall night::NSCompileJs::compile_obj_property[abi:cxx11](_BYTE *this, int a2, int a3); _BYTE *__thiscall night::NSCompileJs::compile_obj_dot[abi:cxx11](_BYTE *this, int a2, int a3); _DWORD *__thiscall night::NSCompileJs::compile_op_self[abi:cxx11](_DWORD *this, int a2, int a3); _BYTE *__thiscall night::NSCompileJs::compile_ternary[abi:cxx11](_BYTE *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); _DWORD *__thiscall night::NSCompileJs::compile_prog[abi:cxx11](_DWORD *this, int a2, int a3); _DWORD *__thiscall night::NSCompileJs::compile_prog_no_sem[abi:cxx11](_DWORD *this, int a2, int a3); char *__thiscall night::NSCompileJs::compile_once(char *this, int a2, unsigned int *a3, 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(night::NSASTParse *a1, int a2, int a3, int a4, int a5, unsigned int *a6, int a7); void __tcf_0(void); // idb void __tcf_1_1(void); // idb void __tcf_2_1(void); // idb void __tcf_3_1(void); // idb void __tcf_4_1(void); // idb void __tcf_5_1(void); // idb void __tcf_6_1(void); // idb void __tcf_7_1(void); // idb void __tcf_8_1(void); // idb void __tcf_9_1(void); // idb void __tcf_10_1(void); // idb void __tcf_11_1(void); // idb void __tcf_12_1(void); // idb void __tcf_13_1(void); // idb void __tcf_14_1(void); // idb void __tcf_15_1(void); // idb void __tcf_16_1(void); // idb void __tcf_17_1(void); // idb void __tcf_18_1(void); // idb void __tcf_19_1(void); // idb void __tcf_20_1(void); // idb void __tcf_21_1(void); // idb void __tcf_22_1(void); // idb void __tcf_23_1(void); // idb void __tcf_24_1(void); // idb void __tcf_25_1(void); // idb void __tcf_26_1(void); // idb void __tcf_27_1(void); // idb void __tcf_28_1(void); // idb void __tcf_29_1(void); // idb void __tcf_30_1(void); // idb void __tcf_31_1(void); // idb void __tcf_32_1(void); // idb void __tcf_33_1(void); // idb void __tcf_34_1(void); // idb void __tcf_35_1(void); // idb void __tcf_36_1(void); // idb void __tcf_37_1(void); // idb void __tcf_38_1(void); // idb _DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2); int __cdecl night::sourcemap::int2vlq[abi:cxx11](int a1, int a2); int __cdecl night::sourcemap::gen_sourcemap_content(int *a1, _DWORD *a2, _DWORD *a3, int *a4, int a5, int a6); void __tcf_1_2(void); // idb void __tcf_2_2(void); // idb void __tcf_3_2(void); // idb void __tcf_4_2(void); // idb void __tcf_5_2(void); // idb void __tcf_6_2(void); // idb void __tcf_7_2(void); // idb void __tcf_8_2(void); // idb void __tcf_9_2(void); // idb void __tcf_10_2(void); // idb void __tcf_11_2(void); // idb void __tcf_12_2(void); // idb void __tcf_13_2(void); // idb void __tcf_14_2(void); // idb void __tcf_15_2(void); // idb void __tcf_16_2(void); // idb void __tcf_17_2(void); // idb void __tcf_18_2(void); // idb void __tcf_19_2(void); // idb void __tcf_20_2(void); // idb void __tcf_21_2(void); // idb void __tcf_22_2(void); // idb void __tcf_23_2(void); // idb void __tcf_24_2(void); // idb void __tcf_25_2(void); // idb void __tcf_26_2(void); // idb void __tcf_27_2(void); // idb void __tcf_28_2(void); // idb void __tcf_29_2(void); // idb void __tcf_30_2(void); // idb void __tcf_31_2(void); // idb void __tcf_32_2(void); // idb void __tcf_33_2(void); // idb void __tcf_34_2(void); // idb void __tcf_35_2(void); // idb void __tcf_36_2(void); // idb void __tcf_37_2(void); // idb void __tcf_38_2(void); // idb void __tcf_39_1(void); // idb int __cdecl night::str::path_combine(_DWORD *a1, _DWORD *a2, int 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); // idb bool __cdecl WXML::DOMLib::AttrsCompartor(int a1, int a2); void __tcf_1_3(void); // idb // int __usercall __gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>@(int (__cdecl *a1)(int, int)@, int a2@, int a3@); // void __usercall std::_Rb_tree,std::less,std::allocator>::_M_erase(int a1@); // void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); // std::ostream::sentry *__usercall std::operator<<>@(std::ostream::sentry *a1@, char a2@
); unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); // int __userpurge WXML::DOMLib::WXMLDom::GenRawId@(_DWORD *a1@, WXML::DOMLib::WXMLDom *this, unsigned __int64 *a3); 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); _DWORD *__thiscall WXML::DOMLib::Parser::GetParsed(_DWORD *ecx0, WXML::DOMLib::Parser *this); // void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node(void **a1@); // void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); void __fastcall WXML::DOMLib::WXMLDom::~WXMLDom(int a1); void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, int a2); void __thiscall WXML::DOMLib::Token::operator=(int this, int a2); _DWORD *__thiscall WXML::DOMLib::Parser::Error(_DWORD *ecx0, WXML::DOMLib::Parser *this, char *a3, WXML::DOMLib::Token *a4); unsigned __int8 *__thiscall WXML::DOMLib::Token::operator=(int this, int a2); unsigned __int8 *__thiscall std::pair::operator=(unsigned __int8 **this, int a2); unsigned int __thiscall std::string::basic_string(void **this, char *Str); void **__cdecl WXML::DOMLib::removern(void **a1, _DWORD *a2); // int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound@(int a1@, int a2@, int a3@); int __thiscall WXML::DOMLib::WXMLDom::AddTestAttr(_DWORD *this, int *a2, int a3, char a4); int __cdecl WXML::DOMLib::splitString(int a1, int *a2, char a3); int __cdecl WXML::DOMLib::resolvePath(int a1, int *a2, int *a3); void __fastcall WXML::DOMLib::Parser::ATTR(WXML::DOMLib::Parser *a1); void __fastcall WXML::DOMLib::Parser::ATTR_LIST(WXML::DOMLib::Parser *a1); void __thiscall std::map::erase(_DWORD *this, int a2); int __fastcall WXML::DOMLib::WXMLDom::RewriteTree(int a1); void __cdecl WXML::DOMLib::recurseDependencies(int *a1, int *a2, _DWORD *a3); // void __usercall WXML::DOMLib::Parser::DOM(_DWORD *a1@, WXML::DOMLib::Parser *a2@); // void __usercall WXML::DOMLib::Parser::DOMS(WXML::DOMLib::Parser *a1@, WXML::DOMLib::Parser *a2@); // int __userpurge WXML::DOMLib::Parser::Parse@(int a1@, WXML::DOMLib::Parser *a2@, char *Str, int a4, int a5, _DWORD *a6); int __fastcall WXML::DOMLib::WXMLDom::RecordAllPath(_DWORD *a1); void __fastcall std::deque>::~deque(int a1); int __cdecl WXML::DOMLib::WXMLDom::DealSingleTokenToOps(int *a1, unsigned int *a2, WXML::EXPRLib::Parser *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, WXML::EXPRLib::Parser *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 __tcf_0_0(void); // idb unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); int __fastcall WXML::DOMLib::Machine::Reset(_DWORD *a1); void WXML::DOMLib::Machine::InitTransitTable(); void __thiscall WXML::DOMLib::Machine::Machine(int this, int a2); // int __usercall std::__relocate_a_1>@(int a1@, int a2@, int a3@); int __thiscall WXML::DOMLib::Machine::Feed(struct _Unwind_Exception *this, char a2, int a3, unsigned __int8 **a4, int a5, int a6); void __thiscall std::__shared_ptr::operator=(_DWORD *this, _DWORD *a2); int __thiscall WXML::DOMLib::Tokenizer::GetTokens(_DWORD *this, _DWORD *a2, int a3, _DWORD *a4); void __thiscall WXML::DOMLib::Tokenizer::Tokenizer(_DWORD *this, char *Str, int a3); void __tcf_1_4(void); // idb _DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2); _DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str); unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); // std::ostream::sentry *__usercall std::operator<<>@(std::ostream::sentry *a1@, char a2@
); size_t __thiscall std::string::basic_string(void **this, char *Str); 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); // bool __usercall __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>@(char **a1@, int a2@); void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(int *this, int a2); void __fastcall WXML::EXPRLib::ExprSyntaxTree::~ExprSyntaxTree(int a1); void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, int 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); // void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int a1@); int __thiscall WXML::EXPRLib::Parser::Parse(int this, char **a2, int a3, int a4, int a5, unsigned int *a6, char a7); // void __usercall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(_DWORD *a1@); void __tcf_0_1(void); // idb void __tcf_0_2(void); // idb unsigned int __thiscall std::string::_M_construct(void **this, unsigned __int8 *Src, size_t Size); unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); const char *__fastcall WXML::EXPRLib::Token::GetTokenName(const char **a1); const char *__fastcall WXML::EXPRLib::Token::GetLiteral(_DWORD *a1); void WXML::EXPRLib::Tokenizer::InitTransitTable(); unsigned int __thiscall WXML::EXPRLib::Tokenizer::Tokenizer(void **this, char *Str, int a3, int a4, int a5); // _DWORD *__usercall std::__relocate_a_1>@(_DWORD *a1@, _DWORD *a2@, _DWORD *a3@); int __thiscall WXML::EXPRLib::Tokenizer::GetTokens(int *this, _DWORD *a2, unsigned int *a3); void __tcf_1_5(void); // idb size_t __thiscall std::string::basic_string(void **this, char *Str); unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); int WXML::EXPRLib::TransitTable::GetExprNTType(); int WXML::EXPRLib::TransitTable::GetAttrListNTType(); void __thiscall std::vector::_M_move_assign(void *this, int *a2); // void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int a1@); int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=(_DWORD *this, _DWORD *a2); _DWORD WXML::EXPRLib::TransitTable::Init(WXML::EXPRLib::TransitTable *__hidden this); // idb void __tcf_0_3(void); // idb unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *Src, unsigned int a3); int __cdecl WXML::StringTemplating::Deal(char *Str, int a2, char **a3, _BYTE *a4); // _DWORD *__usercall d_make_comp@(_DWORD *a1@, int a2@, int a3@, int a4); // _DWORD *__usercall d_make_name@(_DWORD *a1@, int a2@, int a3@); // int __usercall d_number@(int a1@); // int __usercall d_call_offset@(int a1@, int a2@); // _DWORD *__usercall d_ref_qualifier@(_DWORD *a1@, _DWORD *a2@); // int __usercall d_discriminator@(int a1@); // int __usercall d_count_templates_scopes@(int result@, int *a2@, int a3@); // _DWORD *__usercall d_index_template_argument_part_0@(_DWORD *result@, int a2@); void __cdecl d_growable_string_callback_adapter(void *Src, size_t Size, int a3); int sprintf_constprop_0(FILE *a1, int a2, ...); // BOOL __usercall next_is_type_qual_isra_0@(char *a1@); // int __usercall d_append_char@(int a1@, char a2@
); // _DWORD *__usercall d_lookup_template_argument@(int a1@, int a2@); // size_t __usercall d_append_string@(int a1@, const char *Str@); // _DWORD *__usercall d_find_pack@(int a1@, _DWORD *a2@, int a3@); // _DWORD *__usercall d_template_param@(_DWORD *a1@); // size_t __usercall d_append_num@(int a1@, int a2@); // _DWORD *__usercall d_source_name@(int a1@); // _DWORD *__usercall d_substitution@(int a1@, char a2@
); // int __usercall d_print_java_identifier@(int result@, unsigned int a2@, int a3@); // int *__usercall d_type@(_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_operator_name@(_DWORD *a1@); // int __usercall d_parmlist@(_DWORD *a1@); // _DWORD *__usercall d_bare_function_type@(_DWORD *a1@, int a2@); // _DWORD *__usercall d_function_type@(int a1@); // _DWORD *__usercall d_unqualified_name@(_DWORD *a1@); // int *__usercall d_name@(_DWORD *a1@); // unsigned int *__usercall d_encoding_part_0@(int a1@, int a2@); // _DWORD *__usercall d_special_name@(_DWORD *a1@); // unsigned int *__usercall d_expr_primary@(_DWORD *a1@); // unsigned int *__usercall d_expression_1@(_DWORD *a1@); // _DWORD *__usercall d_exprlist@(_DWORD *a1@, char a2@
); // int **__usercall d_cv_qualifiers@(_DWORD *a1@, int **a2@, int a3@); // unsigned int *__usercall d_template_arg@(_DWORD *a1@); // _DWORD *__usercall d_template_args_1@(_DWORD *a1@); // unsigned int __usercall d_print_comp_inner@(unsigned int result@, int a2@); // int __usercall d_print_comp@(int result@, int a2@); // int __usercall d_print_mod@(int a1@, _DWORD *a2@); // unsigned int __usercall d_print_function_type@(unsigned int a1@, int a2@, _DWORD *a3); // unsigned int __usercall d_print_mod_list@(unsigned int result@, _DWORD *a2@, int a3); // int __usercall d_print_array_type@(int a1@, int a2@, int **a3); // int __usercall d_print_conversion@(int a1@, int a2@); // int __usercall d_print_expr_op@(int a1@, _DWORD *a2@); // BOOL __usercall d_demangle_callback_constprop_0@(char *a1@, void (__cdecl *a2)(char *, int, int)@, int a3@); // int __usercall d_print_subexpr@(int a1@, _DWORD *a2@); // int __usercall d_maybe_print_fold_expression@(int a1@, int a2@); char *__cdecl __cxa_demangle(const char *lpmangled, char *lpout, size_t *lpoutlen, int *lpstatus); unsigned int __cdecl __gcclibcxx_demangle_callback(char *a1, void (__cdecl *a2)(char *, int, int), int a3); void __do_global_dtors(void); // idb int __do_global_ctors(); int __main(); int _setargv(); int __stdcall __dyn_tls_dtor(int a1, unsigned int a2, int a3); int __stdcall __dyn_tls_init(int a1, int a2, int a3); int __tlregdtor(); int __cdecl _matherr(struct _exception *Except); void __cdecl fpreset(); void __noreturn __report_error(char *Format, ...); // _DWORD *__usercall mark_section_writable@(const void *a1@); void _pei386_runtime_relocator(); int (__cdecl *__cdecl __mingw_raise_matherr(int a1, int a2, double a3, double a4, double a5))(_DWORD); void __cdecl __mingw_setusermatherr(_UserMathErrorFunctionPointer UserMathErrorFunction); LONG __stdcall _gnu_exception_handler(_EXCEPTION_POINTERS *a1); void __mingwthr_run_key_dtors_part_0(); 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, unsigned int a2); BOOL __cdecl _ValidateImageBase(int a1); int __cdecl _FindPESection(int a1, unsigned int a2); const char *__cdecl _FindPESectionByName(char *Str); int __cdecl __mingw_GetSectionForAddress(int a1); int __mingw_GetSectionCount(); int __cdecl _FindPESectionExec(int a1); int _GetPEImageBase(); BOOL __cdecl _IsNonwritableInCurrentImage(int a1); int __cdecl __mingw_enum_import_library_names(int a1); int __cdecl __gthr_win32_once(int a1, void (*a2)(void)); int __cdecl __gthr_win32_key_create(int *a1, int a2); DWORD __cdecl __gthr_win32_key_delete(DWORD dwTlsIndex); LPVOID __cdecl __gthr_win32_getspecific(DWORD dwTlsIndex); DWORD __cdecl __gthr_win32_setspecific(DWORD dwTlsIndex, LPVOID lpTlsValue); HANDLE __cdecl __gthr_win32_mutex_init_function(_DWORD *a1); int __cdecl __gthr_win32_mutex_destroy(int a1); int __cdecl __gthr_win32_mutex_lock(int a1); BOOL __cdecl __gthr_win32_mutex_trylock(volatile signed __int32 *a1); BOOL __cdecl __gthr_win32_mutex_unlock(int a1); HANDLE __cdecl __gthr_win32_recursive_mutex_init_function(_DWORD *a1); DWORD __cdecl __gthr_win32_recursive_mutex_lock(int a1); int __cdecl __gthr_win32_recursive_mutex_trylock(int a1); BOOL __cdecl __gthr_win32_recursive_mutex_unlock(int a1); int __cdecl __gthr_win32_recursive_mutex_destroy(int a1); // int __usercall _Unwind_RaiseException_Phase2@(_DWORD *a1@, _DWORD *a2@, int *a3@); BOOL fc_key_init(); void fc_key_init_once(); LPVOID _Unwind_SjLj_GetContext(); // int __usercall uw_install_context_constprop_0@(int a1@); // int __usercall _Unwind_ForcedUnwind_Phase2@(_DWORD *a1@, void ***a2@, int *a3@); void __cdecl _Unwind_SjLj_Register(struct SjLj_Function_Context *lpfctx); void __cdecl _Unwind_SjLj_Unregister(struct SjLj_Function_Context *lpfctx); _Unwind_Word __cdecl _Unwind_GetGR(struct _Unwind_Context *lpuctx, int r); int __cdecl _Unwind_GetCFA(int a1); void __cdecl _Unwind_SetGR(struct _Unwind_Context *lpuctx, int r, _Unwind_Word v); int __cdecl _Unwind_GetIP(int a1); int __cdecl _Unwind_GetIPInfo(int a1, _DWORD *a2); int __cdecl _Unwind_SetIP(int a1, int a2); int __cdecl _Unwind_GetLanguageSpecificData(int a1); int _Unwind_GetRegionStart(); int _Unwind_FindEnclosingFunction(); int _Unwind_GetDataRelBase(); int _Unwind_GetTextRelBase(); _Unwind_Reason_Code __cdecl _Unwind_SjLj_RaiseException(struct _Unwind_Exception *lpuexcpt); _Unwind_Reason_Code __cdecl _Unwind_SjLj_ForcedUnwind(struct _Unwind_Exception *lpuexcpt, _Unwind_Stop_Fn pfnstop, void *pdata); void __cdecl _Unwind_SjLj_Resume(struct _Unwind_Exception *lpuexcpt); _Unwind_Reason_Code __cdecl _Unwind_SjLj_Resume_or_Rethrow(struct _Unwind_Exception *lpuexcpt); void __cdecl _Unwind_DeleteException(struct _Unwind_Exception *lpuexcpt); _Unwind_Reason_Code __cdecl _Unwind_Backtrace(_Unwind_Trace_Fn pfntrace, void *lpdata); void __cdecl emutls_destroy(int *a1); // _DWORD *__usercall emutls_alloc@(size_t *a1@); DWORD emutls_init(); _DWORD *__cdecl __emutls_get_address(size_t *a1); unsigned int *__cdecl __emutls_register_common(unsigned int *a1, unsigned int a2, unsigned int a3, unsigned int a4); long double __cdecl __mingw_strtod(unsigned __int8 *a1, unsigned __int8 **a2); long double __cdecl __mingw_strtof(unsigned __int8 *a1, unsigned __int8 **a2); wint_t __cdecl btowc(int Ch); int __cdecl __asctoe64(char *Str, long double *a2); long double __cdecl strtold(const char *String, char **EndPtr); unsigned __int64 __cdecl strtoull(const char *String, char **EndPtr, int Radix); int __cdecl wctob(wint_t WCh); wctype_t __cdecl wctype(const char *name); FILE *__cdecl fopen64(const char *FileName, const char *Mode); int __cdecl fseeko64(FILE *Stream, fpos_t a2, int a3); fpos_t __cdecl ftello64(FILE *Stream); __int64 __cdecl lseek64(int FileHandle, __int64 Offset, int Origin); int __cdecl __mingw_vfprintf(FILE *Stream, char *a2, int *a3); int __cdecl __mingw_vsnprintf(FILE *a1, int a2, char *a3, int *a4); int __cdecl __mingw_vsprintf(FILE *a1, char *a2, int *a3); int *__cdecl __increment_D2A(int *a1); // int __usercall rvOK_constprop_0_isra_0@(int *a1@, int *a2@, char *a3@, double a4, int a5, int a6, _DWORD *a7); _DWORD *__cdecl __decrement_D2A(int a1); int *__cdecl __set_ones_D2A(int *a1, int a2); int __cdecl __strtodg(unsigned __int8 *a1, unsigned __int8 **a2, int *a3, int *a4, void *a5); int *__cdecl __sum_D2A(int *a1, int *a2); // unsigned int __usercall __m16m@(unsigned __int16 a1@, int a2@, int a3@); // BOOL __usercall __eshift_part_0@(__int16 *a1@, int a2@); __int16 *__cdecl __emovi(int a1, int a2); unsigned int __cdecl __eaddm(int a1, int a2); unsigned int __cdecl __esubm(int a1, int a2); BOOL __cdecl __edivm(int a1, int *a2); int __cdecl __emulm(int a1, int a2); __int16 *__cdecl __toe64(_WORD *a1, int a2); int __cdecl __ecmp(int a1, int a2); BOOL __cdecl __eshift(__int16 *a1, int a2); int __cdecl __enormlz(_WORD *a1); __int16 __cdecl __emdnorm(int a1, int a2, int a3, int a4, int a5, int a6); int __cdecl __emovo(_WORD *a1, int a2); __int16 __cdecl __emul(int a1, int a2, int a3); // int *__usercall __pformat_cvt@(int a1@, __int64 a2, int a3, int a4, int a5, int *a6, int *a7); // int __usercall __pformat_putc@(int a1@, int a2@); // int __usercall __pformat_wputchars@(int a1@, int a2@, int a3@); // int __usercall __pformat_putchars@(_BYTE *a1@, int a2@, int a3@); // int __usercall __pformat_puts@(char *a1@, int a2@); // int __usercall __pformat_emit_inf_or_nan@(int a1@, int a2@, int a3@); // int __usercall __pformat_xint@(int a1@, __int64 a2, int a3, int a4, int a5); int __cdecl __pformat_int(__int64 a1, int a2, int a3, int a4); // int __usercall __pformat_emit_radix_point@(int a1@); // int __usercall __pformat_emit_float@(int a1@, char *a2@, int a3@, int a4); // int __usercall __pformat_emit_efloat@(int a1@, char *a2@, int a3@, _DWORD *a4); // void __usercall __pformat_efloat(_DWORD *a1@, long double a2); // void __usercall __pformat_float(int a1@, long double a2); // void __usercall __pformat_gfloat(_DWORD *a1@, long double a2); // int __usercall __pformat_xldouble@(int a1@, long double a2); int __cdecl __mingw_pformat(__int16 a1, FILE *a2, int a3, char *a4, int *a5); int *__cdecl __rv_alloc_D2A(int a1); int *__cdecl __nrv_alloc_D2A(char *a1, _DWORD *a2, int a3); void __cdecl __freedtoa(_DWORD *a1); unsigned int __cdecl __quorem_D2A(int a1, int a2); int *__cdecl __gdtoa(int *a1, int a2, int *a3, int *a4, int a5, int a6, int *a7, int **a8); 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 __mingw_hexdig_init_D2A(); int __cdecl __hexnan_D2A(unsigned __int8 **a1, int *a2, int *a3); // void __usercall dtoa_lock(int a1@); void dtoa_lock_cleanup(void); // idb int *__cdecl __Balloc_D2A(int a1); void __cdecl __Bfree_D2A(void *Block); int *__cdecl __multadd_D2A(int *a1, int a2, int a3); _DWORD *__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(int *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); 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); size_t __cdecl __copybits_D2A(char *a1, int Val, size_t Size); int __cdecl __any_on_D2A(int a1, int a2); size_t __cdecl strnlen(const char *String, size_t MaxCount); size_t __cdecl wcsnlen(const wchar_t *Source, size_t MaxCount); // size_t __cdecl wcsxfrm(wchar_t *Destination, 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); // size_t __cdecl strxfrm(char *Destination, const char *Source, size_t MaxCount); // 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); // _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); // void *__cdecl realloc(void *Block, size_t Size); // wint_t __cdecl putwc(wchar_t Character, FILE *Stream); // int __cdecl putc(int Character, FILE *Stream); // 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); // void *__cdecl malloc(size_t Size); // struct lconv *__cdecl localeconv(); // int __cdecl iswctype(wint_t C, wctype_t Type); // int __cdecl isupper(int C); // int __cdecl isspace(int C); // int __cdecl islower(int C); // wint_t __cdecl getwc(FILE *Stream); // int __cdecl getc(FILE *Stream); // size_t __cdecl fwrite(const void *Buffer, size_t ElementSize, size_t ElementCount, FILE *Stream); // int __cdecl fsetpos(FILE *Stream, const fpos_t *Position); // void __cdecl free(void *Block); // 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 fgetpos(FILE *Stream, fpos_t *Position); // int __cdecl fflush(FILE *Stream); // int __cdecl fclose(FILE *Stream); // void __cdecl __noreturn exit(int Code); // void *__cdecl calloc(size_t Count, size_t Size); // void __cdecl __noreturn abort(); // int __cdecl write(int FileHandle, const void *Buf, unsigned int MaxCharCount); // int __cdecl _strnicmp(const char *String1, const char *String2, size_t MaxCount); // int __cdecl read(int FileHandle, void *DstBuf, unsigned int MaxCharCount); // _onexit_t __cdecl _onexit(_onexit_t Func); // void __cdecl _initterm(_PVFV *First, _PVFV *Last); // int __cdecl _fileno(FILE *Stream); // int __cdecl fileno(FILE *Stream); // __int64 __cdecl _filelengthi64(int FileHandle); // FILE *__cdecl fdopen(int FileHandle, const char *Format); // int *__cdecl _errno(); // int __cdecl close(int FileHandle); // void __cdecl _cexit(); // int __cdecl _amsg_exit(_DWORD); weak // void __cdecl __setusermatherr(_UserMathErrorFunctionPointer UserMathErrorFunction); // void __cdecl __set_app_type(_crt_app_type Type); // int *__cdecl __p__fmode(); // int *__cdecl __p__commode(); // char **__cdecl __p__acmdln(); // int __cdecl __getmainargs(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak int __cdecl __mbrtowc_cp(LPWSTR lpWideCharStr, BYTE *lpMultiByteStr, int a3, int *a4, UINT CodePage, unsigned int a6); size_t __cdecl mbrtowc(wchar_t *DstCh, const char *SrcCh, size_t SizeInBytes, mbstate_t *State); size_t __cdecl mbsrtowcs(wchar_t *Dest, const char **PSrc, size_t Count, mbstate_t *State); size_t __cdecl mbrlen(const char *Ch, size_t SizeInBytes, mbstate_t *State); int __cdecl __wcrtomb_cp(LPSTR lpMultiByteStr, WCHAR a2, UINT CodePage, int cbMultiByte); size_t __cdecl wcrtomb(char *Dest, wchar_t Source, mbstate_t *State); size_t __cdecl wcsrtombs(char *Dest, const wchar_t **PSource, size_t Count, mbstate_t *State); FILE *__cdecl __acrt_iob_func(unsigned int Ix); _invalid_parameter_handler __cdecl _get_invalid_parameter_handler(); _invalid_parameter_handler __cdecl _set_invalid_parameter_handler(_invalid_parameter_handler Handler); int __cdecl mingw_rand_s(int a1); int __cdecl init_rand_s(int a1); void __cdecl _lock_file(FILE *Stream); void __cdecl _unlock_file(FILE *Stream); int __cdecl ___mb_cur_max_func(); int msvcrt___lc_codepage_func(); int setlocale_codepage_hack(); int init_codepage_func(); unsigned int __cdecl ___lc_codepage_func(); // char *__cdecl strchr(const char *Str, int Val); // int __cdecl atoi(const char *String); // void __cdecl _unlock(FILE *Stream); weak // int __cdecl _lock(_DWORD); weak int __cdecl __mingwthr_key_dtor(int a1, int a2); int __cdecl _txnal_cow_string_D1(); void __cdecl __noreturn _txnal_cow_string_c_str(); void __cdecl __noreturn _txnal_sso_string_c_str(); char *__cdecl _txnal_logic_error_get_msg(char *a1); void __cdecl _txnal_cow_string_D1_commit(volatile signed __int32 *Block); char *__cdecl _txnal_runtime_error_get_msg(char *a1); void __cdecl _txnal_cow_string_C1_for_exceptions(struct _Unwind_Exception **a1); int printf(char *a1, ...); int sprintf(char *a1, char *a2, ...); void __cdecl __noreturn _ZGTtNKSt11logic_error4whatEv(int a1); void __cdecl __noreturn _ZGTtNKSt13runtime_error4whatEv(int a1); void __cdecl _ZGTtNSt11logic_errorC2EPKc(struct _Unwind_Exception **a1); void __cdecl _ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); void __cdecl __noreturn _ZGTtNSt11logic_errorD0Ev(int a1); int _ZGTtNSt11logic_errorD2Ev(); void __cdecl _ZGTtNSt11range_errorC2EPKc(struct _Unwind_Exception **a1); void __cdecl _ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); void __cdecl __noreturn _ZGTtNSt11range_errorD0Ev(int a1); int _ZGTtNSt11range_errorD2Ev(); void __cdecl _ZGTtNSt12domain_errorC2EPKc(struct _Unwind_Exception **a1); void __cdecl _ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); void __cdecl __noreturn _ZGTtNSt12domain_errorD0Ev(int a1); int _ZGTtNSt12domain_errorD2Ev(); void __cdecl _ZGTtNSt12length_errorC2EPKc(struct _Unwind_Exception **a1); void __cdecl _ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); void __cdecl __noreturn _ZGTtNSt12length_errorD0Ev(int a1); int _ZGTtNSt12length_errorD2Ev(); void __cdecl _ZGTtNSt12out_of_rangeC2EPKc(struct _Unwind_Exception **a1); void __cdecl _ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); void __cdecl __noreturn _ZGTtNSt12out_of_rangeD0Ev(int a1); int _ZGTtNSt12out_of_rangeD2Ev(); void __cdecl _ZGTtNSt13runtime_errorC2EPKc(struct _Unwind_Exception **a1); void __cdecl _ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); void __cdecl __noreturn _ZGTtNSt13runtime_errorD0Ev(int a1); int _ZGTtNSt13runtime_errorD2Ev(); void __cdecl _ZGTtNSt14overflow_errorC2EPKc(struct _Unwind_Exception **a1); void __cdecl _ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); void __cdecl __noreturn _ZGTtNSt14overflow_errorD0Ev(int a1); int _ZGTtNSt14overflow_errorD2Ev(); void __cdecl _ZGTtNSt15underflow_errorC2EPKc(struct _Unwind_Exception **a1); void __cdecl _ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); void __cdecl __noreturn _ZGTtNSt15underflow_errorD0Ev(int a1); int _ZGTtNSt15underflow_errorD2Ev(); void __cdecl _ZGTtNSt16invalid_argumentC2EPKc(struct _Unwind_Exception **a1); void __cdecl _ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); void __cdecl __noreturn _ZGTtNSt16invalid_argumentD0Ev(int a1); int _ZGTtNSt16invalid_argumentD2Ev(); // int __usercall get_adjusted_ptr@(int a1@, int a2@, int **a3@); // char *__usercall parse_lsda_header@(int a1@, char *a2@, int a3@); // int __usercall check_exception_spec@(int a1@, int a2@, int *a3@, int a4); // int __usercall base_of_encoded_value@(char a1@); void __cdecl __gxx_exception_cleanup(_Unwind_Reason_Code a1, void (**a2)(void)); // char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4); void __cdecl __noreturn __cxxabiv1::__terminate(void (*)(void)); // idb void __cdecl __noreturn __cxxabiv1::__unexpected(void (*)(void)); // idb void __fastcall __cxxabiv1::__forced_unwind::~__forced_unwind(void *Block); void __fastcall __cxxabiv1::__class_type_info::~__class_type_info(_DWORD *a1); void __cdecl __cxxabiv1::__class_type_info::~__class_type_info(__cxxabiv1::__class_type_info *__hidden this); // idb void __fastcall __cxxabiv1::__foreign_exception::~__foreign_exception(void *Block); 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 *__hidden 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 *__hidden this); // idb _DWORD *__cdecl `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 *__hidden this); // idb void __fastcall `anonymous namespace'::system_error_category::~system_error_category(void *Block); void __fastcall `anonymous namespace'::generic_error_category::~generic_error_category(void *Block); // void __usercall `anonymous namespace'::pool::free(int a1@); void __spoils `anonymous namespace'::pool::allocate(); HANDLE `anonymous namespace'::init(); int __stdcall zcc::shared_ptr::shared_ptr(void *Block); // idb int __stdcall zcc::shared_ptr::shared_ptr(void *Block); // idb int __stdcall zcc::shared_ptr::shared_ptr(void *Block); // idb void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2); void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2); void __thiscall zcc::shared_ptr,std::allocator>>::shared_ptr(_DWORD *this, int a2); void __fastcall WXML::NameAllocator::~NameAllocator(int a1); 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, unsigned __int8 **a2); char __cdecl WXML::DOMLib::Token::IsValidVariableName(char **a1); // bool __userpurge WXML::DOMLib::Token::IsMatch@(int a1@, WXML::DOMLib::Token *this, const char *a3); unsigned __int8 **__fastcall WXML::DOMLib::Token::ToString[abi:cxx11](int a1); _DWORD *__thiscall WXML::DOMLib::Token::Token(_DWORD *this, int a2); // void __userpurge WXML::DOMLib::Token::Token(int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3); // void __userpurge WXML::DOMLib::Token::Token(int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3); void __fastcall WXML::DOMLib::Token::~Token(int a1); _DWORD WXML::DOMLib::Parser::Parser(WXML::DOMLib::Parser *__hidden this); // idb void __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); void __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@, 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); void __fastcall WXML::EXPRLib::Parser::~Parser(int a1); 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); void __thiscall night::NSASTParse::NSASTParse(int this, int a2, int a3, int a4); void __fastcall night::NSASTParse::~NSASTParse(void **a1); void __fastcall night::NSCompileJs::~NSCompileJs(int a1, int a2); // void __userpurge night::ns_sourcemap::ns_sourcemap(int a1@, night::ns_sourcemap *this, const night::ns_sourcemap *a3); void __fastcall night::ns_sourcemap::~ns_sourcemap(void **a1); 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); 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, void **a2, _DWORD *a3); int __cdecl night::NSToken::tk_is_var(night::NSToken *this); void __fastcall night::NSToken::~NSToken(int a1); void **__thiscall night::ns_node::debug_no_space[abi:cxx11](void **this, const char **a2); void __fastcall night::NSStream::~NSStream(void **a1); void __fastcall __gnu_cxx::__scoped_lock::~__scoped_lock(int *a1); int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1); int __fastcall __gnu_cxx::stdio_filebuf::file(int a1); void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4); void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4); void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1); void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1); void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1); int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1); int __fastcall __gnu_cxx::stdio_filebuf::file(int a1); void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4); void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4); void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1); void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1); void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *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, fpos_t a3, int a4, int a5); _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos(_DWORD *this, FILE **a2, fpos_t a3, int a4, int a5, int a6); int __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, int Character); int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, int a2); int __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1); void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, std::locale *a2); int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, std::locale *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 *Block); 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, fpos_t a3, int a4, int a5); _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos(_DWORD *this, FILE **a2, fpos_t a3, int a4, int a5, int a6); __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); void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, std::locale *a2); int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, std::locale *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 *Block); 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 *); // idb void __noreturn __gnu_cxx::__verbose_terminate_handler(void); // idb void __noreturn __gnu_cxx::__throw_concurrence_lock_error(void); // idb void __noreturn __gnu_cxx::__throw_concurrence_unlock_error(void); // idb void __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(); _DWORD *__thiscall `anonymous namespace'::system_error_category::message[abi:cxx11](_DWORD *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); int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3); int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD **a2, unsigned int a3); int __thiscall std::wstring::find_last_of(_DWORD *this, __int16 a2, unsigned int a3); int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3); int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD **a2, unsigned int a3); int __thiscall std::wstring::find_first_of(int *this, __int16 a2, 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 __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3); int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD **a2, unsigned int a3); int __thiscall std::wstring::find_last_not_of(_DWORD *this, __int16 a2, unsigned int a3); int __thiscall std::wstring::find_first_not_of(int *this, wchar_t *String, unsigned int a3); int __thiscall std::wstring::find_first_not_of(int *this, _WORD *a2, unsigned int a3, int a4); int __thiscall std::wstring::find_first_not_of(_DWORD *this, _DWORD *a2, unsigned 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); int __thiscall std::wstring::copy(int *this, _WORD *a2, unsigned int a3, unsigned int a4); int __fastcall std::wstring::data(int a1); int __thiscall std::wstring::find(int *this, wchar_t *String, int a3); int __thiscall std::wstring::find(int *this, _WORD *a2, unsigned int a3, unsigned int a4); int __thiscall std::wstring::find(int *this, _WORD **a2, unsigned int a3); int __thiscall std::wstring::find(int *this, __int16 a2, 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); int __thiscall std::wstring::rfind(_DWORD *this, wchar_t *String, int a3); int __thiscall std::wstring::rfind(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4); int __thiscall std::wstring::rfind(_DWORD *this, _WORD **a2, unsigned 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, _DWORD *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(wchar_t **this, wchar_t *String); int __thiscall std::wstring::compare(_DWORD *this, _WORD **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, _WORD *a4, unsigned int a5); int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, _WORD **a4); int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, unsigned int 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, const 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, const char *a3, unsigned int a4); // int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, const char *a3, size_t 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@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); // int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, const 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, size_t a3, unsigned int a4, unsigned int a5); int __fastcall std::string::data(int a1); // int __userpurge std::string::find@(int *a1@, std::string *this, char *a3, unsigned int a4); // int __userpurge std::string::find@(int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5); // 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); int *__thiscall std::string::substr(int *ecx0, std::string *this, unsigned int 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, size_t 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@(_DWORD *a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, unsigned int 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); struct _Unwind_Exception *__stdcall std::__use_cache>::operator()(int *a1); struct _Unwind_Exception *__stdcall std::__use_cache>::operator()(int *a1); int __fastcall std::runtime_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); _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *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); _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int a2, int a3, int a4); _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *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, _BYTE **a6); struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3); struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, _BYTE **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); _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *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, _WORD **a6); struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3); struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, _BYTE **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); __int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(int *this, __int64 a2, int a3, int a4, unsigned __int8 a5, int a6, int *a7, void **a8); __int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, __int64 a2, int a3, int a4, unsigned __int8 a5, int a6, _DWORD *a7, int *a8); __int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, __int64 a2, int a3, int a4, unsigned __int8 a5, int a6, _DWORD *a7, long double *a8); __int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, __int64 a2, int a3, int a4, unsigned __int8 a5, int a6, int *a7, long double *a8); struct _Unwind_Exception *__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); struct _Unwind_Exception *__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); struct _Unwind_Exception *__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); struct _Unwind_Exception *__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); __int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, int a7); __int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, std::string *a7); __int64 __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); __int64 __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); __int64 __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, int a7); __int64 __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); __int64 __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); __int64 __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); long double std::random_device::_M_getentropy(); int __fastcall std::ifstream::rdbuf(int a1); bool __fastcall std::ifstream::is_open(int a1); int __fastcall std::wifstream::rdbuf(int a1); bool __fastcall std::wifstream::is_open(int a1); int __fastcall std::ofstream::rdbuf(int a1); bool __fastcall std::ofstream::is_open(int a1); int __fastcall std::wofstream::rdbuf(int a1); bool __fastcall std::wofstream::is_open(int a1); int __fastcall std::streambuf::gptr(int a1); int __fastcall std::streambuf::pptr(int a1); int __fastcall std::streambuf::eback(int a1); int __fastcall std::streambuf::egptr(int a1); int __fastcall std::streambuf::epptr(int a1); int __fastcall std::streambuf::pbase(int a1); volatile signed __int32 **__thiscall std::streambuf::getloc(volatile signed __int32 **this, int a2); int __fastcall std::wstreambuf::gptr(int a1); int __fastcall std::wstreambuf::pptr(int a1); int __fastcall std::wstreambuf::eback(int a1); int __fastcall std::wstreambuf::egptr(int a1); int __fastcall std::wstreambuf::epptr(int a1); int __fastcall std::wstreambuf::pbase(int a1); volatile signed __int32 **__thiscall std::wstreambuf::getloc(volatile signed __int32 **this, int a2); int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); int __thiscall std::__codecvt_utf8_base::do_in(int this, int a2, unsigned __int8 *a3, int a4, unsigned __int8 **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, _DWORD *a8); unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, int a5); int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); int __thiscall std::__codecvt_utf8_base::do_in(_DWORD *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8); int __thiscall std::__codecvt_utf8_base::do_out(int this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _BYTE *a6, _BYTE *a7, _DWORD *a8); unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, int a5); int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); int __thiscall std::__codecvt_utf8_base::do_in(_DWORD *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8); int __thiscall std::__codecvt_utf8_base::do_out(int this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _BYTE *a6, _BYTE *a7, _DWORD *a8); unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length(int this, int a2, unsigned __int8 *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 __fastcall std::istreambuf_iterator::_M_get(int a1); bool __thiscall std::istreambuf_iterator::equal(_WORD *this, int a2); int __fastcall std::istreambuf_iterator::_M_get(int a1); int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); 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, int a6, int a7, _DWORD *a8); int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, _WORD *a6, int a7, _DWORD *a8); char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); int __thiscall std::__codecvt_utf16_base::do_in(unsigned int *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **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, _WORD *a6, int a7, int *a8); char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); int __thiscall std::__codecvt_utf16_base::do_in(unsigned int *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **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, _WORD *a6, int a7, int *a8); char *__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 __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); 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, _DWORD *a8); unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned int a5); int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); 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, 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, _DWORD *a8); unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned int a5); int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); 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, _DWORD *a8); unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, unsigned __int8 *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); BOOL __thiscall std::map::count(_DWORD *this, int a2); unsigned __int8 *__thiscall std::ctype::do_tolower(_DWORD *this, unsigned __int8 *a2, unsigned __int8 *a3); int __thiscall std::ctype::do_tolower(_DWORD *this, int a2); unsigned __int8 *__thiscall std::ctype::do_toupper(_DWORD *this, unsigned __int8 *a2, unsigned __int8 *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); int __thiscall std::ctype::narrow(_BYTE *this, int a2, int a3); _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); wint_t *__thiscall std::ctype::do_scan_is(_WORD *this, unsigned __int16 a2, wint_t *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); wint_t *__thiscall std::ctype::do_scan_not(_WORD *this, unsigned __int16 a2, wint_t *a3, unsigned int a4); int __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, int a5); int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t WCh, int a3); int __fastcall std::locale::id::_M_id(volatile signed __int32 *a1); int __thiscall std::locale::name[abi:cxx11](int this, int a2); int *__thiscall std::locale::name(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==(void *this, int a2); unsigned int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3); unsigned 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); _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); 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, unsigned int a3); unsigned int __thiscall std::string::find_last_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); int __thiscall std::string::find_last_of(int *this, int a2, unsigned 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, unsigned int a3); unsigned int __thiscall std::string::find_first_of(_DWORD *this, void *Buf, unsigned int a3, size_t MaxCount); int __thiscall std::string::find_first_of(_DWORD *this, int a2, unsigned 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); int __thiscall std::string::find_last_not_of(int *this, char *Str, unsigned int a3); int __thiscall std::string::find_last_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); int __thiscall std::string::find_last_not_of(int *this, int a2, unsigned 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, unsigned int a3); unsigned int __thiscall std::string::find_first_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); int __thiscall std::string::find_first_not_of(int *this, int a2, unsigned int a3); int __thiscall std::string::find_first_not_of(_DWORD *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, size_t a3, unsigned int a4); int __fastcall std::string::data(int a1); unsigned int __thiscall std::string::find(int *this, char *Str, int a3); unsigned int __thiscall std::string::find(int *this, char *Buf2, unsigned int a3, size_t Size); unsigned 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); int __thiscall std::string::rfind(int *this, char *Str, int a3); int __thiscall std::string::rfind(int *this, void *Buf2, unsigned int a3, size_t Size); int __thiscall std::string::rfind(int *this, int a2, unsigned 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); _DWORD *__thiscall std::string::substr(_DWORD *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, size_t 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); int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3); int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); int __thiscall std::wstring::find_last_of(_DWORD *this, int a2, unsigned 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); int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3); int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); int __thiscall std::wstring::find_first_of(_DWORD *this, int a2, unsigned int a3); int __thiscall std::wstring::find_first_of(_DWORD *this, __int16 a2, 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); int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3); int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); int __thiscall std::wstring::find_last_not_of(_DWORD *this, int a2, unsigned 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(int *this, wchar_t *String, unsigned int a3); int __thiscall std::wstring::find_first_not_of(int *this, _WORD *a2, unsigned int a3, int a4); int __thiscall std::wstring::find_first_not_of(int *this, _DWORD *a2, unsigned int a3); int __thiscall std::wstring::find_first_not_of(_DWORD *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); int __thiscall std::wstring::copy(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4); int __fastcall std::wstring::data(int a1); int __thiscall std::wstring::find(int *this, wchar_t *String, int a3); int __thiscall std::wstring::find(int *this, _WORD *a2, unsigned int a3, unsigned int a4); int __thiscall std::wstring::find(int *this, int a2, unsigned int a3); int __thiscall std::wstring::find(_DWORD *this, __int16 a2, 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); int __thiscall std::wstring::rfind(_DWORD *this, wchar_t *String, int a3); int __thiscall std::wstring::rfind(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4); int __thiscall std::wstring::rfind(_DWORD *this, int a2, unsigned 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); _DWORD *__thiscall std::wstring::substr(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4); int __fastcall std::wstring::_M_data(int a1); int __thiscall std::wstring::compare(wchar_t **this, wchar_t *String); int __thiscall std::wstring::compare(_DWORD *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, _WORD *a4, unsigned int a5); int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, int a4); int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, unsigned int 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, int a2); int __thiscall std::wstringbuf::str(int this, _DWORD *a2); int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2); int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1); int __thiscall std::basic_stringstream,std::allocator>::str(int this, _DWORD *a2); int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1); int __thiscall std::istringstream::str(int this, int a2); int __fastcall std::istringstream::rdbuf(int a1); int __thiscall std::wistringstream::str(int this, _DWORD *a2); int __fastcall std::wistringstream::rdbuf(int a1); int __thiscall std::ostringstream::str(int this, int a2); int __fastcall std::ostringstream::rdbuf(int a1); int __thiscall std::wostringstream::str(int this, _DWORD *a2); int __fastcall std::wostringstream::rdbuf(int a1); int __stdcall std::collate::_M_compare(char *, char *); // idb int __stdcall std::collate::do_compare(_BYTE *a1, int a2, _BYTE *a3, int 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, _BYTE *a3, int a4); int __thiscall std::collate::hash(void *this, char *a2, char *a3); 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 *, wchar_t *); // idb int __stdcall std::collate::do_compare(_WORD *a1, int a2, _WORD *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, _WORD *a3, int a4); int __thiscall std::collate::hash(void *this, unsigned __int16 *a2, unsigned int a3); 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); _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 _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); _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); unsigned __int64 __stdcall std::time_get>::_M_extract_name(unsigned __int64 a1, _DWORD *a2, int a3, _DWORD *a4, int a5, int 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); _DWORD *__thiscall std::time_get>::get(void *this, _DWORD *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); int *__stdcall std::time_get>::do_get_date(int *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); int *__stdcall std::time_get>::do_get_time(int *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); _DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, unsigned __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, unsigned __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); int __stdcall std::time_get>::_M_extract_name(int *a1, int a2, _DWORD *a3, int a4, int **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); int *__stdcall std::time_get>::_M_extract_via_format(int *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, 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 __int16 *a9, unsigned __int16 *a10); int __thiscall std::time_get>::get(void *this, int *a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10); int *__stdcall std::time_get>::do_get(int *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); _DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); _DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, int a2, _DWORD *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); __int64 __stdcall std::money_get>::do_get(__int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, int *a7); __int64 __stdcall std::money_get>::do_get(__int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, long double *a7); _DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7); _DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, __int16 a2, _DWORD *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); struct _Unwind_Exception *__stdcall std::money_get>::do_get(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, int *a8); struct _Unwind_Exception *__stdcall std::money_get>::do_get(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, long double *a8); int __thiscall std::money_put>::put(void *this, __int64 a2, unsigned __int8 a3, int a4, char a5, int a6); int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); __int64 __stdcall std::money_put>::do_put(__int64 a1, char a2, int a3, char a4, int a5); __int64 __thiscall std::money_put>::do_put(void *this, __int64 a2, int a3, int a4, int a5, long double a6); __int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, char a3, int a4); __int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, char a3, int a4); int __thiscall std::money_put>::put(void *this, __int64 a2, unsigned __int8 a3, int a4, unsigned __int16 a5, int a6); int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); __int64 __stdcall std::money_put>::do_put(__int64 a1, char a2, int a3, __int16 a4, int a5); __int64 __thiscall std::money_put>::do_put(void *this, __int64 a2, int a3, int a4, int a5, long double a6); __int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, __int16 a3, int a4); __int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, __int16 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, 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, _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, 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, _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, char *a5, char *a6, char **a7); int __stdcall std::codecvt::do_out(int a1, unsigned __int16 *a2, unsigned __int16 *a3, unsigned __int16 **a4, int a5, int a6, _DWORD *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, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int8 **a4, char *a5, char *a6, char **a7); int __stdcall std::codecvt::do_out(int a1, unsigned __int16 *a2, unsigned __int16 *a3, unsigned __int16 **a4, _BYTE *a5, _BYTE *a6, _BYTE **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_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, 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); int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); BOOL __cdecl std::codecvt::do_encoding(); int __cdecl 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 *, char *); // idb int __stdcall std::collate::do_compare(void *a1, _BYTE *a2, void *a3, int 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, _BYTE *a3, int a4); int __thiscall std::collate::hash(void *this, char *a2, char *a3); 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 *, wchar_t *); // idb int __stdcall std::collate::do_compare(void *a1, _WORD *a2, void *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, _WORD *a3, int a4); int __thiscall std::collate::hash(void *this, unsigned __int16 *a2, unsigned int a3); 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); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _WORD *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); _DWORD *__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, 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, int *a6); unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _WORD *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, _DWORD *a6); unsigned __int64 __stdcall std::num_get>::_M_extract_float(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); int __thiscall std::num_get>::get(void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); 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 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); int __thiscall std::num_get>::get(void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); int __thiscall std::num_get>::get(void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); int __thiscall std::num_get>::get(void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _WORD *a7); int __thiscall std::num_get>::get(void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); int __thiscall std::num_get>::get(void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); 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, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _WORD *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, unsigned __int16 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, 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, int *a6); __int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _WORD *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_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, int *a6); int __thiscall std::num_get>::get(void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); 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 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); int __thiscall std::num_get>::get(void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); int __thiscall std::num_get>::get(void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); int __thiscall std::num_get>::get(void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _WORD *a7); int __thiscall std::num_get>::get(void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); int __thiscall std::num_get>::get(void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); int __stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6); __int64 __stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, int *a5, _BYTE *a6); std::locale::facet *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, double *a6); std::locale::facet *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, long double *a6); std::locale::facet *__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, int *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, int *a3, int a4, __int64 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, int *a4, int a5, char a6, double a7); int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, int *a4, int a5, char a6, long double a7); 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, int a4, char a5, unsigned __int8 a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, int *a4, char a5, double a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, int *a4, char a5, long double a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, int *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, int *a4, char a5, __int64 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, int *a3, int a4, int a5); int __thiscall std::num_put>::do_put(void *this, int a2, int a3, int *a4, char a5, double a6); int __thiscall std::num_put>::do_put(void *this, int a2, int a3, int *a4, char a5, long double a6); int __stdcall std::num_put>::do_put(int a1, int a2, int *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, int *a3, char a4, __int64 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, char *a6, int *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, __int64 a5); int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5, int a6); int __stdcall std::num_put>::_M_group_float(char *a1, int a2, __int16 a3, char *Src, _WORD *a5, char *a6, _DWORD *a7); int *__thiscall std::num_put>::_M_insert_float(void *this, int *a2, int a3, std::__num_base *a4, int a5, void *a6, double a7); int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, int *a4, int a5, char a6, long double a7); int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, int a6); 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, std::__num_base *a4, unsigned __int16 a5, double a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, int *a4, unsigned __int16 a5, long double a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, int a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, int a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, __int64 a6); int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, int a6, int a7); _WORD *__stdcall std::num_put>::_M_pad(unsigned __int16 a1, int a2, _DWORD *a3, _WORD *Size, _WORD *a5, int *a6); int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5); int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5); int *__thiscall std::num_put>::do_put(void *this, int *a2, int a3, std::__num_base *a4, unsigned __int16 a5, double a6); int __thiscall std::num_put>::do_put(void *this, int a2, int a3, int *a4, unsigned __int16 a5, long double a6); int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5); int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5); int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, unsigned __int16 a4, __int64 a5); int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5, int a6); _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find(_DWORD *this, int a2); const char *std::bad_cast::what(); int __fastcall std::ios_base::failure::what(int a1); int __stdcall std::messages::_M_convert_to_char(int a1); _DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); int __thiscall std::messages::open(void *this, int a2, int a3); int __thiscall std::messages::open(void *this, int a2, int a3, int a4); int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); _DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, std::string *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(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int a6); unsigned __int64 __stdcall std::time_get>::_M_extract_name(unsigned __int64 a1, _DWORD *a2, int a3, int **a4, int a5, int a6, int a7, _DWORD *a8); _DWORD *__stdcall std::time_get>::do_get_monthname(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int a6); 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); int __stdcall std::time_get>::_M_extract_wday_or_month(unsigned __int64 a1, _DWORD *a2, int a3, unsigned int *a4, int a5, unsigned int a6, int a7, _DWORD *a8); _DWORD *__stdcall std::time_get>::get(_DWORD *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, unsigned __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, unsigned __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); int __stdcall std::time_get>::_M_extract_name(int *a1, int a2, _DWORD *a3, int a4, int **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, unsigned int *a5, int a6, unsigned int a7, int a8, _DWORD *a9); _DWORD *__thiscall std::time_get>::get(void *this, _DWORD *a2, int a3, _DWORD *a4, int a5, _DWORD *a6, _DWORD *a7, _DWORD *a8, unsigned __int16 *a9, unsigned __int16 *a10); _DWORD *__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); _DWORD *__thiscall std::time_put>::put(void *this, _DWORD *a2, int a3, int a4, char a5, int a6, unsigned __int8 *a7, unsigned __int8 *a8); 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(); unsigned __int64 __stdcall std::money_get>::_M_extract(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); unsigned __int64 __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); unsigned __int64 __stdcall std::money_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, int *a7); unsigned __int64 __stdcall std::money_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, long double *a7); __int64 __stdcall std::money_get>::_M_extract(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6); __int64 __stdcall std::money_get>::_M_extract(__int64 a1, _DWORD *a2, __int16 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); struct _Unwind_Exception *__stdcall std::money_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, char a4, int a5, _DWORD *a6, int *a7); struct _Unwind_Exception *__stdcall std::money_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, char a4, int a5, _DWORD *a6, long double *a7); int __thiscall std::money_put>::put(void *this, __int64 a2, unsigned __int8 a3, int a4, char a5, struct _Unwind_Exception **a6); int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); __int64 __stdcall std::money_put>::do_put(__int64 a1, char a2, int a3, char a4, struct _Unwind_Exception **a5); __int64 __thiscall std::money_put>::do_put(void *this, __int64 a2, int a3, int a4, int a5, long double a6); __int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, char a3, struct _Unwind_Exception **a4); __int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, char a3, struct _Unwind_Exception **a4); int __thiscall std::money_put>::put(void *this, __int64 a2, unsigned __int8 a3, int a4, unsigned __int16 a5, char **a6); int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); __int64 __stdcall std::money_put>::do_put(__int64 a1, char a2, int a3, __int16 a4, char **a5); __int64 __thiscall std::money_put>::do_put(void *this, __int64 a2, int a3, int a4, int a5, long double a6); __int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, __int16 a3, char **a4); __int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, __int16 a3, char **a4); // bool __userpurge std::type_info::__do_catch@(std::type_info *a1@, std::type_info *this, const 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); int *__fastcall std::wstring::_M_leak_hard(int **a1); _DWORD *__cdecl std::wstring::_S_construct(unsigned int a1, __int16 a2); _DWORD *__cdecl std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(_WORD *Src, int a2); _DWORD *__cdecl std::wstring::_S_construct(_WORD *Src, int a2); _DWORD *__cdecl std::wstring::_S_construct(_WORD *Src, int a2); void *std::wstring::_S_empty_rep(); int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); void __fastcall std::wstring::shrink_to_fit(int *a1); int **__thiscall std::wstring::_M_replace_aux(int **this, int a2, int a3, unsigned int a4, __int16 a5); int **__thiscall std::wstring::_M_replace_safe(int **this, int a2, int a3, _WORD *Src, int a5); _DWORD *__cdecl std::wstring::_S_construct_aux_2(unsigned int a1, __int16 a2); char *__thiscall std::wstring::at(int **this, unsigned int a2); char *__fastcall std::wstring::end(int **a1); void __thiscall std::wstring::_Rep::_M_destroy(void *Block, int a2); void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *Block, 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(_DWORD *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); char *__fastcall std::wstring::back(int **a1); int **__thiscall std::wstring::rend(int **this, int **a2); int __thiscall std::wstring::swap(int *this, int *a2); int *__fastcall std::wstring::begin(int **a1); int __fastcall std::wstring::clear(int **a1); char *__thiscall std::wstring::erase(int **this, int a2); char *__thiscall std::wstring::erase(int **this, char *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(int *this, wchar_t *String); int *__thiscall std::wstring::append(int *this, char *a2, unsigned int a3); int *__thiscall std::wstring::append(int *this, _DWORD *a2); int *__thiscall std::wstring::append(int *this, _DWORD *a2, unsigned int a3, unsigned int a4); int *__thiscall std::wstring::append(int *this, unsigned int a2, __int16 a3); _DWORD *__thiscall std::wstring::assign(_DWORD *this, int *a2); int **__thiscall std::wstring::assign(int **this, wchar_t *String); int **__thiscall std::wstring::assign(int **this, char *Src, unsigned int a3); int *__thiscall std::wstring::assign(int *this, _DWORD *a2); int **__thiscall std::wstring::assign(int **this, _DWORD *a2, unsigned int a3, unsigned int a4); int **__thiscall std::wstring::assign(int **this, unsigned int a2, __int16 a3); int **__thiscall std::wstring::insert(int **this, int a2, int *a3, unsigned int a4); int __thiscall std::wstring::insert(int **this, int a2, unsigned int a3, unsigned __int16 a4); _WORD *__thiscall std::wstring::insert(int **this, int a2, __int16 a3); int **__thiscall std::wstring::insert(int **this, int a2, wchar_t *String); int **__thiscall std::wstring::insert(int **this, unsigned int a2, int *Src, unsigned int a4); int **__thiscall std::wstring::insert(int **this, int a2, int **a3); int **__thiscall std::wstring::insert(int **this, int a2, _DWORD *a3, unsigned int a4, unsigned int a5); int **__thiscall std::wstring::insert(int **this, unsigned int a2, unsigned int a3, __int16 a4); _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, int **a2); int *__thiscall std::wstring::resize(int *this, unsigned int a2); int *__thiscall std::wstring::resize(int *this, unsigned int a2, __int16 a3); int __cdecl std::wstring::_M_copy(_WORD *a1, unsigned __int16 *Src, size_t Size); int __thiscall std::wstring::_M_data(_DWORD *this, int a2); int *__fastcall std::wstring::_M_leak(int **a1); int __cdecl std::wstring::_M_move(_WORD *a1, unsigned __int16 *Src, size_t Size); int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5); int **__thiscall std::wstring::replace(int **this, int a2, int a3, wchar_t *String); int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5); int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, unsigned int a5); int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD **a4); int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5); int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5); int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5); int **__thiscall std::wstring::replace(int **this, int a2, int a3, unsigned int a4, __int16 a5); int **__thiscall std::wstring::replace(int **this, int a2, int a3, wchar_t *String); int **__thiscall std::wstring::replace(int **this, unsigned int a2, unsigned int a3, _WORD *Src, unsigned int a5); int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD **a4); int **__thiscall std::wstring::replace(int **this, int a2, int a3, _DWORD *a4, unsigned int a5, unsigned int a6); int **__thiscall std::wstring::replace(int **this, unsigned int a2, unsigned int a3, unsigned int a4, __int16 a5); void __thiscall std::wstring::reserve(int *this, unsigned int a2); int __fastcall std::wstring::pop_back(int **a1); int __cdecl std::wstring::_M_assign(_WORD *a1, int a2, __int16 a3); int __thiscall std::wstring::_M_mutate(int **this, int a2, int a3, int a4); int __thiscall std::wstring::push_back(int *this, __int16 a2); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); _WORD *__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, _WORD *a2, int a3, int a4); _WORD *__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, _WORD *a2, int a3, int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4); _WORD *__fastcall std::wstring::basic_string(_DWORD *a1); int __thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>(_DWORD *this, _WORD *Src, int a3, int a4); int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4); int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); _WORD *__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, _WORD *a2, int a3, int a4); _WORD *__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, _WORD *a2, int a3, int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4); _WORD *__fastcall std::wstring::basic_string(_DWORD *a1); int __thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>(_DWORD *this, _WORD *Src, int a3, int a4); int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4); int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4); void __fastcall std::wstring::~wstring(int *a1); void __fastcall std::wstring::~wstring(int *a1); _DWORD *__thiscall std::wstring::operator=(_DWORD *this, int *a2); int **__thiscall std::wstring::operator=(int **this, wchar_t *String); int *__thiscall std::wstring::operator=(int *this, _DWORD *a2); int **__thiscall std::wstring::operator=(int **this, char *a2, int a3); int **__thiscall std::wstring::operator=(int **this, __int16 a2); char *__thiscall std::wstring::operator[](int **this, int a2); int *__thiscall std::wstring::operator+=(int *this, wchar_t *String); int *__thiscall std::wstring::operator+=(int *this, __int16 a2); // void __userpurge std::iostream::swap(_DWORD *a1@, std::iostream *this, std::iostream *a3); void __thiscall std::iostream::iostream(_DWORD *this, int *a2); void __thiscall std::iostream::iostream(_DWORD *this, int a2); void __fastcall std::iostream::iostream(int a1); int __thiscall std::iostream::iostream(int *this, int *a2, _DWORD *a3); void __thiscall std::iostream::iostream(int *this, int *a2, int a3); void __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); // void __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); // void __userpurge std::istream::sentry::sentry(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4); // void __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); // struct _Unwind_Exception *__userpurge std::istream::readsome@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); void __thiscall std::istream::istream(_DWORD *this, int *a2); void __thiscall std::istream::istream(_DWORD *this, int a2); void __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); // void __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); void __thiscall std::ostream::ostream(_DWORD *this, _DWORD *a2); void __thiscall std::ostream::ostream(_DWORD *this, int a2); // int __userpurge std::ostream::ostream@(int a1@, std::ostream *this, std::iostream *a3); void __fastcall std::ostream::ostream(int a1); int __thiscall std::ostream::ostream(_DWORD *this, _DWORD *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); char *__fastcall std::string::_M_leak_hard(char **a1); _DWORD *__cdecl std::string::_S_construct(size_t Size, char a2); int __cdecl std::string::_S_construct<__gnu_cxx::__normal_iterator>(_BYTE *Src, int a2); int __cdecl std::string::_S_construct(_BYTE *Src, int a2); int __cdecl std::string::_S_construct(_BYTE *Src, int a2); void *std::string::_S_empty_rep(); int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size); int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size); size_t __cdecl std::string::_S_copy_chars(std::string *this, char *Src, size_t Size); size_t __cdecl std::string::_S_copy_chars(std::string *this, char *Src, size_t Size); void __fastcall std::string::shrink_to_fit(int *a1); // char **__userpurge std::string::_M_replace_aux@(char **a1@, std::string *this, unsigned int a3, size_t Size, char a5, char a6); // char **__userpurge std::string::_M_replace_safe@(char **a1@, std::string *this, unsigned int a3, _BYTE *Src, size_t Size, unsigned int a6); _DWORD *__cdecl std::string::_S_construct_aux_2(size_t Size, char a2); // char *__userpurge std::string::at@(char **a1@, unsigned int this, unsigned int a3); char *__fastcall std::string::end(char **a1); void __thiscall std::string::_Rep::_M_destroy(void *Block, int a2); void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *Block, int a2); int __fastcall std::string::_Rep::_M_refcopy(int a1); int __fastcall std::string::_Rep::_M_refdata(int a1); void *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@(_DWORD *a1@, std::string::_Rep *this, unsigned int a3); volatile signed __int32 *__thiscall std::string::_Rep::_M_grab(volatile signed __int32 *this, int a2, int a3); _DWORD *__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(char **a1); char **__thiscall std::string::rend(char **ecx0, char **this); // int __userpurge std::string::swap@(int *a1@, std::string *this, std::string *a3); char *__fastcall std::string::begin(char **a1); void __fastcall std::string::clear(char **a1); char *__thiscall std::string::erase(char **this, int a2); char *__thiscall std::string::erase(char **this, char *a2, char *a3); // char **__userpurge std::string::erase@(char **a1@, std::string *this, unsigned int a3, unsigned int a4); char *__fastcall std::string::front(char **a1); // int *__userpurge std::string::append@(int *a1@, std::string *this, const char *a3); // int *__userpurge std::string::append@(int *a1@, std::string *this, size_t Size, unsigned int a4); // int *__userpurge std::string::append@(int *a1@, std::string *this, const std::string *a3); // int *__userpurge std::string::append@(int *a1@, std::string *this, const std::string *a3, size_t a4, unsigned int a5); // int *__userpurge std::string::append@(int *a1@, size_t this, char a3, char a4); _DWORD *__thiscall std::string::assign(_DWORD *this, int *a2); // char **__userpurge std::string::assign@(char **a1@, std::string *this, const char *a3); // char **__userpurge std::string::assign@(char **a1@, std::string *this, size_t Size, unsigned int a4); // int *__userpurge std::string::assign@(int *a1@, std::string *this, const std::string *a3); // char **__userpurge std::string::assign@(char **a1@, std::string *this, const std::string *a3, size_t a4, unsigned int a5); // char **__userpurge std::string::assign@(char **a1@, size_t this, char a3, char a4); // char **__userpurge std::string::insert@(char **a1@, std::string *a2, char *a3, size_t a4, unsigned int a5); char *__thiscall std::string::insert(char **this, int a2, char a3); void __thiscall std::string::insert(char **this, int a2, size_t Size, char a4); // char **__userpurge std::string::insert@(char **a1@, std::string *this, char *Str, const char *a4); // char **__userpurge std::string::insert@(char **a1@, unsigned int this, char *Src, size_t Size, unsigned int a5); // char **__userpurge std::string::insert@(char **a1@, std::string *this, char **a3, const std::string *a4); // char **__userpurge std::string::insert@(char **a1@, std::string *this, _DWORD *a3, const std::string *a4, size_t a5, unsigned int a6); // char **__userpurge std::string::insert@(char **a1@, std::string *this, size_t Size, char a4, char a5); _DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, char **this); // void __userpurge std::string::resize(int *a1@, std::string *this, unsigned int a3); // void __userpurge std::string::resize(int *a1@, size_t this, char a3, char a4); size_t __cdecl std::string::_M_copy(std::string *this, char *Src, size_t Size); // std::string *__userpurge std::string::_M_data@(_DWORD *a1@, std::string *this, char *a3); char *__fastcall std::string::_M_leak(char **a1); size_t __cdecl std::string::_M_move(std::string *this, char *Src, size_t Size); // char **__userpurge std::string::replace@(char **a1@, std::string *a2, int a3, char *a4, int a5, unsigned int a6); char **__thiscall std::string::replace(char **this, int a2, int a3, char *Str); // char **__userpurge std::string::replace@(char **a1@, std::string *a2, int a3, char *a4, int a5, unsigned int a6); // char **__userpurge std::string::replace@(char **a1@, std::string *a2, int a3, char *a4, size_t a5, unsigned int a6); char **__thiscall std::string::replace(char **this, int a2, int a3, char **a4); // char **__userpurge std::string::replace@(char **a1@, std::string *a2, int a3, char *a4, int a5, unsigned int a6); // char **__userpurge std::string::replace@(char **a1@, std::string *a2, int a3, char *a4, int a5, unsigned int a6); // char **__userpurge std::string::replace@(char **a1@, std::string *a2, int a3, char *a4, size_t a5, unsigned int a6); char **__thiscall std::string::replace(char **this, int a2, int a3, size_t Size, char a5); // char **__userpurge std::string::replace@(char **a1@, std::string *this, unsigned int a3, char *Str, const char *a5); // char **__userpurge std::string::replace@(char **a1@, unsigned int this, unsigned int a3, char *Src, size_t Size, unsigned int a6); // char **__userpurge std::string::replace@(char **a1@, std::string *this, unsigned int a3, char **a4, const std::string *a5); // char **__userpurge std::string::replace@(char **a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, size_t a6, unsigned int a7); // char **__userpurge std::string::replace@(char **a1@, std::string *this, unsigned int a3, size_t a4, char a5, char a6); // void __userpurge std::string::reserve(int *a1@, std::string *this, unsigned int a3); void __fastcall std::string::pop_back(char **a1); char *__cdecl std::string::_M_assign(std::string *this, char *Val, size_t Size); // void __userpurge std::string::_M_mutate(char **a1@, size_t this, unsigned int a3, unsigned int a4, unsigned int a5); // int __userpurge std::string::push_back@(int *a1@, std::string *this, char a3); _BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2); _BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); int __thiscall std::string::string(_DWORD *this, char *Str, int a3); int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4); _BYTE *__thiscall std::string::string(_DWORD *this, int a2); // _DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3); _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); int __thiscall std::string::string(int *this, _DWORD *a2, unsigned int a3, int a4); // int __userpurge std::string::string@(int *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); int __thiscall std::string::string(int *this, int *a2, unsigned int a3, unsigned int a4, int a5); int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4); char *__thiscall std::string::string(_DWORD *this, size_t Size, char *a3, int a4); _BYTE *__fastcall std::string::string(_DWORD *a1); int __thiscall std::string::string<__gnu_cxx::__normal_iterator>(_DWORD *this, unsigned __int8 *Src, int a3, int a4); int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4); int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4); _BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2); _BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); int __thiscall std::string::string(_DWORD *this, char *Str, int a3); int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4); _BYTE *__thiscall std::string::string(_DWORD *this, int a2); // _DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3); _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); int __thiscall std::string::string(int *this, _DWORD *a2, unsigned int a3, int a4); // int __userpurge std::string::string@(int *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); int __thiscall std::string::string(int *this, int *a2, unsigned int a3, unsigned int a4, int a5); int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4); char *__thiscall std::string::string(_DWORD *this, size_t Size, char *a3, int a4); _BYTE *__fastcall std::string::string(_DWORD *a1); int __thiscall std::string::string<__gnu_cxx::__normal_iterator>(_DWORD *this, unsigned __int8 *Src, int a3, int a4); int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4); int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4); void __fastcall std::string::~string(int *a1); void __fastcall std::string::~string(int *a1); _DWORD *__thiscall std::string::operator=(_DWORD *this, int *a2); char **__thiscall std::string::operator=(char **this, std::string *Str); int *__thiscall std::string::operator=(int *this, _DWORD *a2); char **__thiscall std::string::operator=(char **this, std::string *a2, size_t a3); char **__thiscall std::string::operator=(char **this, char a2); char *__thiscall std::string::operator[](char **this, int a2); int *__thiscall std::string::operator+=(int *this, std::string *Str); int *__thiscall std::string::operator+=(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); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); _DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2); void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4); void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4); void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); void __fastcall std::__timepunct::~__timepunct(_DWORD *Block); void __fastcall std::__timepunct::~__timepunct(_DWORD *a1); void __fastcall std::__timepunct::~__timepunct(_DWORD *a1); _DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2); void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4); void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4); void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); void __fastcall std::__timepunct::~__timepunct(_DWORD *Block); void __fastcall std::__timepunct::~__timepunct(_DWORD *a1); void __fastcall std::__timepunct::~__timepunct(_DWORD *a1); // void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const char *a3); void __thiscall std::logic_error::logic_error(_DWORD *this, int a2); // void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const std::logic_error *a3); // void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const std::string *a3); void __fastcall std::logic_error::~logic_error(void *a1); void __cdecl std::logic_error::~logic_error(std::exception *a1); int *__thiscall std::logic_error::operator=(int *this, int a2); int *__thiscall std::logic_error::operator=(int *this, int a2); // void __userpurge std::range_error::range_error(_DWORD *a1@, std::range_error *this, const char *a3); void __thiscall std::range_error::range_error(_DWORD *this, int a2); // void __userpurge std::range_error::range_error(_DWORD *a1@, std::range_error *this, const std::string *a3); void __fastcall std::range_error::~range_error(_DWORD *a1); void __cdecl std::range_error::~range_error(std::exception *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); // unsigned __int8 *__usercall std::`anonymous namespace'::utf16_span@(unsigned __int8 *a1@, unsigned __int8 *a2@, unsigned int a3@, unsigned int a4, char a5); int __cdecl std::`anonymous namespace'::__x86_rdrand(); int __cdecl std::`anonymous namespace'::__x86_rdseed(std::_anonymous_namespace_ *this); int __cdecl std::`anonymous namespace'::__winxp_rand_s(); // int __usercall std::`anonymous namespace'::read_utf16_bom@(int a1@, int *a2@); int __cdecl std::`anonymous namespace'::__x86_rdseed_rdrand(); // 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@); // 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'::ucs2_in@(unsigned __int16 **a1@, int *a2@, unsigned int a3@, char a4); // int __usercall std::`anonymous namespace'::ucs2_out@(unsigned __int16 **a1@, _DWORD *a2@, unsigned int a3@, char a4); // int __usercall std::`anonymous namespace'::utf16_in@(unsigned __int8 **a1@, char **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); void __fastcall std::_Vector_base::~_Vector_base(void **a1); int __fastcall std::__basic_file::fd(FILE **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(FILE **this, void *DstBuf, unsigned int MaxCharCount); unsigned int __thiscall std::__basic_file::xsputn(FILE **this, char *a2, unsigned int a3); __int64 __thiscall std::__basic_file::seekoff(FILE **this, __int64 a2, int a3); void __cdecl __noreturn sub_4D7B75(int, int, int, int, int, int, int, int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int); // idb _BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, FILE *Stream, int a3); FILE **__thiscall std::__basic_file::sys_open(FILE **this, int FileHandle, char a3); int __thiscall std::__basic_file::xsputn_2(FILE **this, char *a2, unsigned int a3, char *a4, unsigned int a5); int __fastcall std::__basic_file::showmanyc(FILE **a1); void __thiscall std::__basic_file::__basic_file(_BYTE *this, int a2); FILE *__fastcall std::__basic_file::~__basic_file(int a1); void __thiscall std::__cow_string::__cow_string(_DWORD *this, _DWORD *a2); // int __userpurge std::__cow_string::__cow_string@(_DWORD *a1@, std::__cow_string *this, size_t a3, unsigned int a4); int __thiscall std::__cow_string::__cow_string(_DWORD *this, int a2); // void __userpurge std::__cow_string::__cow_string(_DWORD *a1@, std::__cow_string *this, const std::__cow_string *a3); _DWORD *__fastcall std::__cow_string::__cow_string(_DWORD *a1); void __fastcall std::__cow_string::~__cow_string(int *a1); int *__thiscall std::__cow_string::operator=(int *this, std::string *a2); int *__thiscall std::__cow_string::operator=(int *this, std::string *a2); void __thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *a2); void __thiscall std::__shared_ptr::__shared_ptr(int *this, int *a2); int __thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::__sso_string::__sso_string(_DWORD *this, _DWORD *a2); // _BYTE *__userpurge std::__sso_string::__sso_string@(int a1@, std::__sso_string *this, size_t Size, unsigned int a4); _BYTE *__thiscall std::__sso_string::__sso_string(char *this, int a2); // void __userpurge std::__sso_string::__sso_string(_DWORD *a1@, std::__sso_string *this, const std::__sso_string *a3); // _BYTE *__userpurge std::__sso_string::__sso_string@(int 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); void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3); void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::ctype_byname::~ctype_byname(_DWORD *Block); void __fastcall std::ctype_byname::~ctype_byname(int a1); void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3); void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::ctype_byname::~ctype_byname(_DWORD *Block); void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1); // void __userpurge std::domain_error::domain_error(_DWORD *a1@, std::domain_error *this, const char *a3); void __thiscall std::domain_error::domain_error(_DWORD *this, int a2); // void __userpurge std::domain_error::domain_error(_DWORD *a1@, std::domain_error *this, const std::string *a3); void __fastcall std::domain_error::~domain_error(_DWORD *a1); void __cdecl std::domain_error::~domain_error(std::exception *a1); // void __userpurge std::length_error::length_error(_DWORD *a1@, std::length_error *this, const char *a3); void __thiscall std::length_error::length_error(_DWORD *this, int a2); // void __userpurge std::length_error::length_error(_DWORD *a1@, std::length_error *this, const std::string *a3); void __fastcall std::length_error::~length_error(_DWORD *a1); void __cdecl std::length_error::~length_error(std::exception *a1); // void __userpurge std::out_of_range::out_of_range(_DWORD *a1@, std::out_of_range *this, const char *a3); void __thiscall std::out_of_range::out_of_range(_DWORD *this, int a2); // void __userpurge std::out_of_range::out_of_range(_DWORD *a1@, std::out_of_range *this, const std::string *a3); void __fastcall std::out_of_range::~out_of_range(_DWORD *a1); void __cdecl std::out_of_range::~out_of_range(std::exception *a1); void __thiscall std::system_error::system_error(_DWORD *this, int a2, int a3, char *Str); void __thiscall std::system_error::system_error(_DWORD *this, int a2, int a3, int a4); void __fastcall std::system_error::~system_error(_DWORD *a1); void __cdecl std::system_error::~system_error(std::exception *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); __int64 __cdecl std::__facet_shims::__money_get(int a1, int a2, __int64 a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int a9, _DWORD *a10); __int64 __cdecl std::__facet_shims::__money_get(int a1, int *a2, __int64 a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int a9, _DWORD *a10); struct _Unwind_Exception *__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); struct _Unwind_Exception *__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); __int64 __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); __int64 __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); __int64 __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); __int64 __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 *Block); void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block); 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 __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block); void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block); 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 __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block); void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block); 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 __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block); void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block); 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 __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block); void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block); 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 __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block); void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block); 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 __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block); void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block); 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 *Block); void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block); 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 *Block); void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block); 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 *Block); void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block); 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 *Block); void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block); 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 *Block); void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block); 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 *Block); void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); 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 __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); 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 __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); 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 __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); 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'::__destroy_string(int *a1); void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **Block); void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(int *a1); void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **Block); void __cdecl std::__facet_shims::__messages_get(int a1, int a2, _DWORD *a3, std::string *a4, int a5, int a6, unsigned __int8 *a7, size_t a8); void __cdecl std::__facet_shims::__messages_get(int a1, int a2, _DWORD *a3, int 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, _WORD *a7, int a8); void __cdecl std::__facet_shims::__messages_get(int a1, int a2, _DWORD *a3, int a4, int a5, int a6, _WORD *a7, int a8); struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, size_t a4, int a5); struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5); struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, size_t a4, int a5); struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *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, _DWORD *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, _DWORD *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); void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); void __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, int a3, int a4); void __fastcall std::__ios_failure::~__ios_failure(_DWORD *a1); void __fastcall std::__ios_failure::~__ios_failure(_DWORD *a1); void __fastcall std::bad_exception::~bad_exception(void *Block); 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(int a1); bool __thiscall std::filebuf::_M_convert_to_external(int 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); _DWORD *__thiscall std::filebuf::open(_DWORD *this, char *a2, int a3); _DWORD *__thiscall std::filebuf::open(_DWORD *this, wchar_t *a2, int a3); _DWORD *__thiscall std::filebuf::open(_DWORD *this, char *a2, int a3); int __thiscall std::filebuf::swap(int this, int a2); int __fastcall std::filebuf::sync(_DWORD *a1); struct _Unwind_Exception *__fastcall std::filebuf::close(struct _Unwind_Exception *a1); char __thiscall std::filebuf::imbue(void *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, signed 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, std::locale *a2); void __fastcall std::filebuf::basic_filebuf(int a1); int __thiscall std::filebuf::basic_filebuf(int this, std::locale *a2); void __fastcall std::filebuf::basic_filebuf(int a1); void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1); void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1); void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *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(int a1); bool __thiscall std::wfilebuf::_M_convert_to_external(int this, char *a2, unsigned int a3); void __fastcall std::wfilebuf::_M_destroy_internal_buffer(int a1); void __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1); _DWORD *__thiscall std::wfilebuf::open(_DWORD *this, char *a2, int a3); _DWORD *__thiscall std::wfilebuf::open(_DWORD *this, wchar_t *a2, int a3); _DWORD *__thiscall std::wfilebuf::open(_DWORD *this, char *a2, int a3); int __thiscall std::wfilebuf::swap(int this, int a2); int __fastcall std::wfilebuf::sync(_DWORD *a1); struct _Unwind_Exception *__fastcall std::wfilebuf::close(struct _Unwind_Exception *a1); char __thiscall std::wfilebuf::imbue(void *this, int a2); int __thiscall std::wfilebuf::setbuf(int this, __int64 a2); int __thiscall std::wfilebuf::xsgetn(_DWORD *this, char *a2, signed int a3); int __thiscall std::wfilebuf::xsputn(int this, char *a2, signed 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, std::locale *a2); void __fastcall std::wfilebuf::basic_filebuf(int a1); int __thiscall std::wfilebuf::basic_filebuf(int this, std::locale *a2); void __fastcall std::wfilebuf::basic_filebuf(int a1); void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1); void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1); void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1); int __thiscall std::wfilebuf::operator=(int this, int a2); int __thiscall std::fstream::open(int *this, char *a2, int a3); int __thiscall std::fstream::open(int *this, wchar_t *a2, int a3); int __thiscall std::fstream::open(int *this, char **a2, int a3); void __thiscall std::fstream::swap(_DWORD *this, _DWORD *a2); struct _Unwind_Exception *__fastcall std::fstream::close(_DWORD *a1); bool __fastcall std::fstream::is_open(int a1); void __thiscall std::fstream::basic_fstream(_DWORD *this, int *a2); void __thiscall std::fstream::basic_fstream(_DWORD *this, char *a2, int a3); void __thiscall std::fstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3); void __thiscall std::fstream::basic_fstream(_DWORD *this, char **a2, int a3); void __fastcall std::fstream::basic_fstream(int a1); void __thiscall std::fstream::basic_fstream(int *this, int *a2, _DWORD *a3); void __thiscall std::fstream::basic_fstream(int *this, int *a2, char *a3, int a4); void __thiscall std::fstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4); void __thiscall std::fstream::basic_fstream(int *this, int *a2, char **a3, int a4); void __thiscall std::fstream::basic_fstream(int *this, int *a2); void __fastcall std::fstream::~fstream(_DWORD *a1); void __fastcall std::fstream::~fstream(int a1); void __thiscall std::fstream::~fstream(int *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); void __thiscall std::wfstream::swap(_DWORD *this, _DWORD *a2); struct _Unwind_Exception *__fastcall std::wfstream::close(_DWORD *a1); bool __fastcall std::wfstream::is_open(int a1); void __thiscall std::wfstream::basic_fstream(_DWORD *this, int *a2); void __thiscall std::wfstream::basic_fstream(_DWORD *this, char *a2, int a3); void __thiscall std::wfstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3); void __thiscall std::wfstream::basic_fstream(_DWORD *this, char **a2, int a3); void __fastcall std::wfstream::basic_fstream(int a1); void __thiscall std::wfstream::basic_fstream(int *this, int *a2, _DWORD *a3); void __thiscall std::wfstream::basic_fstream(int *this, int *a2, char *a3, int a4); void __thiscall std::wfstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4); void __thiscall std::wfstream::basic_fstream(int *this, int *a2, char **a3, int a4); void __thiscall std::wfstream::basic_fstream(int *this, int *a2); void __fastcall std::wfstream::~wfstream(_DWORD *a1); void __fastcall std::wfstream::~wfstream(int a1); void __thiscall std::wfstream::~wfstream(int *this, int *a2); _DWORD *__thiscall std::wfstream::operator=(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); _DWORD *__thiscall std::wistream::_M_extract(_DWORD *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); void __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, __int16 a3); _DWORD *__fastcall std::wistream::ignore(_DWORD *a1); void __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3); void __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3); _DWORD *__thiscall std::wistream::getline(_DWORD *this, char *a2, int a3); _DWORD *__thiscall std::wistream::getline(_DWORD *this, char *a2, int a3, __int16 a4); int *__thiscall std::wistream::putback(int *this, unsigned __int16 a2); struct _Unwind_Exception *__thiscall std::wistream::readsome(_DWORD *this, int a2, int a3); void __thiscall std::wistream::basic_istream(_DWORD *this, int *a2); void __thiscall std::wistream::basic_istream(_DWORD *this, int a2); void __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 *Block); 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); _DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _WORD *a2); int *__thiscall std::wostream::put(int *this, unsigned __int16 a2); void __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); void __fastcall std::wostream::sentry::~sentry(int a1); void __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); void __thiscall std::wostream::basic_ostream(_DWORD *this, _DWORD *a2); void __thiscall std::wostream::basic_ostream(_DWORD *this, int a2); int __thiscall std::wostream::basic_ostream(_DWORD *this, int a2); void __fastcall std::wostream::basic_ostream(int a1); int __thiscall std::wostream::basic_ostream(_DWORD *this, _DWORD *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 *Block); 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); void __thiscall std::random_device::_M_init_pretr1(_DWORD *this, unsigned __int8 **a2); // void __userpurge std::random_device::_M_init_pretr1(_DWORD *a1@, std::random_device **this, const std::string *a3); int __fastcall std::random_device::_M_fini(int *a1); // void __userpurge std::random_device::_M_init(_DWORD *a1@, std::random_device *this, const char *a3, unsigned int a4); void *__thiscall std::random_device::_M_init(_DWORD *this, int a2); // void __userpurge std::random_device::_M_init(_DWORD *a1@, std::random_device **this, const std::string *a3); int __fastcall std::random_device::_M_getval(int a1); // void __userpurge std::runtime_error::runtime_error(_DWORD *a1@, std::runtime_error *this, const char *a3); void __thiscall std::runtime_error::runtime_error(_DWORD *this, int a2); // void __userpurge std::runtime_error::runtime_error(_DWORD *a1@, std::runtime_error *this, const std::runtime_error *a3); // void __userpurge std::runtime_error::runtime_error(_DWORD *a1@, std::runtime_error *this, const std::string *a3); void __fastcall std::runtime_error::~runtime_error(void *a1); void __cdecl std::runtime_error::~runtime_error(std::exception *a1); int *__thiscall std::runtime_error::operator=(int *this, int a2); int *__thiscall std::runtime_error::operator=(int *this, int a2); int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); int __thiscall std::ifstream::open(int *this, char *a2, int a3); int __thiscall std::ifstream::open(int *this, wchar_t *a2, int a3); int __thiscall std::ifstream::open(int *this, char **a2, int a3); void __thiscall std::ifstream::swap(_DWORD *this, _DWORD *a2); struct _Unwind_Exception *__fastcall std::ifstream::close(_DWORD *a1); bool __fastcall std::ifstream::is_open(int a1); void __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2); void __thiscall std::ifstream::basic_ifstream(_DWORD *this, char *a2, int a3); void __thiscall std::ifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3); void __thiscall std::ifstream::basic_ifstream(_DWORD *this, char **a2, int a3); void __fastcall std::ifstream::basic_ifstream(int a1); void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, _DWORD *a3); void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, char *a3, int a4); void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4); void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, char **a3, int a4); void __thiscall std::ifstream::basic_ifstream(int *this, int *a2); void __fastcall std::ifstream::~ifstream(_DWORD *a1); void __fastcall std::ifstream::~ifstream(int a1); void __thiscall std::ifstream::~ifstream(int *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); void __thiscall std::wifstream::swap(_DWORD *this, _DWORD *a2); struct _Unwind_Exception *__fastcall std::wifstream::close(_DWORD *a1); bool __fastcall std::wifstream::is_open(int a1); void __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2); void __thiscall std::wifstream::basic_ifstream(_DWORD *this, char *a2, int a3); void __thiscall std::wifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3); void __thiscall std::wifstream::basic_ifstream(_DWORD *this, char **a2, int a3); void __fastcall std::wifstream::basic_ifstream(int a1); void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, _DWORD *a3); void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char *a3, int a4); void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4); void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char **a3, int a4); void __thiscall std::wifstream::basic_ifstream(int *this, int *a2); void __fastcall std::wifstream::~wifstream(_DWORD *a1); void __fastcall std::wifstream::~wifstream(int a1); void __thiscall std::wifstream::~wifstream(int *this, int *a2); _DWORD *__thiscall std::wifstream::operator=(_DWORD *this, _DWORD *a2); void __thiscall std::wiostream::swap(_DWORD *this, _DWORD *a2); void __thiscall std::wiostream::basic_iostream(_DWORD *this, int *a2); void __thiscall std::wiostream::basic_iostream(_DWORD *this, int a2); void __fastcall std::wiostream::basic_iostream(int a1); int __thiscall std::wiostream::basic_iostream(int *this, int *a2, _DWORD *a3); void __thiscall std::wiostream::basic_iostream(int *this, int *a2, int a3); void __thiscall std::wiostream::basic_iostream(int *this, int *a2); void __fastcall std::wiostream::~basic_iostream(char *Block); 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(int *this, char *a2, int a3); int __thiscall std::ofstream::open(int *this, wchar_t *a2, int a3); int __thiscall std::ofstream::open(int *this, char **a2, int a3); void __thiscall std::ofstream::swap(_DWORD *this, _DWORD *a2); struct _Unwind_Exception *__fastcall std::ofstream::close(_DWORD *a1); bool __fastcall std::ofstream::is_open(int a1); void __thiscall std::ofstream::basic_ofstream(_DWORD *this, _DWORD *a2); void __thiscall std::ofstream::basic_ofstream(_DWORD *this, char *a2, int a3); void __thiscall std::ofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3); void __thiscall std::ofstream::basic_ofstream(_DWORD *this, char **a2, int a3); void __fastcall std::ofstream::basic_ofstream(int a1); void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, _DWORD *a3); void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, char *a3, int a4); void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4); void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, char **a3, int a4); void __thiscall std::ofstream::basic_ofstream(int *this, int *a2); void __fastcall std::ofstream::~ofstream(_DWORD *a1); void __fastcall std::ofstream::~ofstream(int a1); void __thiscall std::ofstream::~ofstream(int *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); void __thiscall std::wofstream::swap(_DWORD *this, _DWORD *a2); struct _Unwind_Exception *__fastcall std::wofstream::close(_DWORD *a1); bool __fastcall std::wofstream::is_open(int a1); void __thiscall std::wofstream::basic_ofstream(_DWORD *this, _DWORD *a2); void __thiscall std::wofstream::basic_ofstream(_DWORD *this, char *a2, int a3); void __thiscall std::wofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3); void __thiscall std::wofstream::basic_ofstream(_DWORD *this, char **a2, int a3); void __fastcall std::wofstream::basic_ofstream(int a1); void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, _DWORD *a3); void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char *a3, int a4); void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4); void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char **a3, int a4); void __thiscall std::wofstream::basic_ofstream(int *this, int *a2); void __fastcall std::wofstream::~wofstream(_DWORD *a1); void __fastcall std::wofstream::~wofstream(int a1); void __thiscall std::wofstream::~wofstream(int *this, int *a2); _DWORD *__thiscall std::wofstream::operator=(_DWORD *this, _DWORD *a2); void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *Block); void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *Block); void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::collate_byname::~collate_byname(_DWORD *Block); void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::collate_byname::~collate_byname(_DWORD *Block); void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); // void __userpurge std::overflow_error::overflow_error(_DWORD *a1@, std::overflow_error *this, const char *a3); void __thiscall std::overflow_error::overflow_error(_DWORD *this, int a2); // void __userpurge std::overflow_error::overflow_error(_DWORD *a1@, std::overflow_error *this, const std::string *a3); void __fastcall std::overflow_error::~overflow_error(_DWORD *a1); void __cdecl std::overflow_error::~overflow_error(std::exception *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 *Block); 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 *Block); void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); 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 *Block); void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); 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 *Block); void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); 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 *Block); void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); 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 *Block); void __fastcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::_M_destroy(void *Block); int __fastcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::_M_dispose(int a1); int __stdcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::_M_get_deleter(int a1); void __fastcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr(void *Block); _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); 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@, std::locale *a2, const std::locale *a3); void __fastcall std::streambuf::basic_streambuf(_DWORD *a1); // volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@(_DWORD *a1@, std::locale *a2, const std::locale *a3); void __fastcall std::streambuf::basic_streambuf(_DWORD *a1); void __fastcall std::streambuf::~streambuf(char *Block); 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); 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, char *a2, int a3); int __thiscall std::wstreambuf::xsputn(_DWORD *this, char *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@, std::locale *a2, const std::locale *a3); void __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1); // volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@(_DWORD *a1@, std::locale *a2, const std::locale *a3); void __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1); void __fastcall std::wstreambuf::~wstreambuf(char *Block); 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); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::messages_byname::~messages_byname(_DWORD *Block); void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::messages_byname::~messages_byname(_DWORD *Block); void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *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 *Block); 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 *Block); 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 *Block); 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 *Block); 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); // void __userpurge std::underflow_error::underflow_error(_DWORD *a1@, std::underflow_error *this, const char *a3); void __thiscall std::underflow_error::underflow_error(_DWORD *this, int a2); // void __userpurge std::underflow_error::underflow_error(_DWORD *a1@, std::underflow_error *this, const std::string *a3); void __fastcall std::underflow_error::~underflow_error(_DWORD *a1); void __cdecl std::underflow_error::~underflow_error(std::exception *a1); int __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(volatile signed __int32 *a1); void __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(int 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); // void __userpurge std::invalid_argument::invalid_argument(_DWORD *a1@, std::invalid_argument *this, const char *a3); void __thiscall std::invalid_argument::invalid_argument(_DWORD *this, int a2); // void __userpurge std::invalid_argument::invalid_argument(_DWORD *a1@, std::invalid_argument *this, const std::string *a3); void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1); void __cdecl std::invalid_argument::~invalid_argument(std::exception *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 *Block); 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 *Block); void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *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 *Block); void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1); void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block); void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1); void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block); void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *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 *__hidden this); // idb void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block); void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1); void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block); void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1); void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block); void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1); char *__cdecl std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>(int a1, int a2, char *a3); int __cdecl std::__uninitialized_copy::__uninit_copy(night::ns_sourcemap *a1, night::ns_sourcemap *a2, int 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::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block); 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 *Block); 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 *Block); void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1); void __fastcall std::_V2::error_category::~error_category(void *Block); 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); char *__thiscall std::map>::operator[](_DWORD *this, int a2); _DWORD *__thiscall std::map,std::allocator>>>::operator[](_DWORD *this, _DWORD *a2); char *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2); char *__thiscall std::map::operator[](_DWORD *this, int a2); _DWORD *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2); char *__thiscall std::map::operator[](_DWORD *this, int a2); char *__thiscall std::map>::operator[](_DWORD *this, _DWORD *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); void **__thiscall std::map::operator[](void **this, int a2); _DWORD *__thiscall std::map>>::operator[](_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::map>>::operator[](_DWORD *this, int *a2); char *__thiscall std::map::operator[](_DWORD *this, unsigned int *a2); char *__thiscall std::set::insert(_DWORD *this, int a2); void __thiscall std::pair::swap(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::pair::pair(_DWORD *this, _DWORD *a2); void __fastcall std::pair::~pair(void **a1); int __cdecl std::__pad>::_S_pad(_DWORD *a1, void *Src, char *a3, _BYTE *a4, int a5, int a6); _WORD *__cdecl std::__pad>::_S_pad(_DWORD *a1, void *Src, _WORD *Size, _WORD *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 **Block); void __fastcall std::ctype::~ctype(int a1); int __fastcall std::ctype::_M_initialize_ctype(int a1); int __thiscall std::ctype::ctype(_DWORD *this, char a2, int a3); void __thiscall std::ctype::ctype(_DWORD *this, int a2); void __fastcall std::ctype::~ctype(_DWORD *Block); void __fastcall std::ctype::~ctype(_DWORD *a1); int __fastcall std::deque>::back(_DWORD *a1); int __fastcall std::deque>::pop_back(_DWORD *a1); void __thiscall std::deque>::push_back(int this, _DWORD *a2); int __fastcall std::deque>::back(_DWORD *a1); int __fastcall std::deque>::pop_back(_DWORD *a1); void __thiscall std::deque>::push_back(int this, int *a2); int __fastcall std::deque>::pop_back(_DWORD *a1); void __thiscall std::deque>::push_back(int this, int *a2); void __thiscall std::deque::_M_push_back_aux(int this, int a2); void __fastcall std::deque::pop_back(_DWORD *a1); std::locale *std::locale::_S_initialize(); std::locale *std::locale::_S_initialize_once(); std::locale *__cdecl std::locale::_S_normalize_category(std::locale *this); // void __userpurge std::locale::_Impl::_M_init_extra(int a1@, std::locale::_Impl *this, std::locale::facet **a3); // void __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); // void __userpurge std::locale::_Impl::_M_install_facet(_DWORD *a1@, std::locale::_Impl *this, const std::locale::id *a3, const std::locale::facet *a4); // void __userpurge std::locale::_Impl::_M_replace_facet(_DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl *a3, const std::locale::id *a4); // int __userpurge std::locale::_Impl::_M_replace_category@(int result@, _DWORD *a2@, std::locale::_Impl *this, volatile signed __int32 **a4, const std::locale::id *const *a5); // void __userpurge std::locale::_Impl::_Impl(_DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl *a3, unsigned int a4); // void __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); int **std::locale::facet::_S_initialize_once(); 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 *Block); 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); void __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&>(_DWORD *this, char *a2, _DWORD *a3); int __thiscall std::vector>::_M_erase(_DWORD *this, int a2); void __thiscall std::vector>::push_back(_DWORD *this, _DWORD *a2); char *__thiscall std::vector>::_M_realloc_insert const&>(int **this, int *a2, int *a3); void __thiscall std::vector>::push_back(int **this, int *a2); char *__thiscall std::vector>::_M_realloc_insert const&>(_DWORD *this, char *a2, _DWORD *a3); char *__thiscall std::vector>::push_back(_DWORD *this, _DWORD *a2); void __thiscall std::vector>::vector(_DWORD *this, _DWORD *a2); void __fastcall std::vector>::~vector(void **a1); void __thiscall std::vector::_M_realloc_insert(char **this, char *a2, _DWORD *a3); void __thiscall std::vector::push_back(char **this, _DWORD *a2); void __fastcall std::vector::~vector(void **a1); void __thiscall std::vector::_M_realloc_insert(void **this, int a2, WXML::DOMLib::Token *a3); void __thiscall std::vector::push_back(int this, WXML::DOMLib::Token *a2); void __fastcall std::vector::~vector(void **a1); void __thiscall std::vector::_M_realloc_insert(struct _Unwind_Exception **this, void **a2, _DWORD *a3); void __thiscall std::vector::push_back(int this, _DWORD *a2); void __fastcall std::vector::~vector(void ***a1); _DWORD *__thiscall std::vector::_M_realloc_insert(_DWORD *this, char *a2, WXML::EXPRLib::Token *a3); void __fastcall std::vector::~vector(void **a1); void __thiscall std::vector::_M_realloc_insert(night::ns_sourcemap **this, night::ns_sourcemap *a2, night::ns_sourcemap *a3); int __thiscall std::vector::at(int *this, unsigned int a2); void __thiscall std::vector::push_back(night::ns_sourcemap **this, night::ns_sourcemap *a2); void __fastcall std::vector::~vector(void ***a1, int a2); _DWORD *__thiscall std::vector::emplace_back(void **this, _DWORD *a2); void __thiscall std::vector::_M_realloc_insert(void **this, char *a2, int a3); int __thiscall std::vector::_M_realloc_insert(void **this, char *a2, _DWORD *a3); void __thiscall std::vector::push_back(int this, int a2); void __fastcall std::vector::~vector(void ***a1, 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, char **a2); int __thiscall std::vector::at(_DWORD *this, unsigned int a2); char *__thiscall std::vector::push_back(void **this, char **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); void __fastcall std::vector>::~vector(void ***a1); _DWORD *__thiscall std::vector>::emplace_back>(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::vector>::_M_realloc_insert>(_DWORD *this, char *a2, _DWORD *a3); void __fastcall std::vector>::~vector(void ***a1); char **__thiscall std::vector>::emplace_back>(int this, _DWORD *a2); char **__thiscall std::vector>::_M_realloc_insert>(char **this, char *a2, _DWORD *a3); void __fastcall std::vector>::~vector(void ***a1); char *__thiscall std::vector>::_M_realloc_insert>(_DWORD *this, char *a2, _DWORD *a3); void __fastcall std::vector>::~vector(void **a1); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); void __fastcall std::moneypunct::~moneypunct(_DWORD *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 Size, 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 *Src, size_t Size); _BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4); _BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3); _BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3); _BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3); _BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3); _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 *Src, size_t Size); int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size); int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size); int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, 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 Size, 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); char *__thiscall std::string::erase(int *this, char *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 *Src, size_t Size); _DWORD *__thiscall std::string::append(_DWORD *this, int a2); _DWORD *__thiscall std::string::append(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4); _DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *Src, size_t Size); _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); int __cdecl std::string::_S_copy(_BYTE *a1, unsigned __int8 *Src, int Size); int __cdecl std::string::_S_move(_BYTE *a1, unsigned __int8 *Src, int 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, unsigned int a3, int a4); unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, unsigned int 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(_DWORD *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); _BYTE *__thiscall std::string::basic_string(_DWORD *this, char *Str, int a3); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); char *__thiscall std::string::basic_string(_DWORD *this, int a2); _BYTE *__thiscall std::string::basic_string(char *this, int a2); _BYTE *__thiscall std::string::basic_string(char *this, int a2, int a3); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); _BYTE *__thiscall std::string::basic_string(char *this, size_t Size, char a3, int a4); int __fastcall std::string::basic_string(int a1); _BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>(char *this, char *Src, int a3, int a4); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); _BYTE *__thiscall std::string::basic_string(char *this, char *Src, 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); _BYTE *__thiscall std::string::basic_string(_DWORD *this, char *Str, int a3); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); char *__thiscall std::string::basic_string(_DWORD *this, int a2); _BYTE *__thiscall std::string::basic_string(char *this, int a2); _BYTE *__thiscall std::string::basic_string(char *this, int a2, int a3); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); _BYTE *__thiscall std::string::basic_string(char *this, size_t Size, char a3, int a4); int __fastcall std::string::basic_string(int a1); _BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>(char *this, char *Src, int a3, int a4); _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); _BYTE *__thiscall std::string::basic_string(char *this, char *Src, 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 *Src, size_t Size); _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); unsigned int *__thiscall std::wstring::_M_replace(unsigned int *this, int a2, unsigned int a3, _WORD *Src, unsigned int 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); int __thiscall std::wstring::_M_construct(_DWORD *this, unsigned int a2, __int16 a3); _WORD *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _WORD *Src, int a3, int a4); _WORD *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _WORD *Src, int a3, int a4); _WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3, int a4); _WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3); _WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3); _WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3, int a4); _WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3); 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(_WORD *a1, unsigned __int16 *Src, size_t Size); int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); void __fastcall std::wstring::shrink_to_fit(_DWORD *a1); _DWORD *__thiscall std::wstring::_M_replace_aux(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5); int __fastcall std::wstring::_M_get_allocator(int a1); int __thiscall std::wstring::_M_construct_aux_2(_DWORD *this, unsigned int a2, __int16 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); _WORD *__thiscall std::wstring::swap(_DWORD *this, _DWORD *a2); int __fastcall std::wstring::begin(int a1); _WORD *__fastcall std::wstring::clear(int a1); char *__thiscall std::wstring::erase(int *this, char *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); _DWORD *__thiscall std::wstring::append(_DWORD *this, wchar_t *String); _DWORD *__thiscall std::wstring::append(_DWORD *this, _WORD *Src, unsigned int a3); _DWORD *__thiscall std::wstring::append(_DWORD *this, int a2); _DWORD *__thiscall std::wstring::append(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4); _DWORD *__thiscall std::wstring::append(_DWORD *this, _WORD *Src, unsigned int a3); _DWORD *__thiscall std::wstring::append(_DWORD *this, unsigned int a2, __int16 a3); _DWORD *__thiscall std::wstring::assign(_DWORD *this, _DWORD *a2); unsigned int *__thiscall std::wstring::assign(unsigned int *this, wchar_t *String); unsigned int *__thiscall std::wstring::assign(unsigned int *this, _WORD *a2, int a3); void *__thiscall std::wstring::assign(void *this, int a2); unsigned int *__thiscall std::wstring::assign(unsigned int *this, _DWORD *a2, unsigned int a3, unsigned int a4); unsigned int *__thiscall std::wstring::assign(unsigned int *this, _WORD *a2, int a3); _DWORD *__thiscall std::wstring::assign(_DWORD *this, unsigned int a2, __int16 a3); unsigned int __thiscall std::wstring::insert(unsigned int *this, int a2, _WORD *a3, int a4); int __thiscall std::wstring::insert(_DWORD *this, int a2, unsigned int a3, __int16 a4); int __thiscall std::wstring::insert(_DWORD *this, int a2, __int16 a3); unsigned int *__thiscall std::wstring::insert(unsigned int *this, int a2, _WORD *a3, int a4); _DWORD *__thiscall std::wstring::insert(_DWORD *this, int a2, unsigned int a3, __int16 a4); int __thiscall std::wstring::insert(_DWORD *this, int a2, __int16 a3); unsigned int *__thiscall std::wstring::insert(unsigned int *this, unsigned int a2, wchar_t *String); unsigned int *__thiscall std::wstring::insert(unsigned int *this, unsigned int a2, _WORD *a3, int a4); unsigned int *__thiscall std::wstring::insert(unsigned int *this, unsigned int a2, int a3); unsigned int *__thiscall std::wstring::insert(unsigned int *this, unsigned int a2, _DWORD *a3, unsigned int a4, unsigned int a5); _DWORD *__thiscall std::wstring::insert(_DWORD *this, unsigned int a2, unsigned int a3, __int16 a4); unsigned int *__thiscall std::wstring::insert<__gnu_cxx::__normal_iterator>(unsigned int *this, int a2, _WORD *a3, int a4); _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2); _DWORD *__thiscall std::wstring::resize(int *this, unsigned int a2); _DWORD *__thiscall std::wstring::resize(int *this, unsigned int a2, __int16 a3); int __thiscall std::wstring::_M_data(_DWORD *this, int a2); int __cdecl std::wstring::_S_copy(_WORD *a1, unsigned __int16 *Src, size_t Size); int __cdecl std::wstring::_S_move(_WORD *a1, unsigned __int16 *Src, size_t Size); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, int a4); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, wchar_t *String); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); _DWORD *__thiscall std::wstring::replace(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, wchar_t *String); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, int a4); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); _DWORD *__thiscall std::wstring::replace(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5); unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, wchar_t *String); unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, _WORD *a4, int a5); unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, int a4); unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, unsigned int a6); _DWORD *__thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, unsigned int a4, __int16 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); _DWORD *__thiscall std::wstring::_M_append(_DWORD *this, _WORD *Src, int a3); 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); unsigned int __thiscall std::wstring::_M_mutate(int this, int a2, int a3, _WORD *a4, int a5); int __cdecl std::wstring::_S_assign(_WORD *a1, int a2, __int16 a3); _DWORD *__thiscall std::wstring::push_back(_DWORD *this, __int16 a2); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); int __thiscall std::wstring::basic_string(_DWORD *this, int a2); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); int __thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4); int __fastcall std::wstring::basic_string(int a1); _WORD *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>(_DWORD *this, _WORD *Src, int a3, int a4); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); int __thiscall std::wstring::basic_string(_DWORD *this, int a2); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); int __thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4); int __fastcall std::wstring::basic_string(int a1); _WORD *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>(_DWORD *this, _WORD *Src, int a3, int a4); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); void __fastcall std::wstring::~wstring(void **a1); void __fastcall std::wstring::~wstring(void **a1); _DWORD *__thiscall std::wstring::operator=(_DWORD *this, int a2); unsigned int *__thiscall std::wstring::operator=(unsigned int *this, wchar_t *String); void *__thiscall std::wstring::operator=(void *this, int a2); unsigned int *__thiscall std::wstring::operator=(unsigned int *this, _WORD *a2, int a3); _DWORD *__thiscall std::wstring::operator=(_DWORD *this, __int16 a2); int __thiscall std::wstring::operator[](_DWORD *this, int a2); _DWORD *__thiscall std::wstring::operator+=(_DWORD *this, wchar_t *String); _DWORD *__thiscall std::wstring::operator+=(_DWORD *this, int a2); _DWORD *__thiscall std::wstring::operator+=(_DWORD *this, _WORD *Src, unsigned int a3); int __thiscall std::wstring::operator+=(char *this, __int16 a2); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::collate_byname::~collate_byname(_DWORD *Block); void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); void __fastcall std::collate_byname::~collate_byname(_DWORD *Block); void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); void __fastcall std::collate_byname::~collate_byname(_DWORD *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); _DWORD *__thiscall std::stringbuf::_M_stringbuf_init(_DWORD *this, int a2); int __thiscall std::stringbuf::str(int this, int a2); void __thiscall std::stringbuf::swap(_DWORD *this, int a2); _DWORD *__thiscall std::stringbuf::setbuf(int this, _DWORD *a2, int a3); int __thiscall std::stringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4); _DWORD *__thiscall std::stringbuf::seekoff(_DWORD *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(_DWORD *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); void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale *a2); std::locale *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3); void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2, int a3); char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2); int __fastcall std::stringbuf::basic_stringbuf(int a1); void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale *a2); std::locale *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3); void __thiscall std::stringbuf::basic_stringbuf(_DWORD *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 *Block); 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); _DWORD *__thiscall std::wstringbuf::_M_stringbuf_init(_DWORD *this, int a2); int __thiscall std::wstringbuf::str(int this, int a2); void __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); _DWORD *__thiscall std::wstringbuf::seekoff(_DWORD *this, int 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(_DWORD *this, unsigned __int16 a2); int __thiscall std::wstringbuf::pbackfail(int this, int a2); int __fastcall std::wstringbuf::showmanyc(int a1); int __fastcall std::wstringbuf::underflow(int a1); void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale *a2); int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3); void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2, int a3); int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2); int __fastcall std::wstringbuf::basic_stringbuf(int a1); void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale *a2); int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3); void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *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 *Block); void __fastcall std::wstringbuf::~wstringbuf(int a1); int __thiscall std::wstringbuf::operator=(int this, int a2); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __fastcall std::messages_byname::~messages_byname(_DWORD *Block); void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); void __fastcall std::messages_byname::~messages_byname(_DWORD *Block); void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *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 *Block); 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 *Block); 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); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2); void __thiscall std::basic_stringstream,std::allocator>::swap(_DWORD *this, _DWORD *a2); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int *a2); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2, int a3); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2); void __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, _DWORD *a3); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3, int a4); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2); void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *Block); void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream(char *this, int *a2); _DWORD *__thiscall std::basic_stringstream,std::allocator>::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2); void __thiscall std::basic_stringstream,std::allocator>::swap(_DWORD *this, _DWORD *a2); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, _DWORD *a2); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2, int a3); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2); void __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, _DWORD *a3); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3, int a4); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3); void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2); void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *Block); void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream(char *this, int *a2); _DWORD *__thiscall std::basic_stringstream,std::allocator>::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::istringstream::str(int this, int a2); void __thiscall std::istringstream::swap(_DWORD *this, _DWORD *a2); void __thiscall std::istringstream::basic_istringstream(_DWORD *this, _DWORD *a2); void __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2, int a3); void __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2); void __fastcall std::istringstream::basic_istringstream(int a1); void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, _DWORD *a3); void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3, int a4); void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3); void __thiscall std::istringstream::basic_istringstream(int *this, int *a2); void __fastcall std::istringstream::~istringstream(_DWORD *Block); void __fastcall std::istringstream::~istringstream(int a1); int __thiscall std::istringstream::~istringstream(int *this, int *a2); _DWORD *__thiscall std::istringstream::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::wistringstream::str(int this, int a2); void __thiscall std::wistringstream::swap(_DWORD *this, _DWORD *a2); void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, _DWORD *a2); void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2, int a3); void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2); void __fastcall std::wistringstream::basic_istringstream(int a1); void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, _DWORD *a3); void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3, int a4); void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3); void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2); void __fastcall std::wistringstream::~wistringstream(_DWORD *Block); void __fastcall std::wistringstream::~wistringstream(int a1); int __thiscall std::wistringstream::~wistringstream(int *this, int *a2); _DWORD *__thiscall std::wistringstream::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::ostringstream::str(int this, int a2); void __thiscall std::ostringstream::swap(_DWORD *this, _DWORD *a2); void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2); void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2, int a3); void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2); void __fastcall std::ostringstream::basic_ostringstream(int a1); void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3); void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3, int a4); void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3); void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2); void __fastcall std::ostringstream::~ostringstream(_DWORD *Block); void __fastcall std::ostringstream::~ostringstream(int a1); int __thiscall std::ostringstream::~ostringstream(int *this, int *a2); _DWORD *__thiscall std::ostringstream::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::wostringstream::str(int this, int a2); void __thiscall std::wostringstream::swap(_DWORD *this, _DWORD *a2); void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2); void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2, int a3); void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2); void __fastcall std::wostringstream::basic_ostringstream(int a1); void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3); void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3, int a4); void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3); void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2); void __fastcall std::wostringstream::~wostringstream(_DWORD *Block); void __fastcall std::wostringstream::~wostringstream(int a1); int __thiscall std::wostringstream::~wostringstream(int *this, int *a2); _DWORD *__thiscall std::wostringstream::operator=(_DWORD *this, _DWORD *a2); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); void __thiscall std::collate::collate(_DWORD *this, int a2); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); void __thiscall std::collate::collate(_DWORD *this, int a2); void __fastcall std::collate::~collate(_DWORD *Block); void __fastcall std::collate::~collate(_DWORD *a1); void __fastcall std::collate::~collate(_DWORD *a1); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); void __thiscall std::collate::collate(_DWORD *this, int a2); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); void __thiscall std::collate::collate(_DWORD *this, int a2); void __fastcall std::collate::~collate(_DWORD *Block); void __fastcall std::collate::~collate(_DWORD *a1); void __fastcall std::collate::~collate(_DWORD *a1); void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); void __thiscall std::messages::messages(_DWORD *this, int a2); void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); void __thiscall std::messages::messages(_DWORD *this, int a2); void __fastcall std::messages::~messages(_DWORD *Block); void __fastcall std::messages::~messages(_DWORD *a1); void __fastcall std::messages::~messages(_DWORD *a1); void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); void __thiscall std::messages::messages(_DWORD *this, int a2); void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); void __thiscall std::messages::messages(_DWORD *this, int a2); void __fastcall std::messages::~messages(_DWORD *Block); void __fastcall std::messages::~messages(_DWORD *a1); void __fastcall std::messages::~messages(_DWORD *a1); _DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); void __fastcall std::numpunct::~numpunct(_DWORD *a1); void __fastcall std::numpunct::~numpunct(_DWORD *a1); int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); void __fastcall std::numpunct::~numpunct(_DWORD *a1); void __fastcall std::numpunct::~numpunct(_DWORD *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 *Block); 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 *Block); 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 *Block); 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 *Block); 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 *Block); 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 *Block); void __cdecl std::money_put>::~money_put(std::locale::facet *a1); void __cdecl std::money_put>::~money_put(std::locale::facet *a1); std::__cxx11 *__cdecl std::to_string(std::__cxx11 *this, unsigned int a2); std::__cxx11 *__cdecl std::to_string(std::__cxx11 *this, unsigned int a2); void __fastcall std::codecvt::~codecvt(_DWORD *Block); void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); void __fastcall std::codecvt::~codecvt(_DWORD *Block); void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); void __fastcall std::codecvt::~codecvt(_DWORD *Block); void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); void __fastcall std::codecvt::~codecvt(_DWORD *Block); void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3); void __thiscall std::codecvt::codecvt(_DWORD *this, int a2); void __fastcall std::codecvt::~codecvt(_DWORD *a1); void __fastcall std::codecvt::~codecvt(_DWORD *a1); int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3); void __thiscall std::codecvt::codecvt(_DWORD *this, int a2); void __fastcall std::codecvt::~codecvt(_DWORD *a1); void __fastcall std::codecvt::~codecvt(_DWORD *a1); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); void __thiscall std::collate::collate(_DWORD *this, int a2); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); void __thiscall std::collate::collate(_DWORD *this, int a2); void __fastcall std::collate::~collate(_DWORD *Block); void __fastcall std::collate::~collate(_DWORD *a1); void __fastcall std::collate::~collate(_DWORD *a1); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); void __thiscall std::collate::collate(_DWORD *this, int a2); int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); void __thiscall std::collate::collate(_DWORD *this, int a2); void __fastcall std::collate::~collate(_DWORD *Block); void __fastcall std::collate::~collate(_DWORD *a1); void __fastcall std::collate::~collate(_DWORD *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 *Block); 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 *Block); 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 *Block); 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 *Block); 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_insert_unique(_DWORD *this, _DWORD *a2); 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 __fastcall std::_Rb_tree,std::less,std::allocator>::~_Rb_tree(int 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 __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(int a1); _DWORD *__thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::lower_bound(_DWORD *this, int a2); _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); char *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>(_DWORD *this, int a2); void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int 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); struct _Unwind_Exception *__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); _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::lower_bound(_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 __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int 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 __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(int a1); _DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::lower_bound(_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); int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_Rb_tree(_DWORD *this, int a2); void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(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 __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int 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 __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int 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); int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, unsigned int *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); void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int 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); void __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); void std::ios_base::Init::Init(); void 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(std::ios_base *a1@, std::ios_base *this, std::ios_base *a3); void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, char *a2, int *a3); void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2); void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2, int *a3); void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *Block); void __cdecl std::ios_base::failure[abi:cxx11]::~failure(std::exception *a1); // void __userpurge std::ios_base::failure::failure(_DWORD *a1@, std::ios_base::failure *this, const std::string *a3); void __fastcall std::ios_base::failure::~failure(_DWORD *a1); void __cdecl std::ios_base::failure::~failure(std::ios_base::failure *__hidden this); // idb void __fastcall std::ios_base::ios_base(_DWORD *a1); void __fastcall std::ios_base::~ios_base(int a1); void __fastcall std::ios_base::~ios_base(int a1); void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); void __thiscall std::messages::messages(_DWORD *this, int a2); void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); void __thiscall std::messages::messages(_DWORD *this, int a2); void __fastcall std::messages::~messages(_DWORD *Block); void __fastcall std::messages::~messages(_DWORD *a1); void __fastcall std::messages::~messages(_DWORD *a1); void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); void __thiscall std::messages::messages(_DWORD *this, int a2); void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); void __thiscall std::messages::messages(_DWORD *this, int a2); void __fastcall std::messages::~messages(_DWORD *Block); void __fastcall std::messages::~messages(_DWORD *a1); void __fastcall std::messages::~messages(_DWORD *a1); _DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); void __fastcall std::numpunct::~numpunct(_DWORD *a1); void __fastcall std::numpunct::~numpunct(_DWORD *a1); int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); void __fastcall std::numpunct::~numpunct(_DWORD *a1); void __fastcall std::numpunct::~numpunct(_DWORD *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 *Block); 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 *Block); 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 *Block); 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 *Block); 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); void __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); void __thiscall std::ios::basic_ios(int this, int a2); int __fastcall std::ios::basic_ios(int a1); void __thiscall std::ios::basic_ios(int this, int a2); int __fastcall std::ios::basic_ios(int a1); void __fastcall std::ios::~ios(_DWORD *Block); 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); void __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); void __thiscall std::wios::basic_ios(int this, int a2); int __fastcall std::wios::basic_ios(int a1); void __thiscall std::wios::basic_ios(int this, int a2); int __fastcall std::wios::basic_ios(int a1); void __fastcall std::wios::~wios(_DWORD *Block); void __fastcall std::wios::~wios(int a1); void __fastcall std::wios::~wios(int a1); void __fastcall std::exception::~exception(void *Block); 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 *Block); 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 *Block); 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 *Block); 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 *Block); 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 *Block); 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&)>>(int a1, int a2, unsigned __int8 **a3, int (__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, int (__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, int (__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, unsigned int a2, unsigned int a3, int a4, __int16 a5, char a6); 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, unsigned int a2, unsigned int a3, int a4, __int16 a5, char a6); void (*std::get_terminate(void))(void); __int32 __cdecl std::set_terminate(void (__noreturn *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, char *a5, char *a6); void __cdecl std::__convert_to_v(unsigned __int8 *a1, double *a2, _DWORD *a3); void __cdecl std::__convert_to_v(char *String, long double *a2, _DWORD *a3); void __cdecl std::__convert_to_v(unsigned __int8 *a1, float *a2, _DWORD *a3); void (*std::get_unexpected(void))(void); __int32 __cdecl std::set_unexpected(void (__noreturn *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 *a2, int a3, char *a4, ...); void __cdecl std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(unsigned __int8 **a1, char *a2, int (__cdecl *a3)(void **, struct _Unwind_Exception *)); 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, int (__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); 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(int a1); 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); void __cdecl std::__destroy_ios_failure(std::exception *a1); int __cdecl std::__verify_grouping_impl(const char *a1, unsigned int a2, const char *a3, unsigned int a4); void __cdecl std::__construct_ios_failure(_DWORD *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 **, struct _Unwind_Exception *)); 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); int __cdecl std::find<__gnu_cxx::__normal_iterator>,std::string>(int a1, int a2, int a3); int __cdecl std::find<__gnu_cxx::__normal_iterator>,char const*>(int a1, int a2, char **a3); int __cdecl std::find<__gnu_cxx::__normal_iterator>,std::string>(int a1, int a2, int a3); void __cdecl std::sort<__gnu_cxx::__normal_iterator *,std::vector>>,bool (*)(std::pair const&,std::pair const&)>(char *a1, char *a2, int (__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, _DWORD *a2, __int16 a3); int __cdecl std::setfill(unsigned __int8 a1); int __cdecl std::setfill(unsigned __int16 a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); int __cdecl std::has_facet>>(int a1); void __noreturn std::terminate(void); // idb void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); void *__cdecl std::use_facet>>(int a1); 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); int __cdecl std::operator!=(char *, int); // idb int __cdecl std::operator!=(int, char *); // 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, char *Str, int); // idb char *__cdecl std::operator+(char *a1, int a2, char *a3); char *__cdecl std::operator+(char *a1, int a2, int a3); int __cdecl std::operator+(int a1, char a2, int a3); int *__cdecl std::operator+(int *a1, char *Str, std::string *a3); int *__cdecl std::operator+(int *a1, _DWORD *a2, std::string *a3); int *__cdecl std::operator+(int *a1, char a2, std::string *a3); int __cdecl std::operator+(int, wchar_t *String, int); // idb _DWORD *__cdecl std::operator+(_DWORD *a1, int a2, int a3); int __cdecl std::operator+(int a1, __int16 a2, int a3); int *__cdecl std::operator+(int *a1, wchar_t *String, _DWORD *a3); int *__cdecl std::operator+(int *a1, _DWORD *a2, _DWORD *a3); int *__cdecl std::operator+(int *a1, __int16 a2, _DWORD *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 *Block); void __cdecl operator delete(void *Block); void __cdecl operator delete(void *Block); _DWORD __cdecl operator new[](unsigned int); // idb int __cdecl operator new[](unsigned int a1); void *__cdecl operator new(size_t a1); 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); void __cdecl __cxa_free_dependent_exception(char *Block); void __cdecl __cxa_free_exception(void *); void *__cdecl __cxa_get_exception_ptr(void *); _DWORD *__cxa_get_globals(); _DWORD *__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_sj0(int a1, int a2, __int64 a3, _Unwind_Exception *v, struct _Unwind_Context *lpuctx); void __tcf_0_4(void); // idb void __tcf_0_5(void); // idb void __tcf_0_6(void); // idb void __cdecl __tcf_0_7(std::_V2::error_category *a1); void __tcf_0_8(void); // idb void __tcf_1_6(void); // idb int __cdecl main(int argc, const char **argv, const char **envp); int _GLOBAL__sub_I__Z5UsageiPPKc(); int _GLOBAL__sub_I__ZN4WXML8Compiler9GetFuncIdERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS7_ESaISt4pairIKS7_iEEERSB_(); int _GLOBAL__sub_I__ZN5night8NSStreamC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_j(); size_t __thiscall std::string::basic_string(void **this, char *Str); int _GLOBAL__sub_I__ZN5night9sourcemap21gen_sourcemap_contentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt3mapIS6_jSt4lessIS6_ESaISt4pairIS7_jEEES9_IjS6_SA_IjESaISC_IKjS6_EEERSt6vectorINS_12ns_sourcemapESaISM_EEiRS6_PS6_(); size_t __thiscall std::string::basic_string(void **this, char *Str); int _GLOBAL__sub_I__ZN5night3str12path_combineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_RS6_(); int _GLOBAL__sub_I__ZN4WXML6DOMLib7WXMLDom12componentCntE(); int _GLOBAL__sub_I__ZN4WXML6DOMLib7Machine5ResetEv(); 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(); int _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv(); void __noreturn __cxxabiv1::throw_recursive_init_exception(void); // idb void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(); void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(); 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 *); // idb void __cdecl __noreturn std::__throw_domain_error(std::domain_error *); // idb void __cdecl __noreturn std::__throw_invalid_argument(std::invalid_argument *); // idb void __cdecl __noreturn std::__throw_length_error(std::length_error *); // idb void __cdecl __noreturn std::__throw_out_of_range(std::out_of_range *); // idb void __cdecl __noreturn std::__throw_runtime_error(std::runtime_error *); // idb void __cdecl __noreturn std::__throw_range_error(std::range_error *); // idb void __cdecl __noreturn std::__throw_overflow_error(std::overflow_error *); // idb void __cdecl __noreturn std::__throw_underflow_error(std::underflow_error *); // idb void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKSsj(); void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKSsj(); 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 __noreturn __cxa_bad_cast(void); void __noreturn __cxa_bad_typeid(void); void __noreturn __cxa_throw_bad_array_new_length(void); void __cdecl __noreturn std::__throw_ios_failure(char *a1); void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *, std::runtime_error *); // idb void __cdecl __noreturn std::__throw_system_error(int); // idb int _GLOBAL__sub_I__ZSt20__throw_system_errori(); int __cdecl ____mb_cur_max_func(); unsigned int __cdecl ____lc_codepage_func(); // int __stdcall _IAT_start__(_DWORD); weak //------------------------------------------------------------------------- // Data declarations _UNKNOWN loc_460001; // weak _UNKNOWN loc_4A0000; // weak _UNKNOWN loc_50001E; // weak int __CTOR_LIST__[] = { -1 }; // weak DWORD _data_start__ = 10u; // idb int WXML::RPX::acceptNum(char const*,int &)::canAccept[266] = { 65536, 1, 0, 16777472, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 5578424, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 5584002, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 5588324, 5588327, 5588330, 5588333, 5588335, 5588337, 5588339, 5588341, 5588343, 5588345, 5588347, 5588349, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 5474724, -1, -1, 255, 2, 0, -1, -1, 0, -1, 53, -1074, 971, 1, 0, 14, 24, -149, 104, 1, 0, 14, -1, 64, -16445, 16320, 1, 0, 14, 7772032, 4641200, 4641216, 4641232, 4641328, 4641568, 4641456, 4641680, 4641776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4679456, 5430400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 5578424, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 5584002, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 5588324, 5588327, 5588330, 5588333, 5588335, 5588337, 5588339, 5588341, 5588343, 5588345, 5588347, 5588349, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 1634027556, 1280464228, 1227104292, 807412836, 1768316767, 1600087404, 0, 5474724, -1, -1, 255, 2, 0, -1, -1, 0, -1, 53, -1074, 971, 1, 0, 14, 24, -149, 104, 1, 0, 14, -1, 64, -16445, 16320, 1, 0, 14, 7772032, 4641200, 4641216, 4641232, 4641328, 4641568, 4641456, 4641680, 4641776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4679456, 5430400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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] = { 1210319104, 1432641893, 539249746, 610552100, 1600073760, 1701603686, 24415, 1210318848, 1432641893, 539249746, 610552100, 1600073760, 1701603686, 24415, 515375104, 1210318933, 1432641893, 539249746, 610552100, 1600073760, 1701603686, 24415, 1210318848, 1432641893, 539249746, 610552100, 1600073760, 1701603686, 24415, 1210318848, 1432641893, 539249746, 610552100, 1600073760, 1701603686, 24415, 880934912, 1210318933, 1432641893, 539249746, 610552100, 1600073760, 1701603686, 24415, 1210318848, 1432641893, 539249746, 610552100, 1600073760, 1701603686, 24415, 1210318848, 1432641893, 539249746, 610552100, 1600073760, 1701603686, 24415, 1210318848, 1432641893, 539249746, 610552100, 1600073760, 1701603686, 24415, 1164181504, 1164378197, 1164574805, 1164771413, 1164902485, 1165033557, 1165164629, 1165295701, 1165426773, 1165557845, 1165688917, 1165819989, 1210318933, 1432641893, 539249746, 610552100, 1600073760, 1701603686, 24415, 1210318848, 1432641893, 539249746, 610552100, 1600073760, 1701603686, 24415, 1210318848, 1432641893, 539249746, 610552100, 1600073760, 1701603686, 24415, -1985740800, -65453, -1, 16777215, 131072, 0, -65536, -1, 65535, -65536, 3538943, -70385664, 63700991, 65536, 0, 917504, 1572864, -9764864, 6881279, 65536, 0, 917504, -65536, 4259839, -1077739520, 1069613055, 65536, 0, 917504, -1753219072, -776994698, -775946170, -774897594, -768606138, -752877498, -760217530, -745537466, -739246010, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1730150400, -595591097, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 *WXML::NameAllocator::ALPAHBET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; // idb char *night::sourcemap::g_sVLQ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; // weak char *WXML::EXPRLib::OPShort::DO_FUNC = &unk_554564; // idb void *WXML::EXPRLib::OPShort::CS_GLOBAL = &unk_554567; // weak char *WXML::EXPRLib::OPShort::EX_DICT = &unk_55456A; // idb char *WXML::EXPRLib::OPShort::UNION_KV = &unk_55456D; // idb char *WXML::EXPRLib::OPShort::MAKE_KV = &unk_55456F; // idb char *WXML::EXPRLib::OPShort::GET_FROM_ENV = &unk_554571; // idb char *WXML::EXPRLib::OPShort::GET_NAME = &unk_554573; // idb char *WXML::EXPRLib::OPShort::CON_LIST = &unk_554575; // idb char *WXML::EXPRLib::OPShort::MAKE_LIST = &unk_554577; // idb char *WXML::EXPRLib::OPShort::NAME = &unk_554579; // idb char *WXML::EXPRLib::OPShort::AOP = &unk_55457B; // idb char *WXML::EXPRLib::OPShort::CONST = &unk_55457D; // idb int *data_1 = &dword_5389A4; // weak int _CRT_MT = 2; // weak int once_0 = 0; // weak int dword_53E1EC = -1; // weak int use_fc_key = -1; // weak int once_0_0 = 0; // weak int dword_53E1F8 = -1; // weak int fpi_0[6] = { 53, -1074, 971, 1, 0, 14 }; // weak int fpi0_0[6] = { 24, -149, 104, 1, 0, 14 }; // weak int _MINGW_INSTALL_DEBUG_MATHERR = -1; // weak int fpi_0_0[6] = { 64, -16445, 16320, 1, 0, 14 }; // weak void *pmem_next = &private_mem; // weak FILE *(__cdecl *___acrt_iob_func)(unsigned int Ix) = &__acrt_iob_func; int (__cdecl *_rand_s)(int) = &init_rand_s; // 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::__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 void (*__cxxabiv1::__terminate_handler)(void) = &__gnu_cxx::__verbose_terminate_handler; // idb void (*__cxxabiv1::__unexpected_handler)(void) = &std::terminate; // idb _DWORD `anonymous namespace'::fake_mutex[4] = { 0, 0, 0, 0 }; // weak _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_53E40C = 0; // weak int dword_53E410 = 0; // weak _UNKNOWN `anonymous namespace'::numpunct_w; // weak int dword_53E418 = 0; // weak int dword_53E41C = 0; // weak _UNKNOWN `anonymous namespace'::time_get_c; // weak int dword_53E424 = 0; // weak _UNKNOWN `anonymous namespace'::time_get_w; // weak int dword_53E42C = 0; // weak _UNKNOWN `anonymous namespace'::time_put_c; // weak int dword_53E434 = 0; // weak _UNKNOWN `anonymous namespace'::time_put_w; // weak int dword_53E43C = 0; // weak _UNKNOWN `anonymous namespace'::codecvt_c16; // weak int dword_53E444 = 0; // weak _UNKNOWN `anonymous namespace'::codecvt_c32; // weak int dword_53E44C = 0; // weak _UNKNOWN `anonymous namespace'::money_get_c; // weak int dword_53E454 = 0; // weak _UNKNOWN `anonymous namespace'::money_get_w; // weak int dword_53E45C = 0; // weak _UNKNOWN `anonymous namespace'::money_put_c; // weak int dword_53E464 = 0; // weak _UNKNOWN `anonymous namespace'::money_put_w; // weak int dword_53E46C = 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_53E4B4 = 0; // weak int dword_53E4B8 = 0; // weak _UNKNOWN `anonymous namespace'::moneypunct_ct; // weak int dword_53E4C0 = 0; // weak int dword_53E4C4 = 0; // weak _UNKNOWN `anonymous namespace'::moneypunct_wf; // weak int dword_53E4CC = 0; // weak int dword_53E4D0 = 0; // weak _UNKNOWN `anonymous namespace'::moneypunct_wt; // weak int dword_53E4D8 = 0; // weak int dword_53E4DC = 0; // weak _UNKNOWN `anonymous namespace'::codecvt_c16_c8; // weak int dword_53E4E4 = 0; // weak _UNKNOWN `anonymous namespace'::codecvt_c32_c8; // weak int dword_53E4EC = 0; // weak _DWORD `anonymous namespace'::emergency_pool[2] = { 0, 0 }; // weak int dword_53E4F8 = 0; // weak void *Block = NULL; // idb int dword_53E500 = 0; // weak int `anonymous namespace'::numpunct_cache_c = 0; // weak int dword_53E524 = 0; // weak int dword_53E528 = 0; // weak int dword_53E52C = 0; // weak char byte_53E530 = '\0'; // weak int dword_53E534 = 0; // weak int dword_53E538 = 0; // weak int dword_53E53C = 0; // weak int dword_53E540 = 0; // weak __int16 word_53E544 = 0; // weak char byte_53E584 = '\0'; // weak int `anonymous namespace'::numpunct_cache_w = 0; // weak int dword_53E5A4 = 0; // weak int dword_53E5A8 = 0; // weak int dword_53E5AC = 0; // weak char byte_53E5B0 = '\0'; // weak int dword_53E5B4 = 0; // weak int dword_53E5B8 = 0; // weak int dword_53E5BC = 0; // weak int dword_53E5C0 = 0; // weak int dword_53E5C4 = 0; // weak char byte_53E644 = '\0'; // weak int `anonymous namespace'::timepunct_cache_c = 0; // weak int dword_53E664 = 0; // weak int dword_53E668 = 0; // weak int dword_53E66C = 0; // weak int dword_53E670 = 0; // weak int dword_53E674 = 0; // weak int dword_53E678 = 0; // weak int dword_53E67C = 0; // weak int dword_53E680 = 0; // weak int dword_53E684 = 0; // weak int dword_53E688 = 0; // weak int dword_53E68C = 0; // weak int dword_53E690 = 0; // weak int dword_53E694 = 0; // weak int dword_53E698 = 0; // weak int dword_53E69C = 0; // weak int dword_53E6A0 = 0; // weak int dword_53E6A4 = 0; // weak int dword_53E6A8 = 0; // weak int dword_53E6AC = 0; // weak int dword_53E6B0 = 0; // weak int dword_53E6B4 = 0; // weak int dword_53E6B8 = 0; // weak int dword_53E6BC = 0; // weak int dword_53E6C0 = 0; // weak int dword_53E6C4 = 0; // weak int dword_53E6C8 = 0; // weak int dword_53E6CC = 0; // weak int dword_53E6D0 = 0; // weak int dword_53E6D4 = 0; // weak int dword_53E6D8 = 0; // weak int dword_53E6DC = 0; // weak int dword_53E6E0 = 0; // weak int dword_53E6E4 = 0; // weak int dword_53E6E8 = 0; // weak int dword_53E6EC = 0; // weak int dword_53E6F0 = 0; // weak int dword_53E6F4 = 0; // weak int dword_53E6F8 = 0; // weak int dword_53E6FC = 0; // weak int dword_53E700 = 0; // weak int dword_53E704 = 0; // weak int dword_53E708 = 0; // weak int dword_53E70C = 0; // weak int dword_53E710 = 0; // weak int dword_53E714 = 0; // weak int dword_53E718 = 0; // weak int dword_53E71C = 0; // weak int dword_53E720 = 0; // weak char byte_53E724 = '\0'; // weak int `anonymous namespace'::timepunct_cache_w = 0; // weak int dword_53E744 = 0; // weak int dword_53E748 = 0; // weak int dword_53E74C = 0; // weak int dword_53E750 = 0; // weak int dword_53E754 = 0; // weak int dword_53E758 = 0; // weak int dword_53E75C = 0; // weak int dword_53E760 = 0; // weak int dword_53E764 = 0; // weak int dword_53E768 = 0; // weak int dword_53E76C = 0; // weak int dword_53E770 = 0; // weak int dword_53E774 = 0; // weak int dword_53E778 = 0; // weak int dword_53E77C = 0; // weak int dword_53E780 = 0; // weak int dword_53E784 = 0; // weak int dword_53E788 = 0; // weak int dword_53E78C = 0; // weak int dword_53E790 = 0; // weak int dword_53E794 = 0; // weak int dword_53E798 = 0; // weak int dword_53E79C = 0; // weak int dword_53E7A0 = 0; // weak int dword_53E7A4 = 0; // weak int dword_53E7A8 = 0; // weak int dword_53E7AC = 0; // weak int dword_53E7B0 = 0; // weak int dword_53E7B4 = 0; // weak int dword_53E7B8 = 0; // weak int dword_53E7BC = 0; // weak int dword_53E7C0 = 0; // weak int dword_53E7C4 = 0; // weak int dword_53E7C8 = 0; // weak int dword_53E7CC = 0; // weak int dword_53E7D0 = 0; // weak int dword_53E7D4 = 0; // weak int dword_53E7D8 = 0; // weak int dword_53E7DC = 0; // weak int dword_53E7E0 = 0; // weak int dword_53E7E4 = 0; // weak int dword_53E7E8 = 0; // weak int dword_53E7EC = 0; // weak int dword_53E7F0 = 0; // weak int dword_53E7F4 = 0; // weak int dword_53E7F8 = 0; // weak int dword_53E7FC = 0; // weak int dword_53E800 = 0; // weak char byte_53E804 = '\0'; // weak int `anonymous namespace'::moneypunct_cache_cf = 0; // weak int dword_53E824 = 0; // weak int dword_53E828 = 0; // weak int dword_53E82C = 0; // weak __int16 word_53E830 = 0; // weak char byte_53E832 = '\0'; // weak int dword_53E834 = 0; // weak int dword_53E838 = 0; // weak int dword_53E83C = 0; // weak int dword_53E840 = 0; // weak int dword_53E844 = 0; // weak int dword_53E848 = 0; // weak int dword_53E84C = 0; // weak int dword_53E850 = 0; // weak int dword_53E854 = 0; // weak char byte_53E863 = '\0'; // weak int `anonymous namespace'::moneypunct_cache_ct = 0; // weak int dword_53E884 = 0; // weak int dword_53E888 = 0; // weak int dword_53E88C = 0; // weak __int16 word_53E890 = 0; // weak char byte_53E892 = '\0'; // weak int dword_53E894 = 0; // weak int dword_53E898 = 0; // weak int dword_53E89C = 0; // weak int dword_53E8A0 = 0; // weak int dword_53E8A4 = 0; // weak int dword_53E8A8 = 0; // weak int dword_53E8AC = 0; // weak int dword_53E8B0 = 0; // weak int dword_53E8B4 = 0; // weak char byte_53E8C3 = '\0'; // weak int `anonymous namespace'::moneypunct_cache_wf = 0; // weak int dword_53E8E4 = 0; // weak int dword_53E8E8 = 0; // weak int dword_53E8EC = 0; // weak char byte_53E8F0 = '\0'; // weak int dword_53E8F2 = 0; // weak int dword_53E8F8 = 0; // weak int dword_53E8FC = 0; // weak int dword_53E900 = 0; // weak int dword_53E904 = 0; // weak int dword_53E908 = 0; // weak int dword_53E90C = 0; // weak int dword_53E910 = 0; // weak int dword_53E914 = 0; // weak int dword_53E918 = 0; // weak char byte_53E932 = '\0'; // weak int `anonymous namespace'::moneypunct_cache_wt = 0; // weak int dword_53E944 = 0; // weak int dword_53E948 = 0; // weak int dword_53E94C = 0; // weak char byte_53E950 = '\0'; // weak int dword_53E952 = 0; // weak int dword_53E958 = 0; // weak int dword_53E95C = 0; // weak int dword_53E960 = 0; // weak int dword_53E964 = 0; // weak int dword_53E968 = 0; // weak int dword_53E96C = 0; // weak int dword_53E970 = 0; // weak int dword_53E974 = 0; // weak int dword_53E978 = 0; // weak char byte_53E992 = '\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 int dword_53EEC8 = 0; // weak int dword_53EECC = 0; // weak int dword_53EED0 = 0; // weak int dword_53EED4 = 0; // weak int dword_53EED8 = 0; // 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_53EFBC = 0; // weak int dword_53EFC0 = 0; // weak _UNKNOWN `anonymous namespace'::collate_w; // weak int dword_53EFC8 = 0; // weak int dword_53EFCC = 0; // weak _UNKNOWN `anonymous namespace'::facet_vec; // weak _UNKNOWN `anonymous namespace'::num_get_c; // weak int dword_53F0A4 = 0; // weak _UNKNOWN `anonymous namespace'::num_get_w; // weak int dword_53F0AC = 0; // weak _UNKNOWN `anonymous namespace'::num_put_c; // weak int dword_53F0B4 = 0; // weak _UNKNOWN `anonymous namespace'::num_put_w; // weak int dword_53F0BC = 0; // weak int `anonymous namespace'::static_mutex = 0; // weak void (__cdecl **`anonymous namespace'::system_category_instance[2])(_anonymous_namespace_::system_error_category *__hidden this) = { &off_55F194, &off_55F1BC }; // weak void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this) = &off_55F1BC; // weak _UNKNOWN __gnu_internal::buf_cin_sync; // weak int dword_53F0E4 = 0; // weak int dword_53F0E8 = 0; // weak int dword_53F0EC = 0; // weak int dword_53F0F0 = 0; // weak int dword_53F0F4 = 0; // weak int dword_53F0F8 = 0; // weak _DWORD dword_53F0FC = 0; // weak int dword_53F100 = 0; // weak int dword_53F104 = 0; // weak _UNKNOWN __gnu_internal::buf_cerr_sync; // weak int dword_53F124 = 0; // weak int dword_53F128 = 0; // weak int dword_53F12C = 0; // weak int dword_53F130 = 0; // weak int dword_53F134 = 0; // weak int dword_53F138 = 0; // weak _DWORD dword_53F13C = 0; // weak int dword_53F140 = 0; // weak int dword_53F144 = 0; // weak _UNKNOWN __gnu_internal::buf_cout_sync; // weak int dword_53F164 = 0; // weak int dword_53F168 = 0; // weak int dword_53F16C = 0; // weak int dword_53F170 = 0; // weak int dword_53F174 = 0; // weak int dword_53F178 = 0; // weak _DWORD dword_53F17C = 0; // weak int dword_53F180 = 0; // weak int dword_53F184 = 0; // weak _UNKNOWN __gnu_internal::buf_wcin_sync; // weak int dword_53F1A4 = 0; // weak int dword_53F1A8 = 0; // weak int dword_53F1AC = 0; // weak int dword_53F1B0 = 0; // weak int dword_53F1B4 = 0; // weak int dword_53F1B8 = 0; // weak _DWORD dword_53F1BC = 0; // weak int dword_53F1C0 = 0; // weak __int16 word_53F1C4 = 0; // weak _UNKNOWN __gnu_internal::buf_wcerr_sync; // weak int dword_53F1E4 = 0; // weak int dword_53F1E8 = 0; // weak int dword_53F1EC = 0; // weak int dword_53F1F0 = 0; // weak int dword_53F1F4 = 0; // weak int dword_53F1F8 = 0; // weak _DWORD dword_53F1FC = 0; // weak int dword_53F200 = 0; // weak __int16 word_53F204 = 0; // weak _UNKNOWN __gnu_internal::buf_wcout_sync; // weak int dword_53F224 = 0; // weak int dword_53F228 = 0; // weak int dword_53F22C = 0; // weak int dword_53F230 = 0; // weak int dword_53F234 = 0; // weak int dword_53F238 = 0; // weak _DWORD dword_53F23C = 0; // weak int dword_53F240 = 0; // weak __int16 word_53F244 = 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 std::string::_Rep::_S_empty_rep_storage; // 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 signed __int32 std::moneypunct::id = 0; // weak signed __int32 std::moneypunct::id = 0; // weak signed __int32 std::moneypunct::id = 0; // weak signed __int32 std::moneypunct::id = 0; // weak signed __int32 std::__timepunct::id = 0; // weak signed __int32 std::__timepunct::id = 0; // weak _DWORD std::`anonymous namespace'::messages_c = 0; // weak signed __int32 dword_53F5A8[3] = { 0, 0, 0 }; // weak _DWORD std::`anonymous namespace'::messages_w = 0; // weak signed __int32 dword_53F5B8[3] = { 0, 0, 0 }; // weak int std::`anonymous namespace'::numpunct_c = 0; // weak int dword_53F5C8 = 0; // weak int dword_53F5CC = 0; // weak int std::`anonymous namespace'::numpunct_w = 0; // weak int dword_53F5D4 = 0; // weak int dword_53F5D8 = 0; // weak int std::`anonymous namespace'::time_get_c = 0; // weak int dword_53F5E0 = 0; // weak int std::`anonymous namespace'::time_get_w = 0; // weak int dword_53F5E8 = 0; // weak int std::`anonymous namespace'::money_get_c = 0; // weak int dword_53F5F0 = 0; // weak int std::`anonymous namespace'::money_get_w = 0; // weak int dword_53F5F8 = 0; // weak int std::`anonymous namespace'::money_put_c = 0; // weak int dword_53F600 = 0; // weak int std::`anonymous namespace'::money_put_w = 0; // weak int dword_53F608 = 0; // weak int std::`anonymous namespace'::moneypunct_cf = 0; // weak int dword_53F610 = 0; // weak int dword_53F614 = 0; // weak int std::`anonymous namespace'::moneypunct_ct = 0; // weak int dword_53F61C = 0; // weak int dword_53F620 = 0; // weak int std::`anonymous namespace'::moneypunct_wf = 0; // weak int dword_53F628 = 0; // weak int dword_53F62C = 0; // weak int std::`anonymous namespace'::moneypunct_wt = 0; // weak int dword_53F634 = 0; // weak int dword_53F638 = 0; // weak int std::`anonymous namespace'::collate_c = 0; // weak int dword_53F640 = 0; // weak int dword_53F644 = 0; // weak int std::`anonymous namespace'::collate_w = 0; // weak int dword_53F64C = 0; // weak int dword_53F650 = 0; // weak void *std::__timepunct_cache::_S_timezones[2] = { &off_559F1E, &off_559F22 }; // weak wchar_t *std::__timepunct_cache::_S_timezones[3] = { L"GMT", L"HST", L"AKST" }; // weak signed __int32 std::ctype::id = 0; // weak signed __int32 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 _UNKNOWN std::locale::facet::_S_once; // weak _UNKNOWN std::locale::_S_once; // weak int std::locale::_S_global = 0; // weak signed __int32 std::moneypunct::id = 0; // weak signed __int32 std::moneypunct::id = 0; // weak signed __int32 std::moneypunct::id = 0; // weak signed __int32 std::moneypunct::id = 0; // weak signed __int32 std::collate::id = 0; // weak signed __int32 std::collate::id = 0; // weak signed __int32 std::messages::id = 0; // weak signed __int32 std::messages::id = 0; // weak signed __int32 std::numpunct::id = 0; // weak signed __int32 std::numpunct::id = 0; // weak signed __int32 std::time_get>::id = 0; // weak signed __int32 std::time_get>::id = 0; // weak signed __int32 std::money_get>::id = 0; // weak signed __int32 std::money_get>::id = 0; // weak signed __int32 std::money_put>::id = 0; // weak signed __int32 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 signed __int32 std::codecvt::id = 0; // weak signed __int32 std::codecvt::id = 0; // weak signed __int32 std::collate::id = 0; // weak signed __int32 std::collate::id = 0; // weak signed __int32 std::num_get>::id = 0; // weak signed __int32 std::num_get>::id = 0; // weak signed __int32 std::num_put>::id = 0; // weak signed __int32 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 signed __int32 std::messages::id = 0; // weak signed __int32 std::messages::id = 0; // weak signed __int32 std::numpunct::id = 0; // weak signed __int32 std::numpunct::id = 0; // weak signed __int32 std::time_get>::id = 0; // weak signed __int32 std::time_get>::id = 0; // weak signed __int32 std::time_put>::id = 0; // weak signed __int32 std::time_put>::id = 0; // weak signed __int32 std::money_get>::id = 0; // weak signed __int32 std::money_get>::id = 0; // weak signed __int32 std::money_put>::id = 0; // weak signed __int32 std::money_put>::id[5] = { 0, 0, 0, 0, 0 }; // weak int std::cin = 0; // weak int dword_53F7C4 = 0; // weak int dword_53F7C8[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_53F838 = 0; // weak __int16 word_53F83C = 0; // weak int dword_53F840 = 0; // weak int dword_53F844 = 0; // weak int dword_53F848 = 0; // weak int dword_53F84C = 0; // weak int std::cerr = 0; // weak int dword_53F864 = 0; // weak int dword_53F870 = 0; // weak int dword_53F8D4 = 0; // weak __int16 word_53F8D8 = 0; // weak int dword_53F8DC = 0; // weak int dword_53F8E0 = 0; // weak int dword_53F8E4 = 0; // weak int dword_53F8E8 = 0; // weak int std::clog = 0; // weak int dword_53F904[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_53F974 = 0; // weak __int16 word_53F978 = 0; // weak int dword_53F97C = 0; // weak int dword_53F980 = 0; // weak int dword_53F984 = 0; // weak int dword_53F988 = 0; // weak int std::cout = 0; // weak int dword_53F9A4[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_53FA14 = 0; // weak __int16 word_53FA18 = 0; // weak int dword_53FA1C = 0; // weak int dword_53FA20 = 0; // weak int dword_53FA24 = 0; // weak int dword_53FA28 = 0; // weak int std::wcin = 0; // weak int dword_53FA44 = 0; // weak int dword_53FA48[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_53FAB8 = 0; // weak __int16 word_53FABC = 0; // weak char byte_53FABE = '\0'; // weak int dword_53FAC0 = 0; // weak int dword_53FAC4 = 0; // weak int dword_53FAC8 = 0; // weak int dword_53FACC = 0; // weak int std::wcerr = 0; // weak int dword_53FAE4 = 0; // weak int dword_53FAF0 = 0; // weak int dword_53FB54 = 0; // weak __int16 word_53FB58 = 0; // weak char byte_53FB5A = '\0'; // weak int dword_53FB5C = 0; // weak int dword_53FB60 = 0; // weak int dword_53FB64 = 0; // weak int dword_53FB68 = 0; // weak int std::wclog = 0; // weak int dword_53FB84[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_53FBF4 = 0; // weak __int16 word_53FBF8 = 0; // weak char byte_53FBFA = '\0'; // weak int dword_53FBFC = 0; // weak int dword_53FC00 = 0; // weak int dword_53FC04 = 0; // weak int dword_53FC08 = 0; // weak int std::wcout = 0; // weak int dword_53FC24[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_53FC94 = 0; // weak __int16 word_53FC98 = 0; // weak char byte_53FC9A = '\0'; // weak int dword_53FC9C = 0; // weak int dword_53FCA0 = 0; // weak int dword_53FCA4 = 0; // weak int dword_53FCA8 = 0; // weak _DWORD `anonymous namespace'::get_locale_mutex(void)::locale_mutex[2] = { 0, 0 }; // weak _UNKNOWN `anonymous namespace'::get_static_mutex(void)::once; // weak void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this) = &off_55F16C; // weak _DWORD `anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex[2] = { 0, 0 }; // weak _DWORD WXML::EXPRLib::TransitTable::GetInstance(void)::ret = 0; // weak int dword_53FCE0 = 0; // weak int dword_53FCE4 = 0; // weak int dword_53FCE8 = 0; // weak int dword_53FCEC = 0; // weak int dword_53FCF0 = 0; // weak char byte_53FCF4 = '\0'; // weak char __gnu_cxx::__verbose_terminate_handler(void)::terminating = '\0'; // weak int std::ios_base::xalloc(void)::_S_top = 0; // weak size_t __emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global[4] = { 8u, 4u, 0u, 0u }; // weak const char byte_5402D0 = '\0'; // idb const char off_5403C3[] = { 's', '\0', 'e', '\0' }; // idb const char byte_540876 = '\0'; // idb const char off_540894[] = { 'u', 'r', 'l', '\0' }; // idb const char aIfThisThisGUnd[] = "if(this&&this.__g===undefined)Object.defineProperty(this,\"__g\",{configurable:false,enumerable:false,writable:false,value:function(){function D(e,t){if(typeof t!=\"undefined\")e.children.push(t)}function S(e){if(typeof e!=\"undefined\")return{tag:\"virtual\",wxKey:e,children:[]};return{tag:\"virtual\",children:[]}}function v(e){$gwxc++;if($gwxc>=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 &,std::string &)::KEYWORDS[4] = { "true", "false", "undefined", "null" }; // weak _UNKNOWN unk_556C08; // weak _UNKNOWN unk_556C0A; // weak _UNKNOWN unk_556C0C; // weak _UNKNOWN unk_556C0E; // weak _UNKNOWN unk_556C10; // weak void *off_556C1C = &unk_720074; // weak void *off_556C26 = &unk_610066; // weak _UNKNOWN unk_556C34; // weak void *off_556C40 = &unk_720074; // weak void *off_556C4A = &unk_610066; // weak _UNKNOWN unk_55739E; // weak _UNKNOWN unk_5576EE; // weak _BYTE byte_557ACA[2] = { 0, 0 }; // weak _UNKNOWN unk_557D34; // weak char byte_557D9D[] = { '0' }; // weak _UNKNOWN unk_558106; // weak void *off_558A2B = &unk_647473; // weak void *off_558CF7 = &unk_6C6C75; // weak _UNKNOWN unk_5590D4; // weak _UNKNOWN unk_5590D6; // weak _UNKNOWN unk_559324; // weak void *cplus_demangle_operators = &unk_559324; // weak void **off_559B20 = &off_5599B5; // weak char *off_559C88 = "decimal32"; // weak char *off_559C9C = "decimal64"; // weak char *off_559CB0 = "decimal128"; // weak char *off_559CC4 = "half"; // weak char *off_559CD8 = "char8_t"; // weak char *off_559CEC = "char16_t"; // weak char *off_559D00 = "char32_t"; // weak char *off_559D14 = "decltype(nullptr)"; // weak void *off_559FE2 = &loc_4D4100; // weak _UNKNOWN unk_559FE6; // weak void *off_55A022 = &unk_6E7553; // weak void *off_55A026 = &unk_6E6F4D; // weak void *off_55A02A = &unk_657554; // weak void *off_55A02E = &unk_646557; // weak void *off_55A032 = &unk_756854; // weak void *off_55A036 = &unk_697246; // weak void *off_55A03A = &unk_746153; // weak void *off_55A094 = &unk_6E614A; // weak void *off_55A098 = &unk_626546; // weak void *off_55A09C = &unk_72614D; // weak void *off_55A0A0 = &unk_727041; // weak void *off_55A0A4 = &unk_6E754A; // weak void *off_55A0A8 = &unk_6C754A; // weak void *off_55A0AC = &unk_677541; // weak void *off_55A0B0 = &unk_706553; // weak void *off_55A0B4 = &unk_74634F; // weak void *off_55A0B8 = &unk_766F4E; // weak void *off_55A0BC = &unk_636544; // weak void *off_55A0C0 = &unk_6D0025; // weak void *off_55A0D2 = &loc_480025; // weak _UNKNOWN unk_55A0E4; // weak void *off_55A0E6 = &loc_4D0041; // weak void *off_55A0F2 = &unk_750053; // weak void *off_55A100 = &unk_6F004D; // weak void *off_55A10E = &unk_750054; // weak void *off_55A11E = &unk_650057; // weak void *off_55A132 = &unk_680054; // weak void *off_55A144 = &unk_720046; // weak void *off_55A152 = &unk_610053; // weak void *off_55A164 = &unk_750053; // weak void *off_55A16C = &unk_6F004D; // weak void *off_55A174 = &unk_750054; // weak void *off_55A17C = &unk_650057; // weak void *off_55A184 = &unk_680054; // weak void *off_55A18C = &unk_720046; // weak void *off_55A194 = &unk_610053; // weak void *off_55A19C = &unk_61004A; // weak void *off_55A1AC = &unk_650046; // weak void *off_55A1BE = &unk_61004D; // weak void *off_55A1CA = &unk_700041; // weak void *off_55A1D6 = &unk_61004D; // weak void *off_55A1DE = &unk_75004A; // weak void *off_55A1E8 = &unk_75004A; // weak void *off_55A1F2 = &unk_750041; // weak void *off_55A200 = &unk_650053; // weak void *off_55A214 = &unk_63004F; // weak void *off_55A224 = &unk_6F004E; // weak void *off_55A236 = &unk_650044; // weak void *off_55A248 = &unk_61004A; // weak void *off_55A250 = &unk_650046; // weak void *off_55A258 = &unk_61004D; // weak void *off_55A260 = &unk_700041; // weak void *off_55A268 = &unk_75004A; // weak void *off_55A270 = &unk_75004A; // weak void *off_55A278 = &unk_750041; // weak void *off_55A280 = &unk_650053; // weak void *off_55A288 = &unk_63004F; // weak void *off_55A290 = &unk_6F004E; // weak void *off_55A298 = &unk_650044; // weak const char byte_55A2A0[4] = { '\0', '\0', '\0', '\0' }; // idb int (__stdcall *__dyn_tls_init_callback)(_DWORD, _DWORD, _DWORD) = &__dyn_tls_init; // weak char *CSWTCH_1[6] = { "Argument domain error (DOMAIN)", "Argument singularity (SIGN)", "Overflow range error (OVERFLOW)", "The result is too small to be represented (UNDERFLOW)", "Total loss of significance (TLOSS)", "Partial loss of significance (PLOSS)" }; // weak const char String1[] = { 'I', 'N', 'F', '\0' }; // idb const char off_55A6CA[] = { 'N', 'A', 'N', '\0' }; // idb _UNKNOWN unk_55A6D4; // weak _UNKNOWN __etens; // weak _UNKNOWN unk_55A770; // weak int __eone = 0; // weak char *cmap = "alnum"; // weak __int16 word_55A804[] = { 263 }; // weak int fivesbits[23] = { 0, 3, 5, 7, 10, 12, 14, 17, 19, 21, 24, 26, 28, 31, 33, 35, 38, 40, 42, 45, 47, 49, 52 }; // weak void *off_55A9C7 = (void *)0x4E614E; // weak void *off_55A9CB = &unk_666E49; // weak const wchar_t String = 40u; // idb void *off_55AB59 = (void *)0x4E614E; // weak _UNKNOWN unk_55ABB4; // weak double dbl_55ABB8[4] = { 3.369835408745143e30, 0.0, 0.0, 0.0 }; // weak int dword_55ABDC[] = { 0 }; // weak double dbl_55ABF8[] = { 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 WCHAR ModuleName = 109u; // idb const WCHAR LibFileName = 97u; // idb const WCHAR off_55AD8C = 109u; // idb int CSWTCH_112[7] = { 4, 1, 16, 2, 8, 0, 0 }; // weak char *const CSWTCH_18 = &unk_559D40; // idb int std::money_base::_S_default_pattern = 67109634; // weak __int16 std::`anonymous namespace'::utf8_bom = -17425; // 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_55B244; // weak _UNKNOWN unk_55B258; // weak _UNKNOWN unk_55B26C; // weak _UNKNOWN unk_55B280; // weak _UNKNOWN unk_55B294; // weak _UNKNOWN unk_55B2A8; // weak _UNKNOWN unk_55B2F8; // weak _UNKNOWN unk_55B30C; // weak _UNKNOWN unk_55B320; // weak _UNKNOWN unk_55B334; // weak _UNKNOWN unk_55B348; // weak _UNKNOWN unk_55B35C; // weak _UNKNOWN unk_55B370; // weak _UNKNOWN unk_55B384; // weak _UNKNOWN unk_55B398; // weak _UNKNOWN unk_55B3AC; // weak _UNKNOWN unk_55B3C0; // weak _UNKNOWN unk_55B3D4; // weak _UNKNOWN unk_55B3E8; // weak _UNKNOWN unk_55B3FC; // weak _UNKNOWN unk_55B44C; // weak _UNKNOWN unk_55B460; // weak _UNKNOWN unk_55B474; // weak _UNKNOWN unk_55B488; // weak _UNKNOWN unk_55B49C; // weak _UNKNOWN unk_55B4B0; // weak _UNKNOWN unk_55B500; // weak _UNKNOWN unk_55B514; // weak _UNKNOWN unk_55B528; // weak _UNKNOWN unk_55B53C; // weak _UNKNOWN unk_55B550; // weak _UNKNOWN unk_55B564; // weak _UNKNOWN unk_55B578; // weak _UNKNOWN unk_55B58C; // weak _UNKNOWN unk_55B5A0; // weak _UNKNOWN unk_55B5B4; // weak _UNKNOWN unk_55B5C8; // weak _UNKNOWN unk_55B5DC; // weak _UNKNOWN unk_55B5F0; // weak _UNKNOWN unk_55B604; // weak int *`typeinfo for'__cxxabiv1::__forced_unwind = &off_55F0D4; // weak int *`typeinfo for'__cxxabiv1::__foreign_exception = &off_55F0D4; // weak int *`typeinfo for'WXML::DOMLib::ParseException = &off_55F0D4; // weak int *`typeinfo for'WXML::DOMLib::RenderException = &off_55F0D4; // weak int *`typeinfo for'__gnu_cxx::recursive_init_error = &off_55F114; // weak int *`typeinfo for'__gnu_cxx::__concurrence_lock_error = &off_55F114; // weak int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error = &off_55F114; // weak int *`typeinfo for'std::locale::facet::__shim = &off_55F0D4; // weak int *`typeinfo for'std::locale::facet = &off_55F0D4; // weak int *`typeinfo for'std::moneypunct = &off_55F140; // weak int *`typeinfo for'std::moneypunct = &off_55F140; // weak int *`typeinfo for'std::moneypunct = &off_55F140; // weak int *`typeinfo for'std::moneypunct = &off_55F140; // weak int *`typeinfo for'std::string = &off_55F0D4; // weak int *`typeinfo for'std::collate = &off_55F114; // weak int *`typeinfo for'std::collate = &off_55F114; // weak int *`typeinfo for'std::messages = &off_55F140; // weak int *`typeinfo for'std::messages = &off_55F140; // weak int *`typeinfo for'std::numpunct = &off_55F114; // weak int *`typeinfo for'std::numpunct = &off_55F114; // weak int *`typeinfo for'std::time_get> = &off_55F140; // weak int *`typeinfo for'std::time_get> = &off_55F140; // weak int *`typeinfo for'std::money_get> = &off_55F114; // weak int *`typeinfo for'std::money_get> = &off_55F114; // weak int *`typeinfo for'std::money_put> = &off_55F114; // weak int *`typeinfo for'std::money_put> = &off_55F114; // weak int *`typeinfo for'std::ios_base::failure = &off_55F114; // weak int `typeinfo for'std::bad_typeid = 5632276; // weak int *`typeinfo for'std::moneypunct = &off_55F140; // weak int *`typeinfo for'std::moneypunct = &off_55F140; // weak int *`typeinfo for'std::moneypunct = &off_55F140; // weak int *`typeinfo for'std::moneypunct = &off_55F140; // weak int *`typeinfo for'std::__timepunct = &off_55F114; // weak int *`typeinfo for'std::__timepunct = &off_55F114; // weak int *`typeinfo for'std::logic_error = &off_55F114; // weak int *`typeinfo for'std::range_error = &off_55F114; // weak int *`typeinfo for'std::domain_error = &off_55F114; // weak int *`typeinfo for'std::length_error = &off_55F114; // weak int *`typeinfo for'std::out_of_range = &off_55F114; // weak int *`typeinfo for'std::system_error = &off_55F114; // weak int *`typeinfo for'std::__ios_failure = &off_560798; // weak int *`typeinfo for'std::bad_exception = &off_55F114; // weak int *`typeinfo for'std::runtime_error = &off_55F114; // weak int *`typeinfo for'std::overflow_error = &off_55F114; // weak int *`typeinfo for'std::underflow_error = &off_55F114; // weak int *`typeinfo for'std::invalid_argument = &off_55F114; // weak int *`typeinfo for'std::bad_array_new_length = &off_55F114; // weak int *`typeinfo for'std::ctype = &off_55F140; // weak int *`typeinfo for'std::ctype = &off_55F114; // weak int *`typeinfo for'std::codecvt = &off_55F114; // weak int *`typeinfo for'std::codecvt = &off_55F114; // weak int *`typeinfo for'std::collate = &off_55F114; // weak int *`typeinfo for'std::collate = &off_55F114; // weak int *`typeinfo for'std::num_get> = &off_55F114; // weak int *`typeinfo for'std::num_get> = &off_55F114; // weak int *`typeinfo for'std::num_put> = &off_55F114; // weak int *`typeinfo for'std::num_put> = &off_55F114; // weak int *`typeinfo for'std::bad_cast = &off_55F114; // weak int *`typeinfo for'std::messages = &off_55F140; // weak int *`typeinfo for'std::messages = &off_55F140; // weak int *`typeinfo for'std::numpunct = &off_55F114; // weak int *`typeinfo for'std::numpunct = &off_55F114; // weak int *`typeinfo for'std::time_get> = &off_55F140; // weak int *`typeinfo for'std::time_get> = &off_55F140; // weak int *`typeinfo for'std::time_put> = &off_55F114; // weak int *`typeinfo for'std::time_put> = &off_55F114; // weak int *`typeinfo for'std::bad_alloc = &off_55F114; // weak int *`typeinfo for'std::money_get> = &off_55F114; // weak int *`typeinfo for'std::money_get> = &off_55F114; // weak int *`typeinfo for'std::money_put> = &off_55F114; // weak int *`typeinfo for'std::money_put> = &off_55F114; // weak void (__cdecl *off_55F0D4)(__cxxabiv1::__class_type_info *__hidden this) = &__cxxabiv1::__class_type_info::~__class_type_info; // weak void (__cdecl *off_55F114)(__cxxabiv1::__si_class_type_info *__hidden this) = &__cxxabiv1::__si_class_type_info::~__si_class_type_info; // weak void (__cdecl *off_55F140)(__cxxabiv1::__vmi_class_type_info *__hidden this) = &__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info; // weak void (__cdecl *off_55F16C)(_anonymous_namespace_::io_error_category *__hidden this) = &`anonymous namespace'::io_error_category::~io_error_category; // weak void (__cdecl *off_55F1E4)(WXML::EXPRLib::NonTerminal *__hidden this) = &WXML::EXPRLib::NonTerminal::~NonTerminal; // weak void (__cdecl *off_55F20C)(WXML::EXPRLib::Action *__hidden this) = &WXML::EXPRLib::Action::~Action; // weak void (__cdecl *off_55F220)(WXML::EXPRLib::Terminal *__hidden this) = &WXML::EXPRLib::Terminal::~Terminal; // weak int (*off_55F234[2])() = { &__gnu_cxx::stdio_filebuf::~stdio_filebuf, &__gnu_cxx::stdio_filebuf::~stdio_filebuf }; // weak int (*off_55F274[2])() = { &__gnu_cxx::stdio_filebuf::~stdio_filebuf, &__gnu_cxx::stdio_filebuf::~stdio_filebuf }; // weak int (*off_55F2B4)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak int (*off_55F2F4)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak void (__cdecl *off_55F334)(__gnu_cxx::recursive_init_error *__hidden this) = &__gnu_cxx::recursive_init_error::~recursive_init_error; // weak void (__cdecl *off_55F348)(__gnu_cxx::__concurrence_lock_error *__hidden this) = &__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error; // weak void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this) = &__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error; // weak int (*off_55F370)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak int (*off_55F38C)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak int (*off_55F3A8)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak int (*off_55F3C4)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak int (*off_55F3E0)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak int (*off_55F3FC)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak int (*off_55F418)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak int (*off_55F434)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak int (*off_55F450)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak int (*off_55F474)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak int (*off_55F498)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak int (*off_55F4BC)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak int (*off_55F4E0)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak int (*off_55F508)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak int (*off_55F534)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak int (*off_55F55C)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak int (*off_55F588)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak int (*off_55F5A0)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak int (*off_55F5B8)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak int (*off_55F5D0)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak int (*off_55F5E8)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak int (*off_55F600)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak int (*off_55F618)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak int (*off_55F630)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak int (*off_55F648)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_55F67C)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_55F6B0)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_55F6E4)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_55F718)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_55F74C)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_55F780)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (*off_55F7B4)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::moneypunct::~moneypunct; // weak int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::moneypunct::~moneypunct; // weak int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::moneypunct::~moneypunct; // weak int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::moneypunct::~moneypunct; // weak int (*off_55F8F0)() = &std::collate_byname::~collate_byname; // weak int (*off_55F90C)() = &std::collate_byname::~collate_byname; // weak int (*off_55F928)() = &std::stringbuf::~stringbuf; // weak int (*off_55F968)() = &std::wstringbuf::~wstringbuf; // weak int (*off_55F9A8)() = &std::messages_byname::~messages_byname; // weak int (*off_55F9C4)() = &std::messages_byname::~messages_byname; // weak int (*off_55F9E0)() = &std::numpunct_byname::~numpunct_byname; // weak int (*off_55FA04)() = &std::numpunct_byname::~numpunct_byname; // weak int (*off_55FA28)() = &std::time_get_byname>::~time_get_byname; // weak int (*off_55FA54)() = &std::time_get_byname>::~time_get_byname; // weak int (*off_55FA80)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_55FAB4)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_55FAE8)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_55FB1C)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_55FB54)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak int (*off_55FB68[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_55FB7C[2])() = { &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream }; // weak int (*off_55FB90)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak int (*off_55FBA4[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_55FBB8[2])() = { &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream }; // weak int (*off_55FBCC)() = &std::istringstream::~istringstream; // weak int (*off_55FBE0[2])() = { &`virtual thunk to'std::istringstream::~istringstream, &`virtual thunk to'std::istringstream::~istringstream }; // weak int (*off_55FBF4)() = &std::wistringstream::~wistringstream; // weak int (*off_55FC08[2])() = { &`virtual thunk to'std::wistringstream::~wistringstream, &`virtual thunk to'std::wistringstream::~wistringstream }; // weak int (*off_55FC1C)() = &std::ostringstream::~ostringstream; // weak int (*off_55FC30[2])() = { &`virtual thunk to'std::ostringstream::~ostringstream, &`virtual thunk to'std::ostringstream::~ostringstream }; // weak int (*off_55FC44)() = &std::wostringstream::~wostringstream; // weak int (*off_55FC58[2])() = { &`virtual thunk to'std::wostringstream::~wostringstream, &`virtual thunk to'std::wostringstream::~wostringstream }; // weak int (*off_55FC68)() = &std::collate::~collate; // weak int (*off_55FC84)() = &std::collate::~collate; // weak int (*off_55FCA0)() = &std::messages::~messages; // weak int (*off_55FCBC)() = &std::messages::~messages; // weak int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::numpunct::~numpunct; // weak int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::numpunct::~numpunct; // weak int (*off_55FD20)() = &std::time_get>::~time_get; // weak int (*off_55FD4C)() = &std::time_get>::~time_get; // weak int (*off_55FD78)() = &std::money_get>::~money_get; // weak int (*off_55FD90)() = &std::money_get>::~money_get; // weak int (*off_55FDA8)() = &std::money_put>::~money_put; // weak int (*off_55FDC0)() = &std::money_put>::~money_put; // weak int (*off_55FDD8)() = &std::ios_base::failure[abi:cxx11]::~failure; // weak void (__cdecl *off_55FDEC)(std::ios_base::failure *__hidden this) = &std::ios_base::failure::~failure; // weak void (__cdecl *off_55FE04)(std::iostream *__hidden this) = &std::iostream::~iostream; // weak void (__cdecl *off_55FE18[2])(std::iostream *__hidden this) = { &`non-virtual thunk to'std::iostream::~iostream, &`non-virtual thunk to'std::iostream::~iostream }; // weak void (__cdecl *off_55FE2C[2])(std::iostream *__hidden this) = { &`virtual thunk to'std::iostream::~iostream, &`virtual thunk to'std::iostream::~iostream }; // weak void (__cdecl *off_55FE40)(std::istream *__hidden this) = &std::istream::~istream; // weak void (__cdecl *off_55FE54[2])(std::istream *__hidden this) = { &`virtual thunk to'std::istream::~istream, &`virtual thunk to'std::istream::~istream }; // weak void (__cdecl *off_55FE68)(std::ostream *__hidden this) = &std::ostream::~ostream; // weak void (__cdecl *off_55FE7C[2])(std::ostream *__hidden this) = { &`virtual thunk to'std::ostream::~ostream, &`virtual thunk to'std::ostream::~ostream }; // weak void (__cdecl *off_55FE8C)(std::bad_typeid *__hidden this) = &std::bad_typeid::~bad_typeid; // weak int (*off_55FEA0)() = &std::moneypunct::~moneypunct; // weak int (*off_55FED4)() = &std::moneypunct::~moneypunct; // weak int (*off_55FF08)() = &std::moneypunct::~moneypunct; // weak int (*off_55FF3C)() = &std::moneypunct::~moneypunct; // weak int (*off_55FF70)() = &std::__timepunct::~__timepunct; // weak int (*off_55FF80)() = &std::__timepunct::~__timepunct; // weak void (__cdecl *off_55FF90)(std::logic_error *__hidden this) = &std::logic_error::~logic_error; // weak void (__cdecl *off_55FFA4)(std::range_error *__hidden this) = &std::range_error::~range_error; // weak int (*off_55FFB8)() = &std::ctype_byname::~ctype_byname; // weak int (*off_55FFE8)() = &std::ctype_byname::~ctype_byname; // weak void (__cdecl *off_560028)(std::domain_error *__hidden this) = &std::domain_error::~domain_error; // weak void (__cdecl *off_56003C)(std::length_error *__hidden this) = &std::length_error::~length_error; // weak void (__cdecl *off_560050)(std::out_of_range *__hidden this) = &std::out_of_range::~out_of_range; // weak void (__cdecl *off_560064)(std::system_error *__hidden this) = &std::system_error::~system_error; // weak void (__cdecl *off_560078)(std::__ios_failure *__hidden this) = &std::__ios_failure::~__ios_failure; // weak void (__cdecl *off_56008C)(std::bad_exception *__hidden this) = &std::bad_exception::~bad_exception; // weak int (*off_5600A0[2])() = { &std::filebuf::~filebuf, &std::filebuf::~filebuf }; // weak int (*off_5600E0[2])() = { &std::wfilebuf::~wfilebuf, &std::wfilebuf::~wfilebuf }; // weak int (*off_560124[2])() = { &std::fstream::~fstream, &std::fstream::~fstream }; // weak int (*off_560138[2])() = { &`non-virtual thunk to'std::fstream::~fstream, &`non-virtual thunk to'std::fstream::~fstream }; // weak int (*off_56014C[2])() = { &`virtual thunk to'std::fstream::~fstream, &`virtual thunk to'std::fstream::~fstream }; // weak int (*off_560160[2])() = { &std::wfstream::~wfstream, &std::wfstream::~wfstream }; // weak int (*off_560174[2])() = { &`non-virtual thunk to'std::wfstream::~wfstream, &`non-virtual thunk to'std::wfstream::~wfstream }; // weak int (*off_560188[2])() = { &`virtual thunk to'std::wfstream::~wfstream, &`virtual thunk to'std::wfstream::~wfstream }; // weak int (*off_56019C)() = &std::wistream::~wistream; // weak int (*off_5601B0[2])() = { &`virtual thunk to'std::wistream::~wistream, &`virtual thunk to'std::wistream::~wistream }; // weak int (*off_5601C4)() = &std::wostream::~wostream; // weak int (*off_5601D8[2])() = { &`virtual thunk to'std::wostream::~wostream, &`virtual thunk to'std::wostream::~wostream }; // weak void (__cdecl *off_5601E8)(std::runtime_error *__hidden this) = &std::runtime_error::~runtime_error; // weak int (*off_560200[2])() = { &std::ifstream::~ifstream, &std::ifstream::~ifstream }; // weak int (*off_560214[2])() = { &`virtual thunk to'std::ifstream::~ifstream, &`virtual thunk to'std::ifstream::~ifstream }; // weak int (*off_560228[2])() = { &std::wifstream::~wifstream, &std::wifstream::~wifstream }; // weak int (*off_56023C[2])() = { &`virtual thunk to'std::wifstream::~wifstream, &`virtual thunk to'std::wifstream::~wifstream }; // weak int (*off_560250)() = &std::wiostream::~basic_iostream; // weak int (*off_560264[2])() = { &`non-virtual thunk to'std::wiostream::~basic_iostream, &`non-virtual thunk to'std::wiostream::~basic_iostream }; // weak int (*off_560278[2])() = { &`virtual thunk to'std::wiostream::~basic_iostream, &`virtual thunk to'std::wiostream::~basic_iostream }; // weak int (*off_56028C[2])() = { &std::ofstream::~ofstream, &std::ofstream::~ofstream }; // weak int (*off_5602A0[2])() = { &`virtual thunk to'std::ofstream::~ofstream, &`virtual thunk to'std::ofstream::~ofstream }; // weak int (*off_5602B4[2])() = { &std::wofstream::~wofstream, &std::wofstream::~wofstream }; // weak int (*off_5602C8[2])() = { &`virtual thunk to'std::wofstream::~wofstream, &`virtual thunk to'std::wofstream::~wofstream }; // weak int (*off_5602D8)() = &std::codecvt_byname::~codecvt_byname; // weak int (*off_560304)() = &std::codecvt_byname::~codecvt_byname; // weak int (*off_560330)() = &std::collate_byname::~collate_byname; // weak int (*off_56034C)() = &std::collate_byname::~collate_byname; // weak void (__cdecl *off_560368)(std::overflow_error *__hidden this) = &std::overflow_error::~overflow_error; // weak int (*off_5603D0)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak int (*off_5603EC)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak int (*off_560408)() = &std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr; // weak int (*off_560424)() = &std::streambuf::~streambuf; // weak int (*off_560464)() = &std::wstreambuf::~wstreambuf; // weak int (*off_5604A4)() = &std::messages_byname::~messages_byname; // weak int (*off_5604C0)() = &std::messages_byname::~messages_byname; // weak int (*off_5604DC)() = &std::numpunct_byname::~numpunct_byname; // weak int (*off_560500)() = &std::numpunct_byname::~numpunct_byname; // weak int (*off_560524)() = &std::time_get_byname>::~time_get_byname; // weak int (*off_56054C)() = &std::time_get_byname>::~time_get_byname; // weak int (*off_560574)() = &std::time_put_byname>::~time_put_byname; // weak int (*off_560588)() = &std::time_put_byname>::~time_put_byname; // weak void (__cdecl *off_56059C)(std::underflow_error *__hidden this) = &std::underflow_error::~underflow_error; // weak int (*off_5605B0)() = &std::__numpunct_cache::~__numpunct_cache; // weak int (*off_5605C0)() = &std::__numpunct_cache::~__numpunct_cache; // weak void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this) = &std::invalid_argument::~invalid_argument; // weak int (*off_5605E4)() = &std::__timepunct_cache::~__timepunct_cache; // weak int (*off_5605F4)() = &std::__timepunct_cache::~__timepunct_cache; // weak int (*off_560604)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_560638)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_56066C)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_5606A0)() = &std::moneypunct_byname::~moneypunct_byname; // weak int (*off_5606D4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak int (*off_5606E4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak int (*off_5606F4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak int (*off_560704)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak int (*off_56076C)() = &std::__codecvt_utf8_base::~__codecvt_utf8_base; // weak void (__cdecl *off_560798)(std::__iosfail_type_info *__hidden this) = &std::__iosfail_type_info::~__iosfail_type_info; // weak int (*off_56081C)() = &std::__codecvt_utf16_base::~__codecvt_utf16_base; // weak void (__cdecl *off_560848)(std::bad_array_new_length *__hidden this) = &std::bad_array_new_length::~bad_array_new_length; // weak _UNKNOWN unk_56089C; // weak _UNKNOWN unk_5608DC; // weak _UNKNOWN unk_560908; // weak _UNKNOWN unk_560934; // weak _UNKNOWN unk_560960; // weak _UNKNOWN unk_56098C; // weak _UNKNOWN unk_5609B8; // weak int (*off_560A3C)() = &std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base; // weak int (*off_560A68)() = &std::ctype::~ctype; // weak int (*off_560A98)() = &std::ctype::~ctype; // weak int (*off_560AD8)() = &std::codecvt::~codecvt; // weak int (*off_560B04)() = &std::codecvt::~codecvt; // weak int (*off_560B30)() = &std::codecvt::~codecvt; // weak int (*off_560B5C)() = &std::codecvt::~codecvt; // weak int (__cdecl *off_560B88)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::codecvt::~codecvt; // weak int (__cdecl *off_560BB4)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::codecvt::~codecvt; // weak int (*off_560BE0)() = &std::collate::~collate; // weak int (*off_560BFC)() = &std::collate::~collate; // weak int (*off_560C18)() = &std::num_get>::~num_get; // weak int (*off_560C54)() = &std::num_get>::~num_get; // weak int (*off_560C90)() = &std::num_put>::~num_put; // weak int (*off_560CC0)() = &std::num_put>::~num_put; // weak void (__cdecl *off_560CF0)(std::bad_cast *__hidden this) = &std::bad_cast::~bad_cast; // weak void (__cdecl *off_560D04)(std::ios_base *__hidden this) = &std::ios_base::~ios_base; // weak int (*off_560D14)() = &std::messages::~messages; // weak int (*off_560D30)() = &std::messages::~messages; // weak int (*off_560D4C)() = &std::numpunct::~numpunct; // weak int (*off_560D70)() = &std::numpunct::~numpunct; // weak int (*off_560D94)() = &std::time_get>::~time_get; // weak int (*off_560DBC)() = &std::time_get>::~time_get; // weak int (*off_560DE4)() = &std::time_put>::~time_put; // weak int (*off_560DF8)() = &std::time_put>::~time_put; // weak void (__cdecl *off_560E0C)(std::bad_alloc *__hidden this) = &std::bad_alloc::~bad_alloc; // weak int (*off_560E20)() = &std::ios::~ios; // weak int (*off_560E30)() = &std::wios::~wios; // weak int (*off_560E54)() = &std::money_get>::~money_get; // weak int (*off_560E6C)() = &std::money_get>::~money_get; // weak int (*off_560E84)() = &std::money_put>::~money_put; // weak int (*off_560E9C)() = &std::money_put>::~money_put; // weak _UNKNOWN std::ctype::classic_table(void)::_S_classic_table; // weak char std::__detail::__to_chars_10_impl(char *,unsigned int,unsigned int)::__digits[] = { '0' }; // weak char byte_5610E1[] = { '0' }; // weak _TCHAR *__mingw_winmain_lpCmdLine; // idb HINSTANCE __mingw_winmain_hInstance; // idb _startupinfo startinfo; // idb int has_cctor; // idb int managedapp; // idb int mainret; // idb char **envp; // idb char **argv; // idb int argc; // idb _UNKNOWN WXML::RPX::acceptNum(char const*,int &)::nextPos; // weak int dword_5620EC; // weak int dword_5620F4; // weak int dword_5620F8; // weak int dword_562100[264]; // weak int dword_562520; // weak int dword_562528[264]; // weak int dword_562948; // weak int dword_562950[266]; // weak int dword_562D78[266]; // weak int dword_5631A0[218]; // weak char WXML::RPX::acceptNum(char const*,int &)::inited; // weak _UNKNOWN WXML::RPX::acceptStr(char const*,int &)::nextPos; // weak int dword_5635A8; // weak int dword_5635BC; // weak int dword_563948[34]; // weak int dword_5639D0; // weak int dword_563AB8; // weak int dword_563D70[39]; // weak int dword_563E0C; // weak int dword_563EE0; // weak int dword_564198[266]; // weak int dword_5645C0[532]; // weak char WXML::RPX::acceptStr(char const*,int &)::inited; // weak _UNKNOWN WXML::RPX::acceptID(char const*,int &)::nextPos; // weak int dword_564F24[30]; // weak int dword_564F9C; // weak int dword_564FA4[217]; // weak int dword_565308; // weak int dword_56530C; // weak int dword_565310; // weak int dword_565314; // weak int dword_565318; // weak int dword_56531C; // weak int dword_565320; // weak int dword_565324; // weak int dword_565328; // weak int dword_56532C; // weak int dword_56534C[30]; // weak int dword_5653C4; // weak int dword_5653CC[169]; // weak char WXML::RPX::acceptID(char const*,int &)::inited; // 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 _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_565DF4; // 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::DOMLib::WXMLDom::componentCnt; // weak int WXML::DOMLib::Machine::STT[]; // weak int dword_566564; // weak int dword_566574; // weak int dword_566584; // weak int dword_5665DC; // weak int dword_5665E0; // weak int WXML::DOMLib::Machine::TT[]; // weak int dword_567960[]; // weak int dword_567964; // weak int dword_567A54; // weak int dword_567B50; // weak int dword_567D64; // weak int dword_567D68[33]; // weak int dword_567DEC; // weak int dword_567E24; // weak int dword_567F44; // weak int dword_568168; // weak int dword_56816C[34]; // weak int dword_5681F4; // weak int dword_568208; // weak int dword_568228; // weak int dword_56825C; // weak int dword_568260; // weak int dword_568264; // weak int dword_56856C; // weak int dword_568570[34]; // weak int dword_5685F8; // weak int dword_56862C; // weak int dword_568664; // weak int dword_568668; // weak int dword_568970; // weak int dword_568974; // weak int dword_56899C; // weak int dword_5689FC; // weak int dword_568AE4; // weak int dword_568D74; // weak int dword_568D78[]; // weak int dword_568E00; // weak int dword_568E14; // weak int dword_569178; // weak int dword_5691A4; // weak int dword_56957C; // weak int dword_569984; // weak int dword_5699AC; // weak int dword_569A20; // weak int dword_569AF4; // weak int dword_569D84; // weak int dword_569DB0; // weak int dword_56A188; // weak int dword_56A18C; // weak int dword_56A214; // weak int dword_56A2FC; // weak int dword_56A58C; // weak int dword_56A990; // weak int dword_56A994; // weak int dword_56AA30; // weak int dword_56AB04; // weak int dword_56AD94; // weak int dword_56B198; // weak int dword_56B388; // weak int dword_56B59C; // weak int dword_56B5A0; // weak int dword_56B628; // weak int dword_56B63C; // weak int dword_56B794; // weak int dword_56B9A0; // weak int dword_56BB98; // weak int dword_56BDA4; // weak int dword_56BDA8[62]; // weak int dword_56BEA0; // weak int dword_56C1A8; // weak int dword_56C260; // weak int dword_56C5AC; // weak int dword_56C664; // weak int dword_56C9B0; // weak int dword_56CA68; // weak int dword_56CAAC; // weak int dword_56CDB4; // weak int dword_56CF98; // weak int dword_56D1B8; // weak int dword_56D388; // weak int dword_56D5BC; // weak int dword_56D5C0[62]; // weak int dword_56D6B8; // weak int dword_56D9C0; // weak int dword_56DA80; // weak int dword_56DABC; // weak int dword_56DDC4; // weak int dword_56DE84; // weak int dword_56E1C8; // weak int dword_56E3A8; // weak int dword_56E5CC; // weak int dword_56E7B0; // weak int dword_56E9D0; // weak int dword_56EBA0; // weak int dword_56EDD4; // weak int dword_56EDD8[62]; // weak int dword_56EED0; // weak int dword_56F1D8; // weak int dword_56F2CC; // weak int dword_56F5DC; // weak int dword_56F6D8; // weak int dword_56F9E0; // weak int dword_56FA98; // weak int dword_56FDE4; // weak int dword_56FE9C; // weak int dword_5701E8; // weak int dword_5806EC; // weak _UNKNOWN unk_620001; // weak char WXML::DOMLib::Machine::InitTransitTable(void)::bInited; // weak int WXML::EXPRLib::Tokenizer::TT[]; // weak int dword_6689A0[]; // weak int dword_6689A4[33]; // weak int dword_668A28; // weak int dword_668A2C; // weak int dword_668A3C; // weak int dword_668A40; // weak int dword_668A5C; // weak int dword_668A60; // weak int dword_668A94; // weak int dword_668A98; // weak int dword_668A9C; // weak int dword_668B94; // weak int dword_668DA4; // weak int dword_668E9C; // weak int dword_6691A8; // weak int dword_6691AC[46]; // weak int dword_669264; // weak int dword_6695AC; // weak int dword_669668; // weak int dword_6699B0; // weak int dword_669DE0; // weak int dword_669E40; // weak int dword_669F28; // weak int dword_66A1B8; // weak int dword_66A1E4; // weak int dword_66A5BC; // weak int dword_66A5E8; // weak int dword_66A65C; // weak int dword_66A730; // weak int dword_66A9C0; // weak int dword_66A9EC; // weak int dword_66ADC4; // weak int dword_66ADC8[46]; // weak int dword_66AE80; // weak int dword_66B1C8; // weak int dword_66B1CC[256]; // weak int dword_66B5CC; // weak int dword_66B6C4; // weak int dword_66B9D0; // weak int dword_66B9D4[256]; // weak int dword_66BDD4; // weak int dword_66BE70; // weak int dword_66C1D8; // weak int dword_66C3CC; // weak int dword_66C5DC; // weak int dword_66C6D0; // weak int dword_66C6D4; // weak int dword_66C9E0; // weak int dword_66CAD8; // weak int dword_66CADC; // weak int dword_66CDE4; // weak int dword_66CEDC; // weak int dword_66D1E8; // weak int dword_66D2E0; // weak int dword_66D5EC; // weak int dword_66D6E4; // weak int dword_66D9F0; // weak int dword_66DA9C; // weak int dword_66DDF4; // weak int dword_66DEA0; // weak int dword_66E1F8; // weak int dword_66E2A4; // weak int dword_66E2B8; // weak int dword_66E5FC; // weak char WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited; // weak int bss_0; // weak int __native_startup_lock; // weak int __native_startup_state; // weak int _dowildcard; // weak int mingw_initcharmax; // weak int _newmode; // weak int mingw_initltssuo_force; // weak int mingw_initltsdyn_force; // weak int mingw_initltsdrot_force; // weak int _commode; int mingw_app_type; // weak int was_init_0; // weak int maxSections; // weak int the_secs; // weak int (__cdecl *stUserMathErr)(_DWORD); // weak int _fmode; int (__stdcall *__mingw_oldexcpt_handler)(_DWORD); // weak void *key_dtor_list; // idb int __mingwthr_cs_init; // weak struct _RTL_CRITICAL_SECTION __mingwthr_cs; // idb DWORD fc_key; // idb int fc_static; // weak int emutls_size; // weak DWORD emutls_key; // idb int emutls_mutex; // weak HANDLE hHandle; // idb char __hexdig_D2A[48]; // weak char byte_769690; // weak int p5s; // weak _UNKNOWN private_mem; // weak int freelist[]; // weak int dword_76A084; // weak int dtoa_CS_init; // weak struct _RTL_CRITICAL_SECTION dtoa_CritSec; // idb struct _RTL_CRITICAL_SECTION CriticalSection; // idb _UNKNOWN bss_1; // weak _UNKNOWN internal_mbstate_1; // weak _UNKNOWN internal_mbstate_2; // weak int handler; // weak int (__stdcall *pRtlGenRandom)(_DWORD, _DWORD); // weak int msvcrt__lc_codepage; // weak // extern HANDLE (__stdcall *CreateSemaphoreW)(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName); // extern void (__stdcall *DeleteCriticalSection)(LPCRITICAL_SECTION lpCriticalSection); // extern void (__stdcall *EnterCriticalSection)(LPCRITICAL_SECTION lpCriticalSection); // extern DWORD (__stdcall *GetCurrentThreadId)(); // extern DWORD (__stdcall *GetLastError)(); // extern HMODULE (__stdcall *GetModuleHandleW)(LPCWSTR lpModuleName); // extern FARPROC (__stdcall *GetProcAddress)(HMODULE hModule, LPCSTR lpProcName); // extern void (__stdcall *GetStartupInfoA)(LPSTARTUPINFOA lpStartupInfo); // extern void (__stdcall *InitializeCriticalSection)(LPCRITICAL_SECTION lpCriticalSection); // extern BOOL (__stdcall *IsDBCSLeadByteEx)(UINT CodePage, BYTE TestChar); // extern void (__stdcall *LeaveCriticalSection)(LPCRITICAL_SECTION lpCriticalSection); // extern HMODULE (__stdcall *LoadLibraryW)(LPCWSTR lpLibFileName); // extern int (__stdcall *MultiByteToWideChar)(UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar); // extern BOOL (__stdcall *ReleaseSemaphore)(HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount); // extern void (__stdcall *SetLastError)(DWORD dwErrCode); // extern LPTOP_LEVEL_EXCEPTION_FILTER (__stdcall *SetUnhandledExceptionFilter)(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); // extern void (__stdcall *Sleep)(DWORD dwMilliseconds); // extern DWORD (__stdcall *TlsAlloc)(); // extern BOOL (__stdcall *TlsFree)(DWORD dwTlsIndex); // extern LPVOID (__stdcall *TlsGetValue)(DWORD dwTlsIndex); // extern BOOL (__stdcall *TlsSetValue)(DWORD dwTlsIndex, LPVOID lpTlsValue); // extern BOOL (__stdcall *VirtualProtect)(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); // extern SIZE_T (__stdcall *VirtualQuery)(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength); // extern DWORD (__stdcall *WaitForSingleObject)(HANDLE hHandle, DWORD dwMilliseconds); // extern int (__stdcall *WideCharToMultiByte)(UINT CodePage, DWORD dwFlags, LPCWCH lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCCH lpDefaultChar, LPBOOL lpUsedDefaultChar); // extern _UNKNOWN ___initenv; weak // extern int ___mb_cur_max; // extern int *(__cdecl *__errno)(); // extern int (__cdecl *__fstat64)(int FileHandle, struct _stat64 *Stat); // extern FILE __iob[]; // extern int (__cdecl *__stricmp)(const char *String1, const char *String2); // extern FILE *(__cdecl *__wfopen)(const wchar_t *FileName, const wchar_t *Mode); _PVFV __xc_a = NULL; // idb _PVFV __xc_z = NULL; // idb _PVFV __crt_xc_end__ = NULL; // idb _PVFV __xi_z = NULL; // idb //----- (00401010) -------------------------------------------------------- int pre_c_init() { BOOL v0; // eax __int16 v2; // dx v0 = 0; mingw_initltsdrot_force = 1; mingw_initltsdyn_force = 1; mingw_initltssuo_force = 1; mingw_initcharmax = 1; if ( MEMORY[0x400000] == 23117 && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 ) { v2 = *(_WORD *)(MEMORY[0x40003C] + 4194328); if ( v2 == 267 ) { if ( *(_DWORD *)(MEMORY[0x40003C] + 4194420) > 0xEu ) v0 = *(_DWORD *)(MEMORY[0x40003C] + 4194536) != 0; } else if ( v2 == 523 && *(_DWORD *)(MEMORY[0x40003C] + 4194436) > 0xEu ) { v0 = *(_DWORD *)(MEMORY[0x40003C] + 4194552) != 0; } } managedapp = v0; if ( mingw_app_type ) __set_app_type(_crt_gui_app); else __set_app_type(_crt_console_app); *__p__fmode() = _fmode; *__p__commode() = _commode; _setargv(); if ( _MINGW_INSTALL_DEBUG_MATHERR == 1 ) __mingw_setusermatherr(_matherr); return 0; } // 53E22C: using guessed type int _MINGW_INSTALL_DEBUG_MATHERR; // 7695D8: using guessed type int mingw_initcharmax; // 7695E0: using guessed type int mingw_initltssuo_force; // 7695E4: using guessed type int mingw_initltsdyn_force; // 7695E8: using guessed type int mingw_initltsdrot_force; // 7695F4: using guessed type int mingw_app_type; //----- (00401130) -------------------------------------------------------- void pre_cpp_init() { startinfo.newmode = _newmode; __getmainargs(&argc, &argv, &envp, _dowildcard, &startinfo); } // 46CBF8: using guessed type int __cdecl __getmainargs(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 7695D4: using guessed type int _dowildcard; // 7695DC: using guessed type int _newmode; //----- (00401170) -------------------------------------------------------- // write access to const memory has been detected, the output may be wrong! int __usercall __tmainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5) { signed __int32 v5; // edi signed __int32 v6; // eax __int32 v7; // ebx char **v8; // eax char v9; // cl _TCHAR *v10; // eax char v11; // dl char v12; // dl DWORD wShowWindow; // eax int v14; // ebx size_t v15; // esi char **v16; // eax char **v17; // ebx const char **v18; // edi const char *v19; // eax size_t Size; // esi char *v21; // eax int result; // eax size_t v23; // [esp+14h] [ebp-7Ch] char **v24; // [esp+18h] [ebp-78h] const char **v25; // [esp+1Ch] [ebp-74h] struct _STARTUPINFOA v26; // [esp+2Ch] [ebp-64h] BYREF char *v27; // [esp+78h] [ebp-18h] int v28; // [esp+7Ch] [ebp-14h] int v29; // [esp+80h] [ebp-10h] int v30; // [esp+84h] [ebp-Ch] int v31; // [esp+88h] [ebp-8h] int v32; // [esp+8Ch] [ebp-4h] int retaddr; // [esp+90h] [ebp+0h] v32 = retaddr; v31 = a2; v30 = a3; v29 = a4; v28 = a1; v27 = &a5; memset(&v26, 0, sizeof(v26)); if ( mingw_app_type ) GetStartupInfoA(&v26); v5 = *((_DWORD *)NtCurrentTeb() + 1); while ( 1 ) { v6 = _InterlockedCompareExchange(&__native_startup_lock, v5, 0); if ( !v6 ) { v7 = 0; if ( __native_startup_state == 1 ) goto LABEL_40; goto LABEL_8; } if ( v5 == v6 ) break; Sleep(0x3E8u); } v7 = 1; if ( __native_startup_state == 1 ) { LABEL_40: _amsg_exit(31); if ( __native_startup_state == 1 ) goto LABEL_41; LABEL_11: if ( v7 ) goto LABEL_12; goto LABEL_42; } LABEL_8: if ( __native_startup_state ) { has_cctor = 1; } else { __native_startup_state = 1; _initterm(&__crt_xc_end__, &__xi_z); } if ( __native_startup_state != 1 ) goto LABEL_11; LABEL_41: _initterm(&__xc_a, &__xc_z); __native_startup_state = 2; if ( v7 ) goto LABEL_12; LABEL_42: _InterlockedExchange(&__native_startup_lock, v7); LABEL_12: if ( __dyn_tls_init_callback ) __dyn_tls_init_callback(0, 2, 0); _pei386_runtime_relocator(); __mingw_oldexcpt_handler = (int (__stdcall *)(_DWORD))SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)_gnu_exception_handler); _set_invalid_parameter_handler(__mingw_invalidParameterHandler); fpreset(); __mingw_winmain_hInstance = (HINSTANCE)0x400000; v8 = __p__acmdln(); v9 = 0; v10 = *v8; if ( !v10 ) goto LABEL_27; while ( 1 ) { v11 = *v10; if ( *v10 <= 32 ) break; if ( v11 == 34 ) v9 ^= 1u; LABEL_19: ++v10; } if ( !v11 ) goto LABEL_26; if ( (v9 & 1) != 0 ) { v9 = 1; goto LABEL_19; } do v12 = *++v10; while ( v12 && v12 <= 32 ); LABEL_26: __mingw_winmain_lpCmdLine = v10; LABEL_27: if ( mingw_app_type ) { wShowWindow = 10; if ( (v26.dwFlags & 1) != 0 ) wShowWindow = v26.wShowWindow; _data_start__ = wShowWindow; } v14 = argc; v15 = 4 * argc + 4; v16 = (char **)malloc(v15); v24 = v16; if ( v14 > 0 ) { v17 = v16; v18 = (const char **)argv; v23 = v15 - 4; v25 = (const char **)((char *)argv + v15 - 4); do { v19 = *v18; ++v17; ++v18; Size = strlen(v19) + 1; v21 = (char *)malloc(Size); *(v17 - 1) = v21; memcpy(v21, *(v18 - 1), Size); } while ( v25 != v18 ); v16 = (char **)((char *)v24 + v23); } *v16 = 0; argv = v24; __main(); ___initenv = envp; result = main(argc, (const char **)argv, ___initenv); mainret = result; if ( !managedapp ) exit(result); if ( !has_cctor ) { _cexit(); return mainret; } return result; } // 40137A: write access to const memory at 76B260 has been detected // 401170: could not find valid save-restore pair for ebx // 401170: could not find valid save-restore pair for ebp // 401170: could not find valid save-restore pair for edi // 401170: could not find valid save-restore pair for esi // 4012B2: conditional instruction was optimized away because dl.1!=0 // 46CBC8: using guessed type int __cdecl _amsg_exit(_DWORD); // 55A440: using guessed type int (__stdcall *__dyn_tls_init_callback)(_DWORD, _DWORD, _DWORD); // 7695CC: using guessed type int __native_startup_lock; // 7695D0: using guessed type int __native_startup_state; // 7695F4: using guessed type int mingw_app_type; // 76960C: using guessed type int (__stdcall *__mingw_oldexcpt_handler)(_DWORD); //----- (004014B0) -------------------------------------------------------- int __usercall WinMainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5) { mingw_app_type = 1; return __tmainCRTStartup(a1, a2, a3, a4, a5); } // 7695F4: using guessed type int mingw_app_type; //----- (004014C0) -------------------------------------------------------- int __usercall mainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5) { mingw_app_type = 0; return __tmainCRTStartup(a1, a2, a3, a4, a5); } // 7695F4: using guessed type int mingw_app_type; //----- (004014D0) -------------------------------------------------------- int __cdecl atexit(_PVFV func) { return -(_onexit((_onexit_t)func) == 0); } //----- (004014F0) -------------------------------------------------------- int __gcc_register_frame() { return atexit(__gcc_deregister_frame); } //----- (00401520) -------------------------------------------------------- int printf(char *a1, ...) { FILE *v1; // eax va_list va; // [esp+24h] [ebp+Ch] BYREF va_start(va, a1); v1 = ___acrt_iob_func(1u); return __mingw_vfprintf(v1, a1, (int *)va); } //----- (00401550) -------------------------------------------------------- int fprintf(_iobuf *a1, char *a2, ...) { va_list va; // [esp+28h] [ebp+10h] BYREF va_start(va, a2); return __mingw_vfprintf(a1, a2, (int *)va); } //----- (00401571) -------------------------------------------------------- void __tcf_1(void) { std::ios_base::Init::~Init(); } //----- (0040157C) -------------------------------------------------------- void *__usercall std::_Vector_base::_M_allocate@(unsigned int a1@) { if ( !a1 ) return 0; if ( a1 > 0x5555555 ) std::__throw_bad_alloc(); return operator new(24 * a1); } // 40157C: could not find valid save-restore pair for ebp //----- (004015A2) -------------------------------------------------------- unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) { size_t v2; // eax v2 = strlen(Str); return std::string::_M_replace(this, 0, this[1], Str, v2); } //----- (004015E0) -------------------------------------------------------- unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) { unsigned __int8 *v3; // eax unsigned __int8 *v4; // ecx unsigned __int8 *v5; // edx unsigned __int8 *v6; // eax unsigned __int8 *v7; // edx unsigned __int8 *result; // eax unsigned __int8 *v9; // [esp+18h] [ebp-20h] v3 = *this; v4 = *(unsigned __int8 **)a2; v5 = *(unsigned __int8 **)(a2 + 4); if ( *(_DWORD *)a2 == a2 + 8 ) { if ( v5 ) std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); v6 = *(unsigned __int8 **)(a2 + 4); v7 = *this; this[1] = v6; v6[(_DWORD)v7] = 0; } else { if ( v3 == (unsigned __int8 *)(this + 2) ) v3 = 0; else v9 = this[2]; *this = v4; this[1] = v5; this[2] = *(unsigned __int8 **)(a2 + 8); if ( v3 ) { *(_DWORD *)a2 = v3; *(_DWORD *)(a2 + 8) = v9; } else { *(_DWORD *)a2 = a2 + 8; } } result = *(unsigned __int8 **)a2; *(_DWORD *)(a2 + 4) = 0; *result = 0; return result; } // 401647: variable 'v9' is possibly undefined //----- (00401668) -------------------------------------------------------- size_t __thiscall std::string::basic_string(void **this, char *Str) { char *v3; // edi size_t result; // eax _BYTE *v5; // edx size_t v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v6[0] = strlen(Str); v3 = &Str[v6[0]]; if ( v6[0] > 0xF ) { *this = std::string::_M_create(v6, 0); this[2] = (void *)v6[0]; } std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); result = v6[0]; v5 = *this; this[1] = (void *)v6[0]; v5[result] = 0; return result; } // 401668: using guessed type size_t var_1C[7]; //----- (004016E6) -------------------------------------------------------- void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::string::_M_dispose((void **)(a1 + 40)); std::string::_M_dispose((void **)(a1 + 16)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (00401726) -------------------------------------------------------- int __cdecl Usage(int a1, const char **a2) { printf("Wechat WXML Compiler, version %s\n", "v0.5vv_20200413_syb_scopedata"); printf( "Usage: %s [-d] [-o OUTPUT] [-xc XComponentDefine] [-om XComponentDefine] [-cb [callback.js...]] [-llcommon] [-llw/-l" "la XCPath] \n", *a2); printf(" Options:\n"); printf(" -d: output code for debug\n"); printf(" -o: output destination (default stdout)\n"); printf(" -xc: output simplified code for custom component\n"); printf(" -cc: output compelete code for custom component\n"); printf(" -s: read from stdin\n"); printf(" -ds: insert debug wxs info\n"); printf(" -cb: add life cycle callback\n"); printf(" -llw: compile in lazy load mode (webiew)\n"); printf(" -lla: compile in lazy load mode (app service)\n"); printf(" args XCPath: custom component paths connected by comma or --split (./page/index,./comp/comp)\n"); return 1; } //----- (004017E0) -------------------------------------------------------- int __cdecl ReadFile(char *FileName, unsigned int *a2) { FILE *v2; // eax FILE *v3; // ebx unsigned int v4; // eax int v5; // esi char Buffer[4]; // [esp+10h] [ebp-418h] BYREF char v8[1020]; // [esp+14h] [ebp-414h] BYREF std::string::operator=(a2, (char *)&byte_5402D0); v2 = ___acrt_iob_func(0); if ( FileName ) v2 = fopen(FileName, "r"); v3 = v2; if ( !v2 ) return -1; *(_DWORD *)Buffer = 0; memset(v8, 0, sizeof(v8)); while ( fgets(Buffer, 1024, v3) ) { v4 = strlen(Buffer); if ( v4 > 0x3FFFFFFF - a2[1] ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(a2, Buffer, v4); } v5 = 0; if ( FileName ) fclose(v3); return v5; } //----- (004018B2) -------------------------------------------------------- int __cdecl Trim(int a1, int a2) { unsigned int v2; // eax void *v4[6]; // [esp+50h] [ebp-38h] BYREF void *v5[8]; // [esp+68h] [ebp-20h] BYREF std::string::basic_string((char *)a1, a2); while ( *(_DWORD *)(a1 + 4) > 1u && **(_BYTE **)a1 == 32 ) { std::string::substr(v4, (_DWORD *)a1, 1u, 0xFFFFFFFF); std::string::operator=((unsigned __int8 **)a1, (int)v4); std::string::_M_dispose(v4); } while ( 1 ) { v2 = *(_DWORD *)(a1 + 4); if ( v2 <= 1 || *(_BYTE *)(*(_DWORD *)a1 + v2 - 1) != 32 ) break; std::string::substr(v5, (_DWORD *)a1, 0, v2 - 1); std::string::operator=((unsigned __int8 **)a1, (int)v5); std::string::_M_dispose(v5); } return a1; } //----- (004019D7) -------------------------------------------------------- /** * @param a1 存储结果的容器 * @param a2 配置内容 * @param a3 换行标记 \n */ int GetNextArg(int a1, int *a2, int a3) { unsigned int v3; // eax struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-90h] void *v6[2]; // [esp+58h] [ebp-50h] BYREF char v7; // [esp+60h] [ebp-48h] BYREF void *v8[6]; // [esp+70h] [ebp-38h] BYREF void *v9[8]; // [esp+88h] [ebp-20h] BYREF v3 = std::string::find(a2, *(char **)a3, 0); v6[1] = 0; lpuexcpt = (struct _Unwind_Exception *)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_5402D0); } else { std::string::substr(v8, a2, 0, v3); std::string::operator=((unsigned __int8 **)v6, (int)v8); std::string::_M_dispose(v8); std::string::substr(v9, a2, (unsigned int)lpuexcpt + *(_DWORD *)(a3 + 4), 0xFFFFFFFF); // v9 = a2.substr(lpuexcpt) std::string::operator=((unsigned __int8 **)a2, (int)v9); std::string::_M_dispose(v9); } Trim(a1, (int)v6); std::string::_M_dispose(v6); return a1; } //----- (00401B4E) -------------------------------------------------------- int __cdecl EscapeToJsonString(int a1, int a2) { unsigned __int8 v2; // al char *v3; // eax char *v4; // eax struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-110h] unsigned __int8 v7; // [esp+57h] [ebp-D1h] BYREF int v8; // [esp+58h] [ebp-D0h] BYREF char v9[204]; // [esp+5Ch] [ebp-CCh] BYREF std::ostringstream::basic_ostringstream((int)&v8); for ( lpuexcpt = *(struct _Unwind_Exception **)a2; lpuexcpt != (struct _Unwind_Exception *)(*(_DWORD *)a2 + *(_DWORD *)(a2 + 4)); lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) { v2 = *(_BYTE *)lpuexcpt; if ( *(_BYTE *)lpuexcpt == 92 || v2 == 34 || v2 <= 0x1Fu ) { v3 = (char *)std::operator<<>((std::ostream::sentry *)&v8, "\\u"); v4 = std::ostream::operator<<(v3, (void (__cdecl *)(char *))std::hex); *(_DWORD *)&v4[*(_DWORD *)(*(_DWORD *)v4 - 12) + 8] = 4; std::operator<<>(v4, 48); std::ostream::operator<<(*(char *)lpuexcpt); } else { v7 = *(_BYTE *)lpuexcpt; std::__ostream_insert>((std::ostream::sentry *)&v8, (int)&v7, 1); } } std::stringbuf::str(a1, (int)v9); std::ostringstream::~ostringstream((int)&v8); return a1; } // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 401B4E: using guessed type char var_CC[204]; //----- (00401CE9) -------------------------------------------------------- int __cdecl DictToJsonString(int a1, int a2) { char v2; // al std::ostream::sentry *v3; // eax std::ostream::sentry *v4; // eax std::ostream::sentry *v6; // [esp+14h] [ebp-124h] std::ostream::sentry *v7; // [esp+14h] [ebp-124h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-120h] char *v9[6]; // [esp+50h] [ebp-E8h] BYREF char v10[4]; // [esp+68h] [ebp-D0h] BYREF char v11[204]; // [esp+6Ch] [ebp-CCh] BYREF std::ostringstream::basic_ostringstream((int)v10); std::operator<<>((std::ostream::sentry *)v10, "{"); lpuexcpt = *(struct _Unwind_Exception **)(a2 + 12); v2 = 1; while ( (struct _Unwind_Exception *)(a2 + 4) != lpuexcpt ) { if ( !v2 ) std::operator<<>((std::ostream::sentry *)v10, ","); v6 = std::operator<<>((std::ostream::sentry *)v10, "\""); EscapeToJsonString((int)v9, (int)lpuexcpt + 16); v3 = std::operator<<>(v6, v9[0]); std::operator<<>(v3, "\":"); std::string::_M_dispose((void **)v9); v7 = std::operator<<>((std::ostream::sentry *)v10, "\""); EscapeToJsonString((int)v9, (int)lpuexcpt + 40); v4 = std::operator<<>(v7, v9[0]); std::operator<<>(v4, "\""); std::string::_M_dispose((void **)v9); lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree_increment((int)lpuexcpt); v2 = 0; } std::operator<<>((std::ostream::sentry *)v10, "}"); std::stringbuf::str(a1, (int)v11); std::ostringstream::~ostringstream((int)v10); return a1; } // 401CE9: using guessed type char var_D0[4]; // 401CE9: using guessed type char var_CC[204]; //----- (00401F72) -------------------------------------------------------- int __cdecl Split(int a1, int *a2, int a3) { unsigned int i; // eax unsigned int v5; // [esp+14h] [ebp-74h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-70h] void *v7[6]; // [esp+50h] [ebp-38h] BYREF void *v8[8]; // [esp+68h] [ebp-20h] BYREF lpuexcpt = 0; *(_DWORD *)a1 = 0; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; for ( i = std::string::find(a2, a3, 0); ; i = std::string::find(a2, a3, (int)lpuexcpt) ) { v5 = i; std::string::substr(v7, a2, (unsigned int)lpuexcpt, i - (_DWORD)lpuexcpt); // v7 = a2.substr(lpuexcpt, i - lpuexcpt) Trim((int)v8, (int)v7); std::vector::emplace_back((void **)a1, v8); std::string::_M_dispose(v8); std::string::_M_dispose(v7); if ( v5 == -1 ) break; lpuexcpt = (struct _Unwind_Exception *)(*(_DWORD *)(a3 + 4) + v5); } return a1; } //----- (004020A8) -------------------------------------------------------- void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( int a1@) { int v2; // esi int v3; // edx void *v4; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::vector::~vector((void ***)(a1 + 40), v3); std::string::_M_dispose((void **)(a1 + 16)); v4 = (void *)a1; a1 = v2; operator delete(v4); } } // 4020C8: variable 'v3' is possibly undefined //----- (004020E8) -------------------------------------------------------- void __thiscall std::vector::operator=(int this, int *a2) { int v2; // edx int v3; // eax int v4; // [esp+18h] [ebp-60h] int v5; // [esp+1Ch] [ebp-5Ch] char *v6; // [esp+1Ch] [ebp-5Ch] void **v7; // [esp+20h] [ebp-58h] signed int v8; // [esp+24h] [ebp-54h] int i; // [esp+24h] [ebp-54h] char *Block; // [esp+28h] [ebp-50h] int Blocka; // [esp+28h] [ebp-50h] int v12; // [esp+2Ch] [ebp-4Ch] void **v13; // [esp+30h] [ebp-48h] int v14; // [esp+30h] [ebp-48h] int v15; // [esp+34h] [ebp-44h] void **j; // [esp+34h] [ebp-44h] int v17; // [esp+34h] [ebp-44h] if ( a2 != (int *)this ) { v4 = a2[1]; v15 = *a2; v12 = v4 - *a2; v8 = -1431655765 * (v12 >> 3); v13 = *(void ***)this; if ( *(_DWORD *)(this + 8) - *(_DWORD *)this >= (unsigned int)v12 ) { v7 = *(void ***)(this + 4); if ( v12 > (unsigned int)((char *)v7 - (char *)v13) ) { for ( i = -1431655765 * (((char *)v7 - (char *)v13) >> 3); i > 0; --i ) { std::string::_M_assign((int)v13, v15); v15 += 24; v13 += 6; } v14 = a2[1]; v17 = *a2 + *(_DWORD *)(this + 4) - *(_DWORD *)this; v6 = *(char **)(this + 4); while ( v14 != v17 ) { std::string::basic_string(v6, v17); v17 += 24; v6 += 24; } } else { Blocka = -1431655765 * ((v4 - *a2) >> 3); v5 = *(_DWORD *)this; while ( Blocka > 0 ) { std::string::_M_assign(v5, v15); v15 += 24; v5 += 24; --Blocka; } v3 = 0; if ( v8 >= 0 ) v3 = -1431655765 * (v12 >> 3); for ( j = &v13[6 * v3]; v7 != j; j += 6 ) std::string::_M_dispose(j); } } else { Block = (char *)std::_Vector_base::_M_allocate(v8); std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>( v15, v4, Block); std::_Destroy_aux::__destroy(v2, *(void ***)this, *(void ***)(this + 4)); if ( *(_DWORD *)this ) operator delete(*(void **)this); *(_DWORD *)this = Block; *(_DWORD *)(this + 8) = &Block[v12]; } *(_DWORD *)(this + 4) = *(_DWORD *)this + v12; } } // 4021A7: variable 'v2' is possibly undefined //----- (00402388) -------------------------------------------------------- #error "4024F8: call analysis failed (funcsize=102)" //----- (004024FE) -------------------------------------------------------- int __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>@( int a1@, int a2@) { int i; // eax int v4; // [esp+1Ch] [ebp-4Ch] int v6; // [esp+20h] [ebp-48h] struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-44h] int v9; // [esp+28h] [ebp-40h] v9 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(); *(_DWORD *)(v9 + 4) = a2; if ( *(_DWORD *)(a1 + 12) ) *(_DWORD *)(v9 + 12) = ((int (*)(void))std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>)(); lpuexcpta = *(struct _Unwind_Exception **)(a1 + 8); for ( i = v9; ; i = v6 ) { v4 = i; if ( !lpuexcpta ) break; v6 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(); *(_DWORD *)(v4 + 8) = v6; *(_DWORD *)(v6 + 4) = v4; if ( *((_DWORD *)lpuexcpta + 3) ) *(_DWORD *)(v6 + 12) = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( v6, v6); lpuexcpta = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpta + 2); } return v9; } // 402388: 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); //----- (00402626) -------------------------------------------------------- unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) { size_t v2; // eax v2 = strlen(Str); return std::string::_M_replace(this, 0, this[1], Str, v2); } //----- (00402663) -------------------------------------------------------- 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; } //----- (004026A6) -------------------------------------------------------- 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_564F9C = 1; dword_5653C4 = 1; do { dword_564FA4[v2] = 1; dword_564F24[v2] = 1; dword_5653CC[v2] = 1; dword_56534C[v2++] = 1; } while ( v2 != 26 ); dword_565308 = 1; dword_56530C = 1; dword_565310 = 1; dword_565314 = 1; dword_565318 = 1; dword_56531C = 1; dword_565320 = 1; dword_565324 = 1; dword_565328 = 1; dword_56532C = 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); } // 564F24: using guessed type int dword_564F24[30]; // 564F9C: using guessed type int dword_564F9C; // 564FA4: using guessed type int dword_564FA4[217]; // 565308: using guessed type int dword_565308; // 56530C: using guessed type int dword_56530C; // 565310: using guessed type int dword_565310; // 565314: using guessed type int dword_565314; // 565318: using guessed type int dword_565318; // 56531C: using guessed type int dword_56531C; // 565320: using guessed type int dword_565320; // 565324: using guessed type int dword_565324; // 565328: using guessed type int dword_565328; // 56532C: using guessed type int dword_56532C; // 56534C: using guessed type int dword_56534C[30]; // 5653C4: using guessed type int dword_5653C4; // 5653CC: using guessed type int dword_5653CC[169]; // 565670: using guessed type char WXML::RPX::acceptID(char const*,int &)::inited; //----- (004027A5) -------------------------------------------------------- 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_563948[i] = 1; dword_563D70[i] = 2; dword_564198[i] = 1; dword_5645C0[i] = 2; } dword_5635A8 = 1; dword_5635BC = 2; dword_563AB8 = 3; dword_563EE0 = 4; dword_5639D0 = 5; dword_563E0C = 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); } // 5635A8: using guessed type int dword_5635A8; // 5635BC: using guessed type int dword_5635BC; // 563948: using guessed type int dword_563948[34]; // 5639D0: using guessed type int dword_5639D0; // 563AB8: using guessed type int dword_563AB8; // 563D70: using guessed type int dword_563D70[39]; // 563E0C: using guessed type int dword_563E0C; // 563EE0: using guessed type int dword_563EE0; // 564198: using guessed type int dword_564198[266]; // 5645C0: using guessed type int dword_5645C0[532]; // 564E10: using guessed type char WXML::RPX::acceptStr(char const*,int &)::inited; //----- (0040286A) -------------------------------------------------------- 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_5620EC = 1; dword_5620F4 = 1; dword_5620F8 = 3; dword_562520 = 3; dword_562948 = 4; do { dword_562100[v2] = 2; dword_562528[v2] = 2; dword_562950[v2] = 2; dword_562D78[v2] = 4; dword_5631A0[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); } // 5620EC: using guessed type int dword_5620EC; // 5620F4: using guessed type int dword_5620F4; // 5620F8: using guessed type int dword_5620F8; // 562100: using guessed type int dword_562100[264]; // 562520: using guessed type int dword_562520; // 562528: using guessed type int dword_562528[264]; // 562948: using guessed type int dword_562948; // 562950: using guessed type int dword_562950[266]; // 562D78: using guessed type int dword_562D78[266]; // 5631A0: using guessed type int dword_5631A0[218]; // 563508: using guessed type char WXML::RPX::acceptNum(char const*,int &)::inited; //----- (0040292E) -------------------------------------------------------- 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; } //----- (004029C6) -------------------------------------------------------- std::ostream::sentry *__cdecl WXML::Rewrite::ToStringCode(int a1, int a2, int a3) { int i; // ebx char v4; // dl std::ostream::sentry *result; // eax char v6; // dl int v7; // [esp+1Fh] [ebp-9h] BYREF for ( i = 0; i < a2; ++i ) { v4 = *(_BYTE *)(a1 + i); if ( v4 == '\''/*39*/ ) { result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x27"); continue; } if ( v4 <= '\''/*39*/ ) { if ( v4 == '"'/*34*/ ) { result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x22"); continue; } if ( v4 > '"'/*34*/ ) { if ( v4 == '&'/*38*/ ) { result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x26"); continue; } } else { if ( v4 == '\n'/*10*/ ) { result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\n"); continue; } if ( v4 == '\r'/*13*/ ) { result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\r"); continue; } } goto LABEL_31; } if ( v4 == '>' /*62*/ ) { result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3e"); continue; } if ( v4 <= '>' /*62*/ ) { if ( v4 == '<'/*60*/ ) { result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3c"); continue; } if ( v4 == '='/*61*/ ) { result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3d"); continue; } LABEL_31: LOBYTE(v7) = *(_BYTE *)(a1 + i); result = std::__ostream_insert>((std::ostream::sentry *)(a3 + 8), (int)&v7, 1); continue; } if ( v4 != '\\'/*92*/ ) goto LABEL_31; v6 = *(_BYTE *)(a1 + i + 1); if ( (unsigned __int8)(v6 - '\\'/*92*/) > 0x18u ) { if ( v6 == '\''/*39*/ || v6 == '"'/*34*/ ) { LABEL_29: result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\"); continue; } } else if ( ((0x1440001u >> (v6 - '\\'/*92*/)) & 1) != 0 ) { goto LABEL_29; } result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x5c"); } return result; } //----- (00402ADD) -------------------------------------------------------- std::ostream::sentry *__cdecl WXML::Rewrite::ToStringCode(int *a1, int a2) { return WXML::Rewrite::ToStringCode(*a1, a1[1], a2); } //----- (00402B00) -------------------------------------------------------- int __cdecl WXML::Rewrite::ToStringCode3[abi:cxx11](int a1, int a2, int a3) { char v3; // al char *v5; // [esp+4h] [ebp-134h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-120h] char v7; // [esp+5Fh] [ebp-D9h] BYREF _BYTE v8[8]; // [esp+60h] [ebp-D8h] BYREF char v9[4]; // [esp+68h] [ebp-D0h] BYREF char v10[204]; // [esp+6Ch] [ebp-CCh] BYREF std::basic_stringstream,std::allocator>::basic_stringstream((int)v8); for ( lpuexcpt = 0; (int)lpuexcpt < a3; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) { v3 = *((_BYTE *)lpuexcpt + a2); if ( v3 == 61 ) { v5 = "\\x3d"; goto LABEL_12; } if ( v3 > 61 ) { if ( v3 == 62 ) { v5 = "\\x3e"; goto LABEL_12; } } else { if ( v3 == 38 ) { v5 = "\\x26"; goto LABEL_12; } if ( v3 == 60 ) { v5 = "\\x3c"; LABEL_12: std::operator<<>((std::ostream::sentry *)v9, v5); continue; } } v7 = *((_BYTE *)lpuexcpt + a2); std::__ostream_insert>((std::ostream::sentry *)v9, (int)&v7, 1); } std::stringbuf::str(a1, (int)v10); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v8); return a1; } // 402B00: using guessed type char var_D0[4]; // 402B00: using guessed type char var_CC[204]; //----- (00402C7C) -------------------------------------------------------- int __cdecl WXML::Rewrite::ToStringCode3(int a1, int *a2) { WXML::Rewrite::ToStringCode3[abi:cxx11](a1, *a2, a2[1]); return a1; } //----- (00402CA2) -------------------------------------------------------- int __cdecl WXML::Rewrite::ToStringCode2[abi:cxx11](int a1, int a2, int a3) { char v3; // al char *v5; // [esp+4h] [ebp-134h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-120h] char v7; // [esp+5Fh] [ebp-D9h] BYREF _BYTE v8[8]; // [esp+60h] [ebp-D8h] BYREF char v9[4]; // [esp+68h] [ebp-D0h] BYREF char v10[204]; // [esp+6Ch] [ebp-CCh] BYREF std::basic_stringstream,std::allocator>::basic_stringstream((int)v8); for ( lpuexcpt = 0; (int)lpuexcpt < a3; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) { v3 = *((_BYTE *)lpuexcpt + a2); if ( v3 == 39 ) { v5 = "\\x27"; goto LABEL_22; } if ( v3 > 39 ) { if ( v3 == 62 ) { v5 = "\\x3e"; goto LABEL_22; } if ( v3 > 62 ) { if ( v3 == 92 ) { v5 = "\\\\"; goto LABEL_22; } } else { if ( v3 == 60 ) { v5 = "\\x3c"; goto LABEL_22; } if ( v3 == 61 ) { v5 = "\\x3d"; goto LABEL_22; } } } else { if ( v3 == 34 ) { v5 = "\\x22"; goto LABEL_22; } if ( v3 > 34 ) { if ( v3 == 38 ) { v5 = "\\x26"; goto LABEL_22; } } else { if ( v3 == 10 ) { v5 = "\\n"; goto LABEL_22; } if ( v3 == 13 ) { v5 = "\\r"; LABEL_22: std::operator<<>((std::ostream::sentry *)v9, v5); continue; } } } v7 = *((_BYTE *)lpuexcpt + a2); std::__ostream_insert>((std::ostream::sentry *)v9, (int)&v7, 1); } std::stringbuf::str(a1, (int)v10); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v8); return a1; } // 402CA2: using guessed type char var_D0[4]; // 402CA2: using guessed type char var_CC[204]; //----- (00402E6E) -------------------------------------------------------- int __cdecl WXML::Rewrite::ToStringCode2(int a1, int *a2) { WXML::Rewrite::ToStringCode2[abi:cxx11](a1, *a2, a2[1]); return a1; } //----- (00402E94) -------------------------------------------------------- void __cdecl WXML::Rewrite::ToStringCode(int *a1, int a2) { void *v2; // ecx _BYTE *v3; // eax size_t v4; // eax _BYTE *v5; // edx int v6; // edx struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-130h] void *Src; // [esp+58h] [ebp-F0h] BYREF size_t Size; // [esp+5Ch] [ebp-ECh] int v10[4]; // [esp+60h] [ebp-E8h] BYREF char v11[12]; // [esp+70h] [ebp-D8h] BYREF char v12[200]; // [esp+7Ch] [ebp-CCh] BYREF std::basic_stringstream,std::allocator>::basic_stringstream((int)v11); WXML::Rewrite::ToStringCode(*a1, a1[1], (int)v11); std::stringbuf::str((int)&Src, (int)v12); v2 = Src; v3 = *(_BYTE **)a2; if ( Src == v10 ) { if ( Size ) std::string::_S_copy(v3, (unsigned __int8 *)Src, Size); v4 = Size; v5 = *(_BYTE **)a2; *(_DWORD *)(a2 + 4) = Size; v5[v4] = 0; } else { if ( v3 == (_BYTE *)(a2 + 8) ) v3 = 0; else lpuexcpt = *(struct _Unwind_Exception **)(a2 + 8); *(_DWORD *)(a2 + 4) = Size; v6 = v10[0]; *(_DWORD *)a2 = v2; *(_DWORD *)(a2 + 8) = v6; if ( v3 ) { Src = v3; v10[0] = (int)lpuexcpt; } else { Src = v10; } } Size = 0; *(_BYTE *)Src = 0; std::string::_M_dispose(&Src); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v11); } // 402FAC: variable 'lpuexcpt' is possibly undefined // 402E94: using guessed type char var_CC[200]; //----- (0040302D) -------------------------------------------------------- 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, a1); return a1; } //----- (004030B6) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, char *Str) { size_t v2; // eax size_t v3; // eax void **v5; // [esp+1Ch] [ebp-Ch] *this = this + 2; v2 = -1; if ( Str ) { v5 = this; v3 = strlen(Str); this = v5; v2 = (size_t)&Str[v3]; } return std::string::_M_construct(this, (unsigned __int8 *)Str, v2); } //----- (004030F1) -------------------------------------------------------- void __cdecl WXML::Rewrite::GetToken(int a1, int a2) { int v2; // eax int v3; // ecx _DWORD *v4; // ecx int v5; // [esp+10h] [ebp-88h] WXML::RPX *v6; // [esp+14h] [ebp-84h] int lpuexcpt; // [esp+18h] [ebp-80h] int v8; // [esp+54h] [ebp-44h] BYREF bool v9[4]; // [esp+58h] [ebp-40h] BYREF void *v10[2]; // [esp+5Ch] [ebp-3Ch] BYREF char v11; // [esp+64h] [ebp-34h] BYREF int v12; // [esp+74h] [ebp-24h] BYREF void *v13[8]; // [esp+78h] [ebp-20h] BYREF v6 = *(WXML::RPX **)a1; v2 = *(_DWORD *)(a1 + 4); while ( 1 ) { v5 = v2; if ( v2 <= 0 ) break; v8 = -1; *(_DWORD *)v9 = v2; lpuexcpt = WXML::RPX::acceptID(v6, v9); if ( lpuexcpt ) { lpuexcpt = 1; if ( WXML::RPX::acceptNum(v6, v9) ) { lpuexcpt = 2; if ( WXML::RPX::acceptStr(v6, v9) ) { lpuexcpt = 3; if ( !WXML::RPX::acceptSymbol(v6, (char *)v9, &v8) ) lpuexcpt = (v8 == 7) + 3; } } } v10[0] = &v11; std::string::_M_construct(v10, (unsigned __int8 *)v6, (size_t)v6 + v5 - *(_DWORD *)v9); v12 = lpuexcpt; std::string::basic_string(v13, v10); v3 = *(_DWORD *)(a2 + 4); if ( v3 == *(_DWORD *)(a2 + 8) ) { std::vector>::_M_realloc_insert>( (_DWORD *)a2, *(char **)(a2 + 4), &v12); } else { v4 = (_DWORD *)(v3 + 4); *(v4 - 1) = v12; std::string::basic_string(v4, v13); *(_DWORD *)(a2 + 4) += 28; } std::string::_M_dispose(v13); std::string::_M_dispose(v10); v2 = *(_DWORD *)v9; v6 = (WXML::RPX *)((char *)v6 + v5 - *(_DWORD *)v9); } } //----- (004032CE) -------------------------------------------------------- BOOL __cdecl WXML::Rewrite::RewriteRPX(int a1, unsigned int *a2, char *a3, char *Str) { int v4; // eax int v5; // eax _DWORD *v6; // eax _DWORD *v7; // eax char *v8; // eax unsigned int v9; // edx unsigned int v10; // edx _DWORD *v11; // eax char v12; // dl size_t v13; // eax int v15; // [esp+1Ch] [ebp-DCh] char *v16; // [esp+1Ch] [ebp-DCh] char v17; // [esp+23h] [ebp-D5h] int v18; // [esp+24h] [ebp-D4h] char *v19; // [esp+24h] [ebp-D4h] unsigned int lpuexcpt; // [esp+28h] [ebp-D0h] BOOL lpuexcpta; // [esp+28h] [ebp-D0h] char *v22; // [esp+6Ch] [ebp-8Ch] BYREF char *v23; // [esp+70h] [ebp-88h] int v24; // [esp+74h] [ebp-84h] void *v25[6]; // [esp+78h] [ebp-80h] BYREF void *v26[6]; // [esp+90h] [ebp-68h] BYREF void *v27[2]; // [esp+A8h] [ebp-50h] BYREF unsigned int v28; // [esp+B0h] [ebp-48h] BYREF void *v29[2]; // [esp+C0h] [ebp-38h] BYREF unsigned int v30; // [esp+C8h] [ebp-30h] BYREF void *v31[7]; // [esp+D8h] [ebp-20h] BYREF v22 = 0; v23 = 0; v24 = 0; WXML::Rewrite::GetToken(a1, (int)&v22); std::string::operator=(a2, (char *)&byte_540876); v17 = 1; for ( lpuexcpt = 1; lpuexcpt < -1227133513 * ((v23 - v22) >> 2); ++lpuexcpt ) { v4 = 28 * (lpuexcpt - 1); v18 = v4; if ( *(_DWORD *)&v22[v4] == 1 && (v5 = v4 + 28, v15 = v5, !*(_DWORD *)&v22[v5]) && !std::string::compare((int)&v22[v5 + 4], "rpx") ) { std::string::basic_string(v29, Str); v16 = &v22[v15 + 4]; v19 = &v22[v18 + 4]; std::string::basic_string(v25, a3); v6 = std::string::append(v25, (int)v19); std::string::basic_string(v26, v6); v7 = std::string::append(v26, (int)v16); std::string::basic_string(v27, v7); v8 = (char *)v27[1] + (unsigned int)v29[1]; v9 = 15; if ( v27[0] != &v28 ) v9 = v28; if ( (unsigned int)v8 <= v9 ) goto LABEL_15; v10 = 15; if ( v29[0] != &v30 ) v10 = v30; if ( (unsigned int)v8 > v10 ) LABEL_15: v11 = std::string::append(v27, (int)v29); else v11 = std::string::insert((unsigned int *)v29, 0, (int)v27); std::string::basic_string(v31, v11); std::string::operator+=(v31); std::string::_M_dispose(v31); std::string::_M_dispose(v27); std::string::_M_dispose(v26); std::string::_M_dispose(v25); std::string::_M_dispose(v29); v12 = v17; if ( ++lpuexcpt == -1227133513 * ((v23 - v22) >> 2) ) v12 = 0; v17 = v12; } else { std::string::operator+=(&v22[v18 + 4]); } } if ( v22 != v23 && v17 ) std::string::operator+=(v23 - 24); v13 = a2[1]; if ( v13 == *(_DWORD *)(a1 + 4) ) { lpuexcpta = 0; if ( v13 ) lpuexcpta = memcmp((const void *)*a2, *(const void **)a1, v13) != 0; } else { lpuexcpta = 1; } std::vector>::~vector((void **)&v22); return lpuexcpta; } // 402620: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); //----- (004036AC) -------------------------------------------------------- int __cdecl WXML::Rewrite::RewriteImg(int a1, unsigned int *a2, int *a3, int a4, int a5) { char *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 _DWORD *v11; // eax char v12; // dl int v14; // [esp+18h] [ebp-160h] unsigned __int8 v15; // [esp+1Ch] [ebp-15Ch] std::ostream::sentry *v16; // [esp+1Ch] [ebp-15Ch] char v17; // [esp+23h] [ebp-155h] char *Str1; // [esp+24h] [ebp-154h] char *Str1a; // [esp+24h] [ebp-154h] unsigned int lpuexcpt; // [esp+28h] [ebp-150h] char *v21; // [esp+64h] [ebp-114h] BYREF _BYTE *v22; // [esp+68h] [ebp-110h] int v23; // [esp+6Ch] [ebp-10Ch] char *v24; // [esp+70h] [ebp-108h] BYREF int v25; // [esp+74h] [ebp-104h] int v26; // [esp+88h] [ebp-F0h] BYREF int v27; // [esp+8Ch] [ebp-ECh] char v28; // [esp+90h] [ebp-E8h] BYREF void *v29[2]; // [esp+A0h] [ebp-D8h] BYREF char v30[4]; // [esp+A8h] [ebp-D0h] BYREF char v31[200]; // [esp+ACh] [ebp-CCh] BYREF v21 = 0; v22 = 0; v23 = 0; WXML::Rewrite::GetToken(a1, (int)&v21); std::string::operator=(a2, (char *)&byte_540876); v17 = 1; lpuexcpt = 1; v15 = 0; while ( lpuexcpt < -1227133513 * ((v22 - v21) >> 2) ) { Str1 = (char *)(28 * (lpuexcpt - 1)); if ( !std::string::compare((int)&Str1[(_DWORD)v21 + 4], (char *)off_540894) && !std::string::compare((int)&Str1[(_DWORD)v21 + 32], "(") ) { std::string::basic_string((void **)&v24, (char *)&byte_540876); while ( -1227133513 * ((v22 - v21) >> 2) > ++lpuexcpt ) { if ( !std::string::compare((int)&v21[28 * lpuexcpt + 4], ")") ) { v14 = v25; for ( Str1a = v24; &v24[v25] - Str1a > 0 && (*Str1a == 32 || *Str1a == 9); ++Str1a ) ; if ( !strncmp(Str1a, "http://", 7u) || !strncmp(Str1a, "https://", 8u) || !strncmp(Str1a, "//", 2u) || !strncmp(Str1a, "data:", 5u) ) { v27 = 0; v26 = (int)&v28; v28 = 0; std::string::reserve(&v26, v14 + 4); if ( (unsigned int)(0x3FFFFFFF - v27) <= 3 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v26, "url(", 4u); std::string::append(&v26, (int)&v24); v11 = std::string::append(&v26, ")"); std::string::basic_string(v29, v11); std::string::operator+=(v29); std::string::_M_dispose(v29); std::string::_M_dispose((void **)&v26); } else { std::basic_stringstream,std::allocator>::basic_stringstream((int)v29); v16 = std::operator<<>((std::ostream::sentry *)v30, "url("); std::string::basic_string((void **)&v26, Str1a); v6 = std::operator<<(v16, &v26); v7 = std::operator<<>(v6, "-do-not-use-local-path-"); v8 = std::operator<<(v7, a3); std::operator<<>(v8, "&"); v9 = (std::ostream::sentry *)std::ostream::operator<<(a4); std::operator<<>(v9, "&"); v10 = (std::ostream::sentry *)std::ostream::operator<<(a5); std::operator<<>(v10, ")"); std::string::_M_dispose((void **)&v26); std::stringbuf::str((int)&v26, (int)v31); std::string::operator+=(&v26); std::string::_M_dispose((void **)&v26); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v29); v15 = 1; } v12 = v17; if ( ++lpuexcpt == -1227133513 * ((v22 - v21) >> 2) ) v12 = 0; v17 = v12; break; } v5 = &v21[28 * lpuexcpt]; if ( *(_DWORD *)v5 != 4 ) { if ( *(_DWORD *)v5 == 2 ) { std::string::substr(v29, (_DWORD *)v5 + 1, 1u, *((_DWORD *)v5 + 2) - 2); std::string::operator+=(v29); std::string::_M_dispose(v29); } else { std::string::operator+=(v5 + 4); } } } std::string::_M_dispose((void **)&v24); } else { std::string::operator+=(&Str1[(_DWORD)v21 + 4]); } ++lpuexcpt; } if ( v22 != v21 && v17 ) std::string::operator+=(v22 - 24); std::vector>::~vector((void **)&v21); return v15; } // 402620: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 4036AC: using guessed type char var_D0[4]; // 4036AC: using guessed type char var_CC[200]; //----- (00403D38) -------------------------------------------------------- void __tcf_3(void) { std::string::_M_dispose((void **)&night::nsv_); } //----- (00403D42) -------------------------------------------------------- void __tcf_4(void) { std::string::_M_dispose((void **)&night::nst_); } //----- (00403D4C) -------------------------------------------------------- void __tcf_5(void) { std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); } //----- (00403D56) -------------------------------------------------------- void __tcf_6(void) { std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); } //----- (00403D60) -------------------------------------------------------- void __tcf_7(void) { std::string::_M_dispose((void **)&night::NS_TYPE_VAR); } //----- (00403D6A) -------------------------------------------------------- void __tcf_8(void) { std::string::_M_dispose((void **)&night::NS_TYPE_STR); } //----- (00403D74) -------------------------------------------------------- void __tcf_9(void) { std::string::_M_dispose((void **)&night::NS_TYPE_NUM); } //----- (00403D7E) -------------------------------------------------------- void __tcf_10(void) { std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); } //----- (00403D88) -------------------------------------------------------- void __tcf_11(void) { std::string::_M_dispose((void **)&night::NS_TYPE_KW); } //----- (00403D92) -------------------------------------------------------- void __tcf_12(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); } //----- (00403D9C) -------------------------------------------------------- void __tcf_13(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OP); } //----- (00403DA6) -------------------------------------------------------- void __tcf_14(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); } //----- (00403DB0) -------------------------------------------------------- void __tcf_15(void) { std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); } //----- (00403DBA) -------------------------------------------------------- void __tcf_16(void) { std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); } //----- (00403DC4) -------------------------------------------------------- void __tcf_17(void) { std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); } //----- (00403DCE) -------------------------------------------------------- void __tcf_18(void) { std::string::_M_dispose((void **)&night::NS_TYPE_K_V); } //----- (00403DD8) -------------------------------------------------------- void __tcf_19(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); } //----- (00403DE2) -------------------------------------------------------- void __tcf_20(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); } //----- (00403DEC) -------------------------------------------------------- void __tcf_21(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); } //----- (00403DF6) -------------------------------------------------------- void __tcf_22(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); } //----- (00403E00) -------------------------------------------------------- void __tcf_23(void) { std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); } //----- (00403E0A) -------------------------------------------------------- void __tcf_24(void) { std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); } //----- (00403E14) -------------------------------------------------------- void __tcf_25(void) { std::string::_M_dispose((void **)&night::NS_TYPE_IF); } //----- (00403E1E) -------------------------------------------------------- void __tcf_26(void) { std::string::_M_dispose((void **)&night::NS_TYPE_FOR); } //----- (00403E28) -------------------------------------------------------- void __tcf_27(void) { std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); } //----- (00403E32) -------------------------------------------------------- void __tcf_28(void) { std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); } //----- (00403E3C) -------------------------------------------------------- void __tcf_29(void) { std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); } //----- (00403E46) -------------------------------------------------------- void __tcf_30(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PROG); } //----- (00403E50) -------------------------------------------------------- void __tcf_31(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); } //----- (00403E5A) -------------------------------------------------------- void __tcf_32(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); } //----- (00403E64) -------------------------------------------------------- void __tcf_33(void) { std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); } //----- (00403E6E) -------------------------------------------------------- void __tcf_34(void) { std::string::_M_dispose((void **)&night::NS_TYPE_CALL); } //----- (00403E78) -------------------------------------------------------- void __tcf_35(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); } //----- (00403E82) -------------------------------------------------------- void __tcf_36(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); } //----- (00403E8C) -------------------------------------------------------- void __tcf_37(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); } //----- (00403E96) -------------------------------------------------------- void __tcf_38(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); } //----- (00403EA0) -------------------------------------------------------- void __tcf_39(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); } //----- (00403EAA) -------------------------------------------------------- void __tcf_40(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); } //----- (00403EB4) -------------------------------------------------------- void __tcf_41(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); } //----- (00403EBE) -------------------------------------------------------- int printf(char *a1, ...) { FILE *v1; // eax va_list va; // [esp+24h] [ebp+Ch] BYREF va_start(va, a1); v1 = ___acrt_iob_func(1u); return __mingw_vfprintf(v1, a1, (int *)va); } //----- (00403EEE) -------------------------------------------------------- void __tcf_2(void) { std::ios_base::Init::~Init(); } //----- (00403EF8) -------------------------------------------------------- int sprintf(FILE *a1, int a2, ...) { va_list va; // [esp+28h] [ebp+10h] BYREF va_start(va, a2); return __mingw_vsprintf(a1, "np_%d", (int *)va); } //----- (00403F1A) -------------------------------------------------------- int __usercall __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>@( int a1@, int a2@) { int v2; // ecx int v3; // ebx v2 = 0; v3 = *(_DWORD *)(a2 + 4); if ( v3 == *(_DWORD *)(a1 + 4) ) { LOBYTE(v2) = 1; if ( v3 ) LOBYTE(v2) = memcmp(*(const void **)a2, *(const void **)a1, *(_DWORD *)(a2 + 4)) == 0; } return v2; } // 403F4D: variable 'v2' is possibly undefined //----- (00403F52) -------------------------------------------------------- void *__usercall std::_Vector_base::_M_allocate@(unsigned int a1@) { if ( !a1 ) return 0; if ( a1 > 0x5555555 ) std::__throw_bad_alloc(); return operator new(24 * a1); } // 403F52: could not find valid save-restore pair for ebp //----- (00403F78) -------------------------------------------------------- void __usercall std::_Rb_tree,std::less,std::allocator>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-18h] while ( a1 ) { std::_Rb_tree,std::less,std::allocator>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::string::_M_dispose((void **)(a1 + 16)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (00403FAC) -------------------------------------------------------- void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-18h] while ( a1 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::string::_M_dispose((void **)(a1 + 16)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (00403FE0) -------------------------------------------------------- int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)) { return a2(this); } //----- (00403FF0) -------------------------------------------------------- unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) { unsigned __int8 *v3; // eax unsigned __int8 *v4; // ecx unsigned __int8 *v5; // edx unsigned __int8 *v6; // eax unsigned __int8 *v7; // edx unsigned __int8 *result; // eax unsigned __int8 *v9; // [esp+18h] [ebp-20h] v3 = *this; v4 = *(unsigned __int8 **)a2; v5 = *(unsigned __int8 **)(a2 + 4); if ( *(_DWORD *)a2 == a2 + 8 ) { if ( v5 ) std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); v6 = *(unsigned __int8 **)(a2 + 4); v7 = *this; this[1] = v6; v6[(_DWORD)v7] = 0; } else { if ( v3 == (unsigned __int8 *)(this + 2) ) v3 = 0; else v9 = this[2]; *this = v4; this[1] = v5; this[2] = *(unsigned __int8 **)(a2 + 8); if ( v3 ) { *(_DWORD *)a2 = v3; *(_DWORD *)(a2 + 8) = v9; } else { *(_DWORD *)a2 = a2 + 8; } } result = *(unsigned __int8 **)a2; *(_DWORD *)(a2 + 4) = 0; *result = 0; return result; } // 404057: variable 'v9' is possibly undefined //----- (00404078) -------------------------------------------------------- void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-18h] while ( a1 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::string::_M_dispose((void **)(a1 + 16)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (004040AC) -------------------------------------------------------- void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::string::_M_dispose((void **)(a1 + 40)); std::string::_M_dispose((void **)(a1 + 16)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (004040EC) -------------------------------------------------------- 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+50h] [ebp-D8h] BYREF char v10[4]; // [esp+58h] [ebp-D0h] BYREF char v11[204]; // [esp+5Ch] [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_20200413_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_20200413_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, (int)v11); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v9); return a1; } // 4040EC: using guessed type char var_D0[4]; // 4040EC: using guessed type char var_CC[204]; //----- (0040424C) -------------------------------------------------------- void __usercall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-18h] while ( a1 ) { std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 44)); std::string::_M_dispose((void **)(a1 + 16)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (00404288) -------------------------------------------------------- void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-18h] while ( a1 ) { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 44)); std::string::_M_dispose((void **)(a1 + 16)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (004042C4) -------------------------------------------------------- void __usercall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-18h] while ( a1 ) { std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 44)); std::string::_M_dispose((void **)(a1 + 16)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (00404300) -------------------------------------------------------- int __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( volatile signed __int32 **this, volatile signed __int32 *a2) { volatile signed __int32 *v3; // ecx int result; // eax if ( *this != a2 ) { if ( a2 ) { if ( _CRT_MT ) _InterlockedIncrement(a2 + 1); else ++*((_DWORD *)a2 + 1); } v3 = *this; if ( *this ) result = std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v3); *this = a2; } return result; } // 53E1E4: using guessed type int _CRT_MT; //----- (00404338) -------------------------------------------------------- // unsigned int __thiscall std::string::basic_string(void **this, char *Str) // { // size_t v2; // eax // size_t v3; // eax // void **v5; // [esp+1Ch] [ebp-Ch] // *this = this + 2; // v2 = -1; // if ( Str ) // { // v5 = this; // v3 = strlen(Str); // this = v5; // v2 = (size_t)&Str[v3]; // } // return std::string::_M_construct(this, (unsigned __int8 *)Str, v2); // } //----- (00404373) -------------------------------------------------------- void **__cdecl WXML::Compiler::WXMLHelperCode[abi:cxx11](void **a1) { std::string::basic_string(a1, aIfThisThisGUnd); return a1; } //----- (00404390) -------------------------------------------------------- void **__cdecl WXML::Compiler::GetFuncId(void **a1, _DWORD *a2, int a3) { int insert_unique_pos; // eax _DWORD *v4; // edx char *v5; // eax void *Blocka; // [esp+18h] [ebp-C0h] void **Block; // [esp+18h] [ebp-C0h] FILE Str[4]; // [esp+50h] [ebp-88h] BYREF if ( !std::map::count(a2, a3) ) { Blocka = (void *)a2[5]; std::string::basic_string((char *)Str, a3); Str[0]._bufsiz = (int)Blocka; Block = (void **)operator new(0x2Cu); std::string::basic_string(Block + 4, Str); Block[10] = (void *)Str[0]._bufsiz; insert_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( a2, (int)(Block + 4)); if ( v4 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( a2, insert_unique_pos, v4, Block); } else { std::string::_M_dispose(Block + 4); operator delete(Block); } std::string::_M_dispose((void **)&Str[0]._ptr); } memset(Str, 0, sizeof(Str)); v5 = std::map::operator[](a2, a3); sprintf(Str, (int)"np_%d", *(_DWORD *)v5); std::string::basic_string(a1, (char *)Str); return a1; } // 404474: variable 'v4' is possibly undefined //----- (0040455A) -------------------------------------------------------- void __thiscall std::vector::operator=(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); } //----- (004045AE) -------------------------------------------------------- void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( int a1@) { int v2; // esi int v3; // edx void *v4; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::vector::~vector((void ***)(a1 + 40), v3); std::string::_M_dispose((void **)(a1 + 16)); v4 = (void *)a1; a1 = v2; operator delete(v4); } } // 4045CE: variable 'v3' is possibly undefined //----- (004045EE) -------------------------------------------------------- void __fastcall std::deque::~deque(int a1) { void **v2; // edi int v3; // edx void ***v4; // esi void **v5; // eax void **v6; // edx int v7; // edx void **v8; // esi unsigned int v9; // edi void *v10; // eax void **v11; // [esp+1Ch] [ebp-2Ch] void **v12; // [esp+20h] [ebp-28h] void **v13; // [esp+24h] [ebp-24h] unsigned int v14; // [esp+28h] [ebp-20h] int v15; // [esp+2Ch] [ebp-1Ch] v2 = *(void ***)(a1 + 24); v13 = *(void ***)(a1 + 16); v3 = *(_DWORD *)(a1 + 20); v12 = *(void ***)(a1 + 28); v15 = v3; v4 = (void ***)(v3 + 4); v14 = *(_DWORD *)(a1 + 36); v5 = *(void ***)(a1 + 8); while ( v14 > (unsigned int)v4 ) { v6 = *v4; v11 = v5; ++v4; std::_Destroy_aux::__destroy((int)v6, v6, v6 + 126); v5 = v11; } if ( v15 == v14 ) { std::_Destroy_aux::__destroy(v3, v5, v2); } else { std::_Destroy_aux::__destroy((int)v13, v5, v13); std::_Destroy_aux::__destroy(v7, v12, v2); } if ( *(_DWORD *)a1 ) { v8 = *(void ***)(a1 + 20); v9 = *(_DWORD *)(a1 + 36) + 4; while ( v9 > (unsigned int)v8 ) { v10 = *v8++; operator delete(v10); } operator delete(*(void **)a1); } } // 40465C: variable 'v7' is possibly undefined // 404665: variable 'v3' is possibly undefined //----- (0040469D) -------------------------------------------------------- int __cdecl WXML::Compiler::DealWxsTag( int a1, int **a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7) { bool v7; // zf int *v8; // eax int *v9; // edx void **v10; // ecx _DWORD *v11; // eax unsigned __int8 *v12; // ecx int i; // eax unsigned __int8 v14; // cl char v15; // cl char *v16; // eax int v17; // eax std::ostream::sentry *v18; // eax std::ostream::sentry *v19; // eax std::ostream::sentry *v20; // eax std::ostream::sentry *v21; // eax char *v22; // ecx char *v23; // eax int v24; // eax _BYTE *v25; // eax char v26; // si bool v27; // dl 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 unsigned __int8 *v37; // [esp+0h] [ebp-3D8h] _DWORD *v38; // [esp+10h] [ebp-3C8h] BOOL v39; // [esp+10h] [ebp-3C8h] unsigned int v40; // [esp+14h] [ebp-3C4h] char v41; // [esp+14h] [ebp-3C4h] _DWORD *v42; // [esp+14h] [ebp-3C4h] BOOL v43; // [esp+14h] [ebp-3C4h] char *lpuexcptc; // [esp+18h] [ebp-3C0h] int lpuexcpt; // [esp+18h] [ebp-3C0h] int lpuexcpta; // [esp+18h] [ebp-3C0h] int lpuexcptb; // [esp+18h] [ebp-3C0h] int v48; // [esp+5Ch] [ebp-37Ch] BYREF volatile signed __int32 *v49; // [esp+60h] [ebp-378h] BYREF void *v50[3]; // [esp+64h] [ebp-374h] BYREF void *v51[6]; // [esp+70h] [ebp-368h] BYREF void *v52[6]; // [esp+88h] [ebp-350h] BYREF void *v53[2]; // [esp+A0h] [ebp-338h] BYREF char v54; // [esp+A8h] [ebp-330h] BYREF _DWORD v55[6]; // [esp+B8h] [ebp-320h] BYREF WXML::DOMLib::Parser *v56[6]; // [esp+D0h] [ebp-308h] BYREF int v57[6]; // [esp+E8h] [ebp-2F0h] BYREF int v58[6]; // [esp+100h] [ebp-2D8h] BYREF void *v59[6]; // [esp+118h] [ebp-2C0h] BYREF void *v60[6]; // [esp+130h] [ebp-2A8h] BYREF char v61[24]; // [esp+148h] [ebp-290h] BYREF char v62[24]; // [esp+160h] [ebp-278h] BYREF int v63[6]; // [esp+178h] [ebp-260h] BYREF void *v64[2]; // [esp+190h] [ebp-248h] BYREF char v65[4]; // [esp+198h] [ebp-240h] BYREF char v66[196]; // [esp+19Ch] [ebp-23Ch] BYREF void *v67[94]; // [esp+260h] [ebp-178h] BYREF lpuexcptc = std::string::find(*a2, '>'/*62*/, (unsigned int)a2[4]); // a2.find('>') v40 = (unsigned int)(lpuexcptc + 1); std::string::basic_string(v51, ""); v53[0] = &v54; v54 = 0; v53[1] = 0; v7 = *(_BYTE *)std::string::at(*a2, (unsigned int)(lpuexcptc - 1)) == '/'/*47*/; v8 = a2[4]; v9 = *a2; if ( v7 ) { std::string::substr(v55, v9, (unsigned int)(v8 + 1), v40 - (_DWORD)v8 - 6); std::string::operator=((unsigned __int8 **)v53, (int)v55); v10 = (void **)v55; } else { std::string::substr(v56, v9, (unsigned int)(v8 + 1), v40 - (_DWORD)v8 - 5); std::string::operator=((unsigned __int8 **)v53, (int)v56); v10 = (void **)v56; } std::string::_M_dispose(v10); std::string::basic_string((char *)v67, (int)v51); std::string::append(v67, (int)v53); v11 = std::string::append(v67, (int)v52); std::string::basic_string(v56, v11); v37 = v12; std::string::_M_dispose(v67); for ( lpuexcpt = 1; (int)a2[2] > lpuexcpt; ++lpuexcpt ) { std::operator+((int)v57, "\n", (int)v56); v37 = std::string::operator=((unsigned __int8 **)v56, (int)v57); std::string::_M_dispose((void **)v57); } for ( lpuexcpta = 1; (int)a2[3] > lpuexcpta; ++lpuexcpta ) { std::operator+((int)v58, " ", (int)v56); v37 = std::string::operator=((unsigned __int8 **)v56, (int)v58); std::string::_M_dispose((void **)v58); } WXML::DOMLib::Parser::Parser((WXML::DOMLib::Parser *)v37); memset(v50, 0, sizeof(v50)); lpuexcptb = WXML::DOMLib::Parser::Parse((int)v67, (WXML::DOMLib::Parser *)lpuexcpta, (char *)v56[0], (int)a7, a1, v50); if ( !lpuexcptb ) { WXML::DOMLib::Parser::GetParsed(&v48, (WXML::DOMLib::Parser *)v67); *a6 = a2[2]; if ( (int)((int)a2[5] + (_DWORD)a2[4] - v40) <= 0 ) std::string::basic_string(v59, (char *)&byte_547B7C); else std::string::substr(v59, *a2, v40, (unsigned int)a2[5] + (_DWORD)a2[4] - v40); std::string::operator=((unsigned __int8 **)a5, (int)v59); std::string::_M_dispose(v59); v41 = 1; for ( i = 0; i != *(_DWORD *)(a5 + 4); ++i ) { v14 = *(_BYTE *)(*(_DWORD *)a5 + i) - 9; if ( v14 > 0x17u ) { v41 = 0; } else { v7 = ((0x800013u >> v14) & 1) == 0; v15 = v41; if ( v7 ) v15 = 0; v41 = v15; } } v38 = (_DWORD *)(**(_DWORD **)(v48 + 72) + 48); std::string::basic_string(v60, (char *)off_547B7D); v39 = std::map::count(v38, (int)v60); std::string::_M_dispose(v60); if ( !v39 || (std::string::basic_string(v64, (char *)off_547B7D), v16 = std::map::operator[]((_DWORD *)(**(_DWORD **)(v48 + 72) + 48), v64), v17 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v16), std::string::_M_assign(a4, v17), std::string::_M_dispose(v64), v41) ) { v42 = (_DWORD *)(**(_DWORD **)(v48 + 72) + 48); std::string::basic_string(v64, "module"); v43 = std::map::count(v42, (int)v64); std::string::_M_dispose(v64); if ( v43 ) { std::string::basic_string(v64, "module"); v23 = std::map::operator[]((_DWORD *)(**(_DWORD **)(v48 + 72) + 48), v64); v24 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v23); std::string::_M_assign((int)a3, v24); std::string::_M_dispose(v64); v25 = (_BYTE *)*a3; v26 = (unsigned __int8)(*(_BYTE *)*a3 - 48) > 9u; while ( (_BYTE *)(*a3 + a3[1]) != v25 ) { v27 = (unsigned __int8)(*v25 - 97) <= 0x19u || (unsigned __int8)(*v25 - 48) <= 9u; if ( !v27 ) v27 = *v25 == 95 || (unsigned __int8)(*v25 - 65) <= 0x19u; v26 &= v27; ++v25; } if ( v26 ) goto LABEL_35; std::basic_stringstream,std::allocator>::basic_stringstream((int)v64); std::operator+((char *)v63, a1, ":"); std::operator<<((std::ostream::sentry *)v65, v63); v28 = (std::ostream::sentry *)std::ostream::operator<<(a2[2]); std::operator<<>(v28, ":"); v29 = (std::ostream::sentry *)std::ostream::operator<<(a2[3]); v30 = std::operator<<>(v29, ": "); v31 = std::operator<<(v30, a7); std::operator<<>(v31, "invalid module name, [0-9a-zA-Z_] allowed only"); std::string::_M_dispose((void **)v63); std::stringbuf::str((int)v62, (int)v66); std::string::operator=((unsigned __int8 **)a7, (int)v62); v22 = v62; } else { std::basic_stringstream,std::allocator>::basic_stringstream((int)v64); std::operator+((char *)v63, a1, ":"); std::operator<<((std::ostream::sentry *)v65, v63); v32 = (std::ostream::sentry *)std::ostream::operator<<(a2[2]); std::operator<<>(v32, ":"); v33 = (std::ostream::sentry *)std::ostream::operator<<(a2[3]); v34 = std::operator<<>(v33, ": "); v35 = std::operator<<(v34, a7); std::operator<<>(v35, "module expected in wxs tag"); std::string::_M_dispose((void **)v63); std::stringbuf::str((int)v63, (int)v66); std::string::operator=((unsigned __int8 **)a7, (int)v63); v22 = (char *)v63; } } else { std::basic_stringstream,std::allocator>::basic_stringstream((int)v64); std::operator+((char *)v63, a1, ":"); std::operator<<((std::ostream::sentry *)v65, v63); v18 = (std::ostream::sentry *)std::ostream::operator<<(a2[2]); std::operator<<>(v18, ":"); v19 = (std::ostream::sentry *)std::ostream::operator<<(a2[3]); v20 = std::operator<<>(v19, ": "); v21 = std::operator<<(v20, a7); std::operator<<>(v21, "wxs tag with src don't need any content"); std::string::_M_dispose((void **)v63); std::stringbuf::str((int)v61, (int)v66); std::string::operator=((unsigned __int8 **)a7, (int)v61); v22 = v61; } std::string::_M_dispose((void **)v22); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v64); lpuexcptb = 1; LABEL_35: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v49); } std::vector::~vector(v50); WXML::DOMLib::Parser::~Parser((int)v67); std::string::_M_dispose((void **)v56); std::string::_M_dispose(v53); std::string::_M_dispose(v52); std::string::_M_dispose(v51); return lpuexcptb; } // 40488A: variable 'v12' is possibly undefined // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 40469D: using guessed type _DWORD var_320[6]; // 40469D: using guessed type char var_240[4]; //----- (004050F6) -------------------------------------------------------- struct _Unwind_Exception *__cdecl WXML::Compiler::RenderDefine( unsigned int **a1, WXML::NameAllocator *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) { char *v20; // eax int v21; // eax char *v22; // eax unsigned int v23; // edx int v24; // eax unsigned int *v26; // [esp+5Ch] [ebp-BCh] unsigned int *v27; // [esp+5Ch] [ebp-BCh] unsigned int i; // [esp+64h] [ebp-B4h] unsigned int *lpuexcpta; // [esp+68h] [ebp-B0h] struct _Unwind_Exception *lpuexcpt; // [esp+68h] [ebp-B0h] void *v31[6]; // [esp+ACh] [ebp-6Ch] BYREF void *v32[6]; // [esp+C4h] [ebp-54h] BYREF void *v33[15]; // [esp+DCh] [ebp-3Ch] BYREF if ( std::operator==((int)*a1, "template") ) { lpuexcpta = *a1; std::string::basic_string(v33, "name"); v26 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( lpuexcpta + 12, (int)v33); std::string::_M_dispose(v33); if ( v26 != lpuexcpta + 13 ) std::string::_M_replace(*a1, 0, (*a1)[1], "wx-define", 9u); } lpuexcpt = 0; if ( std::operator==((int)*a1, "wx-define") ) { WXML::NameAllocator::NameAllocator(v33, a17, a18); std::string::basic_string(v32, "name"); v20 = std::map::operator[](*a1 + 12, v32); v21 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v20); std::string::basic_string((char *)v31, v21); std::string::_M_dispose(v32); v22 = std::map::operator[](a3, (int)v31); std::string::_M_assign((int)v22, (int)a2); v27 = *a1; std::string::basic_string(v32, "r"); lpuexcpt = (struct _Unwind_Exception *)WXML::DOMLib::WXMLDom::RenderMeAsFunction( v27, (int *)a2, a14, a4, (int *)v31, a5, (int *)v33, a10, a11, a12, (int *)v32, // "r" a15, a9, a16, 1, a7, a8, a20); std::string::_M_dispose(v32); std::string::_M_dispose(v31); WXML::NameAllocator::~NameAllocator((int)v33); } for ( i = 0; ; ++i ) { v23 = (*a1)[18]; if ( (int)((*a1)[19] - v23) >> 3 <= i || lpuexcpt ) break; v24 = WXML::Compiler::RenderDefine( v23 + 8 * i, a2, (int)a3, a4, a5, a6, a7, a8, a9, (int)a10, (int)a11, (int)a12, a13, (int)a14, (int)a15, (int)a16, a17, a18, a19, (int)a20); lpuexcpt = (struct _Unwind_Exception *)v24; } return lpuexcpt; } //----- (00405522) -------------------------------------------------------- struct _Unwind_Exception *__usercall WXML::Compiler::ParseSource@( WXML::DOMLib::Parser *a1@, int *a2, //文件名 char **a3, // 源码 char a4, // '\n' int a5, // gwxMark int *a6, _DWORD *a7, int *a8, _DWORD *a9, _DWORD *a10, _DWORD *a11, int a12, char a13) { char *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 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; // 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 void **v32; // ecx _DWORD *v33; // eax _DWORD *v34; // eax _DWORD *v35; // eax _DWORD *v36; // eax std::ostream::sentry *v37; // eax std::ostream::sentry *v38; // eax std::ostream::sentry *v39; // eax char *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 char *v47; // eax WXML::DOMLib::Parser *v49; // [esp+0h] [ebp-478h] unsigned int i; // [esp+2Ch] [ebp-44Ch] std::ostream::sentry *v51; // [esp+30h] [ebp-448h] bool v52; // [esp+30h] [ebp-448h] std::ostream::sentry *v53; // [esp+30h] [ebp-448h] std::ostream::sentry *v54; // [esp+30h] [ebp-448h] int v55; // [esp+34h] [ebp-444h] std::ostream::sentry *v56; // [esp+34h] [ebp-444h] std::ostream::sentry *v57; // [esp+34h] [ebp-444h] std::ostream::sentry *v58; // [esp+34h] [ebp-444h] std::ostream::sentry *v59; // [esp+34h] [ebp-444h] std::ostream::sentry *v60; // [esp+34h] [ebp-444h] std::ostream::sentry *v61; // [esp+34h] [ebp-444h] std::ostream::sentry *v62; // [esp+34h] [ebp-444h] bool lpuexcpta; // [esp+38h] [ebp-440h] struct _Unwind_Exception *lpuexcpt; // [esp+38h] [ebp-440h] int v65; // [esp+70h] [ebp-408h] BYREF int **v66; // [esp+74h] [ebp-404h] BYREF int **v67; // [esp+78h] [ebp-400h] int v68; // [esp+7Ch] [ebp-3FCh] char *v69; // [esp+80h] [ebp-3F8h] BYREF int v70; // [esp+84h] [ebp-3F4h] char v71; // [esp+88h] [ebp-3F0h] BYREF int v72[2]; // [esp+98h] [ebp-3E0h] BYREF char v73; // [esp+A0h] [ebp-3D8h] BYREF void *v74[2]; // [esp+B0h] [ebp-3C8h] BYREF char v75; // [esp+B8h] [ebp-3C0h] BYREF int v76; // [esp+C8h] [ebp-3B0h] BYREF int v77; // [esp+CCh] [ebp-3ACh] char v78; // [esp+D0h] [ebp-3A8h] BYREF void *v79[2]; // [esp+E0h] [ebp-398h] BYREF char v80; // [esp+E8h] [ebp-390h] BYREF int v81[2]; // [esp+F8h] [ebp-380h] BYREF char v82; // [esp+100h] [ebp-378h] BYREF void *v83[6]; // [esp+110h] [ebp-368h] BYREF int v84[2]; // [esp+128h] [ebp-350h] BYREF char v85; // [esp+130h] [ebp-348h] BYREF int v86[6]; // [esp+140h] [ebp-338h] BYREF int v87[6]; // [esp+158h] [ebp-320h] BYREF int v88[2]; // [esp+170h] [ebp-308h] BYREF char v89[4]; // [esp+178h] [ebp-300h] BYREF char v90[196]; // [esp+17Ch] [ebp-2FCh] BYREF int v91; // [esp+240h] [ebp-238h] BYREF volatile signed __int32 *v92; // [esp+244h] [ebp-234h] BYREF char v93[4]; // [esp+248h] [ebp-230h] BYREF char v94[196]; // [esp+24Ch] [ebp-22Ch] BYREF int v95[2]; // [esp+310h] [ebp-168h] BYREF char v96[4]; // [esp+318h] [ebp-160h] BYREF char v97[348]; // [esp+31Ch] [ebp-15Ch] BYREF std::string::substr(v95, a2, a2[1] - 5, 0xFFFFFFFF); lpuexcpta = std::operator==((int)v95, ".wxml"); std::string::_M_dispose((void **)v95); if ( lpuexcpta ) { // 文件名 .wxml 结尾 v66 = 0; v67 = 0; v68 = 0; WXML::DOMLib::Parser::Parser(v49); lpuexcpt = (struct _Unwind_Exception *)WXML::DOMLib::Parser::Parse((int)v95, a1, *a3, (int)a8, (int)a2, &v66); if ( !lpuexcpt ) { WXML::DOMLib::Parser::GetParsed(&v91, (WXML::DOMLib::Parser *)v95); v13 = std::map>::operator[](a9, (int)a2); *(_DWORD *)v13 = v91; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v13 + 1, v92); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v92); v70 = 0; v69 = &v71; v71 = 0; v72[0] = (int)&v73; v72[1] = 0; v73 = 0; std::basic_stringstream,std::allocator>::basic_stringstream((int)v88); if ( v66 != v67 ) { v51 = std::operator<<>((std::ostream::sentry *)v89, "f_['"); WXML::Rewrite::ToStringCode((int)&v91, a2); v14 = std::operator<<(v51, &v91); v15 = std::operator<<>(v14, "']={};"); std::operator<<>(v15, a4); std::string::_M_dispose((void **)&v91); } for ( i = 0; -1227133513 * (((char *)v67 - (char *)v66) >> 4) > i; ++i ) { v74[1] = 0; v79[0] = &v80; v81[0] = (int)&v82; v74[0] = &v75; v76 = (int)&v78; v75 = 0; v77 = 0; v78 = 0; v79[1] = 0; v80 = 0; v81[1] = 0; v82 = 0; v55 = WXML::Compiler::DealWxsTag((int)a2, &v66[28 * i], v74, (int)&v76, (int)v79, &v65, a8); if ( v55 ) goto LABEL_20; v16 = std::operator<<((std::ostream::sentry *)v89, a6); v56 = std::operator<<>(v16, "['"); WXML::Rewrite::ToStringCode((int)v87, a2); v17 = std::operator<<(v56, v87); v57 = std::operator<<>(v17, "']['"); WXML::Rewrite::ToStringCode((int)&v91, (int *)v74); v18 = std::operator<<(v57, &v91); std::operator<<>(v18, "'] ="); std::string::_M_dispose((void **)&v91); std::string::_M_dispose((void **)v87); if ( v77 ) { MMBizWxaAppComm::PathCombine(a2, &v76, (unsigned int *)v81); if ( *(_BYTE *)v81[0] == 47 ) { std::operator+((int)v86, 46, (int)v81); std::string::operator=((unsigned __int8 **)v81, (int)v86); std::string::_M_dispose((void **)v86); } if ( a7 + 1 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a7, (int)v81) && (std::operator==(a5, "$gwx") || a13) ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v91); v19 = std::operator<<((std::ostream::sentry *)v93, a2); std::operator<<>(v19, ":"); v20 = (std::ostream::sentry *)std::ostream::operator<<(v65); std::operator<<>(v20, ":"); v21 = (std::ostream::sentry *)std::ostream::operator<<(v66[28 * i + 3]); v22 = std::operator<<>(v21, ":"); v23 = std::operator<<(v22, &v76); v24 = std::operator<<>(v23, " not found from "); std::operator<<(v24, a2); std::stringbuf::str((int)v87, (int)v94); std::string::operator=((unsigned __int8 **)a8, (int)v87); std::string::_M_dispose((void **)v87); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v91); v55 = 1; LABEL_20: std::string::_M_dispose((void **)v81); std::string::_M_dispose(v79); std::string::_M_dispose((void **)&v76); std::string::_M_dispose(v74); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v88); std::string::_M_dispose((void **)v72); std::string::_M_dispose((void **)&v69); lpuexcpt = (struct _Unwind_Exception *)v55; goto LABEL_24; } v58 = std::operator<<>((std::ostream::sentry *)v89, "f_['"); WXML::Rewrite::ToStringCode((int)&v91, v81); v25 = std::operator<<(v58, &v91); std::operator<<>(v25, "'] || "); std::string::_M_dispose((void **)&v91); v59 = std::operator<<>((std::ostream::sentry *)v89, "nv_require(\""); std::operator+((int)v87, "p_", (int)v81); WXML::Rewrite::ToStringCode((int)&v91, v87); v26 = std::operator<<(v59, &v91); v27 = std::operator<<>(v26, "\");"); std::operator<<>(v27, a4); std::string::_M_dispose((void **)&v91); std::string::_M_dispose((void **)v87); v28 = std::operator<<((std::ostream::sentry *)v89, a6); v60 = std::operator<<>(v28, "['"); WXML::Rewrite::ToStringCode((int)v87, a2); v29 = std::operator<<(v60, v87); v61 = std::operator<<>(v29, "']['"); WXML::Rewrite::ToStringCode((int)&v91, (int *)v74); v30 = std::operator<<(v61, &v91); v31 = std::operator<<>(v30, "']();"); std::operator<<>(v31, a4); std::string::_M_dispose((void **)&v91); v32 = (void **)v87; } else { std::operator+((int)v86, "m_", (int)a2); v33 = std::string::append(v86, ":"); std::string::basic_string(v87, v33); v34 = std::string::append(v87, (int)v74); std::string::basic_string(&v91, v34); WXML::Compiler::GetFuncId(v83, a11, (int)&v91); std::string::_M_dispose((void **)&v91); std::string::_M_dispose((void **)v87); std::string::_M_dispose((void **)v86); v55 = night::compile_ns((int)a2, (int)v83, (int)v79, v65, (unsigned int *)v72, 0); if ( v55 ) { std::string::_M_assign((int)a8, (int)v72); std::string::_M_dispose(v83); goto LABEL_20; } v62 = std::operator<<>((std::ostream::sentry *)v89, "nv_require(\""); std::operator+((int)v84, "m_", (int)a2); v35 = std::string::append(v84, ":"); std::string::basic_string(v86, v35); v36 = std::string::append(v86, (int)v74); std::string::basic_string(v87, v36); WXML::Rewrite::ToStringCode((int)&v91, v87); v37 = std::operator<<(v62, &v91); v38 = std::operator<<>(v37, "\");"); std::operator<<>(v38, a4); std::string::_M_dispose((void **)&v91); std::string::_M_dispose((void **)v87); std::string::_M_dispose((void **)v86); std::string::_M_dispose((void **)v84); v39 = std::operator<<((std::ostream::sentry *)v89, v72); std::operator<<>(v39, a4); v32 = v83; } std::string::_M_dispose(v32); std::string::_M_dispose((void **)v81); std::string::_M_dispose(v79); std::string::_M_dispose((void **)&v76); std::string::_M_dispose(v74); } std::stringbuf::str((int)&v91, (int)v90); std::string::operator=((unsigned __int8 **)&v69, (int)&v91); std::string::_M_dispose((void **)&v91); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v88); std::string::_M_dispose((void **)v72); if ( v70 ) { v40 = std::map::operator[](a10, (int)a2); std::string::_M_assign((int)v40, (int)&v69); } std::string::_M_dispose((void **)&v69); } LABEL_24: WXML::DOMLib::Parser::~Parser((int)v95); std::vector::~vector((void **)&v66); } else { std::string::substr(v95, a2, a2[1] - 4, 0xFFFFFFFF); v52 = std::operator==((int)v95, ".wxs"); std::string::_M_dispose((void **)v95); lpuexcpt = 0; if ( v52 ) { v84[0] = (int)&v85; v84[1] = 0; v85 = 0; std::operator+((int)v95, "p_", (int)a2); WXML::Compiler::GetFuncId((void **)v86, a11, (int)v95); std::string::_M_dispose((void **)v95); lpuexcpt = (struct _Unwind_Exception *)night::compile_ns((int)a2, (int)v86, (int)a3, 1, (unsigned int *)v84, 0); if ( lpuexcpt ) { std::string::_M_assign((int)a8, (int)v84); } else { std::basic_stringstream,std::allocator>::basic_stringstream((int)v95); v53 = std::operator<<>((std::ostream::sentry *)v96, "f_['"); WXML::Rewrite::ToStringCode((int)v87, a2); v41 = std::operator<<(v53, v87); v42 = std::operator<<>(v41, "'] = nv_require("); v54 = std::operator<<>(v42, 34); std::operator+((int)v88, "p_", (int)a2); WXML::Rewrite::ToStringCode((int)&v91, v88); v43 = std::operator<<(v54, &v91); v44 = std::operator<<>(v43, 34); v45 = std::operator<<>(v44, ");"); std::operator<<>(v45, a4); std::string::_M_dispose((void **)&v91); std::string::_M_dispose((void **)v88); std::string::_M_dispose((void **)v87); v46 = std::operator<<((std::ostream::sentry *)v96, v84); std::operator<<>(v46, a4); std::stringbuf::str((int)&v91, (int)v97); v47 = std::map::operator[](a10, (int)a2); std::string::operator=((unsigned __int8 **)v47, (int)&v91); std::string::_M_dispose((void **)&v91); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v95); } std::string::_M_dispose((void **)v86); std::string::_M_dispose((void **)v84); } } return lpuexcpt; } // 40561E: variable 'v49' is possibly undefined // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 405522: using guessed type char var_300[4]; // 405522: using guessed type char var_230[4]; // 405522: using guessed type char var_22C[196]; // 405522: using guessed type char var_2FC[196]; // 405522: using guessed type char var_160[4]; // 405522: using guessed type char var_15C[348]; //----- (00406648) -------------------------------------------------------- std::ostream::sentry *__usercall WXML::Compiler::Compile@( int *a1@, _DWORD *a2, int *a3, unsigned __int8 **a4, _DWORD *a5, _DWORD *a6, char a7, int *a8, int a9, char a10, int *a11, int *a12, int *a13, int *a14, int *a15, int *a16, int a17, int a18, int a19, int *a20) { char *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 bool v26; // al 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 std::ostream::sentry *v37; // eax std::ostream::sentry *v38; // eax std::ostream::sentry *v39; // eax int *v40; // ecx _DWORD *v41; // eax _DWORD *v42; // eax _DWORD *v43; // eax _DWORD *v44; // eax std::ostream::sentry *v45; // eax std::ostream::sentry *v46; // eax std::ostream::sentry *v47; // eax char *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 char *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 _DWORD *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 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; // 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 *j; // eax int *v113; // eax int *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 _DWORD *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 *m; // 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 int *n; // eax std::ostream::sentry *v159; // eax std::ostream::sentry *ii; // eax int v161; // ecx std::ostream::sentry *v162; // eax int StrID; // eax std::ostream::sentry *v164; // eax int *v165; // eax std::ostream::sentry *v166; // eax int v167; // eax std::ostream::sentry *v168; // eax std::ostream::sentry *v169; // eax int v170; // eax int v171; // edx _DWORD *v172; // eax int v173; // eax int v174; // eax int v175; // eax int v176; // edx _DWORD *v177; // eax int v178; // eax int v179; // eax std::ostream::sentry *v180; // eax std::ostream::sentry *v181; // eax std::ostream::sentry *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 std::ostream::sentry *v221; // eax std::ostream::sentry *v222; // eax struct _Unwind_Exception *kk; // eax std::ostream::sentry *v224; // eax std::ostream::sentry *v225; // eax std::ostream::sentry *v226; // eax WXML::DOMLib::Parser *v228; // [esp+0h] [ebp-618h] _DWORD *v229; // [esp+58h] [ebp-5C0h] std::ostream::sentry *v230; // [esp+58h] [ebp-5C0h] int v231; // [esp+5Ch] [ebp-5BCh] _DWORD *v232; // [esp+60h] [ebp-5B8h] std::ostream::sentry *v233; // [esp+60h] [ebp-5B8h] bool v234; // [esp+64h] [ebp-5B4h] int v235; // [esp+68h] [ebp-5B0h] _DWORD *v236; // [esp+68h] [ebp-5B0h] int v237; // [esp+68h] [ebp-5B0h] int v238; // [esp+70h] [ebp-5A8h] _DWORD *v239; // [esp+70h] [ebp-5A8h] std::ostream::sentry *v240; // [esp+70h] [ebp-5A8h] int v241; // [esp+70h] [ebp-5A8h] int v242; // [esp+70h] [ebp-5A8h] _DWORD *v243; // [esp+70h] [ebp-5A8h] int v244; // [esp+70h] [ebp-5A8h] std::ostream::sentry *v245; // [esp+74h] [ebp-5A4h] int v246; // [esp+74h] [ebp-5A4h] std::ostream::sentry *v247; // [esp+74h] [ebp-5A4h] std::ostream::sentry *v248; // [esp+74h] [ebp-5A4h] std::ostream::sentry *v249; // [esp+74h] [ebp-5A4h] std::ostream::sentry *v250; // [esp+74h] [ebp-5A4h] std::ostream::sentry *v251; // [esp+74h] [ebp-5A4h] std::ostream::sentry *v252; // [esp+74h] [ebp-5A4h] std::ostream::sentry *v253; // [esp+74h] [ebp-5A4h] WXML::NameAllocator *v254; // [esp+7Ch] [ebp-59Ch] int *v255; // [esp+7Ch] [ebp-59Ch] WXML::NameAllocator *v256; // [esp+7Ch] [ebp-59Ch] WXML::NameAllocator *jj; // [esp+7Ch] [ebp-59Ch] std::ostream::sentry *i; // [esp+80h] [ebp-598h] std::ostream::sentry *v259; // [esp+80h] [ebp-598h] std::ostream::sentry *v260; // [esp+80h] [ebp-598h] std::ostream::sentry *v261; // [esp+80h] [ebp-598h] std::ostream::sentry *v262; // [esp+80h] [ebp-598h] std::ostream::sentry *v263; // [esp+80h] [ebp-598h] std::ostream::sentry *v264; // [esp+80h] [ebp-598h] bool v265; // [esp+84h] [ebp-594h] std::ostream::sentry *v266; // [esp+84h] [ebp-594h] bool v267; // [esp+84h] [ebp-594h] std::ostream::sentry *v268; // [esp+84h] [ebp-594h] std::ostream::sentry *v269; // [esp+84h] [ebp-594h] std::ostream::sentry *v270; // [esp+84h] [ebp-594h] std::ostream::sentry *k; // [esp+84h] [ebp-594h] std::ostream::sentry *v272; // [esp+84h] [ebp-594h] std::ostream::sentry *v273; // [esp+84h] [ebp-594h] std::ostream::sentry *v274; // [esp+84h] [ebp-594h] std::ostream::sentry *v275; // [esp+84h] [ebp-594h] int *v276; // [esp+84h] [ebp-594h] struct _Unwind_Exception *lpuexcptb; // [esp+88h] [ebp-590h] int *lpuexcpt; // [esp+88h] [ebp-590h] struct _Unwind_Exception *lpuexcpta; // [esp+88h] [ebp-590h] int v280; // [esp+C8h] [ebp-550h] BYREF std::ostream::sentry *v281; // [esp+CCh] [ebp-54Ch] volatile signed __int32 *v282; // [esp+D0h] [ebp-548h] BYREF int **v283; // [esp+D4h] [ebp-544h] BYREF int **v284; // [esp+D8h] [ebp-540h] int v285; // [esp+DCh] [ebp-53Ch] int v286; // [esp+E0h] [ebp-538h] BYREF _DWORD v287[2]; // [esp+E4h] [ebp-534h] BYREF std::ostream::sentry *v288; // [esp+ECh] [ebp-52Ch] _DWORD v289[5]; // [esp+FCh] [ebp-51Ch] BYREF int v290; // [esp+110h] [ebp-508h] BYREF _DWORD v291[5]; // [esp+114h] [ebp-504h] BYREF int v292; // [esp+128h] [ebp-4F0h] BYREF _DWORD v293[5]; // [esp+12Ch] [ebp-4ECh] BYREF char *v294; // [esp+140h] [ebp-4D8h] BYREF int v295; // [esp+144h] [ebp-4D4h] char v296; // [esp+148h] [ebp-4D0h] BYREF int v297[2]; // [esp+158h] [ebp-4C0h] BYREF char v298; // [esp+160h] [ebp-4B8h] BYREF void *v299[2]; // [esp+170h] [ebp-4A8h] BYREF char v300; // [esp+178h] [ebp-4A0h] BYREF int v301; // [esp+188h] [ebp-490h] BYREF int v302; // [esp+18Ch] [ebp-48Ch] char v303; // [esp+190h] [ebp-488h] BYREF void *v304[2]; // [esp+1A0h] [ebp-478h] BYREF char v305; // [esp+1A8h] [ebp-470h] BYREF int v306; // [esp+1B8h] [ebp-460h] BYREF int v307; // [esp+1BCh] [ebp-45Ch] char v308; // [esp+1C0h] [ebp-458h] BYREF int v309; // [esp+1D0h] [ebp-448h] BYREF int v310[5]; // [esp+1D4h] [ebp-444h] BYREF int v311; // [esp+1E8h] [ebp-430h] BYREF int v312; // [esp+1ECh] [ebp-42Ch] BYREF char v313; // [esp+1F0h] [ebp-428h] BYREF int v314[2]; // [esp+200h] [ebp-418h] BYREF char v315; // [esp+208h] [ebp-410h] BYREF int v316[6]; // [esp+218h] [ebp-400h] BYREF char v317[8]; // [esp+230h] [ebp-3E8h] BYREF char v318[4]; // [esp+238h] [ebp-3E0h] BYREF char v319[196]; // [esp+23Ch] [ebp-3DCh] BYREF int v320[2]; // [esp+300h] [ebp-318h] BYREF char v321[4]; // [esp+308h] [ebp-310h] BYREF char v322[196]; // [esp+30Ch] [ebp-30Ch] BYREF int v323; // [esp+3D0h] [ebp-248h] BYREF volatile signed __int32 *v324; // [esp+3D4h] [ebp-244h] BYREF char v325[4]; // [esp+3D8h] [ebp-240h] BYREF char v326[196]; // [esp+3DCh] [ebp-23Ch] BYREF int v327[2]; // [esp+4A0h] [ebp-178h] BYREF char v328[4]; // [esp+4A8h] [ebp-170h] BYREF char v329[364]; // [esp+4ACh] [ebp-16Ch] BYREF std::basic_stringstream,std::allocator>::basic_stringstream((int)v317); std::_Rb_tree_header::_Rb_tree_header(v287); std::_Rb_tree_header::_Rb_tree_header(v289); lpuexcptb = (struct _Unwind_Exception *)operator new(0x24u); std::_Rb_tree_header::_Rb_tree_header((_DWORD *)lpuexcptb + 1); *((_DWORD *)lpuexcptb + 6) = 0; *((_DWORD *)lpuexcptb + 7) = 0; *((_DWORD *)lpuexcptb + 8) = 0; zcc::shared_ptr::shared_ptr(lpuexcptb); std::_Rb_tree_header::_Rb_tree_header(v291); std::_Rb_tree_header::_Rb_tree_header(v293); for ( i = (std::ostream::sentry *)a2[3]; i != (std::ostream::sentry *)(a2 + 1); i = (std::ostream::sentry *)std::_Rb_tree_increment((int)i) ) { lpuexcpt = (int *)((char *)i + 16); std::string::substr(&v306, (_DWORD *)i + 4, *((_DWORD *)i + 5) - 5, 0xFFFFFFFF); v265 = std::operator==((int)&v306, ".wxml"); std::string::_M_dispose((void **)&v306); if ( v265 ) { v283 = 0; v284 = 0; v285 = 0; WXML::DOMLib::Parser::Parser(v228); v266 = (std::ostream::sentry *)WXML::DOMLib::Parser::Parse( (int)v327, (WXML::DOMLib::Parser *)a1, *((char **)i + 10), (int)a3, (int)lpuexcpt, &v283); if ( v266 ) { LABEL_25: WXML::DOMLib::Parser::~Parser((int)v327); std::vector::~vector((void **)&v283); goto LABEL_118; } WXML::DOMLib::Parser::GetParsed(&v323, (WXML::DOMLib::Parser *)v327); v20 = std::map>::operator[](&v286, (int)lpuexcpt); *(_DWORD *)v20 = v323; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v20 + 1, v324); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v324); v295 = 0; v294 = &v296; v296 = 0; v297[0] = (int)&v298; v297[1] = 0; v298 = 0; std::basic_stringstream,std::allocator>::basic_stringstream((int)v320); if ( v283 != v284 ) { v245 = std::operator<<>((std::ostream::sentry *)v321, "f_['"); WXML::Rewrite::ToStringCode((int)&v323, lpuexcpt); v21 = std::operator<<(v245, &v323); v22 = std::operator<<>(v21, "']={};"); a1 = (int *)a10; std::operator<<>(v22, a10); std::string::_M_dispose((void **)&v323); } while ( (unsigned int)v266 < -1227133513 * (((char *)v284 - (char *)v283) >> 4) ) { v299[1] = 0; v304[0] = &v305; a1 = a3; v299[0] = &v300; v301 = (int)&v303; v306 = (int)&v308; v300 = 0; v302 = 0; v303 = 0; v304[1] = 0; v305 = 0; v307 = 0; v308 = 0; v246 = WXML::Compiler::DealWxsTag( (int)lpuexcpt, &v283[28 * (_DWORD)v266], v299, (int)&v301, (int)v304, &v280, a3); if ( v246 ) goto LABEL_21; v23 = std::operator<<((std::ostream::sentry *)v321, a20); v247 = std::operator<<>(v23, "['"); WXML::Rewrite::ToStringCode((int)v316, lpuexcpt); v24 = std::operator<<(v247, v316); v248 = std::operator<<>(v24, "']['"); WXML::Rewrite::ToStringCode((int)&v323, (int *)v299); v25 = std::operator<<(v248, &v323); std::operator<<>(v25, "'] ="); std::string::_M_dispose((void **)&v323); std::string::_M_dispose((void **)v316); if ( v302 ) { MMBizWxaAppComm::PathCombine(lpuexcpt, &v301, (unsigned int *)&v306); if ( *(_BYTE *)v306 == 47 ) { std::operator+((int)&v309, 46, (int)&v306); std::string::operator=((unsigned __int8 **)&v306, (int)&v309); std::string::_M_dispose((void **)&v309); } if ( a2 + 1 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a2, (int)&v306) ) { v26 = std::operator==((int)a8, "$gwx"); if ( (a9 & 0x20) != 0 || v26 ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v323); v27 = std::operator<<((std::ostream::sentry *)v325, lpuexcpt); std::operator<<>(v27, ":"); v28 = (std::ostream::sentry *)std::ostream::operator<<(v280); std::operator<<>(v28, ":"); v29 = (std::ostream::sentry *)std::ostream::operator<<(v283[28 * (_DWORD)v266 + 3]); v30 = std::operator<<>(v29, ":"); v31 = std::operator<<(v30, &v301); v32 = std::operator<<>(v31, " not found from "); std::operator<<(v32, lpuexcpt); std::stringbuf::str((int)&v311, (int)v326); std::string::operator=((unsigned __int8 **)a3, (int)&v311); std::string::_M_dispose((void **)&v311); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v323); v246 = 1; LABEL_21: std::string::_M_dispose((void **)&v306); std::string::_M_dispose(v304); std::string::_M_dispose((void **)&v301); std::string::_M_dispose(v299); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v320); std::string::_M_dispose((void **)v297); std::string::_M_dispose((void **)&v294); v266 = (std::ostream::sentry *)v246; goto LABEL_25; } } v249 = std::operator<<>((std::ostream::sentry *)v321, "f_['"); WXML::Rewrite::ToStringCode((int)&v323, &v306); v33 = std::operator<<(v249, &v323); std::operator<<>(v33, "'] || "); std::string::_M_dispose((void **)&v323); v250 = std::operator<<>((std::ostream::sentry *)v321, "nv_require(\""); std::operator+((int)v316, "p_", (int)&v306); WXML::Rewrite::ToStringCode((int)&v323, v316); v34 = std::operator<<(v250, &v323); v35 = std::operator<<>(v34, "\");"); std::operator<<>(v35, a10); std::string::_M_dispose((void **)&v323); std::string::_M_dispose((void **)v316); v36 = std::operator<<((std::ostream::sentry *)v321, a20); v251 = std::operator<<>(v36, "['"); WXML::Rewrite::ToStringCode((int)v316, lpuexcpt); v37 = std::operator<<(v251, v316); v252 = std::operator<<>(v37, "']['"); WXML::Rewrite::ToStringCode((int)&v323, (int *)v299); v38 = std::operator<<(v252, &v323); v39 = std::operator<<>(v38, "']();"); std::operator<<>(v39, a10); std::string::_M_dispose((void **)&v323); v40 = v316; } else { std::operator+((int)v314, "m_", (int)lpuexcpt); v41 = std::string::append(v314, ":"); std::string::basic_string(v316, v41); v42 = std::string::append(v316, (int)v299); std::string::basic_string(&v323, v42); a1 = &v323; WXML::Compiler::GetFuncId((void **)&v309, &v292, (int)&v323); std::string::_M_dispose((void **)&v323); std::string::_M_dispose((void **)v316); std::string::_M_dispose((void **)v314); v246 = night::compile_ns((int)lpuexcpt, (int)&v309, (int)v304, v280, (unsigned int *)v297, 0); if ( v246 ) { std::string::_M_assign((int)a3, (int)v297); std::string::_M_dispose((void **)&v309); goto LABEL_21; } v253 = std::operator<<>((std::ostream::sentry *)v321, "nv_require(\""); std::operator+((int)&v311, "m_", (int)lpuexcpt); v43 = std::string::append(&v311, ":"); std::string::basic_string(v314, v43); v44 = std::string::append(v314, (int)v299); std::string::basic_string(v316, v44); WXML::Rewrite::ToStringCode((int)&v323, v316); v45 = std::operator<<(v253, &v323); v46 = std::operator<<>(v45, "\");"); std::operator<<>(v46, a10); std::string::_M_dispose((void **)&v323); std::string::_M_dispose((void **)v316); std::string::_M_dispose((void **)v314); std::string::_M_dispose((void **)&v311); v47 = std::operator<<((std::ostream::sentry *)v321, v297); std::operator<<>(v47, a10); v40 = &v309; } std::string::_M_dispose((void **)v40); std::string::_M_dispose((void **)&v306); std::string::_M_dispose(v304); std::string::_M_dispose((void **)&v301); std::string::_M_dispose(v299); v266 = (std::ostream::sentry *)((char *)v266 + 1); } std::stringbuf::str((int)v314, (int)v322); std::string::operator=((unsigned __int8 **)&v294, (int)v314); std::string::_M_dispose((void **)v314); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v320); std::string::_M_dispose((void **)v297); if ( v295 ) { v48 = std::map::operator[](&v290, (int)lpuexcpt); std::string::_M_assign((int)v48, (int)&v294); } std::string::_M_dispose((void **)&v294); WXML::DOMLib::Parser::~Parser((int)v327); std::vector::~vector((void **)&v283); } else { std::string::substr(v316, lpuexcpt, *((_DWORD *)i + 5) - 4, 0xFFFFFFFF); v267 = std::operator==((int)v316, ".wxs"); std::string::_M_dispose((void **)v316); if ( v267 ) { v311 = (int)&v313; v312 = 0; v313 = 0; std::operator+((int)v327, "p_", (int)lpuexcpt); a1 = v327; WXML::Compiler::GetFuncId((void **)v314, &v292, (int)v327); std::string::_M_dispose((void **)v327); v266 = (std::ostream::sentry *)night::compile_ns( (int)lpuexcpt, (int)v314, (int)i + 40, 1, (unsigned int *)&v311, 0); if ( v266 ) { std::string::_M_assign((int)a3, (int)&v311); std::string::_M_dispose((void **)v314); std::string::_M_dispose((void **)&v311); goto LABEL_118; } std::basic_stringstream,std::allocator>::basic_stringstream((int)v327); v268 = std::operator<<>((std::ostream::sentry *)v328, "f_['"); WXML::Rewrite::ToStringCode((int)v316, lpuexcpt); v49 = std::operator<<(v268, v316); v50 = std::operator<<>(v49, "'] = nv_require("); v269 = std::operator<<>(v50, 34); std::operator+((int)v320, "p_", (int)lpuexcpt); WXML::Rewrite::ToStringCode((int)&v323, v320); v51 = std::operator<<(v269, &v323); v52 = std::operator<<>(v51, 34); v53 = std::operator<<>(v52, ");"); std::operator<<>(v53, a10); std::string::_M_dispose((void **)&v323); std::string::_M_dispose((void **)v320); std::string::_M_dispose((void **)v316); v54 = std::operator<<((std::ostream::sentry *)v328, &v311); std::operator<<>(v54, a10); std::stringbuf::str((int)&v323, (int)v329); v55 = std::map::operator[](&v290, (int)lpuexcpt); std::string::operator=((unsigned __int8 **)v55, (int)&v323); std::string::_M_dispose((void **)&v323); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v327); std::string::_M_dispose((void **)v314); std::string::_M_dispose((void **)&v311); } } } if ( a7 ) std::string::basic_string((void **)&v323, "global"); else std::string::basic_string((void **)&v323, "window"); WXML::Compiler::GetVersionInfo((int)v327, &v323); v56 = std::operator<<((std::ostream::sentry *)v318, v327); std::ostream::operator<<(v56, (int (__cdecl *)(void *))std::endl>); std::string::_M_dispose((void **)v327); std::string::_M_dispose((void **)&v323); WXML::NameAllocator::NameAllocator(&v323, a17, a18); v57 = std::operator<<>((std::ostream::sentry *)v318, "var $gwxc"); std::operator<<>(v57, a10); v58 = std::operator<<>((std::ostream::sentry *)v318, "var $gaic={}"); std::operator<<>(v58, a10); v59 = std::operator<<((std::ostream::sentry *)v318, a8); v60 = std::operator<<>(v59, "=function(path,global){"); std::operator<<>(v60, a10); std::operator<<>((std::ostream::sentry *)v318, "if(typeof global === 'undefined') global={};"); std::operator<<>((std::ostream::sentry *)v318, "if(typeof __WXML_GLOBAL__ === 'undefined') {"); v61 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__={};"); std::operator<<>(v61, a10); if ( (a9 & 0x80) != 0 ) { std::string::basic_string((void **)v327, "life_cycle_callback_content"); v259 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a6, (int)v327); std::string::_M_dispose((void **)v327); if ( v259 != (std::ostream::sentry *)(a6 + 1) ) { std::string::basic_string((void **)v327, "life_cycle_callback_content"); v62 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a6, (int)v327); std::operator<<((std::ostream::sentry *)v318, v62 + 10); std::string::_M_dispose((void **)v327); } } std::operator<<>((std::ostream::sentry *)v318, "}"); v63 = std::operator<<>( (std::ostream::sentry *)v318, "__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};"); std::operator<<>(v63, a10); if ( !std::operator==((int)a8, "$gwx") && (a9 & 0x60) == 0 ) { v64 = std::operator<<>((std::ostream::sentry *)v318, "$gwx('init', global);"); std::operator<<>(v64, a10); } v65 = std::operator<<>( (std::ostream::sentry *)v318, "function _(a,b){if(typeof(b)!='undefined')a.children.push(b);}"); std::operator<<>(v65, a10); v66 = std::operator<<>( (std::ostream::sentry *)v318, "function _v(k){if(typeof(k)!='undefined')return {tag:'virtual','wxKey':k,children:[]};return {tag:'virtual',children:[]};}"); std::operator<<>(v66, a10); v67 = std::operator<<>( (std::ostream::sentry *)v318, "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<<>(v67, a10); v68 = std::operator<<>( (std::ostream::sentry *)v318, "function _p(a,b){b&&a.properities.push(b);}"); std::operator<<>(v68, a10); v69 = std::operator<<>( (std::ostream::sentry *)v318, "function _s(scope,env,key){return typeof(scope[key])!='undefined'?scope[key]:env[key]}"); std::operator<<>(v69, a10); v70 = std::operator<<>((std::ostream::sentry *)v318, "function _wp(m){console.warn(\"WXMLRT_"); v71 = std::operator<<(v70, a8); v72 = std::operator<<>(v71, ":\"+m)}"); std::operator<<>(v72, a10); v73 = std::operator<<>( (std::ostream::sentry *)v318, "function _wl(tname,prefix){_wp(prefix+':-1:-1:-1: Template `' + tname + '` is being called recursively, will be stop.')}"); std::operator<<>(v73, a10); v74 = std::operator<<>((std::ostream::sentry *)v318, aGwnConsoleWarn); std::operator<<>(v74, a10); v75 = std::operator<<>( (std::ostream::sentry *)v318, "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<<>(v75, a10); v76 = std::operator<<>( (std::ostream::sentry *)v318, "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<<>(v76, a10); v77 = std::operator<<>( (std::ostream::sentry *)v318, "\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>(v77, a10); v78 = std::operator<<>((std::ostream::sentry *)v318, aVarNfInitFunct); std::operator<<>(v78, a10); v79 = std::operator<<>( (std::ostream::sentry *)v318, "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<<>(v79, a10); if ( !a7 ) { v80 = std::operator<<>((std::ostream::sentry *)v318, "function _gv( )"); std::operator<<>(v80, a10); v81 = std::operator<<>( (std::ostream::sentry *)v318, "{if( typeof( window.__webview_engine_version__) == 'undefined' ) return 0.0;"); std::operator<<>(v81, a10); v82 = std::operator<<>( (std::ostream::sentry *)v318, "return window.__webview_engine_version__;}"); std::operator<<>(v82, a10); } v83 = std::operator<<>( (std::ostream::sentry *)v318, "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+': Path" " `'+p+'` not found from `'+me+'`.')}}"); std::operator<<>(v83, a10); v84 = std::operator<<>( (std::ostream::sentry *)v318, "function _grp(p,e,me){if(p[0]!='/'){var mepart=me.split('/');mepart.pop();var ppart=p.split('/');for(var i=0;i" ">(v84, a10); std::operator<<>( (std::ostream::sentry *)v318, "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 *)v318, "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 *)v318, "var ii=_gapi(e,p);for(var x=0;x>( (std::ostream::sentry *)v318, "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]}}}"); v85 = std::operator<<>((std::ostream::sentry *)v318, "}"); std::operator<<>(v85, a10); std::operator<<>( (std::ostream::sentry *)v318, "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 *)v318, "var a=q[h++];for(var i=0;i>( (std::ostream::sentry *)v318, "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 *)v318, "var ni=e[a].ti[i];var nm=_grp(ni,e,a);if(nm&&!put[nm]){put[nm]=true;ret.push(nm);}}"); v86 = std::operator<<>((std::ostream::sentry *)v318, "}$gaic[p]=ret;return ret;}"); std::operator<<>(v86, a10); std::operator<<>((std::ostream::sentry *)v318, "var $ixc={};"); v87 = std::operator<<>( (std::ostream::sentry *)v318, "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<<>(v87, a10); std::operator<<>( (std::ostream::sentry *)v318, "function _w(tn,f,line,c){_wp(f+':template:'+line+':'+c+': Template `'+tn+'` not found.');}"); v88 = std::operator<<>( (std::ostream::sentry *)v318, "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>(v88, a10); v89 = std::operator<<>( (std::ostream::sentry *)v318, "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<<>(v89, a10); v90 = std::operator<<>((std::ostream::sentry *)v318, "var "); v91 = std::operator<<(v90, a14); v92 = std::operator<<>(v91, "={}"); std::operator<<>(v92, a10); v93 = std::operator<<>( (std::ostream::sentry *)v318, "if(typeof(global.entrys)==='undefined')global.entrys={};"); v94 = std::operator<<(v93, a14); v95 = std::operator<<>(v94, "=global.entrys;"); std::operator<<>(v95, a10); v96 = std::operator<<>((std::ostream::sentry *)v318, "var "); v97 = std::operator<<(v96, a15); v98 = std::operator<<>(v97, "={}"); std::operator<<>(v98, a10); v99 = std::operator<<>( (std::ostream::sentry *)v318, "if(typeof(global.defines)==='undefined')global.defines={};"); v100 = std::operator<<(v99, a15); v101 = std::operator<<>(v100, "=global.defines;"); std::operator<<>(v101, a10); v102 = std::operator<<>((std::ostream::sentry *)v318, "var "); v103 = std::operator<<(v102, a20); v104 = std::operator<<>(v103, "={}"); std::operator<<>(v104, a10); v105 = std::operator<<>( (std::ostream::sentry *)v318, "if(typeof(global.modules)==='undefined')global.modules={};"); v106 = std::operator<<(v105, a20); v107 = std::operator<<>(v106, "=global.modules || {};"); std::operator<<>(v107, a10); v108 = std::operator<<>((std::ostream::sentry *)v318, "var "); v109 = std::operator<<(v108, a16); v110 = std::operator<<>(v109, "={}"); std::operator<<>(v110, a10); if ( (a9 & 2) != 0 ) { v111 = std::operator<<>((std::ostream::sentry *)v318, "var cs"); std::operator<<>(v111, a10); } std::_Rb_tree_header::_Rb_tree_header(v310); for ( j = v288; ; j = (std::ostream::sentry *)std::_Rb_tree_increment((int)v270) ) { v270 = j; if ( j == (std::ostream::sentry *)v287 ) break; WXML::DOMLib::WXMLDom::RewriteTree(*((_DWORD *)j + 10)); v260 = (std::ostream::sentry *)*((_DWORD *)v270 + 10); std::string::basic_string((void **)v327, (char *)off_550B3F); v113 = std::map>::operator[](a5, v327); WXML::DOMLib::WXMLDom::MarkIfHasDescendant((int)v260, v113); std::string::_M_dispose((void **)v327); if ( a7 ) { v261 = (std::ostream::sentry *)*((_DWORD *)v270 + 10); std::string::basic_string((void **)v327, (char *)off_550B3F); v114 = std::map>::operator[](a5, v327); WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(v261, v114); std::string::_M_dispose((void **)v327); } } v115 = std::operator<<>( (std::ostream::sentry *)v318, "__WXML_GLOBAL__.ops_cached = __WXML_GLOBAL__.ops_cached || {}"); std::operator<<>(v115, a10); v116 = std::operator<<>( (std::ostream::sentry *)v318, "__WXML_GLOBAL__.ops_set = __WXML_GLOBAL__.ops_set || {};"); std::operator<<>(v116, a10); v117 = std::operator<<>( (std::ostream::sentry *)v318, "__WXML_GLOBAL__.ops_init = __WXML_GLOBAL__.ops_init || {};"); std::operator<<>(v117, a10); v118 = std::operator<<>((std::ostream::sentry *)v318, "var z=__WXML_GLOBAL__.ops_set."); v119 = std::operator<<(v118, a8); v120 = std::operator<<>(v119, " || [];"); std::operator<<>(v120, a10); if ( (a9 & 4) != 0 ) { v121 = std::operator<<>( (std::ostream::sentry *)v318, "__WXML_GLOBAL__.debuginfo_set = __WXML_GLOBAL__.debuginfo_set || {};"); std::operator<<>(v121, a10); v122 = std::operator<<>( (std::ostream::sentry *)v318, "var debugInfo=__WXML_GLOBAL__.debuginfo_set."); v123 = std::operator<<(v122, a8); v124 = std::operator<<>(v123, " || [];"); std::operator<<>(v124, a10); } v254 = 0; for ( k = v288; k != (std::ostream::sentry *)v287; k = (std::ostream::sentry *)std::_Rb_tree_increment((int)k) ) { std::_Rb_tree_header::_Rb_tree_header(&v312); v254 = (WXML::NameAllocator *)((char *)v254 + 1); v307 = 0; v306 = 0; std::basic_stringstream,std::allocator>::basic_stringstream((int)v327); v125 = std::operator<<((std::ostream::sentry *)v328, a8); std::operator<<>(v125, "_"); std::ostream::operator<<(v254); std::stringbuf::str((int)v314, (int)v329); std::string::basic_string((void **)v316, "gz"); std::string::append(v316, (int)v314); v126 = std::operator<<>((std::ostream::sentry *)v318, "function "); v127 = std::operator<<(v126, v316); v128 = std::operator<<>(v127, "(){"); std::operator<<>(v128, a10); v129 = std::operator<<>((std::ostream::sentry *)v318, "if( __WXML_GLOBAL__.ops_cached."); v130 = std::operator<<(v129, v314); std::operator<<>(v130, ")"); v131 = std::operator<<>((std::ostream::sentry *)v318, "return __WXML_GLOBAL__.ops_cached."); v132 = std::operator<<(v131, v314); std::operator<<>(v132, a10); v133 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__.ops_cached."); v134 = std::operator<<(v133, v314); v135 = std::operator<<>(v134, "=[];"); std::operator<<>(v135, a10); std::operator<<>((std::ostream::sentry *)v318, "(function(z){var a=11;"); if ( (a9 & 4) != 0 ) v136 = std::operator<<>( (std::ostream::sentry *)v318, "function Z(ops,debugLine){z.push(['11182016',ops,debugLine])}"); else v136 = std::operator<<>((std::ostream::sentry *)v318, "function Z(ops){z.push(ops)}"); std::operator<<>(v136, a10); WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord( *((_DWORD **)k + 10), (int *)k + 4, (unsigned int *)a3, (WXML::EXPRLib::Parser *)v317, &v311, &v306, (a9 & 4) != 0, (int)a6); v137 = std::operator<<>((std::ostream::sentry *)v318, "})(__WXML_GLOBAL__.ops_cached."); v138 = std::operator<<(v137, v314); std::operator<<>(v138, ");"); v139 = std::operator<<>((std::ostream::sentry *)v318, "return __WXML_GLOBAL__.ops_cached."); v140 = std::operator<<(v139, v314); std::operator<<>(v140, a10); v141 = std::operator<<>((std::ostream::sentry *)v318, "}"); std::operator<<>(v141, a10); std::string::basic_string((void **)v320, "get_page_z_name"); v142 = std::map::operator[]((_DWORD *)(*((_DWORD *)k + 10) + 272), v320); std::string::_M_assign((int)v142, (int)v316); std::string::_M_dispose((void **)v320); std::string::_M_dispose((void **)v316); std::string::_M_dispose((void **)v314); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v327); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v311); } v143 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__.ops_set."); v144 = std::operator<<(v143, a8); v145 = std::operator<<>(v144, "=z;"); std::operator<<>(v145, a10); v146 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__.ops_init."); v147 = std::operator<<(v146, a8); v148 = std::operator<<>(v147, "=true;"); std::operator<<>(v148, a10); if ( (a9 & 4) != 0 ) { v149 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__.debuginfo_set."); v150 = std::operator<<(v149, a8); v151 = std::operator<<>(v150, "=debugInfo;"); std::operator<<>(v151, a10); } std::operator<<>((std::ostream::sentry *)v318, "var nv_require=function(){var nnm={"); for ( m = (std::ostream::sentry *)v293[2]; ; m = (std::ostream::sentry *)std::_Rb_tree_increment((int)v272) ) { v272 = m; if ( m == (std::ostream::sentry *)v293 ) break; v262 = std::operator<<>((std::ostream::sentry *)v318, 34); WXML::Rewrite::ToStringCode((int)v327, (int *)v272 + 4); v153 = std::operator<<(v262, v327); v154 = std::operator<<>(v153, 34); std::operator<<>(v154, ":np_"); v155 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v272 + 10)); std::operator<<>(v155, ","); std::string::_M_dispose((void **)v327); } std::operator<<>((std::ostream::sentry *)v318, "};var nom={};return function(n){"); std::operator<<>( (std::ostream::sentry *)v318, "if(n[0]==='p'&&n[1]==='_'&&f_[n.slice(2)])return f_[n.slice(2)];"); std::operator<<>( (std::ostream::sentry *)v318, "return function(){if(!nnm[n]) return undefined;"); std::operator<<>( (std::ostream::sentry *)v318, "try{if(!nom[n])nom[n]=nnm[n]();return nom[n];}"); std::operator<<>((std::ostream::sentry *)v318, "catch(e){"); std::operator<<>((std::ostream::sentry *)v318, "e.message=e.message.replace(/nv_/g,'');"); std::operator<<>( (std::ostream::sentry *)v318, "var tmp = e.stack.substring(0,e.stack.lastIndexOf(n));"); std::operator<<>( (std::ostream::sentry *)v318, "e.stack = tmp.substring(0,tmp.lastIndexOf('\\n'));"); std::operator<<>((std::ostream::sentry *)v318, "e.stack = e.stack.replace(/\\snv_/g,' ');"); std::operator<<>((std::ostream::sentry *)v318, "e.stack = $gstack(e.stack);"); v156 = std::operator<<>( (std::ostream::sentry *)v318, "e.stack += '\\n at ' + n.substring(2);console.error(e);}"); std::operator<<>(v156, a10); v157 = std::operator<<>((std::ostream::sentry *)v318, "}}}()"); std::operator<<>(v157, a10); for ( n = (int *)v291[2]; ; n = (int *)std::_Rb_tree_increment((int)v273) ) { v273 = (std::ostream::sentry *)n; if ( n == v291 ) break; v159 = std::operator<<((std::ostream::sentry *)v318, n + 10); std::operator<<>(v159, a10); } for ( ii = v288; ; ii = (std::ostream::sentry *)std::_Rb_tree_increment((int)v274) ) { v274 = ii; v263 = v281; if ( ii == (std::ostream::sentry *)v287 ) break; std::string::basic_string((char *)v327, (int)ii + 16); WXML::DOMLib::StrCache::Insert(v263, (int)v327); std::string::_M_dispose((void **)v327); v161 = *((_DWORD *)v274 + 10); *(_DWORD *)(v161 + 248) = v281; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(v161 + 252), v282); WXML::DOMLib::WXMLDom::RecordAllPath(*((_DWORD **)v274 + 10)); } WXML::DOMLib::StrCache::RenderPathDefine(v281, (int)v317); v238 = 0; v264 = v288; v234 = (a9 & 2) != 0; while ( v264 != (std::ostream::sentry *)v287 ) { v162 = std::operator<<((std::ostream::sentry *)v318, a15); std::operator<<>(v162, (char *)off_55101C); v275 = v281; v255 = (int *)((char *)v264 + 16); std::string::basic_string((char *)v327, (int)v264 + 16); StrID = WXML::DOMLib::StrCache::GetStrID(v275, (int)v327); std::ostream::operator<<(StrID); std::string::_M_dispose((void **)v327); v164 = std::operator<<>((std::ostream::sentry *)v318, "]]={}"); std::operator<<>(v164, a10); std::string::basic_string((void **)v327, "get_page_z_name"); v165 = std::map::operator[]((_DWORD *)(*((_DWORD *)v264 + 10) + 272), v327); v266 = WXML::Compiler::RenderDefine( (unsigned int **)v264 + 10, (std::ostream::sentry *)((char *)v264 + 16), &v309, (int)a3, (int)v317, (int)a6, v234, a9, a10, a11, a12, a13, (int)a8, a14, a15, a16, a17, a18, a19, v165); std::string::_M_dispose((void **)v327); if ( v266 ) goto LABEL_117; std::basic_stringstream,std::allocator>::basic_stringstream((int)v327); v314[0] = (int)&v315; v314[1] = 0; v315 = 0; std::operator<<>((std::ostream::sentry *)v328, "m"); v231 = v238 + 1; std::ostream::operator<<(v238); std::stringbuf::str((int)v320, (int)v329); std::string::operator=((unsigned __int8 **)v314, (int)v320); std::string::_M_dispose((void **)v320); v239 = (_DWORD *)*((_DWORD *)v264 + 10); std::string::basic_string((void **)v316, "get_page_z_name"); v276 = std::map::operator[]((_DWORD *)(*((_DWORD *)v264 + 10) + 272), v316); std::string::basic_string((void **)v320, "r"); v266 = (std::ostream::sentry *)WXML::DOMLib::WXMLDom::RenderMeAsFunction( v239, v255, a14, (int)a3, v314, (int)v317, &v323, a11, a12, a13, v320, a15, a10, a16, 0, v234, a9, v276); std::string::_M_dispose((void **)v320); std::string::_M_dispose((void **)v316); if ( v266 ) { std::string::_M_dispose((void **)v314); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v327); goto LABEL_117; } v166 = std::operator<<((std::ostream::sentry *)v318, a14); std::operator<<>(v166, (char *)off_55101C); v240 = v281; std::string::basic_string((char *)v320, (int)v255); v167 = WXML::DOMLib::StrCache::GetStrID(v240, (int)v320); std::ostream::operator<<(v167); std::string::_M_dispose((void **)v320); v168 = std::operator<<>((std::ostream::sentry *)v318, "]]={f:"); v169 = std::operator<<(v168, v314); std::operator<<>(v169, ",j:[],i:[],ti:["); v256 = 0; v241 = 0; while ( 1 ) { v170 = *((_DWORD *)v264 + 10); v171 = *(_DWORD *)(v170 + 72); if ( (unsigned int)v256 >= (*(_DWORD *)(v170 + 76) - v171) >> 3 ) break; if ( std::operator==(*(_DWORD *)(v171 + 8 * (_DWORD)v256), "import") ) { v235 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v264 + 10) + 72) + 8 * (_DWORD)v256); v229 = (_DWORD *)(v235 + 52); std::string::basic_string((void **)v320, (char *)off_547B7D); v236 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v235 + 48), (int)v320); std::string::_M_dispose((void **)v320); if ( v236 != v229 ) { if ( v241 ) std::operator<<>((std::ostream::sentry *)v318, ","); std::operator<<>((std::ostream::sentry *)v318, "x["); v230 = v281; v237 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v264 + 10) + 72) + 8 * (_DWORD)v256); std::string::basic_string((void **)v316, (char *)off_547B7D); v172 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v237 + 48), (int)v316); v173 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)(v172 + 10)); std::string::basic_string((char *)v320, v173); v174 = WXML::DOMLib::StrCache::GetStrID(v230, (int)v320); std::ostream::operator<<(v174); std::string::_M_dispose((void **)v320); std::string::_M_dispose((void **)v316); std::operator<<>((std::ostream::sentry *)v318, "]"); ++v241; } } v256 = (WXML::NameAllocator *)((char *)v256 + 1); } std::operator<<>((std::ostream::sentry *)v318, "],ic:["); for ( jj = 0; ; jj = (WXML::NameAllocator *)((char *)jj + 1) ) { v175 = *((_DWORD *)v264 + 10); v176 = *(_DWORD *)(v175 + 72); if ( (unsigned int)jj >= (*(_DWORD *)(v175 + 76) - v176) >> 3 ) break; if ( std::operator==(*(_DWORD *)(v176 + 8 * (_DWORD)jj), "include") ) { v242 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v264 + 10) + 72) + 8 * (_DWORD)jj); v232 = (_DWORD *)(v242 + 52); std::string::basic_string((void **)v320, (char *)off_547B7D); v243 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v242 + 48), (int)v320); std::string::_M_dispose((void **)v320); if ( v243 != v232 ) { if ( v266 ) std::operator<<>((std::ostream::sentry *)v318, ","); std::operator<<>((std::ostream::sentry *)v318, "x["); v233 = v281; v244 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v264 + 10) + 72) + 8 * (_DWORD)jj); std::string::basic_string((void **)v316, (char *)off_547B7D); v177 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v244 + 48), (int)v316); v178 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)(v177 + 10)); std::string::basic_string((char *)v320, v178); v179 = WXML::DOMLib::StrCache::GetStrID(v233, (int)v320); std::ostream::operator<<(v179); std::string::_M_dispose((void **)v320); std::string::_M_dispose((void **)v316); std::operator<<>((std::ostream::sentry *)v318, "]"); v266 = (std::ostream::sentry *)((char *)v266 + 1); } } } v180 = std::operator<<>((std::ostream::sentry *)v318, "]}"); std::operator<<>(v180, a10); std::string::_M_dispose((void **)v314); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v327); v264 = (std::ostream::sentry *)std::_Rb_tree_increment((int)v264); v238 = v231; } v181 = std::operator<<>((std::ostream::sentry *)v318, "if(path&&"); v182 = std::operator<<(v181, a14); v183 = std::operator<<>(v182, "[path]){"); std::operator<<>(v183, a10); if ( !a7 ) { v184 = std::operator<<>((std::ostream::sentry *)v318, "window.__wxml_comp_version__=0.02"); std::operator<<>(v184, a10); } v185 = std::operator<<>( (std::ostream::sentry *)v318, "return function(env,dd,global){$gwxc=0;var root={\"tag\":\"wx-page\"};root.children=[]"); std::operator<<>(v185, a10); v186 = std::operator<<>((std::ostream::sentry *)v318, "var main="); v187 = std::operator<<(v186, a14); v188 = std::operator<<>(v187, "[path].f"); std::operator<<>(v188, a10); if ( (a9 & 2) != 0 ) { v189 = std::operator<<>((std::ostream::sentry *)v318, "cs=[]"); std::operator<<>(v189, a10); } if ( (a9 & 0x10) != 0 ) { v190 = std::operator<<>( (std::ostream::sentry *)v318, "console.log(path+': benv:\\n'+JSON.stringify(env))"); std::operator<<>(v190, a10); } std::operator<<>((std::ostream::sentry *)v318, "if (typeof global===\"undefined\")global={};"); v191 = std::operator<<>((std::ostream::sentry *)v318, "global.f=$gdc("); v192 = std::operator<<(v191, a20); v193 = std::operator<<>(v192, "[path],\"\",1);"); std::operator<<>(v193, a10); if ( !a7 ) { v194 = std::operator<<>( (std::ostream::sentry *)v318, "if(typeof(window.__webview_engine_version__)!='undefined'&&window.__webview_engine_version__+1e-6>=0.02+1e-" "6&&window.__mergeData__)"); std::operator<<>(v194, a10); v195 = std::operator<<>((std::ostream::sentry *)v318, "{"); std::operator<<>(v195, a10); v196 = std::operator<<>((std::ostream::sentry *)v318, "env=window.__mergeData__(env,dd);"); std::operator<<>(v196, a10); v197 = std::operator<<>((std::ostream::sentry *)v318, "}"); std::operator<<>(v197, a10); } v198 = std::operator<<>((std::ostream::sentry *)v318, "try{"); std::operator<<>(v198, a10); if ( (a9 & 0x10) != 0 ) { v199 = std::operator<<>( (std::ostream::sentry *)v318, "console.log(path+': aenv:\\n'+JSON.stringify(env)+', '+JSON.stringify(dd))"); std::operator<<>(v199, a10); } if ( (a9 & 0x80) != 0 ) { v200 = std::operator<<>((std::ostream::sentry *)v318, "if(__WXML_GLOBAL__."); v201 = std::operator<<>(v200, "before_calculate"); std::operator<<>(v201, ")"); v202 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__."); v203 = std::operator<<>(v202, "before_calculate"); v204 = std::operator<<>(v203, "(path, env)"); std::operator<<>(v204, a10); } v205 = std::operator<<>((std::ostream::sentry *)v318, "main(env,{},root,global);"); std::operator<<>(v205, a10); if ( (a9 & 0x80) != 0 ) { v206 = std::operator<<>((std::ostream::sentry *)v318, "if(__WXML_GLOBAL__."); v207 = std::operator<<>(v206, "after_calculate"); std::operator<<>(v207, ")"); v208 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__."); v209 = std::operator<<>(v208, "after_calculate"); v210 = std::operator<<>(v209, "(path, root)"); std::operator<<>(v210, a10); } v211 = std::operator<<>((std::ostream::sentry *)v318, "_tsd(root)"); std::operator<<>(v211, a10); if ( !a7 ) { v212 = std::operator<<>( (std::ostream::sentry *)v318, "if(typeof(window.__webview_engine_version__)=='undefined'|| window.__webview_engine_version__+1e-6<0.01+1e-" "6){return _ev(root);}"); std::operator<<>(v212, a10); } v213 = std::operator<<>((std::ostream::sentry *)v318, "}catch(err){"); std::operator<<>(v213, a10); if ( (a9 & 2) != 0 ) { v214 = std::operator<<>((std::ostream::sentry *)v318, "console.log(cs, env);"); std::operator<<>(v214, a10); } v215 = std::operator<<>((std::ostream::sentry *)v318, "console.log(err)"); std::operator<<>(v215, a10); if ( (a9 & 2) != 0 ) { v216 = std::operator<<>((std::ostream::sentry *)v318, "throw err"); std::operator<<>(v216, a10); } v217 = std::operator<<>((std::ostream::sentry *)v318, "}"); std::operator<<>(v217, a10); if ( (a9 & 0x10) != 0 ) { v218 = std::operator<<>( (std::ostream::sentry *)v318, "console.log(path+': resp:\\n'+JSON.stringify(root))"); std::operator<<>(v218, a10); } v219 = std::operator<<>((std::ostream::sentry *)v318, "return root;"); std::operator<<>(v219, a10); v220 = std::operator<<>((std::ostream::sentry *)v318, "}"); std::operator<<>(v220, a10); v221 = std::operator<<>((std::ostream::sentry *)v318, "}"); std::operator<<>(v221, a10); v222 = std::operator<<>((std::ostream::sentry *)v318, "}"); std::operator<<>(v222, a10); if ( (a9 & 8) != 0 ) { for ( kk = v288; ; kk = (struct _Unwind_Exception *)std::_Rb_tree_increment((int)lpuexcpta) ) { lpuexcpta = kk; if ( kk == (struct _Unwind_Exception *)v287 ) break; v224 = std::operator<<>((std::ostream::sentry *)v318, "//"); v225 = std::operator<<(v224, (int *)lpuexcpta + 4); v226 = std::operator<<>(v225, ":"); std::ostream::operator<<(v226, (int (__cdecl *)(void *))std::endl>); WXML::DOMLib::WXMLDom::Print(*((_DWORD **)lpuexcpta + 10), 0, "//", v317); } } std::stringbuf::str((int)v327, (int)v319); std::string::operator=(a4, (int)v327); std::string::_M_dispose((void **)v327); v266 = 0; LABEL_117: std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v309); WXML::NameAllocator::~NameAllocator((int)&v323); LABEL_118: std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v292); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v290); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v282); std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(v289[1]); std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v286); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v317); return v266; } // 406832: variable 'v228' is possibly undefined // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 406648: using guessed type char var_3E8[8]; // 406648: using guessed type _DWORD var_534[2]; // 406648: using guessed type char var_310[4]; // 406648: using guessed type char var_240[4]; // 406648: using guessed type char var_23C[196]; // 406648: using guessed type char var_30C[196]; // 406648: using guessed type char var_170[4]; // 406648: using guessed type char var_3E0[4]; // 406648: using guessed type int var_444[5]; // 406648: using guessed type char var_3DC[196]; //----- (0040A124) -------------------------------------------------------- struct _Unwind_Exception *__cdecl WXML::Compiler::CompileLazy( _DWORD *a1, // fileData int *a2, // 错误信息 _DWORD *a3, // 输出1 _DWORD *a4, // 输出2 _DWORD *a5, _DWORD *a6, // vecFileContentMap int *a7,// splitedData _DWORD *a8,// mapData1 char a9,// isLLA int a10,// gwxMark int a11,// mark char a12,// '\n' int *a13,// 'e' int *a14,// const char off_5403C3[] = {'s','\0','e','\0'} int *a15, // "gg" int *a16,// "e_" int *a17,// "d_" int *a18,// "p_" int a19, // '\0' int a20, // "boxofchocolate" int a21, // "$gdwx" int *a22) // "f_" { volatile signed __int32 **v22; // eax _DWORD *v23; // eax int v24; // edx _DWORD *v25; // edx _DWORD *v26; // eax char *v27; // eax int v28; // edx int insert_hint_unique_pos; // eax _DWORD *v30; // edx bool v31; // zf struct _Unwind_Exception *v32; // eax struct _Unwind_Exception *v33; // edx _DWORD *v34; // eax int k; // eax std::ostream::sentry *v36; // eax int *m; // eax std::ostream::sentry *v38; // eax std::ostream::sentry *v39; // eax std::ostream::sentry *v40; // eax bool v41; // zf struct _Unwind_Exception *v42; // eax struct _Unwind_Exception *v43; // edx struct _Unwind_Exception *v44; // eax _DWORD *v45; // eax volatile signed __int32 *v46; // edx char *v47; // ecx volatile signed __int32 **n; // eax unsigned int v49; // edx int v50; // edx int *v51; // eax int *v52; // eax std::ostream::sentry *v53; // eax std::ostream::sentry *v54; // eax std::ostream::sentry *v55; // eax char *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 _DWORD *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 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; // 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 char *v97; // eax std::__cxx11 *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 _DWORD *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 int *mm; // 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 int *nn; // eax std::ostream::sentry *v132; // eax char *v133; // eax volatile signed __int32 **v134; // ecx char *v135; // eax char *v136; // eax std::ostream::sentry *v137; // eax int StrID; // eax std::ostream::sentry *v139; // eax int *v140; // eax unsigned int *v141; // eax std::ostream::sentry *v142; // eax int v143; // eax std::ostream::sentry *v144; // eax std::ostream::sentry *v145; // eax int v146; // edx _DWORD *v147; // eax int v148; // eax int v149; // eax int v150; // edx _DWORD *v151; // eax int v152; // eax int 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 std::ostream::sentry *v175; // eax std::ostream::sentry *v176; // eax std::ostream::sentry *v177; // eax std::ostream::sentry *v178; // eax std::ostream::sentry *v179; // eax std::ostream::sentry *v180; // eax std::ostream::sentry *v181; // eax std::ostream::sentry *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 char *v192; // eax std::ostream::sentry *v193; // eax std::ostream::sentry *v194; // eax std::ostream::sentry *v195; // eax char *v196; // eax char *v197; // eax char *v198; // eax std::ostream::sentry *v199; // eax std::ostream::sentry *v200; // eax std::ostream::sentry *v201; // eax struct _Unwind_Exception *i5; // eax char *v203; // eax _DWORD *v205; // [esp+60h] [ebp-2C8h] _DWORD *v206; // [esp+60h] [ebp-2C8h] int v207; // [esp+64h] [ebp-2C4h] WXML::NameAllocator *v208; // [esp+68h] [ebp-2C0h] bool v209; // [esp+70h] [ebp-2B8h] int v210; // [esp+74h] [ebp-2B4h] _DWORD *v211; // [esp+74h] [ebp-2B4h] int v212; // [esp+74h] [ebp-2B4h] _DWORD *v213; // [esp+74h] [ebp-2B4h] _DWORD *v214; // [esp+74h] [ebp-2B4h] int v215; // [esp+78h] [ebp-2B0h] int v216; // [esp+78h] [ebp-2B0h] _DWORD *v217; // [esp+78h] [ebp-2B0h] int v218; // [esp+78h] [ebp-2B0h] char *v219; // [esp+7Ch] [ebp-2ACh] char *v220; // [esp+80h] [ebp-2A8h] char *v221; // [esp+88h] [ebp-2A0h] void *v222; // [esp+8Ch] [ebp-29Ch] void *v223; // [esp+90h] [ebp-298h] int v224; // [esp+94h] [ebp-294h] bool v225; // [esp+ABh] [ebp-27Dh] int v226; // [esp+ACh] [ebp-27Ch] int v227; // [esp+ACh] [ebp-27Ch] int v228; // [esp+ACh] [ebp-27Ch] unsigned int *v229; // [esp+ACh] [ebp-27Ch] _DWORD *v230; // [esp+ACh] [ebp-27Ch] unsigned int v231; // [esp+ACh] [ebp-27Ch] unsigned int i3; // [esp+ACh] [ebp-27Ch] _DWORD *v233; // [esp+B0h] [ebp-278h] int v234; // [esp+B4h] [ebp-274h] int v235; // [esp+B4h] [ebp-274h] char *v236; // [esp+B8h] [ebp-270h] WXML::EXPRLib::Parser *v237; // [esp+BCh] [ebp-26Ch] WXML::EXPRLib::Parser *v238; // [esp+BCh] [ebp-26Ch] WXML::EXPRLib::Parser *v239; // [esp+BCh] [ebp-26Ch] WXML::EXPRLib::Parser *v240; // [esp+BCh] [ebp-26Ch] WXML::EXPRLib::Parser *v241; // [esp+BCh] [ebp-26Ch] int ii; // [esp+BCh] [ebp-26Ch] WXML::EXPRLib::Parser *v243; // [esp+BCh] [ebp-26Ch] char *v244; // [esp+C0h] [ebp-268h] WXML::NameAllocator *v245; // [esp+C0h] [ebp-268h] WXML::NameAllocator *i2; // [esp+C0h] [ebp-268h] _DWORD *Block; // [esp+C4h] [ebp-264h] int v248; // [esp+C8h] [ebp-260h] WXML::DOMLib::Parser *v249; // [esp+CCh] [ebp-25Ch] int *v250; // [esp+CCh] [ebp-25Ch] std::ostream::sentry *v251; // [esp+CCh] [ebp-25Ch] std::ostream::sentry *v252; // [esp+CCh] [ebp-25Ch] std::ostream::sentry *v253; // [esp+CCh] [ebp-25Ch] std::ostream::sentry *v254; // [esp+CCh] [ebp-25Ch] std::ostream::sentry *v255; // [esp+CCh] [ebp-25Ch] char *v256; // [esp+CCh] [ebp-25Ch] std::ostream::sentry *v257; // [esp+CCh] [ebp-25Ch] struct _Unwind_Exception *v258; // [esp+D0h] [ebp-258h] char v259; // [esp+D0h] [ebp-258h] char *v260; // [esp+D0h] [ebp-258h] struct _Unwind_Exception *v261; // [esp+D0h] [ebp-258h] void *v262; // [esp+D0h] [ebp-258h] char *v263; // [esp+D0h] [ebp-258h] volatile signed __int32 *v264; // [esp+D0h] [ebp-258h] int *kk; // [esp+D0h] [ebp-258h] int *v266; // [esp+D0h] [ebp-258h] int *v267; // [esp+D0h] [ebp-258h] _DWORD *v268; // [esp+D0h] [ebp-258h] WXML::NameAllocator *i1; // [esp+D0h] [ebp-258h] _DWORD *v270; // [esp+D0h] [ebp-258h] int *v271; // [esp+D0h] [ebp-258h] int *i4; // [esp+D0h] [ebp-258h] bool v273; // [esp+D0h] [ebp-258h] int i; // [esp+D4h] [ebp-254h] _DWORD *v275; // [esp+D4h] [ebp-254h] struct _Unwind_Exception *v276; // [esp+D4h] [ebp-254h] int *v277; // [esp+D4h] [ebp-254h] int v278; // [esp+D4h] [ebp-254h] void **v279; // [esp+D4h] [ebp-254h] int v280; // [esp+D4h] [ebp-254h] int v281; // [esp+D4h] [ebp-254h] int v282; // [esp+D4h] [ebp-254h] struct _Unwind_Exception *lpuexcpt; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcpta; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcpto; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcptb; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcptc; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcptd; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcpte; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcptf; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcptg; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcpth; // [esp+D8h] [ebp-250h] char *lpuexcpti; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcptj; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcptp; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcptk; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcptl; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcptm; // [esp+D8h] [ebp-250h] struct _Unwind_Exception *lpuexcptn; // [esp+D8h] [ebp-250h] int v300[2]; // [esp+118h] [ebp-210h] BYREF int v301; // [esp+120h] [ebp-208h] BYREF _DWORD v302[2]; // [esp+124h] [ebp-204h] BYREF _DWORD *v303; // [esp+12Ch] [ebp-1FCh] int v304; // [esp+138h] [ebp-1F0h] BYREF _DWORD v305[2]; // [esp+13Ch] [ebp-1ECh] BYREF void *v306; // [esp+144h] [ebp-1E4h] int v307; // [esp+150h] [ebp-1D8h] BYREF _DWORD v308[5]; // [esp+154h] [ebp-1D4h] BYREF int v309; // [esp+168h] [ebp-1C0h] BYREF _DWORD v310[5]; // [esp+16Ch] [ebp-1BCh] BYREF int v311; // [esp+180h] [ebp-1A8h] BYREF _DWORD v312[5]; // [esp+184h] [ebp-1A4h] BYREF int v313; // [esp+198h] [ebp-190h] BYREF _DWORD v314[4]; // [esp+19Ch] [ebp-18Ch] BYREF int v315; // [esp+1ACh] [ebp-17Ch] int v316; // [esp+1B0h] [ebp-178h] BYREF int v317[5]; // [esp+1B4h] [ebp-174h] BYREF int v318[6]; // [esp+1C8h] [ebp-160h] BYREF int v319; // [esp+1E0h] [ebp-148h] BYREF volatile signed __int32 *v320[5]; // [esp+1E4h] [ebp-144h] BYREF int v321[6]; // [esp+1F8h] [ebp-130h] BYREF void *j; // [esp+210h] [ebp-118h] BYREF struct _Unwind_Exception *v323; // [esp+214h] [ebp-114h] int v324; // [esp+218h] [ebp-110h] int jj; // [esp+228h] [ebp-100h] BYREF volatile signed __int32 *v326; // [esp+22Ch] [ebp-FCh] BYREF volatile signed __int32 *v327; // [esp+230h] [ebp-F8h] int v328; // [esp+240h] [ebp-E8h] BYREF volatile signed __int32 *v329; // [esp+244h] [ebp-E4h] BYREF char v330[4]; // [esp+248h] [ebp-E0h] BYREF volatile signed __int32 **v331; // [esp+24Ch] [ebp-DCh] unsigned int v332; // [esp+254h] [ebp-D4h] /* _DWORD *a1, // fileData int *a2, // 错误信息 _DWORD *a3, // 输出1 _DWORD *a4, // 输出2 _DWORD *a5, _DWORD *a6, // vecFileContentMap int *a7,// splitedData _DWORD *a8,// mapData1 char a9,// isLLA int a10,// gwxMark int a11,// mark char a12,// '\n' int *a13,// 'e' int *a14,// const char off_5403C3[] = {'s','\0','e','\0'} int *a15, // "gg" int *a16,// "e_" int *a17,// "d_" int *a18,// "p_" int a19, // '\0' int a20, // "boxofchocolate" int a21, // "$gdwx" int *a22) // "f_" */ std::_Rb_tree_header::_Rb_tree_header(v302); std::_Rb_tree_header::_Rb_tree_header(v305); std::_Rb_tree_header::_Rb_tree_header(v308); std::_Rb_tree_header::_Rb_tree_header(v310); std::_Rb_tree_header::_Rb_tree_header(v312); lpuexcpt = (struct _Unwind_Exception *)a1[3]; v249 = (WXML::DOMLib::Parser *)(a1 + 1); while ( lpuexcpt != v249 ) { // 13个参数 v258 = WXML::Compiler::ParseSource( v249, (int *)lpuexcpt + 4, // 文件名 (char **)lpuexcpt + 10, // 源码? a12, // '\n' a10, // gwxMark a22, // "f_" a1, // fileData a2, // 错误信息 &v304, // map &v309, // ??? &v311, // ??? (a11 & 4) != 0, // a11 -> mark (a11 & 0x20) != 0); // 源码解析失败,LABEL_187 -> return v258 if ( v258 ) goto LABEL_187; lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree_increment((int)lpuexcpt); } v223 = operator new(0xD0u); std::basic_stringstream,std::allocator>::basic_stringstream((int)v223); zcc::shared_ptr,std::allocator>>::shared_ptr(&jj, (int)v223); std::string::basic_string((void **)&v328, "__COMMON__"); v22 = (volatile signed __int32 **)std::map,std::allocator>>>::operator[]( &v301, &v328); // v22 = v301["__COMMON__"] *v22 = (volatile signed __int32 *)jj; // v301["__COMMON__"] = jj std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v22 + 1, v326); std::string::_M_dispose((void **)&v328); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v326); jj = 0; v326 = 0; v327 = 0; std::string::basic_string((void **)&v328, "__COMMON__"); v23 = std::map>::operator[](&v307, &v328); // v23 = v307["__COMMON__"] std::vector::operator=(v23, &jj); // v307["__COMMON__"] = jj std::string::_M_dispose((void **)&v328); std::vector::~vector((void ***)&jj, v24); std::string::basic_string((void **)&v328, "__COMMON__"); v226 = *std::map,std::allocator>>>::operator[]( &v301, &v328); // v226 = v301["__COMMON__"] std::string::_M_dispose((void **)&v328); v237 = (WXML::EXPRLib::Parser *)a7[1]; /* _DWORD *a1, // fileData int *a2, // 错误信息 _DWORD *a3, // 输出1 _DWORD *a4, // 输出2 _DWORD *a5, _DWORD *a6, // vecFileContentMap int *a7,// splitedData _DWORD *a8,// mapData1 char a9,// isLLA int a10,// gwxMark int a11,// mark char a12,// '\n' int *a13,// 'e' int *a14,// const char off_5403C3[] = {'s','\0','e','\0'} int *a15, // "gg" int *a16,// "e_" int *a17,// "d_" int *a18,// "p_" int a19, // '\0' int a20, // "boxofchocolate" int a21, // "$gdwx" int *a22) // "f_" */ for ( i = *a7; (WXML::EXPRLib::Parser *)i != v237; i += 24 ) { v222 = operator new(0xD0u); std::basic_stringstream,std::allocator>::basic_stringstream((int)v222); zcc::shared_ptr,std::allocator>>::shared_ptr( &v328, (int)v222); lpuexcpta = (struct _Unwind_Exception *)std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>> ::lower_bound( &v301, i); if ( lpuexcpta == (struct _Unwind_Exception *)v302 || (unsigned __int8)std::operator<(i, (int)lpuexcpta + 16) ) { Block = operator new(0x30u); std::string::basic_string((char *)Block + 16, i); Block[10] = 0; Block[11] = 0; lpuexcpta = (struct _Unwind_Exception *)std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>> ::_M_get_insert_hint_unique_pos( &v301, lpuexcpta, (int)(Block + 4)); if ( v25 ) { lpuexcpta = (struct _Unwind_Exception *)std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_insert_node( &v301, (int)lpuexcpta, v25, Block); } else { std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)Block + 11); std::string::_M_dispose((void **)Block + 4); operator delete(Block); } } *((_DWORD *)lpuexcpta + 10) = v328; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)lpuexcpta + 11, v329); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v329); std::operator+((int)&jj, "./", i); v26 = std::string::append(&jj, ".wxml"); std::string::basic_string(&v328, v26); // v328 ./*******.wxml j = 0; v323 = 0; v324 = 0; j = std::_Vector_base::_M_allocate(1u); lpuexcpto = (struct _Unwind_Exception *)((char *)j + 24); v324 = (int)j + 24; std::string::basic_string((char *)j, (int)&v328); v323 = lpuexcpto; v27 = std::map>::operator[](&v307, i); std::vector::operator=(v27, (int *)&j); // v307[i] = j std::vector::~vector((void ***)&j, v28); std::string::_M_dispose((void **)&v328); std::string::_M_dispose((void **)&jj); } v238 = (WXML::EXPRLib::Parser *)a7[1]; // v238 - end? // a7 splitedData lpuexcptb = (struct _Unwind_Exception *)*a7; std::_Rb_tree_header::_Rb_tree_header(v314); while ( v238 != lpuexcptb ) { insert_hint_unique_pos = std::_Rb_tree,std::less,std::allocator> ::_M_get_insert_hint_unique_pos( &v313, v314, (int)lpuexcptb); v275 = v30; if ( v30 ) { v259 = v30 == v314 || insert_hint_unique_pos != 0; if ( !v259 ) v259 = std::operator<((int)lpuexcptb, (int)(v30 + 4)); v221 = (char *)operator new(0x28u); std::string::basic_string(v221 + 16, (int)lpuexcptb); std::_Rb_tree_insert_and_rebalance(v259, v221, v275, v314); ++v315; } lpuexcptb = (struct _Unwind_Exception *)((char *)lpuexcptb + 24); } for ( j = v306; j != v305; std::_Rb_tree_iterator>>::operator++((int *)&j) ) { v260 = (char *)j + 16; std::string::substr(&jj, (_DWORD *)j + 4, 2u, *((_DWORD *)j + 5) - 7); lpuexcptc = (struct _Unwind_Exception *)v314[1]; v276 = (struct _Unwind_Exception *)v314; while ( lpuexcptc ) { v31 = (unsigned __int8)std::operator<((int)lpuexcptc + 16, (int)&jj) == 0; v32 = v276; v33 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcptc + 3); if ( v31 ) { v33 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcptc + 2); if ( v31 ) v32 = lpuexcptc; } lpuexcptc = v33; v276 = v32; } if ( v276 == (struct _Unwind_Exception *)v314 || (unsigned __int8)std::operator<((int)&jj, (int)v276 + 16) ) { std::string::basic_string((void **)&v328, "__COMMON__"); v34 = std::map>::operator[](&v307, &v328); // v307[v328].push_back(v260) std::vector::push_back((int)v34, (int)v260); std::string::_M_dispose((void **)&v328); } std::string::_M_dispose((void **)&jj); } std::basic_stringstream,std::allocator>::basic_stringstream((int)&v328); std::operator<<>( (std::ostream::sentry *)v330, "WXML::Compiler::CompileLazy: file name to paths:\n"); std::operator<<>((std::ostream::sentry *)v330, " all files: [ "); for ( k = a1[3]; ; k = std::_Rb_tree_increment((int)lpuexcptd) ) { lpuexcptd = (struct _Unwind_Exception *)k; if ( (WXML::DOMLib::Parser *)k == v249 ) break; v36 = std::operator<<((std::ostream::sentry *)v330, (int *)(k + 16)); std::operator<<>(v36, " "); } std::operator<<>((std::ostream::sentry *)v330, "];\n"); for ( m = (int *)v308[2]; ; m = (int *)std::_Rb_tree_increment((int)v277) ) { v277 = m; if ( m == v308 ) break; v38 = std::operator<<>((std::ostream::sentry *)v330, " "); v39 = std::operator<<(v38, v277 + 4); std::operator<<>(v39, ": [ "); v239 = (WXML::EXPRLib::Parser *)v277[11]; v250 = (int *)v277[10]; while ( 1 ) { v234 = (int)v250; if ( v239 == (WXML::EXPRLib::Parser *)v250 ) break; v40 = std::operator<<((std::ostream::sentry *)v330, v250); std::operator<<>(v40, " "); v261 = (struct _Unwind_Exception *)v305[1]; lpuexcpte = (struct _Unwind_Exception *)v305; while ( v261 ) { v41 = (unsigned __int8)std::operator<((int)v261 + 16, (int)v250) == 0; v42 = lpuexcpte; v43 = (struct _Unwind_Exception *)*((_DWORD *)v261 + 3); if ( v41 ) { v43 = (struct _Unwind_Exception *)*((_DWORD *)v261 + 2); if ( v41 ) v42 = v261; } v261 = v43; lpuexcpte = v42; } if ( lpuexcpte != (struct _Unwind_Exception *)v305 ) { v31 = (unsigned __int8)std::operator<((int)v250, (int)lpuexcpte + 16) == 0; v44 = (struct _Unwind_Exception *)v305; if ( v31 ) v44 = lpuexcpte; lpuexcpte = v44; } v250 += 6; if ( lpuexcpte == (struct _Unwind_Exception *)v305 ) { std::operator+((int)&jj, "WXML file not found: ", v234); std::string::operator=((unsigned __int8 **)a2, (int)&jj); std::string::_M_dispose((void **)&jj); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v328); v258 = (struct _Unwind_Exception *)-1152; goto LABEL_186; } } std::operator<<>((std::ostream::sentry *)v330, "];\n"); } std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v328); for ( j = v306; ; std::_Rb_tree_iterator>>::operator++((int *)&j) ) { lpuexcptf = (struct _Unwind_Exception *)j; if ( j == v305 ) break; std::_Rb_tree_header::_Rb_tree_header(&v329); v262 = (char *)lpuexcptf + 16; WXML::DOMLib::recurseDependencies((int *)lpuexcptf + 10, (int *)lpuexcptf + 4, &v328); lpuexcptg = (struct _Unwind_Exception *)v332; if ( v332 > 0x5555555 ) std::__throw_length_error((std::length_error *)"cannot create std::vector larger than max_size()"); jj = 0; v326 = 0; v327 = 0; v45 = std::_Vector_base::_M_allocate(v332); v278 = (int)v45; jj = (int)v45; v46 = &v45[6 * (_DWORD)lpuexcptg]; v327 = v46; while ( lpuexcptg ) { v47 = (char *)(v45 + 2); v45[1] = 0; v45 += 6; *(v45 - 6) = v47; *((_BYTE *)v45 - 16) = 0; lpuexcptg = (struct _Unwind_Exception *)((char *)lpuexcptg - 1); } v326 = v46; for ( n = v331; ; n = (volatile signed __int32 **)std::_Rb_tree_increment((int)lpuexcpth) ) { lpuexcpth = (struct _Unwind_Exception *)n; if ( n == &v329 ) break; std::string::_M_assign(v278, (int)(n + 4)); v278 += 24; } lpuexcpti = std::map>::operator[](a5, (int)v262); if ( lpuexcpti != (char *)&jj ) { v240 = (WXML::EXPRLib::Parser *)v326; v263 = (char *)jj; v279 = *(void ***)lpuexcpti; v251 = (std::ostream::sentry *)((char *)v326 - jj); v49 = *((_DWORD *)lpuexcpti + 2) - *(_DWORD *)lpuexcpti; v235 = -1431655765 * (((int)v326 - jj) >> 3); if ( v49 >= (unsigned int)v326 - jj ) { v241 = (WXML::EXPRLib::Parser *)*((_DWORD *)lpuexcpti + 1); if ( (unsigned int)v251 > v241 - (WXML::EXPRLib::Parser *)v279 ) { for ( ii = -1431655765 * ((v241 - (WXML::EXPRLib::Parser *)v279) >> 3); ii > 0; --ii ) { std::string::_M_assign((int)v279, (int)v263); v263 += 24; v279 += 6; } v264 = v326; v281 = jj + *((_DWORD *)lpuexcpti + 1) - *(_DWORD *)lpuexcpti; v219 = (char *)*((_DWORD *)lpuexcpti + 1); while ( v264 != (volatile signed __int32 *)v281 ) { std::string::basic_string(v219, v281); v281 += 24; v219 += 24; } } else { while ( v235 > 0 ) { std::string::_M_assign((int)v279, (int)v263); v263 += 24; v279 += 6; --v235; } while ( v241 != (WXML::EXPRLib::Parser *)v279 ) { std::string::_M_dispose(v279); v279 += 6; } } } else { v236 = (char *)std::_Vector_base::_M_allocate(-1431655765 * (((int)v326 - jj) >> 3)); v280 = (int)v263; v220 = v236; while ( v240 != (WXML::EXPRLib::Parser *)v280 ) { std::string::basic_string(v220, v280); v220 += 24; v280 += 24; } std::_Destroy_aux::__destroy(v50, *(void ***)lpuexcpti, *((void ***)lpuexcpti + 1)); if ( *(_DWORD *)lpuexcpti ) operator delete(*(void **)lpuexcpti); *(_DWORD *)lpuexcpti = v236; *((_DWORD *)lpuexcpti + 2) = (char *)v251 + (_DWORD)v236; } *((_DWORD *)lpuexcpti + 1) = (char *)v251 + *(_DWORD *)lpuexcpti; } std::vector::~vector((void ***)&jj, v49); std::_Rb_tree,std::less,std::allocator>::~_Rb_tree((int)&v328); } std::_Rb_tree_header::_Rb_tree_header(v317); for ( jj = (int)v306; ; std::_Rb_tree_iterator>>::operator++(&jj) ) { lpuexcptj = (struct _Unwind_Exception *)jj; if ( (_DWORD *)jj == v305 ) break; WXML::DOMLib::WXMLDom::RewriteTree(*(_DWORD *)(jj + 40)); v282 = *((_DWORD *)lpuexcptj + 10); std::string::basic_string((void **)&v328, (char *)off_550B3F); v51 = std::map>::operator[](a6, &v328); WXML::DOMLib::WXMLDom::MarkIfHasDescendant(v282, v51); std::string::_M_dispose((void **)&v328); if ( a9 ) { lpuexcptp = (struct _Unwind_Exception *)*((_DWORD *)lpuexcptj + 10); std::string::basic_string((void **)&v328, (char *)off_550B3F); v52 = std::map>::operator[](a6, &v328); WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(lpuexcptp, v52); std::string::_M_dispose((void **)&v328); } } lpuexcptk = (struct _Unwind_Exception *)(v226 + 8); if ( a9 ) std::string::basic_string((void **)&jj, "global"); else std::string::basic_string((void **)&jj, "__globalThis"); WXML::Compiler::GetVersionInfo((int)&v328, &jj); v53 = std::operator<<(lpuexcptk, &v328); std::ostream::operator<<(v53, (int (__cdecl *)(void *))std::endl>); std::string::_M_dispose((void **)&v328); std::string::_M_dispose((void **)&jj); WXML::NameAllocator::NameAllocator(&v328, a19, a20); v54 = std::operator<<>(lpuexcptk, "var $gwxc"); std::operator<<>(v54, a12); v55 = std::operator<<>(lpuexcptk, "var $gaic={}"); std::operator<<>(v55, a12); if ( !a9 ) std::operator<<>( lpuexcptk, "var outerGlobal=typeof __globalThis==='undefined'?window:__globalThis;"); v224 = 0; v233 = v303; v209 = (a11 & 2) != 0; while ( v233 != v302 ) { v243 = (WXML::EXPRLib::Parser *)v233[10]; v248 = (int)(v233 + 4); v225 = std::operator==((int)(v233 + 4), "__COMMON__"); if ( v225 ) { std::string::basic_string((char *)v318, a10); } else { std::to_string((std::__cxx11 *)&jj, v224); std::operator+((char *)&j, a10, "_XC_"); std::operator+(v318, &j, (unsigned int *)&jj); std::string::_M_dispose(&j); std::string::_M_dispose((void **)&jj); ++v224; } v56 = std::map::operator[](a4, v248); std::string::_M_assign((int)v56, (int)v318); lpuexcptl = (WXML::EXPRLib::Parser *)((char *)v243 + 8); if ( (a11 & 2) != 0 ) { v57 = std::operator<<>((WXML::EXPRLib::Parser *)((char *)v243 + 8), "var cs = cs || [];"); std::operator<<>(v57, a12); } v58 = std::operator<<(lpuexcptl, v318); v59 = std::operator<<>( v58, "=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){"); v60 = std::operator<<>(v59, "return function(path,global){"); std::operator<<>(v60, a12); std::operator<<>( lpuexcptl, "if(typeof global==='undefined'){if (typeof __GWX_GLOBAL__==='undefined')global={};else global=__GWX_GLOBAL__;}"); std::operator<<>(lpuexcptl, "if(typeof __WXML_GLOBAL__ === 'undefined') {"); v61 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__={};"); std::operator<<>(v61, a12); if ( (a11 & 0x80) != 0 ) { std::string::basic_string((void **)&jj, "life_cycle_callback_content"); v252 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a8, (int)&jj); std::string::_M_dispose((void **)&jj); if ( a8 + 1 != (_DWORD *)v252 ) { std::string::basic_string((void **)&jj, "life_cycle_callback_content"); v62 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( a8, (int)&jj); std::operator<<(lpuexcptl, v62 + 10); std::string::_M_dispose((void **)&jj); } } std::operator<<>(lpuexcptl, "}"); v63 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};"); std::operator<<>(v63, a12); if ( v225 && !std::operator==(a10, "$gwx") && (a11 & 0x60) == 0 ) { v64 = std::operator<<>(lpuexcptl, "$gwx('init', global);"); std::operator<<>(v64, a12); } v65 = std::operator<<>(lpuexcptl, "var "); v66 = std::operator<<(v65, a16); v67 = std::operator<<>(v66, "={}"); std::operator<<>(v67, a12); v68 = std::operator<<>(lpuexcptl, "if(typeof(global.entrys)==='undefined')global.entrys={};"); v69 = std::operator<<(v68, a16); v70 = std::operator<<>(v69, "=global.entrys;"); std::operator<<>(v70, a12); v71 = std::operator<<>(lpuexcptl, "var "); v72 = std::operator<<(v71, a17); v73 = std::operator<<>(v72, "={}"); std::operator<<>(v73, a12); v74 = std::operator<<>( lpuexcptl, "if(typeof(global.defines)==='undefined')global.defines={};"); v75 = std::operator<<(v74, a17); v76 = std::operator<<>(v75, "=global.defines;"); std::operator<<>(v76, a12); v77 = std::operator<<>(lpuexcptl, "var "); v78 = std::operator<<(v77, a22); v79 = std::operator<<>(v78, "={}"); std::operator<<>(v79, a12); v80 = std::operator<<>( lpuexcptl, "if(typeof(global.modules)==='undefined')global.modules={};"); v81 = std::operator<<(v80, a22); v82 = std::operator<<>(v81, "=global.modules || {};"); std::operator<<>(v82, a12); v83 = std::operator<<>(lpuexcptl, "var "); v84 = std::operator<<(v83, a18); v85 = std::operator<<>(v84, "={}"); std::operator<<>(v85, a12); if ( (a11 & 2) != 0 ) { v86 = std::operator<<>(lpuexcptl, "var cs = cs || [];"); std::operator<<>(v86, a12); } v87 = std::operator<<>( lpuexcptl, "__WXML_GLOBAL__.ops_cached = __WXML_GLOBAL__.ops_cached || {}"); std::operator<<>(v87, a12); v88 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.ops_set = __WXML_GLOBAL__.ops_set || {};"); std::operator<<>(v88, a12); v89 = std::operator<<>( lpuexcptl, "__WXML_GLOBAL__.ops_init = __WXML_GLOBAL__.ops_init || {};"); std::operator<<>(v89, a12); v90 = std::operator<<>(lpuexcptl, "var z=__WXML_GLOBAL__.ops_set."); v91 = std::operator<<(v90, v318); v92 = std::operator<<>(v91, " || [];"); std::operator<<>(v92, a12); if ( (a11 & 4) != 0 ) { v93 = std::operator<<>( lpuexcptl, "__WXML_GLOBAL__.debuginfo_set = __WXML_GLOBAL__.debuginfo_set || {};"); std::operator<<>(v93, a12); v94 = std::operator<<>(lpuexcptl, "var debugInfo=__WXML_GLOBAL__.debuginfo_set."); v95 = std::operator<<(v94, v318); v96 = std::operator<<>(v95, " || [];"); std::operator<<>(v96, a12); } v97 = std::map>::operator[](&v307, v248); v253 = 0; v227 = *((_DWORD *)v97 + 1); for ( kk = *(int **)v97; kk != (int *)v227; kk += 6 ) { v244 = std::map>::operator[](&v304, (int)kk); std::_Rb_tree_header::_Rb_tree_header(v320); v253 = (std::ostream::sentry *)((char *)v253 + 1); v300[1] = 0; v300[0] = 0; std::to_string(v98, (unsigned int)v253); std::operator+((char *)&j, (int)v318, "_"); std::operator+(v321, &j, (unsigned int *)&jj); std::string::_M_dispose(&j); std::string::_M_dispose((void **)&jj); std::operator+((int)&j, "gz", (int)v321); v99 = std::operator<<>(lpuexcptl, "function "); v100 = std::operator<<(v99, (int *)&j); v101 = std::operator<<>(v100, "(){"); std::operator<<>(v101, a12); v102 = std::operator<<>(lpuexcptl, "if( __WXML_GLOBAL__.ops_cached."); v103 = std::operator<<(v102, v321); std::operator<<>(v103, ")"); v104 = std::operator<<>(lpuexcptl, "return __WXML_GLOBAL__.ops_cached."); v105 = std::operator<<(v104, v321); std::operator<<>(v105, a12); v106 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.ops_cached."); v107 = std::operator<<(v106, v321); v108 = std::operator<<>(v107, "=[];"); std::operator<<>(v108, a12); std::operator<<>(lpuexcptl, "(function(z){var a=11;"); if ( (a11 & 4) != 0 ) v109 = std::operator<<>( lpuexcptl, "function Z(ops,debugLine){z.push(['11182016',ops,debugLine])}"); else v109 = std::operator<<>(lpuexcptl, "function Z(ops){z.push(ops)}"); std::operator<<>(v109, a12); WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord( *(_DWORD **)v244, kk, (unsigned int *)a2, v243, &v319, v300, (a11 & 4) != 0, (int)a8); v110 = std::operator<<>(lpuexcptl, "})(__WXML_GLOBAL__.ops_cached."); v111 = std::operator<<(v110, v321); std::operator<<>(v111, ");"); v112 = std::operator<<>(lpuexcptl, "return __WXML_GLOBAL__.ops_cached."); v113 = std::operator<<(v112, v321); std::operator<<>(v113, a12); v114 = std::operator<<>(lpuexcptl, "}"); std::operator<<>(v114, a12); std::string::basic_string((void **)&jj, "get_page_z_name"); v115 = std::map::operator[]((_DWORD *)(*(_DWORD *)v244 + 272), &jj); std::string::_M_assign((int)v115, (int)&j); std::string::_M_dispose((void **)&jj); std::string::_M_dispose(&j); std::string::_M_dispose((void **)v321); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v319); } v116 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.ops_set."); v117 = std::operator<<(v116, v318); v118 = std::operator<<>(v117, "=z;"); std::operator<<>(v118, a12); v119 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.ops_init."); v120 = std::operator<<(v119, v318); v121 = std::operator<<>(v120, "=true;"); std::operator<<>(v121, a12); if ( (a11 & 4) != 0 ) { v122 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.debuginfo_set."); v123 = std::operator<<(v122, v318); v124 = std::operator<<>(v123, "=debugInfo;"); std::operator<<>(v124, a12); } if ( v225 ) { std::operator<<>(lpuexcptl, "var nv_require=function(){var nnm={"); for ( mm = (int *)v312[2]; ; mm = (int *)std::_Rb_tree_increment((int)v266) ) { v266 = mm; if ( mm == v312 ) break; v254 = std::operator<<>(lpuexcptl, 34); WXML::Rewrite::ToStringCode((int)&jj, v266 + 4); v126 = std::operator<<(v254, &jj); v127 = std::operator<<>(v126, 34); std::operator<<>(v127, ":np_"); v128 = (std::ostream::sentry *)std::ostream::operator<<(v266[10]); std::operator<<>(v128, ","); std::string::_M_dispose((void **)&jj); } std::operator<<>(lpuexcptl, "};var nom={};return function(n){"); std::operator<<>( lpuexcptl, "if(n[0]==='p'&&n[1]==='_'&&f_[n.slice(2)])return f_[n.slice(2)];"); std::operator<<>(lpuexcptl, "return function(){if(!nnm[n]) return undefined;"); std::operator<<>(lpuexcptl, "try{if(!nom[n])nom[n]=nnm[n]();return nom[n];}"); std::operator<<>(lpuexcptl, "catch(e){"); std::operator<<>(lpuexcptl, "e.message=e.message.replace(/nv_/g,'');"); std::operator<<>(lpuexcptl, "var tmp = e.stack.substring(0,e.stack.lastIndexOf(n));"); std::operator<<>(lpuexcptl, "e.stack = tmp.substring(0,tmp.lastIndexOf('\\n'));"); std::operator<<>(lpuexcptl, "e.stack = e.stack.replace(/\\snv_/g,' ');"); std::operator<<>(lpuexcptl, "e.stack = $gstack(e.stack);"); v129 = std::operator<<>( lpuexcptl, "e.stack += '\\n at ' + n.substring(2);console.error(e);}"); std::operator<<>(v129, a12); v130 = std::operator<<>(lpuexcptl, "}}}()"); std::operator<<>(v130, a12); for ( nn = (int *)v310[2]; ; nn = (int *)std::_Rb_tree_increment((int)v267) ) { v267 = nn; if ( nn == v310 ) break; v132 = std::operator<<(lpuexcptl, nn + 10); std::operator<<>(v132, a12); } } v268 = operator new(0x24u); std::_Rb_tree_header::_Rb_tree_header(v268 + 1); v268[6] = 0; v268[7] = 0; v268[8] = 0; zcc::shared_ptr::shared_ptr(v268); v133 = std::map>::operator[](&v307, v248); v245 = (WXML::NameAllocator *)*((_DWORD *)v133 + 1); for ( i1 = *(WXML::NameAllocator **)v133; ; i1 = (WXML::NameAllocator *)((char *)i1 + 24) ) { v255 = (std::ostream::sentry *)v319; if ( i1 == v245 ) break; std::string::basic_string((char *)&jj, (int)i1); WXML::DOMLib::StrCache::Insert(v255, (int)&jj); std::string::_M_dispose((void **)&jj); v134 = (volatile signed __int32 **)(*(_DWORD *)std::map>::operator[]( &v304, (int)i1) + 252); *(v134 - 1) = (volatile signed __int32 *)v319; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v134, v320[0]); v135 = std::map>::operator[](&v304, (int)i1); WXML::DOMLib::WXMLDom::RecordAllPath(*(_DWORD **)v135); } WXML::DOMLib::StrCache::RenderPathDefine((_DWORD *)v319, (int)v243); v136 = std::map>::operator[](&v307, v248); v228 = 0; v208 = (WXML::NameAllocator *)*((_DWORD *)v136 + 1); for ( i2 = *(WXML::NameAllocator **)v136; v208 != i2; i2 = (WXML::NameAllocator *)((char *)i2 + 24) ) { v256 = std::map>::operator[](&v304, (int)i2); v137 = std::operator<<(lpuexcptl, a17); std::operator<<>(v137, (char *)off_55101C); v270 = (_DWORD *)v319; std::string::basic_string((char *)&jj, (int)i2); StrID = WXML::DOMLib::StrCache::GetStrID(v270, (int)&jj); std::ostream::operator<<(StrID); std::string::_M_dispose((void **)&jj); v139 = std::operator<<>(lpuexcptl, "]]={}"); std::operator<<>(v139, a12); std::string::basic_string((void **)&jj, "get_page_z_name"); v140 = std::map::operator[]((_DWORD *)(*(_DWORD *)v256 + 272), &jj); v258 = WXML::Compiler::RenderDefine( (unsigned int **)v256, i2, &v316, (int)a2, (int)v243, (int)a8, v209, a11, a12, a13, a14, a15, a10, a16, a17, a18, a19, a20, a21, v140); std::string::_M_dispose((void **)&jj); if ( v258 ) goto LABEL_180; v207 = v228 + 1; std::to_string((std::__cxx11 *)&jj, v228); v141 = std::string::insert((unsigned int *)&jj, 0, "m"); std::string::basic_string(v321, v141); std::string::_M_dispose((void **)&jj); v229 = *(unsigned int **)v256; std::string::basic_string(&j, "get_page_z_name"); v271 = std::map::operator[]((_DWORD *)(*(_DWORD *)v256 + 272), &j); std::string::basic_string((void **)&jj, "r"); v258 = (struct _Unwind_Exception *)WXML::DOMLib::WXMLDom::RenderMeAsFunction( v229, (int *)i2, a16, (int)a2, v321, (int)v243, &v328, a13, a14, a15, &jj, a17, a12, a18, 0, v209, a11, v271); std::string::_M_dispose((void **)&jj); std::string::_M_dispose(&j); if ( v258 ) { std::string::_M_dispose((void **)v321); LABEL_180: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v320); std::string::_M_dispose((void **)v318); goto LABEL_185; } v142 = std::operator<<(lpuexcptl, a16); std::operator<<>(v142, (char *)off_55101C); v230 = (_DWORD *)v319; std::string::basic_string((char *)&jj, (int)i2); v143 = WXML::DOMLib::StrCache::GetStrID(v230, (int)&jj); std::ostream::operator<<(v143); std::string::_M_dispose((void **)&jj); v144 = std::operator<<>(lpuexcptl, "]]={f:"); v145 = std::operator<<(v144, v321); std::operator<<>(v145, ",j:[],i:[],ti:["); v231 = 0; v215 = 0; while ( 1 ) { v146 = *(_DWORD *)(*(_DWORD *)v256 + 72); if ( (*(_DWORD *)(*(_DWORD *)v256 + 76) - v146) >> 3 <= v231 ) break; if ( std::operator==(*(_DWORD *)(v146 + 8 * v231), "import") ) { v210 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v256 + 72) + 8 * v231); v205 = (_DWORD *)(v210 + 52); std::string::basic_string((void **)&jj, (char *)off_547B7D); v211 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v210 + 48), (int)&jj); std::string::_M_dispose((void **)&jj); if ( v211 != v205 ) { if ( v215 ) std::operator<<>(lpuexcptl, ","); std::operator<<>(lpuexcptl, "x["); v206 = (_DWORD *)v319; v212 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v256 + 72) + 8 * v231); std::string::basic_string(&j, (char *)off_547B7D); v147 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v212 + 48), (int)&j); v148 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)(v147 + 10)); std::string::basic_string((char *)&jj, v148); v149 = WXML::DOMLib::StrCache::GetStrID(v206, (int)&jj); std::ostream::operator<<(v149); std::string::_M_dispose((void **)&jj); std::string::_M_dispose(&j); std::operator<<>(lpuexcptl, "]"); ++v215; } } ++v231; } std::operator<<>(lpuexcptl, "],ic:["); for ( i3 = 0; ; ++i3 ) { v150 = *(_DWORD *)(*(_DWORD *)v256 + 72); if ( (*(_DWORD *)(*(_DWORD *)v256 + 76) - v150) >> 3 <= i3 ) break; if ( std::operator==(*(_DWORD *)(v150 + 8 * i3), "include") ) { v216 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v256 + 72) + 8 * i3); v213 = (_DWORD *)(v216 + 52); std::string::basic_string((void **)&jj, (char *)off_547B7D); v217 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v216 + 48), (int)&jj); std::string::_M_dispose((void **)&jj); if ( v217 != v213 ) { if ( v258 ) std::operator<<>(lpuexcptl, ","); std::operator<<>(lpuexcptl, "x["); v214 = (_DWORD *)v319; v218 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v256 + 72) + 8 * i3); std::string::basic_string(&j, (char *)off_547B7D); v151 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v218 + 48), (int)&j); v152 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)(v151 + 10)); std::string::basic_string((char *)&jj, v152); v153 = WXML::DOMLib::StrCache::GetStrID(v214, (int)&jj); std::ostream::operator<<(v153); std::string::_M_dispose((void **)&jj); std::string::_M_dispose(&j); std::operator<<>(lpuexcptl, "]"); v258 = (struct _Unwind_Exception *)((char *)v258 + 1); } } } v154 = std::operator<<>(lpuexcptl, "]}"); std::operator<<>(v154, a12); std::string::_M_dispose((void **)v321); v228 = v207; } v155 = std::operator<<>(lpuexcptl, "if(path&&"); v156 = std::operator<<(v155, a16); v157 = std::operator<<>(v156, "[path]){"); std::operator<<>(v157, a12); if ( !a9 ) { v158 = std::operator<<>(lpuexcptl, "outerGlobal.__wxml_comp_version__=0.02"); std::operator<<>(v158, a12); } v159 = std::operator<<>( lpuexcptl, "return function(env,dd,global){$gwxc=0;var root={\"tag\":\"wx-page\"};root.children=[]"); std::operator<<>(v159, a12); v160 = std::operator<<>(lpuexcptl, ";g=\""); v161 = std::operator<<(v160, v318); std::operator<<>(v161, "\";"); v162 = std::operator<<>(lpuexcptl, "var main="); v163 = std::operator<<(v162, a16); v164 = std::operator<<>(v163, "[path].f"); std::operator<<>(v164, a12); if ( (a11 & 2) != 0 ) { v165 = std::operator<<>(lpuexcptl, "cs=[]"); std::operator<<>(v165, a12); } if ( (a11 & 0x10) != 0 ) { v166 = std::operator<<>(lpuexcptl, "console.log(path+': benv:\\n'+JSON.stringify(env))"); std::operator<<>(v166, a12); } std::operator<<>(lpuexcptl, "if (typeof global===\"undefined\")global={};"); v167 = std::operator<<>(lpuexcptl, "global.f=$gdc("); v168 = std::operator<<(v167, a22); v169 = std::operator<<>(v168, "[path],\"\",1);"); std::operator<<>(v169, a12); if ( !a9 ) { v170 = std::operator<<>( lpuexcptl, "if(typeof(outerGlobal.__webview_engine_version__)!='undefined'&&outerGlobal.__webview_engine_version__+1e" "-6>=0.02+1e-6&&outerGlobal.__mergeData__)"); std::operator<<>(v170, a12); v171 = std::operator<<>(lpuexcptl, "{"); std::operator<<>(v171, a12); v172 = std::operator<<>(lpuexcptl, "env=outerGlobal.__mergeData__(env,dd);"); std::operator<<>(v172, a12); v173 = std::operator<<>(lpuexcptl, "}"); std::operator<<>(v173, a12); } v174 = std::operator<<>(lpuexcptl, "try{"); std::operator<<>(v174, a12); if ( (a11 & 0x10) != 0 ) { v175 = std::operator<<>( lpuexcptl, "console.log(path+': aenv:\\n'+JSON.stringify(env)+', '+JSON.stringify(dd))"); std::operator<<>(v175, a12); } if ( (a11 & 0x80) != 0 ) { std::operator<<>(lpuexcptl, "if(__WXML_GLOBAL__.before_calculate)"); v176 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.before_calculate(path, env)"); std::operator<<>(v176, a12); } v177 = std::operator<<>(lpuexcptl, "main(env,{},root,global);"); std::operator<<>(v177, a12); if ( (a11 & 0x80) != 0 ) { std::operator<<>(lpuexcptl, "if(__WXML_GLOBAL__.after_calculate)"); v178 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.after_calculate(path, root)"); std::operator<<>(v178, a12); } v179 = std::operator<<>(lpuexcptl, "_tsd(root)"); std::operator<<>(v179, a12); if ( !a9 ) { v180 = std::operator<<>( lpuexcptl, "if(typeof(outerGlobal.__webview_engine_version__)=='undefined'|| outerGlobal.__webview_engine_version__+1" "e-6<0.01+1e-6){return _ev(root);}"); std::operator<<>(v180, a12); } v181 = std::operator<<>(lpuexcptl, "}catch(err){"); std::operator<<>(v181, a12); if ( (a11 & 2) != 0 ) { v182 = std::operator<<>(lpuexcptl, "console.log(cs, env);"); std::operator<<>(v182, a12); } v183 = std::operator<<>(lpuexcptl, "console.log(err)"); std::operator<<>(v183, a12); if ( (a11 & 2) != 0 ) { v184 = std::operator<<>(lpuexcptl, "throw err"); std::operator<<>(v184, a12); } v185 = std::operator<<>(lpuexcptl, "}"); std::operator<<>(v185, a12); if ( (a11 & 0x10) != 0 ) { v186 = std::operator<<>(lpuexcptl, "console.log(path+': resp:\\n'+JSON.stringify(root))"); std::operator<<>(v186, a12); } v187 = std::operator<<>(lpuexcptl, ";g=\"\";"); std::operator<<>(v187, a12); v188 = std::operator<<>(lpuexcptl, "return root;"); std::operator<<>(v188, a12); v189 = std::operator<<>(lpuexcptl, "}"); std::operator<<>(v189, a12); v190 = std::operator<<>(lpuexcptl, "}"); std::operator<<>(v190, a12); v191 = std::operator<<>(lpuexcptl, "}"); std::operator<<>(v191, a12); std::operator<<>( lpuexcptl, "}(__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 ( (a11 & 8) != 0 ) { v192 = std::map>::operator[](&v307, v248); v257 = (std::ostream::sentry *)*((_DWORD *)v192 + 1); for ( i4 = *(int **)v192; i4 != (int *)v257; i4 += 6 ) { v193 = std::operator<<>(lpuexcptl, "//"); v194 = std::operator<<(v193, i4); v195 = std::operator<<>(v194, ":"); std::operator<<>(v195, a12); v196 = std::map>::operator[](&v304, (int)i4); WXML::DOMLib::WXMLDom::Print(*(_DWORD **)v196, 0, "//", (char *)v243); } } v197 = std::map>::operator[](&v307, v248); v273 = v225 || *((_DWORD *)v197 + 1) == *(_DWORD *)v197; lpuexcptm = std::operator<<>(lpuexcptl, "if(__vd_version_info__.delayedGwx||"); v198 = "true"; if ( !v273 ) v198 = "false"; std::string::basic_string((void **)&jj, v198); v199 = std::operator<<(lpuexcptm, &jj); v200 = std::operator<<>(v199, ")"); v201 = std::operator<<(v200, v318); std::operator<<>(v201, "();"); std::string::_M_dispose((void **)&jj); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v320); std::string::_M_dispose((void **)v318); v233 = (_DWORD *)std::_Rb_tree_increment((int)v233); } for ( i5 = (struct _Unwind_Exception *)v303; ; i5 = (struct _Unwind_Exception *)std::_Rb_tree_increment((int)lpuexcptn) ) { lpuexcptn = i5; if ( i5 == (struct _Unwind_Exception *)v302 ) break; std::stringbuf::str((int)&jj, *((_DWORD *)i5 + 10) + 12); v203 = std::map::operator[](a3, (int)lpuexcptn + 16); std::string::operator=((unsigned __int8 **)v203, (int)&jj); std::string::_M_dispose((void **)&jj); } v258 = 0; LABEL_185: WXML::NameAllocator::~NameAllocator((int)&v328); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v316); LABEL_186: std::_Rb_tree,std::less,std::allocator>::~_Rb_tree((int)&v313); LABEL_187: std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v311); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v309); std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(v308[1]); std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v304); std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase(v302[1]); return v258; } // 40A40B: variable 'v24' is possibly undefined // 40A5A0: variable 'v25' is possibly undefined // 40A726: variable 'v28' is possibly undefined // 40A799: variable 'v30' is possibly undefined // 40AEEE: variable 'v50' is possibly undefined // 40B084: variable 'v49' is possibly undefined // 40BB69: variable 'v98' is possibly undefined // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 40A124: using guessed type char var_E0[4]; // 40A124: using guessed type int var_174[5]; //----- (0040DB80) -------------------------------------------------------- void __thiscall WXML::NameAllocator::NameAllocator(_DWORD *this, int a2, int a3) { bool v3; // zf int v4; // [esp+10h] [ebp-48h] int v5; // [esp+14h] [ebp-44h] this[2] = 0; v5 = (int)(this + 1); *((_BYTE *)this + 12) = 0; this[8] = 0; this[1] = this + 3; *((_BYTE *)this + 36) = 0; v4 = (int)(this + 7); v3 = WXML::NameAllocator::ALPAHBETLEN == 0; this[7] = this + 9; if ( v3 ) WXML::NameAllocator::ALPAHBETLEN = strlen(WXML::NameAllocator::ALPAHBET); std::string::_M_assign(v5, a2); std::string::_M_assign(v4, a3); *this = 0; } // 565A2C: using guessed type int WXML::NameAllocator::ALPAHBETLEN; //----- (0040DC6A) -------------------------------------------------------- void __thiscall WXML::NameAllocator::GetNextName(int *this, int a2) { std::ostream::sentry *v2; // eax int v3; // ecx _BYTE *v4; // eax size_t v5; // eax _BYTE *v6; // edx int v7; // edx int v8; // [esp+10h] [ebp-138h] int v9; // [esp+14h] [ebp-134h] _WORD Src[3]; // [esp+56h] [ebp-F2h] BYREF size_t Size; // [esp+5Ch] [ebp-ECh] int v13[4]; // [esp+60h] [ebp-E8h] BYREF char v14[8]; // [esp+70h] [ebp-D8h] BYREF char v15[4]; // [esp+78h] [ebp-D0h] BYREF char v16[200]; // [esp+7Ch] [ebp-CCh] BYREF v9 = *this; std::basic_stringstream,std::allocator>::basic_stringstream((int)v14); v2 = std::operator<<((std::ostream::sentry *)v15, this + 1); LOBYTE(Src[0]) = *(_BYTE *)(this[7] + *this % (unsigned int)this[8]); std::__ostream_insert>(v2, (int)Src, 1); while ( v9 ) { HIBYTE(Src[0]) = WXML::NameAllocator::ALPAHBET[v9 % WXML::NameAllocator::ALPAHBETLEN]; std::__ostream_insert>((std::ostream::sentry *)v15, (int)Src + 1, 1); v9 /= WXML::NameAllocator::ALPAHBETLEN; } ++*this; std::stringbuf::str((int)&Src[1], (int)v16); v3 = *(_DWORD *)&Src[1]; v4 = *(_BYTE **)a2; if ( *(int **)&Src[1] == v13 ) { if ( Size ) std::string::_S_copy(v4, *(unsigned __int8 **)&Src[1], Size); v5 = Size; v6 = *(_BYTE **)a2; *(_DWORD *)(a2 + 4) = Size; v6[v5] = 0; } else { if ( v4 == (_BYTE *)(a2 + 8) ) v4 = 0; else v8 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a2 + 4) = Size; v7 = v13[0]; *(_DWORD *)a2 = v3; *(_DWORD *)(a2 + 8) = v7; if ( v4 ) { *(_DWORD *)&Src[1] = v4; v13[0] = v8; } else { *(_DWORD *)&Src[1] = v13; } } Size = 0; **(_BYTE **)&Src[1] = 0; std::string::_M_dispose((void **)&Src[1]); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v14); } // 40DE40: variable 'v8' is possibly undefined // 565A2C: using guessed type int WXML::NameAllocator::ALPAHBETLEN; // 40DC6A: using guessed type char var_D0[4]; // 40DC6A: using guessed type char var_CC[200]; //----- (0040DEC4) -------------------------------------------------------- unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) { size_t v2; // eax v2 = strlen(Str); return std::string::_M_replace(this, 0, this[1], Str, v2); } //----- (0040DF01) -------------------------------------------------------- void __cdecl MMBizWxaAppComm::SplitBySlash(_DWORD *a1, void **a2) { int v2; // edx struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] void *v4[8]; // [esp+58h] [ebp-20h] BYREF lpuexcpt = 0; v2 = -1; while ( a1[1] > (int)lpuexcpt ) { if ( *((_BYTE *)lpuexcpt + *a1) == 47 ) { if ( (int)lpuexcpt - v2 > 1 ) { std::string::substr(v4, a1, v2 + 1, (unsigned int)lpuexcpt - v2 - 1); std::vector::emplace_back(a2, v4); std::string::_M_dispose(v4); } v2 = (int)lpuexcpt; } lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); } if ( (int)lpuexcpt - v2 > 1 ) { std::string::substr(v4, a1, v2 + 1, (unsigned int)lpuexcpt - v2 - 1); std::vector::emplace_back(a2, v4); std::string::_M_dispose(v4); } } //----- (0040E020) -------------------------------------------------------- int __cdecl MMBizWxaAppComm::PathCombine(_DWORD *a1, _DWORD *a2, unsigned int *a3) { bool v3; // zf int v4; // eax int v5; // edx int v6; // edx char *v8; // [esp+0h] [ebp-88h] int v9; // [esp+14h] [ebp-74h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-70h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-70h] void **v12; // [esp+50h] [ebp-38h] BYREF void **v13; // [esp+54h] [ebp-34h] char *v14; // [esp+58h] [ebp-30h] void *v15; // [esp+5Ch] [ebp-2Ch] BYREF int v16; // [esp+60h] [ebp-28h] int v17; // [esp+64h] [ebp-24h] void *v18; // [esp+68h] [ebp-20h] BYREF size_t v19; // [esp+6Ch] [ebp-1Ch] char v20[24]; // [esp+70h] [ebp-18h] BYREF v12 = 0; v13 = 0; v3 = a2[1] == 0; v14 = 0; v15 = 0; v16 = 0; v17 = 0; if ( v3 || *(_BYTE *)*a2 != 47 ) { MMBizWxaAppComm::SplitBySlash(a1, (void **)&v12); v4 = a1[1]; if ( v4 ) { if ( *(_BYTE *)(*a1 + v4 - 1) != 47 ) { v13 -= 6; std::string::_M_dispose(v13); } } } MMBizWxaAppComm::SplitBySlash(a2, &v15); for ( lpuexcpt = 0; (unsigned int)lpuexcpt < -1431655765 * ((v16 - (int)v15) >> 3); lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) { v9 = 24 * (_DWORD)lpuexcpt; if ( !std::string::compare((int)v15 + 24 * (_DWORD)lpuexcpt, "..") ) { if ( v12 != v13 ) { v13 -= 6; std::string::_M_dispose(v13); } } else if ( std::string::compare((int)v15 + v9, ".") ) { if ( v13 == (void **)v14 ) { std::vector::_M_realloc_insert((void **)&v12, (char *)v13, (int)v15 + v9); } else { std::string::basic_string((char *)v13, (int)v15 + v9); v13 += 6; } } } if ( a1[1] && *(_BYTE *)*a1 == 47 || a2[1] && *(_BYTE *)*a2 == 47 ) v8 = "/"; else v8 = (char *)&unk_551F01; std::string::operator=(a3, v8); for ( lpuexcpta = 0; (unsigned int)lpuexcpta < -1431655765 * (((char *)v13 - (char *)v12) >> 3); lpuexcpta = (struct _Unwind_Exception *)((char *)lpuexcpta + 1) ) { if ( lpuexcpta ) { v18 = v20; std::string::_S_copy_chars(v20, "/", (size_t)""); v19 = 1; *((_BYTE *)v18 + 1) = 0; std::string::_M_append(a3, v18, v19); std::string::_M_dispose(&v18); } std::string::_M_append(a3, v12[6 * (_DWORD)lpuexcpta], (size_t)v12[6 * (_DWORD)lpuexcpta + 1]); } std::vector::~vector((void ***)&v15, v5); std::vector::~vector(&v12, v6); return 0; } // 40E2B1: variable 'v5' is possibly undefined // 40E2B9: variable 'v6' is possibly undefined //----- (0040E2D0) -------------------------------------------------------- void __tcf_1_0(void) { std::string::_M_dispose(&night::nsv_); } // 565DF0: using guessed type void *night::nsv_; //----- (0040E2DA) -------------------------------------------------------- void __tcf_2_0(void) { std::string::_M_dispose((void **)&night::nst_); } //----- (0040E2E4) -------------------------------------------------------- void __tcf_3_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); } //----- (0040E2EE) -------------------------------------------------------- void __tcf_4_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); } //----- (0040E2F8) -------------------------------------------------------- void __tcf_5_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_VAR); } //----- (0040E302) -------------------------------------------------------- void __tcf_6_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_STR); } //----- (0040E30C) -------------------------------------------------------- void __tcf_7_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_NUM); } //----- (0040E316) -------------------------------------------------------- void __tcf_8_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); } //----- (0040E320) -------------------------------------------------------- void __tcf_9_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_KW); } //----- (0040E32A) -------------------------------------------------------- void __tcf_10_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); } //----- (0040E334) -------------------------------------------------------- void __tcf_11_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OP); } //----- (0040E33E) -------------------------------------------------------- void __tcf_12_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); } //----- (0040E348) -------------------------------------------------------- void __tcf_13_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); } //----- (0040E352) -------------------------------------------------------- void __tcf_14_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); } //----- (0040E35C) -------------------------------------------------------- void __tcf_15_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); } //----- (0040E366) -------------------------------------------------------- void __tcf_16_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_K_V); } //----- (0040E370) -------------------------------------------------------- void __tcf_17_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); } //----- (0040E37A) -------------------------------------------------------- void __tcf_18_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); } //----- (0040E384) -------------------------------------------------------- void __tcf_19_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); } //----- (0040E38E) -------------------------------------------------------- void __tcf_20_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); } //----- (0040E398) -------------------------------------------------------- void __tcf_21_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); } //----- (0040E3A2) -------------------------------------------------------- void __tcf_22_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); } //----- (0040E3AC) -------------------------------------------------------- void __tcf_23_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_IF); } //----- (0040E3B6) -------------------------------------------------------- void __tcf_24_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_FOR); } //----- (0040E3C0) -------------------------------------------------------- void __tcf_25_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); } //----- (0040E3CA) -------------------------------------------------------- void __tcf_26_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); } //----- (0040E3D4) -------------------------------------------------------- void __tcf_27_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); } //----- (0040E3DE) -------------------------------------------------------- void __tcf_28_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PROG); } //----- (0040E3E8) -------------------------------------------------------- void __tcf_29_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); } //----- (0040E3F2) -------------------------------------------------------- void __tcf_30_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); } //----- (0040E3FC) -------------------------------------------------------- void __tcf_31_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); } //----- (0040E406) -------------------------------------------------------- void __tcf_32_0(void) { std::string::_M_dispose((void **)&night::NS_TYPE_CALL); } //----- (0040E410) -------------------------------------------------------- void __tcf_33_0(void) { std::string::_M_dispose((void **)night::NS_BUILTIN_OP); } // 565AF0: using guessed type int night::NS_BUILTIN_OP[6]; //----- (0040E41A) -------------------------------------------------------- void __tcf_34_0(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); } //----- (0040E424) -------------------------------------------------------- void __tcf_35_0(void) { std::string::_M_dispose((void **)night::NS_BUILTIN_ALL_OP); } // 565AC0: using guessed type int night::NS_BUILTIN_ALL_OP[6]; //----- (0040E42E) -------------------------------------------------------- void __tcf_36_0(void) { std::string::_M_dispose((void **)night::NS_BUILTIN_PUNC); } // 565AA8: using guessed type int night::NS_BUILTIN_PUNC[6]; //----- (0040E438) -------------------------------------------------------- void __tcf_37_0(void) { std::string::_M_dispose((void **)night::NS_BUILTIN_SPACE); } // 565A90: using guessed type int night::NS_BUILTIN_SPACE[6]; //----- (0040E442) -------------------------------------------------------- void __tcf_38_0(void) { std::string::_M_dispose((void **)night::NS_BUILTIN_KW); } // 565A78: using guessed type int night::NS_BUILTIN_KW[6]; //----- (0040E44C) -------------------------------------------------------- void __tcf_39_0(void) { std::string::_M_dispose((void **)night::NS_BUILTIN_TYPE); } // 565A60: using guessed type int night::NS_BUILTIN_TYPE[6]; //----- (0040E456) -------------------------------------------------------- void __tcf_40_0(void) { std::string::_M_dispose((void **)&night::std_v_n); } //----- (0040E460) -------------------------------------------------------- void __tcf_41_0(void) { std::string::_M_dispose((void **)&night::std_v_v_n); } //----- (0040E46A) -------------------------------------------------------- unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) { unsigned __int8 *v3; // eax unsigned __int8 *v4; // ecx unsigned __int8 *v5; // edx unsigned __int8 *v6; // eax unsigned __int8 *v7; // edx unsigned __int8 *result; // eax unsigned __int8 *v9; // [esp+18h] [ebp-20h] v3 = *this; v4 = *(unsigned __int8 **)a2; v5 = *(unsigned __int8 **)(a2 + 4); if ( *(_DWORD *)a2 == a2 + 8 ) { if ( v5 ) std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); v6 = *(unsigned __int8 **)(a2 + 4); v7 = *this; this[1] = v6; v6[(_DWORD)v7] = 0; } else { if ( v3 == (unsigned __int8 *)(this + 2) ) v3 = 0; else v9 = this[2]; *this = v4; this[1] = v5; this[2] = *(unsigned __int8 **)(a2 + 8); if ( v3 ) { *(_DWORD *)a2 = v3; *(_DWORD *)(a2 + 8) = v9; } else { *(_DWORD *)a2 = a2 + 8; } } result = *(unsigned __int8 **)a2; *(_DWORD *)(a2 + 4) = 0; *result = 0; return result; } // 40E4D1: variable 'v9' is possibly undefined //----- (0040E4FE) -------------------------------------------------------- unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) { size_t v2; // eax v2 = strlen(Str); return std::string::_M_replace(this, 0, this[1], Str, v2); } //----- (0040E53B) -------------------------------------------------------- int __usercall night::NSToken::tk_is_var_start@(int a1@) { unsigned int v1; // edx v1 = (a1 & 0xFFFFFFDF) - 65; LOBYTE(v1) = (unsigned __int8)v1 <= 0x19u; LOBYTE(a1) = (_BYTE)a1 == 95; return v1 | a1; } //----- (0040E552) -------------------------------------------------------- void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-18h] while ( a1 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::string::_M_dispose((void **)(a1 + 20)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (0040E586) -------------------------------------------------------- void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-18h] while ( a1 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::string::_M_dispose((void **)(a1 + 16)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (0040E5BA) -------------------------------------------------------- #error "40E664: call analysis failed (funcsize=61)" //----- (0040E69E) -------------------------------------------------------- int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>@( int a1@, int a2@) { int i; // eax int v4; // [esp+1Ch] [ebp-4Ch] int v6; // [esp+20h] [ebp-48h] struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-44h] int v9; // [esp+28h] [ebp-40h] v9 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); *(_DWORD *)(v9 + 4) = a2; if ( *(_DWORD *)(a1 + 12) ) *(_DWORD *)(v9 + 12) = ((int (*)(void))std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>)(); lpuexcpta = *(struct _Unwind_Exception **)(a1 + 8); for ( i = v9; ; i = v6 ) { v4 = i; if ( !lpuexcpta ) break; v6 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); *(_DWORD *)(v4 + 8) = v6; *(_DWORD *)(v6 + 4) = v4; if ( *((_DWORD *)lpuexcpta + 3) ) *(_DWORD *)(v6 + 12) = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( v6, v6); lpuexcpta = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpta + 2); } return v9; } // 40E5BA: 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); //----- (0040E7BE) -------------------------------------------------------- #error "40E865: call analysis failed (funcsize=60)" //----- (0040E8A0) -------------------------------------------------------- int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>@( int a1@, int a2@) { int i; // eax int v4; // [esp+1Ch] [ebp-4Ch] int v6; // [esp+20h] [ebp-48h] struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-44h] int v9; // [esp+28h] [ebp-40h] v9 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); *(_DWORD *)(v9 + 4) = a2; if ( *(_DWORD *)(a1 + 12) ) *(_DWORD *)(v9 + 12) = ((int (*)(void))std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>)(); lpuexcpta = *(struct _Unwind_Exception **)(a1 + 8); for ( i = v9; ; i = v6 ) { v4 = i; if ( !lpuexcpta ) break; v6 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); *(_DWORD *)(v4 + 8) = v6; *(_DWORD *)(v6 + 4) = v4; if ( *((_DWORD *)lpuexcpta + 3) ) *(_DWORD *)(v6 + 12) = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( v6, v6); lpuexcpta = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpta + 2); } return v9; } // 40E7BE: 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); //----- (0040E9C0) -------------------------------------------------------- size_t __thiscall std::string::basic_string(void **this, char *Str) { char *v3; // edi size_t result; // eax _BYTE *v5; // edx size_t v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v6[0] = strlen(Str); v3 = &Str[v6[0]]; if ( v6[0] > 0xF ) { *this = std::string::_M_create(v6, 0); this[2] = (void *)v6[0]; } std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); result = v6[0]; v5 = *this; this[1] = (void *)v6[0]; v5[result] = 0; return result; } // 40E9C0: using guessed type size_t var_1C[7]; //----- (0040EA3E) -------------------------------------------------------- void __thiscall night::NSStream::NSStream(_DWORD *this, int a2, int a3, int a4) { int v4; // [esp+14h] [ebp-44h] this[1] = 0; *this = this + 2; *((_BYTE *)this + 8) = 0; v4 = (int)(this + 6); this[7] = 0; this[6] = this + 8; *((_BYTE *)this + 32) = 0; std::string::_M_assign((int)this, a2); std::string::_M_assign(v4, a3); this[12] = 0; this[14] = 1; this[13] = a4; } //----- (0040EB14) -------------------------------------------------------- _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 { *ecx0 = 0; ecx0[1] = 0; ecx0[2] = 0; } return ecx0; } //----- (0040EB9C) -------------------------------------------------------- _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 { *ecx0 = 0; ecx0[1] = 0; ecx0[2] = 0; } return ecx0; } //----- (0040EBF0) -------------------------------------------------------- _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 { *ecx0 = 0; ecx0[1] = 0; ecx0[2] = 0; } return ecx0; } //----- (0040EC50) -------------------------------------------------------- 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; } // 40EC50: using guessed type int var_14[5]; //----- (0040EC6C) -------------------------------------------------------- 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; } // 40EC6C: using guessed type int var_14[5]; //----- (0040EC88) -------------------------------------------------------- void __thiscall __noreturn night::NSStream::err(_DWORD *this, int a2, unsigned int a3, unsigned int a4, char a5) { _DWORD *v5; // eax _DWORD *v6; // eax _DWORD *v7; // eax struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-90h] int v10[2]; // [esp+58h] [ebp-50h] BYREF char v11; // [esp+60h] [ebp-48h] BYREF void *v12[6]; // [esp+70h] [ebp-38h] BYREF void *v13[8]; // [esp+88h] [ebp-20h] BYREF v11 = 0; v10[0] = (int)&v11; v10[1] = 0; std::string::basic_string((char *)v13, (int)this); std::string::append(v13, ":"); std::string::operator+=(v13); std::string::_M_dispose(v13); if ( a5 ) { std::to_string((std::__cxx11 *)v12, a3); v5 = std::string::append(v12, ":"); std::string::basic_string(v13, v5); std::string::operator+=(v13); std::string::_M_dispose(v13); std::string::_M_dispose(v12); std::to_string((std::__cxx11 *)v12, a4); } else { std::to_string((std::__cxx11 *)v12, this[13] + a3); v7 = std::string::append(v12, ":"); std::string::basic_string(v13, v7); std::string::operator+=(v13); std::string::_M_dispose(v13); std::string::_M_dispose(v12); std::to_string((std::__cxx11 *)v12, this[14] + a4); } v6 = std::string::append(v12, ":"); std::string::basic_string(v13, v6); std::string::operator+=(v13); std::string::_M_dispose(v13); std::string::_M_dispose(v12); std::string::operator+=(a2); lpuexcpta = (struct _Unwind_Exception *)__cxa_allocate_exception(0x18u); std::string::basic_string(lpuexcpta, v10); __cxa_throw(lpuexcpta, (struct type_info *)&`typeinfo for'std::string, (void (__cdecl *)(void *))std::string::~string); } // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 55BB98: using guessed type int *`typeinfo for'std::string; //----- (0040EFA6) -------------------------------------------------------- void __userpurge __noreturn night::NSToken::err(int a1@, int a2, unsigned int a3, unsigned int a4, char a5) { night::NSStream::err(*(_DWORD **)(a1 + 4), a2, a3, a4, a5); } //----- (0040EFD0) -------------------------------------------------------- int __thiscall night::NSToken::read_while[abi:cxx11]( int this, int a2, unsigned __int8 (__cdecl *a3)(_DWORD, int), int a4) { _DWORD v6[5]; // [esp+54h] [ebp-14h] BYREF *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = this + 8; *(_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; } //----- (0040F0B0) -------------------------------------------------------- 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); } //----- (0040F0DE) -------------------------------------------------------- _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)); } //----- (0040F120) -------------------------------------------------------- unsigned __int8 __thiscall night::NSToken::skip_comment(night::NSStream **this, unsigned __int8 **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, (int)v5); std::string::_M_dispose(v5); } return result; } //----- (0040F210) -------------------------------------------------------- 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((char *)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_552620, v3) ) { v2 = std::operator==("Infinity", v3); goto LABEL_22; } } v2 = 1; LABEL_22: v4 = v2; std::string::_M_dispose(v5); return v4; } return result; } //----- (0040F3F4) -------------------------------------------------------- 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((char *)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_552620, v3) ) { v2 = std::operator==("Infinity", v3); goto LABEL_26; } } v2 = 1; LABEL_26: v4 = v2; std::string::_M_dispose(v5); return v4; } return result; } //----- (0040F638) -------------------------------------------------------- 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((char *)v7, v3); if ( std::operator==((int)v7, (int)&night::std_v_n) ) { v4 = *(void ***)(v3 + 24); LABEL_6: if ( !v4 ) goto LABEL_12; if ( *v4 ) operator delete(*v4); goto LABEL_11; } v5 = std::operator==((int)v7, (int)&night::std_v_v_n); v4 = *(void ***)(v3 + 24); if ( v5 ) goto LABEL_6; if ( !v4 ) goto LABEL_12; 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); LABEL_11: operator delete(v4); LABEL_12: std::string::_M_dispose((void **)v3); operator delete((void *)v3); std::string::_M_dispose(v7); } return result; } //----- (0040F72A) -------------------------------------------------------- _DWORD *__thiscall night::NSGod::gen_son(void *this, int a2) { _DWORD *v3; // eax _DWORD *v4; // ebx int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF v3 = operator new(0x1Cu); *v3 = v3 + 2; v3[1] = 0; *((_BYTE *)v3 + 8) = 0; v6[0] = (int)v3; std::string::_M_assign((int)v3, a2); v4 = operator new(0xF8u); *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 *)(v6[0] + 24) = v4; std::vector::push_back((int)this, v6); return v4; } // 40F72A: using guessed type int var_1C[7]; //----- (0040F8E2) -------------------------------------------------------- struct _Unwind_Exception *__thiscall night::NSToken::read_string(night::NSStream **this, char a2, int a3) { bool v4; // [esp+16h] [ebp-82h] bool i; // [esp+17h] [ebp-81h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-80h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-80h] int v9[3]; // [esp+54h] [ebp-44h] BYREF void *v10[2]; // [esp+60h] [ebp-38h] BYREF char v11; // [esp+68h] [ebp-30h] BYREF void *v12[8]; // [esp+78h] [ebp-20h] BYREF night::NSStream::next(v12, this[1]); v11 = 0; v10[0] = &v11; v10[1] = 0; for ( i = 0; ; i = v4 ) { v4 = night::NSStream::eof(this[1]); if ( v4 ) break; night::NSStream::next(v9, this[1]); if ( LOBYTE(v9[0]) == 10 ) { if ( !i ) { 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 ( !i ) { if ( LOBYTE(v9[0]) == 92 ) { v4 = 1; std::string::push_back(v10, 92); continue; } if ( LOBYTE(v9[0]) == a2 ) break; } std::string::push_back(v10, v9[0]); } } lpuexcpta = *this; std::string::basic_string((char *)v12, (int)&night::NS_TYPE_STR); lpuexcptb = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v12); std::string::_M_dispose(v12); WXML::Rewrite::ToStringCode((int)v12, (int *)v10); std::string::operator=((unsigned __int8 **)lpuexcptb + 15, (int)v12); std::string::_M_dispose(v12); std::string::_M_replace_aux((_DWORD *)lpuexcptb + 27, 0, *((_DWORD *)lpuexcptb + 28), 1u, a2); std::string::_M_assign((int)lpuexcptb + 84, a3); std::string::_M_dispose(v10); return lpuexcptb; } // 40F8E2: using guessed type int var_44[3]; //----- (0040FB50) -------------------------------------------------------- struct _Unwind_Exception *__thiscall night::NSToken::read_number(night::NSStream **this, int a2) { _DWORD *v2; // eax char v4; // [esp+14h] [ebp-B4h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-B0h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-B0h] char v8; // [esp+5Fh] [ebp-69h] BYREF void *v9[6]; // [esp+60h] [ebp-68h] BYREF _DWORD v10[6]; // [esp+78h] [ebp-50h] BYREF int v11[2]; // [esp+90h] [ebp-38h] BYREF char v12; // [esp+98h] [ebp-30h] BYREF int v13[8]; // [esp+A8h] [ebp-20h] 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]); v4 = v13[0]; if ( (unsigned __int8)night::NSToken::tk_is_var_start(SLOBYTE(v13[0])) ) { v11[0] = (int)&v12; std::string::_M_construct(v11, 1u, v4); std::operator+(v13, "Unexpected token `", (unsigned int *)v11); v2 = std::string::append(v13, "`"); std::string::basic_string(v10, v2); std::string::_M_dispose((void **)v13); std::string::_M_dispose((void **)v11); night::NSStream::err(this[1], (int)v10, 0, 0, 0); } lpuexcpta = *this; std::string::basic_string((char *)v13, (int)&night::NS_TYPE_NUM); lpuexcptb = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v13); std::string::_M_dispose((void **)v13); std::string::_M_assign((int)lpuexcptb + 60, (int)v9); std::string::_M_assign((int)lpuexcptb + 84, a2); std::string::_M_dispose(v9); return lpuexcptb; } // 40FB50: using guessed type _DWORD var_50[6]; //----- (0040FDB8) -------------------------------------------------------- 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 _DWORD *v9; // [esp+1Ch] [ebp-Ch] BYREF v3 = operator new(0x1Cu); *v3 = v3 + 2; v3[1] = 0; *((_BYTE *)v3 + 8) = 0; v9 = v3; std::string::_M_assign((int)v3, a2); if ( std::operator==((int)&night::std_v_n, a2) ) { v4 = operator new(0xCu); v5 = (int)v9; *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(0xCu); v7 = (int)v9; *v6 = 0; v6[1] = 0; v6[2] = 0; *(_DWORD *)(v7 + 24) = v6; } std::vector::push_back((int)this, &v9); return v9[6]; } //----- (0040FE80) -------------------------------------------------------- void __thiscall night::NSToken::push(int this, int a2) { if ( *(_DWORD *)(this + 8) ) { std::vector::push_back((void **)(this + 12), (char **)(this + 8)); *(_DWORD *)(this + 8) = 0; } if ( a2 ) std::vector::push_back((void **)(this + 12), (char **)&a2); } //----- (0040FEC2) -------------------------------------------------------- struct _Unwind_Exception *__thiscall night::NSToken::read_var(int this, int a2) { _DWORD *v2; // eax _DWORD *v3; // eax void *v4; // eax unsigned int v6; // [esp+10h] [ebp-B8h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-B0h] struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-B0h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-B0h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-B0h] _DWORD v12[3]; // [esp+54h] [ebp-74h] BYREF void *v13[6]; // [esp+60h] [ebp-68h] BYREF int v14[6]; // [esp+78h] [ebp-50h] BYREF int v15[6]; // [esp+90h] [ebp-38h] BYREF void *v16[8]; // [esp+A8h] [ebp-20h] 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((char *)v14, (int)v13); std::operator+((int)v15, " ", (int)v14); v2 = std::string::append(v15, " "); std::string::basic_string(v16, v2); lpuexcptb = (struct _Unwind_Exception *)std::string::find(night::NS_BUILTIN_TYPE, (int)v16, 0); std::string::_M_dispose(v16); std::string::_M_dispose((void **)v15); std::string::_M_dispose((void **)v14); if ( lpuexcptb == (struct _Unwind_Exception *)-1 ) { std::string::basic_string((char *)v14, (int)v13); std::operator+((int)v15, " ", (int)v14); v3 = std::string::append(v15, " "); std::string::basic_string(v16, v3); v6 = std::string::find(night::NS_BUILTIN_KW, (int)v16, 0); std::string::_M_dispose(v16); std::string::_M_dispose((void **)v15); std::string::_M_dispose((void **)v14); lpuexcpta = *(struct _Unwind_Exception **)this; v4 = &night::NS_TYPE_KW; if ( v6 == -1 ) v4 = &night::NS_TYPE_VAR; std::string::basic_string((char *)v16, (int)v4); lpuexcpt = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v16); std::string::_M_dispose(v16); if ( v6 == -1 ) std::operator+((char *)v16, (int)&night::nsv_, (int)v13); else std::string::basic_string((char *)v16, (int)v13); std::string::operator=((unsigned __int8 **)lpuexcpt + 15, (int)v16); std::string::_M_dispose(v16); std::string::_M_assign((int)lpuexcpt + 24, (int)v13); std::string::_M_assign((int)lpuexcpt + 84, a2); *((_DWORD *)lpuexcpt + 12) = v12[1]; *((_DWORD *)lpuexcpt + 13) = v12[2]; if ( !*std::map::operator[]((void **)(this + 24), (int)v13) ) *std::map::operator[]((void **)(this + 24), (int)v13) = *(void **)(this + 44); } else { lpuexcptc = *(struct _Unwind_Exception **)this; std::string::basic_string((char *)v16, (int)&night::NS_TYPE_B_TYPE); lpuexcpt = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcptc, (int)v16); std::string::_M_dispose(v16); std::string::_M_assign((int)lpuexcpt + 60, (int)v13); std::string::_M_assign((int)lpuexcpt + 84, a2); } std::string::_M_dispose(v13); return lpuexcpt; } // 565A60: using guessed type int night::NS_BUILTIN_TYPE[6]; // 565A78: using guessed type int night::NS_BUILTIN_KW[6]; //----- (004102F0) -------------------------------------------------------- unsigned __int8 **__fastcall night::NSToken::read_next(int a1) { int v1; // eax struct _Unwind_Exception *string; // eax _DWORD *v3; // eax unsigned int v5; // [esp+10h] [ebp-B8h] unsigned int v6; // [esp+10h] [ebp-B8h] unsigned __int8 **v7; // [esp+14h] [ebp-B4h] char v8; // [esp+14h] [ebp-B4h] night::NSStream *v9; // [esp+14h] [ebp-B4h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-B0h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-B0h] int v13[3]; // [esp+54h] [ebp-74h] BYREF void *v14[6]; // [esp+60h] [ebp-68h] BYREF int v15[2]; // [esp+78h] [ebp-50h] BYREF char v16[16]; // [esp+80h] [ebp-48h] BYREF int v17[2]; // [esp+90h] [ebp-38h] BYREF char v18; // [esp+98h] [ebp-30h] BYREF void *v19[2]; // [esp+A8h] [ebp-20h] BYREF char v20; // [esp+B0h] [ebp-18h] BYREF v1 = *(_DWORD *)(a1 + 16); if ( v1 == *(_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, (unsigned __int8 **)v14), night::NSStream::eof(*(night::NSStream **)(a1 + 4))) ) { v7 = 0; } else { night::NSStream::peek(v13, *(night::NSStream **)(a1 + 4)); v8 = 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])) ) { v17[0] = (int)&v18; std::string::_M_construct(v17, 1u, v8); v5 = std::string::find(night::NS_BUILTIN_PUNC, (int)v17, 0); std::string::_M_dispose((void **)v17); if ( v5 == -1 ) { v19[0] = &v20; std::string::_M_construct(v19, 1u, v8); v6 = std::string::find(night::NS_BUILTIN_OP, (int)v19, 0); std::string::_M_dispose(v19); if ( v6 == -1 ) { v15[0] = (int)v16; lpuexcptb = *(struct _Unwind_Exception **)(a1 + 4); std::string::_M_construct(v15, 1u, v8); std::operator+(v17, "Unexpected token `", (unsigned int *)v15); v3 = std::string::append(v17, "`"); std::string::basic_string(v19, v3); night::NSStream::err(lpuexcptb, (int)v19, 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); lpuexcpta = *(struct _Unwind_Exception **)a1; std::string::basic_string((char *)v19, (int)&night::NS_TYPE_OP); v7 = (unsigned __int8 **)night::NSGod::gen_son(lpuexcpta, (int)v19); std::string::_M_dispose(v19); std::string::_M_assign((int)(v7 + 15), (int)v17); std::string::_M_assign((int)(v7 + 21), (int)v14); std::string::_M_dispose((void **)v17); std::string::_M_dispose((void **)v15); } else { v9 = *(night::NSStream **)a1; std::string::basic_string((char *)v19, (int)&night::NS_TYPE_PUNC); v7 = (unsigned __int8 **)night::NSGod::gen_son(v9, (int)v19); std::string::_M_dispose(v19); night::NSStream::next(v19, *(night::NSStream **)(a1 + 4)); v15[0] = (int)v16; std::string::_M_construct(v15, 1u, (char)v19[0]); std::string::operator=(v7 + 15, (int)v15); std::string::_M_dispose((void **)v15); std::string::_M_assign((int)(v7 + 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); } v7 = (unsigned __int8 **)string; } LABEL_19: std::string::_M_dispose(v14); return v7; } v7 = *(unsigned __int8 ***)(v1 - 4); *(_DWORD *)(a1 + 16) = v1 - 4; return v7; } // 565AA8: using guessed type int night::NS_BUILTIN_PUNC[6]; // 565AF0: using guessed type int night::NS_BUILTIN_OP[6]; // 4102F0: using guessed type int var_74[3]; //----- (0041081E) -------------------------------------------------------- unsigned __int8 **__fastcall night::NSToken::peek(int a1) { unsigned __int8 **result; // eax result = *(unsigned __int8 ***)(a1 + 8); if ( !result ) { result = night::NSToken::read_next(a1); *(_DWORD *)(a1 + 8) = result; } return result; } //----- (0041083A) -------------------------------------------------------- bool __fastcall night::NSToken::eof(int a1) { return night::NSToken::peek(a1) == 0; } //----- (0041084C) -------------------------------------------------------- unsigned __int8 **__thiscall night::NSASTParse::is_punctuation(int *this, int a2) { unsigned __int8 **v2; // eax unsigned __int8 **v3; // ebx v2 = night::NSToken::peek(this[7]); v3 = v2; if ( v2 ) { if ( std::operator==((int)&night::NS_TYPE_PUNC, (int)v2) ) { if ( !std::operator==(a2, (int)(v3 + 15)) ) return 0; } else { return 0; } } return v3; } //----- (004108A0) -------------------------------------------------------- unsigned __int8 **__thiscall night::NSASTParse::is_buildin_keywords(int *this, int a2) { unsigned __int8 **v2; // eax unsigned __int8 **v3; // ebx v2 = night::NSToken::peek(this[7]); v3 = v2; if ( v2 ) { if ( std::operator==((int)&night::NS_TYPE_KW, (int)v2) ) { if ( !std::operator==(a2, (int)(v3 + 15)) ) return 0; } else { return 0; } } return v3; } //----- (004108F4) -------------------------------------------------------- unsigned __int8 **__thiscall night::NSASTParse::is_op(int *this, int a2) { unsigned __int8 **v2; // eax unsigned __int8 **v3; // ebx v2 = night::NSToken::peek(this[7]); v3 = v2; if ( v2 ) { if ( std::operator==((int)&night::NS_TYPE_OP, (int)v2) ) { if ( *(_DWORD *)(a2 + 4) && !std::operator==(a2, (int)(v3 + 15)) ) return 0; } else { return 0; } } return v3; } //----- (00410950) -------------------------------------------------------- unsigned __int8 **__thiscall night::NSASTParse::is_op_or_comma(int *this, int a2) { unsigned __int8 **lpuexcpt; // [esp+18h] [ebp-60h] void *v5[8]; // [esp+58h] [ebp-20h] BYREF std::string::basic_string(v5, ","); lpuexcpt = night::NSASTParse::is_punctuation(this, (int)v5); std::string::_M_dispose(v5); if ( !lpuexcpt ) return night::NSASTParse::is_op(this, a2); std::string::_M_assign((int)lpuexcpt, (int)&night::NS_TYPE_OP); return lpuexcpt; } //----- (00410A24) -------------------------------------------------------- int __fastcall night::NSASTParse::end_line(int a1) { unsigned __int8 **v1; // eax int v2; // edx v1 = night::NSToken::peek(*(_DWORD *)(a1 + 28)); LOBYTE(v2) = 1; if ( v1 ) LOBYTE(v2) = std::string::find((int *)v1 + 21, 10, 0) + 1 != 0; return v2; } // 410A56: variable 'v2' is possibly undefined //----- (00410A5A) -------------------------------------------------------- int __userpurge night::NSASTParse::is_op_self@(int a1@, night::NSASTParse *this, bool a3) { unsigned __int8 **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==("-", v5 + 60) ) { LOBYTE(v7) = std::operator==("+", v5 + 60); return v7; } return v4; } // 410A8B: variable 'v6' is possibly undefined // 410AED: variable 'v7' is possibly undefined //----- (00410AFC) -------------------------------------------------------- bool __userpurge night::NSASTParse::is_obj_op_self@(int *a1@, night::NSASTParse *this, bool a3) { unsigned __int8 **v3; // eax bool lpuexcpt; // [esp+18h] [ebp-70h] void *v7[6]; // [esp+50h] [ebp-38h] BYREF void *v8[8]; // [esp+68h] [ebp-20h] BYREF if ( (_BYTE)this ) { v3 = night::NSToken::peek(a1[7]); if ( v3 ) { if ( std::string::find((int *)v3 + 21, 10, 0) != (char *)-1 ) return 0; } } std::string::basic_string(v7, "++"); lpuexcpt = 1; if ( !night::NSASTParse::is_op(a1, (int)v7) ) { std::string::basic_string(v8, "--"); lpuexcpt = night::NSASTParse::is_op(a1, (int)v8) != 0; std::string::_M_dispose(v8); } std::string::_M_dispose(v7); return lpuexcpt; } //----- (00410C40) -------------------------------------------------------- unsigned __int8 **__fastcall night::NSToken::next(int a1) { unsigned __int8 **result; // eax result = *(unsigned __int8 ***)(a1 + 8); *(_DWORD *)(a1 + 8) = 0; if ( !result ) return night::NSToken::read_next(a1); return result; } //----- (00410C56) -------------------------------------------------------- void __thiscall night::NSASTParse::ignore_punc_pass_sem(int *this, int a2) { _DWORD *v2; // eax _DWORD *v3; // [esp+10h] [ebp-98h] unsigned __int8 **v4; // [esp+14h] [ebp-94h] bool v5; // [esp+14h] [ebp-94h] unsigned int v6; // [esp+14h] [ebp-94h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-90h] int v9[6]; // [esp+58h] [ebp-50h] BYREF int v10[6]; // [esp+70h] [ebp-38h] BYREF void *v11[8]; // [esp+88h] [ebp-20h] BYREF if ( night::NSASTParse::is_punctuation(this, a2) ) { night::NSToken::next(this[7]); } else if ( !std::operator==(";", a2) ) { v4 = night::NSToken::peek(this[7]); std::string::basic_string((void **)v9, " "); if ( v4 ) { v3 = v4 + 15; if ( (unsigned int)v4[16] > 3 && (std::string::substr(v11, v3, 0, 3u), v5 = std::operator==((int)v11, (int)&night::nsv_), std::string::_M_dispose(v11), v5) ) { std::string::substr(v11, v3, 3u, 0xFFFFFFFF); std::string::operator=((unsigned __int8 **)v9, (int)v11); std::string::_M_dispose(v11); } else { std::string::_M_assign((int)v9, (int)v3); } v6 = -v9[1]; } else { v6 = 0; } lpuexcpta = (struct _Unwind_Exception *)this[7]; std::operator+((int)v10, "Unexpected identifier `", (int)v9); v2 = std::string::append(v10, "`"); std::string::basic_string(v11, v2); night::NSToken::err((int)lpuexcpta, (int)v11, 0, v6, 0); } } //----- (00410EF0) -------------------------------------------------------- void __thiscall night::NSASTParse::ignore_punc(int *this, int a2) { unsigned __int8 **v2; // eax int v3; // ecx _DWORD *v4; // eax _DWORD *v6; // [esp+14h] [ebp-94h] int v7; // [esp+14h] [ebp-94h] unsigned __int8 **lpuexcpt; // [esp+18h] [ebp-90h] bool lpuexcptb; // [esp+18h] [ebp-90h] unsigned int lpuexcpta; // [esp+18h] [ebp-90h] int v11[6]; // [esp+58h] [ebp-50h] BYREF int v12[6]; // [esp+70h] [ebp-38h] BYREF void *v13[8]; // [esp+88h] [ebp-20h] BYREF v2 = night::NSASTParse::is_punctuation(this, a2); v3 = this[7]; if ( !v2 ) { lpuexcpt = night::NSToken::peek(v3); std::string::basic_string((void **)v11, " "); if ( lpuexcpt ) { v6 = lpuexcpt + 15; if ( (unsigned int)lpuexcpt[16] > 3 && (std::string::substr(v13, v6, 0, 3u), lpuexcptb = std::operator==((int)v13, (int)&night::nsv_), std::string::_M_dispose(v13), lpuexcptb) ) { std::string::substr(v13, v6, 3u, 0xFFFFFFFF); std::string::operator=((unsigned __int8 **)v11, (int)v13); std::string::_M_dispose(v13); } else { std::string::_M_assign((int)v11, (int)v6); } lpuexcpta = -v11[1]; } else { lpuexcpta = 0; } v7 = this[7]; std::operator+((int)v12, "Unexpected identifier `", (int)v11); v4 = std::string::append(v12, "`"); std::string::basic_string(v13, v4); night::NSToken::err(v7, (int)v13, 0, lpuexcpta, 0); } night::NSToken::next(v3); } //----- (00411166) -------------------------------------------------------- void __thiscall night::NSASTParse::ignore_buildin_kw(int *this, int a2) { unsigned __int8 **v2; // eax _DWORD *v3; // eax struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-70h] int v6[6]; // [esp+50h] [ebp-38h] BYREF _DWORD v7[8]; // [esp+68h] [ebp-20h] BYREF v2 = night::NSASTParse::is_buildin_keywords(this, a2); lpuexcpt = (struct _Unwind_Exception *)this[7]; if ( !v2 ) { std::operator+((int)v6, "Expected `", a2); v3 = std::string::append(v6, "`"); std::string::basic_string(v7, v3); night::NSToken::err((int)lpuexcpt, (int)v7, 0, 0, 0); } night::NSToken::next((int)lpuexcpt); } // 411166: using guessed type _DWORD var_20[8]; //----- (0041127E) -------------------------------------------------------- void __thiscall night::NSASTParse::ignore_op(int *this, int a2) { unsigned __int8 **v2; // eax _DWORD *v3; // eax struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-70h] int v6[6]; // [esp+50h] [ebp-38h] BYREF _DWORD v7[8]; // [esp+68h] [ebp-20h] BYREF v2 = night::NSASTParse::is_op(this, a2); lpuexcpt = (struct _Unwind_Exception *)this[7]; if ( !v2 ) { std::operator+((int)v6, "Expected operator `", a2); v3 = std::string::append(v6, "`"); std::string::basic_string(v7, v3); night::NSToken::err((int)lpuexcpt, (int)v7, 0, 0, 0); } night::NSToken::next((int)lpuexcpt); } // 41127E: using guessed type _DWORD var_20[8]; //----- (00411396) -------------------------------------------------------- struct _Unwind_Exception *__fastcall night::NSASTParse::ast_trans_kw(int *a1) { int v1; // ecx int v2; // eax struct _Unwind_Exception *v3; // eax _DWORD *v4; // eax unsigned __int8 **v5; // eax int v6; // eax night::NSASTParse *v7; // edx _DWORD *v8; // eax _DWORD *v9; // eax _DWORD *v10; // eax unsigned __int8 **v11; // eax _DWORD *v12; // eax _DWORD *v13; // eax _DWORD *v14; // eax _DWORD *v15; // eax night::NSASTParse *v17; // [esp+0h] [ebp-B8h] char v18; // [esp+17h] [ebp-A1h] unsigned int v19; // [esp+18h] [ebp-A0h] unsigned int v20; // [esp+1Ch] [ebp-9Ch] _DWORD *v21; // [esp+1Ch] [ebp-9Ch] void *v22; // [esp+1Ch] [ebp-9Ch] void **v23; // [esp+1Ch] [ebp-9Ch] unsigned __int8 **v24; // [esp+20h] [ebp-98h] int v25; // [esp+20h] [ebp-98h] int v26; // [esp+20h] [ebp-98h] void *v28; // [esp+24h] [ebp-94h] int v29; // [esp+24h] [ebp-94h] struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcpte; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcptc; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcptd; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcptf; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcptg; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcpth; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcpti; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcptj; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcptk; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcptl; // [esp+28h] [ebp-90h] int v43[6]; // [esp+68h] [ebp-50h] BYREF int v44[6]; // [esp+80h] [ebp-38h] BYREF void *v45[8]; // [esp+98h] [ebp-20h] BYREF v1 = a1[7]; v2 = *(_DWORD *)(v1 + 4); v19 = *(_DWORD *)(v2 + 52); v20 = *(_DWORD *)(v2 + 56); v24 = night::NSToken::next(v1); std::string::basic_string((char *)v43, (int)(v24 + 15)); if ( std::operator==("true", (int)v43) || std::operator==("false", (int)v43) ) { lpuexcpta = (struct _Unwind_Exception *)a1[6]; std::string::basic_string((char *)v45, (int)&night::NS_TYPE_BOOL); v3 = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v45); goto LABEL_31; } if ( std::operator==("null", (int)v43) || std::operator==("undefined", (int)v43) || std::operator==((char *)off_552620, (int)v43) || std::operator==("Infinity", (int)v43) ) { LABEL_50: lpuexcptl = (struct _Unwind_Exception *)a1[6]; std::string::basic_string((char *)v45, (int)&night::NS_TYPE_KW); lpuexcpt = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcptl, (int)v45); std::string::_M_dispose(v45); std::string::_M_assign((int)lpuexcpt + 24, (int)(v24 + 6)); *((_DWORD *)lpuexcpt + 12) = v24[12]; *((_DWORD *)lpuexcpt + 13) = v24[13]; std::string::_M_assign((int)lpuexcpt + 60, (int)v43); goto LABEL_51; } if ( std::operator==("return", (int)v43) || std::operator==("delete", (int)v43) || std::operator==("void", (int)v43) ) { if ( !std::string::compare((int)v43, "return") && a1[8] <= 0 ) { lpuexcpte = (struct _Unwind_Exception *)a1[7]; std::operator+((int)v44, "Illegal ", (int)v43); v4 = std::string::append(v44, " statement"); std::string::basic_string(v45, v4); night::NSToken::err((int)lpuexcpte, (int)v45, v19, v20, 1); } lpuexcptb = (struct _Unwind_Exception *)a1[6]; std::string::basic_string((char *)v45, (int)&night::NS_TYPE_VAR); v21 = night::NSGod::gen_son(lpuexcptb, (int)v45); std::string::_M_dispose(v45); std::string::_M_assign((int)(v21 + 15), (int)v43); std::string::_M_assign((int)(v21 + 6), (int)(v24 + 6)); v21[12] = v24[12]; v21[13] = v24[13]; lpuexcptc = (struct _Unwind_Exception *)a1[6]; std::string::basic_string((char *)v45, (int)&night::std_v_v_n); v25 = night::NSGod::gen_girl(lpuexcptc, (int)v45); std::string::_M_dispose(v45); lpuexcptd = (struct _Unwind_Exception *)a1[6]; std::string::basic_string((char *)v45, (int)&night::NS_TYPE_CALL); lpuexcpt = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcptd, (int)v45); std::string::_M_dispose(v45); *((_DWORD *)lpuexcpt + 55) = v21; *((_DWORD *)lpuexcpt + 56) = v25; v5 = night::NSToken::peek(a1[7]); if ( v5 && std::string::find((int *)v5 + 21, 10, 0) == (char *)-1 ) { v22 = (void *)a1[6]; std::string::basic_string((char *)v45, (int)&night::std_v_n); v6 = night::NSGod::gen_girl(v22, (int)v45); v17 = v7; v44[0] = v6; std::string::_M_dispose(v45); v23 = (void **)v44[0]; v45[0] = (void *)night::NSASTParse::ast_expression(v17); std::vector::emplace_back(v23, (char **)v45); } else { v28 = (void *)a1[6]; std::string::basic_string((char *)v45, (int)&night::std_v_n); v44[0] = night::NSGod::gen_girl(v28, (int)v45); std::string::_M_dispose(v45); } std::vector>>::push_back(v25, v44); goto LABEL_51; } if ( std::operator==("typeof", (int)v43) ) { lpuexcptf = (struct _Unwind_Exception *)a1[6]; std::string::basic_string((char *)v45, (int)&night::NS_TYPE_OP_SELF); lpuexcpt = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcptf, (int)v45); std::string::_M_dispose(v45); std::string::basic_string((char *)v45, (int)v43); std::string::append(v45, " "); std::string::operator=((unsigned __int8 **)lpuexcpt + 39, (int)v45); std::string::_M_dispose(v45); v8 = night::NSASTParse::ast_expression_no_binary(a1); *((_DWORD *)lpuexcpt + 48) = v8; if ( !night::NSASTParse::is_exp((int)v8) ) { v29 = a1[7]; std::operator+((int)v44, "Unexpected statement[", *((_DWORD *)lpuexcpt + 48)); v9 = std::string::append(v44, "]"); std::string::basic_string(v45, v9); night::NSToken::err(v29, (int)v45, v19, v20, 1); } goto LABEL_51; } if ( std::operator==("this", (int)v43) ) goto LABEL_30; if ( !std::operator==("arguments", (int)v43) ) { if ( !std::operator==("break", (int)v43) && !std::operator==("continue", (int)v43) ) { lpuexcpti = (struct _Unwind_Exception *)a1[7]; std::operator+((int)v44, "Unexpected token `", (int)v43); v15 = std::string::append(v44, "`"); std::string::basic_string(v45, v15); night::NSToken::err((int)lpuexcpti, (int)v45, v19, v20, 1); } if ( !std::string::compare((int)v43, "break") && a1[9] <= 0 || !std::string::compare((int)v43, "continue") && a1[10] <= 0 ) { lpuexcptj = (struct _Unwind_Exception *)a1[7]; std::operator+((int)v44, "Illegal ", (int)v43); v13 = std::string::append(v44, " statement"); std::string::basic_string(v45, v13); night::NSToken::err((int)lpuexcptj, (int)v45, v19, v20, 1); } v18 = night::NSASTParse::end_line((int)a1); if ( !v18 ) { std::string::basic_string((void **)v44, ";"); if ( !night::NSASTParse::is_punctuation(a1, (int)v44) ) { std::string::basic_string(v45, "}"); v18 = night::NSASTParse::is_punctuation(a1, (int)v45) == 0; std::string::_M_dispose(v45); } std::string::_M_dispose((void **)v44); if ( v18 ) { lpuexcptk = (struct _Unwind_Exception *)a1[7]; std::operator+((int)v44, "Unexpected token after `", (int)v43); v14 = std::string::append(v44, "`"); std::string::basic_string(v45, v14); night::NSToken::err((int)lpuexcptk, (int)v45, v19, v20, 1); } } goto LABEL_50; } if ( a1[8] <= 0 ) { lpuexcptg = (struct _Unwind_Exception *)a1[7]; std::operator+((int)v44, "Illegal ", (int)v43); v10 = std::string::append(v44, " statement"); std::string::basic_string(v45, v10); night::NSToken::err((int)lpuexcptg, (int)v45, v19, v20, 1); } LABEL_30: lpuexcpth = (struct _Unwind_Exception *)a1[6]; std::string::basic_string((char *)v45, (int)&night::NS_TYPE_KW); v3 = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpth, (int)v45); LABEL_31: lpuexcpt = v3; std::string::_M_dispose(v45); std::string::_M_assign((int)lpuexcpt + 60, (int)v43); std::string::_M_assign((int)lpuexcpt + 24, (int)(v24 + 6)); *((_DWORD *)lpuexcpt + 12) = v24[12]; *((_DWORD *)lpuexcpt + 13) = v24[13]; v11 = night::NSToken::peek(a1[7]); if ( v11 ) { v26 = (int)(v11 + 15); if ( std::operator==("[", (int)(v11 + 15)) ) { v12 = night::NSASTParse::ast_obj_op(a1, (int)lpuexcpt); LABEL_36: lpuexcpt = (struct _Unwind_Exception *)night::NSASTParse::make_call_or_just_expression(a1, v12); goto LABEL_51; } if ( std::operator==(".", v26) ) { v12 = night::NSASTParse::ast_obj_dot(a1, (int)lpuexcpt); goto LABEL_36; } } LABEL_51: std::string::_M_dispose((void **)v43); return lpuexcpt; } // 411877: variable 'v7' is possibly undefined //----- (004120C0) -------------------------------------------------------- _DWORD *__userpurge night::NSASTParse::ast_dispatch@(_DWORD *a1@, night::NSASTParse *this, bool a3) { int v3; // eax _DWORD *v4; // eax unsigned int *v5; // ecx unsigned __int8 **v6; // eax _DWORD *v7; // eax bool v9; // al bool v10; // dl _DWORD *v11; // eax _DWORD *v12; // eax unsigned __int8 **v13; // eax unsigned __int8 **v14; // eax _DWORD *v15; // eax char *v17; // [esp+0h] [ebp-1E8h] bool v18; // [esp+4h] [ebp-1E4h] bool v19; // [esp+4h] [ebp-1E4h] bool v20; // [esp+4h] [ebp-1E4h] bool v21; // [esp+1Eh] [ebp-1CAh] char v22; // [esp+1Fh] [ebp-1C9h] char v23; // [esp+20h] [ebp-1C8h] char v24; // [esp+21h] [ebp-1C7h] char v25; // [esp+22h] [ebp-1C6h] char v26; // [esp+23h] [ebp-1C5h] unsigned int v27; // [esp+24h] [ebp-1C4h] unsigned __int8 **v28; // [esp+24h] [ebp-1C4h] char v29; // [esp+24h] [ebp-1C4h] unsigned int v30; // [esp+28h] [ebp-1C0h] unsigned __int8 **v31; // [esp+28h] [ebp-1C0h] char v32; // [esp+28h] [ebp-1C0h] void *v33; // [esp+2Ch] [ebp-1BCh] void *v34; // [esp+2Ch] [ebp-1BCh] void *v35; // [esp+2Ch] [ebp-1BCh] void *v36; // [esp+2Ch] [ebp-1BCh] unsigned __int8 **v37; // [esp+2Ch] [ebp-1BCh] bool v38; // [esp+2Ch] [ebp-1BCh] int v39; // [esp+2Ch] [ebp-1BCh] int v40; // [esp+2Ch] [ebp-1BCh] int v41; // [esp+2Ch] [ebp-1BCh] unsigned __int8 **v42; // [esp+30h] [ebp-1B8h] void *v43; // [esp+30h] [ebp-1B8h] void **v44; // [esp+30h] [ebp-1B8h] unsigned __int8 **v45; // [esp+30h] [ebp-1B8h] bool v46; // [esp+30h] [ebp-1B8h] unsigned __int8 **v47; // [esp+30h] [ebp-1B8h] unsigned __int8 **v48; // [esp+30h] [ebp-1B8h] unsigned __int8 **v49; // [esp+30h] [ebp-1B8h] unsigned __int8 **v50; // [esp+30h] [ebp-1B8h] unsigned __int8 **v51; // [esp+30h] [ebp-1B8h] unsigned __int8 **v52; // [esp+30h] [ebp-1B8h] char v53; // [esp+30h] [ebp-1B8h] unsigned __int8 **v54; // [esp+30h] [ebp-1B8h] unsigned __int8 **v55; // [esp+30h] [ebp-1B8h] unsigned __int8 **v56; // [esp+30h] [ebp-1B8h] unsigned __int8 **v57; // [esp+30h] [ebp-1B8h] void *v58; // [esp+30h] [ebp-1B8h] unsigned __int8 **v59; // [esp+30h] [ebp-1B8h] int v61; // [esp+34h] [ebp-1B4h] int v62; // [esp+34h] [ebp-1B4h] int v63; // [esp+34h] [ebp-1B4h] int v64; // [esp+38h] [ebp-1B0h] _DWORD *v65; // [esp+38h] [ebp-1B0h] char is_op_self; // [esp+38h] [ebp-1B0h] bool v67[4]; // [esp+78h] [ebp-170h] BYREF int v68; // [esp+7Ch] [ebp-16Ch] void *v69[6]; // [esp+90h] [ebp-158h] BYREF void *v70[6]; // [esp+A8h] [ebp-140h] BYREF void *v71[6]; // [esp+C0h] [ebp-128h] BYREF void *v72[6]; // [esp+D8h] [ebp-110h] BYREF void *v73[6]; // [esp+F0h] [ebp-F8h] BYREF void *v74[6]; // [esp+108h] [ebp-E0h] BYREF void *v75[6]; // [esp+120h] [ebp-C8h] BYREF void *v76[6]; // [esp+138h] [ebp-B0h] BYREF void *v77[6]; // [esp+150h] [ebp-98h] BYREF void *v78[6]; // [esp+168h] [ebp-80h] BYREF void *v79[6]; // [esp+180h] [ebp-68h] BYREF void *v80[6]; // [esp+198h] [ebp-50h] BYREF int v81[6]; // [esp+1B0h] [ebp-38h] BYREF void *v82[8]; // [esp+1C8h] [ebp-20h] BYREF std::string::basic_string(v82, (char *)asc_5527F4); v42 = night::NSASTParse::is_punctuation(a1, (int)v82); std::string::_M_dispose(v82); if ( !v42 ) { std::string::basic_string((char *)v67, (int)(a1 + 11)); std::string::operator=(a1 + 11, (char *)&byte_551F04); std::string::basic_string(v82, (char *)&asc_5527F4[4]); v45 = night::NSASTParse::is_punctuation(a1, (int)v82); std::string::_M_dispose(v82); if ( v45 ) { v28 = night::NSToken::next(a1[7]); v37 = night::NSToken::next(a1[7]); v31 = night::NSToken::next(a1[7]); v46 = 0; if ( v37 ) { if ( std::operator==((int)&night::NS_TYPE_VAR, (int)v37) || (v46 = std::operator==((int)&night::NS_TYPE_STR, (int)v37)) ) { v46 = 0; if ( v31 ) { v46 = std::operator==((int)&night::NS_TYPE_PUNC, (int)v31); if ( v46 ) v46 = std::operator==(":", (int)(v31 + 15)); } } if ( std::operator==((int)&night::NS_TYPE_PUNC, (int)v37) ) { v9 = std::operator==("}", (int)(v37 + 15)); v10 = v46; if ( v9 ) v10 = v9; v46 = v10; } } night::NSToken::push(a1[7], (int)v31); night::NSToken::push(a1[7], (int)v37); night::NSToken::push(a1[7], (int)v28); if ( v46 ) { v11 = night::NSASTParse::ast_obj_block(a1); LABEL_113: v65 = night::NSASTParse::make_call_or_just_expression(a1, v11); goto LABEL_114; } if ( !v68 || (unsigned __int8)std::operator!=("op not=", (int)v67) ) { v11 = night::NSASTParse::ast_code_block(a1); goto LABEL_113; } } std::string::basic_string(v82, "["); v47 = night::NSASTParse::is_punctuation(a1, (int)v82); std::string::_M_dispose(v82); if ( v47 ) { v11 = night::NSASTParse::ast_new_array(a1); goto LABEL_113; } if ( night::NSASTParse::is_obj_op_self(a1, 0, v18) ) { v11 = night::NSASTParse::ast_obj_op_self(a1, 0); goto LABEL_113; } is_op_self = night::NSASTParse::is_op_self((int)a1, (night::NSASTParse *)1, v19); if ( is_op_self ) { v11 = night::NSASTParse::ast_op_self((int)a1); goto LABEL_113; } std::string::basic_string(v82, "if"); v48 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); std::string::_M_dispose(v82); if ( v48 ) { v11 = night::NSASTParse::ast_if(a1); goto LABEL_113; } std::string::basic_string(v82, (char *)off_552210); v49 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); std::string::_M_dispose(v82); if ( v49 ) { v11 = night::NSASTParse::ast_for(a1); goto LABEL_113; } std::string::basic_string(v82, "while"); v50 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); std::string::_M_dispose(v82); if ( v50 ) { v11 = night::NSASTParse::ast_while(a1); goto LABEL_113; } std::string::basic_string(v82, "do"); v51 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); std::string::_M_dispose(v82); if ( v51 ) { v11 = night::NSASTParse::ast_do_while(a1); goto LABEL_113; } std::string::basic_string(v82, "switch"); v52 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); std::string::_M_dispose(v82); if ( v52 ) { v11 = night::NSASTParse::ast_switch(a1); goto LABEL_113; } std::string::basic_string(v69, "true"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v69) ) { v38 = 0; v53 = 0; v26 = 0; v29 = 0; v32 = 0; v23 = 0; v22 = 0; v25 = 0; v24 = 0; } else { std::string::basic_string(v70, "false"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v70) ) { v38 = 0; v53 = 0; v26 = 0; v29 = 0; v32 = 0; v23 = 0; v22 = 0; v25 = 0; } else { std::string::basic_string(v71, "null"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v71) ) { v38 = 0; v53 = 0; v26 = 0; v29 = 0; v32 = 0; v23 = 0; v22 = 0; } else { std::string::basic_string(v72, "undefined"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v72) ) { v38 = 0; v53 = 0; v26 = 0; v29 = 0; v32 = 0; v23 = 0; } else { std::string::basic_string(v73, (char *)off_552620); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v73) ) { v38 = 0; v53 = 0; v26 = 0; v29 = 0; v32 = 0; } else { std::string::basic_string(v74, "Infinity"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v74) ) { v38 = 0; v53 = 0; v26 = 0; v29 = 0; } else { std::string::basic_string(v75, "return"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v75) ) { v38 = 0; v53 = 0; v26 = 0; } else { std::string::basic_string(v76, "delete"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v76) ) { v38 = 0; v53 = 0; } else { std::string::basic_string(v77, "void"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v77) ) { v38 = 0; } else { std::string::basic_string(v78, "typeof"); if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v78) ) { std::string::basic_string(v79, "this"); if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v79) ) { std::string::basic_string(v80, "arguments"); v21 = 1; if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v80) ) { std::string::basic_string((void **)v81, "break"); v21 = 1; if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v81) ) { std::string::basic_string(v82, "continue"); v21 = night::NSASTParse::is_buildin_keywords(a1, (int)v82) != 0; std::string::_M_dispose(v82); } std::string::_M_dispose((void **)v81); } std::string::_M_dispose(v80); v22 = 1; v23 = 1; v24 = 1; v25 = 1; v32 = 1; v29 = 1; v26 = 1; v53 = 1; v38 = 1; goto LABEL_61; } is_op_self = 1; } v38 = 1; } v53 = 1; } v26 = 1; } v29 = 1; } v32 = 1; } v23 = 1; } v22 = 1; } v25 = 1; } v24 = 1; } v21 = 1; if ( !is_op_self ) { LABEL_62: if ( v38 ) std::string::_M_dispose(v78); if ( v53 ) std::string::_M_dispose(v77); if ( v26 ) std::string::_M_dispose(v76); if ( v29 ) std::string::_M_dispose(v75); if ( v32 ) std::string::_M_dispose(v74); if ( v23 ) std::string::_M_dispose(v73); if ( v22 ) std::string::_M_dispose(v72); if ( v25 ) std::string::_M_dispose(v71); if ( v24 ) std::string::_M_dispose(v70); std::string::_M_dispose(v69); if ( v21 ) { v11 = night::NSASTParse::ast_trans_kw(a1); goto LABEL_113; } std::string::basic_string(v82, "require"); v54 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); std::string::_M_dispose(v82); if ( v54 ) { v11 = night::NSASTParse::ast_require(a1); goto LABEL_113; } std::string::basic_string(v82, (char *)off_551FFE); v55 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); std::string::_M_dispose(v82); if ( v55 ) { v11 = night::NSASTParse::ast_var(a1); goto LABEL_113; } std::string::basic_string(v82, "function"); v56 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); std::string::_M_dispose(v82); if ( v56 ) { v11 = night::NSASTParse::ast_function(a1); goto LABEL_113; } std::string::basic_string(v82, ";"); v57 = night::NSASTParse::is_punctuation(a1, (int)v82); std::string::_M_dispose(v82); if ( v57 ) { v58 = (void *)a1[6]; std::string::basic_string((char *)v82, (int)&night::NS_TYPE_SKIP); v12 = night::NSGod::gen_son(v58, (int)v82); v65 = night::NSASTParse::make_call_or_just_expression(a1, v12); std::string::_M_dispose(v82); LABEL_114: std::string::_M_dispose((void **)v67); return v65; } v59 = night::NSToken::next(a1[7]); if ( !v59 ) { v62 = a1[7]; std::string::basic_string(v82, "End of file"); night::NSToken::err(v62, (int)v82, 0, 0, 0); } if ( !std::operator==((int)&night::NS_TYPE_VAR, (int)v59) && !std::operator==((int)&night::NS_TYPE_NUM, (int)v59) && !std::operator==((int)&night::NS_TYPE_STR, (int)v59) ) { v39 = (int)(v59 + 15); if ( !std::operator==((int)&night::NS_TYPE_B_TYPE, (int)v59) ) { v63 = a1[7]; std::operator+((int)v81, "Unexpected token `", v39); v15 = std::string::append(v81, "`"); std::string::basic_string(v82, v15); night::NSToken::err(v63, (int)v82, 0, 0, 0); } if ( !std::operator==("Number", v39) && !std::operator==("Math", v39) && !std::operator==("Date", v39) ) { goto LABEL_112; } v14 = night::NSToken::peek(a1[7]); if ( !v14 ) goto LABEL_112; v41 = (int)(v14 + 15); if ( !std::operator==("[", (int)(v14 + 15)) ) { if ( std::operator==(".", v41) ) goto LABEL_111; LABEL_112: v11 = v59; goto LABEL_113; } LABEL_99: v11 = night::NSASTParse::ast_obj_op(a1, (int)v59); goto LABEL_113; } v13 = night::NSToken::peek(a1[7]); if ( v13 ) { v40 = (int)(v13 + 15); if ( std::operator==("[", (int)(v13 + 15)) ) goto LABEL_99; if ( std::operator==(".", v40) ) { LABEL_111: v11 = night::NSASTParse::ast_obj_dot(a1, (int)v59); goto LABEL_113; } } if ( night::NSASTParse::is_obj_op_self(a1, (night::NSASTParse *)1, v20) ) { v11 = night::NSASTParse::ast_obj_op_self(a1, (int)v59); goto LABEL_113; } goto LABEL_112; } LABEL_61: std::string::_M_dispose(v79); goto LABEL_62; } v43 = (void *)a1[6]; std::string::basic_string((char *)v82, (int)&night::std_v_n); v44 = (void **)night::NSGod::gen_girl(v43, (int)v82); std::string::_M_dispose(v82); v33 = (void *)a1[6]; std::string::basic_string((char *)v82, (int)&night::NS_TYPE_PUNC); v79[0] = night::NSGod::gen_son(v33, (int)v82); std::string::_M_dispose(v82); std::string::operator=((unsigned int *)v79[0] + 15, (char *)asc_5527F4); v17 = std::vector::push_back(v44, (char **)v79); night::NSToken::next(a1[7]); v3 = *(_DWORD *)(a1[7] + 4); v27 = *(_DWORD *)(v3 + 52); v30 = *(_DWORD *)(v3 + 56); v80[0] = (void *)night::NSASTParse::ast_expression((night::NSASTParse *)v17); if ( !night::NSASTParse::is_exp((int)v80[0]) ) { v34 = v80[0]; if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_ASSIGN, (int)v80[0]) ) { v61 = a1[7]; std::operator+((int)v81, "Unexpected statement[", (int)v34); v4 = std::string::append(v81, "]"); std::string::basic_string(v82, v4); night::NSToken::err(v61, (int)v82, v27, v30, 1); } } std::vector::push_back(v44, (char **)v80); std::string::basic_string(v82, (char *)&asc_5527F4[2]); night::NSASTParse::ignore_punc(a1, (int)v82); std::string::_M_dispose(v82); v35 = (void *)a1[6]; std::string::basic_string((char *)v82, (int)&night::NS_TYPE_PUNC); v79[0] = night::NSGod::gen_son(v35, (int)v82); std::string::_M_dispose(v82); std::string::operator=((unsigned int *)v79[0] + 15, (char *)&asc_5527F4[2]); std::vector::push_back(v44, (char **)v79); v36 = (void *)a1[6]; std::string::basic_string((char *)v82, (int)&night::NS_TYPE_BRACKET); v79[0] = night::NSGod::gen_son(v36, (int)v82); std::string::_M_dispose(v82); v5 = (unsigned int *)v79[0]; *((_DWORD *)v79[0] + 57) = v44; std::string::operator=(v5 + 27, (char *)&byte_551F04); v6 = night::NSToken::peek(a1[7]); if ( v6 ) { v64 = (int)(v6 + 15); if ( std::operator==("[", (int)(v6 + 15)) ) { v7 = night::NSASTParse::ast_obj_op(a1, (int)v79[0]); return night::NSASTParse::make_call_or_just_expression(a1, v7); } if ( std::operator==(".", v64) ) { v7 = night::NSASTParse::ast_obj_dot(a1, (int)v79[0]); return night::NSASTParse::make_call_or_just_expression(a1, v7); } } return night::NSASTParse::make_call_or_just_expression(a1, (_DWORD *)v79[0]); } // 4127DA: variable 'v18' is possibly undefined // 412807: variable 'v19' is possibly undefined // 413267: variable 'v20' is possibly undefined //----- (00413A7E) -------------------------------------------------------- struct _Unwind_Exception *__fastcall night::NSASTParse::ast_op_self(int a1) { bool v2; // [esp+4h] [ebp-74h] unsigned __int8 **v3; // [esp+10h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] void *v7[8]; // [esp+58h] [ebp-20h] BYREF v3 = night::NSToken::next(*(_DWORD *)(a1 + 28)); lpuexcpt = *(struct _Unwind_Exception **)(a1 + 24); std::string::basic_string((char *)v7, (int)&night::NS_TYPE_OP_SELF); lpuexcpta = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpt, (int)v7); std::string::_M_dispose(v7); std::string::_M_assign((int)lpuexcpta + 156, (int)(v3 + 15)); *((_DWORD *)lpuexcpta + 48) = night::NSASTParse::ast_dispatch(0, v2); return lpuexcpta; } // 413B25: variable 'v2' is possibly undefined //----- (00413B64) -------------------------------------------------------- int __thiscall night::NSASTParse::make_binary_or_just_value(_DWORD *this, int a2, unsigned __int8 a3) { unsigned __int8 **v3; // edx int v4; // eax bool v6; // al bool v7; // zf char *v8; // eax int v9; // eax void *v10; // eax bool v12; // [esp+4h] [ebp-A4h] bool v13; // [esp+4h] [ebp-A4h] bool v14; // [esp+4h] [ebp-A4h] unsigned int v15; // [esp+20h] [ebp-88h] unsigned int v16; // [esp+24h] [ebp-84h] int binary_or_just_value; // [esp+28h] [ebp-80h] unsigned __int8 v18; // [esp+2Ch] [ebp-7Ch] struct _Unwind_Exception *v19; // [esp+2Ch] [ebp-7Ch] void *v20; // [esp+2Ch] [ebp-7Ch] unsigned __int8 **v21; // [esp+30h] [ebp-78h] int v22; // [esp+30h] [ebp-78h] void *v23; // [esp+34h] [ebp-74h] _DWORD *v24; // [esp+34h] [ebp-74h] bool v25; // [esp+34h] [ebp-74h] _DWORD *v26; // [esp+34h] [ebp-74h] struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-70h] struct _Unwind_Exception *lpuexcptb; // [esp+38h] [ebp-70h] struct _Unwind_Exception *lpuexcptc; // [esp+38h] [ebp-70h] void *v31[6]; // [esp+70h] [ebp-38h] BYREF void *v32[8]; // [esp+88h] [ebp-20h] BYREF if ( a3 ) { std::string::basic_string(v31, (char *)&byte_551F04); v21 = night::NSASTParse::is_op(this, (int)v31); v18 = a3; } else { std::string::basic_string(v32, (char *)&byte_551F04); v21 = night::NSASTParse::is_op_or_comma(this, (int)v32); v18 = 0; std::string::_M_dispose(v32); } if ( v18 ) std::string::_M_dispose(v31); if ( v21 && !(unsigned __int8)night::NSASTParse::is_op_self((int)this, 0, v12) && !night::NSASTParse::is_obj_op_self(this, 0, v13) && night::NSASTParse::is_exp(a2) ) { v3 = night::NSToken::next(this[7]); v4 = *(_DWORD *)(this[7] + 4); v16 = *(_DWORD *)(v4 + 56); v15 = *(_DWORD *)(v4 + 52); v22 = (int)(v3 + 15); if ( std::operator==("?", (int)(v3 + 15)) ) { v19 = night::NSASTParse::ast_ternary_expression(this); if ( !night::NSASTParse::is_exp((int)v19) ) { lpuexcpta = (struct _Unwind_Exception *)this[7]; std::string::basic_string(v32, "Expected exp"); night::NSToken::err((int)lpuexcpta, (int)v32, v15, v16, 1); } v23 = (void *)this[6]; std::string::basic_string((char *)v32, (int)&night::NS_TYPE_BINARY); v24 = night::NSGod::gen_son(v23, (int)v32); std::string::_M_dispose(v32); std::string::_M_assign((int)(v24 + 39), v22); v24[45] = a2; v24[46] = v19; return night::NSASTParse::make_binary_or_just_value(v24, a3); } else { v6 = std::operator==("=", v22); v7 = !v6; v25 = v6; v8 = "="; if ( v7 ) v8 = "op not="; std::string::operator=(this + 11, v8); v9 = night::NSASTParse::ast_dispatch(0, v14); binary_or_just_value = night::NSASTParse::make_binary_or_just_value(v9, a3); if ( !night::NSASTParse::is_exp(binary_or_just_value) ) { lpuexcptb = (struct _Unwind_Exception *)this[7]; std::string::basic_string(v32, "Expected exp"); night::NSToken::err((int)lpuexcptb, (int)v32, v15, v16, 1); } v20 = (void *)this[6]; v10 = &night::NS_TYPE_ASSIGN; if ( !v25 ) v10 = &night::NS_TYPE_BINARY; std::string::basic_string((char *)v32, (int)v10); v26 = night::NSGod::gen_son(v20, (int)v32); std::string::_M_dispose(v32); std::string::_M_assign((int)(v26 + 39), v22); v26[45] = a2; v26[46] = binary_or_just_value; if ( (std::operator==("/", (int)(v26 + 39)) || std::operator==("/=", (int)(v26 + 39))) && (!night::NSASTParse::is_save_for_division(a2) || !night::NSASTParse::is_save_for_division(binary_or_just_value)) ) { lpuexcptc = (struct _Unwind_Exception *)this[7]; std::string::basic_string(v32, "Expected exp"); night::NSToken::err((int)lpuexcptc, (int)v32, v15, v16, 1); } return night::NSASTParse::make_binary_or_just_value(v26, a3); } } return a2; } // 413C43: variable 'v12' is possibly undefined // 413C5B: variable 'v13' is possibly undefined // 413DFE: variable 'v14' is possibly undefined //----- (0041402E) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_expression_no_comma(int *a1) { int v1; // eax _DWORD *binary_or_just_value; // eax bool v4; // [esp+4h] [ebp-24h] v1 = night::NSASTParse::ast_dispatch(0, v4); binary_or_just_value = (_DWORD *)night::NSASTParse::make_binary_or_just_value(a1, v1, 1u); return night::NSASTParse::make_call_or_just_expression(a1, binary_or_just_value); } // 41403E: variable 'v4' is possibly undefined //----- (00414068) -------------------------------------------------------- struct _Unwind_Exception *__fastcall night::NSASTParse::ast_varname(int a1) { int v1; // eax night::NSASTParse *v3; // [esp+0h] [ebp-88h] unsigned int v4; // [esp+1Ch] [ebp-6Ch] unsigned int v5; // [esp+20h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-60h] struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] void *v9[8]; // [esp+68h] [ebp-20h] BYREF v1 = *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4); v4 = *(_DWORD *)(v1 + 52); v5 = *(_DWORD *)(v1 + 56); lpuexcpt = (struct _Unwind_Exception *)night::NSASTParse::ast_expression_no_comma(v3); if ( (!std::operator==((int)&night::NS_TYPE_ASSIGN, (int)lpuexcpt) || !std::operator==((int)&night::NS_TYPE_VAR, *((_DWORD *)lpuexcpt + 45))) && !std::operator==((int)&night::NS_TYPE_VAR, (int)lpuexcpt) ) { lpuexcpta = *(struct _Unwind_Exception **)(a1 + 28); std::string::basic_string(v9, "Expected variable"); night::NSToken::err((int)lpuexcpta, (int)v9, v4, v5, 1); } return lpuexcpt; } // 4140B9: variable 'v3' is possibly undefined //----- (00414188) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::ast_obj_op_self(_DWORD *this, int a2) { unsigned __int8 **v2; // eax int v3; // edx _DWORD *v4; // eax night::NSASTParse *v6; // [esp+0h] [ebp-98h] int v7; // [esp+18h] [ebp-80h] int v8; // [esp+1Ch] [ebp-7Ch] void *v9; // [esp+1Ch] [ebp-7Ch] _DWORD *v10; // [esp+1Ch] [ebp-7Ch] int v11; // [esp+20h] [ebp-78h] unsigned __int8 **v12; // [esp+20h] [ebp-78h] int v13; // [esp+20h] [ebp-78h] void *v14; // [esp+24h] [ebp-74h] _DWORD *v15; // [esp+24h] [ebp-74h] struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-70h] struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-70h] struct _Unwind_Exception *lpuexcptc; // [esp+28h] [ebp-70h] int v20[6]; // [esp+60h] [ebp-38h] BYREF void *v21[8]; // [esp+78h] [ebp-20h] BYREF v14 = (void *)this[6]; std::string::basic_string((char *)v21, (int)&night::NS_TYPE_OBJ_SELF_OP); v15 = night::NSGod::gen_son(v14, (int)v21); std::string::_M_dispose(v21); *((_BYTE *)v15 + 200) = a2 == 0; v11 = (int)(v15 + 39); std::string::operator=(v15 + 39, (char *)&byte_551F04); v15[48] = 0; v2 = night::NSToken::next(this[7]); if ( !v2 ) { lpuexcpta = (struct _Unwind_Exception *)this[7]; std::string::basic_string(v21, "End of file"); night::NSToken::err((int)lpuexcpta, (int)v21, 0, 0, 0); } v3 = (int)(v2 + 15); v7 = (int)(v2 + 21); v8 = (int)(v15 + 21); if ( a2 ) { v15[48] = a2; std::string::_M_assign(v11, v3); std::string::_M_assign(v8, v7); } else { std::string::_M_assign(v11, v3); std::string::_M_assign(v8, v7); v12 = night::NSToken::peek(this[7]); if ( !v12 ) { lpuexcptb = (struct _Unwind_Exception *)this[7]; std::string::basic_string(v21, "End of file"); night::NSToken::err((int)lpuexcptb, (int)v21, 0, 0, 0); } if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v12) ) { lpuexcptc = (struct _Unwind_Exception *)this[7]; std::operator+((int)v20, "Unexpected token `", (int)(v12 + 15)); v4 = std::string::append(v20, "`"); std::string::basic_string(v21, v4); night::NSToken::err((int)lpuexcptc, (int)v21, 0, 0, 0); } v13 = night::NSASTParse::ast_expression_no_comma(v6); if ( std::operator==((int)&night::NS_TYPE_OBJ_SELF_OP, v13) ) { v9 = (void *)this[6]; std::string::basic_string((char *)v21, (int)&night::NS_TYPE_OP); v10 = night::NSGod::gen_son(v9, (int)v21); std::string::_M_dispose(v21); std::string::_M_assign((int)(v10 + 15), v13 + 156); std::string::_M_assign((int)(v10 + 21), v13 + 84); night::NSToken::push(this[7], (int)v10); v15[48] = *(_DWORD *)(v13 + 192); } else { v15[48] = v13; } } return v15; } // 4143BD: variable 'v6' is possibly undefined //----- (004144FA) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::ast_obj_dot(int *this, int a2) { int v2; // ecx int v3; // eax _DWORD *v4; // eax unsigned __int8 **v5; // eax unsigned int v7; // [esp+14h] [ebp-84h] unsigned int v8; // [esp+18h] [ebp-80h] void **v9; // [esp+1Ch] [ebp-7Ch] _DWORD *v10; // [esp+20h] [ebp-78h] void *v11; // [esp+24h] [ebp-74h] void *v12; // [esp+24h] [ebp-74h] unsigned __int8 **v13; // [esp+24h] [ebp-74h] struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-70h] struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-70h] int v17[6]; // [esp+60h] [ebp-38h] BYREF void *v18[8]; // [esp+78h] [ebp-20h] BYREF v11 = (void *)this[6]; std::string::basic_string((char *)v18, (int)&night::std_v_n); v9 = (void **)night::NSGod::gen_girl(v11, (int)v18); std::string::_M_dispose(v18); v12 = (void *)this[6]; std::string::basic_string((char *)v18, (int)&night::NS_TYPE_OBJ_DOT); v10 = night::NSGod::gen_son(v12, (int)v18); std::string::_M_dispose(v18); v10[48] = a2; v10[49] = v9; do { std::string::basic_string(v18, "."); night::NSASTParse::ignore_punc(this, (int)v18); std::string::_M_dispose(v18); v2 = this[7]; v3 = *(_DWORD *)(v2 + 4); v7 = *(_DWORD *)(v3 + 52); v8 = *(_DWORD *)(v3 + 56); v13 = night::NSToken::peek(v2); if ( !v13 ) { lpuexcpta = (struct _Unwind_Exception *)this[7]; std::string::basic_string(v18, "End of file"); night::NSToken::err((int)lpuexcpta, (int)v18, 0, 0, 0); } if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v13) ) { lpuexcptb = (struct _Unwind_Exception *)this[7]; std::operator+((int)v17, "Unexpected token `", (int)(v13 + 15)); v4 = std::string::append(v17, "`"); std::string::basic_string(v18, v4); night::NSToken::err((int)lpuexcptb, (int)v18, v7, v8, 1); } v18[0] = night::NSASTParse::ast_expression_no_comma(this); std::vector::emplace_back(v9, (char **)v18); v5 = night::NSToken::peek(this[7]); } while ( v5 && !(unsigned __int8)std::operator!=(".", (int)(v5 + 15)) ); return v10; } //----- (0041479A) -------------------------------------------------------- unsigned int *__fastcall night::NSASTParse::ast_if(int *a1) { _DWORD *v2; // [esp+1Ch] [ebp-6Ch] _DWORD *v3; // [esp+20h] [ebp-68h] unsigned __int8 **v4; // [esp+20h] [ebp-68h] unsigned __int8 **v5; // [esp+20h] [ebp-68h] void *v6; // [esp+24h] [ebp-64h] unsigned int *v7; // [esp+24h] [ebp-64h] void *v9[8]; // [esp+68h] [ebp-20h] BYREF std::string::basic_string(v9, "if"); night::NSASTParse::ignore_buildin_kw(a1, (int)v9); std::string::_M_dispose(v9); v2 = night::NSASTParse::ast_expression_no_comma(a1); v3 = night::NSASTParse::ast_expression_no_comma(a1); v6 = (void *)a1[6]; std::string::basic_string((char *)v9, (int)&night::NS_TYPE_IF); v7 = night::NSGod::gen_son(v6, (int)v9); std::string::_M_dispose(v9); v7[51] = (unsigned int)v2; v7[53] = 0; v7[52] = (unsigned int)v3; if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_PROG_NO_SEM, (int)v3) ) { if ( !night::NSToken::eof(a1[7]) ) { std::string::basic_string(v9, ";"); v4 = night::NSASTParse::is_punctuation(a1, (int)v9); std::string::_M_dispose(v9); if ( v4 ) night::NSToken::next(a1[7]); } std::string::operator=(v7 + 27, ";"); } std::string::basic_string(v9, "else"); v5 = night::NSASTParse::is_buildin_keywords(a1, (int)v9); std::string::_M_dispose(v9); if ( v5 ) { night::NSToken::next(a1[7]); v7[53] = (unsigned int)night::NSASTParse::ast_expression_no_comma(a1); } return v7; } //----- (004149B4) -------------------------------------------------------- struct _Unwind_Exception *__fastcall night::NSASTParse::ast_ternary_expression(int *a1) { night::NSASTParse *v1; // ecx night::NSASTParse *v3; // [esp+0h] [ebp-78h] night::NSASTParse *v4; // [esp+0h] [ebp-78h] int v5; // [esp+10h] [ebp-68h] int v6; // [esp+14h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] void *v10[8]; // [esp+58h] [ebp-20h] BYREF v6 = night::NSASTParse::ast_expression_no_comma(v3); std::string::basic_string(v10, ":"); night::NSASTParse::ignore_punc(a1, (int)v10); v4 = v1; std::string::_M_dispose(v10); v5 = night::NSASTParse::ast_expression_no_comma(v4); lpuexcpta = (struct _Unwind_Exception *)a1[6]; std::string::basic_string((char *)v10, (int)&night::NS_TYPE_TERNARY); lpuexcptb = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v10); std::string::_M_dispose(v10); *((_DWORD *)lpuexcptb + 45) = v6; *((_DWORD *)lpuexcptb + 46) = v5; return lpuexcptb; } // 4149ED: variable 'v3' is possibly undefined // 414A1A: variable 'v1' is possibly undefined //----- (00414AC0) -------------------------------------------------------- void **__thiscall night::NSASTParse::make_list_by_parser( int *this, int a2, int a3, int a4, int a5, char a6, int a7, int a8) { unsigned __int8 **v8; // eax night::NSASTParse *v9; // edx char *v10; // eax night::NSASTParse *v12; // [esp+0h] [ebp-88h] night::NSASTParse *v13; // [esp+0h] [ebp-88h] int v14; // [esp+1Ch] [ebp-6Ch] char i; // [esp+20h] [ebp-68h] void *v16; // [esp+20h] [ebp-68h] void *v17; // [esp+24h] [ebp-64h] void **v18; // [esp+24h] [ebp-64h] char *v20; // [esp+64h] [ebp-24h] BYREF void *v21[8]; // [esp+68h] [ebp-20h] BYREF v17 = (void *)this[6]; std::string::basic_string((char *)v21, (int)&night::std_v_n); v18 = (void **)night::NSGod::gen_girl(v17, (int)v21); std::string::_M_dispose(v21); night::NSASTParse::ignore_punc(this, a2); v14 = 0; 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); ++v14; } if ( night::NSASTParse::is_punctuation(this, a3) ) break; if ( std::operator==("ast_expression_no_comma", a5) ) { if ( std::operator==("ast_new_array", a8) ) { v8 = night::NSASTParse::is_punctuation(this, a4); v12 = v9; if ( v8 ) { v16 = (void *)this[6]; std::string::basic_string((char *)v21, (int)&night::NS_TYPE_SKIP); v20 = (char *)night::NSGod::gen_son(v16, (int)v21); std::string::_M_dispose(v21); goto LABEL_20; } } v10 = (char *)night::NSASTParse::ast_expression_no_comma(v12); } else if ( std::operator==("ast_expression", a5) ) { v10 = (char *)night::NSASTParse::ast_expression(v13); } else { if ( !std::operator==("ast_varname", a5) ) goto LABEL_20; v10 = (char *)night::NSASTParse::ast_varname((int)this); } v20 = v10; LABEL_20: std::vector::push_back(v18, &v20); } if ( a7 != -1 && v14 != a7 ) return 0; night::NSASTParse::ignore_punc(this, a3); return v18; } // 414C14: variable 'v9' is possibly undefined // 414C5F: variable 'v12' is possibly undefined // 414C87: variable 'v13' is possibly undefined //----- (00414D44) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::ast_call(int *this, int a2) { _DWORD *v2; // eax void ***i; // eax unsigned __int8 **v4; // eax unsigned __int8 **v5; // eax unsigned __int8 **v7; // [esp+28h] [ebp-D0h] unsigned __int8 **v8; // [esp+2Ch] [ebp-CCh] unsigned __int8 **v9; // [esp+2Ch] [ebp-CCh] int v10; // [esp+30h] [ebp-C8h] int v11; // [esp+30h] [ebp-C8h] int v12; // [esp+30h] [ebp-C8h] void *v13; // [esp+34h] [ebp-C4h] void *v14; // [esp+34h] [ebp-C4h] _DWORD *v15; // [esp+34h] [ebp-C4h] struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-C0h] void **list_by_parser; // [esp+70h] [ebp-88h] BYREF void **v19; // [esp+74h] [ebp-84h] BYREF void *v20[6]; // [esp+78h] [ebp-80h] BYREF void *v21[6]; // [esp+90h] [ebp-68h] BYREF void *v22[6]; // [esp+A8h] [ebp-50h] BYREF int v23[6]; // [esp+C0h] [ebp-38h] BYREF void *v24[8]; // [esp+D8h] [ebp-20h] BYREF v13 = (void *)this[6]; std::string::basic_string((char *)v24, (int)&night::std_v_v_n); v10 = night::NSGod::gen_girl(v13, (int)v24); std::string::_M_dispose(v24); v14 = (void *)this[6]; std::string::basic_string((char *)v24, (int)&night::NS_TYPE_CALL); v15 = night::NSGod::gen_son(v14, (int)v24); std::string::_M_dispose(v24); v15[55] = a2; v15[56] = v10; v8 = night::NSToken::peek(this[7]); std::string::basic_string(v24, (char *)asc_5527F4); v7 = night::NSASTParse::is_punctuation(this, (int)v24); std::string::_M_dispose(v24); if ( !v7 ) { lpuexcpta = (struct _Unwind_Exception *)this[7]; std::operator+((int)v23, "Unexpected token `", (int)(v8 + 15)); v2 = std::string::append(v23, "`"); std::string::basic_string(v24, v2); night::NSToken::err((int)lpuexcpta, (int)v24, 0, 0, 0); } std::string::basic_string(v24, (char *)&byte_551F04); std::string::basic_string((void **)v23, "ast_expression_no_comma"); std::string::basic_string(v22, ","); std::string::basic_string(v21, (char *)&asc_5527F4[2]); std::string::basic_string(v20, (char *)asc_5527F4); list_by_parser = night::NSASTParse::make_list_by_parser(this, (int)v20, (int)v21, (int)v22, (int)v23, 0, -1, (int)v24); std::string::_M_dispose(v20); std::string::_M_dispose(v21); std::string::_M_dispose(v22); std::string::_M_dispose((void **)v23); std::string::_M_dispose(v24); for ( i = &list_by_parser; ; i = &v19 ) { std::vector>>::push_back(v10, i); std::string::basic_string(v24, (char *)asc_5527F4); v9 = night::NSASTParse::is_punctuation(this, (int)v24); std::string::_M_dispose(v24); if ( !v9 ) break; std::string::basic_string(v24, (char *)&byte_551F04); std::string::basic_string((void **)v23, "ast_expression_no_comma"); std::string::basic_string(v22, ","); std::string::basic_string(v21, (char *)&asc_5527F4[2]); std::string::basic_string(v20, (char *)asc_5527F4); v19 = night::NSASTParse::make_list_by_parser(this, (int)v20, (int)v21, (int)v22, (int)v23, 0, -1, (int)v24); std::string::_M_dispose(v20); std::string::_M_dispose(v21); std::string::_M_dispose(v22); std::string::_M_dispose((void **)v23); std::string::_M_dispose(v24); } v4 = night::NSToken::peek(this[7]); if ( v4 ) { v11 = (int)(v4 + 15); if ( std::operator==("[", (int)(v4 + 15)) ) { v15 = night::NSASTParse::ast_obj_op(this, (int)v15); std::string::basic_string(v24, (char *)asc_5527F4); v5 = night::NSASTParse::is_punctuation(this, (int)v24); } else { if ( !std::operator==(".", v11) ) return v15; v15 = (_DWORD *)night::NSASTParse::ast_obj_dot(v15); std::string::basic_string(v24, (char *)asc_5527F4); v5 = night::NSASTParse::is_punctuation(this, (int)v24); } v12 = (int)v5; std::string::_M_dispose(v24); if ( v12 ) return (_DWORD *)night::NSASTParse::ast_call(v15); } return v15; } // 4144FA: using guessed type __int64 __stdcall night::NSASTParse::ast_obj_dot(_DWORD); //----- (00415374) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::make_call_or_just_expression(int *this, _DWORD *a2) { void *v4[8]; // [esp+58h] [ebp-20h] BYREF if ( !std::operator==((int)&night::NS_TYPE_PROG, (int)a2) && !std::operator==((int)&night::NS_TYPE_B_TYPE, (int)a2) && !std::operator==((int)&night::NS_TYPE_KW, (int)a2) && (!std::operator==((int)&night::NS_TYPE_FUNC, (int)a2) || !(unsigned __int8)std::operator!=((char *)&byte_551F04, (int)(a2 + 33))) ) { std::string::basic_string(v4, (char *)asc_5527F4); if ( night::NSASTParse::is_punctuation(this, (int)v4) ) a2 = night::NSASTParse::ast_call(this, (int)a2); std::string::_M_dispose(v4); } return a2; } //----- (004154B2) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_expression(int *a1) { _DWORD *v1; // eax _DWORD *binary_or_just_value; // eax bool v4; // [esp+4h] [ebp-24h] v1 = night::NSASTParse::ast_dispatch(a1, 0, v4); binary_or_just_value = (_DWORD *)night::NSASTParse::make_binary_or_just_value(a1, (int)v1, 0); return night::NSASTParse::make_call_or_just_expression(a1, binary_or_just_value); } // 4154C2: variable 'v4' is possibly undefined //----- (004154EC) -------------------------------------------------------- _DWORD *__thiscall night::NSASTParse::ast_obj_op(int *this, int a2) { night::NSASTParse *v2; // eax unsigned __int8 **v3; // eax unsigned __int8 **v5; // eax night::NSASTParse *v7; // [esp+0h] [ebp-88h] bool v8; // [esp+4h] [ebp-84h] void **v9; // [esp+1Ch] [ebp-6Ch] int v10; // [esp+20h] [ebp-68h] void *v11; // [esp+24h] [ebp-64h] void *v12; // [esp+24h] [ebp-64h] _DWORD *v13; // [esp+24h] [ebp-64h] void *v15[8]; // [esp+68h] [ebp-20h] BYREF v11 = (void *)this[6]; std::string::basic_string((char *)v15, (int)&night::std_v_n); v9 = (void **)night::NSGod::gen_girl(v11, (int)v15); std::string::_M_dispose(v15); v12 = (void *)this[6]; std::string::basic_string((char *)v15, (int)&night::NS_TYPE_OBJ_PROPERTY); v13 = night::NSGod::gen_son(v12, (int)v15); std::string::_M_dispose(v15); v13[48] = a2; v13[49] = v9; do { std::string::basic_string(v15, "["); night::NSASTParse::ignore_punc(this, (int)v15); v7 = v2; std::string::_M_dispose(v15); v15[0] = (void *)night::NSASTParse::ast_expression(v7); std::vector::emplace_back(v9, (char **)v15); std::string::basic_string(v15, "]"); night::NSASTParse::ignore_punc(this, (int)v15); std::string::_M_dispose(v15); v3 = night::NSToken::peek(this[7]); if ( !v3 ) break; v10 = (int)(v3 + 15); if ( std::operator==(";", (int)(v3 + 15)) ) break; } while ( !(unsigned __int8)std::operator!=("[", v10) ); if ( night::NSASTParse::is_obj_op_self(this, 0, v8) ) return night::NSASTParse::ast_obj_op_self(this, (int)v13); v5 = night::NSToken::peek(this[7]); if ( v5 && std::operator==(".", (int)(v5 + 15)) ) return (_DWORD *)night::NSASTParse::ast_obj_dot(v13); return v13; } // 4155E3: variable 'v2' is possibly undefined // 415697: variable 'v8' is possibly undefined // 4144FA: using guessed type __int64 __stdcall night::NSASTParse::ast_obj_dot(_DWORD); //----- (00415736) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_while(int *a1) { night::NSASTParse *v1; // edx night::NSASTParse *v2; // eax night::NSASTParse *v4; // [esp+0h] [ebp-78h] night::NSASTParse *v5; // [esp+0h] [ebp-78h] void *v6; // [esp+14h] [ebp-64h] _DWORD *v7; // [esp+14h] [ebp-64h] void *v9[8]; // [esp+58h] [ebp-20h] BYREF night::NSToken::next(a1[7]); v6 = (void *)a1[6]; std::string::basic_string((char *)v9, (int)&night::NS_TYPE_WHILE); v7 = night::NSGod::gen_son(v6, (int)v9); std::string::_M_dispose(v9); v7[51] = 0; v7[54] = 0; std::string::basic_string(v9, (char *)asc_5527F4); night::NSASTParse::ignore_punc(a1, (int)v9); v4 = v1; std::string::_M_dispose(v9); v7[51] = night::NSASTParse::ast_expression(v4); std::string::basic_string(v9, (char *)&asc_5527F4[2]); night::NSASTParse::ignore_punc(a1, (int)v9); v5 = v2; std::string::_M_dispose(v9); ++a1[9]; ++a1[10]; v7[54] = night::NSASTParse::ast_expression(v5); --a1[9]; --a1[10]; return v7; } // 4157F4: variable 'v1' is possibly undefined // 41583A: variable 'v2' is possibly undefined //----- (004158AC) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_do_while(int *a1) { int v1; // eax unsigned __int8 **v2; // eax night::NSASTParse *v3; // edx night::NSASTParse *v4; // edx night::NSASTParse *v6; // [esp+0h] [ebp-88h] night::NSASTParse *v7; // [esp+0h] [ebp-88h] unsigned int v8; // [esp+18h] [ebp-70h] unsigned __int8 **v9; // [esp+1Ch] [ebp-6Ch] unsigned int v10; // [esp+20h] [ebp-68h] void *v11; // [esp+24h] [ebp-64h] _DWORD *v12; // [esp+24h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] void *v15[8]; // [esp+68h] [ebp-20h] BYREF night::NSToken::next(a1[7]); v11 = (void *)a1[6]; std::string::basic_string((char *)v15, (int)&night::NS_TYPE_DO_WHILE); v12 = night::NSGod::gen_son(v11, (int)v15); std::string::_M_dispose(v15); v12[51] = 0; v12[54] = 0; v1 = *(_DWORD *)(a1[7] + 4); v10 = *(_DWORD *)(v1 + 56); v8 = *(_DWORD *)(v1 + 52); std::string::basic_string(v15, (char *)&asc_5527F4[4]); v2 = night::NSASTParse::is_punctuation(a1, (int)v15); v6 = v3; v9 = v2; std::string::_M_dispose(v15); if ( !v9 ) { lpuexcpta = (struct _Unwind_Exception *)a1[7]; std::string::basic_string(v15, "Expected `{`"); night::NSToken::err((int)lpuexcpta, (int)v15, v8, v10, 1); } ++a1[9]; ++a1[10]; v12[54] = night::NSASTParse::ast_expression(v6); --a1[9]; --a1[10]; std::string::basic_string(v15, "while"); night::NSASTParse::ignore_buildin_kw(a1, (int)v15); std::string::_M_dispose(v15); std::string::basic_string(v15, (char *)asc_5527F4); night::NSASTParse::ignore_punc(a1, (int)v15); v7 = v4; std::string::_M_dispose(v15); v12[51] = night::NSASTParse::ast_expression(v7); std::string::basic_string(v15, (char *)&asc_5527F4[2]); night::NSASTParse::ignore_punc(a1, (int)v15); std::string::_M_dispose(v15); return v12; } // 415982: variable 'v3' is possibly undefined // 415A5F: variable 'v4' is possibly undefined //----- (00415AF0) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_switch(int *a1) { night::NSASTParse *v1; // eax int v2; // ecx int v3; // eax unsigned __int8 **v4; // eax unsigned __int8 **v5; // eax night::NSASTParse *v6; // edx unsigned __int8 **v7; // eax night::NSASTParse *v8; // edx unsigned __int8 **v9; // eax night::NSASTParse *v10; // edx int v11; // eax night::NSASTParse *v12; // edx unsigned __int8 **v13; // eax night::NSASTParse *v14; // edx night::NSASTParse *v16; // [esp+0h] [ebp-B8h] night::NSASTParse *v17; // [esp+0h] [ebp-B8h] night::NSASTParse *v18; // [esp+0h] [ebp-B8h] unsigned int v19; // [esp+10h] [ebp-A8h] int v20; // [esp+14h] [ebp-A4h] unsigned int v21; // [esp+14h] [ebp-A4h] int v22; // [esp+1Ch] [ebp-9Ch] bool v23; // [esp+1Ch] [ebp-9Ch] unsigned __int8 **v24; // [esp+1Ch] [ebp-9Ch] unsigned __int8 **v25; // [esp+1Ch] [ebp-9Ch] void *v26; // [esp+1Ch] [ebp-9Ch] int v27; // [esp+20h] [ebp-98h] unsigned __int8 **v28; // [esp+20h] [ebp-98h] unsigned __int8 **v29; // [esp+20h] [ebp-98h] bool v30; // [esp+20h] [ebp-98h] void **v31; // [esp+20h] [ebp-98h] bool v32; // [esp+20h] [ebp-98h] void *v33; // [esp+20h] [ebp-98h] void **v34; // [esp+20h] [ebp-98h] unsigned __int8 **v35; // [esp+20h] [ebp-98h] void *v36; // [esp+20h] [ebp-98h] void **v37; // [esp+20h] [ebp-98h] unsigned __int8 **v38; // [esp+20h] [ebp-98h] unsigned __int8 **v39; // [esp+20h] [ebp-98h] unsigned __int8 **v40; // [esp+20h] [ebp-98h] void **v41; // [esp+20h] [ebp-98h] unsigned __int8 **v42; // [esp+20h] [ebp-98h] void *v43; // [esp+24h] [ebp-94h] void *v44; // [esp+24h] [ebp-94h] void *v45; // [esp+24h] [ebp-94h] void *v46; // [esp+24h] [ebp-94h] _DWORD *v47; // [esp+24h] [ebp-94h] struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-90h] struct _Unwind_Exception *lpuexcptc; // [esp+28h] [ebp-90h] void **v52; // [esp+64h] [ebp-54h] BYREF void *v53[6]; // [esp+68h] [ebp-50h] BYREF void *v54[6]; // [esp+80h] [ebp-38h] BYREF void *v55[8]; // [esp+98h] [ebp-20h] BYREF night::NSToken::next(a1[7]); v43 = (void *)a1[6]; std::string::basic_string((char *)v55, (int)&night::std_v_n); v27 = night::NSGod::gen_girl(v43, (int)v55); std::string::_M_dispose(v55); v44 = (void *)a1[6]; std::string::basic_string((char *)v55, (int)&night::std_v_v_n); v22 = night::NSGod::gen_girl(v44, (int)v55); std::string::_M_dispose(v55); v45 = (void *)a1[6]; std::string::basic_string((char *)v55, (int)&night::std_v_n); v20 = night::NSGod::gen_girl(v45, (int)v55); std::string::_M_dispose(v55); v46 = (void *)a1[6]; std::string::basic_string((char *)v55, (int)&night::NS_TYPE_SWITCH); v47 = night::NSGod::gen_son(v46, (int)v55); std::string::_M_dispose(v55); v47[58] = v27; v47[51] = 0; v47[59] = v22; v47[60] = v20; std::string::basic_string(v55, (char *)asc_5527F4); night::NSASTParse::ignore_punc(a1, (int)v55); v16 = v1; std::string::_M_dispose(v55); v47[51] = night::NSASTParse::ast_expression(v16); std::string::basic_string(v55, (char *)&asc_5527F4[2]); night::NSASTParse::ignore_punc(a1, (int)v55); std::string::_M_dispose(v55); std::string::basic_string(v55, (char *)&asc_5527F4[4]); night::NSASTParse::ignore_punc(a1, (int)v55); std::string::_M_dispose(v55); ++a1[9]; while ( 1 ) { std::string::basic_string(v55, "case"); v28 = night::NSASTParse::is_buildin_keywords(a1, (int)v55); std::string::_M_dispose(v55); if ( !v28 ) break; std::string::basic_string(v55, "case"); night::NSASTParse::ignore_buildin_kw(a1, (int)v55); std::string::_M_dispose(v55); v2 = a1[7]; v3 = *(_DWORD *)(v2 + 4); v19 = *(_DWORD *)(v3 + 52); v21 = *(_DWORD *)(v3 + 56); v29 = night::NSToken::peek(v2); if ( !v29 ) goto LABEL_4; std::string::basic_string(v54, "-"); v23 = 1; if ( !night::NSASTParse::is_op(a1, (int)v54) ) { std::string::basic_string(v55, "+"); v23 = night::NSASTParse::is_op(a1, (int)v55) != 0; std::string::_M_dispose(v55); } std::string::_M_dispose(v54); if ( v23 ) { night::NSToken::next(a1[7]); v4 = night::NSToken::peek(a1[7]); v24 = v4; if ( !v4 || !std::operator==((int)&night::NS_TYPE_NUM, (int)v4) ) goto LABEL_4; v25 = v24 + 15; std::operator+((char *)v55, (int)(v29 + 15), (int)v25); std::string::operator=(v25, (int)v55); std::string::_M_dispose(v55); } else if ( !std::operator==((int)&night::NS_TYPE_VAR, (int)v29) && !std::operator==((int)&night::NS_TYPE_NUM, (int)v29) && !std::operator==((int)&night::NS_TYPE_STR, (int)v29) ) { std::string::basic_string(v54, "true"); if ( night::NSASTParse::is_buildin_keywords(a1, (int)v54) ) { v30 = 1; } else { std::string::basic_string(v55, "false"); v30 = night::NSASTParse::is_buildin_keywords(a1, (int)v55) != 0; std::string::_M_dispose(v55); } std::string::_M_dispose(v54); if ( !v30 ) { LABEL_4: lpuexcpta = (struct _Unwind_Exception *)a1[7]; std::string::basic_string(v55, "Expected variable|numer|boolean|string"); night::NSToken::err((int)lpuexcpta, (int)v55, v19, v21, 1); } } v31 = (void **)v47[58]; v55[0] = night::NSToken::next(a1[7]); std::vector::emplace_back(v31, (char **)v55); std::string::basic_string(v55, ":"); night::NSASTParse::ignore_punc(a1, (int)v55); std::string::_M_dispose(v55); v52 = 0; while ( 1 ) { std::string::basic_string(v53, "case"); v5 = night::NSASTParse::is_buildin_keywords(a1, (int)v53); v17 = v6; if ( v5 ) { v32 = 0; } else { std::string::basic_string(v54, "default"); v7 = night::NSASTParse::is_buildin_keywords(a1, (int)v54); v32 = 0; v17 = v8; if ( !v7 ) { std::string::basic_string(v55, "}"); v9 = night::NSASTParse::is_punctuation(a1, (int)v55); v17 = v10; v32 = v9 == 0; std::string::_M_dispose(v55); } std::string::_M_dispose(v54); } std::string::_M_dispose(v53); if ( !v32 ) break; if ( !v52 ) { v33 = (void *)a1[6]; std::string::basic_string((char *)v55, (int)&night::std_v_n); v11 = night::NSGod::gen_girl(v33, (int)v55); v17 = v12; v52 = (void **)v11; std::string::_M_dispose(v55); } v34 = v52; v55[0] = (void *)night::NSASTParse::ast_expression(v17); std::vector::emplace_back(v34, (char **)v55); while ( !night::NSToken::eof(a1[7]) ) { std::string::basic_string(v55, ";"); v35 = night::NSASTParse::is_punctuation(a1, (int)v55); std::string::_M_dispose(v55); if ( !v35 ) break; night::NSToken::next(a1[7]); } } if ( !v52 ) { v36 = (void *)a1[6]; std::string::basic_string((char *)v55, (int)&night::std_v_n); v52 = (void **)night::NSGod::gen_girl(v36, (int)v55); std::string::_M_dispose(v55); v37 = v52; v26 = (void *)a1[6]; std::string::basic_string((char *)v55, (int)&night::NS_TYPE_SKIP); v54[0] = night::NSGod::gen_son(v26, (int)v55); std::vector::emplace_back(v37, (char **)v54); std::string::_M_dispose(v55); } std::vector>>::push_back(v47[59], &v52); if ( night::NSToken::eof(a1[7]) ) { lpuexcptb = (struct _Unwind_Exception *)a1[7]; std::string::basic_string(v55, "End of file"); night::NSToken::err((int)lpuexcptb, (int)v55, 0, 0, 0); } std::string::basic_string(v55, "}"); v38 = night::NSASTParse::is_punctuation(a1, (int)v55); std::string::_M_dispose(v55); if ( v38 ) break; std::string::basic_string(v55, "default"); v39 = night::NSASTParse::is_buildin_keywords(a1, (int)v55); std::string::_M_dispose(v55); if ( v39 ) { std::string::basic_string(v55, "default"); night::NSASTParse::ignore_buildin_kw(a1, (int)v55); std::string::_M_dispose(v55); std::string::basic_string(v55, ":"); night::NSASTParse::ignore_punc(a1, (int)v55); std::string::_M_dispose(v55); while ( 1 ) { std::string::basic_string(v55, "}"); v13 = night::NSASTParse::is_punctuation(a1, (int)v55); v18 = v14; v40 = v13; std::string::_M_dispose(v55); if ( v40 ) break; v41 = (void **)v47[60]; v55[0] = (void *)night::NSASTParse::ast_expression(v18); std::vector::emplace_back(v41, (char **)v55); if ( night::NSToken::eof(a1[7]) ) { lpuexcptc = (struct _Unwind_Exception *)a1[7]; std::string::basic_string(v55, "End of file"); night::NSToken::err((int)lpuexcptc, (int)v55, 0, 0, 0); } while ( 1 ) { std::string::basic_string(v55, ";"); v42 = night::NSASTParse::is_punctuation(a1, (int)v55); std::string::_M_dispose(v55); if ( !v42 ) break; night::NSToken::next(a1[7]); } } break; } } --a1[9]; std::string::basic_string(v55, "}"); night::NSASTParse::ignore_punc(a1, (int)v55); std::string::_M_dispose(v55); return v47; } // 415CEB: variable 'v1' is possibly undefined // 416197: variable 'v6' is possibly undefined // 4161E4: variable 'v8' is possibly undefined // 41621E: variable 'v10' is possibly undefined // 416297: variable 'v12' is possibly undefined // 41660C: variable 'v14' is possibly undefined //----- (00416800) -------------------------------------------------------- struct _Unwind_Exception *__fastcall night::NSASTParse::top_down(int *a1) { int v1; // eax unsigned __int8 **v2; // eax unsigned int v4; // [esp+14h] [ebp-74h] unsigned int v5; // [esp+18h] [ebp-70h] void **v6; // [esp+1Ch] [ebp-6Ch] int v7; // [esp+20h] [ebp-68h] struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-60h] struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-60h] struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] struct _Unwind_Exception *lpuexcptc; // [esp+28h] [ebp-60h] unsigned __int8 **lpuexcptd; // [esp+28h] [ebp-60h] struct _Unwind_Exception *lpuexcpte; // [esp+28h] [ebp-60h] struct _Unwind_Exception *lpuexcptf; // [esp+28h] [ebp-60h] struct _Unwind_Exception *v16; // [esp+64h] [ebp-24h] BYREF void *v17[8]; // [esp+68h] [ebp-20h] BYREF lpuexcptb = (struct _Unwind_Exception *)a1[6]; std::string::basic_string((char *)v17, (int)&night::std_v_n); v6 = (void **)night::NSGod::gen_girl(lpuexcptb, (int)v17); std::string::_M_dispose(v17); while ( !night::NSToken::eof(a1[7]) ) { v16 = (struct _Unwind_Exception *)night::NSASTParse::ast_expression(a1); std::vector::push_back(v6, (char **)&v16); v7 = a1[7]; v1 = *(_DWORD *)(v7 + 4); v5 = *(_DWORD *)(v1 + 56); v4 = *(_DWORD *)(v1 + 52); lpuexcpt = v16; if ( std::operator==((int)&night::NS_TYPE_BOOL, (int)v16) || std::operator==((int)&night::NS_TYPE_VAR, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_STR, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_NUM, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_B_TYPE, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_KW, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_OP_SELF, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_BINARY, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_ASSIGN, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_TERNARY, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_OBJ_DOT, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_OBJ_PROPERTY, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_OBJ_SELF_OP, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_ARRAY, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_BRACKET, (int)lpuexcpt) || std::operator==((int)&night::NS_TYPE_CALL, (int)lpuexcpt) ) { v2 = night::NSToken::peek(v7); lpuexcpta = (struct _Unwind_Exception *)v2; if ( v2 ) { if ( (unsigned __int8)std::operator!=(";", (int)(v2 + 15)) && std::string::find((int *)lpuexcpta + 21, 10, 0) == (char *)-1 ) { lpuexcptc = (struct _Unwind_Exception *)a1[7]; std::string::basic_string(v17, "Expected LineFeed"); night::NSToken::err((int)lpuexcptc, (int)v17, v4, v5, 1); } } } while ( !night::NSToken::eof(a1[7]) ) { std::string::basic_string(v17, ";"); lpuexcptd = night::NSASTParse::is_punctuation(a1, (int)v17); std::string::_M_dispose(v17); if ( !lpuexcptd ) break; night::NSToken::next(a1[7]); } } lpuexcpte = (struct _Unwind_Exception *)a1[6]; std::string::basic_string((char *)v17, (int)&night::NS_TYPE_PROG); lpuexcptf = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpte, (int)v17); std::string::_M_dispose(v17); *((_DWORD *)lpuexcptf + 57) = v6; std::string::operator=((unsigned int *)lpuexcptf + 27, (char *)&byte_551F04); return lpuexcptf; } //----- (00416C10) -------------------------------------------------------- unsigned __int8 **__fastcall night::NSASTParse::ast_require(int *a1) { int v1; // ecx int v2; // eax char *v3; // eax unsigned __int8 **v4; // ecx unsigned __int8 **v5; // eax _DWORD *v6; // eax unsigned int v8; // [esp+18h] [ebp-90h] unsigned int v9; // [esp+1Ch] [ebp-8Ch] void *v10; // [esp+20h] [ebp-88h] char *v11; // [esp+20h] [ebp-88h] void *v12; // [esp+20h] [ebp-88h] void *v13; // [esp+20h] [ebp-88h] void *v14; // [esp+20h] [ebp-88h] void *v15; // [esp+20h] [ebp-88h] void *v16; // [esp+24h] [ebp-84h] void **v17; // [esp+24h] [ebp-84h] int v18; // [esp+24h] [ebp-84h] struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-80h] struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-80h] unsigned __int8 **v22; // [esp+68h] [ebp-40h] BYREF unsigned __int8 **v23; // [esp+6Ch] [ebp-3Ch] BYREF int v24[2]; // [esp+70h] [ebp-38h] BYREF char v25; // [esp+78h] [ebp-30h] BYREF int v26[8]; // [esp+88h] [ebp-20h] BYREF v16 = (void *)a1[6]; std::string::basic_string((char *)v26, (int)&night::std_v_n); v17 = (void **)night::NSGod::gen_girl(v16, (int)v26); std::string::_M_dispose((void **)v26); v22 = night::NSToken::next(a1[7]); std::operator+((char *)v26, (int)&night::nsv_, (int)(v22 + 15)); std::string::operator=(v22 + 15, (int)v26); std::string::_M_dispose((void **)v26); std::vector::push_back(v17, (char **)&v22); v10 = (void *)a1[6]; std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PUNC); v22 = (unsigned __int8 **)night::NSGod::gen_son(v10, (int)v26); std::string::_M_dispose((void **)v26); std::string::operator=((unsigned int *)v22 + 15, (char *)asc_5527F4); std::vector::push_back(v17, (char **)&v22); night::NSToken::next(a1[7]); v1 = a1[7]; v2 = *(_DWORD *)(v1 + 4); v8 = *(_DWORD *)(v2 + 52); v9 = *(_DWORD *)(v2 + 56); v3 = (char *)night::NSToken::next(v1); v11 = v3; v23 = (unsigned __int8 **)v3; if ( !v3 || (unsigned __int8)std::operator!=((int)&night::NS_TYPE_STR, (int)v3) ) { lpuexcpta = (struct _Unwind_Exception *)a1[7]; std::string::basic_string((void **)v26, "Expected string"); night::NSToken::err((int)lpuexcpta, (int)v26, v8, v9, 1); } v24[1] = 0; v24[0] = (int)&v25; v25 = 0; if ( night::str::path_combine(a1, (_DWORD *)v11 + 15, (int)v24) ) { lpuexcptb = (struct _Unwind_Exception *)a1[7]; std::string::basic_string((void **)v26, "Expected wxs file"); night::NSToken::err((int)lpuexcptb, (int)v26, v8, v9, 1); } std::operator+((int)v26, "p_", (int)v24); std::string::operator=(v23 + 15, (int)v26); std::string::_M_dispose((void **)v26); std::vector::push_back(v17, (char **)&v23); std::string::_M_dispose((void **)v24); v12 = (void *)a1[6]; std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PUNC); v22 = (unsigned __int8 **)night::NSGod::gen_son(v12, (int)v26); std::string::_M_dispose((void **)v26); std::string::operator=((unsigned int *)v22 + 15, (char *)&asc_5527F4[2]); std::vector::push_back(v17, (char **)&v22); night::NSToken::next(a1[7]); v13 = (void *)a1[6]; std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PUNC); v22 = (unsigned __int8 **)night::NSGod::gen_son(v13, (int)v26); std::string::_M_dispose((void **)v26); std::string::operator=((unsigned int *)v22 + 15, (char *)asc_5527F4); std::vector::push_back(v17, (char **)&v22); v14 = (void *)a1[6]; std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PUNC); v22 = (unsigned __int8 **)night::NSGod::gen_son(v14, (int)v26); std::string::_M_dispose((void **)v26); std::string::operator=((unsigned int *)v22 + 15, (char *)&asc_5527F4[2]); std::vector::push_back(v17, (char **)&v22); v15 = (void *)a1[6]; std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); v22 = (unsigned __int8 **)night::NSGod::gen_son(v15, (int)v26); std::string::_M_dispose((void **)v26); v4 = v22; v22[57] = (unsigned __int8 *)v17; std::string::operator=((unsigned int *)v4 + 27, (char *)&byte_551F04); v5 = night::NSToken::peek(a1[7]); if ( !v5 ) return v22; v18 = (int)(v5 + 15); if ( !std::operator==("[", (int)(v5 + 15)) ) { if ( std::operator==(".", v18) ) { v6 = night::NSASTParse::ast_obj_dot(a1, (int)v22); return (unsigned __int8 **)night::NSASTParse::make_call_or_just_expression(a1, v6); } return v22; } v6 = night::NSASTParse::ast_obj_op(a1, (int)v22); return (unsigned __int8 **)night::NSASTParse::make_call_or_just_expression(a1, v6); } //----- (00417150) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_code_block(int *a1) { unsigned int *v1; // ecx unsigned int *v2; // ecx void *v4; // [esp+2Ch] [ebp-CCh] void *v5; // [esp+2Ch] [ebp-CCh] void **list_by_parser; // [esp+30h] [ebp-C8h] void *v7; // [esp+30h] [ebp-C8h] void *v8; // [esp+30h] [ebp-C8h] void *v9; // [esp+34h] [ebp-C4h] void **v10; // [esp+34h] [ebp-C4h] void *v12[6]; // [esp+78h] [ebp-80h] BYREF void *v13[6]; // [esp+90h] [ebp-68h] BYREF void *v14[6]; // [esp+A8h] [ebp-50h] BYREF void *v15[6]; // [esp+C0h] [ebp-38h] BYREF void *v16[8]; // [esp+D8h] [ebp-20h] BYREF std::string::basic_string(v16, (char *)&byte_551F04); std::string::basic_string(v15, "ast_expression"); std::string::basic_string(v14, ";"); std::string::basic_string(v13, "}"); std::string::basic_string(v12, (char *)&asc_5527F4[4]); 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); v9 = (void *)a1[6]; std::string::basic_string((char *)v16, (int)&night::std_v_n); v10 = (void **)night::NSGod::gen_girl(v9, (int)v16); std::string::_M_dispose(v16); v4 = (void *)a1[6]; std::string::basic_string((char *)v16, (int)&night::NS_TYPE_PUNC); v15[0] = night::NSGod::gen_son(v4, (int)v16); std::string::_M_dispose(v16); std::string::operator=((unsigned int *)v15[0] + 15, (char *)&asc_5527F4[4]); std::vector::push_back(v10, (char **)v15); if ( *list_by_parser != list_by_parser[1] ) { v5 = (void *)a1[6]; std::string::basic_string((char *)v16, (int)&night::NS_TYPE_PROG); v15[0] = night::NSGod::gen_son(v5, (int)v16); std::string::_M_dispose(v16); v1 = (unsigned int *)v15[0]; *((_DWORD *)v15[0] + 57) = list_by_parser; std::string::operator=(v1 + 27, (char *)&byte_551F04); std::vector::push_back(v10, (char **)v15); } v7 = (void *)a1[6]; std::string::basic_string((char *)v16, (int)&night::NS_TYPE_PUNC); v15[0] = night::NSGod::gen_son(v7, (int)v16); std::string::_M_dispose(v16); std::string::operator=((unsigned int *)v15[0] + 15, "}"); std::vector::push_back(v10, (char **)v15); v8 = (void *)a1[6]; std::string::basic_string((char *)v16, (int)&night::NS_TYPE_PROG_NO_SEM); v15[0] = night::NSGod::gen_son(v8, (int)v16); std::string::_M_dispose(v16); v2 = (unsigned int *)v15[0]; *((_DWORD *)v15[0] + 57) = v10; std::string::operator=(v2 + 27, (char *)&byte_551F04); return night::NSASTParse::make_call_or_just_expression(a1, (_DWORD *)v15[0]); } //----- (00417578) -------------------------------------------------------- struct _Unwind_Exception *__fastcall night::NSASTParse::ast_function(int *a1) { unsigned int *v2; // [esp+2Ch] [ebp-CCh] unsigned __int8 **v3; // [esp+30h] [ebp-C8h] struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-C0h] struct _Unwind_Exception *lpuexcpt; // [esp+38h] [ebp-C0h] void *v7[6]; // [esp+78h] [ebp-80h] BYREF void *v8[6]; // [esp+90h] [ebp-68h] BYREF void *v9[6]; // [esp+A8h] [ebp-50h] BYREF void *v10[6]; // [esp+C0h] [ebp-38h] BYREF void *v11[8]; // [esp+D8h] [ebp-20h] BYREF lpuexcpta = (struct _Unwind_Exception *)a1[6]; std::string::basic_string((char *)v11, (int)&night::NS_TYPE_FUNC); lpuexcpt = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v11); std::string::_M_dispose(v11); std::string::_M_assign((int)lpuexcpt, (int)&night::NS_TYPE_FUNC); night::NSToken::next(a1[7]); v3 = night::NSToken::peek(a1[7]); v2 = (unsigned int *)((char *)lpuexcpt + 132); if ( v3 && std::operator==((int)&night::NS_TYPE_VAR, (int)v3) ) { std::string::_M_assign((int)v2, (int)(v3 + 15)); std::string::_M_assign((int)lpuexcpt + 24, (int)(v3 + 6)); *((_DWORD *)lpuexcpt + 12) = v3[12]; *((_DWORD *)lpuexcpt + 13) = v3[13]; night::NSToken::next(a1[7]); } else { std::string::operator=(v2, (char *)&byte_551F04); } std::string::basic_string(v11, (char *)&byte_551F04); std::string::basic_string(v10, "ast_varname"); std::string::basic_string(v9, ","); std::string::basic_string(v8, (char *)&asc_5527F4[2]); std::string::basic_string(v7, (char *)asc_5527F4); *((_DWORD *)lpuexcpt + 61) = night::NSASTParse::make_list_by_parser( a1, (int)v7, (int)v8, (int)v9, (int)v10, 0, -1, (int)v11); std::string::_M_dispose(v7); std::string::_M_dispose(v8); std::string::_M_dispose(v9); std::string::_M_dispose(v10); std::string::_M_dispose(v11); ++a1[8]; *((_DWORD *)lpuexcpt + 54) = night::NSASTParse::ast_code_block(a1); --a1[8]; return lpuexcpt; } //----- (004178AC) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_new_array(int *a1) { unsigned int *v1; // ecx unsigned int *v2; // ecx unsigned __int8 **v3; // eax void *v6; // [esp+2Ch] [ebp-CCh] void *v7; // [esp+2Ch] [ebp-CCh] void **list_by_parser; // [esp+30h] [ebp-C8h] void *v9; // [esp+30h] [ebp-C8h] void *v10; // [esp+30h] [ebp-C8h] int v11; // [esp+30h] [ebp-C8h] void *v12; // [esp+34h] [ebp-C4h] void **v13; // [esp+34h] [ebp-C4h] _DWORD *v14; // [esp+34h] [ebp-C4h] void *v16[6]; // [esp+78h] [ebp-80h] BYREF void *v17[6]; // [esp+90h] [ebp-68h] BYREF void *v18[6]; // [esp+A8h] [ebp-50h] BYREF void *v19[6]; // [esp+C0h] [ebp-38h] BYREF void *v20[8]; // [esp+D8h] [ebp-20h] 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); v12 = (void *)a1[6]; std::string::basic_string((char *)v20, (int)&night::std_v_n); v13 = (void **)night::NSGod::gen_girl(v12, (int)v20); std::string::_M_dispose(v20); v6 = (void *)a1[6]; std::string::basic_string((char *)v20, (int)&night::NS_TYPE_PUNC); v19[0] = night::NSGod::gen_son(v6, (int)v20); std::string::_M_dispose(v20); std::string::operator=((unsigned int *)v19[0] + 15, "["); std::vector::push_back(v13, (char **)v19); if ( *list_by_parser != list_by_parser[1] ) { v7 = (void *)a1[6]; std::string::basic_string((char *)v20, (int)&night::NS_TYPE_PROG); v19[0] = night::NSGod::gen_son(v7, (int)v20); std::string::_M_dispose(v20); v1 = (unsigned int *)v19[0]; *((_DWORD *)v19[0] + 57) = list_by_parser; std::string::operator=(v1 + 27, ","); std::vector::push_back(v13, (char **)v19); } v9 = (void *)a1[6]; std::string::basic_string((char *)v20, (int)&night::NS_TYPE_PUNC); v19[0] = night::NSGod::gen_son(v9, (int)v20); std::string::_M_dispose(v20); std::string::operator=((unsigned int *)v19[0] + 15, "]"); std::vector::push_back(v13, (char **)v19); v10 = (void *)a1[6]; std::string::basic_string((char *)v20, (int)&night::NS_TYPE_ARRAY); v19[0] = night::NSGod::gen_son(v10, (int)v20); std::string::_M_dispose(v20); v2 = (unsigned int *)v19[0]; *((_DWORD *)v19[0] + 57) = v13; std::string::operator=(v2 + 27, (char *)&byte_551F04); v14 = night::NSASTParse::make_call_or_just_expression(a1, (_DWORD *)v19[0]); v3 = night::NSToken::peek(a1[7]); if ( v3 ) { v11 = (int)(v3 + 15); if ( std::operator==("[", (int)(v3 + 15)) ) return night::NSASTParse::ast_obj_op(a1, (int)v14); if ( std::operator==(".", v11) ) return night::NSASTParse::ast_obj_dot(a1, (int)v14); } return v14; } //----- (00417D62) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_for(int *a1) { night::NSASTParse *v1; // edx night::NSASTParse *v3; // [esp+0h] [ebp-F8h] void *v4; // [esp+2Ch] [ebp-CCh] int v5; // [esp+30h] [ebp-C8h] void *v6; // [esp+34h] [ebp-C4h] _DWORD *v7; // [esp+34h] [ebp-C4h] struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-C0h] struct _Unwind_Exception *lpuexcptb; // [esp+38h] [ebp-C0h] void *v11[6]; // [esp+78h] [ebp-80h] BYREF void *v12[6]; // [esp+90h] [ebp-68h] BYREF void *v13[6]; // [esp+A8h] [ebp-50h] BYREF void *v14[6]; // [esp+C0h] [ebp-38h] BYREF void *v15[8]; // [esp+D8h] [ebp-20h] BYREF night::NSToken::next(a1[7]); v6 = (void *)a1[6]; std::string::basic_string((char *)v15, (int)&night::NS_TYPE_FOR); v7 = night::NSGod::gen_son(v6, (int)v15); std::string::_M_dispose(v15); v7[57] = 0; v7[54] = 0; std::string::basic_string(v15, (char *)&byte_551F04); std::string::basic_string(v14, "ast_expression"); std::string::basic_string(v13, ";"); std::string::basic_string(v12, (char *)&asc_5527F4[2]); std::string::basic_string(v11, (char *)asc_5527F4); v7[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); v5 = v7[57]; if ( !v5 ) { lpuexcpta = (struct _Unwind_Exception *)a1[7]; std::string::basic_string(v15, "Expected `for(xxx;xxx;xxx)`"); night::NSToken::err((int)lpuexcpta, (int)v15, 0, 0, 0); } if ( *(_DWORD *)(v5 + 4) - *(_DWORD *)v5 == 8 ) { v4 = (void *)a1[6]; std::string::basic_string((char *)v15, (int)&night::NS_TYPE_SKIP); v14[0] = night::NSGod::gen_son(v4, (int)v15); std::vector::emplace_back((void **)v5, (char **)v14); v3 = v1; std::string::_M_dispose(v15); } if ( *(_DWORD *)(v7[57] + 4) - *(_DWORD *)v7[57] != 12 ) { lpuexcptb = (struct _Unwind_Exception *)a1[7]; std::string::basic_string(v15, "Expected `for(xxx;xxx;xxx)`"); night::NSToken::err((int)lpuexcptb, (int)v15, 0, 0, 0); } ++a1[9]; ++a1[10]; v7[54] = night::NSASTParse::ast_expression(v3); --a1[9]; --a1[10]; return v7; } // 418005: variable 'v1' is possibly undefined // 4180FA: variable 'v3' is possibly undefined //----- (0041812E) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_obj_block(int *a1) { bool v1; // zf unsigned __int8 **v2; // eax char *v3; // eax unsigned __int8 **v4; // eax unsigned __int8 **v5; // eax char *v6; // ecx unsigned __int8 **v7; // eax _DWORD *v8; // eax _DWORD *v10; // [esp+18h] [ebp-70h] void *v11; // [esp+1Ch] [ebp-6Ch] void **v12; // [esp+20h] [ebp-68h] void *v13; // [esp+24h] [ebp-64h] void *v14; // [esp+24h] [ebp-64h] unsigned __int8 **v15; // [esp+24h] [ebp-64h] int v16; // [esp+24h] [ebp-64h] int v17; // [esp+24h] [ebp-64h] void *v18; // [esp+24h] [ebp-64h] void *v19; // [esp+24h] [ebp-64h] int v20; // [esp+24h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-60h] struct _Unwind_Exception *lpuexcptc; // [esp+28h] [ebp-60h] char *v25; // [esp+64h] [ebp-24h] BYREF void *v26[8]; // [esp+68h] [ebp-20h] BYREF v13 = (void *)a1[6]; std::string::basic_string((char *)v26, (int)&night::std_v_n); v12 = (void **)night::NSGod::gen_girl(v13, (int)v26); std::string::_M_dispose(v26); std::string::basic_string(v26, (char *)&asc_5527F4[4]); night::NSASTParse::ignore_punc(a1, (int)v26); std::string::_M_dispose(v26); v14 = (void *)a1[6]; std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PUNC); v25 = (char *)night::NSGod::gen_son(v14, (int)v26); std::string::_M_dispose(v26); std::string::operator=((unsigned int *)v25 + 15, (char *)&asc_5527F4[4]); std::vector::push_back(v12, &v25); std::string::basic_string(v26, "}"); v15 = night::NSASTParse::is_punctuation(a1, (int)v26); std::string::_M_dispose(v26); v1 = v15 == 0; LABEL_2: if ( v1 ) { while ( 1 ) { v2 = night::NSToken::next(a1[7]); v16 = (int)v2; if ( !v2 || (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v2) && (unsigned __int8)std::operator!=((int)&night::NS_TYPE_STR, v16) ) { lpuexcpta = (struct _Unwind_Exception *)a1[7]; std::string::basic_string(v26, "Expected variable|string"); night::NSToken::err((int)lpuexcpta, (int)v26, 0, 0, 0); } if ( std::operator==((int)&night::NS_TYPE_STR, v16) ) { std::operator+((char *)v26, (int)&night::nsv_, v16 + 60); std::string::operator=((unsigned __int8 **)(v16 + 60), (int)v26); std::string::_M_dispose(v26); } std::string::basic_string(v26, ":"); night::NSASTParse::ignore_punc(a1, (int)v26); std::string::_M_dispose(v26); v10 = night::NSASTParse::ast_expression_no_comma(a1); v11 = (void *)a1[6]; std::string::basic_string((char *)v26, (int)&night::NS_TYPE_K_V); v25 = (char *)night::NSGod::gen_son(v11, (int)v26); std::string::_M_dispose(v26); v3 = v25; *((_DWORD *)v25 + 47) = v16; *((_DWORD *)v3 + 48) = v10; std::vector::push_back(v12, &v25); v4 = night::NSToken::peek(a1[7]); if ( !v4 ) { lpuexcptb = (struct _Unwind_Exception *)a1[7]; std::string::basic_string(v26, "Expected variable|string"); night::NSToken::err((int)lpuexcptb, (int)v26, 0, 0, 0); } v17 = (int)(v4 + 15); if ( std::operator==("}", (int)(v4 + 15)) ) break; if ( std::operator==(",", v17) ) { night::NSToken::next(a1[7]); v5 = night::NSToken::peek(a1[7]); if ( !v5 ) { lpuexcptc = (struct _Unwind_Exception *)a1[7]; std::string::basic_string(v26, "Expected variable|string"); night::NSToken::err((int)lpuexcptc, (int)v26, 0, 0, 0); } v1 = !std::operator==("}", (int)(v5 + 15)); goto LABEL_2; } } } std::string::basic_string(v26, "}"); night::NSASTParse::ignore_punc(a1, (int)v26); std::string::_M_dispose(v26); v18 = (void *)a1[6]; std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PUNC); v25 = (char *)night::NSGod::gen_son(v18, (int)v26); std::string::_M_dispose(v26); std::string::operator=((unsigned int *)v25 + 15, "}"); std::vector::push_back(v12, &v25); v19 = (void *)a1[6]; std::string::basic_string((char *)v26, (int)&night::NS_TYPE_OBJ_BLOCK); v25 = (char *)night::NSGod::gen_son(v19, (int)v26); std::string::_M_dispose(v26); v6 = v25; *((_DWORD *)v25 + 57) = v12; std::string::operator=((unsigned int *)v6 + 27, (char *)&byte_551F04); v7 = night::NSToken::peek(a1[7]); if ( !v7 ) return night::NSASTParse::make_call_or_just_expression(a1, v25); v20 = (int)(v7 + 15); if ( !std::operator==("[", (int)(v7 + 15)) ) { if ( std::operator==(".", v20) ) { v8 = night::NSASTParse::ast_obj_dot(a1, (int)v25); return night::NSASTParse::make_call_or_just_expression(a1, v8); } return night::NSASTParse::make_call_or_just_expression(a1, v25); } v8 = night::NSASTParse::ast_obj_op(a1, (int)v25); return night::NSASTParse::make_call_or_just_expression(a1, v8); } //----- (004186DE) -------------------------------------------------------- struct _Unwind_Exception *__fastcall night::NSASTParse::ast_var(_DWORD *a1) { int v1; // ecx int v2; // eax unsigned __int8 **v3; // eax int v4; // ecx int v5; // eax char v7; // al _DWORD *v8; // eax unsigned int v9; // [esp+14h] [ebp-94h] unsigned int v10; // [esp+14h] [ebp-94h] unsigned int v11; // [esp+18h] [ebp-90h] unsigned int v12; // [esp+18h] [ebp-90h] int v13; // [esp+1Ch] [ebp-8Ch] unsigned __int8 **v14; // [esp+1Ch] [ebp-8Ch] int v15; // [esp+1Ch] [ebp-8Ch] void **v16; // [esp+20h] [ebp-88h] void *v17; // [esp+24h] [ebp-84h] char *v18; // [esp+24h] [ebp-84h] int v19; // [esp+24h] [ebp-84h] struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-80h] struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-80h] struct _Unwind_Exception *lpuexcptc; // [esp+28h] [ebp-80h] char *v24; // [esp+6Ch] [ebp-3Ch] BYREF int v25[6]; // [esp+70h] [ebp-38h] BYREF void *v26[8]; // [esp+88h] [ebp-20h] BYREF night::NSToken::next(a1[7]); v17 = (void *)a1[6]; std::string::basic_string((char *)v26, (int)&night::std_v_n); v16 = (void **)night::NSGod::gen_girl(v17, (int)v26); std::string::_M_dispose(v26); while ( 1 ) { v1 = a1[7]; v2 = *(_DWORD *)(v1 + 4); v9 = *(_DWORD *)(v2 + 52); v11 = *(_DWORD *)(v2 + 56); v18 = (char *)night::NSToken::next(v1); v24 = v18; v13 = a1[7]; if ( !v18 ) { std::string::basic_string(v26, "End of file"); night::NSToken::err(v13, (int)v26, 0, 0, 0); } if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v18) ) { std::string::basic_string(v26, "Expected variable name"); night::NSToken::err(v13, (int)v26, v9, v11, 1); } v18[56] = 1; v3 = night::NSToken::peek(v13); if ( v3 && std::operator==("=", (int)(v3 + 15)) ) { v26[0] = (void *)night::NSASTParse::make_binary_or_just_value(a1, (int)v24, 1u); std::vector::emplace_back(v16, (char **)v26); } else { std::vector::push_back(v16, &v24); } v4 = a1[7]; v5 = *(_DWORD *)(v4 + 4); v10 = *(_DWORD *)(v5 + 52); v12 = *(_DWORD *)(v5 + 56); v14 = night::NSToken::peek(v4); if ( !v14 ) break; v19 = (int)(v14 + 15); if ( std::operator==(";", (int)(v14 + 15)) || (unsigned __int8)std::operator!=(",", v19) && std::string::find((int *)v14 + 21, 10, 0) != (char *)-1 ) { break; } if ( night::NSToken::eof(a1[7]) ) { lpuexcptc = (struct _Unwind_Exception *)a1[7]; std::string::basic_string(v26, "End of file"); night::NSToken::err((int)lpuexcptc, (int)v26, 0, 0, 0); } v7 = std::operator!=(",", v19); v15 = a1[7]; if ( v7 ) { std::operator+((int)v25, "Unexpected token `", v19); v8 = std::string::append(v25, "`"); std::string::basic_string(v26, v8); night::NSToken::err(v15, (int)v26, v10, v12, 1); } night::NSToken::next(v15); } lpuexcpta = (struct _Unwind_Exception *)a1[6]; std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PROG); lpuexcptb = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v26); std::string::_M_dispose(v26); *((_DWORD *)lpuexcptb + 57) = v16; std::string::operator=((unsigned int *)lpuexcptb + 27, (char *)&byte_551F04); return lpuexcptb; } //----- (00418B3E) -------------------------------------------------------- _DWORD *__fastcall night::NSASTParse::ast_expression_no_binary(int *a1) { _DWORD *v1; // eax bool v3; // [esp+4h] [ebp-24h] v1 = (_DWORD *)night::NSASTParse::ast_dispatch(0, v3); return night::NSASTParse::make_call_or_just_expression(a1, v1); } // 418B4E: variable 'v3' is possibly undefined //----- (00418B62) -------------------------------------------------------- char *__thiscall night::NSCompileJs::compile_var[abi:cxx11](char *this, int a2, int a3) { _DWORD *v3; // eax char v6; // [esp+17h] [ebp-B1h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-B0h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-B0h] void *v9[6]; // [esp+50h] [ebp-78h] BYREF void *v10[6]; // [esp+68h] [ebp-60h] BYREF int v11[2]; // [esp+80h] [ebp-48h] BYREF char v12; // [esp+88h] [ebp-40h] BYREF int v13; // [esp+98h] [ebp-30h] int v14; // [esp+9Ch] [ebp-2Ch] int v15[2]; // [esp+A0h] [ebp-28h] BYREF char v16; // [esp+A8h] [ebp-20h] BYREF int v17; // [esp+B8h] [ebp-10h] int v18; // [esp+BCh] [ebp-Ch] std::string::basic_string(v9, (char *)&byte_551F04); if ( *(_BYTE *)(a3 + 56) ) std::string::operator=((unsigned int *)v9, "var "); *(_DWORD *)(a2 + 48) += v9[1]; lpuexcpt = (struct _Unwind_Exception *)(a3 + 60); std::string::substr(v11, (_DWORD *)(a3 + 60), 0, dword_565DF4); if ( (unsigned __int8)std::operator!=((int)v11, (int)&night::nsv_) && (unsigned __int8)std::operator!=("return", (int)lpuexcpt) && (unsigned __int8)std::operator!=("delete", (int)lpuexcpt) ) { v6 = std::operator!=("void", (int)lpuexcpt); } else { v6 = 0; } std::string::_M_dispose((void **)v11); if ( v6 ) { std::operator+((int)v11, "error : sys error for compile_var `", (int)lpuexcpt); v3 = std::string::append(v11, "`"); std::string::basic_string(v10, v3); std::string::_M_dispose((void **)v11); lpuexcpta = (struct _Unwind_Exception *)__cxa_allocate_exception(0x18u); std::string::basic_string(lpuexcpta, v10); __cxa_throw( lpuexcpta, (struct type_info *)&`typeinfo for'std::string, (void (__cdecl *)(void *))std::string::~string); } v12 = 0; v11[0] = (int)&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, (int)lpuexcpt); v17 = *(_DWORD *)(a3 + 48); v18 = *(_DWORD *)(a2 + 48); std::vector::push_back((night::ns_sourcemap **)(a2 + 36), (night::ns_sourcemap *)v11); std::string::basic_string((char *)v10, (int)lpuexcpt); *(_DWORD *)(a2 + 48) += v10[1]; std::operator+(this, (int)v9, (int)v10); std::string::_M_dispose(v10); night::ns_sourcemap::~ns_sourcemap((void **)v11); std::string::_M_dispose(v9); return this; } // 55BB98: using guessed type int *`typeinfo for'std::string; // 565DF4: using guessed type int dword_565DF4; //----- (00418ECE) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_function[abi:cxx11](_DWORD *this, int a2, _DWORD *a3) { int *v3; // ecx _DWORD *v4; // ecx int *v5; // eax bool v6; // al _DWORD *v7; // ecx _DWORD *v8; // eax int v9; // eax _DWORD *v10; // ecx int *v11; // eax int v12; // eax _DWORD *v13; // eax _DWORD *v14; // eax int v15; // eax _DWORD *v16; // eax _DWORD *v17; // eax int v18; // eax int v19; // eax int *v20; // ecx _DWORD *v21; // eax int v22; // eax int v23; // eax int v25; // [esp+18h] [ebp-110h] unsigned int v26; // [esp+1Ch] [ebp-10Ch] int v27; // [esp+1Ch] [ebp-10Ch] int v28; // [esp+1Ch] [ebp-10Ch] char v29; // [esp+20h] [ebp-108h] unsigned int lpuexcpt; // [esp+24h] [ebp-104h] unsigned int lpuexcpta; // [esp+24h] [ebp-104h] unsigned int lpuexcptb; // [esp+24h] [ebp-104h] void *v34[2]; // [esp+68h] [ebp-C0h] BYREF char v35; // [esp+70h] [ebp-B8h] BYREF int v36[6]; // [esp+80h] [ebp-A8h] BYREF void *v37[6]; // [esp+98h] [ebp-90h] BYREF char *v38; // [esp+B0h] [ebp-78h] BYREF int v39; // [esp+B4h] [ebp-74h] char v40; // [esp+B8h] [ebp-70h] BYREF int v41; // [esp+C8h] [ebp-60h] BYREF int v42; // [esp+CCh] [ebp-5Ch] int v43; // [esp+E0h] [ebp-48h] BYREF int v44; // [esp+E4h] [ebp-44h] char v45; // [esp+E8h] [ebp-40h] BYREF int v46; // [esp+F8h] [ebp-30h] int v47; // [esp+FCh] [ebp-2Ch] int v48[2]; // [esp+100h] [ebp-28h] BYREF char v49; // [esp+108h] [ebp-20h] BYREF int v50; // [esp+118h] [ebp-10h] int v51; // [esp+11Ch] [ebp-Ch] this[1] = 0; *this = this + 2; *((_BYTE *)this + 8) = 0; v25 = a3[34]; if ( v25 ) { std::string::basic_string((void **)&v41, "function "); std::string::operator+=(&v41); v44 = 0; *(_DWORD *)(a2 + 48) += v42; v43 = (int)&v45; v48[0] = (int)&v49; 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((night::ns_sourcemap **)(a2 + 36), (night::ns_sourcemap *)&v43); std::string::operator+=(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+=(&v43); v3 = &v43; *(_DWORD *)(a2 + 48) += v44; } std::string::_M_dispose((void **)v3); std::string::operator+=(asc_5527F4); lpuexcpt = 0; ++*(_DWORD *)(a2 + 48); v29 = 0; while ( 1 ) { v4 = (_DWORD *)a3[61]; if ( lpuexcpt >= (v4[1] - *v4) >> 2 ) break; v5 = (int *)std::vector::at(v4, lpuexcpt); v6 = std::operator==((int)&night::NS_TYPE_VAR, *v5); v7 = (_DWORD *)a3[61]; if ( v6 ) { v8 = (_DWORD *)std::vector::at(v7, lpuexcpt); std::string::operator+=(*v8 + 60); *(_DWORD *)(a2 + 48) += *(_DWORD *)(*(_DWORD *)std::vector::at((_DWORD *)a3[61], lpuexcpt) + 64); } else { v9 = std::vector::at(v7, lpuexcpt); std::string::operator+=(*(_DWORD *)(*(_DWORD *)v9 + 180) + 60); v29 = 1; *(_DWORD *)(a2 + 48) += *(_DWORD *)(*(_DWORD *)(*(_DWORD *)std::vector::at( (_DWORD *)a3[61], lpuexcpt) + 180) + 64); } v26 = lpuexcpt + 1; lpuexcpt = (*(_DWORD *)(a3[61] + 4) - *(_DWORD *)a3[61]) >> 2; if ( v26 != lpuexcpt ) { std::string::operator+=(","); ++*(_DWORD *)(a2 + 48); lpuexcpt = v26; } } std::string::operator+=(5580790); ++*(_DWORD *)(a2 + 48); if ( v29 ) { std::string::operator+=(5580792); lpuexcpta = 0; ++*(_DWORD *)(a2 + 48); while ( 1 ) { v10 = (_DWORD *)a3[61]; if ( lpuexcpta >= (v10[1] - *v10) >> 2 ) break; v34[1] = 0; v34[0] = &v35; v35 = 0; v11 = (int *)std::vector::at(v10, lpuexcpta); if ( std::operator==((int)&night::NS_TYPE_ASSIGN, *v11) ) { v12 = std::vector::at((_DWORD *)a3[61], lpuexcpta); std::string::basic_string((char *)v36, *(_DWORD *)(*(_DWORD *)v12 + 180) + 60); std::string::basic_string((char *)&v41, (int)v36); std::string::append(&v41, "=undefined==="); v13 = std::string::append(&v41, (int)v36); std::string::basic_string(&v43, v13); v14 = std::string::append(&v43, "?"); std::string::basic_string(v37, v14); std::string::_M_dispose((void **)&v43); std::string::_M_dispose((void **)&v41); std::string::operator+=(v37); *(_DWORD *)(a2 + 48) += v37[1]; v15 = std::vector::at((_DWORD *)a3[61], lpuexcpta); night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(*(_DWORD *)v15 + 184)); std::string::operator+=(&v38); std::operator+((int)&v43, ":", (int)v36); v16 = std::string::append(&v43, ";"); std::string::basic_string(&v41, v16); std::string::_M_dispose((void **)&v43); std::string::operator+=(&v41); *(_DWORD *)(a2 + 48) += v42; std::string::_M_dispose((void **)&v41); std::string::_M_dispose((void **)&v38); std::string::_M_dispose(v37); std::string::_M_dispose((void **)v36); } std::string::_M_dispose(v34); ++lpuexcpta; } } lpuexcptb = (*(_DWORD *)(a2 + 40) - *(_DWORD *)(a2 + 36)) >> 6; night::NSCompileJs::compile[abi:cxx11](a2, a3[54]); if ( v29 ) { v38 = &v40; v39 = 0; v40 = 0; if ( std::string::find((int *)v37, "arguments", 0) != -1 ) { std::operator+((int)&v41, "arguments.", (int)&night::nsv_); v17 = std::string::append(&v41, "length=arguments.length;"); std::string::basic_string(&v43, v17); std::string::operator=((unsigned __int8 **)&v38, (int)&v43); std::string::_M_dispose((void **)&v43); std::string::_M_dispose((void **)&v41); std::string::operator+=(&v38); *(_DWORD *)(a2 + 48) += v39; } std::string::substr(&v43, v37, 1u, 0xFFFFFFFF); std::string::operator+=(&v43); std::string::_M_dispose((void **)&v43); --*(_DWORD *)(a2 + 48); while ( lpuexcptb < (*(_DWORD *)(a2 + 40) - *(_DWORD *)(a2 + 36)) >> 6 ) { v18 = std::vector::at((int *)(a2 + 36), lpuexcptb); v27 = v39 + *(_DWORD *)(v18 + 60) - 1; v19 = std::vector::at((int *)(a2 + 36), lpuexcptb++); *(_DWORD *)(v19 + 60) = v27; } v20 = (int *)&v38; goto LABEL_29; } if ( std::string::find((int *)v37, "arguments", 0) != -1 ) { std::operator+((int)&v43, "{arguments.", (int)&night::nsv_); v21 = std::string::append(&v43, "length=arguments.length;"); std::string::basic_string(&v41, v21); std::string::_M_dispose((void **)&v43); std::string::operator+=(&v41); *(_DWORD *)(a2 + 48) += v42; std::string::substr(&v43, v37, 1u, 0xFFFFFFFF); std::string::operator+=(&v43); std::string::_M_dispose((void **)&v43); --*(_DWORD *)(a2 + 48); while ( lpuexcptb < (*(_DWORD *)(a2 + 40) - *(_DWORD *)(a2 + 36)) >> 6 ) { v22 = std::vector::at((int *)(a2 + 36), lpuexcptb); v28 = v42 + *(_DWORD *)(v22 + 60) - 1; v23 = std::vector::at((int *)(a2 + 36), lpuexcptb++); *(_DWORD *)(v23 + 60) = v28; } v20 = &v41; LABEL_29: std::string::_M_dispose((void **)v20); goto LABEL_31; } std::string::operator+=(v37); LABEL_31: if ( !v25 ) { std::string::operator+=(5580790); ++*(_DWORD *)(a2 + 48); } std::string::_M_dispose(v37); return this; } // 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041995C) -------------------------------------------------------- void **__thiscall night::NSCompileJs::compile[abi:cxx11](void **this, int a2, _DWORD *a3) { _DWORD *v3; // eax char **v4; // ecx bool v5; // al int v7; // [esp+14h] [ebp-B4h] void *v9[6]; // [esp+50h] [ebp-78h] BYREF char *v10; // [esp+68h] [ebp-60h] BYREF int v11; // [esp+6Ch] [ebp-5Ch] char v12; // [esp+70h] [ebp-58h] BYREF char *v13; // [esp+80h] [ebp-48h] BYREF int v14; // [esp+84h] [ebp-44h] char v15[16]; // [esp+88h] [ebp-40h] BYREF int v16; // [esp+98h] [ebp-30h] int v17; // [esp+9Ch] [ebp-2Ch] char *v18; // [esp+A0h] [ebp-28h] BYREF int v19; // [esp+A4h] [ebp-24h] char v20[16]; // [esp+A8h] [ebp-20h] BYREF int v21; // [esp+B8h] [ebp-10h] int v22; // [esp+BCh] [ebp-Ch] if ( !*(_DWORD *)(a2 + 4) ) { std::string::basic_string((char *)v9, (int)a3); if ( std::operator==((int)&night::NS_TYPE_SKIP, (int)v9) ) { std::string::basic_string(this, (char *)&byte_551F04); LABEL_60: std::string::_M_dispose(v9); return this; } if ( !std::operator==((int)&night::NS_TYPE_NUM, (int)v9) ) { if ( std::operator==((int)&night::NS_TYPE_BOOL, (int)v9) ) { v15[0] = 0; v13 = v15; v18 = v20; v14 = 0; v16 = 0; v17 = 0; v19 = 0; v20[0] = 0; v21 = 0; v22 = 0; std::string::_M_assign((int)&v13, (int)(a3 + 6)); v16 = a3[12]; v17 = a3[13]; std::string::_M_assign((int)&v18, (int)(a3 + 15)); v21 = a3[12]; v22 = *(_DWORD *)(a2 + 48); std::vector::push_back((night::ns_sourcemap **)(a2 + 36), (night::ns_sourcemap *)&v13); std::string::basic_string((char *)&v10, (int)(a3 + 15)); *(_DWORD *)(a2 + 48) += v11; std::string::basic_string(this, &v10); std::string::_M_dispose((void **)&v10); night::ns_sourcemap::~ns_sourcemap((void **)&v13); goto LABEL_60; } if ( std::operator==((int)&night::NS_TYPE_STR, (int)v9) ) { std::operator+((char *)&v13, (int)(a3 + 27), (int)(a3 + 15)); v3 = std::string::append(&v13, (int)(a3 + 27)); std::string::basic_string(&v10, v3); std::string::_M_dispose((void **)&v13); *(_DWORD *)(a2 + 48) += v11; std::string::basic_string(this, &v10); LABEL_10: v4 = &v10; LABEL_11: std::string::_M_dispose((void **)v4); goto LABEL_60; } if ( !std::operator==((int)&night::NS_TYPE_B_TYPE, (int)v9) && !std::operator==((int)&night::NS_TYPE_PUNC, (int)v9) ) { if ( !std::operator==((int)&night::NS_TYPE_KW, (int)v9) ) { if ( std::operator==((int)&night::NS_TYPE_VAR, (int)v9) ) { night::NSCompileJs::compile_var[abi:cxx11]((char *)this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_K_V, (int)v9) ) { night::NSCompileJs::compile_k_v[abi:cxx11]((int)this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_IF, (int)v9) ) { night::NSCompileJs::compile_if[abi:cxx11](this, a2, a3); } else if ( std::operator==((int)&night::NS_TYPE_FOR, (int)v9) ) { night::NSCompileJs::compile_for[abi:cxx11](this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_WHILE, (int)v9) ) { night::NSCompileJs::compile_while[abi:cxx11](this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_DO_WHILE, (int)v9) ) { night::NSCompileJs::compile_do_while[abi:cxx11](this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_SWITCH, (int)v9) ) { night::NSCompileJs::compile_switch[abi:cxx11](this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_OBJ_SELF_OP, (int)v9) ) { night::NSCompileJs::compile_obj_self_op[abi:cxx11](this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_OBJ_PROPERTY, (int)v9) ) { night::NSCompileJs::compile_obj_property[abi:cxx11](this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_OBJ_DOT, (int)v9) ) { night::NSCompileJs::compile_obj_dot[abi:cxx11](this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_OP_SELF, (int)v9) ) { night::NSCompileJs::compile_op_self[abi:cxx11](this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_TERNARY, (int)v9) ) { night::NSCompileJs::compile_ternary[abi:cxx11](this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_BINARY, (int)v9) || std::operator==((int)&night::NS_TYPE_ASSIGN, (int)v9) ) { night::NSCompileJs::compile_binary[abi:cxx11](this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_FUNC, (int)v9) ) { night::NSCompileJs::compile_function[abi:cxx11](this, a2, a3); } else if ( std::operator==((int)&night::NS_TYPE_CALL, (int)v9) ) { night::NSCompileJs::compile_call[abi:cxx11]((int)this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_PROG, (int)v9) ) { night::NSCompileJs::compile_prog[abi:cxx11](this, a2, (int)a3); } else if ( std::operator==((int)&night::NS_TYPE_PROG_NO_SEM, (int)v9) || std::operator==((int)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, (int)v9) || std::operator==((int)&night::NS_TYPE_OBJ_BLOCK, (int)v9) || std::operator==((int)&night::NS_TYPE_ARRAY, (int)v9) || std::operator==((int)&night::NS_TYPE_BRACKET, (int)v9) ) { night::NSCompileJs::compile_prog_no_sem[abi:cxx11](this, a2, (int)a3); } else { std::string::_M_assign(a2, (int)a3); std::string::basic_string(this, (char *)&byte_551F04); } goto LABEL_60; } v10 = &v12; v11 = 0; v12 = 0; v7 = (int)(a3 + 15); if ( std::operator==("this", (int)(a3 + 15)) ) { std::string::operator=((unsigned int *)&v10, "(this.constructor===Window?{}:this)"); ++*(_DWORD *)(a2 + 48); } else { std::string::_M_assign((int)&v10, v7); } v15[0] = 0; v13 = v15; v18 = v20; v14 = 0; v16 = 0; v17 = 0; v19 = 0; v20[0] = 0; v21 = 0; v22 = 0; std::string::_M_assign((int)&v13, (int)(a3 + 6)); v16 = a3[12]; v17 = a3[13]; std::string::_M_assign((int)&v18, v7); v21 = a3[12]; v22 = *(_DWORD *)(a2 + 48); std::vector::push_back((night::ns_sourcemap **)(a2 + 36), (night::ns_sourcemap *)&v13); v5 = std::operator==("this", v7); *(_DWORD *)(a2 + 48) = !v5 + v11 + *(_DWORD *)(a2 + 48) - 1; std::string::basic_string(this, &v10); night::ns_sourcemap::~ns_sourcemap((void **)&v13); goto LABEL_10; } } std::string::basic_string((char *)&v13, (int)(a3 + 15)); *(_DWORD *)(a2 + 48) += v14; std::string::basic_string(this, &v13); v4 = &v13; goto LABEL_11; } std::string::basic_string(this, (char *)&byte_551F04); return this; } //----- (0041A302) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_k_v[abi:cxx11](int this, int a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // eax void *v7[6]; // [esp+50h] [ebp-38h] BYREF void *v8[8]; // [esp+68h] [ebp-20h] BYREF *(_BYTE *)(this + 8) = 0; *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 188)); v3 = std::string::append(v7, ":"); std::string::basic_string(v8, v3); std::string::operator=((unsigned __int8 **)this, (int)v8); std::string::_M_dispose(v8); std::string::_M_dispose(v7); ++*(_DWORD *)(a2 + 48); night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); v4 = std::string::append(v7, ","); std::string::basic_string(v8, v4); std::string::operator+=(v8); std::string::_M_dispose(v8); std::string::_M_dispose(v7); ++*(_DWORD *)(a2 + 48); return this; } // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041A482) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_if[abi:cxx11](_DWORD *this, int a2, _DWORD *a3) { void *v5[6]; // [esp+50h] [ebp-38h] BYREF void *v6[8]; // [esp+68h] [ebp-20h] BYREF this[1] = 0; *this = this + 2; *((_BYTE *)this + 8) = 0; std::string::operator+=("if "); *(_DWORD *)(a2 + 48) += 3; night::NSCompileJs::compile[abi:cxx11](a2, a3[51]); std::string::operator+=(v6); std::string::_M_dispose(v6); night::NSCompileJs::compile[abi:cxx11](a2, a3[52]); std::string::operator+=(v6); std::string::_M_dispose(v6); std::string::operator+=(a3 + 27); *(_DWORD *)(a2 + 48) += a3[28]; if ( a3[53] ) { std::string::basic_string(v5, " else "); std::string::operator+=(v5); *(_DWORD *)(a2 + 48) += v5[1]; night::NSCompileJs::compile[abi:cxx11](a2, a3[53]); std::string::operator+=(v6); std::string::_M_dispose(v6); std::string::_M_dispose(v5); } return this; } // 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041A668) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_for[abi:cxx11](_DWORD *this, int a2, int a3) { _DWORD *v3; // ecx _DWORD *v4; // eax _DWORD *v5; // eax _DWORD *v6; // eax _DWORD *v7; // eax _DWORD *v8; // eax struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-A0h] void *v12[2]; // [esp+50h] [ebp-68h] BYREF char v13; // [esp+58h] [ebp-60h] BYREF void *v14[6]; // [esp+68h] [ebp-50h] BYREF void *v15[6]; // [esp+80h] [ebp-38h] BYREF void *v16[8]; // [esp+98h] [ebp-20h] BYREF v13 = 0; v12[0] = &v13; v12[1] = 0; std::string::basic_string(v14, "for("); std::string::operator+=(v14); *(_DWORD *)(a2 + 48) += v14[1]; v3 = *(_DWORD **)(a3 + 228); if ( v3[1] - *v3 != 12 ) { std::string::basic_string(v16, "error : sys error for compile_for"); lpuexcpta = (struct _Unwind_Exception *)__cxa_allocate_exception(0x18u); std::string::basic_string(lpuexcpta, v16); __cxa_throw( lpuexcpta, (struct type_info *)&`typeinfo for'std::string, (void (__cdecl *)(void *))std::string::~string); } v4 = (_DWORD *)std::vector::at(v3, 0); night::NSCompileJs::compile[abi:cxx11](a2, *v4); v5 = std::string::append(v15, ";"); std::string::basic_string(v16, v5); std::string::operator+=(v16); std::string::_M_dispose(v16); std::string::_M_dispose(v15); ++*(_DWORD *)(a2 + 48); v6 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 228), 1u); night::NSCompileJs::compile[abi:cxx11](a2, *v6); v7 = std::string::append(v15, ";"); std::string::basic_string(v16, v7); std::string::operator+=(v16); std::string::_M_dispose(v16); std::string::_M_dispose(v15); ++*(_DWORD *)(a2 + 48); v8 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 228), 2u); night::NSCompileJs::compile[abi:cxx11](a2, *v8); std::string::operator+=(v16); std::string::_M_dispose(v16); std::string::operator+=(5580790); ++*(_DWORD *)(a2 + 48); night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 216)); std::string::operator+=(v16); std::string::_M_dispose(v16); std::string::basic_string(this, v12); std::string::_M_dispose(v14); std::string::_M_dispose(v12); return this; } // 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); // 55BB98: using guessed type int *`typeinfo for'std::string; //----- (0041A9BA) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_while[abi:cxx11](_DWORD *this, int a2, int a3) { void *v5[6]; // [esp+50h] [ebp-38h] BYREF void *v6[8]; // [esp+68h] [ebp-20h] BYREF this[1] = 0; *this = this + 2; *((_BYTE *)this + 8) = 0; std::string::basic_string(v5, "while("); std::string::operator+=(v5); *(_DWORD *)(a2 + 48) += v5[1]; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 204)); std::string::operator+=(v6); std::string::_M_dispose(v6); std::string::operator+=(5580790); ++*(_DWORD *)(a2 + 48); night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 216)); std::string::operator+=(v6); std::string::_M_dispose(v6); std::string::_M_dispose(v5); return this; } // 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041AB28) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_do_while[abi:cxx11](_DWORD *this, int a2, int a3) { void *v5[6]; // [esp+58h] [ebp-50h] BYREF void *v6[6]; // [esp+70h] [ebp-38h] BYREF void *v7[8]; // [esp+88h] [ebp-20h] BYREF this[1] = 0; *this = this + 2; *((_BYTE *)this + 8) = 0; std::string::basic_string(v5, "do"); std::string::operator+=(v5); *(_DWORD *)(a2 + 48) += v5[1]; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 216)); std::string::operator+=(v7); std::string::_M_dispose(v7); std::string::basic_string(v6, "while("); std::string::operator+=(v6); *(_DWORD *)(a2 + 48) += v6[1]; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 204)); std::string::operator+=(v7); std::string::_M_dispose(v7); std::string::basic_string(v7, ");"); std::string::operator+=(v7); *(_DWORD *)(a2 + 48) += v7[1]; std::string::_M_dispose(v7); std::string::_M_dispose(v6); std::string::_M_dispose(v5); return this; } // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041AD4C) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_switch[abi:cxx11](_DWORD *this, int a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // eax _DWORD *v5; // eax int v6; // eax _DWORD **v7; // eax _DWORD *v8; // eax _DWORD *v9; // eax _DWORD *v10; // eax _DWORD *v11; // eax unsigned int v13; // [esp+10h] [ebp-A8h] unsigned int lpuexcpt; // [esp+14h] [ebp-A4h] unsigned int lpuexcpta; // [esp+14h] [ebp-A4h] void *v17[6]; // [esp+50h] [ebp-68h] BYREF void *v18[6]; // [esp+68h] [ebp-50h] BYREF void *v19[6]; // [esp+80h] [ebp-38h] BYREF void *v20[8]; // [esp+98h] [ebp-20h] BYREF this[1] = 0; *this = this + 2; *((_BYTE *)this + 8) = 0; std::string::basic_string(v17, "switch("); std::string::operator+=(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+=(v20); std::string::_M_dispose(v20); std::string::_M_dispose(v19); lpuexcpt = 0; *(_DWORD *)(a2 + 48) += 2; while ( lpuexcpt < (*(_DWORD *)(*(_DWORD *)(a3 + 232) + 4) - **(_DWORD **)(a3 + 232)) >> 2 ) { std::string::basic_string(v18, "case "); std::string::operator+=(v18); *(_DWORD *)(a2 + 48) += v18[1]; v4 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 232), lpuexcpt); night::NSCompileJs::compile[abi:cxx11](a2, *v4); v5 = std::string::append(v19, ":"); std::string::basic_string(v20, v5); std::string::operator+=(v20); std::string::_M_dispose(v20); std::string::_M_dispose(v19); v13 = 0; ++*(_DWORD *)(a2 + 48); while ( 1 ) { v6 = std::vector>>::at( *(_DWORD **)(a3 + 236), lpuexcpt); if ( v13 >= (*(_DWORD *)(*(_DWORD *)v6 + 4) - **(_DWORD **)v6) >> 2 ) break; v7 = (_DWORD **)std::vector>>::at( *(_DWORD **)(a3 + 236), lpuexcpt); v8 = (_DWORD *)std::vector::at(*v7, v13); night::NSCompileJs::compile[abi:cxx11](a2, *v8); v9 = std::string::append(v19, ";"); std::string::basic_string(v20, v9); std::string::operator+=(v20); std::string::_M_dispose(v20); std::string::_M_dispose(v19); ++v13; ++*(_DWORD *)(a2 + 48); } std::string::_M_dispose(v18); ++lpuexcpt; } for ( lpuexcpta = 0; lpuexcpta < (*(_DWORD *)(*(_DWORD *)(a3 + 240) + 4) - **(_DWORD **)(a3 + 240)) >> 2; ++lpuexcpta ) { if ( !lpuexcpta ) { std::string::basic_string(v20, "default:"); std::string::operator+=(v20); *(_DWORD *)(a2 + 48) += v20[1]; std::string::_M_dispose(v20); } v10 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 240), lpuexcpta); night::NSCompileJs::compile[abi:cxx11](a2, *v10); v11 = std::string::append(v19, ";"); std::string::basic_string(v20, v11); std::string::operator+=(v20); std::string::_M_dispose(v20); std::string::_M_dispose(v19); ++*(_DWORD *)(a2 + 48); } std::string::operator+=("}"); ++*(_DWORD *)(a2 + 48); std::string::_M_dispose(v17); return this; } // 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041B200) -------------------------------------------------------- _BYTE *__thiscall night::NSCompileJs::compile_obj_self_op[abi:cxx11](_BYTE *this, int a2, int a3) { _DWORD *v3; // eax struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-74h] void *v7[6]; // [esp+50h] [ebp-38h] BYREF void *v8[8]; // [esp+68h] [ebp-20h] BYREF this[8] = 0; *(_DWORD *)this = this + 8; *((_DWORD *)this + 1) = 0; lpuexcpt = (struct _Unwind_Exception *)(a3 + 156); if ( *(_BYTE *)(a3 + 200) ) { std::string::operator+=(lpuexcpt); *(_DWORD *)(a2 + 48) += *(_DWORD *)(a3 + 160); night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); std::string::operator+=(v8); std::string::_M_dispose(v8); } else { night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); v3 = std::string::append(v7, (int)lpuexcpt); std::string::basic_string(v8, v3); std::string::operator+=(v8); std::string::_M_dispose(v8); std::string::_M_dispose(v7); *(_DWORD *)(a2 + 48) += *(_DWORD *)(a3 + 160); } return this; } // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041B398) -------------------------------------------------------- _BYTE *__thiscall night::NSCompileJs::compile_obj_property[abi:cxx11](_BYTE *this, int a2, int a3) { unsigned int *v3; // eax int *v4; // eax _DWORD *v5; // eax _DWORD *v6; // eax void **v7; // ecx int *v8; // eax _DWORD *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 unsigned int lpuexcpt; // [esp+18h] [ebp-180h] int v26[6]; // [esp+58h] [ebp-140h] BYREF unsigned __int8 *v27; // [esp+70h] [ebp-128h] BYREF int v28; // [esp+74h] [ebp-124h] int v29[6]; // [esp+88h] [ebp-110h] BYREF void *v30[6]; // [esp+A0h] [ebp-F8h] BYREF void *v31[6]; // [esp+B8h] [ebp-E0h] BYREF void *v32[6]; // [esp+D0h] [ebp-C8h] BYREF void *v33[6]; // [esp+E8h] [ebp-B0h] BYREF void *v34[6]; // [esp+100h] [ebp-98h] BYREF void *v35[6]; // [esp+118h] [ebp-80h] BYREF void *v36[6]; // [esp+130h] [ebp-68h] BYREF void *v37[6]; // [esp+148h] [ebp-50h] BYREF void *v38[6]; // [esp+160h] [ebp-38h] BYREF int v39[8]; // [esp+178h] [ebp-20h] BYREF std::to_string((std::__cxx11 *)v39, *(_DWORD *)(a2 + 32)); v3 = std::string::insert((unsigned int *)v39, 0, (int)&night::nst_); std::string::basic_string(v26, v3); std::string::_M_dispose((void **)v39); ++*(_DWORD *)(a2 + 32); this[8] = 0; *((_DWORD *)this + 1) = 0; *(_DWORD *)this = this + 8; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); std::string::operator+=(v39); std::string::_M_dispose((void **)v39); for ( lpuexcpt = 0; lpuexcpt < (*(_DWORD *)(*(_DWORD *)(a3 + 196) + 4) - **(_DWORD **)(a3 + 196)) >> 2; ++lpuexcpt ) { std::string::operator+=(&unk_552E38); *(_DWORD *)(a2 + 48) += 2; v4 = (int *)std::vector::at(*(_DWORD **)(a3 + 196), lpuexcpt); if ( std::operator==((int)&night::NS_TYPE_STR, *v4) ) { std::operator+((int)v39, "\"", (int)&night::nsv_); v5 = std::string::append(v39, "\"+"); std::string::basic_string(v38, v5); std::string::_M_dispose((void **)v39); std::string::operator+=(v38); *(_DWORD *)(a2 + 48) += v38[1]; v6 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), lpuexcpt); night::NSCompileJs::compile[abi:cxx11](a2, *v6); std::string::operator+=(v39); std::string::_M_dispose((void **)v39); v7 = v38; } else { v8 = (int *)std::vector::at(*(_DWORD **)(a3 + 196), lpuexcpt); if ( std::operator==((int)&night::NS_TYPE_NUM, *v8) ) { v9 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), lpuexcpt); night::NSCompileJs::compile[abi:cxx11](a2, *v9); std::string::operator+=(v39); v7 = (void **)v39; } else { std::operator+((int)v39, (char *)asc_5527F4, (int)v26); v10 = std::string::append(v39, "=("); std::string::basic_string(&v27, v10); std::string::_M_dispose((void **)v39); std::string::operator+=(&v27); *(_DWORD *)(a2 + 48) += v28; v11 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), lpuexcpt); night::NSCompileJs::compile[abi:cxx11](a2, *v11); v12 = std::string::append(v38, "),"); std::string::basic_string(v39, v12); std::string::operator+=(v39); std::string::_M_dispose((void **)v39); std::string::_M_dispose(v38); *(_DWORD *)(a2 + 48) += 2; std::operator+((int)v29, "null==", (int)v26); v13 = std::string::append(v29, "?undefined:"); std::string::basic_string(v30, v13); v14 = std::string::append(v30, "'number'=== typeof "); std::string::basic_string(v31, v14); v15 = std::string::append(v31, (int)v26); std::string::basic_string(v32, v15); v16 = std::string::append(v32, "?"); std::string::basic_string(v33, v16); v17 = std::string::append(v33, (int)v26); std::string::basic_string(v34, v17); v18 = std::string::append(v34, ":\""); std::string::basic_string(v35, v18); v19 = std::string::append(v35, (int)&night::nsv_); std::string::basic_string(v36, v19); v20 = std::string::append(v36, "\"+"); std::string::basic_string(v37, v20); v21 = std::string::append(v37, (int)v26); std::string::basic_string(v38, v21); v22 = std::string::append(v38, (char *)&asc_5527F4[2]); std::string::basic_string(v39, v22); std::string::operator=(&v27, (int)v39); std::string::_M_dispose((void **)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::_M_dispose((void **)v29); std::string::operator+=(&v27); v7 = (void **)&v27; *(_DWORD *)(a2 + 48) += v28; } } std::string::_M_dispose(v7); std::string::operator+=(")]"); *(_DWORD *)(a2 + 48) += 2; } std::string::_M_dispose((void **)v26); return this; } // 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041BB26) -------------------------------------------------------- _BYTE *__thiscall night::NSCompileJs::compile_obj_dot[abi:cxx11](_BYTE *this, int a2, int a3) { _DWORD *v3; // eax unsigned int lpuexcpt; // [esp+14h] [ebp-64h] void *v7[8]; // [esp+58h] [ebp-20h] BYREF this[8] = 0; *(_DWORD *)this = this + 8; *((_DWORD *)this + 1) = 0; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); std::string::operator+=(v7); std::string::_M_dispose(v7); for ( lpuexcpt = 0; lpuexcpt < (*(_DWORD *)(*(_DWORD *)(a3 + 196) + 4) - **(_DWORD **)(a3 + 196)) >> 2; ++lpuexcpt ) { std::string::operator+=("."); ++*(_DWORD *)(a2 + 48); v3 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), lpuexcpt); night::NSCompileJs::compile[abi:cxx11](a2, *v3); std::string::operator+=(v7); std::string::_M_dispose(v7); } return this; } // 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041BC88) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_op_self[abi:cxx11](_DWORD *this, int a2, int a3) { void *v5[8]; // [esp+58h] [ebp-20h] BYREF this[1] = 0; *this = this + 2; *((_BYTE *)this + 8) = 0; std::string::operator+=(a3 + 156); *(_DWORD *)(a2 + 48) += *(_DWORD *)(a3 + 160); night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); std::string::operator+=(v5); std::string::_M_dispose(v5); return this; } // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041BD76) -------------------------------------------------------- _BYTE *__thiscall night::NSCompileJs::compile_ternary[abi:cxx11](_BYTE *this, int a2, int a3) { _DWORD *v3; // eax void *v6[6]; // [esp+50h] [ebp-38h] BYREF void *v7[8]; // [esp+68h] [ebp-20h] BYREF this[8] = 0; *(_DWORD *)this = this + 8; *((_DWORD *)this + 1) = 0; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 180)); v3 = std::string::append(v6, ":"); std::string::basic_string(v7, v3); std::string::operator+=(v7); std::string::_M_dispose(v7); std::string::_M_dispose(v6); ++*(_DWORD *)(a2 + 48); night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 184)); std::string::operator+=(v7); std::string::_M_dispose(v7); return this; } // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041BED0) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_binary[abi:cxx11](_DWORD *this, int a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // eax void *v7[6]; // [esp+50h] [ebp-68h] BYREF void *v8[6]; // [esp+68h] [ebp-50h] BYREF void *v9[6]; // [esp+80h] [ebp-38h] BYREF int v10[8]; // [esp+98h] [ebp-20h] BYREF night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 180)); std::operator+((int)v10, " ", a3 + 156); v3 = std::string::append(v10, " "); std::string::basic_string(v8, v3); std::string::_M_dispose((void **)v10); *(_DWORD *)(a2 + 48) += v8[1]; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 184)); std::operator+((char *)v10, (int)v7, (int)v8); v4 = std::string::append(v10, (int)v9); std::string::basic_string(this, v4); std::string::_M_dispose((void **)v10); std::string::_M_dispose(v9); std::string::_M_dispose(v8); std::string::_M_dispose(v7); return this; } // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041C09C) -------------------------------------------------------- _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; } //----- (0041C0C0) -------------------------------------------------------- int __thiscall night::NSCompileJs::compile_call[abi:cxx11](int this, int a2, int a3) { _DWORD *v3; // ecx int v4; // eax int v5; // eax _DWORD **v6; // eax int *v7; // eax _DWORD **v8; // eax _DWORD *v9; // eax int v10; // eax int v11; // eax int v12; // eax _DWORD **v13; // eax _DWORD *v14; // eax int v15; // eax unsigned int v17; // [esp+1Ch] [ebp-6Ch] unsigned int v18; // [esp+1Ch] [ebp-6Ch] unsigned int v19; // [esp+20h] [ebp-68h] unsigned int i; // [esp+20h] [ebp-68h] unsigned int lpuexcpt; // [esp+24h] [ebp-64h] unsigned int lpuexcpta; // [esp+24h] [ebp-64h] void *v24[8]; // [esp+68h] [ebp-20h] BYREF *(_BYTE *)(this + 8) = 0; *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 220)); std::string::operator=((unsigned __int8 **)this, (int)v24); std::string::_M_dispose(v24); if ( std::operator==("return", *(_DWORD *)(a3 + 220) + 60) ) { for ( lpuexcpt = 0; ; ++lpuexcpt ) { v3 = *(_DWORD **)(a3 + 224); if ( lpuexcpt >= (v3[1] - *v3) >> 2 ) break; v4 = std::vector>>::at(v3, lpuexcpt); if ( **(_DWORD **)v4 != *(_DWORD *)(*(_DWORD *)v4 + 4) ) { v5 = std::vector>>::at( *(_DWORD **)(a3 + 224), lpuexcpt); if ( *(_DWORD *)(*(_DWORD *)v5 + 4) - **(_DWORD **)v5 != 4 || (v6 = (_DWORD **)std::vector>>::at( *(_DWORD **)(a3 + 224), lpuexcpt), v7 = (int *)std::vector::at(*v6, 0), !std::operator==((int)&night::NS_TYPE_SKIP, *v7)) ) { std::string::operator+=(asc_5527F4); v19 = 0; ++*(_DWORD *)(a2 + 48); while ( 1 ) { v11 = std::vector>>::at( *(_DWORD **)(a3 + 224), lpuexcpt); if ( v19 >= (*(_DWORD *)(*(_DWORD *)v11 + 4) - **(_DWORD **)v11) >> 2 ) break; v8 = (_DWORD **)std::vector>>::at( *(_DWORD **)(a3 + 224), lpuexcpt); v9 = (_DWORD *)std::vector::at(*v8, v19); night::NSCompileJs::compile[abi:cxx11](a2, *v9); std::string::operator+=(v24); std::string::_M_dispose(v24); v17 = v19 + 1; v10 = std::vector>>::at( *(_DWORD **)(a3 + 224), lpuexcpt); v19 = (*(_DWORD *)(*(_DWORD *)v10 + 4) - **(_DWORD **)v10) >> 2; if ( v17 != v19 ) { std::string::operator+=(","); ++*(_DWORD *)(a2 + 48); v19 = v17; } } std::string::operator+=(5580790); ++*(_DWORD *)(a2 + 48); } } } } else { for ( i = 0; i < (*(_DWORD *)(*(_DWORD *)(a3 + 224) + 4) - **(_DWORD **)(a3 + 224)) >> 2; ++i ) { std::string::operator+=(asc_5527F4); lpuexcpta = 0; ++*(_DWORD *)(a2 + 48); while ( 1 ) { v12 = std::vector>>::at(*(_DWORD **)(a3 + 224), i); if ( lpuexcpta >= (*(_DWORD *)(*(_DWORD *)v12 + 4) - **(_DWORD **)v12) >> 2 ) break; v13 = (_DWORD **)std::vector>>::at( *(_DWORD **)(a3 + 224), i); v14 = (_DWORD *)std::vector::at(*v13, lpuexcpta); night::NSCompileJs::compile[abi:cxx11](a2, *v14); std::string::operator+=(v24); std::string::_M_dispose(v24); v18 = lpuexcpta + 1; v15 = std::vector>>::at(*(_DWORD **)(a3 + 224), i); lpuexcpta = (*(_DWORD *)(*(_DWORD *)v15 + 4) - **(_DWORD **)v15) >> 2; if ( v18 != lpuexcpta ) { std::string::operator+=(","); ++*(_DWORD *)(a2 + 48); lpuexcpta = v18; } } std::string::operator+=(5580790); ++*(_DWORD *)(a2 + 48); } } return this; } // 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041C4DC) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_prog[abi:cxx11](_DWORD *this, int a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx unsigned int v6; // [esp+10h] [ebp-78h] unsigned int lpuexcpt; // [esp+14h] [ebp-74h] void *v9; // [esp+50h] [ebp-38h] BYREF int v10; // [esp+54h] [ebp-34h] void *v11[8]; // [esp+68h] [ebp-20h] BYREF std::string::basic_string((char *)&v9, a3 + 108); if ( !v10 ) std::string::operator=((unsigned int *)&v9, ";"); lpuexcpt = 0; this[1] = 0; *this = this + 2; *((_BYTE *)this + 8) = 0; while ( 1 ) { v4 = *(_DWORD **)(a3 + 228); if ( lpuexcpt >= (v4[1] - *v4) >> 2 ) break; v3 = (_DWORD *)std::vector::at(v4, lpuexcpt); night::NSCompileJs::compile[abi:cxx11](a2, *v3); std::string::operator+=(v11); std::string::_M_dispose(v11); v6 = lpuexcpt + 1; lpuexcpt = (*(_DWORD *)(*(_DWORD *)(a3 + 228) + 4) - **(_DWORD **)(a3 + 228)) >> 2; if ( v6 != lpuexcpt ) { std::string::operator+=(&v9); *(_DWORD *)(a2 + 48) += v10; lpuexcpt = v6; } } std::string::_M_dispose(&v9); return this; } // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041C66C) -------------------------------------------------------- _DWORD *__thiscall night::NSCompileJs::compile_prog_no_sem[abi:cxx11](_DWORD *this, int a2, int a3) { _DWORD *v3; // ecx _DWORD *v4; // eax unsigned int lpuexcpt; // [esp+14h] [ebp-64h] void *v8[8]; // [esp+58h] [ebp-20h] BYREF this[1] = 0; *this = this + 2; *((_BYTE *)this + 8) = 0; if ( std::operator==((int)&night::NS_TYPE_OBJ_BLOCK, a3) ) { std::string::operator+=(asc_5527F4); ++*(_DWORD *)(a2 + 48); } for ( lpuexcpt = 0; ; ++lpuexcpt ) { v3 = *(_DWORD **)(a3 + 228); if ( lpuexcpt >= (v3[1] - *v3) >> 2 ) break; v4 = (_DWORD *)std::vector::at(v3, lpuexcpt); night::NSCompileJs::compile[abi:cxx11](a2, *v4); std::string::operator+=(v8); std::string::_M_dispose(v8); } if ( std::operator==((int)&night::NS_TYPE_OBJ_BLOCK, a3) ) { std::string::operator+=(5580790); ++*(_DWORD *)(a2 + 48); } return this; } // 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); //----- (0041C7CC) -------------------------------------------------------- char *__thiscall night::NSCompileJs::compile_once(char *this, int a2, unsigned int *a3, int a4, char a5) { const char **v5; // eax struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] void *v9[8]; // [esp+58h] [ebp-20h] BYREF *(_DWORD *)(a2 + 28) = a4; std::string::operator=(a3, (char *)&byte_551F04); v5 = (const char **)night::NSASTParse::top_down(*(int **)(a2 + 24)); lpuexcpt = (struct _Unwind_Exception *)v5; if ( a5 ) { night::ns_node::debug_no_space[abi:cxx11](v9, v5); printf("ast :%s\n", (const char *)v9[0]); std::string::_M_dispose(v9); } night::NSCompileJs::compile[abi:cxx11](v9, a2, lpuexcpt); std::string::_M_assign((int)a3, (int)v9); std::string::basic_string(this, a2); std::string::_M_dispose(v9); return this; } //----- (0041C8EC) -------------------------------------------------------- int __cdecl night::compile_ns(int a1, int a2, int a3, int a4, unsigned int *a5, char a6) { _DWORD *v6; // eax _DWORD *v7; // eax _DWORD *v8; // eax _DWORD *v9; // eax _DWORD *v10; // eax _DWORD *v11; // eax _DWORD *v12; // eax int v13; // edx int v14; // edx int lpuexcpt; // [esp+18h] [ebp-200h] void *v17[3]; // [esp+5Ch] [ebp-1BCh] BYREF void **v18[3]; // [esp+68h] [ebp-1B0h] BYREF void *v19[2]; // [esp+74h] [ebp-1A4h] BYREF char v20; // [esp+7Ch] [ebp-19Ch] BYREF void *v21[6]; // [esp+8Ch] [ebp-18Ch] BYREF void *v22[6]; // [esp+A4h] [ebp-174h] BYREF int v23[6]; // [esp+BCh] [ebp-15Ch] BYREF int v24[6]; // [esp+D4h] [ebp-144h] BYREF int v25[6]; // [esp+ECh] [ebp-12Ch] BYREF void *v26[6]; // [esp+104h] [ebp-114h] BYREF int v27[7]; // [esp+11Ch] [ebp-FCh] BYREF int v28[5]; // [esp+138h] [ebp-E0h] BYREF void *v29[2]; // [esp+14Ch] [ebp-CCh] BYREF char v30; // [esp+154h] [ebp-C4h] BYREF void **v31; // [esp+164h] [ebp-B4h] int v32; // [esp+168h] [ebp-B0h] int v33; // [esp+16Ch] [ebp-ACh] int v34; // [esp+170h] [ebp-A8h] int v35; // [esp+174h] [ebp-A4h] int v36; // [esp+178h] [ebp-A0h] int v37; // [esp+17Ch] [ebp-9Ch] void *v38[15]; // [esp+180h] [ebp-98h] BYREF void *v39[23]; // [esp+1BCh] [ebp-5Ch] BYREF std::string::operator=(a5, (char *)&byte_551F04); memset(v17, 0, sizeof(v17)); night::NSStream::NSStream(v38, a1, a3, a4); v28[2] = (int)v28; v28[3] = (int)v28; v27[1] = (int)v38; v27[0] = (int)v17; v28[0] = 0; v28[1] = 0; v28[4] = 0; memset(&v27[2], 0, 16); std::string::basic_string((char *)v29, a1); night::NSASTParse::NSASTParse((int)v39, (int)v29, (int)v27, (int)v17); std::string::_M_dispose(v29); v29[1] = 0; v29[0] = &v30; v31 = v39; v19[0] = &v20; v30 = 0; v34 = 0; v35 = 0; v36 = 0; v32 = 0; v33 = 0; v37 = 1; v19[1] = 0; v20 = 0; memset(v18, 0, sizeof(v18)); night::NSCompileJs::compile_once((char *)v21, (int)v29, (unsigned int *)v19, (int)v18, a6); night::NSGod::hamlet(v17); if ( v21[1] ) { std::string::_M_assign((int)a5, (int)v21); lpuexcpt = 121; } else { std::operator+((int)v24, ";return ", (int)&night::nsv_); v6 = std::string::append(v24, "module."); std::string::basic_string(v25, v6); v7 = std::string::append(v25, (int)&night::nsv_); std::string::basic_string(v26, v7); v8 = std::string::append(v26, "exports;"); std::string::basic_string(v22, v8); std::string::_M_dispose(v26); std::string::_M_dispose((void **)v25); std::string::_M_dispose((void **)v24); std::operator+((int)v25, "function ", a2); v9 = std::string::append(v25, "(){"); std::string::basic_string(v26, v9); std::string::operator=((unsigned __int8 **)a5, (int)v26); std::string::_M_dispose(v26); std::string::_M_dispose((void **)v25); std::operator+((int)v23, "var ", (int)&night::nsv_); v10 = std::string::append(v23, "module={"); std::string::basic_string(v24, v10); v11 = std::string::append(v24, (int)&night::nsv_); std::string::basic_string(v25, v11); v12 = std::string::append(v25, "exports:{}};"); std::string::basic_string(v26, v12); std::string::operator+=(v26); std::string::_M_dispose(v26); std::string::_M_dispose((void **)v25); std::string::_M_dispose((void **)v24); std::string::_M_dispose((void **)v23); std::operator+((char *)v26, (int)v19, (int)v22); std::string::operator+=(v26); std::string::_M_dispose(v26); std::string::operator+=("}"); std::string::_M_dispose(v22); lpuexcpt = 0; } std::string::_M_dispose(v21); std::vector::~vector(v18, v13); std::string::_M_dispose(v19); night::NSCompileJs::~NSCompileJs((int)v29, v14); night::NSASTParse::~NSASTParse(v39); night::NSToken::~NSToken((int)v27); night::NSStream::~NSStream(v38); std::_Vector_base::~_Vector_base(v17); return lpuexcpt; } // 41CE51: variable 'v13' is possibly undefined // 41D02D: variable 'v14' is possibly undefined // 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); //----- (0041D077) -------------------------------------------------------- int __cdecl night::compile_ns_with_sourcemap( night::NSASTParse *a1, int a2, int a3, int a4, int a5, unsigned int *a6, int a7) { _DWORD *v7; // eax _DWORD *v8; // eax _DWORD *v9; // eax _DWORD *v10; // eax _DWORD *v11; // eax _DWORD *v12; // eax _DWORD *v13; // eax int v14; // eax int v15; // edx int v16; // ecx int v17; // edx int v18; // ecx int v19; // eax int v20; // edx int v21; // ecx int v22; // edx int v23; // ecx int v24; // edx int v25; // edx int v26; // edx const night::ns_sourcemap *v28; // [esp+4h] [ebp-234h] int v29; // [esp+28h] [ebp-210h] int v30; // [esp+2Ch] [ebp-20Ch] void *v31; // [esp+30h] [ebp-208h] int v32; // [esp+34h] [ebp-204h] int lpuexcpt; // [esp+38h] [ebp-200h] struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-200h] struct _Unwind_Exception *lpuexcptb; // [esp+38h] [ebp-200h] void *v36[3]; // [esp+70h] [ebp-1C8h] BYREF void **v37[3]; // [esp+7Ch] [ebp-1BCh] BYREF void *Block; // [esp+88h] [ebp-1B0h] BYREF int v39; // [esp+8Ch] [ebp-1ACh] int v40; // [esp+90h] [ebp-1A8h] void *v41[2]; // [esp+94h] [ebp-1A4h] BYREF char v42; // [esp+9Ch] [ebp-19Ch] BYREF void *v43[6]; // [esp+ACh] [ebp-18Ch] BYREF void *v44[6]; // [esp+C4h] [ebp-174h] BYREF int v45; // [esp+DCh] [ebp-15Ch] BYREF int v46; // [esp+E0h] [ebp-158h] BYREF int v47; // [esp+E4h] [ebp-154h] int *v48; // [esp+E8h] [ebp-150h] int *v49; // [esp+ECh] [ebp-14Ch] int v50; // [esp+F0h] [ebp-148h] int v51; // [esp+F4h] [ebp-144h] BYREF int v52; // [esp+F8h] [ebp-140h] BYREF int v53; // [esp+FCh] [ebp-13Ch] int *v54; // [esp+100h] [ebp-138h] int *v55; // [esp+104h] [ebp-134h] int v56; // [esp+108h] [ebp-130h] int v57; // [esp+10Ch] [ebp-12Ch] BYREF int v58; // [esp+110h] [ebp-128h] BYREF int v59; // [esp+114h] [ebp-124h] int *v60; // [esp+118h] [ebp-120h] int *v61; // [esp+11Ch] [ebp-11Ch] int v62; // [esp+120h] [ebp-118h] int v63; // [esp+124h] [ebp-114h] BYREF int v64; // [esp+128h] [ebp-110h] BYREF int v65; // [esp+12Ch] [ebp-10Ch] int *v66; // [esp+130h] [ebp-108h] int *v67; // [esp+134h] [ebp-104h] int v68; // [esp+138h] [ebp-100h] int v69[7]; // [esp+13Ch] [ebp-FCh] BYREF int v70[5]; // [esp+158h] [ebp-E0h] BYREF void *v71[2]; // [esp+16Ch] [ebp-CCh] BYREF char v72; // [esp+174h] [ebp-C4h] BYREF void **v73; // [esp+184h] [ebp-B4h] int v74; // [esp+188h] [ebp-B0h] int v75; // [esp+18Ch] [ebp-ACh] struct _Unwind_Exception *v76; // [esp+190h] [ebp-A8h] struct _Unwind_Exception *v77; // [esp+194h] [ebp-A4h] int v78; // [esp+198h] [ebp-A0h] int v79; // [esp+19Ch] [ebp-9Ch] void *v80[15]; // [esp+1A0h] [ebp-98h] BYREF void *v81[23]; // [esp+1DCh] [ebp-5Ch] BYREF std::string::operator=(a6, (char *)&byte_551F04); 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; v69[0] = (int)v36; v70[0] = 0; v70[1] = 0; v70[4] = 0; memset(&v69[2], 0, 16); std::string::basic_string((char *)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((char *)v43, (int)v71, (unsigned int *)v41, (int)v37, 0); night::NSGod::hamlet(v36); if ( v43[1] ) { std::string::_M_assign((int)a6, (int)v43); lpuexcpt = 121; } else { std::operator+((int)&v51, ";return ", (int)&night::nsv_); v7 = std::string::append(&v51, "module."); std::string::basic_string(&v57, v7); v8 = std::string::append(&v57, (int)&night::nsv_); std::string::basic_string(&v63, v8); v9 = std::string::append(&v63, "exports;"); std::string::basic_string(v44, v9); std::string::_M_dispose((void **)&v63); std::string::_M_dispose((void **)&v57); std::string::_M_dispose((void **)&v51); std::operator+((int)&v57, "function ", a3); v10 = std::string::append(&v57, "(){"); std::string::basic_string(&v63, v10); std::string::operator=((unsigned __int8 **)a6, (int)&v63); std::string::_M_dispose((void **)&v63); std::string::_M_dispose((void **)&v57); std::operator+((int)&v45, "var ", (int)&night::nsv_); v11 = std::string::append(&v45, "module={"); std::string::basic_string(&v51, v11); v12 = std::string::append(&v51, (int)&night::nsv_); std::string::basic_string(&v57, v12); v13 = std::string::append(&v57, "exports:{}};"); std::string::basic_string(&v63, v13); std::string::operator+=(&v63); std::string::_M_dispose((void **)&v63); std::string::_M_dispose((void **)&v57); std::string::_M_dispose((void **)&v51); std::string::_M_dispose((void **)&v45); v32 = a6[1]; std::operator+((char *)&v63, (int)v41, (int)v44); std::string::operator+=(&v63); std::string::_M_dispose((void **)&v63); std::string::operator+=("}"); std::operator+((int)&v63, "\n//# sourceMappingURL=", a2); std::string::operator+=(&v63); std::string::_M_dispose((void **)&v63); Block = 0; v39 = 0; v40 = 0; lpuexcpta = (struct _Unwind_Exception *)(v77 - v76); if ( v77 == v76 ) { v31 = 0; } else { if ( (unsigned int)(v77 - v76) > 0x7FFFFFC0 ) std::__throw_bad_alloc(); v31 = operator new((size_t)lpuexcpta); } Block = v31; v39 = (int)v31; v40 = (int)lpuexcpta + (_DWORD)v31; v29 = (int)v77; lpuexcptb = v76; v30 = (int)v31; while ( (struct _Unwind_Exception *)v29 != lpuexcptb ) { night::ns_sourcemap::ns_sourcemap(v30, lpuexcptb, v28); v30 += 64; lpuexcptb = (struct _Unwind_Exception *)((char *)lpuexcptb + 64); } v46 = 0; v39 = v30; v48 = &v46; v49 = &v46; v47 = 0; v50 = 0; v52 = 0; v53 = 0; v54 = &v52; v55 = &v52; v56 = 0; night::NSToken::get_tokens_for_sourcemap(v69, (void **)&v45, &v51); v64 = 0; v65 = 0; v66 = &v64; v67 = &v64; v68 = 0; if ( v53 ) { v14 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( v53, (int)&v64); v15 = v14; do { v16 = v15; v15 = *(_DWORD *)(v15 + 8); } while ( v15 ); v66 = (int *)v16; v17 = v14; do { v18 = v17; v17 = *(_DWORD *)(v17 + 12); } while ( v17 ); v67 = (int *)v18; v65 = v14; v68 = v56; } v58 = 0; v59 = 0; v60 = &v58; v61 = &v58; v62 = 0; if ( v47 ) { v19 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( v47, (int)&v58); v20 = v19; do { v21 = v20; v20 = *(_DWORD *)(v20 + 8); } while ( v20 ); v60 = (int *)v21; v22 = v19; do { v23 = v22; v22 = *(_DWORD *)(v22 + 12); } while ( v22 ); v61 = (int *)v23; v59 = v19; v62 = v50; } night::sourcemap::gen_sourcemap_content((int *)a1, &v57, &v63, (int *)&Block, v32, a7); 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((void ***)&Block, v24); std::string::_M_dispose(v44); lpuexcpt = 0; } std::string::_M_dispose(v43); std::vector::~vector(v37, v25); std::string::_M_dispose(v41); night::NSCompileJs::~NSCompileJs((int)v71, v26); night::NSASTParse::~NSASTParse(v81); night::NSToken::~NSToken((int)v69); night::NSStream::~NSStream(v80); std::_Vector_base::~_Vector_base(v36); return lpuexcpt; } // 41D6D5: variable 'v28' is possibly undefined // 41D8F8: variable 'v24' is possibly undefined // 41D923: variable 'v25' is possibly undefined // 41DB97: variable 'v26' is possibly undefined // 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); //----- (0041DBE4) -------------------------------------------------------- void __tcf_0(void) { std::string::_M_dispose((void **)&night::nsv_); } //----- (0041DBEE) -------------------------------------------------------- void __tcf_1_1(void) { std::string::_M_dispose((void **)&night::nst_); } //----- (0041DBF8) -------------------------------------------------------- void __tcf_2_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); } //----- (0041DC02) -------------------------------------------------------- void __tcf_3_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); } //----- (0041DC0C) -------------------------------------------------------- void __tcf_4_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_VAR); } //----- (0041DC16) -------------------------------------------------------- void __tcf_5_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_STR); } //----- (0041DC20) -------------------------------------------------------- void __tcf_6_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_NUM); } //----- (0041DC2A) -------------------------------------------------------- void __tcf_7_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); } //----- (0041DC34) -------------------------------------------------------- void __tcf_8_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_KW); } //----- (0041DC3E) -------------------------------------------------------- void __tcf_9_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); } //----- (0041DC48) -------------------------------------------------------- void __tcf_10_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OP); } //----- (0041DC52) -------------------------------------------------------- void __tcf_11_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); } //----- (0041DC5C) -------------------------------------------------------- void __tcf_12_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); } //----- (0041DC66) -------------------------------------------------------- void __tcf_13_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); } //----- (0041DC70) -------------------------------------------------------- void __tcf_14_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); } //----- (0041DC7A) -------------------------------------------------------- void __tcf_15_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_K_V); } //----- (0041DC84) -------------------------------------------------------- void __tcf_16_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); } //----- (0041DC8E) -------------------------------------------------------- void __tcf_17_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); } //----- (0041DC98) -------------------------------------------------------- void __tcf_18_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); } //----- (0041DCA2) -------------------------------------------------------- void __tcf_19_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); } //----- (0041DCAC) -------------------------------------------------------- void __tcf_20_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); } //----- (0041DCB6) -------------------------------------------------------- void __tcf_21_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); } //----- (0041DCC0) -------------------------------------------------------- void __tcf_22_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_IF); } //----- (0041DCCA) -------------------------------------------------------- void __tcf_23_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_FOR); } //----- (0041DCD4) -------------------------------------------------------- void __tcf_24_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); } //----- (0041DCDE) -------------------------------------------------------- void __tcf_25_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); } //----- (0041DCE8) -------------------------------------------------------- void __tcf_26_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); } //----- (0041DCF2) -------------------------------------------------------- void __tcf_27_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PROG); } //----- (0041DCFC) -------------------------------------------------------- void __tcf_28_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); } //----- (0041DD06) -------------------------------------------------------- void __tcf_29_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); } //----- (0041DD10) -------------------------------------------------------- void __tcf_30_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); } //----- (0041DD1A) -------------------------------------------------------- void __tcf_31_1(void) { std::string::_M_dispose((void **)&night::NS_TYPE_CALL); } //----- (0041DD24) -------------------------------------------------------- void __tcf_32_1(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); } //----- (0041DD2E) -------------------------------------------------------- void __tcf_33_1(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); } //----- (0041DD38) -------------------------------------------------------- void __tcf_34_1(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); } //----- (0041DD42) -------------------------------------------------------- void __tcf_35_1(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); } //----- (0041DD4C) -------------------------------------------------------- void __tcf_36_1(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); } //----- (0041DD56) -------------------------------------------------------- void __tcf_37_1(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); } //----- (0041DD60) -------------------------------------------------------- void __tcf_38_1(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); } //----- (0041DD6A) -------------------------------------------------------- _DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2) { return std::string::_M_append(this, *(_BYTE **)a2, *(_DWORD *)(a2 + 4)); } //----- (0041DD8A) -------------------------------------------------------- int __cdecl night::sourcemap::int2vlq[abi:cxx11](int a1, int a2) { int v2; // edx int v3; // eax int v4; // edx int lpuexcpt; // [esp+18h] [ebp-40h] v2 = 2 * a2; *(_DWORD *)(a1 + 4) = 0; if ( a2 < 0 ) v2 = (-2 * a2) | 1; *(_BYTE *)(a1 + 8) = 0; lpuexcpt = v2; *(_DWORD *)a1 = a1 + 8; do { v3 = lpuexcpt; lpuexcpt >>= 5; v4 = v3 % 32; if ( lpuexcpt > 0 ) v4 |= 0x20u; std::string::push_back((_DWORD *)a1, night::sourcemap::g_sVLQ[v4]); } while ( lpuexcpt > 0 ); return a1; } // 53E0DC: using guessed type char *night::sourcemap::g_sVLQ; //----- (0041DE4C) -------------------------------------------------------- int __cdecl night::sourcemap::gen_sourcemap_content(int *a1, _DWORD *a2, _DWORD *a3, int *a4, int a5, int a6) { char *v6; // eax _DWORD *v7; // eax char *v8; // eax bool v9; // zf void **v10; // eax void **v11; // edx void **v12; // edx char v13; // al void *v14; // eax void **v16; // [esp+18h] [ebp-C0h] int insert_hint_unique_pos; // [esp+18h] [ebp-C0h] int v18; // [esp+1Ch] [ebp-BCh] int v19; // [esp+20h] [ebp-B8h] int v20; // [esp+24h] [ebp-B4h] int v21; // [esp+28h] [ebp-B0h] int v22; // [esp+2Ch] [ebp-ACh] int v23; // [esp+30h] [ebp-A8h] int v24; // [esp+30h] [ebp-A8h] int v25; // [esp+34h] [ebp-A4h] int v26; // [esp+38h] [ebp-A0h] void **v27; // [esp+38h] [ebp-A0h] void **v28; // [esp+3Ch] [ebp-9Ch] int v29; // [esp+3Ch] [ebp-9Ch] void **v30; // [esp+40h] [ebp-98h] void **v31; // [esp+40h] [ebp-98h] int v32; // [esp+40h] [ebp-98h] struct _Unwind_Exception *lpuexcpt; // [esp+44h] [ebp-94h] unsigned int lpuexcpta; // [esp+44h] [ebp-94h] void **Block; // [esp+48h] [ebp-90h] unsigned int v36; // [esp+84h] [ebp-54h] BYREF char *v37; // [esp+88h] [ebp-50h] BYREF int v38; // [esp+8Ch] [ebp-4Ch] char v39; // [esp+90h] [ebp-48h] BYREF int v40[2]; // [esp+A0h] [ebp-38h] BYREF char v41; // [esp+A8h] [ebp-30h] BYREF void *v42[8]; // [esp+B8h] [ebp-20h] BYREF v39 = 0; v37 = &v39; v38 = 0; std::string::append(&v37, "{\"version\":3,\"sources\":[\""); WXML::Rewrite::ToStringCode((int)v42, a1); std::string::operator+=(&v37, (int)v42); std::string::_M_dispose(v42); std::string::append(&v37, "\"],"); std::string::append(&v37, "\"names\":["); for ( lpuexcpt = 0; (unsigned int)lpuexcpt < a3[5]; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) { if ( lpuexcpt ) { v36 = (unsigned int)lpuexcpt + 1; v8 = std::map::operator[](a3, &v36); std::operator+((int)v40, ",\"", (int)v8); } else { v36 = 1; v6 = std::map::operator[](a3, &v36); std::operator+((int)v40, "\"", (int)v6); } v7 = std::string::append(v40, "\""); std::string::basic_string(v42, v7); std::string::operator+=(&v37, (int)v42); std::string::_M_dispose(v42); std::string::_M_dispose((void **)v40); } std::string::append(&v37, "],"); std::string::append(&v37, "\"mappings\":\""); lpuexcpta = 0; v21 = 0; v22 = 0; v23 = 0; v25 = 0; while ( lpuexcpta < (a4[1] - *a4) >> 6 ) { v20 = *(_DWORD *)(std::vector::at(a4, lpuexcpta) + 60) + a5 - 1; v19 = *(_DWORD *)(std::vector::at(a4, lpuexcpta) + 24) - 1; v18 = *(_DWORD *)(std::vector::at(a4, lpuexcpta) + 28) - 1; v26 = std::vector::at(a4, lpuexcpta); v28 = (void **)(a2 + 1); v30 = (void **)a2[2]; Block = (void **)(a2 + 1); while ( v30 ) { v9 = (unsigned __int8)std::operator<((int)(v30 + 4), v26) == 0; v10 = Block; if ( v9 ) v10 = v30; v11 = (void **)v30[3]; Block = v10; if ( v9 ) v11 = (void **)v30[2]; v30 = v11; } if ( v28 == Block || (unsigned __int8)std::operator<(v26, (int)(Block + 4)) ) { v16 = Block; Block = (void **)operator new(0x2Cu); v31 = Block + 4; std::string::basic_string((char *)Block + 16, v26); Block[10] = 0; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( a2, v16, (int)(Block + 4)); v27 = v12; if ( v12 ) { v13 = insert_hint_unique_pos != 0 || v28 == v12; if ( !v13 ) v13 = std::operator<((int)v31, (int)(v12 + 4)); std::_Rb_tree_insert_and_rebalance(v13, Block, v27, v28); ++a2[5]; } else { std::string::_M_dispose(v31); operator delete(Block); Block = (void **)insert_hint_unique_pos; } } v14 = Block[10]; v40[1] = 0; v41 = 0; v32 = (int)v14 - 1; v29 = v19 - v23; v24 = (int)v14 - v21 - 1; v40[0] = (int)&v41; night::sourcemap::int2vlq[abi:cxx11]((int)v42, v20 - v25); std::string::operator+=(v40, (int)v42); std::string::_M_dispose(v42); night::sourcemap::int2vlq[abi:cxx11]((int)v42, 0); std::string::operator+=(v40, (int)v42); std::string::_M_dispose(v42); night::sourcemap::int2vlq[abi:cxx11]((int)v42, v29); std::string::operator+=(v40, (int)v42); std::string::_M_dispose(v42); night::sourcemap::int2vlq[abi:cxx11]((int)v42, v18 - v22); std::string::operator+=(v40, (int)v42); std::string::_M_dispose(v42); night::sourcemap::int2vlq[abi:cxx11]((int)v42, v24); std::string::operator+=(v40, (int)v42); std::string::_M_dispose(v42); std::string::basic_string((char *)v42, (int)v40); std::string::append(v42, ","); std::string::operator+=(&v37, (int)v42); std::string::_M_dispose(v42); std::string::_M_dispose((void **)v40); ++lpuexcpta; v21 = v32; v22 = v18; v23 = v19; v25 = v20; } v37[v38 - 1] = 34; std::string::append(&v37, "}"); std::string::_M_assign(a6, (int)&v37); std::string::_M_dispose((void **)&v37); return 0; } // 41E242: variable 'v12' is possibly undefined //----- (0041E5F4) -------------------------------------------------------- void __tcf_1_2(void) { std::string::_M_dispose((void **)&night::nsv_); } //----- (0041E5FE) -------------------------------------------------------- void __tcf_2_2(void) { std::string::_M_dispose((void **)&night::nst_); } //----- (0041E608) -------------------------------------------------------- void __tcf_3_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); } //----- (0041E612) -------------------------------------------------------- void __tcf_4_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); } //----- (0041E61C) -------------------------------------------------------- void __tcf_5_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_VAR); } //----- (0041E626) -------------------------------------------------------- void __tcf_6_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_STR); } //----- (0041E630) -------------------------------------------------------- void __tcf_7_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_NUM); } //----- (0041E63A) -------------------------------------------------------- void __tcf_8_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); } //----- (0041E644) -------------------------------------------------------- void __tcf_9_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_KW); } //----- (0041E64E) -------------------------------------------------------- void __tcf_10_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); } //----- (0041E658) -------------------------------------------------------- void __tcf_11_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OP); } //----- (0041E662) -------------------------------------------------------- void __tcf_12_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); } //----- (0041E66C) -------------------------------------------------------- void __tcf_13_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); } //----- (0041E676) -------------------------------------------------------- void __tcf_14_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); } //----- (0041E680) -------------------------------------------------------- void __tcf_15_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); } //----- (0041E68A) -------------------------------------------------------- void __tcf_16_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_K_V); } //----- (0041E694) -------------------------------------------------------- void __tcf_17_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); } //----- (0041E69E) -------------------------------------------------------- void __tcf_18_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); } //----- (0041E6A8) -------------------------------------------------------- void __tcf_19_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); } //----- (0041E6B2) -------------------------------------------------------- void __tcf_20_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); } //----- (0041E6BC) -------------------------------------------------------- void __tcf_21_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); } //----- (0041E6C6) -------------------------------------------------------- void __tcf_22_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); } //----- (0041E6D0) -------------------------------------------------------- void __tcf_23_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_IF); } //----- (0041E6DA) -------------------------------------------------------- void __tcf_24_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_FOR); } //----- (0041E6E4) -------------------------------------------------------- void __tcf_25_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); } //----- (0041E6EE) -------------------------------------------------------- void __tcf_26_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); } //----- (0041E6F8) -------------------------------------------------------- void __tcf_27_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); } //----- (0041E702) -------------------------------------------------------- void __tcf_28_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PROG); } //----- (0041E70C) -------------------------------------------------------- void __tcf_29_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); } //----- (0041E716) -------------------------------------------------------- void __tcf_30_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); } //----- (0041E720) -------------------------------------------------------- void __tcf_31_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); } //----- (0041E72A) -------------------------------------------------------- void __tcf_32_2(void) { std::string::_M_dispose((void **)&night::NS_TYPE_CALL); } //----- (0041E734) -------------------------------------------------------- void __tcf_33_2(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); } //----- (0041E73E) -------------------------------------------------------- void __tcf_34_2(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); } //----- (0041E748) -------------------------------------------------------- void __tcf_35_2(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); } //----- (0041E752) -------------------------------------------------------- void __tcf_36_2(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); } //----- (0041E75C) -------------------------------------------------------- void __tcf_37_2(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); } //----- (0041E766) -------------------------------------------------------- void __tcf_38_2(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); } //----- (0041E770) -------------------------------------------------------- void __tcf_39_1(void) { std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); } //----- (0041E77A) -------------------------------------------------------- int __cdecl night::str::path_combine(_DWORD *a1, _DWORD *a2, int a3) { void *v3; // ecx _BYTE *v4; // eax size_t v5; // eax _BYTE *v6; // edx int v7; // edx int v9; // [esp+14h] [ebp-94h] int lpuexcpt; // [esp+18h] [ebp-90h] char *v11; // [esp+58h] [ebp-50h] BYREF unsigned int v12; // [esp+5Ch] [ebp-4Ch] char v13; // [esp+60h] [ebp-48h] BYREF void *v14[6]; // [esp+70h] [ebp-38h] BYREF void *Src; // [esp+88h] [ebp-20h] BYREF size_t Size; // [esp+8Ch] [ebp-1Ch] int v17[5]; // [esp+90h] [ebp-18h] BYREF v12 = 0; v11 = &v13; v13 = 0; lpuexcpt = MMBizWxaAppComm::PathCombine(a1, a2, (unsigned int *)&v11); if ( !lpuexcpt ) { lpuexcpt = 1; if ( v12 > 3 ) { std::string::substr(v14, &v11, v12 - 4, 0xFFFFFFFF); lpuexcpt = std::string::compare((int)v14, ".wxs"); std::string::_M_dispose(v14); if ( lpuexcpt ) { lpuexcpt = 2; } else { WXML::Rewrite::ToStringCode((int)&Src, (int *)&v11); v3 = Src; v4 = *(_BYTE **)a3; if ( Src == v17 ) { if ( Size ) std::string::_S_copy(v4, (unsigned __int8 *)Src, Size); v5 = Size; v6 = *(_BYTE **)a3; *(_DWORD *)(a3 + 4) = Size; v6[v5] = 0; } else { if ( v4 == (_BYTE *)(a3 + 8) ) v4 = 0; else v9 = *(_DWORD *)(a3 + 8); *(_DWORD *)(a3 + 4) = Size; v7 = v17[0]; *(_DWORD *)a3 = v3; *(_DWORD *)(a3 + 8) = v7; if ( v4 ) { Src = v4; v17[0] = v9; } else { Src = v17; } } Size = 0; *(_BYTE *)Src = 0; std::string::_M_dispose(&Src); } } } std::string::_M_dispose((void **)&v11); return lpuexcpt; } // 41E8CE: variable 'v9' is possibly undefined //----- (0041E949) -------------------------------------------------------- int __cdecl night::str::get_token(int a1, _DWORD *a2, unsigned int a3) { char v3; // al *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; while ( a3 < a2[1] ) { v3 = *(_BYTE *)std::string::at(a2, a3); if ( (unsigned __int8)((v3 & 0xDF) - 65) > 0x19u && v3 != 95 && (unsigned __int8)(v3 - 48) > 9u ) break; ++a3; std::string::push_back((_DWORD *)a1, v3); } return a1; } //----- (0041EA13) -------------------------------------------------------- int __cdecl night::readfile(char *FileName, unsigned int *a2) { void *v2; // esp FILE *v3; // eax FILE *v4; // ebx unsigned int v5; // eax char Buffer[4]; // [esp+10h] [ebp-1018h] BYREF char v8[4092]; // [esp+14h] [ebp-1014h] BYREF v2 = alloca(4124); std::string::_M_replace(a2, 0, a2[1], (char *)&unk_5534F3, 0); v3 = fopen(FileName, "r"); if ( !v3 ) return -1; v4 = v3; memset(v8, 0, sizeof(v8)); *(_DWORD *)Buffer = 0; while ( fgets(Buffer, 4096, v4) ) { v5 = strlen(Buffer); if ( 0x3FFFFFFF - a2[1] < v5 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(a2, Buffer, v5); } fclose(v4); return 0; } //----- (0041EAE9) -------------------------------------------------------- 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; } //----- (0041EB4C) -------------------------------------------------------- bool __cdecl WXML::DOMLib::AttrsCompartor(int a1, int a2) { return *(_DWORD *)(a1 + 80) < *(_DWORD *)(a2 + 80); } //----- (0041EB60) -------------------------------------------------------- void __tcf_1_3(void) { std::ios_base::Init::~Init(); } //----- (0041EB6A) -------------------------------------------------------- int __usercall __gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>@( int (__cdecl *a1)(int, int)@, int a2@, int a3@) { return a1(a2, a3); } //----- (0041EB7C) -------------------------------------------------------- void __usercall std::_Rb_tree,std::less,std::allocator>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-18h] while ( a1 ) { std::_Rb_tree,std::less,std::allocator>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::string::_M_dispose((void **)(a1 + 16)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (0041EBB0) -------------------------------------------------------- void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::string::_M_dispose((void **)(a1 + 40)); std::string::_M_dispose((void **)(a1 + 16)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (0041EBF0) -------------------------------------------------------- std::ostream::sentry *__usercall std::operator<<>@( std::ostream::sentry *a1@, char a2@
) { int v3[3]; // [esp+1Ch] [ebp-Ch] BYREF LOBYTE(v3[0]) = a2; return std::__ostream_insert>(a1, (int)v3, 1); } // 41EBF0: using guessed type int var_C[3]; //----- (0041EC12) -------------------------------------------------------- unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) { size_t v2; // eax v2 = strlen(Str); return std::string::_M_replace(this, 0, this[1], Str, v2); } //----- (0041EC50) -------------------------------------------------------- unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) { unsigned __int8 *v3; // eax unsigned __int8 *v4; // ecx unsigned __int8 *v5; // edx unsigned __int8 *v6; // eax unsigned __int8 *v7; // edx unsigned __int8 *result; // eax unsigned __int8 *v9; // [esp+18h] [ebp-20h] v3 = *this; v4 = *(unsigned __int8 **)a2; v5 = *(unsigned __int8 **)(a2 + 4); if ( *(_DWORD *)a2 == a2 + 8 ) { if ( v5 ) std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); v6 = *(unsigned __int8 **)(a2 + 4); v7 = *this; this[1] = v6; v6[(_DWORD)v7] = 0; } else { if ( v3 == (unsigned __int8 *)(this + 2) ) v3 = 0; else v9 = this[2]; *this = v4; this[1] = v5; this[2] = *(unsigned __int8 **)(a2 + 8); if ( v3 ) { *(_DWORD *)a2 = v3; *(_DWORD *)(a2 + 8) = v9; } else { *(_DWORD *)a2 = a2 + 8; } } result = *(unsigned __int8 **)a2; *(_DWORD *)(a2 + 4) = 0; *result = 0; return result; } // 41ECB7: variable 'v9' is possibly undefined //----- (0041ECD8) -------------------------------------------------------- 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; } // 41ECFE: variable 'v8' is possibly undefined //----- (0041ED2A) -------------------------------------------------------- void __fastcall WXML::DOMLib::Parser::Match(int a1) { ++*(_DWORD *)(a1 + 100); } //----- (0041ED2E) -------------------------------------------------------- bool __stdcall WXML::DOMLib::Parser::IsValidTag(const char **a1) { return strncmp(*a1, "wx-", 3u) != 0; } //----- (0041ED5A) -------------------------------------------------------- _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); // 112 ascii -> 'p' return result; } //----- (0041ED84) -------------------------------------------------------- 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+58h] [ebp-F0h] BYREF char v14[8]; // [esp+70h] [ebp-D8h] BYREF char v15[4]; // [esp+78h] [ebp-D0h] BYREF char v16[204]; // [esp+7Ch] [ebp-CCh] 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, (int)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; } // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 41ED84: using guessed type char var_D0[4]; // 41ED84: using guessed type char var_CC[204]; //----- (0041EFB6) -------------------------------------------------------- int __cdecl WXML::DOMLib::joinString(int a1, _DWORD *a2, char a3) { struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-110h] char v5[8]; // [esp+50h] [ebp-D8h] BYREF char v6[4]; // [esp+58h] [ebp-D0h] BYREF char v7[204]; // [esp+5Ch] [ebp-CCh] BYREF std::basic_stringstream,std::allocator>::basic_stringstream((int)v5); for ( lpuexcpt = 0; (unsigned int)lpuexcpt < -1431655765 * ((a2[1] - *a2) >> 3); lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) { // -1431655765 * ((a2[1] - *a2) >> 3 =====> a2.size() std::operator<<((std::ostream::sentry *)v6, (int *)(24 * (_DWORD)lpuexcpt + *a2)); if ( (struct _Unwind_Exception *)(-1431655765 * ((a2[1] - *a2) >> 3) - 1) != lpuexcpt ) std::operator<<>((std::ostream::sentry *)v6, a3); } std::stringbuf::str(a1, (int)v7); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v5); return a1; } // 41EFB6: using guessed type char var_D0[4]; // 41EFB6: using guessed type char var_CC[204]; //----- (0041F11E) -------------------------------------------------------- _DWORD *__thiscall WXML::DOMLib::Parser::GetParsed(_DWORD *ecx0, WXML::DOMLib::Parser *this) { std::__shared_ptr::__shared_ptr(ecx0, this); return ecx0; } //----- (0041F13A) -------------------------------------------------------- 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); } //----- (0041F166) -------------------------------------------------------- void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( int a1@) { int v2; // esi while ( a1 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node((void **)a1); a1 = v2; } } //----- (0041F18C) -------------------------------------------------------- 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(*(_DWORD *)(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); } //----- (0041F210) -------------------------------------------------------- void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, int a2) { if ( *this != (volatile signed __int32 *)a2 ) { if ( a2 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(a2); if ( *this ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(*this); *this = (volatile signed __int32 *)a2; } } //----- (0041F23C) -------------------------------------------------------- void __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, *(_DWORD *)(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); } //----- (0041F2C0) -------------------------------------------------------- _DWORD *__thiscall WXML::DOMLib::Parser::Error( _DWORD *ecx0, WXML::DOMLib::Parser *this, char *a3, WXML::DOMLib::Token *a4) { WXML::DOMLib::Token *v4; // eax 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 char v10; // dl const WXML::DOMLib::Token *v12; // [esp+4h] [ebp-1C4h] char *v13; // [esp+4h] [ebp-1C4h] int v14; // [esp+1Ch] [ebp-1ACh] int v15; // [esp+20h] [ebp-1A8h] int v16; // [esp+24h] [ebp-1A4h] void *v18[6]; // [esp+68h] [ebp-160h] BYREF int v19[5]; // [esp+80h] [ebp-148h] BYREF int v20; // [esp+94h] [ebp-134h] int v21; // [esp+98h] [ebp-130h] char v22[8]; // [esp+F0h] [ebp-D8h] BYREF char v23[4]; // [esp+F8h] [ebp-D0h] BYREF char v24[204]; // [esp+FCh] [ebp-CCh] BYREF std::basic_stringstream,std::allocator>::basic_stringstream((int)v22); v4 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(this); WXML::DOMLib::Token::Token((int)v19, v4, v12); if ( v21 == 4 ) { if ( !a4 ) a4 = (WXML::DOMLib::Token *)(*((_DWORD *)this + 22) + 112 * (*((_DWORD *)this + 25) - 1)); WXML::DOMLib::Token::operator=((int)v19, (int)a4); a3 = "end tag missing"; } v5 = std::operator<<((std::ostream::sentry *)v23, (int *)this + 82); std::operator<<>(v5, ":"); v6 = (std::ostream::sentry *)std::ostream::operator<<(v19[2]); std::operator<<>(v6, ":"); v7 = (std::ostream::sentry *)std::ostream::operator<<(v19[3]); v8 = std::operator<<>(v7, ": "); v9 = std::operator<<>(v8, a3); std::operator<<>(v9, ", near `"); v16 = 0; v14 = *(_DWORD *)v19[0]; v15 = v19[4]; while ( v20 > v16 ) { if ( v16 == 7 ) { if ( v20 > 7 ) std::operator<<>((std::ostream::sentry *)v23, "..."); break; } v10 = *(_BYTE *)(v15 + v14 + v16); if ( v10 == 13 ) { v13 = "\\r"; LABEL_11: std::operator<<>((std::ostream::sentry *)v23, v13); goto LABEL_12; } if ( v10 == 10 ) { v13 = "\\n"; goto LABEL_11; } std::operator<<>((std::ostream::sentry *)v23, v10); LABEL_12: ++v16; } std::operator<<>((std::ostream::sentry *)v23, "`"); std::stringbuf::str((int)v18, (int)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; } // 41F337: variable 'v12' is possibly undefined // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 41F2C0: using guessed type char var_D0[4]; // 41F2C0: using guessed type char var_CC[204]; //----- (0041F610) -------------------------------------------------------- unsigned __int8 *__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, *(_DWORD *)(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=((unsigned __int8 **)(this + 32), a2 + 32); *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); std::string::operator=((unsigned __int8 **)(this + 60), a2 + 60); *(_BYTE *)(this + 84) = *(_BYTE *)(a2 + 84); return std::string::operator=((unsigned __int8 **)(this + 88), a2 + 88); } //----- (0041F694) -------------------------------------------------------- unsigned __int8 *__thiscall std::pair::operator=(unsigned __int8 **this, int a2) { std::string::operator=(this, a2); return WXML::DOMLib::Token::operator=((int)(this + 6), a2 + 24); } //----- (0041F6BE) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, char *Str) { size_t v2; // eax size_t v3; // eax void **v5; // [esp+1Ch] [ebp-Ch] *this = this + 2; v2 = -1; if ( Str ) { v5 = this; v3 = strlen(Str); this = v5; v2 = (size_t)&Str[v3]; } return std::string::_M_construct(this, (unsigned __int8 *)Str, v2); } //----- (0041F6F9) -------------------------------------------------------- void **__cdecl WXML::DOMLib::removern(void **a1, _DWORD *a2) { unsigned int v2; // edx char v3; // al struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-40h] std::string::basic_string(a1, (char *)&byte_5537CA); for ( lpuexcpt = 0; ; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) { v2 = a2[1]; if ( (unsigned int)lpuexcpt >= v2 ) break; v3 = *((_BYTE *)lpuexcpt + *a2); if ( v2 - 1 <= (unsigned int)lpuexcpt || v3 != 13 || *((_BYTE *)lpuexcpt + *a2 + 1) != 10 ) std::string::push_back(a1, v3); } return a1; } //----- (0041F7BA) -------------------------------------------------------- int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound@( int a1@, int a2@, int a3@) { char v6; // al int v7; // edx while ( a1 ) { v6 = std::operator<(a1 + 16, a3); v7 = *(_DWORD *)(a1 + 12); if ( !v6 ) v7 = *(_DWORD *)(a1 + 8); if ( !v6 ) a2 = a1; a1 = v7; } return a2; } //----- (0041F7F6) -------------------------------------------------------- int __thiscall WXML::DOMLib::WXMLDom::AddTestAttr(_DWORD *this, int *a2, int a3, char a4) { std::ostream::sentry *v4; // eax 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 std::ostream::sentry *v12; // eax std::ostream::sentry *v13; // eax std::ostream::sentry *v14; // eax std::ostream::sentry *v15; // eax BOOL v17; // [esp+18h] [ebp-140h] unsigned int i; // [esp+20h] [ebp-138h] BOOL lpuexcpt; // [esp+24h] [ebp-134h] struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-134h] void **v22; // [esp+28h] [ebp-130h] void *v23[6]; // [esp+60h] [ebp-F8h] BYREF _QWORD v24[3]; // [esp+78h] [ebp-E0h] BYREF void *v25[6]; // [esp+90h] [ebp-C8h] BYREF void *v26[6]; // [esp+A8h] [ebp-B0h] BYREF _QWORD v27[3]; // [esp+C0h] [ebp-98h] BYREF void *v28; // [esp+D8h] [ebp-80h] BYREF void *v29; // [esp+F0h] [ebp-68h] BYREF void *v30; // [esp+108h] [ebp-50h] BYREF void *v31; // [esp+120h] [ebp-38h] BYREF void *v32; // [esp+138h] [ebp-20h] BYREF char v33; // [esp+150h] [ebp-8h] BYREF lpuexcpt = 1; if ( !std::operator==((int)this, "button") ) lpuexcpt = 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_553859); std::string::basic_string(v25, "touchstart"); std::string::basic_string(v26, "touchend"); for ( i = 0; i <= 5 && !lpuexcpt; ++i ) { lpuexcpta = 0; do { std::string::basic_string((char *)v23, (int)&v27[3 * i]); std::string::append(v23, (int)&v24[3 * (int)lpuexcpta]); v17 = std::map::count(this + 12, (int)v23); std::string::_M_dispose(v23); lpuexcpta = (struct _Unwind_Exception *)((char *)lpuexcpta + 1); } while ( (unsigned int)lpuexcpta <= 2 && !v17 ); lpuexcpt = v17; } if ( lpuexcpt ) { ++WXML::DOMLib::WXMLDom::componentCnt; v4 = std::operator<<>((std::ostream::sentry *)(a3 + 8), "_af("); v5 = std::operator<<(v4, a2); v6 = std::operator<<>(v5, ","); v7 = std::ostream::_M_insert(v6, 1); v8 = std::operator<<>(v7, ","); v9 = std::ostream::_M_insert(v8, this[66], this[67]); } else { v10 = std::operator<<>((std::ostream::sentry *)(a3 + 8), "_af("); v11 = std::operator<<(v10, a2); v12 = std::operator<<>(v11, ","); v9 = std::ostream::_M_insert(v12, 0); } v13 = std::operator<<>(v9, ","); v14 = std::ostream::_M_insert(v13, this[66], this[67]); v15 = std::operator<<>(v14, ");"); std::operator<<>(v15, a4); std::string::_M_dispose(v26); std::string::_M_dispose(v25); std::string::_M_dispose((void **)v24); v22 = (void **)&v33; do { v22 -= 6; std::string::_M_dispose(v22); } while ( v22 != (void **)v27 ); return 0; } // 566558: using guessed type int WXML::DOMLib::WXMLDom::componentCnt; //----- (0041FD73) -------------------------------------------------------- int __cdecl WXML::DOMLib::splitString(int a1, int *a2, char a3) { char *i; // [esp+14h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] void *v6[8]; // [esp+58h] [ebp-20h] BYREF *(_DWORD *)a1 = 0; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; lpuexcpt = 0; for ( i = std::string::find(a2, a3, 0); i != (char *)-1; i = std::string::find(a2, a3, (unsigned int)(i + 1)) ) { std::string::substr(v6, a2, (unsigned int)lpuexcpt, i - (char *)lpuexcpt); std::vector::emplace_back((void **)a1, v6); std::string::_M_dispose(v6); lpuexcpt = (struct _Unwind_Exception *)(i + 1); } std::string::substr(v6, a2, (unsigned int)lpuexcpt, 0xFFFFFFFF); std::vector::emplace_back((void **)a1, v6); std::string::_M_dispose(v6); return a1; } //----- (0041FEDD) -------------------------------------------------------- int __cdecl WXML::DOMLib::resolvePath(int a1, int *a2, int *a3) { int v3; // edx int v4; // edx unsigned int v5; // eax unsigned int i; // [esp+14h] [ebp-84h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-80h] bool lpuexcpta; // [esp+18h] [ebp-80h] void **v10; // [esp+54h] [ebp-44h] BYREF void **v11; // [esp+58h] [ebp-40h] void *v12[6]; // [esp+60h] [ebp-38h] BYREF int v13[8]; // [esp+78h] [ebp-20h] BYREF *(_BYTE *)(a1 + 8) = 0; *(_DWORD *)a1 = a1 + 8; *(_DWORD *)(a1 + 4) = 0; if ( *(_BYTE *)*a3 != '/'/*47*/ ) { // path1 WXML::DOMLib::splitString((int)&v10, a2, '/'/*47*/); v11 -= 6; std::string::_M_dispose(v11); // path2 WXML::DOMLib::splitString((int)v13, a3, '/'/*47*/); for ( i = 0; i < -1431655765 * ((v13[1] - v13[0]) >> 3); ++i ) { lpuexcpt = (struct _Unwind_Exception *)(24 * i); // v13 p2Split if ( std::operator==(24 * i + v13[0], "..") ) { v11 -= 6; std::string::_M_dispose(v11); } else if ( !std::operator==((int)lpuexcpt + v13[0], (char *)&byte_5537CA) && !std::operator==((int)lpuexcpt + v13[0], ".") ) { std::vector::push_back((int)&v10, (int)lpuexcpt + v13[0]); } } WXML::DOMLib::joinString((int)v12, &v10, '/'/*47*/); std::string::operator=((unsigned __int8 **)a1, (int)v12); std::string::_M_dispose(v12); std::vector::~vector((void ***)v13, v3); std::vector::~vector(&v10, v4); } if ( *(_BYTE *)*a2 == '.'/*46*/ && *(_BYTE *)*a3 == '/'/*47*/ ) { std::operator+((int)v13, ".", (int)a3); std::string::operator=((unsigned __int8 **)a1, (int)v13); std::string::_M_dispose((void **)v13); } v5 = *(_DWORD *)(a1 + 4); if ( v5 <= 4 || (std::string::substr(v13, (_DWORD *)a1, v5 - 5, 0xFFFFFFFF), lpuexcpta = std::operator==((int)v13, ".wxml"), std::string::_M_dispose((void **)v13), !lpuexcpta) ) { std::string::append((_DWORD *)a1, ".wxml"); } return a1; } // 42006A: variable 'v3' is possibly undefined // 420072: variable 'v4' is possibly undefined //----- (00420184) -------------------------------------------------------- void __fastcall WXML::DOMLib::Parser::ATTR(WXML::DOMLib::Parser *a1) { WXML::DOMLib::Token *v1; // eax int i; // edx char v3; // cl unsigned __int8 **v4; // eax _DWORD *v5; // eax WXML::DOMLib::Token *v6; // eax int v7; // ecx char *v8; // eax int v9; // ecx char *v10; // eax const WXML::DOMLib::Token *v11; // [esp+4h] [ebp-164h] const char *v12; // [esp+4h] [ebp-164h] const char *v13; // [esp+4h] [ebp-164h] const char *v14; // [esp+4h] [ebp-164h] const WXML::DOMLib::Token *v15; // [esp+4h] [ebp-164h] _DWORD *exception; // [esp+14h] [ebp-154h] void *v18[6]; // [esp+58h] [ebp-110h] BYREF int v19[5]; // [esp+70h] [ebp-F8h] BYREF int v20; // [esp+84h] [ebp-E4h] char v21[24]; // [esp+E0h] [ebp-88h] BYREF int v22; // [esp+F8h] [ebp-70h] v1 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::Token((int)v19, v1, v11); if ( !WXML::DOMLib::Token::IsMatch((int)v19, (WXML::DOMLib::Token *)">", v12) && !WXML::DOMLib::Token::IsMatch((int)v19, (WXML::DOMLib::Token *)"/>", v13) ) { if ( !v19[0] ) goto LABEL_12; for ( i = 0; v20 > i; ++i ) { v3 = *(_BYTE *)(v19[4] + *(_DWORD *)v19[0] + i); if ( // 0xDF -> 1101 1111 (unsigned __int8)((v3 & 0xDF) - 'A'/*65*/) > 25/*0x19u*/ // 超出26个大写字母范围 && (unsigned __int8)(v3 - '0'/*48*/) > 10 /*0xAu*/ // 不是9,可能把(冒号:)考虑进去了 && v3 != '_'/*95*/ // 不是下划线 && v3 != '-'/*45*/ // 不是连字符 ) goto LABEL_12; } // 0xFFFE -> 1111 1111 1111 1110 // 确保v20在1-65535之间 if ( (unsigned int)(v20 - 1) > 0xFFFE ) // if (v20 > 0xFFFF) { 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); } v4 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v19); std::string::basic_string((char *)v18, (int)v4); ++*((_DWORD *)a1 + 25); v5 = WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::operator=((int)v19, (int)v5); if ( WXML::DOMLib::Token::IsMatch((int)v19, (WXML::DOMLib::Token *)"=", v14) ) { ++*((_DWORD *)a1 + 25); v6 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::Token((int)v21, v6, v15); if ( v22 == 2 ) { ++*((_DWORD *)a1 + 25); v7 = *(_DWORD *)std::deque>::back((_DWORD *)a1 + 12); v8 = std::map::operator[]((_DWORD *)(v7 + 48), (int)v18); WXML::DOMLib::Token::operator=((int)v8, (int)v21); } WXML::DOMLib::Token::~Token((int)v21); } else { v9 = *(_DWORD *)std::deque>::back((_DWORD *)a1 + 12); v10 = std::map::operator[]((_DWORD *)(v9 + 48), (int)v18); WXML::DOMLib::Token::operator=((int)v10, (int)a1 + 216); } std::string::_M_dispose(v18); } WXML::DOMLib::Token::~Token((int)v19); } // 4201EC: variable 'v11' is possibly undefined // 4201FF: variable 'v12' is possibly undefined // 42021A: variable 'v13' is possibly undefined // 42033E: variable 'v14' is possibly undefined // 420361: variable 'v15' is possibly undefined // 55B664: using guessed type int *`typeinfo for'WXML::DOMLib::ParseException; //----- (0042049C) -------------------------------------------------------- void __fastcall WXML::DOMLib::Parser::ATTR_LIST(WXML::DOMLib::Parser *a1) { WXML::DOMLib::Token *v1; // eax WXML::DOMLib::Parser *v2; // edx const WXML::DOMLib::Token *v3; // [esp+4h] [ebp-C4h] const char *v4; // [esp+4h] [ebp-C4h] const char *v5; // [esp+4h] [ebp-C4h] char v7[120]; // [esp+50h] [ebp-78h] BYREF WXML::DOMLib::Parser::ATTR(a1); v1 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::Token((int)v7, v1, v3); if ( !WXML::DOMLib::Token::IsMatch((int)v7, (WXML::DOMLib::Token *)">", v4) && !WXML::DOMLib::Token::IsMatch((int)v7, (WXML::DOMLib::Token *)"/>", v5) ) { WXML::DOMLib::Parser::ATTR_LIST(v2); } WXML::DOMLib::Token::~Token((int)v7); } // 420509: variable 'v3' is possibly undefined // 420519: variable 'v4' is possibly undefined // 42052D: variable 'v5' is possibly undefined // 420547: variable 'v2' is possibly undefined //----- (00420592) -------------------------------------------------------- void __thiscall std::map::erase(_DWORD *this, int a2) { int *v3; // edx int *v4; // esi int *v5; // edi int *v6; // eax int v7; // [esp+1Ch] [ebp-1Ch] v4 = (int *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::equal_range( this, a2); v5 = v3; if ( v4 == (int *)this[3] && v3 == this + 1 ) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(this[2]); this[2] = 0; this[3] = v5; this[4] = v5; this[5] = 0; } else { while ( v5 != v4 ) { v7 = std::_Rb_tree_increment((int)v4); v6 = std::_Rb_tree_rebalance_for_erase(v4, this + 1); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node((void **)v6); --this[5]; v4 = (int *)v7; } } } // 4205AB: variable 'v3' is possibly undefined //----- (0042060C) -------------------------------------------------------- int __fastcall WXML::DOMLib::WXMLDom::RewriteTree(int a1) { int v1; // edx _DWORD *v2; // eax unsigned int *v3; // edx char *v4; // eax unsigned int *v5; // eax int v6; // edx char *v7; // eax unsigned int *v8; // edx _DWORD *v9; // eax unsigned int *v10; // edx char *v11; // eax volatile signed __int32 **v12; // ecx unsigned int *v13; // eax int v14; // edx unsigned int *v15; // ecx int v16; // edx unsigned int *v17; // ecx int v18; // edx char *v19; // eax unsigned int *v20; // edx char *v21; // eax char *v22; // eax char *v23; // eax char *v24; // eax volatile signed __int32 **v25; // ecx unsigned int *v26; // ecx int v27; // edx char *v28; // eax unsigned int *v29; // edx char *v30; // eax volatile signed __int32 **v31; // ecx unsigned int *v32; // ecx unsigned int *v34; // [esp+0h] [ebp-188h] char *v35; // [esp+0h] [ebp-188h] const WXML::DOMLib::Token *v36; // [esp+4h] [ebp-184h] _DWORD *v37; // [esp+10h] [ebp-178h] char **v38; // [esp+14h] [ebp-174h] void *Block; // [esp+18h] [ebp-170h] char *Blocka; // [esp+18h] [ebp-170h] _DWORD *Blockb; // [esp+18h] [ebp-170h] void *Blockc; // [esp+18h] [ebp-170h] unsigned int *Blockd; // [esp+18h] [ebp-170h] _DWORD *Blocke; // [esp+18h] [ebp-170h] char *Blockf; // [esp+18h] [ebp-170h] _DWORD *Blockg; // [esp+18h] [ebp-170h] _DWORD *Blockh; // [esp+18h] [ebp-170h] _DWORD *Blocki; // [esp+18h] [ebp-170h] char *Blockj; // [esp+18h] [ebp-170h] char *v50; // [esp+1Ch] [ebp-16Ch] _DWORD *v51; // [esp+1Ch] [ebp-16Ch] bool v52; // [esp+1Ch] [ebp-16Ch] _DWORD *v53; // [esp+1Ch] [ebp-16Ch] _DWORD *v54; // [esp+1Ch] [ebp-16Ch] void *v55; // [esp+1Ch] [ebp-16Ch] unsigned int *v56; // [esp+1Ch] [ebp-16Ch] _DWORD *v57; // [esp+1Ch] [ebp-16Ch] _DWORD *v58; // [esp+1Ch] [ebp-16Ch] _DWORD *v59; // [esp+1Ch] [ebp-16Ch] unsigned int *v60; // [esp+1Ch] [ebp-16Ch] _DWORD *v61; // [esp+1Ch] [ebp-16Ch] _DWORD *v62; // [esp+1Ch] [ebp-16Ch] _DWORD *v63; // [esp+1Ch] [ebp-16Ch] unsigned int *v64; // [esp+1Ch] [ebp-16Ch] _DWORD *v65; // [esp+1Ch] [ebp-16Ch] _DWORD *v66; // [esp+1Ch] [ebp-16Ch] _DWORD *v67; // [esp+1Ch] [ebp-16Ch] unsigned int *v68; // [esp+1Ch] [ebp-16Ch] _DWORD *v69; // [esp+1Ch] [ebp-16Ch] _DWORD *v70; // [esp+1Ch] [ebp-16Ch] void *v71; // [esp+1Ch] [ebp-16Ch] unsigned int *v72; // [esp+1Ch] [ebp-16Ch] _DWORD *v73; // [esp+1Ch] [ebp-16Ch] int v74; // [esp+20h] [ebp-168h] int v75; // [esp+20h] [ebp-168h] _DWORD *v76; // [esp+20h] [ebp-168h] unsigned int i; // [esp+20h] [ebp-168h] unsigned int j; // [esp+20h] [ebp-168h] int v79; // [esp+20h] [ebp-168h] char *Str; // [esp+24h] [ebp-164h] char *Strg; // [esp+24h] [ebp-164h] char *Stra; // [esp+24h] [ebp-164h] char *Strb; // [esp+24h] [ebp-164h] char *Strc; // [esp+24h] [ebp-164h] char *Strd; // [esp+24h] [ebp-164h] char *Stre; // [esp+24h] [ebp-164h] char *Strf; // [esp+24h] [ebp-164h] _DWORD *v89; // [esp+6Ch] [ebp-11Ch] BYREF volatile signed __int32 *v90; // [esp+70h] [ebp-118h] BYREF unsigned int *v91; // [esp+74h] [ebp-114h] volatile signed __int32 *v92; // [esp+78h] [ebp-110h] BYREF void *v93[6]; // [esp+7Ch] [ebp-10Ch] BYREF void *v94[6]; // [esp+94h] [ebp-F4h] BYREF void *v95[6]; // [esp+ACh] [ebp-DCh] BYREF _DWORD *v96; // [esp+C4h] [ebp-C4h] BYREF volatile signed __int32 *v97[5]; // [esp+C8h] [ebp-C0h] BYREF unsigned int *v98; // [esp+DCh] [ebp-ACh] BYREF volatile signed __int32 *v99[5]; // [esp+E0h] [ebp-A8h] BYREF void *v100[6]; // [esp+F4h] [ebp-94h] BYREF const char *v101; // [esp+10Ch] [ebp-7Ch] BYREF char v102[120]; // [esp+110h] [ebp-78h] BYREF for ( Str = 0; ; ++Str ) { v1 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v1) >> 3 <= (unsigned int)Str ) break; v74 = *(_DWORD *)(v1 + 8 * (_DWORD)Str); std::string::basic_string((void **)&v101, "wx:for"); v2 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v74 + 48), (int)&v101); v34 = v3; Block = v2; std::string::_M_dispose((void **)&v101); if ( Block != (void *)(v74 + 52) ) { v75 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str); std::string::basic_string(v100, "wx:for"); v4 = std::map::operator[]( (_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str) + 48), v100); v101 = "wx:for-items"; WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v4, v36); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( (_DWORD *)(v75 + 48), (char **)&v101); WXML::DOMLib::Token::~Token((int)v102); std::string::_M_dispose(v100); v76 = (_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str) + 48); std::string::basic_string((void **)&v101, "wx:for"); std::map::erase(v76, (int)&v101); v34 = v5; std::string::_M_dispose((void **)&v101); } } for ( i = 0; ; ++i ) { v6 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v6) >> 3 <= i ) break; v50 = (char *)(8 * i); Strg = *(char **)(v6 + 8 * i); std::string::basic_string((void **)&v101, "wx:for-items"); v7 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)Strg + 12, (int)&v101); v34 = v8; Blocka = v7; std::string::_M_dispose((void **)&v101); if ( Blocka == Strg + 52 && !std::operator==(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * i), "block") ) { v38 = WXML::DOMLib::szWXIFControlAttrs; while ( 1 ) { Stra = *v38; if ( !*v38 ) break; Blockb = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * i); std::string::basic_string((void **)&v101, Stra); v9 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( Blockb + 12, (int)&v101); v34 = v10; v37 = v9; std::string::_M_dispose((void **)&v101); ++v38; if ( v37 != Blockb + 13 ) { std::__shared_ptr::__shared_ptr( &v96, &v50[*(_DWORD *)(a1 + 72)]); Blockc = operator new(0x128u); WXML::DOMLib::WXMLDom::WXMLDom((int)Blockc); zcc::shared_ptr::shared_ptr(Blockc); Blockd = v98; std::string::basic_string(v100, Stra); v11 = std::map::operator[](v96 + 12, v100); v101 = Stra; WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v11, v36); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( Blockd + 12, (char **)&v101); WXML::DOMLib::Token::~Token((int)v102); std::string::_M_dispose(v100); std::string::operator=(v98, "block"); WXML::DOMLib::Token::operator=((int)(v98 + 21), (int)(v96 + 21)); std::string::_M_assign((int)(v98 + 6), (int)(v96 + 6)); Blocke = v96 + 12; std::string::basic_string((void **)&v101, Stra); std::map::erase(Blocke, (int)&v101); std::string::_M_dispose((void **)&v101); std::vector>::push_back(v98 + 18, &v96); v12 = (volatile signed __int32 **)&v50[*(_DWORD *)(a1 + 72) + 4]; *(v12 - 1) = (volatile signed __int32 *)v98; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v12, (int)v99[0]); v34 = v13; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v99); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v97); break; } } } } for ( Strb = 0; ; ++Strb ) { v14 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v14) >> 3 <= (unsigned int)Strb ) break; if ( !std::operator==(*(_DWORD *)(v14 + 8 * (_DWORD)Strb), "template") ) goto LABEL_23; v51 = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb); std::string::basic_string(v100, "is"); if ( v51 + 13 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v51 + 12, (int)v100) ) { v52 = 0; } else { v53 = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb); std::string::basic_string((void **)&v101, "name"); v52 = v53 + 13 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v53 + 12, (int)&v101); std::string::_M_dispose((void **)&v101); } std::string::_M_dispose(v100); if ( v52 ) { v15 = *(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb); v35 = "wx-template"; } else { LABEL_23: if ( !std::operator==(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb), "template") ) continue; v15 = *(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb); v35 = "wx-define"; } v34 = std::string::operator=(v15, v35); } for ( Strc = 0; ; ++Strc ) { v16 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v16) >> 3 <= (unsigned int)Strc ) break; if ( std::operator==(*(_DWORD *)(v16 + 8 * (_DWORD)Strc), "block") ) { std::string::operator=(*(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strc), "block"); v34 = v17; } } for ( j = 0; ; ++j ) { v18 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v18) >> 3 <= j ) break; Strd = (char *)(8 * j); if ( (unsigned __int8)std::operator!=(*(_DWORD *)(v18 + 8 * j), "wx-repeat") ) { if ( (unsigned __int8)std::operator!=(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j), "wx-define") ) { if ( (unsigned __int8)std::operator!=(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j), "wx-import") ) { if ( (unsigned __int8)std::operator!=(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j), "import") ) { v54 = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * j); std::string::basic_string((void **)&v101, "wx:for-items"); v19 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v54 + 12, (int)&v101); v34 = v20; Blockf = v19; std::string::_M_dispose((void **)&v101); if ( Blockf != (char *)(v54 + 13) ) { std::__shared_ptr::__shared_ptr( &v89, &Strd[*(_DWORD *)(a1 + 72)]); v55 = operator new(0x128u); WXML::DOMLib::WXMLDom::WXMLDom((int)v55); zcc::shared_ptr::shared_ptr(v55); std::string::operator=(v91, "wx-repeat"); std::string::_M_assign((int)(v91 + 6), *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j) + 24); WXML::DOMLib::Token::operator=((int)(v91 + 21), (int)(v89 + 21)); std::vector>::push_back(v91 + 18, &v89); v56 = v91; std::string::basic_string(v100, "wx:for-items"); v21 = std::map::operator[](v89 + 12, v100); v101 = "wx:for-items"; WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v21, v36); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( v56 + 12, (char **)&v101); WXML::DOMLib::Token::~Token((int)v102); std::string::_M_dispose(v100); v57 = v89 + 12; std::string::basic_string(v93, "wx:for-items"); std::map::erase(v57, (int)v93); std::string::_M_dispose(v93); v58 = v89; Blockg = v89 + 13; std::string::basic_string(v94, "wx:for-item"); v59 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v58 + 12, (int)v94); std::string::_M_dispose(v94); if ( Blockg != v59 ) { v60 = v91; std::string::basic_string(v100, "wx:for-item"); v22 = std::map::operator[](v89 + 12, v100); v101 = "wx:for-item"; WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v22, v36); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( v60 + 12, (char **)&v101); WXML::DOMLib::Token::~Token((int)v102); std::string::_M_dispose(v100); v61 = v89 + 12; std::string::basic_string(v95, "wx:for-item"); std::map::erase(v61, (int)v95); std::string::_M_dispose(v95); } v62 = v89; Blockh = v89 + 13; std::string::basic_string((void **)&v96, "wx:for-index"); v63 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v62 + 12, (int)&v96); std::string::_M_dispose((void **)&v96); if ( v63 != Blockh ) { v64 = v91; std::string::basic_string(v100, "wx:for-index"); v23 = std::map::operator[](v89 + 12, v100); v101 = "wx:for-index"; WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v23, v36); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( v64 + 12, (char **)&v101); WXML::DOMLib::Token::~Token((int)v102); std::string::_M_dispose(v100); v65 = v89 + 12; std::string::basic_string((void **)&v98, "wx:for-index"); std::map::erase(v65, (int)&v98); std::string::_M_dispose((void **)&v98); } v66 = v89; Blocki = v89 + 13; std::string::basic_string(v100, "wx:key"); v67 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v66 + 12, (int)v100); std::string::_M_dispose(v100); if ( Blocki != v67 ) { v68 = v91; std::string::basic_string(v100, "wx:key"); v24 = std::map::operator[](v89 + 12, v100); v101 = "wx:key"; WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v24, v36); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( v68 + 12, (char **)&v101); WXML::DOMLib::Token::~Token((int)v102); std::string::_M_dispose(v100); v69 = v89 + 12; std::string::basic_string((void **)&v101, "wx:key"); std::map::erase(v69, (int)&v101); std::string::_M_dispose((void **)&v101); } v25 = (volatile signed __int32 **)&Strd[*(_DWORD *)(a1 + 72) + 4]; *(v25 - 1) = (volatile signed __int32 *)v91; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v25, (int)v92); v34 = v26; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v92); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v90); } } } } } } for ( Stre = 0; ; ++Stre ) { v27 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v27) >> 3 <= (unsigned int)Stre ) break; v79 = 8 * (_DWORD)Stre; v70 = *(_DWORD **)(v27 + 8 * (_DWORD)Stre); std::string::basic_string((void **)&v101, "wx:scope-data"); v28 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v70 + 12, (int)&v101); v34 = v29; Blockj = v28; std::string::_M_dispose((void **)&v101); if ( Blockj != (char *)(v70 + 13) ) { std::__shared_ptr::__shared_ptr( &v96, (_DWORD *)(*(_DWORD *)(a1 + 72) + v79)); v71 = operator new(0x128u); WXML::DOMLib::WXMLDom::WXMLDom((int)v71); zcc::shared_ptr::shared_ptr(v71); std::string::operator=(v98, "wx-scope"); std::string::_M_assign((int)(v98 + 6), *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Stre) + 24); WXML::DOMLib::Token::operator=((int)(v98 + 21), (int)(v96 + 21)); std::vector>::push_back(v98 + 18, &v96); v72 = v98; std::string::basic_string(v100, "wx:scope-data"); v30 = std::map::operator[](v96 + 12, v100); v101 = "wx:scope-data"; WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v30, v36); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( v72 + 12, (char **)&v101); WXML::DOMLib::Token::~Token((int)v102); std::string::_M_dispose(v100); v73 = v96 + 12; std::string::basic_string((void **)&v101, "wx:scope-data"); std::map::erase(v73, (int)&v101); std::string::_M_dispose((void **)&v101); v31 = (volatile signed __int32 **)(*(_DWORD *)(a1 + 72) + v79 + 4); *(v31 - 1) = (volatile signed __int32 *)v98; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v31, (int)v99[0]); v34 = v32; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v99); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v97); } } for ( Strf = 0; (*(_DWORD *)(a1 + 76) - *(_DWORD *)(a1 + 72)) >> 3 > (unsigned int)Strf; ++Strf ) WXML::DOMLib::WXMLDom::RewriteTree((WXML::DOMLib::WXMLDom *)v34); return 0; } // 4206CF: variable 'v3' is possibly undefined // 420756: variable 'v36' is possibly undefined // 4207D7: variable 'v5' is possibly undefined // 420864: variable 'v8' is possibly undefined // 42091F: variable 'v10' is possibly undefined // 420B06: variable 'v13' is possibly undefined // 420D42: variable 'v17' is possibly undefined // 420E69: variable 'v20' is possibly undefined // 4213FC: variable 'v26' is possibly undefined // 42149A: variable 'v29' is possibly undefined // 42167A: variable 'v32' is possibly undefined // 4216DC: variable 'v34' is possibly undefined // 554190: using guessed type char *WXML::DOMLib::szWXIFControlAttrs[4]; //----- (00421797) -------------------------------------------------------- void __cdecl WXML::DOMLib::recurseDependencies(int *a1, int *a2, _DWORD *a3) { char *v3; // eax int *v4; // eax int v5; // edx struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-70h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-70h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-70h] void *v9[6]; // [esp+50h] [ebp-38h] BYREF void *v10[8]; // [esp+68h] [ebp-20h] BYREF if ( std::operator==(*a1, "import") || std::operator==(*a1, "include") ) { lpuexcpta = (struct _Unwind_Exception *)(*a1 + 48); // const char off_5539C8[] = {'s','r','c','\0'} std::string::basic_string(v10, (char *)off_5539C8); lpuexcptb = (struct _Unwind_Exception *)std::map::count(lpuexcpta, (int)v10); std::string::_M_dispose(v10); if ( lpuexcptb ) // 大于0 { // const char off_5539C8[] = {'s','r','c','\0'} std::string::basic_string(v9, (char *)off_5539C8); v3 = std::map::operator[]((_DWORD *)(*a1 + 48), v9); v4 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v3); WXML::DOMLib::resolvePath((int)v10, a2, v4); // v10 = resolvePath(a2, a4); std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( a3, v10); std::string::_M_dispose(v10); std::string::_M_dispose(v9); } } for ( lpuexcpt = 0; ; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) { v5 = *(_DWORD *)(*a1 + 72); if ( (unsigned int)lpuexcpt >= (*(_DWORD *)(*a1 + 76) - v5) >> 3 ) break; WXML::DOMLib::recurseDependencies(v5 + 8 * (_DWORD)lpuexcpt, a2, a3); } } //----- (00421934) -------------------------------------------------------- void __usercall WXML::DOMLib::Parser::DOM(_DWORD *a1@, WXML::DOMLib::Parser *a2@) { WXML::DOMLib::Token *v2; // eax _DWORD *v3; // eax unsigned __int8 **v4; // eax unsigned __int8 **v5; // eax char *v6; // ecx unsigned __int8 **v7; // eax int v8; // eax _DWORD *v9; // eax WXML::DOMLib::Token *v11; // eax _DWORD *v12; // eax int v13; // eax _DWORD *v14; // eax _DWORD *v15; // eax _DWORD *v16; // ecx int v17; // eax int v18; // edx unsigned __int8 v19; // cl _DWORD *v20; // eax const WXML::DOMLib::Token *v21; // [esp+4h] [ebp-224h] const char *v22; // [esp+4h] [ebp-224h] const WXML::DOMLib::Token *v23; // [esp+4h] [ebp-224h] const char *v24; // [esp+4h] [ebp-224h] const WXML::DOMLib::Token *v25; // [esp+4h] [ebp-224h] const char *v26; // [esp+4h] [ebp-224h] const char *v27; // [esp+4h] [ebp-224h] const char *v28; // [esp+4h] [ebp-224h] _DWORD *v29; // [esp+18h] [ebp-210h] _DWORD *v30; // [esp+1Ch] [ebp-20Ch] WXML::DOMLib::Token *v31; // [esp+20h] [ebp-208h] _DWORD *v32; // [esp+24h] [ebp-204h] WXML::DOMLib::Token *exception; // [esp+28h] [ebp-200h] _DWORD *v34; // [esp+2Ch] [ebp-1FCh] _DWORD *v35; // [esp+30h] [ebp-1F8h] void *Blocka; // [esp+34h] [ebp-1F4h] _DWORD *Block; // [esp+34h] [ebp-1F4h] struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-1F0h] WXML::DOMLib::Token *v40[6]; // [esp+78h] [ebp-1B0h] BYREF char *v41; // [esp+90h] [ebp-198h] BYREF int v42[6]; // [esp+A8h] [ebp-180h] BYREF int v43[6]; // [esp+C0h] [ebp-168h] BYREF int v44; // [esp+D8h] [ebp-150h] int v45; // [esp+130h] [ebp-F8h] BYREF volatile signed __int32 *v46; // [esp+134h] [ebp-F4h] BYREF unsigned int *v47; // [esp+1A0h] [ebp-88h] BYREF volatile signed __int32 *v48[33]; // [esp+1A4h] [ebp-84h] BYREF v2 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::Token((int)v43, v2, v21); if ( v44 ) { if ( v44 == 4 ) goto LABEL_41; } else { if ( WXML::DOMLib::Token::IsMatch((int)v43, (WXML::DOMLib::Token *)&unk_5539CC, v22) ) { ++a1[25]; v3 = WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::operator=((int)v43, (int)v3); WXML::DOMLib::Token::Token((int)&v45, (WXML::DOMLib::Token *)v43, v23); v4 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v43); if ( !WXML::DOMLib::Parser::IsValidTag((const char **)v4) ) { exception = (WXML::DOMLib::Token *)__cxa_allocate_exception(0x18u); WXML::DOMLib::Parser::Error(exception, (WXML::DOMLib::Parser *)a1, "unexpected tag", 0); __cxa_throw( exception, (struct type_info *)&`typeinfo for WXML::DOMLib::ParseException, WXML::DOMLib::ParseException::~ParseException); } ++a1[25]; v5 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v43); v6 = (char *)a1[8]; v35 = a1 + 2; if ( v6 == (char *)(a1[10] - 24) ) { std::deque::_M_push_back_aux((int)v35, (int)v5); } else { std::string::basic_string(v6, (int)v5); a1[8] += 24; } Blocka = operator new(0x128u); WXML::DOMLib::WXMLDom::WXMLDom((int)Blocka); zcc::shared_ptr::shared_ptr(Blocka); v7 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v43); std::string::_M_assign((int)v47, (int)v7); std::string::_M_assign((int)(v47 + 6), (int)v47); WXML::DOMLib::Token::operator=((int)(v47 + 21), (int)v43); Block = a1 + 12; v8 = std::deque>::back(a1 + 12); std::vector>::push_back((_DWORD *)(*(_DWORD *)v8 + 72), &v47); std::deque>::push_back((int)(a1 + 12), &v47); WXML::DOMLib::Parser::ATTR_LIST((WXML::DOMLib::Parser *)a1); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v48); v9 = WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::operator=((int)v43, (int)v9); if ( !v44 ) { if ( WXML::DOMLib::Token::IsMatch((int)v43, (WXML::DOMLib::Token *)">", v24) ) { ++a1[25]; WXML::DOMLib::Parser::DOMS(a2); v11 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::Token((int)&v47, v11, v25); if ( v48[5] || !WXML::DOMLib::Token::IsMatch((int)&v47, (WXML::DOMLib::Token *)"((int)v42, "expect end-tag `", (int)v40); v15 = std::string::append(v42, "`."); std::string::basic_string(&v41, v15); std::string::_M_dispose((void **)v42); v30 = __cxa_allocate_exception(0x18u); WXML::DOMLib::Parser::Error(v30, (WXML::DOMLib::Parser *)a1, v41, 0); __cxa_throw( v30, (struct type_info *)&`typeinfo for WXML::DOMLib::ParseException, WXML::DOMLib::ParseException::~ParseException); } ++a1[25]; std::deque::pop_back(v35); std::deque>::pop_back(Block); v14 = WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::operator=((int)&v47, (int)v14); if ( !WXML::DOMLib::Token::IsMatch((int)&v47, (WXML::DOMLib::Token *)">", v28) ) { v29 = __cxa_allocate_exception(0x18u); WXML::DOMLib::Parser::Error(v29, (WXML::DOMLib::Parser *)a1, "unexpected token", 0); __cxa_throw( v29, (struct type_info *)&`typeinfo for'WXML::DOMLib::ParseException, WXML::DOMLib::ParseException::~ParseException); } ++a1[25]; std::string::_M_dispose((void **)v40); WXML::DOMLib::Token::~Token((int)&v47); goto LABEL_27; } if ( WXML::DOMLib::Token::IsMatch((int)v43, (WXML::DOMLib::Token *)"/>", (const char *)v25) ) { ++a1[25]; std::deque>::pop_back(Block); std::deque::pop_back(v35); LABEL_27: WXML::DOMLib::Token::~Token((int)&v45); goto LABEL_41; } } v32 = __cxa_allocate_exception(0x18u); WXML::DOMLib::Parser::Error(v32, (WXML::DOMLib::Parser *)a1, "unexpected token", 0); __cxa_throw( v32, (struct type_info *)&`typeinfo for'WXML::DOMLib::ParseException, WXML::DOMLib::ParseException::~ParseException); } if ( WXML::DOMLib::Token::IsMatch((int)v43, (WXML::DOMLib::Token *)" v17 ) { v19 = *(_BYTE *)(v18 + v17) - 9; if ( v19 > 0x17u || ((0x800013u >> v19) & 1) == 0 ) { v20 = (_DWORD *)std::deque>::back(a1 + 12); std::__shared_ptr::__shared_ptr(&v45, v20); lpuexcpta = (struct _Unwind_Exception *)operator new(0x128u); WXML::DOMLib::WXMLDom::WXMLDom((int)lpuexcpta); zcc::shared_ptr::shared_ptr(lpuexcpta); std::string::operator=(v47, "TEXTNODE"); WXML::DOMLib::Token::operator=((int)(v47 + 21), (int)v43); std::vector>::push_back((_DWORD *)(v45 + 72), &v47); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v48); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v46); break; } ++v17; } } LABEL_41: WXML::DOMLib::Token::~Token((int)v43); } // 42199C: variable 'v21' is possibly undefined // 4219BD: variable 'v22' is possibly undefined // 421A03: variable 'v23' is possibly undefined // 421C1C: variable 'v24' is possibly undefined // 421C58: variable 'v25' is possibly undefined // 421C71: variable 'v26' is possibly undefined // 421D7E: variable 'v27' is possibly undefined // 421DDC: variable 'v28' is possibly undefined // 55B664: using guessed type int *`typeinfo for'WXML::DOMLib::ParseException; //----- (004222D2) -------------------------------------------------------- void __usercall WXML::DOMLib::Parser::DOMS(WXML::DOMLib::Parser *a1@, WXML::DOMLib::Parser *a2@) { WXML::DOMLib::Token *v2; // eax const WXML::DOMLib::Token *v3; // [esp+4h] [ebp-C4h] const char *v4; // [esp+4h] [ebp-C4h] _DWORD *exception; // [esp+14h] [ebp-B4h] char v7[24]; // [esp+50h] [ebp-78h] BYREF int v8; // [esp+68h] [ebp-60h] while ( 1 ) { WXML::DOMLib::Parser::DOM(a1, a2); v2 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); WXML::DOMLib::Token::Token((int)v7, v2, v3); if ( v8 == 4 ) break; if ( WXML::DOMLib::Token::IsMatch((int)v7, (WXML::DOMLib::Token *)"( int a1@, WXML::DOMLib::Parser *a2@, char *Str, // fileContent int a4, int a5, _DWORD *a6) { char *v7; // [esp+1Ch] [ebp-ACh] char *Block; // [esp+20h] [ebp-A8h] void *Blocka; // [esp+20h] [ebp-A8h] char *v10; // [esp+24h] [ebp-A4h] int Tokens; // [esp+24h] [ebp-A4h] int v13; // [esp+6Ch] [ebp-5Ch] volatile signed __int32 *v14; // [esp+70h] [ebp-58h] BYREF int v15; // [esp+74h] [ebp-54h] BYREF volatile signed __int32 *v16; // [esp+78h] [ebp-50h] BYREF void *v17; // [esp+98h] [ebp-30h] BYREF while ( *(_DWORD *)(a1 + 16) != *(_DWORD *)(a1 + 32) ) std::deque::pop_back((_DWORD *)(a1 + 8)); while ( *(_DWORD *)(a1 + 72) != *(_DWORD *)(a1 + 56) ) std::deque>::pop_back((_DWORD *)(a1 + 48)); *(_DWORD *)(a1 + 100) = 0; v10 = *(char **)(a1 + 88); v7 = *(char **)(a1 + 92); if ( v10 != v7 ) { Block = *(char **)(a1 + 88); do { WXML::DOMLib::Token::~Token((int)Block); Block += 112; } while ( v7 != Block ); *(_DWORD *)(a1 + 92) = v10; } *(_DWORD *)(a1 + 128) = 4; std::string::_M_assign(a1 + 328, a5); WXML::DOMLib::Tokenizer::Tokenizer(&v15, Str, a5); Tokens = WXML::DOMLib::Tokenizer::GetTokens(&v15, (_DWORD *)(a1 + 88), a4, a6); if ( !Tokens ) { Blocka = operator new(0x128u); WXML::DOMLib::WXMLDom::WXMLDom((int)Blocka); zcc::shared_ptr::shared_ptr(Blocka); *(_DWORD *)a1 = v13; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(a1 + 4), (int)v14); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v14); std::string::operator=(*(unsigned int **)a1, "root"); std::deque>::push_back(a1 + 48, (_DWORD *)a1); WXML::DOMLib::Parser::DOMS((WXML::DOMLib::Parser *)a1, a2); } std::string::_M_dispose(&v17); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v16); return Tokens; } // 4225E6: variable 'v13' is possibly undefined //----- (0042270E) -------------------------------------------------------- int __fastcall WXML::DOMLib::WXMLDom::RecordAllPath(_DWORD *a1) { char *v1; // eax int v2; // eax int v3; // edx volatile signed __int32 **v4; // ecx WXML::DOMLib::WXMLDom *v5; // eax int v7; // [esp+10h] [ebp-78h] BOOL v8; // [esp+14h] [ebp-74h] _DWORD *v9; // [esp+14h] [ebp-74h] unsigned int i; // [esp+14h] [ebp-74h] void *v12[6]; // [esp+50h] [ebp-38h] BYREF void *v13[8]; // [esp+68h] [ebp-20h] BYREF if ( std::operator==((int)a1, "import") || std::operator==((int)a1, "include") ) { std::string::basic_string(v13, (char *)off_5539C8); v8 = std::map::count(a1 + 12, (int)v13); std::string::_M_dispose(v13); if ( v8 ) { v9 = (_DWORD *)a1[62]; std::string::basic_string(v12, (char *)off_5539C8); v1 = std::map::operator[](a1 + 12, v12); v2 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v1); std::string::basic_string((char *)v13, v2); if ( !std::map::count(v9, (int)v13) ) { v7 = v9[5]; *(_DWORD *)std::map::operator[](v9, (int)v13) = v7; std::vector::push_back((int)(v9 + 6), (int)v13); } std::string::_M_dispose(v13); std::string::_M_dispose(v12); } } for ( i = 0; ; ++i ) { v3 = a1[18]; if ( i >= (a1[19] - v3) >> 3 ) break; v4 = (volatile signed __int32 **)(*(_DWORD *)(v3 + 8 * i) + 252); *(v4 - 1) = (volatile signed __int32 *)a1[62]; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v4, a1[63]); WXML::DOMLib::WXMLDom::RecordAllPath(v5); } return 0; } // 4228B2: variable 'v5' is possibly undefined //----- (00422902) -------------------------------------------------------- void __fastcall std::deque>::~deque(int a1) { int v2; // edi int v3; // edx int *v4; // esi int v5; // eax int v6; // edx int v7; // edx void **v8; // esi unsigned int v9; // edi void *v10; // eax int v11; // [esp+1Ch] [ebp-2Ch] int v12; // [esp+20h] [ebp-28h] int v13; // [esp+24h] [ebp-24h] unsigned int v14; // [esp+28h] [ebp-20h] int v15; // [esp+2Ch] [ebp-1Ch] v2 = *(_DWORD *)(a1 + 24); v13 = *(_DWORD *)(a1 + 16); v3 = *(_DWORD *)(a1 + 20); v12 = *(_DWORD *)(a1 + 28); v15 = v3; v4 = (int *)(v3 + 4); v14 = *(_DWORD *)(a1 + 36); v5 = *(_DWORD *)(a1 + 8); while ( v14 > (unsigned int)v4 ) { v6 = *v4; v11 = v5; ++v4; std::_Destroy_aux::__destroy *>(v6, v6, v6 + 512); v5 = v11; } if ( v15 == v14 ) { std::_Destroy_aux::__destroy *>(v3, v5, v2); } else { std::_Destroy_aux::__destroy *>(v13, v5, v13); std::_Destroy_aux::__destroy *>(v7, v12, v2); } if ( *(_DWORD *)a1 ) { v8 = *(void ***)(a1 + 20); v9 = *(_DWORD *)(a1 + 36) + 4; while ( v9 > (unsigned int)v8 ) { v10 = *v8++; operator delete(v10); } operator delete(*(void **)a1); } } // 422970: variable 'v7' is possibly undefined // 422979: variable 'v3' is possibly undefined //----- (004229B2) -------------------------------------------------------- int __cdecl WXML::DOMLib::WXMLDom::DealSingleTokenToOps( int *a1, unsigned int *a2, WXML::EXPRLib::Parser *a3, _DWORD *a4, _DWORD *a5, char a6, int a7, char a8, int *a9, char a10, int a11) { unsigned __int8 **v11; // eax char *v12; // eax bool v13; // zf struct _Unwind_Exception *v14; // eax struct _Unwind_Exception *v15; // edx struct _Unwind_Exception *v16; // eax bool v17; // zf struct _Unwind_Exception *v18; // eax struct _Unwind_Exception *v19; // edx _DWORD *v20; // ecx _DWORD *v21; // eax int v22; // eax int v23; // edx _DWORD *v24; // eax _DWORD *v25; // eax int v26; // edx const char *v27; // eax const char *v28; // eax char *v29; // eax bool v30; // zf _DWORD *v31; // eax _DWORD *v32; // edx void *v33; // eax void *v34; // eax int v35; // eax std::ostream::sentry *v36; // eax std::ostream::sentry *v37; // eax std::ostream::sentry *v38; // eax std::ostream::sentry *v39; // eax int v40; // eax std::ostream::sentry *v41; // eax std::ostream::sentry *v42; // eax int v43; // eax int v44; // eax char *v46; // [esp+2Ch] [ebp-12Ch] char *v47; // [esp+30h] [ebp-128h] int v48; // [esp+3Ch] [ebp-11Ch] void *exception; // [esp+40h] [ebp-118h] int v50; // [esp+44h] [ebp-114h] unsigned int v51; // [esp+48h] [ebp-110h] char v52; // [esp+4Fh] [ebp-109h] struct _Unwind_Exception *v53; // [esp+50h] [ebp-108h] struct _Unwind_Exception *v54; // [esp+50h] [ebp-108h] int i; // [esp+50h] [ebp-108h] int v56; // [esp+50h] [ebp-108h] _DWORD *v57; // [esp+50h] [ebp-108h] int v58; // [esp+50h] [ebp-108h] struct _Unwind_Exception *v59; // [esp+54h] [ebp-104h] unsigned __int8 **v60; // [esp+54h] [ebp-104h] int v61; // [esp+54h] [ebp-104h] _DWORD *v62; // [esp+54h] [ebp-104h] _DWORD *v63; // [esp+54h] [ebp-104h] _DWORD *v64; // [esp+54h] [ebp-104h] _DWORD *v65; // [esp+54h] [ebp-104h] int v66; // [esp+54h] [ebp-104h] unsigned int v67; // [esp+54h] [ebp-104h] int v68; // [esp+54h] [ebp-104h] char *v69; // [esp+54h] [ebp-104h] int *v70; // [esp+54h] [ebp-104h] struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-100h] struct _Unwind_Exception *lpuexcpta; // [esp+58h] [ebp-100h] struct _Unwind_Exception *lpuexcptb; // [esp+58h] [ebp-100h] unsigned int lpuexcptc; // [esp+58h] [ebp-100h] struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-100h] struct _Unwind_Exception *lpuexcpte; // [esp+58h] [ebp-100h] _WORD v77[3]; // [esp+9Eh] [ebp-BAh] BYREF _DWORD *v78; // [esp+A4h] [ebp-B4h] _DWORD *v79; // [esp+A8h] [ebp-B0h] _BYTE *v80; // [esp+ACh] [ebp-ACh] BYREF char *v81; // [esp+B0h] [ebp-A8h] char *v82; // [esp+B4h] [ebp-A4h] void *v83[2]; // [esp+C4h] [ebp-94h] BYREF char v84; // [esp+CCh] [ebp-8Ch] BYREF int *v85; // [esp+DCh] [ebp-7Ch] BYREF void *v86[2]; // [esp+E0h] [ebp-78h] BYREF char v87; // [esp+E8h] [ebp-70h] BYREF void *Block; // [esp+F8h] [ebp-60h] BYREF int v89; // [esp+FCh] [ebp-5Ch] BYREF void *v90; // [esp+100h] [ebp-58h] BYREF void *v91; // [esp+104h] [ebp-54h] BYREF int v92; // [esp+108h] [ebp-50h] _DWORD *v93; // [esp+10Ch] [ebp-4Ch] int v94; // [esp+110h] [ebp-48h] int v95; // [esp+114h] [ebp-44h] int v96; // [esp+118h] [ebp-40h] _DWORD *v97; // [esp+11Ch] [ebp-3Ch] void *v98; // [esp+120h] [ebp-38h] int v99; // [esp+124h] [ebp-34h] void *v100; // [esp+128h] [ebp-30h] void *v101; // [esp+12Ch] [ebp-2Ch] int v102; // [esp+130h] [ebp-28h] _DWORD *v103; // [esp+134h] [ebp-24h] void *v104; // [esp+138h] [ebp-20h] void *v105; // [esp+13Ch] [ebp-1Ch] int v106; // [esp+140h] [ebp-18h] _DWORD *v107; // [esp+144h] [ebp-14h] int *v108; // [esp+148h] [ebp-10h] void *v109; // [esp+14Ch] [ebp-Ch] if ( a8 ) v11 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)a5); else v11 = (unsigned __int8 **)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)a5); v12 = (char *)*v11; *(_DWORD *)&v77[1] = 0; v78 = 0; v79 = 0; LOBYTE(v77[0]) = 0; v48 = WXML::StringTemplating::Deal(v12, (int)a2, (char **)&v77[1], v77); if ( v48 ) { exception = __cxa_allocate_exception(0x18u); std::string::basic_string(&Block, "did you forget }}, ' or \""); std::string::basic_string((void **)&v85, (char *)&byte_5537CA); WXML::DOMLib::WXMLDom::Error((int)exception, a1, (int)a5, (int *)&v85, (int *)&Block); std::string::_M_dispose((void **)&v85); std::string::_M_dispose(&Block); __cxa_throw( exception, (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } if ( a8 ) { std::string::basic_string(&Block, "plain_text_marker"); v59 = (struct _Unwind_Exception *)(a11 + 4); v53 = *(struct _Unwind_Exception **)(a11 + 8); lpuexcpt = (struct _Unwind_Exception *)(a11 + 4); while ( v53 ) { v13 = (unsigned __int8)std::operator<((int)v53 + 16, (int)&Block) == 0; v14 = lpuexcpt; v15 = (struct _Unwind_Exception *)*((_DWORD *)v53 + 3); if ( v13 ) { v15 = (struct _Unwind_Exception *)*((_DWORD *)v53 + 2); if ( v13 ) v14 = v53; } v53 = v15; lpuexcpt = v14; } if ( v59 != lpuexcpt ) { v13 = (unsigned __int8)std::operator<((int)&Block, (int)lpuexcpt + 16) == 0; v16 = lpuexcpt; if ( !v13 ) v16 = (struct _Unwind_Exception *)(a11 + 4); lpuexcpt = v16; } std::string::_M_dispose(&Block); if ( v59 != lpuexcpt ) { std::string::basic_string(&Block, "plain_text_marker"); lpuexcpta = *(struct _Unwind_Exception **)(a11 + 8); v54 = (struct _Unwind_Exception *)(a11 + 4); while ( lpuexcpta ) { v17 = (unsigned __int8)std::operator<((int)lpuexcpta + 16, (int)&Block) == 0; v18 = v54; v19 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpta + 3); if ( v17 ) { v19 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpta + 2); if ( v17 ) v18 = lpuexcpta; } lpuexcpta = v19; v54 = v18; } if ( v59 == v54 || (unsigned __int8)std::operator<((int)&Block, (int)v54 + 16) ) std::__throw_out_of_range((std::out_of_range *)"map::at"); std::string::basic_string((char *)&v80, (int)v54 + 40); std::string::_M_dispose(&Block); v87 = 0; v86[0] = &v87; v86[1] = 0; v85 = 0; std::string::operator=((unsigned int *)v86, (char *)&byte_5537CA); lpuexcptb = *(struct _Unwind_Exception **)&v77[1]; if ( *(_DWORD **)&v77[1] != v78 && **(_DWORD **)&v77[1] == 1 ) { if ( v78 == v79 ) { std::vector::_M_realloc_insert( (char **)&v77[1], *(char **)&v77[1], &v85); } else { Block = &v77[1]; v89 = (int)v85; std::string::basic_string((char *)&v90, (int)v86); v20 = v78 + 1; v21 = v78 - 6; *v78 = *(v78 - 7); std::string::basic_string(v20, v21); v60 = (unsigned __int8 **)(v78 - 7); v22 = ((char *)(v78 - 7) - (char *)lpuexcptb) >> 2; v78 += 7; for ( i = -1227133513 * v22; i > 0; --i ) { v60 -= 7; v60[7] = *v60; std::string::operator=(v60 + 8, (int)(v60 + 1)); } *(_DWORD *)lpuexcptb = v89; std::string::operator=((unsigned __int8 **)lpuexcptb + 1, (int)&v90); std::string::_M_dispose(&v90); } } if ( *(_DWORD **)&v77[1] != v78 && *(v78 - 7) == 1 ) std::vector::push_back((char **)&v77[1], &v85); lpuexcptc = 1; v23 = 0; while ( -1227133513 * (((int)v78 - *(_DWORD *)&v77[1]) >> 2) > lpuexcptc ) { v61 = v23 + 28; v24 = (_DWORD *)(*(_DWORD *)&v77[1] + v23 + 28); if ( *v24 == 1 ) { if ( !*(_DWORD *)(v23 + *(_DWORD *)&v77[1]) ) std::string::append((_DWORD *)(v23 + *(_DWORD *)&v77[1] + 4), (int)&v80); } else if ( !*v24 && *(_DWORD *)(*(_DWORD *)&v77[1] + v23) == 1 ) { v56 = (int)(v24 + 1); std::string::basic_string((char *)v83, (int)&v80); std::string::append(v83, v56); std::string::operator=((unsigned __int8 **)(*(_DWORD *)&v77[1] + v61 + 4), (int)v83); std::string::_M_dispose(v83); } ++lpuexcptc; v23 = v61; } std::string::_M_dispose(v86); std::string::_M_dispose((void **)&v80); } } if ( a7 ) { v25 = *(_DWORD **)&v77[1]; v26 = 0; while ( v78 != v25 ) { v26 -= (*v25 == 0) - 1; v25 += 7; } if ( v26 != a7 ) { a5[14] = -3; std::string::operator=(a5 + 15, "the very attr must be an expression (surrouned by `{{..}}`)"); v48 = -1; goto LABEL_112; } } if ( v78 == *(_DWORD **)&v77[1] ) { v89 = (int)&v91; v90 = 0; LOBYTE(v91) = 0; Block = 0; std::string::operator=((unsigned int *)&v89, (char *)&byte_5537CA); Block = 0; std::vector::push_back((char **)&v77[1], &Block); std::string::_M_dispose((void **)&v89); } v52 = 1; if ( (unsigned int)v78 - *(_DWORD *)&v77[1] <= 0x1C ) { v52 = 0; if ( (_DWORD *)((char *)v78 - *(_DWORD *)&v77[1]) == (_DWORD *)28 ) v52 = a8 & (**(_DWORD **)&v77[1] == 1); } lpuexcptd = (WXML::EXPRLib::Parser *)((char *)a3 + 8); std::operator<<>((WXML::EXPRLib::Parser *)((char *)a3 + 8), "Z("); v80 = 0; v81 = 0; v82 = 0; if ( v52 ) { std::operator<<>(lpuexcptd, "[a,"); ++a9[1]; } v27 = (const char *)&off_553AE9; v51 = 0; if ( a8 ) v27 = "t_"; v47 = (char *)v27; v28 = &byte_5537CA; if ( a6 ) v28 = (const char *)&unk_553AED; v46 = (char *)v28; while ( -1227133513 * (((int)v78 - *(_DWORD *)&v77[1]) >> 2) > v51 ) { if ( v51 ) std::operator<<>(lpuexcptd, ","); v83[1] = 0; v84 = 0; v50 = 28 * v51; v62 = (_DWORD *)(*(_DWORD *)&v77[1] + 28 * v51); v83[0] = &v84; v29 = "s_"; if ( *v62 ) v29 = "e_"; std::string::operator=((unsigned int *)v83, v29); std::string::append(v83, v47); std::string::append(v83, (int)(v62 + 1)); std::string::append(v83, v46); v57 = (_DWORD *)a4[2]; v63 = a4 + 1; while ( v57 ) { v30 = (unsigned __int8)std::operator<((int)(v57 + 4), (int)v83) == 0; v31 = v63; v32 = (_DWORD *)v57[3]; if ( v30 ) { v32 = (_DWORD *)v57[2]; if ( v30 ) v31 = v57; } v57 = v32; v63 = v31; } if ( a4 + 1 == v63 || (unsigned __int8)std::operator<((int)v83, (int)(v63 + 4)) ) { if ( *(_DWORD *)(*(_DWORD *)&v77[1] + 28 * v51) ) { Block = 0; v90 = 0; v91 = 0; v92 = 0; v93 = 0; v94 = 0; v95 = 0; v96 = 0; v97 = 0; v89 = 8; Block = operator new(0x20u); v64 = (char *)Block + ((2 * v89 - 2) & 0xFFFFFFFC); v33 = operator new(0x200u); v91 = v33; v92 = (int)v33 + 512; *v64 = v33; v93 = v64; v97 = v64; v95 = (int)v33; v96 = (int)v33 + 512; v90 = v33; v94 = (int)v33; v98 = 0; v100 = 0; v101 = 0; v102 = 0; v103 = 0; v104 = 0; v105 = 0; v106 = 0; v107 = 0; v99 = 8; v98 = operator new(0x20u); v65 = (char *)v98 + ((2 * v99 - 2) & 0xFFFFFFFC); v34 = operator new(0x200u); v101 = v34; v102 = (int)v34 + 512; *v65 = v34; v103 = v65; v107 = v65; v105 = v34; v106 = (int)v34 + 512; v100 = v34; v104 = v34; v108 = 0; v109 = 0; std::string::basic_string((void **)&v85, (char *)&byte_5537CA); v66 = WXML::EXPRLib::Parser::Parse( (int)&Block, (char **)(*(_DWORD *)&v77[1] + v50 + 4), (int)&v85, 1, 1, a2, a6); std::string::_M_dispose((void **)&v85); if ( v66 ) { a5[14] = -3; std::string::_M_assign((int)(a5 + 15), (int)a2); std::operator<<>(lpuexcptd, "undefined"); WXML::EXPRLib::Parser::~Parser((int)&Block); std::string::_M_dispose(v83); break; } v85 = v108; v86[0] = v109; if ( v109 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy((int)v109); v70 = v85; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v86); std::string::basic_string((void **)&v85, (char *)&byte_5537CA); WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(v70, (int)a3, (int)&v85, (_BYTE *)v77 + 1); std::string::_M_dispose((void **)&v85); WXML::EXPRLib::Parser::~Parser((int)&Block); } else { std::operator<<>(lpuexcptd, "[3,'"); WXML::DOMLib::removern(&Block, (_DWORD *)(*(_DWORD *)&v77[1] + v50 + 4)); WXML::Rewrite::ToStringCode((int *)&Block, (int)a3); std::operator<<>(lpuexcptd, "']"); std::string::_M_dispose(&Block); } v68 = *a9; v43 = -1; if ( v52 ) v43 = a9[1]; v58 = v43; std::string::basic_string((char *)&Block, (int)v83); v94 = v68; v95 = v58; v69 = v81; if ( v81 == v82 ) { std::vector>::_M_realloc_insert>( &v80, v81, &Block); } else { std::string::basic_string(v81, &Block); v44 = v94; *((_DWORD *)v69 + 7) = v95; *((_DWORD *)v69 + 6) = v44; v81 += 32; } std::string::_M_dispose(&Block); } else { if ( v63[11] == -1 ) { if ( a10 ) { std::operator<<>(lpuexcptd, "z["); v39 = (std::ostream::sentry *)std::ostream::operator<<(v63[10]); std::operator<<>(v39, "][1]"); goto LABEL_107; } std::operator<<>(lpuexcptd, "z["); v40 = v63[10]; } else { std::operator<<>(lpuexcptd, "z["); v42 = (std::ostream::sentry *)std::ostream::operator<<(v63[10]); if ( a10 ) std::operator<<>(v42, "][1]["); else std::operator<<>(v42, "]["); v40 = v63[11]; } v41 = (std::ostream::sentry *)std::ostream::operator<<(v40); std::operator<<>(v41, "]"); } LABEL_107: ++a9[1]; std::string::_M_dispose(v83); ++v51; } if ( v52 ) std::operator<<>(lpuexcptd, "]"); v35 = *a9; if ( a5[14] == -1 ) a5[14] = v35; v67 = 0; a9[1] = 0; *a9 = v35 + 1; while ( (v81 - v80) >> 5 > v67 ) std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( a4, (int)&v80[32 * v67++]); std::vector>::~vector((void ***)&v80); if ( a10 ) { lpuexcpte = std::operator<<>(lpuexcptd, ",['"); WXML::Rewrite::ToStringCode((int)&Block, a1); v36 = std::operator<<(lpuexcpte, (int *)&Block); std::operator<<>(v36, "',"); v37 = (std::ostream::sentry *)std::ostream::operator<<(a5[2]); std::operator<<>(v37, ","); v38 = (std::ostream::sentry *)std::ostream::operator<<(a5[3]); std::operator<<>(v38, "])\n"); std::string::_M_dispose(&Block); } else { std::operator<<>(lpuexcptd, ")\n"); } LABEL_112: std::vector::~vector((void **)&v77[1]); return v48; } // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 553AE9: using guessed type void *off_553AE9; // 55B66C: using guessed type int *`typeinfo for'WXML::DOMLib::RenderException; //----- (00423B6C) -------------------------------------------------------- int __thiscall WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord( _DWORD *this, int *a2, unsigned int *a3, WXML::EXPRLib::Parser *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((int)a2, (int)a3, a4, (int)a5, (int)a6, a7, a8); } return 0; } //----- (00423D86) -------------------------------------------------------- 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 *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 int v21; // eax void *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 char *v32; // eax int v33; // eax char *v34; // eax int v35; // eax char *v36; // eax char *v37; // eax char *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 int v46; // eax char *v47; // eax char *v48; // eax std::ostream::sentry *v49; // eax std::ostream::sentry *v50; // eax std::ostream::sentry *v51; // eax char *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 char *v68; // eax int *v69; // eax std::ostream::sentry *v70; // eax std::ostream::sentry *v71; // eax void **v72; // ecx char *v73; // eax char *v74; // eax int v75; // eax int StrID; // eax std::ostream::sentry *v77; // eax std::ostream::sentry *v78; // eax int v79; // eax std::ostream::sentry *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 char *v91; // eax int *v92; // eax std::ostream::sentry *v93; // eax std::ostream::sentry *v94; // eax char *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 int 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 char *v117; // eax std::ostream::sentry *v118; // eax std::ostream::sentry *v119; // eax std::ostream::sentry *v120; // eax char *v121; // eax std::ostream::sentry *v122; // eax std::ostream::sentry *v123; // eax char *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 int v153; // eax char *v154; // eax std::ostream::sentry *v155; // eax char *v156; // eax std::ostream::sentry *v157; // eax std::ostream::sentry *v158; // eax int j; // eax int v160; // eax int v161; // eax char v162; // dl std::ostream::sentry *v163; // eax std::ostream::sentry *v164; // eax int *v165; // eax std::ostream::sentry *v166; // eax bool v167; // zf int *v168; // eax std::ostream::sentry *v169; // edx int *v170; // eax unsigned __int8 **v171; // ecx char *v172; // edx _DWORD *v173; // eax _DWORD *v174; // eax std::ostream::sentry *v175; // eax std::ostream::sentry *v176; // eax std::ostream::sentry *v177; // eax std::ostream::sentry *v178; // eax std::ostream::sentry *v179; // eax std::ostream::sentry *v180; // eax char *v181; // edx std::ostream::sentry *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 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 void **p_Str; // ecx int i; // 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 *v241; // [esp+0h] [ebp-388h] char *v242; // [esp+4h] [ebp-384h] const WXML::DOMLib::Token *v243; // [esp+4h] [ebp-384h] const WXML::DOMLib::Token *v244; // [esp+4h] [ebp-384h] void *exception; // [esp+5Ch] [ebp-32Ch] void *v246; // [esp+60h] [ebp-328h] void *v247; // [esp+64h] [ebp-324h] void *v248; // [esp+68h] [ebp-320h] void *v249; // [esp+6Ch] [ebp-31Ch] void *v250; // [esp+70h] [ebp-318h] void *v251; // [esp+74h] [ebp-314h] void *v252; // [esp+78h] [ebp-310h] void *v253; // [esp+7Ch] [ebp-30Ch] void *v254; // [esp+80h] [ebp-308h] void *v255; // [esp+84h] [ebp-304h] std::ostream::sentry *v256; // [esp+88h] [ebp-300h] std::ostream::sentry *v257; // [esp+88h] [ebp-300h] std::ostream::sentry *v258; // [esp+88h] [ebp-300h] char *v259; // [esp+88h] [ebp-300h] char Str1; // [esp+90h] [ebp-2F8h] char *Str1a; // [esp+90h] [ebp-2F8h] char *Str1g; // [esp+90h] [ebp-2F8h] char *Str1h; // [esp+90h] [ebp-2F8h] char *Str1b; // [esp+90h] [ebp-2F8h] char *Str1c; // [esp+90h] [ebp-2F8h] char *Str1d; // [esp+90h] [ebp-2F8h] char *Str1e; // [esp+90h] [ebp-2F8h] char Str1f; // [esp+90h] [ebp-2F8h] bool v269; // [esp+96h] [ebp-2F2h] bool v270; // [esp+97h] [ebp-2F1h] std::ostream::sentry *v271; // [esp+9Ch] [ebp-2ECh] std::ostream::sentry *v272; // [esp+9Ch] [ebp-2ECh] std::ostream::sentry *m; // [esp+9Ch] [ebp-2ECh] std::ostream::sentry *v274; // [esp+9Ch] [ebp-2ECh] std::ostream::sentry *v275; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v276; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v277; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v278; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v279; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v280; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v281; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v282; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v283; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v284; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v285; // [esp+A0h] [ebp-2E8h] int *jj; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v287; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *ii; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v289; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v290; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v291; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v292; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v293; // [esp+A0h] [ebp-2E8h] std::ostream::sentry *v294; // [esp+A4h] [ebp-2E4h] std::ostream::sentry *v295; // [esp+A4h] [ebp-2E4h] std::ostream::sentry *v296; // [esp+A4h] [ebp-2E4h] std::ostream::sentry *v297; // [esp+A4h] [ebp-2E4h] int *v298; // [esp+A4h] [ebp-2E4h] std::ostream::sentry *k; // [esp+A4h] [ebp-2E4h] char v300; // [esp+A4h] [ebp-2E4h] std::ostream::sentry *v301; // [esp+A4h] [ebp-2E4h] std::ostream::sentry *v302; // [esp+A4h] [ebp-2E4h] int *v303; // [esp+A4h] [ebp-2E4h] int n; // [esp+A4h] [ebp-2E4h] std::ostream::sentry *v305; // [esp+A4h] [ebp-2E4h] int *lpuexcpta; // [esp+A8h] [ebp-2E0h] int *lpuexcptb; // [esp+A8h] [ebp-2E0h] int *lpuexcptc; // [esp+A8h] [ebp-2E0h] int *lpuexcptd; // [esp+A8h] [ebp-2E0h] int *lpuexcpte; // [esp+A8h] [ebp-2E0h] void *v312[6]; // [esp+ECh] [ebp-29Ch] BYREF void *v313[6]; // [esp+104h] [ebp-284h] BYREF void *v314[6]; // [esp+11Ch] [ebp-26Ch] BYREF void *v315[6]; // [esp+134h] [ebp-254h] BYREF void *v316[2]; // [esp+14Ch] [ebp-23Ch] BYREF char v317; // [esp+154h] [ebp-234h] BYREF int v318; // [esp+164h] [ebp-224h] BYREF int v319; // [esp+168h] [ebp-220h] char v320; // [esp+16Ch] [ebp-21Ch] BYREF int v321; // [esp+17Ch] [ebp-20Ch] BYREF int v322; // [esp+180h] [ebp-208h] char v323; // [esp+184h] [ebp-204h] BYREF int v324; // [esp+194h] [ebp-1F4h] BYREF char *v325; // [esp+198h] [ebp-1F0h] int v326; // [esp+19Ch] [ebp-1ECh] BYREF int v327; // [esp+1ACh] [ebp-1DCh] BYREF int v328; // [esp+1B0h] [ebp-1D8h] char v329[16]; // [esp+1B4h] [ebp-1D4h] BYREF int *v330; // [esp+1C4h] [ebp-1C4h] BYREF int v331; // [esp+1C8h] [ebp-1C0h] BYREF int v332[4]; // [esp+1CCh] [ebp-1BCh] BYREF int v333; // [esp+1DCh] [ebp-1ACh] BYREF int v334; // [esp+1E0h] [ebp-1A8h] char v335[16]; // [esp+1E4h] [ebp-1A4h] BYREF int v336; // [esp+1F4h] [ebp-194h] BYREF int v337; // [esp+1F8h] [ebp-190h] char v338; // [esp+1FCh] [ebp-18Ch] BYREF int v339; // [esp+20Ch] [ebp-17Ch] BYREF int v340; // [esp+210h] [ebp-178h] int v341[4]; // [esp+214h] [ebp-174h] BYREF int v342[2]; // [esp+224h] [ebp-164h] BYREF char v343; // [esp+22Ch] [ebp-15Ch] BYREF char *Str; // [esp+23Ch] [ebp-14Ch] BYREF int v345; // [esp+240h] [ebp-148h] BYREF char v346[108]; // [esp+244h] [ebp-144h] BYREF int v347[2]; // [esp+2B0h] [ebp-D8h] BYREF char v348[4]; // [esp+2B8h] [ebp-D0h] BYREF char v349[12]; // [esp+2BCh] [ebp-CCh] BYREF _DWORD v350[47]; // [esp+2C8h] [ebp-C0h] BYREF if ( a13 && *(_DWORD *)(this + 28) ) { v294 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "cs.push(\""); WXML::Rewrite::ToStringCode((int)v347, a2); v15 = std::operator<<(v294, v347); v16 = std::operator<<>(v15, ":"); v17 = std::operator<<(v16, (int *)(this + 24)); std::operator<<>(v17, ":"); v18 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v18, ":"); v19 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); v20 = std::operator<<>(v19, "\")"); std::operator<<>(v20, a12); std::string::_M_dispose((void **)v347); } Str1 = std::operator==(this, "TEXTNODE"); if ( Str1 ) { v21 = *(_DWORD *)(this + 140); if ( v21 == -3 ) { exception = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)v347, (char *)&byte_5537CA); WXML::DOMLib::WXMLDom::Error((int)exception, a2, this + 84, v347, (int *)(this + 144)); std::string::_M_dispose((void **)v347); v22 = exception; goto LABEL_9; } if ( v21 == -1 ) { v246 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)v347, "value not set"); std::string::basic_string((void **)&Str, (char *)&byte_5537CA); WXML::DOMLib::WXMLDom::Error((int)v246, a2, this + 84, (int *)&Str, v347); std::string::_M_dispose((void **)&Str); std::string::_M_dispose((void **)v347); v22 = v246; goto LABEL_9; } v23 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); v24 = std::operator<<(v23, a5); std::operator<<>(v24, "=_oz(z,"); v25 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 140)); v26 = std::operator<<>(v25, ","); v27 = std::operator<<(v26, a8); v28 = std::operator<<>(v27, ","); v29 = std::operator<<(v28, a9); v30 = std::operator<<>(v29, ","); v31 = std::operator<<(v30, a10); v242 = ")"; LABEL_68: v87 = std::operator<<>(v31, v242); LABEL_69: std::operator<<>(v87, a12); goto LABEL_169; } 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_169; } if ( std::operator==(this, "wx-repeat") ) { std::string::basic_string(v312, "items"); v295 = (std::ostream::sentry *)(this + 48); v275 = (std::ostream::sentry *)(this + 52); if ( (_DWORD *)(this + 52) == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(this + 48), (int)v312) ) std::string::operator=((unsigned int *)v312, "wx:for-items"); std::string::basic_string(v313, "index"); if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v295, (int)v313) ) std::string::operator=((unsigned int *)v313, "wx:for-index"); std::string::basic_string(v314, "item"); if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v295, (int)v314) ) std::string::operator=((unsigned int *)v314, "wx:for-item"); std::string::basic_string(v315, "wx:key"); v316[0] = &v317; v318 = (int)&v320; v321 = (int)&v323; v316[1] = 0; v317 = 0; v319 = 0; v320 = 0; v322 = 0; v323 = 0; if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v295, (int)v312) ) { std::string::_M_dispose((void **)&v321); std::string::_M_dispose((void **)&v318); std::string::_M_dispose(v316); std::string::_M_dispose(v315); std::string::_M_dispose(v314); std::string::_M_dispose(v313); std::string::_M_dispose(v312); return 0; } if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v295, (int)v313) ) { std::string::operator=((unsigned int *)&v318, "index"); } else { v32 = std::map::operator[](v295, (int)v313); v33 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v32); std::string::_M_assign((int)&v318, v33); } if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v295, (int)v314) ) { std::string::operator=((unsigned int *)&v321, "item"); } else { v34 = std::map::operator[](v295, (int)v314); v35 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v34); std::string::_M_assign((int)&v321, v35); } if ( v275 != (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v295, (int)v313) && *((_DWORD *)std::map::operator[](v295, (int)v313) + 14) == -3 && (a14 & 1) == 0 ) { v250 = __cxa_allocate_exception(0x18u); lpuexcpta = (int *)(std::map::operator[](v295, (int)v313) + 60); v36 = std::map::operator[](v295, (int)v313); WXML::DOMLib::WXMLDom::Error((int)v250, a2, (int)v36, (int *)v313, lpuexcpta); __cxa_throw( v250, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } if ( v275 != (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v295, (int)v315) && *((_DWORD *)std::map::operator[](v295, (int)v315) + 14) == -3 && (a14 & 1) == 0 ) { v249 = __cxa_allocate_exception(0x18u); lpuexcptb = (int *)(std::map::operator[](v295, (int)v315) + 60); v37 = std::map::operator[](v295, (int)v315); WXML::DOMLib::WXMLDom::Error((int)v249, a2, (int)v37, (int *)v315, lpuexcptb); __cxa_throw( v249, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } if ( !v319 ) std::string::operator=((unsigned int *)&v318, "index"); if ( !v322 ) std::string::operator=((unsigned int *)&v321, "item"); v325 = 0; v324 = (int)&v326; LOBYTE(v326) = 0; WXML::NameAllocator::GetNextName(a7, (int)&v324); v327 = (int)v329; v328 = 0; v329[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v327); v330 = v332; v331 = 0; LOBYTE(v332[0]) = 0; WXML::NameAllocator::GetNextName(a7, (int)&v330); v333 = (int)v335; v334 = 0; v335[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v333); std::string::basic_string((void **)v347, (char *)&byte_5537CA); std::string::basic_string((void **)&Str, (char *)&byte_5537CA); WXML::DOMLib::WXMLDom::RenderMeAsFunction( a2, a3, a4, &v324, a6, a7, &v330, &v327, a10, &v333, a11, a12, &Str, 0, a13, a14, v347); std::string::_M_dispose((void **)&Str); std::string::_M_dispose((void **)v347); if ( *((_DWORD *)std::map::operator[](v295, (int)v312) + 14) == -3 ) { v247 = __cxa_allocate_exception(0x18u); lpuexcptc = (int *)(std::map::operator[](v295, (int)v312) + 60); v38 = std::map::operator[](v295, (int)v312); WXML::DOMLib::WXMLDom::Error((int)v247, a2, (int)v38, (int *)v312, lpuexcptc); __cxa_throw( v247, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } if ( *((_DWORD *)std::map::operator[](v295, (int)v312) + 14) == -1 ) { v248 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)v347, "value not set"); WXML::DOMLib::WXMLDom::Error((int)v248, a2, this + 84, (int *)v312, v347); std::string::_M_dispose((void **)v347); __cxa_throw( v248, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } if ( !a13 ) goto LABEL_57; if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v295, (int)v315) ) { Str = v346; v345 = 0; v346[0] = 0; v256 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp('"); WXML::Rewrite::ToStringCode((int)v347, a2); v39 = std::operator<<(v256, v347); v40 = std::operator<<>(v39, ":"); v41 = std::operator<<(v40, (int *)(this + 24)); std::operator<<>(v41, ":"); v42 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v42, ":"); v43 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); v44 = std::operator<<>( v43, ": Now you can provide attr `wx:key` for a `wx:for` to improve performance.')"); std::operator<<>(v44, a12); std::string::_M_dispose((void **)v347); std::string::_M_dispose((void **)&Str); } v45 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v295, (int)v315); if ( v45 == v275 ) goto LABEL_57; v46 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v45 + 40); std::string::basic_string((char *)&v336, v46); v339 = (int)v341; v340 = 0; LOBYTE(v341[0]) = 0; v47 = std::string::find(&v336, 46, 0); v276 = (std::ostream::sentry *)v47; if ( v47 != (char *)-1 ) { std::string::substr(&Str, &v336, 0, (unsigned int)v47); Str1 = WXML::DOMLib::Token::IsValidVariableName(&Str); if ( Str1 ) { std::string::substr(v347, &v336, (unsigned int)v276 + 1, 0xFFFFFFFF); Str1 = WXML::DOMLib::Token::IsValidVariableName((char **)v347); std::string::_M_dispose((void **)v347); } std::string::_M_dispose((void **)&Str); if ( Str1 ) { std::string::substr(&Str, &v336, (unsigned int)v276 + 1, 0xFFFFFFFF); std::string::operator=((unsigned __int8 **)&v339, (int)&Str); std::string::_M_dispose((void **)&Str); } } if ( WXML::DOMLib::Token::GetTemplateContent(&v336, (unsigned __int8 **)&v339) ) { if ( Str1 ) goto LABEL_181; } else { if ( Str1 == 1 || WXML::DOMLib::Token::IsValidVariableName((char **)&v339) ) goto LABEL_181; v48 = std::string::find(&v339, 46, 0); v277 = (std::ostream::sentry *)v48; if ( v48 != (char *)-1 ) { std::string::substr(&Str, &v339, 0, (unsigned int)v48); Str1f = WXML::DOMLib::Token::IsValidVariableName(&Str); if ( Str1f ) { std::string::substr(v347, &v339, (unsigned int)v277 + 1, 0xFFFFFFFF); Str1f = WXML::DOMLib::Token::IsValidVariableName((char **)v347); std::string::_M_dispose((void **)v347); } std::string::_M_dispose((void **)&Str); if ( Str1f ) { std::string::substr(v347, &v339, (unsigned int)v277 + 1, 0xFFFFFFFF); std::string::operator=((unsigned __int8 **)&v339, (int)v347); std::string::_M_dispose((void **)v347); LABEL_181: v289 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp('"); WXML::Rewrite::ToStringCode((int)v342, a2); v223 = std::operator<<(v289, v342); v224 = std::operator<<>(v223, ":"); v225 = std::operator<<(v224, (int *)(this + 24)); std::operator<<>(v225, ":"); v226 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v226, ":"); v227 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); v290 = std::operator<<>(v227, ": wx:key=\""); WXML::Rewrite::ToStringCode((int)&Str, &v336); v228 = std::operator<<(v290, (int *)&Str); v291 = std::operator<<>( v228, "\" does not look like a valid key name (did you mean wx:key=\""); WXML::Rewrite::ToStringCode((int)v347, &v339); v229 = std::operator<<(v291, v347); v230 = std::operator<<>(v229, "\" ?)')"); std::operator<<>(v230, a12); std::string::_M_dispose((void **)v347); std::string::_M_dispose((void **)&Str); p_Str = (void **)v342; LABEL_191: std::string::_M_dispose(p_Str); goto LABEL_56; } } } if ( !WXML::DOMLib::Token::IsValidVariableName((char **)&v336) ) { if ( v337 ) { if ( std::operator==((int)&v336, "0") ) goto LABEL_56; if ( *(_BYTE *)v336 != 48 ) { for ( i = 0; v337 != i; ++i ) { if ( (unsigned __int8)(*(_BYTE *)(v336 + i) - 48) > 9u ) goto LABEL_189; } goto LABEL_56; } } LABEL_189: if ( !std::operator==((int)&v336, "*this") ) { v292 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp('"); WXML::Rewrite::ToStringCode((int)&Str, a2); v233 = std::operator<<(v292, (int *)&Str); v234 = std::operator<<>(v233, ":"); v235 = std::operator<<(v234, (int *)(this + 24)); std::operator<<>(v235, ":"); v236 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v236, ":"); v237 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); v293 = std::operator<<>(v237, ": wx:key=\""); WXML::Rewrite::ToStringCode((int)v347, &v336); v238 = std::operator<<(v293, v347); v239 = std::operator<<>(v238, "\" does not look like a valid key name.')"); std::operator<<>(v239, a12); std::string::_M_dispose((void **)v347); p_Str = (void **)&Str; goto LABEL_191; } } LABEL_56: std::string::_M_dispose((void **)&v339); std::string::_M_dispose((void **)&v336); LABEL_57: v241 = (std::ostream::sentry *)(a6 + 8); if ( *(_BYTE *)(this + 256) ) { v49 = std::operator<<(v241, a5); v50 = std::operator<<>(v49, ".wxXCkey=4"); } else { v51 = std::operator<<(v241, a5); v50 = std::operator<<>(v51, ".wxXCkey=2"); } std::operator<<>(v50, a12); std::operator<<>((std::ostream::sentry *)(a6 + 8), "_2z(z,"); v52 = std::map::operator[](v295, (int)v312); v53 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v52 + 14)); v54 = std::operator<<>(v53, ","); v55 = std::operator<<(v54, &v324); v56 = std::operator<<>(v55, ","); v57 = std::operator<<(v56, a8); v58 = std::operator<<>(v57, ","); v59 = std::operator<<(v58, a9); v60 = std::operator<<>(v59, ","); v61 = std::operator<<(v60, a10); v62 = std::operator<<>(v61, ","); v63 = std::operator<<(v62, a5); v64 = std::operator<<>(v63, ",'"); v65 = std::operator<<(v64, &v321); v66 = std::operator<<>(v65, "','"); v67 = std::operator<<(v66, &v318); v278 = std::operator<<>(v67, "','"); v68 = std::map::operator[](v295, (int)v315); v69 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v68); v70 = std::operator<<(v278, v69); v71 = std::operator<<>(v70, "')"); std::operator<<>(v71, a12); std::string::_M_dispose((void **)&v333); std::string::_M_dispose((void **)&v330); std::string::_M_dispose((void **)&v327); std::string::_M_dispose((void **)&v324); std::string::_M_dispose((void **)&v321); std::string::_M_dispose((void **)&v318); std::string::_M_dispose(v316); std::string::_M_dispose(v315); std::string::_M_dispose(v314); std::string::_M_dispose(v313); v72 = v312; 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_169; } v296 = (std::ostream::sentry *)(this + 48); Str1a = (char *)(this + 52); if ( std::operator==(this, "include") ) { std::string::basic_string((void **)v347, (char *)off_5539C8); v279 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v296, (int)v347); std::string::_M_dispose((void **)v347); if ( v279 == (std::ostream::sentry *)Str1a ) goto LABEL_169; std::string::basic_string((void **)v347, (char *)off_5539C8); v280 = (std::ostream::sentry *)*((_DWORD *)std::map::operator[](v296, v347) + 14); std::string::_M_dispose((void **)v347); if ( v280 == (std::ostream::sentry *)-3 ) { v251 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)&Str, (char *)off_5539C8); lpuexcptd = (int *)(std::map::operator[](v296, &Str) + 60); std::string::basic_string((void **)v347, (char *)off_5539C8); std::string::basic_string((void **)v342, (char *)off_5539C8); v73 = std::map::operator[](v296, v342); WXML::DOMLib::WXMLDom::Error((int)v251, a2, (int)v73, v347, lpuexcptd); std::string::_M_dispose((void **)v342); std::string::_M_dispose((void **)v347); std::string::_M_dispose((void **)&Str); v22 = v251; LABEL_9: __cxa_throw( v22, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } std::operator<<>((std::ostream::sentry *)(a6 + 8), "_ic(x["); v271 = *(std::ostream::sentry **)(this + 248); std::string::basic_string((void **)&Str, (char *)off_5539C8); v74 = std::map::operator[](v296, &Str); v75 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v74); std::string::basic_string((char *)v347, v75); StrID = WXML::DOMLib::StrCache::GetStrID(v271, (int)v347); std::ostream::operator<<(StrID); std::string::_M_dispose((void **)v347); std::string::_M_dispose((void **)&Str); v77 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "],"); v78 = std::operator<<(v77, a3); std::operator<<>(v78, (char *)off_553CC8); v297 = *(std::ostream::sentry **)(this + 248); std::string::basic_string((char *)v347, (int)a2); v79 = WXML::DOMLib::StrCache::GetStrID(v297, (int)v347); std::ostream::operator<<(v79); std::string::_M_dispose((void **)v347); v80 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "],"); v81 = std::operator<<(v80, a8); v82 = std::operator<<>(v81, ","); v83 = std::operator<<(v82, a9); v84 = std::operator<<>(v83, ","); v85 = std::operator<<(v84, a5); v86 = std::operator<<>(v85, ","); v31 = std::operator<<(v86, a10); v242 = ");"; goto LABEL_68; } v270 = std::operator==(this, "wx-template"); if ( v270 ) { std::string::basic_string((void **)v347, "is"); v281 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v296, (int)v347); std::string::_M_dispose((void **)v347); if ( v281 == (std::ostream::sentry *)Str1a ) goto LABEL_169; std::string::basic_string((void **)&Str, "is"); v269 = v270; if ( *((_DWORD *)std::map::operator[](v296, &Str) + 14) != -3 ) { std::string::basic_string((void **)v347, "is"); v269 = *((_DWORD *)std::map::operator[](v296, v347) + 14) == -1; std::string::_M_dispose((void **)v347); } std::string::_M_dispose((void **)&Str); if ( v269 ) { v272 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp(\""); WXML::Rewrite::ToStringCode((int)v347, a2); v88 = std::operator<<(v272, v347); std::operator<<>(v88, ":template:"); v89 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v89, ":"); v90 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); std::operator<<>(v90, (char *)off_553CDD); std::string::_M_dispose((void **)v347); std::string::basic_string((void **)v347, "is"); v91 = std::map::operator[](v296, v347); v92 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v91); WXML::Rewrite::ToStringCode(v92, a6); std::string::_M_dispose((void **)v347); v87 = std::operator<<>( (std::ostream::sentry *)(a6 + 8), "` is not a valid expression for a template.\")"); goto LABEL_69; } v334 = 0; v333 = (int)v335; v335[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v333); v282 = (std::ostream::sentry *)(a6 + 8); v93 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); v94 = std::operator<<(v93, &v333); std::operator<<>(v94, "=_oz(z,"); std::string::basic_string((void **)v347, "is"); v95 = std::map::operator[](v296, v347); v96 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v95 + 14)); v97 = std::operator<<>(v96, ","); v98 = std::operator<<(v97, a8); v99 = std::operator<<>(v98, ","); v100 = std::operator<<(v99, a9); v101 = std::operator<<>(v100, ","); v102 = std::operator<<(v101, a10); v103 = std::operator<<>(v102, ")"); std::operator<<>(v103, a12); std::string::_M_dispose((void **)v347); v336 = (int)&v338; v337 = 0; v338 = 0; WXML::NameAllocator::GetNextName(a7, (int)&v336); v104 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); v105 = std::operator<<(v104, &v336); std::operator<<>(v105, "=_gd(x["); v257 = *(std::ostream::sentry **)(this + 248); std::string::basic_string((char *)v347, (int)a2); v106 = WXML::DOMLib::StrCache::GetStrID(v257, (int)v347); std::ostream::operator<<(v106); std::string::_M_dispose((void **)v347); v107 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "],"); v108 = std::operator<<(v107, &v333); v109 = std::operator<<>(v108, ","); v110 = std::operator<<(v109, a3); v111 = std::operator<<>(v110, ","); v112 = std::operator<<(v111, a11); v113 = std::operator<<>(v112, ")"); std::operator<<>(v113, a12); v114 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "if("); v115 = std::operator<<(v114, &v336); v116 = std::operator<<>(v115, "){"); std::operator<<>(v116, a12); v340 = 0; v339 = (int)v341; LOBYTE(v341[0]) = 0; WXML::NameAllocator::GetNextName(a7, (int)&v339); std::string::basic_string((void **)&Str, "data"); if ( Str1a != (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( v296, (int)&Str) ) { std::string::basic_string((void **)v347, "data"); v117 = std::map::operator[](v296, v347); v270 = *(_DWORD *)(WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v117) + 4) == 0; std::string::_M_dispose((void **)v347); } std::string::_M_dispose((void **)&Str); if ( v270 ) { v118 = std::operator<<>(v282, "var "); v119 = std::operator<<(v118, &v339); v120 = std::operator<<>(v119, "={}"); std::operator<<>(v120, a12); } else { std::string::basic_string((void **)v347, "data"); Str1g = (char *)*((_DWORD *)std::map::operator[](v296, v347) + 14); std::string::_M_dispose((void **)v347); if ( Str1g == (char *)-3 ) { v252 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)&Str, "data"); lpuexcpte = (int *)(std::map::operator[](v296, &Str) + 60); std::string::basic_string((void **)v347, "data"); std::string::basic_string((void **)v342, "data"); v121 = std::map::operator[](v296, v342); WXML::DOMLib::WXMLDom::Error((int)v252, a2, (int)v121, v347, lpuexcpte); std::string::_M_dispose((void **)v342); std::string::_M_dispose((void **)v347); std::string::_M_dispose((void **)&Str); __cxa_throw( v252, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } v122 = std::operator<<>(v282, "var "); v123 = std::operator<<(v122, &v339); std::operator<<>(v123, "=_1z(z,"); std::string::basic_string((void **)v347, "data"); v124 = std::map::operator[](v296, v347); v125 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v124 + 14)); v126 = std::operator<<>(v125, ","); v127 = std::operator<<(v126, a8); v128 = std::operator<<>(v127, ","); v129 = std::operator<<(v128, a9); v130 = std::operator<<>(v129, ","); v131 = std::operator<<(v130, a10); v132 = std::operator<<>(v131, ") || {}"); std::operator<<>(v132, a12); std::string::_M_dispose((void **)v347); } v133 = std::operator<<>(v282, "var cur_globalf="); v134 = std::operator<<(v133, a10); v135 = std::operator<<>(v134, ".f"); std::operator<<>(v135, a12); v136 = std::operator<<(v282, a5); v137 = std::operator<<>(v136, ".wxXCkey=3"); std::operator<<>(v137, a12); v138 = std::operator<<(v282, &v336); v139 = std::operator<<>(v138, "("); v140 = std::operator<<(v139, &v339); v141 = std::operator<<>(v140, ","); v142 = std::operator<<(v141, &v339); v143 = std::operator<<>(v142, ","); v144 = std::operator<<(v143, a5); v145 = std::operator<<>(v144, ","); v146 = std::operator<<(v145, a10); v147 = std::operator<<>(v146, ")"); std::operator<<>(v147, a12); v148 = std::operator<<(v282, a10); v149 = std::operator<<>(v148, ".f=cur_globalf"); std::operator<<>(v149, a12); std::string::_M_dispose((void **)&v339); v150 = std::operator<<>(v282, "}"); std::operator<<>(v150, a12); v151 = std::operator<<>(v282, "else _w("); v152 = std::operator<<(v151, &v333); std::operator<<>(v152, (char *)off_553CC8); Str1h = *(char **)(this + 248); std::string::basic_string((char *)v347, (int)a2); v153 = WXML::DOMLib::StrCache::GetStrID(Str1h, (int)v347); std::ostream::operator<<(v153); std::string::_M_dispose((void **)v347); std::operator<<>(v282, "],"); std::string::basic_string((void **)&Str, "is"); v154 = std::map::operator[](v296, &Str); v155 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v154 + 2)); std::operator<<>(v155, ","); std::string::basic_string((void **)v347, "is"); v156 = std::map::operator[](v296, v347); v157 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v156 + 3)); v158 = std::operator<<>(v157, ")"); std::operator<<>(v158, a12); std::string::_M_dispose((void **)v347); std::string::_M_dispose((void **)&Str); std::string::_M_dispose((void **)&v336); v72 = (void **)&v333; LABEL_84: std::string::_M_dispose(v72); goto LABEL_169; } v324 = 0; v325 = 0; v326 = 0; for ( j = *(_DWORD *)(this + 60); ; j = std::_Rb_tree_increment((int)v298) ) { v298 = (int *)j; if ( (char *)j == Str1a ) break; v160 = *(_DWORD *)(j + 96); if ( v160 == -3 ) { if ( (a14 & 1) == 0 ) { v254 = __cxa_allocate_exception(0x18u); WXML::DOMLib::WXMLDom::Error((int)v254, a2, (int)(v298 + 10), v298 + 4, v298 + 25); __cxa_throw( v254, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } } else if ( v160 == -1 && v298[15] > 0 ) { v253 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)v347, "interal error(1010)"); WXML::DOMLib::WXMLDom::Error((int)v253, a2, (int)(v298 + 10), v298 + 4, v347); std::string::_M_dispose((void **)v347); __cxa_throw( v253, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } v161 = v298[4]; if ( *(_BYTE *)v161 != 119 || *(_BYTE *)(v161 + 1) != 120 || (v162 = *(_BYTE *)(v161 + 2), v162 != 58) && v162 != 45 || !__stricmp((const char *)v161, "wx:scope-data") ) { std::string::basic_string((char *)v347, (int)(v298 + 4)); WXML::DOMLib::Token::Token((int)v350, (WXML::DOMLib::Token *)(v298 + 10), v243); std::vector>::emplace_back>( &v324, v347); std::pair::~pair((void **)v347); } } std::sort<__gnu_cxx::__normal_iterator *,std::vector>>,bool (*)(std::pair const&,std::pair const&)>( (char *)v324, v325, (int (__cdecl *)(int, int))WXML::DOMLib::AttrsCompartor); v328 = 0; v327 = (int)v329; v332[1] = (int)&v331; v332[2] = (int)&v331; v329[0] = 0; v283 = (std::ostream::sentry *)v325; v331 = 0; v332[0] = 0; v332[3] = 0; for ( k = (std::ostream::sentry *)v324; v283 != k; k = (std::ostream::sentry *)((char *)k + 136) ) std::set::insert(&v330, (int)k); std::basic_stringstream,std::allocator>::basic_stringstream((int)v347); for ( m = 0; (unsigned int)m < -252645135 * ((int)&v325[-v324] >> 3); m = (std::ostream::sentry *)((char *)m + 1) ) { v258 = (std::ostream::sentry *)(136 * (_DWORD)m); Str1b = (char *)(136 * (_DWORD)m + v324); std::string::substr(&v333, Str1b, 0, 6u); v300 = std::operator!=((int)&v333, "model:"); std::string::_M_dispose((void **)&v333); if ( !v300 ) { v301 = std::operator<<>((std::ostream::sentry *)v348, "\"model:"); std::string::substr(v342, Str1b, 6u, 0xFFFFFFFF); v163 = std::operator<<(v301, v342); v164 = std::operator<<>(v163, "\""); v302 = std::operator<<>(v164, ":\""); v165 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v258 + v324 + 24); WXML::Rewrite::ToStringCode((int)&Str, v165); v166 = std::operator<<(v302, (int *)&Str); std::operator<<>(v166, "\","); std::string::_M_dispose((void **)&Str); std::string::_M_dispose((void **)v342); std::string::substr(&v336, Str1b, 6u, 0xFFFFFFFF); v284 = (std::ostream::sentry *)v332[0]; v303 = &v331; while ( v284 ) { v167 = (unsigned __int8)std::operator<((int)v284 + 16, (int)&v336) == 0; v168 = v303; v169 = (std::ostream::sentry *)*((_DWORD *)v284 + 3); if ( v167 ) { v169 = (std::ostream::sentry *)*((_DWORD *)v284 + 2); if ( v167 ) v168 = (int *)v284; } v284 = v169; v303 = v168; } if ( v303 != &v331 ) { v167 = (unsigned __int8)std::operator<((int)&v336, (int)(v303 + 4)) == 0; v170 = &v331; if ( v167 ) v170 = v303; v303 = v170; } std::string::_M_dispose((void **)&v336); if ( v303 == &v331 ) { std::string::substr(&v339, Str1b, 6u, 0xFFFFFFFF); std::string::operator=((unsigned __int8 **)((char *)v258 + v324), (int)&v339); std::string::_M_dispose((void **)&v339); } else { v171 = (unsigned __int8 **)((char *)v258 + v324); v172 = (char *)v258 + v324 + 136; if ( v325 != v172 ) { for ( n = -252645135 * ((v325 - v172) >> 3); ; --n ) { v285 = (std::ostream::sentry *)(v171 + 34); if ( n <= 0 ) break; std::pair::operator=(v171, (int)(v171 + 34)); v171 = (unsigned __int8 **)v285; } } v325 -= 136; std::pair::~pair((void **)v325); m = (std::ostream::sentry *)((char *)m - 1); } } } std::stringbuf::str((int)v342, (int)v349); std::string::operator=((unsigned __int8 **)&v327, (int)v342); std::string::_M_dispose((void **)v342); if ( v328 ) { std::string::basic_string((char *)&v339, (int)a5); std::string::append(&v339, ".rawAttr={"); v173 = std::string::append(&v339, (int)&v327); std::string::basic_string(v342, v173); v174 = std::string::append(v342, "};"); std::string::basic_string(&Str, v174); std::string::operator=((unsigned __int8 **)&v327, (int)&Str); std::string::_M_dispose((void **)&Str); std::string::_M_dispose((void **)v342); std::string::_M_dispose((void **)&v339); } std::basic_stringstream,std::allocator>::~basic_stringstream((int)v347); std::_Rb_tree,std::less,std::allocator>::_M_erase(v332[0]); v305 = (std::ostream::sentry *)(a6 + 8); if ( (unsigned int)&v325[-v324] <= 0x88 ) { v191 = std::operator<<>(v305, "var "); v192 = std::operator<<(v191, a5); v193 = std::operator<<>(v192, "=_n('"); v194 = std::operator<<(v193, (int *)this); v195 = std::operator<<>(v194, "')"); std::operator<<>(v195, a12); for ( ii = (std::ostream::sentry *)v324; ; ii = (std::ostream::sentry *)((char *)ii + 136) ) { if ( ii == (std::ostream::sentry *)v325 ) goto LABEL_164; Str1e = *(char **)ii; Str = v346; v345 = 0; v346[0] = 0; if ( !strncmp(Str1e, "data-", 5u) || std::string::find((int *)ii, 58, 0) != (char *)-1 ) { std::string::_M_assign((int)&Str, (int)ii); if ( !strncmp(Str1e, "generic:", 8u) ) { std::operator<<>(v305, "var $tmp="); if ( *((_DWORD *)ii + 11) ) { std::operator<<>(v305, "grb(z["); v196 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)ii + 20)); v197 = std::operator<<>(v196, "],"); v198 = std::operator<<(v197, a8); v199 = std::operator<<>(v198, ","); v200 = std::operator<<(v199, a9); v201 = std::operator<<>(v200, ","); v202 = std::operator<<(v201, a10); v203 = std::operator<<>(v202, ")"); std::operator<<>(v203, a12); v204 = std::operator<<>(v305, "if ($tmp!=\"\") $tmp=\"wx-\"+$tmp"); } else { v204 = std::operator<<>(v305, "\"\""); } std::operator<<>(v204, a12); v205 = std::operator<<(v305, a5); std::operator<<>(v205, ".generics['"); v206 = std::operator<<>(v305, "wx-"); v207 = std::operator<<>(v206, Str1e + 8); v208 = std::operator<<>(v207, "']=$tmp"); goto LABEL_158; } } else { WXML::DOMLib::WXMLDom::ToCamelStyle((int)v347, (int)ii); std::string::operator=((unsigned __int8 **)&Str, (int)v347); std::string::_M_dispose((void **)v347); } if ( *((_DWORD *)ii + 11) ) { if ( *((_DWORD *)ii + 20) == -1 ) { v255 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)v347, "interal error(1010)"); WXML::DOMLib::WXMLDom::Error((int)v255, a2, (int)ii + 24, (int *)ii, v347); std::string::_M_dispose((void **)v347); __cxa_throw( v255, (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } v211 = std::operator<<>(v305, "_rz(z,"); v212 = std::operator<<(v211, a5); v213 = std::operator<<>(v212, ",'"); v214 = std::operator<<(v213, (int *)&Str); std::operator<<>(v214, "',"); v215 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)ii + 20)); v216 = std::operator<<>(v215, ","); v217 = std::operator<<(v216, a8); v218 = std::operator<<>(v217, ","); v219 = std::operator<<(v218, a9); v220 = std::operator<<>(v219, ","); v221 = std::operator<<(v220, a10); v208 = std::operator<<>(v221, ")"); } else { v209 = std::operator<<(v305, a5); std::operator<<>(v209, ".attr['"); v210 = std::operator<<(v305, (int *)&Str); v208 = std::operator<<>(v210, "']=true"); } LABEL_158: std::operator<<>(v208, a12); std::string::_M_dispose((void **)&Str); } } v339 = 0; v340 = 0; v341[0] = 0; v175 = std::operator<<>(v305, "var "); v176 = std::operator<<(v175, a5); v177 = std::operator<<>(v176, "=_mz(z,'"); v178 = std::operator<<(v177, (int *)this); std::operator<<>(v178, (char *)off_553DAF); v274 = 0; v259 = (char *)&byte_5537CA; for ( jj = (int *)v324; jj != (int *)v325; jj += 34 ) { Str1c = (char *)*jj; v342[0] = (int)&v343; v342[1] = 0; v343 = 0; if ( !strncmp(Str1c, "data-", 5u) || std::string::find(jj, 58, 0) != (char *)-1 ) { std::string::_M_assign((int)v342, (int)jj); if ( !strncmp(Str1c, "generic:", 8u) ) { Str = Str1c + 8; WXML::DOMLib::Token::Token((int)&v345, (WXML::DOMLib::Token *)(jj + 6), v244); std::string::basic_string((void **)v347, Str); WXML::DOMLib::Token::Token(v350, (int)&v345); std::vector>::emplace_back>( &v339, v347); std::pair::~pair((void **)v347); WXML::DOMLib::Token::~Token((int)&v345); std::string::_M_dispose((void **)v342); continue; } } else { WXML::DOMLib::WXMLDom::ToCamelStyle((int)&Str, (int)jj); std::string::operator=((unsigned __int8 **)v342, (int)&Str); std::string::_M_dispose((void **)&Str); } std::operator<<>(v305, v259); v179 = std::operator<<>(v305, "'"); v180 = std::operator<<(v179, v342); std::operator<<>(v180, "',"); if ( jj[11] ) { std::ostream::operator<<(jj[20] - (_DWORD)v274); if ( !v274 ) v274 = (std::ostream::sentry *)jj[20]; } else { std::operator<<>(v305, "-1"); } std::string::_M_dispose((void **)v342); v259 = ","; } std::operator<<>(v305, (char *)off_553DC7); v287 = 0; v181 = (char *)&byte_5537CA; while ( (unsigned int)v287 < -252645135 * ((v340 - v339) >> 3) ) { std::operator<<>(v305, v181); v182 = std::operator<<>(v305, "'wx-"); Str1d = (char *)(136 * (_DWORD)v287); v183 = std::operator<<(v182, (int *)(v339 + 136 * (_DWORD)v287)); std::operator<<>(v183, "',"); if ( *(_DWORD *)(v339 + 136 * (_DWORD)v287 + 44) ) { std::ostream::operator<<(*(_DWORD *)&Str1d[v339 + 80] - (_DWORD)v274); if ( !v274 ) v274 = *(std::ostream::sentry **)&Str1d[v339 + 80]; } else { std::operator<<>(v305, "-1"); } v287 = (std::ostream::sentry *)((char *)v287 + 1); v181 = ","; } v184 = std::operator<<>(v305, "],"); v185 = std::operator<<(v184, a8); v186 = std::operator<<>(v185, ","); v187 = std::operator<<(v186, a9); v188 = std::operator<<>(v187, ","); v189 = std::operator<<(v188, a10); v190 = std::operator<<>(v189, ")"); std::operator<<>(v190, a12); std::vector>::~vector((void ***)&v339); LABEL_164: if ( v328 ) std::operator<<(v305, &v327); 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 **)&v327); std::vector>::~vector((void ***)&v324); LABEL_169: if ( a13 && *(_DWORD *)(this + 28) ) { v222 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "cs.pop()"); std::operator<<>(v222, a12); } return 0; } // 4261A0: variable 'v243' is possibly undefined // 426A09: variable 'v244' is possibly undefined // 427CBE: using guessed type _DWORD __stdcall WXML::DOMLib::WXMLDom::RenderChildren(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, char, char, _DWORD, _DWORD); // 429976: 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); // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 55B66C: using guessed type int *`typeinfo for'WXML::DOMLib::RenderException; // 423D86: using guessed type _DWORD var_C0[47]; // 423D86: using guessed type char var_D0[4]; // 423D86: using guessed type char var_CC[12]; //----- (00427CBE) -------------------------------------------------------- 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 v15; // edx std::ostream::sentry *v16; // eax std::ostream::sentry *v17; // eax std::ostream::sentry *v18; // eax std::ostream::sentry *v19; // eax int StrID; // 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 int v26; // eax std::ostream::sentry *v27; // eax int v28; // edx char *v29; // eax int v30; // ecx int v31; // ecx char *v32; // eax std::ostream::sentry *v33; // eax std::ostream::sentry *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 char *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 char *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 _DWORD *v65; // eax int v66; // eax int v67; // eax std::ostream::sentry *v68; // eax int 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; // 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 int v95; // [esp+44h] [ebp-134h] int v96; // [esp+48h] [ebp-130h] _DWORD *v97; // [esp+48h] [ebp-130h] char **v98; // [esp+4Ch] [ebp-12Ch] char *v99; // [esp+4Ch] [ebp-12Ch] _DWORD *v100; // [esp+4Ch] [ebp-12Ch] _DWORD *v101; // [esp+50h] [ebp-128h] char *v102; // [esp+50h] [ebp-128h] char *v103; // [esp+50h] [ebp-128h] char *v104; // [esp+50h] [ebp-128h] void *v105; // [esp+54h] [ebp-124h] void *v106; // [esp+58h] [ebp-120h] void *v107; // [esp+5Ch] [ebp-11Ch] void *v108; // [esp+60h] [ebp-118h] struct _Unwind_Exception *v109; // [esp+64h] [ebp-114h] struct _Unwind_Exception *v110; // [esp+68h] [ebp-110h] char *Strc; // [esp+6Ch] [ebp-10Ch] bool Str; // [esp+6Ch] [ebp-10Ch] char *Strd; // [esp+6Ch] [ebp-10Ch] int Stra; // [esp+6Ch] [ebp-10Ch] char *Stre; // [esp+6Ch] [ebp-10Ch] char *Strf; // [esp+6Ch] [ebp-10Ch] char *Strg; // [esp+6Ch] [ebp-10Ch] char *Strh; // [esp+6Ch] [ebp-10Ch] char *Strb; // [esp+6Ch] [ebp-10Ch] char *Stri; // [esp+6Ch] [ebp-10Ch] char *Strj; // [esp+6Ch] [ebp-10Ch] char *Strk; // [esp+6Ch] [ebp-10Ch] char *Strl; // [esp+6Ch] [ebp-10Ch] int v124; // [esp+70h] [ebp-108h] _DWORD *v125; // [esp+70h] [ebp-108h] _DWORD *v126; // [esp+70h] [ebp-108h] unsigned int v127; // [esp+70h] [ebp-108h] unsigned int j; // [esp+70h] [ebp-108h] _DWORD *exception; // [esp+78h] [ebp-100h] _DWORD *v130; // [esp+7Ch] [ebp-FCh] int v131; // [esp+7Ch] [ebp-FCh] _DWORD *v132; // [esp+7Ch] [ebp-FCh] _DWORD *v133; // [esp+7Ch] [ebp-FCh] int i; // [esp+7Ch] [ebp-FCh] std::ostream::sentry *v135; // [esp+80h] [ebp-F8h] int *v136; // [esp+80h] [ebp-F8h] unsigned int v137; // [esp+84h] [ebp-F4h] struct _Unwind_Exception *lpuexcpta; // [esp+88h] [ebp-F0h] struct _Unwind_Exception *lpuexcptb; // [esp+88h] [ebp-F0h] struct _Unwind_Exception *lpuexcptc; // [esp+88h] [ebp-F0h] void **v142; // [esp+CCh] [ebp-ACh] BYREF int v143; // [esp+D0h] [ebp-A8h] int v144; // [esp+D4h] [ebp-A4h] int v145[2]; // [esp+D8h] [ebp-A0h] BYREF char v146; // [esp+E0h] [ebp-98h] BYREF int v147[2]; // [esp+F0h] [ebp-88h] BYREF char v148; // [esp+F8h] [ebp-80h] BYREF void *v149[2]; // [esp+108h] [ebp-70h] BYREF char v150; // [esp+110h] [ebp-68h] BYREF int v151[2]; // [esp+120h] [ebp-58h] BYREF char v152; // [esp+128h] [ebp-50h] BYREF int v153[2]; // [esp+138h] [ebp-40h] BYREF char v154; // [esp+140h] [ebp-38h] BYREF __int64 v155; // [esp+150h] [ebp-28h] BYREF char v156[16]; // [esp+158h] [ebp-20h] BYREF int v157; // [esp+168h] [ebp-10h] v135 = (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); } v148 = 0; v145[0] = (int)&v146; v147[0] = (int)&v148; v145[1] = 0; v146 = 0; v147[1] = 0; v137 = 0; v109 = 0; v110 = 0; while ( 1 ) { v15 = this[18]; if ( (this[19] - v15) >> 3 <= v137 ) break; if ( (std::operator==(*(_DWORD *)(v15 + 8 * v137), "import") || std::operator==(*(_DWORD *)(this[18] + 8 * v137), "wx-import")) && (v124 = *(_DWORD *)(this[18] + 8 * v137), v101 = (_DWORD *)(v124 + 52), std::string::basic_string((void **)&v155, (char *)off_5539C8), v125 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v124 + 48), (int)&v155), std::string::_M_dispose((void **)&v155), v101 != v125) ) { if ( !v110 ) { WXML::NameAllocator::GetNextName(a7, (int)v145); v16 = std::operator<<>(v135, "var "); v17 = std::operator<<(v16, v145); v18 = std::operator<<>(v17, "="); v19 = std::operator<<(v18, a3); std::operator<<>(v19, (char *)off_553FDC); v130 = (_DWORD *)this[62]; std::string::basic_string((char *)&v155, (int)a2); StrID = WXML::DOMLib::StrCache::GetStrID(v130, (int)&v155); std::ostream::operator<<(StrID); std::string::_M_dispose((void **)&v155); v21 = std::operator<<>(v135, "]].i"); std::operator<<>(v21, a12); } v110 = (struct _Unwind_Exception *)((char *)v110 + 1); } else if ( std::operator==(*(_DWORD *)(this[18] + 8 * v137), "include") ) { v131 = *(_DWORD *)(this[18] + 8 * v137); v126 = (_DWORD *)(v131 + 52); std::string::basic_string((void **)&v155, (char *)off_5539C8); v132 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v131 + 48), (int)&v155); std::string::_M_dispose((void **)&v155); if ( v132 != v126 ) { if ( !v109 ) { WXML::NameAllocator::GetNextName(a7, (int)v147); v22 = std::operator<<>(v135, "var "); v23 = std::operator<<(v22, v147); v24 = std::operator<<>(v23, "="); v25 = std::operator<<(v24, a3); std::operator<<>(v25, (char *)off_553FDC); v133 = (_DWORD *)this[62]; std::string::basic_string((char *)&v155, (int)a2); v26 = WXML::DOMLib::StrCache::GetStrID(v133, (int)&v155); std::ostream::operator<<(v26); std::string::_M_dispose((void **)&v155); v27 = std::operator<<>(v135, "]].j"); std::operator<<>(v27, a12); } v109 = (struct _Unwind_Exception *)((char *)v109 + 1); } } ++v137; } v150 = 0; v149[0] = &v150; v149[1] = 0; v127 = 0; for ( i = 0; ; i = Stra ) { v28 = this[18]; if ( (this[19] - v28) >> 3 <= v127 ) break; Strc = *(char **)(v28 + 8 * v127); v102 = Strc + 52; std::string::basic_string((void **)v153, "wx-if"); v29 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)Strc + 12, (int)v153); Str = 1; if ( v102 == v29 ) { Strd = *(char **)(this[18] + 8 * v127); std::string::basic_string((void **)&v155, "wx:if"); Str = Strd + 52 != (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)Strd + 12, (int)&v155); std::string::_M_dispose((void **)&v155); } std::string::_M_dispose((void **)v153); if ( Str ) { WXML::NameAllocator::GetNextName(a7, (int)v149); std::string::_M_assign(*(_DWORD *)(this[18] + 8 * v127) + 220, (int)v149); Stra = 2; *(_DWORD *)(*(_DWORD *)(this[18] + 8 * v127) + 244) = 1; } else { Stre = *(char **)(this[18] + 8 * v127); v103 = Stre + 52; std::string::basic_string((void **)v151, "wx:elif"); Strf = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)Stre + 12, (int)v151); std::string::_M_dispose((void **)v151); if ( v103 == Strf ) { Strg = *(char **)(this[18] + 8 * v127); v104 = Strg + 52; std::string::basic_string((void **)v153, "wx:else"); Strh = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)Strg + 12, (int)v153); std::string::_M_dispose((void **)v153); if ( Strh != v104 ) { if ( !i ) { v106 = __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)v106, a2, *(_DWORD *)(this[18] + 8 * v127) + 84, v153, (int *)&v155); std::string::_M_dispose((void **)v153); std::string::_M_dispose((void **)&v155); __cxa_throw( v106, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } v31 = *(_DWORD *)(this[18] + 8 * v127); *(_DWORD *)(v31 + 244) = i; std::string::_M_assign(v31 + 220, (int)v149); } Stra = 0; } else { if ( !i ) { v105 = __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)v105, a2, *(_DWORD *)(this[18] + 8 * v127) + 84, v153, (int *)&v155); std::string::_M_dispose((void **)v153); std::string::_M_dispose((void **)&v155); __cxa_throw( v105, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } Stra = i + 1; v30 = *(_DWORD *)(this[18] + 8 * v127); *(_DWORD *)(v30 + 244) = i; std::string::_M_assign(v30 + 220, (int)v149); } } ++v127; } v152 = 0; v151[0] = (int)&v152; v151[1] = 0; v142 = 0; v143 = 0; v144 = 0; for ( j = 0; (this[19] - this[18]) >> 3 > j; ++j ) { std::string::_M_assign((int)v151, (int)a5); if ( *(int *)(*(_DWORD *)(this[18] + 8 * j) + 244) <= 0 ) goto LABEL_56; v154 = 0; v153[0] = (int)&v154; v153[1] = 0; v98 = WXML::DOMLib::szWXIFControlAttrs; while ( 1 ) { Strb = *v98; v96 = *(_DWORD *)(this[18] + 8 * j); if ( !*v98 ) break; v95 = *(_DWORD *)(this[18] + 8 * j) + 52; std::string::basic_string((void **)&v155, Strb); v97 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)(v96 + 48), (int)&v155); std::string::_M_dispose((void **)&v155); ++v98; if ( v97 != (_DWORD *)v95 ) { std::string::operator=((unsigned int *)v153, Strb); break; } } if ( *((_DWORD *)std::map::operator[]( (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), (int)v153) + 14) == -3 ) { v107 = __cxa_allocate_exception(0x18u); v136 = (int *)(std::map::operator[]( (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), (int)v153) + 60); v32 = std::map::operator[]( (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), (int)v153); WXML::DOMLib::WXMLDom::Error((int)v107, a2, (int)v32, v153, v136); __cxa_throw( v107, (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, WXML::DOMLib::RenderException::~RenderException); } if ( *((_DWORD *)std::map::operator[]( (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), (int)v153) + 14) == -1 && (unsigned __int8)std::operator!=((int)v153, "wx:else") ) { v108 = __cxa_allocate_exception(0x18u); std::string::basic_string((void **)&v155, "value not set"); WXML::DOMLib::WXMLDom::Error((int)v108, a2, *(_DWORD *)(this[18] + 8 * j) + 84, v153, (int *)&v155); std::string::_M_dispose((void **)&v155); __cxa_throw( v108, (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") ) { v33 = std::operator<<>(v135, "var "); v34 = std::operator<<(v33, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); v35 = std::operator<<>(v34, "=_v()"); std::operator<<>(v35, a12); v36 = std::operator<<>(v135, "_("); v37 = std::operator<<(v36, a5); v38 = std::operator<<>(v37, ","); v39 = std::operator<<(v38, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); v40 = std::operator<<>(v39, ")"); std::operator<<>(v40, a12); std::operator<<>(v135, "if(_oz(z,"); v41 = std::map::operator[]( (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), (int)v153); std::ostream::operator<<(*((_DWORD *)v41 + 14)); v42 = std::operator<<>(v135, ","); v43 = std::operator<<(v42, a8); v44 = std::operator<<>(v43, ","); v45 = std::operator<<(v44, a9); v46 = std::operator<<>(v45, ","); v47 = std::operator<<(v46, a10); std::operator<<>(v47, ")){"); v48 = std::operator<<(v135, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); std::operator<<>(v48, ".wxVkey="); v49 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 244)); std::operator<<>(v49, a12); std::string::basic_string((char *)&v155, *(_DWORD *)(this[18] + 8 * j) + 220); v157 = 1; std::vector>::emplace_back>((int)&v142, &v155); std::string::_M_dispose((void **)&v155); v50 = *(_DWORD *)(this[18] + 8 * j); if ( *(_BYTE *)(v50 + 256) ) goto LABEL_54; } else { if ( !std::operator==((int)v153, "wx:elif") ) { v60 = std::operator<<>(v135, "else{"); v61 = std::operator<<(v60, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); std::operator<<>(v61, ".wxVkey="); v62 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 244)); std::operator<<>(v62, a12); v50 = *(_DWORD *)(this[18] + 8 * j); if ( !*(_BYTE *)(v50 + 256) ) goto LABEL_55; LABEL_54: std::string::basic_string((char *)&v155, v50 + 220); v157 = 3; std::vector>::emplace_back>((int)&v142, &v155); std::string::_M_dispose((void **)&v155); goto LABEL_55; } std::operator<<>(v135, "else if(_oz(z,"); v51 = std::map::operator[]( (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), (int)v153); std::ostream::operator<<(*((_DWORD *)v51 + 14)); v52 = std::operator<<>(v135, ","); v53 = std::operator<<(v52, a8); v54 = std::operator<<>(v53, ","); v55 = std::operator<<(v54, a9); v56 = std::operator<<>(v55, ","); v57 = std::operator<<(v56, a10); std::operator<<>(v57, ")){"); v58 = std::operator<<(v135, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); std::operator<<>(v58, ".wxVkey="); v59 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 244)); std::operator<<>(v59, a12); v50 = *(_DWORD *)(this[18] + 8 * j); if ( *(_BYTE *)(v50 + 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") ) { Stri = *(char **)(this[18] + 8 * j); v99 = Stri + 52; std::string::basic_string((void **)&v155, (char *)off_5539C8); Strj = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)Stri + 12, (int)&v155); std::string::_M_dispose((void **)&v155); if ( v99 != Strj ) { v63 = std::operator<<>(v135, "_ai("); v64 = std::operator<<(v63, v145); std::operator<<>(v64, (char *)off_553CC8); v100 = (_DWORD *)this[62]; Strk = *(char **)(this[18] + 8 * j); std::string::basic_string((void **)v153, (char *)off_5539C8); v65 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)Strk + 12, (int)v153); v66 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)(v65 + 10)); std::string::basic_string((char *)&v155, v66); v67 = WXML::DOMLib::StrCache::GetStrID(v100, (int)&v155); std::ostream::operator<<(v67); std::string::_M_dispose((void **)&v155); std::string::_M_dispose((void **)v153); std::operator<<>(v135, "],"); v68 = std::operator<<(v135, a3); std::operator<<>(v68, (char *)off_553CC8); Strl = (char *)this[62]; std::string::basic_string((char *)&v155, (int)a2); v69 = WXML::DOMLib::StrCache::GetStrID(Strl, (int)&v155); std::ostream::operator<<(v69); std::string::_M_dispose((void **)&v155); std::operator<<>(v135, "],"); v70 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 92)); std::operator<<>(v70, ","); v71 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 96)); v72 = std::operator<<>(v71, ")"); std::operator<<>(v72, 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, (int)&v155); v73 = std::operator<<>(v135, "var "); v74 = std::operator<<(v73, (int *)&v155); v75 = std::operator<<>(v74, "=_v()"); std::operator<<>(v75, a12); v76 = std::operator<<>(v135, "_("); v77 = std::operator<<(v76, v151); v78 = std::operator<<>(v77, ","); v79 = std::operator<<(v78, (int *)&v155); v80 = std::operator<<>(v79, ")"); std::operator<<>(v80, 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, (int)&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); v82 = std::operator<<>(v135, "_("); v83 = std::operator<<(v82, v151); v84 = std::operator<<>(v83, ","); v85 = std::operator<<(v84, (int *)&v155); v86 = std::operator<<>(v85, ")"); std::operator<<>(v86, a12); goto LABEL_73; } } } LABEL_74: if ( *(int *)(*(_DWORD *)(this[18] + 8 * j) + 244) > 0 ) { v87 = std::operator<<>(v135, "}"); std::operator<<>(v87, a12); } } for ( lpuexcpta = 0; (unsigned int)lpuexcpta < -1227133513 * ((v143 - (int)v142) >> 2); lpuexcpta = (struct _Unwind_Exception *)((char *)lpuexcpta + 1) ) { v88 = std::operator<<(v135, (int *)&v142[7 * (_DWORD)lpuexcpta]); std::operator<<>(v88, ".wxXCkey="); v89 = (std::ostream::sentry *)std::ostream::operator<<(v142[7 * (_DWORD)lpuexcpta + 6]); std::operator<<>(v89, a12); } for ( lpuexcptb = 0; v110 != lpuexcptb; lpuexcptb = (struct _Unwind_Exception *)((char *)lpuexcptb + 1) ) { v90 = std::operator<<(v135, v145); v91 = std::operator<<>(v90, ".pop()"); std::operator<<>(v91, a12); } for ( lpuexcptc = 0; v109 != lpuexcptc; lpuexcptc = (struct _Unwind_Exception *)((char *)lpuexcptc + 1) ) { v92 = std::operator<<(v135, v147); v93 = std::operator<<>(v92, ".pop()"); std::operator<<>(v93, a12); } std::vector>::~vector(&v142); std::string::_M_dispose((void **)v151); std::string::_M_dispose(v149); std::string::_M_dispose((void **)v147); std::string::_M_dispose((void **)v145); return 0; } // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 554190: using guessed type char *WXML::DOMLib::szWXIFControlAttrs[4]; // 55B66C: using guessed type int *`typeinfo for'WXML::DOMLib::RenderException; //----- (00429976) -------------------------------------------------------- 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; // eax int StrID; // 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; // 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 int 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 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 int 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 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 _DWORD *v71; // [esp+44h] [ebp-84h] std::ostream::sentry *v72; // [esp+48h] [ebp-80h] std::ostream::sentry *v73; // [esp+48h] [ebp-80h] _DWORD *v75; // [esp+54h] [ebp-74h] struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-70h] int v77[2]; // [esp+90h] [ebp-38h] BYREF char v78; // [esp+98h] [ebp-30h] BYREF int v79; // [esp+A8h] [ebp-20h] BYREF int v80; // [esp+ACh] [ebp-1Ch] BYREF int v81; // [esp+B0h] [ebp-18h] int *v82; // [esp+B4h] [ebp-14h] int *v83; // [esp+B8h] [ebp-10h] int v84; // [esp+BCh] [ebp-Ch] v77[0] = (int)&v78; v77[1] = 0; v78 = 0; WXML::NameAllocator::GetNextName(a7, (int)v77); lpuexcpt = (struct _Unwind_Exception *)(a6 + 8); if ( a15 ) { v18 = std::operator<<(lpuexcpt, a12); std::operator<<>(v18, (char *)off_553FDC); v75 = (_DWORD *)this[62]; std::string::basic_string((char *)&v79, (int)a2); StrID = WXML::DOMLib::StrCache::GetStrID(v75, (int)&v79); std::ostream::operator<<(StrID); std::string::_M_dispose((void **)&v79); std::operator<<>(lpuexcpt, "]][\""); WXML::Rewrite::ToStringCode(a5, a6); std::operator<<>(lpuexcpt, "\"]"); } else { v20 = std::operator<<>(lpuexcpt, "var "); std::operator<<(v20, a5); } v21 = std::operator<<>(lpuexcpt, "=function("); v22 = std::operator<<(v21, a8); v23 = std::operator<<>(v22, ","); v24 = std::operator<<(v23, a9); v25 = std::operator<<>(v24, ","); v26 = std::operator<<(v25, a11); v27 = std::operator<<>(v26, ","); v28 = std::operator<<(v27, a10); v29 = std::operator<<>(v28, "){"); std::operator<<>(v29, a13); if ( a18[1] ) { v30 = std::operator<<>(lpuexcpt, "var z="); v31 = std::operator<<(v30, a18); v32 = std::operator<<>(v31, "()"); std::operator<<>(v32, a13); } if ( a15 ) { v33 = std::operator<<>(lpuexcpt, "var "); v34 = std::operator<<(v33, v77); std::operator<<>(v34, (char *)off_554111); v72 = (std::ostream::sentry *)this[62]; std::string::basic_string((char *)&v79, (int)a2); v35 = WXML::DOMLib::StrCache::GetStrID(v72, (int)&v79); std::ostream::operator<<(v35); std::string::_M_dispose((void **)&v79); std::operator<<>(lpuexcpt, "]"); std::operator<<>(lpuexcpt, "+':"); WXML::Rewrite::ToStringCode(a5, a6); std::operator<<>(lpuexcpt, "'"); std::operator<<>(lpuexcpt, a13); v36 = std::operator<<(lpuexcpt, a11); v37 = std::operator<<>(v36, ".wxVkey="); v38 = std::operator<<(v37, v77); std::operator<<>(v38, a13); v39 = std::operator<<(lpuexcpt, a10); v73 = std::operator<<>(v39, ".f=$gdc(f_[\""); WXML::Rewrite::ToStringCode((int)&v79, a2); v40 = std::operator<<(v73, &v79); v41 = std::operator<<>(v40, "\"],\"\",1)"); std::operator<<>(v41, a13); std::string::_M_dispose((void **)&v79); v42 = std::operator<<>(lpuexcpt, "if("); v43 = std::operator<<(v42, a14); v44 = std::operator<<>(v43, "["); v45 = std::operator<<(v44, v77); v46 = std::operator<<>(v45, "]){_wl("); v47 = std::operator<<(v46, v77); std::operator<<>(v47, (char *)off_553CC8); v71 = (_DWORD *)this[62]; std::string::basic_string((char *)&v79, (int)a2); v48 = WXML::DOMLib::StrCache::GetStrID(v71, (int)&v79); v49 = (std::ostream::sentry *)std::ostream::operator<<(v48); v50 = std::operator<<>(v49, "]);return}"); std::operator<<>(v50, a13); std::string::_M_dispose((void **)&v79); v51 = std::operator<<(lpuexcpt, a14); v52 = std::operator<<>(v51, "["); v53 = std::operator<<(v52, v77); v54 = std::operator<<>(v53, "]=true"); std::operator<<>(v54, a13); v55 = std::operator<<>(lpuexcpt, "try{"); std::operator<<>(v55, 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 ) { v56 = std::operator<<>(lpuexcpt, "}catch(err){"); std::operator<<>(v56, a13); v57 = std::operator<<(lpuexcpt, a14); v58 = std::operator<<>(v57, "["); v59 = std::operator<<(v58, v77); v60 = std::operator<<>(v59, "]=false"); std::operator<<>(v60, a13); v61 = std::operator<<>(lpuexcpt, "throw err"); std::operator<<>(v61, a13); v62 = std::operator<<>(lpuexcpt, "}"); std::operator<<>(v62, a13); v63 = std::operator<<(lpuexcpt, a14); v64 = std::operator<<>(v63, "["); v65 = std::operator<<(v64, v77); v66 = std::operator<<>(v65, "]=false"); std::operator<<>(v66, a13); } v67 = std::operator<<>(lpuexcpt, "return "); v68 = std::operator<<(v67, a11); std::operator<<>(v68, a13); v69 = std::operator<<>(lpuexcpt, "}"); std::operator<<>(v69, a13); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(v81); std::string::_M_dispose((void **)v77); return 0; } // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); //----- (0042A0BC) -------------------------------------------------------- void __tcf_0_0(void) { std::ios_base::Init::~Init(); } //----- (0042A0C6) -------------------------------------------------------- unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) { unsigned __int8 *v3; // eax unsigned __int8 *v4; // ecx unsigned __int8 *v5; // edx unsigned __int8 *v6; // eax unsigned __int8 *v7; // edx unsigned __int8 *result; // eax unsigned __int8 *v9; // [esp+18h] [ebp-20h] v3 = *this; v4 = *(unsigned __int8 **)a2; v5 = *(unsigned __int8 **)(a2 + 4); if ( *(_DWORD *)a2 == a2 + 8 ) { if ( v5 ) std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); v6 = *(unsigned __int8 **)(a2 + 4); v7 = *this; this[1] = v6; v6[(_DWORD)v7] = 0; } else { if ( v3 == (unsigned __int8 *)(this + 2) ) v3 = 0; else v9 = this[2]; *this = v4; this[1] = v5; this[2] = *(unsigned __int8 **)(a2 + 8); if ( v3 ) { *(_DWORD *)a2 = v3; *(_DWORD *)(a2 + 8) = v9; } else { *(_DWORD *)a2 = a2 + 8; } } result = *(unsigned __int8 **)a2; *(_DWORD *)(a2 + 4) = 0; *result = 0; return result; } // 42A12D: variable 'v9' is possibly undefined //----- (0042A14E) -------------------------------------------------------- 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; } //----- (0042A182) -------------------------------------------------------- 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_5806EC = 99; dword_567A54 = 131074; dword_567B50 = 15; dword_567D64 = 1; dword_567964 = 131171; dword_56B388 = 16; dword_56B59C = 1; dword_56B794 = 17; dword_56B5A0 = -1; dword_56B9A0 = 16; dword_56BB98 = 1; dword_56BDA4 = 1048592; dword_56B628 = 11; dword_56B63C = 13; dword_56A2FC = 12; dword_56A990 = 11; dword_56A214 = 16; dword_56A18C = -1; dword_56A58C = 11; dword_56AB04 = 14; dword_56B198 = 13; dword_56AA30 = 16; dword_56A994 = -1; dword_56AD94 = 13; while ( 1 ) { v1 = *v0; if ( !(_BYTE)v1 ) break; dword_567D68[v1] = 655363; ++v0; } for ( i = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; ; ++i ) { v3 = *i; if ( !(_BYTE)v3 ) break; dword_567D68[v3] = 131076; } dword_567E24 = 262147; v4 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; dword_567DEC = 33; dword_567F44 = 22; dword_568168 = -1; dword_56FA98 = 34; dword_56FDE4 = -1; dword_56FE9C = 19; dword_5701E8 = -1; dword_56C260 = 20; dword_56C5AC = 19; dword_56C664 = 21; dword_56C9B0 = 19; dword_56CAAC = 524289; dword_56CA68 = 21; dword_56CDB4 = 19; while ( 1 ) { v5 = *v4; if ( !(_BYTE)v5 ) break; dword_568570[v5] = 4; ++v4; } for ( j = "0123456789"; ; ++j ) { v7 = *j; if ( !(_BYTE)v7 ) break; dword_568570[v7] = 4; } for ( k = " \n\t\r"; ; ++k ) { v9 = *k; if ( !(_BYTE)v9 ) break; dword_568570[v9] = 655363; } dword_568664 = 131078; v10 = " \n\t\r"; dword_5685F8 = -1; dword_568668 = 393217; dword_56862C = 131090; dword_568970 = 131075; dword_568570[0] = -1; while ( 1 ) { v11 = *v10; if ( !(_BYTE)v11 ) break; dword_568D78[v11] = 655363; ++v10; } for ( m = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; ; ++m ) { v13 = *m; if ( !(_BYTE)v13 ) break; dword_568D78[v13] = 131077; } dword_568E00 = 131077; v14 = " \n\t\r"; dword_568E14 = 131081; dword_568D78[0] = -1; dword_569178 = -1; while ( 1 ) { v15 = *v14; if ( !(_BYTE)v15 ) break; dword_56816C[v15] = 524291; ++v14; } for ( n = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; ; ++n ) { v17 = *n; if ( !(_BYTE)v17 ) break; dword_56816C[v17] = 4; } for ( ii = "0123456789"; ; ++ii ) { v19 = *ii; if ( !(_BYTE)v19 ) break; dword_56816C[v19] = -1; } dword_56825C = -1; v20 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; dword_5681F4 = 5; dword_568208 = 9; dword_568228 = 18; dword_568264 = 262145; dword_568260 = 6; dword_56816C[0] = -1; dword_56856C = -1; while ( 1 ) { v21 = *v20; if ( !(_BYTE)v21 ) break; dword_56BDA8[v21] = 131076; ++v20; } dword_56BEA0 = 262145; v22 = " \n\t\r"; dword_56C1A8 = -1; dword_568AE4 = 7; dword_56899C = -1; dword_56957C = 5; dword_5691A4 = 655363; dword_5689FC = 262147; dword_568974 = -1; dword_568D74 = 5; dword_569AF4 = 10; dword_5699AC = -1; dword_56A188 = 9; dword_569DB0 = 655363; dword_569A20 = 262147; dword_569984 = -1; dword_569D84 = 9; dword_56CF98 = 23; dword_56D1B8 = 3145732; dword_56D388 = 24; dword_56D5BC = 3145732; while ( 1 ) { v23 = *v22; if ( !(_BYTE)v23 ) break; dword_56D5C0[v23] = 25; ++v22; } dword_56D6B8 = 31; v24 = " \n\t\r"; dword_56D9C0 = 3145732; dword_56DABC = 31; dword_56DA80 = 32; dword_56DDC4 = 25; dword_56F6D8 = 262145; dword_56F9E0 = 1048601; dword_56F2CC = 131098; dword_56F5DC = 31; dword_56DE84 = 27; dword_56E1C8 = (int)&loc_50001E + 1; dword_56E3A8 = 28; dword_56E5CC = (int)&loc_50001E + 1; dword_56E7B0 = 29; dword_56E9D0 = (int)&loc_50001E + 1; dword_56EBA0 = 30; dword_56EDD4 = (int)&loc_50001E + 1; while ( 1 ) { v25 = *v24; if ( !(_BYTE)v25 ) break; dword_56EDD8[v25] = 30; ++v24; } dword_56EED0 = 524289; dword_56F1D8 = -1; dword_566564 = 1; dword_566574 = 2; dword_566584 = 2; dword_5665DC = 3; dword_5665E0 = 3; } } // 566564: using guessed type int dword_566564; // 566574: using guessed type int dword_566574; // 566584: using guessed type int dword_566584; // 5665DC: using guessed type int dword_5665DC; // 5665E0: using guessed type int dword_5665E0; // 567560: using guessed type int WXML::DOMLib::Machine::TT; // 567964: using guessed type int dword_567964; // 567A54: using guessed type int dword_567A54; // 567B50: using guessed type int dword_567B50; // 567D64: using guessed type int dword_567D64; // 567D68: using guessed type int dword_567D68[33]; // 567DEC: using guessed type int dword_567DEC; // 567E24: using guessed type int dword_567E24; // 567F44: using guessed type int dword_567F44; // 568168: using guessed type int dword_568168; // 56816C: using guessed type int dword_56816C[34]; // 5681F4: using guessed type int dword_5681F4; // 568208: using guessed type int dword_568208; // 568228: using guessed type int dword_568228; // 56825C: using guessed type int dword_56825C; // 568260: using guessed type int dword_568260; // 568264: using guessed type int dword_568264; // 56856C: using guessed type int dword_56856C; // 568570: using guessed type int dword_568570[34]; // 5685F8: using guessed type int dword_5685F8; // 56862C: using guessed type int dword_56862C; // 568664: using guessed type int dword_568664; // 568668: using guessed type int dword_568668; // 568970: using guessed type int dword_568970; // 568974: using guessed type int dword_568974; // 56899C: using guessed type int dword_56899C; // 5689FC: using guessed type int dword_5689FC; // 568AE4: using guessed type int dword_568AE4; // 568D74: using guessed type int dword_568D74; // 568D78: using guessed type int dword_568D78[]; // 568E00: using guessed type int dword_568E00; // 568E14: using guessed type int dword_568E14; // 569178: using guessed type int dword_569178; // 5691A4: using guessed type int dword_5691A4; // 56957C: using guessed type int dword_56957C; // 569984: using guessed type int dword_569984; // 5699AC: using guessed type int dword_5699AC; // 569A20: using guessed type int dword_569A20; // 569AF4: using guessed type int dword_569AF4; // 569D84: using guessed type int dword_569D84; // 569DB0: using guessed type int dword_569DB0; // 56A188: using guessed type int dword_56A188; // 56A18C: using guessed type int dword_56A18C; // 56A214: using guessed type int dword_56A214; // 56A2FC: using guessed type int dword_56A2FC; // 56A58C: using guessed type int dword_56A58C; // 56A990: using guessed type int dword_56A990; // 56A994: using guessed type int dword_56A994; // 56AA30: using guessed type int dword_56AA30; // 56AB04: using guessed type int dword_56AB04; // 56AD94: using guessed type int dword_56AD94; // 56B198: using guessed type int dword_56B198; // 56B388: using guessed type int dword_56B388; // 56B59C: using guessed type int dword_56B59C; // 56B5A0: using guessed type int dword_56B5A0; // 56B628: using guessed type int dword_56B628; // 56B63C: using guessed type int dword_56B63C; // 56B794: using guessed type int dword_56B794; // 56B9A0: using guessed type int dword_56B9A0; // 56BB98: using guessed type int dword_56BB98; // 56BDA4: using guessed type int dword_56BDA4; // 56BDA8: using guessed type int dword_56BDA8[62]; // 56BEA0: using guessed type int dword_56BEA0; // 56C1A8: using guessed type int dword_56C1A8; // 56C260: using guessed type int dword_56C260; // 56C5AC: using guessed type int dword_56C5AC; // 56C664: using guessed type int dword_56C664; // 56C9B0: using guessed type int dword_56C9B0; // 56CA68: using guessed type int dword_56CA68; // 56CAAC: using guessed type int dword_56CAAC; // 56CDB4: using guessed type int dword_56CDB4; // 56CF98: using guessed type int dword_56CF98; // 56D1B8: using guessed type int dword_56D1B8; // 56D388: using guessed type int dword_56D388; // 56D5BC: using guessed type int dword_56D5BC; // 56D5C0: using guessed type int dword_56D5C0[62]; // 56D6B8: using guessed type int dword_56D6B8; // 56D9C0: using guessed type int dword_56D9C0; // 56DA80: using guessed type int dword_56DA80; // 56DABC: using guessed type int dword_56DABC; // 56DDC4: using guessed type int dword_56DDC4; // 56DE84: using guessed type int dword_56DE84; // 56E1C8: using guessed type int dword_56E1C8; // 56E3A8: using guessed type int dword_56E3A8; // 56E5CC: using guessed type int dword_56E5CC; // 56E7B0: using guessed type int dword_56E7B0; // 56E9D0: using guessed type int dword_56E9D0; // 56EBA0: using guessed type int dword_56EBA0; // 56EDD4: using guessed type int dword_56EDD4; // 56EDD8: using guessed type int dword_56EDD8[62]; // 56EED0: using guessed type int dword_56EED0; // 56F1D8: using guessed type int dword_56F1D8; // 56F2CC: using guessed type int dword_56F2CC; // 56F5DC: using guessed type int dword_56F5DC; // 56F6D8: using guessed type int dword_56F6D8; // 56F9E0: using guessed type int dword_56F9E0; // 56FA98: using guessed type int dword_56FA98; // 56FDE4: using guessed type int dword_56FDE4; // 56FE9C: using guessed type int dword_56FE9C; // 5701E8: using guessed type int dword_5701E8; // 5806EC: using guessed type int dword_5806EC; // 668560: using guessed type char WXML::DOMLib::Machine::InitTransitTable(void)::bInited; //----- (0042A6F2) -------------------------------------------------------- void __thiscall WXML::DOMLib::Machine::Machine(int this, int a2) { int v2; // [esp+14h] [ebp-44h] *(_DWORD *)(this + 32) = 0; v2 = this + 28; *(_BYTE *)(this + 36) = 0; *(_DWORD *)(this + 28) = this + 36; WXML::DOMLib::Machine::InitTransitTable(); std::string::_M_assign(v2, a2); } //----- (0042A78B) -------------------------------------------------------- int __usercall std::__relocate_a_1>@( int a1@, int a2@, int a3@) { int v6; // ecx _DWORD *v7; // ecx int v8; // ecx while ( a1 != a2 ) { v6 = *(_DWORD *)(a1 + 4); *(_DWORD *)a3 = *(_DWORD *)a1; *(_DWORD *)(a3 + 4) = v6; if ( v6 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v6); *(_DWORD *)(a3 + 8) = *(_DWORD *)(a1 + 8); *(_DWORD *)(a3 + 12) = *(_DWORD *)(a1 + 12); *(_DWORD *)(a3 + 16) = *(_DWORD *)(a1 + 16); *(_DWORD *)(a3 + 20) = *(_DWORD *)(a1 + 20); *(_DWORD *)(a3 + 24) = *(_DWORD *)(a1 + 24); *(_BYTE *)(a3 + 28) = *(_BYTE *)(a1 + 28); std::string::basic_string((_DWORD *)(a3 + 32), (_DWORD *)(a1 + 32)); *(_DWORD *)(a3 + 56) = *(_DWORD *)(a1 + 56); std::string::basic_string((_DWORD *)(a3 + 60), (_DWORD *)(a1 + 60)); v7 = (_DWORD *)(a3 + 88); a3 += 112; *(_BYTE *)(a3 - 28) = *(_BYTE *)(a1 + 84); std::string::basic_string(v7, (_DWORD *)(a1 + 88)); v8 = a1; a1 += 112; WXML::DOMLib::Token::~Token(v8); } return a3; } //----- (0042A82E) -------------------------------------------------------- int __thiscall WXML::DOMLib::Machine::Feed( struct _Unwind_Exception *this, char a2, int a3, unsigned __int8 **a4, int a5, int a6) { struct _Unwind_Exception *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 std::ostream::sentry *v12; // eax std::ostream::sentry *v13; // eax std::ostream::sentry *v14; // eax struct _Unwind_Exception *v15; // ebx unsigned __int8 v16; // cf int v17; // eax int v18; // edx int v19; // edx int v20; // ecx struct _Unwind_Exception *v21; // esi int v22; // eax int v23; // edx int v24; // ebx int v25; // esi int v26; // esi struct _Unwind_Exception *v27; // esi int v28; // eax int v29; // eax int v30; // ecx struct _Unwind_Exception *v31; // esi int v32; // eax int v33; // edx int v34; // ebx int v35; // ecx int v36; // ecx int v37; // ecx int v38; // eax int v39; // eax int v40; // ecx struct _Unwind_Exception *v41; // edx const WXML::DOMLib::Token *v43; // [esp+4h] [ebp-154h] int v44; // [esp+18h] [ebp-140h] int v45; // [esp+1Ch] [ebp-13Ch] signed __int32 v46; // [esp+24h] [ebp-134h] BYREF struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-130h] void *v48[6]; // [esp+68h] [ebp-F0h] BYREF int v49; // [esp+80h] [ebp-D8h] BYREF int v50; // [esp+84h] [ebp-D4h] int v51; // [esp+88h] [ebp-D0h] BYREF int v52; // [esp+8Ch] [ebp-CCh] BYREF int v53; // [esp+90h] [ebp-C8h] int v54; // [esp+94h] [ebp-C4h] int v55; // [esp+98h] [ebp-C0h] char v56; // [esp+9Ch] [ebp-BCh] char *v57; // [esp+A0h] [ebp-B8h] int v58; // [esp+A4h] [ebp-B4h] char v59[16]; // [esp+A8h] [ebp-B0h] BYREF int v60; // [esp+B8h] [ebp-A0h] char *v61; // [esp+BCh] [ebp-9Ch] int v62; // [esp+C0h] [ebp-98h] char v63[16]; // [esp+C4h] [ebp-94h] BYREF char v64; // [esp+D4h] [ebp-84h] char *v65; // [esp+D8h] [ebp-80h] int v66; // [esp+DCh] [ebp-7Ch] char v67[120]; // [esp+E0h] [ebp-78h] BYREF lpuexcpt = this; LOBYTE(v46) = a2; if ( a2 == 10 ) { v6 = lpuexcpt; ++*((_DWORD *)lpuexcpt + 2); *((_DWORD *)v6 + 3) = 0; } // 喂入的字符 v44 = (unsigned __int8)v46; do { v45 = *((_DWORD *)lpuexcpt + 6); v46 = WXML::DOMLib::Machine::TT[257 * v45 + v44]; if ( !v46 ) { v46 = dword_567960[257 * v45]; if ( !v46 ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v49); std::operator<<>((std::ostream::sentry *)&v51, "BAD STATE MACHINE! AT INPUT "); v7 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpt + 6)); v8 = std::operator<<>(v7, " "); std::operator<<>(v8, a2); std::stringbuf::str((int)v48, (int)&v52); LABEL_12: std::string::operator=(a4, (int)v48); std::string::_M_dispose(v48); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v49); return -1; } } if ( v46 < 0 ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v49); v9 = std::operator<<((std::ostream::sentry *)&v51, (int *)lpuexcpt + 7); std::operator<<>(v9, ":"); // inc v10 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpt + 2)); std::operator<<>(v10, ":"); // lineLength v11 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpt + 3)); v12 = std::operator<<>(v11, ": "); if ( a2 ) { v13 = std::operator<<>(v12, "unexpected character `"); v14 = std::operator<<>(v13, a2); std::operator<<>(v14, "`"); } else { std::operator<<>(v12, "unexpected end"); } std::stringbuf::str((int)v48, (int)&v52); goto LABEL_12; } v15 = lpuexcpt; v16 = _bittest(&v46, 0x15u); *((_DWORD *)lpuexcpt + 6) = (unsigned __int16)v46; if ( v16 ) { v17 = *((_DWORD *)v15 + 1); if ( *(_DWORD *)v15 > v17 ) { v53 = *((_DWORD *)v15 + 1); v57 = v59; v61 = v63; v65 = v67; v18 = *((_DWORD *)v15 + 4); *((_DWORD *)v15 + 1) = v17 + 1; v51 = v18; v19 = *((_DWORD *)v15 + 5); v49 = 0; v52 = v19; *((_DWORD *)v15 + 5) = v19 + 1; v50 = 0; v58 = 0; v59[0] = 0; v62 = 0; v63[0] = 0; v66 = 0; v67[0] = 0; v56 = 0; v64 = 0; v60 = -1; v54 = 1; v55 = 0; std::vector::push_back(a3, (WXML::DOMLib::Token *)&v49); WXML::DOMLib::Token::~Token((int)&v49); } } if ( _bittest(&v46, 0x16u) ) { //112 ascii -> 'p' WXML::DOMLib::Token::Token((int)&v49, (WXML::DOMLib::Token *)(*(_DWORD *)(a5 + 4) - 112), v43); v20 = *(_DWORD *)(a5 + 4) - 112; *(_DWORD *)(a5 + 4) = v20; WXML::DOMLib::Token::~Token(v20); v21 = lpuexcpt; *((_DWORD *)lpuexcpt + 4) = v51; *((_DWORD *)v21 + 5) = v52; *((_DWORD *)v21 + 1) = v53; WXML::DOMLib::Token::~Token((int)&v49); } } while ( _bittest(&v46, 0x14u) ); if ( _bittest(&v46, 0x11u) ) { v22 = *(_DWORD *)lpuexcpt; v23 = *((_DWORD *)lpuexcpt + 1); // offset_1 < offset_0 if ( v23 < *(_DWORD *)lpuexcpt ) { // lineLength v24 = *((_DWORD *)lpuexcpt + 3); v49 = 0; v57 = v59; v61 = v63; v65 = v67; v50 = 0; v25 = *((_DWORD *)lpuexcpt + 4); v67[0] = 0; v58 = 0; v51 = v25; v59[0] = 0; v26 = *((_DWORD *)lpuexcpt + 5); v63[0] = 0; v62 = 0; v52 = v26; v66 = 0; v54 = v22 - v23; v27 = lpuexcpt; v56 = 0; *((_DWORD *)lpuexcpt + 1) = v22; v28 = *((_DWORD *)v27 + 2); *((_DWORD *)v27 + 5) = v24; *((_DWORD *)v27 + 4) = v28; v64 = 0; // v45 offset_6 v29 = WXML::DOMLib::Machine::STT[v45]; v53 = v23; v60 = -1; v55 = v29; if ( v29 == 3 ) v30 = a5; else v30 = a3; std::vector::push_back(v30, (WXML::DOMLib::Token *)&v49); WXML::DOMLib::Token::~Token((int)&v49); } } // this v31 = lpuexcpt; v32 = *(_DWORD *)lpuexcpt + 1; v33 = *((_DWORD *)lpuexcpt + 3) + 1; v16 = _bittest(&v46, 0x12u); *(_DWORD *)lpuexcpt = v32; *((_DWORD *)v31 + 3) = v33; if ( v16 ) { v34 = v32; v67[0] = 0; v57 = v59; v61 = v63; v65 = v67; // offset_4 v35 = *((_DWORD *)v31 + 4); v49 = 0; v51 = v35; // offset_5 v36 = *((_DWORD *)v31 + 5); v50 = 0; v52 = v36; v37 = *((_DWORD *)v31 + 1); // offset_1 *((_DWORD *)v31 + 1) = v32; v38 = *((_DWORD *)v31 + 2); // offset_5 *((_DWORD *)v31 + 5) = v33; // offset_4 *((_DWORD *)v31 + 4) = v38; v58 = 0; v39 = WXML::DOMLib::Machine::STT[v45]; v59[0] = 0; v62 = 0; v55 = v39; v63[0] = 0; v66 = 0; v56 = 0; v64 = 0; v60 = -1; v53 = v37; v54 = v34 - v37; if ( v39 == 3 ) v40 = a5; else v40 = a3; std::vector::push_back(v40, (WXML::DOMLib::Token *)&v49); WXML::DOMLib::Token::~Token((int)&v49); } v46 &= 0x80000u; if ( v46 ) { v41 = lpuexcpt; v46 = 0; *((_DWORD *)lpuexcpt + 1) = *(_DWORD *)lpuexcpt; *((_DWORD *)v41 + 5) = *((_DWORD *)v41 + 3); } return v46; } // 42AC48: variable 'v43' is possibly undefined // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 566560: using guessed type int WXML::DOMLib::Machine::STT[]; // 567560: using guessed type int WXML::DOMLib::Machine::TT[]; // 567960: using guessed type int dword_567960[]; //----- (0042AF82) -------------------------------------------------------- void __thiscall std::__shared_ptr::operator=(_DWORD *this, _DWORD *a2) { int v2; // esi volatile signed __int32 *v4; // ecx v2 = a2[1]; *this = *a2; if ( v2 != this[1] ) { if ( v2 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v2); v4 = (volatile signed __int32 *)this[1]; if ( v4 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v4); this[1] = v2; } } //----- (0042AFB8) -------------------------------------------------------- int __thiscall WXML::DOMLib::Tokenizer::GetTokens(_DWORD *this, _DWORD *a2, int a3, _DWORD *a4) { struct _Unwind_Exception *v5; // ecx unsigned int v6; // ebx unsigned int v7; // edx int v8; // eax unsigned int v9; // edi int v10; // eax int v11; // eax unsigned int v13; // [esp+28h] [ebp-20h] struct _Unwind_Exception *v14; // [esp+2Ch] [ebp-1Ch] int v15; // [esp+2Ch] [ebp-1Ch] WXML::DOMLib::Machine::Reset(this + 2); if ( *this ) { v7 = 0; v6 = 0; while ( *(_DWORD *)(*this + 4) > v7 ) { if ( v6 ) return v6; v13 = v7; v14 = v5; v8 = WXML::DOMLib::Machine::Feed( v5, *(_BYTE *)(*(_DWORD *)*this + v7), (int)a2, (unsigned __int8 **)a3, (int)a4, 0); v5 = v14; v6 = v8; v7 = v13 + 1; } if ( !v6 ) { v9 = 0; v15 = WXML::DOMLib::Machine::Feed(v5, 0, (int)a2, (unsigned __int8 **)a3, (int)a4, 0); while ( -1227133513 * ((a2[1] - *a2) >> 4) > v9 ) { v10 = 112 * v9++; std::__shared_ptr::operator=((_DWORD *)(v10 + *a2), this); } while ( -1227133513 * ((a4[1] - *a4) >> 4) > v6 ) { v11 = 112 * v6++; std::__shared_ptr::operator=((_DWORD *)(v11 + *a4), this); } return v15; } } else { v6 = -1; std::string::_M_replace( (unsigned int *)a3, 0, *(_DWORD *)(a3 + 4), "FATAL: no source was set or failed to allocate space for input source", 0x45u); } return v6; } // 42B035: variable 'v5' is possibly undefined //----- (0042B0EE) -------------------------------------------------------- void __thiscall WXML::DOMLib::Tokenizer::Tokenizer(_DWORD *this, char *Str, int a3) { size_t v3; // eax unsigned int v4; // eax volatile signed __int32 *v5; // eax int v6; // edx struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-58h] _BYTE **Block; // [esp+18h] [ebp-50h] int v10; // [esp+50h] [ebp-18h] BYREF volatile signed __int32 *v11; // [esp+54h] [ebp-14h] BYREF _BYTE *v12; // [esp+58h] [ebp-10h] BYREF volatile signed __int32 *v13; // [esp+5Ch] [ebp-Ch] BYREF *this = 0; this[1] = 0; WXML::DOMLib::Machine::Machine((int)(this + 2), a3); Block = (_BYTE **)operator new(0x18u); v3 = strlen(Str) + 1; v12 = (_BYTE *)v3; *Block = Block + 2; lpuexcpt = (struct _Unwind_Exception *)&Str[v3]; if ( v3 > 0xF ) { *Block = std::string::_M_create((unsigned int *)&v12, 0); Block[2] = v12; } std::string::_S_copy_chars(*Block, (unsigned __int8 *)Str, (size_t)lpuexcpt); v4 = (unsigned int)v12; Block[1] = v12; (*Block)[v4] = 0; v11 = 0; v12 = Block; v13 = 0; v5 = (volatile signed __int32 *)operator new(0x10u); *((_DWORD *)v5 + 1) = 1; *((_DWORD *)v5 + 2) = 1; *((_DWORD *)v5 + 3) = Block; v6 = (int)v12; *v5 = (volatile signed __int32)&off_5603EC; v10 = v6; v12 = 0; v13 = v11; v11 = v5; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v13); std::__shared_ptr::operator=(this, &v10); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v11); } // 5603EC: using guessed type int (*off_5603EC)(); //----- (0042B2F0) -------------------------------------------------------- void __tcf_1_4(void) { std::ios_base::Init::~Init(); } //----- (0042B2FA) -------------------------------------------------------- _DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2) { return std::string::_M_append(this, *(_BYTE **)a2, *(_DWORD *)(a2 + 4)); } //----- (0042B31A) -------------------------------------------------------- _DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str) { unsigned int v2; // eax v2 = strlen(Str); if ( v2 > 0x3FFFFFFF - this[1] ) std::__throw_length_error((std::length_error *)"basic_string::append"); return std::string::_M_append(this, Str, v2); } //----- (0042B360) -------------------------------------------------------- unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) { size_t v2; // eax v2 = strlen(Str); return std::string::_M_replace(this, 0, this[1], Str, v2); } //----- (0042B39D) -------------------------------------------------------- std::ostream::sentry *__usercall std::operator<<>@( std::ostream::sentry *a1@, char a2@
) { int v3[3]; // [esp+1Ch] [ebp-Ch] BYREF LOBYTE(v3[0]) = a2; return std::__ostream_insert>(a1, (int)v3, 1); } // 42B39D: using guessed type int var_C[3]; //----- (0042B3C0) -------------------------------------------------------- size_t __thiscall std::string::basic_string(void **this, char *Str) { char *v3; // edi size_t result; // eax _BYTE *v5; // edx size_t v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v6[0] = strlen(Str); v3 = &Str[v6[0]]; if ( v6[0] > 0xF ) { *this = std::string::_M_create(v6, 0); this[2] = (void *)v6[0]; } std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); result = v6[0]; v5 = *this; this[1] = (void *)v6[0]; v5[result] = 0; return result; } // 42B3C0: using guessed type size_t var_1C[7]; //----- (0042B43D) -------------------------------------------------------- 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_5542FA; goto LABEL_8; } v10 = (std::ostream::sentry *)(a1 + 8); v11 = (char *)WXML::EXPRLib::OPShort::CS_GLOBAL; return std::operator<<>(v10, v11); } // 53E154: using guessed type void *WXML::EXPRLib::OPShort::CS_GLOBAL; //----- (0042B518) -------------------------------------------------------- int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(int *this, int a2, int a3, _BYTE *a4) { char *Literal; // eax std::ostream::sentry *v5; // eax const char *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 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 char *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; // 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 char *v33; // [esp+4h] [ebp-74h] int v34; // [esp+4h] [ebp-74h] _BYTE *v35; // [esp+8h] [ebp-70h] std::ostream::sentry *v36; // [esp+10h] [ebp-68h] std::ostream::sentry *v37; // [esp+10h] [ebp-68h] std::ostream::sentry *i; // [esp+10h] [ebp-68h] std::ostream::sentry *j; // [esp+10h] [ebp-68h] std::ostream::sentry *v40; // [esp+10h] [ebp-68h] std::ostream::sentry *k; // [esp+10h] [ebp-68h] std::ostream::sentry *m; // [esp+10h] [ebp-68h] std::ostream::sentry *n; // [esp+10h] [ebp-68h] WXML::EXPRLib::Token *v44; // [esp+14h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] void *v47[8]; // [esp+58h] [ebp-20h] BYREF v36 = (std::ostream::sentry *)*this; v44 = (WXML::EXPRLib::Token *)(a2 + 8); std::operator<<>((std::ostream::sentry *)(a2 + 8), (char *)&off_5542FA[2]); if ( *(_BYTE *)v36 == 36 ) { v37 = (std::ostream::sentry *)(this + 6); if ( std::operator==((int)this, "$VAR") ) { Literal = (char *)WXML::EXPRLib::Token::GetLiteral(this + 6); std::string::basic_string(v47, Literal); WXML::EXPRLib::OutputAsStringOrKeyWord(a2, (int *)v47, a3, a4); std::string::_M_dispose(v47); } else if ( std::operator==((int)this, "$STRING") ) { v5 = std::operator<<>(v44, WXML::EXPRLib::OPShort::CONST); std::operator<<>(v5, ",'"); lpuexcpta = (struct _Unwind_Exception *)(*(_DWORD *)(this[9] + 4) - 2); v6 = WXML::EXPRLib::Token::GetLiteral(v37); WXML::Rewrite::ToStringCode((int)(v6 + 1), (int)lpuexcpta, a2); std::operator<<>(v44, (char *)off_5542FA); } else { v7 = std::operator<<>(v44, WXML::EXPRLib::OPShort::CONST); std::operator<<>(v7, ","); v33 = (char *)WXML::EXPRLib::Token::GetLiteral(v37); std::operator<<>(v44, v33); } goto LABEL_46; } if ( *(_BYTE *)v36 == 79 && *((_BYTE *)v36 + 1) == 80 && *((_BYTE *)v36 + 2) == 95 ) { if ( std::operator==((int)this, "OP_PATH") ) { if ( this[14] - this[13] != 8 ) goto LABEL_46; v8 = std::operator<<>(v44, (char *)&off_5542FA[2]); v9 = std::operator<<>(v8, WXML::EXPRLib::OPShort::GET_FROM_ENV); std::operator<<>(v9, "],"); v35 = a4; v34 = a3; LABEL_16: WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, v34, v35); goto LABEL_46; } if ( std::operator==((int)this, "OP_LIST") ) { v10 = std::operator<<>(v44, (char *)&off_5542FA[2]); v11 = std::operator<<>(v10, WXML::EXPRLib::OPShort::MAKE_LIST); std::operator<<>(v11, "]"); std::operator<<>(v44, ","); if ( this[13] == this[14] ) goto LABEL_46; goto LABEL_15; } if ( std::operator==((int)this, "OP_LIST_CONCAT") ) { v12 = std::operator<<>(v44, (char *)&off_5542FA[2]); v13 = std::operator<<>(v12, WXML::EXPRLib::OPShort::CON_LIST); std::operator<<>(v13, "]"); for ( i = 0; (this[14] - this[13]) >> 3 > (unsigned int)i; i = (std::ostream::sentry *)((char *)i + 1) ) { std::operator<<>(v44, ","); WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); } } else if ( std::operator==((int)this, "OP_DICT_CONCAT") ) { v14 = std::operator<<>(v44, (char *)&off_5542FA[2]); v15 = std::operator<<>(v14, WXML::EXPRLib::OPShort::UNION_KV); std::operator<<>(v15, "]"); for ( j = 0; (this[14] - this[13]) >> 3 > (unsigned int)j; j = (std::ostream::sentry *)((char *)j + 1) ) { std::operator<<>(v44, ","); WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); } } else if ( std::operator==((int)this, "OP_MAKE_DICT") ) { v16 = std::operator<<>(v44, (char *)&off_5542FA[2]); v17 = std::operator<<>(v16, WXML::EXPRLib::OPShort::MAKE_KV); std::operator<<>(v17, "],"); v40 = std::operator<<>(v44, (char *)off_5542FA); v18 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); v19 = std::operator<<>(v40, v18); std::operator<<>(v19, "',"); if ( (unsigned int)(this[14] - this[13]) <= 8 ) { std::operator<<>(v44, (char *)&off_5542FA[2]); std::operator<<>(v44, "[7],"); WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); std::operator<<>(v44, "]"); } else { WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); } } else { if ( std::operator==((int)this, "OP_EXPAND") ) { v20 = std::operator<<>(v44, (char *)&off_5542FA[2]); v21 = std::operator<<>(v20, WXML::EXPRLib::OPShort::EX_DICT); std::operator<<>(v21, "],"); LABEL_15: v35 = a4; v34 = a3; goto LABEL_16; } if ( std::operator==((int)this, "OP_DICT") ) { v22 = std::operator<<>(v44, (char *)&off_5542FA[2]); v23 = std::operator<<>(v22, WXML::EXPRLib::OPShort::GET_NAME); std::operator<<>(v23, "]"); for ( k = 0; (this[14] - this[13]) >> 3 > (unsigned int)k; k = (std::ostream::sentry *)((char *)k + 1) ) { std::operator<<>(v44, ","); WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); } } else if ( std::operator==((int)this, "OP_FUNC") ) { v24 = std::operator<<>(v44, (char *)&off_5542FA[2]); v25 = std::operator<<>(v24, WXML::EXPRLib::OPShort::DO_FUNC); std::operator<<>(v25, "]"); for ( m = 0; (this[14] - this[13]) >> 3 > (unsigned int)m; m = (std::ostream::sentry *)((char *)m + 1) ) { std::operator<<>(v44, ","); WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); } } } } else { v26 = std::operator<<>(v44, (char *)&off_5542FA[2]); v27 = std::operator<<>(v26, WXML::EXPRLib::OPShort::AOP); v28 = std::operator<<>(v27, ","); v29 = std::operator<<>(v28, (char *)off_5542FA); v30 = std::operator<<(v29, this); v31 = std::operator<<>(v30, (char *)off_5542FA); std::operator<<>(v31, "]"); std::operator<<>(v44, ","); for ( n = 0; (this[14] - this[13]) >> 3 > (unsigned int)n; n = (std::ostream::sentry *)((char *)n + 1) ) { if ( n ) std::operator<<>(v44, ","); WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); } } LABEL_46: std::operator<<>(v44, "]"); return 0; } //----- (0042BD94) -------------------------------------------------------- bool __usercall __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>@( char **a1@, int a2@) { return std::operator==(a2, *a1); } //----- (0042BDAA) -------------------------------------------------------- void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(int *this, int a2) { *this = a2; if ( a2 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(a2); } //----- (0042BDC4) -------------------------------------------------------- void __fastcall WXML::EXPRLib::ExprSyntaxTree::~ExprSyntaxTree(int a1) { int v2; // edi int i; // esi volatile signed __int32 **v4; // ecx v2 = *(_DWORD *)(a1 + 56); for ( i = *(_DWORD *)(a1 + 52); v2 != i; i += 8 ) { v4 = (volatile signed __int32 **)(i + 4); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); } if ( *(_DWORD *)(a1 + 52) ) operator delete(*(void **)(a1 + 52)); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 40)); std::string::_M_dispose((void **)a1); } //----- (0042BE0C) -------------------------------------------------------- void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, int a2) { if ( *this != (volatile signed __int32 *)a2 ) { if ( a2 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(a2); if ( *this ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(*this); *this = (volatile signed __int32 *)a2; } } //----- (0042BE38) -------------------------------------------------------- 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 *v9; // eax char v10; // dl 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 char v16; // dl 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 char *Literal; // 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 char *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 std::ostream::sentry *v37; // eax std::ostream::sentry *v38; // eax const char *v39; // eax std::ostream::sentry *v40; // eax std::ostream::sentry *v41; // eax std::ostream::sentry *v42; // eax std::ostream::sentry *v43; // eax int v44; // edx char *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; // eax char *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 int v57; // edx std::ostream::sentry *v58; // eax std::ostream::sentry *v59; // eax std::ostream::sentry *v60; // eax std::ostream::sentry *v61; // eax int v62; // edx std::ostream::sentry *v63; // eax char *v64; // eax std::ostream::sentry *v65; // eax std::ostream::sentry *v66; // eax char *v67; // eax std::ostream::sentry *v68; // eax std::ostream::sentry *v69; // eax std::ostream::sentry *v70; // eax char *v71; // eax std::ostream::sentry *v72; // eax std::ostream::sentry *v73; // eax std::ostream::sentry *v74; // eax char *v75; // eax std::ostream::sentry *v76; // eax char *v77; // eax std::ostream::sentry *v78; // eax char *v79; // eax std::ostream::sentry *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 int *v120; // ecx 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 int 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 char *v160; // [esp+4h] [ebp-C4h] char *v161; // [esp+4h] [ebp-C4h] std::ostream::sentry *v162; // [esp+28h] [ebp-A0h] std::ostream::sentry *v163; // [esp+2Ch] [ebp-9Ch] std::ostream::sentry *v164; // [esp+2Ch] [ebp-9Ch] const char *v165; // [esp+30h] [ebp-98h] std::ostream::sentry *v166; // [esp+30h] [ebp-98h] std::ostream::sentry *v167; // [esp+30h] [ebp-98h] std::ostream::sentry *v168; // [esp+30h] [ebp-98h] std::ostream::sentry *v169; // [esp+30h] [ebp-98h] std::ostream::sentry *v170; // [esp+30h] [ebp-98h] std::ostream::sentry *v171; // [esp+30h] [ebp-98h] std::ostream::sentry *v172; // [esp+30h] [ebp-98h] std::ostream::sentry *v173; // [esp+30h] [ebp-98h] std::ostream::sentry *v174; // [esp+34h] [ebp-94h] std::ostream::sentry *i; // [esp+34h] [ebp-94h] std::ostream::sentry *j; // [esp+34h] [ebp-94h] char *Str1a; // [esp+38h] [ebp-90h] std::ostream::sentry *Str1b; // [esp+38h] [ebp-90h] std::ostream::sentry *Str1c; // [esp+38h] [ebp-90h] char *Str1d; // [esp+38h] [ebp-90h] char *Str1e; // [esp+38h] [ebp-90h] int v183[2]; // [esp+78h] [ebp-50h] BYREF char v184; // [esp+80h] [ebp-48h] BYREF int v185; // [esp+90h] [ebp-38h] BYREF int v186; // [esp+94h] [ebp-34h] char v187[16]; // [esp+98h] [ebp-30h] BYREF int v188; // [esp+A8h] [ebp-20h] BYREF int v189; // [esp+ACh] [ebp-1Ch] char v190[24]; // [esp+B0h] [ebp-18h] BYREF v9 = (_BYTE *)*this; v10 = *(_BYTE *)*this; if ( v10 == 36 ) { v163 = (std::ostream::sentry *)(this + 6); v174 = (WXML::EXPRLib::Token *)((char *)a2 + 8); if ( std::operator==((int)this, "$VAR") ) { Str1a = (char *)WXML::EXPRLib::Token::GetLiteral(v163); if ( !strcmp(Str1a, "true") ) { v11 = std::operator<<>(v174, "var "); v12 = std::operator<<(v11, a3); v13 = std::operator<<>(v12, "=true"); LABEL_7: v16 = a8; LABEL_8: std::operator<<>(v13, v16); return 0; } if ( !strcmp(Str1a, "false") ) { v14 = std::operator<<>(v174, "var "); v15 = std::operator<<(v14, a3); v13 = std::operator<<>(v15, "=false"); goto LABEL_7; } if ( !strcmp(Str1a, "$global") ) { v17 = std::operator<<>(v174, "var "); v18 = std::operator<<(v17, a3); v19 = std::operator<<>(v18, "="); v13 = std::operator<<(v19, a6); goto LABEL_7; } v20 = std::operator<<>(v174, "var "); v21 = std::operator<<(v20, a3); std::operator<<>(v21, a8); v22 = std::operator<<>(v174, "if(typeof("); v23 = std::operator<<(v22, a5); Str1b = std::operator<<>(v23, "."); Literal = (char *)WXML::EXPRLib::Token::GetLiteral(v163); v25 = std::operator<<>(Str1b, Literal); v26 = std::operator<<>(v25, ")!='undefined')"); v27 = std::operator<<(v26, a3); v28 = std::operator<<>(v27, "="); v29 = std::operator<<(v28, a5); Str1c = std::operator<<>(v29, "."); v30 = (char *)WXML::EXPRLib::Token::GetLiteral(v163); v31 = std::operator<<>(Str1c, v30); std::operator<<>(v31, a8); v32 = std::operator<<>(v174, "else "); v33 = std::operator<<(v32, a3); v34 = std::operator<<>(v33, "="); v35 = std::operator<<(v34, a4); v36 = std::operator<<>(v35, "."); } else { if ( std::operator==((int)this, "$STRING") ) { v37 = std::operator<<>(v174, "var "); v38 = std::operator<<(v37, a3); std::operator<<>(v38, "=\""); Str1d = (char *)(*(_DWORD *)(this[9] + 4) - 2); v39 = WXML::EXPRLib::Token::GetLiteral(v163); WXML::Rewrite::ToStringCode((int)(v39 + 1), (int)Str1d, (int)a2); v13 = std::operator<<>(v174, "\""); goto LABEL_7; } v40 = std::operator<<>(v174, "var "); v41 = std::operator<<(v40, a3); v36 = std::operator<<>(v41, "="); } Str1e = (char *)v36; v160 = (char *)WXML::EXPRLib::Token::GetLiteral(v163); v13 = std::operator<<>((std::ostream::sentry *)Str1e, v160); goto LABEL_7; } if ( v10 != 79 || v9[1] != 80 || v9[2] != 95 ) { if ( std::operator==((int)this, "?:") ) { v183[1] = 0; v183[0] = (int)&v184; v184 = 0; WXML::NameAllocator::GetNextName(a7, (int)v183); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)v183, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v106 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v107 = std::operator<<(v106, a3); std::endl>(v107); v108 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "if("); v109 = std::operator<<(v108, v183); v110 = std::operator<<>(v109, "){"); std::operator<<>(v110, a8); v186 = 0; v185 = (int)v187; v187[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v185); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v111 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v112 = std::operator<<>(v111, "="); v113 = std::operator<<(v112, &v185); v114 = std::operator<<>(v113, "}"); std::operator<<>(v114, a8); v115 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "else{"); std::operator<<>(v115, a8); v189 = 0; v188 = (int)v190; v190[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v188); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v116 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v117 = std::operator<<>(v116, "="); v118 = std::operator<<(v117, &v188); v119 = std::operator<<>(v118, "}"); std::operator<<>(v119, a8); std::string::_M_dispose((void **)&v188); std::string::_M_dispose((void **)&v185); v120 = v183; LABEL_81: std::string::_M_dispose((void **)v120); return 0; } if ( std::operator==((int)this, "&&") ) { v186 = 0; v185 = (int)v187; v187[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v185); v188 = (int)v190; v189 = 0; v190[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v188); v121 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v122 = std::operator<<(v121, a3); std::endl>(v122); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v123 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "if(!"); v124 = std::operator<<(v123, &v185); v125 = std::operator<<>(v124, ")"); v126 = std::operator<<(v125, a3); v127 = std::operator<<>(v126, "="); v128 = std::operator<<(v127, &v185); std::operator<<>(v128, a8); v129 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "else{"); std::operator<<>(v129, a8); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v130 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v131 = std::operator<<>(v130, "="); v132 = std::operator<<(v131, &v188); v133 = std::operator<<>(v132, "}"); std::operator<<>(v133, a8); } else if ( std::operator==((int)this, "||") ) { v186 = 0; v185 = (int)v187; v187[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v185); v188 = (int)v190; v189 = 0; v190[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v188); v134 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v135 = std::operator<<(v134, a3); std::endl>(v135); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v136 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "if("); v137 = std::operator<<(v136, &v185); v138 = std::operator<<>(v137, ")"); v139 = std::operator<<(v138, a3); v140 = std::operator<<>(v139, "="); v141 = std::operator<<(v140, &v185); std::operator<<>(v141, a8); v142 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "else{"); std::operator<<>(v142, a8); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v143 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v144 = std::operator<<>(v143, "="); v145 = std::operator<<(v144, &v188); v146 = std::operator<<>(v145, "}"); std::operator<<>(v146, a8); } else { v147 = this[14] - this[13]; if ( v147 != 16 ) { if ( v147 != 8 ) return 0; v189 = 0; v188 = (int)v190; v190[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v188); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v154 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v155 = std::operator<<(v154, a3); v156 = std::operator<<>(v155, "="); v157 = std::operator<<(v156, this); v158 = std::operator<<(v157, &v188); std::operator<<>(v158, a8); goto LABEL_80; } v186 = 0; v185 = (int)v187; v187[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v185); v188 = (int)v190; v189 = 0; v190[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v188); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v148 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v149 = std::operator<<(v148, a3); v150 = std::operator<<>(v149, "="); v151 = std::operator<<(v150, &v185); v152 = std::operator<<(v151, this); v153 = std::operator<<(v152, &v188); std::operator<<>(v153, a8); } LABEL_76: std::string::_M_dispose((void **)&v188); LABEL_77: v120 = &v185; goto LABEL_81; } if ( v9[3] == 80 && v9[4] == 65 ) { if ( a3[1] ) { v42 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v43 = std::operator<<(v42, a3); std::operator<<>(v43, "="); } v44 = this[13]; if ( this[14] - v44 == 8 ) { v165 = WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)v44 + 24)); v164 = (WXML::EXPRLib::Token *)((char *)a2 + 8); if ( !strcmp(v165, "true") ) { std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "true"); LABEL_35: if ( !a3[1] ) return 0; v16 = a8; v13 = (WXML::EXPRLib::Token *)((char *)a2 + 8); goto LABEL_8; } if ( !strcmp(v165, "false") ) { std::operator<<>(v164, "false"); goto LABEL_35; } if ( !strcmp(v165, "$global") ) { std::operator<<(v164, a6); goto LABEL_35; } } if ( a9 ) { v166 = *(std::ostream::sentry **)(a9 + 4); v188 = (int)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); if ( v166 == (std::ostream::sentry *)std::find<__gnu_cxx::__normal_iterator>,char const*>( *(_DWORD *)a9, *(_DWORD *)(a9 + 4), (char **)&v188) ) { v45 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); std::string::basic_string((void **)&v188, v45); std::vector::emplace_back((void **)a9, &v188); std::string::_M_dispose((void **)&v188); } } v46 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "_s("); v47 = std::operator<<(v46, a5); v48 = std::operator<<>(v47, ","); v49 = std::operator<<(v48, a4); v50 = std::operator<<>(v49, ","); v167 = std::operator<<>(v50, (char *)off_5542FA); v51 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); v52 = std::operator<<>(v167, v51); v53 = std::operator<<>(v52, "')"); std::operator<<>(v53, a8); goto LABEL_35; } if ( !std::operator==((int)this, "OP_LIST") ) { if ( std::operator==((int)this, "OP_LIST_CONCAT") ) { for ( i = 0; ; i = (std::ostream::sentry *)((char *)i + 1) ) { v57 = this[13]; if ( (unsigned int)i >= (this[14] - v57) >> 3 ) break; if ( std::operator==(*(_DWORD *)(v57 + 8 * (_DWORD)i), "OP_LIST_CONCAT") ) { WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)a3, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); } else { v189 = 0; v188 = (int)v190; v190[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v188); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v58 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v59 = std::operator<<>(v58, ".push("); v60 = std::operator<<(v59, &v188); v61 = std::operator<<>(v60, ")"); std::operator<<>(v61, a8); std::string::_M_dispose((void **)&v188); } } return 0; } if ( std::operator==((int)this, "OP_DICT_CONCAT") ) { for ( j = 0; ; j = (std::ostream::sentry *)((char *)j + 1) ) { v62 = this[13]; if ( (unsigned int)j >= (this[14] - v62) >> 3 ) break; if ( std::operator==(*(_DWORD *)(v62 + 8 * (_DWORD)j), "$VAR") ) { v63 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v162 = std::operator<<>(v63, "[\""); v64 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * (_DWORD)j) + 24)); v65 = std::operator<<>(v162, v64); std::operator<<>(v65, "\"]="); v66 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a5); v168 = std::operator<<>(v66, "."); v67 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * (_DWORD)j) + 24)); v68 = std::operator<<>(v168, v67); v69 = std::operator<<>(v68, "?"); v70 = std::operator<<(v69, a5); v169 = std::operator<<>(v70, "."); v71 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * (_DWORD)j) + 24)); v72 = std::operator<<>(v169, v71); v73 = std::operator<<>(v72, ":"); v74 = std::operator<<(v73, a4); v170 = std::operator<<>(v74, "."); v75 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * (_DWORD)j) + 24)); v76 = std::operator<<>(v170, v75); std::operator<<>(v76, 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") ) { v186 = 0; v185 = (int)v187; v187[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v185); if ( (unsigned int)(this[14] - this[13]) <= 8 ) { WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); if ( a9 ) { v171 = *(std::ostream::sentry **)(a9 + 4); v188 = (int)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); if ( v171 == (std::ostream::sentry *)std::find<__gnu_cxx::__normal_iterator>,char const*>( *(_DWORD *)a9, *(_DWORD *)(a9 + 4), (char **)&v188) ) { v77 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); std::string::basic_string((void **)&v188, v77); std::vector::emplace_back((void **)a9, &v188); std::string::_M_dispose((void **)&v188); } } } else { WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); } v78 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); v172 = std::operator<<>(v78, "[\""); v79 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); v80 = std::operator<<>(v172, v79); v81 = std::operator<<>(v80, "\"]="); v82 = std::operator<<(v81, &v185); std::operator<<>(v82, a8); goto LABEL_77; } if ( std::operator==((int)this, "OP_EXPAND") ) { v189 = 0; v188 = (int)v190; v190[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v188); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v83 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "{var ks=Object.keys("); v84 = std::operator<<(v83, &v188); std::operator<<>(v84, "||{});"); v85 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "for(var k in ks){"); v86 = std::operator<<(v85, a3); v87 = std::operator<<>(v86, "[ks[k]]="); v88 = std::operator<<(v87, &v188); v89 = std::operator<<>(v88, "[ks[k]]}}"); std::endl>(v89); LABEL_80: v120 = &v188; goto LABEL_81; } if ( !std::operator==((int)this, "OP_DICT") ) return 0; v186 = 0; v185 = (int)v187; v187[0] = 0; v188 = (int)v190; v189 = 0; v190[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v185); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); if ( std::operator==(*(_DWORD *)(this[13] + 8), "$VAR") ) { v90 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v91 = std::operator<<(v90, a3); v92 = std::operator<<>(v91, "="); v93 = std::operator<<(v92, &v185); v94 = std::operator<<>(v93, "?"); v95 = std::operator<<(v94, &v185); v173 = std::operator<<>(v95, "."); v161 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8) + 24)); v96 = std::operator<<>(v173, v161); } else { WXML::NameAllocator::GetNextName(a7, (int)&v188); WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); v97 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v98 = std::operator<<(v97, a3); v99 = std::operator<<>(v98, "="); v100 = std::operator<<(v99, &v185); v101 = std::operator<<>(v100, "?"); v102 = std::operator<<(v101, &v185); v103 = std::operator<<>(v102, (char *)&off_5542FA[2]); v104 = std::operator<<(v103, &v188); v96 = std::operator<<>(v104, "]"); } v105 = std::operator<<>(v96, ":undefined"); std::operator<<>(v105, a8); goto LABEL_76; } v54 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); v55 = std::operator<<(v54, a3); v56 = std::operator<<>(v55, (char *)off_5543FC); std::operator<<>(v56, 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; } //----- (0042DA5C) -------------------------------------------------------- void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::_Destroy_aux::__destroy(*(void ***)(a1 + 40), *(char ***)(a1 + 44)); if ( *(_DWORD *)(a1 + 40) ) operator delete(*(void **)(a1 + 40)); std::string::_M_dispose((void **)(a1 + 16)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (0042DAB6) -------------------------------------------------------- int __thiscall WXML::EXPRLib::Parser::Parse(int this, char **a2, int a3, int a4, int a5, unsigned int *a6, char a7) { const WXML::EXPRLib::Token *v7; // edx _DWORD *v8; // edi volatile signed __int32 **v9; // ecx const WXML::EXPRLib::Token *v10; // edx _DWORD *v11; // edi _DWORD *v12; // eax int v13; // eax int v14; // ecx int v15; // eax char *TokenName; // eax int i; // eax char *v18; // eax volatile signed __int32 **v19; // ecx int *v20; // eax int *v21; // eax _DWORD *v22; // edi int *v23; // eax int *v24; // edx char *v25; // eax bool v26; // zf _DWORD *v27; // eax _DWORD *v28; // edx _DWORD *v29; // eax char *v30; // eax _DWORD *v31; // eax char *v32; // eax char *Literal; // eax char *v34; // eax _DWORD *v35; // eax int v36; // ecx int *v37; // eax int v38; // edx int v39; // eax WXML::EXPRLib::TransitTable *v41; // [esp+0h] [ebp-118h] int v42; // [esp+0h] [ebp-118h] const WXML::EXPRLib::Token *v43; // [esp+4h] [ebp-114h] const WXML::EXPRLib::Token *v44; // [esp+4h] [ebp-114h] int v45; // [esp+10h] [ebp-108h] _DWORD *v46; // [esp+10h] [ebp-108h] int v47; // [esp+14h] [ebp-104h] _DWORD *v48; // [esp+14h] [ebp-104h] unsigned int v49; // [esp+18h] [ebp-100h] _DWORD *v50; // [esp+1Ch] [ebp-FCh] int *v51; // [esp+1Ch] [ebp-FCh] _DWORD *v52; // [esp+1Ch] [ebp-FCh] char *v53; // [esp+1Ch] [ebp-FCh] int Tokens; // [esp+20h] [ebp-F8h] void *Blockh; // [esp+24h] [ebp-F4h] _DWORD *Block; // [esp+24h] [ebp-F4h] _DWORD *Blocka; // [esp+24h] [ebp-F4h] _DWORD *Blocki; // [esp+24h] [ebp-F4h] int **Blockb; // [esp+24h] [ebp-F4h] char *Blockc; // [esp+24h] [ebp-F4h] volatile signed __int32 **Blockd; // [esp+24h] [ebp-F4h] _DWORD *Blockj; // [esp+24h] [ebp-F4h] _DWORD *Blocke; // [esp+24h] [ebp-F4h] bool Blockf; // [esp+24h] [ebp-F4h] int Blockg; // [esp+24h] [ebp-F4h] int v67; // [esp+68h] [ebp-B0h] BYREF void *v68; // [esp+6Ch] [ebp-ACh] BYREF volatile signed __int32 *v69; // [esp+70h] [ebp-A8h] BYREF _DWORD *v70; // [esp+74h] [ebp-A4h] BYREF volatile signed __int32 *v71; // [esp+78h] [ebp-A0h] BYREF _DWORD *v72; // [esp+7Ch] [ebp-9Ch] volatile signed __int32 *v73; // [esp+80h] [ebp-98h] BYREF char *v74; // [esp+84h] [ebp-94h] BYREF int v75; // [esp+88h] [ebp-90h] int v76; // [esp+8Ch] [ebp-8Ch] void *v77[6]; // [esp+90h] [ebp-88h] BYREF int **v78; // [esp+A8h] [ebp-70h] BYREF volatile signed __int32 *v79[5]; // [esp+ACh] [ebp-6Ch] BYREF int **v80; // [esp+C0h] [ebp-58h] BYREF volatile signed __int32 *v81[5]; // [esp+C4h] [ebp-54h] BYREF int v82[4]; // [esp+D8h] [ebp-40h] BYREF char v83; // [esp+E8h] [ebp-30h] BYREF int *v84; // [esp+F4h] [ebp-24h] BYREF int v85[3]; // [esp+F8h] [ebp-20h] BYREF volatile signed __int32 *v86[4]; // [esp+104h] [ebp-14h] BYREF while ( *(_DWORD *)(this + 24) != *(_DWORD *)(this + 8) ) std::deque>::pop_back((_DWORD *)this); while ( *(_DWORD *)(this + 64) != *(_DWORD *)(this + 48) ) std::deque>::pop_back((_DWORD *)(this + 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_53FCE0 = 0; dword_53FCE4 = 0; dword_53FCE8 = (int)&dword_53FCE0; dword_53FCEC = (int)&dword_53FCE0; dword_53FCF0 = 0; byte_53FCF4 = 0; // __cxa_guard_release(&`guard variable for'WXML::EXPRLib::TransitTable::GetInstance(void)::ret); atexit(__tcf_0_1); } WXML::EXPRLib::TransitTable::Init(v41); WXML::EXPRLib::Tokenizer::Tokenizer(v77, *a2, a3, a4, a5); v74 = 0; v75 = 0; v76 = 0; Tokens = WXML::EXPRLib::Tokenizer::GetTokens((int *)v77, &v74, a6); v43 = v7; if ( Tokens ) goto LABEL_78; if ( v74 == (char *)v75 ) { v8 = operator new(0x40u); memset(v8, 0, 0x40u); *v8 = v8 + 2; WXML::EXPRLib::Token::Token(v8 + 6); v8[13] = 0; v8[14] = 0; v8[15] = 0; zcc::shared_ptr::shared_ptr(v8); *(_DWORD *)(this + 80) = v84; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(this + 84), v85[0]); v9 = (volatile signed __int32 **)v85; goto LABEL_77; } WXML::EXPRLib::Token::Token(v82); v82[0] = 5; if ( v75 == v76 ) { std::vector::_M_realloc_insert( &v74, (char *)v75, (WXML::EXPRLib::Token *)v82); v44 = v10; } else { WXML::EXPRLib::Token::Token((int *)v75, (WXML::EXPRLib::Token *)v82, v43); v75 += 28; } v11 = operator new(0x38u); *v11 = &off_55F220; v11[1] = v11 + 3; v11[2] = 0; *((_BYTE *)v11 + 12) = 0; WXML::EXPRLib::Token::Token(v11 + 7); zcc::shared_ptr::shared_ptr(&v68, (int)v11); Blockh = v68; std::string::basic_string((void **)&v84, "$"); std::string::_M_assign((int)Blockh + 4, (int)&v84); std::string::_M_dispose((void **)&v84); std::deque>::push_back(this, (int *)&v68); v12 = operator new(8u); *v12 = &off_55F1E4; v12[1] = 0; zcc::shared_ptr::shared_ptr(&v70, (int)v12); Block = v70; if ( a7 ) Block[1] = WXML::EXPRLib::TransitTable::GetAttrListNTType(); else Block[1] = WXML::EXPRLib::TransitTable::GetExprNTType(); std::deque>::push_back(this, (int *)&v70); v72 = 0; v73 = 0; v49 = 0; while ( 1 ) { v13 = *(_DWORD *)(this + 24); if ( *(_DWORD *)(this + 8) == v13 ) break; if ( v13 == *(_DWORD *)(this + 28) ) v13 = *(_DWORD *)(*(_DWORD *)(this + 36) - 4) + 512; v42 = *(_DWORD *)(v13 - 4); v72 = *(_DWORD **)(v13 - 8); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(&v73, v42); WXML::EXPRLib::Token::Token((int *)&v84, (WXML::EXPRLib::Token *)&v74[28 * v49], v44); v15 = (*(int (__thiscall **)(_DWORD *, int))(*v72 + 8))(v72, v14); Blocka = v72; if ( v15 == 1 ) { TokenName = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v84); if ( !std::operator==((int)(Blocka + 1), TokenName) || v49 >= -1227133513 * ((v75 - (int)v74) >> 2) ) { std::string::operator=(a6, "error at token `"); goto LABEL_66; } ++v49; std::deque>::pop_back((_DWORD *)this); if ( (unsigned int)v84 - 1 <= 3 ) { Blocki = operator new(0x40u); *Blocki = Blocki + 2; Blocki[1] = 0; *((_BYTE *)Blocki + 8) = 0; WXML::EXPRLib::Token::Token(Blocki + 6); Blocki[13] = 0; Blocki[14] = 0; Blocki[15] = 0; zcc::shared_ptr::shared_ptr(Blocki); Blockb = v80; v80[6] = v84; for ( i = 0; i != 8; ++i ) *((_BYTE *)Blockb + i + 28) = *((_BYTE *)v85 + i); Blockb[9] = (int *)v85[2]; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)Blockb + 10, (int)v86[0]); Blockb[11] = (int *)v86[1]; Blockb[12] = (int *)v86[2]; v18 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v84); std::string::operator=((unsigned int *)v80, v18); std::deque>::push_back(this + 40, (int *)&v80); v19 = v81; LABEL_37: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v19); } } else { if ( (*(int (__fastcall **)(_DWORD *))(*v72 + 8))(v72) == 3 ) { std::deque>::pop_back((_DWORD *)this); v50 = v72; v47 = v72[7]; if ( v47 == 2 ) { if ( *(_DWORD *)(this + 48) == *(_DWORD *)(this + 64) ) { std::string::operator=(a6, "interal error: "); std::string::operator+=(a6, "1001"); std::string::operator+=(a6, ", expr: `"); std::string::operator+=(a6, (int)a2); std::string::operator+=(a6, "`"); Tokens = 1001; goto LABEL_72; } v20 = (int *)std::deque>::back((_DWORD *)(this + 40)); std::__shared_ptr::__shared_ptr((int *)&v78, v20); std::deque>::pop_back((_DWORD *)(this + 40)); if ( *(_DWORD *)(this + 64) == *(_DWORD *)(this + 48) ) { std::string::operator=(a6, "interal error: "); std::string::operator+=(a6, "1002"); std::string::operator+=(a6, ", expr: `"); std::string::operator+=(a6, (int)a2); std::string::operator+=(a6, "`"); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v79); Tokens = 1002; goto LABEL_72; } v21 = (int *)std::deque>::back((_DWORD *)(this + 40)); std::__shared_ptr::__shared_ptr((int *)&v80, v21); std::vector>::push_back(v80 + 13, (int *)&v78); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v81); } else { v45 = v72[8]; v22 = operator new(0x40u); memset(v22, 0, 0x40u); *v22 = v22 + 2; WXML::EXPRLib::Token::Token(v22 + 6); v22[13] = 0; v22[14] = 0; v22[15] = 0; zcc::shared_ptr::shared_ptr(v22); std::string::_M_assign((int)v78, (int)(v50 + 1)); for ( Blockc = 0; (int)Blockc < v45; ++Blockc ) { if ( *(_DWORD *)(this + 64) == *(_DWORD *)(this + 48) ) { std::string::operator=(a6, "interal error: "); std::string::operator+=(a6, "1003"); std::string::operator+=(a6, ", expr: `"); std::string::operator+=(a6, (int)a2); std::string::operator+=(a6, "`"); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v79); Tokens = 1003; goto LABEL_72; } v23 = (int *)std::deque>::back((_DWORD *)(this + 40)); std::vector>::push_back(v78 + 13, v23); std::deque>::pop_back((_DWORD *)(this + 40)); } if ( !v47 ) { v24 = v78[14]; if ( v78[13] != v24 ) { v51 = v78[13]; for ( Blockd = (volatile signed __int32 **)(v24 - 2); Blockd > (volatile signed __int32 **)v51; Blockd -= 2 ) { std::__shared_ptr::__shared_ptr( (int *)&v80, v51); *v51 = (int)*Blockd; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( (volatile signed __int32 **)v51 + 1, (int)Blockd[1]); *Blockd = (volatile signed __int32 *)v80; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(Blockd + 1, (int)v81[0]); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v81); v51 += 2; } } } std::deque>::push_back(this + 40, (int *)&v78); } v19 = v79; goto LABEL_37; } if ( (*(int (__fastcall **)(_DWORD *))(*v72 + 8))(v72) == 2 ) { v67 = v72[1]; v46 = std::map>>::operator[]( &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, &v67) + 1; Blockj = std::map>>::operator[]( &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, &v67); v25 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v84); std::string::basic_string((void **)&v78, v25); v48 = Blockj + 1; v52 = (_DWORD *)Blockj[2]; Blocke = Blockj + 1; while ( v52 ) { v26 = (unsigned __int8)std::operator<((int)(v52 + 4), (int)&v78) == 0; v27 = Blocke; if ( v26 ) v27 = v52; v28 = (_DWORD *)v52[3]; Blocke = v27; if ( v26 ) v28 = (_DWORD *)v52[2]; v52 = v28; } if ( v48 != Blocke ) { v26 = (unsigned __int8)std::operator<((int)&v78, (int)(Blocke + 4)) == 0; v29 = v48; if ( v26 ) v29 = Blocke; Blocke = v29; } if ( Blocke == v46 ) { Blockf = 1; } else { v30 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v84); std::string::basic_string((void **)&v80, v30); v31 = std::map>>::operator[]( &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, &v67); v32 = std::map>::operator[](v31, &v80); Blockf = *((_DWORD *)v32 + 1) == *(_DWORD *)v32; std::string::_M_dispose((void **)&v80); } std::string::_M_dispose((void **)&v78); if ( Blockf ) { std::string::operator=(a6, "unexpected token `"); LABEL_66: Literal = (char *)WXML::EXPRLib::Token::GetLiteral(&v84); std::string::operator+=(a6, Literal); std::string::operator+=(a6, "`"); Tokens = -1; LABEL_72: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v86); goto LABEL_76; } std::deque>::pop_back((_DWORD *)this); v34 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v84); std::string::basic_string((void **)&v80, v34); v35 = std::map>>::operator[]( &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, &v67); v53 = std::map>::operator[](v35, &v80); std::string::_M_dispose((void **)&v80); for ( Blockg = ((*(_DWORD *)(*(_DWORD *)v53 + 4) - **(_DWORD **)v53) >> 3) - 1; Blockg >= 0; --Blockg ) { v36 = *(_DWORD *)(**(_DWORD **)v53 + 8 * Blockg); if ( (*(int (__fastcall **)(int))(*(_DWORD *)v36 + 8))(v36) == 4 ) break; std::deque>::push_back(this, (int *)(**(_DWORD **)v53 + 8 * Blockg)); } } } std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v86); } if ( *(_DWORD *)(this + 64) == *(_DWORD *)(this + 48) ) { std::string::operator=(a6, "interal error: "); std::string::operator+=(a6, "1004"); std::string::operator+=(a6, ", expr: `"); std::string::operator+=(a6, (int)a2); std::string::operator+=(a6, "`"); Tokens = 1004; } else { v37 = (int *)std::deque>::back((_DWORD *)(this + 40)); v38 = *v37; v39 = v37[1]; *(_DWORD *)(this + 80) = v38; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(this + 84), v39); } LABEL_76: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v73); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v71); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v69); v9 = (volatile signed __int32 **)&v83; LABEL_77: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v9); LABEL_78: std::vector::~vector((void **)&v74); std::string::_M_dispose(v77); return Tokens; } // 42DBAF: variable 'v41' is possibly undefined // 42DC28: variable 'v7' is possibly undefined // 42DD16: variable 'v10' is possibly undefined // 42DED8: variable 'v44' is possibly undefined // 42DEF3: variable 'v14' is possibly undefined // 53FCDC: using guessed type _DWORD WXML::EXPRLib::TransitTable::GetInstance(void)::ret; // 53FCE0: using guessed type int dword_53FCE0; // 53FCE4: using guessed type int dword_53FCE4; // 53FCE8: using guessed type int dword_53FCE8; // 53FCEC: using guessed type int dword_53FCEC; // 53FCF0: using guessed type int dword_53FCF0; // 53FCF4: using guessed type char byte_53FCF4; // 55F1E4: using guessed type void (__cdecl *off_55F1E4)(WXML::EXPRLib::NonTerminal *__hidden this); // 55F220: using guessed type void (__cdecl *off_55F220)(WXML::EXPRLib::Terminal *__hidden this); //----- (0042E948) -------------------------------------------------------- void __usercall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase( _DWORD *a1@) { _DWORD *v2; // esi void *v3; // [esp+0h] [ebp-18h] while ( a1 ) { std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(); v2 = (_DWORD *)a1[2]; std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(a1[7]); v3 = a1; a1 = v2; operator delete(v3); } } //----- (0042E97C) -------------------------------------------------------- void __tcf_0_1(void) { std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase((_DWORD *)dword_53FCE4); } // 53FCE4: using guessed type int dword_53FCE4; //----- (0042E984) -------------------------------------------------------- void __tcf_0_2(void) { std::ios_base::Init::~Init(); } //----- (0042E98E) -------------------------------------------------------- unsigned int __thiscall std::string::_M_construct(void **this, unsigned __int8 *Src, size_t Size) { unsigned int result; // eax _BYTE *v5; // edx unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF if ( !Src && Size ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v6[0] = Size - (_DWORD)Src; if ( Size - (unsigned int)Src > 0xF ) { *this = std::string::_M_create(v6, 0); this[2] = (void *)v6[0]; } std::string::_S_copy_chars(*this, Src, Size); result = v6[0]; v5 = *this; this[1] = (void *)v6[0]; v5[result] = 0; return result; } // 42E98E: using guessed type unsigned int var_1C[7]; //----- (0042EA06) -------------------------------------------------------- unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) { unsigned __int8 *v3; // eax unsigned __int8 *v4; // ecx unsigned __int8 *v5; // edx unsigned __int8 *v6; // eax unsigned __int8 *v7; // edx unsigned __int8 *result; // eax unsigned __int8 *v9; // [esp+18h] [ebp-20h] v3 = *this; v4 = *(unsigned __int8 **)a2; v5 = *(unsigned __int8 **)(a2 + 4); if ( *(_DWORD *)a2 == a2 + 8 ) { if ( v5 ) std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); v6 = *(unsigned __int8 **)(a2 + 4); v7 = *this; this[1] = v6; v6[(_DWORD)v7] = 0; } else { if ( v3 == (unsigned __int8 *)(this + 2) ) v3 = 0; else v9 = this[2]; *this = v4; this[1] = v5; this[2] = *(unsigned __int8 **)(a2 + 8); if ( v3 ) { *(_DWORD *)a2 = v3; *(_DWORD *)(a2 + 8) = v9; } else { *(_DWORD *)a2 = a2 + 8; } } result = *(unsigned __int8 **)a2; *(_DWORD *)(a2 + 4) = 0; *result = 0; return result; } // 42EA6D: variable 'v9' is possibly undefined //----- (0042EA8E) -------------------------------------------------------- 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; } //----- (0042EABE) -------------------------------------------------------- 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_5545E0; if ( v2 ) return *(const char **)v2; } } return result; } //----- (0042EAE0) -------------------------------------------------------- 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_6689A4[v1] = 8388609; } for ( j = "$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"; ; ++j ) { v3 = *j; if ( !(_BYTE)v3 ) break; dword_6689A4[v3] = 13; } for ( k = "0123456789"; ; ++k ) { v5 = *k; if ( !(_BYTE)v5 ) break; dword_6689A4[v5] = 10; } for ( m = "+-*/%^~()[],?:{}"; ; ++m ) { v7 = *m; if ( !(_BYTE)v7 ) break; dword_6689A4[v7] = 327681; } dword_668A5C = 3; v8 = "$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"; dword_668A2C = 6; dword_668A40 = 8; dword_668A98 = 12; dword_668B94 = 15; dword_668A3C = 14; dword_668A94 = 16; dword_668A9C = 17; dword_668A28 = 18; dword_6689A4[0] = 8519681; dword_668DA4 = -1; dword_668A60 = 21; dword_66DA9C = 22; dword_66DDF4 = 4325377; dword_66DEA0 = 23; dword_66E1F8 = 8388630; dword_66E2B8 = 8388609; dword_66E2A4 = 4194326; dword_66E5FC = 22; while ( 1 ) { v9 = *v8; if ( !(_BYTE)v9 ) break; dword_66B9D4[v9] = 13; ++v8; } for ( n = "0123456789"; ; ++n ) { v11 = *n; if ( !(_BYTE)v11 ) break; dword_66B9D4[v11] = 13; } dword_66BDD4 = (int)&unk_620001; for ( ii = "0123456789"; ; ++ii ) { v13 = *ii; if ( !(_BYTE)v13 ) break; dword_6691AC[v13] = 11; } dword_669264 = 4; v14 = "0123456789"; dword_6695AC = (int)&loc_460001; dword_669668 = 327681; dword_6699B0 = -1; while ( 1 ) { v15 = *v14; if ( !(_BYTE)v15 ) break; dword_66ADC8[v15] = 10; ++v14; } dword_66AE80 = 11; v16 = "0123456789"; dword_66B1C8 = (int)&loc_4A0000 + 1; while ( 1 ) { v17 = *v16; if ( !(_BYTE)v17 ) break; dword_66B1CC[v17] = 11; ++v16; } dword_66B5CC = (int)&loc_4A0000 + 1; dword_66B6C4 = 19; dword_66B9D0 = -1; dword_66D2E0 = 327681; dword_66D5EC = (int)&loc_460001; dword_66BE70 = 327681; dword_66C1D8 = 4325377; dword_66C3CC = 327681; dword_66C5DC = 4325377; dword_668E9C = 327681; dword_6691A8 = (int)&loc_460001; dword_669F28 = 7; dword_669DE0 = 9568257; dword_66A5BC = 6; dword_66A1E4 = 9568257; dword_669E40 = 1114113; dword_66A1B8 = 6; dword_66A730 = 9; dword_66A5E8 = 9568257; dword_66ADC4 = 8; dword_66A9EC = 9568257; dword_66A65C = 1114113; dword_66A9C0 = 8; dword_66C6D4 = 327681; dword_66C6D0 = 327681; dword_66C9E0 = (int)&loc_460001; dword_66CAD8 = 327681; dword_66CADC = 327681; dword_66CDE4 = (int)&loc_460001; dword_66CEDC = 20; dword_66D6E4 = 327681; dword_66D9F0 = (int)&loc_460001; dword_66D1E8 = (int)&loc_460001; } } // 6689A4: using guessed type int dword_6689A4[33]; // 668A28: using guessed type int dword_668A28; // 668A2C: using guessed type int dword_668A2C; // 668A3C: using guessed type int dword_668A3C; // 668A40: using guessed type int dword_668A40; // 668A5C: using guessed type int dword_668A5C; // 668A60: using guessed type int dword_668A60; // 668A94: using guessed type int dword_668A94; // 668A98: using guessed type int dword_668A98; // 668A9C: using guessed type int dword_668A9C; // 668B94: using guessed type int dword_668B94; // 668DA4: using guessed type int dword_668DA4; // 668E9C: using guessed type int dword_668E9C; // 6691A8: using guessed type int dword_6691A8; // 6691AC: using guessed type int dword_6691AC[46]; // 669264: using guessed type int dword_669264; // 6695AC: using guessed type int dword_6695AC; // 669668: using guessed type int dword_669668; // 6699B0: using guessed type int dword_6699B0; // 669DE0: using guessed type int dword_669DE0; // 669E40: using guessed type int dword_669E40; // 669F28: using guessed type int dword_669F28; // 66A1B8: using guessed type int dword_66A1B8; // 66A1E4: using guessed type int dword_66A1E4; // 66A5BC: using guessed type int dword_66A5BC; // 66A5E8: using guessed type int dword_66A5E8; // 66A65C: using guessed type int dword_66A65C; // 66A730: using guessed type int dword_66A730; // 66A9C0: using guessed type int dword_66A9C0; // 66A9EC: using guessed type int dword_66A9EC; // 66ADC4: using guessed type int dword_66ADC4; // 66ADC8: using guessed type int dword_66ADC8[46]; // 66AE80: using guessed type int dword_66AE80; // 66B1C8: using guessed type int dword_66B1C8; // 66B1CC: using guessed type int dword_66B1CC[256]; // 66B5CC: using guessed type int dword_66B5CC; // 66B6C4: using guessed type int dword_66B6C4; // 66B9D0: using guessed type int dword_66B9D0; // 66B9D4: using guessed type int dword_66B9D4[256]; // 66BDD4: using guessed type int dword_66BDD4; // 66BE70: using guessed type int dword_66BE70; // 66C1D8: using guessed type int dword_66C1D8; // 66C3CC: using guessed type int dword_66C3CC; // 66C5DC: using guessed type int dword_66C5DC; // 66C6D0: using guessed type int dword_66C6D0; // 66C6D4: using guessed type int dword_66C6D4; // 66C9E0: using guessed type int dword_66C9E0; // 66CAD8: using guessed type int dword_66CAD8; // 66CADC: using guessed type int dword_66CADC; // 66CDE4: using guessed type int dword_66CDE4; // 66CEDC: using guessed type int dword_66CEDC; // 66D1E8: using guessed type int dword_66D1E8; // 66D2E0: using guessed type int dword_66D2E0; // 66D5EC: using guessed type int dword_66D5EC; // 66D6E4: using guessed type int dword_66D6E4; // 66D9F0: using guessed type int dword_66D9F0; // 66DA9C: using guessed type int dword_66DA9C; // 66DDF4: using guessed type int dword_66DDF4; // 66DEA0: using guessed type int dword_66DEA0; // 66E1F8: using guessed type int dword_66E1F8; // 66E2A4: using guessed type int dword_66E2A4; // 66E2B8: using guessed type int dword_66E2B8; // 66E5FC: using guessed type int dword_66E5FC; // 7695A0: using guessed type char WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited; //----- (0042EE2E) -------------------------------------------------------- unsigned int __thiscall WXML::EXPRLib::Tokenizer::Tokenizer(void **this, char *Str, int a3, int a4, int a5) { size_t v5; // eax size_t v6; // eax void **v8; // [esp+1Ch] [ebp-Ch] *this = this + 2; v5 = -1; if ( Str ) { v8 = this; v6 = strlen(Str); this = v8; v5 = (size_t)&Str[v6]; } return std::string::_M_construct(this, (unsigned __int8 *)Str, v5); } //----- (0042EE69) -------------------------------------------------------- _DWORD *__usercall std::__relocate_a_1>@( _DWORD *a1@, _DWORD *a2@, _DWORD *a3@) { int v6; // edx int v7; // ecx int v8; // eax volatile signed __int32 **v9; // ecx while ( a1 != a2 ) { *a3 = *a1; v6 = a1[2]; a3[1] = a1[1]; a3[2] = v6; v7 = a1[4]; a3[3] = a1[3]; a3[4] = v7; if ( v7 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v7); v8 = a1[5]; v9 = (volatile signed __int32 **)(a1 + 4); a3 += 7; a1 += 7; *(a3 - 2) = v8; *(a3 - 1) = *(a1 - 1); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v9); } return a3; } //----- (0042EEC8) -------------------------------------------------------- int __thiscall WXML::EXPRLib::Tokenizer::GetTokens(int *this, _DWORD *a2, unsigned int *a3) { unsigned __int8 v3; // di std::ostream::sentry *v4; // eax std::ostream::sentry *v5; // eax std::ostream::sentry *v6; // eax std::ostream::sentry *v7; // eax int v8; // edx int *v9; // ebx char *v10; // eax char v11; // cl volatile signed __int32 *v12; // eax void **v13; // edx void **v14; // ecx volatile signed __int32 *v15; // edx int v17; // edx volatile signed __int32 *v18; // ecx int v19; // eax int v21; // [esp+14h] [ebp-154h] int v23; // [esp+1Ch] [ebp-14Ch] int v24; // [esp+20h] [ebp-148h] int v25; // [esp+24h] [ebp-144h] const char **v26; // [esp+24h] [ebp-144h] int v27; // [esp+28h] [ebp-140h] int v28; // [esp+2Ch] [ebp-13Ch] int v29; // [esp+30h] [ebp-138h] volatile signed __int32 *v30; // [esp+30h] [ebp-138h] const char **v31; // [esp+30h] [ebp-138h] int v32; // [esp+30h] [ebp-138h] void **Block; // [esp+34h] [ebp-134h] struct _Unwind_Exception *lpuexcpt; // [esp+38h] [ebp-130h] BYREF void **v35; // [esp+70h] [ebp-F8h] volatile signed __int32 *v36; // [esp+74h] [ebp-F4h] BYREF void **v37; // [esp+78h] [ebp-F0h] BYREF volatile signed __int32 *v38; // [esp+7Ch] [ebp-ECh] BYREF int v39; // [esp+90h] [ebp-D8h] BYREF int v40[2]; // [esp+94h] [ebp-D4h] BYREF const char **v41; // [esp+9Ch] [ebp-CCh] BYREF volatile signed __int32 *v42; // [esp+A0h] [ebp-C8h] BYREF int v43; // [esp+A4h] [ebp-C4h] int v44; // [esp+A8h] [ebp-C0h] WXML::EXPRLib::Tokenizer::InitTransitTable(); v21 = 18899; v24 = 1; v28 = 0; v29 = 0; v23 = this[1]; while ( v28 <= v23 ) { if ( !--v21 ) { std::string::_M_replace(a3, 0, a3[1], "something must be wrong", 0x17u); return -1; } v25 = *this; v3 = *(_BYTE *)(*this + v28); if ( v28 == v23 ) v3 = 0; lpuexcpt = (struct _Unwind_Exception *)WXML::EXPRLib::Tokenizer::TT[257 * v24 + v3]; if ( !lpuexcpt ) { lpuexcpt = (struct _Unwind_Exception *)dword_6689A0[257 * v24]; if ( !lpuexcpt ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v39); std::operator<<>((std::ostream::sentry *)&v40[1], "no transition for "); v4 = (std::ostream::sentry *)std::ostream::operator<<(v24); v5 = std::operator<<>(v4, " with input "); std::operator<<>(v5, v3); std::stringbuf::str((int)&v37, (int)&v41); std::string::operator=((unsigned __int8 **)a3, (int)&v37); std::string::_M_dispose((void **)&v37); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v39); return -1; } } if ( lpuexcpt == (struct _Unwind_Exception *)-1 ) { std::basic_stringstream,std::allocator>::basic_stringstream((int)&v39); v6 = std::operator<<>((std::ostream::sentry *)&v40[1], "unexpected `"); v7 = std::operator<<>(v6, v3); std::operator<<>(v7, "` at pos"); std::ostream::operator<<(v28); std::stringbuf::str((int)&v37, (int)&v41); std::string::operator=((unsigned __int8 **)a3, (int)&v37); std::string::_M_dispose((void **)&v37); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v39); return (int)lpuexcpt; } v24 = (unsigned __int16)lpuexcpt; if ( ((unsigned int)lpuexcpt & 0x30000) != 0 ) { v8 = 1; v27 = (((unsigned int)lpuexcpt & 0x20000) == 0) + v28 - 1; if ( !_bittest((const signed __int32 *)&lpuexcpt, 0x13u) ) { v8 = 2; if ( !_bittest((const signed __int32 *)&lpuexcpt, 0x14u) ) v8 = ((int)((_DWORD)lpuexcpt << 10) >> 31) & 3; } if ( v29 <= v27 ) { v9 = v40; v41 = 0; v42 = 0; memset(v40, 0, sizeof(v40)); v39 = v8; v43 = 0; v44 = 0; if ( v8 ) { Block = (void **)operator new(0x18u); *Block = Block + 2; std::string::_M_construct(Block, (unsigned __int8 *)(v29 + v25), v25 + v27 + 1); v35 = 0; v36 = 0; v37 = Block; v38 = 0; v12 = (volatile signed __int32 *)operator new(0x10u); v13 = v37; *((_DWORD *)v12 + 1) = 1; v14 = v35; *((_DWORD *)v12 + 2) = 1; *v12 = (volatile signed __int32)&off_5603EC; *((_DWORD *)v12 + 3) = Block; v35 = v13; v15 = v36; v37 = v14; v36 = v12; v38 = v15; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v38); v41 = (const char **)v35; v30 = v36; if ( v36 != v42 ) { if ( v36 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy((int)v36); if ( v42 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v42); v42 = v30; } std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v36); v31 = (const char **)WXML::EXPRLib::Tokenizer::GetTokens(std::vector &,std::string &)::KEYWORDS; v26 = v41; while ( *v31 ) { if ( !strcmp(*v26, *v31++) ) { v39 = 4; break; } } } else { v10 = (char *)(v29 + v25); do { v11 = *v10++; v9 = (int *)((char *)v9 + 1); *((_BYTE *)v9 - 1) = v11; } while ( v10 != (char *)(v25 + v27 + 1) ); *((_BYTE *)v40 + v27 + 1 - v29) = 0; } v32 = a2[1]; if ( v32 == a2[2] ) { std::vector::_M_realloc_insert( a2, (char *)v32, (WXML::EXPRLib::Token *)&v39); } else { *(_DWORD *)v32 = v39; v17 = v40[1]; *(_DWORD *)(v32 + 4) = v40[0]; *(_DWORD *)(v32 + 8) = v17; v18 = v42; *(_DWORD *)(v32 + 12) = v41; *(_DWORD *)(v32 + 16) = v18; if ( v18 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy((int)v18); *(_DWORD *)(v32 + 20) = v43; *(_DWORD *)(v32 + 24) = v44; a2[1] += 28; } v29 = v27 + 1; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v42); } } v19 = v29; v28 += ((unsigned int)lpuexcpt & 0x400000) == 0; if ( ((unsigned int)lpuexcpt & 0x800000) != 0 ) v19 = v28; v29 = v19; } return 0; } // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); // 5546D8: using guessed type char *WXML::EXPRLib::Tokenizer::GetTokens(std::vector &,std::string &)::KEYWORDS[4]; // 5603EC: using guessed type int (*off_5603EC)(); // 6685A0: using guessed type int WXML::EXPRLib::Tokenizer::TT[]; // 6689A0: using guessed type int dword_6689A0[]; //----- (0042F5E4) -------------------------------------------------------- void __tcf_1_5(void) { std::ios_base::Init::~Init(); } //----- (0042F5EE) -------------------------------------------------------- size_t __thiscall std::string::basic_string(void **this, char *Str) { char *v3; // edi size_t result; // eax _BYTE *v5; // edx size_t v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v6[0] = strlen(Str); v3 = &Str[v6[0]]; if ( v6[0] > 0xF ) { *this = std::string::_M_create(v6, 0); this[2] = (void *)v6[0]; } std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); result = v6[0]; v5 = *this; this[1] = (void *)v6[0]; v5[result] = 0; return result; } // 42F5EE: using guessed type size_t var_1C[7]; //----- (0042F66C) -------------------------------------------------------- unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) { size_t v2; // eax v2 = strlen(Str); return std::string::_M_replace(this, 0, this[1], Str, v2); } //----- (0042F6AA) -------------------------------------------------------- int WXML::EXPRLib::TransitTable::GetExprNTType() { return 14; } //----- (0042F6B0) -------------------------------------------------------- int WXML::EXPRLib::TransitTable::GetAttrListNTType() { return 12; } //----- (0042F6B6) -------------------------------------------------------- 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); } //----- (0042F70A) -------------------------------------------------------- void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( int a1@) { int v2; // esi void *v3; // [esp+0h] [ebp-28h] while ( a1 ) { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(); v2 = *(_DWORD *)(a1 + 8); std::vector::~vector((void ***)(a1 + 40)); std::string::_M_dispose((void **)(a1 + 16)); v3 = (void *)a1; a1 = v2; operator delete(v3); } } //----- (0042F74A) -------------------------------------------------------- int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( _DWORD *this, _DWORD *a2) { int result; // eax int v4; // edi std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(this[2]); this[2] = 0; this[3] = this + 1; this[4] = this + 1; result = a2[2]; this[5] = 0; if ( result ) { v4 = a2[1]; this[2] = result; this[1] = v4; this[3] = a2[3]; this[4] = a2[4]; *(_DWORD *)(result + 4) = this + 1; result = a2[5]; this[5] = result; a2[2] = 0; a2[3] = a2 + 1; a2[4] = a2 + 1; a2[5] = 0; } return result; } //----- (0042F7BE) -------------------------------------------------------- #error "42F7BE: too big function (funcsize=0)" //----- (0045688C) -------------------------------------------------------- void __tcf_0_3(void) { std::ios_base::Init::~Init(); } //----- (00456896) -------------------------------------------------------- unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) { unsigned __int8 *v3; // eax unsigned __int8 *v4; // ecx unsigned __int8 *v5; // edx unsigned __int8 *v6; // eax unsigned __int8 *v7; // edx unsigned __int8 *result; // eax unsigned __int8 *v9; // [esp+18h] [ebp-20h] v3 = *this; v4 = *(unsigned __int8 **)a2; v5 = *(unsigned __int8 **)(a2 + 4); if ( *(_DWORD *)a2 == a2 + 8 ) { if ( v5 ) std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); v6 = *(unsigned __int8 **)(a2 + 4); v7 = *this; this[1] = v6; v6[(_DWORD)v7] = 0; } else { if ( v3 == (unsigned __int8 *)(this + 2) ) v3 = 0; else v9 = this[2]; *this = v4; this[1] = v5; this[2] = *(unsigned __int8 **)(a2 + 8); if ( v3 ) { *(_DWORD *)a2 = v3; *(_DWORD *)(a2 + 8) = v9; } else { *(_DWORD *)a2 = a2 + 8; } } result = *(unsigned __int8 **)a2; *(_DWORD *)(a2 + 4) = 0; *result = 0; return result; } // 4568FD: variable 'v9' is possibly undefined //----- (0045691E) -------------------------------------------------------- unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *Src, unsigned int a3) { unsigned int result; // eax _BYTE *v5; // edx unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = this + 2; if ( &Src[a3] && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v6[0] = a3; if ( a3 > 0xF ) { *this = std::string::_M_create(v6, 0); this[2] = (void *)v6[0]; } std::string::_S_copy_chars(*this, Src, (size_t)&Src[a3]); result = v6[0]; v5 = *this; this[1] = (void *)v6[0]; v5[result] = 0; return result; } // 45691E: using guessed type unsigned int var_1C[7]; //----- (00456999) -------------------------------------------------------- int __cdecl WXML::StringTemplating::Deal(char *Str, int a2, char **a3, _BYTE *a4) { size_t v4; // eax int v5; // edx char v6; // al char v7; // cl char *v8; // eax char v9; // cl char v10; // cl bool v11; // zf int v12; // eax int v13; // eax char *v14; // eax signed int v16; // [esp+10h] [ebp-88h] int v17; // [esp+14h] [ebp-84h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-80h] void *v19[6]; // [esp+5Ch] [ebp-3Ch] BYREF int v20; // [esp+74h] [ebp-24h] BYREF char *v21; // [esp+78h] [ebp-20h] BYREF int v22; // [esp+7Ch] [ebp-1Ch] char v23[20]; // [esp+80h] [ebp-18h] BYREF v4 = strlen(Str); lpuexcpt = 0; v5 = 0; v16 = v4; v17 = 0; while ( 1 ) { v6 = *((_BYTE *)lpuexcpt + (_DWORD)Str); if ( (int)lpuexcpt >= v16 || !v6 ) break; v7 = *((_BYTE *)lpuexcpt + (_DWORD)Str + 1); if ( v17 == 2 ) { if ( v6 == 92 ) goto LABEL_37; v11 = v6 == 34; LABEL_39: v12 = 1; LABEL_40: if ( !v11 ) v12 = v17; v17 = v12; goto LABEL_44; } if ( v17 > 2 ) { if ( v6 == 92 ) { LABEL_37: lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); goto LABEL_44; } v11 = v6 == 39; goto LABEL_39; } if ( v17 ) { if ( v6 != 125 || v7 != 125 ) { if ( v6 == 34 ) { v17 = 2; goto LABEL_44; } v11 = v6 == 39; v12 = 4; goto LABEL_40; } if ( (int)lpuexcpt > v5 ) { v8 = (char *)lpuexcpt - 1; while ( 1 ) { v9 = Str[v5]; if ( v9 != 32 && v9 != 9 ) break; ++v5; } while ( v5 < (int)v8 ) { v10 = v8[(_DWORD)Str]; if ( v10 != 32 && v10 != 9 ) goto LABEL_30; --v8; } if ( (char *)v5 != v8 ) goto LABEL_31; LABEL_30: v21 = v23; v22 = 0; v23[0] = 0; v20 = 0; std::string::basic_string(v19, (unsigned __int8 *)&Str[v5], (unsigned int)&v8[-v5 + 1]); std::string::operator=((unsigned __int8 **)&v21, (int)v19); std::string::_M_dispose(v19); v20 = 1; std::vector::push_back(a3, &v20); *a4 = 1; std::string::_M_dispose((void **)&v21); } LABEL_31: v17 = 0; v5 = (int)lpuexcpt + 2; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); } else if ( v6 == 123 && v7 == 123 ) { if ( (int)lpuexcpt > v5 ) { v23[0] = 0; v21 = v23; v22 = 0; v20 = 0; std::string::basic_string(v19, (unsigned __int8 *)&Str[v5], (unsigned int)lpuexcpt - v5); std::string::operator=((unsigned __int8 **)&v21, (int)v19); std::string::_M_dispose(v19); v20 = 0; std::vector::push_back(a3, &v20); std::string::_M_dispose((void **)&v21); } v17 = 1; v5 = (int)lpuexcpt + 2; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); } LABEL_44: lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); } if ( v17 ) return 1; v13 = ~((unsigned int)lpuexcpt - v16); if ( (int)lpuexcpt < v16 - 1 ) v13 = 0; v14 = (char *)lpuexcpt + v13; if ( v5 <= (int)v14 ) { v23[0] = 0; v21 = v23; v22 = 0; v20 = 0; std::string::basic_string(v19, (unsigned __int8 *)&Str[v5], (unsigned int)&v14[-v5 + 1]); std::string::operator=((unsigned __int8 **)&v21, (int)v19); std::string::_M_dispose(v19); std::vector::push_back(a3, &v20); std::string::_M_dispose((void **)&v21); } return v17; } // 456A2B: conditional instruction was optimized away because %var_84.4==1 // 456A3D: conditional instruction was optimized away because %var_84.4==4 //----- (00456CF0) -------------------------------------------------------- _DWORD *__usercall d_make_comp@(_DWORD *a1@, int a2@, int a3@, int a4) { int v5; // ebx _DWORD *v6; // ecx _DWORD *result; // eax switch ( a2 ) { case 0: case 5: case 6: case 7: case 8: case 24: case 39: case 44: case 50: case 51: case 65: case 66: case 70: case 71: case 72: return 0; 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_3; return 0; 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 ) return 0; goto LABEL_4; 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_4; case 42: case 49: LABEL_3: if ( !a4 ) return 0; LABEL_4: v5 = a1[5]; if ( v5 >= a1[6] ) return 0; v6 = (_DWORD *)(a1[4] + 20 * v5); v6[1] = 0; v6[2] = 0; a1[5] = v5 + 1; *v6 = a2; v6[4] = a4; result = v6; v6[3] = a3; return result; default: return 0; } } //----- (00456D70) -------------------------------------------------------- _DWORD *__usercall d_make_name@(_DWORD *a1@, int a2@, int a3@) { int v4; // ecx _DWORD *v6; // edx _DWORD *result; // eax v4 = a1[5]; if ( v4 >= a1[6] ) return 0; v6 = (_DWORD *)(a1[4] + 20 * v4); v6[1] = 0; v6[2] = 0; a1[5] = v4 + 1; if ( !a2 || a3 <= 0 ) return 0; v6[1] = 0; result = v6; v6[2] = 0; *v6 = 0; v6[3] = a2; v6[4] = a3; return result; } //----- (00456DD0) -------------------------------------------------------- int __usercall d_number@(int a1@) { char *v1; // ebx char v2; // cl _BYTE *v3; // ebx signed int v4; // esi int v5; // ecx int v7; // [esp+0h] [ebp-14h] v1 = *(char **)(a1 + 12); v2 = *v1; if ( *v1 != 110 ) { if ( (unsigned __int8)(v2 - 48) <= 9u ) { v7 = 0; goto LABEL_4; } return 0; } *(_DWORD *)(a1 + 12) = v1 + 1; v2 = v1[1]; if ( (unsigned __int8)(v2 - 48) > 9u ) return 0; v7 = 1; ++v1; LABEL_4: v3 = v1 + 1; v4 = 0; v5 = (char)(v2 - 48); while ( 1 ) { *(_DWORD *)(a1 + 12) = v3; v4 = v5 + 10 * v4; LOBYTE(v5) = *v3 - 48; if ( (unsigned __int8)v5 > 9u ) break; v5 = (char)v5; ++v3; if ( (int)((0x7FFFFFFF - (char)v5) / 0xAu) < v4 ) return -1; } if ( v7 ) return -v4; return v4; } //----- (00456EA0) -------------------------------------------------------- int __usercall d_call_offset@(int a1@, int a2@) { _BYTE *v3; // eax _BYTE *v4; // 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 ) { if ( a2 != 118 ) return 0; d_number(a1); v4 = *(_BYTE **)(a1 + 12); if ( *v4 != 95 ) return 0; *(_DWORD *)(a1 + 12) = v4 + 1; } d_number(a1); v6 = *(_BYTE **)(a1 + 12); if ( *v6 != 95 ) return 0; *(_DWORD *)(a1 + 12) = v6 + 1; return 1; } //----- (00456F00) -------------------------------------------------------- _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; } //----- (00456F70) -------------------------------------------------------- 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(a1); result = 0; if ( v3 < 0 ) return result; return 1; } *(_DWORD *)(a1 + 12) = v2 + 2; v5 = d_number(a1); 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; } //----- (00456FD0) -------------------------------------------------------- int __usercall d_count_templates_scopes@(int result@, int *a2@, int a3@) { _DWORD *v3; // esi int *v4; // ebx int v5; // edx _DWORD *v6; // eax int v7; // ecx if ( a2 ) { v3 = (_DWORD *)result; v4 = a2; while ( 2 ) { result = v4[2]; if ( result <= 1 ) { v5 = v3[71]; if ( v5 <= 1024 ) { v4[2] = result + 1; result = *v4; switch ( *v4 ) { case 1: case 2: case 3: case 9: case 10: case 11: 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 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 37: case 38: case 40: case 41: case 42: case 43: case 45: case 46: case 47: case 48: case 49: 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 67: case 73: case 74: case 75: case 76: case 77: case 78: case 79: case 80: goto LABEL_11; case 4: ++v3[81]; LABEL_11: v6 = (_DWORD *)v4[3]; goto LABEL_12; case 7: case 8: case 51: v4 = (int *)v4[4]; goto LABEL_7; case 35: case 36: v6 = (_DWORD *)v4[3]; if ( *v6 == 5 ) ++v3[78]; LABEL_12: v3[71] = v5 + 1; d_count_templates_scopes(a3, v6); result = d_count_templates_scopes(v7, v4[4]); --v3[71]; return result; case 44: case 68: case 69: case 70: case 71: v4 = (int *)v4[3]; LABEL_7: if ( !v4 ) return result; continue; default: return result; } } } break; } } return result; } // 45704A: variable 'v7' is possibly undefined //----- (00457080) -------------------------------------------------------- _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[3]; } result = (_DWORD *)result[4]; --a2; if ( !result ) return result; } } return 0; } //----- (004570D0) -------------------------------------------------------- void __cdecl d_growable_string_callback_adapter(void *Src, size_t Size, int a3) { size_t v3; // ebx int v4; // edx size_t v5; // eax void *v6; // eax v3 = *(_DWORD *)(a3 + 8); v4 = *(_DWORD *)(a3 + 12); v5 = Size + *(_DWORD *)(a3 + 4) + 1; if ( v5 > v3 ) { if ( v4 ) return; if ( v3 || (v3 = 2, v5 > 2) ) { do v3 *= 2; while ( v5 > v3 ); } v6 = realloc(*(void **)a3, v3); if ( !v6 ) { free(*(void **)a3); *(_DWORD *)a3 = 0; *(_DWORD *)(a3 + 4) = 0; *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 12) = 1; return; } *(_DWORD *)a3 = v6; v4 = *(_DWORD *)(a3 + 12); *(_DWORD *)(a3 + 8) = v3; } if ( !v4 ) { memcpy((void *)(*(_DWORD *)a3 + *(_DWORD *)(a3 + 4)), Src, Size); *(_BYTE *)(*(_DWORD *)(a3 + 4) + Size + *(_DWORD *)a3) = 0; *(_DWORD *)(a3 + 4) += Size; } } //----- (00457190) -------------------------------------------------------- int sprintf_constprop_0(FILE *a1, int a2, ...) { va_list va; // [esp+28h] [ebp+Ch] BYREF va_start(va, a2); return __mingw_vsprintf(a1, "%d", (int *)va); } //----- (004571C0) -------------------------------------------------------- BOOL __usercall next_is_type_qual_isra_0@(char *a1@) { char v2; // al v2 = *a1; if ( v2 == 86 || v2 == 114 || v2 == 75 ) return 1; if ( v2 == 68 ) return (a1[1] & 0xDF) == 79 || (unsigned __int8)(a1[1] - 119) <= 1u; return 0; } //----- (00457220) -------------------------------------------------------- int __usercall d_append_char@(int a1@, char a2@
) { int result; // eax int v4; // ecx int v5; // eax char v6; // [esp+1Ch] [ebp-10h] result = *(_DWORD *)(a1 + 256); if ( result == 255 ) { v5 = *(_DWORD *)(a1 + 268); v6 = a2; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v5); ++*(_DWORD *)(a1 + 296); a2 = v6; result = 0; v4 = 1; } else { v4 = result + 1; } *(_DWORD *)(a1 + 256) = v4; *(_BYTE *)(a1 + result) = a2; *(_BYTE *)(a1 + 260) = a2; return result; } //----- (00457290) -------------------------------------------------------- _DWORD *__usercall d_lookup_template_argument@(int a1@, int a2@) { _DWORD *result; // eax int v4; // edx result = *(_DWORD **)(a1 + 272); if ( result ) { v4 = *(_DWORD *)(a2 + 12); result = *(_DWORD **)(result[1] + 16); if ( v4 >= 0 && result ) { while ( 1 ) { if ( *result != 47 ) return 0; if ( !v4 ) break; result = (_DWORD *)result[4]; --v4; if ( !result ) return result; } return (_DWORD *)result[3]; } } else { *(_DWORD *)(a1 + 280) = 1; } return result; } //----- (004572F0) -------------------------------------------------------- size_t __usercall d_append_string@(int a1@, const char *Str@) { const char *v3; // ebx size_t result; // eax size_t v5; // edi const char *v6; // edi size_t v7; // ecx char v8; // dl int v9; // eax char v10; // [esp+1Fh] [ebp-Dh] v3 = Str; result = strlen(Str); if ( result ) { v5 = result; result = *(_DWORD *)(a1 + 256); v6 = &v3[v5]; do { v8 = *v3; if ( result == 255 ) { v9 = *(_DWORD *)(a1 + 268); v10 = *v3; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v9); ++*(_DWORD *)(a1 + 296); v8 = v10; v7 = 0; result = 1; } else { v7 = result++; } ++v3; *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v7) = v8; *(_BYTE *)(a1 + 260) = v8; } while ( v6 != v3 ); } return result; } //----- (00457390) -------------------------------------------------------- _DWORD *__usercall d_find_pack@(int a1@, _DWORD *a2@, int a3@) { _DWORD *v4; // ebx _DWORD *result; // eax int v6; // edx 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: return 0; case 5: result = *(_DWORD **)(a1 + 272); if ( result ) { v6 = v4[3]; result = *(_DWORD **)(result[1] + 16); if ( v6 >= 0 ) { if ( !result ) return 0; while ( 1 ) { if ( *result != 47 ) return 0; if ( !v6 ) break; result = (_DWORD *)result[4]; --v6; if ( !result ) return 0; } result = (_DWORD *)result[3]; } if ( !result || *result != 47 ) return 0; } else { *(_DWORD *)(a1 + 280) = 1; } break; case 7: case 8: case 0x33: goto LABEL_10; default: result = (_DWORD *)d_find_pack(a3, v4[3]); if ( result ) return result; LABEL_10: v4 = (_DWORD *)v4[4]; if ( !v4 ) return 0; continue; } return result; } } // 4573CD: variable 'a3' is possibly undefined //----- (00457430) -------------------------------------------------------- _DWORD *__usercall d_template_param@(_DWORD *a1@) { _BYTE *v2; // eax char v3; // dl int v4; // ecx _BYTE *v5; // eax int v6; // edx _DWORD *result; // eax v2 = (_BYTE *)a1[3]; if ( *v2 != 84 ) return 0; a1[3] = v2 + 1; v3 = v2[1]; if ( v3 == 95 ) { v4 = 0; a1[3] = v2 + 2; } else { if ( v3 == 110 ) return 0; v4 = d_number((int)a1) + 1; if ( v4 < 0 ) return 0; v5 = (_BYTE *)a1[3]; if ( *v5 != 95 ) return 0; a1[3] = v5 + 1; } v6 = a1[5]; if ( v6 < a1[6] ) { result = (_DWORD *)(a1[4] + 20 * v6); result[1] = 0; result[2] = 0; a1[5] = v6 + 1; *result = 5; result[3] = v4; return result; } return 0; } //----- (004574C0) -------------------------------------------------------- size_t __usercall d_append_num@(int a1@, int a2@) { FILE *p_Str; // ebx size_t result; // eax size_t v5; // edi FILE *v6; // edi size_t v7; // ecx char ptr; // dl int v9; // eax char v10; // [esp+1Fh] [ebp-2Dh] FILE Str; // [esp+27h] [ebp-25h] BYREF p_Str = &Str; sprintf_constprop_0(&Str, (int)"%d", a2); result = strlen((const char *)&Str); if ( result ) { v5 = result; result = *(_DWORD *)(a1 + 256); v6 = (FILE *)((char *)&Str + v5); do { ptr = (char)p_Str->_ptr; if ( result == 255 ) { v9 = *(_DWORD *)(a1 + 268); v10 = (char)p_Str->_ptr; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v9); ++*(_DWORD *)(a1 + 296); ptr = v10; v7 = 0; result = 1; } else { v7 = result++; } p_Str = (FILE *)((char *)p_Str + 1); *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v7) = ptr; *(_BYTE *)(a1 + 260) = ptr; } while ( v6 != p_Str ); } return result; } // 4574C0: using guessed type FILE var_25; //----- (00457570) -------------------------------------------------------- _DWORD *__usercall d_source_name@(int a1@) { int v2; // eax int v3; // ebp int v4; // ecx _BYTE *v5; // eax _DWORD *result; // eax int v7; // edx int v8; // eax char v9; // [esp+3h] [ebp-11h] v2 = d_number(a1); if ( v2 > 0 ) { v3 = *(_DWORD *)(a1 + 12); v4 = v2; if ( v2 > *(_DWORD *)(a1 + 4) - v3 ) goto LABEL_18; v5 = (_BYTE *)(v3 + v2); *(_DWORD *)(a1 + 12) = v3 + v4; if ( (*(_BYTE *)(a1 + 8) & 4) != 0 && *v5 == 36 ) { *(_DWORD *)(a1 + 12) = v5 + 1; if ( v4 <= 9 ) goto LABEL_7; } else if ( v4 <= 9 ) { goto LABEL_7; } if ( *(_DWORD *)v3 == 1330399071 && *(_DWORD *)(v3 + 4) == 1598832962 ) { v9 = *(_BYTE *)(v3 + 8); if ( (v9 == 95 || v9 == 46 || v9 == 36) && *(_BYTE *)(v3 + 9) == 78 ) { v7 = *(_DWORD *)(a1 + 20); *(_DWORD *)(a1 + 44) = *(_DWORD *)(a1 + 44) + 22 - v4; if ( v7 < *(_DWORD *)(a1 + 24) ) { v8 = *(_DWORD *)(a1 + 16); *(_DWORD *)(a1 + 20) = v7 + 1; result = (_DWORD *)(v8 + 20 * v7); result[1] = 0; result[2] = 0; *result = 0; result[3] = "(anonymous namespace)"; result[4] = 21; goto LABEL_8; } LABEL_18: result = 0; goto LABEL_8; } } LABEL_7: result = d_make_name((_DWORD *)a1, v3, v4); LABEL_8: *(_DWORD *)(a1 + 40) = result; return result; } return 0; } //----- (00457680) -------------------------------------------------------- _DWORD *__usercall d_substitution@(int a1@, char a2@
) { _BYTE *v3; // eax int v5; // edx BOOL v6; // eax char v7; // cl const char *v8; // eax _DWORD *comp; // esi unsigned int v11; // eax unsigned int i; // ecx char *v13; // eax unsigned int v14; // ecx int v15; // esi int v16; // edx int v17; // ebp int v18; // edi _DWORD *v19; // edi int v20; // ecx int v21; // eax _BYTE *v22; // eax int v23; // edi _DWORD *v24; // eax int v25; // eax BOOL v26; // [esp+4h] [ebp-18h] int v27; // [esp+8h] [ebp-14h] v3 = *(_BYTE **)(a1 + 12); if ( *v3 != 83 ) return 0; *(_DWORD *)(a1 + 12) = v3 + 1; LOBYTE(v5) = v3[1]; if ( !(_BYTE)v5 ) { LABEL_3: v26 = (*(_BYTE *)(a1 + 8) & 8) != 0; if ( (*(_BYTE *)(a1 + 8) & 8) == 0 && (a2 & 1) != 0 ) { v6 = 1; if ( (unsigned __int8)(**(_BYTE **)(a1 + 12) - 67) > 1u ) v6 = (*(_BYTE *)(a1 + 8) & 8) != 0; v26 = v6; } v7 = 116; v8 = "t"; while ( (_BYTE)v5 != v7 ) { v8 += 28; if ( v8 == (const char *)&unk_559324 ) return 0; v7 = *v8; } v15 = *((_DWORD *)v8 + 5); v16 = *(_DWORD *)(a1 + 20); v17 = *(_DWORD *)(a1 + 24); if ( v15 ) { v27 = *((_DWORD *)v8 + 6); if ( v16 >= v17 ) { v19 = 0; } else { v18 = 5 * v16++; v19 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 4 * v18); v19[1] = 0; v19[2] = 0; *(_DWORD *)(a1 + 20) = v16; *v19 = 24; v19[3] = v15; v19[4] = v27; } *(_DWORD *)(a1 + 40) = v19; } if ( v26 ) { v20 = *((_DWORD *)v8 + 3); v21 = *((_DWORD *)v8 + 4); } else { v20 = *((_DWORD *)v8 + 1); v21 = *((_DWORD *)v8 + 2); } *(_DWORD *)(a1 + 44) += v21; if ( v16 >= v17 ) { comp = 0; } else { comp = (_DWORD *)(*(_DWORD *)(a1 + 16) + 20 * v16); comp[1] = 0; comp[2] = 0; *(_DWORD *)(a1 + 20) = v16 + 1; *comp = 24; comp[3] = v20; comp[4] = v21; } v22 = *(_BYTE **)(a1 + 12); if ( *v22 != 66 ) return comp; v23 = *(_DWORD *)(a1 + 40); do { *(_DWORD *)(a1 + 12) = v22 + 1; v24 = d_source_name(a1); comp = d_make_comp((_DWORD *)a1, 76, (int)comp, (int)v24); v22 = *(_BYTE **)(a1 + 12); } while ( *v22 == 66 ); *(_DWORD *)(a1 + 40) = v23; if ( comp ) { v25 = *(_DWORD *)(a1 + 32); if ( v25 < *(_DWORD *)(a1 + 36) ) { *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v25) = comp; *(_DWORD *)(a1 + 32) = v25 + 1; return comp; } } return 0; } *(_DWORD *)(a1 + 12) = v3 + 2; v5 = (char)v3[1]; if ( (unsigned __int8)(v5 - 48) > 9u ) { if ( (_BYTE)v5 != 95 ) { if ( (unsigned __int8)(v5 - 65) > 0x19u ) goto LABEL_3; LABEL_16: v11 = 0; if ( (unsigned __int8)(v5 - 48) > 9u ) goto LABEL_22; LABEL_17: for ( i = v5 + 36 * v11 - 48; v11 <= i; i = v5 + 36 * v11 - 55 ) { v13 = *(char **)(a1 + 12); v5 = *v13; if ( (_BYTE)v5 ) { *(_DWORD *)(a1 + 12) = v13 + 1; v5 = *v13; if ( (_BYTE)v5 == 95 ) { v14 = i + 1; goto LABEL_26; } } v11 = i; if ( (unsigned __int8)(v5 - 48) <= 9u ) goto LABEL_17; LABEL_22: if ( (unsigned __int8)(v5 - 65) > 0x19u ) return 0; } return 0; } } else if ( (_BYTE)v5 != 95 ) { goto LABEL_16; } v14 = 0; LABEL_26: if ( *(_DWORD *)(a1 + 32) <= v14 ) return 0; return *(_DWORD **)(*(_DWORD *)(a1 + 28) + 4 * v14); } //----- (004578C0) -------------------------------------------------------- int __usercall d_print_java_identifier@(int result@, unsigned int a2@, int a3@) { unsigned int v3; // edi int v4; // ebx char *i; // ebp int v6; // ecx char v7; // dl unsigned int v8; // esi _BYTE *v9; // ebx int v10; // eax char v11; // cl int v12; // eax _BYTE *v13; // esi int v14; // eax int v15; // [esp+14h] [ebp-28h] char v16; // [esp+14h] [ebp-28h] unsigned int v17; // [esp+14h] [ebp-28h] int v18; // [esp+18h] [ebp-24h] char *v19; // [esp+1Ch] [ebp-20h] v3 = a2 + a3; if ( a2 < a2 + a3 ) { v4 = result; for ( i = (char *)a2; v3 > (unsigned int)i; ++i ) { v7 = *i; result = *(_DWORD *)(v4 + 256); if ( (int)(v3 - (_DWORD)i) <= 3 || v7 != 95 || i[1] != 95 || i[2] != 85 || v3 <= (unsigned int)(i + 3) ) { LABEL_3: if ( result == 255 ) { v12 = *(_DWORD *)(v4 + 268); *(_BYTE *)(v4 + 255) = 0; v16 = v7; (*(void (__cdecl **)(int, int, int))(v4 + 264))(v4, 255, v12); ++*(_DWORD *)(v4 + 296); v7 = v16; result = 0; v6 = 1; } else { v6 = result + 1; } *(_DWORD *)(v4 + 256) = v6; *(_BYTE *)(v4 + result) = v7; *(_BYTE *)(v4 + 260) = v7; continue; } v18 = v4; v8 = 0; v9 = i + 3; v15 = result; while ( 1 ) { v11 = *v9; LOBYTE(v10) = *v9 - 48; if ( (unsigned __int8)v10 <= 9u ) { v10 = (char)v10; goto LABEL_15; } if ( (unsigned __int8)(v11 - 65) > 5u ) break; v10 = (char)(v11 - 55); LABEL_15: ++v9; v8 = v10 + 16 * v8; if ( (_BYTE *)v3 == v9 ) { result = v15; v4 = v18; goto LABEL_3; } } if ( (unsigned __int8)(v11 - 97) <= 5u ) { v10 = (char)(v11 - 87); goto LABEL_15; } result = v15; v17 = v8; v13 = v9; v19 = v9; v4 = v18; if ( v3 <= (unsigned int)v13 || v17 > 0xFF || v11 != 95 ) goto LABEL_3; if ( result == 255 ) { v14 = *(_DWORD *)(v18 + 268); *(_BYTE *)(v18 + 255) = 0; (*(void (__cdecl **)(int, int, int))(v18 + 264))(v18, 255, v14); ++*(_DWORD *)(v18 + 296); result = 0; } i = v19; *(_DWORD *)(v18 + 256) = result + 1; *(_BYTE *)(v18 + result) = v17; *(_BYTE *)(v18 + 260) = v17; } } return result; } //----- (00457A70) -------------------------------------------------------- int *__usercall d_type@( _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; // esi int v14; // edi unsigned int *v15; // eax unsigned int *name; // esi int *result; // eax int **v18; // esi int *v19; // eax int *v20; // edx int *v21; // ecx int v22; // edx int v23; // edx int v24; // ecx int v25; // edx int v26; // edx char v27; // al _BYTE *v28; // edx int v29; // eax int v30; // eax int v31; // eax int v32; // eax _DWORD *v33; // eax int v34; // eax int *comp; // esi _BYTE *v36; // eax int v37; // eax _BYTE *v38; // esi int v39; // ecx _DWORD *v40; // ecx _BYTE *v41; // edx char v42; // al char *v43; // esi char *v44; // ecx int v45; // eax int v46; // esi int v47; // eax int v48; // esi unsigned int *v49; // eax _BYTE *v50; // edx int v51; // eax int *v52; // edi unsigned __int8 v53; // al char *v54; // eax char v55; // dl int v56; // edx int v57; // eax int v58; // edx int v59; // eax int v60; // edx int v61; // edx int v62; // edx int v63; // edx int v64; // eax unsigned int *v65; // esi _BYTE *v66; // eax int v67; // eax int v68; // edx int v69; // edx int v70; // edx int v71; // eax int v72; // edx _DWORD *v73; // eax int v74; // ebp int v75; // edi _DWORD *v76; // ecx int *v77; // edx int v78; // eax int v79; // edi unsigned int *v80; // eax _DWORD *v81; // [esp+0h] [ebp-4Ch] int v82; // [esp+1Ch] [ebp-30h] int *v83; // [esp+2Ch] [ebp-20h] BYREF v13 = (char *)a1[3]; if ( next_is_type_qual_isra_0(v13) ) { v18 = d_cv_qualifiers(a1, &v83, 0); if ( v18 ) { v19 = *(_BYTE *)a1[3] == 70 ? d_function_type((int)a1) : (int *)d_type(); *v18 = v19; v20 = v19; if ( v19 ) { result = v83; if ( (unsigned int)(*v20 - 31) <= 1 ) { v21 = (int *)v20[3]; v20[3] = (int)v83; v83 = *v18; *v18 = v21; result = v83; } if ( result ) { v22 = a1[8]; if ( v22 < a1[9] ) { *(_DWORD *)(a1[7] + 4 * v22) = result; a1[8] = v22 + 1; return result; } } } } } else { switch ( *v13 ) { 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(a1); v83 = result; goto LABEL_19; case 'A': v41 = v13 + 1; a1[3] = v13 + 1; v42 = v13[1]; if ( v42 == 95 ) { name = 0; LABEL_53: a1[3] = v41 + 1; v45 = d_type(); result = d_make_comp(a1, 42, (int)name, v45); v83 = result; goto LABEL_19; } if ( (unsigned __int8)(v42 - 48) > 9u ) { v14 = a1[12]; a1[12] = 1; v15 = d_expression_1(a1); a1[12] = v14; name = v15; if ( !v15 ) return 0; LABEL_52: v41 = (_BYTE *)a1[3]; if ( *v41 != 95 ) return 0; goto LABEL_53; } v43 = v13 + 2; do { v44 = v43; a1[3] = v43++; } while ( (unsigned __int8)(*v44 - 48) <= 9u ); name = d_make_name(a1, (int)v41, v44 - v41); if ( name ) goto LABEL_52; break; case 'C': a1[3] = v13 + 1; v34 = d_type(); result = d_make_comp(a1, 37, v34, 0); v83 = result; goto LABEL_19; case 'D': a1[3] = v13 + 1; if ( !v13[1] ) return 0; a1[3] = v13 + 2; switch ( v13[1] ) { case 'F': v51 = a1[5]; if ( v51 >= a1[6] ) { MEMORY[0] = 0; BUG(); } v52 = (int *)(a1[4] + 20 * v51); v52[1] = 0; v52[2] = 0; v83 = v52; a1[5] = v51 + 1; *v52 = 44; v53 = v13[2] - 48; *((_WORD *)v52 + 8) = v53 <= 9u; if ( v53 <= 9u ) { d_number((int)a1); v52 = v83; } v52[3] = d_type(); if ( !v83[3] ) return 0; d_number((int)a1); v54 = (char *)a1[3]; v55 = *v54; if ( *v54 ) { a1[3] = v54 + 1; v55 = *v54; } result = v83; *((_WORD *)v83 + 9) = v55 == 115; return result; case 'T': case 't': v48 = a1[12]; a1[12] = 1; v49 = d_expression_1(a1); a1[12] = v48; result = d_make_comp(a1, 67, (int)v49, 0); v83 = result; if ( result ) { v50 = (_BYTE *)a1[3]; if ( *v50 ) { a1[3] = v50 + 1; if ( *v50 == 69 ) goto LABEL_20; } } return 0; case 'a': v58 = a1[5]; if ( v58 >= a1[6] ) return 0; v59 = a1[4]; a1[5] = v58 + 1; result = (int *)(v59 + 20 * v58); result[1] = 0; result[2] = 0; *result = 0; result[3] = (int)"auto"; result[4] = 4; return result; case 'c': v56 = a1[5]; if ( v56 >= a1[6] ) return 0; v57 = a1[4]; a1[5] = v56 + 1; result = (int *)(v57 + 20 * v56); result[1] = 0; result[2] = 0; *result = 0; result[3] = (int)"decltype(auto)"; result[4] = 14; return result; case 'd': v68 = a1[5]; if ( v68 >= a1[6] ) { v83 = 0; BUG(); } result = (int *)(a1[4] + 20 * v68); result[1] = 0; result[2] = 0; a1[5] = v68 + 1; *result = 39; result[3] = (int)&off_559C9C; a1[11] += 9; return result; case 'e': v63 = a1[5]; if ( v63 >= a1[6] ) { v83 = 0; BUG(); } result = (int *)(a1[4] + 20 * v63); result[1] = 0; result[2] = 0; a1[5] = v63 + 1; *result = 39; result[3] = (int)&off_559CB0; a1[11] += 10; return result; case 'f': v61 = a1[5]; if ( v61 >= a1[6] ) { v83 = 0; BUG(); } result = (int *)(a1[4] + 20 * v61); result[1] = 0; result[2] = 0; a1[5] = v61 + 1; *result = 39; result[3] = (int)&off_559C88; a1[11] += 9; return result; case 'h': v60 = a1[5]; if ( v60 >= a1[6] ) { v83 = 0; BUG(); } result = (int *)(a1[4] + 20 * v60); result[1] = 0; result[2] = 0; a1[5] = v60 + 1; *result = 39; result[3] = (int)&off_559CC4; a1[11] += 4; return result; case 'i': v72 = a1[5]; if ( v72 >= a1[6] ) { v83 = 0; BUG(); } result = (int *)(a1[4] + 20 * v72); result[1] = 0; result[2] = 0; a1[5] = v72 + 1; *result = 39; result[3] = (int)&off_559D00; a1[11] += 8; return result; case 'n': v69 = a1[5]; if ( v69 >= a1[6] ) { v83 = 0; BUG(); } result = (int *)(a1[4] + 20 * v69); result[1] = 0; result[2] = 0; a1[5] = v69 + 1; *result = 39; result[3] = (int)&off_559D14; a1[11] += 17; return result; case 'p': v71 = d_type(); result = d_make_comp(a1, 75, v71, 0); v83 = result; goto LABEL_19; case 's': v62 = a1[5]; if ( v62 >= a1[6] ) { v83 = 0; BUG(); } result = (int *)(a1[4] + 20 * v62); result[1] = 0; result[2] = 0; a1[5] = v62 + 1; *result = 39; result[3] = (int)&off_559CEC; a1[11] += 8; return result; case 'u': v70 = a1[5]; if ( v70 >= a1[6] ) { v83 = 0; BUG(); } result = (int *)(a1[4] + 20 * v70); result[1] = 0; result[2] = 0; a1[5] = v70 + 1; *result = 39; result[3] = (int)&off_559CD8; a1[11] += 7; return result; case 'v': if ( v13[2] == 95 ) { v79 = a1[12]; a1[12] = 1; a1[3] = v13 + 3; v80 = d_expression_1(a1); a1[12] = v79; v65 = v80; if ( !v80 ) return 0; } else { v64 = a1[5]; if ( v64 >= a1[6] ) return 0; v65 = (unsigned int *)(a1[4] + 20 * v64); v65[1] = 0; v65[2] = 0; a1[5] = v64 + 1; *v65 = 66; v65[3] = d_number((int)a1); } v66 = (_BYTE *)a1[3]; if ( *v66 != 95 ) return 0; a1[3] = v66 + 1; v67 = d_type(); result = d_make_comp(a1, 45, (int)v65, v67); v83 = result; break; default: return 0; } goto LABEL_19; case 'F': result = d_function_type((int)a1); v83 = result; goto LABEL_19; case 'G': a1[3] = v13 + 1; v32 = d_type(); result = d_make_comp(a1, 38, v32, 0); v83 = result; goto LABEL_19; case 'M': a1[3] = v13 + 1; v46 = d_type(); if ( !v46 ) return 0; v47 = d_type(); if ( !v47 ) return 0; result = d_make_comp(a1, 43, v46, v47); v83 = result; goto LABEL_19; case 'O': a1[3] = v13 + 1; v31 = d_type(); result = d_make_comp(a1, 36, v31, 0); v83 = result; goto LABEL_19; case 'P': a1[3] = v13 + 1; v30 = d_type(); result = d_make_comp(a1, 34, v30, 0); v83 = result; goto LABEL_19; case 'R': a1[3] = v13 + 1; v29 = d_type(); result = d_make_comp(a1, 35, v29, 0); v83 = result; goto LABEL_19; case 'S': v27 = v13[1]; if ( (unsigned __int8)(v27 - 48) <= 9u || v27 == 95 || (unsigned __int8)(v27 - 65) <= 0x19u ) { result = d_substitution((int)a1, 0); v28 = (_BYTE *)a1[3]; v83 = result; if ( *v28 != 73 ) return result; a1[3] = v28 + 1; v81 = d_template_args_1(a1); result = d_make_comp(a1, 4, (int)v83, (int)v81); goto LABEL_27; } result = d_name(a1); v83 = result; if ( !result ) return 0; if ( *result == 24 ) return result; goto LABEL_20; case 'T': result = d_template_param(a1); v38 = (_BYTE *)a1[3]; v83 = result; if ( *v38 != 73 ) goto LABEL_19; if ( a1[13] ) { v74 = a1[5]; v75 = a1[8]; v82 = a1[11]; a1[3] = v38 + 1; v76 = d_template_args_1(a1); if ( *(_BYTE *)a1[3] == 73 ) { v77 = v83; if ( !v83 ) return 0; v78 = a1[8]; if ( v78 >= a1[9] ) return 0; *(_DWORD *)(a1[7] + 4 * v78) = v83; a1[8] = v78 + 1; result = d_make_comp(a1, 4, (int)v77, (int)v76); v83 = result; } else { a1[3] = v38; a1[5] = v74; a1[11] = v82; result = v83; a1[8] = v75; } } else { if ( !result ) return 0; v39 = a1[8]; if ( v39 >= a1[9] ) return 0; *(_DWORD *)(a1[7] + 4 * v39) = result; a1[8] = v39 + 1; v40 = 0; if ( (unsigned __int8)(*v38 - 73) <= 1u ) { a1[3] = v38 + 1; v40 = d_template_args_1(a1); } result = d_make_comp(a1, 4, (int)v83, (int)v40); LABEL_27: v83 = result; } LABEL_19: if ( !result ) return 0; LABEL_20: v26 = a1[8]; if ( v26 < a1[9] ) { *(_DWORD *)(a1[7] + 4 * v26) = result; result = v83; a1[8] = v26 + 1; return result; } return 0; case 'U': a1[3] = v13 + 1; v83 = d_source_name((int)a1); comp = v83; v36 = (_BYTE *)a1[3]; if ( *v36 == 73 ) { a1[3] = v36 + 1; v73 = d_template_args_1(a1); comp = d_make_comp(a1, 4, (int)v83, (int)v73); } v37 = d_type(); result = d_make_comp(a1, 33, v37, (int)comp); v83 = result; goto LABEL_19; 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': v23 = a1[5]; v24 = 20 * (char)(*v13 - 97) + 5610112; if ( v23 >= a1[6] ) d_type_cold(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); result = (int *)(a1[4] + 20 * v23); result[1] = 0; result[2] = 0; a1[5] = v23 + 1; v25 = *(_DWORD *)(v24 + 4); *result = 39; result[3] = v24; a1[11] += v25; a1[3] = v13 + 1; return result; case 'u': a1[3] = v13 + 1; v33 = d_source_name((int)a1); result = d_make_comp(a1, 40, (int)v33, 0); v83 = result; goto LABEL_19; default: return 0; } } return 0; } // 559C88: using guessed type char *off_559C88; // 559C9C: using guessed type char *off_559C9C; // 559CB0: using guessed type char *off_559CB0; // 559CC4: using guessed type char *off_559CC4; // 559CD8: using guessed type char *off_559CD8; // 559CEC: using guessed type char *off_559CEC; // 559D00: using guessed type char *off_559D00; // 559D14: using guessed type char *off_559D14; //----- (004583F0) -------------------------------------------------------- _DWORD *__usercall d_operator_name@(_DWORD *a1@) { unsigned __int8 *v2; // eax unsigned __int8 v3; // si unsigned __int8 v4; // cl int v5; // edx unsigned __int8 v6; // bp void **v7; // edi _BYTE *v8; // ecx bool v9; // cc _DWORD *result; // eax int v11; // edx char v12; // bl _DWORD *v13; // eax int v14; // edx _DWORD *v15; // ecx int v16; // ebx int v17; // ecx int v18; // [esp+18h] [ebp-24h] _DWORD *v19; // [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: v19 = a1; v5 = 0; v6 = v4; v18 = 69; while ( 1 ) { v7 = &cplus_demangle_operators + 4 * v5 + 4 * ((v18 - v5) / 2); v8 = *v7; v9 = *(_BYTE *)*v7 <= v3; if ( *(_BYTE *)*v7 == v3 ) { v9 = v8[1] <= v6; if ( v8[1] == v6 ) break; } if ( v9 ) v5 += (v18 - v5) / 2 + 1; else v18 = v5 + (v18 - v5) / 2; if ( v5 == v18 ) return 0; } v11 = v19[5]; if ( v11 < v19[6] ) { result = (_DWORD *)(v19[4] + 20 * v11); result[1] = 0; result[2] = 0; v19[5] = v11 + 1; *result = 50; result[3] = v7; return result; } return 0; } a1[3] = v2 + 2; v4 = v2[1]; if ( v3 == 118 ) { v12 = v4 - 48; if ( (unsigned __int8)(v4 - 48) > 9u ) goto LABEL_3; v13 = d_source_name((int)a1); v14 = a1[5]; v15 = v13; if ( v14 >= a1[6] ) return 0; result = (_DWORD *)(a1[4] + 20 * v14); result[1] = 0; result[2] = 0; a1[5] = v14 + 1; if ( !v15 ) return 0; result[1] = 0; result[2] = 0; *result = 51; result[3] = v12; result[4] = v15; } else { if ( v4 != 118 || v3 != 99 ) goto LABEL_3; v16 = a1[13]; a1[13] = a1[12] == 0; v17 = d_type(); if ( a1[13] ) result = d_make_comp(a1, 53, v17, 0); else result = d_make_comp(a1, 52, v17, 0); a1[13] = v16; } return result; } // 457A70: using guessed type int d_type(void); // 559500: using guessed type void *cplus_demangle_operators; //----- (004585B0) -------------------------------------------------------- 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 + 4; v3 = *v2; if ( *v2 == 69 || *v2 == 0 ) break; } while ( v3 != 46 ); result = v10; if ( !v10 ) return 0; if ( !*(_DWORD *)(v10 + 16) ) { v8 = *(_DWORD **)(v10 + 12); if ( *v8 == 39 ) { v9 = v8[3]; if ( *(_DWORD *)(v9 + 16) == 9 ) { a1[11] -= *(_DWORD *)(v9 + 4); *(_DWORD *)(result + 12) = 0; } } } return result; } // 457A70: using guessed type int d_type(void); //----- (00458680) -------------------------------------------------------- _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; } // 457A70: using guessed type int d_type(void); //----- (004586F0) -------------------------------------------------------- _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; } //----- (00458780) -------------------------------------------------------- _DWORD *__usercall d_unqualified_name@(_DWORD *a1@) { char *v2; // eax char v3; // cl _DWORD *v4; // eax _DWORD *comp; // esi char v6; // dl char v8; // dl char *v9; // ecx char v10; // dl int v11; // eax bool v12; // sf int v13; // ecx int v14; // eax int v15; // edx int v16; // edi _DWORD *v17; // eax int v18; // eax int v19; // edx _BYTE *v20; // eax _DWORD *v21; // eax _DWORD *v22; // edi int v23; // edx int v24; // ecx int v25; // edi char v26; // dl int v27; // eax int v28; // ecx int v29; // edx int v30; // ecx int v31; // edi int v32; // eax int v33; // edx _DWORD *v34; // [esp+1Ch] [ebp-20h] v2 = (char *)a1[3]; v3 = *v2; if ( (unsigned __int8)(*v2 - 48) > 9u ) { 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 ) { v18 = v4[3]; v19 = *(_DWORD *)(v18 + 8); v20 = *(_BYTE **)v18; a1[11] += v19 + 7; if ( *v20 == 108 && v20[1] == 105 && !v20[2] ) { v21 = d_source_name((int)a1); comp = d_make_comp(a1, 55, (int)comp, (int)v21); v2 = (char *)a1[3]; v6 = *v2; goto LABEL_7; } } } LABEL_6: v2 = (char *)a1[3]; v6 = *v2; goto LABEL_7; } if ( (unsigned __int8)(v3 - 67) > 1u ) { if ( v3 != 76 ) { if ( v3 != 85 ) return 0; v8 = v2[1]; if ( v8 == 108 ) { v9 = v2 + 1; a1[3] = v2 + 1; v6 = v2[1]; if ( v6 == 108 ) { a1[3] = v2 + 2; v25 = d_parmlist(a1); v2 = (char *)a1[3]; v6 = *v2; if ( !v25 || v6 != 69 ) goto LABEL_43; a1[3] = v2 + 1; v26 = v2[1]; if ( v26 == 95 ) { v2 += 2; v28 = 0; a1[3] = v2; } else { if ( v26 == 110 ) return 0; v27 = d_number((int)a1); v12 = v27 + 1 < 0; v28 = v27 + 1; v2 = (char *)a1[3]; v6 = *v2; if ( v12 || v6 != 95 ) goto LABEL_43; a1[3] = ++v2; } v29 = a1[5]; if ( v29 < a1[6] ) { comp = (_DWORD *)(a1[4] + 20 * v29); comp[1] = 0; comp[2] = 0; a1[5] = v29 + 1; v15 = a1[8]; *comp = 70; comp[3] = v25; comp[4] = v28; if ( v15 < a1[9] ) goto LABEL_22; } goto LABEL_64; } } else { if ( v8 != 116 ) return 0; v9 = v2 + 1; a1[3] = v2 + 1; v6 = v2[1]; if ( v6 == 116 ) { a1[3] = v2 + 2; v10 = v2[2]; if ( v10 == 95 ) { v13 = 0; a1[3] = v2 + 3; LABEL_20: v14 = a1[5]; if ( v14 < a1[6] ) { comp = (_DWORD *)(a1[4] + 20 * v14); v15 = a1[8]; comp[1] = 0; comp[2] = 0; a1[5] = v14 + 1; v2 = (char *)a1[3]; *comp = 72; comp[3] = v13; if ( v15 < a1[9] ) { LABEL_22: *(_DWORD *)(a1[7] + 4 * v15) = comp; a1[8] = v15 + 1; v6 = *v2; goto LABEL_7; } goto LABEL_64; } goto LABEL_71; } if ( v10 != 110 ) { v11 = d_number((int)a1); v12 = v11 + 1 < 0; v13 = v11 + 1; v2 = (char *)a1[3]; v6 = *v2; if ( !v12 && v6 == 95 ) { a1[3] = v2 + 1; goto LABEL_20; } LABEL_43: comp = 0; goto LABEL_7; } return 0; } } v2 = v9; comp = 0; goto LABEL_7; } a1[3] = v2 + 1; comp = d_source_name((int)a1); if ( comp && d_discriminator((int)a1) ) goto LABEL_6; return 0; } v22 = (_DWORD *)a1[10]; v34 = v22; if ( v22 && (!*v22 || *v22 == 24) ) { a1[11] += v22[4]; v6 = *v2; v3 = *v2; if ( *v2 != 67 ) { if ( v6 != 68 ) goto LABEL_43; goto LABEL_40; } } else if ( v3 != 67 ) { LABEL_40: switch ( v2[1] ) { case '0': v23 = 1; goto LABEL_46; case '1': v23 = 2; goto LABEL_46; case '2': v23 = 3; goto LABEL_46; case '4': v23 = 4; goto LABEL_46; case '5': v23 = 5; LABEL_46: v24 = a1[5]; a1[3] = v2 + 2; if ( v24 < a1[6] && (comp = (_DWORD *)(a1[4] + 20 * v24), comp[1] = 0, comp[2] = 0, a1[5] = v24 + 1, v22) ) { comp[1] = 0; comp[2] = 0; *comp = 8; comp[3] = v23; comp[4] = v22; v6 = v2[2]; v2 += 2; } else { v6 = v2[2]; comp = 0; v2 += 2; } break; default: v6 = v3; comp = 0; break; } LABEL_7: if ( v6 != 66 ) return comp; goto LABEL_24; } v30 = v2[1]; if ( (_BYTE)v30 == 73 ) { a1[3] = v2 + 1; v33 = v2[2]; if ( (unsigned __int8)(v33 - 49) > 4u ) { v6 = v2[1]; comp = 0; ++v2; goto LABEL_7; } v31 = v33 - 48; a1[3] = v2 + 3; d_type(); v34 = (_DWORD *)a1[10]; } else { if ( (unsigned __int8)(v30 - 49) > 4u ) return 0; v31 = v30 - 48; a1[3] = v2 + 2; } v32 = a1[5]; if ( v32 < a1[6] ) { comp = (_DWORD *)(a1[4] + 20 * v32); comp[1] = 0; comp[2] = 0; a1[5] = v32 + 1; if ( v34 ) { comp[1] = 0; comp[2] = 0; *comp = 7; comp[3] = v31; comp[4] = v34; goto LABEL_6; } } LABEL_71: v2 = (char *)a1[3]; LABEL_64: v6 = *v2; comp = 0; goto LABEL_7; } comp = d_source_name((int)a1); v2 = (char *)a1[3]; if ( *v2 != 66 ) return comp; LABEL_24: v16 = a1[10]; do { a1[3] = v2 + 1; v17 = d_source_name((int)a1); comp = d_make_comp(a1, 76, (int)comp, (int)v17); v2 = (char *)a1[3]; } while ( *v2 == 66 ); a1[10] = v16; return comp; } // 457A70: using guessed type int d_type(void); //----- (00458C60) -------------------------------------------------------- int *__usercall d_name@(_DWORD *a1@) { char *v2; // edx char v3; // al int *v4; // esi _BYTE *v5; // eax char v7; // al _DWORD *v8; // esi _BYTE *v9; // eax char v10; // dl _DWORD *v11; // eax _DWORD *v12; // edi _BYTE *v13; // eax int v14; // edx _DWORD *v15; // ecx _DWORD *v17; // edx int v18; // eax int v19; // ecx _DWORD *v20; // ecx int *comp; // eax int v22; // edx _DWORD *v23; // eax int **v24; // ebp unsigned __int8 *v25; // edx _DWORD *v26; // eax int *v27; // edi int v28; // ebx _DWORD *v29; // esi unsigned int v30; // eax int *v31; // eax int v32; // edx int v33; // eax int v34; // ecx char v35; // dl int v36; // ebp _BYTE *v37; // eax _DWORD *v38; // edx int v39; // eax _DWORD *v40; // ebx int *v41; // eax _BYTE *v42; // eax _DWORD *v43; // eax int v44; // eax int v45; // edx int v46; // eax int *v47; // [esp+1Ch] [ebp-30h] _DWORD *v48; // [esp+1Ch] [ebp-30h] int *v49; // [esp+2Ch] [ebp-20h] BYREF v2 = (char *)a1[3]; v3 = *v2; if ( *v2 == 85 ) return d_unqualified_name(a1); if ( v3 > 85 ) { if ( v3 != 90 ) goto LABEL_21; a1[3] = v2 + 1; v7 = v2[1]; if ( v7 == 71 || v7 == 84 ) v8 = d_special_name(a1); else v8 = d_encoding_part_0((int)a1, 0); if ( !v8 ) return 0; v9 = (_BYTE *)a1[3]; if ( *v9 != 69 ) return 0; a1[3] = v9 + 1; v10 = v9[1]; if ( v10 == 115 ) { a1[3] = v9 + 2; if ( !d_discriminator((int)a1) ) return 0; v44 = a1[5]; if ( v44 < a1[6] ) { v45 = a1[4]; a1[5] = v44 + 1; v12 = (_DWORD *)(v45 + 20 * v44); v12[1] = 0; v12[2] = 0; *v12 = 0; v12[3] = "string literal"; v12[4] = 14; goto LABEL_18; } } else { if ( v10 != 100 ) { v11 = (_DWORD *)d_name(); v12 = v11; if ( v11 && ((*v11 - 70) & 0xFFFFFFFD) != 0 && !d_discriminator((int)a1) ) return 0; goto LABEL_18; } a1[3] = v9 + 2; v35 = v9[2]; if ( v35 == 95 ) { v36 = 0; a1[3] = v9 + 3; } else { if ( v35 == 110 ) return 0; v36 = d_number((int)a1) + 1; if ( v36 < 0 ) return 0; v37 = (_BYTE *)a1[3]; if ( *v37 != 95 ) return 0; a1[3] = v37 + 1; } v38 = (_DWORD *)d_name(); if ( v38 ) { if ( ((*v38 - 70) & 0xFFFFFFFD) != 0 ) { v48 = v38; v46 = d_discriminator((int)a1); v38 = v48; if ( !v46 ) return 0; } } v39 = a1[5]; if ( v39 < a1[6] ) { v12 = (_DWORD *)(a1[4] + 20 * v39); v12[1] = 0; v12[2] = 0; a1[5] = v39 + 1; *v12 = 71; v12[4] = v36; v12[3] = v38; goto LABEL_18; } } v12 = 0; LABEL_18: if ( *v8 == 3 ) { v43 = (_DWORD *)v8[4]; if ( *v43 == 41 ) v43[3] = 0; } return d_make_comp(a1, 2, (int)v8, (int)v12); } if ( v3 != 78 ) { if ( v3 == 83 ) { if ( v2[1] != 116 ) { v4 = d_substitution((int)a1, 0); v5 = (_BYTE *)a1[3]; if ( *v5 != 73 ) return v4; goto LABEL_62; } a1[3] = v2 + 2; v17 = d_unqualified_name(a1); v18 = a1[5]; if ( v18 >= a1[6] ) { v20 = 0; } else { v19 = a1[4]; a1[5] = v18 + 1; v20 = (_DWORD *)(v19 + 20 * v18); v20[1] = 0; v20[2] = 0; *v20 = 0; v20[3] = &off_558A2B; v20[4] = 3; } comp = d_make_comp(a1, 1, (int)v20, (int)v17); a1[11] += 3; v4 = comp; v5 = (_BYTE *)a1[3]; if ( *v5 == 73 ) { if ( !v4 ) return 0; v22 = a1[8]; if ( v22 >= a1[9] ) return 0; *(_DWORD *)(a1[7] + 4 * v22) = v4; a1[8] = v22 + 1; if ( (unsigned __int8)(*v5 - 73) > 1u ) { v23 = 0; return d_make_comp(a1, 4, (int)v4, (int)v23); } LABEL_62: a1[3] = v5 + 1; v23 = d_template_args_1(a1); return d_make_comp(a1, 4, (int)v4, (int)v23); } return v4; } LABEL_21: v4 = d_unqualified_name(a1); v13 = (_BYTE *)a1[3]; if ( *v13 != 73 ) return v4; if ( !v4 ) return 0; v14 = a1[8]; if ( v14 >= a1[9] ) return 0; *(_DWORD *)(a1[7] + 4 * v14) = v4; v15 = 0; a1[8] = v14 + 1; if ( (unsigned __int8)(*v13 - 73) <= 1u ) { a1[3] = v13 + 1; v15 = d_template_args_1(a1); } return d_make_comp(a1, 4, (int)v4, (int)v15); } a1[3] = v2 + 1; v24 = d_cv_qualifiers(a1, &v49, 1); if ( !v24 ) return 0; v47 = d_ref_qualifier(a1, 0); if ( !*(_BYTE *)a1[3] ) { LABEL_51: *v24 = 0; return 0; } v25 = (unsigned __int8 *)a1[3]; v26 = a1; v27 = 0; v28 = *v25; v29 = v26; while ( 1 ) { if ( (_BYTE)v28 == 68 ) { if ( (v25[1] & 0xDF) == 84 ) v31 = (int *)d_type(); else v31 = d_unqualified_name(v29); LABEL_55: v32 = 1; if ( v27 ) goto LABEL_44; goto LABEL_56; } v30 = v28 - 48; if ( (unsigned __int8)(v28 - 48) <= 0x1Cu ) goto LABEL_58; if ( (unsigned __int8)(v28 - 97) <= 0x19u ) break; if ( (_BYTE)v28 == 85 ) { v31 = d_unqualified_name(v29); if ( v27 ) { LABEL_43: v32 = 1; LABEL_44: v27 = d_make_comp(v29, v32, (int)v27, (int)v31); goto LABEL_45; } LABEL_56: v25 = (unsigned __int8 *)v29[3]; v27 = v31; goto LABEL_46; } if ( (_BYTE)v28 != 83 ) goto LABEL_75; v31 = d_substitution((int)v29, 1); if ( v27 ) goto LABEL_43; v25 = (unsigned __int8 *)v29[3]; v27 = v31; LABEL_50: v28 = *v25; if ( !(_BYTE)v28 ) goto LABEL_51; } do { v31 = d_unqualified_name(v29); if ( v27 ) goto LABEL_43; v27 = v31; LABEL_45: v25 = (unsigned __int8 *)v29[3]; if ( (_BYTE)v28 == 83 ) goto LABEL_50; LABEL_46: LOBYTE(v28) = *v25; if ( *v25 != 69 ) { if ( !v27 ) goto LABEL_51; v33 = v29[8]; if ( v33 >= v29[9] ) goto LABEL_51; *(_DWORD *)(v29[7] + 4 * v33) = v27; v29[8] = v33 + 1; goto LABEL_50; } v30 = 21; LABEL_58: v34 = 268960767; } while ( _bittest(&v34, v30) ); if ( (_BYTE)v28 == 73 ) { if ( !v27 ) goto LABEL_51; v29[3] = v25 + 1; v31 = d_template_args_1(v29); v32 = 4; goto LABEL_44; } LABEL_75: if ( (_BYTE)v28 == 84 ) { v31 = d_template_param(v29); goto LABEL_55; } if ( (_BYTE)v28 != 69 ) { if ( !v27 || (_BYTE)v28 != 77 ) goto LABEL_51; v29[3] = ++v25; goto LABEL_50; } *v24 = v27; v40 = v29; if ( v27 ) { if ( v47 ) { v41 = v49; v49 = v47; v47[3] = (int)v41; } v42 = (_BYTE *)v29[3]; if ( *v42 == 69 ) { v4 = v49; v40[3] = v42 + 1; return v4; } } return 0; } // 457A70: using guessed type int d_type(void); // 558A2B: using guessed type void *off_558A2B; //----- (00459230) -------------------------------------------------------- unsigned int *__usercall d_encoding_part_0@(int a1@, int a2@) { int v4; // eax unsigned int *v5; // ebx unsigned int v6; // eax int *i; // edx int v8; // eax char v10; // al unsigned int *v11; // edx unsigned int v12; // eax int v13; // edx _DWORD *v14; // eax unsigned int *v15; // edx unsigned int v16; // eax v4 = d_name(); if ( !v4 ) return 0; v5 = (unsigned int *)v4; if ( !a2 || (*(_BYTE *)(a1 + 8) & 1) != 0 ) { v10 = **(_BYTE **)(a1 + 12); if ( v10 && v10 != 69 ) { v11 = v5; while ( 1 ) { v12 = *v11; if ( *v11 == 4 ) break; if ( *v11 > 4 ) { if ( v12 != 77 ) { if ( v12 <= 0x4D ) { if ( v12 - 28 > 4 ) { LABEL_21: v13 = 0; goto LABEL_22; } } else if ( v12 - 79 > 1 ) { goto LABEL_21; } } v11 = (unsigned int *)v11[3]; } else { if ( v12 != 2 ) goto LABEL_21; v11 = (unsigned int *)v11[4]; } if ( !v11 ) goto LABEL_21; } v15 = (unsigned int *)v11[3]; if ( v15 ) { while ( 1 ) { v16 = *v15; if ( *v15 > 8 ) break; if ( v16 > 6 ) goto LABEL_21; if ( v16 - 1 <= 1 ) { v15 = (unsigned int *)v15[4]; if ( v15 ) continue; } goto LABEL_42; } v13 = v16 != 53; } else { LABEL_42: v13 = 1; } LABEL_22: v14 = d_bare_function_type((_DWORD *)a1, v13); if ( !v14 ) return 0; if ( !a2 && *v5 == 2 && *v14 == 41 ) v14[3] = 0; return d_make_comp((_DWORD *)a1, 3, (int)v5, (int)v14); } return v5; } while ( 1 ) { v6 = *v5; if ( *v5 == 77 ) goto LABEL_27; if ( *v5 <= 0x4D ) break; if ( v6 - 79 > 1 ) return v5; LABEL_27: v5 = (unsigned int *)v5[3]; } if ( v6 - 28 <= 4 ) goto LABEL_27; if ( v6 != 2 ) return v5; for ( i = (int *)v5[4]; i; v5[4] = (unsigned int)i ) { v8 = *i; if ( *i != 77 ) { if ( (unsigned int)*i > 0x4D ) { if ( (unsigned int)(v8 - 79) > 1 ) return v5; } else if ( (unsigned int)(v8 - 28) > 4 ) { return v5; } } i = (int *)i[3]; } return 0; } // 458C60: using guessed type int d_name(void); //----- (00459400) -------------------------------------------------------- _DWORD *__usercall d_special_name@(_DWORD *a1@) { int v2; // ecx _BYTE *v3; // eax char v4; // dl int v5; // eax _BYTE *v6; // edx _BYTE *v7; // esi int v8; // edi _DWORD *comp; // ebp char v10; // al int v11; // edx _DWORD *name; // eax _DWORD *result; // eax char v14; // al int v15; // edi int v16; // eax _DWORD *v17; // esi char v18; // al unsigned int *v19; // ecx int v20; // eax bool v21; // zf char v22; // al unsigned int *v23; // ecx unsigned int *v24; // ecx int v25; // eax int v26; // eax int v27; // esi _BYTE *v28; // eax int v29; // eax int v30; // eax unsigned int *v31; // eax char v32; // al unsigned int *v33; // ecx char v34; // al unsigned int *v35; // ecx char v36; // al unsigned int *v37; // ecx int v38; // eax int v39; // eax int v40; // eax int v41; // eax int v42; // eax int v43; // ecx char v44; // al int v45; // [esp+1Ch] [ebp-20h] int v46; // [esp+1Ch] [ebp-20h] v2 = a1[11]; a1[11] = v2 + 20; v3 = (_BYTE *)a1[3]; if ( *v3 == 84 ) { a1[3] = v3 + 1; if ( v3[1] ) { a1[3] = v3 + 2; v14 = v3[1] - 65; switch ( v14 ) { case 0: v31 = d_template_arg(a1); result = d_make_comp(a1, 48, (int)v31, 0); break; case 2: v27 = d_type(); if ( d_number((int)a1) < 0 ) return 0; v28 = (_BYTE *)a1[3]; if ( *v28 != 95 ) return 0; a1[3] = v28 + 1; v29 = d_type(); a1[11] += 5; result = d_make_comp(a1, 11, v29, v27); break; case 5: v26 = d_type(); result = d_make_comp(a1, 14, v26, 0); break; case 7: v30 = d_name(); result = d_make_comp(a1, 20, v30, 0); break; case 8: v25 = d_type(); result = d_make_comp(a1, 12, v25, 0); break; case 9: v42 = d_type(); result = d_make_comp(a1, 18, v42, 0); break; case 18: v41 = d_type(); result = d_make_comp(a1, 13, v41, 0); break; case 19: a1[11] = v2 + 10; v40 = d_type(); result = d_make_comp(a1, 10, v40, 0); break; case 21: a1[11] = v2 + 15; v39 = d_type(); result = d_make_comp(a1, 9, v39, 0); break; case 22: v38 = d_name(); result = d_make_comp(a1, 21, v38, 0); break; case 34: if ( !d_call_offset((int)a1, 0) || !d_call_offset((int)a1, 0) ) return 0; v36 = *(_BYTE *)a1[3]; if ( v36 == 71 || v36 == 84 ) v37 = (unsigned int *)d_special_name(); else v37 = d_encoding_part_0((int)a1, 0); result = d_make_comp(a1, 17, (int)v37, 0); break; case 39: if ( !d_call_offset((int)a1, 104) ) return 0; v34 = *(_BYTE *)a1[3]; if ( v34 == 71 || v34 == 84 ) v35 = (unsigned int *)d_special_name(); else v35 = d_encoding_part_0((int)a1, 0); result = d_make_comp(a1, 15, (int)v35, 0); break; case 53: if ( !d_call_offset((int)a1, 118) ) return 0; v32 = *(_BYTE *)a1[3]; if ( v32 == 71 || v32 == 84 ) v33 = (unsigned int *)d_special_name(); else v33 = d_encoding_part_0((int)a1, 0); result = d_make_comp(a1, 16, (int)v33, 0); break; default: return 0; } return result; } return 0; } if ( *v3 != 71 ) return 0; a1[3] = v3 + 1; if ( !v3[1] ) return 0; a1[3] = v3 + 2; v4 = v3[1]; if ( v4 == 84 ) { if ( !v3[2] ) goto LABEL_86; a1[3] = v3 + 3; v21 = v3[2] == 110; v22 = v3[3]; if ( v21 ) { if ( v22 == 71 || v22 == 84 ) v24 = (unsigned int *)d_special_name(); else v24 = d_encoding_part_0((int)a1, 0); return d_make_comp(a1, 74, (int)v24, 0); } if ( v22 == 71 || v22 == 84 ) v23 = (unsigned int *)d_special_name(); else LABEL_86: v23 = d_encoding_part_0((int)a1, 0); return d_make_comp(a1, 73, (int)v23, 0); } if ( v4 <= 84 ) { if ( v4 == 65 ) { v18 = v3[2]; if ( v18 == 71 || v18 == 84 ) v19 = (unsigned int *)d_special_name(); else v19 = d_encoding_part_0((int)a1, 0); return d_make_comp(a1, 23, (int)v19, 0); } if ( v4 == 82 ) { v15 = d_name(); v16 = a1[5]; if ( v16 >= a1[6] ) { v17 = 0; } else { v17 = (_DWORD *)(a1[4] + 20 * v16); v17[1] = 0; v17[2] = 0; a1[5] = v16 + 1; *v17 = 66; v17[3] = d_number((int)a1); } return d_make_comp(a1, 22, v15, (int)v17); } return 0; } if ( v4 != 86 ) { if ( v4 == 114 ) { v5 = d_number((int)a1); if ( v5 > 1 ) { v6 = (_BYTE *)a1[3]; if ( *v6 ) { v7 = v6 + 1; a1[3] = v6 + 1; if ( *v6 == 95 ) { v8 = v5 - 1; comp = 0; while ( *v7 ) { if ( *v7 == 36 ) { v10 = v7[1]; switch ( v10 ) { case 'S': v45 = 47; break; case '_': v45 = 46; break; case '$': v45 = 36; break; default: return 0; } v11 = a1[5]; v7 = (_BYTE *)(a1[3] + 2); if ( v11 >= a1[6] ) { a1[3] = v7; return 0; } v8 -= 2; name = (_DWORD *)(a1[4] + 20 * v11); name[1] = 0; name[2] = 0; a1[5] = v11 + 1; *name = 65; name[3] = v45; a1[3] = v7; } else { v43 = 0; do { if ( ++v43 >= v8 ) break; v44 = v7[v43]; if ( !v44 ) break; } while ( v44 != 36 ); v46 = v43; name = d_make_name(a1, (int)v7, v43); v7 = (_BYTE *)(v46 + a1[3]); v8 -= v46; a1[3] = v7; if ( !name ) return 0; } if ( comp ) { comp = d_make_comp(a1, 64, (int)comp, (int)name); if ( !comp ) return 0; } else { comp = name; } if ( v8 <= 0 ) return d_make_comp(a1, 63, (int)comp, 0); } } } } } return 0; } v20 = d_name(); return d_make_comp(a1, 19, v20, 0); } // 457A70: using guessed type int d_type(void); // 458C60: using guessed type int d_name(void); //----- (00459A30) -------------------------------------------------------- unsigned int *__usercall d_expr_primary@(_DWORD *a1@) { _BYTE *v1; // edx char *v3; // eax char v4; // cl _DWORD *v5; // eax int v6; // ebp char *v7; // edx char v8; // cl int v9; // esi char *v10; // eax char *v11; // edi char v13; // al unsigned int *comp; // ebp char v15; // dl int v16; // eax int v17; // ecx _DWORD *name; // eax v1 = (_BYTE *)a1[3]; if ( *v1 != 76 ) return 0; v3 = v1 + 1; a1[3] = v1 + 1; v4 = v1[1]; if ( v4 == 95 ) { v3 = v1 + 2; a1[3] = v1 + 2; v15 = v1[2]; if ( v15 != 90 ) { comp = 0; goto LABEL_17; } goto LABEL_14; } if ( v4 == 90 ) { LABEL_14: a1[3] = v3 + 1; v13 = v3[1]; if ( v13 == 71 || v13 == 84 ) { comp = (unsigned int *)d_special_name(); v3 = (char *)a1[3]; v15 = *v3; } else { comp = d_encoding_part_0((int)a1, 0); v3 = (char *)a1[3]; v15 = *v3; } goto LABEL_17; } v5 = (_DWORD *)d_type(); v6 = (int)v5; if ( !v5 ) return 0; v7 = (char *)a1[3]; if ( *v5 == 39 ) { v16 = v5[3]; if ( *(_DWORD *)(v16 + 16) ) a1[11] -= *(_DWORD *)(v16 + 4); v8 = *v7; if ( !strcmp(*(const char **)v16, "decltype(nullptr)") ) { if ( v8 == 69 ) { a1[3] = v7 + 1; return (unsigned int *)v6; } v9 = 61; if ( v8 != 110 ) goto LABEL_9; goto LABEL_24; } } else { v8 = *v7; } v9 = 61; if ( v8 == 110 ) { LABEL_24: v9 = 62; a1[3] = v7 + 1; v8 = *++v7; } if ( v8 != 69 ) { LABEL_9: v10 = v7 + 1; while ( v8 ) { a1[3] = v10; v11 = v10; v8 = *v10++; if ( v8 == 69 ) { v17 = v11 - v7; goto LABEL_28; } } return 0; } v17 = 0; LABEL_28: name = d_make_name(a1, (int)v7, v17); comp = d_make_comp(a1, v9, v6, (int)name); v3 = (char *)a1[3]; v15 = *v3; LABEL_17: if ( v15 != 69 ) return 0; a1[3] = v3 + 1; return comp; } // 457A70: using guessed type int d_type(void); // 459400: using guessed type int d_special_name(void); //----- (00459BF0) -------------------------------------------------------- unsigned int *__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 char v13; // al int v14; // eax _BYTE *v15; // edx int v16; // edx int v17; // eax _BYTE *v18; // edx int v19; // esi 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 int v38; // eax char v39; // dl _BYTE *v40; // edx char *v41; // eax _DWORD *v42; // ebp int v43; // eax _DWORD *v44; // edi _DWORD *v45; // eax unsigned __int8 v46; // al char *v47; // eax char v48; // dl _BYTE *v49; // eax _DWORD *v50; // eax _BYTE *v51; // eax char v52; // al _DWORD *comp; // [esp+0h] [ebp-2Ch] 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(); v32 = d_unqualified_name(a1); v33 = (_BYTE *)a1[3]; if ( *v33 != 73 ) return d_make_comp(a1, 1, 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, 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; v13 = v2[2]; switch ( v13 ) { case 'T': a1[3] = v2 + 3; v16 = 0; break; case '_': a1[3] = v2 + 3; v16 = 1; break; case 'n': return 0; default: v14 = d_number((int)a1); if ( v14 + 1 < 0 ) return 0; v15 = (_BYTE *)a1[3]; if ( *v15 != 95 ) return 0; a1[3] = v15 + 1; if ( v14 == 2147483646 ) return 0; v16 = v14 + 2; break; } v17 = a1[5]; if ( v17 < a1[6] ) { v4 = (_DWORD *)(a1[4] + 20 * v17); v4[1] = 0; v4[2] = 0; a1[5] = v17 + 1; *v4 = 6; v4[3] = v16; 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 ) { v18 = v2 + 2; v19 = 0; a1[3] = v18; if ( v3 == 116 ) { v38 = d_type(); v18 = (_BYTE *)a1[3]; v19 = v38; } if ( *v18 && v18[1] ) { v36 = d_exprlist(a1, 69); return d_make_comp(a1, 49, v19, (int)v36); } return 0; } } v7 = d_operator_name(a1); v8 = (int)v7; if ( !v7 ) return 0; v9 = *v7; if ( v9 != 50 ) { if ( v9 == 52 ) { v51 = (_BYTE *)a1[3]; if ( *v51 == 95 ) { a1[3] = v51 + 1; v35 = d_exprlist(a1, 69); return d_make_comp(a1, 55, v8, (int)v35); } goto LABEL_65; } if ( v9 == 51 ) { v10 = *(_DWORD *)(v8 + 12); if ( v10 <= 1 ) { if ( !v10 ) return d_make_comp(a1, 54, v8, 0); if ( v10 == 1 ) { LABEL_65: v35 = (_DWORD *)d_expression_1(); return d_make_comp(a1, 55, v8, (int)v35); } } } return 0; } v20 = *(char ***)(v8 + 12); v21 = *v20; a1[11] += v20[2] - 2; v22 = (unsigned __int8)*v21; if ( v22 == 115 && v21[1] == 116 && !v21[2] ) { v35 = (_DWORD *)d_type(); return d_make_comp(a1, 55, v8, (int)v35); } v23 = (int)v20[3]; if ( v23 == 1 ) { v39 = *v21; if ( (*v21 == 112 || v39 == 109) && v39 == v21[1] ) { v40 = (_BYTE *)a1[3]; if ( *v40 == 95 ) { v23 = 0; a1[3] = v40 + 1; v22 = (unsigned __int8)*v21; } } else { v23 = 0; } if ( v22 == 115 && v21[1] == 80 && !v21[2] ) v35 = d_template_args_1(a1); else v35 = (_DWORD *)d_expression_1(); if ( v23 ) v35 = d_make_comp(a1, 57, (int)v35, (int)v35); return d_make_comp(a1, 55, v8, (int)v35); } if ( v23 <= 1 ) { if ( !v23 ) return d_make_comp(a1, 54, v8, 0); return 0; } if ( v23 == 2 ) { v41 = **(char ***)(v8 + 12); if ( v41[1] == 99 && ((v52 = *v41, (unsigned __int8)(v52 - 99) <= 1u) || (unsigned __int8)(v52 - 114) <= 1u) ) { v42 = (_DWORD *)d_type(); } else if ( *v21 == 102 ) { v42 = d_operator_name(a1); } else { v42 = (_DWORD *)d_expression_1(); } v43 = (unsigned __int8)*v21; if ( v43 == 99 && v21[1] == 108 && !v21[2] ) { v44 = d_exprlist(a1, 69); } else if ( v43 == 100 && v21[1] == 116 && !v21[2] || v43 == 112 && v21[1] == 116 && !v21[2] ) { v44 = d_unqualified_name(a1); v49 = (_BYTE *)a1[3]; if ( *v49 == 73 ) { a1[3] = v49 + 1; v50 = d_template_args_1(a1); v44 = d_make_comp(a1, 4, (int)v44, (int)v50); } } else { v44 = (_DWORD *)d_expression_1(); } v45 = d_make_comp(a1, 57, (int)v42, (int)v44); return d_make_comp(a1, 56, v8, (int)v45); } 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; v46 = v21[1]; if ( v46 != 119 && v46 != 97 ) return 0; v25 = d_exprlist(a1, 95); v26 = d_type(); v47 = (char *)a1[3]; v48 = *v47; if ( *v47 == 69 ) { a1[3] = v47 + 1; v27 = 0; } else if ( v48 == 112 ) { if ( v47[1] != 105 ) return 0; a1[3] = v47 + 2; v27 = d_exprlist(a1, 69); } else { if ( v48 != 105 || v47[1] != 108 ) return 0; v27 = (_DWORD *)d_expression_1(); } goto LABEL_53; } v24 = d_operator_name(a1); } v25 = v24; v26 = d_expression_1(); v27 = (_DWORD *)d_expression_1(); if ( !v27 ) return 0; LABEL_53: v28 = d_make_comp(a1, 60, 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); } // 457A70: using guessed type int d_type(void); //----- (0045A2A0) -------------------------------------------------------- _DWORD *__usercall d_exprlist@(_DWORD *a1@, char a2@
) { _BYTE *v4; // eax int *v5; // esi _DWORD *comp; // eax _BYTE *v7; // eax int v8; // ebp int v9; // eax int v11; // [esp+1Ch] [ebp-20h] BYREF v4 = (_BYTE *)a1[3]; v11 = 0; v5 = &v11; if ( *v4 == a2 ) { a1[3] = v4 + 1; return d_make_comp(a1, 46, 0, 0); } else { do { v8 = a1[12]; a1[12] = 1; v9 = d_expression_1(); a1[12] = v8; if ( !v9 ) return 0; comp = d_make_comp(a1, 46, v9, 0); *v5 = (int)comp; if ( !comp ) return 0; v5 = comp + 4; v7 = (_BYTE *)a1[3]; } while ( *v7 != a2 ); a1[3] = v7 + 1; return (_DWORD *)v11; } } // 459BF0: using guessed type int d_expression_1(void); //----- (0045A350) -------------------------------------------------------- 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 unsigned 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); 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 = (unsigned int *)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, (int)v9); *v3 = comp; if ( !comp ) return 0; v5 = (char *)a1[3]; v3 = (int **)(comp + 3); } 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 + 3); 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; } //----- (0045A570) -------------------------------------------------------- unsigned int *__usercall d_template_arg@(_DWORD *a1@) { char *v2; // edx char v3; // al unsigned int *result; // eax int v5; // esi _BYTE *v6; // edx v2 = (char *)a1[3]; v3 = *v2; if ( *v2 == 76 ) return d_expr_primary(a1); if ( v3 <= 76 ) { if ( (unsigned __int8)(v3 - 73) <= 1u ) { a1[3] = v2 + 1; return d_template_args_1(a1); } return (unsigned int *)d_type(); } if ( v3 != 88 ) return (unsigned int *)d_type(); v5 = a1[12]; a1[12] = 1; a1[3] = v2 + 1; result = d_expression_1(a1); v6 = (_BYTE *)a1[3]; a1[12] = v5; if ( *v6 != 69 ) return 0; a1[3] = v6 + 1; return result; } // 457A70: using guessed type int d_type(void); //----- (0045A600) -------------------------------------------------------- _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 + 4; v6 = (_BYTE *)a1[3]; } while ( *v6 != 69 ); a1[10] = v2; a1[3] = v6 + 1; return (_DWORD *)v9; } } // 45A570: using guessed type int d_template_arg(void); //----- (0045A6B0) -------------------------------------------------------- unsigned int __usercall d_print_comp_inner@(unsigned int result@, int a2@) { unsigned int v2; // ebx int v3; // edi unsigned int v4; // ebp _DWORD *v5; // esi unsigned int *v6; // edi FILE *v7; // edx int *v8; // ecx int v9; // eax int v10; // edx char *v11; // eax int v12; // eax int v13; // ecx char *v14; // eax int v15; // edx char *v16; // eax int v17; // ecx char *v18; // edx _DWORD *v19; // ecx unsigned int v20; // edi int v21; // eax int v22; // edx int v23; // eax int v24; // edx char v25; // dl int v26; // ecx unsigned int v27; // edi const char *v28; // ebp char i14; // al unsigned int v30; // edx const char *v31; // edi int v32; // eax char i; // dl int v34; // ecx int v35; // eax int v36; // eax const char *v37; // edi char i15; // dl int v39; // ecx int v40; // eax int v41; // ebp char **v42; // edx FILE *v43; // ebp int v44; // eax const char *v45; // edi char jj; // dl int v47; // ecx int v48; // eax int v49; // eax const char *v50; // edi char ii; // dl int v52; // ecx int v53; // eax int v54; // eax const char *v55; // edi char i6; // dl int v57; // ecx int v58; // eax int v59; // eax const char *v60; // edi char i5; // dl int v62; // ecx int v63; // eax int v64; // eax const char *v65; // edi char i4; // dl int v67; // ecx int v68; // eax const char *v69; // edi int v70; // eax char i29; // dl int v72; // ecx int v73; // eax _DWORD *v74; // eax int v75; // ecx const char *v76; // esi char i28; // dl unsigned int v78; // ecx int v79; // eax int v80; // eax const char *v81; // edi char i27; // dl int v83; // ecx int v84; // eax int v85; // eax const char *v86; // edi char i26; // dl int v88; // ecx int v89; // eax int v90; // eax const char *v91; // edi char i25; // dl int v93; // ecx int v94; // eax int v95; // eax const char *v96; // edi char i2; // dl int v98; // ecx int v99; // eax int v100; // eax const char *v101; // edi char i1; // dl int v103; // ecx int v104; // eax int v105; // eax const char *v106; // edi char nn; // dl int v108; // ecx int v109; // eax int v110; // eax const char *v111; // edi char mm; // dl int v113; // ecx int v114; // eax int v115; // eax const char *v116; // edi char i3; // dl int v118; // ecx int v119; // eax int v120; // edx int v121; // ecx const char *v122; // edi int v123; // eax char i30; // dl int v125; // ecx int v126; // eax char *v127; // ebp unsigned int v128; // edi char *v129; // ecx char *v130; // ebp int v131; // eax unsigned int v132; // edx _DWORD *v133; // ecx int v134; // edi char *v135; // esi char *v136; // edi unsigned int v137; // ecx char v138; // dl int v139; // eax int v140; // ecx char *v141; // eax _DWORD *v142; // eax unsigned __int8 *v143; // edx int v144; // eax int v145; // ecx int v146; // ecx unsigned __int8 *v147; // eax int v148; // edx int v149; // ebp const char *v150; // esi char k; // dl unsigned int v152; // ecx int v153; // eax int v154; // eax const char *v155; // edi char i11; // dl int v157; // ecx int v158; // eax int v159; // eax const char *v160; // edi char i9; // dl int v162; // ecx int v163; // eax int v164; // eax const char *v165; // edi char i8; // dl int v167; // ecx int v168; // eax int v169; // eax const char *v170; // edi char i7; // dl int v172; // ecx int v173; // eax int v174; // ecx char *v175; // eax int v176; // eax char *base; // ecx int v178; // eax const char *v179; // edi char j; // dl int v181; // ecx int v182; // eax int v183; // edi int v184; // ebp int v185; // eax int v186; // edx int v187; // edx int v188; // ecx int v189; // edx const char *v190; // esi char i13; // dl unsigned int v192; // ecx int v193; // eax int v194; // eax const char *v195; // edi char n; // dl int v197; // ecx int v198; // eax int v199; // eax const char *v200; // edi char i20; // dl int v202; // ecx int v203; // eax int v204; // eax const char *v205; // edi char i24; // dl int v207; // ecx int v208; // eax int v209; // eax int v210; // edi _DWORD *v211; // ecx int v212; // eax _DWORD *v213; // ebp int *v214; // esi int v215; // eax const char *v216; // edi char i21; // dl int v218; // ecx int v219; // eax FILE *v220; // esi unsigned int v221; // edi FILE *v222; // edi unsigned int v223; // ecx char v224; // dl int v225; // eax int v226; // eax const char *v227; // edi char i22; // dl int v229; // ecx int v230; // eax int v231; // eax const char *v232; // edi char i17; // dl int v234; // ecx int v235; // eax int v236; // eax const char *v237; // edi char i16; // dl int v239; // ecx int v240; // eax int v241; // edi const char *v242; // esi char v243; // dl int v244; // ebp unsigned int v245; // ecx int v246; // eax int v247; // ecx int v248; // esi int v249; // eax int v250; // edx int v251; // edx _DWORD *v252; // edi int v253; // eax int v254; // eax _DWORD *v255; // ecx int v256; // eax const char *v257; // edi char i23; // dl int v259; // ecx int v260; // eax int v261; // edi char *v262; // esi char *v263; // edi unsigned int v264; // ecx char v265; // dl int v266; // eax int v267; // edi char *v268; // esi char *v269; // edi unsigned int v270; // ecx char v271; // dl int v272; // eax int v273; // edx bool v274; // cf const char *v275; // edi int v276; // eax char kk; // dl int v278; // ecx int v279; // eax _DWORD *v280; // edi FILE *v281; // esi size_t v282; // ebp int v283; // eax FILE *v284; // ebp int v285; // ecx char ptr; // dl int v287; // eax char *v288; // esi int v289; // edi char *v290; // edi unsigned int v291; // ecx char v292; // dl int v293; // eax int v294; // ecx const char *v295; // edi int v296; // eax char v297; // dl int v298; // ecx int v299; // eax int v300; // eax FILE *v301; // esi size_t v302; // edi FILE *v303; // edi unsigned int v304; // ecx char v305; // dl int v306; // eax int v307; // eax int v308; // edx const char *v309; // edi int v310; // eax char i10; // dl int v312; // ecx int v313; // eax int v314; // eax FILE *v315; // esi size_t v316; // edi FILE *v317; // edi unsigned int v318; // ecx char v319; // dl int v320; // eax int v321; // ebp int v322; // eax int v323; // edx _DWORD *charbuf; // ecx int v325; // eax char v326; // al const char *v327; // esi char i12; // dl unsigned int v329; // ecx int v330; // eax unsigned int v331; // ecx _DWORD *v332; // esi int v333; // eax FILE *v334; // esi unsigned int v335; // edi FILE *v336; // edi unsigned int v337; // ecx char v338; // dl int v339; // eax FILE *v340; // esi size_t v341; // edi FILE *v342; // edi unsigned int v343; // ecx char v344; // dl int v345; // eax const char *v346; // esi char m; // dl unsigned int v348; // ecx int v349; // eax int v350; // eax char *v351; // eax char *v352; // eax char *v353; // eax unsigned __int8 *v354; // ebp int v355; // edx int v356; // ecx _DWORD *i18; // eax int v358; // ecx int v359; // eax int v360; // ecx int v361; // eax _DWORD *pack; // eax int v363; // ecx int i19; // edx int v365; // eax int v366; // eax int v367; // eax int v368; // eax int v369; // eax int v370; // eax int v371; // eax int v372; // eax _DWORD *v373; // eax int v374; // edi _DWORD *v375; // ecx int v376; // edx _DWORD *v377; // ebp _DWORD *v378; // edx int v379; // edx char v380; // al int v381; // eax int v382; // edx FILE *v383; // esi unsigned int v384; // edi FILE *v385; // edi unsigned int v386; // ecx char v387; // dl int v388; // eax int v389; // eax int v390; // eax const char *v391; // edx int v392; // edx int v393; // eax unsigned int v394; // edi int v395; // eax int v396; // eax bool v397; // zf _DWORD *v398; // ecx int v399; // ebp int *v400; // ebp int v401; // edx int v402; // edi char *Str2; // [esp+4h] [ebp-88h] int v404; // [esp+8h] [ebp-84h] char *v405; // [esp+10h] [ebp-7Ch] char v406; // [esp+10h] [ebp-7Ch] char v407; // [esp+10h] [ebp-7Ch] char v408; // [esp+10h] [ebp-7Ch] char v409; // [esp+10h] [ebp-7Ch] char v410; // [esp+10h] [ebp-7Ch] char v411; // [esp+10h] [ebp-7Ch] char v412; // [esp+10h] [ebp-7Ch] char v413; // [esp+10h] [ebp-7Ch] char v414; // [esp+10h] [ebp-7Ch] char v415; // [esp+10h] [ebp-7Ch] char v416; // [esp+10h] [ebp-7Ch] char v417; // [esp+10h] [ebp-7Ch] char v418; // [esp+10h] [ebp-7Ch] char v419; // [esp+10h] [ebp-7Ch] char v420; // [esp+10h] [ebp-7Ch] char v421; // [esp+10h] [ebp-7Ch] char v422; // [esp+10h] [ebp-7Ch] char v423; // [esp+10h] [ebp-7Ch] char v424; // [esp+10h] [ebp-7Ch] char v425; // [esp+10h] [ebp-7Ch] char v426; // [esp+10h] [ebp-7Ch] char v427; // [esp+10h] [ebp-7Ch] char v428; // [esp+10h] [ebp-7Ch] char v429; // [esp+10h] [ebp-7Ch] char v430; // [esp+10h] [ebp-7Ch] char v431; // [esp+10h] [ebp-7Ch] char v432; // [esp+10h] [ebp-7Ch] char v433; // [esp+10h] [ebp-7Ch] char v434; // [esp+10h] [ebp-7Ch] char v435; // [esp+10h] [ebp-7Ch] _DWORD *v436; // [esp+10h] [ebp-7Ch] char v437; // [esp+10h] [ebp-7Ch] char v438; // [esp+10h] [ebp-7Ch] char v439; // [esp+10h] [ebp-7Ch] char v440; // [esp+10h] [ebp-7Ch] char v441; // [esp+10h] [ebp-7Ch] char v442; // [esp+10h] [ebp-7Ch] char v443; // [esp+10h] [ebp-7Ch] char v444; // [esp+10h] [ebp-7Ch] char v445; // [esp+10h] [ebp-7Ch] char v446; // [esp+10h] [ebp-7Ch] char v447; // [esp+10h] [ebp-7Ch] char v448; // [esp+10h] [ebp-7Ch] char v449; // [esp+10h] [ebp-7Ch] char v450; // [esp+10h] [ebp-7Ch] char v451; // [esp+10h] [ebp-7Ch] char v452; // [esp+10h] [ebp-7Ch] char v453; // [esp+10h] [ebp-7Ch] char v454; // [esp+10h] [ebp-7Ch] char v455; // [esp+10h] [ebp-7Ch] char v456; // [esp+10h] [ebp-7Ch] int v457; // [esp+10h] [ebp-7Ch] char v458; // [esp+10h] [ebp-7Ch] int v459; // [esp+10h] [ebp-7Ch] unsigned int v460; // [esp+14h] [ebp-78h] int v461; // [esp+14h] [ebp-78h] int v462; // [esp+14h] [ebp-78h] char *v463; // [esp+14h] [ebp-78h] FILE *v464; // [esp+18h] [ebp-74h] int v465; // [esp+1Ch] [ebp-70h] int v466[2]; // [esp+28h] [ebp-64h] BYREF FILE Str[2]; // [esp+30h] [ebp-5Ch] BYREF v2 = result; if ( !a2 ) goto LABEL_7; v3 = *(_DWORD *)(result + 280); if ( v3 ) return result; v4 = *(_DWORD *)a2; v5 = (_DWORD *)a2; switch ( *(_DWORD *)a2 ) { case 0: v261 = *(_DWORD *)(a2 + 16); v262 = *(char **)(a2 + 12); if ( v261 ) { result = *(_DWORD *)(result + 256); v263 = &v262[v261]; do { v265 = *v262; if ( result == 255 ) { v266 = *(_DWORD *)(v2 + 268); v444 = *v262; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v266); ++*(_DWORD *)(v2 + 296); v265 = v444; v264 = v4; result = 1; } else { v264 = result++; } ++v262; *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v264) = v265; *(_BYTE *)(v2 + 260) = v265; } while ( v263 != v262 ); } return result; case 1: case 2: v31 = "::"; d_print_comp(*(_DWORD *)(a2 + 12), 17); v32 = *(_DWORD *)(v2 + 256); for ( i = 58; ; i = *v31 ) { if ( v32 == 255 ) { v35 = *(_DWORD *)(v2 + 268); v407 = i; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v35); ++*(_DWORD *)(v2 + 296); i = v407; v34 = 0; v32 = 1; } else { v34 = v32++; } ++v31; *(_DWORD *)(v2 + 256) = v32; *(_BYTE *)(v2 + v34) = i; *(_BYTE *)(v2 + 260) = i; if ( "" == v31 ) break; } v280 = (_DWORD *)v5[4]; if ( *v280 == 71 ) { v281 = Str; d_append_string(v2, "{default arg#"); sprintf_constprop_0(Str, (int)"%d", v280[4] + 1); v282 = strlen((const char *)Str); if ( v282 ) { v283 = *(_DWORD *)(v2 + 256); v284 = (FILE *)((char *)Str + v282); do { ptr = (char)v281->_ptr; if ( v283 == 255 ) { v287 = *(_DWORD *)(v2 + 268); v447 = (char)v281->_ptr; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v287); ++*(_DWORD *)(v2 + 296); ptr = v447; v285 = 0; v283 = 1; } else { v285 = v283++; } v281 = (FILE *)((char *)v281 + 1); *(_DWORD *)(v2 + 256) = v283; *(_BYTE *)(v2 + v285) = ptr; *(_BYTE *)(v2 + 260) = ptr; } while ( v284 != v281 ); } d_append_string(v2, "}::"); v8 = (int *)v280[3]; } else { v8 = (int *)v5[4]; } return d_print_comp(v8, 17); case 3: result = *(_DWORD *)(result + 276); v6 = *(unsigned int **)(a2 + 12); *(_DWORD *)(v2 + 276) = 0; v465 = result; if ( !v6 ) goto LABEL_7; v41 = 0; v461 = *(_DWORD *)(v2 + 272); v7 = Str; result = 0; while ( 2 ) { v7->_ptr = (char *)result; ++v41; v7->_base = 0; v7->_flag = v461; result = *v6; v464 = v7; v7->_cnt = (int)v6; if ( result == 77 ) goto LABEL_4; if ( result > 0x4D ) { v274 = result == 79; result -= 79; if ( !v274 && result != 1 ) { *(_DWORD *)(v2 + 276) = v7; goto LABEL_85; } } else if ( result - 28 > 4 ) { *(_DWORD *)(v2 + 276) = v7; if ( result == 2 ) { v6 = (unsigned int *)v6[4]; result = *v6; if ( *v6 == 71 ) { v6 = (unsigned int *)v6[3]; if ( !v6 ) goto LABEL_7; result = *v6; } v42 = &Str[0]._ptr + 4 * v41; while ( 1 ) { if ( result != 77 ) { if ( result > 0x4D ) { v274 = result == 79; result -= 79; if ( !v274 && result != 1 ) goto LABEL_85; } else if ( result - 28 > 4 ) { break; } } if ( v41 == 4 ) goto LABEL_7; v351 = *(v42 - 3); *(v42 - 3) = (char *)v6; ++v41; *(_DWORD *)(v2 + 276) = v42; v42[1] = v351; v352 = *(v42 - 2); *(v42 - 2) = 0; v6 = (unsigned int *)v6[3]; v42[2] = v352; v42[3] = *(v42 - 1); v353 = (char *)(v42 - 4); v42 += 4; *(v42 - 4) = v353; result = v461; *(v42 - 5) = (char *)v461; if ( !v6 ) goto LABEL_7; result = *v6; } } if ( result == 4 ) { v466[1] = (int)v6; v466[0] = v461; *(_DWORD *)(v2 + 272) = v466; } LABEL_85: d_print_comp(*(_DWORD *)(a2 + 16), 17); if ( *v6 == 4 ) *(_DWORD *)(v2 + 272) = v466[0]; v43 = (FILE *)((char *)Str + 16 * v41); do { if ( !v43[-1]._bufsiz ) { v322 = *(_DWORD *)(v2 + 256); if ( v322 == 255 ) { v381 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v381); ++*(_DWORD *)(v2 + 296); v323 = 1; v322 = 0; } else { v323 = v322 + 1; } *(_DWORD *)(v2 + 256) = v323; charbuf = (_DWORD *)v43[-1]._charbuf; *(_BYTE *)(v2 + v322) = 32; *(_BYTE *)(v2 + 260) = 32; d_print_mod(v2, charbuf); } v43 = (FILE *)((char *)v43 - 16); } while ( Str != v43 ); result = v465; *(_DWORD *)(v2 + 276) = v465; return result; } LABEL_4: v6 = (unsigned int *)v6[3]; if ( v6 ) { result = (unsigned int)v7; v7 = (FILE *)((char *)v7 + 16); if ( v41 == 4 ) { *(_DWORD *)(v2 + 276) = v464; goto LABEL_7; } continue; } break; } *(_DWORD *)(v2 + 276) = v7; goto LABEL_7; case 4: v183 = *(_DWORD *)(result + 328); v184 = *(_DWORD *)(result + 276); *(_DWORD *)(result + 328) = a2; *(_DWORD *)(result + 276) = 0; d_print_comp(*(_DWORD *)(a2 + 12), 17); if ( *(_BYTE *)(v2 + 260) == 60 ) d_append_char(v2, 32); v185 = *(_DWORD *)(v2 + 256); if ( v185 == 255 ) { v371 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v371); ++*(_DWORD *)(v2 + 296); v186 = 1; v185 = 0; } else { v186 = v185 + 1; } *(_DWORD *)(v2 + 256) = v186; *(_BYTE *)(v2 + v185) = 60; *(_BYTE *)(v2 + 260) = 60; d_print_comp(v5[4], 17); if ( *(_BYTE *)(v2 + 260) == 62 ) d_append_char(v2, 32); result = *(_DWORD *)(v2 + 256); if ( result == 255 ) { v370 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v370); ++*(_DWORD *)(v2 + 296); v187 = 1; result = 0; } else { v187 = result + 1; } *(_DWORD *)(v2 + 256) = v187; *(_BYTE *)(v2 + result) = 62; *(_BYTE *)(v2 + 260) = 62; *(_DWORD *)(v2 + 276) = v184; *(_DWORD *)(v2 + 328) = v183; return result; case 5: if ( *(_DWORD *)(result + 288) ) { v178 = *(_DWORD *)(result + 256); v179 = "auto:"; for ( j = 97; ; j = *v179 ) { if ( v178 == 255 ) { v182 = *(_DWORD *)(v2 + 268); v431 = j; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v182); ++*(_DWORD *)(v2 + 296); j = v431; v181 = 0; v178 = 1; } else { v181 = v178++; } ++v179; *(_DWORD *)(v2 + 256) = v178; *(_BYTE *)(v2 + v181) = j; *(_BYTE *)(v2 + 260) = j; if ( v179 == "" ) break; } v333 = v5[3]; v334 = Str; sprintf_constprop_0(Str, (int)"%d", v333 + 1); result = strlen((const char *)Str); v335 = result; if ( result ) { result = *(_DWORD *)(v2 + 256); v336 = (FILE *)((char *)Str + v335); do { v338 = (char)v334->_ptr; if ( result == 255 ) { v339 = *(_DWORD *)(v2 + 268); v454 = (char)v334->_ptr; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v339); ++*(_DWORD *)(v2 + 296); v338 = v454; v337 = 0; result = 1; } else { v337 = result++; } v334 = (FILE *)((char *)v334 + 1); *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v337) = v338; *(_BYTE *)(v2 + 260) = v338; } while ( v334 != v336 ); } return result; } result = (unsigned int)d_lookup_template_argument(result, a2); v331 = result; if ( result ) { if ( *(_DWORD *)result != 47 || (v382 = *(_DWORD *)(v2 + 292), v382 < 0) || (result = (unsigned int)d_index_template_argument_part_0((_DWORD *)result, v382), (v331 = result) != 0) ) { v332 = *(_DWORD **)(v2 + 272); *(_DWORD *)(v2 + 272) = *v332; result = d_print_comp(v331, 17); *(_DWORD *)(v2 + 272) = v332; return result; } } goto LABEL_7; case 6: v149 = *(_DWORD *)(a2 + 12); result = *(_DWORD *)(result + 256); if ( v149 ) { v150 = "parm#"; for ( k = 123; ; k = *v150++ ) { if ( result == 255 ) { v153 = *(_DWORD *)(v2 + 268); v426 = k; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v153); ++*(_DWORD *)(v2 + 296); k = v426; v152 = 0; result = 1; } else { v152 = result++; } *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v152) = k; *(_BYTE *)(v2 + 260) = k; if ( v150 == "" ) break; } v340 = Str; sprintf_constprop_0(Str, (int)"%d", v149); v341 = strlen((const char *)Str); result = *(_DWORD *)(v2 + 256); if ( v341 ) { v342 = (FILE *)((char *)Str + v341); do { v344 = (char)v340->_ptr; if ( result == 255 ) { v345 = *(_DWORD *)(v2 + 268); v455 = (char)v340->_ptr; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v345); ++*(_DWORD *)(v2 + 296); v344 = v455; v343 = 0; result = 1; } else { v343 = result++; } v340 = (FILE *)((char *)v340 + 1); *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v343) = v344; *(_BYTE *)(v2 + 260) = v344; } while ( v342 != v340 ); } if ( result == 255 ) { v390 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v390); ++*(_DWORD *)(v2 + 296); result = 0; } *(_DWORD *)(v2 + 256) = result + 1; *(_BYTE *)(v2 + result) = 125; *(_BYTE *)(v2 + 260) = 125; } else { v346 = "this"; for ( m = 116; ; m = *v346 ) { if ( result == 255 ) { v349 = *(_DWORD *)(v2 + 268); v456 = m; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v349); ++*(_DWORD *)(v2 + 296); m = v456; v348 = 0; result = 1; } else { v348 = result++; } ++v346; *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v348) = m; *(_BYTE *)(v2 + 260) = m; if ( v346 == "" ) break; } } return result; case 7: goto LABEL_14; case 8: v9 = *(_DWORD *)(result + 256); if ( v9 == 255 ) { v367 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v367); ++*(_DWORD *)(v2 + 296); v10 = 1; v9 = 0; } else { v10 = v9 + 1; } *(_DWORD *)(v2 + 256) = v10; *(_BYTE *)(v2 + v9) = 126; *(_BYTE *)(v2 + 260) = 126; goto LABEL_14; case 9: v194 = *(_DWORD *)(result + 256); v195 = "table for "; for ( n = 118; ; n = *v195++ ) { if ( v194 == 255 ) { v198 = *(_DWORD *)(v2 + 268); v433 = n; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v198); ++*(_DWORD *)(v2 + 296); n = v433; v197 = 0; v194 = 1; } else { v197 = v194++; } *(_DWORD *)(v2 + 256) = v194; *(_BYTE *)(v2 + v197) = n; *(_BYTE *)(v2 + 260) = n; if ( v195 == "" ) break; } goto LABEL_9; case 0xA: v49 = *(_DWORD *)(result + 256); v50 = "TT for "; for ( ii = 86; ; ii = *v50++ ) { if ( v49 == 255 ) { v53 = *(_DWORD *)(v2 + 268); v410 = ii; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v53); ++*(_DWORD *)(v2 + 296); ii = v410; v52 = 0; v49 = 1; } else { v52 = v49++; } *(_DWORD *)(v2 + 256) = v49; *(_BYTE *)(v2 + v52) = ii; *(_BYTE *)(v2 + 260) = ii; if ( v50 == "" ) break; } goto LABEL_9; case 0xB: v44 = *(_DWORD *)(result + 256); v45 = "onstruction vtable for "; for ( jj = 99; ; jj = *v45++ ) { if ( v44 == 255 ) { v48 = *(_DWORD *)(v2 + 268); v409 = jj; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v48); ++*(_DWORD *)(v2 + 296); jj = v409; v47 = 0; v44 = 1; } else { v47 = v44++; } *(_DWORD *)(v2 + 256) = v44; *(_BYTE *)(v2 + v47) = jj; *(_BYTE *)(v2 + 260) = jj; if ( v45 == "" ) break; } v275 = "-in-"; d_print_comp(v5[3], 17); v276 = *(_DWORD *)(v2 + 256); for ( kk = 45; ; kk = *v275 ) { if ( v276 == 255 ) { v279 = *(_DWORD *)(v2 + 268); v446 = kk; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v279); ++*(_DWORD *)(v2 + 296); kk = v446; v278 = 0; v276 = 1; } else { v278 = v276++; } ++v275; *(_DWORD *)(v2 + 256) = v276; *(_BYTE *)(v2 + v278) = kk; *(_BYTE *)(v2 + 260) = kk; if ( v275 == "" ) break; } goto LABEL_14; case 0xC: v110 = *(_DWORD *)(result + 256); v111 = "ypeinfo for "; for ( mm = 116; ; mm = *v111++ ) { if ( v110 == 255 ) { v114 = *(_DWORD *)(v2 + 268); v422 = mm; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v114); ++*(_DWORD *)(v2 + 296); mm = v422; v113 = 0; v110 = 1; } else { v113 = v110++; } *(_DWORD *)(v2 + 256) = v110; *(_BYTE *)(v2 + v113) = mm; *(_BYTE *)(v2 + 260) = mm; if ( v111 == "" ) break; } goto LABEL_9; case 0xD: v105 = *(_DWORD *)(result + 256); v106 = "ypeinfo name for "; for ( nn = 116; ; nn = *v106++ ) { if ( v105 == 255 ) { v109 = *(_DWORD *)(v2 + 268); v421 = nn; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v109); ++*(_DWORD *)(v2 + 296); nn = v421; v108 = 0; v105 = 1; } else { v108 = v105++; } *(_DWORD *)(v2 + 256) = v105; *(_BYTE *)(v2 + v108) = nn; *(_BYTE *)(v2 + 260) = nn; if ( v106 == "" ) break; } goto LABEL_9; case 0xE: v100 = *(_DWORD *)(result + 256); v101 = "ypeinfo fn for "; for ( i1 = 116; ; i1 = *v101++ ) { if ( v100 == 255 ) { v104 = *(_DWORD *)(v2 + 268); v420 = i1; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v104); ++*(_DWORD *)(v2 + 296); i1 = v420; v103 = 0; v100 = 1; } else { v103 = v100++; } *(_DWORD *)(v2 + 256) = v100; *(_BYTE *)(v2 + v103) = i1; *(_BYTE *)(v2 + 260) = i1; if ( v101 == "" ) break; } goto LABEL_9; case 0xF: v95 = *(_DWORD *)(result + 256); v96 = "on-virtual thunk to "; for ( i2 = 110; ; i2 = *v96++ ) { if ( v95 == 255 ) { v99 = *(_DWORD *)(v2 + 268); v419 = i2; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v99); ++*(_DWORD *)(v2 + 296); i2 = v419; v98 = 0; v95 = 1; } else { v98 = v95++; } *(_DWORD *)(v2 + 256) = v95; *(_BYTE *)(v2 + v98) = i2; *(_BYTE *)(v2 + 260) = i2; if ( v96 == "" ) break; } goto LABEL_9; case 0x10: v115 = *(_DWORD *)(result + 256); v116 = "irtual thunk to "; for ( i3 = 118; ; i3 = *v116++ ) { if ( v115 == 255 ) { v119 = *(_DWORD *)(v2 + 268); v423 = i3; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v119); ++*(_DWORD *)(v2 + 296); i3 = v423; v118 = 0; v115 = 1; } else { v118 = v115++; } *(_DWORD *)(v2 + 256) = v115; *(_BYTE *)(v2 + v118) = i3; *(_BYTE *)(v2 + 260) = i3; if ( v116 == "" ) break; } goto LABEL_9; case 0x11: v64 = *(_DWORD *)(result + 256); v65 = "ovariant return thunk to "; for ( i4 = 99; ; i4 = *v65++ ) { if ( v64 == 255 ) { v68 = *(_DWORD *)(v2 + 268); v413 = i4; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v68); ++*(_DWORD *)(v2 + 296); i4 = v413; v67 = 0; v64 = 1; } else { v67 = v64++; } *(_DWORD *)(v2 + 256) = v64; *(_BYTE *)(v2 + v67) = i4; *(_BYTE *)(v2 + 260) = i4; if ( v65 == "" ) break; } goto LABEL_9; case 0x12: v59 = *(_DWORD *)(result + 256); v60 = "ava Class for "; for ( i5 = 106; ; i5 = *v60++ ) { if ( v59 == 255 ) { v63 = *(_DWORD *)(v2 + 268); v412 = i5; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v63); ++*(_DWORD *)(v2 + 296); i5 = v412; v62 = 0; v59 = 1; } else { v62 = v59++; } *(_DWORD *)(v2 + 256) = v59; *(_BYTE *)(v2 + v62) = i5; *(_BYTE *)(v2 + 260) = i5; if ( v60 == "" ) break; } goto LABEL_9; case 0x13: v54 = *(_DWORD *)(result + 256); v55 = "uard variable for "; for ( i6 = 103; ; i6 = *v55++ ) { if ( v54 == 255 ) { v58 = *(_DWORD *)(v2 + 268); v411 = i6; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v58); ++*(_DWORD *)(v2 + 296); i6 = v411; v57 = 0; v54 = 1; } else { v57 = v54++; } *(_DWORD *)(v2 + 256) = v54; *(_BYTE *)(v2 + v57) = i6; *(_BYTE *)(v2 + 260) = i6; if ( v55 == "" ) break; } goto LABEL_9; case 0x14: v169 = *(_DWORD *)(result + 256); v170 = "LS init function for "; for ( i7 = 84; ; i7 = *v170++ ) { if ( v169 == 255 ) { v173 = *(_DWORD *)(v2 + 268); v430 = i7; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v173); ++*(_DWORD *)(v2 + 296); i7 = v430; v172 = 0; v169 = 1; } else { v172 = v169++; } *(_DWORD *)(v2 + 256) = v169; *(_BYTE *)(v2 + v172) = i7; *(_BYTE *)(v2 + 260) = i7; if ( v170 == "" ) break; } goto LABEL_9; case 0x15: v164 = *(_DWORD *)(result + 256); v165 = "LS wrapper function for "; for ( i8 = 84; ; i8 = *v165++ ) { if ( v164 == 255 ) { v168 = *(_DWORD *)(v2 + 268); v429 = i8; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v168); ++*(_DWORD *)(v2 + 296); i8 = v429; v167 = 0; v164 = 1; } else { v167 = v164++; } *(_DWORD *)(v2 + 256) = v164; *(_BYTE *)(v2 + v167) = i8; *(_BYTE *)(v2 + 260) = i8; if ( v165 == "" ) break; } goto LABEL_9; case 0x16: v159 = *(_DWORD *)(result + 256); v160 = "eference temporary #"; for ( i9 = 114; ; i9 = *v160++ ) { if ( v159 == 255 ) { v163 = *(_DWORD *)(v2 + 268); v428 = i9; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v163); ++*(_DWORD *)(v2 + 296); i9 = v428; v162 = 0; v159 = 1; } else { v162 = v159++; } *(_DWORD *)(v2 + 256) = v159; *(_BYTE *)(v2 + v162) = i9; *(_BYTE *)(v2 + 260) = i9; if ( v160 == "" ) break; } v309 = " for "; d_print_comp(v5[4], 17); v310 = *(_DWORD *)(v2 + 256); for ( i10 = 32; ; i10 = *v309 ) { if ( v310 == 255 ) { v313 = *(_DWORD *)(v2 + 268); v451 = i10; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v313); ++*(_DWORD *)(v2 + 296); i10 = v451; v312 = 0; v310 = 1; } else { v312 = v310++; } ++v309; *(_DWORD *)(v2 + 256) = v310; *(_BYTE *)(v2 + v312) = i10; *(_BYTE *)(v2 + 260) = i10; if ( v309 == "" ) break; } goto LABEL_9; case 0x17: v154 = *(_DWORD *)(result + 256); v155 = "idden alias for "; for ( i11 = 104; ; i11 = *v155++ ) { if ( v154 == 255 ) { v158 = *(_DWORD *)(v2 + 268); v427 = i11; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v158); ++*(_DWORD *)(v2 + 296); i11 = v427; v157 = 0; v154 = 1; } else { v157 = v154++; } *(_DWORD *)(v2 + 256) = v154; *(_BYTE *)(v2 + v157) = i11; *(_BYTE *)(v2 + 260) = i11; if ( v155 == "" ) break; } goto LABEL_9; case 0x18: v134 = *(_DWORD *)(a2 + 16); v135 = *(char **)(a2 + 12); if ( v134 ) { result = *(_DWORD *)(result + 256); v136 = &v135[v134]; do { v138 = *v135; if ( result == 255 ) { v139 = *(_DWORD *)(v2 + 268); v425 = *v135; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v139); ++*(_DWORD *)(v2 + 296); v138 = v425; v137 = 0; result = 1; } else { v137 = result++; } ++v135; *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v137) = v138; *(_BYTE *)(v2 + 260) = v138; } while ( v136 != v135 ); } return result; case 0x19: case 0x1A: case 0x1B: v14 = *(char **)(result + 276); v405 = v14; if ( !v14 ) goto LABEL_36; while ( 2 ) { if ( *((_DWORD *)v14 + 2) ) goto LABEL_26; v15 = **((_DWORD **)v14 + 1); if ( (unsigned int)(v15 - 25) > 2 ) { v3 = 0; goto LABEL_36; } if ( v4 != v15 ) { LABEL_26: v14 = *(char **)v14; if ( !v14 ) goto LABEL_36; continue; } break; } LABEL_9: v8 = (int *)v5[3]; return d_print_comp(v8, 17); case 0x1C: case 0x1D: case 0x1E: case 0x1F: case 0x20: case 0x21: case 0x22: case 0x25: case 0x26: case 0x4D: case 0x4F: case 0x50: v11 = *(char **)(result + 276); goto LABEL_16; case 0x23: case 0x24: result = *(_DWORD *)(a2 + 12); v18 = *(char **)result; if ( *(_DWORD *)(v2 + 288) ) goto LABEL_33; v3 = 0; if ( v18 != (char *)5 ) goto LABEL_33; v374 = *(_DWORD *)(v2 + 308); if ( v374 <= 0 ) goto LABEL_621; v375 = *(_DWORD **)(v2 + 304); v376 = 0; break; case 0x27: result = *(_DWORD *)(a2 + 12); v267 = *(_DWORD *)(result + 4); v268 = *(char **)result; if ( v267 ) { result = *(_DWORD *)(v2 + 256); v269 = &v268[v267]; do { v271 = *v268; if ( result == 255 ) { v272 = *(_DWORD *)(v2 + 268); v445 = *v268; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v272); ++*(_DWORD *)(v2 + 296); v271 = v445; v270 = 0; result = 1; } else { v270 = result++; } ++v268; *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v270) = v271; *(_BYTE *)(v2 + 260) = v271; } while ( v268 != v269 ); } return result; case 0x28: goto LABEL_9; case 0x29: v174 = *(_DWORD *)(a2 + 12); v175 = *(char **)(result + 276); if ( !v174 ) return d_print_function_type(v2, (int)v5, v175); Str[0]._ptr = v175; *(_DWORD *)(v2 + 276) = Str; v176 = *(_DWORD *)(v2 + 272); Str[0]._cnt = (int)v5; Str[0]._flag = v176; Str[0]._base = 0; d_print_comp(v174, 17); result = (unsigned int)Str[0]._ptr; base = Str[0]._base; *(_DWORD *)(v2 + 276) = Str[0]._ptr; if ( !base ) { d_append_char(v2, 32); v175 = *(char **)(v2 + 276); return d_print_function_type(v2, (int)v5, v175); } return result; case 0x2A: v127 = *(char **)(result + 276); Str[0]._cnt = a2; v128 = 1; v129 = v127; v463 = v127; Str[0]._ptr = v127; v130 = (char *)Str; *(_DWORD *)(result + 276) = Str; v131 = *(_DWORD *)(result + 272); Str[0]._base = 0; Str[0]._flag = v131; result = (unsigned int)v129; if ( v129 ) { do { if ( (unsigned int)(**(_DWORD **)(result + 4) - 25) > 2 ) break; if ( !*(_DWORD *)(result + 8) ) { if ( v128 > 3 ) goto LABEL_7; v132 = v128++; v132 *= 16; *(char **)((char *)&Str[0]._ptr + v132) = *(char **)result; v133 = (char **)((char *)&Str[0]._ptr + v132); v133[1] = *(_DWORD *)(result + 4); v133[2] = *(_DWORD *)(result + 8); v133[3] = *(_DWORD *)(result + 12); *(char **)((char *)&Str[0]._ptr + v132) = v130; v130 = (char *)Str + v132; *(_DWORD *)(v2 + 276) = (char *)Str + v132; *(_DWORD *)(result + 8) = 1; } result = *(_DWORD *)result; } while ( result ); d_print_comp(v5[4], 17); *(_DWORD *)(v2 + 276) = v463; result = (unsigned int)Str[0]._base; if ( Str[0]._base ) return result; while ( v128 != 1 ) { --v128; d_print_mod(v2, *((_DWORD **)&Str[0]._cnt + 4 * v128)); } } else { result = d_print_comp(v5[4], 17); v397 = Str[0]._base == 0; *(_DWORD *)(v2 + 276) = 0; if ( !v397 ) return result; } return d_print_array_type(v2, (int)v5, *(int ***)(v2 + 276)); case 0x2B: case 0x2D: v16 = *(char **)(result + 276); Str[0]._cnt = a2; v17 = *(_DWORD *)(a2 + 16); Str[0]._base = 0; Str[0]._ptr = v16; *(_DWORD *)(v2 + 276) = Str; Str[0]._flag = *(_DWORD *)(v2 + 272); d_print_comp(v17, 17); if ( !Str[0]._base ) d_print_mod(v2, v5); result = (unsigned int)Str[0]._ptr; *(_DWORD *)(v2 + 276) = Str[0]._ptr; return result; case 0x2C: if ( *(_WORD *)(a2 + 18) ) d_append_string(result, "_Sat "); v188 = v5[3]; if ( *(void ****)(v188 + 12) == &off_559B20 ) { result = *(_DWORD *)(v2 + 256); } else { d_print_comp(v188, 17); v189 = *(_DWORD *)(v2 + 256); if ( v189 == 255 ) { v389 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v389); ++*(_DWORD *)(v2 + 296); v189 = 0; } result = v189 + 1; *(_DWORD *)(v2 + 256) = v189 + 1; *(_BYTE *)(v2 + v189) = 32; *(_BYTE *)(v2 + 260) = 32; } if ( *((_WORD *)v5 + 8) ) { v327 = "Accum"; for ( i12 = 95; ; i12 = *v327++ ) { if ( result == 255 ) { v330 = *(_DWORD *)(v2 + 268); v453 = i12; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v330); ++*(_DWORD *)(v2 + 296); i12 = v453; v329 = 0; result = 1; } else { v329 = result++; } *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v329) = i12; *(_BYTE *)(v2 + 260) = i12; if ( v327 == "" ) break; } } else { v190 = "Fract"; for ( i13 = 95; ; i13 = *v190++ ) { if ( result == 255 ) { v193 = *(_DWORD *)(v2 + 268); v432 = i13; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v193); ++*(_DWORD *)(v2 + 296); i13 = v432; v192 = 0; result = 1; } else { v192 = result++; } *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v192) = i13; *(_BYTE *)(v2 + 260) = i13; if ( v190 == "" ) break; } } return result; case 0x2E: case 0x2F: v26 = *(_DWORD *)(a2 + 12); if ( v26 ) d_print_comp(v26, 17); result = v5[4]; if ( result ) { v27 = *(_DWORD *)(v2 + 256); if ( v27 > 0xFD ) { *(_BYTE *)(v2 + v27) = 0; Str2 = (char *)v27; v27 = 0; (*(void (__cdecl **)(unsigned int, char *, _DWORD))(v2 + 264))(v2, Str2, *(_DWORD *)(v2 + 268)); ++*(_DWORD *)(v2 + 296); *(_DWORD *)(v2 + 256) = 0; } v28 = ", "; for ( i14 = 44; ; i14 = *v28 ) { if ( v27 == 255 ) { v27 = 1; v406 = i14; v404 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v404); ++*(_DWORD *)(v2 + 296); i14 = v406; v30 = 0; } else { v30 = v27++; } ++v28; *(_DWORD *)(v2 + 256) = v27; *(_BYTE *)(v2 + v30) = i14; *(_BYTE *)(v2 + 260) = i14; if ( v28 == "" ) break; } v321 = *(_DWORD *)(v2 + 296); result = d_print_comp(v5[4], 17); if ( *(_DWORD *)(v2 + 296) == v321 && *(_DWORD *)(v2 + 256) == v27 ) *(_DWORD *)(v2 + 256) = v27 - 2; } return result; case 0x30: v36 = *(_DWORD *)(result + 256); v37 = "emplate parameter object for "; for ( i15 = 116; ; i15 = *v37++ ) { if ( v36 == 255 ) { v40 = *(_DWORD *)(v2 + 268); v408 = i15; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v40); ++*(_DWORD *)(v2 + 296); i15 = v408; v39 = 0; v36 = 1; } else { v39 = v36++; } *(_DWORD *)(v2 + 256) = v36; *(_BYTE *)(v2 + v39) = i15; *(_BYTE *)(v2 + 260) = i15; if ( v37 == "" ) break; } goto LABEL_9; case 0x31: v247 = *(_DWORD *)(a2 + 12); v248 = v5[4]; if ( v247 ) d_print_comp(v247, 17); v249 = *(_DWORD *)(v2 + 256); if ( v249 == 255 ) { v365 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v365); ++*(_DWORD *)(v2 + 296); v250 = 1; v249 = 0; } else { v250 = v249 + 1; } *(_DWORD *)(v2 + 256) = v250; *(_BYTE *)(v2 + v249) = 123; *(_BYTE *)(v2 + 260) = 123; d_print_comp(v248, 17); result = *(_DWORD *)(v2 + 256); if ( result != 255 ) goto LABEL_365; goto LABEL_437; case 0x32: v241 = *(_DWORD *)(a2 + 12); result = *(_DWORD *)(result + 256); v242 = "perator"; v243 = 111; v244 = *(_DWORD *)(v241 + 8); while ( 1 ) { if ( result == 255 ) { v246 = *(_DWORD *)(v2 + 268); v442 = v243; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v246); ++*(_DWORD *)(v2 + 296); v243 = v442; v245 = 0; result = 1; } else { v245 = result++; } *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v245) = v243; *(_BYTE *)(v2 + 260) = v243; if ( v242 == "" ) break; v243 = *v242++; } v288 = *(char **)(v241 + 4); if ( (unsigned __int8)(*v288 - 97) <= 0x19u ) { if ( result == 255 ) { v393 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v393); ++*(_DWORD *)(v2 + 296); v288 = *(char **)(v241 + 4); result = 0; } *(_DWORD *)(v2 + 256) = result + 1; *(_BYTE *)(v2 + result) = 32; *(_BYTE *)(v2 + 260) = 32; } v289 = v244 - 1; if ( v288[v244 - 1] != 32 ) v289 = v244; if ( v289 ) { result = *(_DWORD *)(v2 + 256); v290 = &v288[v289]; do { v292 = *v288; if ( result == 255 ) { v293 = *(_DWORD *)(v2 + 268); v448 = *v288; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v293); ++*(_DWORD *)(v2 + 296); v292 = v448; v291 = 0; result = 1; } else { v291 = result++; } ++v288; *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v291) = v292; *(_BYTE *)(v2 + 260) = v292; } while ( v290 != v288 ); } return result; case 0x33: v236 = *(_DWORD *)(result + 256); v237 = "perator "; for ( i16 = 111; ; i16 = *v237++ ) { if ( v236 == 255 ) { v240 = *(_DWORD *)(v2 + 268); v441 = i16; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v240); ++*(_DWORD *)(v2 + 296); i16 = v441; v239 = 0; v236 = 1; } else { v239 = v236++; } *(_DWORD *)(v2 + 256) = v236; *(_BYTE *)(v2 + v239) = i16; *(_BYTE *)(v2 + 260) = i16; if ( v237 == "" ) break; } goto LABEL_14; case 0x35: v231 = *(_DWORD *)(result + 256); v232 = "perator "; for ( i17 = 111; ; i17 = *v232++ ) { if ( v231 == 255 ) { v235 = *(_DWORD *)(v2 + 268); v440 = i17; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v235); ++*(_DWORD *)(v2 + 296); i17 = v440; v234 = 0; v231 = 1; } else { v234 = v231++; } *(_DWORD *)(v2 + 256) = v231; *(_BYTE *)(v2 + v234) = i17; *(_BYTE *)(v2 + 260) = i17; if ( v232 == "" ) break; } return d_print_conversion(v2, (int)v5); case 0x36: v255 = *(_DWORD **)(a2 + 12); return d_print_expr_op(v2, v255); case 0x37: v252 = *(_DWORD **)(a2 + 12); v214 = *(int **)(a2 + 16); if ( *v252 != 50 ) { if ( *v252 == 52 ) { v253 = *(_DWORD *)(result + 256); if ( v253 == 255 ) { v396 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v396); ++*(_DWORD *)(v2 + 296); v253 = 0; } *(_DWORD *)(v2 + 256) = v253 + 1; *(_BYTE *)(v2 + v253) = 40; *(_BYTE *)(v2 + 260) = 40; d_print_comp(v252[3], 17); v254 = *(_DWORD *)(v2 + 256); if ( v254 == 255 ) { v395 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v395); ++*(_DWORD *)(v2 + 296); v254 = 0; } *(_DWORD *)(v2 + 256) = v254 + 1; *(_BYTE *)(v2 + v254) = 41; *(_BYTE *)(v2 + 260) = 41; } else { d_print_expr_op(result, v252); } return d_print_subexpr(v2, v214); } v354 = *(unsigned __int8 **)v252[3]; v355 = *v354 - 97; if ( *v354 == 97 ) { v355 = v354[1] - 100; if ( v354[1] == 100 ) v355 = v354[2]; } v356 = *v214; if ( !v355 && v356 == 3 ) { if ( *(_DWORD *)v214[3] == 1 && *(_DWORD *)v214[4] == 41 ) v214 = (int *)v214[3]; } else if ( v356 == 57 ) { d_print_subexpr(result, (_DWORD *)v214[3]); v255 = v252; return d_print_expr_op(v2, v255); } if ( *v354 == 115 ) { if ( v354[1] == 90 && !v354[2] ) { for ( i18 = d_find_pack(result, v214, v354[2]); i18; ++v358 ) { if ( *i18 != 47 ) break; if ( !i18[3] ) break; i18 = (_DWORD *)i18[4]; } return d_append_num(v2, v358); } if ( v354[1] == 80 ) { v360 = 0; if ( !v354[2] ) { do { if ( *v214 != 47 ) break; v361 = v214[3]; if ( !v361 ) break; if ( *(_DWORD *)v361 == 75 ) { pack = d_find_pack(v2, *(_DWORD **)(v361 + 12), v360); for ( i19 = 0; pack; ++i19 ) { if ( *pack != 47 ) break; if ( !pack[3] ) break; pack = (_DWORD *)pack[4]; } v360 = i19 + v363; } else { ++v360; } v214 = (int *)v214[4]; } while ( v214 ); v383 = Str; sprintf_constprop_0(Str, (int)"%d", v360); result = strlen((const char *)Str); v384 = result; if ( result ) { result = *(_DWORD *)(v2 + 256); v385 = (FILE *)((char *)Str + v384); do { v387 = (char)v383->_ptr; if ( result == 255 ) { v388 = *(_DWORD *)(v2 + 268); v458 = (char)v383->_ptr; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v388); ++*(_DWORD *)(v2 + 296); v387 = v458; v386 = 0; result = 1; } else { v386 = result++; } v383 = (FILE *)((char *)v383 + 1); *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v386) = v387; *(_BYTE *)(v2 + 260) = v387; } while ( v383 != v385 ); } return result; } } } d_print_expr_op(result, v252); v359 = *v354; if ( v359 == 103 && v354[1] == 115 ) { v8 = v214; if ( !v354[2] ) return d_print_comp(v8, 17); } if ( v359 == 115 && v354[1] == 116 && !v354[2] ) { d_append_char(v2, 40); d_print_comp(v214, 17); v25 = 41; return d_append_char(v2, v25); } return d_print_subexpr(v2, v214); case 0x38: result = *(_DWORD *)(a2 + 16); if ( *(_DWORD *)result != 57 ) goto LABEL_7; v140 = *(_DWORD *)(a2 + 12); v141 = **(char ***)(v140 + 12); if ( v141[1] == 99 ) { v380 = *v141; if ( (unsigned __int8)(v380 - 99) <= 1u || (unsigned __int8)(v380 - 114) <= 1u ) { d_print_expr_op(v2, (_DWORD *)v140); d_append_char(v2, 60); d_print_comp(*(_DWORD *)(v5[4] + 12), 17); d_append_string(v2, ">("); d_print_comp(*(_DWORD *)(v5[4] + 16), 17); v25 = 41; return d_append_char(v2, v25); } } result = d_maybe_print_fold_expression(v2, (int)v5); if ( !result ) { v142 = (_DWORD *)v5[3]; if ( *v142 == 50 ) { v392 = v142[3]; if ( *(_DWORD *)(v392 + 8) == 1 && **(_BYTE **)(v392 + 4) == 62 ) { d_append_char(v2, 40); v142 = (_DWORD *)v5[3]; } } v143 = *(unsigned __int8 **)v142[3]; v144 = *v143 - 99; if ( *v143 == 99 ) { v144 = v143[1] - 108; if ( v143[1] == 108 ) v144 = v143[2]; } v145 = *(_DWORD *)(v5[4] + 12); if ( !v144 && *(_DWORD *)v145 == 3 ) { if ( **(_DWORD **)(v145 + 16) != 41 ) *(_DWORD *)(v2 + 280) = 1; d_print_subexpr(v2, *(_DWORD **)(v145 + 12)); } else { d_print_subexpr(v2, (_DWORD *)v145); } v146 = v5[3]; v147 = **(unsigned __int8 ***)(v146 + 12); v148 = *v147; if ( v148 == 105 && v147[1] == 120 && !v147[2] ) { d_append_char(v2, 91); d_print_comp(*(_DWORD *)(v5[4] + 16), 17); d_append_char(v2, 93); } else { if ( v148 != 99 || v147[1] != 108 || v147[2] ) d_print_expr_op(v2, (_DWORD *)v146); d_print_subexpr(v2, *(_DWORD **)(v5[4] + 16)); } result = v5[3]; if ( *(_DWORD *)result == 50 ) { result = *(_DWORD *)(result + 12); if ( *(_DWORD *)(result + 8) == 1 ) { result = *(_DWORD *)(result + 4); v25 = 41; if ( *(_BYTE *)result == 62 ) return d_append_char(v2, v25); } } } return result; case 0x3A: result = *(_DWORD *)(a2 + 16); if ( *(_DWORD *)result != 59 ) goto LABEL_7; result = *(_DWORD *)(result + 16); if ( *(_DWORD *)result != 60 ) goto LABEL_7; result = d_maybe_print_fold_expression(v2, a2); if ( result ) return result; v209 = v5[4]; v210 = v5[3]; v211 = *(_DWORD **)(v209 + 12); v212 = *(_DWORD *)(v209 + 16); v213 = *(_DWORD **)(v212 + 12); v214 = *(int **)(v212 + 16); v436 = v211; if ( !strcmp(**(const char ***)(v210 + 12), "qu") ) { d_print_subexpr(v2, v436); d_print_expr_op(v2, (_DWORD *)v210); d_print_subexpr(v2, v213); d_append_string(v2, " : "); } else { d_append_string(v2, "new "); if ( v436[3] ) { d_print_subexpr(v2, v436); d_append_char(v2, 32); } result = d_print_comp(v213, 17); if ( !v214 ) return result; } return d_print_subexpr(v2, v214); case 0x3D: case 0x3E: v19 = *(_DWORD **)(a2 + 12); if ( *v19 == 39 ) { v20 = *(_DWORD *)(v19[3] + 16); if ( v20 > 6 ) { if ( v20 == 7 ) { v325 = v5[4]; if ( !*(_DWORD *)v325 && *(_DWORD *)(v325 + 16) == 1 && v4 == 61 ) { v326 = **(_BYTE **)(v325 + 12); if ( v326 == 48 ) { v391 = "false"; return d_append_string(v2, v391); } if ( v326 == 49 ) { v391 = "true"; return d_append_string(v2, v391); } } } } else if ( v20 ) { v373 = (_DWORD *)v5[4]; if ( !*v373 ) { if ( v4 == 62 ) { d_append_char(v2, 45); v373 = (_DWORD *)v5[4]; } result = d_print_comp(v373, 17); switch ( v20 ) { case 2u: v25 = 117; return d_append_char(v2, v25); case 3u: v25 = 108; return d_append_char(v2, v25); case 4u: v391 = "ul"; return d_append_string(v2, v391); case 5u: v391 = "ll"; return d_append_string(v2, v391); case 6u: v391 = (const char *)&off_558CF7; return d_append_string(v2, v391); default: return result; } return result; } } } else { v20 = 0; } v21 = *(_DWORD *)(v2 + 256); if ( v21 == 255 ) { v372 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v372); v19 = (_DWORD *)v5[3]; v22 = 1; v21 = 0; ++*(_DWORD *)(v2 + 296); } else { v22 = v21 + 1; } *(_DWORD *)(v2 + 256) = v22; *(_BYTE *)(v2 + v21) = 40; *(_BYTE *)(v2 + 260) = 40; d_print_comp(v19, 17); v23 = *(_DWORD *)(v2 + 256); if ( v23 == 255 ) { v369 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v369); ++*(_DWORD *)(v2 + 296); v24 = 1; v23 = 0; } else { v24 = v23 + 1; } *(_DWORD *)(v2 + 256) = v24; *(_BYTE *)(v2 + v23) = 41; *(_BYTE *)(v2 + 260) = 41; if ( *v5 == 62 ) d_append_char(v2, 45); if ( v20 != 8 ) { LABEL_14: v8 = (int *)v5[4]; return d_print_comp(v8, 17); } d_append_char(v2, 91); d_print_comp(v5[4], 17); v25 = 93; return d_append_char(v2, v25); case 0x3F: v199 = *(_DWORD *)(result + 256); v200 = "ava resource "; for ( i20 = 106; ; i20 = *v200++ ) { if ( v199 == 255 ) { v203 = *(_DWORD *)(v2 + 268); v434 = i20; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v203); ++*(_DWORD *)(v2 + 296); i20 = v434; v202 = 0; v199 = 1; } else { v202 = v199++; } *(_DWORD *)(v2 + 256) = v199; *(_BYTE *)(v2 + v202) = i20; *(_BYTE *)(v2 + 260) = i20; if ( v200 == "" ) break; } goto LABEL_9; case 0x40: d_print_comp(*(_DWORD *)(a2 + 12), 17); goto LABEL_14; case 0x41: result = *(_DWORD *)(result + 256); v120 = *(_DWORD *)(a2 + 12); if ( result == 255 ) { v366 = *(_DWORD *)(v2 + 268); v457 = *(_DWORD *)(a2 + 12); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v366); ++*(_DWORD *)(v2 + 296); LOBYTE(v120) = v457; result = 0; v121 = 1; } else { v121 = result + 1; } *(_DWORD *)(v2 + 256) = v121; *(_BYTE *)(v2 + result) = v120; *(_BYTE *)(v2 + 260) = v120; return result; case 0x42: v220 = Str; sprintf_constprop_0(Str, (int)"%d", *(_DWORD *)(a2 + 12)); result = strlen((const char *)Str); v221 = result; if ( result ) { result = *(_DWORD *)(v2 + 256); v222 = (FILE *)((char *)Str + v221); do { v224 = (char)v220->_ptr; if ( result == 255 ) { v225 = *(_DWORD *)(v2 + 268); v438 = (char)v220->_ptr; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v225); ++*(_DWORD *)(v2 + 296); v224 = v438; v223 = 0; result = 1; } else { v223 = result++; } v220 = (FILE *)((char *)v220 + 1); *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v223) = v224; *(_BYTE *)(v2 + 260) = v224; } while ( v222 != v220 ); } return result; case 0x43: v215 = *(_DWORD *)(result + 256); v216 = "ecltype ("; for ( i21 = 100; ; i21 = *v216++ ) { if ( v215 == 255 ) { v219 = *(_DWORD *)(v2 + 268); v437 = i21; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v219); ++*(_DWORD *)(v2 + 296); i21 = v437; v218 = 0; v215 = 1; } else { v218 = v215++; } *(_DWORD *)(v2 + 256) = v215; *(_BYTE *)(v2 + v218) = i21; *(_BYTE *)(v2 + 260) = i21; if ( v216 == "" ) break; } d_print_comp(v5[3], 17); result = *(_DWORD *)(v2 + 256); if ( result == 255 ) { v368 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v368); ++*(_DWORD *)(v2 + 296); v308 = 1; result = 0; } else { v308 = result + 1; } *(_DWORD *)(v2 + 256) = v308; *(_BYTE *)(v2 + result) = 41; *(_BYTE *)(v2 + 260) = 41; return result; case 0x44: v226 = *(_DWORD *)(result + 256); v227 = "lobal constructors keyed to "; for ( i22 = 103; ; i22 = *v227++ ) { if ( v226 == 255 ) { v230 = *(_DWORD *)(v2 + 268); v439 = i22; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v230); ++*(_DWORD *)(v2 + 296); i22 = v439; v229 = 0; v226 = 1; } else { v229 = v226++; } *(_DWORD *)(v2 + 256) = v226; *(_BYTE *)(v2 + v229) = i22; *(_BYTE *)(v2 + 260) = i22; if ( v227 == "" ) break; } goto LABEL_9; case 0x45: v256 = *(_DWORD *)(result + 256); v257 = "lobal destructors keyed to "; for ( i23 = 103; ; i23 = *v257++ ) { if ( v256 == 255 ) { v260 = *(_DWORD *)(v2 + 268); v443 = i23; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v260); ++*(_DWORD *)(v2 + 296); i23 = v443; v259 = 0; v256 = 1; } else { v259 = v256++; } *(_DWORD *)(v2 + 256) = v256; *(_BYTE *)(v2 + v259) = i23; *(_BYTE *)(v2 + 260) = i23; if ( v257 == "" ) break; } goto LABEL_9; case 0x46: v204 = *(_DWORD *)(result + 256); v205 = "lambda("; for ( i24 = 123; ; i24 = *v205++ ) { if ( v204 == 255 ) { v208 = *(_DWORD *)(v2 + 268); v435 = i24; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v208); ++*(_DWORD *)(v2 + 296); i24 = v435; v207 = 0; v204 = 1; } else { v207 = v204++; } *(_DWORD *)(v2 + 256) = v204; *(_BYTE *)(v2 + v207) = i24; *(_BYTE *)(v2 + 260) = i24; if ( v205 == "" ) break; } v294 = v5[3]; v295 = ")#"; ++*(_DWORD *)(v2 + 288); d_print_comp(v294, 17); v296 = *(_DWORD *)(v2 + 256); v297 = 41; --*(_DWORD *)(v2 + 288); while ( 1 ) { if ( v296 == 255 ) { v299 = *(_DWORD *)(v2 + 268); v449 = v297; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v299); ++*(_DWORD *)(v2 + 296); v297 = v449; v298 = 0; v296 = 1; } else { v298 = v296++; } ++v295; *(_DWORD *)(v2 + 256) = v296; *(_BYTE *)(v2 + v298) = v297; *(_BYTE *)(v2 + 260) = v297; if ( v295 == "" ) break; v297 = *v295; } v300 = v5[4]; v301 = Str; sprintf_constprop_0(Str, (int)"%d", v300 + 1); v302 = strlen((const char *)Str); result = *(_DWORD *)(v2 + 256); if ( v302 ) { v303 = (FILE *)((char *)Str + v302); do { v305 = (char)v301->_ptr; if ( result == 255 ) { v306 = *(_DWORD *)(v2 + 268); v450 = (char)v301->_ptr; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v306); ++*(_DWORD *)(v2 + 296); v305 = v450; v304 = 0; result = 1; } else { v304 = result++; } v301 = (FILE *)((char *)v301 + 1); *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v304) = v305; *(_BYTE *)(v2 + 260) = v305; } while ( v303 != v301 ); } goto LABEL_436; case 0x48: v90 = *(_DWORD *)(result + 256); v91 = "unnamed type#"; for ( i25 = 123; ; i25 = *v91++ ) { if ( v90 == 255 ) { v94 = *(_DWORD *)(v2 + 268); v418 = i25; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v94); ++*(_DWORD *)(v2 + 296); i25 = v418; v93 = 0; v90 = 1; } else { v93 = v90++; } *(_DWORD *)(v2 + 256) = v90; *(_BYTE *)(v2 + v93) = i25; *(_BYTE *)(v2 + 260) = i25; if ( v91 == "" ) break; } v314 = v5[3]; v315 = Str; sprintf_constprop_0(Str, (int)"%d", v314 + 1); v316 = strlen((const char *)Str); result = *(_DWORD *)(v2 + 256); if ( v316 ) { v317 = (FILE *)((char *)Str + v316); do { v319 = (char)v315->_ptr; if ( result == 255 ) { v320 = *(_DWORD *)(v2 + 268); v452 = (char)v315->_ptr; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v320); ++*(_DWORD *)(v2 + 296); v319 = v452; v318 = 0; result = 1; } else { v318 = result++; } v315 = (FILE *)((char *)v315 + 1); *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v318) = v319; *(_BYTE *)(v2 + 260) = v319; } while ( v317 != v315 ); } LABEL_436: if ( result == 255 ) { LABEL_437: v307 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v307); ++*(_DWORD *)(v2 + 296); v251 = 1; result = 0; } else { LABEL_365: v251 = result + 1; } *(_DWORD *)(v2 + 256) = v251; *(_BYTE *)(v2 + result) = 125; *(_BYTE *)(v2 + 260) = 125; return result; case 0x49: v85 = *(_DWORD *)(result + 256); v86 = "ransaction clone for "; for ( i26 = 116; ; i26 = *v86++ ) { if ( v85 == 255 ) { v89 = *(_DWORD *)(v2 + 268); v417 = i26; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v89); ++*(_DWORD *)(v2 + 296); i26 = v417; v88 = 0; v85 = 1; } else { v88 = v85++; } *(_DWORD *)(v2 + 256) = v85; *(_BYTE *)(v2 + v88) = i26; *(_BYTE *)(v2 + 260) = i26; if ( v86 == "" ) break; } goto LABEL_9; case 0x4A: v80 = *(_DWORD *)(result + 256); v81 = "on-transaction clone for "; for ( i27 = 110; ; i27 = *v81++ ) { if ( v80 == 255 ) { v84 = *(_DWORD *)(v2 + 268); v416 = i27; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v84); ++*(_DWORD *)(v2 + 296); i27 = v416; v83 = 0; v80 = 1; } else { v83 = v80++; } *(_DWORD *)(v2 + 256) = v80; *(_BYTE *)(v2 + v83) = i27; *(_BYTE *)(v2 + 260) = i27; if ( v81 == "" ) break; } goto LABEL_9; case 0x4B: v74 = d_find_pack(result, *(_DWORD **)(a2 + 12), 0); if ( !v74 ) { d_print_subexpr(v2, (_DWORD *)v5[3]); v391 = "..."; return d_append_string(v2, v391); } while ( *v74 == 47 && v74[3] ) { v74 = (_DWORD *)v74[4]; if ( !v74 ) { v465 = v75; v462 = v75 + 1; v464 = (FILE *)v5[3]; do { LABEL_135: *(_DWORD *)(v2 + 292) = v3; result = d_print_comp(v464, 17); if ( v465 > v3 ) { result = *(_DWORD *)(v2 + 256); v76 = ", "; for ( i28 = 44; ; i28 = *v76 ) { if ( result == 255 ) { v79 = *(_DWORD *)(v2 + 268); v415 = i28; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v79); ++*(_DWORD *)(v2 + 296); i28 = v415; v78 = 0; result = 1; } else { v78 = result++; } ++v76; *(_DWORD *)(v2 + 256) = result; *(_BYTE *)(v2 + v78) = i28; *(_BYTE *)(v2 + 260) = i28; if ( "" == v76 ) break; } } ++v3; } while ( v3 < v462 ); return result; } ++v75; } result = v5[3]; v462 = v75; v464 = (FILE *)result; if ( !v75 ) return result; v465 = v75 - 1; goto LABEL_135; case 0x4C: v69 = "[abi:"; d_print_comp(*(_DWORD *)(a2 + 12), 17); v70 = *(_DWORD *)(v2 + 256); for ( i29 = 91; ; i29 = *v69 ) { if ( v70 == 255 ) { v73 = *(_DWORD *)(v2 + 268); v414 = i29; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v73); ++*(_DWORD *)(v2 + 296); i29 = v414; v72 = 0; v70 = 1; } else { v72 = v70++; } ++v69; *(_DWORD *)(v2 + 256) = v70; *(_BYTE *)(v2 + v72) = i29; *(_BYTE *)(v2 + 260) = i29; if ( v69 == "" ) break; } goto LABEL_394; case 0x4E: v122 = "[clone "; d_print_comp(*(_DWORD *)(a2 + 12), 17); v123 = *(_DWORD *)(v2 + 256); for ( i30 = 32; ; i30 = *v122++ ) { if ( v123 == 255 ) { v126 = *(_DWORD *)(v2 + 268); v424 = i30; *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v126); ++*(_DWORD *)(v2 + 296); i30 = v424; v125 = 0; v123 = 1; } else { v125 = v123++; } *(_DWORD *)(v2 + 256) = v123; *(_BYTE *)(v2 + v125) = i30; *(_BYTE *)(v2 + 260) = i30; if ( v122 == "" ) break; } LABEL_394: d_print_comp(v5[4], 17); result = *(_DWORD *)(v2 + 256); if ( result == 255 ) { v350 = *(_DWORD *)(v2 + 268); *(_BYTE *)(v2 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v350); ++*(_DWORD *)(v2 + 296); v273 = 1; result = 0; } else { v273 = result + 1; } *(_DWORD *)(v2 + 256) = v273; *(_BYTE *)(v2 + result) = 93; *(_BYTE *)(v2 + 260) = 93; return result; default: goto LABEL_7; } do { if ( result == *v375 ) { v377 = *(_DWORD **)(v2 + 300); v378 = v377; if ( !v377 ) { LABEL_606: v394 = *(_DWORD *)(v2 + 272); *(_DWORD *)(v2 + 272) = v375[1]; v460 = v394; v3 = 1; result = (unsigned int)d_lookup_template_argument(v2, result); if ( !result ) goto LABEL_607; LABEL_578: v18 = *(char **)result; if ( *(_DWORD *)result == 47 ) { v379 = *(_DWORD *)(v2 + 292); if ( v379 < 0 ) { v405 = *(char **)(v2 + 276); if ( *v5 != 47 ) goto LABEL_36; goto LABEL_463; } result = (unsigned int)d_index_template_argument_part_0((_DWORD *)result, v379); if ( !result ) { if ( !v3 ) goto LABEL_7; LABEL_607: result = v460; *(_DWORD *)(v2 + 272) = v460; goto LABEL_7; } v18 = *(char **)result; } LABEL_33: v405 = *(char **)(v2 + 276); if ( v18 != (char *)35 && (char *)*v5 != v18 ) { if ( v18 == (char *)36 ) { v13 = *(_DWORD *)(result + 12); Str[0]._cnt = (int)v5; Str[0]._base = 0; Str[0]._ptr = v405; *(_DWORD *)(v2 + 276) = Str; Str[0]._flag = *(_DWORD *)(v2 + 272); if ( v13 ) goto LABEL_18; goto LABEL_17; } LABEL_36: v11 = v405; LABEL_16: Str[0]._ptr = v11; *(_DWORD *)(v2 + 276) = Str; v12 = *(_DWORD *)(v2 + 272); Str[0]._cnt = (int)v5; Str[0]._base = 0; Str[0]._flag = v12; LABEL_17: v13 = v5[3]; LABEL_18: d_print_comp(v13, 17); if ( !Str[0]._base ) d_print_mod(v2, v5); result = (unsigned int)Str[0]._ptr; *(_DWORD *)(v2 + 276) = Str[0]._ptr; if ( v3 ) { result = v460; *(_DWORD *)(v2 + 272) = v460; } return result; } LABEL_463: v5 = (_DWORD *)result; goto LABEL_36; } while ( *v378 != result && (v377 == v378 || (_DWORD *)*v378 != v5) ) { v378 = (_DWORD *)v378[1]; if ( !v378 ) goto LABEL_606; } LABEL_577: v3 = 0; result = (unsigned int)d_lookup_template_argument(v2, result); if ( !result ) goto LABEL_7; goto LABEL_578; } ++v376; v375 += 2; } while ( v376 != v374 ); LABEL_621: if ( *(_DWORD *)(v2 + 312) <= v374 ) goto LABEL_7; v398 = *(_DWORD **)(v2 + 272); v399 = *(_DWORD *)(v2 + 304) + 8 * v374; *(_DWORD *)(v2 + 308) = v374 + 1; v400 = (int *)(v399 + 4); *(v400 - 1) = result; if ( !v398 ) { LABEL_630: *v400 = 0; goto LABEL_577; } v401 = *(_DWORD *)(v2 + 320); v464 = (FILE *)result; v459 = *(_DWORD *)(v2 + 324); while ( v459 > v401 ) { result = v398[1]; v402 = *(_DWORD *)(v2 + 316) + 8 * v401++; *(_DWORD *)(v2 + 320) = v401; *(_DWORD *)(v402 + 4) = result; *v400 = v402; v398 = (_DWORD *)*v398; v400 = (int *)v402; if ( !v398 ) { result = (unsigned int)v464; goto LABEL_630; } } LABEL_7: *(_DWORD *)(v2 + 280) = 1; return result; } // 45CF43: conditional instruction was optimized away because eax.4==73 // 45A7BF: variable 'v460' is possibly undefined // 45AF70: variable 'v75' is possibly undefined // 45CEBA: variable 'v358' is possibly undefined // 45CFAE: variable 'v363' is possibly undefined // 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); // 558CF7: using guessed type void *off_558CF7; // 559B20: using guessed type void **off_559B20; //----- (0045D800) -------------------------------------------------------- int __usercall d_print_comp@(int result@, int a2@) { _DWORD *v2; // esi int v4; // edx int v5; // eax int v6; // [esp+8h] [ebp-14h] BYREF int v7; // [esp+Ch] [ebp-10h] v2 = (_DWORD *)result; if ( a2 && (result = *(_DWORD *)(a2 + 4), result <= 1) && (v4 = v2[71], v4 <= 1024) ) { v6 = a2; *(_DWORD *)(a2 + 4) = result + 1; v5 = v2[75]; v2[71] = v4 + 1; v7 = v5; v2[75] = &v6; d_print_comp_inner((unsigned int)v2, a2); result = v7; v2[75] = v7; --*(_DWORD *)(a2 + 4); --v2[71]; } else { v2[70] = 1; } return result; } //----- (0045D890) -------------------------------------------------------- int __usercall d_print_mod@(int a1@, _DWORD *a2@) { _DWORD *v2; // esi int result; // eax const char *v5; // esi char i; // dl int v7; // ecx int v8; // eax const char *v9; // esi char j; // dl int v11; // ecx int v12; // eax const char *v13; // esi char k; // dl int v15; // ecx int v16; // eax const char *v17; // edi char i1; // dl int v19; // ecx int v20; // eax int v21; // edx int v22; // edx int v23; // eax int v24; // edx int v25; // edx const char *v26; // esi char m; // dl int v28; // ecx int v29; // eax const char *v30; // esi char n; // dl int v32; // ecx int v33; // eax const char *v34; // esi char ii; // dl int v36; // ecx int v37; // eax int v38; // ecx const char *v39; // esi char jj; // dl int v41; // ecx int v42; // eax int v43; // eax const char *v44; // edi char kk; // dl int v46; // ecx int v47; // eax const char *v48; // esi char mm; // dl int v50; // ecx int v51; // eax const char *v52; // edi char nn; // dl int v54; // ecx int v55; // eax int v56; // ecx int v57; // edx int v58; // edx int v59; // eax int v60; // edx int v61; // edx int v62; // eax int v63; // eax int v64; // eax int v65; // eax int v66; // eax int v67; // eax int v68; // eax int v69; // eax char v70; // [esp+1Fh] [ebp-1Dh] char v71; // [esp+1Fh] [ebp-1Dh] 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] v2 = a2; switch ( *a2 ) { case 3: a2 = (_DWORD *)a2[3]; return d_print_comp(a2, 17); case 0x19: case 0x1C: result = *(_DWORD *)(a1 + 256); v5 = "restrict"; for ( i = 32; ; i = *v5++ ) { if ( result == 255 ) { v8 = *(_DWORD *)(a1 + 268); v70 = i; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v8); ++*(_DWORD *)(a1 + 296); i = v70; v7 = 0; result = 1; } else { v7 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v7) = i; *(_BYTE *)(a1 + 260) = i; if ( v5 == "" ) break; } return result; case 0x1A: case 0x1D: result = *(_DWORD *)(a1 + 256); v9 = "volatile"; for ( j = 32; ; j = *v9++ ) { if ( result == 255 ) { v12 = *(_DWORD *)(a1 + 268); v71 = j; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v12); ++*(_DWORD *)(a1 + 296); j = v71; v11 = 0; result = 1; } else { v11 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v11) = j; *(_BYTE *)(a1 + 260) = j; if ( v9 == "" ) break; } return result; case 0x1B: case 0x1E: result = *(_DWORD *)(a1 + 256); v13 = "const"; for ( k = 32; ; k = *v13++ ) { if ( result == 255 ) { v16 = *(_DWORD *)(a1 + 268); v72 = k; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v16); ++*(_DWORD *)(a1 + 296); k = v72; v15 = 0; result = 1; } else { v15 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v15) = k; *(_BYTE *)(a1 + 260) = k; if ( v13 == "" ) break; } return result; case 0x1F: v21 = *(_DWORD *)(a1 + 256); if ( v21 == 255 ) { v65 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v65); *(_BYTE *)a1 = 32; result = 1; ++*(_DWORD *)(a1 + 296); LABEL_38: v25 = result + 1; goto LABEL_39; } result = v21 + 1; *(_DWORD *)(a1 + 256) = v21 + 1; *(_BYTE *)(a1 + v21) = 32; *(_BYTE *)(a1 + 260) = 32; LABEL_37: if ( result != 255 ) goto LABEL_38; v67 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v67); ++*(_DWORD *)(a1 + 296); v25 = 1; result = 0; LABEL_39: *(_DWORD *)(a1 + 256) = v25; *(_BYTE *)(a1 + result) = 38; *(_BYTE *)(a1 + 260) = 38; return result; case 0x20: v22 = *(_DWORD *)(a1 + 256); if ( v22 == 255 ) { v64 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v64); ++*(_DWORD *)(a1 + 296); result = 1; v22 = 0; } else { result = v22 + 1; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v22) = 32; *(_BYTE *)(a1 + 260) = 32; goto LABEL_42; case 0x21: v23 = *(_DWORD *)(a1 + 256); if ( v23 == 255 ) { v63 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v63); ++*(_DWORD *)(a1 + 296); v24 = 1; v23 = 0; } else { v24 = v23 + 1; } *(_DWORD *)(a1 + 256) = v24; *(_BYTE *)(a1 + v23) = 32; *(_BYTE *)(a1 + 260) = 32; a2 = (_DWORD *)v2[4]; return d_print_comp(a2, 17); case 0x22: result = *(_DWORD *)(a1 + 256); if ( result == 255 ) { v69 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v69); ++*(_DWORD *)(a1 + 296); v61 = 1; result = 0; } else { v61 = result + 1; } *(_DWORD *)(a1 + 256) = v61; *(_BYTE *)(a1 + result) = 42; *(_BYTE *)(a1 + 260) = 42; return result; case 0x23: result = *(_DWORD *)(a1 + 256); goto LABEL_37; case 0x24: result = *(_DWORD *)(a1 + 256); LABEL_42: v26 = "&&"; for ( m = 38; ; m = *v26 ) { if ( result == 255 ) { v29 = *(_DWORD *)(a1 + 268); v74 = m; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v29); ++*(_DWORD *)(a1 + 296); m = v74; v28 = 0; result = 1; } else { v28 = result++; } ++v26; *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v28) = m; *(_BYTE *)(a1 + 260) = m; if ( v26 == "" ) break; } return result; case 0x25: result = *(_DWORD *)(a1 + 256); v30 = "_Complex"; for ( n = 32; ; n = *v30++ ) { if ( result == 255 ) { v33 = *(_DWORD *)(a1 + 268); v75 = n; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v33); ++*(_DWORD *)(a1 + 296); n = v75; v32 = 0; result = 1; } else { v32 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v32) = n; *(_BYTE *)(a1 + 260) = n; if ( v30 == "" ) break; } return result; case 0x26: result = *(_DWORD *)(a1 + 256); v34 = "_Imaginary"; for ( ii = 32; ; ii = *v34++ ) { if ( result == 255 ) { v37 = *(_DWORD *)(a1 + 268); v76 = ii; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v37); ++*(_DWORD *)(a1 + 296); ii = v76; v36 = 0; result = 1; } else { v36 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v36) = ii; *(_BYTE *)(a1 + 260) = ii; if ( v34 == "" ) break; } return result; case 0x2B: if ( *(_BYTE *)(a1 + 260) != 40 ) { v59 = *(_DWORD *)(a1 + 256); if ( v59 == 255 ) { v68 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v68); ++*(_DWORD *)(a1 + 296); v60 = 1; v59 = 0; } else { v60 = v59 + 1; } *(_DWORD *)(a1 + 256) = v60; *(_BYTE *)(a1 + v59) = 32; *(_BYTE *)(a1 + 260) = 32; } v38 = v2[3]; v39 = "::*"; d_print_comp(v38, 17); result = *(_DWORD *)(a1 + 256); for ( jj = 58; ; jj = *v39 ) { if ( result == 255 ) { v42 = *(_DWORD *)(a1 + 268); v77 = jj; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v42); ++*(_DWORD *)(a1 + 296); jj = v77; v41 = 0; result = 1; } else { v41 = result++; } ++v39; *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v41) = jj; *(_BYTE *)(a1 + 260) = jj; if ( v39 == "" ) break; } return result; case 0x2D: v43 = *(_DWORD *)(a1 + 256); v44 = "__vector("; for ( kk = 32; ; kk = *v44++ ) { if ( v43 == 255 ) { v47 = *(_DWORD *)(a1 + 268); v78 = kk; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v47); ++*(_DWORD *)(a1 + 296); kk = v78; v46 = 0; v43 = 1; } else { v46 = v43++; } *(_DWORD *)(a1 + 256) = v43; *(_BYTE *)(a1 + v46) = kk; *(_BYTE *)(a1 + 260) = kk; if ( v44 == "" ) break; } v56 = v2[3]; goto LABEL_90; case 0x4D: result = *(_DWORD *)(a1 + 256); v48 = "transaction_safe"; for ( mm = 32; ; mm = *v48++ ) { if ( result == 255 ) { v51 = *(_DWORD *)(a1 + 268); v79 = mm; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v51); ++*(_DWORD *)(a1 + 296); mm = v79; v50 = 0; result = 1; } else { v50 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v50) = mm; *(_BYTE *)(a1 + 260) = mm; if ( v48 == "" ) break; } return result; case 0x4F: result = *(_DWORD *)(a1 + 256); v52 = "noexcept"; for ( nn = 32; ; nn = *v52++ ) { if ( result == 255 ) { v55 = *(_DWORD *)(a1 + 268); v80 = nn; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v55); ++*(_DWORD *)(a1 + 296); nn = v80; v54 = 0; result = 1; } else { v54 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v54) = nn; *(_BYTE *)(a1 + 260) = nn; if ( v52 == "" ) break; } goto LABEL_85; case 0x50: result = *(_DWORD *)(a1 + 256); v17 = "throw"; for ( i1 = 32; ; i1 = *v17++ ) { if ( result == 255 ) { v20 = *(_DWORD *)(a1 + 268); v73 = i1; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v20); ++*(_DWORD *)(a1 + 296); i1 = v73; v19 = 0; result = 1; } else { v19 = result++; } *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v19) = i1; *(_BYTE *)(a1 + 260) = i1; if ( v17 == "" ) break; } LABEL_85: v56 = v2[4]; if ( v56 ) { if ( result == 255 ) { v62 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v62); v56 = v2[4]; v57 = 1; result = 0; ++*(_DWORD *)(a1 + 296); } else { v57 = result + 1; } *(_DWORD *)(a1 + 256) = v57; *(_BYTE *)(a1 + result) = 40; *(_BYTE *)(a1 + 260) = 40; LABEL_90: d_print_comp(v56, 17); result = *(_DWORD *)(a1 + 256); if ( result == 255 ) { v66 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v66); ++*(_DWORD *)(a1 + 296); v58 = 1; result = 0; } else { v58 = result + 1; } *(_DWORD *)(a1 + 256) = v58; *(_BYTE *)(a1 + result) = 41; *(_BYTE *)(a1 + 260) = 41; } return result; default: return d_print_comp(a2, 17); } } // 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); //----- (0045E1F0) -------------------------------------------------------- unsigned int __usercall d_print_function_type@(unsigned int a1@, int a2@, _DWORD *a3) { _DWORD *v5; // edx char v6; // dl int v7; // eax int v8; // edx int v9; // ebp int v10; // eax int v11; // edx int v12; // eax int v13; // ecx int v14; // edx unsigned int result; // eax int v16; // eax int v17; // eax int v18; // eax int v19; // eax int v20; // eax if ( !a3 ) goto LABEL_17; v5 = a3; while ( 2 ) { if ( v5[2] ) { LABEL_17: v9 = *(_DWORD *)(a1 + 276); *(_DWORD *)(a1 + 276) = 0; d_print_mod_list(a1, a3, 0); v11 = *(_DWORD *)(a1 + 256); if ( v11 != 255 ) { LABEL_11: v12 = v11 + 1; *(_DWORD *)(a1 + 256) = v11 + 1; *(_BYTE *)(a1 + v11) = 40; *(_BYTE *)(a1 + 260) = 40; v13 = *(_DWORD *)(a2 + 16); if ( !v13 ) goto LABEL_13; goto LABEL_12; } goto LABEL_18; } switch ( *(_DWORD *)v5[1] ) { case 0x19: case 0x1A: case 0x1B: case 0x21: case 0x25: case 0x26: case 0x2B: v6 = *(_BYTE *)(a1 + 260); v7 = *(_DWORD *)(a1 + 256); goto LABEL_6; case 0x22: case 0x23: case 0x24: v6 = *(_BYTE *)(a1 + 260); v7 = *(_DWORD *)(a1 + 256); if ( (*(_BYTE *)(a1 + 260) & 0xFD) == 40 ) { if ( v7 == 255 ) goto LABEL_22; goto LABEL_8; } LABEL_6: if ( v6 != 32 ) { if ( v7 == 255 ) { v20 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v20); *(_BYTE *)a1 = 32; v7 = 1; ++*(_DWORD *)(a1 + 296); goto LABEL_8; } *(_DWORD *)(a1 + 256) = v7 + 1; *(_BYTE *)(a1 + v7++) = 32; *(_BYTE *)(a1 + 260) = 32; } if ( v7 != 255 ) { LABEL_8: v8 = v7 + 1; goto LABEL_9; } LABEL_22: v17 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v17); ++*(_DWORD *)(a1 + 296); v8 = 1; v7 = 0; LABEL_9: *(_DWORD *)(a1 + 256) = v8; *(_BYTE *)(a1 + v7) = 40; v9 = *(_DWORD *)(a1 + 276); *(_BYTE *)(a1 + 260) = 40; *(_DWORD *)(a1 + 276) = 0; d_print_mod_list(a1, a3, 0); v10 = *(_DWORD *)(a1 + 256); if ( v10 != 255 ) { v11 = v10 + 1; *(_DWORD *)(a1 + 256) = v10 + 1; *(_BYTE *)(a1 + v10) = 41; *(_BYTE *)(a1 + 260) = 41; if ( v10 != 254 ) goto LABEL_11; LABEL_18: v16 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v16); *(_BYTE *)a1 = 40; *(_BYTE *)(a1 + 260) = 40; v13 = *(_DWORD *)(a2 + 16); ++*(_DWORD *)(a1 + 296); *(_DWORD *)(a1 + 256) = 1; if ( !v13 ) { v12 = 1; goto LABEL_14; } goto LABEL_12; } v19 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v19); *(_BYTE *)(a1 + 260) = 40; *(_WORD *)a1 = 10281; v13 = *(_DWORD *)(a2 + 16); v12 = 2; ++*(_DWORD *)(a1 + 296); *(_DWORD *)(a1 + 256) = 2; if ( !v13 ) goto LABEL_14; LABEL_12: d_print_comp(v13, 17); v12 = *(_DWORD *)(a1 + 256); LABEL_13: if ( v12 == 255 ) { v18 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v18); ++*(_DWORD *)(a1 + 296); v14 = 1; v12 = 0; goto LABEL_15; } LABEL_14: v14 = v12 + 1; LABEL_15: *(_DWORD *)(a1 + 256) = v14; *(_BYTE *)(a1 + v12) = 41; *(_BYTE *)(a1 + 260) = 41; result = d_print_mod_list(a1, a3, 1); *(_DWORD *)(a1 + 276) = v9; return result; default: v5 = (_DWORD *)*v5; if ( !v5 ) goto LABEL_17; continue; } } } // 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); //----- (0045E530) -------------------------------------------------------- unsigned int __usercall d_print_mod_list@(unsigned int result@, _DWORD *a2@, int a3) { _DWORD *v3; // edi int v4; // ebx int v5; // edx int v6; // esi unsigned int *v7; // ecx bool v8; // cf int v9; // eax int v10; // ebp unsigned int v11; // ecx int v12; // eax const char *v13; // ebp char i; // dl int v15; // ecx int v16; // eax unsigned int *v17; // ebp unsigned int v18; // edx char *v19; // edi char j; // dl int v21; // ecx int v22; // eax FILE *p_Str; // edi size_t v24; // edx int v25; // eax FILE *v26; // esi int v27; // ecx char ptr; // dl int v29; // eax const char *v30; // edi char k; // dl int v32; // ecx int v33; // eax char v34; // [esp+1Bh] [ebp-41h] char v35; // [esp+1Bh] [ebp-41h] char v36; // [esp+1Bh] [ebp-41h] char v37; // [esp+1Bh] [ebp-41h] int v38; // [esp+1Ch] [ebp-40h] FILE Str; // [esp+27h] [ebp-35h] BYREF v3 = a2; v4 = result; if ( a2 ) { while ( 1 ) { if ( *(_DWORD *)(v4 + 280) ) return result; result = v3[2]; if ( !result ) break; LABEL_7: v3 = (_DWORD *)*v3; if ( !v3 ) return result; } v7 = (unsigned int *)v3[1]; result = *v7; if ( !a3 ) { if ( result == 77 ) goto LABEL_7; if ( result > 0x4D ) { v8 = result == 79; result -= 79; if ( v8 || result == 1 ) goto LABEL_7; v9 = v3[3]; v6 = *(_DWORD *)(v4 + 272); v3[2] = 1; *(_DWORD *)(v4 + 272) = v9; goto LABEL_6; } if ( result - 28 <= 4 ) goto LABEL_7; } v5 = v3[3]; v6 = *(_DWORD *)(v4 + 272); v3[2] = 1; *(_DWORD *)(v4 + 272) = v5; switch ( result ) { case 0x29u: result = d_print_function_type(*v3); *(_DWORD *)(v4 + 272) = v6; return result; case 0x2Au: result = d_print_array_type(v4, (int)v7, (int **)*v3); *(_DWORD *)(v4 + 272) = v6; return result; case 2u: v10 = *(_DWORD *)(v4 + 276); v11 = v7[3]; *(_DWORD *)(v4 + 276) = 0; d_print_comp(v11, 17); *(_DWORD *)(v4 + 276) = v10; v12 = *(_DWORD *)(v4 + 256); v13 = "::"; for ( i = 58; ; i = *v13 ) { if ( v12 == 255 ) { v16 = *(_DWORD *)(v4 + 268); *(_BYTE *)(v4 + 255) = 0; v34 = i; (*(void (__cdecl **)(int, int, int))(v4 + 264))(v4, 255, v16); ++*(_DWORD *)(v4 + 296); i = v34; v15 = 0; v12 = 1; } else { v15 = v12++; } ++v13; *(_DWORD *)(v4 + 256) = v12; *(_BYTE *)(v4 + v15) = i; *(_BYTE *)(v4 + 260) = i; if ( v13 == "" ) break; } v17 = *(unsigned int **)(v3[1] + 16); v18 = *v17; if ( *v17 == 71 ) { v19 = "{default arg#" + 1; for ( j = 123; ; j = *v19++ ) { if ( v12 == 255 ) { v22 = *(_DWORD *)(v4 + 268); *(_BYTE *)(v4 + 255) = 0; v35 = j; (*(void (__cdecl **)(int, int, int))(v4 + 264))(v4, 255, v22); ++*(_DWORD *)(v4 + 296); j = v35; v21 = 0; v12 = 1; } else { v21 = v12++; } *(_DWORD *)(v4 + 256) = v12; *(_BYTE *)(v4 + v21) = j; *(_BYTE *)(v4 + 260) = j; if ( v19 == "" ) break; } p_Str = &Str; sprintf_constprop_0(&Str, (int)"%d", v17[4] + 1); v24 = strlen((const char *)&Str); v25 = *(_DWORD *)(v4 + 256); if ( v24 ) { v38 = v6; v26 = (FILE *)((char *)&Str + v24); do { ptr = (char)p_Str->_ptr; if ( v25 == 255 ) { v29 = *(_DWORD *)(v4 + 268); *(_BYTE *)(v4 + 255) = 0; v36 = ptr; (*(void (__cdecl **)(int, int, int))(v4 + 264))(v4, 255, v29); ++*(_DWORD *)(v4 + 296); ptr = v36; v27 = 0; v25 = 1; } else { v27 = v25++; } p_Str = (FILE *)((char *)p_Str + 1); *(_DWORD *)(v4 + 256) = v25; *(_BYTE *)(v4 + v27) = ptr; *(_BYTE *)(v4 + 260) = ptr; } while ( p_Str != v26 ); v6 = v38; } v30 = "}::"; for ( k = 125; ; k = *v30 ) { if ( v25 == 255 ) { v33 = *(_DWORD *)(v4 + 268); *(_BYTE *)(v4 + 255) = 0; v37 = k; (*(void (__cdecl **)(int, int, int))(v4 + 264))(v4, 255, v33); ++*(_DWORD *)(v4 + 296); k = v37; v32 = 0; v25 = 1; } else { v32 = v25++; } *(_DWORD *)(v4 + 256) = v25; ++v30; *(_BYTE *)(v4 + v32) = k; *(_BYTE *)(v4 + 260) = k; if ( v30 == "" ) break; } goto LABEL_32; } while ( 1 ) { if ( v18 != 77 ) { if ( v18 > 0x4D ) { if ( v18 - 79 > 1 ) { LABEL_30: result = d_print_comp(v17, 17); *(_DWORD *)(v4 + 272) = v6; return result; } } else if ( v18 - 28 > 4 ) { goto LABEL_30; } } LABEL_32: v17 = (unsigned int *)v17[3]; v18 = *v17; } } LABEL_6: result = d_print_mod(v4, v7); *(_DWORD *)(v4 + 272) = v6; goto LABEL_7; } return result; } // 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); // 45E1F0: using guessed type _DWORD __cdecl d_print_function_type(_DWORD); // 45E530: using guessed type FILE var_35; //----- (0045E890) -------------------------------------------------------- int __usercall d_print_array_type@(int a1@, int a2@, int **a3) { int **v5; // eax int v6; // eax int v7; // edx int result; // eax int v9; // ecx int v10; // edx int v11; // eax int v12; // eax int v13; // eax char *v14; // esi char i; // dl int v16; // ecx int v17; // eax int v18; // edx int v19; // eax int v20; // eax char v21; // [esp+1Fh] [ebp-1Dh] v5 = a3; if ( !a3 ) { LABEL_5: v6 = *(_DWORD *)(a1 + 256); if ( v6 == 255 ) goto LABEL_25; LABEL_6: v7 = v6 + 1; *(_DWORD *)(a1 + 256) = v6 + 1; *(_BYTE *)(a1 + v6) = 32; *(_BYTE *)(a1 + 260) = 32; if ( v6 == 254 ) goto LABEL_14; goto LABEL_7; } while ( v5[2] ) { v5 = (int **)*v5; if ( !v5 ) { d_print_mod_list(0); goto LABEL_5; } } if ( *v5[1] == 42 ) { d_print_mod_list(0); v7 = *(_DWORD *)(a1 + 256); if ( v7 == 255 ) { LABEL_14: v11 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v11); *(_BYTE *)a1 = 91; *(_BYTE *)(a1 + 260) = 91; v9 = *(_DWORD *)(a2 + 12); ++*(_DWORD *)(a1 + 296); *(_DWORD *)(a1 + 256) = 1; if ( !v9 ) { result = 1; goto LABEL_10; } goto LABEL_8; } LABEL_7: result = v7 + 1; *(_DWORD *)(a1 + 256) = v7 + 1; *(_BYTE *)(a1 + v7) = 91; *(_BYTE *)(a1 + 260) = 91; v9 = *(_DWORD *)(a2 + 12); if ( !v9 ) goto LABEL_9; goto LABEL_8; } v13 = *(_DWORD *)(a1 + 256); v14 = (char *)&unk_5590D4; for ( i = 32; ; i = *v14 ) { if ( v13 == 255 ) { v17 = *(_DWORD *)(a1 + 268); v21 = i; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v17); ++*(_DWORD *)(a1 + 296); i = v21; v16 = 0; v13 = 1; } else { v16 = v13++; } *(_DWORD *)(a1 + 256) = v13; ++v14; *(_BYTE *)(a1 + v16) = i; *(_BYTE *)(a1 + 260) = i; if ( &unk_5590D6 == (_UNKNOWN *)v14 ) break; } d_print_mod_list(0); v18 = *(_DWORD *)(a1 + 256); if ( v18 == 255 ) { v20 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v20); *(_BYTE *)a1 = 41; v6 = 1; ++*(_DWORD *)(a1 + 296); goto LABEL_6; } v6 = v18 + 1; *(_DWORD *)(a1 + 256) = v18 + 1; *(_BYTE *)(a1 + v18) = 41; *(_BYTE *)(a1 + 260) = 41; if ( v18 != 254 ) goto LABEL_6; LABEL_25: v19 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v19); *(_BYTE *)(a1 + 260) = 91; *(_WORD *)a1 = 23328; v9 = *(_DWORD *)(a2 + 12); result = 2; ++*(_DWORD *)(a1 + 296); *(_DWORD *)(a1 + 256) = 2; if ( !v9 ) goto LABEL_10; LABEL_8: d_print_comp(v9, 17); result = *(_DWORD *)(a1 + 256); LABEL_9: if ( result == 255 ) { v12 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v12); ++*(_DWORD *)(a1 + 296); v10 = 1; result = 0; goto LABEL_11; } LABEL_10: v10 = result + 1; LABEL_11: *(_DWORD *)(a1 + 256) = v10; *(_BYTE *)(a1 + result) = 93; *(_BYTE *)(a1 + 260) = 93; return result; } // 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); // 45E530: using guessed type _DWORD __cdecl d_print_mod_list(_DWORD); //----- (0045EB70) -------------------------------------------------------- int __usercall d_print_conversion@(int a1@, int a2@) { int v4; // eax int v5; // edx _DWORD *v6; // ecx int result; // eax int v8; // eax int v9; // edx int v10; // edx int v11; // eax int v12; // edx int v13; // eax int v14; // eax int v15; // eax int v16[5]; // [esp+18h] [ebp-14h] BYREF v4 = *(_DWORD *)(a1 + 328); if ( v4 ) { v5 = *(_DWORD *)(a1 + 272); v16[1] = v4; v16[0] = v5; *(_DWORD *)(a1 + 272) = v16; } v6 = *(_DWORD **)(a2 + 12); if ( *v6 == 4 ) { d_print_comp(v6[3], 17); if ( *(_DWORD *)(a1 + 328) ) *(_DWORD *)(a1 + 272) = v16[0]; v8 = *(_DWORD *)(a1 + 256); if ( *(_BYTE *)(a1 + 260) == 60 ) { if ( v8 == 255 ) { v14 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v14); *(_BYTE *)a1 = 32; v8 = 1; ++*(_DWORD *)(a1 + 296); goto LABEL_11; } *(_DWORD *)(a1 + 256) = v8 + 1; *(_BYTE *)(a1 + v8++) = 32; *(_BYTE *)(a1 + 260) = 32; } if ( v8 == 255 ) { v13 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v13); ++*(_DWORD *)(a1 + 296); v9 = 1; v8 = 0; LABEL_12: *(_DWORD *)(a1 + 256) = v9; *(_BYTE *)(a1 + v8) = 60; *(_BYTE *)(a1 + 260) = 60; d_print_comp(*(_DWORD *)(*(_DWORD *)(a2 + 12) + 16), 17); if ( *(_BYTE *)(a1 + 260) == 62 ) { v12 = *(_DWORD *)(a1 + 256); if ( v12 == 255 ) { v15 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v15); *(_BYTE *)a1 = 32; result = 1; ++*(_DWORD *)(a1 + 296); goto LABEL_15; } result = v12 + 1; *(_DWORD *)(a1 + 256) = v12 + 1; *(_BYTE *)(a1 + v12) = 32; *(_BYTE *)(a1 + 260) = 32; } else { result = *(_DWORD *)(a1 + 256); } if ( result == 255 ) { v11 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v11); ++*(_DWORD *)(a1 + 296); v10 = 1; result = 0; goto LABEL_16; } LABEL_15: v10 = result + 1; LABEL_16: *(_DWORD *)(a1 + 256) = v10; *(_BYTE *)(a1 + result) = 62; *(_BYTE *)(a1 + 260) = 62; return result; } LABEL_11: v9 = v8 + 1; goto LABEL_12; } result = d_print_comp(v6, 17); if ( *(_DWORD *)(a1 + 328) ) { result = v16[0]; *(_DWORD *)(a1 + 272) = v16[0]; } return result; } // 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); //----- (0045EDC0) -------------------------------------------------------- int __usercall d_print_expr_op@(int a1@, _DWORD *a2@) { int result; // eax int v4; // edi char *v5; // esi char *v6; // edi int v7; // ecx char v8; // dl int v9; // eax char v10; // [esp+1Fh] [ebp-Dh] if ( *a2 != 50 ) return d_print_comp(a2, 17); result = a2[3]; v4 = *(_DWORD *)(result + 8); v5 = *(char **)(result + 4); if ( v4 ) { result = *(_DWORD *)(a1 + 256); v6 = &v5[v4]; do { v8 = *v5; if ( result == 255 ) { v9 = *(_DWORD *)(a1 + 268); v10 = *v5; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v9); ++*(_DWORD *)(a1 + 296); v8 = v10; v7 = 0; result = 1; } else { v7 = result++; } ++v5; *(_DWORD *)(a1 + 256) = result; *(_BYTE *)(a1 + v7) = v8; *(_BYTE *)(a1 + 260) = v8; } while ( v5 != v6 ); } return result; } // 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); //----- (0045EE70) -------------------------------------------------------- BOOL __usercall d_demangle_callback_constprop_0@( char *a1@, void (__cdecl *a2)(char *, int, int)@, int a3@) { char v4; // al bool v5; // zf int v6; // esi char v7; // al char v8; // al size_t v9; // eax int v10; // edx int v11; // ecx int v12; // ecx int v13; // eax void *v14; // esp void *v15; // esp int *v16; // edi int v17; // eax void *v18; // esp void *v19; // esp size_t v20; // eax int v21; // edx int *comp; // edi int v23; // ecx char v24; // al int v25; // eax int v26; // edx int v27; // eax void *v28; // esp void *v29; // esp int v30; // eax void *v31; // esp void *v32; // esp int v33; // eax int v34; // edx char v36; // al char *v37; // edx int v38; // eax char v39; // al char *v40; // ecx int *v41; // esi _DWORD *name; // eax int *v43; // eax char v44; // al int v45[3]; // [esp+0h] [ebp-1D8h] BYREF int v46[3]; // [esp+Ch] [ebp-1CCh] BYREF int v47; // [esp+18h] [ebp-1C0h] int v48; // [esp+1Ch] [ebp-1BCh] int *v49; // [esp+20h] [ebp-1B8h] int *v50; // [esp+24h] [ebp-1B4h] int v51; // [esp+28h] [ebp-1B0h] void (__cdecl *v52)(char *, int, int); // [esp+2Ch] [ebp-1ACh] int v53[2]; // [esp+38h] [ebp-1A0h] BYREF int v54; // [esp+40h] [ebp-198h] char *Str; // [esp+44h] [ebp-194h] int *v56; // [esp+48h] [ebp-190h] int v57; // [esp+4Ch] [ebp-18Ch] size_t v58; // [esp+50h] [ebp-188h] int *v59; // [esp+54h] [ebp-184h] int v60; // [esp+58h] [ebp-180h] size_t v61; // [esp+5Ch] [ebp-17Ch] int v62; // [esp+60h] [ebp-178h] int v63; // [esp+64h] [ebp-174h] int v64; // [esp+68h] [ebp-170h] int v65; // [esp+6Ch] [ebp-16Ch] int v66; // [esp+70h] [ebp-168h] char v67[256]; // [esp+74h] [ebp-164h] BYREF int v68; // [esp+174h] [ebp-64h] char v69; // [esp+178h] [ebp-60h] void (__cdecl *v70)(char *, int, int); // [esp+17Ch] [ebp-5Ch] int v71; // [esp+180h] [ebp-58h] int v72; // [esp+184h] [ebp-54h] int v73; // [esp+188h] [ebp-50h] int v74; // [esp+18Ch] [ebp-4Ch] int v75; // [esp+190h] [ebp-48h] int v76; // [esp+194h] [ebp-44h] int v77; // [esp+198h] [ebp-40h] int v78; // [esp+19Ch] [ebp-3Ch] int v79; // [esp+1A0h] [ebp-38h] int *v80; // [esp+1A4h] [ebp-34h] int v81; // [esp+1A8h] [ebp-30h] int v82; // [esp+1ACh] [ebp-2Ch] int *v83; // [esp+1B0h] [ebp-28h] int v84; // [esp+1B4h] [ebp-24h] int v85; // [esp+1B8h] [ebp-20h] int v86; // [esp+1BCh] [ebp-1Ch] v4 = *a1; v52 = a2; v51 = a3; LOBYTE(v50) = 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; } } } } v9 = strlen(a1); v53[0] = (int)a1; v10 = 2 * v9; v54 = 17; v53[1] = (int)&a1[v9]; v11 = 0; Str = a1; v58 = 2 * v9; v57 = 0; v61 = v9; v60 = 0; v62 = 0; v63 = 0; v64 = 0; v65 = 0; v66 = 0; if ( 2 * v9 <= 0x800 ) { v12 = 4 * v9; v49 = v45; v13 = 16 * ((40 * v9 + 15) >> 4); v14 = alloca(v13); v15 = alloca(v13); v16 = v46; v48 = ((unsigned int)v46 + 3) >> 2; v17 = 16 * ((unsigned int)(v12 + 15) >> 4); v18 = alloca(v17); v19 = alloca(v17); v56 = v46; v59 = v46; if ( v6 != 1 ) { if ( (unsigned int)(v6 - 2) > 1 ) { comp = d_type(v53, v45[0], v45[1], v45[2], v46[0], v46[1], v46[2], v47, v48, (int)v49, (int)v50, v51); v24 = *Str; } else { v5 = a1[11] == 95; Str = a1 + 11; if ( v5 && a1[12] == 90 ) { Str = a1 + 13; v44 = a1[13]; if ( v44 == 71 || v44 == 84 ) v16 = d_special_name(v53); else v16 = (int *)d_encoding_part_0((int)v53, 0); } else { v47 = v10; v50 = (int *)(a1 + 11); v20 = strlen(a1 + 11); if ( v47 > 0 && (v57 = 1, v21 = v48, *(_DWORD *)(4 * v48 + 4) = 0, *(_DWORD *)(4 * v21 + 8) = 0, v20) ) { *(_DWORD *)(4 * v21 + 0xC) = a1 + 11; *(_DWORD *)(4 * v21) = 0; *(_DWORD *)(4 * v21 + 0x10) = v20; } else { v16 = 0; } } comp = d_make_comp(v53, (v6 != 2) + 68, (int)v16, 0); Str += strlen(Str); v24 = *Str; } goto LABEL_16; } if ( (_BYTE)v50 != 95 || a1[1] != 90 ) return 0; Str = a1 + 2; v36 = a1[2]; if ( v36 == 71 || v36 == 84 ) comp = d_special_name(v53); else comp = (int *)d_encoding_part_0((int)v53, 1); v24 = *Str; if ( (v54 & 1) == 0 || v24 != 46 ) { LABEL_16: if ( !v24 && comp ) { v68 = 0; v69 = 0; v70 = v52; v72 = 0; v71 = v51; v73 = 0; v77 = 0; v78 = 0; v74 = 0; v75 = 0; v76 = 0; v79 = 0; v80 = 0; v81 = 0; v82 = 0; v83 = 0; v84 = 0; v85 = 0; d_count_templates_scopes((int)v67, comp, v23); if ( v75 <= 2047 ) v75 = 0; v25 = v82; v86 = 0; v26 = v82 * v85; if ( v82 <= 0 ) v25 = 1; v85 *= v82; v27 = 16 * ((unsigned int)(8 * v25 + 15) >> 4); v28 = alloca(v27); v29 = alloca(v27); v80 = v46; if ( v26 <= 0 ) v26 = 1; v30 = 16 * ((unsigned int)(8 * v26 + 15) >> 4); v31 = alloca(v30); v32 = alloca(v30); v83 = v46; d_print_comp((int)v67, (int)comp); v33 = v68; v34 = v71; v67[v68] = 0; v70(v67, v33, v34); return v74 == 0; } return 0; } v50 = v53; v37 = Str; while ( 1 ) { v38 = (unsigned __int8)v37[1]; v23 = v38 - 97; if ( (unsigned __int8)(v38 - 97) <= 0x19u || (_BYTE)v38 == 95 ) break; if ( (unsigned __int8)(v38 - 48) > 9u ) { v24 = *v37; goto LABEL_16; } v39 = *v37; v40 = v37; LABEL_44: while ( v39 == 46 && (unsigned __int8)(v40[1] - 48) <= 9u ) { v39 = v40[2]; for ( v40 += 2; (unsigned __int8)(v39 - 48) <= 9u; ++v40 ) v39 = v40[1]; } v41 = v50; Str = v40; name = d_make_name(v50, (int)v37, v40 - v37); v43 = d_make_comp(v41, 78, (int)comp, (int)name); v37 = Str; comp = v43; v24 = *Str; if ( *Str != 46 ) goto LABEL_16; } v39 = v37[2]; v40 = v37 + 2; if ( (unsigned __int8)(v39 - 97) > 0x19u ) goto LABEL_57; while ( 1 ) { do v39 = *++v40; while ( (unsigned __int8)(v39 - 97) <= 0x19u ); LABEL_57: if ( v39 != 95 ) goto LABEL_44; } } return v11; } // 45F131: variable 'v23' is possibly undefined // 45EE70: using guessed type char var_164[256]; //----- (0045F3E0) -------------------------------------------------------- int __usercall d_print_subexpr@(int a1@, _DWORD *a2@) { int v4; // edi int result; // eax int v6; // edx int v7; // eax int v8; // edx int v9; // eax int v10; // edx int v11; // eax int v12; // eax _DWORD *v13; // [esp+18h] [ebp-14h] BYREF int v14; // [esp+1Ch] [ebp-10h] if ( *a2 == 49 || *a2 <= 1u || *a2 == 6 ) { v4 = 1; } else { v9 = *(_DWORD *)(a1 + 256); if ( v9 == 255 ) { v12 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v12); ++*(_DWORD *)(a1 + 296); v10 = 1; v9 = 0; } else { v10 = v9 + 1; } *(_DWORD *)(a1 + 256) = v10; v4 = 0; *(_BYTE *)(a1 + v9) = 40; *(_BYTE *)(a1 + 260) = 40; } result = a2[1]; if ( result > 1 || (v6 = *(_DWORD *)(a1 + 284), v6 > 1024) ) { *(_DWORD *)(a1 + 280) = 1; if ( v4 ) return result; } else { v13 = a2; a2[1] = result + 1; v7 = *(_DWORD *)(a1 + 300); *(_DWORD *)(a1 + 284) = v6 + 1; v14 = v7; *(_DWORD *)(a1 + 300) = &v13; d_print_comp_inner(a2, 17); result = v14; *(_DWORD *)(a1 + 300) = v14; --a2[1]; --*(_DWORD *)(a1 + 284); if ( v4 ) return result; } result = *(_DWORD *)(a1 + 256); if ( result == 255 ) { v11 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v11); ++*(_DWORD *)(a1 + 296); v8 = 1; result = 0; } else { v8 = result + 1; } *(_DWORD *)(a1 + 256) = v8; *(_BYTE *)(a1 + result) = 41; *(_BYTE *)(a1 + 260) = 41; return result; } // 45A6B0: using guessed type int __fastcall d_print_comp_inner(_DWORD, _DWORD); //----- (0045F550) -------------------------------------------------------- int __usercall d_maybe_print_fold_expression@(int a1@, int a2@) { _BYTE *v3; // eax int v4; // edx _DWORD *v5; // esi _DWORD *v6; // edi _DWORD *v7; // ebp int v8; // edx char v9; // al int v10; // eax int v11; // edx _DWORD *v12; // ecx const char *v13; // edi int v14; // eax char k; // dl int v16; // ecx int v17; // eax _DWORD *v19; // ecx int v20; // eax int v21; // edx int v22; // eax int v23; // edx const char *v24; // esi int v25; // eax char j; // dl int v27; // ecx int v28; // eax int v29; // eax const char *v30; // esi char i; // dl int v32; // ecx int v33; // eax int v34; // eax int v35; // eax int v36; // eax int v37; // [esp+18h] [ebp-24h] char v38; // [esp+1Fh] [ebp-1Dh] char v39; // [esp+1Fh] [ebp-1Dh] char v40; // [esp+1Fh] [ebp-1Dh] v3 = **(_BYTE ***)(*(_DWORD *)(a2 + 12) + 12); if ( *v3 != 102 ) return 0; v4 = *(_DWORD *)(a2 + 16); v5 = 0; v6 = *(_DWORD **)(v4 + 16); v7 = *(_DWORD **)(v4 + 12); if ( *v6 == 60 ) { v5 = (_DWORD *)v6[4]; v6 = (_DWORD *)v6[3]; } v8 = *(_DWORD *)(a1 + 292); *(_DWORD *)(a1 + 292) = -1; v9 = v3[1]; v37 = v8; if ( v9 == 108 ) { v29 = *(_DWORD *)(a1 + 256); v30 = "(..."; for ( i = 40; ; i = *v30 ) { if ( v29 == 255 ) { v33 = *(_DWORD *)(a1 + 268); v40 = i; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v33); ++*(_DWORD *)(a1 + 296); i = v40; v32 = 0; v29 = 1; } else { v32 = v29++; } *(_DWORD *)(a1 + 256) = v29; ++v30; *(_BYTE *)(a1 + v32) = i; *(_BYTE *)(a1 + 260) = i; if ( v30 == "" ) break; } d_print_expr_op(a1, v7); v19 = v6; goto LABEL_18; } if ( v9 > 108 ) { if ( v9 == 114 ) { v22 = *(_DWORD *)(a1 + 256); 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; } else { v23 = v22 + 1; } *(_DWORD *)(a1 + 256) = v23; v24 = "...)"; *(_BYTE *)(a1 + v22) = 40; *(_BYTE *)(a1 + 260) = 40; d_print_subexpr(a1, v6); d_print_expr_op(a1, v7); v25 = *(_DWORD *)(a1 + 256); for ( j = 46; ; j = *v24 ) { if ( v25 == 255 ) { v28 = *(_DWORD *)(a1 + 268); v39 = j; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v28); ++*(_DWORD *)(a1 + 296); j = v39; 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); 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; } else { v11 = v10 + 1; } *(_DWORD *)(a1 + 256) = v11; v12 = v6; v13 = "..."; *(_BYTE *)(a1 + v10) = 40; *(_BYTE *)(a1 + 260) = 40; d_print_subexpr(a1, v12); d_print_expr_op(a1, v7); v14 = *(_DWORD *)(a1 + 256); for ( k = 46; ; k = *v13 ) { if ( v14 == 255 ) { v17 = *(_DWORD *)(a1 + 268); v38 = k; *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v17); ++*(_DWORD *)(a1 + 296); k = v38; v16 = 0; v14 = 1; } else { v16 = v14++; } ++v13; *(_DWORD *)(a1 + 256) = v14; *(_BYTE *)(a1 + v16) = k; *(_BYTE *)(a1 + 260) = k; if ( v13 == "" ) break; } d_print_expr_op(a1, v7); v19 = v5; LABEL_18: d_print_subexpr(a1, v19); v20 = *(_DWORD *)(a1 + 256); if ( v20 == 255 ) { v34 = *(_DWORD *)(a1 + 268); *(_BYTE *)(a1 + 255) = 0; (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v34); ++*(_DWORD *)(a1 + 296); v21 = 1; v20 = 0; } else { v21 = v20 + 1; } *(_DWORD *)(a1 + 256) = v21; *(_BYTE *)(a1 + v20) = 41; *(_BYTE *)(a1 + 260) = 41; } LABEL_21: *(_DWORD *)(a1 + 292) = v37; return 1; } //----- (0045F900) -------------------------------------------------------- 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, (void (__cdecl *)(char *, int, int))d_growable_string_callback_adapter, (int)Src) ) { free(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; free(Str); goto LABEL_10; } free(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; } //----- (0045FA50) -------------------------------------------------------- unsigned int __cdecl __gcclibcxx_demangle_callback(char *a1, void (__cdecl *a2)(char *, int, int), int a3) { if ( a1 && a2 ) return !d_demangle_callback_constprop_0(a1, a2, a3) ? 0xFFFFFFFE : 0; else return -3; } //----- (0045FA90) -------------------------------------------------------- void __do_global_dtors(void) { void (*v0)(void); // eax v0 = (void (*)(void))*data_1; if ( *data_1 ) { do { v0(); v0 = (void (*)(void))data_1[1]; ++data_1; } while ( v0 ); } } // 53E1D4: using guessed type int *data_1; //----- (0045FAD0) -------------------------------------------------------- int __do_global_ctors() { int v0; // ebx int v2; // eax v0 = __CTOR_LIST__[0]; if ( __CTOR_LIST__[0] == -1 ) { v2 = 0; do v0 = v2++; while ( __CTOR_LIST__[v2] ); } for ( ; v0; --v0 ) ((void (*)(void))__CTOR_LIST__[v0])(); return atexit(__do_global_dtors); } // 538950: using guessed type int __CTOR_LIST__[]; //----- (0045FB30) -------------------------------------------------------- int __main() { int result; // eax result = bss_0; if ( !bss_0 ) { bss_0 = 1; return __do_global_ctors(); } return result; } // 7695C8: using guessed type int bss_0; //----- (0045FB60) -------------------------------------------------------- int _setargv() { return 0; } //----- (0045FB70) -------------------------------------------------------- int __stdcall __dyn_tls_dtor(int a1, unsigned int a2, int a3) { if ( a2 != 3 && a2 ) return 1; __mingw_TLScallback(a1, a2); return 1; } //----- (0045FBC0) -------------------------------------------------------- int __stdcall __dyn_tls_init(int a1, int a2, int a3) { if ( _CRT_MT != 2 ) _CRT_MT = 2; if ( a2 == 2 || a2 != 1 ) return 1; __mingw_TLScallback(a1, 1u); return 1; } // 53E1E4: using guessed type int _CRT_MT; //----- (0045FC60) -------------------------------------------------------- int __tlregdtor() { return 0; } //----- (0045FC70) -------------------------------------------------------- int __cdecl _matherr(struct _exception *Except) { const char *v1; // ebx unsigned int v2; // edx char *name; // esi FILE *v4; // eax double arg1; // [esp+38h] [ebp-24h] double arg2; // [esp+40h] [ebp-1Ch] double retval; // [esp+48h] [ebp-14h] v1 = "Unknown error"; v2 = Except->type - 1; if ( v2 <= 5 ) v1 = CSWTCH_1[v2]; name = Except->name; retval = Except->retval; arg2 = Except->arg2; arg1 = Except->arg1; v4 = __acrt_iob_func(2u); fprintf(v4, "_matherr(): %s in %s(%g, %g) (retval=%g)\n", v1, name, arg1, arg2, retval); return 0; } // 55A578: using guessed type char *CSWTCH_1[6]; //----- (0045FCF0) -------------------------------------------------------- void __cdecl fpreset() { __asm { fninit } } //----- (0045FD00) -------------------------------------------------------- void __noreturn __report_error(char *Format, ...) { FILE *Stream; // eax FILE *v2; // eax va_list va; // [esp+24h] [ebp+8h] BYREF va_start(va, Format); Stream = __acrt_iob_func(2u); fwrite("Mingw-w64 runtime failure:\n", 1u, 0x1Bu, Stream); v2 = __acrt_iob_func(2u); vfprintf(v2, Format, va); abort(); } //----- (0045FD60) -------------------------------------------------------- _DWORD *__usercall mark_section_writable@(const void *a1@) { int v2; // esi int v3; // ecx _DWORD *result; // eax int SectionForAddress; // edi int v6; // ebx _DWORD *v7; // eax const void *lpAddress; // eax DWORD v9; // eax SIZE_T RegionSize; // ecx PVOID BaseAddress; // edx DWORD *lpflOldProtect; // ebx DWORD LastError; // eax struct _MEMORY_BASIC_INFORMATION Buffer; // [esp+14h] [ebp-28h] BYREF v2 = maxSections; if ( maxSections <= 0 ) { v2 = 0; LABEL_6: SectionForAddress = __mingw_GetSectionForAddress((int)a1); if ( !SectionForAddress ) __report_error("Address %p has no image-section", a1); v6 = 20 * v2; v7 = (_DWORD *)(20 * v2 + the_secs); v7[4] = SectionForAddress; *v7 = 0; lpAddress = (const void *)(*(_DWORD *)(SectionForAddress + 12) + _GetPEImageBase()); *(_DWORD *)(the_secs + 20 * v2 + 12) = lpAddress; if ( !VirtualQuery(lpAddress, &Buffer, 0x1Cu) ) __report_error( " VirtualQuery failed for %d bytes at address %p", *(_DWORD *)(SectionForAddress + 8), *(const void **)(the_secs + v6 + 12)); result = (_DWORD *)Buffer.Protect; if ( ((Buffer.Protect - 64) & 0xFFFFFFBF) != 0 && ((Buffer.Protect - 4) & 0xFFFFFFFB) != 0 ) { v9 = 4; RegionSize = Buffer.RegionSize; if ( Buffer.Protect != 2 ) v9 = 64; BaseAddress = Buffer.BaseAddress; lpflOldProtect = (DWORD *)(the_secs + v6); lpflOldProtect[2] = Buffer.RegionSize; lpflOldProtect[1] = (DWORD)BaseAddress; result = (_DWORD *)VirtualProtect(BaseAddress, RegionSize, v9, lpflOldProtect); if ( !result ) { LastError = GetLastError(); __report_error(" VirtualProtect failed with code 0x%x", LastError); } } ++maxSections; } else { v3 = 0; result = (_DWORD *)(the_secs + 12); while ( *result > (unsigned int)a1 || (unsigned int)a1 >= *(_DWORD *)(result[1] + 8) + *result ) { ++v3; result += 5; if ( v3 == maxSections ) goto LABEL_6; } } return result; } // 7695FC: using guessed type int maxSections; // 769600: using guessed type int the_secs; //----- (0045FEC0) -------------------------------------------------------- void _pei386_runtime_relocator() { int v0; // eax void *v1; // esp void *v2; // esp int v3; // [esp+10h] [ebp-38h] BYREF if ( !was_init_0 ) { was_init_0 = 1; v0 = 16 * ((unsigned int)(20 * __mingw_GetSectionCount() + 27) >> 4); v1 = alloca(v0); maxSections = 0; v2 = alloca(v0); the_secs = (int)&v3; } } // 7695F8: using guessed type int was_init_0; // 7695FC: using guessed type int maxSections; // 769600: using guessed type int the_secs; //----- (00460140) -------------------------------------------------------- int (__cdecl *__cdecl __mingw_raise_matherr(int a1, int a2, double a3, double a4, double a5))(_DWORD) { int (__cdecl *result)(_DWORD); // eax int v6[2]; // [esp+10h] [ebp-2Ch] BYREF double v7; // [esp+18h] [ebp-24h] double v8; // [esp+20h] [ebp-1Ch] double v9; // [esp+28h] [ebp-14h] result = stUserMathErr; if ( stUserMathErr ) { v7 = a3; v8 = a4; v6[0] = a1; v9 = a5; v6[1] = a2; return (int (__cdecl *)(_DWORD))stUserMathErr(v6); } return result; } // 769604: using guessed type int (__cdecl *stUserMathErr)(_DWORD); //----- (004601A0) -------------------------------------------------------- void __cdecl __mingw_setusermatherr(_UserMathErrorFunctionPointer UserMathErrorFunction) { stUserMathErr = (int (__cdecl *)(_DWORD))UserMathErrorFunction; __setusermatherr(UserMathErrorFunction); } // 769604: using guessed type int (__cdecl *stUserMathErr)(_DWORD); //----- (004601B0) -------------------------------------------------------- LONG __stdcall _gnu_exception_handler(_EXCEPTION_POINTERS *a1) { DWORD ExceptionCode; // eax _crt_signal_t v2; // eax _crt_signal_t v4; // eax _crt_signal_t v5; // eax ExceptionCode = a1->ExceptionRecord->ExceptionCode; if ( ExceptionCode == -1073741677 ) { LABEL_6: v2 = signal(8, 0); if ( v2 == (_crt_signal_t)1 ) { signal(8, (_crt_signal_t)1); fpreset(); return -1; } LABEL_7: if ( v2 ) { v2(8); return -1; } goto LABEL_8; } if ( ExceptionCode > 0xC0000093 ) { if ( ExceptionCode == -1073741676 ) { v2 = signal(8, 0); if ( v2 == (_crt_signal_t)1 ) { signal(8, (_crt_signal_t)1); return -1; } goto LABEL_7; } if ( ExceptionCode != -1073741674 ) goto LABEL_8; LABEL_18: v5 = signal(4, 0); if ( v5 == (_crt_signal_t)1 ) { signal(4, (_crt_signal_t)1); return -1; } if ( v5 ) { v5(4); return -1; } goto LABEL_8; } if ( ExceptionCode == -1073741795 ) goto LABEL_18; if ( ExceptionCode <= 0xC000001D ) { if ( ExceptionCode == -1073741819 ) { v4 = signal(11, 0); if ( v4 == (_crt_signal_t)1 ) { signal(11, (_crt_signal_t)1); return -1; } if ( v4 ) { v4(11); return -1; } } goto LABEL_8; } if ( ExceptionCode + 1073741683 <= 4 ) goto LABEL_6; LABEL_8: if ( __mingw_oldexcpt_handler ) return __mingw_oldexcpt_handler(a1); else return 0; } // 76960C: using guessed type int (__stdcall *__mingw_oldexcpt_handler)(_DWORD); //----- (00460360) -------------------------------------------------------- void __mingwthr_run_key_dtors_part_0() { DWORD *v0; // ebx LPVOID Value; // esi EnterCriticalSection(&__mingwthr_cs); v0 = (DWORD *)key_dtor_list; if ( key_dtor_list ) { do { Value = TlsGetValue(*v0); if ( !GetLastError() && Value ) ((void (__cdecl *)(LPVOID))v0[1])(Value); v0 = (DWORD *)v0[2]; } while ( v0 ); } LeaveCriticalSection(&__mingwthr_cs); } //----- (004603D0) -------------------------------------------------------- int __cdecl ___w64_mingwthr_add_key_dtor(int a1, int a2) { int result; // eax _DWORD *v3; // eax _DWORD *v4; // ebx void *v5; // eax result = __mingwthr_cs_init; if ( __mingwthr_cs_init ) { v3 = calloc(1u, 0xCu); v4 = v3; if ( v3 ) { *v3 = a1; v3[1] = a2; EnterCriticalSection(&__mingwthr_cs); v5 = key_dtor_list; key_dtor_list = v4; v4[2] = v5; LeaveCriticalSection(&__mingwthr_cs); return 0; } else { return -1; } } return result; } // 769614: using guessed type int __mingwthr_cs_init; //----- (00460450) -------------------------------------------------------- int __cdecl ___w64_mingwthr_remove_key_dtor(int a1) { _DWORD *v2; // eax _DWORD *v3; // ecx int v4; // edx if ( !__mingwthr_cs_init ) return 0; EnterCriticalSection(&__mingwthr_cs); v2 = key_dtor_list; if ( key_dtor_list ) { 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 key_dtor_list = (void *)v2[2]; free(v2); } LABEL_11: LeaveCriticalSection(&__mingwthr_cs); return 0; } // 769614: using guessed type int __mingwthr_cs_init; //----- (004604E0) -------------------------------------------------------- int __cdecl __mingw_TLScallback(int a1, unsigned int a2) { void *v3; // ebx void *Block; // eax if ( a2 == 2 ) { fpreset(); return 1; } else { if ( a2 > 2 ) { if ( a2 == 3 && __mingwthr_cs_init ) __mingwthr_run_key_dtors_part_0(); } else if ( a2 ) { if ( !__mingwthr_cs_init ) InitializeCriticalSection(&__mingwthr_cs); __mingwthr_cs_init = 1; } else { if ( __mingwthr_cs_init ) __mingwthr_run_key_dtors_part_0(); if ( __mingwthr_cs_init == 1 ) { v3 = key_dtor_list; while ( v3 ) { Block = v3; v3 = (void *)*((_DWORD *)v3 + 2); free(Block); } key_dtor_list = 0; __mingwthr_cs_init = 0; DeleteCriticalSection(&__mingwthr_cs); } } return 1; } } // 769614: using guessed type int __mingwthr_cs_init; //----- (004605D0) -------------------------------------------------------- BOOL __cdecl _ValidateImageBase(int a1) { int v1; // eax if ( *(_WORD *)a1 == 23117 && (v1 = *(_DWORD *)(a1 + 60) + a1, *(_DWORD *)v1 == 17744) ) return *(_WORD *)(v1 + 24) == 267; else return 0; } //----- (00460600) -------------------------------------------------------- int __cdecl _FindPESection(int a1, unsigned int a2) { int v2; // edx int v3; // esi int result; // eax int v5; // ecx unsigned int v6; // edx v2 = *(_DWORD *)(a1 + 60) + a1; v3 = *(unsigned __int16 *)(v2 + 6); result = v2 + *(unsigned __int16 *)(v2 + 20) + 24; if ( !*(_WORD *)(v2 + 6) ) return 0; v5 = 0; while ( 1 ) { v6 = *(_DWORD *)(result + 12); if ( v6 <= a2 && *(_DWORD *)(result + 8) + v6 > a2 ) break; ++v5; result += 40; if ( v5 == v3 ) return 0; } return result; } //----- (00460640) -------------------------------------------------------- const char *__cdecl _FindPESectionByName(char *Str) { const char *v1; // ebx int v2; // ebp int v3; // esi v1 = 0; if ( strlen(Str) > 8 || MEMORY[0x400000] != 23117 || *(_DWORD *)(MEMORY[0x40003C] + 0x400000) != 17744 || *(_WORD *)(MEMORY[0x40003C] + 4194328) != 267 ) { return v1; } v2 = *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310); v1 = (const char *)(MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24); if ( *(_WORD *)(MEMORY[0x40003C] + 4194310) ) { v3 = 0; while ( strncmp(v1, Str, 8u) ) { ++v3; v1 += 40; if ( v2 == v3 ) return 0; } return v1; } return 0; } //----- (004606E0) -------------------------------------------------------- int __cdecl __mingw_GetSectionForAddress(int a1) { int result; // eax unsigned int v2; // ebx int v3; // ecx unsigned int v4; // edx result = 0; if ( MEMORY[0x400000] == 23117 && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 && *(_WORD *)(MEMORY[0x40003C] + 4194328) == 267 ) { result = MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24; v2 = a1 - 0x400000; if ( *(_WORD *)(MEMORY[0x40003C] + 4194310) ) { v3 = 0; while ( 1 ) { v4 = *(_DWORD *)(result + 12); if ( v2 >= v4 && v2 < *(_DWORD *)(result + 8) + v4 ) break; ++v3; result += 40; if ( v3 == *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310) ) return 0; } } else { return 0; } } return result; } //----- (00460760) -------------------------------------------------------- int __mingw_GetSectionCount() { int result; // eax result = 0; if ( MEMORY[0x400000] == 23117 && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 && *(_WORD *)(MEMORY[0x40003C] + 4194328) == 267 ) { return *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310); } return result; } //----- (004607A0) -------------------------------------------------------- int __cdecl _FindPESectionExec(int a1) { int result; // eax int v3; // edx result = 0; if ( MEMORY[0x400000] == 23117 && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 && *(_WORD *)(MEMORY[0x40003C] + 4194328) == 267 ) { result = MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24; if ( *(_WORD *)(MEMORY[0x40003C] + 4194310) ) { v3 = 0; do { if ( (*(_BYTE *)(result + 39) & 0x20) != 0 ) { if ( !a1 ) return result; --a1; } ++v3; result += 40; } while ( *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310) != v3 ); } return 0; } return result; } //----- (00460820) -------------------------------------------------------- int _GetPEImageBase() { int result; // eax result = 0; if ( MEMORY[0x400000] == 23117 && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 && *(_WORD *)(MEMORY[0x40003C] + 4194328) == 267 ) { return 0x400000; } return result; } //----- (00460860) -------------------------------------------------------- BOOL __cdecl _IsNonwritableInCurrentImage(int a1) { _DWORD *v2; // eax unsigned int v3; // ebx int v4; // ecx unsigned int v5; // edx if ( MEMORY[0x400000] != 23117 || *(_DWORD *)(MEMORY[0x40003C] + 0x400000) != 17744 || *(_WORD *)(MEMORY[0x40003C] + 4194328) != 267 ) { return 0; } v2 = (_DWORD *)(MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24); v3 = a1 - 0x400000; if ( !*(_WORD *)(MEMORY[0x40003C] + 4194310) ) return 0; v4 = 0; while ( 1 ) { v5 = v2[3]; if ( v3 >= v5 && v3 < v2[2] + v5 ) break; ++v4; v2 += 10; if ( *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310) == v4 ) return 0; } return v2[9] >= 0; } //----- (004608F0) -------------------------------------------------------- int __cdecl __mingw_enum_import_library_names(int a1) { unsigned int v3; // eax int v4; // edx int v5; // esi unsigned int v6; // ecx unsigned int i; // eax if ( MEMORY[0x400000] != 23117 ) return 0; if ( *(_DWORD *)(MEMORY[0x40003C] + 0x400000) != 17744 ) return 0; if ( *(_WORD *)(MEMORY[0x40003C] + 4194328) != 267 ) return 0; v3 = *(_DWORD *)(MEMORY[0x40003C] + 4194432); if ( !v3 ) return 0; v4 = MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24; if ( !*(_WORD *)(MEMORY[0x40003C] + 4194310) ) return 0; v5 = 0; while ( 1 ) { v6 = *(_DWORD *)(v4 + 12); if ( v3 >= v6 && v3 < *(_DWORD *)(v4 + 8) + v6 ) break; ++v5; v4 += 40; if ( v5 == *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310) ) return 0; } for ( i = v3 + 0x400000; *(_DWORD *)(i + 4) || *(_DWORD *)(i + 12); i += 20 ) { if ( a1 <= 0 ) return *(_DWORD *)(i + 12) + 0x400000; --a1; } return 0; } //----- (00460C40) -------------------------------------------------------- int __cdecl __gthr_win32_once(int a1, void (*a2)(void)) { if ( !a1 || !a2 ) return 22; if ( *(_DWORD *)a1 ) return 0; if ( _InterlockedAdd((volatile signed __int32 *)(a1 + 4), 1u) ) { while ( !*(_DWORD *)a1 ) Sleep(0); return 0; } a2(); *(_DWORD *)a1 = 1; return 0; } //----- (00460CC0) -------------------------------------------------------- int __cdecl __gthr_win32_key_create(int *a1, int a2) { int v2; // eax v2 = TlsAlloc(); if ( v2 == -1 ) return GetLastError(); *a1 = v2; return __mingwthr_key_dtor(v2, a2); } //----- (00460D00) -------------------------------------------------------- DWORD __cdecl __gthr_win32_key_delete(DWORD dwTlsIndex) { if ( TlsFree(dwTlsIndex) ) return 0; else return GetLastError(); } //----- (00460D30) -------------------------------------------------------- LPVOID __cdecl __gthr_win32_getspecific(DWORD dwTlsIndex) { DWORD LastError; // esi LPVOID Value; // ebx LastError = GetLastError(); Value = TlsGetValue(dwTlsIndex); SetLastError(LastError); return Value; } //----- (00460D70) -------------------------------------------------------- DWORD __cdecl __gthr_win32_setspecific(DWORD dwTlsIndex, LPVOID lpTlsValue) { if ( TlsSetValue(dwTlsIndex, lpTlsValue) ) return 0; else return GetLastError(); } //----- (00460DB0) -------------------------------------------------------- HANDLE __cdecl __gthr_win32_mutex_init_function(_DWORD *a1) { HANDLE result; // eax *a1 = -1; result = CreateSemaphoreW(0, 0, 0xFFFF, 0); a1[1] = result; return result; } //----- (00460DF0) -------------------------------------------------------- int __cdecl __gthr_win32_mutex_destroy(int a1) { return _IAT_start__(*(_DWORD *)(a1 + 4)); } // 76B1F0: using guessed type int __stdcall _IAT_start__(_DWORD); //----- (00460E10) -------------------------------------------------------- int __cdecl __gthr_win32_mutex_lock(int a1) { if ( !_InterlockedAdd((volatile signed __int32 *)a1, 1u) || !WaitForSingleObject(*(HANDLE *)(a1 + 4), 0xFFFFFFFF) ) return 0; _InterlockedSub((volatile signed __int32 *)a1, 1u); return 1; } //----- (00460E60) -------------------------------------------------------- BOOL __cdecl __gthr_win32_mutex_trylock(volatile signed __int32 *a1) { return _InterlockedCompareExchange(a1, 0, -1) >= 0; } //----- (00460E80) -------------------------------------------------------- BOOL __cdecl __gthr_win32_mutex_unlock(int a1) { return _InterlockedDecrement((volatile signed __int32 *)a1) >= 0 && !ReleaseSemaphore(*(HANDLE *)(a1 + 4), 1, 0); } //----- (00460ED0) -------------------------------------------------------- HANDLE __cdecl __gthr_win32_recursive_mutex_init_function(_DWORD *a1) { HANDLE result; // eax *a1 = -1; a1[1] = 0; a1[2] = 0; result = CreateSemaphoreW(0, 0, 0xFFFF, 0); a1[3] = result; return result; } //----- (00460F20) -------------------------------------------------------- DWORD __cdecl __gthr_win32_recursive_mutex_lock(int a1) { DWORD CurrentThreadId; // eax DWORD v2; // esi DWORD result; // eax CurrentThreadId = GetCurrentThreadId(); v2 = CurrentThreadId; if ( _InterlockedAdd((volatile signed __int32 *)a1, 1u) ) { if ( *(_DWORD *)(a1 + 8) == CurrentThreadId ) { _InterlockedSub((volatile signed __int32 *)a1, 1u); result = 0; ++*(_DWORD *)(a1 + 4); } else { result = WaitForSingleObject(*(HANDLE *)(a1 + 12), 0xFFFFFFFF); if ( result ) { _InterlockedSub((volatile signed __int32 *)a1, 1u); return 1; } else { *(_DWORD *)(a1 + 4) = 1; *(_DWORD *)(a1 + 8) = v2; } } } else { *(_DWORD *)(a1 + 4) = 1; *(_DWORD *)(a1 + 8) = CurrentThreadId; return 0; } return result; } //----- (00460FA0) -------------------------------------------------------- int __cdecl __gthr_win32_recursive_mutex_trylock(int a1) { DWORD CurrentThreadId; // edx int result; // eax CurrentThreadId = GetCurrentThreadId(); if ( _InterlockedCompareExchange((volatile signed __int32 *)a1, 0, -1) < 0 ) { *(_DWORD *)(a1 + 4) = 1; result = 0; *(_DWORD *)(a1 + 8) = CurrentThreadId; } else { result = 1; if ( *(_DWORD *)(a1 + 8) == CurrentThreadId ) { ++*(_DWORD *)(a1 + 4); return 0; } } return result; } //----- (00460FF0) -------------------------------------------------------- BOOL __cdecl __gthr_win32_recursive_mutex_unlock(int a1) { bool v1; // zf v1 = (*(_DWORD *)(a1 + 4))-- == 1; if ( v1 && (*(_DWORD *)(a1 + 8) = 0, _InterlockedDecrement((volatile signed __int32 *)a1) >= 0) ) return !ReleaseSemaphore(*(HANDLE *)(a1 + 12), 1, 0); else return 0; } //----- (00461050) -------------------------------------------------------- int __cdecl __gthr_win32_recursive_mutex_destroy(int a1) { _IAT_start__(*(_DWORD *)(a1 + 12)); return 0; } // 76B1F0: using guessed type int __stdcall _IAT_start__(_DWORD); //----- (00461070) -------------------------------------------------------- int __usercall _Unwind_RaiseException_Phase2@(_DWORD *a1@, _DWORD *a2@, int *a3@) { int v3; // edi _DWORD *v6; // eax int v7; // ecx int v8; // ebp int result; // eax int (__cdecl *v10)(int, int, _DWORD, _DWORD, _DWORD *, _DWORD *); // [esp+28h] [ebp-24h] v3 = 1; v6 = (_DWORD *)*a2; if ( !*a2 ) return 2; while ( 1 ) { v10 = (int (__cdecl *)(int, int, _DWORD, _DWORD, _DWORD *, _DWORD *))v6[6]; if ( v6 == (_DWORD *)a1[4] ) { if ( !v10 ) goto LABEL_14; v7 = 6; v8 = 4; } else { v7 = 2; v8 = 0; if ( !v10 ) goto LABEL_8; } result = v10(1, v7, *a1, a1[1], a1, a2); if ( result == 7 ) break; if ( result != 8 ) return 2; if ( v8 ) LABEL_14: abort(); v6 = (_DWORD *)*a2; LABEL_8: v6 = (_DWORD *)*v6; ++v3; *a2 = v6; if ( !v6 ) return 2; } *a3 = v3; return result; } //----- (00461130) -------------------------------------------------------- BOOL fc_key_init() { int v0; // eax DWORD LastError; // eax BOOL result; // eax v0 = TlsAlloc(); if ( v0 == -1 ) { LastError = GetLastError(); } else { fc_key = v0; LastError = __mingwthr_key_dtor(v0, 0); } result = LastError == 0; use_fc_key = result; return result; } // 53E1F0: using guessed type int use_fc_key; //----- (00461170) -------------------------------------------------------- void fc_key_init_once() { int v0; // eax DWORD LastError; // eax if ( !_CRT_MT ) goto LABEL_4; if ( once_0 ) { if ( use_fc_key < 0 ) LABEL_4: use_fc_key = 0; } else if ( _InterlockedAdd(&dword_53E1EC, 1u) ) { while ( !once_0 ) Sleep(0); if ( use_fc_key < 0 ) use_fc_key = 0; } else { v0 = TlsAlloc(); if ( v0 == -1 ) { LastError = GetLastError(); } else { fc_key = v0; LastError = __mingwthr_key_dtor(v0, 0); } once_0 = 1; use_fc_key = LastError == 0; } } // 53E1E4: using guessed type int _CRT_MT; // 53E1E8: using guessed type int once_0; // 53E1EC: using guessed type int dword_53E1EC; // 53E1F0: using guessed type int use_fc_key; //----- (00461250) -------------------------------------------------------- LPVOID _Unwind_SjLj_GetContext() { int v0; // ebx DWORD dwTlsIndex; // ebx DWORD LastError; // esi LPVOID Value; // ebx if ( use_fc_key < 0 ) { fc_key_init_once(); v0 = fc_static; if ( !use_fc_key ) return (LPVOID)v0; } else { v0 = fc_static; if ( !use_fc_key ) return (LPVOID)v0; } dwTlsIndex = fc_key; LastError = GetLastError(); Value = TlsGetValue(dwTlsIndex); SetLastError(LastError); return Value; } // 53E1F0: using guessed type int use_fc_key; // 769648: using guessed type int fc_static; //----- (004612C0) -------------------------------------------------------- int __usercall uw_install_context_constprop_0@(int a1@) { void *v2; // esi int v3; // eax v2 = *(void **)a1; v3 = use_fc_key; if ( use_fc_key < 0 ) { fc_key_init_once(); v3 = use_fc_key; } if ( v3 ) { if ( !TlsSetValue(fc_key, v2) ) GetLastError(); } else { fc_static = (int)v2; } return (*(int (**)(void))(*(_DWORD *)a1 + 36))(); } // 53E1F0: using guessed type int use_fc_key; // 769648: using guessed type int fc_static; //----- (00461320) -------------------------------------------------------- int __usercall _Unwind_ForcedUnwind_Phase2@(_DWORD *a1@, void ***a2@, int *a3@) { int v4; // esi void **i; // eax int (__cdecl *v7)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // ebp int result; // eax void *lpTlsValue; // ecx int v10; // eax int (__cdecl *v11)(int, int, _DWORD, _DWORD, _DWORD *, void ***, int); // [esp+20h] [ebp-2Ch] int v12; // [esp+24h] [ebp-28h] void *v13; // [esp+28h] [ebp-24h] v4 = 1; v11 = (int (__cdecl *)(int, int, _DWORD, _DWORD, _DWORD *, void ***, int))a1[3]; v12 = a1[4]; for ( i = *a2; i; *a2 = i ) { while ( 1 ) { v7 = (int (__cdecl *)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))i[6]; if ( v11(1, 10, *a1, a1[1], a1, a2, v12) ) return 2; if ( v7 ) { result = v7(1, 10, *a1, a1[1], a1, a2); if ( result == 7 ) goto LABEL_17; if ( result != 8 ) return 2; } lpTlsValue = **a2; v10 = use_fc_key; if ( use_fc_key < 0 ) { v13 = **a2; fc_key_init_once(); v10 = use_fc_key; lpTlsValue = v13; } if ( v10 ) break; fc_static = (int)lpTlsValue; LABEL_4: ++v4; i = (void **)**a2; *a2 = i; if ( !i ) goto LABEL_14; } if ( TlsSetValue(fc_key, lpTlsValue) ) goto LABEL_4; GetLastError(); ++v4; i = (void **)**a2; } LABEL_14: if ( v11(1, 26, *a1, a1[1], a1, a2, v12) ) return 2; result = 5; LABEL_17: *a3 = v4; return result; } // 53E1F0: using guessed type int use_fc_key; // 769648: using guessed type int fc_static; //----- (004614B0) -------------------------------------------------------- void __cdecl _Unwind_SjLj_Register(struct SjLj_Function_Context *lpfctx) { int v1; // eax struct SjLj_Function_Context *v2; // eax DWORD dwTlsIndex; // esi DWORD LastError; // edi struct SjLj_Function_Context *Value; // esi DWORD v6; // eax v1 = use_fc_key; if ( use_fc_key < 0 ) { fc_key_init_once(); v1 = use_fc_key; } if ( v1 ) { dwTlsIndex = fc_key; LastError = GetLastError(); Value = (struct SjLj_Function_Context *)TlsGetValue(dwTlsIndex); SetLastError(LastError); v6 = fc_key; lpfctx->prev = Value; if ( !TlsSetValue(v6, lpfctx) ) GetLastError(); } else { v2 = (struct SjLj_Function_Context *)fc_static; fc_static = (int)lpfctx; lpfctx->prev = v2; } } // 53E1F0: using guessed type int use_fc_key; // 769648: using guessed type int fc_static; //----- (00461540) -------------------------------------------------------- void __cdecl _Unwind_SjLj_Unregister(struct SjLj_Function_Context *lpfctx) { struct SjLj_Function_Context *lpTlsValue; // ebx int v2; // eax lpTlsValue = lpfctx->prev; v2 = use_fc_key; if ( use_fc_key < 0 ) { fc_key_init_once(); v2 = use_fc_key; } if ( v2 ) { if ( !TlsSetValue(fc_key, lpTlsValue) ) GetLastError(); } else { fc_static = (int)lpTlsValue; } } // 53E1F0: using guessed type int use_fc_key; // 769648: using guessed type int fc_static; //----- (004615A0) -------------------------------------------------------- _Unwind_Word __cdecl _Unwind_GetGR(struct _Unwind_Context *lpuctx, int r) { return *(_DWORD *)(*(_DWORD *)lpuctx + 4 * r + 8); } //----- (004615B0) -------------------------------------------------------- int __cdecl _Unwind_GetCFA(int a1) { int result; // eax result = 0; if ( *(_DWORD *)a1 ) return *(_DWORD *)(*(_DWORD *)a1 + 40); return result; } //----- (004615C0) -------------------------------------------------------- void __cdecl _Unwind_SetGR(struct _Unwind_Context *lpuctx, int r, _Unwind_Word v) { *(_DWORD *)(*(_DWORD *)lpuctx + 4 * r + 8) = v; } //----- (004615E0) -------------------------------------------------------- int __cdecl _Unwind_GetIP(int a1) { return *(_DWORD *)(*(_DWORD *)a1 + 4) + 1; } //----- (004615F0) -------------------------------------------------------- int __cdecl _Unwind_GetIPInfo(int a1, _DWORD *a2) { int result; // eax *a2 = 0; result = 0; if ( *(_DWORD *)a1 ) return *(_DWORD *)(*(_DWORD *)a1 + 4) + 1; return result; } //----- (00461610) -------------------------------------------------------- int __cdecl _Unwind_SetIP(int a1, int a2) { int result; // eax result = a2 - 1; *(_DWORD *)(*(_DWORD *)a1 + 4) = a2 - 1; return result; } //----- (00461630) -------------------------------------------------------- int __cdecl _Unwind_GetLanguageSpecificData(int a1) { return *(_DWORD *)(*(_DWORD *)a1 + 28); } //----- (00461640) -------------------------------------------------------- int _Unwind_GetRegionStart() { return 0; } //----- (00461650) -------------------------------------------------------- int _Unwind_FindEnclosingFunction() { return 0; } //----- (00461660) -------------------------------------------------------- int _Unwind_GetDataRelBase() { return 0; } //----- (00461670) -------------------------------------------------------- int _Unwind_GetTextRelBase() { return 0; } //----- (00461680) -------------------------------------------------------- _Unwind_Reason_Code __cdecl _Unwind_SjLj_RaiseException(struct _Unwind_Exception *lpuexcpt) { _DWORD *Value; // esi _DWORD *v2; // eax int (__cdecl *v3)(int, int, _DWORD, _DWORD, struct _Unwind_Exception *, _DWORD **); // ecx int v4; // eax _Unwind_Reason_Code result; // eax DWORD dwTlsIndex; // esi DWORD LastError; // edi _DWORD *v8; // eax _DWORD *v9; // [esp+28h] [ebp-14h] BYREF int v10[4]; // [esp+2Ch] [ebp-10h] BYREF if ( use_fc_key < 0 ) { fc_key_init_once(); Value = (_DWORD *)fc_static; if ( !use_fc_key ) goto LABEL_3; LABEL_12: dwTlsIndex = fc_key; LastError = GetLastError(); Value = TlsGetValue(dwTlsIndex); SetLastError(LastError); goto LABEL_3; } Value = (_DWORD *)fc_static; if ( use_fc_key ) goto LABEL_12; LABEL_3: v9 = Value; if ( !Value ) return 5; v2 = Value; while ( 1 ) { v3 = (int (__cdecl *)(int, int, _DWORD, _DWORD, struct _Unwind_Exception *, _DWORD **))v2[6]; if ( !v3 ) goto LABEL_8; v4 = v3(1, 1, *(_DWORD *)lpuexcpt, *((_DWORD *)lpuexcpt + 1), lpuexcpt, &v9); if ( v4 == 6 ) break; if ( v4 != 8 ) return 3; LABEL_8: v2 = (_DWORD *)*v9; v9 = v2; if ( !v2 ) return 5; } v8 = v9; *((_DWORD *)lpuexcpt + 3) = 0; v9 = Value; *((_DWORD *)lpuexcpt + 4) = v8; result = _Unwind_RaiseException_Phase2(lpuexcpt, &v9, v10); if ( result != _URC_INSTALL_CONTEXT ) return result; uw_install_context_constprop_0((int)&v9); return 3; } // 53E1F0: using guessed type int use_fc_key; // 769648: using guessed type int fc_static; // 461680: using guessed type int var_10[4]; //----- (00461790) -------------------------------------------------------- _Unwind_Reason_Code __cdecl _Unwind_SjLj_ForcedUnwind( struct _Unwind_Exception *lpuexcpt, _Unwind_Stop_Fn pfnstop, void *pdata) { void **Value; // esi _Unwind_Reason_Code result; // eax DWORD dwTlsIndex; // esi DWORD LastError; // edi void **v7; // [esp+18h] [ebp-14h] BYREF int v8[4]; // [esp+1Ch] [ebp-10h] BYREF if ( use_fc_key < 0 ) { fc_key_init_once(); Value = (void **)fc_static; if ( !use_fc_key ) goto LABEL_3; } else { Value = (void **)fc_static; if ( !use_fc_key ) goto LABEL_3; } dwTlsIndex = fc_key; LastError = GetLastError(); Value = (void **)TlsGetValue(dwTlsIndex); SetLastError(LastError); LABEL_3: v7 = Value; *((_DWORD *)lpuexcpt + 3) = pfnstop; *((_DWORD *)lpuexcpt + 4) = pdata; result = _Unwind_ForcedUnwind_Phase2(lpuexcpt, &v7, v8); if ( result == _URC_INSTALL_CONTEXT ) { uw_install_context_constprop_0((int)&v7); _Unwind_SjLj_Resume(lpuexcpt); } return result; } // 53E1F0: using guessed type int use_fc_key; // 769648: using guessed type int fc_static; // 461790: using guessed type int var_10[4]; //----- (00461830) -------------------------------------------------------- void __cdecl __noreturn _Unwind_SjLj_Resume(struct _Unwind_Exception *lpuexcpt) { LPVOID Context; // eax int *v2; // ecx void ***v3; // edx struct _Unwind_Exception *v4; // eax int i; // eax LPVOID v6; // [esp+8h] [ebp-14h] BYREF int v7[4]; // [esp+Ch] [ebp-10h] BYREF Context = _Unwind_SjLj_GetContext(); v2 = v7; v3 = (void ***)&v6; v6 = Context; v4 = lpuexcpt; if ( *((_DWORD *)lpuexcpt + 3) ) goto LABEL_5; for ( i = _Unwind_RaiseException_Phase2(lpuexcpt, &v6, v7); ; i = _Unwind_ForcedUnwind_Phase2(v4, v3, v2) ) { if ( i != 7 ) abort(); v4 = (struct _Unwind_Exception *)uw_install_context_constprop_0((int)&v6); LABEL_5: ; } } // 461866: variable 'v3' is possibly undefined // 461866: variable 'v2' is possibly undefined // 461830: using guessed type int var_10[4]; //----- (00461880) -------------------------------------------------------- _Unwind_Reason_Code __cdecl __noreturn _Unwind_SjLj_Resume_or_Rethrow(struct _Unwind_Exception *lpuexcpt) { void **Context; // [esp+8h] [ebp-14h] BYREF int v3[4]; // [esp+Ch] [ebp-10h] BYREF if ( *((_DWORD *)lpuexcpt + 3) ) { Context = (void **)_Unwind_SjLj_GetContext(); if ( _Unwind_ForcedUnwind_Phase2(lpuexcpt, &Context, v3) == 7 ) uw_install_context_constprop_0((int)&Context); abort(); } return _Unwind_SjLj_RaiseException(lpuexcpt); } // 461880: using guessed type int var_10[4]; //----- (004618D0) -------------------------------------------------------- void __cdecl _Unwind_DeleteException(struct _Unwind_Exception *lpuexcpt) { void (__cdecl *v1)(int, struct _Unwind_Exception *); // eax v1 = (void (__cdecl *)(int, struct _Unwind_Exception *))*((_DWORD *)lpuexcpt + 2); if ( v1 ) v1(1, lpuexcpt); } //----- (004618F0) -------------------------------------------------------- _Unwind_Reason_Code __cdecl _Unwind_Backtrace(_Unwind_Trace_Fn pfntrace, void *lpdata) { LPVOID Value; // ebx DWORD dwTlsIndex; // ebx DWORD LastError; // ebp int v6[8]; // [esp+1Ch] [ebp-20h] BYREF if ( use_fc_key < 0 ) { fc_key_init_once(); Value = (LPVOID)fc_static; if ( !use_fc_key ) goto LABEL_3; LABEL_11: dwTlsIndex = fc_key; LastError = GetLastError(); Value = TlsGetValue(dwTlsIndex); SetLastError(LastError); goto LABEL_3; } Value = (LPVOID)fc_static; if ( use_fc_key ) goto LABEL_11; LABEL_3: v6[0] = (int)Value; while ( Value ) { if ( pfntrace((struct _Unwind_Context *)v6, lpdata) ) return 3; Value = *(LPVOID *)v6[0]; v6[0] = *(_DWORD *)v6[0]; } if ( pfntrace((struct _Unwind_Context *)v6, lpdata) == _URC_NO_REASON ) return 5; return 3; } // 53E1F0: using guessed type int use_fc_key; // 769648: using guessed type int fc_static; //----- (004619B0) -------------------------------------------------------- void __cdecl emutls_destroy(int *a1) { int v1; // edi int v2; // ebx int v3; // eax v1 = *a1; if ( *a1 ) { v2 = 0; do { v3 = a1[v2 + 1]; if ( v3 ) free(*(void **)(v3 - 4)); ++v2; } while ( v1 != v2 ); } free(a1); } //----- (00461A00) -------------------------------------------------------- _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: abort(); } 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; } //----- (00461AA0) -------------------------------------------------------- DWORD emutls_init() { int v0; // eax DWORD result; // eax emutls_mutex = -1; hHandle = 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 ) abort(); return result; } // 769654: using guessed type int emutls_mutex; //----- (00461B20) -------------------------------------------------------- _DWORD *__cdecl __emutls_get_address(size_t *a1) { _DWORD *result; // eax unsigned int v2; // edi DWORD dwTlsIndex; // ebx DWORD LastError; // esi unsigned int *Value; // ebx unsigned int v6; // edx unsigned int v7; // edi unsigned int *v8; // eax int v9; // ecx unsigned int *v10; // eax int v11; // [esp+18h] [ebp-24h] unsigned int v12; // [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_27; if ( once_0_0 ) goto LABEL_38; if ( _InterlockedAdd(&dword_53E1F8, 1u) ) { while ( !once_0_0 ) Sleep(0); } else { emutls_init(); once_0_0 = 1; } if ( _CRT_MT ) { LABEL_38: if ( _InterlockedAdd(&emutls_mutex, 1u) && WaitForSingleObject(hHandle, 0xFFFFFFFF) ) _InterlockedSub(&emutls_mutex, 1u); v2 = a1[2]; if ( v2 ) goto LABEL_14; } else { LABEL_27: 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) >= 0 ) ReleaseSemaphore(hHandle, 1, 0); } LABEL_5: dwTlsIndex = emutls_key; LastError = GetLastError(); Value = (unsigned int *)TlsGetValue(dwTlsIndex); SetLastError(LastError); if ( !Value ) { v8 = (unsigned int *)calloc(v2 + 33, 4u); Value = v8; if ( v8 ) { *v8 = v2 + 32; goto LABEL_19; } LABEL_35: abort(); } v6 = *Value; if ( *Value < v2 ) { v9 = 2 * v6; v12 = *Value; if ( v2 > 2 * v6 ) v9 = v2 + 32; v11 = v9; v10 = (unsigned int *)realloc(Value, 4 * v9 + 4); Value = v10; if ( v10 ) { *v10 = v11; memset(&v10[v12 + 1], 0, 4 * (v11 - v12)); LABEL_19: if ( !TlsSetValue(emutls_key, Value) ) GetLastError(); goto LABEL_7; } goto LABEL_35; } LABEL_7: v7 = v2 - 1; result = (_DWORD *)Value[v7 + 1]; if ( !result ) { result = emutls_alloc(a1); Value[v7 + 1] = (unsigned int)result; } return result; } // 53E1E4: using guessed type int _CRT_MT; // 53E1F4: using guessed type int once_0_0; // 53E1F8: using guessed type int dword_53E1F8; // 76964C: using guessed type int emutls_size; // 769654: using guessed type int emutls_mutex; //----- (00461DC0) -------------------------------------------------------- unsigned int *__cdecl __emutls_register_common(unsigned int *a1, unsigned int a2, unsigned int a3, unsigned int a4) { unsigned int *result; // eax result = a1; if ( *a1 < a2 ) { *a1 = a2; a1[3] = 0; } if ( a1[1] < a3 ) a1[1] = a3; if ( a4 ) { if ( *a1 == a2 ) a1[3] = a4; } return result; } //----- (00461E00) -------------------------------------------------------- long double __cdecl __mingw_strtod(unsigned __int8 *a1, unsigned __int8 **a2) { char v2; // al double v4; // [esp+28h] [ebp-24h] int v5; // [esp+34h] [ebp-18h] BYREF double v6; // [esp+38h] [ebp-14h] BYREF v2 = __strtodg(a1, a2, fpi_0, &v5, &v6); switch ( v2 & 7 ) { case 0: case 6: v4 = 0.0; if ( (v2 & 8) != 0 ) goto LABEL_4; break; case 1: LODWORD(v4) = LODWORD(v6); HIDWORD(v4) = HIDWORD(v6) & 0xFFEFFFFF | ((v5 + 1075) << 20); if ( (v2 & 8) != 0 ) goto LABEL_4; break; case 2: v4 = v6; if ( (v2 & 8) != 0 ) goto LABEL_4; break; case 3: v4 = INFINITY; if ( (v2 & 8) != 0 ) goto LABEL_4; break; case 4: v4 = NAN; if ( (v2 & 8) != 0 ) goto LABEL_4; break; case 5: *(_QWORD *)&v4 = *(_QWORD *)&v6 | 0x7FF0000000000000LL; goto LABEL_3; default: LABEL_3: if ( (v2 & 8) != 0 ) LABEL_4: HIDWORD(v4) |= 0x80000000; break; } return v4; } // 461E5A: variable 'v4' is possibly undefined // 53E1FC: using guessed type int fpi_0[6]; //----- (00461F20) -------------------------------------------------------- long double __cdecl __mingw_strtof(unsigned __int8 *a1, unsigned __int8 **a2) { char v2; // al float v3; // edx float v5; // [esp+38h] [ebp-14h] BYREF int v6[4]; // [esp+3Ch] [ebp-10h] BYREF v2 = __strtodg(a1, a2, fpi0_0, v6, &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; } // 53E214: using guessed type int fpi0_0[6]; // 461F20: using guessed type int var_10[4]; //----- (00461FC0) -------------------------------------------------------- wint_t __cdecl btowc(int Ch) { wint_t result; // ax unsigned int CodePage; // eax CHAR MultiByteStr; // [esp+2Dh] [ebp-Fh] BYREF WCHAR WideCharStr[7]; // [esp+2Eh] [ebp-Eh] BYREF result = -1; if ( Ch != -1 ) { MultiByteStr = Ch; WideCharStr[0] = -1; CodePage = ___lc_codepage_func(); MultiByteToWideChar(CodePage, 8u, &MultiByteStr, 1, WideCharStr, 1); return WideCharStr[0]; } return result; } // 461FC0: using guessed type WCHAR WideCharStr[7]; //----- (00462030) -------------------------------------------------------- int __cdecl __asctoe64(char *Str, long double *a2) { char *v2; // edi size_t v3; // eax char *v4; // esi int v5; // eax void *v6; // esp void *v7; // esp int i; // esi int v9; // ebx int v10; // eax int *v11; // edx char *v12; // esi char *v13; // eax char v14; // al char *v15; // esi char *v16; // ebx char *v18; // edx char v19; // al int v20; // edx __int16 *v21; // ebx int v22; // ecx __int16 v23; // ax int v24; // ecx __int16 *v25; // ebx __int16 j; // ax __int16 v27; // ax __int16 *v28; // ecx __int16 v29; // ax int v30; // esi char *v31; // esi int v32; // eax char v33; // al int v34; // ecx int v35; // edx int v36; // ebx int v37; // edx __int16 *v38; // ecx __int16 k; // ax __int16 v40; // ax int v41; // edx __int16 *v42; // ecx __int16 v43; // ax __int16 *v44; // edx __int16 v45; // ax bool v46; // zf int v47; // eax long double v48; // fst6 __int16 v49; // fps int v54; // eax char *v55; // ebx int v56; // esi __int64 *v57; // eax int v58; // edi int v59; // ebx int v60; // ebx int v61; // eax int v62; // ebx int v63; // [esp+0h] [ebp-B8h] int v64; // [esp+20h] [ebp-98h] BYREF int v65; // [esp+28h] [ebp-90h] int v66; // [esp+2Ch] [ebp-8Ch] int v67; // [esp+30h] [ebp-88h] int v68; // [esp+34h] [ebp-84h] __int64 *v69; // [esp+38h] [ebp-80h] int v70; // [esp+3Ch] [ebp-7Ch] char *v71; // [esp+40h] [ebp-78h] unsigned __int16 v72; // [esp+46h] [ebp-72h] int v73; // [esp+48h] [ebp-70h] int v74; // [esp+4Ch] [ebp-6Ch] int *v75; // [esp+50h] [ebp-68h] int v76; // [esp+54h] [ebp-64h] int v77; // [esp+58h] [ebp-60h] char *String2; // [esp+5Ch] [ebp-5Ch] __int64 v79; // [esp+6Ah] [ebp-4Eh] BYREF int v80; // [esp+72h] [ebp-46h] int v81; // [esp+76h] [ebp-42h] __int16 v82; // [esp+7Ah] [ebp-3Eh] BYREF __int64 v83; // [esp+7Ch] [ebp-3Ch] BYREF int v84; // [esp+84h] [ebp-34h] int v85; // [esp+88h] [ebp-30h] __int16 v86; // [esp+8Ch] [ebp-2Ch] BYREF char v87[2]; // [esp+8Eh] [ebp-2Ah] BYREF unsigned __int16 v88; // [esp+90h] [ebp-28h] v2 = Str; LOBYTE(v74) = *localeconv()->decimal_point; v3 = strlen(Str); v4 = (char *)(v3 + 2); v5 = 16 * ((v3 + 29) >> 4); v6 = alloca(v5); v7 = alloca(v5); String2 = v4; v75 = &v64; for ( i = 0; ; ++i ) { v9 = (unsigned __int8)*v2; v10 = isspace(v9); if ( !v10 ) break; ++v2; } v67 = i; v11 = v75; v68 = 0; v12 = String2; while ( 1 ) { v11 = (int *)((char *)v11 + 1); *((_BYTE *)v11 - 1) = v9; if ( !(_BYTE)v9 ) break; if ( (int)v12 <= ++v10 ) break; LOBYTE(v9) = v2[v10]; } v13 = (char *)v75; *(_BYTE *)v11 = 0; v14 = *v13; if ( v14 == 45 ) { String2 = (char *)v75 + 1; v72 = -1; } else { v72 = 0; String2 = (char *)v75 + (v14 == 43); } if ( !_strnicmp(String1, String2, 3u) ) { v31 = String2; v16 = String2 + 3; v32 = _strnicmp("INITY", String2 + 3, 5u); HIDWORD(v79) = 0; v80 = 0; if ( !v32 ) v16 = v31 + 8; v81 = 0; v82 = 0; WORD1(v79) = 0x7FFF; goto LABEL_13; } v15 = String2; if ( !_strnicmp(off_55A6CA, String2, 3u) ) { *(_DWORD *)((char *)&v79 + 2) = 0x7FFF; v80 = 0; v16 = v15 + 3; HIWORD(v79) = -16384; v81 = 0; v82 = 0; LABEL_13: LOWORD(v79) = v72; __toe64(&v79, (int)a2); return v67 + v16 - (char *)v75; } v18 = String2; v79 = 0LL; v19 = *String2; v80 = 0; v81 = 0; v82 = 0; if ( v19 == 48 ) { do v19 = *++v18; while ( v19 == 48 ); String2 = v18; v65 = 1; } else { v65 = 0; } v70 = 0; v73 = 0; v66 = 0; v71 = 0; v76 = 0; while ( 1 ) { v77 = v19 - 48; if ( (unsigned int)v77 <= 9 ) { v20 = WORD2(v79); if ( WORD2(v79) ) { v66 |= v77; v71 = (char *)((__PAIR64__((unsigned int)v71, v76) - 1) >> 32); } else { v21 = &v82; v71 += -(v76 == 0) + 1; v22 = 0; do { if ( *v21 < 0 ) v22 |= 1u; v23 = 2 * *v21; if ( (v22 & 2) != 0 ) v23 |= 1u; --v21; v22 *= 2; v21[1] = v23; } while ( v21 != (__int16 *)((char *)&v79 + 2) ); v24 = 0; v69 = &v83; v86 = 0; v25 = &v86; v83 = v79; v84 = v80; v85 = v81; for ( j = 0; ; j = *v25 ) { if ( j < 0 ) v24 |= 1u; v27 = 2 * j; if ( (v24 & 2) != 0 ) v27 |= 1u; --v25; v24 *= 2; v25[1] = v27; if ( v25 == (__int16 *)((char *)&v83 + 2) ) break; } v28 = &v86; do { if ( *v28 < 0 ) v20 |= 1u; v29 = 2 * *v28; if ( (v20 & 2) != 0 ) v29 |= 1u; --v28; v20 *= 2; v28[1] = v29; } while ( v28 != (__int16 *)((char *)&v83 + 2) ); v30 = (int)v69; __eaddm((int)v69, (int)&v79); *(_DWORD *)v30 = 0; *(_DWORD *)(v30 + 4) = 0; *(_DWORD *)(v30 + 8) = 0; *(_DWORD *)(v30 + 12) = 0; *(_WORD *)(v30 + 16) = 0; HIWORD(v85) = v77; __eaddm(v30, (int)&v79); } ++v70; v73 |= v77; goto LABEL_23; } if ( (_BYTE)v74 != v19 ) break; if ( v76 ) { v76 = v65 | v70; goto LABEL_66; } v76 = 1; LABEL_23: v19 = *++String2; } v76 = v65 | v70; if ( (v19 & 0xDF) == 69 ) { if ( v65 | v70 ) { v33 = String2[1]; if ( v33 == 45 ) { v34 = -1; v16 = String2 + 2; v33 = String2[2]; } else { v16 = String2 + 1; v34 = 1; } if ( v33 == 43 ) v33 = *++v16; if ( (unsigned __int8)(v33 - 48) <= 9u ) { v35 = v68; do { if ( v35 <= 4977 ) v35 = (char)(v33 - 48) + 10 * v35; v33 = *++v16; } while ( (unsigned __int8)(v33 - 48) <= 9u ); v68 = v35; if ( v34 == -1 ) { if ( v35 > 4977 ) { v82 = 0; v79 = v72; v80 = 0; v81 = 0; __toe64(&v79, (int)a2); if ( !v73 ) return v67 + v16 - (char *)v75; String2 = v16; goto LABEL_93; } String2 = v16; v68 = -v35; } else { if ( v68 > 4977 ) { v79 = 0LL; v82 = 0; v80 = 0; v81 = 0; if ( !v73 ) goto LABEL_13; WORD1(v79) = 0x7FFF; LOWORD(v79) = v72; __toe64(&v79, (int)a2); String2 = v16; goto LABEL_93; } String2 = v16; } } } else { v68 = 0; } } LABEL_66: v77 = v68 - (_DWORD)v71; if ( v68 - (int)v71 > 0 ) { while ( 1 ) { v36 = WORD2(v79); if ( WORD2(v79) ) break; v37 = 0; v38 = &v86; v86 = 0; v83 = v79; v84 = v80; v85 = v81; for ( k = 0; ; k = *v38 ) { if ( k < 0 ) v37 |= 1u; v40 = 2 * k; if ( (v37 & 2) != 0 ) v40 |= 1u; --v38; v37 *= 2; v38[1] = v40; if ( v38 == (__int16 *)((char *)&v83 + 2) ) break; } v41 = 0; v42 = &v86; do { if ( *v42 < 0 ) v41 |= 1u; v43 = 2 * *v42; if ( (v41 & 2) != 0 ) v43 |= 1u; --v42; v41 *= 2; v42[1] = v43; } while ( v42 != (__int16 *)((char *)&v83 + 2) ); __eaddm((int)&v79, (int)&v83); v44 = &v86; do { if ( *v44 < 0 ) v36 |= 1u; v45 = 2 * *v44; if ( (v36 & 2) != 0 ) v45 |= 1u; --v44; v36 *= 2; v44[1] = v45; } while ( v44 != (__int16 *)((char *)&v83 + 2) ); if ( WORD2(v83) ) break; v46 = v77-- == 1; v82 = 0; v79 = v83; v80 = v84; v81 = v85; if ( v46 ) { v47 = __enormlz(&v79); if ( v47 > 80 ) goto LABEL_108; __emdnorm((int)&v79, v66, 0, 16462 - v47, 64, 80); v74 = WORD1(v79); goto LABEL_91; } } v54 = __enormlz(&v79); if ( v54 > 80 ) goto LABEL_108; __emdnorm((int)&v79, v66, 0, 16462 - v54, 64, 80); v70 = 1; v74 = WORD1(v79); v71 = v87; LABEL_101: v55 = (char *)&unk_55A770; v56 = 1; v83 = (unsigned int)__eone; v84 = 1073709056; v57 = &v83; v58 = v77; do { while ( (v56 & v58) == 0 ) { v55 -= 12; v56 *= 2; if ( v55 == (char *)&unk_55A6D4 ) goto LABEL_105; } v56 *= 2; v63 = (int)v55; v55 -= 12; v77 = (int)v57; __emul(v63, (int)v57, (int)v57); v57 = (__int64 *)v77; } while ( v55 != (char *)&unk_55A6D4 ); LABEL_105: __emovi((int)v57, (int)v71); if ( v70 == -1 ) { v60 = v74 - v88; v77 = __edivm((int)v71, (int *)&v79); v74 = v60 + 0x3FFF; } else { v59 = v74 + v88; v77 = __emulm((int)v71, (int)&v79); v74 = v59 - 16382; } goto LABEL_91; } v61 = __enormlz(&v79); if ( v61 > 80 ) { LABEL_108: v79 = 0LL; v80 = 0; v81 = 0; v82 = 0; } else { __emdnorm((int)&v79, v66, 0, 16462 - v61, 64, 80); v74 = WORD1(v79); if ( v77 ) { if ( v77 < -4096 ) { v71 = v87; __emovi((int)&__etens, (int)v87); v62 = v74 - v88; __edivm((int)v87, (int *)&v79); v70 = -1; v74 = v62 + 0x3FFF; v77 = -4096 - v77; } else { v70 = -1; v77 = (int)&v71[-v68]; v71 = v87; } goto LABEL_101; } LABEL_91: __emdnorm((int)&v79, v77, 0, v74, 64, 64); } LOWORD(v79) = v72; __toe64(&v79, (int)a2); if ( !v73 ) goto LABEL_95; LABEL_93: v48 = *a2; _FST7 = v48; if ( v48 == 0.0 ) goto LABEL_98; __asm { fxam } if ( (v49 & 0x4500) == 1280 ) LABEL_98: *_errno() = 34; LABEL_95: if ( !v76 ) return v76; v16 = String2; return v67 + v16 - (char *)v75; } // 55A77C: using guessed type int __eone; //----- (00462A00) -------------------------------------------------------- long double __cdecl strtold(const char *String, char **EndPtr) { int v2; // eax long double v4[2]; // [esp+14h] [ebp-18h] BYREF v4[0] = 0.0; v2 = __asctoe64((char *)String, v4); if ( EndPtr ) *EndPtr = (char *)&String[v2]; return v4[0]; } // 462A00: using guessed type long double var_18[2]; //----- (00462A50) -------------------------------------------------------- unsigned __int64 __cdecl strtoull(const char *String, char **EndPtr, int Radix) { const char *v3; // esi int C; // ebx char v5; // al int v6; // edi unsigned int v7; // eax int v8; // eax int v9; // edx int v10; // ecx int v11; // edi char *v12; // ebp int v13; // esi int v14; // edi unsigned int v15; // ebx unsigned __int64 v16; // rax int v17; // ebx int *v18; // eax int *v20; // eax unsigned int v21; // [esp+24h] [ebp-28h] int v22; // [esp+28h] [ebp-24h] char v23; // [esp+2Fh] [ebp-1Dh] v3 = String; if ( EndPtr ) *EndPtr = (char *)String; if ( Radix == 1 || (unsigned int)Radix > 0x24 ) { v18 = _errno(); v9 = 0; v10 = 0; *v18 = 33; return __PAIR64__(v10, v9); } while ( 1 ) { C = *v3; if ( !isspace(C) ) break; ++v3; } v23 = C; v5 = C; if ( (((_BYTE)C - 43) & 0xFD) == 0 ) v5 = *++v3; if ( Radix ) { if ( Radix != 16 || v5 != 48 ) { LABEL_12: v6 = v5; v7 = v5 - 48; if ( v7 <= 9 ) { v21 = Radix; v11 = v7; } else if ( isupper(v6) ) { v11 = v6 - 55; v21 = Radix; } else { v8 = islower(v6); v9 = 0; v10 = 0; if ( !v8 ) return __PAIR64__(v10, v9); v11 = v6 - 87; v21 = Radix; } goto LABEL_16; } if ( (v3[1] & 0xDF) == 88 ) { LABEL_36: v5 = v3[2]; Radix = 16; v3 += 2; goto LABEL_12; } v21 = 16; } else { Radix = 10; if ( v5 != 48 ) goto LABEL_12; if ( (v3[1] & 0xDF) == 88 ) goto LABEL_36; v21 = 8; Radix = 8; } v11 = 0; LABEL_16: v12 = (char *)(v3 + 1); v9 = 0; v10 = 0; if ( v11 >= v21 ) return __PAIR64__(v10, v9); v13 = v11; v22 = 0; v14 = v11 >> 31; while ( 1 ) { v17 = *v12; if ( (unsigned int)(v17 - 48) <= 9 ) { v15 = v17 - 48; goto LABEL_19; } if ( isupper(*v12) ) { v15 = v17 - 55; goto LABEL_19; } if ( !islower(v17) ) break; v15 = v17 - 87; LABEL_19: if ( v15 >= v21 ) break; if ( 0xFFFFFFFFFFFFFFFFLL / Radix + 1 < __PAIR64__(v14, v13) || (v16 = (int)v15 + Radix * __PAIR64__(v14, v13), v16 < __PAIR64__(v14, v13)) ) { v22 = 1; } else { v14 = HIDWORD(v16); v13 = v16; } ++v12; } v9 = v13; v10 = v14; if ( EndPtr ) *EndPtr = v12; if ( v22 ) { v20 = _errno(); v9 = -1; v10 = -1; *v20 = 34; } else if ( v23 == 45 ) { v10 = (unsigned __int64)-__SPAIR64__(v14, v13) >> 32; v9 = -v13; } return __PAIR64__(v10, v9); } //----- (00462D20) -------------------------------------------------------- int __cdecl wctob(wint_t WCh) { unsigned int CodePage; // eax CHAR MultiByteStr; // [esp+29h] [ebp-13h] BYREF WCHAR WideCharStr; // [esp+2Ah] [ebp-12h] BYREF BOOL UsedDefaultChar; // [esp+2Ch] [ebp-10h] BYREF UsedDefaultChar = 0; WideCharStr = WCh; CodePage = ___lc_codepage_func(); if ( !WideCharToMultiByte(CodePage, 0, &WideCharStr, 1, &MultiByteStr, 1, 0, &UsedDefaultChar) || UsedDefaultChar ) return -1; else return MultiByteStr; } //----- (00462DA0) -------------------------------------------------------- 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 = (&cmap)[2 * v2]; } return word_55A804[4 * v2]; } // 55A800: using guessed type char *cmap; // 55A804: using guessed type __int16 word_55A804[]; //----- (00462E00) -------------------------------------------------------- int __cdecl fseeko64(FILE *Stream, fpos_t a2, int a3) { int v4; // eax fpos_t Position[4]; // [esp+18h] [ebp-24h] BYREF switch ( a3 ) { case 1: if ( !fgetpos(Stream, Position) ) { Position[0] += a2; return fsetpos(Stream, Position); } return -1; case 2: fflush(Stream); v4 = _fileno(Stream); Position[0] = _filelengthi64(v4) + a2; return fsetpos(Stream, Position); case 0: Position[0] = a2; return fsetpos(Stream, Position); default: *_errno() = 22; return -1; } } //----- (00462EC0) -------------------------------------------------------- fpos_t __cdecl ftello64(FILE *Stream) { fpos_t Position[2]; // [esp+18h] [ebp-14h] BYREF if ( fgetpos(Stream, Position) ) return -1LL; else return Position[0]; } // 462EC0: using guessed type fpos_t var_14[2]; //----- (00462F10) -------------------------------------------------------- int __cdecl __mingw_vfprintf(FILE *Stream, char *a2, int *a3) { int v3; // ebx _lock_file(Stream); v3 = __mingw_pformat(24576, Stream, 0, a2, a3); _unlock_file(Stream); return v3; } //----- (00462F60) -------------------------------------------------------- int __cdecl __mingw_vsnprintf(FILE *a1, int a2, char *a3, int *a4) { int v4; // eax bool v5; // cc int v6; // edx int v7; // eax if ( !a2 ) return __mingw_pformat(0, a1, 0, a3, a4); v4 = __mingw_pformat(0, a1, a2 - 1, a3, a4); v5 = a2 - 1 <= v4; v6 = v4; v7 = a2 - 1; if ( !v5 ) v7 = v6; *((_BYTE *)&a1->_ptr + v7) = 0; return v6; } //----- (00462FE0) -------------------------------------------------------- int __cdecl __mingw_vsprintf(FILE *a1, char *a2, int *a3) { int result; // eax result = __mingw_pformat(0x4000, a1, 0, a2, a3); *((_BYTE *)&a1->_ptr + result) = 0; return result; } //----- (00463020) -------------------------------------------------------- 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(a1); v2 = v5[4]; } v1[4] = v2 + 1; result = v1; v1[v2 + 5] = 1; return result; } //----- (004630C0) -------------------------------------------------------- int __usercall rvOK_constprop_0_isra_0@( int *a1@, int *a2@, char *a3@, double a4, int a5, int a6, _DWORD *a7) { int *v8; // eax int v9; // ecx int v10; // edi int *Size; // ebx int v12; // eax int v13; // edx int v14; // eax unsigned int v15; // edx int v16; // ebp int v18; // eax int v19; // esi int v20; // eax int v21; // eax int v22; // edx int *v23; // eax int v26; // [esp+24h] [ebp-38h] int v27; // [esp+28h] [ebp-34h] int v28; // [esp+2Ch] [ebp-30h] int v29; // [esp+2Ch] [ebp-30h] int v30; // [esp+38h] [ebp-24h] BYREF int v31[8]; // [esp+3Ch] [ebp-20h] BYREF v8 = __d2b_D2A(a4, v31, &v30); v9 = v30; v10 = *a1; Size = v8; v12 = v30 - *a1; v13 = v12 + v31[0]; v30 = v12; v31[0] += v12; if ( v12 <= 0 ) { if ( !a5 ) { v16 = 0; goto LABEL_14; } v27 = 0; v26 = 0; if ( !v12 ) goto LABEL_18; Size = __lshift_D2A(Size, v10 - v9); goto LABEL_37; } if ( v10 == 53 ) { v16 = 0; if ( !a5 || a1[3] != 1 ) goto LABEL_14; v27 = __any_on_D2A((int)Size, v12); if ( !v27 ) { __rshift_D2A((int)Size, v30); v26 = 0; v13 = v31[0]; goto LABEL_18; } } else { if ( a6 != 1 ) { if ( a6 == 2 ) { v27 = __any_on_D2A((int)Size, v12); __rshift_D2A((int)Size, v30); LABEL_6: Size = __increment_D2A(Size); v14 = v10 & 0x1F; if ( (v10 & 0x1F) != 0 ) v14 = 32 - v14; _BitScanReverse(&v15, Size[Size[4] + 4]); if ( (v15 ^ 0x1F) == v14 ) { v26 = 32; v13 = v31[0]; } else { if ( !v27 ) v27 = Size[5] & 1; __rshift_D2A((int)Size, 1); v26 = 32; v13 = ++v31[0]; } goto LABEL_18; } if ( v12 == 1 ) { v16 = 0; if ( !a5 ) goto LABEL_14; v22 = ((unsigned int)Size[5] >> 1) & 1; } else { v22 = ((unsigned int)Size[((v12 - 1) >> 5) + 5] >> (v12 - 1)) & 1; } v29 = v22; v27 = __any_on_D2A((int)Size, v12); v26 = v27 != 0 ? 0x10 : 0; __rshift_D2A((int)Size, v30); if ( v29 ) goto LABEL_6; goto LABEL_37; } v27 = __any_on_D2A((int)Size, v12); if ( !v27 ) { __rshift_D2A((int)Size, v30); v26 = 0; goto LABEL_37; } } __rshift_D2A((int)Size, v30); v26 = 16; LABEL_37: v13 = v31[0]; LABEL_18: v18 = a1[1]; if ( v18 <= v13 ) { v21 = a1[2]; if ( v21 < v13 ) { v31[0] = v21 + 1; *a7 = 163; v26 = 0; *_errno() = 34; v13 = v31[0]; Size[4] = 0; } goto LABEL_30; } v31[0] = a1[1]; v28 = v18 - v13; if ( v10 < v18 - v13 || (v16 = a1[4]) != 0 ) { Size[4] = 0; v13 = v18; v26 = 0; *a7 = 80; LABEL_30: v16 = 1; *a2 = v13; __copybits_D2A(a3, v10, (size_t)Size); *a7 |= v26; goto LABEL_14; } if ( v28 - 1 > 0 && !v27 ) v27 = __any_on_D2A((int)Size, v28 - 1); if ( a5 | v27 ) { v19 = Size[((v28 - 1) >> 5) + 5] & (1 << (v28 - 1)); __rshift_D2A((int)Size, v28); *a7 = 2; if ( v19 ) { v23 = __increment_D2A(Size); v26 = 96; v13 = v31[0]; Size = v23; } else { v13 = v31[0]; v20 = 80; if ( !v27 ) v20 = v26; v26 = v20; } goto LABEL_30; } LABEL_14: __Bfree_D2A(Size); return v16; } // 4630C0: using guessed type int var_20[8]; //----- (004634A0) -------------------------------------------------------- _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; } //----- (004634E0) -------------------------------------------------------- int *__cdecl __set_ones_D2A(int *a1, int a2) { int *v2; // ebx int v3; // edi int *v4; // edi int v5; // eax int v6; // eax unsigned int v7; // eax size_t Size; // ebp unsigned int v10; // eax size_t v11; // edx v2 = a1; v3 = (a2 + 31) >> 5; if ( a1[1] < v3 ) { __Bfree_D2A(a1); v2 = __Balloc_D2A(v3); } v4 = v2 + 5; v5 = a2 >> 5; if ( (a2 & 0x1F) != 0 ) { v6 = v5 + 1; v2[4] = v6; v7 = (unsigned int)&v4[v6]; if ( v7 > (unsigned int)v4 ) { Size = 4 * ((v7 - (unsigned int)v2 - 21) >> 2) + 4; if ( (unsigned int)v2 + 21 > v7 ) Size = 4; v4 = (int *)((char *)v4 + Size); memset(v2 + 5, 255, Size); } *(v4 - 1) = (unsigned int)*(v4 - 1) >> (32 - (a2 & 0x1F)); return v2; } v2[4] = v5; v10 = (unsigned int)&v4[v5]; if ( (unsigned int)v4 >= v10 ) return v2; v11 = 4 * ((v10 - (unsigned int)v2 - 21) >> 2) + 4; if ( v10 < (unsigned int)v2 + 21 ) v11 = 4; memset(v2 + 5, 255, v11); return v2; } //----- (004635D0) -------------------------------------------------------- int __cdecl __strtodg(unsigned __int8 *a1, unsigned __int8 **a2, int *a3, int *a4, void *a5) { char *decimal_point; // edi unsigned __int8 *v6; // ebp signed __int8 v7; // cl int v8; // eax int v9; // ebx int v10; // edi unsigned __int8 *v11; // edx int result; // eax unsigned __int8 *v13; // edi size_t v14; // eax unsigned __int8 *v15; // edx unsigned __int8 *v16; // esi int v17; // ecx unsigned __int8 *v18; // edx unsigned __int8 *v19; // esi int v20; // esi int v21; // edx unsigned __int8 *v22; // eax int v23; // eax int v24; // eax int v25; // esi char *v26; // ebx int v27; // esi int v28; // edx int v29; // ecx int v30; // eax int v31; // edi long double v32; // fst7 int v36; // eax int v37; // eax int v38; // ecx char v39; // al signed int v40; // esi long double v41; // fst7 int *v42; // eax int v43; // esi int v44; // edx int v45; // eax int v46; // edi int v47; // edi int v48; // edx int v49; // edi int v50; // edi int v51; // eax int *v52; // eax int v53; // edx int *v54; // ebx int v55; // eax int *v56; // edi int v57; // esi int v58; // ebp int v59; // ebx int v60; // eax int v61; // ebx int v62; // esi int v63; // edx int v64; // esi int v65; // ebp bool v66; // cc int v67; // eax int *v68; // eax int *v69; // ebp int v70; // ebx int v71; // eax int v72; // eax int v73; // eax int *v74; // edx int *v75; // ebx _DWORD *v76; // esi int *v77; // eax int v78; // edx unsigned int v79; // ecx long double v80; // fst7 long double v81; // fst5 int v82; // eax unsigned __int8 *v83; // edx int v84; // esi int v85; // esi int v86; // edi int v87; // edx int v88; // esi int v89; // ecx int v90; // ecx int v91; // edx char v92; // dl int v93; // eax long double v94; // fst6 int v95; // edx int v96; // ecx int v97; // edi int v98; // esi int v99; // esi int v100; // ecx long double v101; // fst6 char v102; // cl int v103; // eax int v104; // ecx int *v105; // eax long double v106; // fst7 int *v107; // eax int v108; // edx unsigned int v109; // ecx bool v110; // zf int *v111; // eax long double v112; // fst6 long double v113; // fst5 long double v114; // fst6 int v115; // ebx int *v116; // eax int *v117; // esi int v120; // eax int v121; // edx size_t v122; // esi _DWORD *v123; // eax int v124; // eax int v125; // edi int v126; // ebx int v127; // esi int v128; // ecx int v129; // edx unsigned int v130; // edi size_t v131; // edx int v133; // eax size_t v134; // eax int v135; // ecx double Str; // [esp+0h] [ebp-CCh] int Size; // [esp+8h] [ebp-C4h] int v138; // [esp+Ch] [ebp-C0h] int v139; // [esp+20h] [ebp-ACh] double v140; // [esp+20h] [ebp-ACh] int *v141; // [esp+20h] [ebp-ACh] int v142; // [esp+2Ch] [ebp-A0h] void *v143; // [esp+2Ch] [ebp-A0h] int *v144; // [esp+2Ch] [ebp-A0h] int Val; // [esp+30h] [ebp-9Ch] char *v146; // [esp+34h] [ebp-98h] int v147; // [esp+34h] [ebp-98h] int v148; // [esp+34h] [ebp-98h] int v149; // [esp+34h] [ebp-98h] int v150; // [esp+38h] [ebp-94h] int v151; // [esp+38h] [ebp-94h] unsigned __int8 *v152; // [esp+38h] [ebp-94h] int v153; // [esp+40h] [ebp-8Ch] int v154; // [esp+40h] [ebp-8Ch] double v155; // [esp+40h] [ebp-8Ch] int v156; // [esp+48h] [ebp-84h] int v157; // [esp+48h] [ebp-84h] int v158; // [esp+4Ch] [ebp-80h] unsigned __int8 *v159; // [esp+4Ch] [ebp-80h] int v160; // [esp+4Ch] [ebp-80h] int *v161; // [esp+4Ch] [ebp-80h] BOOL v162; // [esp+4Ch] [ebp-80h] int v163; // [esp+4Ch] [ebp-80h] int v164; // [esp+50h] [ebp-7Ch] double v165; // [esp+50h] [ebp-7Ch] int v166; // [esp+50h] [ebp-7Ch] unsigned __int8 *i; // [esp+58h] [ebp-74h] int v168; // [esp+58h] [ebp-74h] int v169; // [esp+5Ch] [ebp-70h] int v170; // [esp+5Ch] [ebp-70h] int v171; // [esp+60h] [ebp-6Ch] int v172; // [esp+64h] [ebp-68h] int v173; // [esp+68h] [ebp-64h] int v174; // [esp+6Ch] [ebp-60h] int v175; // [esp+70h] [ebp-5Ch] int *v176; // [esp+74h] [ebp-58h] int v177; // [esp+78h] [ebp-54h] void *Src; // [esp+7Ch] [ebp-50h] int v179; // [esp+80h] [ebp-4Ch] int v180; // [esp+84h] [ebp-48h] int v181; // [esp+88h] [ebp-44h] int v182; // [esp+94h] [ebp-38h] BYREF int v183; // [esp+98h] [ebp-34h] BYREF int v184; // [esp+9Ch] [ebp-30h] BYREF int v185; // [esp+A0h] [ebp-2Ch] BYREF int v186; // [esp+A4h] [ebp-28h] BYREF unsigned __int8 *v187; // [esp+A8h] [ebp-24h] BYREF size_t v188; // [esp+ACh] [ebp-20h] BYREF decimal_point = localeconv()->decimal_point; v184 = 0; v153 = strlen(decimal_point); v188 = 0; Val = *a3; v187 = a1; v6 = a1; while ( 2 ) { v7 = *v6; switch ( *v6 ) { case 0u: goto LABEL_12; case 9u: case 0xAu: case 0xBu: case 0xCu: case 0xDu: case 0x20u: v187 = ++v6; continue; case 0x2Bu: v173 = 0; goto LABEL_225; case 0x2Du: v173 = 1; LABEL_225: v187 = v6 + 1; v7 = v6[1]; if ( v7 ) { ++v6; LABEL_4: v139 = 0; if ( v7 == 48 ) { v22 = v6 + 1; if ( (v6[1] & 0xDF) == 88 ) { v184 = __gethex_D2A(&v187, a3, a4, (int **)&v188, v173); if ( v184 != 6 ) goto LABEL_79; v187 = a1; v14 = v188; if ( a2 ) *a2 = a1; goto LABEL_35; } do { v187 = v22; v6 = v22; v7 = *v22++; } while ( v7 == 48 ); v14 = 0; if ( !v7 ) goto LABEL_31; v139 = 1; } v180 = a3[4]; v8 = v7; if ( (unsigned int)(v7 - 48) > 9 ) { v142 = 0; v11 = v6; v9 = 0; v156 = 0; } else { v146 = decimal_point; v9 = 0; v142 = 0; v10 = 0; do { if ( v9 <= 8 ) { v10 = v8 + 10 * v10 - 48; } else if ( v9 <= 15 ) { v142 = v8 + 10 * v142 - 48; } v11 = &v6[++v9]; v187 = &v6[v9]; v8 = (char)v6[v9]; v7 = v6[v9]; } while ( (unsigned int)(v8 - 48) <= 9 ); v156 = v10; decimal_point = v146; } if ( *decimal_point == v7 ) { if ( !decimal_point[1] ) { v82 = 1; LABEL_182: v83 = &v11[v82]; v187 = v83; v8 = (char)*v83; if ( v9 ) { v84 = v8 - 48; v147 = v9; v13 = 0; for ( i = 0; (unsigned int)(v8 - 48) <= 9; v84 = v8 - 48 ) { v163 = v84; ++v13; v152 = v187; if ( v84 ) { i = &i[(_DWORD)v13]; v124 = v147 + 1; if ( v13 == (unsigned __int8 *)1 ) { v128 = v147++; } else { v125 = (int)&v13[v147]; v166 = v9; v170 = v84; v126 = v147; v127 = v142; v128 = v125 - 1; v147 = v125; v129 = v156; while ( 1 ) { v130 = v126; v126 = v124; if ( v130 <= 8 ) { v129 *= 10; } else if ( v124 <= 16 ) { v127 *= 10; } if ( v124 == v128 ) break; ++v124; } v156 = v129; v9 = v166; v142 = v127; v84 = v170; } if ( v128 <= 8 ) { LABEL_223: v13 = 0; v156 = v163 + 10 * v156; } else { v13 = 0; if ( v147 <= 16 ) v142 = v84 + 10 * v142; } } v187 = v152 + 1; v8 = (char)v152[1]; } } else { if ( v8 == 48 ) { v104 = 1 - (_DWORD)v83; do { v13 = &v83[v104]; v187 = ++v83; v8 = (char)*v83; } while ( v8 == 48 ); } else { v13 = 0; } if ( (unsigned int)(v8 - 49) <= 8 ) { v6 = v187; v147 = 1; v163 = v8 - 48; v152 = v187; i = v13 + 1; goto LABEL_223; } i = 0; v147 = 0; } v150 = 1; LABEL_20: if ( (v8 & 0xFFFFFFDF) != 69 ) { v158 = 0; goto LABEL_22; } if ( !(v139 | (unsigned int)v13 | v147) ) goto LABEL_30; a1 = v187++; v8 = (char)a1[1]; if ( (_BYTE)v8 == 43 ) { v164 = 0; } else { if ( (_BYTE)v8 != 45 ) { v164 = 0; goto LABEL_41; } v164 = 1; } v187 = a1 + 2; v8 = (char)a1[2]; LABEL_41: if ( (unsigned int)(v8 - 48) > 9 ) { v158 = 0; v187 = a1; } else { if ( v8 == 48 ) { v15 = v187 + 1; do { v187 = v15; v8 = (char)*v15++; } while ( v8 == 48 ); } v158 = 0; if ( (unsigned int)(v8 - 49) <= 8 ) { v16 = v187; v17 = v8 - 48; v159 = v187++; v8 = (char)v159[1]; if ( (unsigned int)(v8 - 48) > 9 ) goto LABEL_289; v18 = v16 + 2; do { v187 = v18; v19 = v18++; v17 = v8 + 10 * v17 - 48; v8 = (char)*(v18 - 1); } while ( (unsigned int)(v8 - 48) <= 9 ); v20 = v19 - v159; v160 = 19999; if ( v20 <= 8 ) { LABEL_289: v121 = 19999; if ( v17 <= 19999 ) v121 = v17; v160 = v121; } v21 = -v160; if ( !v164 ) v21 = v160; v158 = v21; } } LABEL_22: if ( !v147 ) { if ( (unsigned int)v13 | v139 ) goto LABEL_79; if ( v150 ) goto LABEL_30; if ( v8 != 105 ) { if ( v8 > 105 ) { if ( v8 != 110 ) goto LABEL_30; LABEL_29: if ( !__match_D2A((char **)&v187, "an") ) goto LABEL_30; v184 = 4; *a4 = a3[2] + 1; if ( *v187 != 40 ) goto LABEL_79; v184 = __hexnan_D2A(&v187, a3, (int *)a5); LABEL_233: *a4 = a3[2] + 1; v14 = v188; goto LABEL_31; } if ( v8 != 73 ) { if ( v8 != 78 ) { LABEL_30: v184 = 6; v187 = a1; v14 = v188; goto LABEL_31; } goto LABEL_29; } } if ( !__match_D2A((char **)&v187, "nf") ) goto LABEL_30; --v187; if ( !__match_D2A((char **)&v187, "inity") ) ++v187; v184 = 3; goto LABEL_233; } v184 = 1; v175 = v158 - (_DWORD)i; v30 = a3[3] & 3; v172 = v30 - v173; if ( v30 != 2 ) { v172 = v173 + 1; if ( v30 != 3 ) v172 = v30 == 0; } v31 = 16; v32 = (long double)(unsigned int)v156; if ( !v9 ) v9 = v147; if ( v147 <= 16 ) v31 = v147; v140 = v32; if ( v147 > 9 ) v140 = v32 * dbl_55ABB8[v31] + (long double)(unsigned int)v142; if ( Val > 53 || v147 > 15 ) { v37 = v158 - (_DWORD)i; goto LABEL_106; } if ( !v175 ) { v36 = rvOK_constprop_0_isra_0(a3, a4, (char *)a5, v140, 1, v172, &v184); goto LABEL_98; } if ( v175 <= 0 ) { v37 = v158 - (_DWORD)i; if ( v175 < -22 ) goto LABEL_106; Str = v140 / __tens_D2A[(_DWORD)&i[-v158]]; } else { if ( v175 <= 22 ) { _EDX = LODWORD(v140); if ( LODWORD(v140) ) { __asm { tzcnt ecx, edx } v143 = (void *)(53 - _ECX); } else { _ECX = HIDWORD(v140) | 0x100000; __asm { tzcnt ecx, ecx } v143 = (void *)(21 - _ECX); } v138 = v172; Size = (int)v143 + fivesbits[v175] <= 53; Str = v140 * __tens_D2A[v175]; v140 = Str; goto LABEL_97; } v40 = v175 + v147 - v31; if ( 37 - v147 < v175 ) goto LABEL_107; Str = v140 * __tens_D2A[15 - v147] * __tens_D2A[v175 - (15 - v147)]; } Size = 0; v140 = Str; v138 = v172; LABEL_97: v36 = rvOK_constprop_0_isra_0(a3, a4, (char *)a5, Str, Size, v138, &v184); LABEL_98: if ( v36 ) goto LABEL_79; v37 = 0; LABEL_106: v40 = v37 + v147 - v31; if ( v40 <= 0 ) { if ( v40 ) { v85 = -v40; if ( (v85 & 0xF) != 0 ) v140 = v140 / __tens_D2A[v85 & 0xF]; v40 = v85 & 0xFFFFFFF0; if ( v40 ) { v86 = v40 >> 4; if ( v40 <= 255 ) { v90 = 0; } else { v87 = v40 >> 4; v88 = 0; do { v87 -= 16; v89 = HIDWORD(v140) >> 20; HIDWORD(v140) = HIDWORD(v140) & 0x800FFFFF | 0x3FF00000; v90 = v88 + (v89 & 0x7FF) - 1023; v88 = v90; v140 = v140 * 1.0e-256; } while ( v87 > 15 ); v86 &= 0xFu; } v91 = (HIDWORD(v140) >> 20) & 0x7FF; HIDWORD(v140) = HIDWORD(v140) & 0x800FFFFF | 0x3FF00000; v40 = v90 + v91 - 1023; if ( v86 ) { v92 = 0; v93 = 0; v94 = v140; do { if ( (v86 & 1) != 0 ) { v94 = v94 * __tinytens_D2A[v93]; v92 = 1; } ++v93; v86 >>= 1; } while ( v86 ); if ( !v92 ) v94 = v140; v41 = v94; goto LABEL_111; } } } goto LABEL_110; } LABEL_107: if ( (v40 & 0xF) != 0 ) v140 = v140 * __tens_D2A[v40 & 0xF]; v40 &= 0xFFFFFFF0; if ( v40 ) { v95 = v40 >> 4; if ( v40 <= 255 ) { v99 = 0; } else { v96 = v40 >> 4; v97 = 0; do { v96 -= 16; v98 = HIDWORD(v140) >> 20; HIDWORD(v140) = HIDWORD(v140) & 0x800FFFFF | 0x3FF00000; v99 = v97 + (v98 & 0x7FF) - 1023; v97 = v99; v140 = v140 * 1.0e256; } while ( v96 > 15 ); v95 &= 0xFu; } v100 = (HIDWORD(v140) >> 20) & 0x7FF; HIDWORD(v140) = HIDWORD(v140) & 0x800FFFFF | 0x3FF00000; v41 = v140; v40 = v99 + v100 - 1023; if ( v95 ) { v101 = v140; v102 = 0; v103 = 0; do { if ( (v95 & 1) != 0 ) { v101 = v101 * __bigtens_D2A[v103]; v102 = 1; } ++v103; v95 >>= 1; } while ( v95 ); if ( !v102 ) v101 = v140; v41 = v101; } goto LABEL_111; } LABEL_110: v41 = v140; LABEL_111: v42 = __d2b_D2A(v41, &v186, &v185); v43 = v186 + v40; v188 = (size_t)v42; v44 = (int)v42; v45 = v185; v186 = v43; v46 = v185 - Val; if ( v185 - Val > 0 ) { __rshift_D2A(v44, v185 - Val); v45 = Val; v186 += v46; v43 = v186; v185 = Val; } v47 = v45 + v43 - Val; v181 = v47; if ( a3[2] + 1 < v47 ) { v151 = 0; goto LABEL_264; } v48 = a3[1]; v171 = v48; if ( v47 >= v48 ) { v151 = 0; } else { v49 = v43 - v48; if ( v43 - v48 > 0 ) { v105 = __lshift_D2A((int *)v188, v43 - v48); v185 += v49; v188 = (size_t)v105; } else if ( v43 != v48 ) { v50 = v45 + v49; v14 = v188; v185 = v50; if ( v50 > 0 ) { __rshift_D2A(v188, v48 - v43); } else { if ( v50 < -1 ) { *(_DWORD *)(v188 + 16) = 0; *(_DWORD *)(v14 + 20) = 0; *a4 = v48; if ( !v180 ) { v29 = 80; goto LABEL_78; } goto LABEL_260; } v185 = 1; *(_DWORD *)(v188 + 16) = 1; *(_DWORD *)(v14 + 20) = 1; } } v186 = v171; if ( v180 ) { v51 = v181; v151 = 1; v181 = v171; if ( v51 + 1 < v171 ) { v14 = v188; *(_DWORD *)(v188 + 16) = 0; *(_DWORD *)(v14 + 20) = 0; *a4 = v171; goto LABEL_260; } } else { v151 = 1; v181 = v171; } } v52 = __s2b_D2A((int)v6, v9, v147, v156, v153); v53 = 0; v149 = 0; v54 = v52; v176 = v52; v55 = (int)&i[-v158]; if ( v175 >= 0 ) v55 = 0; if ( v175 >= 0 ) v53 = v158 - (_DWORD)i; v157 = v55; Src = v54 + 3; v174 = v53; v177 = Val + 1; while ( 1 ) { v144 = __Balloc_D2A(v176[1]); memcpy(v144 + 3, Src, 4 * v176[4] + 8); v56 = __Balloc_D2A(*(_DWORD *)(v188 + 4)); memcpy(v56 + 3, (const void *)(v188 + 12), 4 * *(_DWORD *)(v188 + 16) + 8); v57 = v185; v58 = v186; v59 = v186 + v149; v154 = v185 - v149; v141 = __i2b_D2A(1); if ( v59 < 0 ) { v60 = v174 - v59; v61 = v157; } else { v60 = v174; v61 = v157 + v59; } v62 = v58 + v57 - Val; v63 = v177 - v154; if ( v171 > v62 ) v63 = v177 - v154 + v62 - v171; v64 = v61 + v63; v65 = v60 + v63; v66 = v61 + v63 <= v60 + v63; v67 = v60 + v63; if ( v66 ) v67 = v61 + v63; if ( v61 <= v67 ) v67 = v61; if ( v67 > 0 ) { v64 -= v67; v65 -= v67; v61 -= v67; } if ( v157 > 0 ) { v141 = __pow5mult_D2A(v141, v157); v161 = __mult_D2A((int)v141, (int)v56); __Bfree_D2A(v56); v56 = v161; } if ( v64 - v149 > 0 ) { v56 = __lshift_D2A(v56, v64 - v149); } else if ( v64 != v149 ) { __rshift_D2A((int)v56, v149 - v64); } if ( v175 > 0 ) v144 = __pow5mult_D2A(v144, v174); if ( v65 > 0 ) v144 = __lshift_D2A(v144, v65); if ( v61 > 0 ) v141 = __lshift_D2A(v141, v61); v68 = __diff_D2A((int)v56, (int)v144); v69 = v68; if ( v68[4] <= 1 && !v68[5] ) goto LABEL_62; v70 = v68[3]; v68[3] = 0; v71 = __cmp_D2A((int)v68, (int)v141); if ( v172 && v71 <= 0 ) { v72 = v172 & 1; v149 = v70 ^ v72; if ( v72 == v70 ) { v184 = v72 == 0 ? 33 : 17; goto LABEL_62; } if ( v70 ) { v184 = 33; v155 = 1.0; v168 = 0; v165 = 1.0; v179 = 32; v162 = 0; goto LABEL_162; } v184 = 17; if ( v181 != v171 ) { v73 = Val; v74 = (int *)v188; if ( Val > 31 ) { while ( !*(_DWORD *)(v188 + 4 * v70 + 20) ) { v73 -= 32; ++v70; if ( v73 <= 31 ) goto LABEL_266; } } else { v73 = Val; LABEL_266: if ( v73 <= 1 ) goto LABEL_268; v117 = (int *)(v188 + 4 * v70 + 20); _EBX = *v117; __asm { tzcnt ecx, ebx } *v117 = (unsigned int)*v117 >> _ECX; if ( v73 - 1 <= _ECX ) { LABEL_268: v186 = v181 - 1; v185 = Val; v188 = (size_t)__set_ones_D2A(v74, Val); goto LABEL_62; } } } } else { if ( v71 < 0 ) { if ( v70 ) { v184 = 17; goto LABEL_62; } v184 = 33; if ( v154 > 1 || v181 == v171 || (v151 & 1) != 0 ) { LABEL_62: if ( v151 ) goto LABEL_63; goto LABEL_277; } v69 = __lshift_D2A(v69, 1); if ( __cmp_D2A((int)v69, (int)v141) <= 0 ) goto LABEL_277; v184 = 17; v151 = 0; LABEL_303: v186 -= Val; v185 = Val; v188 = (size_t)__set_ones_D2A((int *)v188, Val); goto LABEL_62; } if ( !v71 ) { if ( v70 ) { if ( !v151 ) goto LABEL_344; v122 = v188; v123 = (_DWORD *)(v188 + 20); while ( v188 + 20 + 4 * (v185 >> 5) > (unsigned int)v123 ) { if ( *v123++ != -1 ) goto LABEL_344; } if ( (v185 & 0x1F) != 0 && (*v123 | (-1 << (v185 & 0x1F))) != -1 ) { LABEL_344: v184 = 17; goto LABEL_335; } *(_DWORD *)(v188 + 16) = 1; *(_DWORD *)(v122 + 20) = 1; v185 = 1; v186 = Val + v171 - 1; v120 = v151; v184 = 33; LABEL_278: v151 = Val - v120; if ( Val != v120 ) { if ( Val - v120 <= 0 ) __rshift_D2A(v188, v120 - Val); else v188 = (size_t)__lshift_D2A((int *)v188, v151); v23 = v186 - v151; v151 = 0; v186 = v23; LABEL_64: *a4 = v23; __Bfree_D2A(v56); __Bfree_D2A(v144); __Bfree_D2A(v141); __Bfree_D2A(v176); __Bfree_D2A(v69); if ( a3[2] >= v186 ) goto LABEL_265; v24 = a3[3] & 3; switch ( v24 ) { case 2: if ( !v173 ) goto LABEL_264; break; case 3: if ( v173 ) goto LABEL_264; break; case 1: LABEL_264: v184 = 163; *(_DWORD *)(v188 + 16) = 0; *_errno() = 34; *a4 = a3[2] + 1; LABEL_265: v14 = v188; LABEL_73: if ( !v151 ) goto LABEL_31; if ( !v180 ) { v28 = v184 & 0x30; v29 = v184 & 0xFFFFFFF8; if ( *(int *)(v14 + 16) > 0 ) v29 |= 2u; v184 = v29; if ( v28 ) { LABEL_78: v184 = v29 | 0x40; *_errno() = 34; } LABEL_79: v14 = v188; LABEL_31: if ( a2 ) *a2 = v187; if ( v173 ) v184 |= 8u; LABEL_35: if ( v14 ) { __copybits_D2A((char *)a5, Val, v14); __Bfree_D2A((void *)v188); } return v184; } LABEL_260: *(_DWORD *)(v14 + 16) = 0; v184 = 80; *_errno() = 34; v14 = v188; goto LABEL_31; default: break; } __Bfree_D2A((void *)v188); v188 = 0; v184 = 17; *a4 = a3[2]; v25 = *a3; v26 = (char *)a5 + 4 * ((*a3 + 31) >> 5); if ( a5 < v26 ) memset(a5, 255, 4 * ((unsigned int)&v26[~(unsigned int)a5] >> 2) + 4); v27 = v25 & 0x1F; if ( v27 ) *((_DWORD *)v26 - 1) >>= 32 - v27; v14 = 0; goto LABEL_73; } LABEL_63: v23 = v186; goto LABEL_64; } if ( v154 != 1 ) { v184 = 33; LABEL_335: if ( Val <= v154 || (v151 & 1) != 0 ) { v131 = v188; if ( (*(_BYTE *)(v188 + 20) & 1) != 0 ) { if ( v70 ) { v134 = (size_t)__increment_D2A((int *)v188); v135 = *(_DWORD *)(v134 + 16); v188 = v134; _BitScanReverse(&v134, *(_DWORD *)(v134 + 4 * v135 + 16)); if ( (-v185 & 0x1F) != (v134 ^ 0x1F) ) ++v185; v184 = 33; } else if ( v154 == 1 ) { LABEL_330: *(_DWORD *)(v131 + 16) = 0; v184 = 80; v186 = v171; } else { __decrement_D2A(v188); v184 = 17; } } goto LABEL_62; } LABEL_277: v120 = v185; goto LABEL_278; } v184 = 1; if ( v181 == v171 ) { v184 = 33; if ( *(_DWORD *)(v188 + 16) == 1 ) { v133 = 1; if ( *(_DWORD *)(v188 + 20) != 1 ) v133 = v180; v180 = v133; } goto LABEL_62; } goto LABEL_303; } v106 = __ratio_D2A((int)v69, (int)v141); if ( v106 > 2.0 ) { v112 = v106 * 0.5; v179 = v70 == 0 ? 32 : 16; v162 = v70 == 0; v165 = v112; if ( v112 >= 2147483647.0 ) { v168 = 0; v155 = v112; goto LABEL_257; } v168 = (int)v112; v113 = (long double)(int)v112; v155 = v113; v114 = v112 - v113; v165 = v114; if ( v172 == 1 ) { if ( v70 ) goto LABEL_257; } else { if ( v172 != 2 ) { if ( v114 < 0.5 ) { LABEL_257: v149 = 0; goto LABEL_162; } LABEL_274: ++v168; v179 = 48 - v179; v155 = (double)v168; goto LABEL_257; } if ( !v70 ) goto LABEL_257; } if ( v165 <= 0.0 ) goto LABEL_257; goto LABEL_274; } if ( v70 ) { v168 = 0; v155 = 1.0; v179 = 32; v165 = 1.0; v149 = 0; v162 = 0; goto LABEL_162; } v149 = 0; } if ( v154 <= 1 && (v151 & 1) != 0 ) { v151 = 1; v131 = v188; goto LABEL_330; } v168 = 0; v155 = 1.0; v179 = 16; v165 = 1.0; v162 = 1; LABEL_162: v169 = v185 + v186; if ( v185 < Val && (v151 & 1) == 0 ) { v115 = Val - v185; v116 = __lshift_D2A((int *)v188, Val - v185); v186 -= v115; v188 = (size_t)v116; v185 = Val; } v75 = __d2b_D2A(v155, &v182, &v183); if ( v182 < 0 ) { __rshift_D2A((int)v75, -v182); } else if ( v182 ) { v75 = __lshift_D2A(v75, v182); } v76 = (_DWORD *)v188; if ( v162 ) { v77 = __diff_D2A(v188, (int)v75); v188 = (size_t)v77; if ( !v151 ) { v78 = v76[4]; if ( v77[4] <= v78 - 1 || (_BitScanReverse(&v79, v77[v78 + 4]), _BitScanReverse((unsigned int *)&v78, v76[v78 + 4]), (v78 ^ 0x1F) < (int)(v79 ^ 0x1F)) ) { if ( v181 != v171 ) { v111 = __lshift_D2A(v77, 1); --v186; --v181; v188 = (size_t)v111; __Bfree_D2A(v75); __Bfree_D2A(v76); LABEL_251: v151 = 0; v149 = __trailz_D2A(v188); goto LABEL_180; } --v185; v151 = v162; } } } else { v107 = __sum_D2A((int *)v188, v75); v108 = v107[4]; v188 = (size_t)v107; if ( v76[4] <= v108 - 1 || (_BitScanReverse(&v109, v107[v108 + 4]), _BitScanReverse((unsigned int *)&v108, v76[v108 + 4]), (v108 ^ 0x1F) > (int)(v109 ^ 0x1F)) ) { if ( v151 ) { v110 = ++v185 == Val; v151 = !v110; } else { __rshift_D2A((int)v107, 1); ++v186; ++v181; v168 = 0; } } } __Bfree_D2A(v75); __Bfree_D2A(v76); if ( v149 ) goto LABEL_62; if ( v186 + v185 == v169 && v168 ) { v80 = v155 * 5.0e-16; v81 = v165 - 0.5; if ( -v80 <= v81 ) { if ( v81 > v80 && 1.0 - v80 > v165 ) { LABEL_61: v184 |= v179; goto LABEL_62; } } else if ( v165 > v80 ) { goto LABEL_61; } } if ( !v151 ) goto LABEL_251; LABEL_180: __Bfree_D2A(v56); __Bfree_D2A(v144); __Bfree_D2A(v141); __Bfree_D2A(v69); } } v148 = v8; v38 = 1; v39 = decimal_point[1]; while ( v11[v38] == v39 ) { v39 = decimal_point[++v38]; if ( !v39 ) { v82 = v38; goto LABEL_182; } } v8 = v148; } v147 = v9; v13 = 0; i = 0; v150 = 0; goto LABEL_20; } LABEL_12: result = 6; v184 = 6; if ( !a2 ) return result; *a2 = a1; return v184; default: v173 = 0; goto LABEL_4; } } } // 55A940: using guessed type int fivesbits[23]; // 55ABB8: using guessed type double dbl_55ABB8[4]; // 55AC00: using guessed type double __tens_D2A[24]; // 55ACC0: using guessed type double __tinytens_D2A[4]; // 55AD00: using guessed type double __bigtens_D2A[4]; //----- (004651A0) -------------------------------------------------------- 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; // edi unsigned int *v16; // ebx 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 * ((v23 - (unsigned int)v24 - 21) >> 2) + 4; if ( v23 < (unsigned int)v24 + 21 ) v14 = 4; v15 = v23 + 4 * (v25 - v26); v16 = (unsigned int *)((char *)v27 + v14); for ( i = (char *)v28 + v14; v15 > (unsigned int)i; v9 = HIWORD(v20) ) { v18 = *v16; i += 4; ++v16; 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(v24); v24 = v22; v25 = v22[4]; } v24[4] = v25 + 1; v24[v25 + 5] = 1; } return v24; } //----- (00465330) -------------------------------------------------------- unsigned int __usercall __m16m@(unsigned __int16 a1@, int a2@, int a3@) { int v3; // edi unsigned __int16 *v4; // ecx char *v5; // edx unsigned int result; // eax int v7; // eax unsigned int v8; // eax unsigned int v9; // ebx int v10; // ebp unsigned int v11; // eax char v13[10]; // [esp+16h] [ebp-1Eh] BYREF int v14; // [esp+20h] [ebp-14h] BYREF v3 = a1; v4 = (unsigned __int16 *)(a2 + 16); v14 = 0; v5 = (char *)&v14 + 2; do { while ( 1 ) { v7 = *v4; v5 -= 2; --v4; if ( (_WORD)v7 ) break; result = 0; *((_WORD *)v5 - 1) = 0; if ( v5 == v13 ) goto LABEL_5; } v8 = v3 * v7; v9 = *((unsigned __int16 *)v5 + 1) + (unsigned __int16)v8; v10 = *(unsigned __int16 *)v5; *((_WORD *)v5 + 1) = v9; v11 = HIWORD(v9) + v10 + HIWORD(v8); *(_WORD *)v5 = v11; result = HIWORD(v11); *((_WORD *)v5 - 1) = result; } while ( v5 != v13 ); LABEL_5: *(_DWORD *)(a3 + 4) = *(_DWORD *)v5; *(_DWORD *)(a3 + 8) = *((_DWORD *)v5 + 1); *(_DWORD *)(a3 + 12) = *((_DWORD *)v5 + 2); *(_WORD *)(a3 + 16) = *((_WORD *)v5 + 6); return result; } //----- (004653C0) -------------------------------------------------------- BOOL __usercall __eshift_part_0@(__int16 *a1@, int a2@) { int v2; // esi void *v4; // ebp const void *v5; // eax int v6; // esi const void *Src; // edi __int16 *v8; // edi __int16 *i; // ecx __int16 *v10; // ebx int v11; // edx __int16 v12; // ax __int16 *v14; // edx __int16 v15; // di unsigned __int16 v16; // ax __int16 v17; // bp int v18; // ecx _WORD *v19; // edx unsigned __int16 v20; // bp __int16 *v21; // edi __int16 *v22; // eax __int16 v23; // dx unsigned int v24; // eax int v25; // esi unsigned __int16 v26; // ax int v27; // edi __int16 *v28; // ecx int v29; // edx __int16 v30; // ax __int16 v31; // cx __int16 *v32; // edx unsigned __int16 v33; // ax __int16 v34; // bp char v35; // [esp+14h] [ebp-28h] int v36; // [esp+14h] [ebp-28h] _WORD *v37; // [esp+14h] [ebp-28h] unsigned __int16 v38; // [esp+1Ah] [ebp-22h] __int16 *v39; // [esp+1Ch] [ebp-20h] v2 = a2; if ( a2 < 0 ) { v18 = -a2; v36 = -a2; if ( a2 >= -15 ) { if ( a2 >= -7 ) { v21 = a1 + 2; v38 = 0; goto LABEL_28; } v26 = 0; v21 = a1 + 2; } else { v19 = a1 + 8; v20 = 0; v21 = a1 + 2; do { v37 = v19; v20 |= a1[8]; v22 = v19; do { v23 = *--v22; v22[1] = v23; } while ( v22 != v21 ); v18 -= 16; v19 = v37; a1[2] = 0; } while ( v18 > 15 ); v38 = v20; v24 = -((-16 - v2) & 0xFFFFFFF0); if ( v2 >= -15 ) v24 = 0; v25 = -16 - v2 + v24; v26 = v20; v36 = v25; if ( v25 <= 7 ) { LABEL_27: if ( !v36 ) return v38 != 0; LABEL_28: v39 = v21; v27 = v38; do { v28 = v39; v29 = 0; v38 = v27 | a1[8] & 1; v27 |= a1[8] & 1; do { if ( (*v28 & 1) != 0 ) v29 |= 1u; v30 = (unsigned __int16)*v28 >> 1; if ( (v29 & 2) != 0 ) v30 |= 0x8000u; ++v28; v29 *= 2; *(v28 - 1) = v30; } while ( v28 != a1 + 9 ); --v36; } while ( v36 ); return v38 != 0; } } v31 = 0; v38 = v26 | *((unsigned __int8 *)a1 + 16); v32 = v21; do { v33 = *v32; v34 = v31; ++v32; v31 = v33 << 8; *(v32 - 1) = v34 | HIBYTE(v33); } while ( v32 != a1 + 9 ); v36 -= 8; goto LABEL_27; } v4 = a1 + 2; v5 = a1 + 3; if ( a2 > 15 ) { v35 = a2; v6 = a2; Src = v5; do { v6 -= 16; memmove(v4, Src, 0xCu); a1[8] = 0; } while ( v6 > 15 ); v2 = v35 & 0xF; } if ( v2 > 7 ) { v14 = a1 + 8; v15 = 0; do { v16 = *v14; v17 = v15; --v14; v15 = HIBYTE(v16); v14[1] = v17 | (v16 << 8); } while ( v14 != a1 + 1 ); v2 -= 8; } v8 = a1 + 8; for ( i = a1 + 1; v2; --v2 ) { v10 = v8; v11 = 0; do { if ( *v10 < 0 ) v11 |= 1u; v12 = 2 * *v10; if ( (v11 & 2) != 0 ) v12 |= 1u; --v10; v11 *= 2; v10[1] = v12; } while ( v10 != i ); } return 0; } //----- (00465600) -------------------------------------------------------- __int16 *__cdecl __emovi(int a1, int a2) { __int16 *result; // eax __int16 v3; // dx int v4; // edx __int16 v5; // di int v6; // edx int v7; // edx __int16 v8; // bx *(_WORD *)a2 = *(__int16 *)(a1 + 10) >> 15; result = (__int16 *)(a1 + 8); v3 = *(_WORD *)(a1 + 10) & 0x7FFF; *(_WORD *)(a2 + 2) = v3; if ( v3 == 0x7FFF ) { if ( (*(_WORD *)(a1 + 10) & 0x7FFF) == 0x7FFF ) { v6 = a1; while ( 1 ) { v6 += 2; if ( *(_WORD *)(v6 - 2) ) break; if ( a1 + 10 == v6 ) goto LABEL_6; } v7 = a2 + 6; *(_WORD *)(a2 + 4) = 0; do { v8 = *result--; v7 += 2; *(_WORD *)(v7 - 2) = v8; } while ( (__int16 *)(a1 - 4) != result ); } else { LABEL_6: *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 12) = 0; *(_WORD *)(a2 + 16) = 0; } } else { v4 = a2 + 6; *(_WORD *)(a2 + 4) = 0; do { v5 = *result--; v4 += 2; *(_WORD *)(v4 - 2) = v5; } while ( result != (__int16 *)(a1 - 2) ); *(_WORD *)(a2 + 16) = 0; } return result; } //----- (004656D0) -------------------------------------------------------- unsigned int __cdecl __eaddm(int a1, int a2) { int v2; // edx int v3; // ecx unsigned int result; // eax v2 = 7; v3 = 0; do { result = v3 + *(unsigned __int16 *)(a2 + 2 * v2 + 2) + *(unsigned __int16 *)(a1 + 2 * v2 + 2); *(_WORD *)(a2 + 2 * v2 + 2) = result; v3 = HIWORD(result) & 1; --v2; } while ( v2 ); return result; } //----- (00465710) -------------------------------------------------------- unsigned int __cdecl __esubm(int a1, int a2) { int v2; // edx int v3; // ecx unsigned int result; // eax v2 = 7; v3 = 0; do { result = *(unsigned __int16 *)(a2 + 2 * v2 + 2) - v3 - *(unsigned __int16 *)(a1 + 2 * v2 + 2); *(_WORD *)(a2 + 2 * v2 + 2) = result; v3 = HIWORD(result) & 1; --v2; } while ( v2 ); return result; } //----- (00465750) -------------------------------------------------------- BOOL __cdecl __edivm(int a1, int *a2) { int v2; // edx int v3; // eax _WORD *v4; // ecx __int16 v5; // ax unsigned int v6; // eax unsigned __int16 v7; // ax int v8; // eax unsigned __int16 v9; // bx int v10; // edx int v11; // ecx unsigned int v12; // eax int *v13; // esi __int16 v14; // ax int v16; // ecx char *v17; // edx int v18; // esi int v19; // ebx int v20; // eax unsigned int v21; // ecx int v22; // eax unsigned __int16 v23; // bx int v24; // ecx char *v25; // edx int v26; // eax unsigned int v27; // ecx char *v28; // [esp+14h] [ebp-68h] __int16 v29; // [esp+24h] [ebp-58h] unsigned int v30; // [esp+28h] [ebp-54h] int v31; // [esp+3Ah] [ebp-42h] int v32; // [esp+3Eh] [ebp-3Eh] BYREF int v33; // [esp+42h] [ebp-3Ah] int v34; // [esp+46h] [ebp-36h] __int16 v35; // [esp+4Ah] [ebp-32h] _WORD v36[1]; // [esp+4Ch] [ebp-30h] BYREF char v37[14]; // [esp+4Eh] [ebp-2Eh] BYREF char v38[32]; // [esp+5Ch] [ebp-20h] BYREF v2 = 0; v32 = 0; v33 = 0; v3 = *a2; v34 = 0; v35 = 0; v4 = a2 + 1; v31 = v3; do { if ( (*v4 & 1) != 0 ) v2 |= 1u; v5 = *v4 >> 1; if ( (v2 & 2) != 0 ) v5 |= 0x8000u; ++v4; v2 *= 2; *(v4 - 1) = v5; } while ( (_WORD *)((char *)a2 + 18) != v4 ); v30 = *(unsigned __int16 *)(a1 + 6); v28 = (char *)&v32; do { v6 = *((unsigned __int16 *)a2 + 3) + (*((unsigned __int16 *)a2 + 2) << 16); if ( 0xFFFF * v30 < v6 ) { v7 = -1; v29 = -1; } else { v29 = v6 / v30; v7 = v29; } __m16m(v7, a1, (int)v36); v8 = 2; while ( 1 ) { v9 = *((_WORD *)a2 + v8); if ( v36[v8] != v9 ) break; if ( ++v8 == 9 ) goto LABEL_13; } if ( v36[v8] > v9 ) { v16 = 0; v17 = v38; v18 = a1 + 16; v19 = a1 + 16; do { v20 = *(unsigned __int16 *)v17; v17 -= 2; v19 -= 2; v21 = v20 - v16 - *(unsigned __int16 *)(v19 + 2); *((_WORD *)v17 + 1) = v21; v16 = HIWORD(v21) & 1; } while ( v17 != v37 ); v22 = 2; while ( 1 ) { v23 = *((_WORD *)a2 + v22); if ( v36[v22] != v23 ) break; if ( ++v22 == 9 ) goto LABEL_26; } if ( v36[v22] <= v23 ) { LABEL_26: --v29; goto LABEL_13; } v29 -= 2; v24 = 0; v25 = v38; do { v26 = *(unsigned __int16 *)v25; v25 -= 2; v18 -= 2; v27 = v26 - v24 - *(unsigned __int16 *)(v18 + 2); *((_WORD *)v25 + 1) = v27; v24 = HIWORD(v27) & 1; } while ( v25 != v37 ); } LABEL_13: v10 = 7; v11 = 0; do { v12 = *((unsigned __int16 *)a2 + v10 + 1) - v11 - (unsigned __int16)v36[v10 + 1]; *((_WORD *)a2 + v10 + 1) = v12; v11 = HIWORD(v12) & 1; --v10; } while ( v10 ); *(_WORD *)v28 = v29; memmove(a2 + 1, (char *)a2 + 6, 0xCu); v28 += 2; *((_WORD *)a2 + 8) = 0; } while ( v28 != (char *)v36 ); v13 = a2 + 1; v14 = 0; do { v13 = (int *)((char *)v13 + 2); v14 |= *((_WORD *)v13 - 1); } while ( (int *)((char *)a2 + 18) != v13 ); *a2 = v31; a2[1] = v32; a2[2] = v33; a2[3] = v34; *((_WORD *)a2 + 8) = v35; return v14 != 0; } // 465750: using guessed type _WORD var_30[1]; //----- (004659F0) -------------------------------------------------------- int __cdecl __emulm(int a1, int a2) { unsigned __int16 v2; // bp int v3; // edx unsigned __int16 *v4; // ebx unsigned __int16 v5; // ax int v6; // esi __int16 *v7; // ecx char *v8; // edx int v9; // edi int v10; // eax unsigned int v11; // esi char v13[2]; // [esp+2Ch] [ebp-40h] BYREF char v14; // [esp+2Eh] [ebp-3Eh] BYREF char v15; // [esp+3Ch] [ebp-30h] BYREF int v16; // [esp+3Eh] [ebp-2Eh] int Src; // [esp+42h] [ebp-2Ah] BYREF int v18; // [esp+46h] [ebp-26h] int v19; // [esp+4Ah] [ebp-22h] __int16 v20; // [esp+4Eh] [ebp-1Eh] BYREF v2 = 0; Src = 0; v18 = 0; v3 = *(_DWORD *)a2; v4 = (unsigned __int16 *)(a1 + 16); v19 = 0; v16 = v3; v20 = 0; do { v5 = *v4--; if ( v5 ) { v6 = 0; __m16m(v5, a2, (int)v13); v7 = &v20; v8 = &v15; do { v9 = (unsigned __int16)*v7; v10 = *(unsigned __int16 *)v8; v8 -= 2; --v7; v11 = v6 + v9 + v10; v7[1] = v11; v6 = HIWORD(v11) & 1; } while ( v8 != &v14 ); } v2 |= v20; memmove((char *)&Src + 2, &Src, 0xCu); LOWORD(Src) = 0; } while ( v4 != (unsigned __int16 *)(a1 + 4) ); *(_DWORD *)a2 = v16; *(_DWORD *)(a2 + 4) = Src; *(_DWORD *)(a2 + 8) = v18; *(_DWORD *)(a2 + 12) = v19; *(_WORD *)(a2 + 16) = v20; return v2; } // 4659F0: using guessed type char var_40[2]; //----- (00465B00) -------------------------------------------------------- __int16 *__cdecl __toe64(_WORD *a1, int a2) { int v2; // edx __int16 *result; // eax int v4; // edx __int16 v5; // bx __int16 v6; // bx _WORD *v7; // ebx __int16 v8; // ax _WORD *v9; // edx __int16 *v10; // ebx v2 = (unsigned __int16)a1[1]; result = a1 + 3; if ( (a1[1] & 0x7FFF) == 0x7FFF ) { v9 = a1 + 3; do { if ( *v9 ) { *(_DWORD *)a2 = 0; *(_DWORD *)(a2 + 4) = -1073741824; *(_DWORD *)(a2 + 8) = 0x7FFF; return result; } ++v9; } while ( a1 + 9 != v9 ); *(_WORD *)(a2 + 10) = 0; v4 = a2 + 6; if ( *a1 ) goto LABEL_8; goto LABEL_4; } if ( !(_WORD)v2 ) { v7 = a1 + 2; do { if ( (*v7 & 1) != 0 ) v2 |= 1u; v8 = *v7 >> 1; if ( (v2 & 2) != 0 ) v8 |= 0x8000u; ++v7; v2 *= 2; *(v7 - 1) = v8; } while ( a1 + 9 != v7 ); result = a1 + 3; *(_WORD *)(a2 + 10) = 0; v4 = a2 + 6; if ( !*a1 ) goto LABEL_4; LABEL_8: v5 = a1[1] | 0x8000; goto LABEL_5; } *(_WORD *)(a2 + 10) = 0; v4 = a2 + 6; if ( *a1 ) goto LABEL_8; LABEL_4: v5 = a1[1]; LABEL_5: *(_WORD *)(a2 + 8) = v5; if ( (a1[1] & 0x7FFF) == 0x7FFF ) { v10 = result; while ( !*v10 ) { if ( a1 + 9 == ++v10 ) { *(_DWORD *)a2 = 0; *(_DWORD *)(a2 + 4) = 0x80000000; return result; } } } do { v6 = *result++; v4 -= 2; *(_WORD *)(v4 + 2) = v6; } while ( result != a1 + 7 ); return result; } //----- (00465C50) -------------------------------------------------------- int __cdecl __ecmp(int a1, int a2) { int v2; // eax int v4; // eax int v5; // eax int v6; // eax int v7; // edx unsigned __int16 v8; // si unsigned __int16 v9; // cx __int16 v10[9]; // [esp+14h] [ebp-30h] BYREF __int16 v11[15]; // [esp+26h] [ebp-1Eh] BYREF if ( (*(_WORD *)(a1 + 10) & 0x7FFF) == 0x7FFF ) { v4 = a1; while ( 1 ) { v4 += 2; if ( *(_WORD *)(v4 - 2) ) return -2; if ( a1 + 10 == v4 ) { if ( (*(_WORD *)(a2 + 10) & 0x7FFF) != 0x7FFF ) goto LABEL_3; goto LABEL_13; } } } if ( (*(_WORD *)(a2 + 10) & 0x7FFF) == 0x7FFF ) { LABEL_13: v5 = a2; do { v5 += 2; if ( *(_WORD *)(v5 - 2) ) return -2; } while ( a2 + 10 != v5 ); } LABEL_3: __emovi(a1, (int)v10); __emovi(a2, (int)v11); if ( v10[0] == v11[0] ) { v6 = 1; v7 = v10[0] == 0 ? 1 : -1; while ( 1 ) { v8 = v10[v6++]; v9 = v10[v6 + 8]; if ( v8 != v9 ) break; if ( v6 == 8 ) return 0; } if ( v8 <= v9 ) return v10[0] == 0 ? 1 : -1; return v7; } else { v2 = 1; while ( !v10[v2] && !v11[v2] ) { if ( ++v2 == 8 ) return 0; } return v10[0] == 0 ? 1 : -1; } } // 465C50: using guessed type __int16 var_1E[15]; //----- (00465D90) -------------------------------------------------------- BOOL __cdecl __eshift(__int16 *a1, int a2) { return a2 && __eshift_part_0(a1, a2); } //----- (00465DB0) -------------------------------------------------------- int __cdecl __enormlz(_WORD *a1) { unsigned __int16 v1; // ax __int16 v2; // dx int v3; // ecx __int16 *j; // eax unsigned __int16 *v5; // edx __int16 v6; // si unsigned __int16 v7; // ax __int16 v8; // di __int16 *v9; // esi int v10; // edx __int16 v11; // ax unsigned __int16 *v13; // esi int v14; // edx unsigned __int16 v15; // ax unsigned __int16 *v16; // ecx __int16 i; // dx __int16 v18; // si v1 = a1[2]; if ( v1 ) { v3 = 0; if ( (v1 & 0xFF00) != 0 ) { v16 = a1 + 2; for ( i = 0; ; i = v18 ) { ++v16; v18 = v1 << 8; *(v16 - 1) = i | HIBYTE(v1); if ( a1 + 9 == v16 ) break; v1 = *v16; } v1 = a1[2]; v3 = -8; } while ( v1 ) { v13 = a1 + 2; v14 = 0; while ( 1 ) { if ( (v1 & 1) != 0 ) v14 |= 1u; v15 = v1 >> 1; if ( (v14 & 2) != 0 ) v15 |= 0x8000u; ++v13; v14 *= 2; *(v13 - 1) = v15; if ( a1 + 9 == v13 ) break; v1 = *v13; } if ( --v3 == -81 ) break; v1 = a1[2]; } } else { v2 = a1[3]; v3 = 0; if ( v2 >= 0 ) { if ( v2 ) { LABEL_9: while ( (v2 & 0xFF00) == 0 ) { v5 = a1 + 8; v6 = 0; do { v7 = *v5; v8 = v6; --v5; v6 = HIBYTE(v7); v5[1] = v8 | (v7 << 8); } while ( v5 != a1 + 1 ); v2 = a1[3]; v3 += 8; } while ( v2 >= 0 ) { v9 = a1 + 8; v10 = 0; do { if ( *v9 < 0 ) v10 |= 1u; v11 = 2 * *v9; if ( (v10 & 2) != 0 ) v11 |= 1u; --v9; v10 *= 2; v9[1] = v11; } while ( a1 + 1 != v9 ); if ( ++v3 > 96 ) break; v2 = a1[3]; } } else { while ( 1 ) { for ( j = a1 + 3; ; v2 = *j ) { *(++j - 2) = v2; if ( a1 + 9 == j ) break; } v3 += 16; a1[8] = 0; if ( v3 == 96 ) break; v2 = a1[3]; if ( v2 ) goto LABEL_9; } } } } return v3; } //----- (00465F60) -------------------------------------------------------- __int16 __cdecl __emdnorm(int a1, int a2, int a3, int a4, int a5, int a6) { int v6; // eax int v7; // esi bool v8; // dl __int16 v9; // ax bool v10; // zf int v11; // eax int v12; // edx int v13; // ecx unsigned int v14; // eax __int16 *v15; // ecx int v16; // edx __int16 v17; // ax _WORD *v18; // ecx int v19; // edx _WORD *v20; // ecx int v21; // edx __int16 v22; // ax bool v24; // [esp+13h] [ebp-49h] __int16 *v25; // [esp+14h] [ebp-48h] int v26; // [esp+18h] [ebp-44h] int v27; // [esp+1Ch] [ebp-40h] int v28[3]; // [esp+2Eh] [ebp-2Eh] int v29; // [esp+3Ah] [ebp-22h] __int16 v30; // [esp+3Eh] [ebp-1Eh] v30 = 0; v29 = 0x10000; HIWORD(v28[0]) = 0; v28[1] = 0; v28[2] = 0; v6 = __enormlz((_WORD *)a1); v7 = a4 - v6; if ( v6 > 80 && v7 <= 32766 ) goto LABEL_19; if ( v7 >= 0 ) { if ( !a5 ) goto LABEL_9; v8 = v7 <= 0 && a6 != 80; v24 = v8; if ( a6 != 64 ) goto LABEL_6; v29 = 1; v25 = (__int16 *)(a1 + 14); if ( !v8 ) { v26 = 6; v9 = *(_WORD *)(a1 + 14); goto LABEL_46; } v26 = 6; v27 = 7; LABEL_52: v20 = (_WORD *)(a1 + 4); v21 = 0; a2 |= *(_WORD *)(a1 + 16) & 1; do { if ( (*v20 & 1) != 0 ) v21 |= 1u; v22 = *v20 >> 1; if ( (v21 & 2) != 0 ) v22 |= 0x8000u; ++v20; v21 *= 2; *(v20 - 1) = v22; } while ( v20 != (_WORD *)(a1 + 18) ); v9 = *v25; if ( a6 > 79 || v27 != 7 ) { LABEL_49: *v25 = 0; if ( v9 >= 0 ) goto LABEL_27; goto LABEL_22; } LABEL_46: if ( *(_WORD *)(a1 + 16) ) v9 |= 1u; *(_WORD *)(a1 + 16) = 0; goto LABEL_49; } if ( v7 < -80 ) { LABEL_19: *(_DWORD *)(a1 + 2) = 0; *(_DWORD *)(a1 + 6) = 0; *(_DWORD *)(a1 + 10) = 0; *(_DWORD *)(a1 + 14) = 0; return v6; } v10 = !__eshift_part_0((__int16 *)a1, a4 - v6); v11 = 1; if ( v10 ) v11 = a2; a2 = v11; if ( !a5 ) goto LABEL_35; v24 = a6 != 80; if ( a6 == 64 ) { v29 = 1; v25 = (__int16 *)(a1 + 14); v26 = 6; v27 = 7; goto LABEL_52; } LABEL_6: v25 = (__int16 *)(a1 + 16); if ( v24 ) { v26 = 7; v27 = 8; goto LABEL_52; } v9 = *(_WORD *)(a1 + 16); *(_WORD *)(a1 + 16) = 0; if ( v9 >= 0 ) goto LABEL_8; v26 = 7; LABEL_22: if ( v9 != (__int16)0x8000 ) goto LABEL_25; if ( a2 ) { if ( !a3 ) { LABEL_25: v12 = 7; v13 = 0; do { v14 = v13 + *(unsigned __int16 *)(a1 + 2 * v12 + 2) + *((unsigned __int16 *)v28 + v12 + 1); *(_WORD *)(a1 + 2 * v12 + 2) = v14; v13 = HIWORD(v14) & 1; --v12; } while ( v12 ); } } else if ( (*(_BYTE *)(a1 + 2 * v26) & 1) != 0 ) { goto LABEL_25; } LABEL_27: if ( !v24 ) { LABEL_8: LOWORD(v6) = *(_WORD *)(a1 + 4); if ( !(_WORD)v6 ) goto LABEL_9; goto LABEL_36; } v15 = (__int16 *)(a1 + 16); v16 = 0; do { if ( *v15 < 0 ) v16 |= 1u; v17 = 2 * *v15; if ( (v16 & 2) != 0 ) v17 |= 1u; --v15; v16 *= 2; v15[1] = v17; } while ( v15 != (__int16 *)(a1 + 2) ); LOWORD(v6) = *(_WORD *)(a1 + 4); if ( (_WORD)v6 ) { LABEL_36: v18 = (_WORD *)(a1 + 4); v19 = 0; while ( 1 ) { if ( (v6 & 1) != 0 ) v19 |= 1u; LOWORD(v6) = (unsigned __int16)v6 >> 1; if ( (v19 & 2) != 0 ) LOWORD(v6) = v6 | 0x8000; ++v18; v19 *= 2; *(v18 - 1) = v6; if ( (_WORD *)(a1 + 18) == v18 ) break; LOWORD(v6) = *v18; } ++v7; LABEL_9: *(_WORD *)(a1 + 16) = 0; if ( v7 > 32766 ) { *(_DWORD *)(a1 + 4) = 0; *(_WORD *)(a1 + 2) = 0x7FFF; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; return v6; } goto LABEL_10; } LABEL_35: *(_WORD *)(a1 + 16) = 0; LABEL_10: LOWORD(v6) = 0; if ( v7 < 0 ) LOWORD(v7) = 0; *(_WORD *)(a1 + 2) = v7; return v6; } //----- (004662E0) -------------------------------------------------------- int __cdecl __emovo(_WORD *a1, int a2) { int result; // eax __int16 v3; // dx __int16 *v4; // edx __int16 v5; // bx _WORD *v6; // ebx result = a2; v3 = a1[1]; if ( *a1 ) v3 = a1[1] | 0x8000; *(_WORD *)(a2 + 10) = v3; if ( a1[1] == 0x7FFF ) { v6 = a1 + 3; while ( !*v6 ) { if ( a1 + 9 == ++v6 ) { *(_DWORD *)a2 = 0; *(_DWORD *)(a2 + 4) = 0; *(_WORD *)(a2 + 8) = 0; *(_WORD *)(a2 + 10) = v3 | 0x7FFF; return result; } } *(_DWORD *)a2 = 0; *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 8) = 2147467264; } else { v4 = a1 + 3; result = a2 + 8; do { v5 = *v4++; result -= 2; *(_WORD *)(result + 2) = v5; } while ( v4 != a1 + 8 ); } return result; } //----- (00466370) -------------------------------------------------------- __int16 __cdecl __emul(int a1, int a2, int a3) { int v3; // edx int v4; // ebx __int16 v5; // bp int v6; // ecx int v7; // eax int v8; // esi int v9; // eax _WORD *v10; // eax int v11; // eax int v12; // ecx int v13; // eax int v14; // eax _WORD *v15; // eax int v16; // ebx int v17; // ebp char *v18; // eax int v19; // eax unsigned __int16 v20; // cx unsigned int v21; // eax unsigned int v22; // edx bool v23; // zf __int16 v24; // ax char *v25; // eax int v26; // eax __int16 v28; // [esp+2Ch] [ebp-50h] __int16 v29; // [esp+2Eh] [ebp-4Eh] __int16 v30; // [esp+3Ch] [ebp-40h] BYREF unsigned __int16 v31; // [esp+3Eh] [ebp-3Eh] char v32; // [esp+40h] [ebp-3Ch] BYREF char v33; // [esp+4Ch] [ebp-30h] BYREF __int16 v34; // [esp+4Eh] [ebp-2Eh] BYREF unsigned __int16 v35; // [esp+50h] [ebp-2Ch] char v36; // [esp+52h] [ebp-2Ah] BYREF char v37; // [esp+5Eh] [ebp-1Eh] BYREF v3 = a1; v4 = a2; v5 = *(_WORD *)(a1 + 10) & 0x7FFF; if ( v5 == 0x7FFF ) { v12 = a1 + 10; v13 = a1; do { v13 += 2; if ( *(_WORD *)(v13 - 2) ) { *(_DWORD *)a3 = *(_DWORD *)a1; *(_DWORD *)(a3 + 4) = *(_DWORD *)(a1 + 4); v11 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a3 + 8) = v11; return v11; } } while ( v13 != v12 ); v29 = *(_WORD *)(a2 + 10); v28 = v29 & 0x7FFF; if ( (v29 & 0x7FFF) == 0x7FFF ) goto LABEL_3; goto LABEL_18; } v29 = *(_WORD *)(a2 + 10); if ( (v29 & 0x7FFF) == 0x7FFF ) { LABEL_3: v6 = a2 + 10; v7 = a2; do { v7 += 2; if ( *(_WORD *)(v7 - 2) ) { *(_DWORD *)a3 = *(_DWORD *)a2; *(_DWORD *)(a3 + 4) = *(_DWORD *)(a2 + 4); v11 = *(_DWORD *)(a2 + 8); *(_DWORD *)(a3 + 8) = v11; return v11; } } while ( v7 != v6 ); v8 = 0; if ( v5 != 0x7FFF ) goto LABEL_7; v12 = a1 + 10; v28 = 0x7FFF; LABEL_18: v14 = a1; while ( 1 ) { v14 += 2; if ( *(_WORD *)(v14 - 2) ) break; if ( v14 == v12 ) { v15 = (_WORD *)(a2 + 2); while ( !*v15 ) { if ( ++v15 == (_WORD *)(a2 + 16) ) { LABEL_13: LOWORD(v11) = a3; *(_DWORD *)a3 = 0; *(_DWORD *)(a3 + 4) = 0; *(_DWORD *)(a3 + 8) = 2147467264; return v11; } } if ( v28 != 0x7FFF ) goto LABEL_41; v8 = 1; v6 = a2 + 10; goto LABEL_7; } } if ( v28 != 0x7FFF ) goto LABEL_27; v8 = 0; v6 = a2 + 10; LABEL_7: v9 = a2; while ( 1 ) { v9 += 2; if ( *(_WORD *)(v9 - 2) ) break; if ( v9 == v6 ) { v10 = (_WORD *)(a1 + 2); while ( !*v10 ) { if ( (_WORD *)(a1 + 16) == ++v10 ) goto LABEL_13; } goto LABEL_33; } } if ( !v8 ) goto LABEL_27; LABEL_33: v28 = 0x7FFF; if ( v5 == 0x7FFF ) { v12 = a1 + 10; LABEL_41: while ( 1 ) { v3 += 2; if ( *(_WORD *)(v3 - 2) ) break; if ( v3 == v12 ) goto LABEL_34; } v21 = 0; } else { LABEL_34: v21 = (unsigned int)*(__int16 *)(a1 + 10) >> 31; } if ( v28 == 0x7FFF ) { while ( 1 ) { v4 += 2; if ( *(_WORD *)(v4 - 2) ) break; if ( v4 == a2 + 10 ) goto LABEL_36; } v22 = 0; } else { LABEL_36: v22 = (unsigned int)v29 >> 31; } v23 = v22 == v21; v24 = 0x8000; if ( v23 ) v24 = 0; *(_DWORD *)a3 = 0; LOWORD(v11) = v24 | 0x7FFF; *(_DWORD *)(a3 + 4) = 0; *(_WORD *)(a3 + 8) = 0; *(_WORD *)(a3 + 10) = v11; return v11; } LABEL_27: __emovi(a1, (int)&v30); __emovi(a2, (int)&v34); v16 = v31; v17 = v35; if ( v31 ) { v20 = v35; LABEL_52: v25 = &v36; if ( v20 ) { LABEL_56: v26 = __emulm((int)&v30, (int)&v34); __emdnorm((int)&v34, v26, 0, v16 + v17 - 16382, 64, 80); v34 = -(v30 != v34); LOWORD(v11) = __emovo(&v34, a3); return v11; } while ( v25 != &v37 ) { v25 += 2; if ( *((_WORD *)v25 - 1) ) { v17 -= __enormlz(&v34); goto LABEL_56; } } } else { v18 = &v32; while ( v18 != &v33 ) { v18 += 2; if ( *((_WORD *)v18 - 1) ) { v19 = __enormlz(&v30); v20 = v35; v16 = -v19; goto LABEL_52; } } } LOWORD(v11) = a3; *(_DWORD *)a3 = 0; *(_DWORD *)(a3 + 4) = 0; *(_DWORD *)(a3 + 8) = 0; return v11; } //----- (00466720) -------------------------------------------------------- int *__usercall __pformat_cvt@(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 = (__int16)((WORD4(v17) & 0x7FFF) - 16446); } } else { v19 = 0; v14 = 0; } } v15 = v13 & 0x8000; LABEL_7: *a7 = v15; return __gdtoa(fpi_0_0, v14, (int *)&v17, &v19, a1, a5, a6, &v20); } // 466754: variable 'v12' is possibly undefined // 466759: variable 'v10' is possibly undefined // 4667DB: variable 'v11' is possibly undefined // 53E230: using guessed type int fpi_0_0[6]; //----- (00466820) -------------------------------------------------------- int __usercall __pformat_putc@(int a1@, int a2@) { int v4; // edx int v5; // eax int result; // eax v4 = *(_DWORD *)(a2 + 4); if ( (v4 & 0x4000) == 0 ) { v5 = *(_DWORD *)(a2 + 32); if ( *(_DWORD *)(a2 + 36) <= v5 ) goto LABEL_5; } if ( (v4 & 0x2000) == 0 ) { *(_BYTE *)(*(_DWORD *)a2 + *(_DWORD *)(a2 + 32)) = a1; v5 = *(_DWORD *)(a2 + 32); LABEL_5: result = v5 + 1; *(_DWORD *)(a2 + 32) = result; return result; } fputc(a1, *(FILE **)a2); result = *(_DWORD *)(a2 + 32) + 1; *(_DWORD *)(a2 + 32) = result; return result; } //----- (00466880) -------------------------------------------------------- int __usercall __pformat_wputchars@(int a1@, int a2@, int a3@) { int v5; // eax int result; // eax signed int v7; // eax char *v8; // ebp char *v9; // esi int v10; // eax int v11; // edx int v12; // eax int v13; // eax int v15; // [esp+1Ch] [ebp-40h] mbstate_t State; // [esp+28h] [ebp-34h] BYREF char Dest[44]; // [esp+30h] [ebp-2Ch] BYREF wcrtomb(Dest, 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; } v13 = result - a2; *(_DWORD *)(a3 + 8) = v13; if ( (*(_BYTE *)(a3 + 5) & 4) == 0 ) { *(_DWORD *)(a3 + 8) = v13 - 1; do { __pformat_putc(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 ) { LABEL_7: v15 = a2; while ( 1 ) { a1 += 2; v7 = wcrtomb(Dest, *(_WORD *)(a1 - 2), &State); if ( v7 <= 0 ) goto LABEL_19; v8 = &Dest[v7]; v9 = Dest; do { while ( 1 ) { v11 = *(_DWORD *)(a3 + 4); ++v9; if ( (v11 & 0x4000) == 0 ) { v10 = *(_DWORD *)(a3 + 32); if ( *(_DWORD *)(a3 + 36) <= v10 ) goto LABEL_11; } v12 = *(v9 - 1); if ( (v11 & 0x2000) != 0 ) break; *(_BYTE *)(*(_DWORD *)a3 + *(_DWORD *)(a3 + 32)) = v12; v10 = *(_DWORD *)(a3 + 32); LABEL_11: *(_DWORD *)(a3 + 32) = v10 + 1; if ( v9 == v8 ) goto LABEL_16; } fputc(v12, *(FILE **)a3); ++*(_DWORD *)(a3 + 32); } while ( v9 != v8 ); LABEL_16: if ( !--v15 ) { result = *(_DWORD *)(a3 + 8); *(_DWORD *)(a3 + 8) = result - 1; if ( result > 0 ) goto LABEL_18; return result; } } } *(_DWORD *)(a3 + 8) = v13 - 1; do { LABEL_18: __pformat_putc(32, a3); LABEL_19: result = *(_DWORD *)(a3 + 8); *(_DWORD *)(a3 + 8) = result - 1; } while ( result > 0 ); return result; } // 466880: using guessed type char var_2C[44]; //----- (004669E0) -------------------------------------------------------- int __usercall __pformat_putchars@(_BYTE *a1@, int a2@, int a3@) { int v3; // edi int v6; // eax int result; // eax int v8; // eax int v9; // edi int v10; // edx FILE *Stream; // ecx int v12; // edx int v13; // eax int v14; // edx v3 = a2; v6 = *(_DWORD *)(a3 + 12); if ( v6 >= 0 && a2 > v6 ) v3 = *(_DWORD *)(a3 + 12); result = *(_DWORD *)(a3 + 8); if ( result > v3 ) { v13 = result - v3; *(_DWORD *)(a3 + 8) = v13; v14 = v13; v8 = *(_DWORD *)(a3 + 4); if ( (v8 & 0x400) != 0 ) { if ( !v3 ) { *(_DWORD *)(a3 + 8) = v14 - 1; goto LABEL_21; } goto LABEL_8; } *(_DWORD *)(a3 + 8) = v14 - 1; do { __pformat_putc(32, a3); result = *(_DWORD *)(a3 + 8); *(_DWORD *)(a3 + 8) = result - 1; } while ( result ); } else { *(_DWORD *)(a3 + 8) = -1; } if ( !v3 ) { *(_DWORD *)(a3 + 8) = -2; return result; } v8 = *(_DWORD *)(a3 + 4); LABEL_8: v9 = (int)&a1[v3 - 1]; while ( 1 ) { if ( (v8 & 0x4000) != 0 || (v10 = *(_DWORD *)(a3 + 32), *(_DWORD *)(a3 + 36) > v10) ) { Stream = *(FILE **)a3; if ( (v8 & 0x2000) != 0 ) fputc((char)*a1, Stream); else *((_BYTE *)&Stream->_ptr + *(_DWORD *)(a3 + 32)) = *a1; v10 = *(_DWORD *)(a3 + 32); } *(_DWORD *)(a3 + 32) = v10 + 1; if ( (_BYTE *)v9 == a1 ) break; v8 = *(_DWORD *)(a3 + 4); ++a1; } while ( 1 ) { result = *(_DWORD *)(a3 + 8); *(_DWORD *)(a3 + 8) = result - 1; if ( result <= 0 ) break; v8 = *(_DWORD *)(a3 + 4); LABEL_21: if ( (v8 & 0x4000) != 0 || (v12 = *(_DWORD *)(a3 + 32), *(_DWORD *)(a3 + 36) > v12) ) { if ( (v8 & 0x2000) != 0 ) fputc(32, *(FILE **)a3); else *(_BYTE *)(*(_DWORD *)a3 + *(_DWORD *)(a3 + 32)) = 32; v12 = *(_DWORD *)(a3 + 32); } *(_DWORD *)(a3 + 32) = v12 + 1; } return result; } //----- (00466B20) -------------------------------------------------------- int __usercall __pformat_puts@(char *a1@, int a2@) { char *String; // ebx signed int MaxCount; // eax int v5; // eax String = a1; if ( !a1 ) String = "(null)"; MaxCount = *(_DWORD *)(a2 + 12); if ( MaxCount < 0 ) v5 = strlen(String); else v5 = strnlen(String, MaxCount); return __pformat_putchars(String, v5, a2); } //----- (00466B80) -------------------------------------------------------- int __usercall __pformat_emit_inf_or_nan@(int a1@, int a2@, int a3@) { int v5; // ebx char *v6; // ecx char v7; // bl int i; // edx char v10; // [esp+Ch] [ebp-20h] BYREF char v11[31]; // [esp+Dh] [ebp-1Fh] BYREF *(_DWORD *)(a3 + 12) = -1; v5 = *(_DWORD *)(a3 + 4); if ( a1 ) { v10 = 45; v6 = v11; } else if ( (v5 & 0x100) != 0 ) { v10 = 43; v6 = v11; } else if ( (v5 & 0x40) != 0 ) { v10 = 32; v6 = v11; } else { v6 = &v10; } v7 = v5 & 0x20; for ( i = 0; i != 3; ++i ) v6[i] = v7 | *(_BYTE *)(a2 + i) & 0xDF; return __pformat_putchars(&v10, v6 + 3 - &v10, a3); } //----- (00466C10) -------------------------------------------------------- int __usercall __pformat_xint@(int a1@, __int64 a2, int a3, int a4, int a5) { int v5; // ebx int v6; // ecx int v7; // edi int v8; // ecx int v9; // eax void *v10; // esp char v11; // cl void *v12; // esp int v13; // ebx unsigned __int64 v14; // rdi char v15; // al char v16; // cl char *v17; // esi int v18; // eax int result; // eax int v20; // edi bool v21; // zf unsigned int v22; // edx int v23; // edi int v24; // eax int v25; // eax int v26; // esi int v27; // eax int v28; // eax int v29; // eax void *v30; // esp void *v31; // esp int v32; // ecx int v33; // eax int v34; // edx size_t v35; // edi size_t v36; // eax size_t v37; // ecx size_t v38; // edi int v39; // ecx unsigned int v40; // eax int v41; // eax void *v42; // esp void *v43; // esp int v44; // eax int v45; // eax void *v46; // esp void *v47; // esp int v48; // eax void *v49; // [esp+0h] [ebp-68h] FILE *v50; // [esp+4h] [ebp-64h] _BYTE v51[8]; // [esp+10h] [ebp-58h] BYREF int v52; // [esp+18h] [ebp-50h] int v53; // [esp+1Ch] [ebp-4Ch] __int64 v54; // [esp+20h] [ebp-48h] int v55; // [esp+28h] [ebp-40h] int v56; // [esp+2Ch] [ebp-3Ch] char *v57; // [esp+30h] [ebp-38h] size_t v58; // [esp+34h] [ebp-34h] size_t Size; // [esp+38h] [ebp-30h] size_t v60; // [esp+3Ch] [ebp-2Ch] __int64 v61; // [esp+40h] [ebp-28h] int v62; // [esp+48h] [ebp-20h] int v63; // [esp+4Ch] [ebp-1Ch] v56 = a1; v5 = a5; v61 = a2; v54 = a2; v62 = a3; v63 = a4; if ( a1 == 111 ) { v39 = 0; v7 = *(_DWORD *)(a5 + 4); v55 = *(_DWORD *)(a5 + 12); if ( v55 >= 0 ) v39 = v55; v8 = v39 + 24; if ( (v7 & 0x1000) != 0 ) { if ( *(_WORD *)(a5 + 28) ) { v60 = 3; LABEL_46: v53 = *(_DWORD *)(a5 + 8); v28 = v8 / 3u + v8; if ( v28 < v53 ) v28 = v53; v29 = 16 * ((unsigned int)(v28 + 27) >> 4); v30 = alloca(v29); v31 = alloca(v29); v57 = v51; if ( v56 != 111 ) { v11 = 15; goto LABEL_50; } LABEL_75: v11 = 7; goto LABEL_8; } v48 = v8; v53 = *(_DWORD *)(a5 + 8); if ( v8 < v53 ) v48 = v53; v40 = v48 + 27; } else { v53 = *(_DWORD *)(a5 + 8); if ( v53 >= v8 ) v8 = v53; v40 = v8 + 27; } v41 = 16 * (v40 >> 4); v42 = alloca(v41); v43 = alloca(v41); v60 = 3; v57 = v51; goto LABEL_75; } v6 = 0; v7 = *(_DWORD *)(a5 + 4); v55 = *(_DWORD *)(a5 + 12); if ( v55 >= 0 ) v6 = v55; v8 = v6 + 18; if ( (v7 & 0x1000) != 0 ) { v21 = *(_WORD *)(a5 + 28) == 0; v60 = 4; if ( v21 ) { v44 = v8; v53 = *(_DWORD *)(a5 + 8); if ( v8 < v53 ) v44 = v53; v45 = 16 * ((unsigned int)(v44 + 27) >> 4); v46 = alloca(v45); v11 = 15; v47 = alloca(v45); v57 = v51; LABEL_50: if ( v54 ) goto LABEL_9; LABEL_51: v17 = v57; goto LABEL_52; } goto LABEL_46; } v53 = *(_DWORD *)(a5 + 8); if ( v53 >= v8 ) v8 = v53; v9 = 16 * ((unsigned int)(v8 + 27) >> 4); v10 = alloca(v9); v11 = 15; v12 = alloca(v9); v60 = 4; v57 = v51; LABEL_8: if ( !v54 ) goto LABEL_51; LABEL_9: LOBYTE(Size) = v11; v52 = v7; v13 = (int)v57; v14 = __PAIR64__(v54, HIDWORD(v54)); LOBYTE(v58) = v56 & 0x20; do { ++v13; v15 = v58 | ((BYTE4(v14) & Size) + 55); v16 = v60; if ( (unsigned __int8)((BYTE4(v14) & Size) + 48) < 0x3Au ) v15 = (BYTE4(v14) & Size) + 48; HIDWORD(v14) = __PAIR64__(v14, HIDWORD(v14)) >> v60; *(_BYTE *)(v13 - 1) = v15; LODWORD(v14) = (unsigned int)v14 >> v16; if ( (v16 & 0x20) != 0 ) HIDWORD(v14) = v14; if ( (v16 & 0x20) != 0 ) LODWORD(v14) = 0; } while ( v14 ); v17 = (char *)v13; v7 = v52; v5 = a5; if ( v17 == v57 ) { LABEL_52: v32 = v55; v33 = v7; v34 = v17 - v57; BYTE1(v33) = BYTE1(v7) & 0xF7; *(_DWORD *)(v5 + 4) = v33; v18 = v32 - v34; if ( v32 <= 0 ) goto LABEL_78; goto LABEL_53; } if ( v55 <= 0 || (v18 = v55 - (v17 - v57), v18 <= 0) ) { if ( v56 != 111 || (v52 & 0x800) == 0 ) goto LABEL_21; *v17++ = 48; LABEL_78: if ( v17 == v57 ) { result = 0; if ( v55 ) goto LABEL_56; LABEL_22: v20 = v53; if ( result < v53 ) goto LABEL_57; goto LABEL_23; } LABEL_21: result = v17 - v57; goto LABEL_22; } LABEL_53: v35 = 1; v49 = v17; if ( v18 > 0 ) v35 = v18; v17 += v35; memset(v49, 48, v35); if ( v17 != v57 ) goto LABEL_21; LABEL_56: v20 = v53; *v17 = 48; result = ++v17 - v57; if ( result < v20 ) { LABEL_57: v21 = v56 == 111; v36 = v20 - result; Size = v36; *(_DWORD *)(v5 + 8) = v36; v23 = *(_DWORD *)(v5 + 4); if ( v21 ) { if ( v55 >= 0 || (*(_DWORD *)(v5 + 4) & 0x600) != 512 ) { v37 = Size - 1; if ( (v23 & 0x400) != 0 ) { if ( v17 > v57 ) { LABEL_88: v58 = v37; v22 = (unsigned int)v57; goto LABEL_31; } LABEL_84: v26 = v37; goto LABEL_40; } goto LABEL_64; } } else { if ( (v23 & 0x800) != 0 ) { Size = v36 - 2; if ( (int)(v36 - 2) <= 0 || v55 >= 0 ) goto LABEL_61; } else if ( v55 >= 0 ) { goto LABEL_86; } if ( (v23 & 0x600) != 512 ) { if ( (v23 & 0x800) == 0 ) { LABEL_86: v37 = Size - 1; if ( (v23 & 0x400) != 0 ) goto LABEL_87; LABEL_64: v38 = v37; do { __pformat_putc(32, v5); result = v38--; } while ( result > 0 ); LABEL_66: if ( v17 > v57 ) { v23 = *(_DWORD *)(v5 + 4); v22 = (unsigned int)v57; Size = -1; v58 = -2; goto LABEL_31; } return result; } LABEL_61: result = (unsigned __int8)v56; v17[1] = 48; v17 += 2; *(v17 - 2) = result; goto LABEL_62; } } v58 = Size - 1; v60 = Size; result = (int)memset(v17, 48, Size); v17 += v60; Size = v58 - Size; if ( v56 == 111 || (v23 & 0x800) == 0 ) { LABEL_62: if ( (int)Size > 0 ) { v23 = *(_DWORD *)(v5 + 4); v37 = Size - 1; if ( (v23 & 0x400) == 0 ) goto LABEL_64; LABEL_87: if ( v57 < v17 ) goto LABEL_88; goto LABEL_84; } goto LABEL_26; } goto LABEL_61; } LABEL_23: v21 = v56 == 111; *(_DWORD *)(v5 + 8) = -1; if ( v21 ) goto LABEL_66; Size = -1; if ( (*(_BYTE *)(v5 + 5) & 8) != 0 ) { result = (unsigned __int8)v56; v17[1] = 48; v17 += 2; *(v17 - 2) = result; } LABEL_26: v22 = (unsigned int)v57; if ( v17 <= v57 ) return result; v23 = *(_DWORD *)(v5 + 4); v58 = Size - 1; LABEL_31: while ( 1 ) { --v17; if ( (v23 & 0x4000) != 0 ) break; v24 = *(_DWORD *)(v5 + 32); if ( *(_DWORD *)(v5 + 36) > v24 ) break; LABEL_29: result = v24 + 1; *(_DWORD *)(v5 + 32) = result; if ( (unsigned int)v17 <= v22 ) goto LABEL_35; LABEL_30: v23 = *(_DWORD *)(v5 + 4); } v25 = *v17; if ( (v23 & 0x2000) == 0 ) { *(_BYTE *)(*(_DWORD *)v5 + *(_DWORD *)(v5 + 32)) = v25; v24 = *(_DWORD *)(v5 + 32); goto LABEL_29; } v50 = *(FILE **)v5; v60 = v22; fputc(v25, v50); v22 = v60; result = *(_DWORD *)(v5 + 32) + 1; *(_DWORD *)(v5 + 32) = result; if ( (unsigned int)v17 > v22 ) goto LABEL_30; LABEL_35: if ( (int)Size > 0 ) { v23 = *(_DWORD *)(v5 + 4); v26 = v58; LABEL_40: while ( 2 ) { if ( (v23 & 0x4000) != 0 || (v27 = *(_DWORD *)(v5 + 32), *(_DWORD *)(v5 + 36) > v27) ) { if ( (v23 & 0x2000) != 0 ) { fputc(32, *(FILE **)v5); ++*(_DWORD *)(v5 + 32); result = v26 - 1; if ( v26 <= 0 ) return result; goto LABEL_39; } *(_BYTE *)(*(_DWORD *)v5 + *(_DWORD *)(v5 + 32)) = 32; v27 = *(_DWORD *)(v5 + 32); } *(_DWORD *)(v5 + 32) = v27 + 1; result = v26 - 1; if ( v26 <= 0 ) return result; LABEL_39: v23 = *(_DWORD *)(v5 + 4); v26 = result; continue; } } return result; } //----- (004671C0) -------------------------------------------------------- int __cdecl __pformat_int(__int64 a1, int a2, int a3, int a4) { int v4; // ecx int v5; // ebx int v6; // esi int v7; // ecx int v8; // eax void *v9; // esp void *v10; // esp unsigned int v11; // edi int v12; // esi char *v13; // ebx char *v14; // ecx unsigned __int64 v15; // kr08_8 char *v16; // edi char *v17; // esi int v18; // eax size_t v19; // edx int v20; // eax int v21; // edx unsigned int v22; // ecx int v23; // edi char *v24; // esi int v25; // eax int v26; // eax int result; // eax int v28; // edx int v29; // ecx int v30; // edx int v31; // eax int v32; // eax signed int v33; // ecx int v34; // ecx int v36; // [esp+10h] [ebp-48h] BYREF int v37; // [esp+18h] [ebp-40h] char *v38; // [esp+1Ch] [ebp-3Ch] __int64 v39; // [esp+20h] [ebp-38h] int v40; // [esp+28h] [ebp-30h] char *v41; // [esp+2Ch] [ebp-2Ch] __int64 v42; // [esp+30h] [ebp-28h] int v43; // [esp+38h] [ebp-20h] int v44; // [esp+3Ch] [ebp-1Ch] v4 = 0; v5 = a4; v42 = a1; v6 = *(_DWORD *)(a4 + 4); v43 = a2; v44 = a3; v39 = a1; v37 = *(_DWORD *)(a4 + 12); if ( v37 >= 0 ) v4 = v37; v7 = v4 + 23; if ( (v6 & 0x1000) != 0 && *(_WORD *)(a4 + 28) ) v7 += v7 / 3u; v40 = *(_DWORD *)(a4 + 8); if ( v40 >= v7 ) v7 = v40; v8 = 16 * ((unsigned int)(v7 + 27) >> 4); v9 = alloca(v8); v10 = alloca(v8); v41 = (char *)&v36; if ( (v6 & 0x80) != 0 ) { if ( v39 < 0 ) { v12 = -(int)v39; v11 = (unsigned __int64)-v39 >> 32; LABEL_12: v38 = v41 + 1; v13 = v41; while ( 1 ) { if ( v41 == v13 ) { v14 = v41; v13 = v38; } else { v14 = v13 + 1; if ( (*(_BYTE *)(a4 + 5) & 0x10) != 0 && *(_WORD *)(a4 + 28) && ((v13 - v41) & 0x80000003) == 3 ) { *v13 = 44; v13 += 2; } else { v14 = v13++; } } LODWORD(v39) = v14; *v14 = __PAIR64__(v11, v12) % 0xA + 48; if ( __PAIR64__(v11, v12) <= 9 ) break; v15 = __PAIR64__(v11, v12) / 0xA; v11 = (__PAIR64__(v11, v12) / 0xA) >> 32; v12 = v15; } v16 = v13; v17 = v13; v5 = a4; if ( v37 > 0 ) { v18 = v37 - (v16 - v41); if ( v18 <= 0 ) goto LABEL_26; goto LABEL_23; } if ( v41 != v16 ) goto LABEL_27; goto LABEL_64; } *(_DWORD *)(a4 + 4) = v6 & 0xFFFFFF7F; } v11 = HIDWORD(v39); v12 = v39; if ( v39 ) goto LABEL_12; v17 = v41; v18 = v37; if ( v37 > 0 ) { LABEL_23: v19 = 1; if ( v18 > 0 ) v19 = v18; LODWORD(v39) = v19; memset(v17, 48, v19); v17 += v39; LABEL_26: if ( v41 != v17 ) goto LABEL_27; goto LABEL_68; } LABEL_64: if ( !v37 ) { v21 = *(_DWORD *)(v5 + 4); if ( v40 <= 0 ) goto LABEL_33; if ( (v21 & 0x1C0) == 0 ) goto LABEL_32; goto LABEL_30; } LABEL_68: *v17++ = 48; LABEL_27: if ( v40 <= 0 ) goto LABEL_61; v40 -= v17 - v41; v20 = v40; v21 = *(_DWORD *)(v5 + 4); *(_DWORD *)(v5 + 8) = v40; if ( v20 <= 0 ) goto LABEL_33; if ( (v21 & 0x1C0) != 0 ) LABEL_30: *(_DWORD *)(v5 + 8) = v40 - 1; if ( v37 >= 0 || (v21 & 0x600) != 512 ) { LABEL_32: if ( (v21 & 0x400) != 0 ) goto LABEL_33; v31 = *(_DWORD *)(v5 + 8); *(_DWORD *)(v5 + 8) = v31 - 1; if ( v31 <= 0 ) goto LABEL_33; do { __pformat_putc(32, v5); v32 = *(_DWORD *)(v5 + 8); *(_DWORD *)(v5 + 8) = v32 - 1; } while ( v32 > 0 ); LABEL_61: v21 = *(_DWORD *)(v5 + 4); goto LABEL_33; } v33 = *(_DWORD *)(v5 + 8); *(_DWORD *)(v5 + 8) = v33 - 1; if ( v33 > 0 ) { v40 = v21; LODWORD(v39) = v33; memset(v17, 48, v33); v34 = v39; LOWORD(v21) = v40; *(_DWORD *)(v5 + 8) = -1; v17 += v34; } LABEL_33: if ( (v21 & 0x80u) == 0 ) { if ( (v21 & 0x100) != 0 ) { *v17 = 43; v22 = (unsigned int)(v17 + 1); } else { v22 = (unsigned int)v17; if ( (v21 & 0x40) != 0 ) { *v17 = 32; v22 = (unsigned int)(v17 + 1); } } } else { *v17 = 45; v22 = (unsigned int)(v17 + 1); } v23 = (int)v41; if ( v22 > (unsigned int)v41 ) { v24 = (char *)v22; while ( 1 ) { --v24; if ( (v21 & 0x4000) == 0 ) { v25 = *(_DWORD *)(v5 + 32); if ( *(_DWORD *)(v5 + 36) <= v25 ) goto LABEL_38; } v26 = *v24; if ( (v21 & 0x2000) == 0 ) break; fputc(v26, *(FILE **)v5); ++*(_DWORD *)(v5 + 32); if ( (char *)v23 == v24 ) goto LABEL_44; LABEL_39: v21 = *(_DWORD *)(v5 + 4); } *(_BYTE *)(*(_DWORD *)v5 + *(_DWORD *)(v5 + 32)) = v26; v25 = *(_DWORD *)(v5 + 32); LABEL_38: *(_DWORD *)(v5 + 32) = v25 + 1; if ( (char *)v23 == v24 ) goto LABEL_44; goto LABEL_39; } LABEL_44: result = *(_DWORD *)(v5 + 8); while ( 1 ) { v28 = result--; *(_DWORD *)(v5 + 8) = result; if ( v28 <= 0 ) break; v29 = *(_DWORD *)(v5 + 4); if ( (v29 & 0x4000) != 0 || (v30 = *(_DWORD *)(v5 + 32), *(_DWORD *)(v5 + 36) > v30) ) { if ( (v29 & 0x2000) != 0 ) fputc(32, *(FILE **)v5); else *(_BYTE *)(*(_DWORD *)v5 + *(_DWORD *)(v5 + 32)) = 32; v30 = *(_DWORD *)(v5 + 32); result = *(_DWORD *)(v5 + 8); } *(_DWORD *)(v5 + 32) = v30 + 1; } return result; } //----- (004675E0) -------------------------------------------------------- int __usercall __pformat_emit_radix_point@(int a1@) { wchar_t v2; // dx int v3; // eax int v4; // eax void *v5; // esp void *v6; // esp char *v7; // esi signed int v8; // eax char *v9; // edi int result; // eax int v11; // edx FILE *v12; // ecx struct lconv *v13; // eax signed int v14; // eax int v15; // [esp+0h] [ebp-48h] BYREF char Dest[12]; // [esp+10h] [ebp-38h] BYREF int *v17; // [esp+1Ch] [ebp-2Ch] wchar_t DstCh; // [esp+26h] [ebp-22h] BYREF mbstate_t State; // [esp+28h] [ebp-20h] BYREF if ( *(_DWORD *)(a1 + 16) == -3 ) { State._Wchar = 0; *(_DWORD *)&State._Byte = 0; v13 = localeconv(); v14 = mbrtowc(&DstCh, v13->decimal_point, 0x10u, &State); if ( v14 <= 0 ) { v2 = *(_WORD *)(a1 + 20); } else { v2 = DstCh; *(_WORD *)(a1 + 20) = DstCh; } *(_DWORD *)(a1 + 16) = v14; } else { v2 = *(_WORD *)(a1 + 20); } if ( !v2 ) return __pformat_putc(46, a1); v3 = *(_DWORD *)(a1 + 16); v17 = &v15; v4 = 16 * ((unsigned int)(v3 + 15) >> 4); v5 = alloca(v4); v6 = alloca(v4); State._Wchar = 0; v7 = Dest; *(_DWORD *)&State._Byte = 0; v8 = wcrtomb(Dest, v2, &State); if ( v8 > 0 ) { v9 = &Dest[v8]; while ( 1 ) { result = *(_DWORD *)(a1 + 4); ++v7; if ( (result & 0x4000) == 0 ) { v11 = *(_DWORD *)(a1 + 32); if ( *(_DWORD *)(a1 + 36) <= v11 ) goto LABEL_7; } v12 = *(FILE **)a1; if ( (result & 0x2000) != 0 ) { result = fputc(*(v7 - 1), v12); ++*(_DWORD *)(a1 + 32); if ( v7 == v9 ) return result; } else { result = *(_DWORD *)(a1 + 32); *((_BYTE *)&v12->_ptr + result) = *(v7 - 1); v11 = *(_DWORD *)(a1 + 32); LABEL_7: *(_DWORD *)(a1 + 32) = v11 + 1; if ( v7 == v9 ) return result; } } } return __pformat_putc(46, a1); } // 4675E0: using guessed type char Dest[12]; //----- (00467730) -------------------------------------------------------- int __usercall __pformat_emit_float@(int a1@, char *a2@, int a3@, int a4) { int v7; // ecx int v8; // ecx int v9; // eax int v10; // eax int v11; // eax char v12; // dl int v13; // eax int v14; // eax int v15; // ecx int v16; // eax int v17; // eax int result; // eax char v19; // dl int v20; // eax int v21; // eax int v22; // eax int v23; // edx unsigned int v24; // [esp+Ch] [ebp-20h] v7 = *(_DWORD *)(a4 + 8); if ( a3 <= 0 ) { if ( v7 <= 0 ) { if ( v7 ) { *(_DWORD *)(a4 + 8) = -1; goto LABEL_9; } } else { --v7; } v14 = *(_DWORD *)(a4 + 12); if ( v7 <= v14 ) { *(_DWORD *)(a4 + 8) = -1; goto LABEL_9; } } else if ( a3 > v7 || (v14 = *(_DWORD *)(a4 + 12), v7 -= a3, v7 <= v14) ) { *(_DWORD *)(a4 + 8) = -1; v8 = -1; if ( (*(_BYTE *)(a4 + 5) & 0x10) == 0 ) goto LABEL_9; LABEL_4: if ( !*(_WORD *)(a4 + 28) ) goto LABEL_28; goto LABEL_5; } v8 = v7 - v14; *(_DWORD *)(a4 + 8) = v8; if ( v14 > 0 || (v21 = *(_DWORD *)(a4 + 4), (v21 & 0x800) != 0) ) { *(_DWORD *)(a4 + 8) = --v8; if ( a3 <= 0 || (*(_BYTE *)(a4 + 5) & 0x10) == 0 ) goto LABEL_28; goto LABEL_4; } if ( a3 > 0 && (v21 & 0x1000) != 0 && *(_WORD *)(a4 + 28) ) { LABEL_5: v9 = v8; v24 = (a3 + 2) / 3u; if ( v24 != 1 ) { while ( v9 > 0 ) { *(_DWORD *)(a4 + 8) = --v9; if ( !(v9 + v24 - 1 - v8) ) { v8 = v9; goto LABEL_28; } } goto LABEL_9; } LABEL_28: if ( v8 > 0 ) goto LABEL_29; LABEL_9: if ( !a1 ) { LABEL_10: v10 = *(_DWORD *)(a4 + 4); goto LABEL_11; } goto LABEL_52; } LABEL_29: if ( a1 ) { v15 = v8 - 1; *(_DWORD *)(a4 + 8) = v15; if ( v15 && (*(_DWORD *)(a4 + 4) & 0x600) == 0 ) goto LABEL_33; LABEL_52: __pformat_putc(45, a4); goto LABEL_14; } v10 = *(_DWORD *)(a4 + 4); if ( (v10 & 0x1C0) != 0 ) { v15 = v8 - 1; *(_DWORD *)(a4 + 8) = v15; if ( v15 && (v10 & 0x600) == 0 ) { LABEL_33: *(_DWORD *)(a4 + 8) = v15 - 1; do { LABEL_34: __pformat_putc(32, a4); v16 = *(_DWORD *)(a4 + 8); *(_DWORD *)(a4 + 8) = v16 - 1; } while ( v16 > 0 ); if ( a1 ) goto LABEL_52; goto LABEL_10; } } else if ( (v10 & 0x600) == 0 ) { v23 = *(_DWORD *)(a4 + 8); *(_DWORD *)(a4 + 8) = v23 - 1; if ( v23 > 0 ) goto LABEL_34; } LABEL_11: if ( (v10 & 0x100) != 0 ) { __pformat_putc(43, a4); } else if ( (v10 & 0x40) != 0 ) { __pformat_putc(32, a4); } LABEL_14: v11 = *(_DWORD *)(a4 + 8); if ( v11 > 0 && (*(_DWORD *)(a4 + 4) & 0x600) == 512 ) { *(_DWORD *)(a4 + 8) = v11 - 1; do { __pformat_putc(48, a4); v22 = *(_DWORD *)(a4 + 8); *(_DWORD *)(a4 + 8) = v22 - 1; } while ( v22 > 0 ); } if ( a3 <= 0 ) { __pformat_putc(48, a4); v17 = *(_DWORD *)(a4 + 12); if ( v17 > 0 || (*(_BYTE *)(a4 + 5) & 8) != 0 ) { __pformat_emit_radix_point(a4); if ( !a3 ) goto LABEL_44; v17 = *(_DWORD *)(a4 + 12); } else if ( !a3 ) { LABEL_39: result = v17 - 1; *(_DWORD *)(a4 + 12) = result; return result; } *(_DWORD *)(a4 + 12) = a3 + v17; do { __pformat_putc(48, a4); ++a3; } while ( a3 ); } else { while ( 1 ) { v12 = *a2; v13 = 48; if ( *a2 ) { ++a2; v13 = v12; } __pformat_putc(v13, a4); if ( !--a3 ) break; if ( (*(_BYTE *)(a4 + 5) & 0x10) != 0 && *(_WORD *)(a4 + 28) && (unsigned int)(-1431655765 * a3) <= 0x55555555 ) __pformat_wputchars(a4 + 28, 1, a4); } v17 = *(_DWORD *)(a4 + 12); if ( v17 <= 0 && (*(_BYTE *)(a4 + 5) & 8) == 0 ) goto LABEL_39; __pformat_emit_radix_point(a4); } LABEL_44: while ( 1 ) { result = *(_DWORD *)(a4 + 12); *(_DWORD *)(a4 + 12) = result - 1; if ( result <= 0 ) break; v19 = *a2; v20 = 48; if ( *a2 ) { ++a2; v20 = v19; } __pformat_putc(v20, a4); } return result; } //----- (00467AE0) -------------------------------------------------------- int __usercall __pformat_emit_efloat@(int a1@, char *a2@, int a3@, _DWORD *a4) { int v4; // ecx int i; // ebx int v6; // eax int v7; // ecx int v8; // eax int v9; // edx __int64 v12; // [esp+30h] [ebp-2Ch] int v13; // [esp+38h] [ebp-24h] int v14; // [esp+3Ch] [ebp-20h] v12 = a3 - 1; v4 = (int)v12 / 10; for ( i = 1; v4; v4 /= 10 ) ++i; v6 = a4[10]; if ( v6 == -1 ) { a4[10] = 2; v6 = 2; } v7 = a4[2]; if ( i < v6 ) i = v6; v8 = v7 - (i + 2); if ( v7 <= i + 2 ) v8 = -1; a4[2] = v8; __pformat_emit_float(a1, a2, 1, (int)a4); a4[3] = a4[10]; v9 = a4[1]; a4[1] = v9 | 0x1C0; __pformat_putc(v9 & 0x20 | 0x45, (int)a4); a4[2] += i + 1; return __pformat_int(v12, v13, v14, (int)a4); } // 467BC2: variable 'v13' is possibly undefined // 467BC2: variable 'v14' is possibly undefined //----- (00467BD0) -------------------------------------------------------- void __usercall __pformat_efloat(_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 = __pformat_cvt(2, *(__int64 *)&v9, SHIDWORD(v9), v10, v4, &v8, &v7); v6 = v5; if ( v8 == -32768 ) __pformat_emit_inf_or_nan(v7, (int)v5, (int)a1); else __pformat_emit_efloat(v7, (char *)v5, v8, a1); __freedtoa(v6); } //----- (00467C80) -------------------------------------------------------- void __usercall __pformat_float(int a1@, long double a2) { int v3; // eax int *v4; // eax int *v5; // esi int v6; // eax int v7; // edx int v8; // ecx int v9; // edx int v10; // [esp+28h] [ebp-24h] BYREF int v11; // [esp+2Ch] [ebp-20h] BYREF long double v12; // [esp+30h] [ebp-1Ch] int v13; // [esp+3Ch] [ebp-10h] v3 = *(_DWORD *)(a1 + 12); if ( v3 < 0 ) { *(_DWORD *)(a1 + 12) = 6; v3 = 6; } v12 = a2; v4 = __pformat_cvt(3, *(__int64 *)&v12, SHIDWORD(v12), v13, v3, &v11, &v10); v5 = v4; if ( v11 == -32768 ) { __pformat_emit_inf_or_nan(v10, (int)v4, a1); } else { __pformat_emit_float(v10, (char *)v4, v11, a1); v6 = *(_DWORD *)(a1 + 8); while ( 1 ) { v7 = v6--; *(_DWORD *)(a1 + 8) = v6; if ( v7 <= 0 ) break; v8 = *(_DWORD *)(a1 + 4); if ( (v8 & 0x4000) != 0 || (v9 = *(_DWORD *)(a1 + 32), *(_DWORD *)(a1 + 36) > v9) ) { if ( (v8 & 0x2000) != 0 ) fputc(32, *(FILE **)a1); else *(_BYTE *)(*(_DWORD *)a1 + *(_DWORD *)(a1 + 32)) = 32; v9 = *(_DWORD *)(a1 + 32); v6 = *(_DWORD *)(a1 + 8); } *(_DWORD *)(a1 + 32) = v9 + 1; } } __freedtoa(v5); } //----- (00467D70) -------------------------------------------------------- void __usercall __pformat_gfloat(_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 = __pformat_cvt(2, *(__int64 *)&v15, SHIDWORD(v15), v16, v3, &v14, &v13); v5 = v14; Str = v4; if ( v14 == -32768 ) { __pformat_emit_inf_or_nan(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; __pformat_emit_efloat(v13, (char *)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; } } __pformat_emit_float(v13, (char *)Str, v5, (int)a1); while ( 1 ) { v9 = a1[2]; a1[2] = v9 - 1; if ( v9 <= 0 ) break; __pformat_putc(32, (int)a1); } __freedtoa(Str); } } } //----- (00467F00) -------------------------------------------------------- int __usercall __pformat_xldouble@(int a1@, long double a2) { __int16 v3; // fps __int16 v5; // fps int v9; // ebp unsigned int v10; // edi char *v11; // eax char *v12; // esi int v13; // edx int v14; // eax int v15; // edi int v16; // ecx int v17; // ebp int v18; // eax int v19; // eax int v20; // eax int v21; // eax char v22; // cl __int64 v23; // rax unsigned int v24; // edi unsigned int v25; // esi unsigned __int64 v26; // kr08_8 char v27; // cl unsigned int v28; // esi int v29; // edi int v30; // ecx __int16 v31; // dx char v32; // cl char v33; // al unsigned int v34; // eax int v35; // ecx int v37; // eax int v38; // eax __int16 v39; // dx int v40; // ecx int v41; // esi int v42; // eax unsigned int v43; // [esp+24h] [ebp-88h] int v44; // [esp+24h] [ebp-88h] int v45; // [esp+2Ch] [ebp-80h] __int16 v46; // [esp+30h] [ebp-7Ch] char *v47; // [esp+30h] [ebp-7Ch] int v48; // [esp+34h] [ebp-78h] __int64 v51[2]; // [esp+68h] [ebp-44h] BYREF char v52; // [esp+78h] [ebp-34h] BYREF char v53; // [esp+79h] [ebp-33h] BYREF _FST7 = a2; __asm { fxam } if ( (v3 & 0x4500) == 256 ) return __pformat_emit_inf_or_nan(0, (int)&off_55A9C7, a1); if ( (SWORD4(a2) & 0x8000u) != 0 ) *(_DWORD *)(a1 + 4) |= 0x80u; __asm { fxam } if ( (v5 & 0x4500) == 1280 ) return __pformat_emit_inf_or_nan(WORD4(a2) & 0x8000, (int)&off_55A9CB, a1); v9 = DWORD1(a2); v10 = LODWORD(a2); v46 = WORD4(a2) & 0x7FFF; if ( (WORD4(a2) & 0x7FFF) != 0 ) { v46 -= 0x3FFF; v43 = *(_DWORD *)(a1 + 12); if ( v43 <= 0xE ) goto LABEL_40; v45 = *(_DWORD *)(a1 + 4); if ( !*(_QWORD *)&a2 ) goto LABEL_9; goto LABEL_53; } if ( !*(_QWORD *)&a2 ) { v43 = *(_DWORD *)(a1 + 12); if ( v43 > 0xE ) { v45 = *(_DWORD *)(a1 + 4); LABEL_9: if ( *(int *)(a1 + 12) > 0 || (v11 = &v52, (v45 & 0x800) != 0) ) { v52 = 46; v11 = &v53; } *v11 = 48; v12 = v11 + 1; v48 = *(_DWORD *)(a1 + 8); if ( v48 > 0 ) goto LABEL_12; LABEL_87: v17 = 2; v44 = v46; if ( (v45 & 0x80u) == 0 ) goto LABEL_21; goto LABEL_88; } do { v9 = __PAIR64__(v9, v10) >> 31; v10 *= 2; LABEL_40: ; } while ( v9 >= 0 ); goto LABEL_41; } if ( (SDWORD1(a2) & 0x80000000) != 0 ) { v46 = -16382; } else { v38 = -16383; do { v9 = __PAIR64__(v9, v10) >> 31; v39 = v38; v10 *= 2; --v38; } while ( v9 >= 0 ); v46 = v39; } v43 = *(_DWORD *)(a1 + 12); if ( v43 <= 0xE ) { LABEL_41: v22 = 4 * (14 - v43); v23 = 4LL << (v22 & 0x1F); if ( (v22 & 0x20) != 0 ) HIDWORD(v23) = 4LL << (v22 & 0x1F); if ( (v22 & 0x20) != 0 ) LODWORD(v23) = 0; v26 = v23 + (__PAIR64__(v9, v10) >> 1); v24 = HIDWORD(v26); v25 = v26; if ( (v26 & 0x8000000000000000LL) != 0LL ) { ++v46; } else { v24 = v26 >> 31; v25 = 2 * v26; } v27 = 4 * (15 - v43); v28 = __PAIR64__(v24, v25) >> v27; v29 = v24 >> v27; v30 = v27 & 0x20; if ( v30 ) v28 = v29; if ( v30 ) v29 = 0; v9 = v29; v10 = v28; } v45 = *(_DWORD *)(a1 + 4); LABEL_53: v12 = &v52; v31 = v46; do { v34 = v10 & 0xF; if ( v10 & 0xFFFFFFF0 | v9 ) { v10 = __PAIR64__(v9, v10) >> 4; v9 = (unsigned int)v9 >> 4; v35 = *(_DWORD *)(a1 + 12); if ( v35 > 0 ) *(_DWORD *)(a1 + 12) = v35 - 1; } else { if ( v12 > &v52 || (v45 & 0x800) != 0 || *(int *)(a1 + 12) > 0 ) *v12++ = 46; if ( v9 | v10 ^ 1 ) { v40 = (unsigned __int16)(v31 - 1); v47 = v12; v41 = v10 & 0xF; do { v10 = __PAIR64__(v9, v10) >> 1; v9 = (unsigned int)v9 >> 1; v31 = v40--; } while ( v10 ^ 1 | v9 ); v34 = v41; v10 = 0; v12 = v47; v9 = 0; } else { v10 = 0; v9 = 0; } } if ( v34 ) { v32 = v34; if ( v34 <= 9 ) LABEL_56: v33 = v32 + 48; else v33 = v45 & 0x20 | (v34 + 55); *v12++ = v33; continue; } v32 = 0; if ( v12 > &v52 || *(int *)(a1 + 12) >= 0 ) goto LABEL_56; } while ( v10 | v9 ); v46 = v31; if ( v12 == &v52 ) goto LABEL_9; v48 = *(_DWORD *)(a1 + 8); if ( v48 <= 0 ) goto LABEL_87; LABEL_12: v13 = *(_DWORD *)(a1 + 12); v14 = v12 - &v52; if ( v13 > 0 ) v14 = v12 - &v52 + v13; v44 = v46; v15 = v14 - (((v45 & 0x1C0) == 0) - 6); v16 = v46 / 10; if ( v16 ) { do { ++v15; v16 /= 10; } while ( v16 ); v17 = (__int16)(v15 + 2 - (v14 - (((v45 & 0x1C0) == 0) - 6))); } else { v17 = 2; } if ( v48 <= v15 ) { *(_DWORD *)(a1 + 8) = -1; } else { v18 = v48 - v15; if ( (v45 & 0x600) != 0 ) { *(_DWORD *)(a1 + 8) = v18; } else { *(_DWORD *)(a1 + 8) = v18 - 1; if ( v18 > 0 ) { do { __pformat_putc(32, a1); v42 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 8) = v42 - 1; } while ( v42 > 0 ); v45 = *(_DWORD *)(a1 + 4); } } } if ( (v45 & 0x80u) != 0 ) { LABEL_88: __pformat_putc(45, a1); goto LABEL_24; } LABEL_21: if ( (v45 & 0x100) != 0 ) { __pformat_putc(43, a1); } else if ( (v45 & 0x40) != 0 ) { __pformat_putc(32, a1); } LABEL_24: __pformat_putc(48, a1); __pformat_putc(*(_DWORD *)(a1 + 4) & 0x20 | 0x58, a1); v19 = *(_DWORD *)(a1 + 8); if ( v19 > 0 && (*(_BYTE *)(a1 + 5) & 2) != 0 ) { *(_DWORD *)(a1 + 8) = v19 - 1; do { __pformat_putc(48, a1); v20 = *(_DWORD *)(a1 + 8); *(_DWORD *)(a1 + 8) = v20 - 1; } while ( v20 > 0 ); } if ( v12 > &v52 ) { do { v21 = *--v12; if ( v21 == 46 ) { __pformat_emit_radix_point(a1); } else if ( v21 == 44 ) { LOWORD(v51[0]) = *(_WORD *)(a1 + 28); if ( LOWORD(v51[0]) ) __pformat_wputchars((int)v51, 1, a1); } else { __pformat_putc(v21, a1); } } while ( v12 != &v52 ); } while ( 1 ) { v37 = *(_DWORD *)(a1 + 12); *(_DWORD *)(a1 + 12) = v37 - 1; if ( v37 <= 0 ) break; __pformat_putc(48, a1); } __pformat_putc(*(_DWORD *)(a1 + 4) & 0x20 | 0x50, a1); *(_DWORD *)(a1 + 8) += v17; *(_DWORD *)(a1 + 4) |= 0x1C0u; v51[0] = v44; v51[1] = v44 >> 31; return __pformat_int(v44, v44 >> 31, v44 >> 31, a1); } // 55A9C7: using guessed type void *off_55A9C7; // 55A9CB: using guessed type void *off_55A9CB; //----- (00468520) -------------------------------------------------------- int __cdecl __mingw_pformat(__int16 a1, FILE *a2, int a3, char *a4, int *a5) { int v6; // eax int result; // eax char *v8; // ebp char v9; // cl int v10; // edx char v11; // al char *v12; // esi unsigned int v13; // ecx char *v14; // ebx int v15; // ebp int *v16; // eax unsigned int v17; // edx int v18; // eax __int64 v19; // rax mbstate_t v20; // rax char *v21; // eax int *v22; // esi int *v23; // esi int v24; // eax long double v25; // fst7 char *v26; // eax long double v27; // fst7 long double v28; // fst7 int v29; // eax int v30; // edx long double v31; // fst7 int v32; // eax unsigned int v33; // eax int v34; // eax long double v35; // fst7 long double v36; // fst7 long double v37; // fst7 long double v38; // fst7 int v39; // eax const wchar_t *v40; // edi int v41; // eax unsigned int v42; // eax int v43; // edx struct lconv *v44; // eax signed int v45; // eax unsigned int v46; // edi __int64 v47; // [esp+0h] [ebp-ACh] __int64 v48; // [esp+8h] [ebp-A4h] int v49; // [esp+28h] [ebp-84h] int v50; // [esp+2Ch] [ebp-80h] size_t *v51; // [esp+30h] [ebp-7Ch] char *v52; // [esp+34h] [ebp-78h] int ErrorMessage; // [esp+38h] [ebp-74h] wchar_t DstCh; // [esp+4Eh] [ebp-5Eh] BYREF mbstate_t v55; // [esp+50h] [ebp-5Ch] BYREF __int64 v56; // [esp+58h] [ebp-54h] FILE *Stream; // [esp+64h] [ebp-48h] BYREF int v58; // [esp+68h] [ebp-44h] int v59; // [esp+6Ch] [ebp-40h] BYREF size_t MaxCount[2]; // [esp+70h] [ebp-3Ch] BYREF __int16 v61; // [esp+78h] [ebp-34h] int v62; // [esp+7Ch] [ebp-30h] wchar_t v63; // [esp+80h] [ebp-2Ch] int v64; // [esp+84h] [ebp-28h] int v65; // [esp+88h] [ebp-24h] int v66; // [esp+8Ch] [ebp-20h] v6 = *_errno(); v59 = -1; MaxCount[0] = -1; ErrorMessage = v6; MaxCount[1] = -3; Stream = a2; v61 = 0; v62 = 0; v50 = a1 & 0x6000; v58 = v50; v63 = 0; v65 = a3; result = *a4; v64 = 0; v66 = -1; if ( result ) { v8 = a4 + 1; v9 = result; while ( 1 ) { if ( result == 37 ) { MaxCount[0] = -1; v59 = -1; v58 = a1 & 0x6000; v11 = *v8; if ( !*v8 ) return v64; v49 = 0; v12 = v8; v13 = 0; v51 = (size_t *)&v59; v52 = v8; while ( 2 ) { v14 = v12 + 1; v15 = v11; switch ( v11 ) { case ' ': if ( v13 ) goto LABEL_104; v11 = v12[1]; v58 |= 0x40u; ++v12; goto LABEL_16; case '#': if ( v13 ) goto LABEL_104; v11 = v12[1]; v58 |= 0x800u; ++v12; goto LABEL_16; case '%': v8 = v12 + 1; __pformat_putc(37, (int)&Stream); break; case '\'': if ( v13 ) goto LABEL_104; v58 |= 0x1000u; v55._Wchar = 0; v44 = localeconv(); v45 = mbrtowc(&DstCh, v44->thousands_sep, 0x10u, &v55); v13 = 0; if ( v45 > 0 ) v63 = DstCh; v62 = v45; v11 = *++v12; goto LABEL_16; case '*': if ( !v51 ) goto LABEL_92; if ( (v13 & 0xFFFFFFFD) != 0 ) { v11 = v12[1]; v51 = 0; ++v12; v13 = 4; } else { v39 = *a5; *v51 = *a5; if ( v39 >= 0 ) goto LABEL_100; if ( v13 ) { MaxCount[0] = -1; LABEL_100: v11 = v12[1]; v51 = 0; ++a5; ++v12; goto LABEL_16; } v11 = v12[1]; v59 = -v59; ++a5; ++v12; v58 |= 0x400u; v51 = 0; } goto LABEL_16; case '+': if ( v13 ) goto LABEL_104; v11 = v12[1]; v58 |= 0x100u; ++v12; goto LABEL_16; case '-': if ( v13 ) goto LABEL_104; v11 = v12[1]; v58 |= 0x400u; ++v12; goto LABEL_16; case '.': if ( v13 <= 1 ) { v11 = v12[1]; MaxCount[0] = 0; ++v12; v51 = MaxCount; v13 = 2; } else { LABEL_92: v11 = v12[1]; v13 = 4; ++v12; } goto LABEL_16; case '0': if ( v13 ) { if ( v13 > 3 ) goto LABEL_116; v15 = 48; LABEL_113: if ( v13 == 2 ) v13 = 3; LABEL_23: if ( v51 ) { if ( (*v51 & 0x80000000) == 0 ) { *v51 = v15 + 10 * *v51 - 48; v11 = *++v12; goto LABEL_16; } *v51 = v15 - 48; } LABEL_104: v11 = *++v12; } else { v11 = v12[1]; v58 |= 0x200u; ++v12; } goto LABEL_16; case 'A': if ( (v58 & 4) == 0 ) goto LABEL_90; goto LABEL_48; case 'C': MaxCount[0] = -1; v23 = a5 + 1; goto LABEL_80; case 'E': if ( (v58 & 4) == 0 ) goto LABEL_82; goto LABEL_73; case 'F': if ( (v58 & 4) == 0 ) goto LABEL_84; goto LABEL_64; case 'G': if ( (v58 & 4) == 0 ) goto LABEL_86; goto LABEL_66; case 'I': v11 = v12[1]; if ( v11 == 54 ) { if ( v12[2] != 52 ) { LABEL_116: v8 = v52; __pformat_putc(37, (int)&Stream); break; } v11 = v12[3]; v49 = 3; v12 += 3; v13 = 4; } else if ( v11 == 51 ) { if ( v12[2] != 50 ) goto LABEL_116; v11 = v12[3]; v49 = 2; v12 += 3; v13 = 4; } else { v49 = 0; ++v12; v13 = 4; } LABEL_16: if ( !v11 ) return v64; continue; case 'L': v11 = v12[1]; v58 |= 4u; ++v12; v13 = 4; goto LABEL_16; case 'S': v22 = a5 + 1; goto LABEL_106; case 'X': case 'o': case 'u': case 'x': if ( v49 == 3 ) { v42 = *a5; v43 = a5[1]; a5 += 2; v55._Wchar = v42; *(_DWORD *)&v55._Byte = v43; } else { v16 = a5 + 1; if ( v49 == 2 ) { v46 = *a5; *(_DWORD *)&v55._Byte = 0; v55._Wchar = v46; a5 = v16; } else { v17 = *a5; if ( v49 == 1 ) { *(_DWORD *)&v55._Byte = 0; ++a5; v55._Wchar = (unsigned __int16)v17; } else { if ( v49 == 5 ) v17 = (unsigned __int8)v17; v55._Wchar = v17; ++a5; *(_DWORD *)&v55._Byte = 0; } } } v47 = (__int64)v55; v48 = v56; if ( v15 == 117 ) goto LABEL_41; v18 = v15; v8 = v12 + 1; __pformat_xint(v18, *(_QWORD *)&v55, v56, SHIDWORD(v56), (int)&Stream); goto LABEL_9; case 'a': v58 |= 0x20u; if ( (v58 & 4) != 0 ) { LABEL_48: v25 = *(long double *)a5; v8 = v12 + 1; a5 += 3; __pformat_xldouble((int)&Stream, v25); } else { LABEL_90: v38 = *(double *)a5; v8 = v12 + 1; a5 += 2; __pformat_xldouble((int)&Stream, v38); } goto LABEL_9; case 'c': MaxCount[0] = -1; v23 = a5 + 1; if ( (unsigned int)(v49 - 2) <= 1 ) { LABEL_80: v34 = *a5; a5 = v23; v8 = v14; LOWORD(v55._Wchar) = v34; __pformat_wputchars((int)&v55, 1, (int)&Stream); } else { v24 = *a5++; v8 = v14; LOBYTE(v55._Wchar) = v24; __pformat_putchars(&v55, 1, (int)&Stream); } goto LABEL_9; case 'd': case 'i': v58 |= 0x80u; if ( v49 == 3 ) { v20 = *(mbstate_t *)a5; a5 += 2; v55 = v20; } else { LODWORD(v19) = *a5; if ( v49 == 2 ) goto LABEL_39; if ( v49 != 1 ) { if ( v49 == 5 ) LODWORD(v19) = (char)v19; LABEL_39: v19 = (int)v19; v55 = (mbstate_t)(int)v19; ++a5; goto LABEL_40; } ++a5; v19 = (__int16)v19; v55 = (mbstate_t)(__int16)v19; } LABEL_40: v56 = *(int *)&v20._Byte >> 31; v47 = (__int64)v55; v48 = v56; LABEL_41: __pformat_int(v47, v48, SHIDWORD(v48), (int)&Stream); LABEL_42: v8 = v12 + 1; break; case 'e': v58 |= 0x20u; if ( (v58 & 4) != 0 ) { LABEL_73: v31 = *(long double *)a5; v8 = v12 + 1; a5 += 3; __pformat_efloat(&Stream, v31); } else { LABEL_82: v35 = *(double *)a5; v8 = v12 + 1; a5 += 2; __pformat_efloat(&Stream, v35); } goto LABEL_9; case 'f': v58 |= 0x20u; if ( (v58 & 4) != 0 ) { LABEL_64: v27 = *(long double *)a5; v8 = v12 + 1; a5 += 3; __pformat_float((int)&Stream, v27); } else { LABEL_84: v36 = *(double *)a5; v8 = v12 + 1; a5 += 2; __pformat_float((int)&Stream, v36); } goto LABEL_9; case 'g': v58 |= 0x20u; if ( (v58 & 4) != 0 ) { LABEL_66: v28 = *(long double *)a5; v8 = v12 + 1; a5 += 3; __pformat_gfloat(&Stream, v28); } else { LABEL_86: v37 = *(double *)a5; v8 = v12 + 1; a5 += 2; __pformat_gfloat(&Stream, v37); } goto LABEL_9; case 'h': v11 = v12[1]; if ( v11 == 104 ) { v11 = v12[2]; v49 = 5; v12 += 2; } else { v49 = 1; ++v12; } v13 = 4; goto LABEL_16; case 'j': v11 = v12[1]; v49 = 3; ++v12; v13 = 4; goto LABEL_16; case 'l': v11 = v12[1]; if ( v11 == 108 ) { v11 = v12[2]; v49 = 3; v12 += 2; } else { v49 = 2; ++v12; } v13 = 4; goto LABEL_16; case 'm': v8 = v12 + 1; v26 = strerror(ErrorMessage); __pformat_puts(v26, (int)&Stream); goto LABEL_9; case 'n': v29 = *a5++; v30 = v64; switch ( v49 ) { case 5: *(_BYTE *)v29 = v64; v8 = v12 + 1; break; case 1: *(_WORD *)v29 = v64; v8 = v12 + 1; break; case 2: *(_DWORD *)v29 = v64; v8 = v12 + 1; break; default: *(_DWORD *)v29 = v64; if ( v49 != 3 ) goto LABEL_42; v8 = v12 + 1; *(_DWORD *)(v29 + 4) = v30 >> 31; break; } goto LABEL_9; case 'p': if ( !v13 ) { v32 = a1 & 0x6000; if ( v58 == v50 ) { BYTE1(v32) = BYTE1(v50) | 2; MaxCount[0] = 8; v58 = v32; } } v33 = *a5; *(_DWORD *)&v55._Byte = 0; v8 = v12 + 1; ++a5; v55._Wchar = v33; v56 = 0LL; __pformat_xint(120, v33, 0, 0, (int)&Stream); goto LABEL_9; case 's': v21 = (char *)*a5; v22 = a5 + 1; if ( (unsigned int)(v49 - 2) <= 1 ) { LABEL_106: v40 = (const wchar_t *)*a5; if ( !v40 ) v40 = &String; if ( (MaxCount[0] & 0x80000000) != 0 ) v41 = wcslen(v40); else v41 = wcsnlen(v40, MaxCount[0]); v8 = v14; __pformat_wputchars((int)v40, v41, (int)&Stream); a5 = v22; } else { ++a5; v8 = v14; __pformat_puts(v21, (int)&Stream); } goto LABEL_9; case 't': case 'z': v49 = 0; v11 = v12[1]; v13 = 4; ++v12; goto LABEL_16; default: if ( (unsigned __int8)(v11 - 48) > 9u || v13 > 3 ) goto LABEL_116; if ( v13 ) goto LABEL_113; v13 = 1; goto LABEL_23; } break; } } else { if ( (v58 & 0x4000) != 0 || (v10 = v64, v65 > v64) ) { if ( (v58 & 0x2000) != 0 ) fputc(result, Stream); else *((_BYTE *)&Stream->_ptr + v64) = v9; v10 = v64; } v64 = v10 + 1; } LABEL_9: v9 = *v8++; result = v9; if ( !v9 ) return v64; } } return result; } //----- (00468EC0) -------------------------------------------------------- int *__cdecl __rv_alloc_D2A(int a1) { int v1; // ebx int v2; // eax int *v3; // eax v1 = 0; if ( a1 > 19 ) { v2 = 4; do { v2 *= 2; ++v1; } while ( v2 + 15 < a1 ); } v3 = __Balloc_D2A(v1); *v3 = v1; return v3 + 1; } //----- (00468F00) -------------------------------------------------------- int *__cdecl __nrv_alloc_D2A(char *a1, _DWORD *a2, 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 <= 19 ) { v4 = 0; } else { v3 = 4; v4 = 0; do { v3 *= 2; ++v4; } while ( a3 > v3 + 15 ); } 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; } //----- (00468F80) -------------------------------------------------------- void __cdecl __freedtoa(_DWORD *a1) { int v1; // ecx v1 = *(a1 - 1); *a1 = v1; a1[1] = 1 << v1; __Bfree_D2A(a1 - 1); } //----- (00468FA0) -------------------------------------------------------- unsigned int __cdecl __quorem_D2A(int a1, int a2) { int v2; // ebx unsigned int result; // eax int v4; // eax unsigned int v5; // ebx _DWORD *v6; // ecx unsigned int v7; // esi __int64 v8; // kr00_8 bool v9; // cf int v10; // eax int v11; // ecx _DWORD *v12; // esi unsigned int v13; // ebp __int64 v14; // rcx int v15; // eax _DWORD *v16; // edx unsigned int v17; // eax int v18; // edx __int64 v19; // [esp+18h] [ebp-54h] __int64 v20; // [esp+18h] [ebp-54h] _DWORD *v21; // [esp+2Ch] [ebp-40h] unsigned __int64 v22; // [esp+30h] [ebp-3Ch] int v23; // [esp+38h] [ebp-34h] unsigned int v24; // [esp+3Ch] [ebp-30h] unsigned int v25; // [esp+40h] [ebp-2Ch] int v26; // [esp+44h] [ebp-28h] _DWORD *v27; // [esp+4Ch] [ebp-20h] v2 = *(_DWORD *)(a2 + 16); result = 0; v26 = v2; if ( *(_DWORD *)(a1 + 16) >= v2 ) { v23 = v2 - 1; v4 = 4 * (v2 - 1); v21 = (_DWORD *)(a2 + 20 + v4); v27 = (_DWORD *)(a1 + 20 + v4); v25 = a1 + 20; v24 = *v27 / (unsigned int)(*v21 + 1); if ( *v27 >= (unsigned int)(*v21 + 1) ) { v22 = 0LL; v5 = a2 + 20; v6 = (_DWORD *)(a1 + 20); v19 = 0LL; do { v5 += 4; v7 = *(_DWORD *)(v5 - 4) * v24 + v22; v22 = (*(unsigned int *)(v5 - 4) * (unsigned __int64)v24 + v22) >> 32; v8 = v19 + v7; v9 = *v6 < (unsigned int)v8; v10 = *v6++ - v8; *(v6 - 1) = v10; v19 = -(char)(v9 + BYTE4(v8)) & 1; } while ( (unsigned int)v21 >= v5 ); if ( !*v27 ) { if ( v25 < (unsigned int)(v27 - 1) ) { v11 = v23; do { if ( v27[v11 - v26] ) break; --v11; } while ( v26 - 2 - (((unsigned int)v27 - a1 - 25) >> 2) != v11 ); v23 = v11; } *(_DWORD *)(a1 + 16) = v23; } } if ( __cmp_D2A(a1, a2) >= 0 ) { v12 = (_DWORD *)(a1 + 20); ++v24; v20 = 0LL; v13 = a2 + 20; do { v13 += 4; v14 = v20 + *(unsigned int *)(v13 - 4); v9 = *v12 < (unsigned int)v14; v15 = *v12++ - v14; *(v12 - 1) = v15; v20 = -(char)(v9 + BYTE4(v14)) & 1; } while ( (unsigned int)v21 >= v13 ); v16 = (_DWORD *)(v25 + 4 * v23); if ( !*v16 ) { if ( v25 < (unsigned int)(v16 - 1) ) { v17 = v23 - 1 - (((unsigned int)v16 - a1 - 25) >> 2); v18 = v23; do { if ( *(_DWORD *)(v25 + 4 * v18 - 4) ) break; --v18; } while ( v18 != v17 ); v23 = v18; } *(_DWORD *)(a1 + 16) = v23; } } return v24; } return result; } //----- (004691C0) -------------------------------------------------------- int *__cdecl __gdtoa(int *a1, int a2, int *a3, int *a4, int a5, int a6, int *a7, int **a8) { int v8; // esi int v9; // eax int v11; // edi int v12; // edx int i; // eax int *v14; // ebp int *v15; // eax int *v16; // edx int *v17; // ecx int v18; // ebx int v19; // ebx int v20; // ebx int v21; // eax unsigned int v22; // edx int v23; // eax double v24; // rax int v25; // ecx int v26; // eax signed int v27; // edx long double v28; // fst7 int v29; // eax int v30; // eax int v31; // eax long double v32; // fst7 double v33; // rax int v34; // esi long double v35; // fst6 long double v36; // fst5 int *v37; // eax long double v38; // fst6 long double v39; // fst7 long double v40; // fst6 char v41; // dl long double v42; // rt0 long double v43; // fst5 char v44; // dl int *v45; // ebx int *n; // ecx int v47; // edi int v48; // ecx int v49; // eax int v50; // edi int *v51; // esi int v52; // eax int v53; // eax bool v54; // bl int v55; // edi char v56; // bl int v57; // ebx int v58; // eax int v59; // eax bool v60; // dl double v61; // rax long double v62; // fst6 long double v63; // fst7 unsigned int v64; // ebx int v65; // ebx int *v66; // ebx int v67; // eax int *v68; // edi unsigned int v69; // eax int v70; // edi int *v71; // edx int v72; // ecx int *v73; // ecx int v74; // eax int v75; // eax int *v76; // eax unsigned int v77; // eax int v78; // edx char v79; // al int *v80; // ebx int *v81; // edx int v82; // ecx long double v83; // fst5 bool v84; // zf long double m; // fst6 long double v86; // fst6 long double v87; // fst5 int v88; // edx int v89; // eax bool v90; // zf bool v91; // cc long double v92; // fst6 bool v93; // di long double v94; // fst5 int v95; // edx bool v96; // cl int *v97; // edx int *v98; // edi int *k; // esi int *v100; // eax int v101; // eax int *v102; // ecx double v103; // rax int *v104; // ebx char v105; // dl int v106; // edi int v107; // eax long double v108; // fst6 int v109; // edx int v110; // [esp+18h] [ebp-A4h] int *v111; // [esp+18h] [ebp-A4h] int v112; // [esp+18h] [ebp-A4h] int *v113; // [esp+18h] [ebp-A4h] int *v114; // [esp+18h] [ebp-A4h] unsigned int v115; // [esp+28h] [ebp-94h] bool v116; // [esp+28h] [ebp-94h] int v117; // [esp+2Ch] [ebp-90h] int *j; // [esp+30h] [ebp-8Ch] int v119; // [esp+34h] [ebp-88h] int v120; // [esp+34h] [ebp-88h] int v121; // [esp+34h] [ebp-88h] int v122; // [esp+38h] [ebp-84h] double v123; // [esp+38h] [ebp-84h] int *v124; // [esp+38h] [ebp-84h] int *v125; // [esp+38h] [ebp-84h] int v126; // [esp+40h] [ebp-7Ch] int v127; // [esp+4Ch] [ebp-70h] char v128; // [esp+4Ch] [ebp-70h] int v129; // [esp+50h] [ebp-6Ch] int v130; // [esp+50h] [ebp-6Ch] double v131; // [esp+50h] [ebp-6Ch] int v132; // [esp+58h] [ebp-64h] int v133; // [esp+58h] [ebp-64h] int *v134; // [esp+5Ch] [ebp-60h] int v135; // [esp+60h] [ebp-5Ch] int v136; // [esp+60h] [ebp-5Ch] int *v137; // [esp+60h] [ebp-5Ch] int v138; // [esp+64h] [ebp-58h] int v139; // [esp+68h] [ebp-54h] int v140; // [esp+6Ch] [ebp-50h] int v141; // [esp+70h] [ebp-4Ch] int v142; // [esp+74h] [ebp-48h] bool v143; // [esp+78h] [ebp-44h] bool v144; // [esp+78h] [ebp-44h] int v145; // [esp+7Ch] [ebp-40h] int v146; // [esp+80h] [ebp-3Ch] int v147; // [esp+88h] [ebp-34h] int v148[8]; // [esp+9Ch] [ebp-20h] BYREF v110 = a5; v119 = a6; v8 = *a4; *a4 &= 0xFFFFFFCF; v9 = v8 & 7; if ( v9 == 3 ) { *a7 = -32768; return __nrv_alloc_D2A("Infinity", a8, 8); } v117 = v8 & 4; if ( (v8 & 4) == 0 ) { if ( (v8 & 7) != 0 ) { if ( (unsigned int)(v9 - 1) > 1 ) return 0; v11 = *a1; v12 = 0; for ( i = 32; v11 > i; ++v12 ) i *= 2; v122 = (v11 - 1) >> 5; v14 = __Balloc_D2A(v12); v15 = a3; v16 = v14 + 5; v17 = &a3[v122]; do { v18 = *v15++; *v16++ = v18; } while ( v17 >= v15 ); v19 = v122 * 4 + 4; if ( (char *)v17 + 1 < (char *)a3 + 1 ) v19 = 4; v20 = v19 >> 2; do { v21 = v20--; if ( v14[v20 + 5] ) { _BitScanReverse(&v22, v14[v20 + 5]); v14[4] = v21; v20 = 32 * v21 - (v22 ^ 0x1F); goto LABEL_18; } } while ( v20 ); v14[4] = 0; LABEL_18: v23 = __trailz_D2A((int)v14); v148[0] = v23; v135 = a2; if ( v23 ) { __rshift_D2A((int)v14, v23); v135 = v148[0] + a2; v20 -= v148[0]; } if ( v14[4] ) { v24 = __b2d_D2A((int)v14, v148); LODWORD(v123) = LODWORD(v24); v25 = v20 + v135 - 1; v26 = HIDWORD(v24) & 0xFFFFF | 0x3FF00000; HIDWORD(v123) = v26; v27 = abs32(v25) - 1077; v28 = (v123 - 1.5) * 0.289529654602168 + 0.1760912590558 + (long double)v25 * 0.301029995663981; if ( v27 > 0 ) v28 = v28 + (long double)v27 * 7.0e-17; v127 = (int)v28; if ( v28 < 0.0 && (long double)v127 != v28 ) --v127; HIDWORD(v123) = (v25 << 20) + v26; v132 = -v135; if ( (unsigned int)v127 > 0x16 ) { v142 = 1; } else { if ( __tens_D2A[v127] <= (long double)v123 ) { v142 = 0; v138 = 0; if ( v135 <= 0 ) goto LABEL_69; LABEL_110: v132 = 0; v138 = v135; LABEL_33: if ( v127 < 0 ) { v29 = v127; v138 -= v127; v127 = 0; v140 = v29; v141 = -v29; goto LABEL_35; } LABEL_69: v141 = 0; v132 += v127; v140 = v127; LABEL_35: if ( (unsigned int)a5 > 9 ) { v110 = 0; } else { if ( a5 > 5 ) { v143 = 0; v110 = a5 - 4; } else { v143 = (unsigned int)(v20 + v135 + 1021) <= 0x7F7; } switch ( v110 ) { case 4: v139 = 1; goto LABEL_42; case 5: v139 = 1; LABEL_128: v145 = v140 + a6; v30 = v140 + a6 + 1; v126 = v30; if ( v30 <= 0 ) { v148[0] = 1; v30 = 1; } else { v148[0] = v140 + a6 + 1; } goto LABEL_45; case 2: v139 = 0; LABEL_42: v30 = 1; if ( a6 > 0 ) v30 = a6; v148[0] = v30; v145 = v30; v126 = v30; v119 = v30; LABEL_45: v134 = __rv_alloc_D2A(v30); v129 = a1[3]; v84 = v129 == 1; v130 = v129 - 1; v144 = v143 && (unsigned int)v126 <= 0xE; if ( v84 ) goto LABEL_50; goto LABEL_46; case 3: v139 = 0; goto LABEL_128; } } v148[0] = (int)((long double)v11 * 0.30103) + 3; v134 = __rv_alloc_D2A(v148[0]); v121 = a1[3]; v130 = v121 - 1; if ( v121 == 1 ) { if ( v135 < 0 ) { v106 = v11 - v20; v119 = 0; v48 = v106 + 1; v126 = -1; v49 = a1[1]; v148[0] = v106 + 1; v145 = -1; if ( v49 <= v135 - v106 ) goto LABEL_79; goto LABEL_76; } if ( a1[5] >= v140 ) { v126 = -1; v63 = __tens_D2A[v140]; goto LABEL_198; } v119 = 0; v145 = -1; v126 = -1; LABEL_75: v47 = v11 - v20; v48 = v47 + 1; v49 = a1[1]; v148[0] = v47 + 1; if ( v135 - v47 >= v49 ) { LABEL_168: if ( v110 > 1 ) goto LABEL_169; LABEL_79: v132 += v48; v50 = v141; v136 = v138; v138 += v48; LABEL_80: v139 = 1; v51 = __i2b_D2A(1); LABEL_81: if ( v136 > 0 && v132 > 0 ) { v52 = v132; if ( v136 <= v132 ) v52 = v136; v138 -= v52; v148[0] = v52; v136 -= v52; v132 -= v52; } if ( v141 ) { if ( v139 ) { if ( v50 > 0 ) { v51 = __pow5mult_D2A(v51, v50); v124 = __mult_D2A((int)v51, (int)v14); __Bfree_D2A(v14); v14 = v124; } v53 = v141 - v50; if ( v141 == v50 ) goto LABEL_91; } else { v53 = v141; } v14 = __pow5mult_D2A(v14, v53); } LABEL_91: v125 = __i2b_D2A(1); v54 = v110 <= 1 && v20 == 1; if ( v127 > 0 ) { v125 = __pow5mult_D2A(v125, v127); if ( !v54 || a2 <= a1[1] + 1 ) { v55 = 0; LABEL_136: _BitScanReverse(&v64, v125[v125[4] + 4]); v56 = v64 ^ 0x1F; LABEL_94: v57 = (v56 - (_BYTE)v132 - 4) & 0x1F; v148[0] = v57; v58 = v57; if ( v57 + v138 > 0 ) { v14 = __lshift_D2A(v14, v57 + v138); v58 = v148[0]; } v59 = v132 + v58; if ( v59 > 0 ) v125 = __lshift_D2A(v125, v59); v60 = v110 > 2; if ( v142 && (v116 = v110 > 2, v75 = __cmp_D2A((int)v14, (int)v125), v60 = v110 > 2, v75 < 0) ) { v14 = __multadd_D2A(v14, 10, 0); if ( !v139 ) { if ( v145 > 0 || !v116 ) { v120 = v140; v126 = v145; LABEL_177: v68 = v134; v148[0] = 1; while ( 1 ) { v68 = (int *)((char *)v68 + 1); v77 = __quorem_D2A((int)v14, (int)v125) + 48; *((_BYTE *)v68 - 1) = v77; if ( v148[0] >= v126 ) break; v76 = __multadd_D2A(v14, 10, 0); ++v148[0]; v14 = v76; } LOBYTE(v115) = v77; v73 = 0; LABEL_181: if ( v130 ) { v78 = v14[4]; v79 = *((_BYTE *)v68 - 1); if ( v130 != 2 ) { if ( v78 > 1 || v14[5] ) { LABEL_185: v80 = v134; goto LABEL_188; } LABEL_191: while ( v79 == 48 ) { v79 = *((_BYTE *)v68 - 2); v68 = (int *)((char *)v68 - 1); } goto LABEL_160; } } else { v113 = v73; v14 = __lshift_D2A(v14, 1); v89 = __cmp_D2A((int)v14, (int)v125); v73 = v113; v90 = v89 == 0; v91 = v89 <= 0; v79 = *((_BYTE *)v68 - 1); if ( !v91 || v90 && (v115 & 1) != 0 ) goto LABEL_185; v78 = v14[4]; } if ( v78 <= 1 ) { v109 = 16; if ( !v14[5] ) v109 = v117; v117 = v109; } else { v117 = 16; } goto LABEL_191; } goto LABEL_263; } v51 = __multadd_D2A(v51, 10, 0); if ( v145 <= 0 && v116 ) { LABEL_263: --v140; v126 = v145; goto LABEL_101; } v120 = v140; v126 = v145; } else { if ( v126 <= 0 && v60 ) { LABEL_101: if ( !v126 ) { v125 = __multadd_D2A(v125, 5, 0); if ( __cmp_D2A((int)v14, (int)v125) > 0 ) { v45 = v134; v120 = v140 + 2; LABEL_104: v134 = (int *)((char *)v134 + 1); *(_BYTE *)v45 = 49; v117 = 32; goto LABEL_105; } } LABEL_133: v45 = v134; v117 = 16; v120 = -v119; LABEL_105: __Bfree_D2A(v125); if ( !v51 ) { LABEL_107: __Bfree_D2A(v14); *(_BYTE *)v134 = 0; *a7 = v120; if ( a8 ) *a8 = v134; *a4 |= v117; return v45; } LABEL_106: __Bfree_D2A(v51); goto LABEL_107; } v120 = v140 + 1; if ( !v139 ) goto LABEL_177; } v65 = v136 + v57; if ( v65 > 0 ) v51 = __lshift_D2A(v51, v65); v66 = v51; if ( v55 ) { v104 = __Balloc_D2A(v51[1]); memcpy(v104 + 3, v51 + 3, 4 * v51[4] + 8); v66 = __lshift_D2A(v104, 1); } v148[0] = 1; for ( j = v134; ; j = (int *)((char *)j + 1) ) { v69 = __quorem_D2A((int)v14, (int)v125); v115 = v69 + 48; v128 = v69; v70 = __cmp_D2A((int)v14, (int)v51); v71 = __diff_D2A((int)v125, (int)v66); if ( v71[3] ) { __Bfree_D2A(v71); v67 = 1; } else { v137 = v71; v133 = __cmp_D2A((int)v14, (int)v71); __Bfree_D2A(v137); v67 = v133 | v110; if ( v133 | v110 ) { v67 = v133; } else if ( !(v130 | *a3 & 1) ) { v72 = v70; v68 = (int *)((char *)j + 1); if ( v115 == 57 ) goto LABEL_262; if ( v72 <= 0 ) { if ( v14[4] <= 1 ) { if ( v14[5] ) v67 = 16; } else { v67 = 16; } } else { LOBYTE(v115) = v128 + 49; v67 = 32; } v117 = v67; *(_BYTE *)j = v115; v73 = v51; v51 = v66; goto LABEL_160; } } if ( v70 < 0 || !(v110 | v70) && (*(_BYTE *)a3 & 1) == 0 ) break; v68 = (int *)((char *)j + 1); if ( v67 > 0 && v130 != 2 ) { if ( v115 == 57 ) goto LABEL_262; v73 = v51; v117 = 32; v51 = v66; *(_BYTE *)j = v115 + 1; goto LABEL_160; } *(_BYTE *)j = v115; if ( v148[0] == v126 ) { v73 = v51; v51 = v66; goto LABEL_181; } v14 = __multadd_D2A(v14, 10, 0); if ( v51 == v66 ) { v51 = __multadd_D2A(v51, 10, 0); v66 = v51; } else { v51 = __multadd_D2A(v51, 10, 0); v66 = __multadd_D2A(v66, 10, 0); } ++v148[0]; } v68 = (int *)((char *)j + 1); if ( v130 ) { if ( v14[4] <= 1 && !v14[5] ) { if ( v67 <= 0 ) { v73 = v51; v51 = v66; goto LABEL_240; } LABEL_257: v14 = __lshift_D2A(v14, 1); v107 = __cmp_D2A((int)v14, (int)v125); if ( v107 <= 0 && (v107 || (v115 & 1) == 0) ) { v130 = 32; goto LABEL_260; } if ( v115 != 57 ) { v130 = 32; LOBYTE(v115) = v128 + 49; goto LABEL_260; } LABEL_262: v73 = v51; v51 = v66; v80 = v134; *(_BYTE *)j = 57; v79 = 57; while ( 1 ) { LABEL_188: v81 = (int *)((char *)v68 - 1); if ( v79 != 57 ) { v117 = 32; *(_BYTE *)v81 = v79 + 1; goto LABEL_160; } if ( v81 == v80 ) break; v79 = *((_BYTE *)v68 - 2); v68 = (int *)((char *)v68 - 1); } ++v120; v117 = 32; *(_BYTE *)v134 = 49; LABEL_160: v111 = v73; __Bfree_D2A(v125); if ( !v51 ) { v45 = v134; v134 = v68; goto LABEL_107; } if ( !v111 || v111 == v51 ) { v45 = v134; v134 = v68; } else { __Bfree_D2A(v111); v45 = v134; v134 = v68; } goto LABEL_106; } if ( v130 != 2 ) { v98 = v51; for ( k = (int *)((char *)j + 1); ; k = (int *)((char *)k + 1) ) { v101 = __cmp_D2A((int)v125, (int)v66); v102 = k; if ( v101 <= 0 ) break; *((_BYTE *)k - 1) = v115; v100 = __multadd_D2A(v66, 10, 0); if ( v98 == v66 ) v98 = v100; v114 = v100; v14 = __multadd_D2A(v14, 10, 0); j = k; v115 = __quorem_D2A((int)v14, (int)v125) + 48; v66 = v114; } v51 = v98; v68 = v102; if ( v115 != 57 ) { v117 = 32; v73 = v51; v51 = v66; LOBYTE(v115) = v115 + 1; goto LABEL_240; } goto LABEL_262; } } else { if ( v67 > 0 ) goto LABEL_257; LABEL_260: if ( v14[4] <= 1 ) { v73 = v51; v51 = v66; if ( v14[5] ) v117 = 16; else v117 = v130; LABEL_240: *(_BYTE *)j = v115; goto LABEL_160; } } v73 = v51; v117 = 16; v51 = v66; goto LABEL_240; } } else { v55 = 0; if ( !v54 || a1[1] + 1 >= a2 ) { LABEL_93: v56 = 31; if ( !v127 ) goto LABEL_94; goto LABEL_136; } } ++v138; v55 = 1; ++v132; goto LABEL_93; } LABEL_76: if ( ((v110 - 3) & 0xFFFFFFFD) != 0 ) { v48 = v135 - v49 + 1; v148[0] = v48; if ( v126 <= 0 || v110 <= 1 || v48 <= v126 ) goto LABEL_79; LABEL_169: v74 = v126 - 1; if ( v141 < v126 - 1 ) { v50 = 0; v88 = v74 - v141; v141 = v126 - 1; v127 += v88; } else { v50 = v141 - v74; } if ( v126 < 0 ) { v148[0] = 0; v136 = v138 - v126; } else { v132 += v126; v148[0] = v126; v136 = v138; v138 += v126; } goto LABEL_80; } goto LABEL_168; } v119 = 0; v144 = 0; v139 = 1; v145 = -1; v126 = -1; LABEL_46: v31 = 2; if ( v130 >= 0 ) v31 = v130; v130 = v31; if ( (v8 & 8) == 0 ) goto LABEL_119; v130 = 3 - v31; LABEL_50: if ( v144 && !(v140 | v130) ) { v32 = v123; v148[0] = 0; if ( v142 && v32 < 1.0 ) { if ( v126 ) { v34 = v145; if ( v145 <= 0 ) { LABEL_118: v130 = 0; goto LABEL_119; } v32 = v32 * 10.0; v146 = -1; v103 = v32 * 3.0 + 7.0; LODWORD(v131) = LODWORD(v103); HIDWORD(v131) = HIDWORD(v103) - 54525952; LABEL_56: v35 = v131; v36 = dbl_55ABF8[v34]; if ( v139 ) { v37 = (int *)((char *)v134 + 1); *(_BYTE *)v134 = (int)v32 + 48; v38 = 0.5 / v36 - v35; v39 = v32 - (long double)(int)v32; if ( v38 > v39 ) { LABEL_265: v45 = v134; v134 = v37; v120 = v146 + 1; if ( 0.0 == v39 ) { v117 = 0; goto LABEL_107; } goto LABEL_215; } while ( 1 ) { v43 = v38; if ( v38 > 1.0 - v39 ) break; if ( ++v148[0] >= v34 ) goto LABEL_118; v37 = (int *)((char *)v37 + 1); v40 = v39 * 10.0; v41 = (int)v40; v42 = v40 - (long double)(int)v40; v38 = v43 * 10.0; v39 = v42; *((_BYTE *)v37 - 1) = v41 + 48; if ( v38 > v42 ) goto LABEL_265; } v44 = *((_BYTE *)v37 - 1); LABEL_63: v45 = v134; n = v37; v120 = v146 + 1; goto LABEL_64; } v92 = v35 * v36; v37 = v134; v147 = v11; v93 = 0; v148[0] = 1; v94 = v32; while ( 1 ) { v95 = (int)v94; if ( (int)v94 ) { v93 = v144; v94 = v94 - (long double)(int)v94; } v37 = (int *)((char *)v37 + 1); v44 = v95 + 48; *((_BYTE *)v37 - 1) = v44; if ( v148[0] == v34 ) break; v94 = v94 * 10.0; v93 = v144; ++v148[0]; } v96 = v93; v11 = v147; if ( !v96 ) v94 = v32; if ( v94 > v92 + 0.5 ) goto LABEL_63; if ( 0.5 - v92 > v94 ) { v45 = v134; if ( 0.0 == v94 ) v117 = 0; else v117 = 16; v82 = v146 + 1; goto LABEL_228; } goto LABEL_118; } v61 = v32 + v32 + 7.0; LODWORD(v131) = LODWORD(v61); HIDWORD(v131) = HIDWORD(v61) - 54525952; } else { v33 = v32 + v32 + 7.0; LODWORD(v131) = LODWORD(v33); HIDWORD(v131) = HIDWORD(v33) - 54525952; if ( v126 ) { v146 = 0; v34 = v126; goto LABEL_56; } } v62 = v32 - 5.0; if ( v62 > v131 ) { v120 = 2; v45 = v134; v51 = 0; v125 = 0; goto LABEL_104; } if ( -v131 > v62 ) { LABEL_132: v125 = 0; v51 = 0; goto LABEL_133; } goto LABEL_118; } LABEL_119: if ( v135 >= 0 && a1[5] >= v140 ) { v63 = __tens_D2A[v140]; if ( v119 < 0 ) { v51 = (int *)v126; if ( v126 <= 0 ) { if ( !v126 && v63 * 5.0 < v123 ) { v125 = 0; v45 = v134; v120 = v140 + 2; goto LABEL_104; } goto LABEL_132; } } LABEL_198: v148[0] = 1; v82 = v140 + 1; v120 = v140 + 1; v37 = (int *)((char *)v134 + 1); v112 = (int)(v123 / v63); *(_BYTE *)v134 = v112 + 48; v83 = v123 - (long double)v112 * v63; v84 = v83 == 0.0; for ( m = v83; ; m = v87 ) { if ( v84 ) { v45 = v134; v134 = v37; goto LABEL_107; } if ( v148[0] == v126 ) break; v86 = m * 10.0; v37 = (int *)((char *)v37 + 1); ++v148[0]; v112 = (int)(v86 / v63); *((_BYTE *)v37 - 1) = v112 + 48; v87 = v86 - (long double)v112 * v63; v84 = v87 == 0.0; } if ( v130 ) { if ( v130 == 1 ) { v44 = *((_BYTE *)v37 - 1); v45 = v134; n = v37; goto LABEL_64; } v45 = v134; v134 = v37; LABEL_215: v117 = 16; goto LABEL_107; } v108 = m + m; v44 = *((_BYTE *)v37 - 1); if ( v108 > v63 ) { v45 = v134; for ( n = v37; ; n = v37 ) { LABEL_64: v37 = (int *)((char *)n - 1); if ( v44 != 57 ) { v134 = n; v105 = v44 + 1; goto LABEL_252; } if ( v37 == v45 ) break; v44 = *((_BYTE *)n - 2); LABEL_67: ; } ++v120; v105 = 49; v134 = n; *(_BYTE *)v45 = 48; LABEL_252: *(_BYTE *)v37 = v105; v117 = 32; goto LABEL_107; } v45 = v134; if ( v108 == v63 && (v112 & 1) != 0 ) goto LABEL_67; v117 = 16; do { LABEL_228: v97 = v37; v37 = (int *)((char *)v37 - 1); } while ( *((_BYTE *)v97 - 1) == 48 ); v134 = v97; v120 = v82; goto LABEL_107; } if ( !v139 ) { v50 = v141; v51 = 0; v136 = v138; goto LABEL_81; } goto LABEL_75; } v142 = 0; --v127; } v138 = 0; if ( v135 <= 0 ) goto LABEL_33; goto LABEL_110; } __Bfree_D2A(v14); } *a7 = 1; return __nrv_alloc_D2A("0", a8, 1); } if ( v9 != 4 ) return 0; *a7 = -32768; return __nrv_alloc_D2A((char *)&off_55AB59, a8, 3); } // 55AB59: using guessed type void *off_55AB59; // 55ABF8: using guessed type double dbl_55ABF8[]; // 55AC00: using guessed type double __tens_D2A[24]; // 4691C0: using guessed type int var_20[8]; //----- (0046A910) -------------------------------------------------------- int __cdecl __gethex_D2A(unsigned __int8 **a1, int *a2, int *a3, int **a4, int a5) { char *decimal_point; // edi unsigned __int8 *v6; // ebx unsigned __int8 v7; // cl unsigned __int8 *v8; // eax int v9; // edx int v10; // ebp unsigned __int8 *v11; // ebx char v12; // al int v13; // edx unsigned __int8 v14; // bp unsigned __int8 *v15; // esi unsigned __int8 *v16; // eax int v17; // esi int v18; // eax int v19; // ebx int v20; // ebp int v21; // esi int v22; // edx int j; // eax int *v24; // edi int v25; // ebx int v26; // ecx unsigned __int8 v27; // dl unsigned __int8 v28; // dl int v29; // ecx bool v30; // zf int v31; // eax int v32; // edx int i; // eax int v34; // eax int v35; // edx unsigned __int8 *v36; // ecx unsigned int *v37; // edi char v38; // cl int v39; // eax int v40; // eax unsigned int v41; // ebp int *v42; // ebx unsigned int v43; // eax int *v44; // edx int v45; // eax int v46; // edx int v47; // edx int v48; // edi int v49; // edx int v50; // edx int v51; // ecx int v52; // ecx unsigned int v53; // esi unsigned int v54; // eax unsigned int v55; // eax int v56; // ebx signed int v57; // ebx int v58; // edi int v59; // esi int v60; // eax int v61; // ebx int v62; // eax int v64; // ebx int v65; // edx char v66; // dl int v67; // eax int v68; // ecx int v69; // ebx int v70; // ecx int v71; // esi unsigned int v72; // eax int v73; // edi unsigned __int8 *v74; // ecx int v75; // eax int v76; // eax int Val; // [esp+4h] [ebp-48h] int v78; // [esp+14h] [ebp-38h] unsigned int v79; // [esp+14h] [ebp-38h] int v80; // [esp+18h] [ebp-34h] BOOL v81; // [esp+18h] [ebp-34h] unsigned int v82; // [esp+18h] [ebp-34h] unsigned __int8 *v83; // [esp+1Ch] [ebp-30h] char *v84; // [esp+1Ch] [ebp-30h] int v85; // [esp+20h] [ebp-2Ch] int *v86; // [esp+24h] [ebp-28h] _BYTE *v87; // [esp+24h] [ebp-28h] char *v88; // [esp+24h] [ebp-28h] _DWORD *v89; // [esp+28h] [ebp-24h] int v90; // [esp+28h] [ebp-24h] int v91; // [esp+2Ch] [ebp-20h] decimal_point = localeconv()->decimal_point; if ( !byte_769690 ) __mingw_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; } if ( __hexdig_D2A[v7] ) { v79 = (unsigned int)v11; ++v10; v16 = 0; v81 = 0; goto LABEL_31; } v12 = *decimal_point; v13 = 0; if ( *decimal_point ) { v80 = v10; 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; v16 = &v11[v13]; if ( __hexdig_D2A[v7] ) { if ( v7 == 48 ) { v11 += v13; do v27 = *++v11; while ( v27 == 48 ); v79 = (unsigned int)v11; v10 = 1; v81 = __hexdig_D2A[v27] == 0; if ( !__hexdig_D2A[v27] ) { LABEL_32: if ( v27 != *decimal_point ) { v28 = *v11; v29 = 4 * (v16 - v11); v30 = v16 == 0; v31 = 0; if ( !v30 ) v31 = v29; v85 = v31; LABEL_36: if ( (v28 & 0xDF) != 80 ) goto LABEL_37; LABEL_53: v83 = v11; v11 = (unsigned __int8 *)v79; goto LABEL_54; } if ( v16 ) { v85 = 4 * (v16 - v11); if ( (*v11 & 0xDF) != 80 ) { LABEL_37: *a1 = v11; if ( !v81 ) { LABEL_38: v32 = 0; for ( i = (int)&v11[-v79 - 1]; i > 7; ++v32 ) i >>= 1; v86 = __Balloc_D2A(v32); v89 = v86 + 5; if ( decimal_point[1] ) { v34 = 0; do ++v34; while ( decimal_point[v34 + 1] ); v91 = v34; } else { v91 = 0; } if ( (unsigned int)v11 <= v79 ) { v37 = (unsigned int *)(v86 + 5); v53 = 0; v42 = v86 + 6; v55 = 32; } else { v35 = 0; v36 = v11; v84 = &decimal_point[v91]; v37 = (unsigned int *)(v86 + 5); v82 = 0; do { while ( 1 ) { v40 = *(v36 - 1); v41 = (unsigned int)(v36 - 1); v42 = (int *)(v37 + 1); if ( (_BYTE)v40 != *v84 ) break; v36 = (unsigned __int8 *)(v41 - v91); if ( v41 - v91 <= v79 ) goto LABEL_68; } if ( v35 == 32 ) { v43 = v82; v44 = (int *)(v37 + 2); v82 = 0; *v37++ = v43; v40 = *(v36 - 1); v42 = v44; v38 = 0; v35 = 4; } else { v38 = v35; v35 += 4; } v39 = (__hexdig_D2A[v40] & 0xF) << v38; v36 = (unsigned __int8 *)v41; v82 |= v39; } while ( v41 > v79 ); LABEL_68: v53 = v82; _BitScanReverse(&v54, v82); v55 = v54 ^ 0x1F; } *v37 = v53; v56 = v42 - v89; v86[4] = v56; v57 = 32 * v56 - v55; v58 = *a2; if ( v57 > *a2 ) { v69 = v57 - v58; v59 = __any_on_D2A((int)v86, v69); if ( v59 ) { v59 = 1; if ( (v89[(v69 - 1) >> 5] & (1 << (v69 - 1))) != 0 ) { if ( v69 == 1 || (v59 = 3, !__any_on_D2A((int)v86, v69 - 1)) ) v59 = 2; } } __rshift_D2A((int)v86, v69); v85 += v69; } else { v59 = 0; if ( v57 < *a2 ) { v85 -= v58 - v57; v86 = __lshift_D2A(v86, v58 - v57); v89 = v86 + 5; } } if ( a2[2] < v85 ) { LABEL_110: __Bfree_D2A(v86); goto LABEL_111; } v60 = a2[1]; if ( v60 <= v85 ) { v61 = 1; goto LABEL_75; } v64 = v60 - v85; if ( v58 > v60 - v85 ) { v70 = v64 - 1; if ( v59 ) { v59 = 1; } else if ( v64 != 1 ) { v76 = __any_on_D2A((int)v86, v64 - 1); v70 = v64 - 1; v59 = v76; } Val = v64; if ( (v89[v70 >> 5] & (1 << v70)) != 0 ) v59 |= 2u; v58 -= v64; v61 = 2; __rshift_D2A((int)v86, Val); v85 = a2[1]; LABEL_75: if ( !v59 ) { LABEL_80: *a4 = v86; *a3 = v85; return v61; } v62 = a2[3]; if ( v62 == 2 ) { a5 = 1 - a5; } else if ( v62 != 3 ) { if ( v62 != 1 || (v59 & 2) == 0 || ((*v89 | v59) & 1) == 0 ) goto LABEL_79; LABEL_128: v71 = v86[4]; v86 = __increment_D2A(v86); v72 = (unsigned int)(v86 + 5); if ( v61 == 2 ) { v61 = 34; if ( *a2 - 1 == v58 ) v61 = ((*(_DWORD *)(v72 + 4 * (v58 >> 5)) & (1 << v58)) == 0) + 33; goto LABEL_80; } if ( v86[4] <= v71 && ((v73 = v58 & 0x1F) == 0 || (_BitScanReverse(&v72, *(_DWORD *)(v72 + 4 * v71 - 4)), 32 - v73 <= (int)(v72 ^ 0x1F))) || (__rshift_D2A((int)v86, 1), ++v85, a2[2] >= v85) ) { v61 = 33; goto LABEL_80; } goto LABEL_110; } if ( !a5 ) { LABEL_79: v61 |= 0x10u; goto LABEL_80; } goto LABEL_128; } v65 = a2[3]; if ( v65 == 2 ) { if ( !a5 ) goto LABEL_141; } else if ( v65 == 3 ) { if ( a5 ) goto LABEL_141; } else if ( v65 == 1 && v58 == v64 ) { if ( v58 == 1 ) { LABEL_141: v86[4] = 1; *v89 = 1; goto LABEL_93; } if ( __any_on_D2A((int)v86, v58 - 1) ) { v60 = a2[1]; goto LABEL_141; } } __Bfree_D2A(v86); LABEL_99: *_errno() = 34; return 80; } return 0; } goto LABEL_53; } v66 = decimal_point[1]; if ( v66 ) { v67 = 1; while ( v11[v67] == v66 ) { v66 = decimal_point[++v67]; v68 = v67; if ( !v66 ) goto LABEL_151; } v28 = *v11; } else { v68 = 1; LABEL_151: v74 = &v11[v68]; v11 = v74; v28 = *v74; if ( __hexdig_D2A[*v74] ) { do { v75 = *++v11; v28 = v75; } while ( __hexdig_D2A[v75] ); v85 = 4 * (v74 - v11); goto LABEL_36; } } v85 = 0; goto LABEL_36; } } else { v81 = 0; v11 += v13; v10 = 1; v79 = (unsigned int)v15; } do { LABEL_31: v26 = *++v11; v27 = v26; } while ( __hexdig_D2A[v26] ); goto LABEL_32; } } else { LABEL_12: v16 = v11; } v83 = v16; if ( (v7 & 0xDF) != 80 ) { v81 = 1; v17 = 0; v85 = 0; v78 = 0; goto LABEL_15; } v85 = 0; v81 = 1; LABEL_54: v45 = v83[1]; if ( (_BYTE)v45 == 43 ) { v78 = 0; } else { if ( (_BYTE)v45 != 45 ) { v78 = 0; v87 = v83 + 1; goto LABEL_57; } v78 = 1; } v45 = v83[2]; v87 = v83 + 2; LABEL_57: v46 = (unsigned __int8)__hexdig_D2A[v45]; v17 = 0; v16 = v83; if ( (unsigned __int8)(v46 - 1) <= 0x18u ) { v90 = v46 - 16; v16 = v87 + 1; v47 = (unsigned __int8)__hexdig_D2A[(unsigned __int8)v87[1]]; if ( (unsigned __int8)(__hexdig_D2A[(unsigned __int8)v87[1]] - 1) <= 0x18u ) { v88 = decimal_point; v48 = v47; v49 = v90; do { v30 = (v49 & 0xF8000000) == 0; v50 = 5 * v49; if ( !v30 ) v17 = 1; v51 = v16[1]; v49 = v48 + 2 * v50 - 16; ++v16; v48 = (unsigned __int8)__hexdig_D2A[v51]; } while ( (unsigned __int8)(__hexdig_D2A[v51] - 1) <= 0x18u ); v90 = v49; decimal_point = v88; } v52 = -v90; if ( !v78 ) v52 = v90; v85 += v52; } LABEL_15: if ( !v10 ) v16 = v11 - 1; *a1 = v16; if ( v81 ) return 0; if ( !v17 ) { v79 = (unsigned int)v11; v11 = v83; goto LABEL_38; } v18 = a2[3]; if ( v78 ) { if ( v18 == 2 ) { if ( a5 ) goto LABEL_99; } else if ( v18 != 3 || !a5 ) { goto LABEL_99; } v86 = __Balloc_D2A(0); v86[4] = 1; v86[5] = 1; v60 = a2[1]; LABEL_93: v25 = 98; *a4 = v86; *a3 = v60; *_errno() = 34; return v25; } if ( v18 == 2 ) { if ( !a5 ) goto LABEL_111; goto LABEL_23; } if ( v18 == 3 ) { if ( a5 ) goto LABEL_111; goto LABEL_23; } if ( v18 != 1 ) { LABEL_23: v19 = *a2 & 0x1F; v20 = *a2 >> 5; v21 = v20 - ((v19 == 0) - 1); v22 = 0; for ( j = v21 >> 1; j; j >>= 1 ) ++v22; v24 = __Balloc_D2A(v22); *a4 = v24; v24[4] = v21; if ( v20 > 0 ) { memset(v24 + 5, 255, 4 * v20); v78 = v20; } if ( v21 > v20 ) v24[v78 + 5] = 32 >> (32 - v19); v25 = 17; *a3 = a2[1]; return v25; } LABEL_111: *_errno() = 34; return 163; } // 769690: using guessed type char byte_769690; //----- (0046B2F0) -------------------------------------------------------- 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; } //----- (0046B400) -------------------------------------------------------- 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; } //----- (0046B440) -------------------------------------------------------- int __mingw_hexdig_init_D2A() { const char *v0; // edx int v1; // eax int v2; // ecx char *v3; // edx int v4; // eax int v5; // ecx int v6; // edx int result; // eax char v8; // cl v0 = "123456789"; v1 = 48; do { v2 = (int)&(v0++)[16 - (_DWORD)"123456789"]; __hexdig_D2A[v1] = v2; v1 = *((unsigned __int8 *)v0 - 1); } while ( (_BYTE)v1 ); v3 = (char *)&unk_55ABB4; v4 = 97; do { v5 = (int)&(v3++)[26 - (_DWORD)&unk_55ABB4]; __hexdig_D2A[v4] = v5; v4 = (unsigned __int8)*(v3 - 1); } while ( (_BYTE)v4 ); v6 = 5614523; result = 65; do { v8 = v6++ + 95; __hexdig_D2A[result] = v8; result = *(unsigned __int8 *)(v6 - 1); } while ( (_BYTE)result ); return result; } //----- (0046B4C0) -------------------------------------------------------- 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; // esi int *v11; // edi char v12; // cl int *v13; // ebx int v14; // edx unsigned int v15; // eax int v16; // edx int v17; // eax int *v18; // eax unsigned int v19; // edi int *v20; // ebp int *v21; // edi int *v22; // esi unsigned int v23; // eax size_t Size; // edx int v25; // eax int *v26; // eax int v29; // edx char i; // dl int *v31; // ecx _DWORD *v32; // edx unsigned int v33; // eax unsigned int v34; // ebx char v35; // [esp+10h] [ebp-3Ch] char v36; // [esp+10h] [ebp-3Ch] int v37; // [esp+14h] [ebp-38h] int v38; // [esp+18h] [ebp-34h] int *v39; // [esp+1Ch] [ebp-30h] unsigned __int8 *v40; // [esp+20h] [ebp-2Ch] int *v41; // [esp+28h] [ebp-24h] int v42; // [esp+2Ch] [ebp-20h] if ( !byte_769690 ) __mingw_hexdig_init_D2A(); v42 = *a2 & 0x1F; v3 = &a3[*a2 >> 5]; if ( v42 ) { v39 = &a3[*a2 >> 5]; v41 = v3 + 1; } else { v41 = &a3[*a2 >> 5]; v39 = v3 - 1; } *(v41 - 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 = v39; v38 = 0; v10 = 0; v37 = 0; v11 = v39; do { while ( 1 ) { v12 = __hexdig_D2A[v7]; if ( v12 ) break; if ( v7 > 0x20 ) { v31 = v11; v19 = (unsigned int)v9; v20 = v31; if ( v7 == 41 && v37 ) { *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 ( v37 > v38 ) { if ( v11 < v9 && v10 <= 7 ) { v40 = v8; v13 = v11; v35 = 4 * (8 - v10); v14 = *v11; do { v15 = v13[1]; ++v13; v16 = (v15 << (32 - v35)) | v14; v17 = v15 >> v35; *(v13 - 1) = v16; *v13 = v17; v14 = v17; } while ( v13 < v9 ); v8 = v40; } if ( v11 <= a3 ) { v7 = v8[1]; v4 = v8; v10 = 8; goto LABEL_23; } v9 = v11 - 1; *(v11 - 1) = 0; v10 = 0; v38 = v37; --v11; } for ( i = v8[1]; (unsigned __int8)i <= 0x20u; ++v8 ) i = v8[2]; if ( i != 48 ) goto LABEL_49; if ( (v8[2] & 0xDF) != 88 ) goto LABEL_49; v7 = v8[3]; if ( (unsigned __int8)v7 <= 0x20u ) goto LABEL_49; v4 = v8 + 2; v8 += 3; } ++v10; ++v37; if ( v10 > 8 ) { if ( v11 <= a3 ) goto LABEL_49; *(v11 - 1) = 0; v29 = 0; --v11; v10 = 1; } else { v29 = 16 * *v11; } *v11 = v29 | v12 & 0xF; LABEL_49: v7 = v8[1]; v4 = v8; LABEL_23: ++v8; } while ( v7 ); v18 = v11; v19 = (unsigned int)v9; v20 = v18; if ( !v37 ) return 4; LABEL_25: if ( v19 > (unsigned int)v20 && v10 <= 7 ) { v32 = v20; v36 = 4 * (8 - v10); v33 = *v20; do { v34 = v32[1]; *v32++ = (v34 << (32 - v36)) | v33; v33 = v34 >> v36; *v32 = v34 >> v36; } while ( (unsigned int)v32 < v19 ); } if ( a3 >= v20 ) { v25 = *(v41 - 1); if ( v42 ) { v25 &= 0xFFFFFFFF >> (32 - v42); *(v41 - 1) = v25; } } else { v21 = a3; v22 = v20; do *v21++ = *v22++; while ( v39 >= v22 ); v23 = 4 * ((unsigned int)((char *)v39 - (char *)v20) >> 2) + 4; if ( (char *)v39 + 1 < (char *)v20 + 1 ) v23 = 4; Size = 4 * ((unsigned int)((char *)v39 - ((char *)a3 + v23)) >> 2) + 4; if ( (char *)a3 + v23 + 1 > (char *)v39 + 1 ) Size = 4; memset((char *)a3 + v23, 0, Size); v25 = *(v41 - 1); } if ( v25 ) return 5; if ( v39 != a3 ) { v26 = v39; while ( 1 ) { if ( *--v26 ) return 5; if ( a3 == v26 ) { v39 = v26; break; } } } *v39 = 1; return 5; } // 769690: using guessed type char byte_769690; //----- (0046B8E0) -------------------------------------------------------- void __usercall dtoa_lock(int a1@) { int v2; // eax __int32 v3; // eax if ( dtoa_CS_init == 2 ) goto LABEL_9; if ( dtoa_CS_init ) { if ( dtoa_CS_init != 1 ) return; do { LABEL_4: Sleep(1u); v2 = dtoa_CS_init; } while ( dtoa_CS_init == 1 ); goto LABEL_5; } v3 = _InterlockedExchange(&dtoa_CS_init, 1); if ( !v3 ) { InitializeCriticalSection(&dtoa_CritSec); InitializeCriticalSection(&CriticalSection); atexit(dtoa_lock_cleanup); dtoa_CS_init = 2; goto LABEL_9; } if ( v3 == 2 ) { dtoa_CS_init = 2; goto LABEL_9; } v2 = dtoa_CS_init; if ( dtoa_CS_init == 1 ) goto LABEL_4; LABEL_5: if ( v2 == 2 ) LABEL_9: EnterCriticalSection((LPCRITICAL_SECTION)(24 * a1 + 7774400)); } // 76A0A8: using guessed type int dtoa_CS_init; //----- (0046B9C0) -------------------------------------------------------- void dtoa_lock_cleanup(void) { if ( _InterlockedExchange(&dtoa_CS_init, 3) == 2 ) { DeleteCriticalSection(&dtoa_CritSec); DeleteCriticalSection(&CriticalSection); } } // 76A0A8: using guessed type int dtoa_CS_init; //----- (0046BA00) -------------------------------------------------------- int *__cdecl __Balloc_D2A(int a1) { int v1; // esi int *result; // eax bool v3; // zf int *v4; // [esp+1Ch] [ebp-10h] dtoa_lock(0); if ( a1 > 9 ) goto LABEL_2; result = (int *)freelist[a1]; if ( result ) { v3 = dtoa_CS_init == 2; freelist[a1] = *result; if ( !v3 ) goto LABEL_4; LABEL_8: v4 = result; LeaveCriticalSection(&dtoa_CritSec); result = v4; goto LABEL_4; } result = (int *)pmem_next; v1 = 1 << a1; if ( ((unsigned int)(4 * (1 << a1) + 27) >> 3) + (((_BYTE *)pmem_next - (_BYTE *)&private_mem) >> 3) > 0x120 ) { LABEL_2: v1 = 1 << a1; result = (int *)malloc((4 * (1 << a1) + 27) & 0xFFFFFFF8); if ( !result ) return result; } else { pmem_next = (char *)pmem_next + ((4 * (1 << a1) + 27) & 0xFFFFFFF8); } v3 = dtoa_CS_init == 2; result[1] = a1; result[2] = v1; if ( v3 ) goto LABEL_8; LABEL_4: result[4] = 0; result[3] = 0; return result; } // 53E248: using guessed type void *pmem_next; // 76A080: using guessed type int freelist[]; // 76A0A8: using guessed type int dtoa_CS_init; //----- (0046BAF0) -------------------------------------------------------- void __cdecl __Bfree_D2A(void *Block) { int v1; // eax bool v2; // zf int v3; // edx if ( Block ) { if ( *((int *)Block + 1) <= 9 ) { dtoa_lock(0); v1 = *((_DWORD *)Block + 1); v2 = dtoa_CS_init == 2; v3 = freelist[v1]; freelist[v1] = (int)Block; *(_DWORD *)Block = v3; if ( v2 ) LeaveCriticalSection(&dtoa_CritSec); } else { free(Block); } } } // 76A080: using guessed type int freelist[]; // 76A0A8: using guessed type int dtoa_CS_init; //----- (0046BB60) -------------------------------------------------------- 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; LODWORD(v4) = 0; ++v3; HIDWORD(v4) = HIDWORD(v5); } 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(a1); v6[v10 + 5] = HIDWORD(v4); v6[4] = v10 + 1; } } else { v6 = a1; a1[v10 + 5] = HIDWORD(v5); a1[4] = v10 + 1; } } return v6; } //----- (0046BC40) -------------------------------------------------------- _DWORD *__cdecl __i2b_D2A(int a1) { _DWORD *result; // eax bool v2; // zf _DWORD *v3; // [esp+1Ch] [ebp-10h] dtoa_lock(0); result = (_DWORD *)dword_76A084; if ( dword_76A084 ) { dword_76A084 = *(_DWORD *)dword_76A084; if ( dtoa_CS_init != 2 ) { LABEL_3: result[3] = 0; result[4] = 1; result[5] = a1; return result; } LABEL_8: v3 = result; LeaveCriticalSection(&dtoa_CritSec); result = v3; goto LABEL_3; } result = pmem_next; if ( (unsigned int)((((_BYTE *)pmem_next - (_BYTE *)&private_mem) >> 3) + 4) <= 0x120 ) { pmem_next = (char *)pmem_next + 32; LABEL_7: v2 = dtoa_CS_init == 2; result[1] = 1; result[2] = 2; if ( !v2 ) goto LABEL_3; goto LABEL_8; } result = malloc(0x20u); if ( result ) goto LABEL_7; return result; } // 53E248: using guessed type void *pmem_next; // 76A084: using guessed type int dword_76A084; // 76A0A8: using guessed type int dtoa_CS_init; //----- (0046BCF0) -------------------------------------------------------- int *__cdecl __mult_D2A(int a1, int a2) { int v2; // edi int v3; // ebx int v4; // esi int v5; // ebp int *v6; // eax unsigned int v7; // eax unsigned int v8; // 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] int *v21; // [esp+30h] [ebp-2Ch] unsigned int *v22; // [esp+34h] [ebp-28h] 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)); v21 = v6; if ( v6 ) { v22 = (unsigned int *)(v6 + 5); v7 = (unsigned int)&v6[v20 + 5]; if ( (unsigned int)v22 < v7 ) memset(v22, 0, 4 * ((v7 - (unsigned int)v21 - 21) >> 2) + 4); v17 = v3 + 20 + 4 * v5; v15 = v2 + 20; v19 = v2 + 20 + 4 * v4; if ( v2 + 20 < v19 ) { v8 = 4; if ( v17 >= v3 + 21 ) v8 = 4 * ((unsigned int)(4 * v5 - 1) >> 2) + 4; v23 = v8; v18 = v22; 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; v9 = HIDWORD(v11); *(v10 - 1) = v11; } while ( v17 > v14 ); LODWORD(v11) = v18++; *(_DWORD *)(v11 + v23) = HIDWORD(v11); } while ( v19 > v15 ); } LABEL_15: if ( v20 > 0 ) { v12 = v20; do { if ( v22[v12 - 1] ) break; --v12; } while ( v12 ); v20 = v12; } v21[4] = v20; } return v21; } //----- (0046BEA0) -------------------------------------------------------- int *__cdecl __pow5mult_D2A(int *a1, int a2) { int *v2; // edi int v3; // ebx int *v4; // ebp int **v5; // esi int *v6; // edi int *v7; // eax int *v8; // edi int v10; // eax bool v11; // zf int v12; // edx int *v13; // eax int *v14; // eax int *Block; // [esp+0h] [ebp-3Ch] v2 = a1; if ( (a2 & 3) == 0 || (v2 = __multadd_D2A(a1, dword_55ABDC[a2 & 3], 0)) != 0 ) { v3 = a2 >> 2; v4 = v2; if ( a2 >> 2 ) { v5 = (int **)p5s; if ( !p5s ) { dtoa_lock(1); v5 = (int **)p5s; if ( !p5s ) { v14 = __Balloc_D2A(1); v5 = (int **)v14; if ( !v14 ) { p5s = 0; return 0; } v14[5] = 625; v14[4] = 1; p5s = (int)v14; *v14 = 0; } if ( dtoa_CS_init == 2 ) LeaveCriticalSection(&CriticalSection); } v4 = v2; if ( (v3 & 1) != 0 ) goto LABEL_9; LABEL_5: v3 >>= 1; if ( v3 ) { while ( 1 ) { v6 = *v5; if ( *v5 ) goto LABEL_7; dtoa_lock(1); v6 = *v5; if ( !*v5 ) { v13 = __mult_D2A((int)v5, (int)v5); *v5 = v13; v6 = v13; if ( !v13 ) return 0; *v13 = 0; } if ( dtoa_CS_init != 2 ) { LABEL_7: v5 = (int **)v6; } else { v5 = (int **)v6; LeaveCriticalSection(&CriticalSection); } if ( (v3 & 1) == 0 ) goto LABEL_5; LABEL_9: v7 = __mult_D2A((int)v4, (int)v5); v8 = v7; if ( !v7 ) return 0; if ( !v4 ) { v4 = v7; goto LABEL_5; } if ( v4[1] <= 9 ) { dtoa_lock(0); v10 = v4[1]; v11 = dtoa_CS_init == 2; v12 = freelist[v10]; freelist[v10] = (int)v4; *v4 = v12; v4 = v8; if ( v11 ) LeaveCriticalSection(&dtoa_CritSec); goto LABEL_5; } Block = v4; v4 = v7; free(Block); v3 >>= 1; if ( !v3 ) return v4; } } } return v4; } return 0; } // 55ABDC: using guessed type int dword_55ABDC[]; // 769760: using guessed type int p5s; // 76A080: using guessed type int freelist[]; // 76A0A8: using guessed type int dtoa_CS_init; //----- (0046C080) -------------------------------------------------------- int *__cdecl __lshift_D2A(int *a1, int a2) { int v2; // edx int v3; // esi int i; // eax int *v5; // eax int *v6; // edi int *v7; // esi unsigned int v8; // edx char v9; // cl int *v10; // ebp unsigned int v11; // eax int v12; // ebx int v13; // ebx unsigned int v14; // ecx _DWORD *v16; // edi _DWORD *v17; // esi int *v18; // [esp+1Ch] [ebp-30h] int v19; // [esp+20h] [ebp-2Ch] v2 = a1[1]; v3 = a2 >> 5; v19 = (a2 >> 5) + a1[4]; for ( i = a1[2]; v19 + 1 > i; ++v2 ) i *= 2; v5 = __Balloc_D2A(v2); v18 = v5; if ( v5 ) { v6 = v5 + 5; if ( v3 > 0 ) { v6 += v3; memset(v5 + 5, 0, 4 * v3); } v7 = a1 + 5; v8 = (unsigned int)&a1[a1[4] + 5]; v9 = a2 & 0x1F; if ( (a2 & 0x1F) != 0 ) { v10 = v6; v11 = 0; do { v12 = *v7; ++v10; ++v7; *(v10 - 1) = (v12 << v9) | v11; v11 = (unsigned int)*(v7 - 1) >> (32 - v9); } while ( v8 > (unsigned int)v7 ); v13 = v19 + 1; v14 = 4 * ((v8 - (unsigned int)a1 - 21) >> 2) + 4; if ( v8 < (unsigned int)a1 + 21 ) v14 = 4; if ( !v11 ) v13 = v19; *(int *)((char *)v6 + v14) = v11; v19 = v13; } else { do { *v6 = *v7; v17 = v7 + 1; v16 = v6 + 1; if ( v8 <= (unsigned int)v17 ) break; *v16 = *v17; v7 = v17 + 1; v6 = v16 + 1; } while ( v8 > (unsigned int)v7 ); } v18[4] = v19; __Bfree_D2A(a1); } return v18; } //----- (0046C1C0) -------------------------------------------------------- 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; } //----- (0046C210) -------------------------------------------------------- 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; // edi int v10; // eax int v11; // ebx int v12; // esi unsigned int v13; // ebp __int64 v14; // rcx __int64 v15; // rax unsigned __int64 v16; // rax int v17; // edx unsigned int v18; // ebx unsigned int v19; // eax unsigned int v20; // ebx int v21; // ebx int v22; // eax unsigned int *v23; // ecx int v24; // ebp int v25; // ebx unsigned int v26; // eax unsigned __int64 v27; // rax int v28; // eax int v29; // edx int v31; // [esp+18h] [ebp-44h] int *v32; // [esp+24h] [ebp-38h] int v33; // [esp+24h] [ebp-38h] unsigned int v34; // [esp+28h] [ebp-34h] int *v35; // [esp+2Ch] [ebp-30h] unsigned int v36; // [esp+30h] [ebp-2Ch] int v37; // [esp+34h] [ebp-28h] int v38; // [esp+38h] [ebp-24h] int *v39; // [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_24: v4 = 1; v2 = a2; a2 = a1; } LABEL_6: v8 = __Balloc_D2A(*(_DWORD *)(v2 + 4)); v35 = v8; v9 = v8; if ( v8 ) { v8[3] = v4; v10 = *(_DWORD *)(v2 + 16); v11 = v2 + 20; v12 = 0; v38 = v11; v37 = v10; v36 = v11 + 4 * v10; v31 = v11; v13 = a2 + 20; v34 = a2 + 20 + 4 * *(_DWORD *)(a2 + 16); v39 = v9 + 5; v32 = v9 + 5; do { v31 += 4; v13 += 4; v14 = *(unsigned int *)(v13 - 4); v15 = *(unsigned int *)(v31 - 4) - (unsigned __int64)(unsigned int)v12 - v14; LODWORD(v14) = *(_DWORD *)(v31 - 4) - v12 - v14; v16 = __PAIR64__(HIDWORD(v15), (unsigned int)++v32) & 0x1FFFFFFFFLL; v12 = HIDWORD(v16); *(_DWORD *)(v16 - 4) = v14; v17 = v14; } while ( v34 > v13 ); v18 = v34 - a2 - 21; v19 = v18 & 0xFFFFFFFC; v20 = v18 >> 2; if ( v34 < a2 + 21 ) v19 = 0; v21 = 4 * v20 + 4; v22 = (int)v39 + v19; if ( v34 < a2 + 21 ) v21 = 4; v23 = (unsigned int *)(v21 + v38); v33 = v21 + v38; if ( v36 > v21 + v38 ) { v24 = (int)v39 + v21; v25 = (int)v39 + v21; do { v26 = *v23++; v27 = v26 - (unsigned __int64)(unsigned int)v12; v25 += 4; v12 = BYTE4(v27) & 1; v17 = v27; *(_DWORD *)(v25 - 4) = v27; } while ( v36 > (unsigned int)v23 ); v22 = v24 + ((v36 - 1 - v33) & 0xFFFFFFFC); } if ( !v17 ) { v28 = v22 - 4 * v37; v29 = v37; do --v29; while ( !*(_DWORD *)(v28 + 4 * v29) ); v37 = v29; } v35[4] = v37; } return v35; } else { v5 = 4 * v3; v6 = (_DWORD *)(a1 + 20 + 4 * v3); v7 = (_DWORD *)(a2 + v5 + 20); do { if ( *--v6 != *--v7 ) { if ( *v6 < *v7 ) goto LABEL_24; goto LABEL_6; } } while ( a1 + 20 < (unsigned int)v6 ); v35 = __Balloc_D2A(0); if ( !v35 ) return v35; v35[4] = 1; v35[5] = 0; return v35; } } //----- (0046C440) -------------------------------------------------------- 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; } //----- (0046C550) -------------------------------------------------------- int *__cdecl __d2b_D2A(double a1, _DWORD *a2, _DWORD *a3) { int *v3; // edx int v6; // eax int v8; // esi int v9; // ebx unsigned int v10; // eax v3 = __Balloc_D2A(1); if ( !v3 ) return v3; _ESI = LODWORD(a1); _EBX = HIDWORD(a1) & 0xFFFFF; v6 = (HIDWORD(a1) >> 20) & 0x7FF; if ( v6 ) _EBX = HIDWORD(a1) & 0xFFFFF | 0x100000; if ( LODWORD(a1) ) { __asm { tzcnt edi, esi } v8 = LODWORD(a1) >> _EDI; if ( _EDI ) { v8 |= _EBX << (32 - _EDI); _EBX >>= _EDI; } v3[6] = _EBX; v9 = 1 - ((_EBX == 0) - 1); v3[5] = v8; v3[4] = v9; if ( !v6 ) goto LABEL_8; } else { v3[4] = 1; __asm { tzcnt ecx, ebx } _EDI = _ECX + 32; v3[5] = _EBX >> _ECX; v9 = 1; if ( !v6 ) { LABEL_8: *a2 = _EDI - 1074; _BitScanReverse(&v10, v3[v9 + 4]); *a3 = 32 * v9 - (v10 ^ 0x1F); return v3; } } *a2 = v6 + _EDI - 1075; *a3 = 53 - _EDI; return v3; } //----- (0046C650) -------------------------------------------------------- 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; } //----- (0046C680) -------------------------------------------------------- int *__cdecl __s2b_D2A(int a1, int a2, int a3, int a4, int a5) { int v5; // edi int v6; // eax int v7; // edx int *result; // eax char *v9; // ebx int v10; // edx char *v11; // ebx char *v12; // esi 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 = &v9[a5]; } if ( a3 > v5 ) { v12 = &v11[a3 - v5]; do { v13 = *v11++; result = __multadd_D2A(result, 10, v13 - 48); } while ( v12 != v11 ); } return result; } //----- (0046C770) -------------------------------------------------------- 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; } } // 46C770: using guessed type int var_10[4]; //----- (0046C830) -------------------------------------------------------- int __cdecl __match_D2A(char **a1, char *a2) { char *v3; // edx int v4; // eax int v5; // ebx v3 = *a1; do { v5 = *a2++; ++v3; if ( !v5 ) { *a1 = v3; return 1; } v4 = *v3; if ( (unsigned int)(v4 - 65) < 0x1A ) v4 += 32; } while ( v4 == v5 ); return 0; } //----- (0046C880) -------------------------------------------------------- size_t __cdecl __copybits_D2A(char *a1, int Val, size_t Size) { char *v3; // ecx _DWORD *v4; // esi size_t result; // eax char *v6; // edi v3 = a1; v4 = (_DWORD *)(Size + 20); result = Size + 20 + 4 * *(_DWORD *)(Size + 16); if ( Size + 20 < result ) { v6 = a1; do { *(_DWORD *)v6 = *v4++; v6 += 4; } while ( result > (unsigned int)v4 ); result = (result - Size - 21) >> 2; v3 = &a1[4 * result + 4]; } if ( &a1[4 * ((Val - 1) >> 5) + 4] > v3 ) return (size_t)memset(v3, 0, 4 * ((unsigned int)(&a1[4 * ((Val - 1) >> 5) + 3] - v3) >> 2) + 4); return result; } //----- (0046C900) -------------------------------------------------------- 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; } //----- (0046C970) -------------------------------------------------------- size_t __cdecl strnlen(const char *String, size_t MaxCount) { size_t v2; // edx const char *v3; // eax v2 = 0; v3 = String; if ( MaxCount ) { do { if ( !*v3 ) break; v2 = ++v3 - String; } while ( v3 - String < MaxCount ); } return v2; } //----- (0046C9A0) -------------------------------------------------------- size_t __cdecl wcsnlen(const wchar_t *Source, size_t MaxCount) { size_t v2; // edx size_t v3; // eax v2 = MaxCount; v3 = 0; if ( MaxCount ) { while ( Source[v3] ) { if ( MaxCount == ++v3 ) return v2; } return v3; } return v2; } //----- (0046CC00) -------------------------------------------------------- int __cdecl __mbrtowc_cp(LPWSTR lpWideCharStr, BYTE *lpMultiByteStr, int a3, int *a4, UINT CodePage, unsigned int a6) { int v6; // edx BYTE TestChar; // al int v8; // eax int v10; // [esp+2Ch] [ebp-10h] BYREF if ( !lpMultiByteStr ) return 0; if ( !a3 ) return -2; v6 = *a4; TestChar = *lpMultiByteStr; *a4 = 0; v10 = v6; if ( !TestChar ) { *lpWideCharStr = 0; return 0; } if ( a6 <= 1 ) goto LABEL_11; if ( (_BYTE)v6 ) { BYTE1(v10) = TestChar; v8 = MultiByteToWideChar(CodePage, 8u, (LPCCH)&v10, 2, lpWideCharStr, 1); LABEL_9: if ( v8 ) return 2; LABEL_19: *_errno() = 42; return -1; } if ( !IsDBCSLeadByteEx(CodePage, TestChar) ) { LABEL_11: if ( !CodePage ) { *lpWideCharStr = *lpMultiByteStr; return 1; } if ( MultiByteToWideChar(CodePage, 8u, (LPCCH)lpMultiByteStr, 1, lpWideCharStr, 1) ) return 1; goto LABEL_19; } if ( a3 != 1 ) { v8 = MultiByteToWideChar(CodePage, 8u, (LPCCH)lpMultiByteStr, 2, lpWideCharStr, 1); goto LABEL_9; } *(_BYTE *)a4 = *lpMultiByteStr; return -2; } //----- (0046CDA0) -------------------------------------------------------- size_t __cdecl mbrtowc(wchar_t *DstCh, const char *SrcCh, size_t SizeInBytes, mbstate_t *State) { wchar_t *v4; // ebx mbstate_t *v5; // esi unsigned int v7; // [esp+10h] [ebp-2Ch] unsigned int v8; // [esp+14h] [ebp-28h] WCHAR v9; // [esp+2Eh] [ebp-Eh] BYREF v4 = DstCh; v5 = State; v9 = 0; if ( !DstCh ) v4 = &v9; v8 = ___mb_cur_max_func(); v7 = ___lc_codepage_func(); if ( !State ) v5 = (mbstate_t *)&internal_mbstate_2; return __mbrtowc_cp(v4, (BYTE *)SrcCh, SizeInBytes, (int *)v5, v7, v8); } //----- (0046CE00) -------------------------------------------------------- size_t __cdecl mbsrtowcs(wchar_t *Dest, const char **PSrc, size_t Count, mbstate_t *State) { mbstate_t *v4; // eax int v5; // eax unsigned int v6; // esi BYTE *v7; // eax unsigned int v8; // edi wchar_t *v9; // ebx int i; // eax BYTE *v11; // ecx unsigned int v13; // ebx size_t v14; // esi int v15; // eax unsigned int v16; // [esp+28h] [ebp-34h] WCHAR v17[15]; // [esp+3Eh] [ebp-1Eh] BYREF mbstate_t *Statea; // [esp+6Ch] [ebp+10h] v4 = (mbstate_t *)&internal_mbstate_1; if ( State ) v4 = State; Statea = v4; v16 = ___lc_codepage_func(); v5 = ___mb_cur_max_func(); if ( !PSrc ) return 0; v6 = v5; v7 = (BYTE *)*PSrc; if ( !*PSrc ) return 0; if ( Dest ) { v8 = 0; if ( Count ) { v9 = Dest; for ( i = __mbrtowc_cp(Dest, v7, Count, (int *)Statea, v16, v6); i > 0; i = __mbrtowc_cp(v9, v11, Count - v8, (int *)Statea, v16, v6) ) { v8 += i; ++v9; v11 = (BYTE *)&(*PSrc)[i]; *PSrc = (const char *)v11; if ( Count <= v8 ) return v8; } if ( Count > v8 && !i ) *PSrc = 0; } return v8; } else { v13 = v6; v17[0] = 0; v14 = 0; while ( 1 ) { v15 = __mbrtowc_cp(v17, &v7[v14], v13, (int *)Statea, v16, v13); if ( v15 <= 0 ) break; v14 += v15; v7 = (BYTE *)*PSrc; } return v14; } } // 46CE00: using guessed type WCHAR var_1E[15]; //----- (0046CF40) -------------------------------------------------------- size_t __cdecl mbrlen(const char *Ch, size_t SizeInBytes, mbstate_t *State) { mbstate_t *v3; // ebx unsigned int v5; // [esp+10h] [ebp-2Ch] unsigned int v6; // [esp+14h] [ebp-28h] WCHAR v7[7]; // [esp+2Eh] [ebp-Eh] BYREF v3 = State; v7[0] = 0; v6 = ___mb_cur_max_func(); v5 = ___lc_codepage_func(); if ( !State ) v3 = (mbstate_t *)&bss_1; return __mbrtowc_cp(v7, (BYTE *)Ch, SizeInBytes, (int *)v3, v5, v6); } // 46CF40: using guessed type WCHAR var_E[7]; //----- (0046CFA0) -------------------------------------------------------- int __cdecl __wcrtomb_cp(LPSTR lpMultiByteStr, WCHAR a2, UINT CodePage, int cbMultiByte) { int result; // eax WCHAR WideCharStr[8]; // [esp+2Ch] [ebp-20h] BYREF BOOL UsedDefaultChar; // [esp+3Ch] [ebp-10h] BYREF WideCharStr[0] = a2; if ( !CodePage ) { if ( a2 <= 0xFFu ) { *lpMultiByteStr = a2; return 1; } LABEL_7: *_errno() = 42; return -1; } UsedDefaultChar = 0; result = WideCharToMultiByte(CodePage, 0, WideCharStr, 1, lpMultiByteStr, cbMultiByte, 0, &UsedDefaultChar); if ( !result || UsedDefaultChar ) goto LABEL_7; return result; } // 46CFA0: using guessed type WCHAR WideCharStr[8]; //----- (0046D040) -------------------------------------------------------- size_t __cdecl wcrtomb(char *Dest, wchar_t Source, mbstate_t *State) { char *v3; // ebx int v4; // edi unsigned int v5; // eax CHAR v7; // [esp+1Bh] [ebp-11h] BYREF v3 = Dest; if ( !Dest ) v3 = &v7; v4 = ___mb_cur_max_func(); v5 = ___lc_codepage_func(); return __wcrtomb_cp(v3, Source, v5, v4); } //----- (0046D090) -------------------------------------------------------- size_t __cdecl wcsrtombs(char *Dest, const wchar_t **PSource, size_t Count, mbstate_t *State) { size_t v4; // ebx char *v5; // esi int v6; // edi const wchar_t *v7; // ebp WCHAR *v8; // ebx int v9; // ebp size_t v10; // edi int v11; // eax int v13; // ebp WCHAR *i; // edi int v15; // eax unsigned int v16; // [esp+1Ch] [ebp-30h] CHAR v18[33]; // [esp+2Bh] [ebp-21h] BYREF v4 = 0; v5 = Dest; v16 = ___lc_codepage_func(); v6 = ___mb_cur_max_func(); v7 = *PSource; if ( !*PSource ) return v4; if ( !Dest ) { v13 = v6; for ( i = (WCHAR *)*PSource; ; ++i ) { v15 = __wcrtomb_cp(v18, *i, v16, v13); if ( v15 <= 0 ) break; v4 += v15; if ( !v18[v15 - 1] ) return v4 - 1; } return -1; } if ( Count ) { v8 = (WCHAR *)*PSource; v9 = v6; v10 = 0; while ( 1 ) { v11 = __wcrtomb_cp(v5, *v8, v16, v9); if ( v11 <= 0 ) return -1; v5 += v11; v10 += v11; if ( !*(v5 - 1) ) { *PSource = 0; return v10 - 1; } ++v8; if ( Count <= v10 ) { v7 = v8; v4 = v10; break; } } } *PSource = v7; return v4; } // 46D090: using guessed type CHAR var_21[33]; //----- (0046D1B0) -------------------------------------------------------- FILE *__cdecl __acrt_iob_func(unsigned int Ix) { return &__iob[Ix]; } //----- (0046D1C0) -------------------------------------------------------- _invalid_parameter_handler __cdecl _get_invalid_parameter_handler() { return (_invalid_parameter_handler)handler; } // 76A10C: using guessed type int handler; //----- (0046D1D0) -------------------------------------------------------- _invalid_parameter_handler __cdecl _set_invalid_parameter_handler(_invalid_parameter_handler Handler) { return (_invalid_parameter_handler)_InterlockedExchange(&handler, (__int32)Handler); } // 76A10C: using guessed type int handler; //----- (0046D1E0) -------------------------------------------------------- int __cdecl mingw_rand_s(int a1) { char v1; // dl int result; // eax if ( !a1 ) return 22; if ( !pRtlGenRandom ) return 22; v1 = pRtlGenRandom(a1, 4); result = 0; if ( !v1 ) return 22; return result; } // 76A110: using guessed type int (__stdcall *pRtlGenRandom)(_DWORD, _DWORD); //----- (0046D230) -------------------------------------------------------- int __cdecl init_rand_s(int a1) { HMODULE ModuleHandleW; // eax int (__cdecl *rand_s)(int); // eax HMODULE LibraryW; // eax ModuleHandleW = GetModuleHandleW(&ModuleName); rand_s = (int (__cdecl *)(int))GetProcAddress(ModuleHandleW, "rand_s"); if ( !rand_s ) { LibraryW = LoadLibraryW(&LibFileName); pRtlGenRandom = (int (__stdcall *)(_DWORD, _DWORD))GetProcAddress(LibraryW, "SystemFunction036"); rand_s = mingw_rand_s; } _rand_s = rand_s; return rand_s(a1); } // 53E258: using guessed type int (__cdecl *_rand_s)(int); // 76A110: using guessed type int (__stdcall *pRtlGenRandom)(_DWORD, _DWORD); //----- (0046D2B0) -------------------------------------------------------- void __cdecl _lock_file(FILE *Stream) { FILE *v1; // eax if ( Stream >= __acrt_iob_func(0) && Stream <= __acrt_iob_func(0x13u) ) { v1 = __acrt_iob_func(0); _lock(Stream - v1 + 16); Stream->_flag |= 0x8000u; } else { EnterCriticalSection((LPCRITICAL_SECTION)&Stream[1]); } } // 46D498: using guessed type int __cdecl _lock(_DWORD); //----- (0046D320) -------------------------------------------------------- void __cdecl _unlock_file(FILE *Stream) { FILE *v1; // eax if ( Stream >= __acrt_iob_func(0) && Stream <= __acrt_iob_func(0x13u) ) { Stream->_flag &= ~0x8000u; v1 = __acrt_iob_func(0); _unlock((FILE *)(Stream - v1 + 16)); } else { LeaveCriticalSection((LPCRITICAL_SECTION)&Stream[1]); } } // 46D490: using guessed type void __cdecl _unlock(FILE *Stream); //----- (0046D390) -------------------------------------------------------- int __cdecl ___mb_cur_max_func() { return ___mb_cur_max; } //----- (0046D3A0) -------------------------------------------------------- int msvcrt___lc_codepage_func() { return *(_DWORD *)msvcrt__lc_codepage; } // 76A114: using guessed type int msvcrt__lc_codepage; //----- (0046D3B0) -------------------------------------------------------- int setlocale_codepage_hack() { char *v0; // eax char *v1; // eax int v2; // edx v0 = setlocale(2, 0); v1 = strchr(v0, 46); v2 = 0; if ( v1 ) return atoi(v1 + 1); return v2; } //----- (0046D3F0) -------------------------------------------------------- int init_codepage_func() { HMODULE ModuleHandleW; // eax HMODULE v1; // ebx unsigned int (__cdecl *___lc_codepage_func)(); // eax ModuleHandleW = GetModuleHandleW(&off_55AD8C); if ( ModuleHandleW ) { v1 = ModuleHandleW; ___lc_codepage_func = (unsigned int (__cdecl *)())GetProcAddress(ModuleHandleW, "___lc_codepage_func"); if ( ___lc_codepage_func ) { LABEL_3: *(_DWORD *)____lc_codepage_func = ___lc_codepage_func; return ___lc_codepage_func(); } msvcrt__lc_codepage = (int)GetProcAddress(v1, "__lc_codepage"); if ( msvcrt__lc_codepage ) { ___lc_codepage_func = (unsigned int (__cdecl *)())msvcrt___lc_codepage_func; goto LABEL_3; } } *(_DWORD *)____lc_codepage_func = setlocale_codepage_hack; return setlocale_codepage_hack(); } // 76A114: using guessed type int msvcrt__lc_codepage; //----- (0046D4B0) -------------------------------------------------------- int __cdecl __mingwthr_key_dtor(int a1, int a2) { if ( a2 ) return ___w64_mingwthr_add_key_dtor(a1, a2); else return 0; } //----- (0046D4D0) -------------------------------------------------------- int __cdecl _txnal_cow_string_D1() { int v0; // eax v0 = MEMORY[0](); return MEMORY[0](1, 0, v0 - 12); } //----- (0046D500) -------------------------------------------------------- void __cdecl __noreturn _txnal_cow_string_c_str() { JUMPOUT(0); } // 46D504: control flows out of bounds to 0 //----- (0046D510) -------------------------------------------------------- void __cdecl __noreturn _txnal_sso_string_c_str() { JUMPOUT(0); } // 46D514: control flows out of bounds to 0 //----- (0046D520) -------------------------------------------------------- char *__cdecl _txnal_logic_error_get_msg(char *a1) { return a1 + 4; } //----- (0046D530) -------------------------------------------------------- void __cdecl _txnal_cow_string_D1_commit(volatile signed __int32 *Block) { int v1; // eax int v2[3]; // [esp+1Fh] [ebp-Dh] BYREF if ( !_CRT_MT ) { v1 = *((_DWORD *)Block + 2); *((_DWORD *)Block + 2) = v1 - 1; if ( v1 > 0 ) return; LABEL_5: std::string::_Rep::_M_destroy((void *)Block, (int)v2); return; } if ( _InterlockedExchangeAdd(Block + 2, 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 53E1E4: using guessed type int _CRT_MT; // 46D530: using guessed type int var_D[3]; //----- (0046D580) -------------------------------------------------------- char *__cdecl _txnal_runtime_error_get_msg(char *a1) { return a1 + 4; } //----- (0046D590) -------------------------------------------------------- void __cdecl _txnal_cow_string_C1_for_exceptions(struct _Unwind_Exception **a1) { int v1; // eax int v2; // ecx int lpuexcpt; // [esp+14h] [ebp-48h] struct _Unwind_Exception *lpuexcpta; // [esp+14h] [ebp-48h] lpuexcpt = 1; while ( (unsigned __int8)MEMORY[0]() ) ++lpuexcpt; v1 = MEMORY[0](lpuexcpt + 12); v2 = lpuexcpt; *(_DWORD *)(v1 + 8) = 0; v1 += 12; *(_DWORD *)(v1 - 8) = lpuexcpt - 1; *(_DWORD *)(v1 - 12) = lpuexcpt - 1; lpuexcpta = (struct _Unwind_Exception *)v1; MEMORY[0](v2); *a1 = lpuexcpta; } //----- (0046D6B0) -------------------------------------------------------- int printf(char *a1, ...) { FILE *v1; // eax va_list va; // [esp+24h] [ebp+Ch] BYREF va_start(va, a1); v1 = ___acrt_iob_func(1u); return __mingw_vfprintf(v1, a1, (int *)va); } //----- (0046D6E0) -------------------------------------------------------- int sprintf(char *a1, char *a2, ...) { va_list va; // [esp+28h] [ebp+10h] BYREF va_start(va, a2); return __mingw_vsprintf((FILE *)a1, a2, (int *)va); } //----- (0046D710) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNKSt11logic_error4whatEv(int a1) { JUMPOUT(0); } // 46D717: control flows out of bounds to 0 //----- (0046D730) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNKSt13runtime_error4whatEv(int a1) { JUMPOUT(0); } // 46D737: control flows out of bounds to 0 //----- (0046D750) -------------------------------------------------------- void __cdecl _ZGTtNSt11logic_errorC2EPKc(struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] _BYTE v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_55FF90; std::string::string(v3, (char *)byte_55A2A0, (int)v2); MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::logic_error::~logic_error(v1); } // 46D7E2: variable 'v1' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 46D750: using guessed type int var_C[3]; //----- (0046D840) -------------------------------------------------------- void __cdecl _ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] _BYTE v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_55FF90; std::string::string(v3, (char *)byte_55A2A0, (int)v2); MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::logic_error::~logic_error(v1); } // 46D8D6: variable 'v1' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 46D840: using guessed type int var_C[3]; //----- (0046D930) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt11logic_errorD0Ev(int a1) { int v1; // eax v1 = MEMORY[0](); MEMORY[0](1, 0, v1 - 12); JUMPOUT(0); } // 46D968: control flows out of bounds to 0 //----- (0046D970) -------------------------------------------------------- int _ZGTtNSt11logic_errorD2Ev() { int v0; // eax v0 = MEMORY[0](); return MEMORY[0](1, 0, v0 - 12); } //----- (0046D9B0) -------------------------------------------------------- void __cdecl _ZGTtNSt11range_errorC2EPKc(struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_5601E8; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_55FFA4; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::range_error::~range_error(v1); } // 46DA49: variable 'v1' is possibly undefined // 55FFA4: using guessed type void (__cdecl *off_55FFA4)(std::range_error *__hidden this); // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 46D9B0: using guessed type int var_C[3]; //----- (0046DAB0) -------------------------------------------------------- void __cdecl _ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_5601E8; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_55FFA4; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::range_error::~range_error(v1); } // 46DB4D: variable 'v1' is possibly undefined // 55FFA4: using guessed type void (__cdecl *off_55FFA4)(std::range_error *__hidden this); // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 46DAB0: using guessed type int var_C[3]; //----- (0046DBB0) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt11range_errorD0Ev(int a1) { int v1; // eax v1 = MEMORY[0](); MEMORY[0](1, 0, v1 - 12); JUMPOUT(0); } // 46DBE8: control flows out of bounds to 0 //----- (0046DBF0) -------------------------------------------------------- int _ZGTtNSt11range_errorD2Ev() { int v0; // eax v0 = MEMORY[0](); return MEMORY[0](1, 0, v0 - 12); } //----- (0046DC30) -------------------------------------------------------- void __cdecl _ZGTtNSt12domain_errorC2EPKc(struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_55FF90; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_560028; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::domain_error::~domain_error(v1); } // 46DCC9: variable 'v1' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 560028: using guessed type void (__cdecl *off_560028)(std::domain_error *__hidden this); // 46DC30: using guessed type int var_C[3]; //----- (0046DD30) -------------------------------------------------------- void __cdecl _ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_55FF90; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_560028; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::domain_error::~domain_error(v1); } // 46DDCD: variable 'v1' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 560028: using guessed type void (__cdecl *off_560028)(std::domain_error *__hidden this); // 46DD30: using guessed type int var_C[3]; //----- (0046DE30) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt12domain_errorD0Ev(int a1) { int v1; // eax v1 = MEMORY[0](); MEMORY[0](1, 0, v1 - 12); JUMPOUT(0); } // 46DE68: control flows out of bounds to 0 //----- (0046DE70) -------------------------------------------------------- int _ZGTtNSt12domain_errorD2Ev() { int v0; // eax v0 = MEMORY[0](); return MEMORY[0](1, 0, v0 - 12); } //----- (0046DEB0) -------------------------------------------------------- void __cdecl _ZGTtNSt12length_errorC2EPKc(struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_55FF90; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_56003C; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::length_error::~length_error(v1); } // 46DF49: variable 'v1' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 56003C: using guessed type void (__cdecl *off_56003C)(std::length_error *__hidden this); // 46DEB0: using guessed type int var_C[3]; //----- (0046DFB0) -------------------------------------------------------- void __cdecl _ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_55FF90; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_56003C; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::length_error::~length_error(v1); } // 46E04D: variable 'v1' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 56003C: using guessed type void (__cdecl *off_56003C)(std::length_error *__hidden this); // 46DFB0: using guessed type int var_C[3]; //----- (0046E0B0) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt12length_errorD0Ev(int a1) { int v1; // eax v1 = MEMORY[0](); MEMORY[0](1, 0, v1 - 12); JUMPOUT(0); } // 46E0E8: control flows out of bounds to 0 //----- (0046E0F0) -------------------------------------------------------- int _ZGTtNSt12length_errorD2Ev() { int v0; // eax v0 = MEMORY[0](); return MEMORY[0](1, 0, v0 - 12); } //----- (0046E130) -------------------------------------------------------- void __cdecl _ZGTtNSt12out_of_rangeC2EPKc(struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_55FF90; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_560050; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::out_of_range::~out_of_range(v1); } // 46E1C9: variable 'v1' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 560050: using guessed type void (__cdecl *off_560050)(std::out_of_range *__hidden this); // 46E130: using guessed type int var_C[3]; //----- (0046E230) -------------------------------------------------------- void __cdecl _ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_55FF90; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_560050; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::out_of_range::~out_of_range(v1); } // 46E2CD: variable 'v1' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 560050: using guessed type void (__cdecl *off_560050)(std::out_of_range *__hidden this); // 46E230: using guessed type int var_C[3]; //----- (0046E330) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt12out_of_rangeD0Ev(int a1) { int v1; // eax v1 = MEMORY[0](); MEMORY[0](1, 0, v1 - 12); JUMPOUT(0); } // 46E368: control flows out of bounds to 0 //----- (0046E370) -------------------------------------------------------- int _ZGTtNSt12out_of_rangeD2Ev() { int v0; // eax v0 = MEMORY[0](); return MEMORY[0](1, 0, v0 - 12); } //----- (0046E3B0) -------------------------------------------------------- void __cdecl _ZGTtNSt13runtime_errorC2EPKc(struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] _BYTE v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_5601E8; std::string::string(v3, (char *)byte_55A2A0, (int)v2); MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::runtime_error::~runtime_error(v1); } // 46E442: variable 'v1' is possibly undefined // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 46E3B0: using guessed type int var_C[3]; //----- (0046E4A0) -------------------------------------------------------- void __cdecl _ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] _BYTE v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_5601E8; std::string::string(v3, (char *)byte_55A2A0, (int)v2); MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::runtime_error::~runtime_error(v1); } // 46E536: variable 'v1' is possibly undefined // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 46E4A0: using guessed type int var_C[3]; //----- (0046E590) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt13runtime_errorD0Ev(int a1) { int v1; // eax v1 = MEMORY[0](); MEMORY[0](1, 0, v1 - 12); JUMPOUT(0); } // 46E5C8: control flows out of bounds to 0 //----- (0046E5D0) -------------------------------------------------------- int _ZGTtNSt13runtime_errorD2Ev() { int v0; // eax v0 = MEMORY[0](); return MEMORY[0](1, 0, v0 - 12); } //----- (0046E610) -------------------------------------------------------- void __cdecl _ZGTtNSt14overflow_errorC2EPKc(struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_5601E8; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_560368; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::overflow_error::~overflow_error(v1); } // 46E6A9: variable 'v1' is possibly undefined // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 560368: using guessed type void (__cdecl *off_560368)(std::overflow_error *__hidden this); // 46E610: using guessed type int var_C[3]; //----- (0046E710) -------------------------------------------------------- void __cdecl _ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_5601E8; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_560368; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::overflow_error::~overflow_error(v1); } // 46E7AD: variable 'v1' is possibly undefined // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 560368: using guessed type void (__cdecl *off_560368)(std::overflow_error *__hidden this); // 46E710: using guessed type int var_C[3]; //----- (0046E810) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt14overflow_errorD0Ev(int a1) { int v1; // eax v1 = MEMORY[0](); MEMORY[0](1, 0, v1 - 12); JUMPOUT(0); } // 46E848: control flows out of bounds to 0 //----- (0046E850) -------------------------------------------------------- int _ZGTtNSt14overflow_errorD2Ev() { int v0; // eax v0 = MEMORY[0](); return MEMORY[0](1, 0, v0 - 12); } //----- (0046E890) -------------------------------------------------------- void __cdecl _ZGTtNSt15underflow_errorC2EPKc(struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_5601E8; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_56059C; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::underflow_error::~underflow_error(v1); } // 46E929: variable 'v1' is possibly undefined // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 56059C: using guessed type void (__cdecl *off_56059C)(std::underflow_error *__hidden this); // 46E890: using guessed type int var_C[3]; //----- (0046E990) -------------------------------------------------------- void __cdecl _ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_5601E8; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_56059C; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::underflow_error::~underflow_error(v1); } // 46EA2D: variable 'v1' is possibly undefined // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 56059C: using guessed type void (__cdecl *off_56059C)(std::underflow_error *__hidden this); // 46E990: using guessed type int var_C[3]; //----- (0046EA90) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt15underflow_errorD0Ev(int a1) { int v1; // eax v1 = MEMORY[0](); MEMORY[0](1, 0, v1 - 12); JUMPOUT(0); } // 46EAC8: control flows out of bounds to 0 //----- (0046EAD0) -------------------------------------------------------- int _ZGTtNSt15underflow_errorD2Ev() { int v0; // eax v0 = MEMORY[0](); return MEMORY[0](1, 0, v0 - 12); } //----- (0046EB10) -------------------------------------------------------- void __cdecl _ZGTtNSt16invalid_argumentC2EPKc(struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_55FF90; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_5605D0; MEMORY[0](8); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::invalid_argument::~invalid_argument(v1); } // 46EBA9: variable 'v1' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 5605D0: using guessed type void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this); // 46EB10: using guessed type int var_C[3]; //----- (0046EC10) -------------------------------------------------------- void __cdecl _ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( struct _Unwind_Exception **a1) { std::exception *v1; // [esp+0h] [ebp-68h] char v2[5]; // [esp+57h] [ebp-11h] BYREF int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_DWORD *)&v2[1] = &off_55FF90; std::string::string(v3, (char *)byte_55A2A0, (int)v2); *(_DWORD *)&v2[1] = &off_5605D0; MEMORY[0](8); MEMORY[0](); _txnal_cow_string_C1_for_exceptions(a1 + 1); std::invalid_argument::~invalid_argument(v1); } // 46ECAD: variable 'v1' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 5605D0: using guessed type void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this); // 46EC10: using guessed type int var_C[3]; //----- (0046ED10) -------------------------------------------------------- void __cdecl __noreturn _ZGTtNSt16invalid_argumentD0Ev(int a1) { int v1; // eax v1 = MEMORY[0](); MEMORY[0](1, 0, v1 - 12); JUMPOUT(0); } // 46ED48: control flows out of bounds to 0 //----- (0046ED50) -------------------------------------------------------- int _ZGTtNSt16invalid_argumentD2Ev() { int v0; // eax v0 = MEMORY[0](); return MEMORY[0](1, 0, v0 - 12); } //----- (0046ED90) -------------------------------------------------------- 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; } //----- (0046EDF0) -------------------------------------------------------- char *__usercall parse_lsda_header@(int a1@, char *a2@, int a3@) { int 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(); *(_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); 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; } //----- (0046EED0) -------------------------------------------------------- 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 char v11; // al unsigned __int8 v12; // dl int v13; // ecx int result; // eax int *v15; // [esp+1Ch] [ebp-30h] BYREF int v16[8]; // [esp+2Ch] [ebp-20h] BYREF v15 = 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 ) return 0; v11 = *(_BYTE *)(a1 + 20); if ( v11 == -1 ) { v13 = 0; } else { v12 = v11 & 7; if ( (v11 & 7) == 2 ) { v13 = -2 * v7; } else { if ( v12 <= 2u ) { if ( v12 ) LABEL_18: abort(); } else if ( v12 != 3 ) { if ( v12 != 4 ) goto LABEL_18; v13 = -8 * v7; goto LABEL_11; } v13 = -4 * v7; } } LABEL_11: read_encoded_value_with_base(v11, *(int **)(a1 + 8), (int *)(*(_DWORD *)(a1 + 12) + v13), v16); result = get_adjusted_ptr(v16[0], a2, &v15); if ( (_BYTE)result ) return result; } } // 46EED0: using guessed type int var_20[8]; //----- (0046EFB0) -------------------------------------------------------- int __usercall base_of_encoded_value@(char a1@) { unsigned __int8 v1; // dl if ( a1 == -1 ) return 0; v1 = a1 & 0x70; if ( (a1 & 0x70) == 48 ) return _Unwind_GetDataRelBase(); if ( v1 <= 0x30u ) { if ( v1 == 32 ) return _Unwind_GetTextRelBase(); if ( v1 > 0x20u || (a1 & 0x60) != 0 ) LABEL_11: abort(); return 0; } if ( v1 != 64 ) { if ( v1 != 80 ) goto LABEL_11; return 0; } return _Unwind_GetRegionStart(); } //----- (0046F030) -------------------------------------------------------- void __cdecl __gxx_exception_cleanup(_Unwind_Reason_Code a1, void (**a2)(void)) { void (*v2)(void); // edx if ( (unsigned int)a1 > _URC_FOREIGN_EXCEPTION_CAUGHT ) __cxxabiv1::__terminate(*(a2 - 9)); if ( !_InterlockedSub((volatile signed __int32 *)a2 - 16, 1u) ) { v2 = *(a2 - 11); if ( v2 ) v2(); __cxa_free_exception(a2 + 8); } } //----- (0046F080) -------------------------------------------------------- char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4) { int *v4; // esi 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 v4 = a3; 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 ) v4 = a2; v6 += (int)v4; if ( a1 < 0 ) *a4 = *(_DWORD *)v6; else LABEL_8: *a4 = v6; break; default: abort(); } } return result; } //----- (0046F1D0) -------------------------------------------------------- void __cdecl __noreturn __cxxabiv1::__terminate(void (*a1)(void)) { a1(); abort(); } //----- (0046F280) -------------------------------------------------------- void __cdecl __noreturn __cxxabiv1::__unexpected(void (*a1)(void)) { a1(); std::terminate(); } //----- (0046F290) -------------------------------------------------------- void __fastcall __cxxabiv1::__forced_unwind::~__forced_unwind(void *Block) { operator delete(Block); } //----- (0046F2C0) -------------------------------------------------------- void __fastcall __cxxabiv1::__class_type_info::~__class_type_info(_DWORD *a1) { std::type_info *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_55F0D4; std::type_info::~type_info(Block); operator delete(a1); } // 46F2CC: variable 'Block' is possibly undefined // 55F0D4: using guessed type void (__cdecl *off_55F0D4)(__cxxabiv1::__class_type_info *__hidden this); //----- (0046F2F0) -------------------------------------------------------- void __cdecl __cxxabiv1::__class_type_info::~__class_type_info(__cxxabiv1::__class_type_info *this) { _DWORD *v1; // ecx *v1 = &off_55F0D4; std::type_info::~type_info(this); } // 46F2F0: variable 'v1' is possibly undefined // 55F0D4: using guessed type void (__cdecl *off_55F0D4)(__cxxabiv1::__class_type_info *__hidden this); //----- (0046F300) -------------------------------------------------------- void __fastcall __cxxabiv1::__foreign_exception::~__foreign_exception(void *Block) { operator delete(Block); } //----- (0046F330) -------------------------------------------------------- void __fastcall __cxxabiv1::__si_class_type_info::~__si_class_type_info(_DWORD *a1) { __cxxabiv1::__class_type_info *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_55F114; __cxxabiv1::__class_type_info::~__class_type_info(Block); operator delete(a1); } // 46F33C: variable 'Block' is possibly undefined // 55F114: using guessed type void (__cdecl *off_55F114)(__cxxabiv1::__si_class_type_info *__hidden this); //----- (0046F360) -------------------------------------------------------- void __cdecl __cxxabiv1::__si_class_type_info::~__si_class_type_info(__cxxabiv1::__si_class_type_info *this) { _DWORD *v1; // ecx *v1 = &off_55F114; __cxxabiv1::__class_type_info::~__class_type_info(this); } // 46F360: variable 'v1' is possibly undefined // 55F114: using guessed type void (__cdecl *off_55F114)(__cxxabiv1::__si_class_type_info *__hidden this); //----- (0046F370) -------------------------------------------------------- void __fastcall __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(_DWORD *a1) { __cxxabiv1::__class_type_info *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_55F140; __cxxabiv1::__class_type_info::~__class_type_info(Block); operator delete(a1); } // 46F37C: variable 'Block' is possibly undefined // 55F140: using guessed type void (__cdecl *off_55F140)(__cxxabiv1::__vmi_class_type_info *__hidden this); //----- (0046F3A0) -------------------------------------------------------- void __cdecl __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__cxxabiv1::__vmi_class_type_info *this) { _DWORD *v1; // ecx *v1 = &off_55F140; __cxxabiv1::__class_type_info::~__class_type_info(this); } // 46F3A0: variable 'v1' is possibly undefined // 55F140: using guessed type void (__cdecl *off_55F140)(__cxxabiv1::__vmi_class_type_info *__hidden this); //----- (0046F3B0) -------------------------------------------------------- _DWORD *__cdecl `anonymous namespace'::get_locale_mutex() { if ( !(_BYTE)`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex && __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_6); } return `anonymous namespace'::get_locale_mutex(void)::locale_mutex; } // 53E1E4: using guessed type int _CRT_MT; // 53FCC0: using guessed type _DWORD `anonymous namespace'::get_locale_mutex(void)::locale_mutex[2]; //----- (0046F480) -------------------------------------------------------- void __fastcall `anonymous namespace'::io_error_category::~io_error_category(_DWORD *a1) { std::_V2::error_category *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_55F16C; std::_V2::error_category::~error_category(Block); operator delete(a1); } // 46F48C: variable 'Block' is possibly undefined // 55F16C: using guessed type void (__cdecl *off_55F16C)(_anonymous_namespace_::io_error_category *__hidden this); //----- (0046F4A0) -------------------------------------------------------- void __cdecl `anonymous namespace'::io_error_category::~io_error_category( _anonymous_namespace_::io_error_category *this) { _DWORD *v1; // ecx *v1 = &off_55F16C; std::_V2::error_category::~error_category(this); } // 46F4A0: variable 'v1' is possibly undefined // 55F16C: using guessed type void (__cdecl *off_55F16C)(_anonymous_namespace_::io_error_category *__hidden this); //----- (0046F4B0) -------------------------------------------------------- void __fastcall `anonymous namespace'::system_error_category::~system_error_category(void *Block) { operator delete(Block); } //----- (0046F4D0) -------------------------------------------------------- void __fastcall `anonymous namespace'::generic_error_category::~generic_error_category(void *Block) { operator delete(Block); } //----- (0046F4F0) -------------------------------------------------------- void __usercall `anonymous namespace'::pool::free(int a1@) { int v1; // esi int *v2; // eax _DWORD *v3; // edi int v4; // ecx int *v5; // ebx int *v6; // edx int *v7; // ebp int v8; // edx int v9; // eax _DWORD *exception; // eax int v12; // [esp+18h] [ebp-54h] v1 = _CRT_MT; if ( _CRT_MT ) { if ( __gthr_win32_mutex_lock((int)&`anonymous namespace'::emergency_pool) ) __gnu_cxx::__throw_concurrence_lock_error(); v1 = _CRT_MT; } v2 = (int *)dword_53E4F8; v3 = (_DWORD *)(a1 - 16); if ( !dword_53E4F8 || (v4 = *(_DWORD *)(a1 - 16), v5 = (_DWORD *)((char *)v3 + v4), v12 = v4, dword_53E4F8 > (unsigned int)v3 + v4) ) { *(_DWORD *)(a1 - 12) = dword_53E4F8; dword_53E4F8 = a1 - 16; goto LABEL_18; } v6 = *(int **)(dword_53E4F8 + 4); if ( (_DWORD *)dword_53E4F8 == (_DWORD *)((char *)v3 + v4) ) { *(_DWORD *)(a1 - 16) = *(_DWORD *)dword_53E4F8 + v4; *(_DWORD *)(a1 - 12) = v6; dword_53E4F8 = a1 - 16; LABEL_18: if ( !v1 ) return; goto LABEL_15; } v7 = &dword_53E4F8; if ( v6 ) { while ( 1 ) { if ( v5 >= v6 ) { if ( v5 == v6 ) { v12 = *v5 + v4; v2[1] = v5[1]; } v2 = (int *)*v7; goto LABEL_13; } v7 = v2 + 1; if ( !v6[1] ) break; v2 = v6; v6 = (int *)v6[1]; } v2 = (int *)v2[1]; v8 = *v2; if ( v3 != (int *)((char *)v2 + *v2) ) goto LABEL_14; goto LABEL_22; } LABEL_13: v8 = *v2; if ( v3 == (int *)((char *)v2 + *v2) ) { LABEL_22: *v2 = v12 + v8; goto LABEL_18; } LABEL_14: *(_DWORD *)(a1 - 12) = v2[1]; v9 = *v7; *(_DWORD *)(a1 - 16) = v12; *(_DWORD *)(v9 + 4) = v3; if ( !v1 ) return; LABEL_15: if ( __gthr_win32_mutex_unlock((int)&`anonymous namespace'::emergency_pool) ) { exception = __cxa_allocate_exception(4u); *exception = &off_55F35C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); } } // 53E1E4: using guessed type int _CRT_MT; // 53E4F8: using guessed type int dword_53E4F8; // 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; // 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (0046F6C0) -------------------------------------------------------- void __spoils `anonymous namespace'::pool::allocate() { unsigned int v0; // eax unsigned int v1; // eax int *v2; // ebx unsigned int v3; // ecx unsigned int *v4; // edx unsigned int *v5; // esi unsigned int v6; // esi unsigned int *v7; // ecx unsigned int v8; // eax _DWORD *exception; // eax int v10; // [esp+18h] [ebp-44h] unsigned int *v11; // [esp+18h] [ebp-44h] if ( _CRT_MT ) { if ( __gthr_win32_mutex_lock((int)&`anonymous namespace'::emergency_pool) ) __gnu_cxx::__throw_concurrence_lock_error(); v8 = v10 + 16; v11 = (unsigned int *)dword_53E4F8; if ( v8 < 8 ) v8 = 8; v1 = (v8 + 15) & 0xFFFFFFF0; if ( !dword_53E4F8 ) { LABEL_10: if ( _CRT_MT ) { if ( __gthr_win32_mutex_unlock((int)&`anonymous namespace'::emergency_pool) ) { exception = __cxa_allocate_exception(4u); *exception = &off_55F35C; __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; } LABEL_5: v2 = &dword_53E4F8; while ( 1 ) { v3 = *v11; v4 = v11; v5 = (unsigned int *)v11[1]; v11 = v5; if ( v3 >= v1 ) break; v2 = (int *)(v4 + 1); if ( !v5 ) goto LABEL_10; } v6 = v3 - v1; if ( v3 - v1 > 7 ) { v7 = (unsigned int *)((char *)v4 + v1); *v7 = v6; v7[1] = (unsigned int)v11; *(_DWORD *)*v2 = v1; *v2 = (int)v4 + v1; } else { *v4 = v3; *v2 = (int)v11; } goto LABEL_10; } v0 = v10 + 16; v11 = (unsigned int *)dword_53E4F8; if ( v0 < 8 ) v0 = 8; v1 = (v0 + 15) & 0xFFFFFFF0; if ( dword_53E4F8 ) goto LABEL_5; } // 46F713: variable 'v10' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53E4F8: using guessed type int dword_53E4F8; // 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; // 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (0046F870) -------------------------------------------------------- HANDLE `anonymous namespace'::init() { HANDLE result; // eax result = (HANDLE)_CRT_MT; if ( _CRT_MT ) result = __gthr_win32_recursive_mutex_init_function(`anonymous namespace'::fake_mutex); `anonymous namespace'::static_mutex = (int)`anonymous namespace'::fake_mutex; return result; } // 53E1E4: using guessed type int _CRT_MT; // 53E3D8: using guessed type _DWORD `anonymous namespace'::fake_mutex[4]; // 53F0C0: using guessed type int `anonymous namespace'::static_mutex; //----- (0046F8B0) -------------------------------------------------------- #error "46F9B2: call analysis failed (funcsize=68)" //----- (0046F9B8) -------------------------------------------------------- #error "46FAC5: call analysis failed (funcsize=71)" //----- (0046FACC) -------------------------------------------------------- #error "46FBCE: call analysis failed (funcsize=68)" //----- (0046FBD4) -------------------------------------------------------- void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) { _DWORD *v2; // eax volatile signed __int32 *v3; // edx volatile signed __int32 *v5; // [esp+5Ch] [ebp-Ch] BYREF v5 = 0; *this = 0; this[1] = 0; v2 = operator new(0x10u); v2[1] = 1; v2[2] = 1; v2[3] = a2; *v2 = &off_5603D0; *this = a2; v3 = (volatile signed __int32 *)this[1]; this[1] = v2; v5 = v3; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v5); } // 5603D0: using guessed type int (*off_5603D0)(); //----- (0046FCD4) -------------------------------------------------------- void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) { _DWORD *v2; // eax volatile signed __int32 *v3; // edx volatile signed __int32 *v5; // [esp+5Ch] [ebp-Ch] BYREF v5 = 0; *this = 0; this[1] = 0; v2 = operator new(0x10u); v2[1] = 1; v2[2] = 1; v2[3] = a2; *v2 = &off_5603D0; *this = a2; v3 = (volatile signed __int32 *)this[1]; this[1] = v2; v5 = v3; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v5); } // 5603D0: using guessed type int (*off_5603D0)(); //----- (0046FDD4) -------------------------------------------------------- void __thiscall zcc::shared_ptr,std::allocator>>::shared_ptr( _DWORD *this, int a2) { _DWORD *v2; // eax volatile signed __int32 *v3; // edx volatile signed __int32 *v5; // [esp+5Ch] [ebp-Ch] BYREF v5 = 0; *this = 0; this[1] = 0; v2 = operator new(0x10u); v2[1] = 1; v2[2] = 1; v2[3] = a2; *v2 = &off_560408; *this = a2; v3 = (volatile signed __int32 *)this[1]; this[1] = v2; v5 = v3; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v5); } // 560408: using guessed type int (*off_560408)(); //----- (0046FED4) -------------------------------------------------------- void __fastcall WXML::NameAllocator::~NameAllocator(int a1) { std::string::_M_dispose((void **)(a1 + 28)); std::string::_M_dispose((void **)(a1 + 4)); } //----- (0046FF00) -------------------------------------------------------- int __fastcall WXML::DOMLib::Token::ToAttrContent[abi:cxx11](int a1) { char v1; // al char v2; // cl int v3; // eax unsigned __int8 v4; // dl _BYTE *v6; // [esp+1Ch] [ebp-8Ch] int v7; // [esp+20h] [ebp-88h] int v8; // [esp+24h] [ebp-84h] void *v10[2]; // [esp+68h] [ebp-40h] BYREF char v11[16]; // [esp+70h] [ebp-38h] BYREF unsigned __int8 Src[30]; // [esp+80h] [ebp-28h] BYREF size_t Size; // [esp+9Eh] [ebp-Ah] BYREF if ( !*(_DWORD *)a1 || *(_BYTE *)(a1 + 84) ) return a1 + 88; v6 = (_BYTE *)(**(_DWORD **)a1 + *(_DWORD *)(a1 + 16)); v8 = *(_DWORD *)(a1 + 20); v7 = *v6 == 39 || *v6 == 34; if ( v8 > 0 ) { v1 = v6[v8 - 1]; if ( v1 == 34 || v1 == 39 ) --v8; } v2 = 0; v3 = 0; while ( v8 > v7 ) { v4 = v6[v7]; if ( v4 == 92 ) { if ( !v2 ) { v2 = 1; goto LABEL_22; } } else if ( v2 ) { switch ( v4 ) { case 'n': Src[v3] = 10; goto LABEL_20; case 't': Src[v3] = 9; goto LABEL_20; case 'r': Src[v3] = 13; goto LABEL_20; } } Src[v3] = v4; LABEL_20: ++v3; v2 = 0; Src[v3] = 0; if ( v3 == 30 ) { v10[0] = v11; std::string::_M_construct(v10, Src, (size_t)&Size); std::string::append((_DWORD *)(a1 + 88), (int)v10); std::string::_M_dispose(v10); Src[0] = 0; v2 = 0; v3 = 0; } LABEL_22: ++v7; } if ( v3 ) { v10[0] = v11; std::string::_M_construct(v10, Src, (size_t)&Src[v3]); std::string::append((_DWORD *)(a1 + 88), (int)v10); std::string::_M_dispose(v10); } *(_BYTE *)(a1 + 84) = 1; return a1 + 88; } // 46FF00: using guessed type unsigned __int8 Src[30]; //----- (00470100) -------------------------------------------------------- int __cdecl WXML::DOMLib::Token::GetTemplateContent(int *a1, unsigned __int8 **a2) { int v2; // edi int v3; // eax signed int v4; // edx int v5; // ebx int v6; // ecx signed int v7; // eax int v10; // [esp+1Ch] [ebp-3Ch] void *v11[12]; // [esp+28h] [ebp-30h] BYREF v2 = 0; v10 = a1[1]; v3 = v10 - 1; while ( v2 < v10 && *(_BYTE *)(*a1 + v2) == 32 ) ++v2; while ( v3 >= 0 && *(_BYTE *)(*a1 + v3) == 32 ) --v3; v4 = v2 + 2; if ( v2 + 2 >= v10 ) 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 ( v10 != v4 ); do { if ( *(_BYTE *)(v5 + v7) != 32 ) break; } while ( v7-- != 0 ); v6 = -1; if ( v4 < v7 ) { std::string::substr(v11, a1, v4, v7 - v4 + 1); std::string::operator=(a2, (int)v11); std::string::_M_dispose(v11); return 0; } } return v6; } //----- (004701C0) -------------------------------------------------------- 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; } //----- (0047021C) -------------------------------------------------------- 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; } //----- (00470258) -------------------------------------------------------- unsigned __int8 **__fastcall WXML::DOMLib::Token::ToString[abi:cxx11](int a1) { unsigned __int8 **v1; // edi void *v4[12]; // [esp+18h] [ebp-30h] BYREF v1 = (unsigned __int8 **)(a1 + 32); if ( *(_DWORD *)a1 && !*(_BYTE *)(a1 + 28) ) { std::string::substr(v4, *(_DWORD **)a1, *(_DWORD *)(a1 + 16), *(_DWORD *)(a1 + 20)); std::string::operator=(v1, (int)v4); std::string::_M_dispose(v4); *(_BYTE *)(a1 + 28) = 1; } return v1; } //----- (004702B0) -------------------------------------------------------- _DWORD *__thiscall WXML::DOMLib::Token::Token(_DWORD *this, int a2) { int v3; // ecx *this = *(_DWORD *)a2; v3 = *(_DWORD *)(a2 + 4); this[1] = v3; if ( v3 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v3); 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)); } //----- (00470334) -------------------------------------------------------- void __userpurge WXML::DOMLib::Token::Token(int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3) { int v4; // ecx *(_DWORD *)a1 = *(_DWORD *)this; v4 = *((_DWORD *)this + 1); *(_DWORD *)(a1 + 4) = v4; if ( v4 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v4); *(_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((char *)(a1 + 32), (int)this + 32); *(_DWORD *)(a1 + 56) = *((_DWORD *)this + 14); std::string::basic_string((char *)(a1 + 60), (int)this + 60); *(_BYTE *)(a1 + 84) = *((_BYTE *)this + 84); std::string::basic_string((char *)(a1 + 88), (int)this + 88); } //----- (00470480) -------------------------------------------------------- void __userpurge WXML::DOMLib::Token::Token(int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3) { int v4; // ecx *(_DWORD *)a1 = *(_DWORD *)this; v4 = *((_DWORD *)this + 1); *(_DWORD *)(a1 + 4) = v4; if ( v4 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v4); *(_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((char *)(a1 + 32), (int)this + 32); *(_DWORD *)(a1 + 56) = *((_DWORD *)this + 14); std::string::basic_string((char *)(a1 + 60), (int)this + 60); *(_BYTE *)(a1 + 84) = *((_BYTE *)this + 84); std::string::basic_string((char *)(a1 + 88), (int)this + 88); } //----- (004705CC) -------------------------------------------------------- void __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)); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); } //----- (004705F8) -------------------------------------------------------- #error "4709CA: call analysis failed (funcsize=214)" //----- (00470A34) -------------------------------------------------------- void __fastcall WXML::DOMLib::Parser::~Parser(int a1) { int v2; // edi int *v3; // esi int v4; // eax int v5; // edx int v6; // edx void **v7; // esi unsigned int v8; // edi void *v9; // eax int v10; // [esp+1Ch] [ebp-2Ch] int v11; // [esp+20h] [ebp-28h] int v12; // [esp+24h] [ebp-24h] unsigned int v13; // [esp+28h] [ebp-20h] int v14; // [esp+2Ch] [ebp-1Ch] 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)); v2 = *(_DWORD *)(a1 + 72); v12 = *(_DWORD *)(a1 + 64); v11 = *(_DWORD *)(a1 + 76); v14 = *(_DWORD *)(a1 + 68); v3 = (int *)(v14 + 4); v13 = *(_DWORD *)(a1 + 84); v4 = *(_DWORD *)(a1 + 56); while ( v13 > (unsigned int)v3 ) { v5 = *v3; v10 = v4; ++v3; std::_Destroy_aux::__destroy *>(v5, v5, v5 + 512); v4 = v10; } if ( v14 == v13 ) { std::_Destroy_aux::__destroy *>(v13, v4, v2); } else { std::_Destroy_aux::__destroy *>(v13, v4, v12); std::_Destroy_aux::__destroy *>(v6, v11, v2); } if ( *(_DWORD *)(a1 + 48) ) { v7 = *(void ***)(a1 + 68); v8 = *(_DWORD *)(a1 + 84) + 4; while ( v8 > (unsigned int)v7 ) { v9 = *v7++; operator delete(v9); } operator delete(*(void **)(a1 + 48)); } std::deque::~deque(a1 + 8); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); } // 470AC8: variable 'v6' is possibly undefined //----- (00470B1C) -------------------------------------------------------- char __thiscall WXML::DOMLib::WXMLDom::IfHasItsElse(_DWORD *this, signed int a2, int *a3) { BOOL v3; // eax BOOL v4; // eax int v5; // eax unsigned int i; // eax int v7; // edx BOOL v8; // eax int v10; // [esp+18h] [ebp-80h] signed int v11; // [esp+1Ch] [ebp-7Ch] int v12; // [esp+1Ch] [ebp-7Ch] _DWORD *v13; // [esp+20h] [ebp-78h] bool v14; // [esp+20h] [ebp-78h] _DWORD *v15; // [esp+20h] [ebp-78h] unsigned int v16; // [esp+20h] [ebp-78h] _DWORD *v17; // [esp+24h] [ebp-74h] bool v18; // [esp+24h] [ebp-74h] _DWORD *v19; // [esp+24h] [ebp-74h] _DWORD *v20; // [esp+24h] [ebp-74h] _DWORD *v21; // [esp+24h] [ebp-74h] void *v23[6]; // [esp+60h] [ebp-38h] BYREF void *v24[8]; // [esp+78h] [ebp-20h] BYREF v17 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); std::string::basic_string(v23, "wx:else"); v3 = std::map::count(v17, (int)v23); v18 = 1; if ( !v3 ) { v19 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); std::string::basic_string(v24, "wx:elif"); v18 = std::map::count(v19, (int)v24); std::string::_M_dispose(v24); } std::string::_M_dispose(v23); if ( v18 ) return 1; v13 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); std::string::basic_string(v23, "wx:if"); v4 = std::map::count(v13, (int)v23); v14 = 0; if ( !v4 ) { v15 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); std::string::basic_string(v24, "wx-if"); v14 = !std::map::count(v15, (int)v24); std::string::_M_dispose(v24); } std::string::_M_dispose(v23); if ( !v14 ) { v11 = a2 - 1; v5 = *(_DWORD *)(this[18] + 8 * a2); if ( *(_DWORD *)(v5 + 72) == *(_DWORD *)(v5 + 76) ) { for ( i = a2 + 1; ; i = v16 + 1 ) { v16 = i; v7 = this[18]; if ( (this[19] - v7) >> 3 <= i ) break; v10 = 8 * i; v20 = (_DWORD *)(*(_DWORD *)(v7 + 8 * i) + 48); std::string::basic_string(v23, "wx:else"); v8 = std::map::count(v20, (int)v23); v18 = 1; if ( !v8 ) { v21 = (_DWORD *)(*(_DWORD *)(this[18] + v10) + 48); std::string::basic_string(v24, "wx:elif"); v18 = std::map::count(v21, (int)v24); std::string::_M_dispose(v24); } std::string::_M_dispose(v23); if ( !v18 ) break; v12 = a3[1]; if ( v12 != std::find<__gnu_cxx::__normal_iterator>,std::string>( *a3, v12, *(_DWORD *)(this[18] + v10)) || *(_DWORD *)(*(_DWORD *)(this[18] + v10) + 76) != *(_DWORD *)(*(_DWORD *)(this[18] + v10) + 72) ) { return v18; } v11 = v16; } } while ( v11 >= a2 ) std::vector>::_M_erase(this + 18, this[18] + 8 * v11--); return 1; } return v18; } //----- (00470E20) -------------------------------------------------------- int __cdecl WXML::DOMLib::WXMLDom::ToCamelStyle(int a1, int a2) { char v2; // al char *i; // [esp+14h] [ebp-44h] char lpuexcpt; // [esp+18h] [ebp-40h] *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; std::string::reserve((_DWORD *)a1, *(_DWORD *)(a2 + 4)); lpuexcpt = 0; for ( i = *(char **)a2; ; ++i ) { v2 = *i; if ( !*i ) break; if ( v2 > 46 ) { if ( v2 == 58 ) { LABEL_11: lpuexcpt = 1; continue; } } else if ( v2 > 44 ) { goto LABEL_11; } if ( (unsigned __int8)(v2 - 97) <= 0x19u && lpuexcpt ) { std::string::push_back((_DWORD *)a1, v2 - 32); lpuexcpt = 0; } else { std::string::push_back((_DWORD *)a1, *i); } } return a1; } //----- (00470F1C) -------------------------------------------------------- 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; } //----- (00471024) -------------------------------------------------------- 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<__gnu_cxx::__normal_iterator>,std::string>( v5, v7, v6); if ( v7 != result ) *(_BYTE *)(this + 256) = 1; } } return result; } //----- (0047109C) -------------------------------------------------------- void __thiscall WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(_DWORD *this, int *a2) { int v3; // ebx int v4; // esi int *v5; // eax volatile signed __int32 **v6; // esi volatile signed __int32 **v7; // eax volatile signed __int32 *v8; // ecx volatile signed __int32 *v9; // eax int v10; // [esp+1Ch] [ebp-1Ch] v3 = (this[19] - this[18]) >> 3; while ( --v3 >= 0 ) { v4 = 8 * v3; 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") ) { v10 = a2[1]; if ( v10 == std::find<__gnu_cxx::__normal_iterator>,std::string>( *a2, v10, *(_DWORD *)(this[18] + 8 * v3)) && !WXML::DOMLib::WXMLDom::IfHasItsElse(this, v3, a2) ) { v5 = (int *)(v4 + this[18]); if ( *(_DWORD *)(*v5 + 76) == *(_DWORD *)(*v5 + 72) ) { std::vector>::_M_erase(this + 18, (int)v5); } else if ( *(_DWORD *)(*v5 + 76) - *(_DWORD *)(*v5 + 72) == 8 && !WXML::DOMLib::WXMLDom::HasSpAttrPrefix(*v5) ) { v6 = (volatile signed __int32 **)(this[18] + v4); v7 = (volatile signed __int32 **)*((_DWORD *)*v6 + 18); v8 = *v7; v9 = v7[1]; *v6 = v8; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v6 + 1, v9); } } } } } //----- (00471248) -------------------------------------------------------- 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; } //----- (004712AC) -------------------------------------------------------- void __thiscall WXML::DOMLib::WXMLDom::PrintMe(int this, int a2, char *a3, char *a4) { char *v4; // eax int v5; // eax std::ostream::sentry *v6; // eax std::ostream::sentry *v7; // eax std::ostream::sentry *v8; // eax std::ostream::sentry *v9; // eax bool v10; // zf int v11; // eax int j; // eax unsigned __int8 **v13; // eax std::ostream::sentry *v14; // eax int *v15; // eax std::ostream::sentry *v16; // eax std::ostream::sentry *v17; // eax unsigned __int8 **v18; // eax std::ostream::sentry *v19; // eax std::ostream::sentry *v20; // eax std::ostream::sentry *v21; // eax int *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; // [esp+2Ch] [ebp-11Ch] std::ostream::sentry *v30; // [esp+30h] [ebp-118h] int i; // [esp+34h] [ebp-114h] int v32; // [esp+34h] [ebp-114h] char v34[216]; // [esp+70h] [ebp-D8h] BYREF _DWORD *v35; // [esp+158h] [ebp+10h] std::basic_stringstream,std::allocator>::basic_stringstream((int)v34); v4 = v34; if ( a4 ) v4 = a4; v35 = v4; if ( (v4[*(_DWORD *)(*(_DWORD *)v4 - 12) + 20] & 5) != 0 ) printf("%s", a3); else std::operator<<>((std::ostream::sentry *)(v4 + 8), a3); for ( i = 0; ; ++i ) { v5 = *(_DWORD *)((char *)v35 + *(_DWORD *)(*v35 - 12) + 20) & 5; if ( i >= a2 ) break; if ( v5 ) printf(" "); else std::operator<<>((std::ostream::sentry *)(v35 + 2), " "); } if ( v5 ) { printf("pos: %d, %d, tag: %s, ", *(_DWORD *)(this + 92), *(_DWORD *)(this + 96), *(const char **)this); } else { std::operator<<>((std::ostream::sentry *)(v35 + 2), "pos: "); v6 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v6, ", "); v7 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); v8 = std::operator<<>(v7, " tag: "); v9 = std::operator<<(v8, (int *)this); std::operator<<>(v9, ", "); } v10 = !std::operator==(this, "TEXTNODE"); v11 = *(_DWORD *)(*v35 - 12); if ( v10 ) { if ( (*((_BYTE *)v35 + v11 + 20) & 5) != 0 ) printf("attr: "); else std::operator<<>((std::ostream::sentry *)(v35 + 2), "attr: "); for ( j = *(_DWORD *)(this + 60); ; j = std::_Rb_tree_increment(v32) ) { v32 = j; if ( j == this + 52 ) break; if ( (*(_DWORD *)((char *)v35 + *(_DWORD *)(*v35 - 12) + 20) & 5) != 0 ) { v13 = WXML::DOMLib::Token::ToString[abi:cxx11](j + 40); printf("%s->%s,", *(const char **)(v32 + 16), (const char *)*v13); } else { v14 = std::operator<<((std::ostream::sentry *)(v35 + 2), (int *)(j + 16)); v29 = std::operator<<>(v14, "->"); v15 = (int *)WXML::DOMLib::Token::ToString[abi:cxx11](v32 + 40); v16 = std::operator<<(v29, v15); std::operator<<>(v16, " "); v17 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(v32 + 96)); std::operator<<>(v17, " "); } } } else if ( (*((_BYTE *)v35 + v11 + 20) & 5) != 0 ) { v18 = WXML::DOMLib::Token::ToString[abi:cxx11](this + 84); printf( "pos: %d, %d, len: %d, %s", *(_DWORD *)(this + 92), *(_DWORD *)(this + 96), *(_DWORD *)(this + 104), (const char *)*v18); } else { std::operator<<>((std::ostream::sentry *)(v35 + 2), "pos: "); v19 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v19, ", "); v20 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); std::operator<<>(v20, ", len: "); v21 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 104)); v30 = std::operator<<>(v21, ", "); v22 = (int *)WXML::DOMLib::Token::ToString[abi:cxx11](this + 84); std::operator<<(v30, v22); } if ( (*((_BYTE *)v35 + *(_DWORD *)(*v35 - 12) + 20) & 5) != 0 ) { printf( "icn: %s, icc: %u, ivwn: %s", *(const char **)(this + 196), *(_DWORD *)(this + 244), *(const char **)(this + 220)); } else { v23 = std::operator<<>((std::ostream::sentry *)(v35 + 2), "icn:"); v24 = std::operator<<(v23, (int *)(this + 196)); v25 = std::operator<<>(v24, ", "); std::operator<<>(v25, "icc: "); v26 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 244)); v27 = std::operator<<>(v26, ", ivwn: "); std::operator<<(v27, (int *)(this + 220)); } if ( (*((_BYTE *)v35 + *(_DWORD *)(*v35 - 12) + 20) & 5) != 0 ) { printf(", hasXComponentDescendant %d", *(unsigned __int8 *)(this + 256)); } else { v28 = std::operator<<>((std::ostream::sentry *)(v35 + 2), ", hasXComponentDescendant"); std::ostream::_M_insert(v28, *(_BYTE *)(this + 256)); } if ( (*((_BYTE *)v35 + *(_DWORD *)(*v35 - 12) + 20) & 5) != 0 ) printf("\n"); else std::operator<<>((std::ostream::sentry *)(v35 + 2), "\n"); std::basic_stringstream,std::allocator>::~basic_stringstream((int)v34); } // 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); //----- (00471934) -------------------------------------------------------- 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; } //----- (00471AB8) -------------------------------------------------------- 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, "];"); } //----- (00471B54) -------------------------------------------------------- void __thiscall WXML::DOMLib::StrCache::Insert(_DWORD *this, int a2) { int v3; // edi if ( !std::map::count(this, a2) ) { v3 = this[5]; *(_DWORD *)std::map::operator[](this, a2) = v3; std::vector::push_back((int)(this + 6), a2); } } //----- (00471B9C) -------------------------------------------------------- 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 *(_DWORD *)std::map::operator[](this, a2); return result; } //----- (00471BD0) -------------------------------------------------------- void __fastcall WXML::EXPRLib::NonTerminal::~NonTerminal(void *a1) { operator delete(a1); } //----- (00471BE4) -------------------------------------------------------- void __fastcall WXML::EXPRLib::EPS::~EPS(void *a1) { operator delete(a1); } //----- (00471BF8) -------------------------------------------------------- int __userpurge WXML::EXPRLib::Token::Token@( int *a1@, WXML::EXPRLib::Token *this, const WXML::EXPRLib::Token *a3) { int *v4; // ecx int v5; // edx int v6; // eax int result; // eax v4 = a1 + 4; v5 = *((_DWORD *)this + 2); *(v4 - 4) = *(_DWORD *)this; v6 = *((_DWORD *)this + 1); *(v4 - 2) = v5; *(v4 - 3) = v6; *(v4 - 1) = *((_DWORD *)this + 3); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v4, *((_DWORD *)this + 4)); a1[5] = *((_DWORD *)this + 5); result = *((_DWORD *)this + 6); a1[6] = result; return result; } //----- (00471C40) -------------------------------------------------------- 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; } //----- (00471C78) -------------------------------------------------------- int __fastcall WXML::EXPRLib::Action::Action(int a1) { int result; // eax *(_DWORD *)a1 = &off_55F20C; *(_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; } // 55F20C: using guessed type void (__cdecl *off_55F20C)(WXML::EXPRLib::Action *__hidden this); //----- (00471CA8) -------------------------------------------------------- void __fastcall WXML::EXPRLib::Action::~Action(void **a1) { WXML::EXPRLib::Action::~Action(a1); operator delete(a1); } //----- (00471CC4) -------------------------------------------------------- void __fastcall WXML::EXPRLib::Action::~Action(void **a1) { WXML::EXPRLib::Action::~Action(a1, (WXML::EXPRLib::Action *)2); } //----- (00471CDC) -------------------------------------------------------- void __thiscall WXML::EXPRLib::Action::~Action(void **ecx0, WXML::EXPRLib::Action *this) { void **v3; // ecx v3 = ecx0 + 9; *(v3 - 9) = &off_55F20C; std::string::_M_dispose(v3); std::string::_M_dispose(ecx0 + 1); } // 55F20C: using guessed type void (__cdecl *off_55F20C)(WXML::EXPRLib::Action *__hidden this); //----- (00471D00) -------------------------------------------------------- void __fastcall WXML::EXPRLib::Parser::~Parser(int a1) { int v2; // edi int v3; // edx int *v4; // esi int v5; // eax int v6; // edx int v7; // edx void **v8; // esi unsigned int v9; // edi void *v10; // eax int v11; // [esp+1Ch] [ebp-2Ch] int v12; // [esp+20h] [ebp-28h] int v13; // [esp+24h] [ebp-24h] unsigned int v14; // [esp+28h] [ebp-20h] int v15; // [esp+2Ch] [ebp-1Ch] std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 84)); v2 = *(_DWORD *)(a1 + 64); v13 = *(_DWORD *)(a1 + 56); v3 = *(_DWORD *)(a1 + 60); v12 = *(_DWORD *)(a1 + 68); v15 = v3; v4 = (int *)(v3 + 4); v14 = *(_DWORD *)(a1 + 76); v5 = *(_DWORD *)(a1 + 48); while ( v14 > (unsigned int)v4 ) { v6 = *v4; v11 = v5; ++v4; std::_Destroy_aux::__destroy *>(v6, v6, v6 + 512); v5 = v11; } if ( v15 == v14 ) { std::_Destroy_aux::__destroy *>(v3, v5, v2); } else { std::_Destroy_aux::__destroy *>(v3, v5, v13); std::_Destroy_aux::__destroy *>(v7, v12, v2); } if ( *(_DWORD *)(a1 + 40) ) { v8 = *(void ***)(a1 + 60); v9 = *(_DWORD *)(a1 + 76) + 4; while ( v9 > (unsigned int)v8 ) { v10 = *v8++; operator delete(v10); } operator delete(*(void **)(a1 + 40)); } std::deque>::~deque(a1); } // 471D6A: variable 'v3' is possibly undefined // 471D76: variable 'v7' is possibly undefined //----- (00471DC0) -------------------------------------------------------- int __fastcall WXML::EXPRLib::Terminal::Terminal(int a1) { int result; // eax *(_DWORD *)(a1 + 4) = a1 + 12; result = 0; *(_DWORD *)a1 = &off_55F220; *(_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; } // 55F220: using guessed type void (__cdecl *off_55F220)(WXML::EXPRLib::Terminal *__hidden this); //----- (00471E0C) -------------------------------------------------------- void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1) { WXML::EXPRLib::Terminal::~Terminal(a1); operator delete(a1); } //----- (00471E28) -------------------------------------------------------- void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1) { WXML::EXPRLib::Terminal::~Terminal(a1, (WXML::EXPRLib::Terminal *)2); } //----- (00471E40) -------------------------------------------------------- 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_55F220; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); std::string::_M_dispose(ecx0 + 1); } // 55F220: using guessed type void (__cdecl *off_55F220)(WXML::EXPRLib::Terminal *__hidden this); //----- (00471E64) -------------------------------------------------------- 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_55F220; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); std::string::_M_dispose(ecx0 + 1); } // 55F220: using guessed type void (__cdecl *off_55F220)(WXML::EXPRLib::Terminal *__hidden this); //----- (00471E88) -------------------------------------------------------- void __thiscall night::NSASTParse::NSASTParse(int this, int a2, int a3, int a4) { std::string::basic_string((char *)this, a2); *(_DWORD *)(this + 48) = 0; *(_BYTE *)(this + 52) = 0; *(_DWORD *)(this + 44) = this + 52; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 28) = a3; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 24) = a4; *(_DWORD *)(this + 40) = 0; std::string::operator=((unsigned int *)(this + 44), (char *)&byte_551F04); } //----- (00471F5C) -------------------------------------------------------- void __fastcall night::NSASTParse::~NSASTParse(void **a1) { std::string::_M_dispose(a1 + 11); std::string::_M_dispose(a1); } //----- (00471F78) -------------------------------------------------------- void __fastcall night::NSCompileJs::~NSCompileJs(int a1, int a2) { std::vector::~vector((void ***)(a1 + 36), a2); std::string::_M_dispose((void **)a1); } //----- (00471F94) -------------------------------------------------------- void __userpurge night::ns_sourcemap::ns_sourcemap( int a1@, night::ns_sourcemap *this, const night::ns_sourcemap *a3) { std::string::basic_string((char *)a1, (int)this); *(_DWORD *)(a1 + 24) = *((_DWORD *)this + 6); *(_DWORD *)(a1 + 28) = *((_DWORD *)this + 7); std::string::basic_string((char *)(a1 + 32), (int)this + 32); *(_DWORD *)(a1 + 56) = *((_DWORD *)this + 14); *(_DWORD *)(a1 + 60) = *((_DWORD *)this + 15); } //----- (0047204C) -------------------------------------------------------- void __fastcall night::ns_sourcemap::~ns_sourcemap(void **a1) { std::string::_M_dispose(a1 + 8); std::string::_M_dispose(a1); } //----- (00472068) -------------------------------------------------------- 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; } //----- (00472090) -------------------------------------------------------- char __cdecl night::NSToken::tk_is_comment2(night::NSToken *this, night::NSStream *a2) { int v3[3]; // [esp+1Ch] [ebp-2Ch] BYREF int v4[3]; // [esp+28h] [ebp-20h] BYREF int v5[4]; // [esp+34h] [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(v5, a2); return 0; } // 472090: using guessed type int var_2C[3]; // 472090: using guessed type int var_20[3]; // 472090: using guessed type int var_14[4]; //----- (004720D8) -------------------------------------------------------- bool __cdecl night::NSToken::tk_is_whitespace(night::NSToken *this) { unsigned 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; } // 565A90: using guessed type int night::NS_BUILTIN_SPACE[6]; //----- (0047212C) -------------------------------------------------------- char __cdecl night::NSToken::tk_is_valid_op_str(night::NSToken *this, int a2) { char lpuexcpt; // [esp+18h] [ebp-70h] void *v4[2]; // [esp+50h] [ebp-38h] BYREF char v5; // [esp+58h] [ebp-30h] BYREF void *v6[8]; // [esp+68h] [ebp-20h] BYREF v4[0] = &v5; std::string::_M_construct(v4, 1u, (char)this); if ( std::string::find(night::NS_BUILTIN_OP, (int)v4, 0) == -1 || (std::string::basic_string((char *)v6, a2), std::string::_M_replace_aux(v6, (size_t)v6[1], 0, 1u, (char)this), std::string::operator=((unsigned __int8 **)v4, (int)v6), std::string::_M_dispose(v6), std::string::find(night::NS_BUILTIN_ALL_OP, (int)v4, 0) == -1) ) { lpuexcpt = 0; } else { std::string::_M_assign(a2, (int)v4); lpuexcpt = 1; } std::string::_M_dispose(v4); return lpuexcpt; } // 565AC0: using guessed type int night::NS_BUILTIN_ALL_OP[6]; // 565AF0: using guessed type int night::NS_BUILTIN_OP[6]; //----- (0047229C) -------------------------------------------------------- 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; } //----- (004722D8) -------------------------------------------------------- _DWORD *__thiscall night::NSToken::get_tokens_for_sourcemap(_DWORD *this, void **a2, _DWORD *a3) { int i; // esi _DWORD *result; // eax void **v5; // eax void *v6; // edx _DWORD *v7; // ebx _DWORD *j; // eax _DWORD *v9; // ecx unsigned int v10; // eax _DWORD *v11; // edx bool v12; // al _DWORD *v13; // [esp+20h] [ebp-28h] int insert_hint_unique_pos; // [esp+20h] [ebp-28h] unsigned int v16; // [esp+28h] [ebp-20h] _DWORD *v17; // [esp+2Ch] [ebp-1Ch] for ( i = this[9]; ; i = std::_Rb_tree_increment(i) ) { result = this + 7; if ( (_DWORD *)i == this + 7 ) break; v5 = std::map::operator[](a2, i + 16); v6 = *(void **)(i + 40); v7 = a3 + 1; *v5 = v6; v17 = a3 + 1; for ( j = (_DWORD *)a3[2]; j; j = v9 ) { v9 = (_DWORD *)j[3]; if ( (unsigned int)v6 <= j[4] ) v9 = (_DWORD *)j[2]; if ( (unsigned int)v6 <= j[4] ) v7 = j; } if ( v17 == v7 || (unsigned int)v6 < v7[4] ) { v13 = v7; v7 = operator new(0x2Cu); v10 = *(_DWORD *)(i + 40); v7[6] = 0; v7[4] = v10; v16 = v10; v7[5] = v7 + 7; *((_BYTE *)v7 + 28) = 0; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( a3, v13, v7 + 4); if ( v11 ) { v12 = insert_hint_unique_pos != 0 || v17 == v11; if ( !v12 ) v12 = v16 < v11[4]; std::_Rb_tree_insert_and_rebalance(v12, v7, v11, v17); ++a3[5]; } else { std::string::_M_dispose((void **)v7 + 5); operator delete(v7); v7 = (_DWORD *)insert_hint_unique_pos; } } std::string::_M_assign((int)(v7 + 5), i + 16); } return result; } // 47238A: variable 'v11' is possibly undefined //----- (00472400) -------------------------------------------------------- int __cdecl night::NSToken::tk_is_var(night::NSToken *this) { int result; // eax int v2; // edx int v3; // ecx int v4; // eax result = night::NSToken::tk_is_var_start((char)this); if ( !(_BYTE)result ) { v4 = v3 - 48; LOBYTE(v4) = (unsigned __int8)(v3 - 48) <= 9u; LOBYTE(v2) = (_BYTE)v3 == 95; return v2 | v4; } return result; } // 472415: variable 'v3' is possibly undefined // 472423: variable 'v2' is possibly undefined //----- (00472428) -------------------------------------------------------- void __fastcall night::NSToken::~NSToken(int a1) { std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(a1 + 24); if ( *(_DWORD *)(a1 + 12) ) operator delete(*(void **)(a1 + 12)); } //----- (00472450) -------------------------------------------------------- void **__thiscall night::ns_node::debug_no_space[abi:cxx11](void **this, const char **a2) { const char *v2; // ecx const char *v3; // ecx const char *v4; // ebx const char *v5; // ecx const char *v6; // edx const char *v7; // ecx _DWORD *v8; // eax const char *v9; // esi const char *v10; // ebx const char *v11; // eax const char *v12; // edx const char *v13; // ecx _DWORD *v14; // eax _DWORD *v15; // eax const char *v16; // esi int v17; // eax _DWORD *v18; // eax char *v19; // ecx _DWORD *v20; // eax _DWORD *v21; // eax int *v22; // ecx const char *v23; // edx const char *v24; // ebx const char *v25; // ecx _DWORD *v26; // eax _DWORD *v27; // eax _DWORD *v28; // eax const char *v29; // esi int v30; // eax char *v31; // ecx _DWORD *v32; // eax _DWORD *v33; // eax const char *v34; // edx const char *v35; // ecx _DWORD *v36; // eax _DWORD *v37; // eax const char *v38; // esi int v39; // eax _DWORD *v40; // eax char *v41; // ecx _DWORD *v42; // eax _DWORD *v43; // eax _DWORD *v44; // eax int v45; // eax _DWORD *v46; // eax _DWORD *v47; // eax _DWORD **v48; // eax _DWORD *v49; // eax _DWORD *v50; // eax char *v51; // ecx _DWORD *v52; // eax const char *v53; // edx const char *v54; // ecx const char *v55; // edi const char *v56; // ebx int v57; // eax char *v58; // ecx _DWORD *v59; // eax const char *v60; // esi int v61; // eax _DWORD *v62; // eax int v63; // eax _DWORD *v64; // eax _DWORD *v65; // eax _DWORD **v66; // eax _DWORD *v67; // eax _DWORD *v68; // eax const char *v69; // edx const char *v70; // ebx const char *v71; // esi int v72; // eax char *v73; // ecx _DWORD *v74; // eax _DWORD *v75; // eax _DWORD *v76; // eax unsigned int m; // [esp+30h] [ebp-508h] unsigned int mm; // [esp+30h] [ebp-508h] unsigned int i; // [esp+34h] [ebp-504h] unsigned int j; // [esp+34h] [ebp-504h] unsigned int k; // [esp+34h] [ebp-504h] unsigned int n; // [esp+34h] [ebp-504h] unsigned int ii; // [esp+34h] [ebp-504h] unsigned int kk; // [esp+34h] [ebp-504h] const char *v86; // [esp+34h] [ebp-504h] unsigned int jj; // [esp+34h] [ebp-504h] char *v89; // [esp+78h] [ebp-4C0h] BYREF int v90; // [esp+7Ch] [ebp-4BCh] char v91[16]; // [esp+80h] [ebp-4B8h] BYREF int v92[2]; // [esp+90h] [ebp-4A8h] BYREF char v93[16]; // [esp+98h] [ebp-4A0h] BYREF int v94[2]; // [esp+A8h] [ebp-490h] BYREF char v95; // [esp+B0h] [ebp-488h] BYREF int v96; // [esp+C0h] [ebp-478h] BYREF int v97; // [esp+C4h] [ebp-474h] char v98[16]; // [esp+C8h] [ebp-470h] BYREF int v99[2]; // [esp+D8h] [ebp-460h] BYREF char v100[16]; // [esp+E0h] [ebp-458h] BYREF int v101[2]; // [esp+F0h] [ebp-448h] BYREF char v102; // [esp+F8h] [ebp-440h] BYREF int v103[6]; // [esp+108h] [ebp-430h] BYREF char Str[4]; // [esp+120h] [ebp-418h] BYREF char v105[1020]; // [esp+124h] [ebp-414h] BYREF *(_DWORD *)Str = 0; memset(v105, 0, sizeof(v105)); if ( std::operator==("skip", (int)a2) ) sprintf(Str, "type[%s]", *a2); if ( std::operator==("bool", (int)a2) ) { v2 = *a2; if ( *((_QWORD *)a2 + 6) ) sprintf(Str, "(%d,%d)type[%s] value[%s]", a2[12], a2[13], v2, a2[15]); else sprintf(Str, "type[%s] value[%s]", v2, a2[15]); } if ( std::operator==((char *)off_551FEA, (int)a2) || std::operator==("builtin_type", (int)a2) || std::operator==("kw", (int)a2) || std::operator==((char *)off_551FFE, (int)a2) || std::operator==("punc", (int)a2) || std::operator==("op", (int)a2) ) { v3 = *a2; if ( *((_QWORD *)a2 + 6) ) sprintf(Str, "(%d,%d)type[%s] value[%s]", a2[12], a2[13], v3, a2[15]); else sprintf(Str, "type[%s] value[%s]", v3, a2[15]); } if ( std::operator==((char *)off_551FFE, (int)a2) ) { v4 = a2[15]; v5 = *a2; if ( *((_QWORD *)a2 + 6) ) sprintf(Str, "(%d,%d)type[%s] value[%s] flag[%d]", a2[12], a2[13], v5, v4, *((unsigned __int8 *)a2 + 56)); else sprintf(Str, "type[%s] value[%s] flag[%d]", v5, v4, *((unsigned __int8 *)a2 + 56)); } if ( std::operator==("op_self", (int)a2) ) { v97 = 0; v96 = (int)v98; v6 = a2[13]; v7 = *a2; v98[0] = 0; if ( __PAIR64__((unsigned int)v6, a2[12]) ) sprintf(Str, "(%d,%d)type[%s] op[%s]", a2[12], v6, v7, a2[39]); else sprintf(Str, "type[%s] op[%s]", v7, a2[39]); std::string::operator=((unsigned int *)&v96, Str); night::ns_node::debug_no_space[abi:cxx11](a2[48]); std::operator+(v101, "\nobj=>", (unsigned int *)v99); v8 = std::string::append(v101, "\nobj<="); std::string::basic_string(v103, v8); std::string::operator+=(v103); goto LABEL_73; } if ( std::operator==((char *)off_552086, (int)a2) ) { v9 = a2[15]; v10 = *a2; v11 = a2[27]; if ( *((_QWORD *)a2 + 6) ) sprintf(Str, "(%d,%d)type[%s] value[%s%s%s]", a2[12], a2[13], v10, v11, v9, a2[27]); else sprintf(Str, "type[%s] value[%s%s%s]", v10, v11, v9, a2[27]); } if ( std::operator==((char *)off_5520BF, (int)a2) ) { v97 = 0; v96 = (int)v98; v12 = a2[13]; v13 = *a2; v98[0] = 0; if ( __PAIR64__((unsigned int)v12, a2[12]) ) sprintf(Str, "(%d,%d)type[%s]", a2[12], v12, v13); else sprintf(Str, "type[%s]", v13); std::string::operator=((unsigned int *)&v96, Str); night::ns_node::debug_no_space[abi:cxx11](a2[47]); std::operator+(v101, " key[", (unsigned int *)v99); v14 = std::string::append(v101, "]"); std::string::basic_string(v103, v14); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); std::string::_M_dispose((void **)v99); night::ns_node::debug_no_space[abi:cxx11](a2[48]); std::operator+(v101, " value[", (unsigned int *)v99); v15 = std::string::append(v101, "]"); std::string::basic_string(v103, v15); std::string::operator+=(v103); goto LABEL_73; } if ( std::operator==("obj_self_op", (int)a2) ) { if ( a2[12] || a2[13] ) { night::ns_node::debug_no_space[abi:cxx11](a2[48]); sprintf( Str, "(%d,%d)type[%s] after[%d] op[%s] obj[%s]", a2[12], a2[13], *a2, *((unsigned __int8 *)a2 + 200), a2[39], (const char *)v103[0]); } else { night::ns_node::debug_no_space[abi:cxx11](a2[48]); sprintf( Str, "type[%s] after[%d] op[%s] obj[%s]", *a2, *((unsigned __int8 *)a2 + 200), a2[39], (const char *)v103[0]); } std::string::_M_dispose((void **)v103); } if ( std::operator==("obj_dot", (int)a2) || std::operator==("obj_property", (int)a2) ) { v93[0] = 0; v92[0] = (int)v93; v92[1] = 0; v16 = a2[49]; v17 = *((_DWORD *)v16 + 1); if ( *((_QWORD *)a2 + 6) ) sprintf(Str, "(%d,%d)type[%s] propertys[%zu]", a2[12], a2[13], *a2, (v17 - *(_DWORD *)v16) >> 2); else sprintf(Str, "type[%s] propertys[%zu]", *a2, (v17 - *(_DWORD *)v16) >> 2); std::string::operator=((unsigned int *)v92, Str); night::ns_node::debug_no_space[abi:cxx11](a2[48]); std::operator+(v101, "\nobj =>", (unsigned int *)v99); v18 = std::string::append(v101, "\nobj<="); std::string::basic_string(v103, v18); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); std::string::_M_dispose((void **)v99); std::string::operator+=("\npropertys =>"); for ( i = 0; ; ++i ) { v19 = (char *)a2[49]; if ( i >= (*((_DWORD *)v19 + 1) - *(_DWORD *)v19) >> 2 ) break; v20 = (_DWORD *)std::vector::at(v19, i); night::ns_node::debug_no_space[abi:cxx11](*v20); v94[0] = (int)&v95; std::string::_M_construct(v94, 1u, i + 48); std::operator+(&v96, "\n[", (unsigned int *)v94); v21 = std::string::append(&v96, "] "); std::string::basic_string(v99, v21); std::operator+(v103, v99, (unsigned int *)v101); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v99); std::string::_M_dispose((void **)&v96); std::string::_M_dispose((void **)v94); std::string::_M_dispose((void **)v101); } std::string::operator+=("\npropertys<="); std::string::basic_string(this, v92); v22 = v92; goto LABEL_131; } if ( std::operator==("if", (int)a2) ) { v97 = 0; v96 = (int)v98; v23 = a2[13]; v24 = a2[27]; v98[0] = 0; v25 = *a2; if ( __PAIR64__((unsigned int)v23, a2[12]) ) sprintf(Str, "(%d,%d)type[%s] punc[%s]", a2[12], v23, v25, v24); else sprintf(Str, "type[%s] punc[%s]", v25, v24); std::string::operator=((unsigned int *)&v96, Str); night::ns_node::debug_no_space[abi:cxx11](a2[51]); std::operator+(v101, "\ncond =>", (unsigned int *)v99); v26 = std::string::append(v101, "\ncond<="); std::string::basic_string(v103, v26); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); std::string::_M_dispose((void **)v99); night::ns_node::debug_no_space[abi:cxx11](a2[52]); std::operator+(v101, "\nifd =>", (unsigned int *)v99); v27 = std::string::append(v101, "\nifd<="); std::string::basic_string(v103, v27); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); std::string::_M_dispose((void **)v99); if ( !a2[53] ) goto LABEL_130; night::ns_node::debug_no_space[abi:cxx11](a2[53]); std::operator+(v101, "\nelsed =>", (unsigned int *)v99); v28 = std::string::append(v101, "\nelsed<="); std::string::basic_string(v103, v28); std::string::operator+=(v103); LABEL_73: std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); std::string::_M_dispose((void **)v99); LABEL_130: std::string::basic_string(this, &v96); v22 = &v96; goto LABEL_131; } if ( std::operator==((char *)off_552210, (int)a2) ) { v98[0] = 0; v96 = (int)v98; v97 = 0; v29 = a2[57]; v30 = *((_DWORD *)v29 + 1); if ( *((_QWORD *)a2 + 6) ) sprintf(Str, "(%d,%d)type[%s] progs[%zu]", a2[12], a2[13], *a2, (v30 - *(_DWORD *)v29) >> 2); else sprintf(Str, "type[%s] progs[%zu]", *a2, (v30 - *(_DWORD *)v29) >> 2); std::string::operator=((unsigned int *)&v96, Str); std::string::operator+=("\nprogs =>"); for ( j = 0; ; ++j ) { v31 = (char *)a2[57]; if ( j >= (*((_DWORD *)v31 + 1) - *(_DWORD *)v31) >> 2 ) break; v32 = (_DWORD *)std::vector::at(v31, j); night::ns_node::debug_no_space[abi:cxx11](*v32); std::operator+(v103, "\n", (unsigned int *)v101); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); } std::string::operator+=("\nprogs<="); night::ns_node::debug_no_space[abi:cxx11](a2[54]); std::operator+(v101, "\nbody =>", (unsigned int *)v99); v33 = std::string::append(v101, "\nbody<="); std::string::basic_string(v103, v33); std::string::operator+=(v103); goto LABEL_73; } if ( std::operator==("while", (int)a2) || std::operator==("do_while", (int)a2) ) { v97 = 0; v96 = (int)v98; v34 = a2[13]; v35 = *a2; v98[0] = 0; if ( __PAIR64__((unsigned int)v34, a2[12]) ) sprintf(Str, "(%d,%d)type[%s]", a2[12], v34, v35); else sprintf(Str, "type[%s]", v35); std::string::operator=((unsigned int *)&v96, Str); night::ns_node::debug_no_space[abi:cxx11](a2[51]); std::operator+(v101, "\ncond =>", (unsigned int *)v99); v36 = std::string::append(v101, "\ncond<="); std::string::basic_string(v103, v36); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); std::string::_M_dispose((void **)v99); night::ns_node::debug_no_space[abi:cxx11](a2[54]); std::operator+(v101, "\nbody =>", (unsigned int *)v99); v37 = std::string::append(v101, "\nbody<="); std::string::basic_string(v103, v37); std::string::operator+=(v103); goto LABEL_73; } if ( std::operator==("switch", (int)a2) ) { v91[0] = 0; v89 = v91; v90 = 0; v38 = a2[58]; v39 = *((_DWORD *)v38 + 1); if ( *((_QWORD *)a2 + 6) ) sprintf(Str, "(%d,%d)type[%s] cases[%zu]", a2[12], a2[13], *a2, (v39 - *(_DWORD *)v38) >> 2); else sprintf(Str, "type[%s] cases[%zu]", *a2, (v39 - *(_DWORD *)v38) >> 2); std::string::operator=((unsigned int *)&v89, Str); night::ns_node::debug_no_space[abi:cxx11](a2[51]); std::operator+(v101, "\ncond =>", (unsigned int *)v99); v40 = std::string::append(v101, "\ncond<="); std::string::basic_string(v103, v40); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); std::string::_M_dispose((void **)v99); std::string::operator+=("\ncases=>\n"); for ( k = 0; ; ++k ) { v41 = (char *)a2[58]; if ( k >= (*((_DWORD *)v41 + 1) - *(_DWORD *)v41) >> 2 ) break; v42 = (_DWORD *)std::vector::at(v41, k); night::ns_node::debug_no_space[abi:cxx11](*v42); v92[0] = (int)v93; std::string::_M_construct(v92, 1u, k + 48); std::operator+(v94, "cases[", (unsigned int *)v92); v43 = std::string::append(v94, "]=>"); std::string::basic_string(&v96, v43); std::operator+(v101, &v96, (unsigned int *)v99); v44 = std::string::append(v101, "<=cases"); std::string::basic_string(v103, v44); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); std::string::_M_dispose((void **)&v96); std::string::_M_dispose((void **)v94); std::string::_M_dispose((void **)v92); std::string::_M_dispose((void **)v99); for ( m = 0; ; ++m ) { v45 = std::vector>>::at(a2[59], k); if ( m >= (*(_DWORD *)(*(_DWORD *)v45 + 4) - **(_DWORD **)v45) >> 2 ) break; v99[0] = (int)v100; std::string::_M_construct(v99, 1u, m + 48); v92[0] = (int)v93; std::string::_M_construct(v92, 1u, k + 48); std::operator+(v94, "\ncase_progs[", (unsigned int *)v92); v46 = std::string::append(v94, ","); std::string::basic_string(&v96, v46); std::operator+(v101, &v96, (unsigned int *)v99); v47 = std::string::append(v101, "]=>"); std::string::basic_string(v103, v47); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); std::string::_M_dispose((void **)&v96); std::string::_M_dispose((void **)v94); std::string::_M_dispose((void **)v92); std::string::_M_dispose((void **)v99); v48 = (_DWORD **)std::vector>>::at(a2[59], k); v49 = (_DWORD *)std::vector::at(*v48, m); night::ns_node::debug_no_space[abi:cxx11](*v49); v50 = std::string::append(v101, "<=case_progs\n"); std::string::basic_string(v103, v50); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); } } std::string::operator+=("cases<="); std::string::operator+=("\ndefault=>"); for ( n = 0; ; ++n ) { v51 = (char *)a2[60]; if ( n >= (*((_DWORD *)v51 + 1) - *(_DWORD *)v51) >> 2 ) break; v52 = (_DWORD *)std::vector::at(v51, n); night::ns_node::debug_no_space[abi:cxx11](*v52); std::operator+(v103, "\n", (unsigned int *)v101); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); } std::string::operator+=("\ndefault<="); } else { if ( std::operator==("binary", (int)a2) || std::operator==("assign", (int)a2) || std::operator==("ternary", (int)a2) ) { v101[1] = 0; v101[0] = (int)&v102; v53 = a2[13]; v54 = *a2; v102 = 0; if ( __PAIR64__((unsigned int)v53, a2[12]) ) sprintf(Str, "(%d,%d)type[%s] op[%s]", a2[12], v53, v54, a2[39]); else sprintf(Str, "type[%s] op[%s]", v54, a2[39]); std::string::operator=((unsigned int *)v101, Str); std::string::operator+=("\nleft <="); night::ns_node::debug_no_space[abi:cxx11](a2[45]); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::operator+=("\nright <="); night::ns_node::debug_no_space[abi:cxx11](a2[46]); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::basic_string(this, v101); v22 = v101; goto LABEL_131; } 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) ) { v100[0] = 0; v99[0] = (int)v100; v99[1] = 0; v55 = a2[57]; v56 = *a2; v57 = *((_DWORD *)v55 + 1); if ( *((_QWORD *)a2 + 6) ) sprintf(Str, "(%d,%d)type[%s] punc[%s] progs[%zu] =>", a2[12], a2[13], v56, a2[27], (v57 - *(_DWORD *)v55) >> 2); else sprintf(Str, "type[%s] punc[%s] progs[%zu] =>", v56, a2[27], (v57 - *(_DWORD *)v55) >> 2); std::string::operator=((unsigned int *)v99, Str); for ( ii = 0; ; ++ii ) { v58 = (char *)a2[57]; if ( ii >= (*((_DWORD *)v58 + 1) - *(_DWORD *)v58) >> 2 ) break; v59 = (_DWORD *)std::vector::at(v58, ii); night::ns_node::debug_no_space[abi:cxx11](*v59); std::operator+(v103, "\n", (unsigned int *)v101); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); } std::string::operator+=("\nprogs<="); std::string::basic_string(this, v99); v22 = v99; goto LABEL_131; } if ( !std::operator==("call", (int)a2) ) { if ( !std::operator==("function", (int)a2) ) { std::string::basic_string(this, Str); return this; } v98[0] = 0; v96 = (int)v98; v97 = 0; v86 = a2[12]; v69 = a2[61]; v70 = a2[13]; v71 = *a2; v72 = *((_DWORD *)v69 + 1); if ( v86 || v70 ) sprintf(Str, "func (%d,%d)type[%s] name[%s] fargs[%zu] =>", v86, v70, v71, a2[33], (v72 - *(_DWORD *)v69) >> 2); else sprintf(Str, "func type[%s] name[%s] fargs[%zu] =>", v71, a2[33], (v72 - *(_DWORD *)v69) >> 2); std::string::operator=((unsigned int *)&v96, Str); for ( jj = 0; ; ++jj ) { v73 = (char *)a2[61]; if ( jj >= (*((_DWORD *)v73 + 1) - *(_DWORD *)v73) >> 2 ) break; v74 = (_DWORD *)std::vector::at(v73, jj); night::ns_node::debug_no_space[abi:cxx11](*v74); std::operator+(v101, "\nfargs[]=>", (unsigned int *)v99); v75 = std::string::append(v101, "<=[]fargs"); std::string::basic_string(v103, v75); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); std::string::_M_dispose((void **)v99); } std::string::operator+=("\nfargs<="); night::ns_node::debug_no_space[abi:cxx11](a2[54]); std::operator+(v101, "\nbody=>", (unsigned int *)v99); v76 = std::string::append(v101, "\nbody<="); std::string::basic_string(v103, v76); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); std::string::_M_dispose((void **)v99); std::string::operator+=("\nfunc<="); goto LABEL_130; } v91[0] = 0; v89 = v91; v90 = 0; v60 = a2[56]; v61 = *((_DWORD *)v60 + 1); if ( *((_QWORD *)a2 + 6) ) sprintf(Str, "call (%d,%d)type[%s] argss[%zu] =>", a2[12], a2[13], *a2, (v61 - *(_DWORD *)v60) >> 2); else sprintf(Str, "call type[%s] argss[%zu] =>", *a2, (v61 - *(_DWORD *)v60) >> 2); std::string::operator=((unsigned int *)&v89, Str); night::ns_node::debug_no_space[abi:cxx11](a2[55]); std::operator+(v101, "\nfunc=>", (unsigned int *)v99); v62 = std::string::append(v101, "\nfunc<="); std::string::basic_string(v103, v62); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); std::string::_M_dispose((void **)v99); for ( kk = 0; kk < (*((_DWORD *)a2[56] + 1) - *(_DWORD *)a2[56]) >> 2; ++kk ) { for ( mm = 0; ; ++mm ) { v63 = std::vector>>::at(a2[56], kk); if ( mm >= (*(_DWORD *)(*(_DWORD *)v63 + 4) - **(_DWORD **)v63) >> 2 ) break; v99[0] = (int)v100; std::string::_M_construct(v99, 1u, mm + 48); v92[0] = (int)v93; std::string::_M_construct(v92, 1u, kk + 48); std::operator+(v94, "\nargss[", (unsigned int *)v92); v64 = std::string::append(v94, ","); std::string::basic_string(&v96, v64); std::operator+(v101, &v96, (unsigned int *)v99); v65 = std::string::append(v101, "]=>"); std::string::basic_string(v103, v65); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); std::string::_M_dispose((void **)&v96); std::string::_M_dispose((void **)v94); std::string::_M_dispose((void **)v92); std::string::_M_dispose((void **)v99); v66 = (_DWORD **)std::vector>>::at(a2[56], kk); v67 = (_DWORD *)std::vector::at(*v66, mm); night::ns_node::debug_no_space[abi:cxx11](*v67); v68 = std::string::append(v101, "<="); std::string::basic_string(v103, v68); std::string::operator+=(v103); std::string::_M_dispose((void **)v103); std::string::_M_dispose((void **)v101); } } std::string::operator+=("\ncall<="); } std::string::basic_string(this, &v89); v22 = (int *)&v89; LABEL_131: std::string::_M_dispose((void **)v22); return this; } // 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); // 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); //----- (00474990) -------------------------------------------------------- void __fastcall night::NSStream::~NSStream(void **a1) { std::string::_M_dispose(a1 + 6); std::string::_M_dispose(a1); } //----- (004749B0) -------------------------------------------------------- void __fastcall __gnu_cxx::__scoped_lock::~__scoped_lock(int *a1) { _DWORD *exception; // eax if ( _CRT_MT ) { if ( __gthr_win32_mutex_unlock(*a1) ) { exception = __cxa_allocate_exception(4u); *exception = &off_55F35C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); } } } // 53E1E4: using guessed type int _CRT_MT; // 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; // 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (00474A70) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) { return std::__basic_file::fd((FILE **)(a1 + 40)); } //----- (00474A80) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) { return std::__basic_file::file(a1 + 40); } //----- (00474AA0) -------------------------------------------------------- void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) { int v4; // eax std::filebuf::basic_filebuf((int)this); *(_DWORD *)this = off_55F234; std::__basic_file::sys_open(this + 40, a2, a3); if ( std::__basic_file::is_open((_DWORD *)this + 10) ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::filebuf::_M_allocate_internal_buffer((int)this); *(_WORD *)(this + 73) = 0; v4 = *((_DWORD *)this + 16); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 1) = v4; *((_DWORD *)this + 2) = v4; *((_DWORD *)this + 3) = v4; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 6) = 0; } } // 55F234: using guessed type int (*off_55F234[2])(); //----- (00474BA0) -------------------------------------------------------- void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4) { int v4; // eax std::filebuf::basic_filebuf((int)this); *(_DWORD *)this = off_55F234; std::__basic_file::sys_open((FILE **)this + 10, FileHandle, a3); if ( std::__basic_file::is_open((_DWORD *)this + 10) ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::filebuf::_M_allocate_internal_buffer((int)this); *(_WORD *)(this + 73) = 0; v4 = *((_DWORD *)this + 16); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 1) = v4; *((_DWORD *)this + 2) = v4; *((_DWORD *)this + 3) = v4; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 6) = 0; } } // 55F234: using guessed type int (*off_55F234[2])(); //----- (00474CB0) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) { std::filebuf::basic_filebuf((int)a1); *a1 = off_55F234; } // 55F234: using guessed type int (*off_55F234[2])(); //----- (00474CD0) -------------------------------------------------------- void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) { int v4; // eax std::filebuf::basic_filebuf((int)this); *(_DWORD *)this = off_55F234; std::__basic_file::sys_open(this + 40, a2, a3); if ( std::__basic_file::is_open((_DWORD *)this + 10) ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::filebuf::_M_allocate_internal_buffer((int)this); *(_WORD *)(this + 73) = 0; v4 = *((_DWORD *)this + 16); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 1) = v4; *((_DWORD *)this + 2) = v4; *((_DWORD *)this + 3) = v4; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 6) = 0; } } // 55F234: using guessed type int (*off_55F234[2])(); //----- (00474DD0) -------------------------------------------------------- void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4) { int v4; // eax std::filebuf::basic_filebuf((int)this); *(_DWORD *)this = off_55F234; std::__basic_file::sys_open((FILE **)this + 10, FileHandle, a3); if ( std::__basic_file::is_open((_DWORD *)this + 10) ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::filebuf::_M_allocate_internal_buffer((int)this); *(_WORD *)(this + 73) = 0; v4 = *((_DWORD *)this + 16); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 1) = v4; *((_DWORD *)this + 2) = v4; *((_DWORD *)this + 3) = v4; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 6) = 0; } } // 55F234: using guessed type int (*off_55F234[2])(); //----- (00474EE0) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) { std::filebuf::basic_filebuf((int)a1); *a1 = off_55F234; } // 55F234: using guessed type int (*off_55F234[2])(); //----- (00474F00) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) { *(_DWORD *)a1 = off_5600A0; std::filebuf::close(a1); std::__basic_file::~__basic_file((int)a1 + 40); *(_DWORD *)a1 = &off_560424; std::locale::~locale((_DWORD **)a1 + 7); operator delete(a1); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (00474FB0) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) { *(_DWORD *)a1 = off_5600A0; std::filebuf::close(a1); std::__basic_file::~__basic_file((int)a1 + 40); *(_DWORD *)a1 = &off_560424; std::locale::~locale((_DWORD **)a1 + 7); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (00475050) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) { *(_DWORD *)a1 = off_5600A0; std::filebuf::close(a1); std::__basic_file::~__basic_file((int)a1 + 40); *(_DWORD *)a1 = &off_560424; std::locale::~locale((_DWORD **)a1 + 7); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (004750F0) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) { return std::__basic_file::fd((FILE **)(a1 + 40)); } //----- (00475100) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) { return std::__basic_file::file(a1 + 40); } //----- (00475120) -------------------------------------------------------- void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) { int v4; // eax std::wfilebuf::basic_filebuf((int)this); *(_DWORD *)this = off_55F274; std::__basic_file::sys_open(this + 40, a2, a3); if ( std::__basic_file::is_open((_DWORD *)this + 10) ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::wfilebuf::_M_allocate_internal_buffer((int)this); *(_WORD *)(this + 73) = 0; v4 = *((_DWORD *)this + 16); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 1) = v4; *((_DWORD *)this + 2) = v4; *((_DWORD *)this + 3) = v4; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 6) = 0; } } // 55F274: using guessed type int (*off_55F274[2])(); //----- (00475220) -------------------------------------------------------- void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4) { int v4; // eax std::wfilebuf::basic_filebuf((int)this); *(_DWORD *)this = off_55F274; std::__basic_file::sys_open((FILE **)this + 10, FileHandle, a3); if ( std::__basic_file::is_open((_DWORD *)this + 10) ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::wfilebuf::_M_allocate_internal_buffer((int)this); *(_WORD *)(this + 73) = 0; v4 = *((_DWORD *)this + 16); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 1) = v4; *((_DWORD *)this + 2) = v4; *((_DWORD *)this + 3) = v4; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 6) = 0; } } // 55F274: using guessed type int (*off_55F274[2])(); //----- (00475330) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) { std::wfilebuf::basic_filebuf((int)a1); *a1 = off_55F274; } // 55F274: using guessed type int (*off_55F274[2])(); //----- (00475350) -------------------------------------------------------- void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) { int v4; // eax std::wfilebuf::basic_filebuf((int)this); *(_DWORD *)this = off_55F274; std::__basic_file::sys_open(this + 40, a2, a3); if ( std::__basic_file::is_open((_DWORD *)this + 10) ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::wfilebuf::_M_allocate_internal_buffer((int)this); *(_WORD *)(this + 73) = 0; v4 = *((_DWORD *)this + 16); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 1) = v4; *((_DWORD *)this + 2) = v4; *((_DWORD *)this + 3) = v4; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 6) = 0; } } // 55F274: using guessed type int (*off_55F274[2])(); //----- (00475450) -------------------------------------------------------- void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4) { int v4; // eax std::wfilebuf::basic_filebuf((int)this); *(_DWORD *)this = off_55F274; std::__basic_file::sys_open((FILE **)this + 10, FileHandle, a3); if ( std::__basic_file::is_open((_DWORD *)this + 10) ) { *((_DWORD *)this + 12) = a3; *((_DWORD *)this + 17) = a4; std::wfilebuf::_M_allocate_internal_buffer((int)this); *(_WORD *)(this + 73) = 0; v4 = *((_DWORD *)this + 16); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 1) = v4; *((_DWORD *)this + 2) = v4; *((_DWORD *)this + 3) = v4; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 6) = 0; } } // 55F274: using guessed type int (*off_55F274[2])(); //----- (00475560) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) { std::wfilebuf::basic_filebuf((int)a1); *a1 = off_55F274; } // 55F274: using guessed type int (*off_55F274[2])(); //----- (00475580) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) { *(_DWORD *)a1 = off_5600E0; std::wfilebuf::close(a1); std::__basic_file::~__basic_file((int)a1 + 40); *(_DWORD *)a1 = &off_560464; std::locale::~locale((_DWORD **)a1 + 7); operator delete(a1); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560464: using guessed type int (*off_560464)(); //----- (00475630) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) { *(_DWORD *)a1 = off_5600E0; std::wfilebuf::close(a1); std::__basic_file::~__basic_file((int)a1 + 40); *(_DWORD *)a1 = &off_560464; std::locale::~locale((_DWORD **)a1 + 7); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560464: using guessed type int (*off_560464)(); //----- (004756D0) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) { *(_DWORD *)a1 = off_5600E0; std::wfilebuf::close(a1); std::__basic_file::~__basic_file((int)a1 + 40); *(_DWORD *)a1 = &off_560464; std::locale::~locale((_DWORD **)a1 + 7); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560464: using guessed type int (*off_560464)(); //----- (00475770) -------------------------------------------------------- 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; // esi 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_557D9D[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; } //----- (00475800) -------------------------------------------------------- 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; } //----- (00475920) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) { return *(_DWORD *)(a1 + 32); } //----- (00475930) -------------------------------------------------------- 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; } // 475998: variable 'v17' is possibly undefined //----- (004759F0) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) { return fflush(*(FILE **)(a1 + 32)); } //----- (00475A10) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1) { int result; // eax result = getc(*(FILE **)(a1 + 32)); *(_DWORD *)(a1 + 36) = result; return result; } //----- (00475A30) -------------------------------------------------------- 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; } //----- (00475A80) -------------------------------------------------------- size_t __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, void *Buffer, size_t ElementCount) { return fwrite(Buffer, 1u, ElementCount, this[8]); } //----- (00475AB0) -------------------------------------------------------- _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, fpos_t a3, int a4, int a5) { int v6; // ecx fpos_t v8; // rax *this = -1; this[1] = -1; this[2] = 0; v6 = 0; if ( a4 ) v6 = (a4 != 1) + 1; if ( !fseeko64(*(FILE **)(a2 + 32), a3, v6) ) { v8 = ftello64((FILE *)*(_DWORD *)(a2 + 32)); this[2] = 0; *(_QWORD *)this = v8; } return this; } //----- (00475B40) -------------------------------------------------------- _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos( _DWORD *this, FILE **a2, fpos_t a3, int a4, int a5, int a6) { _DWORD *(__thiscall *file)(_DWORD *, int, fpos_t, int, int); // edi fpos_t v9; // rax file = (_DWORD *(__thiscall *)(_DWORD *, int, fpos_t, int, int))(*a2)->_file; if ( file == __gnu_cxx::stdio_sync_filebuf::seekoff ) { *this = -1; this[1] = -1; this[2] = 0; if ( !fseeko64(a2[8], a3, 0) ) { v9 = ftello64(a2[8]); this[2] = 0; *(_QWORD *)this = v9; } return this; } else { ((void (__thiscall *)(_DWORD *, FILE **, _DWORD, _DWORD, _DWORD, int))file)(this, a2, a3, HIDWORD(a3), 0, a6); return this; } } //----- (00475C20) -------------------------------------------------------- int __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, int Character) { if ( Character == -1 ) return -(fflush(this[8]) != 0); else return putc(Character, this[8]); } //----- (00475C60) -------------------------------------------------------- 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; } //----- (00475CA0) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1) { int v2; // eax v2 = getc(*(FILE **)(a1 + 32)); return ungetc(v2, *(FILE **)(a1 + 32)); } //----- (00475CD0) -------------------------------------------------------- void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, std::locale *a2) { int v3; // eax int v4; // eax const std::locale *v5; // [esp+8h] [ebp-58h] std::streambuf::basic_streambuf(this, a2, v5); v3 = *((_DWORD *)a2 + 8); *this = &off_55F2B4; *((_DWORD *)a2 + 8) = 0; this[8] = v3; v4 = *((_DWORD *)a2 + 9); *((_DWORD *)a2 + 9) = -1; this[9] = v4; } // 475D05: variable 'v5' is possibly undefined // 55F2B4: using guessed type int (*off_55F2B4)(); //----- (00475D40) -------------------------------------------------------- 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_560424; *(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_55F2B4; this[9] = -1; this[8] = a2; return result; } // 55F2B4: using guessed type int (*off_55F2B4)(); // 560424: using guessed type int (*off_560424)(); //----- (00475DA0) -------------------------------------------------------- void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, std::locale *a2) { int v3; // eax int v4; // eax const std::locale *v5; // [esp+8h] [ebp-58h] std::streambuf::basic_streambuf(this, a2, v5); v3 = *((_DWORD *)a2 + 8); *this = &off_55F2B4; *((_DWORD *)a2 + 8) = 0; this[8] = v3; v4 = *((_DWORD *)a2 + 9); *((_DWORD *)a2 + 9) = -1; this[9] = v4; } // 475DD5: variable 'v5' is possibly undefined // 55F2B4: using guessed type int (*off_55F2B4)(); //----- (00475E10) -------------------------------------------------------- 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_560424; *(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_55F2B4; this[9] = -1; this[8] = a2; return result; } // 55F2B4: using guessed type int (*off_55F2B4)(); // 560424: using guessed type int (*off_560424)(); //----- (00475E70) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *Block) { _DWORD **v2; // ecx v2 = (_DWORD **)(Block + 28); *(v2 - 7) = &off_560424; std::locale::~locale(v2); operator delete(Block); } // 560424: using guessed type int (*off_560424)(); //----- (00475EA0) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) { *(_DWORD *)a1 = &off_560424; std::locale::~locale((_DWORD **)(a1 + 28)); } // 560424: using guessed type int (*off_560424)(); //----- (00475EB0) -------------------------------------------------------- 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; } //----- (00475F20) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) { return *(_DWORD *)(a1 + 32); } //----- (00475F30) -------------------------------------------------------- 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; } // 475F98: variable 'v17' is possibly undefined //----- (00475FF0) -------------------------------------------------------- int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) { return fflush(*(FILE **)(a1 + 32)); } //----- (00476010) -------------------------------------------------------- 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; } //----- (00476030) -------------------------------------------------------- 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; } } //----- (004760B0) -------------------------------------------------------- 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; } //----- (00476100) -------------------------------------------------------- _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, fpos_t a3, int a4, int a5) { int v6; // ecx fpos_t v8; // rax *this = -1; this[1] = -1; this[2] = 0; v6 = 0; if ( a4 ) v6 = (a4 != 1) + 1; if ( !fseeko64(*(FILE **)(a2 + 32), a3, v6) ) { v8 = ftello64((FILE *)*(_DWORD *)(a2 + 32)); this[2] = 0; *(_QWORD *)this = v8; } return this; } //----- (00476190) -------------------------------------------------------- _DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos( _DWORD *this, FILE **a2, fpos_t a3, int a4, int a5, int a6) { _DWORD *(__thiscall *file)(_DWORD *, int, fpos_t, int, int); // edi fpos_t v9; // rax file = (_DWORD *(__thiscall *)(_DWORD *, int, fpos_t, int, int))(*a2)->_file; if ( file == __gnu_cxx::stdio_sync_filebuf::seekoff ) { *this = -1; this[1] = -1; this[2] = 0; if ( !fseeko64(a2[8], a3, 0) ) { v9 = ftello64(a2[8]); this[2] = 0; *(_QWORD *)this = v9; } return this; } else { ((void (__thiscall *)(_DWORD *, FILE **, _DWORD, _DWORD, _DWORD, int))file)(this, a2, a3, HIDWORD(a3), 0, a6); return this; } } //----- (00476270) -------------------------------------------------------- __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; } //----- (004762B0) -------------------------------------------------------- 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; } //----- (00476320) -------------------------------------------------------- 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)); } //----- (00476350) -------------------------------------------------------- void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, std::locale *a2) { int v3; // eax const std::locale *v4; // [esp+8h] [ebp-58h] std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v4); v3 = *((_DWORD *)a2 + 8); *(_DWORD *)this = &off_55F2F4; *((_DWORD *)a2 + 8) = 0; *(_DWORD *)(this + 32) = v3; *(_WORD *)(this + 36) = *((_WORD *)a2 + 18); *((_WORD *)a2 + 18) = -1; } // 476385: variable 'v4' is possibly undefined // 55F2F4: using guessed type int (*off_55F2F4)(); //----- (004763D0) -------------------------------------------------------- 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_560464; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_55F2F4; this[8] = a2; result = -1; *((_WORD *)this + 18) = -1; return result; } // 55F2F4: using guessed type int (*off_55F2F4)(); // 560464: using guessed type int (*off_560464)(); //----- (00476430) -------------------------------------------------------- void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, std::locale *a2) { int v3; // eax const std::locale *v4; // [esp+8h] [ebp-58h] std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v4); v3 = *((_DWORD *)a2 + 8); *(_DWORD *)this = &off_55F2F4; *((_DWORD *)a2 + 8) = 0; *(_DWORD *)(this + 32) = v3; *(_WORD *)(this + 36) = *((_WORD *)a2 + 18); *((_WORD *)a2 + 18) = -1; } // 476465: variable 'v4' is possibly undefined // 55F2F4: using guessed type int (*off_55F2F4)(); //----- (004764B0) -------------------------------------------------------- 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_560464; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_55F2F4; this[8] = a2; result = -1; *((_WORD *)this + 18) = -1; return result; } // 55F2F4: using guessed type int (*off_55F2F4)(); // 560464: using guessed type int (*off_560464)(); //----- (00476510) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *Block) { _DWORD **v2; // ecx v2 = (_DWORD **)(Block + 28); *(v2 - 7) = &off_560464; std::locale::~locale(v2); operator delete(Block); } // 560464: using guessed type int (*off_560464)(); //----- (00476540) -------------------------------------------------------- void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) { *(_DWORD *)a1 = &off_560464; std::locale::~locale((_DWORD **)(a1 + 28)); } // 560464: using guessed type int (*off_560464)(); //----- (00476550) -------------------------------------------------------- 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; } //----- (004765C0) -------------------------------------------------------- void __fastcall __gnu_cxx::recursive_init_error::recursive_init_error(_DWORD *a1) { *a1 = &off_55F334; } // 55F334: using guessed type void (__cdecl *off_55F334)(__gnu_cxx::recursive_init_error *__hidden this); //----- (004765D0) -------------------------------------------------------- void __fastcall __gnu_cxx::recursive_init_error::~recursive_init_error(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_55F334; std::exception::~exception(Block); operator delete(a1); } // 4765DC: variable 'Block' is possibly undefined // 55F334: using guessed type void (__cdecl *off_55F334)(__gnu_cxx::recursive_init_error *__hidden this); //----- (00476600) -------------------------------------------------------- void __cdecl __gnu_cxx::recursive_init_error::~recursive_init_error(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_55F334; std::exception::~exception(a1); } // 476600: variable 'v1' is possibly undefined // 55F334: using guessed type void (__cdecl *off_55F334)(__gnu_cxx::recursive_init_error *__hidden this); //----- (00476610) -------------------------------------------------------- void __fastcall __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_55F348; std::exception::~exception(Block); operator delete(a1); } // 47661C: variable 'Block' is possibly undefined // 55F348: using guessed type void (__cdecl *off_55F348)(__gnu_cxx::__concurrence_lock_error *__hidden this); //----- (00476640) -------------------------------------------------------- void __cdecl __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_55F348; std::exception::~exception(a1); } // 476640: variable 'v1' is possibly undefined // 55F348: using guessed type void (__cdecl *off_55F348)(__gnu_cxx::__concurrence_lock_error *__hidden this); //----- (00476650) -------------------------------------------------------- void __fastcall __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_55F35C; std::exception::~exception(Block); operator delete(a1); } // 47665C: variable 'Block' is possibly undefined // 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (00476680) -------------------------------------------------------- void __cdecl __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_55F35C; std::exception::~exception(a1); } // 476680: variable 'v1' is possibly undefined // 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (00476690) -------------------------------------------------------- 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_557D34; 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); } //----- (00476720) -------------------------------------------------------- void __noreturn __gnu_cxx::__verbose_terminate_handler(void) { struct type_info *v0; // eax _BYTE *v1; // edx bool v2; // zf FILE *v3; // eax FILE *v4; // eax FILE *v5; // eax FILE *v6; // eax FILE *v7; // eax FILE *v8; // eax FILE *(__cdecl *v9)(unsigned int); // [esp+10h] [ebp-5Ch] char *Block; // [esp+14h] [ebp-58h] char *Buffer; // [esp+18h] [ebp-54h] int status[4]; // [esp+5Ch] [ebp-10h] BYREF if ( !__gnu_cxx::__verbose_terminate_handler(void)::terminating ) { __gnu_cxx::__verbose_terminate_handler(void)::terminating = 1; v0 = __cxa_current_exception_type(); if ( v0 ) { v1 = (_BYTE *)*((_DWORD *)v0 + 1); v2 = *v1 == 42; status[0] = -1; Buffer = &v1[v2]; Block = __cxa_demangle(Buffer, 0, 0, status); v9 = ___acrt_iob_func; v3 = ___acrt_iob_func(2u); fwrite("terminate called after throwing an instance of '", 1u, 0x30u, v3); if ( status[0] ) { v4 = v9(2u); fputs(Buffer, v4); } else { v6 = v9(2u); fputs(Block, v6); } v5 = v9(2u); fwrite("'\n", 1u, 2u, v5); if ( !status[0] ) free(Block); __cxa_rethrow(); } v7 = ___acrt_iob_func(2u); fwrite("terminate called without an active exception\n", 1u, 0x2Du, v7); abort(); } v8 = ___acrt_iob_func(2u); fwrite("terminate called recursively\n", 1u, 0x1Du, v8); abort(); } // 53FCF8: using guessed type char __gnu_cxx::__verbose_terminate_handler(void)::terminating; // 476720: using guessed type int status[4]; //----- (004769F0) -------------------------------------------------------- void __noreturn __gnu_cxx::__throw_concurrence_lock_error(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_55F348; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); } // 55B6E8: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; // 55F348: using guessed type void (__cdecl *off_55F348)(__gnu_cxx::__concurrence_lock_error *__hidden this); //----- (00476A20) -------------------------------------------------------- void __noreturn __gnu_cxx::__throw_concurrence_unlock_error(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_55F35C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); } // 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; // 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (00476A50) -------------------------------------------------------- void __gnu_cxx::__freeres(void) { if ( Block ) { free(Block); Block = 0; } } //----- (00476A80) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00476A90) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00476AA0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00476AB0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00476AC0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00476AD0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00476AE0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00476AF0) -------------------------------------------------------- bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) { return *a1 == *a2; } //----- (00476B00) -------------------------------------------------------- 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; } //----- (00476B40) -------------------------------------------------------- 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; } //----- (00476B80) -------------------------------------------------------- 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; } //----- (00476BF0) -------------------------------------------------------- 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; } } //----- (00476C60) -------------------------------------------------------- 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; } //----- (00476C80) -------------------------------------------------------- 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; } //----- (00476CE0) -------------------------------------------------------- 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; } //----- (00476DE0) -------------------------------------------------------- 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); } //----- (00476E50) -------------------------------------------------------- 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 bool v9; // cf int v10; // eax int v11; // esi char *v12; // edx int v13; // eax int v14; // eax int v15; // ecx int v16; // eax _DWORD *v17; // ecx int result; // eax bool v19; // al char v20; // [esp+13h] [ebp-39h] unsigned __int8 v21; // [esp+13h] [ebp-39h] int v22; // [esp+18h] [ebp-34h] int v23; // [esp+20h] [ebp-2Ch] BYREF int v24; // [esp+24h] [ebp-28h] int v25; // [esp+28h] [ebp-24h] _DWORD *v26; // [esp+2Ch] [ebp-20h] LOBYTE(v5) = __cxxabiv1::__class_type_info::__do_upcast(this, a2, (int)a3, a4); v6 = v5; if ( (_BYTE)v5 ) return v6; v22 = a4[2]; if ( (v22 & 0x10) != 0 ) v22 = this[2]; v7 = this[3]; v8 = v7 - 1; if ( !v7 ) { LABEL_34: LOBYTE(v6) = a4[1] != 0; return v6; } while ( 1 ) { while ( 1 ) { v23 = 0; v24 = 0; v25 = v22; v10 = this[2 * v8 + 5]; v26 = 0; v11 = v10 & 2; v6 = v10 & 1; v20 = v10 & 1; if ( !(v11 | v22 & 1) ) goto LABEL_9; v12 = 0; if ( a3 ) { v13 = v10 >> 8; if ( v20 ) v13 = *(_DWORD *)(*a3 + v13); v12 = (char *)a3 + v13; } v6 = (*(int (__thiscall **)(_DWORD, int, char *, int *))(*(_DWORD *)this[2 * v8 + 4] + 24))( this[2 * v8 + 4], a2, v12, &v23); if ( !(_BYTE)v6 ) goto LABEL_9; if ( v26 == (_DWORD *)8 && v20 ) v26 = (_DWORD *)this[2 * v8 + 4]; if ( !v11 && v24 > 3 ) v24 &= ~2u; v14 = a4[3]; if ( v14 ) break; v15 = v25; *a4 = v23; v16 = v24; a4[2] = v15; v17 = v26; a4[1] = v16; a4[3] = v17; if ( v16 <= 3 ) return v6; if ( (v16 & 2) != 0 ) { if ( (this[2] & 1) == 0 ) return v6; goto LABEL_9; } if ( (v16 & 1) == 0 || (this[2] & 2) == 0 ) return v6; v9 = v8-- == 0; if ( v9 ) goto LABEL_34; } if ( *a4 != v23 ) break; if ( !*a4 ) { if ( v26 == (_DWORD *)8 || v14 == 8 || (v21 = v6, v19 = std::type_info::operator==(v26, a4[3]), v6 = v21, !v19) ) { a4[1] = 2; return v6; } } a4[1] |= v24; LABEL_9: v9 = v8-- == 0; if ( v9 ) goto LABEL_34; } *a4 = 0; result = v6; a4[1] = 2; return result; } // 476E78: variable 'v5' is possibly undefined //----- (00477080) -------------------------------------------------------- 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) { unsigned int v8; // eax int v9; // eax int v10; // edi int v11; // esi int v12; // ebx int v13; // edx int v14; // eax bool v15; // cf int v16; // eax int v17; // ecx int v18; // eax int v19; // edx unsigned __int8 v20; // si int v21; // eax int v22; // edx int v24; // eax int v25; // eax int v27; // [esp+40h] [ebp-58h] int v28; // [esp+44h] [ebp-54h] char v29; // [esp+44h] [ebp-54h] unsigned int v30; // [esp+48h] [ebp-50h] int v31; // [esp+4Ch] [ebp-4Ch] int v32; // [esp+54h] [ebp-44h] unsigned __int8 v33; // [esp+59h] [ebp-3Fh] char v34; // [esp+5Ah] [ebp-3Eh] char v35; // [esp+5Bh] [ebp-3Dh] int v36; // [esp+68h] [ebp-30h] BYREF int v37; // [esp+6Ch] [ebp-2Ch] int v38; // [esp+70h] [ebp-28h] int v39; // [esp+74h] [ebp-24h] int v40; // [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) ) { *a8 = (int)a5; a8[1] = a3; if ( a2 >= 0 ) { a8[3] = 5 * (a7 == (_DWORD *)((char *)a5 + a2)) + 1; return 0; } v33 = 0; if ( a2 == -2 ) a8[3] = 1; return v33; } v8 = 0; v33 = 0; v35 = 0; v34 = 1; if ( a2 >= 0 ) v8 = (unsigned int)a7 - a2; v30 = v8; while ( 1 ) { v9 = this[3]; v10 = v9 - 1; if ( v9 ) break; LABEL_59: v35 &= v34; if ( !v35 ) return v33; v34 = 0; } while ( 1 ) { while ( 1 ) { v16 = a8[4]; v36 = 0; v37 = 0; v17 = a3; v29 = v16; v40 = v16; v38 = 0; v18 = this[2 * v10 + 5]; v39 = 0; v19 = v18 >> 8; if ( (v18 & 1) != 0 ) { v17 = a3 | 1; v19 = *(_DWORD *)(*a5 + v19); } if ( !v30 || v34 != v30 < (unsigned int)a5 + v19 ) break; v35 = 1; LABEL_30: v15 = v10-- == 0; if ( v15 ) goto LABEL_59; } if ( (v18 & 2) != 0 ) break; if ( a2 != -2 || (v29 & 3) != 0 ) { v17 &= ~2u; break; } v15 = v10-- == 0; if ( v15 ) goto LABEL_59; } v20 = (*(int (__thiscall **)(_DWORD, int, int, int, int, int, _DWORD *, int *))(*(_DWORD *)this[2 * v10 + 4] + 28))( this[2 * v10 + 4], a2, v17, a4, (int)a5 + v19, a6, a7, &v36); v12 = v39; v21 = v38 | a8[2]; v28 = v21; v22 = v39; a8[2] = v21; if ( (v22 & 0xFFFFFFFB) == 2 ) { v25 = v36; a8[3] = v12; *a8 = v25; a8[1] = v37; return v20; } v13 = v36; v27 = *a8; if ( v33 ) { if ( !v27 ) { if ( !v36 ) goto LABEL_29; v11 = a8[3]; if ( v21 <= 3 ) goto LABEL_43; goto LABEL_15; } } else if ( !*a8 ) { v24 = v37; *a8 = v36; a8[1] = v24; if ( v13 && v28 ) { v33 = v20; if ( (this[2] & 1) == 0 ) return v33; } else { v33 = v20; } goto LABEL_29; } if ( v36 == v27 ) { a8[1] |= v37; goto LABEL_29; } if ( !v36 && !v20 ) { LABEL_29: if ( v28 == 4 ) return v33; goto LABEL_30; } v11 = a8[3]; if ( v21 <= 3 ) goto LABEL_43; LABEL_15: if ( (v21 & 1) == 0 || (a8[4] & 2) == 0 ) { if ( !v11 ) v11 = 1; if ( !v12 ) v12 = 1; v31 = v11; v32 = v12; goto LABEL_22; } LABEL_43: v31 = v11; v32 = v12; if ( v11 > 0 ) goto LABEL_44; if ( v12 <= 3 || (v12 & 1) != 0 && (this[2] & 2) != 0 ) { if ( a2 < 0 ) { if ( a2 != -2 ) { v11 = (*(int (__fastcall **)(int, int, int, int, int, _DWORD *))(*(_DWORD *)a4 + 32))(a4, v36, a2, v27, a6, a7); v31 = v11; LABEL_44: if ( v12 <= 0 ) { if ( v11 > 3 && ((v11 & 1) == 0 || (this[2] & 2) == 0) ) { if ( (v11 ^ 1) > 3 ) { LABEL_80: v12 = v11; v14 = v31 & 2; goto LABEL_26; } LABEL_55: v28 = a8[2]; LABEL_56: *a8 = 0; a8[3] = 1; v33 = 1; goto LABEL_29; } v13 = v36; if ( a2 < 0 ) { if ( a2 != -2 ) { v12 = (*(int (__thiscall **)(int, int, int, int, _DWORD *))(*(_DWORD *)a4 + 32))(a4, a2, v36, a6, a7); v32 = v12; if ( (v12 ^ v31) <= 3 ) goto LABEL_51; LABEL_23: v13 = v36; if ( v12 <= 3 ) { v12 = v11; v14 = v11 & 2; goto LABEL_26; } goto LABEL_24; } LABEL_79: if ( (v31 ^ 1) > 3 ) goto LABEL_80; goto LABEL_55; } if ( a7 != (_DWORD *)(v36 + a2) ) goto LABEL_79; if ( (v11 ^ 6) <= 3 ) { v32 = 6; LABEL_51: if ( (v31 & v32) > 3 ) { *a8 = 0; a8[3] = 2; return 1; } goto LABEL_55; } LABEL_99: v14 = 2; v12 = 6; goto LABEL_25; } LABEL_22: if ( (v12 ^ v31) <= 3 ) goto LABEL_51; goto LABEL_23; } if ( v12 <= 0 ) { LABEL_78: v31 = 1; v11 = 1; goto LABEL_79; } } else { if ( a7 == (_DWORD *)(a2 + v27) ) { v31 = 6; v11 = 6; if ( v12 <= 0 ) goto LABEL_80; goto LABEL_22; } if ( v12 <= 0 ) { if ( a7 == (_DWORD *)(v36 + a2) ) goto LABEL_99; goto LABEL_78; } } v11 = 1; if ( (v12 ^ 1) <= 3 ) goto LABEL_56; goto LABEL_23; } if ( (v12 ^ 1) <= 3 ) goto LABEL_56; LABEL_24: v14 = v12 & 2; LABEL_25: *a8 = v13; v33 = 0; a8[1] = v37; LABEL_26: a8[3] = v12; if ( !v14 && (v12 & 1) != 0 ) { v28 = a8[2]; goto LABEL_29; } return 0; } //----- (00477730) -------------------------------------------------------- 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 v13; // dl char v14; // [esp+1Fh] [ebp-1Dh] if ( a3 != a5 || (v13 = std::type_info::operator==(a1, (int)a4), result = 6, !v13) ) { v7 = a1[3]; v8 = v7 - 1; if ( !v7 ) return 1; while ( 1 ) { v9 = a1[2 * v8 + 5]; if ( (v9 & 2) != 0 ) { v10 = v9 >> 8; v14 = 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 ( v14 ) return result | 1; return result; } } LABEL_8: if ( v8-- == 0 ) return 1; } } return result; } //----- (00477810) -------------------------------------------------------- const char *`anonymous namespace'::io_error_category::name() { return "iostream"; } //----- (00477820) -------------------------------------------------------- int __thiscall `anonymous namespace'::io_error_category::message[abi:cxx11](int this, int a2, int a3) { *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = this + 8; *(_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; } //----- (00477910) -------------------------------------------------------- _anonymous_namespace_::system_error_category *__stdcall `anonymous namespace'::system_error_category::default_error_condition( _anonymous_namespace_::system_error_category *this, int a2) { return this; } //----- (00477970) -------------------------------------------------------- const char *`anonymous namespace'::system_error_category::name() { return "system"; } //----- (00477980) -------------------------------------------------------- const char *`anonymous namespace'::generic_error_category::name() { return "generic"; } //----- (00477990) -------------------------------------------------------- _DWORD *__thiscall `anonymous namespace'::system_error_category::message[abi:cxx11]( _DWORD *this, int a2, int ErrorMessage) { void *v4; // edi char *v5; // eax char *Src; // esi size_t v7; // eax size_t Size; // ebp void *v10; // eax size_t v11[8]; // [esp+1Ch] [ebp-20h] BYREF v4 = this + 2; v5 = strerror(ErrorMessage); *this = v4; if ( !v5 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); Src = v5; v7 = strlen(v5); v11[0] = v7; Size = v7; if ( v7 > 0xF ) { v10 = std::string::_M_create(v11, 0); *this = v10; v4 = v10; this[2] = v11[0]; goto LABEL_9; } if ( v7 != 1 ) { if ( !v7 ) goto LABEL_5; LABEL_9: memcpy(v4, Src, Size); v7 = v11[0]; v4 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Src; LABEL_5: this[1] = v7; *((_BYTE *)v4 + v7) = 0; return this; } // 477990: using guessed type size_t var_20[8]; //----- (00477A40) -------------------------------------------------------- int WXML::EXPRLib::NonTerminal::GetClass() { return 2; } //----- (00477A48) -------------------------------------------------------- int WXML::EXPRLib::EPS::GetClass() { return 4; } //----- (00477A50) -------------------------------------------------------- int WXML::EXPRLib::Action::GetClass() { return 3; } //----- (00477A58) -------------------------------------------------------- int WXML::EXPRLib::Terminal::GetClass() { return 1; } //----- (00477A60) -------------------------------------------------------- const char *__gnu_cxx::__concurrence_lock_error::what() { return "__gnu_cxx::__concurrence_lock_error"; } //----- (00477A70) -------------------------------------------------------- const char *__gnu_cxx::__concurrence_unlock_error::what() { return "__gnu_cxx::__concurrence_unlock_error"; } //----- (00477A80) -------------------------------------------------------- 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; } //----- (00477AB0) -------------------------------------------------------- int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3) { int v4; // eax v4 = wcslen(String); return std::wstring::find_last_of(this, String, a3, v4); } //----- (00477AF0) -------------------------------------------------------- int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) { unsigned int v4; // ebx int v5; // eax unsigned int v6; // eax _WORD *v7; // eax int v8; // edx v4 = a3; v5 = *(_DWORD *)(*this - 12); if ( !v5 || !a4 ) return -1; v6 = v5 - 1; if ( v6 <= a3 ) v4 = v6; while ( !a2 ) { LABEL_9: if ( v4-- == 0 ) return v4; } v7 = a2; v8 = a4; while ( *(_WORD *)(*this + 2 * v4) != *v7 ) { ++v7; if ( !--v8 ) goto LABEL_9; } return v4; } //----- (00477B60) -------------------------------------------------------- int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD **a2, unsigned int a3) { return std::wstring::find_last_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); } //----- (00477B90) -------------------------------------------------------- int __thiscall std::wstring::find_last_of(_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 ( a3 <= v4 - 1 ) result = a3; do { if ( a2 == *(_WORD *)(*this + 2 * result) ) break; } while ( result-- != 0 ); } return result; } //----- (00477BD0) -------------------------------------------------------- int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3) { int v4; // eax v4 = wcslen(String); return std::wstring::find_first_of(this, String, a3, v4); } //----- (00477C10) -------------------------------------------------------- int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) { unsigned int v4; // ebx unsigned int v5; // ebp int v6; // edx _WORD *v7; // eax if ( !a4 ) return -1; v4 = a3; v5 = *(_DWORD *)(*this - 12); if ( v5 <= a3 ) return -1; while ( !a2 ) { LABEL_7: if ( v5 <= ++v4 ) return -1; } v6 = a4; v7 = a2; while ( *(_WORD *)(*this + 2 * v4) != *v7 ) { ++v7; if ( !--v6 ) goto LABEL_7; } return v4; } //----- (00477C70) -------------------------------------------------------- int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD **a2, unsigned int a3) { return std::wstring::find_first_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); } //----- (00477CA0) -------------------------------------------------------- int __thiscall std::wstring::find_first_of(int *this, __int16 a2, unsigned int a3) { return std::wstring::find(this, a2, a3); } //----- (00477CB0) -------------------------------------------------------- void *__thiscall std::wstring::get_allocator(void *this, int a2) { return this; } //----- (00477CC0) -------------------------------------------------------- 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; } //----- (00477CF0) -------------------------------------------------------- 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); } //----- (00477D30) -------------------------------------------------------- int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) { int v4; // ebx int v5; // eax unsigned int v6; // eax _WORD *v7; // eax int v8; // edx v4 = -1; v5 = *(_DWORD *)(*this - 12); if ( v5 ) { v6 = v5 - 1; v4 = a3; if ( v6 <= a3 ) v4 = v6; while ( a4 && a2 ) { v7 = a2; v8 = a4; while ( *(_WORD *)(*this + 2 * v4) != *v7 ) { ++v7; if ( !--v8 ) return v4; } if ( v4-- == 0 ) return v4; } } return v4; } //----- (00477DA0) -------------------------------------------------------- int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD **a2, unsigned int a3) { return std::wstring::find_last_not_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); } //----- (00477DD0) -------------------------------------------------------- int __thiscall std::wstring::find_last_not_of(_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; } while ( result-- != 0 ); } return result; } //----- (00477E10) -------------------------------------------------------- int __thiscall std::wstring::find_first_not_of(int *this, wchar_t *String, unsigned int a3) { unsigned int v4; // ebx size_t v5; // eax int v6; // esi unsigned int v7; // edi size_t v8; // ebp __int16 v9; // cx wchar_t *v10; // eax size_t v11; // edx v4 = a3; v5 = wcslen(String); v6 = *this; v7 = *(_DWORD *)(v6 - 12); if ( a3 < v7 ) { v8 = v5; if ( !v5 ) return v4; v9 = *(_WORD *)(v6 + 2 * a3); if ( !String ) return v4; while ( 1 ) { v10 = String; v11 = v8; while ( v9 != *v10 ) { ++v10; if ( !--v11 ) return v4; } if ( ++v4 == v7 ) break; v9 = *(_WORD *)(v6 + 2 * v4); } } return -1; } //----- (00477EA0) -------------------------------------------------------- int __thiscall std::wstring::find_first_not_of(int *this, _WORD *a2, unsigned int a3, int a4) { int v4; // esi unsigned int v5; // ebx unsigned int v6; // edi __int16 v7; // cx _WORD *v8; // eax int v9; // edx v4 = *this; v5 = a3; v6 = *(_DWORD *)(*this - 12); if ( a3 < v6 ) { if ( !a4 ) return v5; v7 = *(_WORD *)(v4 + 2 * a3); if ( !a2 ) return v5; while ( 1 ) { v8 = a2; v9 = a4; while ( v7 != *v8 ) { ++v8; if ( !--v9 ) return v5; } if ( v6 == ++v5 ) break; v7 = *(_WORD *)(v4 + 2 * v5); } } return -1; } //----- (00477F20) -------------------------------------------------------- int __thiscall std::wstring::find_first_not_of(_DWORD *this, _DWORD *a2, unsigned int a3) { unsigned int v3; // ebx unsigned int v4; // esi int v5; // edx _WORD *i; // eax v3 = a3; v4 = *(_DWORD *)(*this - 12); if ( a3 < v4 ) { if ( !*(_DWORD *)(*a2 - 12) ) return v3; do { v5 = *(_DWORD *)(*a2 - 12); for ( i = (_WORD *)*a2; *(_WORD *)(*this + 2 * v3) != *i; ++i ) { if ( !--v5 ) return v3; } ++v3; } while ( v3 != v4 ); } return -1; } //----- (00477F90) -------------------------------------------------------- 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; } //----- (00477FD0) -------------------------------------------------------- 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; } //----- (00478000) -------------------------------------------------------- int __fastcall std::wstring::end(_DWORD *a1) { return *a1 + 2 * *(_DWORD *)(*a1 - 12); } //----- (00478010) -------------------------------------------------------- int __fastcall std::wstring::_Rep::_M_is_leaked(int a1) { return *(_DWORD *)(a1 + 8) >> 31; } //----- (00478020) -------------------------------------------------------- bool __fastcall std::wstring::_Rep::_M_is_shared(int a1) { return *(_DWORD *)(a1 + 8) > 0; } //----- (00478030) -------------------------------------------------------- int __fastcall std::wstring::back(_DWORD *a1) { return *a1 + 2 * *(_DWORD *)(*a1 - 12) - 2; } //----- (00478040) -------------------------------------------------------- int __fastcall std::wstring::cend(_DWORD *a1) { return *a1 + 2 * *(_DWORD *)(*a1 - 12); } //----- (00478050) -------------------------------------------------------- int __thiscall std::wstring::copy(int *this, _WORD *a2, unsigned int a3, unsigned int a4) { int v4; // ecx unsigned int v5; // ebx unsigned int v6; // ebx _WORD *Src; // eax v4 = *this; v5 = *(_DWORD *)(v4 - 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 *)(v4 - 12)); v6 = v5 - a4; if ( v6 > a3 ) v6 = a3; if ( !v6 ) return v6; Src = (_WORD *)(v4 + 2 * a4); if ( v6 != 1 ) { memcpy(a2, Src, 2 * v6); return v6; } *a2 = *Src; return 1; } //----- (004780D0) -------------------------------------------------------- int __fastcall std::wstring::data(int a1) { return *(_DWORD *)a1; } //----- (004780E0) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, wchar_t *String, int a3) { unsigned int v4; // eax v4 = wcslen(String); return std::wstring::find(this, String, a3, v4); } //----- (00478120) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, _WORD *a2, unsigned int a3, unsigned int a4) { unsigned int v4; // edx _WORD *v5; // eax int v6; // edi unsigned int v7; // edx unsigned int v8; // edx int v10; // edx __int16 v11; // bx unsigned int v12; // edx int v13; // ecx int v14; // [esp+4h] [ebp-14h] v14 = *this; v4 = *(_DWORD *)(*this - 12); if ( a4 ) { if ( v4 > a3 && (v5 = (_WORD *)(v14 + 2 * a3), v6 = v14 + 2 * v4, v7 = v4 - a3, a4 <= v7) && (v8 = 1 - a4 + v7) != 0 ) { LABEL_5: while ( *a2 != *v5 ) { ++v5; if ( !--v8 ) return -1; } if ( a2 != v5 ) { v10 = 0; while ( v10 != a4 - 1 ) { v11 = v5[++v10]; if ( v11 != a2[v10] ) { v12 = (v6 - (int)++v5) >> 1; if ( a4 <= v12 ) { v8 = 1 - a4 + v12; if ( v8 ) goto LABEL_5; } return -1; } } } return ((int)v5 - v14) >> 1; } else { return -1; } } else { v13 = -1; if ( v4 >= a3 ) return a3; return v13; } } //----- (00478210) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, _WORD **a2, unsigned int a3) { return std::wstring::find(this, *a2, a3, *((_DWORD *)*a2 - 3)); } //----- (00478240) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, __int16 a2, unsigned int a3) { int v3; // ebx int result; // eax unsigned int v5; // edx unsigned int v6; // edx _WORD *i; // eax v3 = *this; result = -1; v5 = *(_DWORD *)(*this - 12); if ( a3 < v5 ) { v6 = v5 - a3; for ( i = (_WORD *)(v3 + 2 * a3); *i != a2; ++i ) { if ( !--v6 ) return -1; } return ((int)i - v3) >> 1; } return result; } //----- (00478290) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (004782A0) -------------------------------------------------------- int __fastcall std::wstring::size(_DWORD *a1) { return *(_DWORD *)(*a1 - 12); } //----- (004782B0) -------------------------------------------------------- int __fastcall std::wstring::begin(int a1) { return *(_DWORD *)a1; } //----- (004782C0) -------------------------------------------------------- int __fastcall std::wstring::c_str(int a1) { return *(_DWORD *)a1; } //----- (004782D0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (004782E0) -------------------------------------------------------- bool __fastcall std::wstring::empty(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) == 0; } //----- (004782F0) -------------------------------------------------------- int __fastcall std::wstring::front(int a1) { return *(_DWORD *)a1; } //----- (00478300) -------------------------------------------------------- int __thiscall std::wstring::rfind(_DWORD *this, wchar_t *String, int a3) { unsigned int v4; // eax v4 = wcslen(String); return std::wstring::rfind(this, String, a3, v4); } //----- (00478340) -------------------------------------------------------- int __thiscall std::wstring::rfind(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4) { int v4; // ebx int v5; // esi unsigned int v6; // eax unsigned int v7; // eax int v8; // esi _WORD *v9; // eax _WORD *v10; // edx unsigned int v11; // ecx v4 = -1; v5 = a3; v6 = *(_DWORD *)(*this - 12); if ( a4 <= v6 ) { v7 = v6 - a4; if ( v7 <= a3 ) v5 = v7; v4 = v5; v8 = *this + 2 * v5; if ( a4 ) { while ( 1 ) { v9 = (_WORD *)v8; if ( (_WORD *)v8 == a2 ) break; if ( a2 ) { v10 = a2; v11 = a4; while ( *v9 == *v10 ) { ++v9; ++v10; if ( !--v11 ) return v4; } } v8 -= 2; if ( !v4 ) return -1; --v4; } } } return v4; } // 4783A9: conditional instruction was optimized away because %arg_8.4!=0 //----- (004783C0) -------------------------------------------------------- int __thiscall std::wstring::rfind(_DWORD *this, _WORD **a2, unsigned int a3) { return std::wstring::rfind(this, *a2, a3, *((_DWORD *)*a2 - 3)); } //----- (004783F0) -------------------------------------------------------- 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; } while ( result-- != 0 ); } return result; } //----- (00478430) -------------------------------------------------------- int __fastcall std::wstring::_M_rep(_DWORD *a1) { return *a1 - 12; } //----- (00478440) -------------------------------------------------------- int __fastcall std::wstring::cbegin(int a1) { return *(_DWORD *)a1; } //----- (00478450) -------------------------------------------------------- int __fastcall std::wstring::length(_DWORD *a1) { return *(_DWORD *)(*a1 - 12); } //----- (00478460) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); return result; } //----- (00478480) -------------------------------------------------------- _DWORD *__thiscall std::wstring::substr(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4) { unsigned int v5; // eax unsigned int v6; // 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::substr", a3, *(_DWORD *)(*a2 - 12)); v6 = v5 - a3; if ( v6 > a4 ) v6 = a4; *this = std::wstring::_S_construct((_WORD *)(*a2 + 2 * a3), *a2 + 2 * (a3 + v6)); return this; } //----- (004784F0) -------------------------------------------------------- int __fastcall std::wstring::_M_data(int a1) { return *(_DWORD *)a1; } //----- (00478500) -------------------------------------------------------- int __fastcall std::wstring::_M_iend(_DWORD *a1) { return *a1 + 2 * *(_DWORD *)(*a1 - 12); } //----- (00478510) -------------------------------------------------------- int __thiscall std::wstring::compare(wchar_t **this, wchar_t *String) { wchar_t *v3; // ebx size_t v4; // esi size_t v5; // edx size_t v6; // eax wchar_t *v7; // edx size_t v9; // [esp+18h] [ebp-24h] size_t v10; // [esp+1Ch] [ebp-20h] v3 = String; v4 = *((_DWORD *)*this - 3); v5 = wcslen(String); v10 = v5; v6 = v4; if ( v5 <= v4 ) v6 = v5; v9 = v6; if ( !v6 ) return v4 - v10; v7 = *this; if ( String == *this ) return v4 - v10; if ( (v7 != 0) != (String != 0) ) return String == 0 ? 1 : -1; while ( *v7 == *v3 ) { ++v7; ++v3; if ( !--v9 ) return v4 - v10; } return *v7 < *v3 ? -1 : 1; } //----- (004785B0) -------------------------------------------------------- int __thiscall std::wstring::compare(_DWORD *this, _WORD **a2) { _WORD *v2; // eax _WORD *v3; // edx unsigned int v4; // ebx unsigned int v5; // esi unsigned int v6; // ecx v2 = (_WORD *)*this; v3 = *a2; v4 = *(_DWORD *)(*this - 12); v5 = *((_DWORD *)*a2 - 3); v6 = v4; if ( v5 <= v4 ) v6 = *((_DWORD *)*a2 - 3); if ( !v6 || v3 == v2 ) return v4 - v5; while ( *v2 == *v3 ) { ++v2; ++v3; if ( !--v6 ) return v4 - v5; } return *v2 < *v3 ? -1 : 1; } //----- (00478600) -------------------------------------------------------- int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) { unsigned int v4; // eax unsigned int v5; // ebx wchar_t *v6; // esi unsigned int v7; // ebx unsigned int v9; // ebx size_t v10; // ecx size_t v11; // eax wchar_t *v12; // edx unsigned int v14; // [esp+1Ch] [ebp-20h] v4 = a3; v5 = *(_DWORD *)(*this - 12); v6 = String; if ( a2 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, *(_DWORD *)(*this - 12)); v7 = v5 - a2; if ( v7 <= a3 ) v4 = v7; v9 = v4; v14 = v4; v10 = wcslen(String); v11 = v9; if ( v10 <= v9 ) v11 = v10; if ( !v11 ) return v14 - v10; v12 = (wchar_t *)(*this + 2 * a2); if ( v12 == String ) return v14 - v10; if ( (v12 != 0) != (String != 0) ) return String == 0 ? 1 : -1; while ( *v12 == *v6 ) { ++v12; ++v6; if ( !--v11 ) return v14 - v10; } return *v12 < *v6 ? -1 : 1; } //----- (004786E0) -------------------------------------------------------- int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, _WORD *a4, unsigned int a5) { int v5; // esi unsigned int v6; // eax _WORD *v7; // ecx unsigned int v8; // eax unsigned int v9; // edi _WORD *v10; // edx int v11; // esi v5 = *this; v6 = *(_DWORD *)(*this - 12); v7 = a4; if ( a2 > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, v6); v8 = v6 - a2; if ( v8 > a3 ) v8 = a3; v9 = a5; if ( v8 <= a5 ) v9 = v8; if ( !v9 ) return v8 - a5; v10 = (_WORD *)(v5 + 2 * a2); if ( v10 == a4 ) return v8 - a5; v11 = 1; if ( !a4 ) return v11; while ( *v10 == *v7 ) { ++v10; ++v7; if ( !--v9 ) return v8 - a5; } return *v10 < *v7 ? -1 : 1; } //----- (00478780) -------------------------------------------------------- int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, _WORD **a4) { int v4; // esi unsigned int v5; // eax unsigned int v6; // eax _WORD *v7; // edx unsigned int v8; // ecx unsigned int v9; // edi _WORD *v10; // ebx v4 = *this; v5 = *(_DWORD *)(*this - 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 *)(*this - 12)); v6 = v5 - a2; if ( v6 > a3 ) v6 = a3; v7 = *a4; v8 = v6; v9 = *((_DWORD *)*a4 - 3); if ( v9 <= v6 ) v8 = *((_DWORD *)*a4 - 3); if ( !v8 ) return v6 - v9; v10 = (_WORD *)(v4 + 2 * a2); if ( v10 == v7 ) return v6 - v9; while ( *v10 == *v7 ) { ++v10; ++v7; if ( !--v8 ) return v6 - v9; } return *v10 < *v7 ? -1 : 1; } //----- (00478810) -------------------------------------------------------- int __thiscall std::wstring::compare( int *this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, unsigned int a6) { int v6; // edi unsigned int v7; // eax unsigned int v8; // edx unsigned int v9; // eax unsigned int v10; // edx unsigned int v11; // esi _WORD *v12; // ebx _WORD *v13; // ecx v6 = *this; v7 = *(_DWORD *)(*this - 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 ) v10 = a6; v11 = v9; if ( v10 <= v9 ) v11 = v10; if ( !v11 ) return v9 - v10; v12 = (_WORD *)(*a4 + 2 * a5); v13 = (_WORD *)(v6 + 2 * a2); if ( v12 == v13 ) return v9 - v10; while ( *v13 == *v12 ) { ++v13; ++v12; if ( !--v11 ) return v9 - v10; } return *v13 < *v12 ? -1 : 1; } //----- (004788D0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); return result; } //----- (004788F0) -------------------------------------------------------- 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; } //----- (00478930) -------------------------------------------------------- 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; } //----- (00478950) -------------------------------------------------------- int __fastcall std::wstring::capacity(_DWORD *a1) { return *(_DWORD *)(*a1 - 8); } //----- (00478960) -------------------------------------------------------- int std::wstring::max_size() { return 536870910; } //----- (00478970) -------------------------------------------------------- int __fastcall std::wstring::_M_ibegin(int a1) { return *(_DWORD *)a1; } //----- (00478980) -------------------------------------------------------- int __thiscall std::wstring::operator[](_DWORD *this, int a2) { return *this + 2 * a2; } //----- (00478990) -------------------------------------------------------- int __fastcall std::istream::gcount(int a1) { return *(_DWORD *)(a1 + 4); } //----- (004789A0) -------------------------------------------------------- int __fastcall std::istream::sentry::operator bool(unsigned __int8 *a1) { return *a1; } //----- (004789B0) -------------------------------------------------------- int __fastcall std::ostream::sentry::operator bool(unsigned __int8 *a1) { return *a1; } //----- (004789C0) -------------------------------------------------------- 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; } //----- (004789E0) -------------------------------------------------------- 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); } // 478A04: variable 'v7' is possibly undefined //----- (00478A20) -------------------------------------------------------- int __userpurge std::string::find_last_of@( int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5) { int v5; // esi const char *v6; // ebx int v7; // eax unsigned int v8; // eax v5 = *a1; v6 = a3; v7 = *(_DWORD *)(*a1 - 12); if ( !v7 || !MaxCount ) return -1; v8 = v7 - 1; if ( v8 <= (unsigned int)a3 ) v6 = (const char *)v8; do { if ( memchr(this, v6[v5], MaxCount) ) break; } while ( v6-- != 0 ); return (int)v6; } //----- (00478AA0) -------------------------------------------------------- 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); } // 478ABB: variable 'v5' is possibly undefined //----- (00478AD0) -------------------------------------------------------- int __userpurge std::string::find_last_of@(_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 ( a3 <= v5 - 1 ) result = a3; do { if ( (_BYTE)this == *(_BYTE *)(*a1 + result) ) break; } while ( result-- != 0 ); } return result; } //----- (00478B10) -------------------------------------------------------- int __userpurge std::string::find_first_of@(int *a1@, std::string *this, const char *a3, unsigned int a4) { size_t v6; // eax int v7; // edi size_t MaxCount; // ebx unsigned int v10; // [esp+1Ch] [ebp-20h] v6 = strlen((const char *)this); if ( v6 ) { v7 = *a1; MaxCount = v6; v10 = *(_DWORD *)(v7 - 12); while ( v10 > (unsigned int)a3 ) { if ( memchr(this, a3[v7], MaxCount) ) return (int)a3; ++a3; } } return -1; } //----- (00478B80) -------------------------------------------------------- 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; } //----- (00478BF0) -------------------------------------------------------- int __userpurge std::string::find_first_of@( int *a1@, std::string *this, const std::string *a3, unsigned int a4) { const void *Buf; // esi size_t MaxCount; // ebx int v7; // edi unsigned int v9; // [esp+1Ch] [ebp-20h] Buf = *(const void **)this; MaxCount = *(_DWORD *)(*(_DWORD *)this - 12); if ( MaxCount ) { v7 = *a1; v9 = *(_DWORD *)(*a1 - 12); while ( v9 > (unsigned int)a3 ) { if ( memchr(Buf, *((char *)a3 + v7), MaxCount) ) return (int)a3; a3 = (const std::string *)((char *)a3 + 1); } } return -1; } //----- (00478C60) -------------------------------------------------------- char *__userpurge std::string::find_first_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) { int v4; // ebx int v5; // esi 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; } //----- (00478CB0) -------------------------------------------------------- void *__thiscall std::string::get_allocator(void *ecx0, std::string *this) { return ecx0; } //----- (00478CC0) -------------------------------------------------------- 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; } //----- (00478CF0) -------------------------------------------------------- int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, const char *a3, unsigned int a4) { int v4; // ebx int v5; // esi int v6; // ebp size_t v7; // eax const char *v8; // ecx size_t MaxCount; // edi v4 = -1; v5 = *a1; v6 = *(_DWORD *)(*a1 - 12); if ( v6 ) { v7 = strlen((const char *)this); v8 = (const char *)(v6 - 1); if ( (unsigned int)a3 <= v6 - 1 ) v8 = a3; MaxCount = v7; v4 = (int)v8; do { if ( !MaxCount ) break; if ( !memchr(this, *(char *)(v5 + v4), MaxCount) ) break; } while ( v4-- != 0 ); } return v4; } //----- (00478D60) -------------------------------------------------------- int __userpurge std::string::find_last_not_of@( int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5) { int v5; // ebx int v6; // edi const char *v7; // edx int v8; // eax unsigned int v9; // eax v5 = -1; v6 = *a1; v7 = a3; v8 = *(_DWORD *)(*a1 - 12); if ( v8 ) { v9 = v8 - 1; if ( v9 <= (unsigned int)a3 ) v7 = (const char *)v9; v5 = (int)v7; do { if ( !MaxCount ) break; if ( !memchr(this, *(char *)(v6 + v5), MaxCount) ) break; } while ( v5-- != 0 ); } return v5; } //----- (00478DC0) -------------------------------------------------------- int __userpurge std::string::find_last_not_of@( int *a1@, std::string *this, const std::string *a3, unsigned int a4) { int v4; // ebx int v5; // edi int v6; // eax const std::string *v7; // eax _DWORD *Buf; // ebp size_t MaxCount; // esi v4 = -1; v5 = *a1; v6 = *(_DWORD *)(*a1 - 12); if ( v6 ) { v7 = (const std::string *)(v6 - 1); Buf = *(_DWORD **)this; if ( a3 <= v7 ) v7 = a3; MaxCount = *(Buf - 3); v4 = (int)v7; do { if ( !MaxCount ) break; if ( !memchr(Buf, *(char *)(v5 + v4), MaxCount) ) break; } while ( v4-- != 0 ); } return v4; } //----- (00478E20) -------------------------------------------------------- int __userpurge std::string::find_last_not_of@( _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; } while ( result-- != 0 ); } return result; } //----- (00478E60) -------------------------------------------------------- int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, const char *a3, unsigned int a4) { const char *v5; // edi size_t v6; // eax int v7; // esi unsigned int v8; // ebp size_t MaxCount; // ebx v5 = a3; v6 = strlen((const char *)this); v7 = *a1; v8 = *(_DWORD *)(v7 - 12); if ( (unsigned int)a3 >= v8 ) return -1; MaxCount = v6; if ( v6 ) { while ( memchr(this, v5[v7], MaxCount) ) { if ( ++v5 == (const char *)v8 ) return -1; } } return (int)v5; } //----- (00478ED0) -------------------------------------------------------- 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; } //----- (00478F30) -------------------------------------------------------- int __userpurge std::string::find_first_not_of@( int *a1@, std::string *this, const std::string *a3, unsigned int a4) { int v4; // esi const std::string *v5; // ebp const void *Buf; // ebx size_t MaxCount; // edi unsigned int v9; // [esp+1Ch] [ebp-20h] v4 = *a1; v5 = a3; Buf = *(const void **)this; MaxCount = *(_DWORD *)(*(_DWORD *)this - 12); v9 = *(_DWORD *)(*a1 - 12); if ( (unsigned int)a3 >= v9 ) return -1; if ( MaxCount ) { while ( memchr(Buf, *((char *)v5 + v4), MaxCount) ) { v5 = (const std::string *)((char *)v5 + 1); if ( v5 == (const std::string *)v9 ) return -1; } } return (int)v5; } //----- (00478FA0) -------------------------------------------------------- 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; } //----- (00478FE0) -------------------------------------------------------- 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; } //----- (00479010) -------------------------------------------------------- int __fastcall std::string::end(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) + *a1; } //----- (00479020) -------------------------------------------------------- int __fastcall std::string::_Rep::_M_is_leaked(int a1) { return *(_DWORD *)(a1 + 8) >> 31; } //----- (00479030) -------------------------------------------------------- bool __fastcall std::string::_Rep::_M_is_shared(int a1) { return *(_DWORD *)(a1 + 8) > 0; } //----- (00479040) -------------------------------------------------------- int __fastcall std::string::back(_DWORD *a1) { return *a1 + *(_DWORD *)(*a1 - 12) - 1; } //----- (00479050) -------------------------------------------------------- int __fastcall std::string::cend(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) + *a1; } //----- (00479060) -------------------------------------------------------- int __userpurge std::string::copy@( _DWORD *a1@, std::string *this, size_t a3, unsigned int a4, unsigned int a5) { unsigned int v5; // ebx size_t 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 = v5 - a4; if ( Size > a3 ) Size = a3; if ( !Size ) return Size; Src = (_BYTE *)(*a1 + a4); if ( Size != 1 ) { memcpy(this, Src, Size); return Size; } *(_BYTE *)this = *Src; return 1; } //----- (004790E0) -------------------------------------------------------- int __fastcall std::string::data(int a1) { return *(_DWORD *)a1; } //----- (004790F0) -------------------------------------------------------- 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); } // 479114: variable 'v7' is possibly undefined //----- (00479130) -------------------------------------------------------- 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; // edx int v7; // ecx int v8; // ebp size_t v9; // edx const char *Buf; // eax size_t MaxCount; // edx int Val; // ebp const char *v13; // edi int v15; // ecx int v16; // [esp+18h] [ebp-24h] int v17; // [esp+1Ch] [ebp-20h] v5 = *a1; v6 = *(_DWORD *)(*a1 - 12); if ( Size ) { v7 = -1; if ( v6 > (unsigned int)a3 ) { v8 = v5 + v6; v9 = v6 - (_DWORD)a3; Buf = &a3[v5]; v16 = v8; if ( Size <= v9 ) { MaxCount = 1 - Size + v9; if ( MaxCount ) { v17 = v5; Val = *(char *)this; while ( 1 ) { v13 = (const char *)memchr(Buf, Val, MaxCount); if ( !v13 ) return -1; if ( !memcmp(v13, this, Size) ) break; Buf = v13 + 1; if ( Size <= v16 - (int)(v13 + 1) ) { MaxCount = v16 - (_DWORD)v13 - Size; if ( MaxCount ) continue; } return -1; } return (int)&v13[-v17]; } } } return v7; } else { v15 = -1; if ( v6 >= (unsigned int)a3 ) return (int)a3; return v15; } } //----- (00479200) -------------------------------------------------------- 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); } // 47921B: variable 'v5' is possibly undefined //----- (00479230) -------------------------------------------------------- char *__userpurge std::string::find@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) { int v4; // ebx int v5; // esi 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; } //----- (00479280) -------------------------------------------------------- _DWORD *__thiscall std::string::rend(_DWORD *ecx0, std::string *this) { _DWORD *result; // eax result = ecx0; *ecx0 = *(_DWORD *)this; return result; } //----- (00479290) -------------------------------------------------------- int __fastcall std::string::size(_DWORD *a1) { return *(_DWORD *)(*a1 - 12); } //----- (004792A0) -------------------------------------------------------- int __fastcall std::string::begin(int a1) { return *(_DWORD *)a1; } //----- (004792B0) -------------------------------------------------------- int __fastcall std::string::c_str(int a1) { return *(_DWORD *)a1; } //----- (004792C0) -------------------------------------------------------- _DWORD *__thiscall std::string::crend(_DWORD *ecx0, std::string *this) { _DWORD *result; // eax result = ecx0; *ecx0 = *(_DWORD *)this; return result; } //----- (004792D0) -------------------------------------------------------- bool __fastcall std::string::empty(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) == 0; } //----- (004792E0) -------------------------------------------------------- int __fastcall std::string::front(int a1) { return *(_DWORD *)a1; } //----- (004792F0) -------------------------------------------------------- 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); } // 479314: variable 'v7' is possibly undefined //----- (00479330) -------------------------------------------------------- int __userpurge std::string::rfind@( int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5) { int v5; // ebx int v6; // ebp size_t v7; // eax const char *v8; // edx unsigned int v9; // eax v5 = -1; v6 = *a1; v7 = *(_DWORD *)(*a1 - 12); v8 = a3; if ( Size <= v7 ) { v9 = v7 - Size; if ( v9 <= (unsigned int)a3 ) v8 = (const char *)v9; v5 = (int)v8; if ( Size ) { while ( memcmp((const void *)(v6 + v5), this, Size) ) { if ( !v5 ) return -1; --v5; } } } return v5; } // 479381: conditional instruction was optimized away because %arg_8.4!=0 //----- (004793A0) -------------------------------------------------------- int __userpurge std::string::rfind@(int *a1@, std::string *this, const std::string *a3, unsigned int a4) { int v4; // ebx int v5; // ebp const std::string *v6; // edx const void *Buf2; // edi size_t v8; // eax size_t Size; // esi unsigned int v10; // eax v4 = -1; v5 = *a1; v6 = a3; Buf2 = *(const void **)this; v8 = *(_DWORD *)(*a1 - 12); Size = *(_DWORD *)(*(_DWORD *)this - 12); if ( Size <= v8 ) { v10 = v8 - Size; if ( v10 <= (unsigned int)a3 ) v6 = (const std::string *)v10; v4 = (int)v6; if ( Size ) { while ( memcmp((const void *)(v5 + v4), Buf2, Size) ) { if ( !v4 ) return -1; --v4; } } } return v4; } // 4793F2: conditional instruction was optimized away because esi.4!=0 //----- (00479410) -------------------------------------------------------- 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; } while ( result-- != 0 ); } return result; } //----- (00479450) -------------------------------------------------------- int __fastcall std::string::_M_rep(_DWORD *a1) { return *a1 - 12; } //----- (00479460) -------------------------------------------------------- int __fastcall std::string::cbegin(int a1) { return *(_DWORD *)a1; } //----- (00479470) -------------------------------------------------------- int __fastcall std::string::length(_DWORD *a1) { return *(_DWORD *)(*a1 - 12); } //----- (00479480) -------------------------------------------------------- _DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, std::string *this) { _DWORD *result; // eax result = ecx0; *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; return result; } //----- (00479490) -------------------------------------------------------- int *__thiscall std::string::substr(int *ecx0, std::string *this, unsigned int a3, unsigned int a4) { unsigned int v5; // eax unsigned int v6; // eax v5 = *(_DWORD *)(*(_DWORD *)this - 12); if ( a3 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::substr", a3, *(_DWORD *)(*(_DWORD *)this - 12)); v6 = v5 - a3; if ( v6 > a4 ) v6 = a4; *ecx0 = std::string::_S_construct((_BYTE *)(a3 + *(_DWORD *)this), *(_DWORD *)this + a3 + v6); return ecx0; } //----- (00479500) -------------------------------------------------------- int __fastcall std::string::_M_data(int a1) { return *(_DWORD *)a1; } //----- (00479510) -------------------------------------------------------- int __fastcall std::string::_M_iend(_DWORD *a1) { return *(_DWORD *)(*a1 - 12) + *a1; } //----- (00479520) -------------------------------------------------------- int __userpurge std::string::compare@(const void **a1@, std::string *this, const char *a3) { const void *v3; // edi size_t v4; // esi size_t v5; // ebx size_t Size; // eax int result; // eax v3 = *a1; v4 = *((_DWORD *)*a1 - 3); v5 = strlen((const char *)this); Size = v4; if ( v5 <= v4 ) Size = v5; if ( !Size ) return v4 - v5; result = memcmp(v3, this, Size); if ( !result ) return v4 - v5; return result; } //----- (00479570) -------------------------------------------------------- int __userpurge std::string::compare@(const void **a1@, const void **this, const std::string *a3) { const void *Buf1; // eax size_t v4; // esi size_t Size; // ecx size_t v6; // ebx int result; // eax Buf1 = *a1; v4 = *((_DWORD *)*a1 - 3); Size = v4; v6 = *((_DWORD *)*this - 3); if ( v6 <= v4 ) Size = *((_DWORD *)*this - 3); if ( !Size ) return v4 - v6; result = memcmp(Buf1, *this, Size); if ( !result ) return v4 - v6; return result; } //----- (004795B0) -------------------------------------------------------- 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 v8; // edi size_t Size; // eax 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; v8 = strlen(Str); Size = v7; if ( v8 <= v7 ) Size = v8; if ( !Size ) return v7 - v8; result = memcmp((char *)this + v5, Str, Size); if ( !result ) return v7 - v8; return result; } //----- (00479630) -------------------------------------------------------- int __userpurge std::string::compare@( int *a1@, std::string *this, size_t 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; Size = a5; if ( v8 > a3 ) v8 = a3; if ( v8 <= (unsigned int)a5 ) Size = (const char *)v8; if ( !Size ) return v8 - (_DWORD)a5; result = memcmp((char *)this + v6, Buf2, (size_t)Size); if ( !result ) return v8 - (_DWORD)a5; return result; } //----- (004796A0) -------------------------------------------------------- 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 _DWORD *Buf2; // ecx unsigned int v9; // esi size_t Size; // edi 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; Buf2 = *a4; if ( v7 > a3 ) v7 = a3; v9 = *(Buf2 - 3); Size = v7; if ( v9 <= v7 ) Size = *(Buf2 - 3); if ( !Size ) return v7 - v9; result = memcmp((char *)this + v5, Buf2, Size); if ( !result ) return v7 - v9; return result; } //----- (00479720) -------------------------------------------------------- int __userpurge std::string::compare@( _DWORD *a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, unsigned int a6, unsigned int a7) { unsigned int v7; // ebx unsigned int v8; // ebp unsigned int v9; // eax unsigned int v10; // ebx unsigned int v11; // eax size_t Size; // eax int result; // eax v7 = *(_DWORD *)(*a1 - 12); v8 = a6; 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)); 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 = v7 - (_DWORD)this; if ( v10 > a3 ) v10 = a3; v11 = v9 - (_DWORD)a5; if ( v11 <= a6 ) v8 = v11; Size = v10; if ( v8 <= v10 ) Size = v8; if ( !Size ) return v10 - v8; result = memcmp((char *)this + *a1, (char *)a5 + *a4, Size); if ( !result ) return v10 - v8; return result; } //----- (004797D0) -------------------------------------------------------- _DWORD *__thiscall std::string::crbegin(_DWORD *ecx0, std::string *this) { _DWORD *result; // eax result = ecx0; *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; return result; } //----- (004797E0) -------------------------------------------------------- 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; } //----- (00479820) -------------------------------------------------------- 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; } //----- (00479840) -------------------------------------------------------- int __fastcall std::string::capacity(_DWORD *a1) { return *(_DWORD *)(*a1 - 8); } //----- (00479850) -------------------------------------------------------- int std::string::max_size() { return 1073741820; } //----- (00479860) -------------------------------------------------------- int __fastcall std::string::_M_ibegin(int a1) { return *(_DWORD *)a1; } //----- (00479870) -------------------------------------------------------- int __thiscall std::string::operator[](_DWORD *this, int a2) { return a2 + *this; } //----- (00479880) -------------------------------------------------------- const char *std::bad_typeid::what() { return "std::bad_typeid"; } //----- (00479890) -------------------------------------------------------- int __fastcall std::error_code::default_error_condition(int a1) { return (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(a1 + 4) + 20))(*(_DWORD *)(a1 + 4), *(_DWORD *)a1); } //----- (004798B0) -------------------------------------------------------- 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(); } //----- (004798D0) -------------------------------------------------------- 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(); } //----- (004798F0) -------------------------------------------------------- _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; } // 4798F0: using guessed type int var_D[3]; //----- (00479950) -------------------------------------------------------- _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; } // 479950: using guessed type int var_D[3]; //----- (00479980) -------------------------------------------------------- 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(); } //----- (004799A0) -------------------------------------------------------- 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(); } //----- (004799C0) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (004799D0) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (004799E0) -------------------------------------------------------- _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; } // 4799E0: using guessed type int var_D[3]; //----- (00479A40) -------------------------------------------------------- _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; } // 479A40: using guessed type int var_D[3]; //----- (00479AA0) -------------------------------------------------------- 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(); } //----- (00479AC0) -------------------------------------------------------- _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; } // 479AC0: using guessed type int var_D[3]; //----- (00479AF0) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); } //----- (00479B00) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); } //----- (00479B10) -------------------------------------------------------- _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; } // 479B10: using guessed type int var_D[3]; //----- (00479B40) -------------------------------------------------------- _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; } // 479B40: using guessed type int var_D[3]; //----- (00479B70) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00479B80) -------------------------------------------------------- _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; } // 479B80: using guessed type int var_D[3]; //----- (00479BE0) -------------------------------------------------------- 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(); } //----- (00479C00) -------------------------------------------------------- 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(); } //----- (00479C20) -------------------------------------------------------- _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; } // 479C20: using guessed type int var_D[3]; //----- (00479C80) -------------------------------------------------------- _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; } // 479C80: using guessed type int var_D[3]; //----- (00479CB0) -------------------------------------------------------- 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(); } //----- (00479CD0) -------------------------------------------------------- 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(); } //----- (00479CF0) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (00479D00) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (00479D10) -------------------------------------------------------- _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; } // 479D10: using guessed type int var_D[3]; //----- (00479D70) -------------------------------------------------------- _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; } // 479D70: using guessed type int var_D[3]; //----- (00479DD0) -------------------------------------------------------- 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(); } //----- (00479DF0) -------------------------------------------------------- _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; } // 479DF0: using guessed type int var_D[3]; //----- (00479E20) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); } //----- (00479E30) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); } //----- (00479E40) -------------------------------------------------------- _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; } // 479E40: using guessed type int var_D[3]; //----- (00479E70) -------------------------------------------------------- _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; } // 479E70: using guessed type int var_D[3]; //----- (00479EA0) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00479EB0) -------------------------------------------------------- _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; } // 479EB0: using guessed type int var_D[3]; //----- (00479F10) -------------------------------------------------------- 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(); } //----- (00479F30) -------------------------------------------------------- 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(); } //----- (00479F50) -------------------------------------------------------- _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; } // 479F50: using guessed type int var_D[3]; //----- (00479FB0) -------------------------------------------------------- _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; } // 479FB0: using guessed type int var_D[3]; //----- (00479FE0) -------------------------------------------------------- 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(); } //----- (0047A000) -------------------------------------------------------- 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(); } //----- (0047A020) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); } //----- (0047A030) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (0047A040) -------------------------------------------------------- _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; } // 47A040: using guessed type int var_D[3]; //----- (0047A0A0) -------------------------------------------------------- _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; } // 47A0A0: using guessed type int var_D[3]; //----- (0047A100) -------------------------------------------------------- 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(); } //----- (0047A120) -------------------------------------------------------- _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; } // 47A120: using guessed type int var_D[3]; //----- (0047A150) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (0047A160) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (0047A170) -------------------------------------------------------- _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; } // 47A170: using guessed type int var_D[3]; //----- (0047A1A0) -------------------------------------------------------- _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; } // 47A1A0: using guessed type int var_D[3]; //----- (0047A1D0) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); } //----- (0047A1E0) -------------------------------------------------------- _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; } // 47A1E0: using guessed type int var_D[3]; //----- (0047A240) -------------------------------------------------------- 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(); } //----- (0047A260) -------------------------------------------------------- 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(); } //----- (0047A280) -------------------------------------------------------- _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; } // 47A280: using guessed type int var_D[3]; //----- (0047A2E0) -------------------------------------------------------- _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; } // 47A2E0: using guessed type int var_D[3]; //----- (0047A310) -------------------------------------------------------- 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(); } //----- (0047A330) -------------------------------------------------------- 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(); } //----- (0047A350) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); } //----- (0047A360) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (0047A370) -------------------------------------------------------- _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; } // 47A370: using guessed type int var_D[3]; //----- (0047A3D0) -------------------------------------------------------- _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; } // 47A3D0: using guessed type int var_D[3]; //----- (0047A430) -------------------------------------------------------- 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(); } //----- (0047A450) -------------------------------------------------------- _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; } // 47A450: using guessed type int var_D[3]; //----- (0047A480) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (0047A490) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (0047A4A0) -------------------------------------------------------- _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; } // 47A4A0: using guessed type int var_D[3]; //----- (0047A4D0) -------------------------------------------------------- _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; } // 47A4D0: using guessed type int var_D[3]; //----- (0047A500) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); } //----- (0047A510) -------------------------------------------------------- _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; } // 47A510: using guessed type int var_D[3]; //----- (0047A580) -------------------------------------------------------- _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; } //----- (0047A5A0) -------------------------------------------------------- _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; } //----- (0047A5C0) -------------------------------------------------------- _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; } //----- (0047A600) -------------------------------------------------------- _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; } //----- (0047A620) -------------------------------------------------------- _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; } //----- (0047A6A0) -------------------------------------------------------- void __thiscall std::__timepunct::_M_put( const char **this, char *Buffer, size_t SizeInBytes, char *Format, struct tm *Tm) { char *v5; // eax char *v6; // edx char *Src; // [esp+10h] [ebp-4Ch] char *Srca; // [esp+10h] [ebp-4Ch] unsigned int Size; // [esp+14h] [ebp-48h] size_t v10; // [esp+14h] [ebp-48h] Src = setlocale(0, 0); Size = strlen(Src) + 1; v5 = (char *)operator new[](Size); v6 = Src; Srca = v5; memcpy(v5, v6, Size); setlocale(0, this[4]); v10 = strftime(Buffer, SizeInBytes, Format, Tm); setlocale(0, Srca); operator delete[](Srca); if ( !v10 ) *Buffer = 0; } //----- (0047A7D0) -------------------------------------------------------- _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; } //----- (0047A810) -------------------------------------------------------- _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; } //----- (0047A830) -------------------------------------------------------- _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; } //----- (0047A8A0) -------------------------------------------------------- _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; } //----- (0047A8C0) -------------------------------------------------------- _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; } //----- (0047A8E0) -------------------------------------------------------- _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; } //----- (0047A920) -------------------------------------------------------- _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; } //----- (0047A940) -------------------------------------------------------- _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; } //----- (0047A9C0) -------------------------------------------------------- void __thiscall std::__timepunct::_M_put( const char **this, wchar_t *Buffer, size_t SizeInWords, wchar_t *Format, struct tm *Tm) { char *v5; // eax char *v6; // edx char *Src; // [esp+10h] [ebp-4Ch] char *Srca; // [esp+10h] [ebp-4Ch] unsigned int Size; // [esp+14h] [ebp-48h] size_t v10; // [esp+14h] [ebp-48h] Src = setlocale(0, 0); Size = strlen(Src) + 1; v5 = (char *)operator new[](Size); v6 = Src; Srca = v5; memcpy(v5, v6, Size); setlocale(0, this[4]); v10 = wcsftime(Buffer, SizeInWords, Format, Tm); setlocale(0, Srca); operator delete[](Srca); if ( !v10 ) *Buffer = 0; } //----- (0047AAF0) -------------------------------------------------------- _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; } //----- (0047AB30) -------------------------------------------------------- _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; } //----- (0047AB50) -------------------------------------------------------- _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; } //----- (0047ABB0) -------------------------------------------------------- struct _Unwind_Exception *__stdcall std::__use_cache>::operator()(int *a1) { unsigned int v2; // [esp+8h] [ebp-60h] std::locale::_Impl *v3; // [esp+1Ch] [ebp-4Ch] std::locale::facet *v4; // [esp+20h] [ebp-48h] int v5; // [esp+24h] [ebp-44h] struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-40h] v4 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v5 = *(_DWORD *)(*a1 + 12) + 4 * (_DWORD)v4; lpuexcpt = *(struct _Unwind_Exception **)v5; if ( !*(_DWORD *)v5 ) { v3 = (std::locale::_Impl *)operator new(0x68u); *((_DWORD *)v3 + 1) = 0; *(_DWORD *)v3 = &off_5605B0; *((_DWORD *)v3 + 2) = 0; *((_DWORD *)v3 + 3) = 0; *((_BYTE *)v3 + 16) = 0; *((_DWORD *)v3 + 5) = 0; *((_DWORD *)v3 + 6) = 0; *((_DWORD *)v3 + 7) = 0; *((_DWORD *)v3 + 8) = 0; *((_WORD *)v3 + 18) = 0; *((_BYTE *)v3 + 100) = 0; std::__numpunct_cache::_M_cache((int)v3, (int)a1); std::locale::_Impl::_M_install_cache(*a1, v3, v4, v2); return *(struct _Unwind_Exception **)v5; } return lpuexcpt; } // 47ACA3: variable 'v2' is possibly undefined // 53F788: using guessed type signed __int32 std::numpunct::id; // 5605B0: using guessed type int (*off_5605B0)(); //----- (0047AD20) -------------------------------------------------------- struct _Unwind_Exception *__stdcall std::__use_cache>::operator()(int *a1) { _DWORD *v2; // eax unsigned int v3; // [esp+8h] [ebp-60h] std::locale::_Impl *v4; // [esp+1Ch] [ebp-4Ch] std::locale::facet *v5; // [esp+20h] [ebp-48h] int v6; // [esp+24h] [ebp-44h] struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-40h] v5 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v6 = *(_DWORD *)(*a1 + 12) + 4 * (_DWORD)v5; lpuexcpt = *(struct _Unwind_Exception **)v6; if ( !*(_DWORD *)v6 ) { v2 = operator new(0xA8u); v2[1] = 0; *v2 = &off_5605C0; v2[2] = 0; v2[3] = 0; *((_BYTE *)v2 + 16) = 0; v2[5] = 0; v2[6] = 0; v2[7] = 0; v2[8] = 0; v2[9] = 0; *((_BYTE *)v2 + 164) = 0; v4 = (std::locale::_Impl *)v2; std::__numpunct_cache::_M_cache((int)v2, (int)a1); std::locale::_Impl::_M_install_cache(*a1, v4, v5, v3); return *(struct _Unwind_Exception **)v6; } return lpuexcpt; } // 47AE17: variable 'v3' is possibly undefined // 53F78C: using guessed type signed __int32 std::numpunct::id; // 5605C0: using guessed type int (*off_5605C0)(); //----- (0047AE90) -------------------------------------------------------- int __fastcall std::runtime_error::what(int a1) { return *(_DWORD *)(a1 + 4); } //----- (0047AEA0) -------------------------------------------------------- bool __fastcall std::__basic_file::is_open(_DWORD *a1) { return *a1 != 0; } //----- (0047AEB0) -------------------------------------------------------- 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); } // 47AEDE: variable 'v6' is possibly undefined //----- (0047AEF0) -------------------------------------------------------- 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); } // 47AF1E: variable 'v6' is possibly undefined //----- (0047AF30) -------------------------------------------------------- _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( _DWORD *this, int a2, int a3, int a4) { int v5; // [esp+0h] [ebp-88h] void *v7; // [esp+63h] [ebp-25h] BYREF unsigned __int8 *v8[6]; // [esp+64h] [ebp-24h] BYREF void (__cdecl *v9)(unsigned __int8 **); // [esp+7Ch] [ebp-Ch] v9 = 0; LOBYTE(v5) = 0; std::__facet_shims::__collate_transform(v5, *(_DWORD *)(a2 + 12), v8, a3, a4); if ( !v9 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); std::string::string(this, v8[0], (size_t)v8[1], (int)&v7); if ( v9 ) v9(v8); return this; } // 47AF93: variable 'v5' is possibly undefined //----- (0047B030) -------------------------------------------------------- _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( _DWORD *this, int a2, std::string *a3, int a4) { _BYTE *v4; // eax int v6; // [esp+0h] [ebp-88h] void *v8[6]; // [esp+64h] [ebp-24h] BYREF void (__cdecl *v9)(void **); // [esp+7Ch] [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"); v4 = v8[0]; *this = this + 2; std::string::_M_construct(this, v4, (int)&v4[(unsigned int)v8[1]]); if ( v9 ) v9(v8); return this; } // 47B093: variable 'v6' is possibly undefined //----- (0047B130) -------------------------------------------------------- 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); } // 47B15E: variable 'v6' is possibly undefined //----- (0047B170) -------------------------------------------------------- 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); } // 47B19E: variable 'v6' is possibly undefined //----- (0047B1B0) -------------------------------------------------------- _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( _DWORD *this, int a2, int a3, int a4) { int v5; // [esp+0h] [ebp-88h] void *v7; // [esp+63h] [ebp-25h] BYREF _WORD *v8[6]; // [esp+64h] [ebp-24h] BYREF void (__cdecl *v9)(_WORD **); // [esp+7Ch] [ebp-Ch] v9 = 0; LOBYTE(v5) = 0; std::__facet_shims::__collate_transform(v5, *(_DWORD *)(a2 + 12), 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; } // 47B213: variable 'v5' is possibly undefined //----- (0047B2B0) -------------------------------------------------------- _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( _DWORD *this, int a2, int a3, int a4) { _WORD *v4; // eax int v6; // [esp+0h] [ebp-88h] void *v8[6]; // [esp+64h] [ebp-24h] BYREF void (__cdecl *v9)(void **); // [esp+7Ch] [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"); v4 = v8[0]; *this = this + 2; std::wstring::_M_construct(this, v4, (int)&v4[(int)v8[1]]); if ( v9 ) v9(v8); return this; } // 47B313: variable 'v6' is possibly undefined //----- (0047B3B0) -------------------------------------------------------- _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( _DWORD *this, int a2, std::string *a3, int a4, int a5, int a6) { _BYTE *v6; // eax int v8; // [esp+0h] [ebp-88h] void *v10[6]; // [esp+64h] [ebp-24h] BYREF void (__cdecl *v11)(void **); // [esp+7Ch] [ebp-Ch] v11 = 0; LOBYTE(v8) = 0; std::__facet_shims::__messages_get( v8, *(_DWORD *)(a2 + 16), v10, a3, a4, a5, *(unsigned __int8 **)a6, *(_DWORD *)(a6 + 4)); if ( !v11 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); v6 = v10[0]; *this = this + 2; std::string::_M_construct(this, v6, (int)&v6[(unsigned int)v10[1]]); if ( v11 ) v11(v10); return this; } // 47B42D: variable 'v8' is possibly undefined //----- (0047B4D0) -------------------------------------------------------- _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( _DWORD *this, int a2, int a3, int a4, int a5, _BYTE **a6) { int v7; // [esp+0h] [ebp-88h] void *v9; // [esp+63h] [ebp-25h] BYREF unsigned __int8 *v10[6]; // [esp+64h] [ebp-24h] BYREF void (__cdecl *v11)(unsigned __int8 **); // [esp+7Ch] [ebp-Ch] v11 = 0; LOBYTE(v7) = 0; std::__facet_shims::__messages_get(v7, *(_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], (size_t)v10[1], (int)&v9); if ( v11 ) v11(v10); return this; } // 47B54A: variable 'v7' is possibly undefined //----- (0047B5E0) -------------------------------------------------------- struct _Unwind_Exception *__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], *(unsigned __int8 **)a2, *(_DWORD *)(a2 + 4), a3); } // 47B607: variable 'v4' is possibly undefined //----- (0047B620) -------------------------------------------------------- struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( int *this, _BYTE **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); } // 47B647: variable 'v4' is possibly undefined //----- (0047B660) -------------------------------------------------------- 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); } // 47B676: variable 'v3' is possibly undefined //----- (0047B690) -------------------------------------------------------- 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); } // 47B6A6: variable 'v3' is possibly undefined //----- (0047B6C0) -------------------------------------------------------- _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( _DWORD *this, int a2, int a3, int a4, int a5, int a6) { _WORD *v6; // eax int v8; // [esp+0h] [ebp-88h] void *v10[6]; // [esp+64h] [ebp-24h] BYREF void (__cdecl *v11)(void **); // [esp+7Ch] [ebp-Ch] v11 = 0; LOBYTE(v8) = 0; std::__facet_shims::__messages_get( v8, *(_DWORD *)(a2 + 16), v10, a3, a4, a5, *(_WORD **)a6, *(_DWORD *)(a6 + 4)); if ( !v11 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); v6 = v10[0]; *this = this + 2; std::wstring::_M_construct(this, v6, (int)&v6[(int)v10[1]]); if ( v11 ) v11(v10); return this; } // 47B73D: variable 'v8' is possibly undefined //----- (0047B7E0) -------------------------------------------------------- _DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( _DWORD *this, int a2, int a3, int a4, int a5, _WORD **a6) { int v7; // [esp+0h] [ebp-88h] void *v9; // [esp+63h] [ebp-25h] BYREF _WORD *v10[6]; // [esp+64h] [ebp-24h] BYREF void (__cdecl *v11)(_WORD **); // [esp+7Ch] [ebp-Ch] v11 = 0; LOBYTE(v7) = 0; std::__facet_shims::__messages_get(v7, *(_DWORD *)(a2 + 16), 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; } // 47B85A: variable 'v7' is possibly undefined //----- (0047B8F0) -------------------------------------------------------- struct _Unwind_Exception *__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], *(unsigned __int8 **)a2, *(_DWORD *)(a2 + 4), a3); } // 47B917: variable 'v4' is possibly undefined //----- (0047B930) -------------------------------------------------------- struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( int *this, _BYTE **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); } // 47B957: variable 'v4' is possibly undefined //----- (0047B970) -------------------------------------------------------- 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); } // 47B986: variable 'v3' is possibly undefined //----- (0047B9A0) -------------------------------------------------------- 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); } // 47B9B6: variable 'v3' is possibly undefined //----- (0047B9D0) -------------------------------------------------------- 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); } // 47BA1E: variable 'v9' is possibly undefined //----- (0047BA30) -------------------------------------------------------- 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); } // 47BA7E: variable 'v9' is possibly undefined //----- (0047BA90) -------------------------------------------------------- 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); } // 47BADE: variable 'v9' is possibly undefined //----- (0047BAF0) -------------------------------------------------------- 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); } // 47BB3E: variable 'v9' is possibly undefined //----- (0047BB50) -------------------------------------------------------- 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); } // 47BB9E: variable 'v9' is possibly undefined //----- (0047BBB0) -------------------------------------------------------- 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); } // 47BBFE: variable 'v9' is possibly undefined //----- (0047BC10) -------------------------------------------------------- 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)); } // 47BC1E: variable 'v2' is possibly undefined //----- (0047BC30) -------------------------------------------------------- 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)); } // 47BC3E: variable 'v2' is possibly undefined //----- (0047BC50) -------------------------------------------------------- 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); } // 47BC9E: variable 'v9' is possibly undefined //----- (0047BCB0) -------------------------------------------------------- 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); } // 47BCFE: variable 'v9' is possibly undefined //----- (0047BD10) -------------------------------------------------------- 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); } // 47BD5E: variable 'v9' is possibly undefined //----- (0047BD70) -------------------------------------------------------- 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); } // 47BDBE: variable 'v9' is possibly undefined //----- (0047BDD0) -------------------------------------------------------- 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); } // 47BE1E: variable 'v9' is possibly undefined //----- (0047BE30) -------------------------------------------------------- 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); } // 47BE7E: variable 'v9' is possibly undefined //----- (0047BE90) -------------------------------------------------------- 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); } // 47BEDE: variable 'v9' is possibly undefined //----- (0047BEF0) -------------------------------------------------------- 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); } // 47BF3E: variable 'v9' is possibly undefined //----- (0047BF50) -------------------------------------------------------- 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); } // 47BF9E: variable 'v9' is possibly undefined //----- (0047BFB0) -------------------------------------------------------- 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); } // 47BFFE: variable 'v9' is possibly undefined //----- (0047C010) -------------------------------------------------------- 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)); } // 47C01E: variable 'v2' is possibly undefined //----- (0047C030) -------------------------------------------------------- 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)); } // 47C03E: variable 'v2' is possibly undefined //----- (0047C050) -------------------------------------------------------- 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); } // 47C09E: variable 'v9' is possibly undefined //----- (0047C0B0) -------------------------------------------------------- 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); } // 47C0FE: variable 'v9' is possibly undefined //----- (0047C110) -------------------------------------------------------- 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); } // 47C15E: variable 'v9' is possibly undefined //----- (0047C170) -------------------------------------------------------- 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); } // 47C1BE: variable 'v9' is possibly undefined //----- (0047C1D0) -------------------------------------------------------- __int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( int *this, __int64 a2, int a3, int a4, unsigned __int8 a5, int a6, int *a7, void **a8) { void (__cdecl *v8)(void **); // eax size_t v10; // edx int *v11; // eax int v12; // ebx int v13; // esi int v14; // [esp+0h] [ebp-C8h] int v15; // [esp+78h] [ebp-50h] BYREF void *Block; // [esp+7Ch] [ebp-4Ch] BYREF size_t Size; // [esp+80h] [ebp-48h] int v18[4]; // [esp+84h] [ebp-44h] BYREF void *v19[6]; // [esp+94h] [ebp-34h] BYREF void (__cdecl *v20)(void **); // [esp+ACh] [ebp-1Ch] __int64 v21; // [esp+D0h] [ebp+8h] v20 = 0; v15 = 0; LOBYTE(v14) = 0; v21 = std::__facet_shims::__money_get(v14, this[2], a2, a3, a4, a5, a6, &v15, 0, v19); v8 = v20; if ( v15 ) { *a7 = v15; goto LABEL_3; } if ( !v20 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); Block = v18; std::string::_M_construct(&Block, (_BYTE *)v19[0], (int)v19[0] + (unsigned int)v19[1]); v10 = Size; v11 = (int *)*a8; if ( Block == v18 ) { if ( Size ) { if ( Size == 1 ) *(_BYTE *)v11 = v18[0]; else memcpy(v11, v18, Size); v10 = Size; v11 = (int *)*a8; } a8[1] = (void *)v10; *((_BYTE *)v11 + v10) = 0; v11 = (int *)Block; goto LABEL_11; } v12 = v18[0]; if ( v11 == (int *)(a8 + 2) ) { *a8 = Block; a8[1] = (void *)v10; a8[2] = (void *)v12; goto LABEL_15; } v13 = (int)a8[2]; *a8 = Block; a8[1] = (void *)v10; a8[2] = (void *)v12; if ( !v11 ) { LABEL_15: Block = v18; v11 = v18; goto LABEL_11; } Block = v11; v18[0] = v13; LABEL_11: Size = 0; *(_BYTE *)v11 = 0; if ( Block != v18 ) operator delete(Block); v8 = v20; LABEL_3: if ( v8 ) v8(v19); return v21; } // 47C281: variable 'v14' is possibly undefined //----- (0047C430) -------------------------------------------------------- __int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( _DWORD *this, __int64 a2, int a3, int a4, unsigned __int8 a5, int a6, _DWORD *a7, int *a8) { void (__cdecl *v8)(void **); // eax int v10; // ecx int v11; // eax int v12; // [esp+0h] [ebp-A8h] std::string *v13; // [esp+4h] [ebp-A4h] char v14[5]; // [esp+7Bh] [ebp-2Dh] BYREF int v15; // [esp+80h] [ebp-28h] BYREF void *v16[6]; // [esp+84h] [ebp-24h] BYREF void (__cdecl *v17)(void **); // [esp+9Ch] [ebp-Ch] __int64 v18; // [esp+B0h] [ebp+8h] v17 = 0; *(_DWORD *)&v14[1] = 0; LOBYTE(v12) = 0; v18 = std::__facet_shims::__money_get(v12, (int *)this[2], a2, a3, a4, a5, a6, &v14[1], 0, v16); v8 = v17; if ( *(_DWORD *)&v14[1] ) { *a7 = *(_DWORD *)&v14[1]; } else { if ( !v17 ) std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); std::string::string(&v15, (unsigned __int8 *)v16[0], (size_t)v16[1], (int)v14); std::string::swap(a8, (std::string *)&v15, v13); v10 = v15; if ( _CRT_MT ) { v11 = _InterlockedExchangeAdd((volatile signed __int32 *)(v15 - 4), 0xFFFFFFFF); } else { v11 = *(_DWORD *)(v15 - 4); *(_DWORD *)(v15 - 4) = v11 - 1; } if ( v11 <= 0 ) std::string::_Rep::_M_destroy((void *)(v10 - 12), (int)v14); v8 = v17; } if ( v8 ) v8(v16); return v18; } // 47C4CC: variable 'v12' is possibly undefined // 47C543: variable 'v13' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (0047C5D0) -------------------------------------------------------- __int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( _DWORD *this, __int64 a2, int a3, int a4, unsigned __int8 a5, int a6, _DWORD *a7, long double *a8) { __int64 result; // rax int v9; // [esp+0h] [ebp-5Ch] int *v10; // [esp+4h] [ebp-58h] int v11; // [esp+3Ch] [ebp-20h] BYREF long double v12[2]; // [esp+40h] [ebp-1Ch] BYREF LOBYTE(v9) = 0; v10 = (int *)this[2]; v11 = 0; result = std::__facet_shims::__money_get(v9, v10, a2, a3, a4, a5, a6, &v11, (int)v12, 0); if ( v11 ) *a7 = v11; else *a8 = v12[0]; return result; } // 47C631: variable 'v9' is possibly undefined // 47C5D0: using guessed type long double var_1C[2]; //----- (0047C660) -------------------------------------------------------- __int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( _DWORD *this, __int64 a2, int a3, int a4, unsigned __int8 a5, int a6, int *a7, long double *a8) { __int64 result; // rax int v9; // [esp+0h] [ebp-5Ch] int v10; // [esp+4h] [ebp-58h] int v11; // [esp+3Ch] [ebp-20h] BYREF long double v12[2]; // [esp+40h] [ebp-1Ch] BYREF LOBYTE(v9) = 0; v10 = this[2]; v11 = 0; result = std::__facet_shims::__money_get(v9, v10, a2, a3, a4, a5, a6, &v11, (int)v12, 0); if ( v11 ) *a7 = v11; else *a8 = v12[0]; return result; } // 47C6C1: variable 'v9' is possibly undefined // 47C660: using guessed type long double var_1C[2]; //----- (0047C6F0) -------------------------------------------------------- struct _Unwind_Exception *__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; // eax void (__cdecl *v10)(void **); // eax int *v12; // ebx int v13; // edx int *v14; // eax int v15; // ebx int v16; // esi int v17; // ecx int v18; // [esp+0h] [ebp-D8h] struct _Unwind_Exception *lpuexcpt; // [esp+40h] [ebp-98h] int v20; // [esp+88h] [ebp-50h] BYREF int *v21; // [esp+8Ch] [ebp-4Ch] BYREF int v22; // [esp+90h] [ebp-48h] int Src[4]; // [esp+94h] [ebp-44h] BYREF void *v24[6]; // [esp+A4h] [ebp-34h] BYREF void (__cdecl *v25)(void **); // [esp+BCh] [ebp-1Ch] v9 = this[2]; LOBYTE(v18) = 0; v25 = 0; v20 = 0; lpuexcpt = std::__facet_shims::__money_get(v18, v9, 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"); v21 = Src; std::wstring::_M_construct(&v21, (_WORD *)v24[0], (int)v24[0] + 2 * (int)v24[1]); v12 = Src; v13 = v22; v14 = *(int **)a9; if ( v21 == Src ) { v17 = 2 * v22; if ( v22 ) { if ( v22 == 1 ) { *(_WORD *)v14 = Src[0]; v17 = 2; } else { memcpy(v14, Src, 2 * v22); v13 = v22; v12 = v21; v14 = *(int **)a9; v17 = 2 * v22; } } *(_DWORD *)(a9 + 4) = v13; *(_WORD *)((char *)v14 + v17) = 0; v14 = v12; goto LABEL_11; } v15 = Src[0]; if ( v14 == (int *)(a9 + 8) ) { *(_DWORD *)a9 = v21; *(_DWORD *)(a9 + 4) = v13; *(_DWORD *)(a9 + 8) = v15; } else { v16 = *(_DWORD *)(a9 + 8); *(_DWORD *)a9 = v21; *(_DWORD *)(a9 + 4) = v13; *(_DWORD *)(a9 + 8) = v15; if ( v14 ) { v21 = v14; Src[0] = v16; LABEL_11: v22 = 0; *(_WORD *)v14 = 0; if ( v14 != Src ) operator delete(v14); } } v10 = v25; LABEL_3: if ( v10 ) v10(v24); return lpuexcpt; } // 47C7B9: variable 'v18' is possibly undefined //----- (0047C970) -------------------------------------------------------- struct _Unwind_Exception *__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; // eax void (__cdecl *v10)(void **); // eax int v12; // ecx int v13; // eax int v14; // [esp+0h] [ebp-B8h] struct _Unwind_Exception *lpuexcpt; // [esp+40h] [ebp-78h] char v16[5]; // [esp+8Bh] [ebp-2Dh] BYREF int v17; // [esp+90h] [ebp-28h] BYREF void *v18[6]; // [esp+94h] [ebp-24h] BYREF void (__cdecl *v19)(void **); // [esp+ACh] [ebp-Ch] v9 = (int *)this[2]; LOBYTE(v14) = 0; v19 = 0; *(_DWORD *)&v16[1] = 0; lpuexcpt = std::__facet_shims::__money_get(v14, v9, a2, a3, a4, a5, a6, a7, &v16[1], 0, 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, (_WORD *)v18[0], (int)v18[1], (int)v16); std::wstring::swap(a9, &v17); v12 = v17; if ( _CRT_MT ) { v13 = _InterlockedExchangeAdd((volatile signed __int32 *)(v17 - 4), 0xFFFFFFFF); } else { v13 = *(_DWORD *)(v17 - 4); *(_DWORD *)(v17 - 4) = v13 - 1; } if ( v13 <= 0 ) std::wstring::_Rep::_M_destroy((void *)(v12 - 12), (int)v16); v10 = v19; } if ( v10 ) v10(v18); return lpuexcpt; } // 47CA1F: variable 'v14' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (0047CB40) -------------------------------------------------------- struct _Unwind_Exception *__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) { struct _Unwind_Exception *v9; // ecx int v11; // [esp+0h] [ebp-6Ch] int *v12; // [esp+4h] [ebp-68h] int v13; // [esp+4Ch] [ebp-20h] BYREF long double v14[2]; // [esp+50h] [ebp-1Ch] BYREF LOBYTE(v11) = 0; v12 = (int *)this[2]; v13 = 0; v9 = std::__facet_shims::__money_get(v11, v12, a2, a3, a4, a5, a6, a7, &v13, (int)v14, 0); if ( v13 ) *a8 = v13; else *a9 = v14[0]; return v9; } // 47CBAD: variable 'v11' is possibly undefined // 47CB40: using guessed type long double var_1C[2]; //----- (0047CC00) -------------------------------------------------------- struct _Unwind_Exception *__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) { struct _Unwind_Exception *v9; // ecx int v11; // [esp+0h] [ebp-6Ch] int v12; // [esp+4h] [ebp-68h] int v13; // [esp+4Ch] [ebp-20h] BYREF long double v14[2]; // [esp+50h] [ebp-1Ch] BYREF LOBYTE(v11) = 0; v12 = this[2]; v13 = 0; v9 = std::__facet_shims::__money_get(v11, v12, a2, a3, a4, a5, a6, a7, &v13, (int)v14, 0); if ( v13 ) *a8 = v13; else *a9 = v14[0]; return v9; } // 47CC6D: variable 'v11' is possibly undefined // 47CC00: using guessed type long double var_1C[2]; //----- (0047CCC0) -------------------------------------------------------- __int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, int a7) { int *v7; // eax _BYTE *v8; // edx size_t v9; // ebx int v11; // [esp+0h] [ebp-A8h] void *Src; // [esp+30h] [ebp-78h] int Size; // [esp+40h] [ebp-68h] __int64 Sizea; // [esp+40h] [ebp-68h] int v16; // [esp+80h] [ebp-28h] BYREF int v17[2]; // [esp+84h] [ebp-24h] BYREF int v18[4]; // [esp+8Ch] [ebp-1Ch] BYREF void (__cdecl *v19)(void **); // [esp+9Ch] [ebp-Ch] v7 = v18; v19 = 0; v8 = *(_BYTE **)a7; v9 = *(_DWORD *)(a7 + 4); v17[0] = (int)v18; Src = v8; Size = v9; if ( &v8[v9] && !v8 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v16 = v9; if ( v9 > 0xF ) { v7 = (int *)std::string::_M_create((unsigned int *)&v16, 0); v17[0] = (int)v7; v18[0] = v16; LABEL_12: memcpy(v7, Src, v9); Size = v16; v7 = (int *)v17[0]; goto LABEL_6; } if ( v9 == 1 ) { LOBYTE(v18[0]) = *v8; goto LABEL_6; } if ( v9 ) goto LABEL_12; LABEL_6: v17[1] = Size; *((_BYTE *)v7 + Size) = 0; v19 = std::__facet_shims::`anonymous namespace'::__destroy_string; LOBYTE(v11) = 0; Sizea = std::__facet_shims::__money_put(v11, this[2], a2, a3, a4, a5, a6, 0.0, (int)v17); if ( v19 ) v19((void **)v17); return Sizea; } // 47CDAB: variable 'v11' is possibly undefined //----- (0047CEA0) -------------------------------------------------------- __int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, std::string *a7) { int v8; // [esp+0h] [ebp-A8h] const std::string *v9; // [esp+4h] [ebp-A4h] __int64 lpuexcpt; // [esp+40h] [ebp-68h] int v12[6]; // [esp+84h] [ebp-24h] BYREF void (__cdecl *v13)(int *); // [esp+9Ch] [ebp-Ch] v13 = 0; std::string::string(v12, a7, v9); v12[1] = *(_DWORD *)(*(_DWORD *)a7 - 12); v13 = std::__facet_shims::`anonymous namespace'::__destroy_string; LOBYTE(v8) = 0; lpuexcpt = std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, 0.0, (int)v12); if ( v13 ) v13(v12); return lpuexcpt; } // 47CEF5: variable 'v9' is possibly undefined // 47CF4F: variable 'v8' is possibly undefined //----- (0047CFC0) -------------------------------------------------------- __int64 __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); } // 47D008: variable 'v8' is possibly undefined //----- (0047D020) -------------------------------------------------------- __int64 __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); } // 47D068: variable 'v8' is possibly undefined //----- (0047D080) -------------------------------------------------------- __int64 __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, int a7) { int v8; // [esp+0h] [ebp-A8h] __int64 lpuexcpt; // [esp+40h] [ebp-68h] int v11[2]; // [esp+84h] [ebp-24h] BYREF char v12; // [esp+8Ch] [ebp-1Ch] BYREF void (__cdecl *v13)(void **); // [esp+9Ch] [ebp-Ch] v13 = 0; v11[0] = (int)&v12; std::wstring::_M_construct(v11, *(_WORD **)a7, *(_DWORD *)a7 + 2 * *(_DWORD *)(a7 + 4)); v13 = std::__facet_shims::`anonymous namespace'::__destroy_string; LOBYTE(v8) = 0; lpuexcpt = std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, 0.0, (int)v11); if ( v13 ) v13((void **)v11); return lpuexcpt; } // 47D139: variable 'v8' is possibly undefined //----- (0047D1A0) -------------------------------------------------------- __int64 __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; // [esp+0h] [ebp-A8h] __int64 lpuexcpt; // [esp+40h] [ebp-68h] int v11[6]; // [esp+84h] [ebp-24h] BYREF void (__cdecl *v12)(int *); // [esp+9Ch] [ebp-Ch] v12 = 0; std::wstring::basic_string(v11, a7); v11[1] = *(_DWORD *)(*a7 - 12); v12 = std::__facet_shims::`anonymous namespace'::__destroy_string; LOBYTE(v8) = 0; lpuexcpt = std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, 0.0, (int)v11); if ( v12 ) v12(v11); return lpuexcpt; } // 47D24F: variable 'v8' is possibly undefined //----- (0047D2C0) -------------------------------------------------------- __int64 __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); } // 47D308: variable 'v8' is possibly undefined //----- (0047D320) -------------------------------------------------------- __int64 __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); } // 47D368: variable 'v8' is possibly undefined //----- (0047D380) -------------------------------------------------------- const char *_ZGTtNKSt13bad_exception4whatEv() { return "std::bad_exception"; } //----- (0047D390) -------------------------------------------------------- bool __fastcall std::filebuf::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 40)); } //----- (0047D3A0) -------------------------------------------------------- bool __fastcall std::wfilebuf::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 40)); } //----- (0047D3B0) -------------------------------------------------------- int __fastcall std::fstream::rdbuf(int a1) { return a1 + 12; } //----- (0047D3C0) -------------------------------------------------------- bool __fastcall std::fstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 52)); } //----- (0047D3D0) -------------------------------------------------------- int __fastcall std::wfstream::rdbuf(int a1) { return a1 + 12; } //----- (0047D3E0) -------------------------------------------------------- bool __fastcall std::wfstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 52)); } //----- (0047D3F0) -------------------------------------------------------- int __fastcall std::wistream::gcount(int a1) { return *(_DWORD *)(a1 + 4); } //----- (0047D400) -------------------------------------------------------- int __fastcall std::wistream::sentry::operator bool(unsigned __int8 *a1) { return *a1; } //----- (0047D410) -------------------------------------------------------- int __fastcall std::wostream::sentry::operator bool(unsigned __int8 *a1) { return *a1; } //----- (0047D420) -------------------------------------------------------- long double std::random_device::_M_getentropy() { return 0.0; } //----- (0047D430) -------------------------------------------------------- int __fastcall std::ifstream::rdbuf(int a1) { return a1 + 8; } //----- (0047D440) -------------------------------------------------------- bool __fastcall std::ifstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 48)); } //----- (0047D450) -------------------------------------------------------- int __fastcall std::wifstream::rdbuf(int a1) { return a1 + 8; } //----- (0047D460) -------------------------------------------------------- bool __fastcall std::wifstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 48)); } //----- (0047D470) -------------------------------------------------------- int __fastcall std::ofstream::rdbuf(int a1) { return a1 + 4; } //----- (0047D480) -------------------------------------------------------- bool __fastcall std::ofstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 44)); } //----- (0047D490) -------------------------------------------------------- int __fastcall std::wofstream::rdbuf(int a1) { return a1 + 4; } //----- (0047D4A0) -------------------------------------------------------- bool __fastcall std::wofstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 44)); } //----- (0047D4B0) -------------------------------------------------------- int __fastcall std::streambuf::gptr(int a1) { return *(_DWORD *)(a1 + 8); } //----- (0047D4C0) -------------------------------------------------------- int __fastcall std::streambuf::pptr(int a1) { return *(_DWORD *)(a1 + 20); } //----- (0047D4D0) -------------------------------------------------------- int __fastcall std::streambuf::eback(int a1) { return *(_DWORD *)(a1 + 4); } //----- (0047D4E0) -------------------------------------------------------- int __fastcall std::streambuf::egptr(int a1) { return *(_DWORD *)(a1 + 12); } //----- (0047D4F0) -------------------------------------------------------- int __fastcall std::streambuf::epptr(int a1) { return *(_DWORD *)(a1 + 24); } //----- (0047D500) -------------------------------------------------------- int __fastcall std::streambuf::pbase(int a1) { return *(_DWORD *)(a1 + 16); } //----- (0047D510) -------------------------------------------------------- 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; } // 47D520: variable 'v4' is possibly undefined //----- (0047D540) -------------------------------------------------------- int __fastcall std::wstreambuf::gptr(int a1) { return *(_DWORD *)(a1 + 8); } //----- (0047D550) -------------------------------------------------------- int __fastcall std::wstreambuf::pptr(int a1) { return *(_DWORD *)(a1 + 20); } //----- (0047D560) -------------------------------------------------------- int __fastcall std::wstreambuf::eback(int a1) { return *(_DWORD *)(a1 + 4); } //----- (0047D570) -------------------------------------------------------- int __fastcall std::wstreambuf::egptr(int a1) { return *(_DWORD *)(a1 + 12); } //----- (0047D580) -------------------------------------------------------- int __fastcall std::wstreambuf::epptr(int a1) { return *(_DWORD *)(a1 + 24); } //----- (0047D590) -------------------------------------------------------- int __fastcall std::wstreambuf::pbase(int a1) { return *(_DWORD *)(a1 + 16); } //----- (0047D5A0) -------------------------------------------------------- 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; } // 47D5B0: variable 'v4' is possibly undefined //----- (0047D5D0) -------------------------------------------------------- int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (0047D5F0) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; } //----- (0047D610) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_base::do_in( int this, int a2, unsigned __int8 *a3, int a4, unsigned __int8 **a5, int a6, int a7, _DWORD *a8) { unsigned int v8; // edi unsigned __int8 *v9; // edx unsigned int v11; // eax int result; // eax unsigned __int8 *v13; // [esp+8h] [ebp-14h] BYREF unsigned __int8 *v14; // [esp+Ch] [ebp-10h] v8 = *(_DWORD *)(this + 8); v9 = a3; v13 = a3; v14 = (unsigned __int8 *)a4; if ( (*(_BYTE *)(this + 12) & 4) != 0 && (unsigned int)(a4 - (_DWORD)a3) > 2 && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom && a3[2] == 0xBF ) { v9 = a3 + 3; v13 = a3 + 3; } if ( (unsigned __int8 *)a4 == v9 ) { LABEL_14: result = 0; } else { while ( 1 ) { if ( a7 == a6 ) { v9 = v13; result = 1; goto LABEL_9; } v11 = std::`anonymous namespace'::read_utf8_code_point(&v13, v8); v9 = v13; if ( v11 == -2 ) { result = 1; goto LABEL_9; } if ( v8 < v11 ) break; a6 += 4; *(_DWORD *)(a6 - 4) = v11; if ( v14 == v9 ) goto LABEL_14; } result = 2; } LABEL_9: *a5 = v9; *a8 = a6; return result; } // 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; //----- (0047D6E0) -------------------------------------------------------- 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, _DWORD *a8) { unsigned int v8; // edi _BYTE *v9; // eax unsigned int *v10; // ebx int v11; // ecx _BYTE *v13[5]; // [esp+8h] [ebp-14h] BYREF v8 = *(_DWORD *)(this + 8); v9 = a6; v10 = a3; v13[0] = a6; v13[1] = a7; if ( (*(_BYTE *)(this + 12) & 2) != 0 ) { v11 = 1; if ( (unsigned int)(a7 - a6) <= 2 ) goto LABEL_8; a6[2] = -65; *(_WORD *)a6 = -17425; v13[0] = a6 + 3; } if ( a3 == a4 ) { LABEL_11: v9 = v13[0]; v11 = 0; } else { while ( 1 ) { if ( v8 < *v10 ) { v9 = v13[0]; v11 = 2; goto LABEL_8; } if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v13, *v10) ) break; if ( a4 == ++v10 ) goto LABEL_11; } v9 = v13[0]; v11 = 1; } LABEL_8: *a5 = v10; *a8 = v9; return v11; } //----- (0047D790) -------------------------------------------------------- unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length( int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, int a5) { unsigned int v5; // esi int v6; // ebx unsigned int utf8_code; // eax bool v8; // dl unsigned __int8 *v10[5]; // [esp+8h] [ebp-14h] BYREF v5 = *(_DWORD *)(this + 8); v10[0] = a3; v10[1] = a4; if ( (*(_BYTE *)(this + 12) & 4) != 0 && (unsigned int)(a4 - a3) > 2 && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom && a3[2] == 0xBF ) { v10[0] = a3 + 3; } v6 = a5 - 1; if ( a5 ) { do { utf8_code = std::`anonymous namespace'::read_utf8_code_point(v10, v5); v8 = v6-- != 0; } while ( v5 >= utf8_code && v8 ); } return (unsigned __int8 *)(v10[0] - a3); } // 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; //----- (0047D820) -------------------------------------------------------- int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (0047D840) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 3 : 6; } //----- (0047D860) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_base::do_in( _DWORD *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8) { int v8; // eax unsigned int v9; // ecx int result; // eax unsigned __int8 *v11[2]; // [esp+8h] [ebp-10h] BYREF char *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 >= 0xFFFF ) v9 = 0xFFFF; result = std::`anonymous namespace'::utf16_in(v11, v12, v9, v8 & 6 | 1, 1); *a5 = v11[0]; *a8 = v12[0]; return result; } //----- (0047D8D0) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_base::do_out( int this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _BYTE *a6, _BYTE *a7, _DWORD *a8) { unsigned __int16 *v8; // ebx _BYTE *v9; // eax unsigned int v10; // edx int v11; // eax int v12; // ecx unsigned __int16 *v14[2]; // [esp+4h] [ebp-1Ch] BYREF _BYTE *v15[5]; // [esp+Ch] [ebp-14h] BYREF v8 = a3; v9 = a6; v14[1] = a4; v10 = *(_DWORD *)(this + 8); v14[0] = a3; v15[0] = a6; v15[1] = a7; if ( v10 >= 0xFFFF ) v10 = 0xFFFF; if ( (*(_BYTE *)(this + 12) & 2) != 0 ) { v12 = 1; if ( (unsigned int)(a7 - a6) <= 2 ) goto LABEL_5; a6[2] = -65; *(_WORD *)a6 = -17425; v15[0] = a6 + 3; } v11 = std::`anonymous namespace'::utf16_out(v14, v15, v10, 1); v8 = v14[0]; v12 = v11; v9 = v15[0]; LABEL_5: *a5 = v8; *a8 = v9; return v12; } //----- (0047D970) -------------------------------------------------------- unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length( int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, int a5) { unsigned int v5; // esi int v6; // ebx unsigned int utf8_code; // eax bool v8; // dl unsigned __int8 *v10[5]; // [esp+8h] [ebp-14h] BYREF v5 = *(_DWORD *)(this + 8); v10[0] = a3; v10[1] = a4; if ( (*(_BYTE *)(this + 12) & 4) != 0 && (unsigned int)(a4 - a3) > 2 && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom && a3[2] == 0xBF ) { v10[0] = a3 + 3; } v6 = a5 - 1; if ( v5 >= 0xFFFF ) v5 = 0xFFFF; if ( a5 ) { do { utf8_code = std::`anonymous namespace'::read_utf8_code_point(v10, v5); v8 = v6-- != 0; } while ( v5 >= utf8_code && v8 ); } return (unsigned __int8 *)(v10[0] - a3); } // 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; //----- (0047DA10) -------------------------------------------------------- int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (0047DA30) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 3 : 6; } //----- (0047DA50) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_base::do_in( _DWORD *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8) { unsigned int v8; // ecx int result; // eax unsigned __int8 *v10[2]; // [esp+8h] [ebp-10h] BYREF char *v11[2]; // [esp+10h] [ebp-8h] BYREF v8 = this[3]; v10[0] = a3; v10[1] = a4; v11[0] = a6; v11[1] = a7; if ( v8 >= 0xFFFF ) v8 = 0xFFFF; result = std::`anonymous namespace'::utf16_in(v10, v11, v8, 1, 1); *a5 = v10[0]; *a8 = v11[0]; return result; } //----- (0047DAC0) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_base::do_out( int this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _BYTE *a6, _BYTE *a7, _DWORD *a8) { unsigned __int16 *v8; // ebx _BYTE *v9; // eax unsigned int v10; // edx int v11; // eax int v12; // ecx _BYTE *v14[2]; // [esp+4h] [ebp-1Ch] BYREF unsigned __int16 *v15[5]; // [esp+Ch] [ebp-14h] BYREF v8 = a3; v9 = a6; v15[1] = a4; v10 = *(_DWORD *)(this + 12); v14[0] = a6; v14[1] = a7; v15[0] = a3; if ( v10 >= 0xFFFF ) v10 = 0xFFFF; if ( (*(_BYTE *)(this + 16) & 2) != 0 ) { v12 = 1; if ( (unsigned int)(a7 - a6) <= 2 ) goto LABEL_5; a6[2] = -65; *(_WORD *)a6 = -17425; v14[0] = a6 + 3; } v11 = std::`anonymous namespace'::utf16_out(v15, v14, v10, 1); v8 = v15[0]; v12 = v11; v9 = v14[0]; LABEL_5: *a5 = v8; *a8 = v9; return v12; } //----- (0047DB60) -------------------------------------------------------- unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length( int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, int a5) { unsigned int v5; // esi int v6; // ebx unsigned int utf8_code; // eax bool v8; // dl unsigned __int8 *v10[5]; // [esp+8h] [ebp-14h] BYREF v5 = *(_DWORD *)(this + 12); v10[0] = a3; v10[1] = a4; if ( (*(_BYTE *)(this + 16) & 4) != 0 && (unsigned int)(a4 - a3) > 2 && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom && a3[2] == 0xBF ) { v10[0] = a3 + 3; } v6 = a5 - 1; if ( v5 >= 0xFFFF ) v5 = 0xFFFF; if ( a5 ) { do { utf8_code = std::`anonymous namespace'::read_utf8_code_point(v10, v5); v8 = v6-- != 0; } while ( v5 >= utf8_code && v8 ); } return (unsigned __int8 *)(v10[0] - a3); } // 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; //----- (0047DC00) -------------------------------------------------------- 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; } //----- (0047DC50) -------------------------------------------------------- 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; } //----- (0047DCF0) -------------------------------------------------------- int __fastcall std::istreambuf_iterator::_M_get(int a1) { int result; // eax _DWORD *v3; // ecx unsigned __int8 *v4; // eax result = *(_DWORD *)(a1 + 4); v3 = *(_DWORD **)a1; if ( __PAIR64__(result, (unsigned int)v3) > 0xFFFFFFFF00000000LL ) { v4 = (unsigned __int8 *)v3[2]; if ( (unsigned int)v4 >= v3[3] ) { result = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); if ( result == -1 ) *(_DWORD *)a1 = 0; } else { return *v4; } } return result; } //----- (0047DD40) -------------------------------------------------------- bool __thiscall std::istreambuf_iterator::equal(_WORD *this, int a2) { _DWORD *v3; // ecx unsigned __int8 v4; // dl _DWORD *v5; // edi unsigned __int8 v6; // al unsigned __int8 v7; // bl unsigned __int8 v9; // di _WORD *v10; // eax __int16 v11; // ax __int16 *v12; // eax __int16 v13; // cx __int16 v14; // ax unsigned __int8 v15; // [esp+Fh] [ebp-Dh] v3 = *(_DWORD **)this; v4 = this[2] == 0xFFFF; if ( (v4 & (v3 != 0)) != 0 ) { v9 = v4 & (v3 != 0); v10 = (_WORD *)v3[2]; v11 = (unsigned int)v10 >= v3[3] ? (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3) : *v10; v4 = 0; if ( v11 == -1 ) { *(_DWORD *)this = 0; v4 = v9; } } v5 = *(_DWORD **)a2; v6 = *(_WORD *)(a2 + 4) == 0xFFFF; v7 = v6 & (*(_DWORD *)a2 != 0); if ( v7 ) { v12 = (__int16 *)v5[2]; if ( (unsigned int)v12 >= v5[3] ) { v15 = v4; v14 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); v4 = v15; v13 = v14; } else { v13 = *v12; } v6 = 0; if ( v13 == -1 ) { *(_DWORD *)a2 = 0; v6 = v7; } } return v4 == v6; } //----- (0047DDE0) -------------------------------------------------------- int __fastcall std::istreambuf_iterator::_M_get(int a1) { int result; // eax _DWORD *v3; // ecx unsigned __int16 *v4; // eax result = *(unsigned __int16 *)(a1 + 4); v3 = *(_DWORD **)a1; if ( (_WORD)result == 0xFFFF && v3 ) { v4 = (unsigned __int16 *)v3[2]; if ( (unsigned int)v4 >= v3[3] ) result = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); else result = *v4; if ( (_WORD)result == 0xFFFF ) *(_DWORD *)a1 = 0; } return result; } //----- (0047DE30) -------------------------------------------------------- int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (0047DE50) -------------------------------------------------------- int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 6; } //----- (0047DE70) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_in( _DWORD *this, int a2, int a3, int a4, int *a5, int a6, int a7, _DWORD *a8) { unsigned int v8; // esi _WORD *v10; // ecx unsigned int v11; // edx int v12; // edi unsigned __int16 v13; // dx unsigned __int16 v14; // bp unsigned int v15; // eax int v16; // edx __int16 v17; // bp int v18; // eax int v20; // [esp+0h] [ebp-24h] int v21; // [esp+8h] [ebp-1Ch] BYREF _WORD *v22; // [esp+Ch] [ebp-18h] BYREF int v23; // [esp+10h] [ebp-14h] v8 = this[2]; v22 = (_WORD *)a3; v23 = a4; v21 = this[3]; std::`anonymous namespace'::read_utf16_bom((int)&v22, &v21); v10 = v22; v20 = v23; v11 = (unsigned int)(v23 - (_DWORD)v22) >> 1; if ( !v11 ) { LABEL_20: *a5 = (int)v10; *a8 = a6; return 2 * (a4 != (_DWORD)v10); } v12 = v21 & 1; while ( a7 != a6 ) { LOWORD(v15) = *v10; v17 = __ROL2__(*v10, 8); if ( !v12 ) LOWORD(v15) = v17; v15 = (unsigned __int16)v15; if ( (unsigned int)(unsigned __int16)v15 - 55296 <= 0x3FF ) { if ( v11 == 1 ) goto LABEL_16; v13 = v10[1]; v14 = __ROL2__(v13, 8); if ( !v12 ) v13 = v14; if ( (unsigned int)v13 - 56320 <= 0x3FF ) { v15 = v13 + ((unsigned __int16)v15 << 10) - 56613888; v16 = 2; if ( v8 < v15 ) goto LABEL_15; goto LABEL_8; } LABEL_18: v10 = v22; v18 = (int)v22; if ( v8 != -1 ) { v11 = 2; goto LABEL_17; } a6 += 4; *(_DWORD *)(a6 - 4) = -1; v11 = (unsigned int)(v20 - (_DWORD)v10) >> 1; if ( !v11 ) goto LABEL_20; } else { if ( (unsigned int)(unsigned __int16)v15 - 56320 <= 0x3FF ) goto LABEL_18; v16 = 1; if ( v8 < (unsigned __int16)v15 ) { LABEL_15: v11 = 2; LABEL_16: v18 = (int)v22; LABEL_17: *a5 = v18; *a8 = a6; return v11; } LABEL_8: v10 += v16; a6 += 4; *(_DWORD *)(a6 - 4) = v15; v22 = v10; v11 = (unsigned int)(v20 - (_DWORD)v10) >> 1; if ( !v11 ) goto LABEL_20; } } *a5 = (int)v22; *a8 = a7; return 1; } //----- (0047E010) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_out( _DWORD *this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, _WORD *a6, int a7, _DWORD *a8) { int v8; // edi unsigned int v9; // ebx unsigned int *v10; // eax _WORD *v11; // edx int v12; // esi unsigned int v13; // esi unsigned int v14; // edi unsigned int v16; // edi __int16 v17; // si __int16 v18; // di __int16 v19; // di unsigned int v20; // [esp+0h] [ebp-14h] int v21; // [esp+0h] [ebp-14h] v8 = this[3]; v9 = this[2]; v10 = a3; v11 = a6; if ( (v8 & 2) != 0 ) { v20 = a7 - (_DWORD)a6; v12 = 1; if ( (v8 & 1) != 0 ) { if ( v20 <= 1 ) goto LABEL_11; v11 = a6 + 1; *a6 = -257; } else { if ( v20 <= 1 ) goto LABEL_11; v11 = a6 + 1; *a6 = -2; } } if ( a3 == a4 ) { LABEL_17: v12 = 0; } else { v21 = v8 & 1; while ( 1 ) { v13 = *v10; if ( v9 < *v10 ) break; v14 = (unsigned int)(a7 - (_DWORD)v11) >> 1; if ( v13 > 0xFFFF ) { if ( v14 <= 1 ) { LABEL_10: v12 = 1; goto LABEL_11; } v16 = v13 >> 10; v17 = (v13 & 0x3FF) - 9216; v18 = v16 - 10304; if ( !v21 ) { v18 = __ROL2__(v18, 8); v17 = __ROL2__(v17, 8); } *v11 = v18; v11 += 2; *(v11 - 1) = v17; } else { if ( !v14 ) goto LABEL_10; v19 = __ROL2__(v13, 8); if ( !v21 ) LOWORD(v13) = v19; *v11++ = v13; } if ( a4 == ++v10 ) goto LABEL_17; } v12 = 2; } LABEL_11: *a5 = v10; *a8 = v11; return v12; } //----- (0047E140) -------------------------------------------------------- char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) { unsigned int v5; // ebx _WORD *v6; // ecx int v7; // esi unsigned int v8; // edx unsigned int v9; // eax __int16 v10; // bp unsigned __int16 v11; // dx unsigned __int16 v12; // bp int v13; // edx bool v15; // dl bool v16; // al int v17; // [esp+8h] [ebp-1Ch] BYREF _WORD *v18; // [esp+Ch] [ebp-18h] BYREF int v19; // [esp+10h] [ebp-14h] v5 = this[2]; v18 = (_WORD *)a3; v19 = a4; v17 = this[3]; std::`anonymous namespace'::read_utf16_bom((int)&v18, &v17); if ( a5 ) { v6 = v18; v7 = a5 - 1; v8 = (unsigned int)(v19 - (_DWORD)v18) >> 1; if ( v8 ) goto LABEL_3; LABEL_17: v9 = -2; while ( 1 ) { v15 = v5 >= v9; v16 = v7-- != 0; if ( !v16 || !v15 ) return (char *)v6 - a3; v8 = (unsigned int)(v19 - (_DWORD)v6) >> 1; if ( !v8 ) goto LABEL_17; LABEL_3: LOWORD(v9) = *v6; v10 = __ROL2__(*v6, 8); if ( (v17 & 1) == 0 ) LOWORD(v9) = v10; v9 = (unsigned __int16)v9; if ( (unsigned int)(unsigned __int16)v9 - 55296 > 0x3FF ) { if ( (unsigned int)(unsigned __int16)v9 - 56320 <= 0x3FF ) goto LABEL_18; v13 = 1; if ( v5 < (unsigned __int16)v9 ) return (char *)v6 - a3; LABEL_14: v6 += v13; v18 = v6; } else { if ( v8 == 1 ) goto LABEL_17; v11 = v6[1]; v12 = __ROL2__(v11, 8); if ( (v17 & 1) == 0 ) v11 = v12; if ( (unsigned int)v11 - 56320 <= 0x3FF ) { v9 = v11 + ((unsigned __int16)v9 << 10) - 56613888; v13 = 2; if ( v5 < v9 ) return (char *)v6 - a3; goto LABEL_14; } LABEL_18: v9 = -1; } } } return (char *)v18 - a3; } //----- (0047E280) -------------------------------------------------------- int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (0047E2A0) -------------------------------------------------------- int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 2 : 4; } //----- (0047E2C0) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_in( unsigned int *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, int *a8) { unsigned int v8; // edx int result; // eax unsigned __int16 *v10; // edx int v11; // esi unsigned __int16 *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; } //----- (0047E330) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_out( _DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _WORD *a6, int a7, int *a8) { unsigned int v8; // edi unsigned __int16 *v9; // edx int v10; // eax int v11; // esi unsigned int v12; // ebx int v13; // ecx int v14; // eax unsigned __int16 *v16[2]; // [esp+4h] [ebp-1Ch] BYREF int v17[5]; // [esp+Ch] [ebp-14h] BYREF v8 = this[2]; v9 = a3; v10 = (int)a6; v16[1] = a4; v11 = this[3]; v16[0] = a3; v17[0] = (int)a6; v17[1] = a7; if ( (v11 & 2) == 0 ) goto LABEL_5; v12 = a7 - (_DWORD)a6; v13 = 1; if ( (v11 & 1) == 0 ) { if ( v12 <= 1 ) goto LABEL_6; *a6 = -2; v17[0] = (int)(a6 + 1); goto LABEL_5; } if ( v12 > 1 ) { *a6 = -257; v17[0] = (int)(a6 + 1); LABEL_5: v14 = std::`anonymous namespace'::ucs2_out(v16, v17, v8, v11); v9 = v16[0]; v13 = v14; v10 = v17[0]; } LABEL_6: *a5 = v9; *a8 = v10; return v13; } //----- (0047E3E0) -------------------------------------------------------- char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) { unsigned int v5; // esi unsigned __int16 *v6; // edx int v7; // ecx unsigned __int16 v8; // ax unsigned __int16 v9; // bx bool v11; // al int v12; // [esp+4h] [ebp-1Ch] BYREF unsigned __int16 *v13; // [esp+8h] [ebp-18h] BYREF int v14; // [esp+Ch] [ebp-14h] v5 = this[2]; v13 = (unsigned __int16 *)a3; v14 = a4; v12 = this[3]; std::`anonymous namespace'::read_utf16_bom((int)&v13, &v12); v6 = v13; if ( v5 >= 0xFFFF ) v5 = 0xFFFF; if ( a5 ) { v7 = a5 - 1; do { if ( !((unsigned int)(v14 - (_DWORD)v6) >> 1) ) break; v8 = *v6; v9 = __ROL2__(*v6, 8); if ( (v12 & 1) == 0 ) v8 = v9; if ( (unsigned __int16)(v8 + 10240) <= 0x7FFu ) break; if ( v5 < v8 ) break; ++v6; v11 = v7 != 0; v13 = v6; --v7; } while ( v11 ); } return (char *)v6 - a3; } //----- (0047E4A0) -------------------------------------------------------- int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (0047E4C0) -------------------------------------------------------- int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 2 : 4; } //----- (0047E4E0) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_in( unsigned int *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, int *a8) { unsigned int v8; // edx int result; // eax unsigned __int16 *v10; // edx int v11; // esi unsigned __int16 *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; } //----- (0047E550) -------------------------------------------------------- int __thiscall std::__codecvt_utf16_base::do_out( _DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _WORD *a6, int a7, int *a8) { unsigned int v8; // edi unsigned __int16 *v9; // edx int v10; // eax int v11; // esi unsigned int v12; // ebx int v13; // ecx int v14; // eax int v16[2]; // [esp+4h] [ebp-1Ch] BYREF unsigned __int16 *v17[5]; // [esp+Ch] [ebp-14h] BYREF v8 = this[3]; v9 = a3; v10 = (int)a6; v17[1] = a4; v11 = this[4]; v16[0] = (int)a6; v16[1] = a7; v17[0] = a3; if ( (v11 & 2) == 0 ) goto LABEL_5; v12 = a7 - (_DWORD)a6; v13 = 1; if ( (v11 & 1) == 0 ) { if ( v12 <= 1 ) goto LABEL_6; *a6 = -2; v16[0] = (int)(a6 + 1); goto LABEL_5; } if ( v12 > 1 ) { *a6 = -257; v16[0] = (int)(a6 + 1); LABEL_5: v14 = std::`anonymous namespace'::ucs2_out(v17, v16, v8, v11); v9 = v17[0]; v13 = v14; v10 = v16[0]; } LABEL_6: *a5 = v9; *a8 = v10; return v13; } //----- (0047E600) -------------------------------------------------------- char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) { unsigned int v5; // esi unsigned __int16 *v6; // edx int v7; // ecx unsigned __int16 v8; // ax unsigned __int16 v9; // bx bool v11; // al int v12; // [esp+4h] [ebp-1Ch] BYREF unsigned __int16 *v13; // [esp+8h] [ebp-18h] BYREF int v14; // [esp+Ch] [ebp-14h] v5 = this[3]; v13 = (unsigned __int16 *)a3; v14 = a4; v12 = this[4]; std::`anonymous namespace'::read_utf16_bom((int)&v13, &v12); v6 = v13; if ( v5 >= 0xFFFF ) v5 = 0xFFFF; if ( a5 ) { v7 = a5 - 1; do { if ( !((unsigned int)(v14 - (_DWORD)v6) >> 1) ) break; v8 = *v6; v9 = __ROL2__(*v6, 8); if ( (v12 & 1) == 0 ) v8 = v9; if ( (unsigned __int16)(v8 + 10240) <= 0x7FFu ) break; if ( v5 < v8 ) break; ++v6; v11 = v7 != 0; v13 = v6; --v7; } while ( v11 ); } return (char *)v6 - a3; } //----- (0047E6C0) -------------------------------------------------------- const char *std::bad_array_new_length::what() { return "std::bad_array_new_length"; } //----- (0047E6D0) -------------------------------------------------------- int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (0047E6F0) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; } //----- (0047E710) -------------------------------------------------------- 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 int v11; // eax int result; // eax unsigned __int8 *v13; // [esp+8h] [ebp-18h] BYREF unsigned __int8 *v14; // [esp+Ch] [ebp-14h] v8 = *(_DWORD *)(this + 8); v9 = a3; v13 = a3; v14 = a4; if ( (*(_BYTE *)(this + 12) & 4) != 0 && (unsigned int)(a4 - a3) > 2 && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom && a3[2] == 0xBF ) { v9 = a3 + 3; v13 = a3 + 3; } if ( a4 == v9 ) { LABEL_13: result = 0; } else { while ( 1 ) { if ( a7 == a6 ) { v9 = v13; result = 0; goto LABEL_11; } v11 = std::`anonymous namespace'::read_utf8_code_point(&v13, v8); if ( v11 == -2 ) { v9 = v13; result = 1; goto LABEL_11; } if ( v8 < v11 ) break; if ( v11 <= 0xFFFF ) { *a6 = v11; v9 = v13; ++a6; if ( v14 == v13 ) goto LABEL_13; } else { if ( (unsigned int)((char *)a7 - (char *)a6) <= 4 ) { result = 1; goto LABEL_11; } v9 = v13; a6 += 2; *(a6 - 1) = (unsigned __int16)((v11 & 0x3FF) - 9216); *(a6 - 2) = (unsigned __int16)((v11 >> 10) - 10304); if ( v14 == v9 ) goto LABEL_13; } } v9 = v13; result = 2; } LABEL_11: *a5 = v9; *a8 = a6; return result; } // 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; //----- (0047E860) -------------------------------------------------------- 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, _DWORD *a8) { unsigned int v8; // edi _BYTE *v9; // eax unsigned int *v10; // ebx unsigned int v11; // ecx unsigned int v12; // eax int v13; // ebp unsigned int v14; // edx int v15; // ecx _BYTE *v17[6]; // [esp+8h] [ebp-18h] BYREF v8 = *(_DWORD *)(this + 8); v9 = a6; v10 = a3; v17[0] = a6; v17[1] = a7; if ( (*(_BYTE *)(this + 12) & 2) != 0 ) { v15 = 1; if ( (unsigned int)(a7 - a6) <= 2 ) goto LABEL_13; a6[2] = -65; *(_WORD *)a6 = -17425; v17[0] = a6 + 3; } v11 = (char *)a4 - (char *)a3; if ( a3 == a4 ) { LABEL_16: v9 = v17[0]; v15 = 0; } else { while ( 1 ) { v14 = *v10; if ( *v10 - 55296 <= 0x3FF ) { if ( v11 <= 4 ) goto LABEL_16; v12 = v10[1]; if ( v12 - 56320 > 0x3FF || (v13 = 2, v14 = v12 + (v14 << 10) - 56613888, v8 < v14) ) { LABEL_12: v9 = v17[0]; v15 = 2; goto LABEL_13; } } else { if ( v14 - 56320 <= 0x3FF ) goto LABEL_12; v13 = 1; if ( v8 < v14 ) goto LABEL_12; } if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v17, v14) ) break; v10 += v13; v11 = (char *)a4 - (char *)v10; if ( a4 == v10 ) goto LABEL_16; } v9 = v17[0]; v15 = 1; } LABEL_13: *a5 = v10; *a8 = v9; return v15; } //----- (0047E970) -------------------------------------------------------- unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length( unsigned int *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned int a5) { return (unsigned __int8 *)(std::`anonymous namespace'::utf16_span(a3, a4, a5, this[2], this[3]) - a3); } //----- (0047E9A0) -------------------------------------------------------- int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (0047E9C0) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; } //----- (0047E9E0) -------------------------------------------------------- int __thiscall std::__codecvt_utf8_utf16_base::do_in( _DWORD *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8) { unsigned int v8; // edx int result; // eax unsigned __int8 *v10[2]; // [esp+8h] [ebp-10h] BYREF char *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; } //----- (0047EA50) -------------------------------------------------------- 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, _DWORD *a8) { unsigned __int16 *v8; // ebx _BYTE *v9; // eax unsigned int v10; // esi int v11; // eax int v12; // edx unsigned __int16 *v14[2]; // [esp+4h] [ebp-18h] BYREF _BYTE *v15[4]; // [esp+Ch] [ebp-10h] BYREF v8 = a3; v9 = a6; v14[1] = a4; v10 = *(_DWORD *)(this + 8); v14[0] = a3; v15[0] = a6; v15[1] = a7; if ( (*(_BYTE *)(this + 12) & 2) != 0 ) { v12 = 1; if ( (unsigned int)(a7 - a6) <= 2 ) goto LABEL_3; a6[2] = -65; *(_WORD *)a6 = -17425; v15[0] = a6 + 3; } v11 = std::`anonymous namespace'::utf16_out(v14, v15, v10, 0); v8 = v14[0]; v12 = v11; v9 = v15[0]; LABEL_3: *a5 = v8; *a8 = v9; return v12; } //----- (0047EAE0) -------------------------------------------------------- unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length( unsigned int *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned int a5) { return (unsigned __int8 *)(std::`anonymous namespace'::utf16_span(a3, a4, a5, this[2], this[3]) - a3); } //----- (0047EB10) -------------------------------------------------------- int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (0047EB30) -------------------------------------------------------- int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) { return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 4 : 7; } //----- (0047EB50) -------------------------------------------------------- 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 int v11; // eax int result; // eax unsigned __int8 *v13; // [esp+8h] [ebp-18h] BYREF unsigned __int8 *v14; // [esp+Ch] [ebp-14h] v8 = *(_DWORD *)(this + 12); v9 = a3; v13 = a3; v14 = a4; if ( (*(_BYTE *)(this + 16) & 4) != 0 && (unsigned int)(a4 - a3) > 2 && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom && a3[2] == 0xBF ) { v9 = a3 + 3; v13 = a3 + 3; } if ( v9 == a4 ) { LABEL_13: result = 0; } else { while ( 1 ) { if ( a7 == a6 ) { v9 = v13; result = 0; goto LABEL_11; } v11 = std::`anonymous namespace'::read_utf8_code_point(&v13, v8); if ( v11 == -2 ) { v9 = v13; result = 1; goto LABEL_11; } if ( v8 < v11 ) break; if ( v11 <= 0xFFFF ) { *(_WORD *)a6 = v11; v9 = v13; a6 += 2; if ( v14 == v13 ) goto LABEL_13; } else { if ( (unsigned int)(a7 - a6) <= 2 ) { result = 1; goto LABEL_11; } v9 = v13; a6 += 4; *((_WORD *)a6 - 1) = (v11 & 0x3FF) - 9216; *((_WORD *)a6 - 2) = (v11 >> 10) - 10304; if ( v14 == v9 ) goto LABEL_13; } } v9 = v13; result = 2; } LABEL_11: *a5 = v9; *a8 = a6; return result; } // 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; //----- (0047EC90) -------------------------------------------------------- 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, _DWORD *a8) { unsigned int v8; // edi _BYTE *v9; // eax unsigned __int16 *v10; // ebx unsigned int v11; // ecx int v12; // eax int v13; // ebp unsigned int v14; // edx int v15; // ecx _BYTE *v17[6]; // [esp+8h] [ebp-18h] BYREF v8 = *(_DWORD *)(this + 12); v9 = a6; v10 = a3; v17[0] = a6; v17[1] = a7; if ( (*(_BYTE *)(this + 16) & 2) != 0 ) { v15 = 1; if ( (unsigned int)(a7 - a6) <= 2 ) goto LABEL_13; a6[2] = -65; *(_WORD *)a6 = -17425; v17[0] = a6 + 3; } v11 = (char *)a4 - (char *)a3; if ( a3 == a4 ) { LABEL_16: v9 = v17[0]; v15 = 0; } else { while ( 1 ) { v14 = *v10; if ( v14 - 55296 <= 0x3FF ) { if ( v11 <= 2 ) goto LABEL_16; v12 = v10[1]; if ( (unsigned int)(v12 - 56320) > 0x3FF || (v13 = 2, v14 = v12 + (v14 << 10) - 56613888, v8 < v14) ) { LABEL_12: v9 = v17[0]; v15 = 2; goto LABEL_13; } } else { if ( v14 - 56320 <= 0x3FF ) goto LABEL_12; v13 = 1; if ( v8 < v14 ) goto LABEL_12; } if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v17, v14) ) break; v10 += v13; v11 = (char *)a4 - (char *)v10; if ( a4 == v10 ) goto LABEL_16; } v9 = v17[0]; v15 = 1; } LABEL_13: *a5 = v10; *a8 = v9; return v15; } //----- (0047EDB0) -------------------------------------------------------- unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length( unsigned int *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned int a5) { return (unsigned __int8 *)(std::`anonymous namespace'::utf16_span(a3, a4, a5, this[3], this[4]) - a3); } //----- (0047EDE0) -------------------------------------------------------- _DWORD *__thiscall std::_V2::error_category::_M_message[abi:cxx11](_DWORD *this, int a2, int a3) { unsigned int v4; // [esp+8h] [ebp-70h] void *Block[2]; // [esp+58h] [ebp-20h] BYREF char v7; // [esp+60h] [ebp-18h] BYREF (*(void (__thiscall **)(void **, int, int))(*(_DWORD *)a2 + 16))(Block, a2, a3); std::__cow_string::__cow_string(this, (std::__cow_string *)Block[0], (size_t)Block[1], v4); if ( Block[0] != &v7 ) operator delete(Block[0]); return this; } // 47EE4C: variable 'v4' is possibly undefined //----- (0047EEB0) -------------------------------------------------------- void *__thiscall std::_V2::error_category::_M_message(void *ecx0, std::_V2::error_category *this, int a3) { int v3; // ecx int v4; // eax unsigned int v6; // [esp+8h] [ebp-60h] char v8[13]; // [esp+5Bh] [ebp-Dh] BYREF (*(void (__thiscall **)(char *, std::_V2::error_category *, int))(*(_DWORD *)this + 12))(&v8[1], this, a3); std::__sso_string::__sso_string((int)ecx0, *(std::__sso_string **)&v8[1], *(_DWORD *)(*(_DWORD *)&v8[1] - 12), v6); v3 = *(_DWORD *)&v8[1]; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v8[1] - 4), 0xFFFFFFFF) > 0 ) return ecx0; LABEL_5: std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v8); return ecx0; } v4 = *(_DWORD *)(*(_DWORD *)&v8[1] - 4); *(_DWORD *)(*(_DWORD *)&v8[1] - 4) = v4 - 1; if ( v4 <= 0 ) goto LABEL_5; return ecx0; } // 47EF1C: variable 'v6' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (0047EFA0) -------------------------------------------------------- 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; } //----- (0047EFC0) -------------------------------------------------------- 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; } // 47EFD4: variable 'v4' is possibly undefined //----- (0047F000) -------------------------------------------------------- std::_V2::error_category *__stdcall std::_V2::error_category::default_error_condition( std::_V2::error_category *this, int a2) { return this; } //----- (0047F010) -------------------------------------------------------- BOOL __thiscall std::map::count(_DWORD *this, int a2) { _DWORD *v2; // esi _DWORD *v3; // ebx _DWORD *i; // edi char v5; // al _DWORD *v6; // edx v2 = this + 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v6 ) { v5 = std::operator<((int)(i + 4), a2); v6 = (_DWORD *)i[3]; if ( !v5 ) v6 = (_DWORD *)i[2]; if ( !v5 ) v3 = i; } if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) v3 = v2; return v2 != v3; } //----- (0047F074) -------------------------------------------------------- BOOL __thiscall std::map::count(_DWORD *this, int a2) { _DWORD *v2; // esi _DWORD *v3; // ebx _DWORD *i; // edi char v5; // al _DWORD *v6; // edx v2 = this + 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v6 ) { v5 = std::operator<((int)(i + 4), a2); v6 = (_DWORD *)i[3]; if ( !v5 ) v6 = (_DWORD *)i[2]; if ( !v5 ) v3 = i; } if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) v3 = v2; return v2 != v3; } //----- (0047F0E0) -------------------------------------------------------- unsigned __int8 *__thiscall std::ctype::do_tolower(_DWORD *this, unsigned __int8 *a2, unsigned __int8 *a3) { unsigned __int8 *v3; // ebx unsigned __int8 v5; // al int (__thiscall *v6)(_DWORD *, int); // edx v3 = a2; if ( a2 < a3 ) { do { while ( 1 ) { v6 = *(int (__thiscall **)(_DWORD *, int))(*this + 16); v5 = *v3; if ( v6 == std::ctype::do_tolower ) break; *v3++ = v6(this, (char)v5); if ( a3 == v3 ) return a3; } if ( (*(_BYTE *)(this[6] + 2 * v5) & 1) != 0 ) v5 += 32; *v3++ = v5; } while ( a3 != v3 ); } return a3; } //----- (0047F150) -------------------------------------------------------- int __thiscall std::ctype::do_tolower(_DWORD *this, int a2) { int result; // eax result = a2; if ( (*(_BYTE *)(this[6] + 2 * (unsigned __int8)a2) & 1) != 0 ) return a2 + 32; return result; } //----- (0047F170) -------------------------------------------------------- unsigned __int8 *__thiscall std::ctype::do_toupper(_DWORD *this, unsigned __int8 *a2, unsigned __int8 *a3) { unsigned __int8 *v3; // ebx unsigned __int8 v5; // al int (__thiscall *v6)(_DWORD *, int); // edx v3 = a2; if ( a2 < a3 ) { do { while ( 1 ) { v6 = *(int (__thiscall **)(_DWORD *, int))(*this + 8); v5 = *v3; if ( v6 == std::ctype::do_toupper ) break; *v3++ = v6(this, (char)v5); if ( a3 == v3 ) return a3; } if ( (*(_BYTE *)(this[6] + 2 * v5) & 2) != 0 ) v5 -= 32; *v3++ = v5; } while ( a3 != v3 ); } return a3; } //----- (0047F1E0) -------------------------------------------------------- int __thiscall std::ctype::do_toupper(_DWORD *this, int a2) { int result; // eax result = a2; if ( (*(_BYTE *)(this[6] + 2 * (unsigned __int8)a2) & 2) != 0 ) return a2 - 32; return result; } //----- (0047F200) -------------------------------------------------------- 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; } // 47F200: using guessed type char var_1C[28]; //----- (0047F2B0) -------------------------------------------------------- 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; } // 47F2B0: using guessed type char var_1C[28]; //----- (0047F3C0) -------------------------------------------------------- _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; } //----- (0047F450) -------------------------------------------------------- int __thiscall std::ctype::narrow(_BYTE *this, int a2, int a3) { int result; // eax int v5; // ecx int (__stdcall *v6)(unsigned __int8, int); // eax result = (unsigned __int8)this[(unsigned __int8)a2 + 285]; if ( !(_BYTE)result ) { v5 = a2; v6 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)this + 32); if ( v6 != std::ctype::do_narrow ) v5 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v6)(this, (char)a2, (char)a3); result = a3; if ( (_BYTE)a3 != (_BYTE)v5 ) { this[(unsigned __int8)a2 + 285] = v5; return v5; } } return result; } //----- (0047F4C0) -------------------------------------------------------- _BYTE *__stdcall std::ctype::do_widen(_BYTE *Src, _BYTE *a2, void *a3) { if ( a2 != Src ) memcpy(a3, Src, a2 - Src); return a2; } //----- (0047F500) -------------------------------------------------------- int __stdcall std::ctype::do_widen(unsigned __int8 a1) { return a1; } //----- (0047F510) -------------------------------------------------------- _BYTE *__stdcall std::ctype::do_narrow(_BYTE *Src, _BYTE *a2, int a3, void *a4) { if ( a2 != Src ) memcpy(a4, Src, a2 - Src); return a2; } //----- (0047F550) -------------------------------------------------------- int __stdcall std::ctype::do_narrow(unsigned __int8 a1, int a2) { return a1; } //----- (0047F560) -------------------------------------------------------- wint_t *__thiscall std::ctype::do_scan_is(_WORD *this, unsigned __int16 a2, wint_t *a3, unsigned int a4) { _WORD *v4; // edi wint_t C; // si int (__thiscall *v6)(_WORD *, unsigned __int16, wint_t); // eax _WORD *v7; // ebp wint_t *v9; // [esp+14h] [ebp-28h] if ( (unsigned int)a3 >= a4 ) return a3; v9 = a3; v4 = this + 343; while ( 1 ) { C = *v9; v6 = *(int (__thiscall **)(_WORD *, unsigned __int16, wint_t))(*(_DWORD *)this + 8); if ( v6 == std::ctype::do_is ) break; if ( (unsigned __int8)v6(this, a2, *v9) ) return v9; LABEL_10: if ( a4 <= (unsigned int)++v9 ) return v9; } v7 = this + 327; while ( (*v7 & a2) == 0 || !iswctype(C, v7[16]) ) { if ( v4 == ++v7 ) goto LABEL_10; } return v9; } //----- (0047F640) -------------------------------------------------------- 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; } //----- (0047F690) -------------------------------------------------------- wint_t __stdcall std::ctype::do_tolower(wint_t C) { return towlower(C); } //----- (0047F6B0) -------------------------------------------------------- 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; } //----- (0047F700) -------------------------------------------------------- wint_t __stdcall std::ctype::do_toupper(wint_t C) { return towupper(C); } //----- (0047F720) -------------------------------------------------------- wint_t *__thiscall std::ctype::do_scan_not(_WORD *this, unsigned __int16 a2, wint_t *a3, unsigned int a4) { _WORD *v4; // ebp wint_t C; // si int (__thiscall *v6)(_WORD *, unsigned __int16, wint_t); // eax _WORD *v7; // edi wint_t *v9; // [esp+14h] [ebp-28h] if ( (unsigned int)a3 >= a4 ) return a3; v9 = a3; v4 = this + 343; do { while ( 1 ) { C = *v9; v6 = *(int (__thiscall **)(_WORD *, unsigned __int16, wint_t))(*(_DWORD *)this + 8); if ( v6 == std::ctype::do_is ) break; if ( (unsigned __int8)v6(this, a2, *v9) ) { if ( a4 > (unsigned int)++v9 ) continue; } return v9; } v7 = this + 327; while ( (*v7 & a2) == 0 || !iswctype(C, v7[16]) ) { if ( v4 == ++v7 ) return v9; } ++v9; } while ( a4 > (unsigned int)v9 ); return v9; } //----- (0047F800) -------------------------------------------------------- int __stdcall std::ctype::_M_convert_to_wmask(unsigned __int16 a1) { int v1; // edx int v3; // eax int v4; // eax 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 if ( a1 > 0x40u ) { switch ( a1 ) { case 0x200u: LOWORD(v13) = wctype("punct"); return v13; case 0x20Cu: LOWORD(v3) = wctype("graph"); return v3; case 0x100u: LOWORD(v4) = wctype("cntrl"); return v4; case 0x400u: LOWORD(v14) = wctype("blank"); return v14; default: return 0; } } else { v1 = 0; if ( a1 ) { switch ( a1 ) { case 1u: LOWORD(v6) = wctype("upper"); v1 = v6; break; case 2u: LOWORD(v7) = wctype("lower"); v1 = v7; break; case 4u: LOWORD(v8) = wctype("alpha"); v1 = v8; break; case 8u: LOWORD(v9) = wctype("digit"); v1 = v9; break; case 0xCu: LOWORD(v10) = wctype("alnum"); v1 = v10; break; case 0x10u: LOWORD(v11) = wctype("xdigit"); v1 = v11; break; case 0x20u: LOWORD(v12) = wctype("space"); v1 = v12; break; case 0x40u: LOWORD(v5) = wctype("print"); v1 = v5; break; default: return 0; } } } return v1; } // 47F854: variable 'v3' is possibly undefined // 47F876: variable 'v4' is possibly undefined // 47F88C: variable 'v5' is possibly undefined // 47F89C: variable 'v6' is possibly undefined // 47F8AC: variable 'v7' is possibly undefined // 47F8C4: variable 'v8' is possibly undefined // 47F8DC: variable 'v9' is possibly undefined // 47F8F4: variable 'v10' is possibly undefined // 47F90C: variable 'v11' is possibly undefined // 47F924: variable 'v12' is possibly undefined // 47F93C: variable 'v13' is possibly undefined // 47F959: variable 'v14' is possibly undefined //----- (0047F960) -------------------------------------------------------- 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 _WORD *v10; // [esp+1Ch] [ebp-20h] v4 = a2; if ( (unsigned int)a2 < a3 ) { v5 = this + 686; v10 = this + 654; do { v6 = v10; v7 = 0; do { if ( iswctype(*v4, v6[16]) ) v7 |= *v6; ++v6; } while ( v6 != v5 ); v8 = a4; ++v4; ++a4; *v8 = v7; } while ( a3 > (unsigned int)v4 ); } return a3; } //----- (0047F9E0) -------------------------------------------------------- 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 ( (*v4 & a2) != 0 && iswctype(C, v4[16]) ) return 1; ++v4; } while ( v4 != v3 ); return 0; } //----- (0047FA50) -------------------------------------------------------- unsigned __int8 *__thiscall std::ctype::do_widen( _WORD *this, unsigned __int8 *a2, unsigned __int8 *a3, int a4) { unsigned __int8 *v4; // eax int v7; // ecx v4 = a2; if ( a2 < a3 ) { do { v7 = *v4++; a4 += 2; *(_WORD *)(a4 - 2) = this[v7 + 71]; } while ( a3 != v4 ); } return a3; } //----- (0047FA90) -------------------------------------------------------- int __thiscall std::ctype::do_widen(unsigned __int16 *this, unsigned __int8 a2) { return this[a2 + 71]; } //----- (0047FAA0) -------------------------------------------------------- unsigned int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t *a2, unsigned int a3, char a4, int a5) { wint_t *v5; // esi int v6; // ebx unsigned int v8; // ebp int v9; // ecx int v10; // eax int v12; // eax v5 = a2; v6 = a5; if ( this[12] ) { if ( (unsigned int)a2 < a3 ) { v8 = a5 + ((a3 - 1 - (unsigned int)a2) >> 1) + 1; do { while ( 1 ) { v9 = *v5; if ( (unsigned __int16)v9 > 0x7Fu ) break; ++v6; ++v5; *(_BYTE *)(v6 - 1) = this[v9 + 13]; if ( v8 == v6 ) return a3; } v10 = wctob(*v5); if ( v10 == -1 ) LOBYTE(v10) = a4; ++v6; ++v5; *(_BYTE *)(v6 - 1) = v10; } while ( v8 != v6 ); } return a3; } if ( (unsigned int)a2 >= a3 ) return a3; do { v12 = wctob(*v5); if ( v12 == -1 ) LOBYTE(v12) = a4; ++v6; ++v5; *(_BYTE *)(v6 - 1) = v12; } while ( v6 != a5 + ((a3 - 1 - (unsigned int)a2) >> 1) + 1 ); return a3; } //----- (0047FB80) -------------------------------------------------------- int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t WCh, int a3) { int result; // eax if ( WCh <= 0x7Fu && this[12] ) return (unsigned __int8)this[WCh + 13]; result = wctob(WCh); if ( result == -1 ) return a3; return result; } //----- (0047FBC0) -------------------------------------------------------- int __fastcall std::locale::id::_M_id(volatile signed __int32 *a1) { int v1; // eax v1 = *a1; if ( *a1 ) return v1 - 1; if ( !_CRT_MT ) { v1 = std::locale::id::_S_refcount + 1; std::locale::id::_S_refcount = v1; *a1 = v1; return v1 - 1; } _InterlockedCompareExchange(a1, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); return *a1 - 1; } // 53E1E4: using guessed type int _CRT_MT; // 53F6EC: using guessed type int std::locale::id::_S_refcount; //----- (0047FC10) -------------------------------------------------------- int __thiscall std::locale::name[abi:cxx11](int this, int a2) { int v2; // eax unsigned int v3; // eax int v4; // eax unsigned int v5; // edx unsigned int v6; // eax int v7; // eax unsigned int v8; // edx unsigned int v9; // eax int v10; // eax unsigned int v11; // edx unsigned int v12; // eax size_t v14; // eax const char *v15; // [esp+0h] [ebp-68h] char *Str; // [esp+14h] [ebp-54h] int v17; // [esp+18h] [ebp-50h] size_t v18; // [esp+1Ch] [ebp-4Ch] size_t v19; // [esp+1Ch] [ebp-4Ch] size_t v20; // [esp+1Ch] [ebp-4Ch] char *Str1; // [esp+20h] [ebp-48h] char *Str1a; // [esp+20h] [ebp-48h] char *Str1b; // [esp+20h] [ebp-48h] char *Str1c; // [esp+20h] [ebp-48h] char *Str1d; // [esp+20h] [ebp-48h] char *Str1e; // [esp+20h] [ebp-48h] struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-44h] struct _Unwind_Exception *lpuexcptb; // [esp+24h] [ebp-44h] int lpuexcptc; // [esp+24h] [ebp-44h] *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = this + 8; *(_BYTE *)(this + 8) = 0; v17 = this + 8; v18 = *(_DWORD *)(*(_DWORD *)a2 + 16); Str = *(char **)v18; if ( *(_DWORD *)v18 ) { if ( *(_DWORD *)(v18 + 4) ) { lpuexcpt = 0; Str1 = *(char **)v18; while ( 1 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v15 = Str1; Str1 = *(char **)(v18 + 4 * (_DWORD)lpuexcpt); v2 = strcmp(v15, Str1); if ( (unsigned int)lpuexcpt > 4 ) break; if ( v2 ) goto LABEL_6; } if ( !v2 ) goto LABEL_26; LABEL_6: std::string::reserve((_DWORD *)this, 0x80u); v3 = strlen(*std::locale::_S_categories); if ( v3 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append((_DWORD *)this, *std::locale::_S_categories, v3); Str1a = *(char **)(this + 4); lpuexcpta = (struct _Unwind_Exception *)(Str1a + 1); v4 = *(_DWORD *)this; if ( v17 == *(_DWORD *)this ) v5 = 15; else v5 = *(_DWORD *)(this + 8); if ( (unsigned int)lpuexcpta > v5 ) { std::string::_M_mutate(this, (size_t)Str1a, 0, 0, 1u); v4 = *(_DWORD *)this; } Str1a[v4] = 61; *(_DWORD *)(this + 4) = lpuexcpta; Str1a[*(_DWORD *)this + 1] = 0; lpuexcptb = **(struct _Unwind_Exception ***)(*(_DWORD *)a2 + 16); v6 = strlen((const char *)lpuexcptb); if ( v6 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append((_DWORD *)this, lpuexcptb, v6); for ( lpuexcptc = 1; lpuexcptc != 6; ++lpuexcptc ) { v19 = *(_DWORD *)(this + 4); Str1b = (char *)(v19 + 1); v7 = *(_DWORD *)this; if ( v17 == *(_DWORD *)this ) v8 = 15; else v8 = *(_DWORD *)(this + 8); if ( (unsigned int)Str1b > v8 ) { std::string::_M_mutate(this, v19, 0, 0, 1u); v7 = *(_DWORD *)this; } *(_BYTE *)(v7 + v19) = 59; *(_DWORD *)(this + 4) = Str1b; *(_BYTE *)(*(_DWORD *)this + v19 + 1) = 0; Str1c = std::locale::_S_categories[lpuexcptc]; v9 = strlen(Str1c); if ( v9 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append((_DWORD *)this, Str1c, v9); v10 = *(_DWORD *)this; v20 = *(_DWORD *)(this + 4); Str1d = (char *)(v20 + 1); if ( v17 == *(_DWORD *)this ) v11 = 15; else v11 = *(_DWORD *)(this + 8); if ( (unsigned int)Str1d > v11 ) { std::string::_M_mutate(this, v20, 0, 0, 1u); v10 = *(_DWORD *)this; } *(_BYTE *)(v10 + v20) = 61; *(_DWORD *)(this + 4) = Str1d; *(_BYTE *)(*(_DWORD *)this + v20 + 1) = 0; Str1e = *(char **)(*(_DWORD *)(*(_DWORD *)a2 + 16) + lpuexcptc * 4); v12 = strlen(Str1e); if ( v12 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append((_DWORD *)this, Str1e, v12); } } else { LABEL_26: v14 = strlen(Str); std::string::_M_replace((unsigned int *)this, 0, 0, Str, v14); } } else { std::string::_M_replace_aux((_DWORD *)this, 0, 0, 1u, 42); } return this; } // 55AF6C: using guessed type char **std::locale::_S_categories; //----- (004800B0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int *__thiscall std::locale::name(int *ecx0, std::locale *this) { _DWORD *v2; // eax int v3; // edx int v4; // eax size_t v5; // eax int v6; // eax size_t v7; // eax int v8; // eax size_t v9; // eax int v10; // eax size_t v11; // eax size_t v13; // eax const char *v14; // [esp-4h] [ebp-7Ch] unsigned int v15; // [esp+0h] [ebp-78h] unsigned int v16; // [esp+0h] [ebp-78h] unsigned int v17; // [esp+0h] [ebp-78h] unsigned int v18; // [esp+0h] [ebp-78h] unsigned int v19; // [esp+4h] [ebp-74h] unsigned int v20; // [esp+4h] [ebp-74h] unsigned int v21; // [esp+4h] [ebp-74h] char v22; // [esp+Ch] [ebp-6Ch] char *Str; // [esp+18h] [ebp-60h] int v24; // [esp+1Ch] [ebp-5Ch] int v25; // [esp+1Ch] [ebp-5Ch] int v26; // [esp+1Ch] [ebp-5Ch] char *Str1; // [esp+20h] [ebp-58h] char *Str1a; // [esp+20h] [ebp-58h] char *Str1b; // [esp+20h] [ebp-58h] char *Str1d; // [esp+20h] [ebp-58h] char *Str1c; // [esp+20h] [ebp-58h] char *Str1e; // [esp+20h] [ebp-58h] struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-54h] struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-54h] struct _Unwind_Exception *lpuexcptc; // [esp+24h] [ebp-54h] int lpuexcptb; // [esp+24h] [ebp-54h] unsigned int v38[2]; // [esp+6Fh] [ebp-9h] BYREF v2 = std::string::_S_construct(0, 0); v3 = *(_DWORD *)this; *ecx0 = (int)v2; v24 = *(_DWORD *)(v3 + 16); Str = *(char **)v24; if ( *(_DWORD *)v24 ) { if ( *(_DWORD *)(v24 + 4) ) { lpuexcpt = 0; Str1 = *(char **)v24; while ( 1 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v14 = Str1; Str1 = *(char **)(v24 + 4 * (_DWORD)lpuexcpt); v4 = strcmp(v14, Str1); if ( (unsigned int)lpuexcpt > 4 ) break; if ( v4 ) goto LABEL_6; } if ( !v4 ) goto LABEL_19; LABEL_6: std::string::reserve(ecx0, (std::string *)0x80, v15); v5 = strlen(*std::locale::_S_categories); std::string::append(ecx0, (std::string *)*std::locale::_S_categories, v5, (unsigned int)v38); Str1a = *(char **)(*ecx0 - 12); lpuexcpta = (struct _Unwind_Exception *)(Str1a + 1); if ( (unsigned int)(Str1a + 1) > *(_DWORD *)(*ecx0 - 8) || *(int *)(*ecx0 - 4) > 0 ) std::string::reserve(ecx0, lpuexcpta, v16); *(_BYTE *)(*ecx0 + *(_DWORD *)(*ecx0 - 12)) = 61; v6 = *ecx0; *(_DWORD *)(v6 - 12) = lpuexcpta; *(_DWORD *)(v6 - 4) = 0; Str1a[v6 + 1] = 0; lpuexcptc = **(struct _Unwind_Exception ***)(*(_DWORD *)this + 16); v7 = strlen((const char *)lpuexcptc); std::string::append(ecx0, lpuexcptc, v7, v19); for ( lpuexcptb = 1; lpuexcptb != 6; ++lpuexcptb ) { v25 = *(_DWORD *)(*ecx0 - 12); Str1b = (char *)(v25 + 1); if ( (unsigned int)(v25 + 1) > *(_DWORD *)(*ecx0 - 8) || *(int *)(*ecx0 - 4) > 0 ) std::string::reserve(ecx0, (std::string *)Str1b, v17); *(_BYTE *)(*ecx0 + *(_DWORD *)(*ecx0 - 12)) = 59; v8 = *ecx0; *(_DWORD *)(v8 - 12) = Str1b; *(_DWORD *)(v8 - 4) = 0; *(_BYTE *)(v8 + v25 + 1) = 0; Str1d = std::locale::_S_categories[lpuexcptb]; v9 = strlen(Str1d); std::string::append(ecx0, (std::string *)Str1d, v9, v20); v26 = *(_DWORD *)(*ecx0 - 12); Str1c = (char *)(v26 + 1); if ( (unsigned int)(v26 + 1) > *(_DWORD *)(*ecx0 - 8) || *(int *)(*ecx0 - 4) > 0 ) std::string::reserve(ecx0, (std::string *)Str1c, v18); *(_BYTE *)(*ecx0 + *(_DWORD *)(*ecx0 - 12)) = 61; v10 = *ecx0; *(_DWORD *)(v10 - 12) = Str1c; *(_DWORD *)(v10 - 4) = 0; *(_BYTE *)(v10 + v26 + 1) = 0; Str1e = *(char **)(*(_DWORD *)(*(_DWORD *)this + 16) + lpuexcptb * 4); v11 = strlen(Str1e); std::string::append(ecx0, (std::string *)Str1e, v11, v21); } } else { LABEL_19: v13 = strlen(Str); std::string::assign((char **)ecx0, (std::string *)Str, v13, (unsigned int)v38); } } else { std::string::_M_replace_aux((char **)ecx0, 0, *(v2 - 3), 1u, 42, v22); } return ecx0; } // 480406: positive sp value 4 has been found // 48017E: variable 'v15' is possibly undefined // 4801DB: variable 'v16' is possibly undefined // 48022F: variable 'v19' is possibly undefined // 48026B: variable 'v17' is possibly undefined // 4802C0: variable 'v20' is possibly undefined // 4802F5: variable 'v18' is possibly undefined // 48034D: variable 'v21' is possibly undefined // 4803E0: variable 'v22' is possibly undefined // 55AF6C: using guessed type char **std::locale::_S_categories; //----- (00480420) -------------------------------------------------------- _DWORD *__userpurge std::locale::facet::_M_cow_shim@( volatile signed __int32 *a1@, std::locale::facet *this, const std::locale::id *a3) { void *v3; // eax _WORD *v5; // eax _DWORD *v6; // eax int v7; // ecx _DWORD *v8; // eax _DWORD *v9; // eax _DWORD *v10; // eax int c_locale; // eax int v12; // edx _DWORD *v13; // eax _DWORD *v14; // eax _WORD *v15; // eax _DWORD *v16; // eax int v17; // ecx _WORD *v18; // eax _DWORD *v19; // eax int v20; // ecx int v21; // edx _DWORD *v22; // eax _DWORD *v23; // eax _DWORD *v24; // eax _DWORD *v25; // eax _DWORD *v26; // eax _DWORD *v27; // eax _DWORD *v28; // eax int v29; // ecx _DWORD *v30; // eax _DWORD *v31; // eax int v32; // edx int v33; // [esp+0h] [ebp-78h] int v34; // [esp+0h] [ebp-78h] int v35; // [esp+0h] [ebp-78h] int v36; // [esp+0h] [ebp-78h] int v37; // [esp+0h] [ebp-78h] int v38; // [esp+0h] [ebp-78h] int v39; // [esp+30h] [ebp-48h] int v40; // [esp+30h] [ebp-48h] int v41; // [esp+30h] [ebp-48h] int v42; // [esp+30h] [ebp-48h] int v43; // [esp+30h] [ebp-48h] int v44; // [esp+30h] [ebp-48h] _DWORD *Block; // [esp+34h] [ebp-44h] v3 = __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 ( v3 ) return *(_DWORD **)v3; if ( this == (std::locale::facet *)&std::numpunct::id ) { v5 = operator new(0x68u); v5[18] = 0; *((_DWORD *)v5 + 1) = 0; *(_DWORD *)v5 = &off_5605B0; *((_DWORD *)v5 + 2) = 0; *((_DWORD *)v5 + 3) = 0; *((_BYTE *)v5 + 16) = 0; *((_DWORD *)v5 + 5) = 0; *((_DWORD *)v5 + 6) = 0; *((_DWORD *)v5 + 7) = 0; *((_DWORD *)v5 + 8) = 0; *((_BYTE *)v5 + 100) = 0; v39 = (int)v5; v6 = operator new(0x14u); v6[1] = 0; *v6 = &off_560D4C; Block = v6; v6[2] = v39; std::numpunct::_M_initialize_numpunct(v6, 0); v7 = _CRT_MT; Block[3] = a1; if ( v7 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F450; Block[4] = v39; LOBYTE(v33) = 0; std::__facet_shims::__numpunct_fill_cache(v33, (int *)a1, v39); } else if ( this == (std::locale::facet *)&std::collate::id ) { v10 = operator new(0x10u); v10[1] = 0; *v10 = &off_560BE0; Block = v10; c_locale = std::locale::facet::_S_get_c_locale(); v12 = _CRT_MT; Block[2] = c_locale; Block[3] = a1; if ( v12 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F370; } else if ( this == (std::locale::facet *)&std::time_get>::id ) { v8 = operator new(0xCu); Block = v8; v8[1] = 0; *v8 = &off_560D94; v8[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v8 = &off_55F4E0; } else if ( this == (std::locale::facet *)&std::money_get>::id ) { v13 = operator new(0xCu); Block = v13; v13[1] = 0; *v13 = &off_560E54; v13[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v13 = &off_55F588; } else if ( this == (std::locale::facet *)&std::money_put>::id ) { v14 = operator new(0xCu); Block = v14; v14[1] = 0; *v14 = &off_560E84; v14[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v14 = &off_55F5E8; } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v15 = operator new(0x44u); v15[8] = 0; *(_DWORD *)v15 = &off_5606E4; *((_DWORD *)v15 + 1) = 0; *((_DWORD *)v15 + 2) = 0; *((_DWORD *)v15 + 3) = 0; *((_BYTE *)v15 + 18) = 0; *((_DWORD *)v15 + 5) = 0; *((_DWORD *)v15 + 6) = 0; *((_DWORD *)v15 + 7) = 0; *((_DWORD *)v15 + 8) = 0; *((_DWORD *)v15 + 9) = 0; *((_DWORD *)v15 + 10) = 0; *((_DWORD *)v15 + 11) = 0; *((_DWORD *)v15 + 12) = 0; *((_DWORD *)v15 + 13) = 0; *((_BYTE *)v15 + 67) = 0; v40 = (int)v15; v16 = operator new(0x14u); v16[1] = 0; *v16 = &off_55FED4; Block = v16; v16[2] = v40; std::moneypunct::_M_initialize_moneypunct(v16, 0, 0); v17 = _CRT_MT; Block[3] = a1; if ( v17 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F6B0; Block[4] = v40; LOBYTE(v34) = 0; std::__facet_shims::__moneypunct_fill_cache(v34, (int *)a1, v40); } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v18 = operator new(0x44u); v18[8] = 0; *(_DWORD *)v18 = &off_5606D4; *((_DWORD *)v18 + 1) = 0; *((_DWORD *)v18 + 2) = 0; *((_DWORD *)v18 + 3) = 0; *((_BYTE *)v18 + 18) = 0; *((_DWORD *)v18 + 5) = 0; *((_DWORD *)v18 + 6) = 0; *((_DWORD *)v18 + 7) = 0; *((_DWORD *)v18 + 8) = 0; *((_DWORD *)v18 + 9) = 0; *((_DWORD *)v18 + 10) = 0; *((_DWORD *)v18 + 11) = 0; *((_DWORD *)v18 + 12) = 0; *((_DWORD *)v18 + 13) = 0; *((_BYTE *)v18 + 67) = 0; v41 = (int)v18; v19 = operator new(0x14u); v19[1] = 0; *v19 = &off_55FEA0; Block = v19; v19[2] = v41; std::moneypunct::_M_initialize_moneypunct(v19, 0, 0); v20 = _CRT_MT; Block[3] = a1; if ( v20 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F648; Block[4] = v41; LOBYTE(v35) = 0; std::__facet_shims::__moneypunct_fill_cache(v35, (int *)a1, v41); } else if ( this == (std::locale::facet *)&std::messages::id ) { Block = operator new(0x14u); std::messages::messages(Block, 0); v21 = _CRT_MT; Block[4] = a1; if ( v21 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F3E0; } else if ( this == (std::locale::facet *)&std::numpunct::id ) { v22 = operator new(0xA8u); v22[1] = 0; *v22 = &off_5605C0; v22[2] = 0; v22[3] = 0; *((_BYTE *)v22 + 16) = 0; v22[5] = 0; v22[6] = 0; v22[7] = 0; v22[8] = 0; v22[9] = 0; *((_BYTE *)v22 + 164) = 0; v42 = (int)v22; v23 = operator new(0x14u); v23[1] = 0; *v23 = &off_560D70; Block = v23; v23[2] = v42; std::numpunct::_M_initialize_numpunct(v23, 0); Block[3] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F498; Block[4] = v42; LOBYTE(v36) = 0; std::__facet_shims::__numpunct_fill_cache(v36, (int *)a1, v42); } else if ( this == (std::locale::facet *)&std::collate::id ) { v9 = operator new(0x10u); v9[1] = 0; *v9 = &off_560BFC; Block = v9; v9[2] = std::locale::facet::_S_get_c_locale(); Block[3] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F3A8; } else if ( this == (std::locale::facet *)&std::time_get>::id ) { v24 = operator new(0xCu); Block = v24; v24[1] = 0; *v24 = &off_560DBC; v24[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v24 = &off_55F534; } else if ( this == (std::locale::facet *)&std::money_get>::id ) { v25 = operator new(0xCu); Block = v25; v25[1] = 0; *v25 = &off_560E6C; v25[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v25 = &off_55F5B8; } else if ( this == (std::locale::facet *)std::money_put>::id ) { v26 = operator new(0xCu); Block = v26; v26[1] = 0; *v26 = &off_560E9C; v26[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v26 = &off_55F618; } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v27 = operator new(0x54u); v27[1] = 0; *v27 = &off_560704; v27[2] = 0; v27[3] = 0; *((_BYTE *)v27 + 16) = 0; *(_DWORD *)((char *)v27 + 18) = 0; v27[6] = 0; v27[7] = 0; v27[8] = 0; v27[9] = 0; v27[10] = 0; v27[11] = 0; v27[12] = 0; v27[13] = 0; v27[14] = 0; *((_BYTE *)v27 + 82) = 0; v43 = (int)v27; v28 = operator new(0x14u); v28[1] = 0; *v28 = &off_55FF3C; Block = v28; v28[2] = v43; std::moneypunct::_M_initialize_moneypunct(v28, 0, 0); v29 = _CRT_MT; Block[3] = a1; if ( v29 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F780; Block[4] = v43; LOBYTE(v37) = 0; std::__facet_shims::__moneypunct_fill_cache(v37, (int *)a1, v43); } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v30 = operator new(0x54u); v30[1] = 0; *v30 = &off_5606F4; v30[2] = 0; v30[3] = 0; *((_BYTE *)v30 + 16) = 0; *(_DWORD *)((char *)v30 + 18) = 0; v30[6] = 0; v30[7] = 0; v30[8] = 0; v30[9] = 0; v30[10] = 0; v30[11] = 0; v30[12] = 0; v30[13] = 0; v30[14] = 0; *((_BYTE *)v30 + 82) = 0; v44 = (int)v30; v31 = operator new(0x14u); v31[1] = 0; *v31 = &off_55FF08; Block = v31; v31[2] = v44; std::moneypunct::_M_initialize_moneypunct(v31, 0, 0); v32 = _CRT_MT; Block[3] = a1; if ( v32 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F718; Block[4] = v44; LOBYTE(v38) = 0; std::__facet_shims::__moneypunct_fill_cache(v38, (int *)a1, v44); } else { if ( this != (std::locale::facet *)&std::messages::id ) std::__throw_logic_error((std::logic_error *)"cannot create shim for unknown locale::facet"); Block = operator new(0x14u); std::messages::messages(Block, 0); Block[4] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F418; } return Block; } // 48069D: variable 'v33' is possibly undefined // 480978: variable 'v34' is possibly undefined // 480A90: variable 'v35' is possibly undefined // 480BDE: variable 'v36' is possibly undefined // 480DFA: variable 'v37' is possibly undefined // 480F18: variable 'v38' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53F58C: using guessed type signed __int32 std::moneypunct::id; // 53F590: using guessed type signed __int32 std::moneypunct::id; // 53F594: using guessed type signed __int32 std::moneypunct::id; // 53F598: using guessed type signed __int32 std::moneypunct::id; // 53F760: using guessed type signed __int32 std::collate::id; // 53F764: using guessed type signed __int32 std::collate::id; // 53F780: using guessed type signed __int32 std::messages::id; // 53F784: using guessed type signed __int32 std::messages::id; // 53F788: using guessed type signed __int32 std::numpunct::id; // 53F78C: using guessed type signed __int32 std::numpunct::id; // 53F790: using guessed type signed __int32 std::time_get>::id; // 53F794: using guessed type signed __int32 std::time_get>::id; // 53F7A0: using guessed type signed __int32 std::money_get>::id; // 53F7A4: using guessed type signed __int32 std::money_get>::id; // 53F7A8: using guessed type signed __int32 std::money_put>::id; // 53F7AC: using guessed type signed __int32 std::money_put>::id[5]; // 55BB08: using guessed type int *`typeinfo for'std::locale::facet::__shim; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55F370: using guessed type int (*off_55F370)(); // 55F3A8: using guessed type int (*off_55F3A8)(); // 55F3E0: using guessed type int (*off_55F3E0)(); // 55F418: using guessed type int (*off_55F418)(); // 55F450: using guessed type int (*off_55F450)(); // 55F498: using guessed type int (*off_55F498)(); // 55F4E0: using guessed type int (*off_55F4E0)(); // 55F534: using guessed type int (*off_55F534)(); // 55F588: using guessed type int (*off_55F588)(); // 55F5B8: using guessed type int (*off_55F5B8)(); // 55F5E8: using guessed type int (*off_55F5E8)(); // 55F618: using guessed type int (*off_55F618)(); // 55F648: using guessed type int (*off_55F648)(); // 55F6B0: using guessed type int (*off_55F6B0)(); // 55F718: using guessed type int (*off_55F718)(); // 55F780: using guessed type int (*off_55F780)(); // 55FEA0: using guessed type int (*off_55FEA0)(); // 55FED4: using guessed type int (*off_55FED4)(); // 55FF08: using guessed type int (*off_55FF08)(); // 55FF3C: using guessed type int (*off_55FF3C)(); // 5605B0: using guessed type int (*off_5605B0)(); // 5605C0: using guessed type int (*off_5605C0)(); // 5606D4: using guessed type int (*off_5606D4)(); // 5606E4: using guessed type int (*off_5606E4)(); // 5606F4: using guessed type int (*off_5606F4)(); // 560704: using guessed type int (*off_560704)(); // 560BE0: using guessed type int (*off_560BE0)(); // 560BFC: using guessed type int (*off_560BFC)(); // 560D4C: using guessed type int (*off_560D4C)(); // 560D70: using guessed type int (*off_560D70)(); // 560D94: using guessed type int (*off_560D94)(); // 560DBC: using guessed type int (*off_560DBC)(); // 560E54: using guessed type int (*off_560E54)(); // 560E6C: using guessed type int (*off_560E6C)(); // 560E84: using guessed type int (*off_560E84)(); // 560E9C: using guessed type int (*off_560E9C)(); //----- (004810C0) -------------------------------------------------------- _DWORD *__userpurge std::locale::facet::_M_sso_shim@( volatile signed __int32 *a1@, std::locale::facet *this, const std::locale::id *a3) { void *v3; // eax _WORD *v5; // eax _DWORD *v6; // eax int v7; // ecx _DWORD *v8; // eax _DWORD *v9; // eax _DWORD *v10; // eax int c_locale; // eax int v12; // edx _DWORD *v13; // eax _DWORD *v14; // eax _WORD *v15; // eax _DWORD *v16; // eax int v17; // ecx _WORD *v18; // eax _DWORD *v19; // eax int v20; // ecx int v21; // edx _DWORD *v22; // eax _DWORD *v23; // eax _DWORD *v24; // eax _DWORD *v25; // eax _DWORD *v26; // eax _DWORD *v27; // eax _DWORD *v28; // eax int v29; // ecx _DWORD *v30; // eax _DWORD *v31; // eax int v32; // edx int v33; // [esp+0h] [ebp-78h] int v34; // [esp+0h] [ebp-78h] int v35; // [esp+0h] [ebp-78h] int v36; // [esp+0h] [ebp-78h] int v37; // [esp+0h] [ebp-78h] int v38; // [esp+0h] [ebp-78h] int v39; // [esp+30h] [ebp-48h] int v40; // [esp+30h] [ebp-48h] int v41; // [esp+30h] [ebp-48h] int v42; // [esp+30h] [ebp-48h] int v43; // [esp+30h] [ebp-48h] int v44; // [esp+30h] [ebp-48h] _DWORD *Block; // [esp+34h] [ebp-44h] v3 = __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 ( v3 ) return *(_DWORD **)v3; if ( this == (std::locale::facet *)&std::numpunct::id ) { v5 = operator new(0x68u); v5[18] = 0; *((_DWORD *)v5 + 1) = 0; *(_DWORD *)v5 = &off_5605B0; *((_DWORD *)v5 + 2) = 0; *((_DWORD *)v5 + 3) = 0; *((_BYTE *)v5 + 16) = 0; *((_DWORD *)v5 + 5) = 0; *((_DWORD *)v5 + 6) = 0; *((_DWORD *)v5 + 7) = 0; *((_DWORD *)v5 + 8) = 0; *((_BYTE *)v5 + 100) = 0; v39 = (int)v5; v6 = operator new(0x14u); v6[1] = 0; *v6 = &off_55FCD8; Block = v6; v6[2] = v39; std::numpunct::_M_initialize_numpunct(v6, 0); v7 = _CRT_MT; Block[3] = a1; if ( v7 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F474; Block[4] = v39; LOBYTE(v33) = 0; std::__facet_shims::__numpunct_fill_cache(v33, (int *)a1, v39); } else if ( this == (std::locale::facet *)&std::collate::id ) { v10 = operator new(0x10u); v10[1] = 0; *v10 = &off_55FC68; Block = v10; c_locale = std::locale::facet::_S_get_c_locale(); v12 = _CRT_MT; Block[2] = c_locale; Block[3] = a1; if ( v12 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F38C; } else if ( this == (std::locale::facet *)&std::time_get>::id ) { v8 = operator new(0xCu); Block = v8; v8[1] = 0; *v8 = &off_55FD20; v8[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v8 = &off_55F508; } else if ( this == (std::locale::facet *)&std::money_get>::id ) { v13 = operator new(0xCu); Block = v13; v13[1] = 0; *v13 = &off_55FD78; v13[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v13 = &off_55F5A0; } else if ( this == (std::locale::facet *)&std::money_put>::id ) { v14 = operator new(0xCu); Block = v14; v14[1] = 0; *v14 = &off_55FDA8; v14[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v14 = &off_55F600; } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v15 = operator new(0x44u); v15[8] = 0; *(_DWORD *)v15 = &off_5606E4; *((_DWORD *)v15 + 1) = 0; *((_DWORD *)v15 + 2) = 0; *((_DWORD *)v15 + 3) = 0; *((_BYTE *)v15 + 18) = 0; *((_DWORD *)v15 + 5) = 0; *((_DWORD *)v15 + 6) = 0; *((_DWORD *)v15 + 7) = 0; *((_DWORD *)v15 + 8) = 0; *((_DWORD *)v15 + 9) = 0; *((_DWORD *)v15 + 10) = 0; *((_DWORD *)v15 + 11) = 0; *((_DWORD *)v15 + 12) = 0; *((_DWORD *)v15 + 13) = 0; *((_BYTE *)v15 + 67) = 0; v40 = (int)v15; v16 = operator new(0x14u); v16[1] = 0; *v16 = &off_55F854; Block = v16; v16[2] = v40; std::moneypunct::_M_initialize_moneypunct(v16, 0, 0); v17 = _CRT_MT; Block[3] = a1; if ( v17 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F6E4; Block[4] = v40; LOBYTE(v34) = 0; std::__facet_shims::__moneypunct_fill_cache(v34, (int *)a1, v40); } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v18 = operator new(0x44u); v18[8] = 0; *(_DWORD *)v18 = &off_5606D4; *((_DWORD *)v18 + 1) = 0; *((_DWORD *)v18 + 2) = 0; *((_DWORD *)v18 + 3) = 0; *((_BYTE *)v18 + 18) = 0; *((_DWORD *)v18 + 5) = 0; *((_DWORD *)v18 + 6) = 0; *((_DWORD *)v18 + 7) = 0; *((_DWORD *)v18 + 8) = 0; *((_DWORD *)v18 + 9) = 0; *((_DWORD *)v18 + 10) = 0; *((_DWORD *)v18 + 11) = 0; *((_DWORD *)v18 + 12) = 0; *((_DWORD *)v18 + 13) = 0; *((_BYTE *)v18 + 67) = 0; v41 = (int)v18; v19 = operator new(0x14u); v19[1] = 0; *v19 = &off_55F820; Block = v19; v19[2] = v41; std::moneypunct::_M_initialize_moneypunct(v19, 0, 0); v20 = _CRT_MT; Block[3] = a1; if ( v20 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F67C; Block[4] = v41; LOBYTE(v35) = 0; std::__facet_shims::__moneypunct_fill_cache(v35, (int *)a1, v41); } else if ( this == (std::locale::facet *)&std::messages::id ) { Block = operator new(0x14u); std::messages::messages(Block, 0); v21 = _CRT_MT; Block[4] = a1; if ( v21 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F3FC; } else if ( this == (std::locale::facet *)&std::numpunct::id ) { v22 = operator new(0xA8u); v22[1] = 0; *v22 = &off_5605C0; v22[2] = 0; v22[3] = 0; *((_BYTE *)v22 + 16) = 0; v22[5] = 0; v22[6] = 0; v22[7] = 0; v22[8] = 0; v22[9] = 0; *((_BYTE *)v22 + 164) = 0; v42 = (int)v22; v23 = operator new(0x14u); v23[1] = 0; *v23 = &off_55FCFC; Block = v23; v23[2] = v42; std::numpunct::_M_initialize_numpunct(v23, 0); Block[3] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F4BC; Block[4] = v42; LOBYTE(v36) = 0; std::__facet_shims::__numpunct_fill_cache(v36, (int *)a1, v42); } else if ( this == (std::locale::facet *)&std::collate::id ) { v9 = operator new(0x10u); v9[1] = 0; *v9 = &off_55FC84; Block = v9; v9[2] = std::locale::facet::_S_get_c_locale(); Block[3] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F3C4; } else if ( this == (std::locale::facet *)&std::time_get>::id ) { v24 = operator new(0xCu); Block = v24; v24[1] = 0; *v24 = &off_55FD4C; v24[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v24 = &off_55F55C; } else if ( this == (std::locale::facet *)&std::money_get>::id ) { v25 = operator new(0xCu); Block = v25; v25[1] = 0; *v25 = &off_55FD90; v25[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v25 = &off_55F5D0; } else if ( this == (std::locale::facet *)&std::money_put>::id ) { v26 = operator new(0xCu); Block = v26; v26[1] = 0; *v26 = &off_55FDC0; v26[2] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *v26 = &off_55F630; } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v27 = operator new(0x54u); v27[1] = 0; *v27 = &off_560704; v27[2] = 0; v27[3] = 0; *((_BYTE *)v27 + 16) = 0; *(_DWORD *)((char *)v27 + 18) = 0; v27[6] = 0; v27[7] = 0; v27[8] = 0; v27[9] = 0; v27[10] = 0; v27[11] = 0; v27[12] = 0; v27[13] = 0; v27[14] = 0; *((_BYTE *)v27 + 82) = 0; v43 = (int)v27; v28 = operator new(0x14u); v28[1] = 0; *v28 = &off_55F8BC; Block = v28; v28[2] = v43; std::moneypunct::_M_initialize_moneypunct(v28, 0, 0); v29 = _CRT_MT; Block[3] = a1; if ( v29 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F7B4; Block[4] = v43; LOBYTE(v37) = 0; std::__facet_shims::__moneypunct_fill_cache(v37, (int *)a1, v43); } else if ( this == (std::locale::facet *)&std::moneypunct::id ) { v30 = operator new(0x54u); v30[1] = 0; *v30 = &off_5606F4; v30[2] = 0; v30[3] = 0; *((_BYTE *)v30 + 16) = 0; *(_DWORD *)((char *)v30 + 18) = 0; v30[6] = 0; v30[7] = 0; v30[8] = 0; v30[9] = 0; v30[10] = 0; v30[11] = 0; v30[12] = 0; v30[13] = 0; v30[14] = 0; *((_BYTE *)v30 + 82) = 0; v44 = (int)v30; v31 = operator new(0x14u); v31[1] = 0; *v31 = &off_55F888; Block = v31; v31[2] = v44; std::moneypunct::_M_initialize_moneypunct(v31, 0, 0); v32 = _CRT_MT; Block[3] = a1; if ( v32 ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F74C; Block[4] = v44; LOBYTE(v38) = 0; std::__facet_shims::__moneypunct_fill_cache(v38, (int *)a1, v44); } else { if ( this != (std::locale::facet *)&std::messages::id ) std::__throw_logic_error((std::logic_error *)"cannot create shim for unknown locale::facet"); Block = operator new(0x14u); std::messages::messages(Block, 0); Block[4] = a1; if ( _CRT_MT ) _InterlockedAdd(a1 + 1, 1u); else ++*((_DWORD *)a1 + 1); *Block = &off_55F434; } return Block; } // 48133D: variable 'v33' is possibly undefined // 481618: variable 'v34' is possibly undefined // 481730: variable 'v35' is possibly undefined // 48187E: variable 'v36' is possibly undefined // 481A9A: variable 'v37' is possibly undefined // 481BB8: variable 'v38' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55BB08: using guessed type int *`typeinfo for'std::locale::facet::__shim; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55F38C: using guessed type int (*off_55F38C)(); // 55F3C4: using guessed type int (*off_55F3C4)(); // 55F3FC: using guessed type int (*off_55F3FC)(); // 55F434: using guessed type int (*off_55F434)(); // 55F474: using guessed type int (*off_55F474)(); // 55F4BC: using guessed type int (*off_55F4BC)(); // 55F508: using guessed type int (*off_55F508)(); // 55F55C: using guessed type int (*off_55F55C)(); // 55F5A0: using guessed type int (*off_55F5A0)(); // 55F5D0: using guessed type int (*off_55F5D0)(); // 55F600: using guessed type int (*off_55F600)(); // 55F630: using guessed type int (*off_55F630)(); // 55F67C: using guessed type int (*off_55F67C)(); // 55F6E4: using guessed type int (*off_55F6E4)(); // 55F74C: using guessed type int (*off_55F74C)(); // 55F7B4: using guessed type int (*off_55F7B4)(); // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FC68: using guessed type int (*off_55FC68)(); // 55FC84: using guessed type int (*off_55FC84)(); // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FD20: using guessed type int (*off_55FD20)(); // 55FD4C: using guessed type int (*off_55FD4C)(); // 55FD78: using guessed type int (*off_55FD78)(); // 55FD90: using guessed type int (*off_55FD90)(); // 55FDA8: using guessed type int (*off_55FDA8)(); // 55FDC0: using guessed type int (*off_55FDC0)(); // 5605B0: using guessed type int (*off_5605B0)(); // 5605C0: using guessed type int (*off_5605C0)(); // 5606D4: using guessed type int (*off_5606D4)(); // 5606E4: using guessed type int (*off_5606E4)(); // 5606F4: using guessed type int (*off_5606F4)(); // 560704: using guessed type int (*off_560704)(); //----- (00481D60) -------------------------------------------------------- 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; } // 53E1E4: using guessed type int _CRT_MT; //----- (00481DA0) -------------------------------------------------------- BOOL __thiscall std::locale::operator==(void *this, int a2) { const char **v2; // ecx const char **Block; // [esp+10h] [ebp-78h] char *Blocka; // [esp+10h] [ebp-78h] const char **v6; // [esp+14h] [ebp-74h] char *v7; // [esp+14h] [ebp-74h] bool lpuexcpta; // [esp+18h] [ebp-70h] char *v10; // [esp+50h] [ebp-38h] BYREF size_t Size; // [esp+54h] [ebp-34h] char v12; // [esp+58h] [ebp-30h] BYREF void *Buf2[2]; // [esp+68h] [ebp-20h] BYREF char v14; // [esp+70h] [ebp-18h] BYREF if ( *(_DWORD *)this == *(_DWORD *)a2 ) return 1; v6 = *(const char ***)(*(_DWORD *)this + 16); if ( *v6 && (v2 = *(const char ***)(*(_DWORD *)a2 + 16), Block = v2, *v2) && !strcmp(*v6, *v2) ) { if ( !v6[1] && !Block[1] ) return 1; std::locale::name[abi:cxx11]((int)Buf2, a2); std::locale::name[abi:cxx11]((int)&v10, (int)this); lpuexcpta = 0; Blocka = v10; v7 = (char *)Buf2[0]; if ( (void *)Size == Buf2[1] ) { lpuexcpta = 1; if ( Size ) lpuexcpta = memcmp(v10, Buf2[0], Size) == 0; } if ( Blocka != &v12 ) { operator delete(Blocka); v7 = (char *)Buf2[0]; } if ( v7 != &v14 ) operator delete(v7); } else { return 0; } return lpuexcpta; } //----- (00481F60) -------------------------------------------------------- unsigned int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3) { int v3; // ebx unsigned int v4; // edx unsigned int v5; // eax int v6; // ecx bool v7; // cf unsigned int v8; // eax v3 = 89478485; v4 = a2; v5 = -1431655765 * ((this[1] - *this) >> 3); if ( 89478485 - v5 < a2 ) std::__throw_length_error(a3); v6 = 89478485; if ( a2 < v5 ) v4 = v5; v7 = __CFADD__(v4, v5); v8 = v4 + v5; if ( !v7 ) { if ( v8 <= 0x5555555 ) return v8; return v3; } return v6; } //----- (00481FB4) -------------------------------------------------------- unsigned int __thiscall std::vector::_M_check_len( _DWORD *this, unsigned int a2, std::length_error *a3) { int v3; // ebx unsigned int v4; // eax unsigned int v5; // edx int v6; // ecx bool v7; // cf unsigned int v8; // eax v3 = 0x1FFFFFFF; v4 = (this[1] - *this) >> 2; v5 = a2; if ( 0x1FFFFFFF - v4 < a2 ) std::__throw_length_error(a3); v6 = 0x1FFFFFFF; if ( a2 < v4 ) v5 = v4; v7 = __CFADD__(v5, v4); v8 = v5 + v4; if ( !v7 ) { if ( v8 <= 0x1FFFFFFF ) return v8; return v3; } return v6; } //----- (00482000) -------------------------------------------------------- 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(); } //----- (00482020) -------------------------------------------------------- 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(); } //----- (00482040) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) { Str = *(char **)(a2[2] + 20); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, Str, v5, v7); return this; } else { v3(a2); return this; } } // 482084: variable 'v7' is possibly undefined //----- (004820C0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) { void *v2; // ebp const char *Str; // edi size_t v5; // eax size_t Size; // esi void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 4820C0: using guessed type size_t var_20[8]; //----- (00482170) -------------------------------------------------------- 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(); } //----- (00482190) -------------------------------------------------------- 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(); } //----- (004821B0) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (004821C0) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (004821D0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) { Str = *(char **)(a2[2] + 36); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, Str, v5, v7); return this; } else { v3(a2); return this; } } // 482214: variable 'v7' is possibly undefined //----- (00482250) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) { Str = *(char **)(a2[2] + 28); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, Str, v5, v7); return this; } else { v3(a2); return this; } } // 482294: variable 'v7' is possibly undefined //----- (004822D0) -------------------------------------------------------- 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(); } //----- (004822F0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) { void *v2; // ebp const char *Str; // edi size_t v5; // eax size_t Size; // esi void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 20); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 4822F0: using guessed type size_t var_20[8]; //----- (004823A0) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); } //----- (004823B0) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); } //----- (004823C0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) { void *v2; // ebp const char *Str; // edi size_t v5; // eax size_t Size; // esi void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 36); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 4823C0: using guessed type size_t var_20[8]; //----- (00482470) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) { void *v2; // ebp const char *Str; // edi size_t v5; // eax size_t Size; // esi void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 28); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 482470: using guessed type size_t var_20[8]; //----- (00482520) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00482530) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) { Str = *(char **)(a2[2] + 8); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, Str, v5, v7); return this; } else { v3(a2); return this; } } // 482574: variable 'v7' is possibly undefined //----- (004825B0) -------------------------------------------------------- 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(); } //----- (004825D0) -------------------------------------------------------- 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(); } //----- (004825F0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) { Str = *(char **)(a2[2] + 20); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, Str, v5, v7); return this; } else { v3(a2); return this; } } // 482634: variable 'v7' is possibly undefined //----- (00482670) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) { void *v2; // ebp const char *Str; // edi size_t v5; // eax size_t Size; // esi void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 482670: using guessed type size_t var_20[8]; //----- (00482720) -------------------------------------------------------- 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(); } //----- (00482740) -------------------------------------------------------- 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(); } //----- (00482760) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (00482770) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (00482780) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) { Str = *(char **)(a2[2] + 36); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, Str, v5, v7); return this; } else { v3(a2); return this; } } // 4827C4: variable 'v7' is possibly undefined //----- (00482800) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) { Str = *(char **)(a2[2] + 28); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, Str, v5, v7); return this; } else { v3(a2); return this; } } // 482844: variable 'v7' is possibly undefined //----- (00482880) -------------------------------------------------------- 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(); } //----- (004828A0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) { void *v2; // ebp const char *Str; // edi size_t v5; // eax size_t Size; // esi void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 20); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 4828A0: using guessed type size_t var_20[8]; //----- (00482950) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); } //----- (00482960) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); } //----- (00482970) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) { void *v2; // ebp const char *Str; // edi size_t v5; // eax size_t Size; // esi void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 36); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 482970: using guessed type size_t var_20[8]; //----- (00482A20) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) { void *v2; // ebp const char *Str; // edi size_t v5; // eax size_t Size; // esi void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 28); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 482A20: using guessed type size_t var_20[8]; //----- (00482AD0) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00482AE0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) { Str = *(char **)(a2[2] + 8); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, Str, v5, v7); return this; } else { v3(a2); return this; } } // 482B24: variable 'v7' is possibly undefined //----- (00482B60) -------------------------------------------------------- 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(); } //----- (00482B80) -------------------------------------------------------- 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(); } //----- (00482BA0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) { String = *(wchar_t **)(a2[2] + 24); *this = 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 { v3(a2); return this; } } // 482BE5: variable 'v7' is possibly undefined //----- (00482C20) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) { void *v2; // esi const char *Str; // edi size_t v5; // eax size_t Size; // ebp void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 482C20: using guessed type size_t var_20[8]; //----- (00482CD0) -------------------------------------------------------- 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(); } //----- (00482CF0) -------------------------------------------------------- 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(); } //----- (00482D10) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); } //----- (00482D20) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (00482D30) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) { String = *(wchar_t **)(a2[2] + 40); *this = 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 { v3(a2); return this; } } // 482D75: variable 'v7' is possibly undefined //----- (00482DB0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) { String = *(wchar_t **)(a2[2] + 32); *this = 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 { v3(a2); return this; } } // 482DF5: variable 'v7' is possibly undefined //----- (00482E30) -------------------------------------------------------- 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(); } //----- (00482E50) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24); *this = this + 2; v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 482E88: variable 'v6' is possibly undefined //----- (00482EA0) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (00482EB0) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00482EC0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40); *this = this + 2; v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 482EF8: variable 'v6' is possibly undefined //----- (00482F10) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32); *this = this + 2; v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 482F48: variable 'v6' is possibly undefined //----- (00482F60) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); } //----- (00482F70) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) { Str = *(char **)(a2[2] + 8); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; std::string::_M_construct(this, Str, v5); return this; } else { v3(a2); return this; } } //----- (00482FE0) -------------------------------------------------------- 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(); } //----- (00483000) -------------------------------------------------------- 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(); } //----- (00483020) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) { String = *(wchar_t **)(a2[2] + 24); *this = 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 { v3(a2); return this; } } // 483065: variable 'v7' is possibly undefined //----- (004830A0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) { void *v2; // esi const char *Str; // edi size_t v5; // eax size_t Size; // ebp void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 4830A0: using guessed type size_t var_20[8]; //----- (00483150) -------------------------------------------------------- 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(); } //----- (00483170) -------------------------------------------------------- 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(); } //----- (00483190) -------------------------------------------------------- int __fastcall std::moneypunct::do_neg_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); } //----- (004831A0) -------------------------------------------------------- int __fastcall std::moneypunct::do_pos_format(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); } //----- (004831B0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) { String = *(wchar_t **)(a2[2] + 40); *this = 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 { v3(a2); return this; } } // 4831F5: variable 'v7' is possibly undefined //----- (00483230) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) { String = *(wchar_t **)(a2[2] + 32); *this = 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 { v3(a2); return this; } } // 483275: variable 'v7' is possibly undefined //----- (004832B0) -------------------------------------------------------- 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(); } //----- (004832D0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24); *this = this + 2; v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 483308: variable 'v6' is possibly undefined //----- (00483320) -------------------------------------------------------- int __fastcall std::moneypunct::do_frac_digits(int a1) { return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); } //----- (00483330) -------------------------------------------------------- int __fastcall std::moneypunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); } //----- (00483340) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40); *this = this + 2; v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 483378: variable 'v6' is possibly undefined //----- (00483390) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32); *this = this + 2; v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 4833C8: variable 'v6' is possibly undefined //----- (004833E0) -------------------------------------------------------- int __fastcall std::moneypunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); } //----- (004833F0) -------------------------------------------------------- _DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) { Str = *(char **)(a2[2] + 8); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; std::string::_M_construct(this, Str, v5); return this; } else { v3(a2); return this; } } //----- (00483460) -------------------------------------------------------- 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; } //----- (00483480) -------------------------------------------------------- bool __fastcall std::string::_M_is_local(_DWORD *a1) { return a1 + 2 == (_DWORD *)*a1; } //----- (00483490) -------------------------------------------------------- unsigned int __thiscall std::string::find_last_of(int *this, char *Str, unsigned int a3) { unsigned int v4; // ebx size_t MaxCount; // esi int v6; // eax unsigned int v7; // eax int v8; // ebp v4 = a3; MaxCount = strlen(Str); v6 = this[1]; if ( !v6 || !MaxCount ) return -1; v7 = v6 - 1; v8 = *this; if ( a3 > v7 ) v4 = v7; do { if ( memchr(Str, *(char *)(v8 + v4), MaxCount) ) break; } while ( v4-- != 0 ); return v4; } //----- (00483510) -------------------------------------------------------- unsigned int __thiscall std::string::find_last_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) { int v4; // eax unsigned int v5; // ebx unsigned int v6; // eax int v7; // ebp v4 = this[1]; v5 = a3; if ( !v4 || !MaxCount ) return -1; v6 = v4 - 1; v7 = *this; if ( v6 <= a3 ) v5 = v6; do { if ( memchr(Buf, *(char *)(v7 + v5), MaxCount) ) break; } while ( v5-- != 0 ); return v5; } //----- (00483590) -------------------------------------------------------- int __thiscall std::string::find_last_of(int *this, int a2, unsigned int a3) { int v3; // eax unsigned int v4; // ebx size_t MaxCount; // esi unsigned int v6; // eax const void *Buf; // ebp int v8; // edi v3 = this[1]; v4 = a3; MaxCount = *(_DWORD *)(a2 + 4); if ( !v3 || !MaxCount ) return -1; v6 = v3 - 1; Buf = *(const void **)a2; v8 = *this; if ( a3 > v6 ) v4 = v6; do { if ( memchr(Buf, *(char *)(v8 + v4), MaxCount) ) break; } while ( v4-- != 0 ); return v4; } //----- (00483610) -------------------------------------------------------- int __thiscall std::string::find_last_of(int *this, char a2, unsigned int a3) { int result; // eax int v4; // ebx int v5; // ecx result = -1; v4 = this[1]; if ( v4 ) { result = v4 - 1; v5 = *this; if ( a3 <= v4 - 1 ) result = a3; do { if ( a2 == *(_BYTE *)(v5 + result) ) break; } while ( result-- != 0 ); } return result; } //----- (00483650) -------------------------------------------------------- int __fastcall std::string::_M_local_data(int a1) { return a1 + 8; } //----- (00483660) -------------------------------------------------------- unsigned int __thiscall std::string::find_first_of(_DWORD *this, char *Str, unsigned int a3) { size_t v5; // eax size_t MaxCount; // ebx unsigned int v8; // [esp+1Ch] [ebp-20h] v5 = strlen(Str); if ( v5 ) { MaxCount = v5; v8 = this[1]; while ( v8 > a3 ) { if ( memchr(Str, *(char *)(*this + a3), MaxCount) ) return a3; ++a3; } } return -1; } //----- (004836E0) -------------------------------------------------------- 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; } //----- (00483750) -------------------------------------------------------- int __thiscall std::string::find_first_of(_DWORD *this, int a2, unsigned int a3) { size_t MaxCount; // esi const void *Buf; // ebp unsigned int v8; // [esp+1Ch] [ebp-20h] MaxCount = *(_DWORD *)(a2 + 4); Buf = *(const void **)a2; if ( MaxCount ) { v8 = this[1]; while ( v8 > a3 ) { if ( memchr(Buf, *(char *)(*this + a3), MaxCount) ) return a3; ++a3; } } return -1; } //----- (004837C0) -------------------------------------------------------- char *__thiscall std::string::find_first_of(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; } //----- (00483810) -------------------------------------------------------- void *__thiscall std::string::get_allocator(void *this, int a2) { return this; } //----- (00483820) -------------------------------------------------------- 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; } //----- (00483850) -------------------------------------------------------- int __fastcall std::string::_M_get_allocator(int a1) { return a1; } //----- (00483860) -------------------------------------------------------- int __thiscall std::string::find_last_not_of(int *this, char *Str, unsigned int a3) { int v3; // ebx int v4; // ebp size_t MaxCount; // esi unsigned int v6; // edx int v9; // [esp+1Ch] [ebp-20h] v3 = -1; v9 = this[1]; if ( v9 ) { v4 = *this; MaxCount = strlen(Str); v6 = v9 - 1; if ( a3 <= v9 - 1 ) v6 = a3; v3 = v6; do { if ( !MaxCount ) break; if ( !memchr(Str, *(char *)(v4 + v3), MaxCount) ) break; } while ( v3-- != 0 ); } return v3; } //----- (004838D0) -------------------------------------------------------- int __thiscall std::string::find_last_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) { int v4; // ebx int v5; // eax unsigned int v6; // edx unsigned int v7; // eax int v8; // ebp v4 = -1; v5 = this[1]; v6 = a3; if ( v5 ) { v7 = v5 - 1; v8 = *this; if ( v7 <= a3 ) v6 = v7; v4 = v6; do { if ( !MaxCount ) break; if ( !memchr(Buf, *(char *)(v8 + v4), MaxCount) ) break; } while ( v4-- != 0 ); } return v4; } //----- (00483930) -------------------------------------------------------- int __thiscall std::string::find_last_not_of(int *this, int a2, unsigned int a3) { int v3; // ebx int v4; // eax unsigned int v5; // eax size_t MaxCount; // esi int v7; // ebp const void *Buf; // edi v3 = -1; v4 = this[1]; if ( v4 ) { v5 = v4 - 1; MaxCount = *(_DWORD *)(a2 + 4); v7 = *this; Buf = *(const void **)a2; if ( a3 <= v5 ) v5 = a3; v3 = v5; do { if ( !MaxCount ) break; if ( !memchr(Buf, *(char *)(v7 + v3), MaxCount) ) break; } while ( v3-- != 0 ); } return v3; } //----- (00483990) -------------------------------------------------------- int __thiscall std::string::find_last_not_of(int *this, char a2, unsigned int a3) { int result; // eax int v4; // ebx int v5; // ecx result = -1; v4 = this[1]; if ( v4 ) { result = v4 - 1; v5 = *this; if ( v4 - 1 > a3 ) result = a3; do { if ( *(_BYTE *)(v5 + result) != a2 ) break; } while ( result-- != 0 ); } return result; } //----- (004839D0) -------------------------------------------------------- unsigned int __thiscall std::string::find_first_not_of(int *this, char *Str, unsigned int a3) { unsigned int v4; // esi size_t v5; // eax unsigned int v6; // edi int v7; // ebp size_t MaxCount; // ebx v4 = a3; v5 = strlen(Str); v6 = this[1]; if ( a3 >= v6 ) return -1; v7 = *this; MaxCount = v5; if ( v5 ) { while ( memchr(Str, *(char *)(v7 + v4), MaxCount) ) { if ( ++v4 == v6 ) return -1; } } return v4; } //----- (00483A40) -------------------------------------------------------- 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 ( ++v5 == v4 ) return -1; } } return v5; } //----- (00483AA0) -------------------------------------------------------- int __thiscall std::string::find_first_not_of(int *this, int a2, unsigned int a3) { unsigned int v3; // esi unsigned int v4; // ebp size_t MaxCount; // ebx int v6; // edi void *i; // eax void *Buf; // [esp+1Ch] [ebp-20h] v3 = this[1]; v4 = a3; MaxCount = *(_DWORD *)(a2 + 4); if ( a3 >= v3 ) return -1; v6 = *this; if ( MaxCount ) { Buf = *(void **)a2; for ( i = memchr(*(const void **)a2, *(char *)(v6 + a3), MaxCount); i; i = memchr(Buf, *(char *)(v6 + v4), MaxCount) ) { if ( v3 == ++v4 ) return -1; } } return v4; } //----- (00483B10) -------------------------------------------------------- int __thiscall std::string::find_first_not_of(_DWORD *this, char a2, unsigned int a3) { int result; // eax unsigned int v4; // edx result = a3; v4 = this[1]; if ( a3 >= v4 ) return -1; while ( *(_BYTE *)(*this + result) == a2 ) { if ( ++result == v4 ) return -1; } return result; } //----- (00483B50) -------------------------------------------------------- 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; } //----- (00483B80) -------------------------------------------------------- int __fastcall std::string::end(_DWORD *a1) { return a1[1] + *a1; } //----- (00483B90) -------------------------------------------------------- int __fastcall std::string::back(_DWORD *a1) { return *a1 + a1[1] - 1; } //----- (00483BA0) -------------------------------------------------------- int __fastcall std::string::cend(_DWORD *a1) { return a1[1] + *a1; } //----- (00483BB0) -------------------------------------------------------- size_t __thiscall std::string::copy(_DWORD *this, _BYTE *a2, size_t 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 ( !Size ) return Size; Src = (_BYTE *)(*this + a4); if ( Size != 1 ) { memcpy(a2, Src, Size); return Size; } *a2 = *Src; return 1; } //----- (00483C30) -------------------------------------------------------- int __fastcall std::string::data(int a1) { return *(_DWORD *)a1; } //----- (00483C40) -------------------------------------------------------- unsigned 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); } //----- (00483C80) -------------------------------------------------------- unsigned int __thiscall std::string::find(int *this, char *Buf2, unsigned int a3, size_t Size) { unsigned int v4; // edx int v6; // ecx const void *Buf; // eax int v8; // edi size_t v9; // edx size_t MaxCount; // edx int Val; // ebp char *v12; // edi int v14; // ecx int v15; // [esp+18h] [ebp-24h] int v16; // [esp+1Ch] [ebp-20h] v4 = this[1]; if ( Size ) { v6 = -1; if ( v4 > a3 ) { v16 = *this; Buf = (const void *)(*this + a3); v8 = v4 + v16; v9 = v4 - a3; v15 = v8; if ( Size <= v9 ) { MaxCount = 1 - Size + v9; if ( MaxCount ) { Val = *Buf2; while ( 1 ) { v12 = (char *)memchr(Buf, Val, MaxCount); if ( !v12 ) return -1; if ( !memcmp(v12, Buf2, Size) ) break; Buf = v12 + 1; if ( Size <= v15 - (int)(v12 + 1) ) { MaxCount = v15 - (_DWORD)v12 - Size; if ( MaxCount ) continue; } return -1; } return (unsigned int)&v12[-v16]; } } } return v6; } else { v14 = -1; if ( v4 >= a3 ) return a3; return v14; } } //----- (00483D50) -------------------------------------------------------- unsigned int __thiscall std::string::find(int *this, int a2, int a3) { return std::string::find(this, *(char **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (00483D80) -------------------------------------------------------- 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; } //----- (00483DD0) -------------------------------------------------------- _DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (00483DE0) -------------------------------------------------------- int __fastcall std::string::size(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00483DF0) -------------------------------------------------------- int __fastcall std::string::begin(int a1) { return *(_DWORD *)a1; } //----- (00483E00) -------------------------------------------------------- int __fastcall std::string::c_str(int a1) { return *(_DWORD *)a1; } //----- (00483E10) -------------------------------------------------------- _DWORD *__thiscall std::string::crend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (00483E20) -------------------------------------------------------- bool __fastcall std::string::empty(int a1) { return *(_DWORD *)(a1 + 4) == 0; } //----- (00483E30) -------------------------------------------------------- int __fastcall std::string::front(int a1) { return *(_DWORD *)a1; } //----- (00483E40) -------------------------------------------------------- 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); } //----- (00483E80) -------------------------------------------------------- int __thiscall std::string::rfind(int *this, void *Buf2, unsigned int a3, size_t Size) { int v4; // ebx size_t v5; // eax unsigned int v6; // edx unsigned int v7; // eax int v8; // ebp v4 = -1; v5 = this[1]; v6 = a3; if ( Size <= v5 ) { v7 = v5 - Size; v8 = *this; if ( v7 <= a3 ) v6 = v7; v4 = v6; if ( Size ) { while ( memcmp((const void *)(v8 + v4), Buf2, Size) ) { if ( !v4 ) return -1; --v4; } } } return v4; } // 483ED1: conditional instruction was optimized away because %arg_8.4!=0 //----- (00483EF0) -------------------------------------------------------- int __thiscall std::string::rfind(int *this, int a2, unsigned int a3) { int v3; // ebx size_t v4; // eax int v5; // edx size_t Size; // esi unsigned int v7; // eax const void *Buf2; // edi int v9; // ebp v3 = -1; v4 = this[1]; v5 = a3; Size = *(_DWORD *)(a2 + 4); if ( Size <= v4 ) { v7 = v4 - Size; Buf2 = *(const void **)a2; v9 = *this; if ( v7 <= a3 ) v5 = v7; v3 = v5; if ( Size ) { while ( memcmp((const void *)(v9 + v3), Buf2, Size) ) { if ( !v3 ) return -1; --v3; } } } return v3; } // 483F42: conditional instruction was optimized away because esi.4!=0 //----- (00483F60) -------------------------------------------------------- int __thiscall std::string::rfind(int *this, char a2, unsigned int a3) { int result; // eax int v4; // ebx int v5; // ecx result = -1; v4 = this[1]; if ( v4 ) { result = v4 - 1; v5 = *this; if ( v4 - 1 > a3 ) result = a3; do { if ( *(_BYTE *)(v5 + result) == a2 ) break; } while ( result-- != 0 ); } return result; } //----- (00483FA0) -------------------------------------------------------- int __fastcall std::string::cbegin(int a1) { return *(_DWORD *)a1; } //----- (00483FB0) -------------------------------------------------------- int __fastcall std::string::length(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00483FC0) -------------------------------------------------------- _DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + a2[1]; return result; } //----- (00483FD0) -------------------------------------------------------- _DWORD *__thiscall std::string::substr(_DWORD *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 = this + 2; LOBYTE(v8) = 0; if ( v6 > a4 ) v6 = a4; std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, v8); return this; } // 48400B: variable 'v8' is possibly undefined //----- (00484040) -------------------------------------------------------- int __fastcall std::string::_M_data(int a1) { return *(_DWORD *)a1; } //----- (00484050) -------------------------------------------------------- int __thiscall std::string::compare(int this, char *Str) { size_t v3; // edi size_t v4; // ebx size_t Size; // eax int result; // eax v3 = *(_DWORD *)(this + 4); v4 = strlen(Str); Size = v3; if ( v4 <= v3 ) Size = v4; if ( !Size ) return v3 - v4; result = memcmp(*(const void **)this, Str, Size); if ( !result ) return v3 - v4; return result; } //----- (004840A0) -------------------------------------------------------- int __thiscall std::string::compare(int this, int a2) { size_t v2; // esi size_t Size; // edx 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; } //----- (004840E0) -------------------------------------------------------- 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 v7; // edi size_t Size; // eax 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; v7 = strlen(Str); Size = v5; if ( v7 <= v5 ) Size = v7; if ( !Size ) return v5 - v7; result = memcmp((const void *)(*this + a2), Str, Size); if ( !result ) return v5 - v7; return result; } //----- (00484160) -------------------------------------------------------- int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, void *Buf2, unsigned int a5) { unsigned int v5; // ebx unsigned int v6; // ebx size_t Size; // edx int result; // eax v5 = this[1]; 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]); v6 = v5 - a2; if ( v6 > a3 ) v6 = a3; Size = a5; if ( v6 <= a5 ) Size = v6; if ( !Size ) return v6 - a5; result = memcmp((const void *)(*this + a2), Buf2, Size); if ( !result ) return v6 - a5; return result; } //----- (004841D0) -------------------------------------------------------- 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; // edi 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; v6 = *(_DWORD *)(a4 + 4); Size = v5; if ( v6 <= v5 ) Size = *(_DWORD *)(a4 + 4); if ( !Size ) return v5 - v6; result = memcmp((const void *)(*this + a2), *(const void **)a4, Size); if ( !result ) return v5 - v6; return result; } //----- (00484240) -------------------------------------------------------- int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) { unsigned int v6; // ebx size_t v7; // edi unsigned int v8; // eax size_t v9; // ebx size_t v10; // eax size_t Size; // eax int result; // eax v6 = this[1]; v7 = a6; if ( a2 > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, v6); v8 = a4[1]; if ( a5 > v8 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a5, a4[1]); v9 = v6 - a2; if ( v9 > a3 ) v9 = a3; v10 = v8 - a5; if ( v10 <= a6 ) v7 = v10; Size = v9; if ( v7 <= v9 ) Size = v7; if ( !Size ) return v9 - v7; result = memcmp((const void *)(*this + a2), (const void *)(*a4 + a5), Size); if ( !result ) return v9 - v7; return result; } //----- (004842F0) -------------------------------------------------------- _DWORD *__thiscall std::string::crbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + a2[1]; return result; } //----- (00484300) -------------------------------------------------------- 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; } //----- (00484330) -------------------------------------------------------- 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; } //----- (00484350) -------------------------------------------------------- int __fastcall std::string::capacity(_DWORD *a1) { if ( (_DWORD *)*a1 == a1 + 2 ) return 15; else return a1[2]; } //----- (00484370) -------------------------------------------------------- int std::string::max_size() { return 0x3FFFFFFF; } //----- (00484380) -------------------------------------------------------- int __thiscall std::string::operator[](_DWORD *this, int a2) { return a2 + *this; } //----- (00484390) -------------------------------------------------------- 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; } //----- (004843B0) -------------------------------------------------------- bool __fastcall std::wstring::_M_is_local(_DWORD *a1) { return a1 + 2 == (_DWORD *)*a1; } //----- (004843C0) -------------------------------------------------------- int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3) { int v4; // eax v4 = wcslen(String); return std::wstring::find_last_of(this, String, a3, v4); } //----- (00484400) -------------------------------------------------------- int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) { int v4; // eax unsigned int v5; // ebx unsigned int v6; // eax _WORD *v7; // eax int v8; // edx v4 = this[1]; v5 = a3; if ( !v4 || !a4 ) return -1; v6 = v4 - 1; if ( v6 <= a3 ) v5 = v6; while ( !a2 ) { LABEL_9: if ( v5-- == 0 ) return v5; } v7 = a2; v8 = a4; while ( *(_WORD *)(*this + 2 * v5) != *v7 ) { ++v7; if ( !--v8 ) goto LABEL_9; } return v5; } //----- (00484470) -------------------------------------------------------- int __thiscall std::wstring::find_last_of(_DWORD *this, int a2, unsigned int a3) { return std::wstring::find_last_of(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (004844A0) -------------------------------------------------------- int __thiscall std::wstring::find_last_of(int *this, __int16 a2, unsigned int a3) { int result; // eax int v4; // ebx int v5; // ecx result = -1; v4 = this[1]; if ( v4 ) { result = v4 - 1; v5 = *this; if ( a3 <= v4 - 1 ) result = a3; do { if ( a2 == *(_WORD *)(v5 + 2 * result) ) break; } while ( result-- != 0 ); } return result; } //----- (004844E0) -------------------------------------------------------- int __fastcall std::wstring::_M_local_data(int a1) { return a1 + 8; } //----- (004844F0) -------------------------------------------------------- int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3) { int v4; // eax v4 = wcslen(String); return std::wstring::find_first_of(this, String, a3, v4); } //----- (00484530) -------------------------------------------------------- int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) { unsigned int v4; // ebp unsigned int v5; // ebx int v6; // edx _WORD *v7; // eax if ( !a4 ) return -1; v4 = this[1]; v5 = a3; if ( v4 <= a3 ) return -1; while ( !a2 ) { LABEL_7: if ( v4 <= ++v5 ) return -1; } v6 = a4; v7 = a2; while ( *(_WORD *)(*this + 2 * v5) != *v7 ) { ++v7; if ( !--v6 ) goto LABEL_7; } return v5; } //----- (00484590) -------------------------------------------------------- int __thiscall std::wstring::find_first_of(_DWORD *this, int a2, unsigned int a3) { return std::wstring::find_first_of(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (004845C0) -------------------------------------------------------- int __thiscall std::wstring::find_first_of(_DWORD *this, __int16 a2, unsigned int a3) { return std::wstring::find(this, a2, a3); } //----- (004845D0) -------------------------------------------------------- void *__thiscall std::wstring::get_allocator(void *this, int a2) { return this; } //----- (004845E0) -------------------------------------------------------- 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; } //----- (00484610) -------------------------------------------------------- int __fastcall std::wstring::_M_get_allocator(int a1) { return a1; } //----- (00484620) -------------------------------------------------------- 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); } //----- (00484660) -------------------------------------------------------- int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) { int v4; // eax int v5; // ebx unsigned int v6; // eax _WORD *v7; // eax int v8; // edx v4 = this[1]; v5 = -1; if ( v4 ) { v6 = v4 - 1; v5 = a3; if ( v6 <= a3 ) v5 = v6; while ( a4 && a2 ) { v7 = a2; v8 = a4; while ( *(_WORD *)(*this + 2 * v5) != *v7 ) { ++v7; if ( !--v8 ) return v5; } if ( v5-- == 0 ) return v5; } } return v5; } //----- (004846D0) -------------------------------------------------------- int __thiscall std::wstring::find_last_not_of(_DWORD *this, int a2, unsigned int a3) { return std::wstring::find_last_not_of(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (00484700) -------------------------------------------------------- int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3) { int result; // eax int v4; // ebx int v5; // ecx result = -1; v4 = this[1]; if ( v4 ) { result = v4 - 1; v5 = *this; if ( v4 - 1 > a3 ) result = a3; do { if ( *(_WORD *)(v5 + 2 * result) != a2 ) break; } while ( result-- != 0 ); } return result; } //----- (00484740) -------------------------------------------------------- int __thiscall std::wstring::find_first_not_of(int *this, wchar_t *String, unsigned int a3) { unsigned int v4; // ebx size_t v5; // eax unsigned int v6; // esi int v7; // ebp size_t v8; // edi __int16 v9; // cx wchar_t *v10; // eax size_t v11; // edx v4 = a3; v5 = wcslen(String); v6 = this[1]; if ( a3 < v6 ) { v7 = *this; v8 = v5; if ( !v5 ) return v4; v9 = *(_WORD *)(v7 + 2 * a3); if ( !String ) return v4; while ( 1 ) { v10 = String; v11 = v8; while ( v9 != *v10 ) { ++v10; if ( !--v11 ) return v4; } if ( ++v4 == v6 ) break; v9 = *(_WORD *)(v7 + 2 * v4); } } return -1; } //----- (004847D0) -------------------------------------------------------- int __thiscall std::wstring::find_first_not_of(int *this, _WORD *a2, unsigned int a3, int a4) { unsigned int v4; // ebx unsigned int v5; // esi int v6; // edi __int16 v7; // cx _WORD *v8; // eax int v9; // edx v4 = a3; v5 = this[1]; if ( a3 < v5 ) { v6 = *this; if ( !a4 ) return v4; v7 = *(_WORD *)(*this + 2 * a3); if ( !a2 ) return v4; while ( 1 ) { v8 = a2; v9 = a4; while ( v7 != *v8 ) { ++v8; if ( !--v9 ) return v4; } if ( ++v4 == v5 ) break; v7 = *(_WORD *)(v6 + 2 * v4); } } return -1; } //----- (00484850) -------------------------------------------------------- int __thiscall std::wstring::find_first_not_of(int *this, _DWORD *a2, unsigned int a3) { unsigned int v3; // esi unsigned int v4; // ebx int v5; // edi __int16 v6; // cx _WORD *v7; // eax int v8; // edx v3 = this[1]; v4 = a3; if ( a3 < v3 ) { v5 = *this; if ( !a2[1] ) return v4; v6 = *(_WORD *)(*this + 2 * a3); if ( !*a2 ) return v4; while ( 1 ) { v7 = (_WORD *)*a2; v8 = a2[1]; while ( v6 != *v7 ) { ++v7; if ( !--v8 ) return v4; } if ( ++v4 == v3 ) break; v6 = *(_WORD *)(v5 + 2 * v4); } } return -1; } //----- (004848D0) -------------------------------------------------------- int __thiscall std::wstring::find_first_not_of(_DWORD *this, __int16 a2, unsigned int a3) { int result; // eax unsigned int v4; // edx result = a3; v4 = this[1]; if ( a3 >= v4 ) return -1; while ( *(_WORD *)(*this + 2 * result) == a2 ) { if ( ++result == v4 ) return -1; } return result; } //----- (00484920) -------------------------------------------------------- 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; } //----- (00484950) -------------------------------------------------------- int __fastcall std::wstring::end(_DWORD *a1) { return *a1 + 2 * a1[1]; } //----- (00484960) -------------------------------------------------------- int __fastcall std::wstring::back(_DWORD *a1) { return *a1 + 2 * a1[1] - 2; } //----- (00484970) -------------------------------------------------------- int __fastcall std::wstring::cend(_DWORD *a1) { return *a1 + 2 * a1[1]; } //----- (00484980) -------------------------------------------------------- int __thiscall std::wstring::copy(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4) { unsigned int v4; // ebx unsigned int v5; // ebx _WORD *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]); v5 = v4 - a4; if ( v5 > a3 ) v5 = a3; if ( !v5 ) return v5; Src = (_WORD *)(*this + 2 * a4); if ( v5 != 1 ) { memcpy(a2, Src, 2 * v5); return v5; } *a2 = *Src; return 1; } //----- (00484A00) -------------------------------------------------------- int __fastcall std::wstring::data(int a1) { return *(_DWORD *)a1; } //----- (00484A10) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, wchar_t *String, int a3) { unsigned int v4; // eax v4 = wcslen(String); return std::wstring::find(this, String, a3, v4); } //----- (00484A50) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, _WORD *a2, unsigned int a3, unsigned int a4) { unsigned int v4; // ebx _WORD *v5; // eax int v6; // edx int v8; // edx __int16 v9; // bx unsigned int v10; // edx int v11; // ecx int v12; // [esp+0h] [ebp-18h] int v13; // [esp+4h] [ebp-14h] v4 = this[1]; if ( a4 ) { if ( v4 > a3 && (v13 = *this, v5 = (_WORD *)(*this + 2 * a3), a4 <= v4 - a3) && (v6 = 1 - a4 + v4 - a3, v5) && v6 ) { v12 = v13 + 2 * v4; LABEL_7: while ( *a2 != *v5 ) { ++v5; if ( !--v6 ) return -1; } if ( a2 != v5 ) { v8 = 0; while ( a4 - 1 != v8 ) { v9 = v5[++v8]; if ( v9 != a2[v8] ) { v10 = (v12 - (int)++v5) >> 1; if ( a4 <= v10 ) { v6 = 1 - a4 + v10; if ( v6 ) goto LABEL_7; } return -1; } } } return ((int)v5 - v13) >> 1; } else { return -1; } } else { v11 = -1; if ( v4 >= a3 ) return a3; return v11; } } //----- (00484B50) -------------------------------------------------------- int __thiscall std::wstring::find(int *this, int a2, unsigned int a3) { return std::wstring::find(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (00484B80) -------------------------------------------------------- int __thiscall std::wstring::find(_DWORD *this, __int16 a2, unsigned int a3) { unsigned int v3; // eax unsigned int v4; // eax _WORD *v5; // edx v3 = this[1]; if ( a3 >= v3 ) return -1; v4 = v3 - a3; v5 = (_WORD *)(*this + 2 * a3); if ( !v5 ) return -1; while ( *v5 != a2 ) { ++v5; if ( !--v4 ) return -1; } return ((int)v5 - *this) >> 1; } //----- (00484BE0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (00484BF0) -------------------------------------------------------- int __fastcall std::wstring::size(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00484C00) -------------------------------------------------------- int __fastcall std::wstring::begin(int a1) { return *(_DWORD *)a1; } //----- (00484C10) -------------------------------------------------------- int __fastcall std::wstring::c_str(int a1) { return *(_DWORD *)a1; } //----- (00484C20) -------------------------------------------------------- _DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (00484C30) -------------------------------------------------------- bool __fastcall std::wstring::empty(int a1) { return *(_DWORD *)(a1 + 4) == 0; } //----- (00484C40) -------------------------------------------------------- int __fastcall std::wstring::front(int a1) { return *(_DWORD *)a1; } //----- (00484C50) -------------------------------------------------------- int __thiscall std::wstring::rfind(_DWORD *this, wchar_t *String, int a3) { unsigned int v4; // eax v4 = wcslen(String); return std::wstring::rfind(this, String, a3, v4); } //----- (00484C90) -------------------------------------------------------- int __thiscall std::wstring::rfind(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4) { int v4; // ebx unsigned int v5; // eax unsigned int v6; // eax int v7; // esi _WORD *v8; // eax _WORD *v9; // edx unsigned int v10; // ecx v4 = -1; v5 = this[1]; if ( a4 <= v5 ) { v6 = v5 - a4; v4 = a3; if ( v6 <= a3 ) v4 = v6; v7 = *this + 2 * v4; if ( a4 ) { while ( 1 ) { v8 = (_WORD *)v7; if ( (_WORD *)v7 == a2 ) break; if ( (v7 != 0) == (a2 != 0) ) { v9 = a2; v10 = a4; while ( *v8 == *v9 ) { ++v8; ++v9; if ( !--v10 ) return v4; } } v7 -= 2; if ( !v4 ) return -1; --v4; } } } return v4; } // 484D01: conditional instruction was optimized away because %arg_8.4!=0 //----- (00484D20) -------------------------------------------------------- int __thiscall std::wstring::rfind(_DWORD *this, int a2, unsigned int a3) { return std::wstring::rfind(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); } //----- (00484D50) -------------------------------------------------------- int __thiscall std::wstring::rfind(int *this, __int16 a2, unsigned int a3) { int result; // eax int v4; // ebx int v5; // ecx result = -1; v4 = this[1]; if ( v4 ) { result = v4 - 1; v5 = *this; if ( v4 - 1 > a3 ) result = a3; do { if ( *(_WORD *)(v5 + 2 * result) == a2 ) break; } while ( result-- != 0 ); } return result; } //----- (00484D90) -------------------------------------------------------- int __fastcall std::wstring::cbegin(int a1) { return *(_DWORD *)a1; } //----- (00484DA0) -------------------------------------------------------- int __fastcall std::wstring::length(int a1) { return *(_DWORD *)(a1 + 4); } //----- (00484DB0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * a2[1]; return result; } //----- (00484DD0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::substr(_DWORD *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 = this + 2; if ( v6 > a4 ) v6 = a4; LOBYTE(v8) = 0; std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); return this; } // 484E0D: variable 'v8' is possibly undefined //----- (00484E40) -------------------------------------------------------- int __fastcall std::wstring::_M_data(int a1) { return *(_DWORD *)a1; } //----- (00484E50) -------------------------------------------------------- int __thiscall std::wstring::compare(wchar_t **this, wchar_t *String) { size_t v3; // esi wchar_t *v4; // ebx size_t v5; // edx size_t v6; // eax wchar_t *v7; // edx size_t v9; // [esp+18h] [ebp-24h] size_t v10; // [esp+1Ch] [ebp-20h] v3 = (size_t)this[1]; v4 = String; v5 = wcslen(String); v10 = v5; v6 = v3; if ( v5 <= v3 ) v6 = v5; v9 = v6; if ( !v6 ) return v3 - v10; v7 = *this; if ( String == *this ) return v3 - v10; if ( (v7 != 0) != (String != 0) ) return String == 0 ? 1 : -1; while ( *v7 == *v4 ) { ++v7; ++v4; if ( !--v9 ) return v3 - v10; } return *v7 < *v4 ? -1 : 1; } //----- (00484EF0) -------------------------------------------------------- int __thiscall std::wstring::compare(_DWORD *this, int a2) { unsigned int v2; // ebx unsigned int v3; // esi _WORD *v4; // eax _WORD *v5; // ecx unsigned int v7; // [esp+0h] [ebp-18h] unsigned int v8; // [esp+4h] [ebp-14h] v2 = this[1]; v8 = v2; v3 = *(_DWORD *)(a2 + 4); if ( v3 <= v2 ) v2 = *(_DWORD *)(a2 + 4); v7 = v2; if ( !v2 ) return v8 - v3; v4 = *(_WORD **)a2; v5 = (_WORD *)*this; if ( *(_WORD **)a2 == v5 ) return v8 - v3; if ( (v5 != 0) != (v4 != 0) ) return v4 == 0 ? 1 : -1; while ( *v5 == *v4 ) { ++v5; ++v4; if ( !--v7 ) return v8 - v3; } return *v5 < *v4 ? -1 : 1; } //----- (00484F90) -------------------------------------------------------- int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) { unsigned int v4; // ebx unsigned int v5; // eax wchar_t *v6; // esi unsigned int v7; // ebx unsigned int v9; // ebx size_t v10; // ecx size_t v11; // eax wchar_t *v12; // edx unsigned int v14; // [esp+1Ch] [ebp-20h] v4 = this[1]; v5 = a3; v6 = String; 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]); v7 = v4 - a2; if ( v7 <= a3 ) v5 = v7; v9 = v5; v14 = v5; v10 = wcslen(String); v11 = v9; if ( v10 <= v9 ) v11 = v10; if ( !v11 ) return v14 - v10; v12 = (wchar_t *)(*this + 2 * a2); if ( v12 == String ) return v14 - v10; if ( (v12 != 0) != (String != 0) ) return String == 0 ? 1 : -1; while ( *v12 == *v6 ) { ++v12; ++v6; if ( !--v11 ) return v14 - v10; } return *v12 < *v6 ? -1 : 1; } //----- (00485070) -------------------------------------------------------- int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, _WORD *a4, unsigned int a5) { unsigned int v6; // eax unsigned int v7; // edi _WORD *v8; // ecx unsigned int v9; // eax unsigned int v10; // ebx unsigned int v11; // edi _WORD *v12; // edx unsigned int v14; // [esp+1Ch] [ebp-20h] v6 = this[1]; v7 = a3; v8 = a4; if ( a2 > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, v6); v9 = v6 - a2; v10 = a5; if ( v9 <= a3 ) v7 = v9; if ( v7 <= a5 ) v10 = v7; v14 = v7; v11 = v10; if ( !v10 ) return v14 - a5; v12 = (_WORD *)(*this + 2 * a2); if ( v12 == a4 ) return v14 - a5; if ( (v12 != 0) != (a4 != 0) ) return a4 == 0 ? 1 : -1; while ( *v12 == *v8 ) { ++v12; ++v8; if ( !--v11 ) return v14 - a5; } return *v12 < *v8 ? -1 : 1; } //----- (00485140) -------------------------------------------------------- int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, int a4) { unsigned int v4; // eax unsigned int v5; // ebx unsigned int v6; // eax unsigned int v7; // esi unsigned int v8; // eax _WORD *v9; // edx _WORD *v10; // ecx unsigned int v12; // [esp+18h] [ebp-24h] v4 = this[1]; v5 = a3; if ( a2 > v4 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a2, v4); v6 = v4 - a2; v7 = *(_DWORD *)(a4 + 4); if ( v6 <= a3 ) v5 = v6; v8 = v5; if ( v7 <= v5 ) v8 = *(_DWORD *)(a4 + 4); v12 = v8; if ( !v8 ) return v5 - v7; v9 = *(_WORD **)a4; v10 = (_WORD *)(*this + 2 * a2); if ( v10 == *(_WORD **)a4 ) return v5 - v7; if ( (v10 != 0) != (v9 != 0) ) return v9 == 0 ? 1 : -1; while ( *v10 == *v9 ) { ++v10; ++v9; if ( !--v12 ) return v5 - v7; } return *v10 < *v9 ? -1 : 1; } //----- (00485210) -------------------------------------------------------- int __thiscall std::wstring::compare( _DWORD *this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, unsigned int a6) { unsigned int v6; // eax unsigned int v7; // edi unsigned int v8; // edx unsigned int v9; // eax unsigned int v10; // edx unsigned int v11; // edx int v12; // ebx _WORD *v13; // esi _WORD *i; // ecx v6 = this[1]; v7 = a6; 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]); v8 = a4[1]; if ( a5 > v8 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::compare", a5, a4[1]); v9 = v6 - a2; if ( v9 > a3 ) v9 = a3; v10 = v8 - a5; if ( v10 <= a6 ) v7 = v10; v11 = v9; if ( v7 <= v9 ) v11 = v7; if ( !v11 ) return v9 - v7; v12 = *this + 2 * a2; v13 = (_WORD *)(*a4 + 2 * a5); if ( v13 == (_WORD *)v12 ) return v9 - v7; if ( (v12 != 0) != (v13 != 0) ) return v13 == 0 ? 1 : -1; for ( i = (_WORD *)(*this + 2 * a2); *i == *v13; ++i ) { ++v13; if ( !--v11 ) return v9 - v7; } return *i < *v13 ? -1 : 1; } //----- (00485320) -------------------------------------------------------- _DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * a2[1]; return result; } //----- (00485340) -------------------------------------------------------- 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; } //----- (00485370) -------------------------------------------------------- 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; } //----- (00485390) -------------------------------------------------------- int __fastcall std::wstring::capacity(_DWORD *a1) { if ( (_DWORD *)*a1 == a1 + 2 ) return 7; else return a1[2]; } //----- (004853B0) -------------------------------------------------------- int std::wstring::max_size() { return 0x1FFFFFFF; } //----- (004853C0) -------------------------------------------------------- int __thiscall std::wstring::operator[](_DWORD *this, int a2) { return *this + 2 * a2; } //----- (004853D0) -------------------------------------------------------- int __thiscall std::stringbuf::str(int this, int a2) { unsigned int v3; // eax unsigned int v4; // edx int v5; // ecx *(_BYTE *)(this + 8) = 0; *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; v3 = *(_DWORD *)(a2 + 20); if ( v3 ) { v4 = *(_DWORD *)(a2 + 12); v5 = *(_DWORD *)(a2 + 16); if ( v3 > v4 ) std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 16), v3 - v5); else std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 16), v4 - v5); } else { std::string::_M_assign(this, a2 + 36); } return this; } //----- (004854F0) -------------------------------------------------------- int __thiscall std::wstringbuf::str(int this, _DWORD *a2) { unsigned int v3; // eax unsigned int v4; // edx int v5; // ecx *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = this + 8; *(_WORD *)(this + 8) = 0; v3 = a2[5]; if ( v3 ) { v4 = a2[3]; v5 = a2[4]; if ( v3 > v4 ) std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[4], (int)(v3 - v5) >> 1); else std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[4], (int)(v4 - v5) >> 1); } else { std::wstring::_M_assign(this, (int)(a2 + 9)); } return this; } //----- (00485620) -------------------------------------------------------- int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2) { unsigned int v3; // eax unsigned int v4; // edx int v5; // ecx *(_BYTE *)(this + 8) = 0; *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; v3 = *(_DWORD *)(a2 + 32); if ( v3 ) { v4 = *(_DWORD *)(a2 + 24); v5 = *(_DWORD *)(a2 + 28); if ( v3 > v4 ) std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 28), v3 - v5); else std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 28), v4 - v5); } else { std::string::_M_assign(this, a2 + 48); } return this; } //----- (00485740) -------------------------------------------------------- int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) { return a1 + 12; } //----- (00485750) -------------------------------------------------------- int __thiscall std::basic_stringstream,std::allocator>::str( int this, _DWORD *a2) { unsigned int v3; // eax unsigned int v4; // edx int v5; // ecx *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = this + 8; *(_WORD *)(this + 8) = 0; v3 = a2[8]; if ( v3 ) { v4 = a2[6]; v5 = a2[7]; if ( v3 > v4 ) std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[7], (int)(v3 - v5) >> 1); else std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[7], (int)(v4 - v5) >> 1); } else { std::wstring::_M_assign(this, (int)(a2 + 12)); } return this; } //----- (00485880) -------------------------------------------------------- int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) { return a1 + 12; } //----- (00485890) -------------------------------------------------------- int __thiscall std::istringstream::str(int this, int a2) { unsigned int v3; // eax unsigned int v4; // edx int v5; // ecx *(_BYTE *)(this + 8) = 0; *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; v3 = *(_DWORD *)(a2 + 28); if ( v3 ) { v4 = *(_DWORD *)(a2 + 20); v5 = *(_DWORD *)(a2 + 24); if ( v3 > v4 ) std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 24), v3 - v5); else std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 24), v4 - v5); } else { std::string::_M_assign(this, a2 + 44); } return this; } //----- (004859B0) -------------------------------------------------------- int __fastcall std::istringstream::rdbuf(int a1) { return a1 + 8; } //----- (004859C0) -------------------------------------------------------- int __thiscall std::wistringstream::str(int this, _DWORD *a2) { unsigned int v3; // eax unsigned int v4; // edx int v5; // ecx *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = this + 8; *(_WORD *)(this + 8) = 0; v3 = a2[7]; if ( v3 ) { v4 = a2[5]; v5 = a2[6]; if ( v3 > v4 ) std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[6], (int)(v3 - v5) >> 1); else std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[6], (int)(v4 - v5) >> 1); } else { std::wstring::_M_assign(this, (int)(a2 + 11)); } return this; } //----- (00485AF0) -------------------------------------------------------- int __fastcall std::wistringstream::rdbuf(int a1) { return a1 + 8; } //----- (00485B00) -------------------------------------------------------- int __thiscall std::ostringstream::str(int this, int a2) { unsigned int v3; // eax unsigned int v4; // edx int v5; // ecx *(_BYTE *)(this + 8) = 0; *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; v3 = *(_DWORD *)(a2 + 24); if ( v3 ) { v4 = *(_DWORD *)(a2 + 16); v5 = *(_DWORD *)(a2 + 20); if ( v3 > v4 ) std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 20), v3 - v5); else std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 20), v4 - v5); } else { std::string::_M_assign(this, a2 + 40); } return this; } //----- (00485C20) -------------------------------------------------------- int __fastcall std::ostringstream::rdbuf(int a1) { return a1 + 4; } //----- (00485C30) -------------------------------------------------------- int __thiscall std::wostringstream::str(int this, _DWORD *a2) { unsigned int v3; // eax unsigned int v4; // edx int v5; // ecx *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = this + 8; *(_WORD *)(this + 8) = 0; v3 = a2[6]; if ( v3 ) { v4 = a2[4]; v5 = a2[5]; if ( v3 > v4 ) std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[5], (int)(v3 - v5) >> 1); else std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[5], (int)(v4 - v5) >> 1); } else { std::wstring::_M_assign(this, (int)(a2 + 10)); } return this; } //----- (00485D60) -------------------------------------------------------- int __fastcall std::wostringstream::rdbuf(int a1) { return a1 + 4; } //----- (00485D70) -------------------------------------------------------- int __stdcall std::collate::_M_compare(char *String1, char *String2) { int v2; // eax v2 = strcoll(String1, String2); return (v2 >> 30) | (v2 != 0); } //----- (00485DA0) -------------------------------------------------------- int __stdcall std::collate::do_compare(_BYTE *a1, int a2, _BYTE *a3, int a4) { int i; // eax char *v5; // eax int v7; // [esp+8h] [ebp-90h] int v8; // [esp+8h] [ebp-90h] char *v9; // [esp+14h] [ebp-84h] int v10; // [esp+1Ch] [ebp-7Ch] char *v11; // [esp+20h] [ebp-78h] char *v12; // [esp+24h] [ebp-74h] char *Str; // [esp+28h] [ebp-70h] char *Stra; // [esp+28h] [ebp-70h] void *v15[2]; // [esp+60h] [ebp-38h] BYREF char v16[16]; // [esp+68h] [ebp-30h] BYREF void *Block[2]; // [esp+78h] [ebp-20h] BYREF char v18[20]; // [esp+80h] [ebp-18h] BYREF LOBYTE(v7) = 0; v15[0] = v16; std::string::_M_construct(v15, a1, a2, v7); Block[0] = v18; LOBYTE(v8) = 0; std::string::_M_construct(Block, a3, a4, v8); Str = (char *)v15[0]; v9 = (char *)v15[1] + (unsigned int)v15[0]; v12 = (char *)Block[0]; v11 = (char *)Block[1] + (unsigned int)Block[0]; for ( i = std::collate::_M_compare((char *)v15[0], (char *)Block[0]); ; i = std::collate::_M_compare(Str, v5 + 1) ) { v10 = i; if ( i ) break; Stra = &Str[strlen(Str)]; v5 = &v12[strlen(v12)]; if ( v9 == Stra ) { if ( v11 == v5 ) break; if ( v9 == Stra ) { v10 = -1; break; } } if ( v11 == v5 ) { v10 = 1; break; } v12 = v5 + 1; Str = Stra + 1; } if ( Block[0] != v18 ) operator delete(Block[0]); if ( v15[0] != v16 ) operator delete(v15[0]); return v10; } // 485DF5: variable 'v7' is possibly undefined // 485E1F: variable 'v8' is possibly undefined //----- (00485F30) -------------------------------------------------------- size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) { return strxfrm(Destination, Source, MaxCount); } //----- (00485F60) -------------------------------------------------------- int __thiscall std::collate::do_transform(int this, int a2, _BYTE *a3, int a4) { unsigned int i; // eax char *v5; // eax int v6; // eax unsigned int v7; // edx int v9; // [esp+8h] [ebp-90h] int v10; // [esp+1Ch] [ebp-7Ch] char *v11; // [esp+20h] [ebp-78h] size_t v12; // [esp+24h] [ebp-74h] unsigned int v13; // [esp+28h] [ebp-70h] char *Block; // [esp+2Ch] [ebp-6Ch] unsigned int v15; // [esp+30h] [ebp-68h] char *Str; // [esp+34h] [ebp-64h] void *v18[2]; // [esp+78h] [ebp-20h] BYREF char v19[20]; // [esp+80h] [ebp-18h] BYREF *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = this + 8; *(_BYTE *)(this + 8) = 0; v18[0] = v19; LOBYTE(v9) = 0; v10 = this + 8; std::string::_M_construct(v18, a3, a4, v9); Str = (char *)v18[0]; v11 = (char *)v18[1] + (unsigned int)v18[0]; v15 = 2 * (a4 - (_DWORD)a3); Block = (char *)operator new[](v15); for ( i = std::collate::_M_transform(Block, Str, v15); ; i = std::collate::_M_transform(Block, Str, v15) ) { if ( v15 <= i ) { v15 = i + 1; operator delete[](Block); Block = (char *)operator new[](v15); i = std::collate::_M_transform(Block, Str, v15); } if ( i > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append((_DWORD *)this, Block, i); v5 = &Str[strlen(Str)]; if ( v11 == v5 ) break; Str = v5 + 1; v12 = *(_DWORD *)(this + 4); v13 = v12 + 1; v6 = *(_DWORD *)this; if ( v10 == *(_DWORD *)this ) v7 = 15; else v7 = *(_DWORD *)(this + 8); if ( v13 > v7 ) { std::string::_M_mutate(this, v12, 0, 0, 1u); v6 = *(_DWORD *)this; } *(_BYTE *)(v6 + v12) = 0; *(_DWORD *)(this + 4) = v13; *(_BYTE *)(*(_DWORD *)this + v12 + 1) = 0; } operator delete[](Block); if ( v18[0] != v19 ) operator delete(v18[0]); return this; } // 485FCB: variable 'v9' is possibly undefined //----- (00486210) -------------------------------------------------------- int __thiscall std::collate::hash(void *this, char *a2, char *a3) { char *v3; // edx int (__stdcall *v4)(char *, char *); // eax int result; // eax int v6; // ecx v3 = a2; v4 = *(int (__stdcall **)(char *, char *))(*(_DWORD *)this + 16); if ( v4 != std::collate::do_hash ) return v4(a2, a3); result = 0; if ( a2 < a3 ) { do { v6 = *v3++; result = v6 + __ROL4__(result, 7); } while ( a3 != v3 ); } return result; } //----- (00486260) -------------------------------------------------------- int __fastcall std::collate::compare(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (00486270) -------------------------------------------------------- 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; } //----- (004862A0) -------------------------------------------------------- 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; } //----- (004862D0) -------------------------------------------------------- int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) { int v2; // eax v2 = wcscoll(String1, String2); return (v2 >> 30) | (v2 != 0); } //----- (00486300) -------------------------------------------------------- int __stdcall std::collate::do_compare(_WORD *a1, int a2, _WORD *a3, int a4) { int i; // eax wchar_t *v5; // eax int v7; // [esp+8h] [ebp-90h] int v8; // [esp+8h] [ebp-90h] wchar_t *v9; // [esp+14h] [ebp-84h] int v10; // [esp+1Ch] [ebp-7Ch] char *v11; // [esp+20h] [ebp-78h] wchar_t *v12; // [esp+24h] [ebp-74h] wchar_t *String; // [esp+28h] [ebp-70h] wchar_t *Stringa; // [esp+28h] [ebp-70h] void *v15[2]; // [esp+60h] [ebp-38h] BYREF char v16[16]; // [esp+68h] [ebp-30h] BYREF void *Block[2]; // [esp+78h] [ebp-20h] BYREF char v18[20]; // [esp+80h] [ebp-18h] BYREF LOBYTE(v7) = 0; v15[0] = v16; std::wstring::_M_construct(v15, a1, a2, v7); Block[0] = v18; LOBYTE(v8) = 0; std::wstring::_M_construct(Block, a3, a4, v8); String = (wchar_t *)v15[0]; v9 = (wchar_t *)((char *)v15[0] + 2 * (int)v15[1]); v12 = (wchar_t *)Block[0]; v11 = (char *)Block[0] + 2 * (int)Block[1]; for ( i = std::collate::_M_compare((wchar_t *)v15[0], (wchar_t *)Block[0]); ; i = std::collate::_M_compare(String, v5 + 1) ) { v10 = i; if ( i ) break; Stringa = &String[wcslen(String)]; v5 = &v12[wcslen(v12)]; if ( v9 == Stringa ) { if ( v11 == (char *)v5 ) break; if ( v9 == Stringa ) { v10 = -1; break; } } if ( v11 == (char *)v5 ) { v10 = 1; break; } v12 = v5 + 1; String = Stringa + 1; } if ( Block[0] != v18 ) operator delete(Block[0]); if ( v15[0] != v16 ) operator delete(v15[0]); return v10; } // 486355: variable 'v7' is possibly undefined // 48637F: variable 'v8' is possibly undefined //----- (004864A0) -------------------------------------------------------- size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) { return wcsxfrm(Destination, Source, MaxCount); } //----- (004864D0) -------------------------------------------------------- int __thiscall std::collate::do_transform(int this, int a2, _WORD *a3, int a4) { unsigned int i; // eax wchar_t *v5; // eax int v6; // eax unsigned int v7; // edx int v9; // [esp+8h] [ebp-90h] int v10; // [esp+1Ch] [ebp-7Ch] char *v11; // [esp+20h] [ebp-78h] int v12; // [esp+24h] [ebp-74h] unsigned int v13; // [esp+28h] [ebp-70h] wchar_t *Block; // [esp+2Ch] [ebp-6Ch] wchar_t *String; // [esp+30h] [ebp-68h] size_t lpuexcpt; // [esp+38h] [ebp-60h] void *v18[2]; // [esp+78h] [ebp-20h] BYREF char v19[20]; // [esp+80h] [ebp-18h] BYREF *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = this + 8; v10 = this + 8; *(_WORD *)(this + 8) = 0; v18[0] = v19; LOBYTE(v9) = 0; std::wstring::_M_construct(v18, a3, a4, v9); String = (wchar_t *)v18[0]; v11 = (char *)v18[0] + 2 * (int)v18[1]; lpuexcpt = a4 - (_DWORD)a3; if ( (unsigned int)(a4 - (_DWORD)a3) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); Block = (wchar_t *)operator new[](2 * (a4 - (_DWORD)a3)); for ( i = std::collate::_M_transform(Block, String, lpuexcpt); ; i = std::collate::_M_transform(Block, String, lpuexcpt) ) { if ( lpuexcpt <= i ) { lpuexcpt = i + 1; operator delete[](Block); if ( lpuexcpt > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); Block = (wchar_t *)operator new[](2 * lpuexcpt); i = std::collate::_M_transform(Block, String, lpuexcpt); } if ( i > 0x1FFFFFFF - *(_DWORD *)(this + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append((_DWORD *)this, Block, i); v5 = &String[wcslen(String)]; if ( v11 == (char *)v5 ) break; String = v5 + 1; v12 = *(_DWORD *)(this + 4); v13 = v12 + 1; v6 = *(_DWORD *)this; if ( v10 == *(_DWORD *)this ) v7 = 7; else v7 = *(_DWORD *)(this + 8); if ( v13 > v7 ) { std::wstring::_M_mutate(this, v12, 0, 0, 1); v6 = *(_DWORD *)this; } *(_WORD *)(v6 + 2 * v12) = 0; *(_DWORD *)(this + 4) = v13; *(_WORD *)(v6 + 2 * v12 + 2) = 0; } operator delete[](Block); if ( v18[0] != v19 ) operator delete(v18[0]); return this; } // 48653D: variable 'v9' is possibly undefined //----- (004867C0) -------------------------------------------------------- int __thiscall std::collate::hash(void *this, unsigned __int16 *a2, unsigned int a3) { unsigned __int16 *v3; // edx int (__stdcall *v4)(unsigned __int16 *, unsigned int); // eax int result; // eax int v6; // ecx v3 = a2; v4 = *(int (__stdcall **)(unsigned __int16 *, unsigned int))(*(_DWORD *)this + 16); if ( v4 != std::collate::do_hash ) return v4(a2, a3); result = 0; if ( (unsigned int)a2 < a3 ) { do { v6 = *v3++; result = v6 + __ROL4__(result, 7); } while ( a3 > (unsigned int)v3 ); } return result; } //----- (00486810) -------------------------------------------------------- int __fastcall std::collate::compare(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (00486820) -------------------------------------------------------- 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; } //----- (00486850) -------------------------------------------------------- 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; } //----- (00486880) -------------------------------------------------------- int __stdcall std::messages::_M_convert_to_char(int a1) { return *(_DWORD *)a1; } //----- (00486890) -------------------------------------------------------- _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; } //----- (004868B0) -------------------------------------------------------- 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; } //----- (004868F0) -------------------------------------------------------- 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); } //----- (00486910) -------------------------------------------------------- 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); } //----- (00486950) -------------------------------------------------------- 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; } // 486A30: using guessed type int __stdcall std::messages::do_close(int); //----- (00486970) -------------------------------------------------------- _DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6) { void *v6; // eax _BYTE *Src; // edi size_t Size; // esi size_t v11[4]; // [esp+1Ch] [ebp-10h] BYREF v6 = this + 2; *this = this + 2; Src = *(_BYTE **)a6; Size = *(_DWORD *)(a6 + 4); if ( Size + *(_DWORD *)a6 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v11[0] = *(_DWORD *)(a6 + 4); if ( Size > 0xF ) { v6 = std::string::_M_create(v11, 0); *this = v6; this[2] = v11[0]; goto LABEL_10; } if ( Size != 1 ) { if ( !Size ) goto LABEL_6; LABEL_10: memcpy(v6, Src, Size); Size = v11[0]; v6 = (void *)*this; goto LABEL_6; } *((_BYTE *)this + 8) = *Src; LABEL_6: this[1] = Size; *((_BYTE *)v6 + Size) = 0; return this; } // 486970: using guessed type size_t var_10[4]; //----- (00486A20) -------------------------------------------------------- int __stdcall std::messages::do_open(int a1, int a2) { return 0; } //----- (00486A40) -------------------------------------------------------- int __stdcall std::messages::_M_convert_to_char(int a1) { return *(_DWORD *)a1; } //----- (00486A50) -------------------------------------------------------- _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; } //----- (00486A70) -------------------------------------------------------- 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; } //----- (00486AB0) -------------------------------------------------------- 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); } //----- (00486AD0) -------------------------------------------------------- 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); } //----- (00486B10) -------------------------------------------------------- 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; } // 486C00: using guessed type int __stdcall std::messages::do_close(int); //----- (00486B30) -------------------------------------------------------- _DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6) { _WORD *v6; // eax _WORD *Src; // ebp signed int Size; // esi int v10; // edi unsigned int v11; // edx unsigned int v13[8]; // [esp+1Ch] [ebp-20h] BYREF v6 = this + 2; *this = this + 2; Src = *(_WORD **)a6; Size = 2 * *(_DWORD *)(a6 + 4); if ( Size + *(_DWORD *)a6 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v10 = Size >> 1; v13[0] = Size >> 1; if ( (unsigned int)Size > 0xE ) { v6 = std::wstring::_M_create(v13, 0); *this = v6; this[2] = v13[0]; } if ( v10 == 1 ) { *v6 = *Src; } else if ( v10 ) { memcpy(v6, Src, Size); v6 = (_WORD *)*this; } v11 = v13[0]; this[1] = v13[0]; v6[v11] = 0; return this; } // 486B30: using guessed type unsigned int var_20[8]; //----- (00486BF0) -------------------------------------------------------- int __stdcall std::messages::do_open(int a1, int a2) { return 0; } //----- (00486C10) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) { void *v2; // ebp const char *Str; // edi size_t v5; // eax size_t Size; // esi void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 486C10: using guessed type size_t var_20[8]; //----- (00486CC0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) { void *v2; // ebp const char *Str; // edi size_t v5; // eax size_t Size; // esi void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 20); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 486CC0: using guessed type size_t var_20[8]; //----- (00486D70) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) { void *v2; // ebp const char *Str; // edi size_t v5; // eax size_t Size; // esi void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 28); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 486D70: using guessed type size_t var_20[8]; //----- (00486E20) -------------------------------------------------------- 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(); } //----- (00486E40) -------------------------------------------------------- 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(); } //----- (00486E60) -------------------------------------------------------- int __fastcall std::numpunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); } //----- (00486E70) -------------------------------------------------------- int __fastcall std::numpunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); } //----- (00486E80) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); if ( (char *)v3 == (char *)std::numpunct::do_grouping ) { Str = *(char **)(a2[2] + 8); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, Str, v5, v7); return this; } else { v3(a2); return this; } } // 486EC4: variable 'v7' is possibly undefined //----- (00486F00) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); if ( (char *)v3 == (char *)std::numpunct::do_truename ) { Str = *(char **)(a2[2] + 20); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, Str, v5, v7); return this; } else { v3(a2); return this; } } // 486F44: variable 'v7' is possibly undefined //----- (00486F80) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); if ( (char *)v3 == (char *)std::numpunct::do_falsename ) { Str = *(char **)(a2[2] + 28); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; LOBYTE(v7) = 0; std::string::_M_construct(this, Str, v5, v7); return this; } else { v3(a2); return this; } } // 486FC4: variable 'v7' is possibly undefined //----- (00487000) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) { void *v2; // esi const char *Str; // edi size_t v5; // eax size_t Size; // ebp void *v8; // eax size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF v2 = this + 2; Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v5 = strlen(Str); v9[0] = v5; Size = v5; if ( v5 > 0xF ) { v8 = std::string::_M_create(v9, 0); *this = v8; v2 = v8; this[2] = v9[0]; goto LABEL_9; } if ( v5 != 1 ) { if ( !v5 ) goto LABEL_5; LABEL_9: memcpy(v2, Str, Size); v5 = v9[0]; v2 = (void *)*this; goto LABEL_5; } *((_BYTE *)this + 8) = *Str; LABEL_5: this[1] = v5; *((_BYTE *)v2 + v5) = 0; return this; } // 487000: using guessed type size_t var_20[8]; //----- (004870B0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 20); *this = this + 2; v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 4870E8: variable 'v6' is possibly undefined //----- (00487100) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) { wchar_t *String; // esi int v4; // eax int v6; // [esp+8h] [ebp-14h] String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 28); *this = this + 2; v4 = -2; if ( String ) v4 = (int)&String[wcslen(String)]; LOBYTE(v6) = 0; std::wstring::_M_construct(this, String, v4, v6); return this; } // 487138: variable 'v6' is possibly undefined //----- (00487150) -------------------------------------------------------- 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(); } //----- (00487170) -------------------------------------------------------- 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(); } //----- (00487190) -------------------------------------------------------- int __fastcall std::numpunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); } //----- (004871A0) -------------------------------------------------------- int __fastcall std::numpunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); } //----- (004871B0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx char *Str; // esi int v5; // eax v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); if ( (char *)v3 == (char *)std::numpunct::do_grouping ) { Str = *(char **)(a2[2] + 8); *this = this + 2; v5 = -1; if ( Str ) v5 = (int)&Str[strlen(Str)]; std::string::_M_construct(this, Str, v5); return this; } else { v3(a2); return this; } } //----- (00487220) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); if ( (char *)v3 == (char *)std::numpunct::do_truename ) { String = *(wchar_t **)(a2[2] + 20); *this = 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 { v3(a2); return this; } } // 487265: variable 'v7' is possibly undefined //----- (004872A0) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) { void (__stdcall *v3)(_DWORD *); // edx wchar_t *String; // esi int v5; // eax int v7; // [esp+8h] [ebp-14h] v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); if ( (char *)v3 == (char *)std::numpunct::do_falsename ) { String = *(wchar_t **)(a2[2] + 28); *this = 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 { v3(a2); return this; } } // 4872E5: variable 'v7' is possibly undefined //----- (00487320) -------------------------------------------------------- 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(); } //----- (00487340) -------------------------------------------------------- _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+28h] [ebp-24h] char v16; // [esp+28h] [ebp-24h] 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 *))(*v8 + 36))(v8); v10 = 0; if ( v14 == -1 ) v10 = v15; if ( v14 == -1 ) v8 = 0; } } 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; } // 4873A9: variable 'v9' is possibly undefined //----- (00487450) -------------------------------------------------------- _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+28h] [ebp-24h] char v16; // [esp+28h] [ebp-24h] 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 *))(*v8 + 36))(v8); v10 = 0; if ( v14 == -1 ) v10 = v15; if ( v14 == -1 ) v8 = 0; } } 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; } // 4874B9: variable 'v9' is possibly undefined //----- (00487560) -------------------------------------------------------- _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; // ebx int v9; // eax char v10; // si char v11; // al int v13; // eax bool v14; // zf _DWORD *v15; // eax _DWORD *v16; // [esp+34h] [ebp-38h] char v17; // [esp+38h] [ebp-34h] int v18; // [esp+48h] [ebp-24h] BYREF int v19[8]; // [esp+4Ch] [ebp-20h] BYREF v19[0] = 0; v8 = std::time_get>::_M_extract_num(a1, a2, a3, a4, &v18, 0, 9999, 4u, a5, v19); v16 = v8; if ( v19[0] ) { *a6 |= 4u; } else { v9 = v18 - 1900; if ( v18 < 0 ) v9 = v18 + 100; *(_DWORD *)(a7 + 20) = v9; } v10 = v7 == -1; v17 = (v8 != 0) & v10; if ( v17 ) { v10 = 0; if ( v8[2] >= v8[3] ) { v13 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); v14 = v13 == -1; if ( v13 == -1 ) v10 = v17; v15 = 0; if ( !v14 ) v15 = v8; v16 = v15; } } v11 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v11 = 0; if ( a3[2] >= a3[3] ) v11 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; } } if ( v10 == v11 ) *a6 |= 2u; return v16; } // 4875F3: variable 'v7' is possibly undefined // 487560: using guessed type int var_20[8]; //----- (004876B0) -------------------------------------------------------- int __fastcall std::time_get>::get_weekday(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); } //----- (004876C0) -------------------------------------------------------- int std::time_get>::do_date_order() { return 0; } //----- (004876D0) -------------------------------------------------------- int __fastcall std::time_get>::get_monthname(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); } //----- (004876E0) -------------------------------------------------------- _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) { unsigned int v10; // ebp int v12; // eax int v13; // edi char v14; // al unsigned __int8 v15; // al unsigned int v16; // eax bool v17; // dl char v18; // bl int v19; // ebx char v20; // dl int (__stdcall *v21)(unsigned __int8, int); // eax int v23; // eax char *v24; // eax int v25; // eax int v26; // eax unsigned int v28; // [esp+20h] [ebp-2Ch] _BYTE *v29; // [esp+24h] [ebp-28h] bool v31; // [esp+2Fh] [ebp-1Dh] v10 = 10; v29 = std::use_facet>(a9 + 108); if ( a8 != 2 ) { v12 = 1; if ( a8 == 4 ) v12 = 1000; v10 = v12; } v28 = 0; v13 = 0; while ( 1 ) { v17 = a2 == -1; v18 = v17 && a1 != 0; if ( v18 ) { if ( a1[2] >= a1[3] ) { v25 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v17 = a2 == -1; if ( v25 != -1 ) v18 = 0; if ( v25 == -1 ) a1 = 0; } else { v18 = 0; } } else { v18 = a2 == -1; } if ( a3 && a4 == -1 ) { if ( a3[2] >= a3[3] ) { v31 = v17; v23 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v17 = v31; if ( v23 == -1 ) { a3 = 0; v18 ^= 1u; } } } else { v18 ^= a4 == -1; } if ( v28 >= a8 || !v18 ) break; if ( a1 && v17 ) { v24 = (char *)a1[2]; if ( (unsigned int)v24 >= a1[3] ) { v26 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); if ( v26 == -1 ) { v20 = -1; v19 = 255; a1 = 0; } else { v19 = (unsigned __int8)v26; v20 = v26; } } else { v19 = (unsigned __int8)*v24; v20 = *v24; } } else { v19 = (unsigned __int8)a2; v20 = a2; } v14 = v29[v19 + 285]; if ( !v14 ) { v21 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v29 + 32); if ( v21 != std::ctype::do_narrow ) v20 = v21(v20, 42); if ( v20 == 42 ) goto LABEL_27; v29[v19 + 285] = v20; v14 = v20; } v15 = v14 - 48; if ( v15 > 9u ) goto LABEL_27; v13 = (char)v15 + 10 * v13; if ( (int)(v13 * v10) > a7 || (int)(v10 + v13 * v10) <= a6 ) goto LABEL_27; v16 = a1[2]; v10 /= 0xAu; if ( v16 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v16 + 1; ++v28; a2 = -1; } if ( v28 == a8 ) { LABEL_30: *a5 = v13; return a1; } LABEL_27: if ( a8 == 4 && v28 == 2 ) { v13 -= 100; goto LABEL_30; } *a10 |= 4u; return a1; } //----- (004879A0) -------------------------------------------------------- _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+34h] [ebp-68h] char v19; // [esp+34h] [ebp-68h] _DWORD *v20; // [esp+38h] [ebp-64h] 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] ) { v12 = 0; v20 = v11; v17 = (*(int (**)(void))(*v11 + 36))(); v13 = 0; if ( v17 != -1 ) v12 = v20; if ( v17 == -1 ) v13 = v18; } } 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; } // 487AAF: variable 'v10' is possibly undefined //----- (00487B60) -------------------------------------------------------- unsigned __int64 __stdcall std::time_get>::_M_extract_name( unsigned __int64 a1, _DWORD *a2, int a3, _DWORD *a4, int a5, int a6, int a7, _DWORD *a8) { int v8; // eax void *v9; // esp void *v10; // esp unsigned __int8 v11; // dl unsigned __int8 v12; // bl int v14; // edx int v15; // esi unsigned int v16; // ebx int v17; // edi char v18; // al int v19; // ecx int *v20; // edi size_t v21; // eax unsigned int v22; // esi unsigned int v23; // ebx size_t v24; // eax unsigned int v25; // eax char v26; // si unsigned __int8 v27; // dl int *v28; // ecx unsigned int v29; // eax unsigned int i; // esi unsigned int v31; // eax int v32; // eax const char *v33; // edi const char *v34; // esi size_t v35; // eax unsigned int v36; // ebx unsigned __int8 v37; // dl char v38; // dl char v39; // di _BYTE *v40; // eax char v41; // di int v42; // eax bool v43; // zf int v44; // eax int v45; // eax bool v46; // zf _DWORD *v47; // eax int v48; // eax _BYTE *v49; // eax int v50; // eax int v51; // eax bool v52; // zf _DWORD *v53; // eax int v54; // eax int v55; // eax bool v56; // zf int v57; // eax int v58; // eax bool v59; // zf char v60; // dl char v61; // al int v62; // eax int v63; // eax int v64; // eax int v65; // eax int v66; // eax bool v67; // zf _DWORD *v68; // eax int v69; // [esp+10h] [ebp-38h] BYREF void *v70; // [esp+14h] [ebp-34h] _DWORD *v71; // [esp+18h] [ebp-30h] int v72; // [esp+1Ch] [ebp-2Ch] unsigned __int8 v73; // [esp+22h] [ebp-26h] unsigned __int8 v74; // [esp+23h] [ebp-25h] unsigned __int64 v75; // [esp+24h] [ebp-24h] const char *v76; // [esp+2Ch] [ebp-1Ch] v72 = HIDWORD(a1); v75 = a1; v71 = a2; v70 = std::use_facet>(a7 + 108); v8 = 16 * ((unsigned int)(4 * a6 + 27) >> 4); v9 = alloca(v8); v10 = alloca(v8); LOBYTE(v76) = HIDWORD(a1) == -1; if ( ((unsigned __int8)v76 & ((_DWORD)a1 != 0)) != 0 ) { if ( *(_DWORD *)(v75 + 8) >= *(_DWORD *)(v75 + 12) ) { v54 = *(_DWORD *)v75; v74 = (unsigned __int8)v76 & ((_DWORD)a1 != 0); v55 = (*(int (__fastcall **)(_DWORD))(v54 + 36))(v75); v11 = v74; v56 = v55 == -1; if ( v55 != -1 ) v11 = 0; v57 = 0; if ( !v56 ) v57 = v75; LODWORD(v75) = v57; } else { v11 = 0; } } else { v11 = (unsigned __int8)v76; } v74 = a3 == -1; v12 = v74 & (a2 != 0); if ( v12 ) { if ( a2[2] >= a2[3] ) { v50 = *a2; v73 = v11; v51 = (*(int (__fastcall **)(_DWORD *))(v50 + 36))(a2); v11 = v73; v52 = v51 == -1; if ( v51 != -1 ) v12 = 0; v53 = 0; if ( !v52 ) v53 = a2; v71 = v53; } else { v12 = 0; } } else { v12 = v74; } if ( v12 == v11 ) goto LABEL_6; if ( (_DWORD)v75 && (_BYTE)v76 ) { v49 = *(_BYTE **)(v75 + 8); if ( (unsigned int)v49 >= *(_DWORD *)(v75 + 12) ) { v58 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v75 + 36))(v75); v59 = v58 == -1; v60 = v58; v61 = -1; if ( !v59 ) v61 = v60; LOBYTE(v76) = v61; v62 = 0; if ( !v59 ) v62 = v75; LODWORD(v75) = v62; } else { LOBYTE(v76) = *v49; } } else { LOBYTE(v76) = v72; } if ( !a6 ) { LABEL_6: *a8 |= 4u; return v75; } v72 = (int)&v69; v14 = a5; v15 = 0; v16 = 0; v17 = (int)v70; do { while ( 1 ) { v19 = **(char **)(v14 + 4 * v15); if ( (_BYTE)v19 == (_BYTE)v76 ) break; a5 = v14; v18 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v17 + 8))(v17, v19); v14 = a5; if ( v18 == (_BYTE)v76 ) break; if ( a6 == ++v15 ) goto LABEL_17; } *(_DWORD *)(v72 + 4 * v16++) = v15++; } while ( a6 != v15 ); LABEL_17: v76 = 0; v20 = (int *)v72; if ( v16 <= 1 ) goto LABEL_39; do { v72 = *v20; v21 = strlen(*(const char **)(a5 + 4 * v72)); HIDWORD(v75) = v16; v22 = v21; v23 = 1; do { v24 = strlen(*(const char **)(a5 + 4 * v20[v23])); if ( v22 > v24 ) v22 = v24; ++v23; } while ( v23 < HIDWORD(v75) ); v16 = HIDWORD(v75); v25 = *(_DWORD *)(v75 + 8); if ( v25 >= *(_DWORD *)(v75 + 12) ) (*(void (__fastcall **)(_DWORD))(*(_DWORD *)v75 + 40))(v75); else *(_DWORD *)(v75 + 8) = v25 + 1; if ( (unsigned int)++v76 >= v22 ) goto LABEL_57; v26 = 0; if ( *(_DWORD *)(v75 + 8) >= *(_DWORD *)(v75 + 12) ) { v26 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v75 + 36))(v75) == -1; v48 = 0; if ( !v26 ) v48 = v75; LODWORD(v75) = v48; } if ( (v74 & (v71 != 0)) != 0 ) { if ( v71[2] < v71[3] ) { if ( !v26 ) goto LABEL_57; goto LABEL_29; } v44 = *v71; BYTE4(v75) = v74 & (v71 != 0); v45 = (*(int (__fastcall **)(_DWORD *))(v44 + 36))(v71); v27 = BYTE4(v75); v46 = v45 == -1; if ( v45 != -1 ) v27 = 0; v47 = 0; if ( !v46 ) v47 = v71; v71 = v47; } else { v27 = v74; } if ( v26 == v27 ) goto LABEL_57; LABEL_29: v28 = (int *)v75; v29 = v72; for ( i = 0; ; v29 = v20[i] ) { v14 = (unsigned __int8)v76[*(_DWORD *)(a5 + 4 * v29)]; LOBYTE(v29) = -1; if ( v28 ) { v29 = v28[2]; if ( v29 >= v28[3] ) { v42 = *v28; LOBYTE(v75) = v14; HIDWORD(v75) = v28; v29 = (*(int (**)(void))(v42 + 36))(); v43 = v29 == -1; if ( v29 == -1 ) LOBYTE(v29) = -1; v28 = (int *)HIDWORD(v75); if ( v43 ) v28 = 0; v14 = (unsigned __int8)v75; } else { LOBYTE(v29) = *(_BYTE *)v29; } } if ( (_BYTE)v14 == (_BYTE)v29 ) break; v20[i] = v20[--v16]; if ( v16 <= i ) goto LABEL_37; LABEL_31: ; } if ( v16 > ++i ) goto LABEL_31; LABEL_37: LODWORD(v75) = v28; } while ( v16 > 1 ); HIDWORD(v75) = -1; LABEL_39: if ( v16 != 1 ) goto LABEL_6; v31 = *(_DWORD *)(v75 + 8); if ( v31 >= *(_DWORD *)(v75 + 12) ) (*(void (__fastcall **)(_DWORD, int))(*(_DWORD *)v75 + 40))(v75, v14); else *(_DWORD *)(v75 + 8) = v31 + 1; v32 = *v20; v33 = *(const char **)(a5 + 4 * *v20); v72 = v32; v34 = v76 + 1; v35 = strlen(v33); HIDWORD(v75) = v35; if ( (unsigned int)(v76 + 1) < v35 ) { v76 = v33; v36 = v75; while ( 1 ) { v41 = 0; if ( *(_DWORD *)(v36 + 8) >= *(_DWORD *)(v36 + 12) ) { v41 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v36 + 36))(v36) == -1; if ( v41 ) v36 = 0; } if ( (v74 & (v71 != 0)) != 0 ) { if ( v71[2] >= v71[3] ) { v65 = *v71; LOBYTE(v75) = v74 & (v71 != 0); v66 = (*(int (__fastcall **)(_DWORD *))(v65 + 36))(v71); v37 = v75; v67 = v66 == -1; if ( v66 != -1 ) v37 = 0; v68 = 0; if ( !v67 ) v68 = v71; v71 = v68; } else { v37 = 0; } } else { v37 = v74; } if ( v41 == v37 ) { LABEL_95: v75 = v36 | 0xFFFFFFFF00000000LL; goto LABEL_6; } v38 = -1; v39 = v34[(_DWORD)v76]; if ( v36 ) { v40 = *(_BYTE **)(v36 + 8); if ( (unsigned int)v40 < *(_DWORD *)(v36 + 12) ) { if ( v39 != *v40 ) goto LABEL_95; goto LABEL_49; } v63 = *(_DWORD *)v36; LOBYTE(v75) = -1; v64 = (*(int (__fastcall **)(unsigned int))(v63 + 36))(v36); v38 = v75; if ( v64 != -1 ) v38 = v64; if ( v64 == -1 ) v36 = 0; } if ( v39 != v38 ) goto LABEL_95; v40 = *(_BYTE **)(v36 + 8); if ( (unsigned int)v40 >= *(_DWORD *)(v36 + 12) ) { (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v36 + 40))(v36); goto LABEL_50; } LABEL_49: *(_DWORD *)(v36 + 8) = v40 + 1; LABEL_50: if ( ++v34 == (const char *)HIDWORD(v75) ) { LODWORD(v75) = v36; goto LABEL_98; } } } if ( v34 != (const char *)v35 ) { LABEL_57: HIDWORD(v75) = -1; goto LABEL_6; } LABEL_98: HIDWORD(v75) = -1; *a4 = v72; return v75; } //----- (00488090) -------------------------------------------------------- _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+34h] [ebp-98h] char v19; // [esp+34h] [ebp-98h] _DWORD *v20; // [esp+38h] [ebp-94h] 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] ) { v12 = 0; v20 = v11; v17 = (*(int (**)(void))(*v11 + 36))(); v13 = 0; if ( v17 != -1 ) v12 = v20; if ( v17 == -1 ) v13 = v18; } } 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; } // 48823C: variable 'v10' is possibly undefined //----- (004882F0) -------------------------------------------------------- _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 *v10; // edi bool v11; // bl char v12; // dl char v13; // cl char v14; // al int (__stdcall *v15)(unsigned __int8, int); // eax char v16; // dl int v17; // eax int v18; // edx char v19; // al int (__stdcall *v20)(unsigned __int8, int); // eax char v21; // al int v23; // eax _BYTE *v24; // eax int v25; // esi int (__stdcall *v26)(unsigned __int8, int); // eax int v27; // edx int v28; // eax _DWORD *v29; // eax int v30; // eax unsigned __int64 v31; // kr00_8 char v32; // al void (__fastcall *v33)(_BYTE *, int, const char *, const char *, int *); // eax _DWORD *v34; // eax int v35; // edx int v36; // edx char v37; // al void (__fastcall *v38)(_BYTE *, int, const char *, const char *, int *); // eax int v39; // edx _DWORD *v40; // eax unsigned __int8 *v41; // eax int v42; // ebx int v43; // edx char v44; // al int (__stdcall *v45)(unsigned __int8, int); // eax unsigned int v46; // eax unsigned __int8 *v47; // eax int v48; // eax unsigned __int64 v49; // rax char v50; // si int v51; // esi char v52; // dl int v53; // esi char v54; // dl _DWORD *v55; // eax int v56; // edx int v57; // edx _DWORD *v58; // eax int v59; // eax unsigned __int64 v60; // kr08_8 _DWORD *v61; // eax int v62; // edx char v63; // al void (__fastcall *v64)(_BYTE *, int, const char *, void *, int *); // eax _DWORD *v65; // eax _DWORD *v66; // eax int v67; // edx unsigned __int8 *v68; // eax int v69; // eax int v70; // edx unsigned __int8 *v71; // eax int v72; // ebx char v73; // al int (__stdcall *v74)(unsigned __int8, int); // eax int v75; // eax bool v76; // zf _DWORD *v77; // eax int v78; // eax int v79; // eax int (__stdcall *v80)(unsigned __int8); // eax char *v81; // ecx int (__stdcall *v82)(unsigned __int8); // eax __int64 v83; // rax _BYTE *v84; // eax _BYTE *v85; // eax char *Str; // [esp+0h] [ebp-BCh] int v87; // [esp+14h] [ebp-A8h] int v88; // [esp+20h] [ebp-9Ch] size_t v90; // [esp+38h] [ebp-84h] char v91; // [esp+38h] [ebp-84h] char *v93; // [esp+44h] [ebp-78h] int v94; // [esp+44h] [ebp-78h] bool v95; // [esp+44h] [ebp-78h] size_t v96; // [esp+48h] [ebp-74h] int v97; // [esp+4Ch] [ebp-70h] char v98; // [esp+4Ch] [ebp-70h] _DWORD *v99; // [esp+54h] [ebp-68h] char v100; // [esp+5Ah] [ebp-62h] char v101; // [esp+5Ah] [ebp-62h] bool v102; // [esp+5Bh] [ebp-61h] int v103; // [esp+5Ch] [ebp-60h] int v104; // [esp+68h] [ebp-54h] BYREF int v105; // [esp+6Ch] [ebp-50h] BYREF int v106[3]; // [esp+70h] [ebp-4Ch] BYREF int v107; // [esp+7Ch] [ebp-40h] int v108; // [esp+80h] [ebp-3Ch] int v109; // [esp+84h] [ebp-38h] int v110; // [esp+88h] [ebp-34h] int v111; // [esp+8Ch] [ebp-30h] int v112; // [esp+90h] [ebp-2Ch] int v113; // [esp+94h] [ebp-28h] int v114; // [esp+98h] [ebp-24h] int v115; // [esp+9Ch] [ebp-20h] v8 = 0; v99 = std::use_facet>(a5 + 108); v10 = std::use_facet>(a5 + 108); v104 = 0; v96 = strlen(a8); while ( 1 ) { v11 = a2 == -1; if ( v11 && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v75 = (*(int (__thiscall **)(_DWORD *, char *))(*a1 + 36))(a1, Str); v12 = v11 && a1 != 0; if ( v75 != -1 ) v12 = 0; if ( v75 == -1 ) a1 = 0; } else { v12 = 0; } } else { v12 = a2 == -1; } v100 = a4 == -1; if ( a3 && a4 == -1 ) { if ( a3[2] >= a3[3] ) { v91 = v12; v23 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v12 = v91; if ( v23 == -1 ) { a3 = 0; v12 = v91 ^ 1; } } } else { v12 ^= v100; } if ( v8 >= v96 || !v12 ) break; if ( v104 ) goto LABEL_32; v93 = &a8[v8]; v90 = v8 + 1; v97 = (unsigned __int8)a8[v8]; v13 = a8[v8]; v14 = v10[v97 + 285]; if ( v14 ) { LABEL_15: if ( v14 != 37 ) goto LABEL_16; v94 = (unsigned __int8)a8[v8 + 1]; v18 = v94; v19 = v10[v94 + 285]; if ( !v19 ) { v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v20 != std::ctype::do_narrow ) v18 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v10, (char)v94, 0); if ( !(_BYTE)v18 ) { LABEL_47: v104 |= 4u; goto LABEL_48; } v10[v94 + 285] = v18; v19 = v18; } v105 = 0; if ( (v19 == 69 || v19 == 79) && (v90 = v8 + 2, v25 = (unsigned __int8)a8[v8 + 2], v19 = v10[v25 + 285], v18 = v25, !v19) ) { v26 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v26 != std::ctype::do_narrow ) v18 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v26)(v10, (char)v25, 0); if ( !(_BYTE)v18 ) goto LABEL_47; v10[v25 + 285] = v18; v21 = v18 - 65; if ( (unsigned __int8)(v18 - 65) > 0x38u ) goto LABEL_47; } else { v21 = v19 - 65; } switch ( v21 ) { case 0: v65 = (_DWORD *)v99[2]; v106[0] = v65[11]; v106[1] = v65[12]; v106[2] = v65[13]; v107 = v65[14]; v108 = v65[15]; v109 = v65[16]; v59 = v65[17]; goto LABEL_114; case 1: v40 = (_DWORD *)v99[2]; v106[0] = v40[25]; v106[1] = v40[26]; v106[2] = v40[27]; v107 = v40[28]; v108 = v40[29]; v109 = v40[30]; v110 = v40[31]; v111 = v40[32]; v112 = v40[33]; v113 = v40[34]; v114 = v40[35]; v30 = v40[36]; goto LABEL_57; case 2: case 24: case 56: a1 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v105, 0, 9999, 4u, a5, &v104); a2 = v27; if ( !v104 ) { v28 = v105 - 1900; if ( v105 < 0 ) v28 = v105 + 100; a7[5] = v28; } break; case 3: v32 = v10[28]; if ( v32 == 1 ) goto LABEL_156; if ( !v32 ) std::ctype::_M_widen_init((int)v10); v33 = *(void (__fastcall **)(_BYTE *, int, const char *, const char *, int *))(*(_DWORD *)v10 + 28); if ( (char *)v33 == (char *)std::ctype::do_widen ) LABEL_156: strcpy((char *)v106, "%m/%d/%y"); else v33(v10, v18, "%m/%d/%y", "%H:%M", v106); goto LABEL_155; case 7: v34 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v105, 0, 23, 2u, a5, &v104); goto LABEL_65; case 8: v34 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v105, 1, 12, 2u, a5, &v104); LABEL_65: a1 = v34; a2 = v35; if ( !v104 ) a7[2] = v105; break; case 12: a1 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v105, 0, 59, 2u, a5, &v104); a2 = v36; if ( !v104 ) a7[1] = v105; break; case 17: v37 = v10[28]; if ( v37 == 1 ) goto LABEL_157; if ( !v37 ) std::ctype::_M_widen_init((int)v10); v38 = *(void (__fastcall **)(_BYTE *, int, const char *, const char *, int *))(*(_DWORD *)v10 + 28); if ( (char *)v38 == (char *)std::ctype::do_widen ) LABEL_157: strcpy((char *)v106, "%H:%M"); else v38(v10, v18, "%H:%M", "%H:%M:%S", v106); goto LABEL_155; case 18: a1 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v105, 0, 60, 2u, a5, &v104); a2 = v39; if ( !v104 ) *a7 = v105; break; case 19: v63 = v10[28]; if ( v63 == 1 ) goto LABEL_154; if ( !v63 ) std::ctype::_M_widen_init((int)v10); v64 = *(void (__fastcall **)(_BYTE *, int, const char *, void *, int *))(*(_DWORD *)v10 + 28); if ( (char *)v64 == (char *)std::ctype::do_widen ) LABEL_154: strcpy((char *)v106, "%H:%M:%S"); else v64(v10, v18, "%H:%M:%S", &unk_55739E, v106); LABEL_155: v61 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, a2, (int)a3, a4, a5, (int)&v104, (int)a7, (char *)v106); goto LABEL_117; case 23: v61 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, a2, (int)a3, a4, a5, (int)&v104, (int)a7, *(char **)(v99[2] + 16)); goto LABEL_117; case 25: if ( a1 && a2 == -1 ) { v47 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v47 >= a1[3] ) { v48 = (*(int (__fastcall **)(_DWORD *, int))(*a1 + 36))(a1, v18); if ( v48 == -1 ) { v48 = 255; a1 = 0; } else { v48 = (unsigned __int8)v48; } } else { v48 = *v47; } } else { v48 = (unsigned __int8)a2; } if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * v48) & 1) == 0 ) goto LABEL_47; v49 = std::time_get>::_M_extract_name( __PAIR64__(a2, (unsigned int)a1), a3, a4, v106, (int)std::__timepunct_cache::_S_timezones, 14, a5, &v104); a1 = (_DWORD *)v49; v95 = HIDWORD(v49) == -1; v103 = HIDWORD(v49); a2 = HIDWORD(v49); BYTE4(v49) = v95; v102 = v95 && (_DWORD)v49 != 0; if ( v102 ) { BYTE4(v49) = 0; if ( *(_DWORD *)(v49 + 8) >= *(_DWORD *)(v49 + 12) ) { LODWORD(v49) = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v49 + 36))(v49); BYTE4(v49) = 0; if ( (_DWORD)v49 == -1 ) { BYTE4(v49) = v102; a1 = 0; v102 = 0; } } } v50 = v100 & (a3 != 0); if ( v50 ) { v100 = 0; if ( a3[2] >= a3[3] ) { v98 = BYTE4(v49); LODWORD(v49) = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); BYTE4(v49) = v98; v76 = (_DWORD)v49 == -1; if ( (_DWORD)v49 != -1 ) v50 = 0; v100 = v50; v77 = 0; if ( !v76 ) v77 = a3; a3 = v77; } } if ( BYTE4(v49) != v100 && !(v106[0] | v104) ) { LOBYTE(v51) = v103; if ( v102 ) { v84 = (_BYTE *)a1[2]; if ( (unsigned int)v84 >= a1[3] ) { v51 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); if ( v51 == -1 ) a1 = 0; } else { LOBYTE(v51) = *v84; } } if ( v10[28] ) { v52 = v10[74]; } else { std::ctype::_M_widen_init((int)v10); v52 = 45; v80 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v10 + 24); if ( v80 != std::ctype::do_widen ) { v52 = ((int (__fastcall *)(_BYTE *, int, int))v80)(v10, 45, 45); Str = v81; } } if ( (_BYTE)v51 == v52 ) goto LABEL_112; if ( a1 && v95 ) { v85 = (_BYTE *)a1[2]; if ( (unsigned int)v85 >= a1[3] ) { v53 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); if ( v53 == -1 ) a1 = 0; } else { LOBYTE(v53) = *v85; } } else { LOBYTE(v53) = v103; } if ( v10[28] ) { v54 = v10[72]; } else { std::ctype::_M_widen_init((int)v10); v54 = 43; v82 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v10 + 24); if ( v82 != std::ctype::do_widen ) { v83 = ((__int64 (__fastcall *)(_BYTE *, int, int))v82)(v10, 43, 43); Str = (char *)HIDWORD(v83); v54 = v83; } } if ( (_BYTE)v53 == v54 ) { LABEL_112: v55 = std::time_get>::_M_extract_num( a1, v103, a3, a4, v106, 0, 23, 2u, a5, &v104); a1 = std::time_get>::_M_extract_num( v55, v56, a3, a4, v106, 0, 59, 2u, a5, &v104); a2 = v57; } } break; case 32: v58 = (_DWORD *)v99[2]; v106[0] = v58[18]; v106[1] = v58[19]; v106[2] = v58[20]; v107 = v58[21]; v108 = v58[22]; v109 = v58[23]; v59 = v58[24]; LABEL_114: v110 = v59; v60 = std::time_get>::_M_extract_name( __PAIR64__(a2, (unsigned int)a1), a3, a4, &v105, (int)v106, 7, a5, &v104); a2 = HIDWORD(v60); a1 = (_DWORD *)v60; if ( !v104 ) a7[6] = v105; break; case 33: case 39: v29 = (_DWORD *)v99[2]; v106[0] = v29[37]; v106[1] = v29[38]; v106[2] = v29[39]; v107 = v29[40]; v108 = v29[41]; v109 = v29[42]; v110 = v29[43]; v111 = v29[44]; v112 = v29[45]; v113 = v29[46]; v114 = v29[47]; v30 = v29[48]; LABEL_57: v115 = v30; v31 = std::time_get>::_M_extract_name( __PAIR64__(a2, (unsigned int)a1), a3, a4, &v105, (int)v106, 12, a5, &v104); a2 = HIDWORD(v31); a1 = (_DWORD *)v31; if ( !v104 ) a7[4] = v105; break; case 34: v61 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, a2, (int)a3, a4, a5, (int)&v104, (int)a7, *(char **)(v99[2] + 24)); goto LABEL_117; case 35: v88 = a5; v87 = 1; goto LABEL_126; case 36: if ( a1 && a2 == -1 ) { v68 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v68 < a1[3] ) { if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * *v68) & 0x20) != 0 ) goto LABEL_133; goto LABEL_164; } v69 = (*(int (__fastcall **)(_DWORD *, int))(*a1 + 36))(a1, v18); if ( v69 == -1 ) a1 = 0; } else { LOBYTE(v69) = a2; } if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)v69) & 0x20) != 0 ) { v68 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v68 < a1[3] ) LABEL_133: a1[2] = v68 + 1; else (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); v66 = std::time_get>::_M_extract_num( a1, -1, a3, a4, &v105, 1, 9, 1u, a5, &v104); goto LABEL_127; } LABEL_164: v88 = a5; v87 = 10; LABEL_126: v66 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v105, v87, 31, 2u, v88, &v104); LABEL_127: a1 = v66; a2 = v67; if ( !v104 ) a7[3] = v105; break; case 44: a1 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v105, 1, 12, 2u, a5, &v104); a2 = v70; if ( !v104 ) a7[4] = v105 - 1; break; case 45: if ( a1 && a2 == -1 ) { v41 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v41 >= a1[3] ) { v79 = (*(int (__fastcall **)(_DWORD *, int))(*a1 + 36))(a1, v18); if ( v79 == -1 ) { v42 = 255; v43 = -1; a1 = 0; } else { v43 = v79; v42 = (unsigned __int8)v79; } } else { v42 = *v41; v43 = v42; } } else { v43 = a2; v42 = (unsigned __int8)a2; } v44 = v10[v42 + 285]; if ( v44 ) goto LABEL_88; v45 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v45 != std::ctype::do_narrow ) v43 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v45)(v10, (char)v43, 0); if ( (_BYTE)v43 ) { v10[v42 + 285] = v43; v44 = v43; LABEL_88: if ( v44 == 10 ) goto LABEL_89; } goto LABEL_47; case 51: if ( a1 && a2 == -1 ) { v71 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v71 >= a1[3] ) { v78 = (*(int (__fastcall **)(_DWORD *, int))(*a1 + 36))(a1, v18); if ( v78 == -1 ) { v72 = 255; v43 = -1; a1 = 0; } else { v43 = v78; v72 = (unsigned __int8)v78; } } else { v72 = *v71; v43 = v72; } } else { v43 = a2; v72 = (unsigned __int8)a2; } v73 = v10[v72 + 285]; if ( v73 ) goto LABEL_151; v74 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v74 != std::ctype::do_narrow ) v43 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v74)(v10, (char)v43, 0); if ( !(_BYTE)v43 ) goto LABEL_47; v10[v72 + 285] = v43; v73 = v43; LABEL_151: if ( v73 != 9 ) goto LABEL_47; LABEL_89: v46 = a1[2]; if ( v46 >= a1[3] ) (*(void (__fastcall **)(_DWORD *, int))(*a1 + 40))(a1, v43); else a1[2] = v46 + 1; a2 = -1; break; case 55: v61 = (_DWORD *)std::time_get>::_M_extract_via_format( (int)a1, a2, (int)a3, a4, a5, (int)&v104, (int)a7, *(char **)(v99[2] + 8)); LABEL_117: a1 = v61; a2 = v62; break; default: goto LABEL_47; } LABEL_48: v8 = v90 + 1; } else { v15 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v15 != std::ctype::do_narrow ) v13 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v15)(v10, (char)v97, 0); if ( v13 ) { v10[v97 + 285] = v13; v14 = v13; goto LABEL_15; } LABEL_16: v16 = *v93; if ( !a1 || a2 != -1 ) { LOBYTE(v17) = a2; goto LABEL_19; } v24 = (_BYTE *)a1[2]; if ( (unsigned int)v24 >= a1[3] ) { v101 = *v93; v17 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v16 = v101; if ( v17 == -1 ) a1 = 0; LABEL_19: if ( v16 != (_BYTE)v17 ) goto LABEL_20; v24 = (_BYTE *)a1[2]; if ( (unsigned int)v24 < a1[3] ) { LABEL_40: a1[2] = v24 + 1; goto LABEL_41; } (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); LABEL_41: a2 = -1; ++v8; } else { if ( v16 == *v24 ) goto LABEL_40; LABEL_20: v104 |= 4u; ++v8; } } } if ( v104 || v8 != v96 ) LABEL_32: *a6 |= 4u; return a1; } // 488668: variable 'v27' is possibly undefined // 4887E0: variable 'v18' is possibly undefined // 488846: variable 'v35' is possibly undefined // 4888F9: variable 'v36' is possibly undefined // 4889BF: variable 'v39' is possibly undefined // 488CA7: variable 'v56' is possibly undefined // 488CB1: variable 'v57' is possibly undefined // 488DD7: variable 'v62' is possibly undefined // 488ED9: variable 'v67' is possibly undefined // 489000: variable 'v70' is possibly undefined // 489129: variable 'Str' is possibly undefined // 489324: variable 'v81' is possibly undefined // 53F660: using guessed type void *std::__timepunct_cache::_S_timezones[2]; //----- (00489410) -------------------------------------------------------- _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 char v13; // bl unsigned int v14; // esi unsigned int v15; // edi char v16; // dl char v17; // bl unsigned int v18; // edx unsigned int *v19; // ecx unsigned int v20; // eax char *v22; // eax unsigned int v23; // eax int v24; // edx int v25; // ebx int v26; // esi char v27; // al int v28; // ecx unsigned int v29; // eax int v30; // eax void *v31; // esp void *v32; // esp int v33; // ebx int v34; // eax int v35; // eax _DWORD *v36; // ebx int v37; // eax char v38; // dl bool v39; // zf _DWORD *v40; // eax int v41; // eax bool v42; // zf _DWORD *v43; // eax _DWORD *v44; // ebx int v45; // eax int v46; // eax char v47; // dl bool v48; // zf _DWORD *v49; // eax _BYTE *v50; // eax int v51; // eax int v52; // eax bool v53; // zf _DWORD *v54; // eax _DWORD *v55; // edi int v56; // eax bool v57; // zf char v58; // si char v59; // al _DWORD *v60; // eax _BYTE v61[12]; // [esp+10h] [ebp-48h] BYREF _DWORD *v62; // [esp+1Ch] [ebp-3Ch] _DWORD *v63; // [esp+20h] [ebp-38h] int v64; // [esp+24h] [ebp-34h] _DWORD *v65; // [esp+28h] [ebp-30h] bool v66; // [esp+2Eh] [ebp-2Ah] char v67; // [esp+2Fh] [ebp-29h] char *v68; // [esp+30h] [ebp-28h] int *v69; // [esp+34h] [ebp-24h] int *v70; // [esp+38h] [ebp-20h] _DWORD *v71; // [esp+3Ch] [ebp-1Ch] v65 = a1; v64 = a2; v63 = a3; v68 = (char *)std::use_facet>(a8 + 108); v9 = 16 * ((8 * a7 + 27) >> 4); v10 = alloca(v9); v11 = alloca(v9); v70 = (int *)v61; v12 = a2 == -1; LOBYTE(v71) = v12 & (a1 != 0); if ( (_BYTE)v71 ) { v12 = 0; if ( v65[2] >= v65[3] ) { v34 = *v65; LOBYTE(v69) = 0; v35 = (*(int (__fastcall **)(_DWORD *))(v34 + 36))(v65); v12 = (char)v69; if ( v35 == -1 ) { v12 = (char)v71; v65 = 0; LOBYTE(v71) = 0; } } } v66 = a4 == -1; v13 = v66 && a3 != 0; if ( v13 ) { if ( a3[2] >= a3[3] ) { v51 = *a3; LOBYTE(v69) = v12; v52 = (*(int (__fastcall **)(_DWORD *))(v51 + 36))(a3); v12 = (char)v69; v53 = v52 == -1; if ( v52 != -1 ) v13 = 0; v54 = 0; if ( !v53 ) v54 = a3; v63 = v54; } else { v13 = 0; } } else { v13 = v66; } if ( v12 == v13 ) { v62 = 0; v14 = 0; v15 = 0; goto LABEL_6; } if ( (_BYTE)v71 ) { v50 = (_BYTE *)v65[2]; if ( (unsigned int)v50 >= v65[3] ) { v55 = v65; v56 = (*(int (__fastcall **)(_DWORD *))(*v65 + 36))(v65); v57 = v56 == -1; v58 = v56; v59 = -1; if ( !v57 ) v59 = v58; LOBYTE(v71) = v59; v60 = 0; if ( !v57 ) v60 = v55; v65 = v60; } else { LOBYTE(v71) = *v50; } } else { LOBYTE(v71) = a2; } v14 = 2 * a7; if ( !(2 * a7) ) { v62 = 0; v15 = 0; goto LABEL_6; } v69 = (int *)(2 * a7); v24 = a6; v25 = 0; v15 = 0; v26 = (int)v68; do { while ( 1 ) { v28 = **(char **)(v24 + 4 * v25); if ( (_BYTE)v28 == (_BYTE)v71 ) break; a6 = v24; v27 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v26 + 8))(v26, v28); v24 = a6; if ( v27 == (_BYTE)v71 ) break; if ( (int *)++v25 == v69 ) goto LABEL_50; } v70[v15++] = v25++; } while ( (int *)v25 != v69 ); LABEL_50: v62 = 0; v14 = 0; if ( v15 ) { v29 = v65[2]; if ( v29 >= v65[3] ) (*(void (__fastcall **)(_DWORD *, int))(*v65 + 40))(v65, v24); else v65[2] = v29 + 1; v30 = 16 * ((4 * v15 + 27) >> 4); v31 = alloca(v30); v14 = 0; v32 = alloca(v30); v71 = (_DWORD *)v15; v62 = v61; v69 = (int *)v61; v33 = (int)v70; do { v69[v14] = strlen(*(const char **)(a6 + 4 * *(_DWORD *)(v33 + 4 * v14))); ++v14; } while ( v71 != (_DWORD *)v14 ); v64 = -1; v15 = 1; } LABEL_6: while ( 2 ) { v16 = v64 == -1; LOBYTE(v71) = v16 & (v65 != 0); if ( (_BYTE)v71 ) { if ( v65[2] >= v65[3] ) { v44 = v65; v45 = *v65; LOBYTE(v69) = v64 == -1; v46 = (*(int (__fastcall **)(_DWORD *))(v45 + 36))(v65); v47 = (char)v71; v48 = v46 == -1; if ( v46 != -1 ) v47 = 0; v49 = 0; if ( !v48 ) v49 = v44; LOBYTE(v71) = v47; v16 = (char)v69; v65 = v49; } else { LOBYTE(v71) = 0; } } else { LOBYTE(v71) = v64 == -1; } v17 = v66 && v63 != 0; if ( v17 ) { if ( v63[2] < v63[3] ) { if ( !(_BYTE)v71 ) break; goto LABEL_11; } LOBYTE(v69) = v16; v41 = (*(int (__fastcall **)(_DWORD *))(*v63 + 36))(v63); v16 = (char)v69; v42 = v41 == -1; if ( v41 != -1 ) v17 = 0; v43 = 0; if ( !v42 ) v43 = v63; v63 = v43; } else { v17 = v66; } if ( (_BYTE)v71 == v17 ) break; LABEL_11: if ( v65 && v16 ) { v22 = (char *)v65[2]; if ( (unsigned int)v22 >= v65[3] ) { v36 = v65; v37 = (*(int (__fastcall **)(_DWORD *))(*v65 + 36))(v65); v38 = -1; v39 = v37 == -1; if ( v37 != -1 ) v38 = v37; v40 = 0; if ( !v39 ) v40 = v36; v67 = v38; v65 = v40; } else { v67 = *v22; } } else { v67 = v64; } if ( !v14 ) { LABEL_30: *a9 |= 4u; return v65; } v18 = 0; v68 = 0; v71 = v62; do { while ( 1 ) { v19 = &v71[v18]; if ( *v19 > v15 ) break; ++v68; ++v18; LABEL_17: if ( v14 <= v18 ) goto LABEL_21; } v69 = &v70[v18]; if ( v67 == *(_BYTE *)(*(_DWORD *)(a6 + 4 * *v69) + v15) ) { ++v18; goto LABEL_17; } *v69 = v70[--v14]; *v19 = v71[v14]; } while ( v14 > v18 ); LABEL_21: if ( v68 != (char *)v14 ) { v20 = v65[2]; if ( v20 >= v65[3] ) (*(void (__fastcall **)(_DWORD *))(*v65 + 40))(v65); else v65[2] = v20 + 1; v64 = -1; ++v15; continue; } break; } if ( v14 != 1 ) { if ( v14 == 2 && (*v62 == v15 || v62[1] == v15) ) goto LABEL_39; goto LABEL_30; } if ( *v62 != v15 ) goto LABEL_30; LABEL_39: v23 = *v70; if ( *v70 >= a7 ) v23 = *v70 - a7; *a5 = v23; return v65; } //----- (004898B0) -------------------------------------------------------- _DWORD *__thiscall std::time_get>::get( void *this, _DWORD *a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, unsigned __int8 *a9, unsigned __int8 *a10) { unsigned __int8 *v10; // edi _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 char v21; // bl char v22; // dl int (__stdcall *v23)(unsigned __int8, int); // eax unsigned __int8 v24; // dl int (__stdcall *v25)(unsigned __int8, int); // eax int v26; // ecx __int64 (__thiscall *v27)(void *, _DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, int, int); // eax _BYTE *v28; // eax char v29; // dl _BYTE *v30; // edi _DWORD *v31; // eax int v32; // edx char v33; // bl char v34; // dl char v35; // al unsigned __int8 *i; // edi int j; // ebp bool v39; // al bool v40; // di char v41; // dl char v42; // bl int v43; // eax unsigned __int8 *v44; // eax int v45; // edi char v46; // al int (__stdcall *v47)(unsigned __int8, int); // eax int (__stdcall *v48)(unsigned __int8); // eax __int64 v49; // kr00_8 char *v50; // eax int v51; // eax bool v52; // zf _DWORD *v53; // eax int v54; // eax char *v55; // eax signed __int8 v56; // al int v57; // eax int v58; // eax bool v59; // zf _DWORD *v60; // eax int v61; // eax int v62; // eax bool v63; // [esp+4Bh] [ebp-51h] bool v65; // [esp+50h] [ebp-4Ch] char v66; // [esp+50h] [ebp-4Ch] _DWORD *v67; // [esp+50h] [ebp-4Ch] char v68; // [esp+50h] [ebp-4Ch] char v70; // [esp+54h] [ebp-48h] bool v71; // [esp+54h] [ebp-48h] int v72; // [esp+58h] [ebp-44h] unsigned __int8 *v73; // [esp+58h] [ebp-44h] char v74; // [esp+58h] [ebp-44h] int v76; // [esp+60h] [ebp-3Ch] unsigned __int8 v77; // [esp+60h] [ebp-3Ch] int v78; // [esp+68h] [ebp-34h] char v79; // [esp+7Ch] [ebp-20h] BYREF char v80; // [esp+7Dh] [ebp-1Fh] char v81; // [esp+7Eh] [ebp-1Eh] char v82; // [esp+7Fh] [ebp-1Dh] unsigned __int8 *v83; // [esp+BCh] [ebp+20h] v10 = a9; v12 = std::use_facet>(a6 + 108); *a7 = 0; if ( a9 == a10 ) return a2; v63 = a5 == -1; while ( 1 ) { v65 = a3 == -1; if ( !v65 || a2 == 0 ) { v19 = a3 == -1; goto LABEL_19; } if ( a2[2] >= a2[3] ) { v57 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v19 = v65 && a2 != 0; if ( v57 != -1 ) v19 = 0; if ( v57 == -1 ) a2 = 0; LABEL_19: v20 = v63 && a4 != 0; if ( !v20 ) goto LABEL_20; goto LABEL_84; } v19 = 0; v20 = v63 && a4 != 0; if ( !v20 ) { LABEL_20: v20 = a5 == -1; goto LABEL_21; } LABEL_84: if ( a4[2] >= a4[3] ) { v74 = v19; v58 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v19 = v74; v59 = v58 == -1; if ( v58 != -1 ) v20 = 0; v60 = 0; if ( !v59 ) v60 = a4; a4 = v60; LABEL_21: if ( v19 == v20 ) goto LABEL_86; goto LABEL_22; } if ( !v19 ) { LABEL_86: *a7 = 6; return a2; } LABEL_22: v21 = *((_BYTE *)v12 + *v10 + 285); v72 = *v10; v22 = *v10; if ( !v21 ) { v23 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); if ( v23 != std::ctype::do_narrow ) v22 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v23)(v12, v22, 0); if ( !v22 ) goto LABEL_3; v21 = v22; *((_BYTE *)v12 + v72 + 285) = v22; } if ( v21 == 37 ) { v73 = v10 + 1; if ( a10 == v10 + 1 ) break; v76 = v10[1]; v24 = v10[1]; v66 = *((_BYTE *)v12 + v76 + 285); if ( !v66 ) { v25 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); if ( v25 != std::ctype::do_narrow ) v24 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v25)(v12, (char)v76, 0); if ( !v24 ) { v66 = 0; v26 = 0; v78 = 0; goto LABEL_37; } v66 = v24; *((_BYTE *)v12 + v76 + 285) = v24; } v24 = v66; if ( v66 == 69 || v66 == 79 ) { v73 = v10 + 2; if ( a10 == v10 + 2 ) break; v45 = v10[2]; v46 = *((_BYTE *)v12 + v45 + 285); v78 = v66; v24 = v45; if ( v46 ) { v26 = v46; v24 = *((_BYTE *)v12 + v45 + 285); } else { v26 = (char)v45; v47 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); if ( v47 != std::ctype::do_narrow ) { v56 = ((int (__fastcall *)(_DWORD *, int, _DWORD, _DWORD))v47)(v12, v45, (char)v45, 0); v26 = v56; v24 = v56; } if ( v24 ) *((_BYTE *)v12 + v45 + 285) = v24; } } else { v78 = 0; v26 = v66; v66 = 0; } LABEL_37: v77 = v24; v27 = *(__int64 (__thiscall **)(void *, _DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, int, int))(*(_DWORD *)this + 32); if ( (char *)v27 == (char *)std::time_get>::do_get ) { v28 = std::use_facet>(a6 + 108); v29 = v77; v30 = v28; *a7 = 0; if ( v28[28] ) { v21 = v28[66]; } else { std::ctype::_M_widen_init((int)v28); v29 = v77; v48 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v30 + 24); if ( v48 != std::ctype::do_widen ) { v21 = ((int (__fastcall *)(_BYTE *, _DWORD, int))v48)(v30, v77, 37); v29 = v77; } } v79 = v21; if ( v66 ) { v81 = v29; v82 = 0; v80 = v66; } else { v80 = v29; v81 = 0; } v31 = std::time_get>::_M_extract_via_format( a2, a3, a4, a5, a6, a7, a8, &v79); a2 = v31; v33 = v32 == -1; a3 = v32; v34 = v33 & (v31 != 0); if ( v34 ) { v33 = 0; if ( v31[2] >= v31[3] ) { v68 = v34; if ( (*(int (__fastcall **)(_DWORD *))(*v31 + 36))(v31) == -1 ) { v33 = v68; a2 = 0; } } } if ( a4 && a5 == -1 ) { v35 = 0; if ( a4[2] >= a4[3] ) v35 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4) == -1; } else { v35 = a5 == -1; } if ( v35 == v33 ) *a7 |= 2u; } else { v49 = v27(this, a2, a3, a4, a5, a6, a7, a8, v26, v78); a3 = HIDWORD(v49); a2 = (_DWORD *)v49; } v10 = v73 + 1; if ( a10 == v73 + 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; } v83 = i; v67 = v12; for ( j = a3; ; j = -1 ) { v39 = j == -1; v40 = v39; if ( v39 && a2 != 0 ) { if ( a2[2] >= a2[3] ) { v71 = v39 && a2 != 0; v54 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v41 = v71; if ( v54 != -1 ) v41 = 0; if ( v54 == -1 ) a2 = 0; } else { v41 = 0; } } else { v41 = j == -1; } v42 = v63 && a4 != 0; if ( !v42 ) break; if ( a4[2] >= a4[3] ) { v70 = v41; v51 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v41 = v70; v52 = v51 == -1; if ( v51 != -1 ) v42 = 0; v53 = 0; if ( !v52 ) v53 = a4; a4 = v53; LABEL_59: if ( v41 == v42 ) goto LABEL_72; goto LABEL_60; } if ( !v41 ) { LABEL_72: a3 = j; v10 = v83; v12 = v67; goto LABEL_15; } LABEL_60: if ( a2 && v40 ) { v44 = (unsigned __int8 *)a2[2]; if ( (unsigned int)v44 < a2[3] ) { if ( (*(_BYTE *)(v67[6] + 2 * *v44) & 0x20) == 0 ) { a3 = -1; v10 = v83; v12 = v67; goto LABEL_15; } LABEL_65: a2[2] = v44 + 1; continue; } v43 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); if ( v43 == -1 ) a2 = 0; } else { LOBYTE(v43) = j; } if ( (*(_BYTE *)(v67[6] + 2 * (unsigned __int8)v43) & 0x20) == 0 ) goto LABEL_72; v44 = (unsigned __int8 *)a2[2]; if ( (unsigned int)v44 < a2[3] ) goto LABEL_65; (*(void (__fastcall **)(_DWORD *))(*a2 + 40))(a2); } v42 = a5 == -1; goto LABEL_59; } if ( a2 && a3 == -1 ) { v50 = (char *)a2[2]; if ( (unsigned int)v50 >= a2[3] ) { v61 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v14 = v61; if ( v61 == -1 ) v14 = -1; if ( v61 == -1 ) a2 = 0; } else { v14 = *v50; } } 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 ) { v55 = (char *)a2[2]; if ( (unsigned int)v55 >= a2[3] ) { v62 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v16 = v62; if ( v62 == -1 ) v16 = -1; if ( v62 == -1 ) a2 = 0; } else { v16 = *v55; } } 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 = a2[2]; if ( v18 >= a2[3] ) (*(void (__fastcall **)(_DWORD *))(*a2 + 40))(a2); else a2[2] = v18 + 1; a3 = -1; ++v10; LABEL_15: if ( a10 == v10 ) return a2; LABEL_16: if ( *a7 ) return a2; } *a7 = 4; return a2; } // 48A011: conditional instruction was optimized away because eax.4==FFFFFFFF // 489BA7: variable 'v32' is possibly undefined //----- (0048A140) -------------------------------------------------------- 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; // eax char v12; // dl _DWORD *v13; // esi int v14; // edx char v15; // dl char v16; // al int (__stdcall *v18)(unsigned __int8); // eax int v19; // eax int v20; // eax char v21; // [esp+24h] [ebp-48h] char v22; // [esp+28h] [ebp-44h] _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); v12 = 37; v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v23 + 24); if ( v18 != std::ctype::do_widen ) v12 = v18(37u); } v24 = v12; if ( a10 ) { v27 = 0; v25 = a10; 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; v22 = v15 & (v13 != 0); if ( v22 ) { v15 = 0; if ( v13[2] >= v13[3] ) { v20 = (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13); v15 = 0; if ( v20 == -1 ) v15 = v22; if ( v20 == -1 ) v13 = 0; } } v16 = a5 == -1; if ( a4 ) { if ( a5 == -1 ) { v16 = 0; if ( a4[2] >= a4[3] ) { v21 = v15; v19 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v15 = v21; v16 = v19 == -1; } } } if ( v15 == v16 ) *a7 |= 2u; return (int)v13; } // 48A221: variable 'v14' is possibly undefined //----- (0048A380) -------------------------------------------------------- _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; // dl _DWORD *v11; // esi int v12; // edx char v13; // dl char v14; // bp char v15; // al int (__stdcall *v17)(unsigned __int8); // eax int v18; // eax 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); v10 = 37; v17 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v9 + 24); if ( v17 != std::ctype::do_widen ) v10 = ((int (__fastcall *)(_BYTE *, int, int))v17)(v9, 37, 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 *))(*v11 + 36))(v11); v13 = 0; if ( v19 == -1 ) { v13 = v14; v11 = 0; } } } v15 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v15 = 0; if ( a3[2] >= a3[3] ) { v20 = v13; v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v13 = v20; v15 = v18 == -1; } } } if ( v13 == v15 ) *a6 |= 2u; return v11; } // 48A529: conditional instruction was optimized away because eax.4==FFFFFFFF // 48A43D: variable 'v12' is possibly undefined //----- (0048A540) -------------------------------------------------------- int __fastcall std::time_get>::get_date(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); } //----- (0048A550) -------------------------------------------------------- int __fastcall std::time_get>::get_time(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); } //----- (0048A560) -------------------------------------------------------- int __fastcall std::time_get>::get_year(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); } //----- (0048A570) -------------------------------------------------------- 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(); } //----- (0048A590) -------------------------------------------------------- int *__stdcall std::time_get>::do_get_date( int *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { _DWORD *v7; // eax int *v8; // ecx int *v9; // ebp __int16 v10; // dx _BOOL2 v11; // bx bool v12; // cl __int16 *v14; // eax __int16 v15; // ax bool v16; // si __int16 *v17; // eax __int16 v18; // ax int *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)); v9 = v8; v11 = v10 == -1; if ( v11 && v8 != 0 ) { v16 = v11 && v8 != 0; v17 = (__int16 *)v8[2]; if ( (unsigned int)v17 >= v8[3] ) { v19 = v8; v18 = (*(int (**)(void))(*v8 + 36))(); v8 = v19; } else { v18 = *v17; } LOBYTE(v11) = 0; v9 = 0; if ( v18 == -1 ) LOBYTE(v11) = v16; if ( v18 != -1 ) v9 = 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 ( v11 == v12 ) *a6 |= 2u; return v9; } // 48A60F: variable 'v10' is possibly undefined //----- (0048A6C0) -------------------------------------------------------- int *__stdcall std::time_get>::do_get_time( int *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { _DWORD *v7; // eax int *v8; // ecx int *v9; // ebp __int16 v10; // dx _BOOL2 v11; // bx bool v12; // cl __int16 *v14; // eax __int16 v15; // ax bool v16; // si __int16 *v17; // eax __int16 v18; // ax int *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)); v9 = v8; v11 = v10 == -1; if ( v11 && v8 != 0 ) { v16 = v11 && v8 != 0; v17 = (__int16 *)v8[2]; if ( (unsigned int)v17 >= v8[3] ) { v19 = v8; v18 = (*(int (**)(void))(*v8 + 36))(); v8 = v19; } else { v18 = *v17; } LOBYTE(v11) = 0; v9 = 0; if ( v18 == -1 ) LOBYTE(v11) = v16; if ( v18 != -1 ) v9 = 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 ( v11 == v12 ) *a6 |= 2u; return v9; } // 48A73F: variable 'v10' is possibly undefined //----- (0048A7F0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_year( _DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7) { __int16 v7; // dx _DWORD *v8; // ecx _DWORD *v9; // ebp int v10; // ebx char v11; // bl char v12; // cl __int16 *v14; // eax __int16 v15; // ax __int16 *v16; // eax __int16 v17; // ax bool v18; // zf _DWORD *v19; // eax char v20; // [esp+40h] [ebp-3Ch] _DWORD *v21; // [esp+44h] [ebp-38h] int v22; // [esp+58h] [ebp-24h] BYREF int v23[8]; // [esp+5Ch] [ebp-20h] BYREF v23[0] = 0; v8 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v22, 0, 9999, 4u, a5, v23); v9 = v8; if ( v23[0] ) { *a6 |= 4u; } else { v10 = v22 + 100; if ( v22 >= 0 ) v10 = v22 - 1900; *(_DWORD *)(a7 + 20) = v10; } v11 = v7 == -1; v20 = v11 & (v8 != 0); if ( v20 ) { v16 = (__int16 *)v8[2]; if ( (unsigned int)v16 >= v8[3] ) { v21 = v8; v17 = (*(int (**)(void))(*v8 + 36))(); v8 = v21; } else { v17 = *v16; } v18 = v17 == -1; v11 = 0; if ( v17 == -1 ) v11 = v20; v19 = 0; if ( !v18 ) v19 = v8; v9 = v19; } v12 = a4 == -1; if ( a3 && a4 == -1 ) { v14 = (__int16 *)a3[2]; if ( (unsigned int)v14 >= a3[3] ) v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v15 = *v14; v12 = v15 == -1; } if ( v12 == v11 ) *a6 |= 2u; return v9; } // 48A8AD: variable 'v7' is possibly undefined // 48A7F0: using guessed type int var_20[8]; //----- (0048A960) -------------------------------------------------------- int __fastcall std::time_get>::get_weekday(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); } //----- (0048A970) -------------------------------------------------------- int std::time_get>::do_date_order() { return 0; } //----- (0048A980) -------------------------------------------------------- int __fastcall std::time_get>::get_monthname(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); } //----- (0048A990) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_num( _DWORD *a1, unsigned __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; // eax int v13; // edi char v14; // dl char v15; // bl int v16; // edx unsigned __int8 v17; // al unsigned int v18; // eax __int16 *v19; // eax __int16 v20; // ax __int16 *v21; // eax __int16 v22; // ax bool v23; // zf _DWORD *v24; // eax unsigned __int16 *v26; // eax bool v27; // [esp+1Bh] [ebp-31h] unsigned int v28; // [esp+1Ch] [ebp-30h] void *v30; // [esp+24h] [ebp-28h] char v32; // [esp+2Eh] [ebp-1Eh] char v33; // [esp+2Fh] [ebp-1Dh] v10 = 10; v30 = std::use_facet>(a9 + 108); if ( a8 != 2 ) { v12 = 1; if ( a8 == 4 ) v12 = 1000; v10 = v12; } v28 = 0; v32 = a4 == -1; v13 = 0; while ( 1 ) { v27 = a2 == 0xFFFF; v14 = v27 && a1 != 0; if ( v14 ) break; v14 = a2 == 0xFFFF; v15 = v32 & (a3 != 0); if ( v15 ) goto LABEL_26; LABEL_7: if ( v14 == v32 ) goto LABEL_33; LABEL_8: if ( v28 >= a8 ) goto LABEL_33; if ( a1 && a2 == 0xFFFF ) { v26 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v26 >= a1[3] ) v16 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v16 = *v26; if ( (_WORD)v16 == 0xFFFF ) a1 = 0; } else { v16 = a2; } v17 = (*(int (__thiscall **)(void *, int, int))(*(_DWORD *)v30 + 48))(v30, v16, 42) - 48; if ( v17 > 9u ) goto LABEL_34; v13 = (char)v17 + 10 * v13; if ( (int)(v13 * v10) > a7 || (int)(v10 + v13 * v10) <= a6 ) goto LABEL_34; v18 = a1[2]; v10 /= 0xAu; if ( v18 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v18 + 2; ++v28; a2 = -1; } v19 = (__int16 *)a1[2]; if ( (unsigned int)v19 >= a1[3] ) { v20 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v14 = v27 && a1 != 0; } else { v20 = *v19; } if ( v20 == -1 ) a1 = 0; if ( v20 != -1 ) v14 = 0; v15 = v32 & (a3 != 0); if ( !v15 ) goto LABEL_7; LABEL_26: v21 = (__int16 *)a3[2]; if ( (unsigned int)v21 >= a3[3] ) { v33 = v14; v22 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v14 = v33; } else { v22 = *v21; } v23 = v22 == -1; v24 = 0; if ( !v23 ) v24 = a3; a3 = v24; if ( !v23 ) v15 = 0; if ( v14 != v15 ) goto LABEL_8; LABEL_33: if ( v28 == a8 ) { LABEL_37: *a5 = v13; return a1; } LABEL_34: if ( a8 == 4 && v28 == 2 ) { v13 -= 100; goto LABEL_37; } *a10 |= 4u; return a1; } //----- (0048AC10) -------------------------------------------------------- _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] unsigned 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 = 0; v12 = 0; if ( v20 == -1 ) v13 = v14; if ( v20 != -1 ) v12 = 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; } // 48AD3D: variable 'v10' is possibly undefined //----- (0048AE00) -------------------------------------------------------- int __stdcall std::time_get>::_M_extract_name( int *a1, int a2, _DWORD *a3, int a4, int **a5, int a6, int a7, int a8, _DWORD *a9) { void *v9; // edi int v10; // eax void *v11; // esp void *v12; // esp int *v13; // edx char v14; // bl int v15; // eax int v17; // ebx int v18; // edx size_t v19; // esi __int16 v20; // ax int v21; // ecx int *v22; // edx int *v23; // ebx int *v24; // edi size_t v25; // eax unsigned int v26; // ebx unsigned int v27; // esi size_t v28; // eax unsigned int v29; // edi unsigned int v30; // eax __int16 *v31; // eax __int16 v32; // ax bool v33; // zf int v34; // eax char v35; // di char v36; // dl int *v37; // ecx size_t v38; // edi int i; // eax __int16 v40; // ax __int16 *v41; // eax unsigned int v42; // eax int v43; // ebx const wchar_t *v44; // edi unsigned int v45; // ebx int *v46; // esi unsigned int v47; // eax __int16 *v48; // eax __int16 v49; // ax char v50; // di char v51; // dl wchar_t v52; // di __int16 v53; // ax _WORD *v54; // eax __int16 *v55; // eax __int16 v56; // ax bool v57; // zf _DWORD *v58; // eax int v59; // eax __int16 *v60; // eax __int16 v61; // ax bool v62; // zf int v63; // eax char v64; // cl __int16 *v65; // eax __int16 v66; // ax bool v67; // zf _DWORD *v68; // eax _WORD *v69; // eax int v70; // eax int v71; // eax int v72; // eax __int16 v73; // ax __int16 *v74; // eax __int16 v75; // ax bool v76; // zf _DWORD *v77; // eax int v78; // [esp+10h] [ebp-38h] BYREF _DWORD *v79; // [esp+14h] [ebp-34h] bool v80; // [esp+1Bh] [ebp-2Dh] int *v81; // [esp+1Ch] [ebp-2Ch] int *v82; // [esp+20h] [ebp-28h] int *v83; // [esp+24h] [ebp-24h] const wchar_t *v84; // [esp+28h] [ebp-20h] size_t v85; // [esp+2Ch] [ebp-1Ch] v81 = (int *)a4; v78 = a2; LOWORD(v84) = a2; v82 = a1; v79 = a3; v9 = std::use_facet>(a8 + 108); v10 = 16 * ((unsigned int)(4 * a7 + 27) >> 4); v11 = alloca(v10); v12 = alloca(v10); v13 = &v78; LOBYTE(v85) = (_WORD)a2 == 0xFFFF; LOBYTE(v83) = v85 & (a1 != 0); if ( (_BYTE)v83 ) { v60 = (__int16 *)a1[2]; if ( (unsigned int)v60 >= a1[3] ) { v72 = *a1; v82 = &v78; v61 = (*(int (__fastcall **)(int *))(v72 + 36))(a1); v13 = v82; } else { v61 = *v60; } v62 = v61 == -1; v63 = 0; v64 = (char)v83; if ( !v62 ) v63 = (int)a1; v82 = (int *)v63; if ( !v62 ) v64 = 0; LOBYTE(v83) = v64; } else { LOBYTE(v83) = v85; } v80 = (_WORD)v81 == 0xFFFF; v14 = v80 && a3 != 0; if ( v14 ) { v65 = (__int16 *)a3[2]; if ( (unsigned int)v65 >= a3[3] ) { v71 = *a3; v81 = v13; v66 = (*(int (__fastcall **)(_DWORD *))(v71 + 36))(a3); v13 = v81; } else { v66 = *v65; } v67 = v66 == -1; v68 = 0; if ( !v67 ) v68 = a3; v79 = v68; if ( !v67 ) v14 = 0; } else { v14 = v80; } if ( v14 == (_BYTE)v83 ) goto LABEL_6; if ( v82 && (_BYTE)v85 ) { v69 = (_WORD *)v82[2]; if ( (unsigned int)v69 >= v82[3] ) { v83 = v13; v73 = (*(int (__fastcall **)(int *))(*v82 + 36))(v82); v13 = v83; LOWORD(v85) = v73; } else { LOWORD(v85) = *v69; } v70 = 0; if ( (_WORD)v85 != 0xFFFF ) v70 = (int)v82; v82 = (int *)v70; } else { LOWORD(v85) = (_WORD)v84; } if ( !a7 ) goto LABEL_6; v83 = v13; v17 = 0; v18 = a6; v19 = 0; do { while ( 1 ) { v21 = **(unsigned __int16 **)(v18 + 4 * v17); if ( (_WORD)v21 == (_WORD)v85 ) break; a6 = v18; v20 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 24))(v9, v21); v18 = a6; if ( v20 == (_WORD)v85 ) break; if ( a7 == ++v17 ) goto LABEL_17; } v83[v19++] = v17++; } while ( a7 != v17 ); LABEL_17: v22 = v83; v83 = 0; if ( v19 <= 1 ) goto LABEL_44; v23 = v22; do { v24 = v23; v81 = (int *)*v23; v25 = wcslen(*(const wchar_t **)(a6 + 4 * (_DWORD)v81)); v85 = v19; v26 = 1; v27 = v25; do { v28 = wcslen(*(const wchar_t **)(a6 + 4 * v24[v26])); if ( v27 > v28 ) v27 = v28; ++v26; } while ( v26 < v85 ); v23 = v24; v29 = v27; v19 = v85; v30 = v82[2]; if ( v30 >= v82[3] ) (*(void (__fastcall **)(int *))(*v82 + 40))(v82); else v82[2] = v30 + 2; v83 = (int *)((char *)v83 + 1); if ( (unsigned int)v83 >= v29 ) goto LABEL_73; v31 = (__int16 *)v82[2]; if ( (unsigned int)v31 >= v82[3] ) v32 = (*(int (__fastcall **)(int *))(*v82 + 36))(v82); else v32 = *v31; v33 = v32 == -1; v34 = 0; if ( !v33 ) v34 = (int)v82; v82 = (int *)v34; v35 = v33; v36 = v80 && v79 != 0; if ( v36 ) { v55 = (__int16 *)v79[2]; if ( (unsigned int)v55 >= v79[3] ) { LOBYTE(v85) = v80 && v79 != 0; v56 = (*(int (__fastcall **)(_DWORD *))(*v79 + 36))(v79); v36 = v85; } else { v56 = *v55; } v57 = v56 == -1; v58 = 0; if ( !v57 ) v58 = v79; v79 = v58; if ( !v57 ) v36 = 0; if ( v35 == v36 ) goto LABEL_73; } else if ( v33 == v80 ) { goto LABEL_73; } v37 = v82; v38 = 0; v84 = (const wchar_t *)(2 * (_DWORD)v83); for ( i = (int)v81; ; i = v23[v38] ) { LOWORD(v85) = *(const wchar_t *)((char *)v84 + *(_DWORD *)(a6 + 4 * i)); v40 = -1; if ( v37 ) { v41 = (__int16 *)v37[2]; if ( (unsigned int)v41 >= v37[3] ) { v59 = *v37; v82 = v37; v40 = (*(int (**)(void))(v59 + 36))(); v37 = v82; } else { v40 = *v41; } if ( v40 == -1 ) v37 = 0; } if ( (_WORD)v85 == v40 ) break; v23[v38] = v23[--v19]; if ( v19 <= v38 ) goto LABEL_42; LABEL_34: ; } if ( v19 > ++v38 ) goto LABEL_34; LABEL_42: v82 = v37; } while ( v19 > 1 ); LOWORD(v84) = -1; v22 = v23; LABEL_44: if ( v19 == 1 ) { v42 = v82[2]; if ( v42 >= v82[3] ) { v85 = (size_t)v22; (*(void (__fastcall **)(int *))(*v82 + 40))(v82); v22 = (int *)v85; } else { v82[2] = v42 + 2; } v43 = (int)v83; v44 = *(const wchar_t **)(a6 + 4 * *v22); v83 = (int *)*v22; v45 = v43 + 1; v85 = wcslen(v44); if ( v45 < v85 ) { v84 = v44; v46 = v82; do { v48 = (__int16 *)v46[2]; if ( (unsigned int)v48 >= v46[3] ) v49 = (*(int (__fastcall **)(int *))(*v46 + 36))(v46); else v49 = *v48; v50 = v49 == -1; if ( v49 == -1 ) v46 = 0; v51 = v80 && v79 != 0; if ( v51 ) { v74 = (__int16 *)v79[2]; if ( (unsigned int)v74 >= v79[3] ) { LOBYTE(v82) = v80 && v79 != 0; v75 = (*(int (__fastcall **)(_DWORD *))(*v79 + 36))(v79); v51 = (char)v82; } else { v75 = *v74; } v76 = v75 == -1; v77 = 0; if ( !v76 ) v77 = v79; v79 = v77; if ( !v76 ) v51 = 0; } else { v51 = v80; } if ( v51 == v50 ) goto LABEL_108; v52 = v84[v45]; v53 = -1; if ( v46 ) { v54 = (_WORD *)v46[2]; v53 = (unsigned int)v54 >= v46[3] ? (*(int (__fastcall **)(int *))(*v46 + 36))(v46) : *v54; if ( v53 == -1 ) v46 = 0; } if ( v52 != v53 ) { LABEL_108: v82 = v46; LOWORD(v84) = -1; goto LABEL_6; } v47 = v46[2]; if ( v47 >= v46[3] ) (*(void (__fastcall **)(int *))(*v46 + 40))(v46); else v46[2] = v47 + 2; ++v45; } while ( v45 < v85 ); v82 = v46; } if ( v85 == v45 ) { *a5 = v83; LOWORD(v84) = -1; goto LABEL_7; } LABEL_73: LOWORD(v84) = -1; } LABEL_6: *a9 |= 4u; LABEL_7: HIWORD(v15) = HIWORD(v78); LOWORD(v15) = (_WORD)v84; v78 = v15; return (int)v82; } //----- (0048B350) -------------------------------------------------------- _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] unsigned 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 = 0; v12 = 0; if ( v20 == -1 ) v13 = v14; if ( v20 != -1 ) v12 = 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; } // 48B51A: variable 'v10' is possibly undefined //----- (0048B5E0) -------------------------------------------------------- int *__stdcall std::time_get>::_M_extract_via_format( int *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, wchar_t *String) { int v8; // ebp void *v9; // esi size_t v10; // edi char v11; // dl char v12; // bl size_t v13; // ebx char v14; // al unsigned __int8 v15; // al wchar_t v16; // bx unsigned __int16 v17; // ax __int16 *v19; // eax __int16 v20; // ax bool v21; // zf int *v22; // eax __int16 *v23; // eax __int16 v24; // ax bool v25; // zf _DWORD *v26; // eax unsigned int v27; // eax unsigned __int16 *v28; // eax int *v29; // edi unsigned __int16 v30; // dx int *v31; // eax _DWORD *v32; // eax int *v33; // eax unsigned __int16 v34; // dx _DWORD *v35; // eax int *v36; // eax unsigned __int16 v37; // dx unsigned __int16 v38; // dx int *v39; // eax unsigned __int16 v40; // dx unsigned __int16 v41; // dx unsigned __int16 v42; // dx unsigned __int16 v43; // dx unsigned __int16 v44; // ax int *v45; // eax unsigned __int16 v46; // dx unsigned __int16 v47; // di char v48; // dl char v49; // bl unsigned __int16 v50; // bx _DWORD *v51; // eax unsigned __int16 v52; // dx unsigned __int16 v53; // dx int *v54; // eax unsigned __int16 v55; // dx int *v56; // eax unsigned __int16 v57; // dx unsigned __int16 v58; // dx _DWORD *v59; // eax _DWORD *v60; // eax unsigned __int16 v61; // dx unsigned __int16 v62; // ax unsigned int v63; // eax unsigned __int16 v64; // dx unsigned __int16 v65; // dx unsigned __int16 v66; // ax unsigned int v67; // eax unsigned __int16 v68; // ax unsigned __int16 v69; // dx unsigned __int16 *v70; // eax int *v71; // edi unsigned __int16 *v72; // eax int *v73; // edi unsigned __int16 *v74; // eax int *v75; // edi unsigned __int16 *v76; // eax int *v77; // edi __int16 *v78; // eax __int16 v79; // ax bool v80; // zf _DWORD *v81; // eax _WORD *v82; // edx __int16 v83; // ax unsigned __int16 *v84; // eax int *v85; // eax unsigned __int16 *v86; // eax int *v87; // eax bool v88; // [esp+5Fh] [ebp-12Dh] bool v89; // [esp+5Fh] [ebp-12Dh] size_t v92; // [esp+68h] [ebp-124h] char v93; // [esp+68h] [ebp-124h] size_t v94; // [esp+6Ch] [ebp-120h] bool v95; // [esp+70h] [ebp-11Ch] _DWORD *v96; // [esp+7Ch] [ebp-110h] unsigned __int16 v97; // [esp+80h] [ebp-10Ch] unsigned __int16 v98; // [esp+84h] [ebp-108h] bool v99; // [esp+86h] [ebp-106h] char v100; // [esp+87h] [ebp-105h] int v101; // [esp+138h] [ebp-54h] BYREF int *v102; // [esp+13Ch] [ebp-50h] BYREF wchar_t v103[2]; // [esp+140h] [ebp-4Ch] BYREF int v104; // [esp+144h] [ebp-48h] int v105; // [esp+148h] [ebp-44h] int v106; // [esp+14Ch] [ebp-40h] int v107; // [esp+150h] [ebp-3Ch] int v108; // [esp+154h] [ebp-38h] int v109; // [esp+158h] [ebp-34h] int v110; // [esp+15Ch] [ebp-30h] int v111; // [esp+160h] [ebp-2Ch] int v112; // [esp+164h] [ebp-28h] int v113; // [esp+168h] [ebp-24h] int v114; // [esp+16Ch] [ebp-20h] HIWORD(v8) = HIWORD(a2); v98 = a2; v96 = std::use_facet>(a5 + 108); v9 = std::use_facet>(a5 + 108); v101 = 0; v94 = wcslen(String); v99 = (_WORD)a4 == 0xFFFF; v10 = 0; while ( 1 ) { v88 = v98 == 0xFFFF; v11 = v88 && a1 != 0; if ( v11 ) { v19 = (__int16 *)a1[2]; if ( (unsigned int)v19 >= a1[3] ) { v20 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); v11 = v88 && a1 != 0; } else { v20 = *v19; } v21 = v20 == -1; v22 = 0; if ( !v21 ) v22 = a1; a1 = v22; if ( !v21 ) v11 = 0; v12 = v99 && a3 != 0; if ( !v12 ) { LABEL_4: v12 = (_WORD)a4 == 0xFFFF; goto LABEL_5; } } else { v11 = v98 == 0xFFFF; v12 = v99 && a3 != 0; if ( !v12 ) goto LABEL_4; } v23 = (__int16 *)a3[2]; if ( (unsigned int)v23 >= a3[3] ) { v93 = v11; v24 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v11 = v93; } else { v24 = *v23; } v25 = v24 == -1; v26 = 0; if ( !v25 ) v26 = a3; a3 = v26; if ( !v25 ) v12 = 0; LABEL_5: if ( v11 == v12 || v10 >= v94 ) break; if ( v101 ) goto LABEL_22; v13 = v10; v92 = v10 + 1; if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v10], 0) == 37 ) { v14 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v13 + 1], 0); v102 = 0; if ( v14 == 69 || v14 == 79 ) { v92 = v10 + 2; v15 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v13 + 2], 0) - 65; if ( v15 > 0x38u ) { LABEL_19: v101 |= 4u; goto LABEL_20; } } else { v15 = v14 - 65; } switch ( v15 ) { case 0u: LOWORD(v8) = v98; v59 = (_DWORD *)v96[2]; *(_DWORD *)v103 = v59[11]; v104 = v59[12]; v105 = v59[13]; v106 = v59[14]; v107 = v59[15]; v108 = v59[16]; v109 = v59[17]; v36 = (int *)std::time_get>::_M_extract_name( a1, v8, a3, a4, &v102, (int)v103, 7, a5, &v101); goto LABEL_56; case 1u: LOWORD(v8) = v98; v60 = (_DWORD *)v96[2]; *(_DWORD *)v103 = v60[25]; v104 = v60[26]; v105 = v60[27]; v106 = v60[28]; v107 = v60[29]; v108 = v60[30]; v109 = v60[31]; v110 = v60[32]; v111 = v60[33]; v112 = v60[34]; v113 = v60[35]; v114 = v60[36]; v33 = (int *)std::time_get>::_M_extract_name( a1, v8, a3, a4, &v102, (int)v103, 12, a5, &v101); goto LABEL_53; case 2u: case 0x18u: case 0x38u: a1 = std::time_get>::_M_extract_num( a1, v98, a3, a4, (int *)&v102, 0, 9999, 4u, a5, &v101); v98 = v30; if ( !v101 ) { v31 = v102 - 475; if ( (int)v102 < 0 ) v31 = v102 + 25; a7[5] = v31; } break; case 3u: (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v9 + 44))( v9, "%m/%d/%y", "%H:%M", v103); LOWORD(v8) = v98; a1 = (int *)std::time_get>::_M_extract_via_format( (int)a1, v8, (int)a3, a4, a5, (int)&v101, (int)a7, v103); v98 = v61; break; case 7u: v54 = std::time_get>::_M_extract_num( a1, v98, a3, a4, (int *)&v102, 0, 23, 2u, a5, &v101); goto LABEL_83; case 8u: v54 = std::time_get>::_M_extract_num( a1, v98, a3, a4, (int *)&v102, 1, 12, 2u, a5, &v101); LABEL_83: a1 = v54; v98 = v55; if ( !v101 ) a7[2] = v102; break; case 0xCu: v56 = std::time_get>::_M_extract_num( a1, v98, a3, a4, (int *)&v102, 0, 59, 2u, a5, &v101); v98 = v57; a1 = v56; if ( !v101 ) a7[1] = v102; break; case 0x11u: (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v9 + 44))( v9, "%H:%M", "%H:%M:%S", v103); LOWORD(v8) = v98; a1 = (int *)std::time_get>::_M_extract_via_format( (int)a1, v8, (int)a3, a4, a5, (int)&v101, (int)a7, v103); v98 = v58; break; case 0x12u: a1 = std::time_get>::_M_extract_num( a1, v98, a3, a4, (int *)&v102, 0, 60, 2u, a5, &v101); v98 = v41; if ( !v101 ) *a7 = v102; break; case 0x13u: (*(void (__thiscall **)(void *, const char *, void *, wchar_t *))(*(_DWORD *)v9 + 44))( v9, "%H:%M:%S", &unk_5576EE, v103); LOWORD(v8) = v98; a1 = (int *)std::time_get>::_M_extract_via_format( (int)a1, v8, (int)a3, a4, a5, (int)&v101, (int)a7, v103); v98 = v42; break; case 0x17u: LOWORD(v8) = v98; a1 = (int *)std::time_get>::_M_extract_via_format( (int)a1, v8, (int)a3, a4, a5, (int)&v101, (int)a7, *(wchar_t **)(v96[2] + 16)); v98 = v43; break; case 0x19u: if ( a1 && v98 == 0xFFFF ) { v76 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v76 >= a1[3] ) v44 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); else v44 = *v76; v77 = 0; if ( v44 != 0xFFFF ) v77 = a1; a1 = v77; } else { v44 = v98; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v9 + 8))(v9, 1, v44) ) goto LABEL_19; LOWORD(v8) = v98; v45 = (int *)std::time_get>::_M_extract_name( a1, v8, a3, a4, (int **)v103, (int)std::__timepunct_cache::_S_timezones, 14, a5, &v101); v47 = v46; v89 = v46 == 0xFFFF; v97 = v46; a1 = v45; v48 = v89; v98 = v47; v95 = v89 && v45 != 0; if ( v95 ) { v82 = (_WORD *)v45[2]; v83 = (unsigned int)v82 >= v45[3] ? (*(int (__fastcall **)(int *))(*v45 + 36))(v45) : *v82; v48 = 0; if ( v83 == -1 ) { v48 = v95; a1 = 0; v95 = 0; } } v49 = v99 && a3 != 0; if ( v49 ) { v78 = (__int16 *)a3[2]; if ( (unsigned int)v78 >= a3[3] ) { v100 = v48; v79 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v48 = v100; } else { v79 = *v78; } v80 = v79 == -1; v81 = 0; if ( !v80 ) v81 = a3; a3 = v81; if ( !v80 ) v49 = 0; } else { v49 = (_WORD)a4 == 0xFFFF; } if ( v48 != v49 && !(*(_DWORD *)v103 | v101) ) { v50 = v47; if ( v95 ) { v84 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v84 >= a1[3] ) v50 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); else v50 = *v84; v85 = 0; if ( v50 != 0xFFFF ) v85 = a1; a1 = v85; } if ( (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 45) == v50 ) goto LABEL_81; if ( a1 && v89 ) { v86 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v86 >= a1[3] ) v47 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); else v47 = *v86; v87 = 0; if ( v47 != 0xFFFF ) v87 = a1; a1 = v87; } if ( (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 43) == v47 ) { LABEL_81: v51 = std::time_get>::_M_extract_num( a1, v97, a3, a4, (int *)v103, 0, 23, 2u, a5, &v101); a1 = std::time_get>::_M_extract_num( v51, v52, a3, a4, (int *)v103, 0, 59, 2u, a5, &v101); v98 = v53; } } break; case 0x20u: LOWORD(v8) = v98; v35 = (_DWORD *)v96[2]; *(_DWORD *)v103 = v35[18]; v104 = v35[19]; v105 = v35[20]; v106 = v35[21]; v107 = v35[22]; v108 = v35[23]; v109 = v35[24]; v36 = (int *)std::time_get>::_M_extract_name( a1, v8, a3, a4, &v102, (int)v103, 7, a5, &v101); LABEL_56: a1 = v36; v98 = v37; if ( !v101 ) a7[6] = v102; break; case 0x21u: case 0x27u: LOWORD(v8) = v98; v32 = (_DWORD *)v96[2]; *(_DWORD *)v103 = v32[37]; v104 = v32[38]; v105 = v32[39]; v106 = v32[40]; v107 = v32[41]; v108 = v32[42]; v109 = v32[43]; v110 = v32[44]; v111 = v32[45]; v112 = v32[46]; v113 = v32[47]; v114 = v32[48]; v33 = (int *)std::time_get>::_M_extract_name( a1, v8, a3, a4, &v102, (int)v103, 12, a5, &v101); LABEL_53: a1 = v33; v98 = v34; if ( !v101 ) a7[4] = v102; break; case 0x22u: LOWORD(v8) = v98; a1 = (int *)std::time_get>::_M_extract_via_format( (int)a1, v8, (int)a3, a4, a5, (int)&v101, (int)a7, *(wchar_t **)(v96[2] + 24)); v98 = v38; break; case 0x23u: v39 = std::time_get>::_M_extract_num( a1, v98, a3, a4, (int *)&v102, 1, 31, 2u, a5, &v101); goto LABEL_60; case 0x24u: if ( a1 && v98 == 0xFFFF ) { v74 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v74 >= a1[3] ) v62 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); else v62 = *v74; v75 = 0; if ( v62 != 0xFFFF ) v75 = a1; a1 = v75; } else { v62 = v98; } if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v9 + 8))(v9, 32, v62) ) { v63 = a1[2]; if ( v63 >= a1[3] ) (*(void (__fastcall **)(int *))(*a1 + 40))(a1); else a1[2] = v63 + 2; a1 = std::time_get>::_M_extract_num( a1, 0xFFFFu, a3, a4, (int *)&v102, 1, 9, 1u, a5, &v101); v98 = v64; } else { v39 = std::time_get>::_M_extract_num( a1, v98, a3, a4, (int *)&v102, 10, 31, 2u, a5, &v101); LABEL_60: a1 = v39; v98 = v40; } if ( !v101 ) a7[3] = v102; break; case 0x2Cu: a1 = std::time_get>::_M_extract_num( a1, v98, a3, a4, (int *)&v102, 1, 12, 2u, a5, &v101); v98 = v65; if ( !v101 ) a7[4] = (char *)v102 - 1; break; case 0x2Du: if ( a1 && v98 == 0xFFFF ) { v70 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v70 >= a1[3] ) v66 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); else v66 = *v70; v71 = 0; if ( v66 != 0xFFFF ) v71 = a1; a1 = v71; } else { v66 = v98; } if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, v66, 0) != 10 ) goto LABEL_19; goto LABEL_105; case 0x33u: if ( a1 && v98 == 0xFFFF ) { v72 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v72 >= a1[3] ) v68 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); else v68 = *v72; v73 = 0; if ( v68 != 0xFFFF ) v73 = a1; a1 = v73; } else { v68 = v98; } if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, v68, 0) != 9 ) goto LABEL_19; LABEL_105: v67 = a1[2]; if ( v67 >= a1[3] ) (*(void (__fastcall **)(int *))(*a1 + 40))(a1); else a1[2] = v67 + 2; v98 = -1; break; case 0x37u: LOWORD(v8) = v98; a1 = (int *)std::time_get>::_M_extract_via_format( (int)a1, v8, (int)a3, a4, a5, (int)&v101, (int)a7, *(wchar_t **)(v96[2] + 8)); v98 = v69; break; default: goto LABEL_19; } LABEL_20: v10 = v92 + 1; } else { v16 = String[v10]; if ( a1 && v98 == 0xFFFF ) { v28 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v28 >= a1[3] ) v17 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); else v17 = *v28; v29 = 0; if ( v17 != 0xFFFF ) v29 = a1; a1 = v29; } else { v17 = v98; } if ( v16 == v17 ) { v27 = a1[2]; if ( v27 >= a1[3] ) (*(void (__fastcall **)(int *))(*a1 + 40))(a1); else a1[2] = v27 + 2; v10 = v92; v98 = -1; } else { v101 |= 4u; v10 = v92; } } } if ( v10 != v94 || v101 ) LABEL_22: *a6 |= 4u; return a1; } // 48B963: variable 'v30' is possibly undefined // 48BAB7: variable 'v34' is possibly undefined // 48BBA3: variable 'v37' is possibly undefined // 48BC36: variable 'v38' is possibly undefined // 48BCBA: variable 'v40' is possibly undefined // 48BD65: variable 'v41' is possibly undefined // 48BE11: variable 'v42' is possibly undefined // 48BE8B: variable 'v43' is possibly undefined // 48BF2C: variable 'v46' is possibly undefined // 48C0A5: variable 'v52' is possibly undefined // 48C0BC: variable 'v53' is possibly undefined // 48C151: variable 'v55' is possibly undefined // 48C25B: variable 'v57' is possibly undefined // 48C31A: variable 'v58' is possibly undefined // 48C56F: variable 'v61' is possibly undefined // 48C640: variable 'v64' is possibly undefined // 48C6CB: variable 'v65' is possibly undefined // 48C7F8: variable 'v69' is possibly undefined // 53F6A0: using guessed type wchar_t *std::__timepunct_cache::_S_timezones[3]; //----- (0048CAC0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( _DWORD *a1, int a2, _DWORD *a3, __int16 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 char v13; // di char v14; // bl unsigned int v15; // edi int *v16; // esi char v17; // dl char v18; // bl unsigned int v19; // edx unsigned int *v20; // ecx int v21; // ebx unsigned int v22; // eax __int16 *v23; // eax __int16 v24; // ax bool v25; // zf _DWORD *v26; // eax __int16 *v28; // eax __int16 v29; // ax bool v30; // zf _DWORD *v31; // eax __int16 *v32; // eax _DWORD *v33; // eax unsigned int v34; // eax __int16 v35; // si int v36; // edx int v37; // ebx int v38; // edi __int16 v39; // ax int v40; // ecx unsigned int v41; // eax unsigned int v42; // eax int v43; // eax void *v44; // esp void *v45; // esp int v46; // ebx __int16 *v47; // eax __int16 v48; // ax bool v49; // zf _DWORD *v50; // eax _WORD *v51; // eax __int16 v52; // ax __int16 *v53; // eax _DWORD *v54; // eax int v55; // eax _DWORD v56[2]; // [esp+10h] [ebp-48h] BYREF _DWORD *v57; // [esp+18h] [ebp-40h] char v58; // [esp+1Fh] [ebp-39h] _DWORD *v59; // [esp+20h] [ebp-38h] unsigned int v60; // [esp+24h] [ebp-34h] __int16 v61; // [esp+28h] [ebp-30h] __int16 v62; // [esp+2Ah] [ebp-2Eh] int v63; // [esp+2Ch] [ebp-2Ch] int *v64; // [esp+30h] [ebp-28h] int *v65; // [esp+34h] [ebp-24h] unsigned int v66; // [esp+38h] [ebp-20h] unsigned int v67; // [esp+3Ch] [ebp-1Ch] v59 = a1; v56[1] = a2; v61 = a2; v57 = a3; v64 = (int *)std::use_facet>(a8 + 108); v9 = 16 * ((8 * a7 + 27) >> 4); v10 = alloca(v9); v11 = alloca(v9); v12 = (_WORD)a2 == 0xFFFF; v65 = v56; v13 = v12 & (a1 != 0); if ( v13 ) { v51 = (_WORD *)v59[2]; v52 = (unsigned int)v51 >= v59[3] ? (*(int (__fastcall **)(_DWORD *))(*v59 + 36))(v59) : *v51; v12 = 0; if ( v52 == -1 ) { v12 = v13; v59 = 0; v13 = 0; } } v58 = a4 == -1; v14 = v58 & (a3 != 0); if ( v14 ) { v47 = (__int16 *)a3[2]; if ( (unsigned int)v47 >= a3[3] ) { v55 = *a3; LOBYTE(v67) = v12; v48 = (*(int (__fastcall **)(_DWORD *))(v55 + 36))(a3); v12 = v67; } else { v48 = *v47; } v49 = v48 == -1; v50 = 0; if ( !v49 ) v50 = a3; v57 = v50; if ( !v49 ) v14 = 0; } else { v14 = v58; } if ( v12 == v14 ) { v66 = 0; v15 = 0; v16 = 0; goto LABEL_6; } v35 = v61; if ( v13 ) { v53 = (__int16 *)v59[2]; if ( (unsigned int)v53 >= v59[3] ) v35 = (*(int (__fastcall **)(_DWORD *))(*v59 + 36))(v59); else v35 = *v53; v54 = 0; if ( v35 != -1 ) v54 = v59; v59 = v54; } v15 = 2 * a7; if ( !(2 * a7) ) { v66 = 0; v16 = 0; goto LABEL_6; } v67 = 2 * a7; v36 = a6; v37 = 0; v66 = 0; v38 = (int)v64; do { while ( 1 ) { v40 = **(unsigned __int16 **)(v36 + 4 * v37); if ( (_WORD)v40 == v35 ) break; a6 = v36; v39 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v38 + 24))(v38, v40); v36 = a6; if ( v39 == v35 ) break; if ( ++v37 == v67 ) goto LABEL_62; } v41 = v66; v65[v66] = v37++; v66 = v41 + 1; } while ( v37 != v67 ); LABEL_62: v15 = 0; v16 = 0; if ( v66 ) { v42 = v59[2]; if ( v42 >= v59[3] ) (*(void (__fastcall **)(_DWORD *, int))(*v59 + 40))(v59, v36); else v59[2] = v42 + 2; v43 = 16 * ((4 * v66 + 27) >> 4); v44 = alloca(v43); v15 = 0; v45 = alloca(v43); v64 = v56; v67 = (unsigned int)v56; v46 = (int)v65; do { *(_DWORD *)(v67 + 4 * v15) = wcslen(*(const wchar_t **)(a6 + 4 * *(_DWORD *)(v46 + 4 * v15))); ++v15; } while ( v66 != v15 ); v66 = 1; v16 = v64; v61 = -1; } LABEL_6: while ( 2 ) { LOBYTE(v67) = v61 == -1; v17 = v67 & (v59 != 0); if ( v17 ) { v28 = (__int16 *)v59[2]; if ( (unsigned int)v28 >= v59[3] ) { LOBYTE(v64) = v67 & (v59 != 0); v29 = (*(int (__fastcall **)(_DWORD *))(*v59 + 36))(v59); v17 = (char)v64; } else { v29 = *v28; } v30 = v29 == -1; v31 = 0; if ( !v30 ) v31 = v59; v59 = v31; if ( !v30 ) v17 = 0; } else { v17 = v67; } v18 = v58 & (v57 != 0); if ( v18 ) { v23 = (__int16 *)v57[2]; if ( (unsigned int)v23 >= v57[3] ) { LOBYTE(v64) = v17; v24 = (*(int (__fastcall **)(_DWORD *))(*v57 + 36))(v57); v17 = (char)v64; } else { v24 = *v23; } v25 = v24 == -1; v26 = 0; if ( !v25 ) v26 = v57; v57 = v26; if ( !v25 ) v18 = 0; if ( v17 == v18 ) break; } else if ( v17 == v58 ) { break; } if ( v59 && (_BYTE)v67 ) { v32 = (__int16 *)v59[2]; if ( (unsigned int)v32 >= v59[3] ) v62 = (*(int (__fastcall **)(_DWORD *))(*v59 + 36))(v59); else v62 = *v32; v33 = 0; if ( v62 != -1 ) v33 = v59; v59 = v33; } else { v62 = v61; } if ( !v15 ) { LABEL_34: *a9 |= 4u; return v59; } v67 = (unsigned int)v16; v19 = 0; v63 = 0; v60 = 2 * v66; do { while ( 1 ) { v20 = (unsigned int *)(v67 + 4 * v19); if ( *v20 > v66 ) break; ++v63; ++v19; LABEL_16: if ( v19 >= v15 ) goto LABEL_20; } v21 = v65[v19]; v64 = &v65[v19]; if ( *(_WORD *)(*(_DWORD *)(a6 + 4 * v21) + v60) == v62 ) { ++v19; goto LABEL_16; } *v64 = v65[--v15]; *v20 = *(_DWORD *)(v67 + 4 * v15); } while ( v19 < v15 ); LABEL_20: v16 = (int *)v67; if ( v15 != v63 ) { v22 = v59[2]; if ( v22 >= v59[3] ) (*(void (__fastcall **)(_DWORD *))(*v59 + 40))(v59); else v59[2] = v22 + 2; ++v66; v61 = -1; continue; } break; } if ( v15 != 1 ) { if ( v15 == 2 && (*v16 == v66 || v16[1] == v66) ) goto LABEL_52; goto LABEL_34; } if ( *v16 != v66 ) goto LABEL_34; LABEL_52: v34 = *v65; if ( *v65 >= a7 ) v34 = *v65 - a7; *a5 = v34; return v59; } //----- (0048CF80) -------------------------------------------------------- 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) { unsigned __int16 *v10; // ebp void *v12; // ebx int v13; // edx __int16 v14; // si int v15; // edx __int16 v16; // si unsigned int v17; // eax char v18; // si char v19; // dl char v20; // si int v21; // eax int *(__stdcall *v22)(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); // edx int v23; // eax void *v24; // eax int *v25; // esi unsigned __int16 v26; // dx char v27; // dl char v28; // bp char v29; // al unsigned __int16 *i; // ebp void *v32; // ebp char v33; // dl char v34; // bl int v35; // edx unsigned int v36; // eax bool v37; // si __int16 *v38; // eax __int16 v39; // ax __int16 *v40; // eax __int16 v41; // ax bool v42; // zf _DWORD *v43; // eax unsigned __int16 *v44; // eax char v45; // dl __int16 *v46; // eax __int16 v47; // ax bool v48; // zf _DWORD *v49; // eax __int16 *v50; // eax __int16 v51; // ax int v52; // ecx int v53; // ebp unsigned __int16 v54; // dx unsigned __int16 *v55; // eax __int16 *v56; // eax __int16 v57; // ax __int16 *v58; // eax __int16 v59; // ax unsigned __int16 *v60; // eax unsigned __int16 v61; // [esp+5Eh] [ebp-4Ah] unsigned __int16 *v63; // [esp+64h] [ebp-44h] char v64; // [esp+64h] [ebp-44h] int v65; // [esp+68h] [ebp-40h] int v66; // [esp+6Ch] [ebp-3Ch] char v68; // [esp+74h] [ebp-34h] char v69; // [esp+75h] [ebp-33h] char v70; // [esp+75h] [ebp-33h] wchar_t v71; // [esp+84h] [ebp-24h] BYREF __int16 v72; // [esp+86h] [ebp-22h] __int16 v73; // [esp+88h] [ebp-20h] __int16 v74; // [esp+8Ah] [ebp-1Eh] unsigned __int16 *v75; // [esp+C8h] [ebp+20h] v10 = a9; HIWORD(v65) = HIWORD(a3); v61 = a3; HIWORD(v66) = HIWORD(a5); v12 = std::use_facet>(a6 + 108); *a7 = 0; if ( a9 != a10 ) { v68 = (_WORD)a5 == 0xFFFF; while ( 1 ) { v18 = v61 == 0xFFFF && a2 != 0; if ( v18 ) { v50 = (__int16 *)a2[2]; if ( (unsigned int)v50 >= a2[3] ) v51 = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); else v51 = *v50; if ( v51 == -1 ) a2 = 0; if ( v51 != -1 ) v18 = 0; } else { v18 = v61 == 0xFFFF; } v19 = v68 & (a4 != 0); if ( v19 ) { v46 = (__int16 *)a4[2]; if ( (unsigned int)v46 >= a4[3] ) { v47 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v19 = v68 & (a4 != 0); } else { v47 = *v46; } v48 = v47 == -1; v49 = 0; if ( !v48 ) v49 = a4; a4 = v49; if ( !v48 ) v19 = 0; if ( v18 == v19 ) { LABEL_81: *a7 = 6; return a2; } } else if ( v18 == v68 ) { goto LABEL_81; } if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, *v10, 0) == 37 ) { v63 = v10 + 1; if ( a10 == v10 + 1 ) goto LABEL_115; v20 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, v10[1], 0); if ( v20 == 69 || (v69 = 0, v21 = 0, v20 == 79) ) { v63 = v10 + 2; if ( a10 == v10 + 2 ) goto LABEL_115; v45 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, v10[2], 0); v69 = v20; v21 = v20; v20 = v45; } v22 = *(int *(__stdcall **)(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); if ( v22 == std::time_get>::do_get ) { HIWORD(v23) = HIWORD(v65); LOWORD(v23) = v61; v65 = v23; HIWORD(v23) = HIWORD(v66); LOWORD(v23) = a5; v66 = v23; v24 = std::use_facet>(a6 + 108); *a7 = 0; v71 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v24 + 40))(v24, 37); if ( v69 ) { v73 = v20; v72 = v69; v74 = 0; } else { v72 = v20; v73 = 0; } v25 = std::time_get>::_M_extract_via_format( a2, v65, a4, v66, a6, a7, a8, &v71); a2 = v25; v61 = v26; v27 = v26 == 0xFFFF; v28 = v27 & (v25 != 0); if ( v28 ) { v56 = (__int16 *)v25[2]; if ( (unsigned int)v56 >= v25[3] ) v57 = (*(int (__fastcall **)(int *))(*v25 + 36))(v25); else v57 = *v56; v27 = 0; a2 = 0; if ( v57 == -1 ) v27 = v28; if ( v57 != -1 ) a2 = v25; } if ( a4 && (_WORD)a5 == 0xFFFF ) { v58 = (__int16 *)a4[2]; if ( (unsigned int)v58 >= a4[3] ) { v70 = v27; v59 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v27 = v70; } else { v59 = *v58; } v29 = v59 == -1; } else { v29 = (_WORD)a5 == 0xFFFF; } if ( v29 == v27 ) *a7 |= 2u; } else { HIWORD(v52) = HIWORD(v65); HIWORD(v53) = HIWORD(v66); LOWORD(v52) = v61; LOWORD(v53) = a5; a2 = (int *)((int (__thiscall *)(void *, int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, _DWORD, int))v22)( this, a2, v52, a4, v53, a6, a7, a8, v20, v21); v61 = v54; } v10 = v63 + 1; if ( a10 == v63 + 1 ) return a2; goto LABEL_16; } if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, *v10) ) break; if ( a2 && v61 == 0xFFFF ) { v55 = (unsigned __int16 *)a2[2]; if ( (unsigned int)v55 >= a2[3] ) v13 = (*(unsigned __int16 (__fastcall **)(int *))(*a2 + 36))(a2); else v13 = *v55; if ( (_WORD)v13 == 0xFFFF ) a2 = 0; } else { v13 = v61; } v14 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v12 + 32))(v12, v13); if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 32))(v12, *v10) != v14 ) { if ( a2 && v61 == 0xFFFF ) { v60 = (unsigned __int16 *)a2[2]; if ( (unsigned int)v60 >= a2[3] ) v15 = (*(unsigned __int16 (__fastcall **)(int *))(*a2 + 36))(a2); else v15 = *v60; if ( (_WORD)v15 == 0xFFFF ) a2 = 0; } else { v15 = v61; } v16 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v12 + 24))(v12, v15); if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 24))(v12, *v10) != v16 ) { LABEL_115: *a7 = 4; return a2; } } v17 = a2[2]; if ( v17 >= a2[3] ) (*(void (__fastcall **)(int *))(*a2 + 40))(a2); else a2[2] = v17 + 2; ++v10; v61 = -1; LABEL_15: if ( a10 == v10 ) return a2; LABEL_16: if ( *a7 ) return a2; } for ( i = v10 + 1; a10 != i; ++i ) { if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, *i) ) break; } v75 = i; v32 = v12; while ( 1 ) { v37 = v61 == 0xFFFF; v33 = v37 && a2 != 0; if ( v33 ) { v38 = (__int16 *)a2[2]; if ( (unsigned int)v38 >= a2[3] ) { v39 = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); v33 = v37 && a2 != 0; } else { v39 = *v38; } if ( v39 == -1 ) a2 = 0; if ( v39 != -1 ) v33 = 0; v34 = v68 & (a4 != 0); if ( !v34 ) { LABEL_42: if ( v68 == v33 ) goto LABEL_65; goto LABEL_43; } } else { v33 = v61 == 0xFFFF; v34 = v68 & (a4 != 0); if ( !v34 ) goto LABEL_42; } v40 = (__int16 *)a4[2]; if ( (unsigned int)v40 >= a4[3] ) { v64 = v33; v41 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v33 = v64; } else { v41 = *v40; } v42 = v41 == -1; v43 = 0; if ( !v42 ) v43 = a4; a4 = v43; if ( !v42 ) v34 = 0; if ( v34 == v33 ) { LABEL_65: v12 = v32; v10 = v75; goto LABEL_15; } LABEL_43: if ( a2 && v61 == 0xFFFF ) { v44 = (unsigned __int16 *)a2[2]; if ( (unsigned int)v44 >= a2[3] ) v35 = (*(unsigned __int16 (__fastcall **)(int *))(*a2 + 36))(a2); else v35 = *v44; if ( (_WORD)v35 == 0xFFFF ) a2 = 0; } else { v35 = v61; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, int))(*(_DWORD *)v32 + 8))(v32, 32, v35) ) goto LABEL_65; v36 = a2[2]; if ( v36 >= a2[3] ) (*(void (__fastcall **)(int *))(*a2 + 40))(a2); else a2[2] = v36 + 2; v61 = -1; } } return a2; } // 48D25F: variable 'v26' is possibly undefined // 48D5A6: variable 'v54' is possibly undefined //----- (0048D710) -------------------------------------------------------- int __thiscall std::time_get>::get( void *this, int *a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10) { int *(__stdcall *v10)(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); // eax void *v11; // eax int *v12; // ecx int *v13; // ebp __int16 v14; // dx _BOOL2 v15; // bx bool v16; // si bool v17; // cl __int16 *v19; // eax __int16 v20; // ax __int16 *v21; // eax __int16 v22; // ax int v23; // [esp+28h] [ebp-48h] wchar_t v24; // [esp+4Ch] [ebp-24h] BYREF __int16 v25; // [esp+4Eh] [ebp-22h] __int16 v26; // [esp+50h] [ebp-20h] __int16 v27; // [esp+52h] [ebp-1Eh] v10 = *(int *(__stdcall **)(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); if ( v10 != std::time_get>::do_get ) return ((int (__thiscall *)(void *, int *, 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; v24 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v11 + 40))(v11, 37); if ( a10 ) { v26 = a9; v25 = a10; v27 = 0; } else { v25 = a9; v26 = 0; } v12 = std::time_get>::_M_extract_via_format( a2, a3, a4, a5, a6, a7, a8, &v24); v13 = v12; v15 = v14 == -1; v16 = v15 && v12 != 0; if ( v16 ) { v19 = (__int16 *)v12[2]; if ( (unsigned int)v19 >= v12[3] ) { v23 = (int)v12; v20 = (*(int (**)(void))(*v12 + 36))(); v12 = (int *)v23; } else { v20 = *v19; } LOBYTE(v15) = 0; v13 = 0; if ( v20 == -1 ) LOBYTE(v15) = v16; if ( v20 != -1 ) v13 = v12; } v17 = (_WORD)a5 == 0xFFFF; if ( a4 && (_WORD)a5 == 0xFFFF ) { v21 = (__int16 *)a4[2]; if ( (unsigned int)v21 >= a4[3] ) v22 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); else v22 = *v21; v17 = v22 == -1; } if ( v15 == v17 ) *a7 |= 2u; return (int)v13; } // 48D819: variable 'v14' is possibly undefined //----- (0048D960) -------------------------------------------------------- int *__stdcall std::time_get>::do_get( int *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, char a8, char a9) { void *v9; // eax int *v10; // ecx int *v11; // ebp __int16 v12; // dx _BOOL2 v13; // bx bool v14; // si bool 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 = (int *)v21; } else { v20 = *v19; } LOBYTE(v13) = 0; v11 = 0; if ( v20 == -1 ) LOBYTE(v13) = v14; if ( v20 != -1 ) v11 = 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 ( v13 == v15 ) *a6 |= 2u; return v11; } // 48DA44: variable 'v12' is possibly undefined //----- (0048DB20) -------------------------------------------------------- int __fastcall std::time_get>::get_date(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); } //----- (0048DB30) -------------------------------------------------------- int __fastcall std::time_get>::get_time(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); } //----- (0048DB40) -------------------------------------------------------- int __fastcall std::time_get>::get_year(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); } //----- (0048DB50) -------------------------------------------------------- _DWORD *__stdcall std::money_get>::_M_extract( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { _BYTE *v7; // edx unsigned int v8; // eax _DWORD *v9; // ecx unsigned int v10; // eax char v11; // al _BYTE *v12; // eax char v13; // al _BYTE *v14; // edx unsigned int v15; // eax char v16; // al int v17; // eax char v18; // dl _BYTE *v19; // eax int v20; // eax _DWORD *v21; // eax char v22; // al int v23; // eax unsigned __int8 *v24; // eax char v25; // al int v26; // edx int v27; // eax _BYTE *v28; // eax int v29; // eax _DWORD *v30; // eax char v31; // al int v32; // eax unsigned __int8 *v33; // eax bool v34; // zf char v35; // al _DWORD *v36; // edx char v37; // al unsigned __int8 *v39; // eax char v40; // al bool v41; // zf _DWORD *v42; // edx char v43; // al char v44; // al _BYTE *v45; // edx unsigned int v46; // eax int v47; // eax unsigned __int8 v48; // dl bool v49; // zf _DWORD *v50; // eax char v51; // al unsigned int first_not_of; // eax bool v53; // zf _DWORD *v54; // eax bool v55; // bl int v56; // eax bool v57; // zf char v58; // dl _DWORD *v59; // eax _DWORD *v60; // eax bool v61; // zf _DWORD *v62; // edx bool v63; // zf _DWORD *v64; // eax bool v65; // bl _BYTE *v66; // eax bool v67; // zf _DWORD *v68; // eax int v69; // eax _BYTE *v70; // eax int v71; // eax _DWORD *v72; // edx bool v73; // zf _DWORD *v74; // eax char v75; // bl int v76; // eax _DWORD *v77; // eax bool v78; // zf _DWORD *v79; // eax bool v80; // bl _DWORD *v81; // edx bool v82; // zf _DWORD *v83; // edx bool v84; // zf _DWORD *v85; // edx bool v86; // zf _DWORD *v87; // eax bool v88; // bl _DWORD *v89; // edx bool v90; // zf _DWORD *v91; // eax bool v92; // bl _DWORD *v93; // edx _DWORD *v94; // edx unsigned int v95; // [esp+8h] [ebp-D0h] std::locale::_Impl *v96; // [esp+14h] [ebp-C4h] char v97; // [esp+18h] [ebp-C0h] char v98; // [esp+1Ch] [ebp-BCh] unsigned int v99; // [esp+1Ch] [ebp-BCh] _DWORD *v100; // [esp+20h] [ebp-B8h] unsigned int v101; // [esp+24h] [ebp-B4h] int v102; // [esp+2Ch] [ebp-ACh] char v103; // [esp+30h] [ebp-A8h] char v104; // [esp+30h] [ebp-A8h] int v105; // [esp+30h] [ebp-A8h] unsigned int v106; // [esp+30h] [ebp-A8h] char v107; // [esp+30h] [ebp-A8h] char v108; // [esp+30h] [ebp-A8h] char v109; // [esp+30h] [ebp-A8h] bool v110; // [esp+35h] [ebp-A3h] char v111; // [esp+36h] [ebp-A2h] char v112; // [esp+37h] [ebp-A1h] unsigned int Buf; // [esp+38h] [ebp-A0h] std::locale::facet *Bufa; // [esp+38h] [ebp-A0h] int *v115; // [esp+3Ch] [ebp-9Ch] int v116; // [esp+3Ch] [ebp-9Ch] int v117; // [esp+40h] [ebp-98h] std::locale::facet *v119; // [esp+4Ch] [ebp-8Ch] std::locale::facet *v120; // [esp+4Ch] [ebp-8Ch] char v121; // [esp+4Ch] [ebp-8Ch] std::locale::facet *v122; // [esp+4Ch] [ebp-8Ch] char v123; // [esp+4Ch] [ebp-8Ch] unsigned __int8 v124; // [esp+4Ch] [ebp-8Ch] char v125; // [esp+4Ch] [ebp-8Ch] char v126; // [esp+4Ch] [ebp-8Ch] char v127; // [esp+4Ch] [ebp-8Ch] char v128; // [esp+4Ch] [ebp-8Ch] char v129; // [esp+4Ch] [ebp-8Ch] bool v130; // [esp+4Ch] [ebp-8Ch] char v131; // [esp+50h] [ebp-88h] bool v132; // [esp+50h] [ebp-88h] unsigned __int8 v133; // [esp+50h] [ebp-88h] char v134; // [esp+50h] [ebp-88h] unsigned __int8 v135; // [esp+50h] [ebp-88h] bool v136; // [esp+50h] [ebp-88h] bool v137; // [esp+50h] [ebp-88h] bool v138; // [esp+50h] [ebp-88h] bool v139; // [esp+50h] [ebp-88h] size_t v140; // [esp+50h] [ebp-88h] char v141; // [esp+50h] [ebp-88h] size_t v143; // [esp+54h] [ebp-84h] size_t v144; // [esp+54h] [ebp-84h] int v146; // [esp+9Ch] [ebp-3Ch] void *v147; // [esp+A0h] [ebp-38h] BYREF std::locale::facet *v148; // [esp+A4h] [ebp-34h] int v149[4]; // [esp+A8h] [ebp-30h] BYREF void *Block; // [esp+B8h] [ebp-20h] BYREF size_t v151; // [esp+BCh] [ebp-1Ch] int v152[5]; // [esp+C0h] [ebp-18h] BYREF v100 = std::use_facet>(a5 + 108); v119 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v115 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v119); v117 = *v115; if ( !*v115 ) { v60 = operator new(0x44u); *v60 = &off_5606D4; v60[1] = 0; v60[2] = 0; v60[3] = 0; *((_WORD *)v60 + 8) = 0; *((_BYTE *)v60 + 18) = 0; v60[5] = 0; v60[6] = 0; v60[7] = 0; v60[8] = 0; v60[9] = 0; v60[10] = 0; v60[11] = 0; v60[12] = 0; v60[13] = 0; *((_BYTE *)v60 + 67) = 0; v96 = (std::locale::_Impl *)v60; std::__moneypunct_cache::_M_cache((int)v60, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v96, v119, v95); v117 = *v115; } if ( *(_DWORD *)(v117 + 32) ) v110 = *(_DWORD *)(v117 + 40) != 0; else v110 = 0; v148 = 0; v147 = v149; LOBYTE(v149[0]) = 0; if ( *(_BYTE *)(v117 + 16) ) std::string::reserve(&v147, 0x20u); Block = v152; v151 = 0; LOBYTE(v152[0]) = 0; std::string::reserve(&Block, 0x20u); v102 = 0; v112 = 0; v116 = 0; v146 = *(_DWORD *)(v117 + 52); v97 = 0; v101 = 0; v111 = 0; while ( 2 ) { switch ( *((_BYTE *)&v146 + v102) ) { case 0: v104 = 1; goto LABEL_37; case 1: v138 = a2 == -1; if ( v138 && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v86 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v87 = 0; if ( !v86 ) v87 = a1; v88 = v138 && a1 != 0; a1 = v87; if ( !v86 ) v88 = 0; v127 = v88; } else { v127 = 0; } } else { v127 = a2 == -1; } v31 = a4 == -1; v107 = v31 & (a3 != 0); if ( v107 ) { v31 = 0; if ( a3[2] >= a3[3] ) { v61 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; v31 = 0; if ( v61 ) v31 = v107; v62 = 0; if ( !v61 ) v62 = a3; a3 = v62; } } v104 = 0; if ( v127 == v31 ) goto LABEL_37; if ( !a1 || a2 != -1 ) { LOBYTE(v32) = a2; goto LABEL_107; } v33 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v33 >= a1[3] ) { v32 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v89 = 0; if ( v32 != -1 ) v89 = a1; a1 = v89; LABEL_107: v104 = 0; if ( (*(_BYTE *)(v100[6] + 2 * (unsigned __int8)v32) & 0x20) == 0 ) goto LABEL_37; v33 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v33 >= a1[3] ) { (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); goto LABEL_110; } LABEL_109: a1[2] = v33 + 1; LABEL_110: a2 = -1; v104 = 1; goto LABEL_37; } if ( (*(_BYTE *)(v100[6] + 2 * *v33) & 0x20) != 0 ) goto LABEL_109; a2 = -1; LABEL_37: if ( v102 == 3 ) { v16 = v104 & (v101 > 1); LABEL_39: if ( v16 ) { if ( v111 ) v17 = *(_DWORD *)(v117 + 36); else v17 = *(_DWORD *)(v117 + 28); v105 = v17; for ( Buf = 1; ; ++Buf ) { v135 = a2 == -1; if ( (v135 & (a1 != 0)) != 0 ) { if ( a1[2] >= a1[3] ) { v73 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v74 = 0; if ( !v73 ) v74 = a1; v75 = v135 & (a1 != 0); a1 = v74; if ( !v73 ) v75 = 0; v123 = v75; } else { v123 = 0; } } else { v123 = a2 == -1; } if ( a3 && a4 == -1 ) { if ( a3[2] >= a3[3] ) { v20 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v123 ^= v20 == -1; v34 = v20 == -1; v21 = 0; if ( !v34 ) v21 = a3; a3 = v21; } } else { v123 ^= a4 == -1; } if ( Buf >= v101 || !v123 ) { if ( Buf != v101 ) { LABEL_195: v124 = v135 & (a1 != 0); goto LABEL_120; } if ( v151 > 1 ) goto LABEL_207; goto LABEL_174; } v18 = a2; v124 = v135 & (a1 != 0); if ( v124 ) { v19 = (_BYTE *)a1[2]; if ( (unsigned int)v19 < a1[3] ) { if ( *(_BYTE *)(v105 + Buf) != *v19 ) { v135 &= a1 != 0; goto LABEL_120; } LABEL_49: a1[2] = v19 + 1; goto LABEL_50; } v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v34 = v76 == -1; v18 = v76; v77 = 0; if ( !v34 ) v77 = a1; a1 = v77; } if ( *(_BYTE *)(v105 + Buf) != v18 ) goto LABEL_195; v19 = (_BYTE *)a1[2]; if ( (unsigned int)v19 < a1[3] ) goto LABEL_49; (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); LABEL_50: a2 = -1; } } if ( !v104 ) goto LABEL_119; if ( v151 > 1 ) { LABEL_207: first_not_of = std::string::find_first_not_of(&Block, 48, 0); if ( first_not_of ) { if ( first_not_of != -1 ) goto LABEL_209; first_not_of = v151 - 1; if ( !v151 ) { v151 = 0; *(_BYTE *)Block = 0; goto LABEL_174; } if ( v151 != 1 ) { LABEL_209: if ( v151 <= first_not_of ) first_not_of = v151; std::string::_M_erase((int *)&Block, 0, first_not_of); } } } LABEL_174: if ( v111 && *(_BYTE *)Block != 48 ) std::string::_M_replace_aux(&Block, 0, 0, 1u, 45); v140 = (size_t)v148; if ( v148 ) { v44 = v97; if ( !v112 ) v44 = v116; v45 = v147; Bufa = (std::locale::facet *)((char *)v148 + 1); v129 = v44; v46 = 15; if ( v147 != v149 ) v46 = v149[0]; if ( (unsigned int)v148 + 1 > v46 ) { std::string::_M_mutate((int)&v147, (size_t)v148, 0, 0, 1u); v45 = v147; } v45[v140] = v129; v148 = Bufa; *((_BYTE *)v147 + v140 + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v117 + 8), *(_DWORD *)(v117 + 12), (int)&v147) ) *a6 |= 4u; } v135 = a2 == -1; v124 = v135 & (a1 != 0); if ( v112 && *(_DWORD *)(v117 + 44) != v116 ) goto LABEL_120; std::string::swap(a7, &Block); if ( !v124 ) goto LABEL_121; LABEL_189: v135 = 0; if ( a1[2] >= a1[3] ) { v47 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v48 = v124; v49 = v47 == -1; if ( v47 != -1 ) v48 = 0; v50 = 0; if ( !v49 ) v50 = a1; v135 = v48; a1 = v50; } goto LABEL_121; } while ( 1 ) { v136 = a2 == -1; if ( v136 && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v63 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v64 = 0; if ( !v63 ) v64 = a1; v65 = v136 && a1 != 0; a1 = v64; if ( !v63 ) v65 = 0; v125 = v65; } else { v125 = 0; } } else { v125 = a2 == -1; } v22 = a4 == -1; v98 = v22 & (a3 != 0); if ( v98 ) { v22 = 0; if ( a3[2] >= a3[3] ) { v41 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; v22 = v98; if ( !v41 ) v22 = 0; v42 = 0; if ( !v41 ) v42 = a3; a3 = v42; } } if ( v22 == v125 ) goto LABEL_136; if ( a1 && a2 == -1 ) { v24 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v24 < a1[3] ) { if ( (*(_BYTE *)(v100[6] + 2 * *v24) & 0x20) == 0 ) { a2 = -1; v25 = v104 ^ 1; goto LABEL_137; } LABEL_67: a1[2] = v24 + 1; goto LABEL_68; } v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v72 = 0; if ( v23 != -1 ) v72 = a1; a1 = v72; } else { LOBYTE(v23) = a2; } if ( (*(_BYTE *)(v100[6] + 2 * (unsigned __int8)v23) & 0x20) == 0 ) goto LABEL_136; v24 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v24 < a1[3] ) goto LABEL_67; (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); LABEL_68: a2 = -1; } case 2: if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) goto LABEL_82; v25 = v102 == 0 || v101 > 1; if ( v25 ) goto LABEL_82; if ( v102 != 1 ) { v104 = 1; if ( v102 == 2 ) { if ( HIBYTE(v146) == 4 ) goto LABEL_82; v26 = 3; if ( HIBYTE(v146) == 3 && v110 ) goto LABEL_82; goto LABEL_139; } LABEL_137: v26 = v102 + 1; if ( v102 + 1 > 3 || v25 ) { v16 = v104 & (v101 > 1); goto LABEL_39; } LABEL_139: v102 = v26; continue; } if ( !v110 && (_BYTE)v146 != 3 && BYTE2(v146) != 1 ) { v26 = 2; goto LABEL_139; } LABEL_82: v106 = 0; v99 = *(_DWORD *)(v117 + 24); while ( 2 ) { v137 = a2 == -1; if ( v137 && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v78 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v79 = 0; if ( !v78 ) v79 = a1; v80 = v137 && a1 != 0; a1 = v79; if ( !v78 ) v80 = 0; v126 = v80; } else { v126 = 0; } } else { v126 = a2 == -1; } if ( a3 && a4 == -1 ) { if ( a3[2] >= a3[3] ) { v29 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v126 ^= v29 == -1; v34 = v29 == -1; v30 = 0; if ( !v34 ) v30 = a3; a3 = v30; } } else { v126 ^= a4 == -1; } v25 = v126 & (v106 < v99); if ( v25 ) { if ( !a1 || a2 != -1 ) { LOBYTE(v27) = a2; goto LABEL_88; } v28 = (_BYTE *)a1[2]; if ( (unsigned int)v28 < a1[3] ) { if ( *(_BYTE *)(*(_DWORD *)(v117 + 20) + v106) != *v28 ) { a2 = -1; goto LABEL_168; } goto LABEL_90; } v27 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v81 = 0; if ( v27 != -1 ) v81 = a1; a1 = v81; LABEL_88: if ( *(_BYTE *)(*(_DWORD *)(v117 + 20) + v106) != (_BYTE)v27 ) goto LABEL_168; v28 = (_BYTE *)a1[2]; if ( (unsigned int)v28 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else LABEL_90: a1[2] = v28 + 1; ++v106; a2 = -1; continue; } break; } if ( v106 == v99 ) goto LABEL_198; LABEL_168: if ( !v106 ) { v104 = (*(_BYTE *)(a5 + 13) & 2) == 0; v25 = (*(_BYTE *)(a5 + 13) & 2) != 0; goto LABEL_137; } LABEL_119: v135 = a2 == -1; v124 = v135 & (a1 != 0); LABEL_120: *a6 |= 4u; if ( v124 ) goto LABEL_189; LABEL_121: v37 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v37 = 0; if ( a3[2] >= a3[3] ) v37 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; } } if ( v37 == v135 ) *a6 |= 2u; if ( Block != v152 ) operator delete(Block); if ( v147 != v149 ) operator delete(v147); return a1; case 3: if ( !*(_DWORD *)(v117 + 32) ) { if ( !*(_DWORD *)(v117 + 40) ) goto LABEL_74; LABEL_199: v141 = a2 == -1; if ( !a1 || a2 != -1 ) { v130 = a2 == -1; goto LABEL_202; } LABEL_253: v130 = 1; v141 = 0; if ( a1[2] >= a1[3] ) { v67 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v68 = 0; if ( !v67 ) v68 = a1; v130 = 1; v141 = v67; a1 = v68; } LABEL_202: v51 = a4 == -1; v109 = v51 & (a3 != 0); if ( v109 ) { v51 = 0; if ( a3[2] >= a3[3] ) { v84 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; v51 = 0; if ( v84 ) v51 = v109; v85 = 0; if ( !v84 ) v85 = a3; a3 = v85; } } if ( v51 == v141 ) { LABEL_204: if ( !*(_DWORD *)(v117 + 32) || *(_DWORD *)(v117 + 40) ) { LABEL_74: v25 = v110; v104 = !v110; goto LABEL_137; } goto LABEL_157; } if ( a1 && v130 ) { v70 = (_BYTE *)a1[2]; if ( (unsigned int)v70 < a1[3] ) { if ( *v70 != **(_BYTE **)(v117 + 36) ) goto LABEL_204; v101 = *(_DWORD *)(v117 + 40); goto LABEL_267; } v71 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v93 = 0; if ( v71 != -1 ) v93 = a1; a1 = v93; } else { LOBYTE(v71) = a2; } if ( **(_BYTE **)(v117 + 36) != (_BYTE)v71 ) goto LABEL_204; v101 = *(_DWORD *)(v117 + 40); v70 = (_BYTE *)a1[2]; if ( (unsigned int)v70 >= a1[3] ) { (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); goto LABEL_268; } LABEL_267: a1[2] = v70 + 1; LABEL_268: a2 = -1; v25 = 0; v104 = 1; v111 = 1; goto LABEL_137; } v139 = a2 == -1; if ( v139 && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v90 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v91 = 0; if ( !v90 ) v91 = a1; v92 = v139 && a1 != 0; a1 = v91; if ( !v90 ) v92 = 0; v128 = v92; } else { v128 = 0; } } else { v128 = a2 == -1; } v43 = a4 == -1; v108 = v43 & (a3 != 0); if ( v108 ) { v43 = 0; if ( a3[2] >= a3[3] ) { v82 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; v43 = 0; if ( v82 ) v43 = v108; v83 = 0; if ( !v82 ) v83 = a3; a3 = v83; } } if ( v128 == v43 ) { LABEL_155: if ( *(_DWORD *)(v117 + 40) ) goto LABEL_199; LABEL_156: if ( !*(_DWORD *)(v117 + 32) ) goto LABEL_74; LABEL_157: v104 = 1; v25 = 0; v111 = 1; goto LABEL_137; } if ( a1 && a2 == -1 ) { v66 = (_BYTE *)a1[2]; if ( (unsigned int)v66 < a1[3] ) { if ( **(_BYTE **)(v117 + 28) != *v66 ) { if ( *(_DWORD *)(v117 + 40) ) goto LABEL_253; goto LABEL_156; } v101 = *(_DWORD *)(v117 + 32); goto LABEL_260; } v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v94 = 0; if ( v69 != -1 ) v94 = a1; a1 = v94; } else { LOBYTE(v69) = a2; } if ( **(_BYTE **)(v117 + 28) != (_BYTE)v69 ) goto LABEL_155; v101 = *(_DWORD *)(v117 + 32); v66 = (_BYTE *)a1[2]; if ( (unsigned int)v66 >= a1[3] ) { (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); LABEL_261: a2 = -1; v25 = 0; LABEL_198: v104 = 1; goto LABEL_137; } LABEL_260: a1[2] = v66 + 1; goto LABEL_261; case 4: while ( 2 ) { v132 = a2 == -1; if ( v132 && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v53 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v54 = 0; if ( !v53 ) v54 = a1; v55 = v132 && a1 != 0; a1 = v54; if ( !v53 ) v55 = 0; v121 = v55; } else { v121 = 0; } } else { v121 = a2 == -1; } v11 = a4 == -1; v103 = v11 & (a3 != 0); if ( v103 && (v11 = 0, a3[2] >= a3[3]) ) { v34 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; v35 = v103; if ( !v34 ) v35 = 0; v36 = 0; if ( !v34 ) v36 = a3; a3 = v36; if ( v35 == v121 ) goto LABEL_117; } else if ( v11 == v121 ) { goto LABEL_117; } if ( a1 && a2 == -1 ) { v39 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v39 >= a1[3] ) { v56 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v57 = v56 == -1; v58 = -1; if ( v56 != -1 ) v58 = v56; v59 = 0; if ( !v57 ) v59 = a1; v133 = v58; a1 = v59; } else { v133 = *v39; } } else { v133 = a2; } v12 = memchr((const void *)(v117 + 57), (char)v133, 0xAu); if ( v12 ) { v7 = Block; v131 = v12[(_DWORD)std::money_base::_S_atoms - 56 - v117]; v143 = v151; v8 = 15; if ( Block != v152 ) v8 = v152[0]; v120 = (std::locale::facet *)(v151 + 1); if ( v151 + 1 > v8 ) { std::string::_M_mutate((int)&Block, v151, 0, 0, 1u); v7 = Block; } ++v116; v7[v143] = v131; v151 = (size_t)v120; *((_BYTE *)Block + v143 + 1) = 0; LABEL_14: v9 = a1; v10 = a1[2]; if ( v10 < a1[3] ) { LABEL_15: v9[2] = v10 + 1; LABEL_16: a2 = -1; continue; } LABEL_35: (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); goto LABEL_16; } break; } v104 = v112 | (*(_BYTE *)(v117 + 17) != v133); if ( !v104 ) { if ( *(int *)(v117 + 44) > 0 ) { v40 = v116; v112 = 1; v116 = 0; v97 = v40; goto LABEL_14; } v112 = 0; LABEL_117: v104 = 1; LABEL_118: if ( !v151 ) goto LABEL_119; goto LABEL_136; } v13 = *(_BYTE *)(v117 + 16); if ( !v13 ) goto LABEL_118; if ( *(_BYTE *)(v117 + 18) == v133 ) { if ( !v112 ) { if ( v116 ) { v134 = v116; v14 = v147; v144 = (size_t)v148; v15 = 15; if ( v147 != v149 ) v15 = v149[0]; v122 = (std::locale::facet *)((char *)v148 + 1); if ( (unsigned int)v148 + 1 > v15 ) { std::string::_M_mutate((int)&v147, (size_t)v148, 0, 0, 1u); v14 = v147; } v116 = 0; v14[v144] = v134; v148 = v122; *((_BYTE *)v147 + v144 + 1) = 0; v9 = a1; v10 = a1[2]; if ( v10 < a1[3] ) goto LABEL_15; goto LABEL_35; } v104 = 0; goto LABEL_118; } v13 = v112; } v104 = v13; if ( !v151 ) goto LABEL_119; LABEL_136: v25 = v104 ^ 1; goto LABEL_137; default: v104 = 1; v25 = 0; goto LABEL_137; } } } // 48ED3B: variable 'v95' is possibly undefined // 53F588: using guessed type char *std::money_base::_S_atoms; // 53F708: using guessed type signed __int32 std::moneypunct::id; // 5606D4: using guessed type int (*off_5606D4)(); //----- (0048F480) -------------------------------------------------------- _DWORD *__stdcall std::money_get>::_M_extract( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { _BYTE *v7; // edx unsigned int v8; // eax _DWORD *v9; // ecx unsigned int v10; // eax char v11; // al _BYTE *v12; // eax char v13; // al _BYTE *v14; // edx unsigned int v15; // eax char v16; // al int v17; // eax char v18; // dl _BYTE *v19; // eax int v20; // eax _DWORD *v21; // eax char v22; // al int v23; // eax unsigned __int8 *v24; // eax char v25; // al int v26; // edx int v27; // eax _BYTE *v28; // eax int v29; // eax _DWORD *v30; // eax char v31; // al int v32; // eax unsigned __int8 *v33; // eax bool v34; // zf char v35; // al _DWORD *v36; // edx char v37; // al unsigned __int8 *v39; // eax char v40; // al bool v41; // zf _DWORD *v42; // edx char v43; // al char v44; // al _BYTE *v45; // edx unsigned int v46; // eax int v47; // eax unsigned __int8 v48; // dl bool v49; // zf _DWORD *v50; // eax char v51; // al unsigned int first_not_of; // eax bool v53; // zf _DWORD *v54; // eax bool v55; // bl int v56; // eax bool v57; // zf char v58; // dl _DWORD *v59; // eax _DWORD *v60; // eax bool v61; // zf _DWORD *v62; // edx bool v63; // zf _DWORD *v64; // eax bool v65; // bl _BYTE *v66; // eax bool v67; // zf _DWORD *v68; // eax int v69; // eax _BYTE *v70; // eax int v71; // eax _DWORD *v72; // edx bool v73; // zf _DWORD *v74; // eax char v75; // bl int v76; // eax _DWORD *v77; // eax bool v78; // zf _DWORD *v79; // eax bool v80; // bl _DWORD *v81; // edx bool v82; // zf _DWORD *v83; // edx bool v84; // zf _DWORD *v85; // edx bool v86; // zf _DWORD *v87; // eax bool v88; // bl _DWORD *v89; // edx bool v90; // zf _DWORD *v91; // eax bool v92; // bl _DWORD *v93; // edx _DWORD *v94; // edx unsigned int v95; // [esp+8h] [ebp-D0h] std::locale::_Impl *v96; // [esp+14h] [ebp-C4h] char v97; // [esp+18h] [ebp-C0h] char v98; // [esp+1Ch] [ebp-BCh] unsigned int v99; // [esp+1Ch] [ebp-BCh] _DWORD *v100; // [esp+20h] [ebp-B8h] unsigned int v101; // [esp+24h] [ebp-B4h] int v102; // [esp+2Ch] [ebp-ACh] char v103; // [esp+30h] [ebp-A8h] char v104; // [esp+30h] [ebp-A8h] int v105; // [esp+30h] [ebp-A8h] unsigned int v106; // [esp+30h] [ebp-A8h] char v107; // [esp+30h] [ebp-A8h] char v108; // [esp+30h] [ebp-A8h] char v109; // [esp+30h] [ebp-A8h] bool v110; // [esp+35h] [ebp-A3h] char v111; // [esp+36h] [ebp-A2h] char v112; // [esp+37h] [ebp-A1h] unsigned int Buf; // [esp+38h] [ebp-A0h] std::locale::facet *Bufa; // [esp+38h] [ebp-A0h] int *v115; // [esp+3Ch] [ebp-9Ch] int v116; // [esp+3Ch] [ebp-9Ch] int v117; // [esp+40h] [ebp-98h] std::locale::facet *v119; // [esp+4Ch] [ebp-8Ch] std::locale::facet *v120; // [esp+4Ch] [ebp-8Ch] char v121; // [esp+4Ch] [ebp-8Ch] std::locale::facet *v122; // [esp+4Ch] [ebp-8Ch] char v123; // [esp+4Ch] [ebp-8Ch] unsigned __int8 v124; // [esp+4Ch] [ebp-8Ch] char v125; // [esp+4Ch] [ebp-8Ch] char v126; // [esp+4Ch] [ebp-8Ch] char v127; // [esp+4Ch] [ebp-8Ch] char v128; // [esp+4Ch] [ebp-8Ch] char v129; // [esp+4Ch] [ebp-8Ch] bool v130; // [esp+4Ch] [ebp-8Ch] char v131; // [esp+50h] [ebp-88h] bool v132; // [esp+50h] [ebp-88h] unsigned __int8 v133; // [esp+50h] [ebp-88h] char v134; // [esp+50h] [ebp-88h] unsigned __int8 v135; // [esp+50h] [ebp-88h] bool v136; // [esp+50h] [ebp-88h] bool v137; // [esp+50h] [ebp-88h] bool v138; // [esp+50h] [ebp-88h] bool v139; // [esp+50h] [ebp-88h] size_t v140; // [esp+50h] [ebp-88h] char v141; // [esp+50h] [ebp-88h] size_t v143; // [esp+54h] [ebp-84h] size_t v144; // [esp+54h] [ebp-84h] int v146; // [esp+9Ch] [ebp-3Ch] void *v147; // [esp+A0h] [ebp-38h] BYREF std::locale::facet *v148; // [esp+A4h] [ebp-34h] int v149[4]; // [esp+A8h] [ebp-30h] BYREF void *Block; // [esp+B8h] [ebp-20h] BYREF size_t v151; // [esp+BCh] [ebp-1Ch] int v152[5]; // [esp+C0h] [ebp-18h] BYREF v100 = std::use_facet>(a5 + 108); v119 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v115 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v119); v117 = *v115; if ( !*v115 ) { v60 = operator new(0x44u); *v60 = &off_5606E4; v60[1] = 0; v60[2] = 0; v60[3] = 0; *((_WORD *)v60 + 8) = 0; *((_BYTE *)v60 + 18) = 0; v60[5] = 0; v60[6] = 0; v60[7] = 0; v60[8] = 0; v60[9] = 0; v60[10] = 0; v60[11] = 0; v60[12] = 0; v60[13] = 0; *((_BYTE *)v60 + 67) = 0; v96 = (std::locale::_Impl *)v60; std::__moneypunct_cache::_M_cache((int)v60, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v96, v119, v95); v117 = *v115; } if ( *(_DWORD *)(v117 + 32) ) v110 = *(_DWORD *)(v117 + 40) != 0; else v110 = 0; v148 = 0; v147 = v149; LOBYTE(v149[0]) = 0; if ( *(_BYTE *)(v117 + 16) ) std::string::reserve(&v147, 0x20u); Block = v152; v151 = 0; LOBYTE(v152[0]) = 0; std::string::reserve(&Block, 0x20u); v102 = 0; v112 = 0; v116 = 0; v146 = *(_DWORD *)(v117 + 52); v97 = 0; v101 = 0; v111 = 0; while ( 2 ) { switch ( *((_BYTE *)&v146 + v102) ) { case 0: v104 = 1; goto LABEL_37; case 1: v138 = a2 == -1; if ( v138 && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v86 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v87 = 0; if ( !v86 ) v87 = a1; v88 = v138 && a1 != 0; a1 = v87; if ( !v86 ) v88 = 0; v127 = v88; } else { v127 = 0; } } else { v127 = a2 == -1; } v31 = a4 == -1; v107 = v31 & (a3 != 0); if ( v107 ) { v31 = 0; if ( a3[2] >= a3[3] ) { v61 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; v31 = 0; if ( v61 ) v31 = v107; v62 = 0; if ( !v61 ) v62 = a3; a3 = v62; } } v104 = 0; if ( v127 == v31 ) goto LABEL_37; if ( !a1 || a2 != -1 ) { LOBYTE(v32) = a2; goto LABEL_107; } v33 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v33 >= a1[3] ) { v32 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v89 = 0; if ( v32 != -1 ) v89 = a1; a1 = v89; LABEL_107: v104 = 0; if ( (*(_BYTE *)(v100[6] + 2 * (unsigned __int8)v32) & 0x20) == 0 ) goto LABEL_37; v33 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v33 >= a1[3] ) { (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); goto LABEL_110; } LABEL_109: a1[2] = v33 + 1; LABEL_110: a2 = -1; v104 = 1; goto LABEL_37; } if ( (*(_BYTE *)(v100[6] + 2 * *v33) & 0x20) != 0 ) goto LABEL_109; a2 = -1; LABEL_37: if ( v102 == 3 ) { v16 = v104 & (v101 > 1); LABEL_39: if ( v16 ) { if ( v111 ) v17 = *(_DWORD *)(v117 + 36); else v17 = *(_DWORD *)(v117 + 28); v105 = v17; for ( Buf = 1; ; ++Buf ) { v135 = a2 == -1; if ( (v135 & (a1 != 0)) != 0 ) { if ( a1[2] >= a1[3] ) { v73 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v74 = 0; if ( !v73 ) v74 = a1; v75 = v135 & (a1 != 0); a1 = v74; if ( !v73 ) v75 = 0; v123 = v75; } else { v123 = 0; } } else { v123 = a2 == -1; } if ( a3 && a4 == -1 ) { if ( a3[2] >= a3[3] ) { v20 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v123 ^= v20 == -1; v34 = v20 == -1; v21 = 0; if ( !v34 ) v21 = a3; a3 = v21; } } else { v123 ^= a4 == -1; } if ( Buf >= v101 || !v123 ) { if ( Buf != v101 ) { LABEL_195: v124 = v135 & (a1 != 0); goto LABEL_120; } if ( v151 > 1 ) goto LABEL_207; goto LABEL_174; } v18 = a2; v124 = v135 & (a1 != 0); if ( v124 ) { v19 = (_BYTE *)a1[2]; if ( (unsigned int)v19 < a1[3] ) { if ( *(_BYTE *)(v105 + Buf) != *v19 ) { v135 &= a1 != 0; goto LABEL_120; } LABEL_49: a1[2] = v19 + 1; goto LABEL_50; } v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v34 = v76 == -1; v18 = v76; v77 = 0; if ( !v34 ) v77 = a1; a1 = v77; } if ( *(_BYTE *)(v105 + Buf) != v18 ) goto LABEL_195; v19 = (_BYTE *)a1[2]; if ( (unsigned int)v19 < a1[3] ) goto LABEL_49; (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); LABEL_50: a2 = -1; } } if ( !v104 ) goto LABEL_119; if ( v151 > 1 ) { LABEL_207: first_not_of = std::string::find_first_not_of(&Block, 48, 0); if ( first_not_of ) { if ( first_not_of != -1 ) goto LABEL_209; first_not_of = v151 - 1; if ( !v151 ) { v151 = 0; *(_BYTE *)Block = 0; goto LABEL_174; } if ( v151 != 1 ) { LABEL_209: if ( v151 <= first_not_of ) first_not_of = v151; std::string::_M_erase((int *)&Block, 0, first_not_of); } } } LABEL_174: if ( v111 && *(_BYTE *)Block != 48 ) std::string::_M_replace_aux(&Block, 0, 0, 1u, 45); v140 = (size_t)v148; if ( v148 ) { v44 = v97; if ( !v112 ) v44 = v116; v45 = v147; Bufa = (std::locale::facet *)((char *)v148 + 1); v129 = v44; v46 = 15; if ( v147 != v149 ) v46 = v149[0]; if ( (unsigned int)v148 + 1 > v46 ) { std::string::_M_mutate((int)&v147, (size_t)v148, 0, 0, 1u); v45 = v147; } v45[v140] = v129; v148 = Bufa; *((_BYTE *)v147 + v140 + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v117 + 8), *(_DWORD *)(v117 + 12), (int)&v147) ) *a6 |= 4u; } v135 = a2 == -1; v124 = v135 & (a1 != 0); if ( v112 && *(_DWORD *)(v117 + 44) != v116 ) goto LABEL_120; std::string::swap(a7, &Block); if ( !v124 ) goto LABEL_121; LABEL_189: v135 = 0; if ( a1[2] >= a1[3] ) { v47 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v48 = v124; v49 = v47 == -1; if ( v47 != -1 ) v48 = 0; v50 = 0; if ( !v49 ) v50 = a1; v135 = v48; a1 = v50; } goto LABEL_121; } while ( 1 ) { v136 = a2 == -1; if ( v136 && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v63 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v64 = 0; if ( !v63 ) v64 = a1; v65 = v136 && a1 != 0; a1 = v64; if ( !v63 ) v65 = 0; v125 = v65; } else { v125 = 0; } } else { v125 = a2 == -1; } v22 = a4 == -1; v98 = v22 & (a3 != 0); if ( v98 ) { v22 = 0; if ( a3[2] >= a3[3] ) { v41 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; v22 = v98; if ( !v41 ) v22 = 0; v42 = 0; if ( !v41 ) v42 = a3; a3 = v42; } } if ( v22 == v125 ) goto LABEL_136; if ( a1 && a2 == -1 ) { v24 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v24 < a1[3] ) { if ( (*(_BYTE *)(v100[6] + 2 * *v24) & 0x20) == 0 ) { a2 = -1; v25 = v104 ^ 1; goto LABEL_137; } LABEL_67: a1[2] = v24 + 1; goto LABEL_68; } v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v72 = 0; if ( v23 != -1 ) v72 = a1; a1 = v72; } else { LOBYTE(v23) = a2; } if ( (*(_BYTE *)(v100[6] + 2 * (unsigned __int8)v23) & 0x20) == 0 ) goto LABEL_136; v24 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v24 < a1[3] ) goto LABEL_67; (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); LABEL_68: a2 = -1; } case 2: if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) goto LABEL_82; v25 = v102 == 0 || v101 > 1; if ( v25 ) goto LABEL_82; if ( v102 != 1 ) { v104 = 1; if ( v102 == 2 ) { if ( HIBYTE(v146) == 4 ) goto LABEL_82; v26 = 3; if ( HIBYTE(v146) == 3 && v110 ) goto LABEL_82; goto LABEL_139; } LABEL_137: v26 = v102 + 1; if ( v102 + 1 > 3 || v25 ) { v16 = v104 & (v101 > 1); goto LABEL_39; } LABEL_139: v102 = v26; continue; } if ( !v110 && (_BYTE)v146 != 3 && BYTE2(v146) != 1 ) { v26 = 2; goto LABEL_139; } LABEL_82: v106 = 0; v99 = *(_DWORD *)(v117 + 24); while ( 2 ) { v137 = a2 == -1; if ( v137 && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v78 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v79 = 0; if ( !v78 ) v79 = a1; v80 = v137 && a1 != 0; a1 = v79; if ( !v78 ) v80 = 0; v126 = v80; } else { v126 = 0; } } else { v126 = a2 == -1; } if ( a3 && a4 == -1 ) { if ( a3[2] >= a3[3] ) { v29 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v126 ^= v29 == -1; v34 = v29 == -1; v30 = 0; if ( !v34 ) v30 = a3; a3 = v30; } } else { v126 ^= a4 == -1; } v25 = v126 & (v106 < v99); if ( v25 ) { if ( !a1 || a2 != -1 ) { LOBYTE(v27) = a2; goto LABEL_88; } v28 = (_BYTE *)a1[2]; if ( (unsigned int)v28 < a1[3] ) { if ( *(_BYTE *)(*(_DWORD *)(v117 + 20) + v106) != *v28 ) { a2 = -1; goto LABEL_168; } goto LABEL_90; } v27 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v81 = 0; if ( v27 != -1 ) v81 = a1; a1 = v81; LABEL_88: if ( *(_BYTE *)(*(_DWORD *)(v117 + 20) + v106) != (_BYTE)v27 ) goto LABEL_168; v28 = (_BYTE *)a1[2]; if ( (unsigned int)v28 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else LABEL_90: a1[2] = v28 + 1; ++v106; a2 = -1; continue; } break; } if ( v106 == v99 ) goto LABEL_198; LABEL_168: if ( !v106 ) { v104 = (*(_BYTE *)(a5 + 13) & 2) == 0; v25 = (*(_BYTE *)(a5 + 13) & 2) != 0; goto LABEL_137; } LABEL_119: v135 = a2 == -1; v124 = v135 & (a1 != 0); LABEL_120: *a6 |= 4u; if ( v124 ) goto LABEL_189; LABEL_121: v37 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v37 = 0; if ( a3[2] >= a3[3] ) v37 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; } } if ( v37 == v135 ) *a6 |= 2u; if ( Block != v152 ) operator delete(Block); if ( v147 != v149 ) operator delete(v147); return a1; case 3: if ( !*(_DWORD *)(v117 + 32) ) { if ( !*(_DWORD *)(v117 + 40) ) goto LABEL_74; LABEL_199: v141 = a2 == -1; if ( !a1 || a2 != -1 ) { v130 = a2 == -1; goto LABEL_202; } LABEL_253: v130 = 1; v141 = 0; if ( a1[2] >= a1[3] ) { v67 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v68 = 0; if ( !v67 ) v68 = a1; v130 = 1; v141 = v67; a1 = v68; } LABEL_202: v51 = a4 == -1; v109 = v51 & (a3 != 0); if ( v109 ) { v51 = 0; if ( a3[2] >= a3[3] ) { v84 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; v51 = 0; if ( v84 ) v51 = v109; v85 = 0; if ( !v84 ) v85 = a3; a3 = v85; } } if ( v51 == v141 ) { LABEL_204: if ( !*(_DWORD *)(v117 + 32) || *(_DWORD *)(v117 + 40) ) { LABEL_74: v25 = v110; v104 = !v110; goto LABEL_137; } goto LABEL_157; } if ( a1 && v130 ) { v70 = (_BYTE *)a1[2]; if ( (unsigned int)v70 < a1[3] ) { if ( *v70 != **(_BYTE **)(v117 + 36) ) goto LABEL_204; v101 = *(_DWORD *)(v117 + 40); goto LABEL_267; } v71 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v93 = 0; if ( v71 != -1 ) v93 = a1; a1 = v93; } else { LOBYTE(v71) = a2; } if ( **(_BYTE **)(v117 + 36) != (_BYTE)v71 ) goto LABEL_204; v101 = *(_DWORD *)(v117 + 40); v70 = (_BYTE *)a1[2]; if ( (unsigned int)v70 >= a1[3] ) { (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); goto LABEL_268; } LABEL_267: a1[2] = v70 + 1; LABEL_268: a2 = -1; v25 = 0; v104 = 1; v111 = 1; goto LABEL_137; } v139 = a2 == -1; if ( v139 && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v90 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v91 = 0; if ( !v90 ) v91 = a1; v92 = v139 && a1 != 0; a1 = v91; if ( !v90 ) v92 = 0; v128 = v92; } else { v128 = 0; } } else { v128 = a2 == -1; } v43 = a4 == -1; v108 = v43 & (a3 != 0); if ( v108 ) { v43 = 0; if ( a3[2] >= a3[3] ) { v82 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; v43 = 0; if ( v82 ) v43 = v108; v83 = 0; if ( !v82 ) v83 = a3; a3 = v83; } } if ( v128 == v43 ) { LABEL_155: if ( *(_DWORD *)(v117 + 40) ) goto LABEL_199; LABEL_156: if ( !*(_DWORD *)(v117 + 32) ) goto LABEL_74; LABEL_157: v104 = 1; v25 = 0; v111 = 1; goto LABEL_137; } if ( a1 && a2 == -1 ) { v66 = (_BYTE *)a1[2]; if ( (unsigned int)v66 < a1[3] ) { if ( **(_BYTE **)(v117 + 28) != *v66 ) { if ( *(_DWORD *)(v117 + 40) ) goto LABEL_253; goto LABEL_156; } v101 = *(_DWORD *)(v117 + 32); goto LABEL_260; } v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v94 = 0; if ( v69 != -1 ) v94 = a1; a1 = v94; } else { LOBYTE(v69) = a2; } if ( **(_BYTE **)(v117 + 28) != (_BYTE)v69 ) goto LABEL_155; v101 = *(_DWORD *)(v117 + 32); v66 = (_BYTE *)a1[2]; if ( (unsigned int)v66 >= a1[3] ) { (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); LABEL_261: a2 = -1; v25 = 0; LABEL_198: v104 = 1; goto LABEL_137; } LABEL_260: a1[2] = v66 + 1; goto LABEL_261; case 4: while ( 2 ) { v132 = a2 == -1; if ( v132 && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v53 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; v54 = 0; if ( !v53 ) v54 = a1; v55 = v132 && a1 != 0; a1 = v54; if ( !v53 ) v55 = 0; v121 = v55; } else { v121 = 0; } } else { v121 = a2 == -1; } v11 = a4 == -1; v103 = v11 & (a3 != 0); if ( v103 && (v11 = 0, a3[2] >= a3[3]) ) { v34 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; v35 = v103; if ( !v34 ) v35 = 0; v36 = 0; if ( !v34 ) v36 = a3; a3 = v36; if ( v35 == v121 ) goto LABEL_117; } else if ( v11 == v121 ) { goto LABEL_117; } if ( a1 && a2 == -1 ) { v39 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v39 >= a1[3] ) { v56 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v57 = v56 == -1; v58 = -1; if ( v56 != -1 ) v58 = v56; v59 = 0; if ( !v57 ) v59 = a1; v133 = v58; a1 = v59; } else { v133 = *v39; } } else { v133 = a2; } v12 = memchr((const void *)(v117 + 57), (char)v133, 0xAu); if ( v12 ) { v7 = Block; v131 = v12[(_DWORD)std::money_base::_S_atoms - 56 - v117]; v143 = v151; v8 = 15; if ( Block != v152 ) v8 = v152[0]; v120 = (std::locale::facet *)(v151 + 1); if ( v151 + 1 > v8 ) { std::string::_M_mutate((int)&Block, v151, 0, 0, 1u); v7 = Block; } ++v116; v7[v143] = v131; v151 = (size_t)v120; *((_BYTE *)Block + v143 + 1) = 0; LABEL_14: v9 = a1; v10 = a1[2]; if ( v10 < a1[3] ) { LABEL_15: v9[2] = v10 + 1; LABEL_16: a2 = -1; continue; } LABEL_35: (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); goto LABEL_16; } break; } v104 = v112 | (*(_BYTE *)(v117 + 17) != v133); if ( !v104 ) { if ( *(int *)(v117 + 44) > 0 ) { v40 = v116; v112 = 1; v116 = 0; v97 = v40; goto LABEL_14; } v112 = 0; LABEL_117: v104 = 1; LABEL_118: if ( !v151 ) goto LABEL_119; goto LABEL_136; } v13 = *(_BYTE *)(v117 + 16); if ( !v13 ) goto LABEL_118; if ( *(_BYTE *)(v117 + 18) == v133 ) { if ( !v112 ) { if ( v116 ) { v134 = v116; v14 = v147; v144 = (size_t)v148; v15 = 15; if ( v147 != v149 ) v15 = v149[0]; v122 = (std::locale::facet *)((char *)v148 + 1); if ( (unsigned int)v148 + 1 > v15 ) { std::string::_M_mutate((int)&v147, (size_t)v148, 0, 0, 1u); v14 = v147; } v116 = 0; v14[v144] = v134; v148 = v122; *((_BYTE *)v147 + v144 + 1) = 0; v9 = a1; v10 = a1[2]; if ( v10 < a1[3] ) goto LABEL_15; goto LABEL_35; } v104 = 0; goto LABEL_118; } v13 = v112; } v104 = v13; if ( !v151 ) goto LABEL_119; LABEL_136: v25 = v104 ^ 1; goto LABEL_137; default: v104 = 1; v25 = 0; goto LABEL_137; } } } // 49066B: variable 'v95' is possibly undefined // 53F588: using guessed type char *std::money_base::_S_atoms; // 53F70C: using guessed type signed __int32 std::moneypunct::id; // 5606E4: using guessed type int (*off_5606E4)(); //----- (00490DB0) -------------------------------------------------------- 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); } //----- (00490DC0) -------------------------------------------------------- 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); } //----- (00490DD0) -------------------------------------------------------- __int64 __stdcall std::money_get>::do_get( __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, int *a7) { __int64 v7; // rax char v9; // al void (__thiscall *v10)(_BYTE *, char *, char *, void *); // eax void *v11; // [esp+28h] [ebp-70h] char *v12; // [esp+2Ch] [ebp-6Ch] _BYTE *v13; // [esp+30h] [ebp-68h] _DWORD *Size; // [esp+34h] [ebp-64h] char *Block; // [esp+38h] [ebp-60h] void *v16; // [esp+78h] [ebp-20h] BYREF _DWORD *v17; // [esp+7Ch] [ebp-1Ch] char v18[24]; // [esp+80h] [ebp-18h] BYREF __int64 v19; // [esp+A0h] [ebp+8h] v18[0] = 0; v13 = std::use_facet>(a5 + 108); v16 = v18; v17 = 0; if ( a4 ) LODWORD(v7) = std::money_get>::_M_extract( (_DWORD *)a1, SHIDWORD(a1), a2, a3, a5, a6, &v16); else LODWORD(v7) = std::money_get>::_M_extract( (_DWORD *)a1, SHIDWORD(a1), a2, a3, a5, a6, &v16); v19 = v7; Size = v17; if ( !v17 ) goto LABEL_4; std::string::resize(a7, v17, 0); Block = (char *)v16; v12 = (char *)v16 + (_DWORD)Size; v9 = v13[28]; v11 = (void *)*a7; if ( v9 != 1 ) { if ( !v9 ) std::ctype::_M_widen_init((int)v13); v10 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); if ( (char *)v10 == (char *)std::ctype::do_widen ) { if ( v12 != Block ) { LABEL_14: memcpy(v11, Block, (size_t)Size); Block = (char *)v16; goto LABEL_5; } } else { v10(v13, Block, v12, v11); } LABEL_4: Block = (char *)v16; goto LABEL_5; } if ( v12 != v16 ) goto LABEL_14; LABEL_5: if ( Block != v18 ) operator delete(Block); return v19; } // 490E76: variable 'v7' is possibly undefined //----- (00490FE0) -------------------------------------------------------- __int64 __stdcall std::money_get>::do_get( __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, long double *a7) { __int64 v7; // rax void *Block[2]; // [esp+68h] [ebp-20h] BYREF char v10[24]; // [esp+70h] [ebp-18h] BYREF __int64 v11; // [esp+90h] [ebp+8h] Block[0] = v10; Block[1] = 0; v10[0] = 0; if ( a4 ) LODWORD(v7) = std::money_get>::_M_extract( (_DWORD *)a1, SHIDWORD(a1), a2, a3, a5, a6, Block); else LODWORD(v7) = std::money_get>::_M_extract( (_DWORD *)a1, SHIDWORD(a1), a2, a3, a5, a6, Block); v11 = v7; std::locale::facet::_S_get_c_locale(); std::__convert_to_v((char *)Block[0], a7, a6); if ( Block[0] != v10 ) operator delete(Block[0]); return v11; } // 491071: variable 'v7' is possibly undefined //----- (00491110) -------------------------------------------------------- _DWORD *__stdcall std::money_get>::_M_extract( _DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7) { char v7; // al _BYTE *v8; // edx unsigned int v9; // eax _DWORD *v10; // ecx unsigned int v11; // eax char v12; // al __int16 v13; // dx _WORD *v14; // eax _BYTE *v15; // edx unsigned int v16; // eax char v17; // al int v18; // eax char v19; // al __int16 v20; // ax unsigned int v21; // eax __int16 *v22; // eax __int16 v23; // ax bool v24; // zf _DWORD *v25; // eax char v26; // bl char v27; // al unsigned __int16 v28; // ax unsigned int v29; // eax __int16 *v30; // eax __int16 v31; // ax bool v32; // zf _DWORD *v33; // eax bool v34; // bl char v35; // al unsigned __int16 v36; // ax unsigned int v37; // eax char v38; // al int v39; // edx bool v40; // al __int16 v41; // ax unsigned int v42; // eax __int16 *v43; // eax __int16 v44; // ax bool v45; // zf _DWORD *v46; // eax bool v47; // bl __int16 *v48; // eax __int16 v49; // ax bool v50; // zf _DWORD *v51; // ebx char v52; // al _BYTE *v53; // eax _BYTE *v54; // edx __int16 *v56; // eax __int16 v57; // ax bool v58; // zf _DWORD *v59; // eax bool v60; // bl __int16 *v61; // eax _DWORD *v62; // eax char v63; // al __int16 *v64; // eax __int16 v65; // ax bool v66; // zf _DWORD *v67; // ebx unsigned __int16 *v68; // eax _DWORD *v69; // ebx char v70; // al __int16 *v71; // eax __int16 v72; // ax bool v73; // zf _DWORD *v74; // ebx char v75; // al _BYTE *v76; // eax unsigned int v77; // edx __int16 *v78; // eax _DWORD *v79; // ebx __int16 *v80; // eax __int16 v81; // ax bool v82; // zf _DWORD *v83; // ebx __int16 *v84; // eax _DWORD *v85; // ebx char v86; // al unsigned int first_not_of; // eax __int16 v88; // ax unsigned int v89; // eax _DWORD *v90; // eax __int16 *v91; // eax __int16 v92; // ax __int16 *v93; // eax __int16 v94; // ax unsigned __int8 v95; // bl bool v96; // zf __int16 *v97; // eax __int16 v98; // ax bool v99; // zf _DWORD *v100; // ebx __int16 *v101; // eax __int16 v102; // ax bool v103; // zf _DWORD *v104; // eax bool v105; // bl __int16 *v106; // eax __int16 v107; // ax _DWORD *v108; // ebx unsigned int v109; // eax __int16 *v110; // eax _DWORD *v111; // ebx __int16 *v112; // eax __int16 v113; // ax bool v114; // zf _DWORD *v115; // eax bool v116; // bl __int16 *v117; // eax __int16 v118; // ax bool v119; // zf _DWORD *v120; // eax bool v121; // bl __int16 *v122; // eax __int16 v123; // ax bool v124; // zf _DWORD *v125; // ebx unsigned __int16 *v126; // eax _DWORD *v127; // ebx __int16 *v128; // eax __int16 v129; // ax bool v130; // zf _DWORD *v131; // ebx unsigned int v132; // [esp+8h] [ebp-E0h] std::locale::_Impl *v133; // [esp+1Ch] [ebp-CCh] char v134; // [esp+20h] [ebp-C8h] char v135; // [esp+2Ch] [ebp-BCh] unsigned int v136; // [esp+2Ch] [ebp-BCh] void *v137; // [esp+30h] [ebp-B8h] unsigned int v138; // [esp+34h] [ebp-B4h] int v139; // [esp+3Ch] [ebp-ACh] int v140; // [esp+3Ch] [ebp-ACh] bool v141; // [esp+40h] [ebp-A8h] char v142; // [esp+41h] [ebp-A7h] bool v143; // [esp+42h] [ebp-A6h] char v144; // [esp+43h] [ebp-A5h] char v145; // [esp+44h] [ebp-A4h] char v146; // [esp+48h] [ebp-A0h] char v147; // [esp+48h] [ebp-A0h] unsigned int i; // [esp+48h] [ebp-A0h] char v149; // [esp+48h] [ebp-A0h] unsigned int v150; // [esp+48h] [ebp-A0h] char v151; // [esp+48h] [ebp-A0h] char v152; // [esp+48h] [ebp-A0h] int *v153; // [esp+4Ch] [ebp-9Ch] int v154; // [esp+4Ch] [ebp-9Ch] size_t v155; // [esp+50h] [ebp-98h] int v156; // [esp+54h] [ebp-94h] std::locale::facet *v157; // [esp+58h] [ebp-90h] std::locale::facet *v158; // [esp+58h] [ebp-90h] char v159; // [esp+58h] [ebp-90h] std::locale::facet *v160; // [esp+58h] [ebp-90h] char v161; // [esp+58h] [ebp-90h] char v162; // [esp+58h] [ebp-90h] char v163; // [esp+58h] [ebp-90h] bool v164; // [esp+58h] [ebp-90h] char v165; // [esp+58h] [ebp-90h] char v166; // [esp+58h] [ebp-90h] bool v167; // [esp+58h] [ebp-90h] char v169; // [esp+60h] [ebp-88h] bool v170; // [esp+60h] [ebp-88h] char v171; // [esp+60h] [ebp-88h] unsigned __int8 v172; // [esp+60h] [ebp-88h] bool v173; // [esp+60h] [ebp-88h] bool v174; // [esp+60h] [ebp-88h] bool v175; // [esp+60h] [ebp-88h] bool v176; // [esp+60h] [ebp-88h] size_t v177; // [esp+60h] [ebp-88h] char v178; // [esp+60h] [ebp-88h] size_t v180; // [esp+64h] [ebp-84h] size_t v181; // [esp+64h] [ebp-84h] int v183; // [esp+ACh] [ebp-3Ch] void *v184; // [esp+B0h] [ebp-38h] BYREF size_t v185; // [esp+B4h] [ebp-34h] int v186[4]; // [esp+B8h] [ebp-30h] BYREF void *Block; // [esp+C8h] [ebp-20h] BYREF size_t v188; // [esp+CCh] [ebp-1Ch] int v189[5]; // [esp+D0h] [ebp-18h] BYREF v137 = std::use_facet>(a5 + 108); v157 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v153 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v157); v156 = *v153; if ( !*v153 ) { v90 = operator new(0x54u); v90[1] = 0; *v90 = &off_5606F4; 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; v133 = (std::locale::_Impl *)v90; std::__moneypunct_cache::_M_cache((int)v90, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v133, v157, v132); v156 = *v153; } if ( *(_DWORD *)(v156 + 36) ) v141 = *(_DWORD *)(v156 + 44) != 0; else v141 = 0; v185 = 0; v184 = v186; LOBYTE(v186[0]) = 0; if ( *(_BYTE *)(v156 + 16) ) std::string::reserve(&v184, 0x20u); Block = v189; v188 = 0; LOBYTE(v189[0]) = 0; std::string::reserve(&Block, 0x20u); v139 = 0; v144 = 0; v154 = 0; v183 = *(_DWORD *)(v156 + 56); v134 = 0; v138 = 0; v142 = 0; while ( 2 ) { switch ( *((_BYTE *)&v183 + v139) ) { case 0: v146 = 1; goto LABEL_39; case 1: v174 = a2 == -1; if ( v174 && a1 != 0 ) { v101 = (__int16 *)a1[2]; if ( (unsigned int)v101 >= a1[3] ) v102 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v102 = *v101; v103 = v102 == -1; v104 = 0; if ( !v103 ) v104 = a1; v105 = v174 && a1 != 0; a1 = v104; if ( !v103 ) v105 = 0; v163 = v105; } else { v163 = a2 == -1; } v35 = a4 == -1; v149 = v35 & (a3 != 0); if ( v149 ) { v97 = (__int16 *)a3[2]; if ( (unsigned int)v97 >= a3[3] ) v98 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v98 = *v97; v99 = v98 == -1; v35 = 0; if ( v99 ) v35 = v149; v100 = 0; if ( !v99 ) v100 = a3; a3 = v100; } v146 = 0; if ( v35 != v163 ) { if ( a1 && a2 == -1 ) { v126 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v126 >= a1[3] ) v36 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v36 = *v126; v127 = 0; if ( v36 != 0xFFFF ) v127 = a1; a1 = v127; } else { v36 = a2; } v146 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v137 + 8))(v137, 32, v36); if ( v146 ) { v37 = a1[2]; if ( v37 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v37 + 2; a2 = -1; } } LABEL_39: if ( v139 == 3 ) { v17 = v146 & (v138 > 1); goto LABEL_41; } while ( 1 ) { v173 = a2 == -1; if ( v173 && a1 != 0 ) { v30 = (__int16 *)a1[2]; if ( (unsigned int)v30 >= a1[3] ) v31 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v31 = *v30; v32 = v31 == -1; v33 = 0; if ( !v32 ) v33 = a1; v34 = v173 && a1 != 0; a1 = v33; if ( !v32 ) v34 = 0; v162 = v34; } else { v162 = a2 == -1; } v27 = a4 == -1; v135 = v27 & (a3 != 0); if ( v135 ) { v64 = (__int16 *)a3[2]; if ( (unsigned int)v64 >= a3[3] ) v65 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v65 = *v64; v66 = v65 == -1; v67 = 0; v27 = v135; if ( !v66 ) v67 = a3; a3 = v67; if ( !v66 ) v27 = 0; } if ( v162 == v27 ) break; if ( a1 && a2 == -1 ) { v68 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v68 >= a1[3] ) v28 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v28 = *v68; v69 = 0; if ( v28 != 0xFFFF ) v69 = a1; a1 = v69; } else { v28 = a2; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v137 + 8))(v137, 32, v28) ) break; v29 = a1[2]; if ( v29 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v29 + 2; a2 = -1; } goto LABEL_157; case 2: if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) goto LABEL_103; v38 = v139 == 0 || v138 > 1; if ( v38 ) goto LABEL_103; if ( v139 != 1 ) { v146 = 1; if ( v139 != 2 ) goto LABEL_158; if ( HIBYTE(v183) == 4 ) goto LABEL_103; v39 = 3; if ( HIBYTE(v183) == 3 && v141 ) goto LABEL_103; LABEL_160: v139 = v39; continue; } if ( !v141 && (_BYTE)v183 != 3 && BYTE2(v183) != 1 ) { v39 = 2; goto LABEL_160; } LABEL_103: v150 = 0; v136 = *(_DWORD *)(v156 + 28); while ( 1 ) { v175 = a2 == -1; if ( v175 && a1 != 0 ) { v43 = (__int16 *)a1[2]; if ( (unsigned int)v43 >= a1[3] ) v44 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v44 = *v43; v45 = v44 == -1; v46 = 0; if ( !v45 ) v46 = a1; v47 = v175 && a1 != 0; a1 = v46; if ( !v45 ) v47 = 0; v164 = v47; } else { v164 = a2 == -1; } v40 = a4 == -1; v143 = v40 && a3 != 0; if ( v143 ) { v80 = (__int16 *)a3[2]; if ( (unsigned int)v80 >= a3[3] ) v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v81 = *v80; v82 = v81 == -1; v83 = 0; v40 = v143; if ( !v82 ) v83 = a3; a3 = v83; if ( !v82 ) v40 = 0; } v38 = (v150 < v136) & (v164 ^ v40); if ( !v38 ) break; if ( a1 && a2 == -1 ) { v84 = (__int16 *)a1[2]; if ( (unsigned int)v84 >= a1[3] ) v41 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v41 = *v84; v85 = 0; if ( v41 != -1 ) v85 = a1; a1 = v85; } else { v41 = a2; } if ( *(_WORD *)(*(_DWORD *)(v156 + 24) + 2 * v150) != v41 ) goto LABEL_227; v42 = a1[2]; if ( v42 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v42 + 2; ++v150; a2 = -1; } if ( v150 == v136 ) { LABEL_247: v146 = 1; } else { LABEL_227: if ( v150 ) goto LABEL_131; v146 = (*(_BYTE *)(a5 + 13) & 2) == 0; v38 = (*(_BYTE *)(a5 + 13) & 2) != 0; } LABEL_158: v39 = v139 + 1; if ( v139 + 1 <= 3 && !v38 ) goto LABEL_160; v17 = v146 & (v138 > 1); LABEL_41: if ( v17 ) { if ( v142 ) v18 = *(_DWORD *)(v156 + 40); else v18 = *(_DWORD *)(v156 + 32); v140 = v18; for ( i = 1; ; ++i ) { v172 = a2 == -1; if ( (v172 & (a1 != 0)) != 0 ) { v22 = (__int16 *)a1[2]; if ( (unsigned int)v22 >= a1[3] ) v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v23 = *v22; v24 = v23 == -1; v25 = 0; if ( !v24 ) v25 = a1; v26 = v172 & (a1 != 0); a1 = v25; if ( !v24 ) v26 = 0; v161 = v26; } else { v161 = a2 == -1; } v19 = a4 == -1; v145 = v19 & (a3 != 0); if ( v145 ) { v71 = (__int16 *)a3[2]; if ( (unsigned int)v71 >= a3[3] ) v72 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v72 = *v71; v73 = v72 == -1; v74 = 0; v19 = v145; if ( !v73 ) v74 = a3; a3 = v74; if ( !v73 ) v19 = 0; if ( i >= v138 ) { LABEL_189: if ( i == v138 ) { if ( v188 <= 1 ) goto LABEL_191; goto LABEL_236; } goto LABEL_132; } } else if ( i >= v138 ) { goto LABEL_189; } if ( v19 == v161 ) goto LABEL_189; if ( a1 && a2 == -1 ) { v78 = (__int16 *)a1[2]; if ( (unsigned int)v78 >= a1[3] ) v20 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v20 = *v78; v79 = 0; if ( v20 != -1 ) v79 = a1; a1 = v79; } else { v20 = a2; } if ( *(_WORD *)(v140 + 2 * i) != v20 ) goto LABEL_132; v21 = a1[2]; if ( v21 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v21 + 2; a2 = -1; } } if ( !v146 ) { LABEL_131: v172 = a2 == -1; goto LABEL_132; } if ( v188 <= 1 ) goto LABEL_191; LABEL_236: first_not_of = std::string::find_first_not_of(&Block, 48, 0); if ( first_not_of ) { if ( first_not_of != -1 ) goto LABEL_238; first_not_of = v188 - 1; if ( !v188 ) { v188 = 0; *(_BYTE *)Block = 0; goto LABEL_191; } if ( v188 != 1 ) { LABEL_238: if ( v188 <= first_not_of ) first_not_of = v188; std::string::_M_erase((int *)&Block, 0, first_not_of); } } LABEL_191: if ( v142 && *(_BYTE *)Block != 48 ) std::string::_M_replace_aux(&Block, 0, 0, 1u, 45); v177 = v185; if ( v185 ) { v75 = v134; if ( !v144 ) v75 = v154; v155 = v185 + 1; v166 = v75; v76 = v184; v77 = 15; if ( v184 != v186 ) v77 = v186[0]; if ( v185 + 1 > v77 ) { std::string::_M_mutate((int)&v184, v185, 0, 0, 1u); v76 = v184; } v76[v177] = v166; v185 = v155; *((_BYTE *)v184 + v177 + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v156 + 8), *(_DWORD *)(v156 + 12), (int)&v184) ) *a6 |= 4u; } v172 = a2 == -1; if ( v144 && *(_DWORD *)(v156 + 48) != v154 ) { LABEL_132: v53 = a6; *a6 |= 4u; } else { v53 = std::string::swap(a7, &Block); } if ( (v172 & (a1 != 0)) != 0 ) { v93 = (__int16 *)a1[2]; if ( (unsigned int)v93 >= a1[3] ) v94 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v94 = *v93; v95 = v172 & (a1 != 0); v96 = v94 == -1; if ( v94 != -1 ) v95 = 0; v53 = 0; if ( !v96 ) v53 = a1; v172 = v95; a1 = v53; } LOBYTE(v53) = a4 == -1; v54 = v53; if ( a3 && a4 == -1 ) { v91 = (__int16 *)a3[2]; if ( (unsigned int)v91 >= a3[3] ) v92 = (*(int (__fastcall **)(_DWORD *, _BYTE *))(*a3 + 36))(a3, v54); else v92 = *v91; LOBYTE(v54) = v92 == -1; } if ( (_BYTE)v54 == v172 ) *a6 |= 2u; if ( Block != v189 ) operator delete(Block); if ( v184 != v186 ) operator delete(v184); return a1; case 3: if ( *(_DWORD *)(v156 + 36) ) { v176 = a2 == -1; if ( v176 && a1 != 0 ) { v112 = (__int16 *)a1[2]; if ( (unsigned int)v112 >= a1[3] ) v113 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v113 = *v112; v114 = v113 == -1; v115 = 0; if ( !v114 ) v115 = a1; v116 = v176 && a1 != 0; a1 = v115; if ( !v114 ) v116 = 0; v165 = v116; } else { v165 = a2 == -1; } v70 = a4 == -1; v151 = v70 & (a3 != 0); if ( v151 ) { v122 = (__int16 *)a3[2]; if ( (unsigned int)v122 >= a3[3] ) v123 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v123 = *v122; v124 = v123 == -1; v70 = 0; if ( v124 ) v70 = v151; v125 = 0; if ( !v124 ) v125 = a3; a3 = v125; } if ( v165 != v70 ) { if ( a1 && a2 == -1 ) { v110 = (__int16 *)a1[2]; if ( (unsigned int)v110 >= a1[3] ) v88 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v88 = *v110; v111 = 0; if ( v88 != -1 ) v111 = a1; a1 = v111; } else { v88 = a2; } if ( **(_WORD **)(v156 + 32) == v88 ) { v138 = *(_DWORD *)(v156 + 36); v89 = a1[2]; if ( v89 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v89 + 2; v38 = 0; a2 = -1; goto LABEL_247; } } if ( !*(_DWORD *)(v156 + 44) ) { if ( !*(_DWORD *)(v156 + 36) ) goto LABEL_95; LABEL_181: v146 = 1; v38 = 0; v142 = 1; goto LABEL_158; } } else if ( !*(_DWORD *)(v156 + 44) ) { goto LABEL_95; } v167 = a2 == -1; if ( v167 && a1 != 0 ) { v117 = (__int16 *)a1[2]; if ( (unsigned int)v117 >= a1[3] ) v118 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v118 = *v117; v119 = v118 == -1; v120 = 0; if ( !v119 ) v120 = a1; v121 = v167 && a1 != 0; a1 = v120; if ( !v119 ) v121 = 0; v178 = v121; } else { v178 = a2 == -1; } v86 = a4 == -1; v152 = v86 & (a3 != 0); if ( v152 ) { v128 = (__int16 *)a3[2]; if ( (unsigned int)v128 >= a3[3] ) v129 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v129 = *v128; v130 = v129 == -1; v86 = 0; if ( v130 ) v86 = v152; v131 = 0; if ( !v130 ) v131 = a3; a3 = v131; } if ( v178 == v86 ) goto LABEL_369; if ( a1 && a2 == -1 ) { v106 = (__int16 *)a1[2]; if ( (unsigned int)v106 >= a1[3] ) v107 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v107 = *v106; v108 = 0; if ( v107 != -1 ) v108 = a1; a1 = v108; } else { v107 = a2; } if ( **(_WORD **)(v156 + 40) != v107 ) { LABEL_369: if ( !*(_DWORD *)(v156 + 36) || *(_DWORD *)(v156 + 44) ) { LABEL_95: v38 = v141; v146 = !v141; goto LABEL_158; } goto LABEL_181; } v138 = *(_DWORD *)(v156 + 44); v109 = a1[2]; if ( v109 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v109 + 2; v146 = 1; v38 = 0; a2 = -1; v142 = 1; goto LABEL_158; case 4: while ( 2 ) { v170 = a2 == -1; if ( v170 && a1 != 0 ) { v56 = (__int16 *)a1[2]; if ( (unsigned int)v56 >= a1[3] ) v57 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v57 = *v56; v58 = v57 == -1; v59 = 0; if ( !v58 ) v59 = a1; v60 = v170 && a1 != 0; a1 = v59; if ( !v58 ) v60 = 0; v159 = v60; } else { v159 = a2 == -1; } v12 = a4 == -1; v147 = v12 & (a3 != 0); if ( v147 ) { v48 = (__int16 *)a3[2]; if ( (unsigned int)v48 >= a3[3] ) v49 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v49 = *v48; v50 = v49 == -1; v51 = 0; v52 = v147; if ( !v50 ) v51 = a3; a3 = v51; if ( !v50 ) v52 = 0; if ( v159 == v52 ) goto LABEL_129; } else if ( v159 == v12 ) { goto LABEL_129; } if ( a1 && a2 == -1 ) { v61 = (__int16 *)a1[2]; if ( (unsigned int)v61 >= a1[3] ) v13 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v13 = *v61; v62 = 0; if ( v13 != -1 ) v62 = a1; a1 = v62; } else { v13 = a2; } v14 = (_WORD *)(v156 + 62); if ( v13 == *(_WORD *)(v156 + 62) ) { LABEL_32: v15 = Block; v171 = std::money_base::_S_atoms[((int)v14 - v156 - 60) >> 1]; v181 = v188; v16 = 15; if ( Block != v189 ) v16 = v189[0]; v160 = (std::locale::facet *)(v188 + 1); if ( v188 + 1 > v16 ) { std::string::_M_mutate((int)&Block, v188, 0, 0, 1u); v15 = Block; } ++v154; v15[v181] = v171; v188 = (size_t)v160; *((_BYTE *)Block + v181 + 1) = 0; v10 = a1; v11 = a1[2]; if ( v11 >= a1[3] ) { LABEL_37: (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); goto LABEL_21; } LABEL_20: v10[2] = v11 + 2; LABEL_21: a2 = -1; continue; } break; } while ( ++v14 != (_WORD *)(v156 + 82) ) { if ( v13 == *v14 ) goto LABEL_32; } v7 = v144 | (*(_WORD *)(v156 + 18) != (unsigned __int16)v13); if ( v7 ) { v146 = *(_BYTE *)(v156 + 16); if ( !v146 ) goto LABEL_249; if ( *(_WORD *)(v156 + 20) == v13 ) { if ( !v144 ) { if ( v154 ) { v169 = v154; v8 = v184; v180 = v185; v9 = 15; if ( v184 != v186 ) v9 = v186[0]; v158 = (std::locale::facet *)(v185 + 1); if ( v185 + 1 > v9 ) { std::string::_M_mutate((int)&v184, v185, 0, 0, 1u); v8 = v184; } v154 = 0; v8[v180] = v169; v185 = (size_t)v158; *((_BYTE *)v184 + v180 + 1) = 0; LABEL_19: v10 = a1; v11 = a1[2]; if ( v11 >= a1[3] ) goto LABEL_37; goto LABEL_20; } v146 = 0; goto LABEL_130; } v7 = v144; LABEL_249: v146 = v7; if ( !v188 ) goto LABEL_131; goto LABEL_157; } LABEL_130: if ( !v188 ) goto LABEL_131; LABEL_157: v38 = v146 ^ 1; goto LABEL_158; } if ( *(int *)(v156 + 48) > 0 ) { v63 = v154; v144 = 1; v154 = 0; v134 = v63; goto LABEL_19; } v144 = 0; LABEL_129: v146 = 1; goto LABEL_130; default: v146 = 1; v38 = 0; goto LABEL_158; } } } // 49228F: variable 'v132' is possibly undefined // 53F588: using guessed type char *std::money_base::_S_atoms; // 53F710: using guessed type signed __int32 std::moneypunct::id; // 5606F4: using guessed type int (*off_5606F4)(); //----- (00492910) -------------------------------------------------------- _DWORD *__stdcall std::money_get>::_M_extract( _DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7) { char v7; // al _BYTE *v8; // edx unsigned int v9; // eax _DWORD *v10; // ecx unsigned int v11; // eax char v12; // al __int16 v13; // dx _WORD *v14; // eax _BYTE *v15; // edx unsigned int v16; // eax char v17; // al int v18; // eax char v19; // al __int16 v20; // ax unsigned int v21; // eax __int16 *v22; // eax __int16 v23; // ax bool v24; // zf _DWORD *v25; // eax char v26; // bl char v27; // al unsigned __int16 v28; // ax unsigned int v29; // eax __int16 *v30; // eax __int16 v31; // ax bool v32; // zf _DWORD *v33; // eax bool v34; // bl char v35; // al unsigned __int16 v36; // ax unsigned int v37; // eax char v38; // al int v39; // edx bool v40; // al __int16 v41; // ax unsigned int v42; // eax __int16 *v43; // eax __int16 v44; // ax bool v45; // zf _DWORD *v46; // eax bool v47; // bl __int16 *v48; // eax __int16 v49; // ax bool v50; // zf _DWORD *v51; // ebx char v52; // al _BYTE *v53; // eax _BYTE *v54; // edx __int16 *v56; // eax __int16 v57; // ax bool v58; // zf _DWORD *v59; // eax bool v60; // bl __int16 *v61; // eax _DWORD *v62; // eax char v63; // al __int16 *v64; // eax __int16 v65; // ax bool v66; // zf _DWORD *v67; // ebx unsigned __int16 *v68; // eax _DWORD *v69; // ebx char v70; // al __int16 *v71; // eax __int16 v72; // ax bool v73; // zf _DWORD *v74; // ebx char v75; // al _BYTE *v76; // eax unsigned int v77; // edx __int16 *v78; // eax _DWORD *v79; // ebx __int16 *v80; // eax __int16 v81; // ax bool v82; // zf _DWORD *v83; // ebx __int16 *v84; // eax _DWORD *v85; // ebx char v86; // al unsigned int first_not_of; // eax __int16 v88; // ax unsigned int v89; // eax _DWORD *v90; // eax __int16 *v91; // eax __int16 v92; // ax __int16 *v93; // eax __int16 v94; // ax unsigned __int8 v95; // bl bool v96; // zf __int16 *v97; // eax __int16 v98; // ax bool v99; // zf _DWORD *v100; // ebx __int16 *v101; // eax __int16 v102; // ax bool v103; // zf _DWORD *v104; // eax bool v105; // bl __int16 *v106; // eax __int16 v107; // ax _DWORD *v108; // ebx unsigned int v109; // eax __int16 *v110; // eax _DWORD *v111; // ebx __int16 *v112; // eax __int16 v113; // ax bool v114; // zf _DWORD *v115; // eax bool v116; // bl __int16 *v117; // eax __int16 v118; // ax bool v119; // zf _DWORD *v120; // eax bool v121; // bl __int16 *v122; // eax __int16 v123; // ax bool v124; // zf _DWORD *v125; // ebx unsigned __int16 *v126; // eax _DWORD *v127; // ebx __int16 *v128; // eax __int16 v129; // ax bool v130; // zf _DWORD *v131; // ebx unsigned int v132; // [esp+8h] [ebp-E0h] std::locale::_Impl *v133; // [esp+1Ch] [ebp-CCh] char v134; // [esp+20h] [ebp-C8h] char v135; // [esp+2Ch] [ebp-BCh] unsigned int v136; // [esp+2Ch] [ebp-BCh] void *v137; // [esp+30h] [ebp-B8h] unsigned int v138; // [esp+34h] [ebp-B4h] int v139; // [esp+3Ch] [ebp-ACh] int v140; // [esp+3Ch] [ebp-ACh] bool v141; // [esp+40h] [ebp-A8h] char v142; // [esp+41h] [ebp-A7h] bool v143; // [esp+42h] [ebp-A6h] char v144; // [esp+43h] [ebp-A5h] char v145; // [esp+44h] [ebp-A4h] char v146; // [esp+48h] [ebp-A0h] char v147; // [esp+48h] [ebp-A0h] unsigned int i; // [esp+48h] [ebp-A0h] char v149; // [esp+48h] [ebp-A0h] unsigned int v150; // [esp+48h] [ebp-A0h] char v151; // [esp+48h] [ebp-A0h] char v152; // [esp+48h] [ebp-A0h] int *v153; // [esp+4Ch] [ebp-9Ch] int v154; // [esp+4Ch] [ebp-9Ch] size_t v155; // [esp+50h] [ebp-98h] int v156; // [esp+54h] [ebp-94h] std::locale::facet *v157; // [esp+58h] [ebp-90h] std::locale::facet *v158; // [esp+58h] [ebp-90h] char v159; // [esp+58h] [ebp-90h] std::locale::facet *v160; // [esp+58h] [ebp-90h] char v161; // [esp+58h] [ebp-90h] char v162; // [esp+58h] [ebp-90h] char v163; // [esp+58h] [ebp-90h] bool v164; // [esp+58h] [ebp-90h] char v165; // [esp+58h] [ebp-90h] char v166; // [esp+58h] [ebp-90h] bool v167; // [esp+58h] [ebp-90h] char v169; // [esp+60h] [ebp-88h] bool v170; // [esp+60h] [ebp-88h] char v171; // [esp+60h] [ebp-88h] unsigned __int8 v172; // [esp+60h] [ebp-88h] bool v173; // [esp+60h] [ebp-88h] bool v174; // [esp+60h] [ebp-88h] bool v175; // [esp+60h] [ebp-88h] bool v176; // [esp+60h] [ebp-88h] size_t v177; // [esp+60h] [ebp-88h] char v178; // [esp+60h] [ebp-88h] size_t v180; // [esp+64h] [ebp-84h] size_t v181; // [esp+64h] [ebp-84h] int v183; // [esp+ACh] [ebp-3Ch] void *v184; // [esp+B0h] [ebp-38h] BYREF size_t v185; // [esp+B4h] [ebp-34h] int v186[4]; // [esp+B8h] [ebp-30h] BYREF void *Block; // [esp+C8h] [ebp-20h] BYREF size_t v188; // [esp+CCh] [ebp-1Ch] int v189[5]; // [esp+D0h] [ebp-18h] BYREF v137 = std::use_facet>(a5 + 108); v157 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v153 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v157); v156 = *v153; if ( !*v153 ) { v90 = operator new(0x54u); v90[1] = 0; *v90 = &off_560704; 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; v133 = (std::locale::_Impl *)v90; std::__moneypunct_cache::_M_cache((int)v90, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v133, v157, v132); v156 = *v153; } if ( *(_DWORD *)(v156 + 36) ) v141 = *(_DWORD *)(v156 + 44) != 0; else v141 = 0; v185 = 0; v184 = v186; LOBYTE(v186[0]) = 0; if ( *(_BYTE *)(v156 + 16) ) std::string::reserve(&v184, 0x20u); Block = v189; v188 = 0; LOBYTE(v189[0]) = 0; std::string::reserve(&Block, 0x20u); v139 = 0; v144 = 0; v154 = 0; v183 = *(_DWORD *)(v156 + 56); v134 = 0; v138 = 0; v142 = 0; while ( 2 ) { switch ( *((_BYTE *)&v183 + v139) ) { case 0: v146 = 1; goto LABEL_39; case 1: v174 = a2 == -1; if ( v174 && a1 != 0 ) { v101 = (__int16 *)a1[2]; if ( (unsigned int)v101 >= a1[3] ) v102 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v102 = *v101; v103 = v102 == -1; v104 = 0; if ( !v103 ) v104 = a1; v105 = v174 && a1 != 0; a1 = v104; if ( !v103 ) v105 = 0; v163 = v105; } else { v163 = a2 == -1; } v35 = a4 == -1; v149 = v35 & (a3 != 0); if ( v149 ) { v97 = (__int16 *)a3[2]; if ( (unsigned int)v97 >= a3[3] ) v98 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v98 = *v97; v99 = v98 == -1; v35 = 0; if ( v99 ) v35 = v149; v100 = 0; if ( !v99 ) v100 = a3; a3 = v100; } v146 = 0; if ( v35 != v163 ) { if ( a1 && a2 == -1 ) { v126 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v126 >= a1[3] ) v36 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v36 = *v126; v127 = 0; if ( v36 != 0xFFFF ) v127 = a1; a1 = v127; } else { v36 = a2; } v146 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v137 + 8))(v137, 32, v36); if ( v146 ) { v37 = a1[2]; if ( v37 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v37 + 2; a2 = -1; } } LABEL_39: if ( v139 == 3 ) { v17 = v146 & (v138 > 1); goto LABEL_41; } while ( 1 ) { v173 = a2 == -1; if ( v173 && a1 != 0 ) { v30 = (__int16 *)a1[2]; if ( (unsigned int)v30 >= a1[3] ) v31 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v31 = *v30; v32 = v31 == -1; v33 = 0; if ( !v32 ) v33 = a1; v34 = v173 && a1 != 0; a1 = v33; if ( !v32 ) v34 = 0; v162 = v34; } else { v162 = a2 == -1; } v27 = a4 == -1; v135 = v27 & (a3 != 0); if ( v135 ) { v64 = (__int16 *)a3[2]; if ( (unsigned int)v64 >= a3[3] ) v65 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v65 = *v64; v66 = v65 == -1; v67 = 0; v27 = v135; if ( !v66 ) v67 = a3; a3 = v67; if ( !v66 ) v27 = 0; } if ( v162 == v27 ) break; if ( a1 && a2 == -1 ) { v68 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v68 >= a1[3] ) v28 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v28 = *v68; v69 = 0; if ( v28 != 0xFFFF ) v69 = a1; a1 = v69; } else { v28 = a2; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v137 + 8))(v137, 32, v28) ) break; v29 = a1[2]; if ( v29 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v29 + 2; a2 = -1; } goto LABEL_157; case 2: if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) goto LABEL_103; v38 = v139 == 0 || v138 > 1; if ( v38 ) goto LABEL_103; if ( v139 != 1 ) { v146 = 1; if ( v139 != 2 ) goto LABEL_158; if ( HIBYTE(v183) == 4 ) goto LABEL_103; v39 = 3; if ( HIBYTE(v183) == 3 && v141 ) goto LABEL_103; LABEL_160: v139 = v39; continue; } if ( !v141 && (_BYTE)v183 != 3 && BYTE2(v183) != 1 ) { v39 = 2; goto LABEL_160; } LABEL_103: v150 = 0; v136 = *(_DWORD *)(v156 + 28); while ( 1 ) { v175 = a2 == -1; if ( v175 && a1 != 0 ) { v43 = (__int16 *)a1[2]; if ( (unsigned int)v43 >= a1[3] ) v44 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v44 = *v43; v45 = v44 == -1; v46 = 0; if ( !v45 ) v46 = a1; v47 = v175 && a1 != 0; a1 = v46; if ( !v45 ) v47 = 0; v164 = v47; } else { v164 = a2 == -1; } v40 = a4 == -1; v143 = v40 && a3 != 0; if ( v143 ) { v80 = (__int16 *)a3[2]; if ( (unsigned int)v80 >= a3[3] ) v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v81 = *v80; v82 = v81 == -1; v83 = 0; v40 = v143; if ( !v82 ) v83 = a3; a3 = v83; if ( !v82 ) v40 = 0; } v38 = (v150 < v136) & (v164 ^ v40); if ( !v38 ) break; if ( a1 && a2 == -1 ) { v84 = (__int16 *)a1[2]; if ( (unsigned int)v84 >= a1[3] ) v41 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v41 = *v84; v85 = 0; if ( v41 != -1 ) v85 = a1; a1 = v85; } else { v41 = a2; } if ( *(_WORD *)(*(_DWORD *)(v156 + 24) + 2 * v150) != v41 ) goto LABEL_227; v42 = a1[2]; if ( v42 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v42 + 2; ++v150; a2 = -1; } if ( v150 == v136 ) { LABEL_247: v146 = 1; } else { LABEL_227: if ( v150 ) goto LABEL_131; v146 = (*(_BYTE *)(a5 + 13) & 2) == 0; v38 = (*(_BYTE *)(a5 + 13) & 2) != 0; } LABEL_158: v39 = v139 + 1; if ( v139 + 1 <= 3 && !v38 ) goto LABEL_160; v17 = v146 & (v138 > 1); LABEL_41: if ( v17 ) { if ( v142 ) v18 = *(_DWORD *)(v156 + 40); else v18 = *(_DWORD *)(v156 + 32); v140 = v18; for ( i = 1; ; ++i ) { v172 = a2 == -1; if ( (v172 & (a1 != 0)) != 0 ) { v22 = (__int16 *)a1[2]; if ( (unsigned int)v22 >= a1[3] ) v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v23 = *v22; v24 = v23 == -1; v25 = 0; if ( !v24 ) v25 = a1; v26 = v172 & (a1 != 0); a1 = v25; if ( !v24 ) v26 = 0; v161 = v26; } else { v161 = a2 == -1; } v19 = a4 == -1; v145 = v19 & (a3 != 0); if ( v145 ) { v71 = (__int16 *)a3[2]; if ( (unsigned int)v71 >= a3[3] ) v72 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v72 = *v71; v73 = v72 == -1; v74 = 0; v19 = v145; if ( !v73 ) v74 = a3; a3 = v74; if ( !v73 ) v19 = 0; if ( i >= v138 ) { LABEL_189: if ( i == v138 ) { if ( v188 <= 1 ) goto LABEL_191; goto LABEL_236; } goto LABEL_132; } } else if ( i >= v138 ) { goto LABEL_189; } if ( v19 == v161 ) goto LABEL_189; if ( a1 && a2 == -1 ) { v78 = (__int16 *)a1[2]; if ( (unsigned int)v78 >= a1[3] ) v20 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v20 = *v78; v79 = 0; if ( v20 != -1 ) v79 = a1; a1 = v79; } else { v20 = a2; } if ( *(_WORD *)(v140 + 2 * i) != v20 ) goto LABEL_132; v21 = a1[2]; if ( v21 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v21 + 2; a2 = -1; } } if ( !v146 ) { LABEL_131: v172 = a2 == -1; goto LABEL_132; } if ( v188 <= 1 ) goto LABEL_191; LABEL_236: first_not_of = std::string::find_first_not_of(&Block, 48, 0); if ( first_not_of ) { if ( first_not_of != -1 ) goto LABEL_238; first_not_of = v188 - 1; if ( !v188 ) { v188 = 0; *(_BYTE *)Block = 0; goto LABEL_191; } if ( v188 != 1 ) { LABEL_238: if ( v188 <= first_not_of ) first_not_of = v188; std::string::_M_erase((int *)&Block, 0, first_not_of); } } LABEL_191: if ( v142 && *(_BYTE *)Block != 48 ) std::string::_M_replace_aux(&Block, 0, 0, 1u, 45); v177 = v185; if ( v185 ) { v75 = v134; if ( !v144 ) v75 = v154; v155 = v185 + 1; v166 = v75; v76 = v184; v77 = 15; if ( v184 != v186 ) v77 = v186[0]; if ( v185 + 1 > v77 ) { std::string::_M_mutate((int)&v184, v185, 0, 0, 1u); v76 = v184; } v76[v177] = v166; v185 = v155; *((_BYTE *)v184 + v177 + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v156 + 8), *(_DWORD *)(v156 + 12), (int)&v184) ) *a6 |= 4u; } v172 = a2 == -1; if ( v144 && *(_DWORD *)(v156 + 48) != v154 ) { LABEL_132: v53 = a6; *a6 |= 4u; } else { v53 = std::string::swap(a7, &Block); } if ( (v172 & (a1 != 0)) != 0 ) { v93 = (__int16 *)a1[2]; if ( (unsigned int)v93 >= a1[3] ) v94 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v94 = *v93; v95 = v172 & (a1 != 0); v96 = v94 == -1; if ( v94 != -1 ) v95 = 0; v53 = 0; if ( !v96 ) v53 = a1; v172 = v95; a1 = v53; } LOBYTE(v53) = a4 == -1; v54 = v53; if ( a3 && a4 == -1 ) { v91 = (__int16 *)a3[2]; if ( (unsigned int)v91 >= a3[3] ) v92 = (*(int (__fastcall **)(_DWORD *, _BYTE *))(*a3 + 36))(a3, v54); else v92 = *v91; LOBYTE(v54) = v92 == -1; } if ( (_BYTE)v54 == v172 ) *a6 |= 2u; if ( Block != v189 ) operator delete(Block); if ( v184 != v186 ) operator delete(v184); return a1; case 3: if ( *(_DWORD *)(v156 + 36) ) { v176 = a2 == -1; if ( v176 && a1 != 0 ) { v112 = (__int16 *)a1[2]; if ( (unsigned int)v112 >= a1[3] ) v113 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v113 = *v112; v114 = v113 == -1; v115 = 0; if ( !v114 ) v115 = a1; v116 = v176 && a1 != 0; a1 = v115; if ( !v114 ) v116 = 0; v165 = v116; } else { v165 = a2 == -1; } v70 = a4 == -1; v151 = v70 & (a3 != 0); if ( v151 ) { v122 = (__int16 *)a3[2]; if ( (unsigned int)v122 >= a3[3] ) v123 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v123 = *v122; v124 = v123 == -1; v70 = 0; if ( v124 ) v70 = v151; v125 = 0; if ( !v124 ) v125 = a3; a3 = v125; } if ( v165 != v70 ) { if ( a1 && a2 == -1 ) { v110 = (__int16 *)a1[2]; if ( (unsigned int)v110 >= a1[3] ) v88 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v88 = *v110; v111 = 0; if ( v88 != -1 ) v111 = a1; a1 = v111; } else { v88 = a2; } if ( **(_WORD **)(v156 + 32) == v88 ) { v138 = *(_DWORD *)(v156 + 36); v89 = a1[2]; if ( v89 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v89 + 2; v38 = 0; a2 = -1; goto LABEL_247; } } if ( !*(_DWORD *)(v156 + 44) ) { if ( !*(_DWORD *)(v156 + 36) ) goto LABEL_95; LABEL_181: v146 = 1; v38 = 0; v142 = 1; goto LABEL_158; } } else if ( !*(_DWORD *)(v156 + 44) ) { goto LABEL_95; } v167 = a2 == -1; if ( v167 && a1 != 0 ) { v117 = (__int16 *)a1[2]; if ( (unsigned int)v117 >= a1[3] ) v118 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v118 = *v117; v119 = v118 == -1; v120 = 0; if ( !v119 ) v120 = a1; v121 = v167 && a1 != 0; a1 = v120; if ( !v119 ) v121 = 0; v178 = v121; } else { v178 = a2 == -1; } v86 = a4 == -1; v152 = v86 & (a3 != 0); if ( v152 ) { v128 = (__int16 *)a3[2]; if ( (unsigned int)v128 >= a3[3] ) v129 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v129 = *v128; v130 = v129 == -1; v86 = 0; if ( v130 ) v86 = v152; v131 = 0; if ( !v130 ) v131 = a3; a3 = v131; } if ( v178 == v86 ) goto LABEL_369; if ( a1 && a2 == -1 ) { v106 = (__int16 *)a1[2]; if ( (unsigned int)v106 >= a1[3] ) v107 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v107 = *v106; v108 = 0; if ( v107 != -1 ) v108 = a1; a1 = v108; } else { v107 = a2; } if ( **(_WORD **)(v156 + 40) != v107 ) { LABEL_369: if ( !*(_DWORD *)(v156 + 36) || *(_DWORD *)(v156 + 44) ) { LABEL_95: v38 = v141; v146 = !v141; goto LABEL_158; } goto LABEL_181; } v138 = *(_DWORD *)(v156 + 44); v109 = a1[2]; if ( v109 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v109 + 2; v146 = 1; v38 = 0; a2 = -1; v142 = 1; goto LABEL_158; case 4: while ( 2 ) { v170 = a2 == -1; if ( v170 && a1 != 0 ) { v56 = (__int16 *)a1[2]; if ( (unsigned int)v56 >= a1[3] ) v57 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v57 = *v56; v58 = v57 == -1; v59 = 0; if ( !v58 ) v59 = a1; v60 = v170 && a1 != 0; a1 = v59; if ( !v58 ) v60 = 0; v159 = v60; } else { v159 = a2 == -1; } v12 = a4 == -1; v147 = v12 & (a3 != 0); if ( v147 ) { v48 = (__int16 *)a3[2]; if ( (unsigned int)v48 >= a3[3] ) v49 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v49 = *v48; v50 = v49 == -1; v51 = 0; v52 = v147; if ( !v50 ) v51 = a3; a3 = v51; if ( !v50 ) v52 = 0; if ( v159 == v52 ) goto LABEL_129; } else if ( v159 == v12 ) { goto LABEL_129; } if ( a1 && a2 == -1 ) { v61 = (__int16 *)a1[2]; if ( (unsigned int)v61 >= a1[3] ) v13 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v13 = *v61; v62 = 0; if ( v13 != -1 ) v62 = a1; a1 = v62; } else { v13 = a2; } v14 = (_WORD *)(v156 + 62); if ( v13 == *(_WORD *)(v156 + 62) ) { LABEL_32: v15 = Block; v171 = std::money_base::_S_atoms[((int)v14 - v156 - 60) >> 1]; v181 = v188; v16 = 15; if ( Block != v189 ) v16 = v189[0]; v160 = (std::locale::facet *)(v188 + 1); if ( v188 + 1 > v16 ) { std::string::_M_mutate((int)&Block, v188, 0, 0, 1u); v15 = Block; } ++v154; v15[v181] = v171; v188 = (size_t)v160; *((_BYTE *)Block + v181 + 1) = 0; v10 = a1; v11 = a1[2]; if ( v11 >= a1[3] ) { LABEL_37: (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); goto LABEL_21; } LABEL_20: v10[2] = v11 + 2; LABEL_21: a2 = -1; continue; } break; } while ( ++v14 != (_WORD *)(v156 + 82) ) { if ( v13 == *v14 ) goto LABEL_32; } v7 = v144 | (*(_WORD *)(v156 + 18) != (unsigned __int16)v13); if ( v7 ) { v146 = *(_BYTE *)(v156 + 16); if ( !v146 ) goto LABEL_249; if ( *(_WORD *)(v156 + 20) == v13 ) { if ( !v144 ) { if ( v154 ) { v169 = v154; v8 = v184; v180 = v185; v9 = 15; if ( v184 != v186 ) v9 = v186[0]; v158 = (std::locale::facet *)(v185 + 1); if ( v185 + 1 > v9 ) { std::string::_M_mutate((int)&v184, v185, 0, 0, 1u); v8 = v184; } v154 = 0; v8[v180] = v169; v185 = (size_t)v158; *((_BYTE *)v184 + v180 + 1) = 0; LABEL_19: v10 = a1; v11 = a1[2]; if ( v11 >= a1[3] ) goto LABEL_37; goto LABEL_20; } v146 = 0; goto LABEL_130; } v7 = v144; LABEL_249: v146 = v7; if ( !v188 ) goto LABEL_131; goto LABEL_157; } LABEL_130: if ( !v188 ) goto LABEL_131; LABEL_157: v38 = v146 ^ 1; goto LABEL_158; } if ( *(int *)(v156 + 48) > 0 ) { v63 = v154; v144 = 1; v154 = 0; v134 = v63; goto LABEL_19; } v144 = 0; LABEL_129: v146 = 1; goto LABEL_130; default: v146 = 1; v38 = 0; goto LABEL_158; } } } // 493A8F: variable 'v132' is possibly undefined // 53F588: using guessed type char *std::money_base::_S_atoms; // 53F714: using guessed type signed __int32 std::moneypunct::id; // 560704: using guessed type int (*off_560704)(); //----- (00494110) -------------------------------------------------------- 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); } //----- (00494120) -------------------------------------------------------- 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); } //----- (00494130) -------------------------------------------------------- struct _Unwind_Exception *__stdcall std::money_get>::do_get( _DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, int *a8) { struct _Unwind_Exception *v8; // eax void *v10; // [esp+20h] [ebp-78h] unsigned int v11; // [esp+28h] [ebp-70h] struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-68h] void *Block; // [esp+78h] [ebp-20h] BYREF unsigned int v14; // [esp+7Ch] [ebp-1Ch] char v15[20]; // [esp+80h] [ebp-18h] BYREF v15[0] = 0; v10 = std::use_facet>(a6 + 108); Block = v15; v14 = 0; if ( a5 ) v8 = (struct _Unwind_Exception *)std::money_get>::_M_extract( a1, a2, a3, a4, a6, a7, &Block); else v8 = (struct _Unwind_Exception *)std::money_get>::_M_extract( a1, a2, a3, a4, a6, a7, &Block); lpuexcpt = v8; v11 = v14; if ( v14 ) { std::wstring::resize(a8, v14, 0); (*(void (__thiscall **)(void *, void *, char *, int))(*(_DWORD *)v10 + 44))(v10, Block, (char *)Block + v11, *a8); } if ( Block != v15 ) operator delete(Block); return lpuexcpt; } //----- (00494300) -------------------------------------------------------- struct _Unwind_Exception *__stdcall std::money_get>::do_get( _DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, long double *a8) { struct _Unwind_Exception *v8; // eax struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-68h] void *Block[2]; // [esp+78h] [ebp-20h] BYREF char v12[20]; // [esp+80h] [ebp-18h] BYREF Block[0] = v12; Block[1] = 0; v12[0] = 0; if ( a5 ) v8 = (struct _Unwind_Exception *)std::money_get>::_M_extract( a1, a2, a3, a4, a6, a7, Block); else v8 = (struct _Unwind_Exception *)std::money_get>::_M_extract( a1, a2, a3, a4, a6, a7, Block); lpuexcpt = v8; std::locale::facet::_S_get_c_locale(); std::__convert_to_v((char *)Block[0], a8, a7); if ( Block[0] != v12 ) operator delete(Block[0]); return lpuexcpt; } //----- (00494470) -------------------------------------------------------- int __thiscall std::money_put>::put( void *this, __int64 a2, unsigned __int8 a3, int a4, char a5, int a6) { __int64 (__stdcall *v6)(__int64, char, int, char, int); // edx v6 = *(__int64 (__stdcall **)(__int64, char, int, char, int))(*(_DWORD *)this + 12); if ( v6 != std::money_put>::do_put ) return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, int, _DWORD, int))v6)(a2, HIDWORD(a2), a3, a4, a5, a6); if ( a3 ) return std::money_put>::_M_insert(a2, a4, a5, a6); return std::money_put>::_M_insert(a2, a4, a5, a6); } //----- (00494510) -------------------------------------------------------- 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); } //----- (00494530) -------------------------------------------------------- __int64 __stdcall std::money_put>::do_put( __int64 a1, char a2, int a3, char a4, int a5) { if ( a2 ) return std::money_put>::_M_insert(a1, a3, a4, a5); else return std::money_put>::_M_insert(a1, a3, a4, a5); } //----- (004945A0) -------------------------------------------------------- __int64 __thiscall std::money_put>::do_put( void *this, __int64 a2, int a3, int a4, int a5, long double a6) { void *v6; // esp void *v7; // esp int v8; // eax int v9; // eax void *v10; // esp void *v11; // esp char v12; // al void (__thiscall *v13)(_BYTE *, void *, char *, void *); // eax __int64 v14; // rax const std::locale *v16[22]; // [esp-30h] [ebp-D8h] BYREF void *v17; // [esp+28h] [ebp-80h] char *v18; // [esp+2Ch] [ebp-7Ch] int v19; // [esp+30h] [ebp-78h] int v20; // [esp+34h] [ebp-74h] void *v21; // [esp+38h] [ebp-70h] _BYTE *v22; // [esp+3Ch] [ebp-6Ch] __int64 Size; // [esp+40h] [ebp-68h] void *Src; // [esp+48h] [ebp-60h] _DWORD *v25; // [esp+84h] [ebp-24h] BYREF void *Block[2]; // [esp+88h] [ebp-20h] BYREF char v27[24]; // [esp+90h] [ebp-18h] BYREF v21 = this; v20 = a3; v19 = a5; std::locale::locale((volatile signed __int32 **)&v25, (volatile signed __int32 **)(a4 + 108), v16[13]); v22 = std::use_facet>((int)&v25); v6 = alloca(80); v7 = alloca(80); LODWORD(Size) = v16; Src = v16; Block[0] = (void *)std::locale::facet::_S_get_c_locale(); v8 = std::__convert_from_v((int *const *)Block, (char *)Size, 64, "%.*Lf", 0, a6); LODWORD(Size) = v8; if ( v8 > 63 ) { LODWORD(Size) = v8 + 1; v9 = 16 * ((unsigned int)(v8 + 28) >> 4); v10 = alloca(v9); v11 = alloca(v9); v18 = (char *)v16; Src = v16; Block[0] = (void *)std::locale::facet::_S_get_c_locale(); LODWORD(Size) = std::__convert_from_v((int *const *)Block, v18, Size, "%.*Lf", 0, a6); } Block[0] = v27; std::string::_M_construct(Block, Size, 0); v12 = v22[28]; v17 = Block[0]; v18 = (char *)Src + Size; if ( v12 == 1 ) { if ( (char *)Src + (_DWORD)Size != Src ) LABEL_7: memcpy(v17, Src, Size); } else { if ( v12 ) { v13 = *(void (__thiscall **)(_BYTE *, void *, char *, void *))(*(_DWORD *)v22 + 28); if ( (char *)v13 == (char *)std::ctype::do_widen ) goto LABEL_6; } else { std::ctype::_M_widen_init((int)v22); v13 = *(void (__thiscall **)(_BYTE *, void *, char *, void *))(*(_DWORD *)v22 + 28); if ( (char *)v13 == (char *)std::ctype::do_widen ) { LABEL_6: if ( v18 == Src ) goto LABEL_8; goto LABEL_7; } } v13(v22, Src, v18, v17); } LABEL_8: if ( (_BYTE)v20 ) v14 = std::money_put>::_M_insert(a2, a4, v19, (int)Block); else v14 = std::money_put>::_M_insert(a2, a4, v19, (int)Block); Size = v14; if ( Block[0] != v27 ) operator delete(Block[0]); std::locale::~locale(&v25); return Size; } //----- (004948B0) -------------------------------------------------------- __int64 __stdcall std::money_put>::_M_insert( __int64 a1, int a2, char a3, int a4) { int v4; // ecx char *v5; // ebx struct _Unwind_Exception *v6; // eax unsigned __int8 *v7; // ecx int v9; // eax bool v10; // sf size_t v11; // eax _BYTE *v12; // eax bool v13; // dl _BYTE *v14; // edx unsigned int v15; // eax size_t v16; // edx int v17; // edx int *v18; // eax char v19; // bl int v20; // edx int v21; // ebx _BYTE *v22; // edx size_t v23; // eax size_t v24; // edx _BYTE *v25; // edx unsigned int v26; // eax _WORD *v27; // eax unsigned int v28; // [esp+8h] [ebp-E0h] size_t v29; // [esp+8h] [ebp-E0h] int v30; // [esp+20h] [ebp-C8h] char v31; // [esp+24h] [ebp-C4h] int v32; // [esp+24h] [ebp-C4h] std::locale::_Impl *v33; // [esp+28h] [ebp-C0h] int v34; // [esp+2Ch] [ebp-BCh] int v35; // [esp+2Ch] [ebp-BCh] size_t v36; // [esp+30h] [ebp-B8h] size_t v37; // [esp+30h] [ebp-B8h] char v38; // [esp+34h] [ebp-B4h] size_t v39; // [esp+38h] [ebp-B0h] bool v40; // [esp+38h] [ebp-B0h] signed int v41; // [esp+3Ch] [ebp-ACh] int v42; // [esp+3Ch] [ebp-ACh] int *v43; // [esp+40h] [ebp-A8h] char *v44; // [esp+40h] [ebp-A8h] std::locale::facet *v45; // [esp+4Ch] [ebp-9Ch] std::locale::facet *v46; // [esp+4Ch] [ebp-9Ch] _DWORD *v47; // [esp+50h] [ebp-98h] size_t v48; // [esp+50h] [ebp-98h] size_t v49; // [esp+50h] [ebp-98h] __int64 v50; // [esp+54h] [ebp-94h] int v51; // [esp+5Ch] [ebp-8Ch] struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-88h] struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-88h] void **lpuexcptb; // [esp+60h] [ebp-88h] char lpuexcptc; // [esp+60h] [ebp-88h] int v56; // [esp+ACh] [ebp-3Ch] BYREF void *v57; // [esp+B0h] [ebp-38h] BYREF size_t v58; // [esp+B4h] [ebp-34h] int v59[4]; // [esp+B8h] [ebp-30h] BYREF void *Block; // [esp+C8h] [ebp-20h] BYREF int v61; // [esp+CCh] [ebp-1Ch] int v62[5]; // [esp+D0h] [ebp-18h] BYREF v50 = a1; v47 = std::use_facet>(a2 + 108); v45 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v45); v51 = *v43; if ( !*v43 ) { v27 = operator new(0x44u); *(_DWORD *)v27 = &off_5606D4; v27[8] = 0; *((_DWORD *)v27 + 1) = 0; *((_DWORD *)v27 + 2) = 0; *((_DWORD *)v27 + 3) = 0; *((_BYTE *)v27 + 18) = 0; *((_DWORD *)v27 + 5) = 0; *((_DWORD *)v27 + 6) = 0; *((_DWORD *)v27 + 7) = 0; *((_DWORD *)v27 + 8) = 0; *((_DWORD *)v27 + 9) = 0; *((_DWORD *)v27 + 10) = 0; *((_DWORD *)v27 + 11) = 0; *((_DWORD *)v27 + 12) = 0; *((_DWORD *)v27 + 13) = 0; *((_BYTE *)v27 + 67) = 0; v33 = (std::locale::_Impl *)v27; std::__moneypunct_cache::_M_cache((int)v27, a2 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v33, v45, v28); v51 = *v43; } v4 = *(_DWORD *)(a4 + 4); lpuexcpt = *(struct _Unwind_Exception **)a4; if ( **(_BYTE **)a4 == *(_BYTE *)(v51 + 56) ) { v56 = *(_DWORD *)(v51 + 52); if ( !v4 ) goto LABEL_10; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v44 = *(char **)(v51 + 36); v46 = *(std::locale::facet **)(v51 + 40); } else { v5 = *(char **)(v51 + 28); v56 = *(_DWORD *)(v51 + 48); v44 = v5; v46 = *(std::locale::facet **)(v51 + 32); } v6 = lpuexcpt; v7 = (unsigned __int8 *)lpuexcpt + v4; if ( v7 > (unsigned __int8 *)lpuexcpt ) { do { if ( (*(_BYTE *)(v47[6] + 2 * *(unsigned __int8 *)v6) & 8) == 0 ) break; v6 = (struct _Unwind_Exception *)((char *)v6 + 1); } while ( v7 != (unsigned __int8 *)v6 ); v48 = v6 - lpuexcpt; if ( v6 != lpuexcpt ) { LOBYTE(v59[0]) = 0; v57 = v59; v58 = 0; std::string::reserve(&v57, 2 * v48); v9 = *(_DWORD *)(v51 + 44); v41 = v48 - v9; if ( (int)(v48 - v9) > 0 ) { v10 = v9 < 0; v11 = v48 - v9; if ( v10 ) v11 = v48; v41 = v11; if ( *(_DWORD *)(v51 + 12) ) { std::string::_M_replace_aux(&v57, 0, v58, 2 * v11, 0); v12 = std::__add_grouping( v57, *(_BYTE *)(v51 + 18), *(char **)(v51 + 8), *(_DWORD *)(v51 + 12), lpuexcpt, (_BYTE *)lpuexcpt + v41); if ( v12 - (_BYTE *)v57 > v58 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v12 - (_BYTE *)v57, v58); v58 = v12 - (_BYTE *)v57; *v12 = 0; v9 = *(_DWORD *)(v51 + 44); } else { std::string::_M_replace((unsigned int *)&v57, 0, v58, (char *)lpuexcpt, v11); v9 = *(_DWORD *)(v51 + 44); } } v39 = v58; if ( v9 > 0 ) { v22 = v57; v37 = v58 + 1; v38 = *(_BYTE *)(v51 + 17); v23 = 15; if ( v57 != v59 ) v23 = v59[0]; if ( v58 + 1 > v23 ) { std::string::_M_mutate((int)&v57, v58, 0, 0, 1u); v22 = v57; } v22[v39] = v38; v58 = v37; *((_BYTE *)v57 + v37) = 0; if ( v41 < 0 ) { std::string::_M_replace_aux(&v57, v58, 0, -v41, *(_BYTE *)(v51 + 57)); if ( v48 > 0x3FFFFFFF - v58 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v57, lpuexcpt, v48); } else { v24 = *(_DWORD *)(v51 + 44); if ( v24 > 0x3FFFFFFF - v58 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v57, (_BYTE *)lpuexcpt + v41, v24); } v39 = v58; } v42 = *(_DWORD *)(a2 + 12) & 0xB0; lpuexcpta = (std::locale::facet *)((char *)v46 + v39); if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) lpuexcpta = (std::locale::facet *)((char *)v46 + v39 + *(_DWORD *)(v51 + 24)); LOBYTE(v62[0]) = 0; Block = v62; v61 = 0; std::string::reserve(&Block, 2 * (_DWORD)lpuexcpta); v49 = *(_DWORD *)(a2 + 8); v13 = v49 > (unsigned int)lpuexcpta && v42 == 16; v36 = v49 - (_DWORD)lpuexcpta; lpuexcptb = (void **)&v56; v40 = v13; do { switch ( *(_BYTE *)lpuexcptb ) { case 0: if ( v40 ) goto LABEL_34; break; case 1: v35 = v61; if ( v40 ) { LABEL_34: std::string::_M_replace_aux(&Block, v61, 0, v36, a3); } else { v25 = Block; v26 = 15; if ( Block != v62 ) v26 = v62[0]; v32 = v61 + 1; if ( v61 + 1 > v26 ) { std::string::_M_mutate((int)&Block, v61, 0, 0, 1u); v25 = Block; } v25[v35] = a3; v61 = v32; *((_BYTE *)Block + v35 + 1) = 0; } break; case 2: if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) { v16 = *(_DWORD *)(v51 + 24); if ( v16 > 0x3FFFFFFF - v61 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&Block, *(_BYTE **)(v51 + 20), v16); } break; case 3: if ( v46 ) { v14 = Block; v31 = *v44; v34 = v61; v15 = 15; if ( Block != v62 ) v15 = v62[0]; v30 = v61 + 1; if ( v61 + 1 > v15 ) { std::string::_M_mutate((int)&Block, v61, 0, 0, 1u); v14 = Block; } v14[v34] = v31; v61 = v30; *((_BYTE *)Block + v34 + 1) = 0; } break; case 4: std::string::_M_append(&Block, v57, v58); break; default: break; } lpuexcptb = (void **)((char *)lpuexcptb + 1); } while ( &v57 != lpuexcptb ); v17 = v61; if ( (unsigned int)v46 > 1 ) { if ( (unsigned int)v46 - 1 > 0x3FFFFFFF - v61 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&Block, v44 + 1, (size_t)v46 - 1); v17 = v61; if ( v61 < v49 ) goto LABEL_41; } else if ( v61 < v49 ) { LABEL_41: v29 = v49 - v17; if ( v42 == 32 ) std::string::_M_replace_aux(&Block, v17, 0, v29, a3); else std::string::_M_replace_aux(&Block, 0, 0, v29, a3); goto LABEL_43; } v49 = v17; LABEL_43: v18 = (int *)Block; lpuexcptc = BYTE4(a1); if ( !BYTE4(a1) ) { v19 = 0; v20 = (*(int (__thiscall **)(_DWORD, void *, size_t))(*(_DWORD *)a1 + 48))(a1, Block, v49); v18 = (int *)Block; if ( v49 != v20 ) v19 = 1; lpuexcptc = v19; } v21 = HIDWORD(a1); LOBYTE(v21) = lpuexcptc; HIDWORD(v50) = v21; if ( v18 != v62 ) operator delete(v18); if ( v57 != v59 ) operator delete(v57); } } LABEL_10: *(_DWORD *)(a2 + 8) = 0; return v50; } // 4950C3: variable 'v28' is possibly undefined // 53F708: using guessed type signed __int32 std::moneypunct::id; // 5606D4: using guessed type int (*off_5606D4)(); //----- (00495360) -------------------------------------------------------- __int64 __stdcall std::money_put>::_M_insert( __int64 a1, int a2, char a3, int a4) { int v4; // ecx char *v5; // ebx struct _Unwind_Exception *v6; // eax unsigned __int8 *v7; // ecx int v9; // eax bool v10; // sf size_t v11; // eax _BYTE *v12; // eax bool v13; // dl _BYTE *v14; // edx unsigned int v15; // eax size_t v16; // edx int v17; // edx int *v18; // eax char v19; // bl int v20; // edx int v21; // ebx _BYTE *v22; // edx size_t v23; // eax size_t v24; // edx _BYTE *v25; // edx unsigned int v26; // eax _WORD *v27; // eax unsigned int v28; // [esp+8h] [ebp-E0h] size_t v29; // [esp+8h] [ebp-E0h] int v30; // [esp+20h] [ebp-C8h] char v31; // [esp+24h] [ebp-C4h] int v32; // [esp+24h] [ebp-C4h] std::locale::_Impl *v33; // [esp+28h] [ebp-C0h] int v34; // [esp+2Ch] [ebp-BCh] int v35; // [esp+2Ch] [ebp-BCh] size_t v36; // [esp+30h] [ebp-B8h] size_t v37; // [esp+30h] [ebp-B8h] char v38; // [esp+34h] [ebp-B4h] size_t v39; // [esp+38h] [ebp-B0h] bool v40; // [esp+38h] [ebp-B0h] signed int v41; // [esp+3Ch] [ebp-ACh] int v42; // [esp+3Ch] [ebp-ACh] int *v43; // [esp+40h] [ebp-A8h] char *v44; // [esp+40h] [ebp-A8h] std::locale::facet *v45; // [esp+4Ch] [ebp-9Ch] std::locale::facet *v46; // [esp+4Ch] [ebp-9Ch] _DWORD *v47; // [esp+50h] [ebp-98h] size_t v48; // [esp+50h] [ebp-98h] size_t v49; // [esp+50h] [ebp-98h] __int64 v50; // [esp+54h] [ebp-94h] int v51; // [esp+5Ch] [ebp-8Ch] struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-88h] struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-88h] void **lpuexcptb; // [esp+60h] [ebp-88h] char lpuexcptc; // [esp+60h] [ebp-88h] int v56; // [esp+ACh] [ebp-3Ch] BYREF void *v57; // [esp+B0h] [ebp-38h] BYREF size_t v58; // [esp+B4h] [ebp-34h] int v59[4]; // [esp+B8h] [ebp-30h] BYREF void *Block; // [esp+C8h] [ebp-20h] BYREF int v61; // [esp+CCh] [ebp-1Ch] int v62[5]; // [esp+D0h] [ebp-18h] BYREF v50 = a1; v47 = std::use_facet>(a2 + 108); v45 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v45); v51 = *v43; if ( !*v43 ) { v27 = operator new(0x44u); *(_DWORD *)v27 = &off_5606E4; v27[8] = 0; *((_DWORD *)v27 + 1) = 0; *((_DWORD *)v27 + 2) = 0; *((_DWORD *)v27 + 3) = 0; *((_BYTE *)v27 + 18) = 0; *((_DWORD *)v27 + 5) = 0; *((_DWORD *)v27 + 6) = 0; *((_DWORD *)v27 + 7) = 0; *((_DWORD *)v27 + 8) = 0; *((_DWORD *)v27 + 9) = 0; *((_DWORD *)v27 + 10) = 0; *((_DWORD *)v27 + 11) = 0; *((_DWORD *)v27 + 12) = 0; *((_DWORD *)v27 + 13) = 0; *((_BYTE *)v27 + 67) = 0; v33 = (std::locale::_Impl *)v27; std::__moneypunct_cache::_M_cache((int)v27, a2 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v33, v45, v28); v51 = *v43; } v4 = *(_DWORD *)(a4 + 4); lpuexcpt = *(struct _Unwind_Exception **)a4; if ( **(_BYTE **)a4 == *(_BYTE *)(v51 + 56) ) { v56 = *(_DWORD *)(v51 + 52); if ( !v4 ) goto LABEL_10; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v44 = *(char **)(v51 + 36); v46 = *(std::locale::facet **)(v51 + 40); } else { v5 = *(char **)(v51 + 28); v56 = *(_DWORD *)(v51 + 48); v44 = v5; v46 = *(std::locale::facet **)(v51 + 32); } v6 = lpuexcpt; v7 = (unsigned __int8 *)lpuexcpt + v4; if ( v7 > (unsigned __int8 *)lpuexcpt ) { do { if ( (*(_BYTE *)(v47[6] + 2 * *(unsigned __int8 *)v6) & 8) == 0 ) break; v6 = (struct _Unwind_Exception *)((char *)v6 + 1); } while ( v7 != (unsigned __int8 *)v6 ); v48 = v6 - lpuexcpt; if ( v6 != lpuexcpt ) { LOBYTE(v59[0]) = 0; v57 = v59; v58 = 0; std::string::reserve(&v57, 2 * v48); v9 = *(_DWORD *)(v51 + 44); v41 = v48 - v9; if ( (int)(v48 - v9) > 0 ) { v10 = v9 < 0; v11 = v48 - v9; if ( v10 ) v11 = v48; v41 = v11; if ( *(_DWORD *)(v51 + 12) ) { std::string::_M_replace_aux(&v57, 0, v58, 2 * v11, 0); v12 = std::__add_grouping( v57, *(_BYTE *)(v51 + 18), *(char **)(v51 + 8), *(_DWORD *)(v51 + 12), lpuexcpt, (_BYTE *)lpuexcpt + v41); if ( v12 - (_BYTE *)v57 > v58 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v12 - (_BYTE *)v57, v58); v58 = v12 - (_BYTE *)v57; *v12 = 0; v9 = *(_DWORD *)(v51 + 44); } else { std::string::_M_replace((unsigned int *)&v57, 0, v58, (char *)lpuexcpt, v11); v9 = *(_DWORD *)(v51 + 44); } } v39 = v58; if ( v9 > 0 ) { v22 = v57; v37 = v58 + 1; v38 = *(_BYTE *)(v51 + 17); v23 = 15; if ( v57 != v59 ) v23 = v59[0]; if ( v58 + 1 > v23 ) { std::string::_M_mutate((int)&v57, v58, 0, 0, 1u); v22 = v57; } v22[v39] = v38; v58 = v37; *((_BYTE *)v57 + v37) = 0; if ( v41 < 0 ) { std::string::_M_replace_aux(&v57, v58, 0, -v41, *(_BYTE *)(v51 + 57)); if ( v48 > 0x3FFFFFFF - v58 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v57, lpuexcpt, v48); } else { v24 = *(_DWORD *)(v51 + 44); if ( v24 > 0x3FFFFFFF - v58 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v57, (_BYTE *)lpuexcpt + v41, v24); } v39 = v58; } v42 = *(_DWORD *)(a2 + 12) & 0xB0; lpuexcpta = (std::locale::facet *)((char *)v46 + v39); if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) lpuexcpta = (std::locale::facet *)((char *)v46 + v39 + *(_DWORD *)(v51 + 24)); LOBYTE(v62[0]) = 0; Block = v62; v61 = 0; std::string::reserve(&Block, 2 * (_DWORD)lpuexcpta); v49 = *(_DWORD *)(a2 + 8); v13 = v49 > (unsigned int)lpuexcpta && v42 == 16; v36 = v49 - (_DWORD)lpuexcpta; lpuexcptb = (void **)&v56; v40 = v13; do { switch ( *(_BYTE *)lpuexcptb ) { case 0: if ( v40 ) goto LABEL_34; break; case 1: v35 = v61; if ( v40 ) { LABEL_34: std::string::_M_replace_aux(&Block, v61, 0, v36, a3); } else { v25 = Block; v26 = 15; if ( Block != v62 ) v26 = v62[0]; v32 = v61 + 1; if ( v61 + 1 > v26 ) { std::string::_M_mutate((int)&Block, v61, 0, 0, 1u); v25 = Block; } v25[v35] = a3; v61 = v32; *((_BYTE *)Block + v35 + 1) = 0; } break; case 2: if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) { v16 = *(_DWORD *)(v51 + 24); if ( v16 > 0x3FFFFFFF - v61 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&Block, *(_BYTE **)(v51 + 20), v16); } break; case 3: if ( v46 ) { v14 = Block; v31 = *v44; v34 = v61; v15 = 15; if ( Block != v62 ) v15 = v62[0]; v30 = v61 + 1; if ( v61 + 1 > v15 ) { std::string::_M_mutate((int)&Block, v61, 0, 0, 1u); v14 = Block; } v14[v34] = v31; v61 = v30; *((_BYTE *)Block + v34 + 1) = 0; } break; case 4: std::string::_M_append(&Block, v57, v58); break; default: break; } lpuexcptb = (void **)((char *)lpuexcptb + 1); } while ( &v57 != lpuexcptb ); v17 = v61; if ( (unsigned int)v46 > 1 ) { if ( (unsigned int)v46 - 1 > 0x3FFFFFFF - v61 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&Block, v44 + 1, (size_t)v46 - 1); v17 = v61; if ( v61 < v49 ) goto LABEL_41; } else if ( v61 < v49 ) { LABEL_41: v29 = v49 - v17; if ( v42 == 32 ) std::string::_M_replace_aux(&Block, v17, 0, v29, a3); else std::string::_M_replace_aux(&Block, 0, 0, v29, a3); goto LABEL_43; } v49 = v17; LABEL_43: v18 = (int *)Block; lpuexcptc = BYTE4(a1); if ( !BYTE4(a1) ) { v19 = 0; v20 = (*(int (__thiscall **)(_DWORD, void *, size_t))(*(_DWORD *)a1 + 48))(a1, Block, v49); v18 = (int *)Block; if ( v49 != v20 ) v19 = 1; lpuexcptc = v19; } v21 = HIDWORD(a1); LOBYTE(v21) = lpuexcptc; HIDWORD(v50) = v21; if ( v18 != v62 ) operator delete(v18); if ( v57 != v59 ) operator delete(v57); } } LABEL_10: *(_DWORD *)(a2 + 8) = 0; return v50; } // 495B73: variable 'v28' is possibly undefined // 53F70C: using guessed type signed __int32 std::moneypunct::id; // 5606E4: using guessed type int (*off_5606E4)(); //----- (00495E10) -------------------------------------------------------- int __thiscall std::money_put>::put( void *this, __int64 a2, unsigned __int8 a3, int a4, unsigned __int16 a5, int a6) { __int64 (__stdcall *v6)(__int64, char, int, __int16, int); // edx v6 = *(__int64 (__stdcall **)(__int64, char, int, __int16, int))(*(_DWORD *)this + 12); if ( v6 != std::money_put>::do_put ) return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, int, _DWORD, int))v6)(a2, HIDWORD(a2), a3, a4, a5, a6); if ( a3 ) return std::money_put>::_M_insert(a2, a4, a5, a6); return std::money_put>::_M_insert(a2, a4, a5, a6); } //----- (00495EB0) -------------------------------------------------------- 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); } //----- (00495ED0) -------------------------------------------------------- __int64 __stdcall std::money_put>::do_put( __int64 a1, char a2, int a3, __int16 a4, int a5) { if ( a2 ) return std::money_put>::_M_insert(a1, a3, a4, a5); else return std::money_put>::_M_insert(a1, a3, a4, a5); } //----- (00495F40) -------------------------------------------------------- __int64 __thiscall std::money_put>::do_put( void *this, __int64 a2, int a3, int a4, int a5, long double a6) { void *v6; // esp void *v7; // esp int v8; // eax int v9; // eax void *v10; // esp void *v11; // esp __int64 v12; // rax int v14; // [esp-44h] [ebp-ECh] int v15; // [esp-40h] [ebp-E8h] int v16; // [esp-3Ch] [ebp-E4h] int v17; // [esp-38h] [ebp-E0h] int v18; // [esp-34h] [ebp-DCh] char *v19[23]; // [esp-30h] [ebp-D8h] BYREF char *v20; // [esp+2Ch] [ebp-7Ch] int v21; // [esp+30h] [ebp-78h] int v22; // [esp+34h] [ebp-74h] void *v23; // [esp+38h] [ebp-70h] void *v24; // [esp+3Ch] [ebp-6Ch] __int64 lpuexcpt; // [esp+40h] [ebp-68h] char **v26; // [esp+48h] [ebp-60h] _DWORD *v27; // [esp+84h] [ebp-24h] BYREF void *Block[2]; // [esp+88h] [ebp-20h] BYREF char v29[20]; // [esp+90h] [ebp-18h] BYREF v23 = this; v22 = a3; v21 = a5; std::locale::locale( (volatile signed __int32 **)&v27, (volatile signed __int32 **)(a4 + 108), (const std::locale *)v19[13]); v24 = std::use_facet>((int)&v27); v6 = alloca(80); v7 = alloca(80); LODWORD(lpuexcpt) = v19; v26 = v19; Block[0] = (void *)std::locale::facet::_S_get_c_locale(); v8 = std::__convert_from_v((int *const *)Block, (char *)lpuexcpt, 64, "%.*Lf", 0, a6); LODWORD(lpuexcpt) = v8; if ( v8 > 63 ) { LODWORD(lpuexcpt) = v8 + 1; v9 = 16 * ((unsigned int)(v8 + 28) >> 4); v10 = alloca(v9); v11 = alloca(v9); v20 = (char *)v19; v26 = v19; Block[0] = (void *)std::locale::facet::_S_get_c_locale(); LODWORD(lpuexcpt) = std::__convert_from_v((int *const *)Block, v20, lpuexcpt, "%.*Lf", 0, a6); } Block[0] = v29; std::wstring::_M_construct(Block, lpuexcpt, 0); (*(void (__thiscall **)(void *, char **, char *, void *, int, int, int, int, int, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *))(*(_DWORD *)v24 + 44))( v24, v26, (char *)v26 + lpuexcpt, Block[0], v14, v15, v16, v17, v18, v19[0], v19[1], v19[2], v19[3], v19[4], v19[5], v19[6], v19[7], v19[8], v19[9]); if ( (_BYTE)v22 ) v12 = std::money_put>::_M_insert(a2, a4, v21, (int)Block); else v12 = std::money_put>::_M_insert(a2, a4, v21, (int)Block); lpuexcpt = v12; if ( Block[0] != v29 ) operator delete(Block[0]); std::locale::~locale(&v27); return lpuexcpt; } // 4960B1: variable 'v14' is possibly undefined // 4960B1: variable 'v15' is possibly undefined // 4960B1: variable 'v16' is possibly undefined // 4960B1: variable 'v17' is possibly undefined // 4960B1: variable 'v18' is possibly undefined //----- (004961A0) -------------------------------------------------------- __int64 __stdcall std::money_put>::_M_insert( __int64 a1, int a2, __int16 a3, int a4) { int v4; // eax signed int v5; // eax std::locale::facet *v7; // esi char *v8; // edx int v9; // eax bool v10; // sf unsigned int v11; // eax char *v12; // edx unsigned int v13; // eax bool v14; // dl _WORD *v15; // eax unsigned int v16; // edx unsigned int v17; // edx int v18; // ecx int *v19; // eax char v20; // bl int v21; // edx int v22; // ebx _WORD *v23; // eax unsigned int v24; // edx unsigned int v25; // edx _WORD *v26; // eax unsigned int v27; // edx _DWORD *v28; // eax unsigned int v29; // [esp-4h] [ebp-ECh] unsigned int v30; // [esp+8h] [ebp-E0h] unsigned int v31; // [esp+20h] [ebp-C8h] __int16 v32; // [esp+24h] [ebp-C4h] unsigned int v33; // [esp+24h] [ebp-C4h] std::locale::_Impl *v34; // [esp+28h] [ebp-C0h] int v35; // [esp+2Ch] [ebp-BCh] int v36; // [esp+2Ch] [ebp-BCh] unsigned int v37; // [esp+30h] [ebp-B8h] __int16 v38; // [esp+30h] [ebp-B8h] int v39; // [esp+34h] [ebp-B4h] int v40; // [esp+38h] [ebp-B0h] bool v41; // [esp+38h] [ebp-B0h] __int16 *v42; // [esp+3Ch] [ebp-ACh] int *v43; // [esp+48h] [ebp-A0h] unsigned int v44; // [esp+48h] [ebp-A0h] int v45; // [esp+48h] [ebp-A0h] std::locale::facet *v46; // [esp+4Ch] [ebp-9Ch] std::locale::facet *v47; // [esp+4Ch] [ebp-9Ch] void *v48; // [esp+50h] [ebp-98h] int v49; // [esp+50h] [ebp-98h] int v50; // [esp+50h] [ebp-98h] unsigned int v51; // [esp+50h] [ebp-98h] __int64 v52; // [esp+54h] [ebp-94h] int v53; // [esp+5Ch] [ebp-8Ch] char *lpuexcpt; // [esp+60h] [ebp-88h] struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-88h] void **lpuexcptb; // [esp+60h] [ebp-88h] char lpuexcptc; // [esp+60h] [ebp-88h] int v58; // [esp+ACh] [ebp-3Ch] BYREF void *v59; // [esp+B0h] [ebp-38h] BYREF int v60; // [esp+B4h] [ebp-34h] int v61[4]; // [esp+B8h] [ebp-30h] BYREF void *Block; // [esp+C8h] [ebp-20h] BYREF unsigned int v63; // [esp+CCh] [ebp-1Ch] int v64[6]; // [esp+D0h] [ebp-18h] BYREF v52 = a1; v48 = std::use_facet>(a2 + 108); v46 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v46); v53 = *v43; if ( !*v43 ) { v28 = operator new(0x54u); v28[1] = 0; *v28 = &off_5606F4; v28[2] = 0; v28[3] = 0; *((_BYTE *)v28 + 16) = 0; *(_DWORD *)((char *)v28 + 18) = 0; v28[6] = 0; v28[7] = 0; v28[8] = 0; v28[9] = 0; v28[10] = 0; v28[11] = 0; v28[12] = 0; v28[13] = 0; v28[14] = 0; *((_BYTE *)v28 + 82) = 0; v34 = (std::locale::_Impl *)v28; std::__moneypunct_cache::_M_cache((int)v28, a2 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v34, v46, v30); v53 = *v43; } v4 = *(_DWORD *)(a4 + 4); lpuexcpt = *(char **)a4; if ( **(_WORD **)a4 == *(_WORD *)(v53 + 60) ) { v42 = *(__int16 **)(v53 + 40); v7 = *(std::locale::facet **)(v53 + 44); v58 = *(_DWORD *)(v53 + 56); v47 = v7; v8 = lpuexcpt + 2; if ( !v4 ) v8 = lpuexcpt; lpuexcpt = v8; } else { v58 = *(_DWORD *)(v53 + 52); v42 = *(__int16 **)(v53 + 32); v47 = *(std::locale::facet **)(v53 + 36); } v5 = (*(int (__thiscall **)(void *, int, char *, char *))(*(_DWORD *)v48 + 20))(v48, 8, lpuexcpt, &lpuexcpt[2 * v4]) - (_DWORD)lpuexcpt; v44 = v5 >> 1; if ( v5 >> 1 ) { v59 = v61; v60 = 0; LOWORD(v61[0]) = 0; std::wstring::reserve((int)&v59, v5); v9 = *(_DWORD *)(v53 + 48); v49 = v60; v40 = v44 - v9; if ( (int)(v44 - v9) > 0 ) { v10 = v9 < 0; v11 = v44 - v9; if ( v10 ) v11 = v44; v40 = v11; if ( *(_DWORD *)(v53 + 12) ) { v50 = 2 * v11; std::wstring::_M_replace_aux(&v59, 0, v60, 2 * v11, 0); v12 = (char *)std::__add_grouping( v59, *(_WORD *)(v53 + 20), *(char **)(v53 + 8), *(_DWORD *)(v53 + 12), lpuexcpt, &lpuexcpt[v50]); v13 = (v12 - (_BYTE *)v59) >> 1; v49 = v13; if ( v13 > v60 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v13, v60); v60 = (v12 - (_BYTE *)v59) >> 1; *(_WORD *)v12 = 0; v9 = *(_DWORD *)(v53 + 48); } else { std::wstring::_M_replace((unsigned int *)&v59, 0, v60, lpuexcpt, v11); v49 = v60; v9 = *(_DWORD *)(v53 + 48); } } if ( v9 > 0 ) { v38 = *(_WORD *)(v53 + 18); v23 = v59; v39 = v49 + 1; v24 = 7; if ( v59 != v61 ) v24 = v61[0]; if ( v49 + 1 > v24 ) { std::wstring::_M_mutate((int)&v59, v49, 0, 0, 1); v23 = v59; } v23[v49] = v38; v60 = v49 + 1; v23[v49 + 1] = 0; if ( v40 < 0 ) { std::wstring::_M_replace_aux(&v59, v39, 0, -v40, *(_WORD *)(v53 + 62)); if ( v44 > 0x1FFFFFFF - v60 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append(&v59, lpuexcpt, v44); } else { v25 = *(_DWORD *)(v53 + 48); if ( v25 > 0x1FFFFFFF - v39 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append(&v59, &lpuexcpt[2 * v40], v25); } v49 = v60; } v45 = *(_DWORD *)(a2 + 12) & 0xB0; lpuexcpta = (std::locale::facet *)((char *)v47 + v49); if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) lpuexcpta = (std::locale::facet *)((char *)v47 + v49 + *(_DWORD *)(v53 + 28)); Block = v64; v63 = 0; LOWORD(v64[0]) = 0; std::wstring::reserve((int)&Block, 2 * (_DWORD)lpuexcpta); v51 = *(_DWORD *)(a2 + 8); v14 = v51 > (unsigned int)lpuexcpta && v45 == 16; v37 = v51 - (_DWORD)lpuexcpta; lpuexcptb = (void **)&v58; v41 = v14; do { switch ( *(_BYTE *)lpuexcptb ) { case 0: if ( v41 ) goto LABEL_31; break; case 1: v36 = v63; if ( v41 ) { LABEL_31: std::wstring::_M_replace_aux(&Block, v63, 0, v37, a3); } else { v26 = Block; v33 = v63 + 1; v27 = 7; if ( Block != v64 ) v27 = v64[0]; if ( v63 + 1 > v27 ) { std::wstring::_M_mutate((int)&Block, v63, 0, 0, 1); v26 = Block; } v26[v36] = a3; v63 = v33; v26[v36 + 1] = 0; } break; case 2: if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) { v17 = *(_DWORD *)(v53 + 28); if ( v17 > 0x1FFFFFFF - v63 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append(&Block, *(_WORD **)(v53 + 24), v17); } break; case 3: if ( v47 ) { v32 = *v42; v35 = v63; v15 = Block; v31 = v63 + 1; v16 = 7; if ( Block != v64 ) v16 = v64[0]; if ( v63 + 1 > v16 ) { std::wstring::_M_mutate((int)&Block, v63, 0, 0, 1); v15 = Block; } v15[v35] = v32; v63 = v31; v15[v35 + 1] = 0; } break; case 4: std::wstring::_M_append(&Block, v59, v60); break; default: break; } lpuexcptb = (void **)((char *)lpuexcptb + 1); } while ( &v59 != lpuexcptb ); v18 = v63; if ( (unsigned int)v47 > 1 ) { if ( (unsigned int)v47 - 1 > 0x1FFFFFFF - v63 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append(&Block, v42 + 1, (int)v47 - 1); v18 = v63; if ( v51 > v63 ) goto LABEL_38; } else if ( v51 > v63 ) { LABEL_38: v29 = v51 - v18; if ( v45 == 32 ) std::wstring::_M_replace_aux(&Block, v18, 0, v29, a3); else std::wstring::_M_replace_aux(&Block, 0, 0, v29, a3); goto LABEL_40; } v51 = v18; LABEL_40: v19 = (int *)Block; lpuexcptc = BYTE4(a1); if ( !BYTE4(a1) ) { v20 = 0; v21 = (*(int (__thiscall **)(_DWORD, void *, unsigned int))(*(_DWORD *)a1 + 48))(a1, Block, v51); v19 = (int *)Block; if ( v51 != v21 ) v20 = 1; lpuexcptc = v20; } v22 = HIDWORD(a1); LOBYTE(v22) = lpuexcptc; HIDWORD(v52) = v22; if ( v19 != v64 ) operator delete(v19); if ( v59 != v61 ) operator delete(v59); } *(_DWORD *)(a2 + 8) = 0; return v52; } // 4969EC: variable 'v30' is possibly undefined // 53F710: using guessed type signed __int32 std::moneypunct::id; // 5606F4: using guessed type int (*off_5606F4)(); //----- (00496CC0) -------------------------------------------------------- __int64 __stdcall std::money_put>::_M_insert( __int64 a1, int a2, __int16 a3, int a4) { int v4; // eax signed int v5; // eax std::locale::facet *v7; // esi char *v8; // edx int v9; // eax bool v10; // sf unsigned int v11; // eax char *v12; // edx unsigned int v13; // eax bool v14; // dl _WORD *v15; // eax unsigned int v16; // edx unsigned int v17; // edx int v18; // ecx int *v19; // eax char v20; // bl int v21; // edx int v22; // ebx _WORD *v23; // eax unsigned int v24; // edx unsigned int v25; // edx _WORD *v26; // eax unsigned int v27; // edx _DWORD *v28; // eax unsigned int v29; // [esp-4h] [ebp-ECh] unsigned int v30; // [esp+8h] [ebp-E0h] unsigned int v31; // [esp+20h] [ebp-C8h] __int16 v32; // [esp+24h] [ebp-C4h] unsigned int v33; // [esp+24h] [ebp-C4h] std::locale::_Impl *v34; // [esp+28h] [ebp-C0h] int v35; // [esp+2Ch] [ebp-BCh] int v36; // [esp+2Ch] [ebp-BCh] unsigned int v37; // [esp+30h] [ebp-B8h] __int16 v38; // [esp+30h] [ebp-B8h] int v39; // [esp+34h] [ebp-B4h] int v40; // [esp+38h] [ebp-B0h] bool v41; // [esp+38h] [ebp-B0h] __int16 *v42; // [esp+3Ch] [ebp-ACh] int *v43; // [esp+48h] [ebp-A0h] unsigned int v44; // [esp+48h] [ebp-A0h] int v45; // [esp+48h] [ebp-A0h] std::locale::facet *v46; // [esp+4Ch] [ebp-9Ch] std::locale::facet *v47; // [esp+4Ch] [ebp-9Ch] void *v48; // [esp+50h] [ebp-98h] int v49; // [esp+50h] [ebp-98h] int v50; // [esp+50h] [ebp-98h] unsigned int v51; // [esp+50h] [ebp-98h] __int64 v52; // [esp+54h] [ebp-94h] int v53; // [esp+5Ch] [ebp-8Ch] char *lpuexcpt; // [esp+60h] [ebp-88h] struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-88h] void **lpuexcptb; // [esp+60h] [ebp-88h] char lpuexcptc; // [esp+60h] [ebp-88h] int v58; // [esp+ACh] [ebp-3Ch] BYREF void *v59; // [esp+B0h] [ebp-38h] BYREF int v60; // [esp+B4h] [ebp-34h] int v61[4]; // [esp+B8h] [ebp-30h] BYREF void *Block; // [esp+C8h] [ebp-20h] BYREF unsigned int v63; // [esp+CCh] [ebp-1Ch] int v64[6]; // [esp+D0h] [ebp-18h] BYREF v52 = a1; v48 = std::use_facet>(a2 + 108); v46 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v46); v53 = *v43; if ( !*v43 ) { v28 = operator new(0x54u); v28[1] = 0; *v28 = &off_560704; v28[2] = 0; v28[3] = 0; *((_BYTE *)v28 + 16) = 0; *(_DWORD *)((char *)v28 + 18) = 0; v28[6] = 0; v28[7] = 0; v28[8] = 0; v28[9] = 0; v28[10] = 0; v28[11] = 0; v28[12] = 0; v28[13] = 0; v28[14] = 0; *((_BYTE *)v28 + 82) = 0; v34 = (std::locale::_Impl *)v28; std::__moneypunct_cache::_M_cache((int)v28, a2 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v34, v46, v30); v53 = *v43; } v4 = *(_DWORD *)(a4 + 4); lpuexcpt = *(char **)a4; if ( **(_WORD **)a4 == *(_WORD *)(v53 + 60) ) { v42 = *(__int16 **)(v53 + 40); v7 = *(std::locale::facet **)(v53 + 44); v58 = *(_DWORD *)(v53 + 56); v47 = v7; v8 = lpuexcpt + 2; if ( !v4 ) v8 = lpuexcpt; lpuexcpt = v8; } else { v58 = *(_DWORD *)(v53 + 52); v42 = *(__int16 **)(v53 + 32); v47 = *(std::locale::facet **)(v53 + 36); } v5 = (*(int (__thiscall **)(void *, int, char *, char *))(*(_DWORD *)v48 + 20))(v48, 8, lpuexcpt, &lpuexcpt[2 * v4]) - (_DWORD)lpuexcpt; v44 = v5 >> 1; if ( v5 >> 1 ) { v59 = v61; v60 = 0; LOWORD(v61[0]) = 0; std::wstring::reserve((int)&v59, v5); v9 = *(_DWORD *)(v53 + 48); v49 = v60; v40 = v44 - v9; if ( (int)(v44 - v9) > 0 ) { v10 = v9 < 0; v11 = v44 - v9; if ( v10 ) v11 = v44; v40 = v11; if ( *(_DWORD *)(v53 + 12) ) { v50 = 2 * v11; std::wstring::_M_replace_aux(&v59, 0, v60, 2 * v11, 0); v12 = (char *)std::__add_grouping( v59, *(_WORD *)(v53 + 20), *(char **)(v53 + 8), *(_DWORD *)(v53 + 12), lpuexcpt, &lpuexcpt[v50]); v13 = (v12 - (_BYTE *)v59) >> 1; v49 = v13; if ( v13 > v60 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v13, v60); v60 = (v12 - (_BYTE *)v59) >> 1; *(_WORD *)v12 = 0; v9 = *(_DWORD *)(v53 + 48); } else { std::wstring::_M_replace((unsigned int *)&v59, 0, v60, lpuexcpt, v11); v49 = v60; v9 = *(_DWORD *)(v53 + 48); } } if ( v9 > 0 ) { v38 = *(_WORD *)(v53 + 18); v23 = v59; v39 = v49 + 1; v24 = 7; if ( v59 != v61 ) v24 = v61[0]; if ( v49 + 1 > v24 ) { std::wstring::_M_mutate((int)&v59, v49, 0, 0, 1); v23 = v59; } v23[v49] = v38; v60 = v49 + 1; v23[v49 + 1] = 0; if ( v40 < 0 ) { std::wstring::_M_replace_aux(&v59, v39, 0, -v40, *(_WORD *)(v53 + 62)); if ( v44 > 0x1FFFFFFF - v60 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append(&v59, lpuexcpt, v44); } else { v25 = *(_DWORD *)(v53 + 48); if ( v25 > 0x1FFFFFFF - v39 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append(&v59, &lpuexcpt[2 * v40], v25); } v49 = v60; } v45 = *(_DWORD *)(a2 + 12) & 0xB0; lpuexcpta = (std::locale::facet *)((char *)v47 + v49); if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) lpuexcpta = (std::locale::facet *)((char *)v47 + v49 + *(_DWORD *)(v53 + 28)); Block = v64; v63 = 0; LOWORD(v64[0]) = 0; std::wstring::reserve((int)&Block, 2 * (_DWORD)lpuexcpta); v51 = *(_DWORD *)(a2 + 8); v14 = v51 > (unsigned int)lpuexcpta && v45 == 16; v37 = v51 - (_DWORD)lpuexcpta; lpuexcptb = (void **)&v58; v41 = v14; do { switch ( *(_BYTE *)lpuexcptb ) { case 0: if ( v41 ) goto LABEL_31; break; case 1: v36 = v63; if ( v41 ) { LABEL_31: std::wstring::_M_replace_aux(&Block, v63, 0, v37, a3); } else { v26 = Block; v33 = v63 + 1; v27 = 7; if ( Block != v64 ) v27 = v64[0]; if ( v63 + 1 > v27 ) { std::wstring::_M_mutate((int)&Block, v63, 0, 0, 1); v26 = Block; } v26[v36] = a3; v63 = v33; v26[v36 + 1] = 0; } break; case 2: if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) { v17 = *(_DWORD *)(v53 + 28); if ( v17 > 0x1FFFFFFF - v63 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append(&Block, *(_WORD **)(v53 + 24), v17); } break; case 3: if ( v47 ) { v32 = *v42; v35 = v63; v15 = Block; v31 = v63 + 1; v16 = 7; if ( Block != v64 ) v16 = v64[0]; if ( v63 + 1 > v16 ) { std::wstring::_M_mutate((int)&Block, v63, 0, 0, 1); v15 = Block; } v15[v35] = v32; v63 = v31; v15[v35 + 1] = 0; } break; case 4: std::wstring::_M_append(&Block, v59, v60); break; default: break; } lpuexcptb = (void **)((char *)lpuexcptb + 1); } while ( &v59 != lpuexcptb ); v18 = v63; if ( (unsigned int)v47 > 1 ) { if ( (unsigned int)v47 - 1 > 0x1FFFFFFF - v63 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append(&Block, v42 + 1, (int)v47 - 1); v18 = v63; if ( v51 > v63 ) goto LABEL_38; } else if ( v51 > v63 ) { LABEL_38: v29 = v51 - v18; if ( v45 == 32 ) std::wstring::_M_replace_aux(&Block, v18, 0, v29, a3); else std::wstring::_M_replace_aux(&Block, 0, 0, v29, a3); goto LABEL_40; } v51 = v18; LABEL_40: v19 = (int *)Block; lpuexcptc = BYTE4(a1); if ( !BYTE4(a1) ) { v20 = 0; v21 = (*(int (__thiscall **)(_DWORD, void *, unsigned int))(*(_DWORD *)a1 + 48))(a1, Block, v51); v19 = (int *)Block; if ( v51 != v21 ) v20 = 1; lpuexcptc = v20; } v22 = HIDWORD(a1); LOBYTE(v22) = lpuexcptc; HIDWORD(v52) = v22; if ( v19 != v64 ) operator delete(v19); if ( v59 != v61 ) operator delete(v59); } *(_DWORD *)(a2 + 8) = 0; return v52; } // 49750C: variable 'v30' is possibly undefined // 53F714: using guessed type signed __int32 std::moneypunct::id; // 560704: using guessed type int (*off_560704)(); //----- (004977E0) -------------------------------------------------------- int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (00497800) -------------------------------------------------------- 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-10h] BYREF unsigned __int8 *v12; // [esp+Ch] [ebp-Ch] 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; } //----- (004978A0) -------------------------------------------------------- int __stdcall std::codecvt::do_out( int a1, unsigned int *a2, unsigned int *a3, unsigned int **a4, int a5, int a6, _DWORD *a7) { _BYTE *v7; // eax unsigned int *v8; // ebx unsigned int v9; // edx int v11; // edx _BYTE *v12; // [esp+8h] [ebp-10h] BYREF _BYTE *v13; // [esp+Ch] [ebp-Ch] v7 = (_BYTE *)a5; v8 = a2; v12 = (_BYTE *)a5; v13 = (_BYTE *)a6; if ( a2 == a3 ) { v11 = 0; } else { do { v9 = *v8; if ( *v8 > 0x10FFFF ) { v7 = v12; v11 = 2; goto LABEL_11; } if ( v9 <= 0x7F ) { v7 = v12; if ( v13 == v12 ) { v11 = 1; goto LABEL_11; } ++v12; *v7 = v9; } else if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point((int)&v12, v9) ) { v7 = v12; v11 = 1; goto LABEL_11; } ++v8; } while ( a3 != v8 ); v7 = v12; v11 = 0; } LABEL_11: *a4 = v8; *a7 = v7; return v11; } //----- (00497960) -------------------------------------------------------- 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); } //----- (004979C0) -------------------------------------------------------- int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (004979E0) -------------------------------------------------------- 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-10h] BYREF unsigned __int8 *v12; // [esp+Ch] [ebp-Ch] 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; } //----- (00497A80) -------------------------------------------------------- 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; } //----- (00497B10) -------------------------------------------------------- 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); } //----- (00497B70) -------------------------------------------------------- int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (00497B90) -------------------------------------------------------- int __stdcall std::codecvt::do_in( int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int8 **a4, char *a5, char *a6, char **a7) { unsigned __int8 *v7; // edi unsigned int v9; // eax int result; // eax unsigned __int8 *v11; // [esp+8h] [ebp-14h] BYREF unsigned __int8 *v12; // [esp+Ch] [ebp-10h] v7 = a2; v11 = a2; v12 = a3; if ( a2 == a3 ) { LABEL_12: result = 0; } else { while ( 1 ) { if ( a6 == a5 ) { v7 = v11; result = 0; goto LABEL_10; } v9 = std::`anonymous namespace'::read_utf8_code_point(&v11, 0x10FFFFu); if ( v9 == -2 ) { v7 = v11; result = 1; goto LABEL_10; } if ( v9 > 0x10FFFF ) break; if ( v9 <= 0xFFFF ) { *(_WORD *)a5 = v9; v7 = v11; a5 += 2; if ( v12 == v11 ) goto LABEL_12; } else { if ( (unsigned int)(a6 - a5) <= 2 ) { result = 1; goto LABEL_10; } v7 = v11; a5 += 4; *((_WORD *)a5 - 1) = (v9 & 0x3FF) - 9216; *((_WORD *)a5 - 2) = (v9 >> 10) - 10304; if ( v12 == v7 ) goto LABEL_12; } } v7 = v11; result = 2; } LABEL_10: *a4 = v7; *a7 = a5; return result; } //----- (00497C80) -------------------------------------------------------- int __stdcall std::codecvt::do_out( int a1, unsigned __int16 *a2, unsigned __int16 *a3, unsigned __int16 **a4, int a5, int a6, _DWORD *a7) { unsigned __int16 *v7; // ebx _BYTE *v8; // eax unsigned int v9; // edi int v10; // eax int v11; // edi unsigned int v12; // edx unsigned __int16 v13; // cx int v15; // edx _BYTE *v16; // [esp+8h] [ebp-14h] BYREF _BYTE *v17; // [esp+Ch] [ebp-10h] v7 = a2; v8 = (_BYTE *)a5; v16 = (_BYTE *)a5; v9 = (char *)a3 - (char *)a2; v17 = (_BYTE *)a6; if ( a2 != a3 ) { while ( 1 ) { while ( 1 ) { v12 = *v7; v13 = *v7; if ( v12 - 55296 > 0x3FF ) break; if ( v9 <= 2 ) goto LABEL_13; v10 = v7[1]; if ( (unsigned int)(v10 - 56320) > 0x3FF ) { LABEL_16: v8 = v16; v15 = 2; goto LABEL_15; } v11 = 2; v12 = v10 + (v12 << 10) - 56613888; LABEL_6: if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point((int)&v16, v12) ) { v8 = v16; v15 = 1; goto LABEL_15; } v7 += v11; v9 = (char *)a3 - (char *)v7; if ( a3 == v7 ) goto LABEL_13; } if ( v12 - 56320 <= 0x3FF ) goto LABEL_16; if ( v12 > 0x7F ) { v11 = 1; goto LABEL_6; } v8 = v16; if ( v17 == v16 ) { v15 = 1; goto LABEL_15; } ++v16; *v8 = v13; v9 = (char *)a3 - (char *)++v7; if ( a3 == v7 ) { LABEL_13: v8 = v16; v15 = 0; goto LABEL_15; } } } v15 = 0; LABEL_15: *a4 = v7; *a7 = v8; return v15; } //----- (00497DA0) -------------------------------------------------------- unsigned __int8 *__stdcall std::codecvt::do_length( int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned int a4) { unsigned int v4; // ebx unsigned int v5; // esi 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 ) { v5 = 0; do { utf8_code = std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu); if ( utf8_code > 0x10FFFF ) return (unsigned __int8 *)(v8[0] - a2); if ( utf8_code <= 0xFFFF ) v4 = v5; v5 = v4 + 1; v4 += 2; } while ( a4 > v4 ); } if ( a4 != v4 ) return (unsigned __int8 *)(v8[0] - a2); std::`anonymous namespace'::read_utf8_code_point(v8, 0xFFFFu); return (unsigned __int8 *)(v8[0] - a2); } //----- (00497E40) -------------------------------------------------------- int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (00497E60) -------------------------------------------------------- int std::codecvt::do_encoding() { return 0; } //----- (00497E70) -------------------------------------------------------- int std::codecvt::do_max_length() { return 4; } //----- (00497E80) -------------------------------------------------------- int std::codecvt::do_always_noconv() { return 0; } //----- (00497E90) -------------------------------------------------------- int __stdcall std::codecvt::do_in( int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int8 **a4, char *a5, char *a6, char **a7) { int result; // eax unsigned __int8 *v8[2]; // [esp+8h] [ebp-10h] BYREF char *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; } //----- (00497EF0) -------------------------------------------------------- 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; } //----- (00497F50) -------------------------------------------------------- unsigned __int8 *__stdcall std::codecvt::do_length( int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned int a4) { return (unsigned __int8 *)(std::`anonymous namespace'::utf16_span(a2, a3, a4, 0x10FFFFu, 0) - a2); } //----- (00497F80) -------------------------------------------------------- int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (00497FA0) -------------------------------------------------------- int std::codecvt::do_max_length() { return 1; } //----- (00497FB0) -------------------------------------------------------- int std::codecvt::do_always_noconv() { return 1; } //----- (00497FC0) -------------------------------------------------------- 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; } //----- (00497FE0) -------------------------------------------------------- int __stdcall std::codecvt::do_out(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) { *a4 = a2; *a7 = a5; return 3; } //----- (00498000) -------------------------------------------------------- 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; } //----- (00498020) -------------------------------------------------------- int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) { *a4 = a2; return 3; } //----- (00498040) -------------------------------------------------------- BOOL __cdecl std::codecvt::do_encoding() { return ____mb_cur_max_func() == 1; } //----- (004980C0) -------------------------------------------------------- int __cdecl std::codecvt::do_max_length() { return ____mb_cur_max_func(); } //----- (00498140) -------------------------------------------------------- int std::codecvt::do_always_noconv() { return 0; } //----- (00498150) -------------------------------------------------------- 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; } //----- (00498240) -------------------------------------------------------- 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_func() * ((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; } //----- (00498370) -------------------------------------------------------- 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; --v6; SrcCh += v7; *a1 = State._Wchar; v4 += v7; if ( a3 <= (unsigned int)SrcCh ) break; } while ( v6 ); } return v4; } //----- (00498400) -------------------------------------------------------- int __stdcall std::collate::_M_compare(char *String1, char *String2) { int v2; // eax v2 = strcoll(String1, String2); return (v2 >> 30) | (v2 != 0); } //----- (00498430) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int __stdcall std::collate::do_compare(void *a1, _BYTE *a2, void *a3, int a4) { int i; // eax char *v5; // eax int v6; // eax int v7; // eax char *v9; // [esp+18h] [ebp-74h] char *v10; // [esp+18h] [ebp-74h] char *Str; // [esp+1Ch] [ebp-70h] char *v12; // [esp+20h] [ebp-6Ch] int v13; // [esp+24h] [ebp-68h] char *v14; // [esp+2Ch] [ebp-60h] char *v15; // [esp+30h] [ebp-5Ch] char *v16; // [esp+34h] [ebp-58h] char v17; // [esp+7Bh] [ebp-11h] BYREF _BYTE *retaddr; // [esp+8Ch] [ebp+0h] v15 = (char *)std::string::_S_construct(retaddr, (int)a1); v16 = (char *)std::string::_S_construct(a2, (int)a3); Str = v16; v9 = v15; v12 = &v16[*((_DWORD *)v16 - 3)]; v14 = &v15[*((_DWORD *)v15 - 3)]; for ( i = std::collate::_M_compare(v15, v16); ; i = std::collate::_M_compare(v9, v5 + 1) ) { v13 = i; if ( i ) break; v10 = &v9[strlen(v9)]; v5 = &Str[strlen(Str)]; if ( v14 == v10 ) { if ( v12 == v5 ) break; if ( v14 == v10 ) { v13 = -1; break; } } if ( v12 == v5 ) { v13 = 1; break; } Str = v5 + 1; v9 = v10 + 1; } if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) goto LABEL_11; } else { v6 = *((_DWORD *)v16 - 1); *((_DWORD *)v16 - 1) = v6 - 1; if ( v6 > 0 ) goto LABEL_11; } std::string::_Rep::_M_destroy(v16 - 12, (int)&v17); LABEL_11: if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v15 - 1, 0xFFFFFFFF) > 0 ) return v13; LABEL_15: std::string::_Rep::_M_destroy(v15 - 12, (int)&v17); return v13; } v7 = *((_DWORD *)v15 - 1); *((_DWORD *)v15 - 1) = v7 - 1; if ( v7 <= 0 ) goto LABEL_15; return v13; } // 498650: positive sp value 4 has been found // 53E1E4: using guessed type int _CRT_MT; //----- (00498670) -------------------------------------------------------- size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) { return strxfrm(Destination, Source, MaxCount); } //----- (004986A0) -------------------------------------------------------- int *__thiscall std::collate::do_transform(int *this, int a2, _BYTE *a3, int a4) { size_t i; // eax int v5; // eax char *v6; // eax int v7; // eax unsigned int v9; // [esp+4h] [ebp-84h] unsigned int v10; // [esp+8h] [ebp-80h] char *v11; // [esp+1Ch] [ebp-6Ch] char *v12; // [esp+20h] [ebp-68h] int v13; // [esp+24h] [ebp-64h] std::string *v14; // [esp+28h] [ebp-60h] char *Block; // [esp+2Ch] [ebp-5Ch] unsigned int v17; // [esp+34h] [ebp-54h] char *Str; // [esp+38h] [ebp-50h] int v19; // [esp+7Fh] [ebp-9h] BYREF *this = (int)std::string::_S_construct(0, 0); v11 = (char *)std::string::_S_construct(a3, a4); v17 = 2 * (a4 - (_DWORD)a3); v12 = &v11[*((_DWORD *)v11 - 3)]; Block = (char *)operator new[](v17); Str = v11; for ( i = std::collate::_M_transform(Block, v11, v17); ; i = std::collate::_M_transform(Block, Str, v17) ) { if ( v17 <= i ) { v17 = i + 1; operator delete[](Block); Block = (char *)operator new[](v17); i = std::collate::_M_transform(Block, Str, v17); } std::string::append(this, (std::string *)Block, i, v10); v6 = &Str[strlen(Str)]; if ( v12 == v6 ) break; Str = v6 + 1; v13 = *(_DWORD *)(*this - 12); v14 = (std::string *)(v13 + 1); if ( (unsigned int)(v13 + 1) > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) std::string::reserve(this, v14, v9); *(_BYTE *)(*this + *(_DWORD *)(*this - 12)) = 0; v5 = *this; *(_DWORD *)(v5 - 4) = 0; *(_DWORD *)(v5 - 12) = v14; *(_BYTE *)(v5 + v13 + 1) = 0; } operator delete[](Block); if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v11 - 1, 0xFFFFFFFF) > 0 ) return this; LABEL_13: std::string::_Rep::_M_destroy(v11 - 12, (int)&v19); return this; } v7 = *((_DWORD *)v11 - 1); *((_DWORD *)v11 - 1) = v7 - 1; if ( v7 <= 0 ) goto LABEL_13; return this; } // 498783: variable 'v9' is possibly undefined // 498828: variable 'v10' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (00498950) -------------------------------------------------------- int __thiscall std::collate::hash(void *this, char *a2, char *a3) { char *v3; // edx int (__stdcall *v4)(char *, char *); // eax int result; // eax int v6; // ecx v3 = a2; v4 = *(int (__stdcall **)(char *, char *))(*(_DWORD *)this + 16); if ( v4 != std::collate::do_hash ) return v4(a2, a3); result = 0; if ( a2 < a3 ) { do { v6 = *v3++; result = v6 + __ROL4__(result, 7); } while ( a3 != v3 ); } return result; } //----- (004989A0) -------------------------------------------------------- int __fastcall std::collate::compare(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (004989B0) -------------------------------------------------------- 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; } //----- (004989E0) -------------------------------------------------------- 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; } //----- (00498A10) -------------------------------------------------------- int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) { int v2; // eax v2 = wcscoll(String1, String2); return (v2 >> 30) | (v2 != 0); } //----- (00498A40) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int __stdcall std::collate::do_compare(void *a1, _WORD *a2, void *a3, int a4) { int i; // eax wchar_t *v5; // eax int v6; // eax int v7; // eax wchar_t *v9; // [esp+18h] [ebp-74h] wchar_t *v10; // [esp+18h] [ebp-74h] wchar_t *String; // [esp+1Ch] [ebp-70h] wchar_t *v12; // [esp+20h] [ebp-6Ch] int v13; // [esp+24h] [ebp-68h] wchar_t *v14; // [esp+2Ch] [ebp-60h] wchar_t *v15; // [esp+30h] [ebp-5Ch] wchar_t *v16; // [esp+34h] [ebp-58h] char v17; // [esp+7Bh] [ebp-11h] BYREF _WORD *retaddr; // [esp+8Ch] [ebp+0h] v15 = (wchar_t *)std::wstring::_S_construct(retaddr, (int)a1); v16 = (wchar_t *)std::wstring::_S_construct(a2, (int)a3); String = v16; v9 = v15; v14 = &v15[*((_DWORD *)v15 - 3)]; v12 = &String[*((_DWORD *)String - 3)]; for ( i = std::collate::_M_compare(v15, v16); ; i = std::collate::_M_compare(v9, v5 + 1) ) { v13 = i; if ( i ) break; v10 = &v9[wcslen(v9)]; v5 = &String[wcslen(String)]; if ( v14 == v10 ) { if ( v12 == v5 ) break; if ( v14 == v10 ) { v13 = -1; break; } } if ( v12 == v5 ) { v13 = 1; break; } String = v5 + 1; v9 = v10 + 1; } if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) goto LABEL_11; } else { v6 = *((_DWORD *)v16 - 1); *((_DWORD *)v16 - 1) = v6 - 1; if ( v6 > 0 ) goto LABEL_11; } std::wstring::_Rep::_M_destroy(v16 - 6, (int)&v17); LABEL_11: if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v15 - 1, 0xFFFFFFFF) > 0 ) return v13; LABEL_15: std::wstring::_Rep::_M_destroy(v15 - 6, (int)&v17); return v13; } v7 = *((_DWORD *)v15 - 1); *((_DWORD *)v15 - 1) = v7 - 1; if ( v7 <= 0 ) goto LABEL_15; return v13; } // 498C68: positive sp value 4 has been found // 53E1E4: using guessed type int _CRT_MT; //----- (00498C80) -------------------------------------------------------- size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) { return wcsxfrm(Destination, Source, MaxCount); } //----- (00498CB0) -------------------------------------------------------- int *__thiscall std::collate::do_transform(int *this, int a2, _WORD *a3, int a4) { unsigned int i; // eax int v5; // eax wchar_t *v6; // eax int v7; // eax wchar_t *v9; // [esp+10h] [ebp-68h] wchar_t *v10; // [esp+14h] [ebp-64h] unsigned int v11; // [esp+18h] [ebp-60h] wchar_t *Block; // [esp+1Ch] [ebp-5Ch] wchar_t *String; // [esp+24h] [ebp-54h] size_t lpuexcpt; // [esp+28h] [ebp-50h] int v16; // [esp+6Fh] [ebp-9h] BYREF *this = (int)std::wstring::_S_construct(0, 0); v9 = (wchar_t *)std::wstring::_S_construct(a3, a4); v10 = &v9[*((_DWORD *)v9 - 3)]; lpuexcpt = a4 - (_DWORD)a3; if ( (unsigned int)(a4 - (_DWORD)a3) > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); Block = (wchar_t *)operator new[](2 * (a4 - (_DWORD)a3)); String = v9; for ( i = std::collate::_M_transform(Block, v9, lpuexcpt); ; i = std::collate::_M_transform(Block, String, lpuexcpt) ) { if ( lpuexcpt <= i ) { lpuexcpt = i + 1; operator delete[](Block); if ( lpuexcpt > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); Block = (wchar_t *)operator new[](2 * lpuexcpt); i = std::collate::_M_transform(Block, String, lpuexcpt); } std::wstring::append(this, (char *)Block, i); v6 = &String[wcslen(String)]; if ( v10 == v6 ) break; String = v6 + 1; v11 = *(_DWORD *)(*this - 12) + 1; if ( v11 > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) std::wstring::reserve(this, v11); v5 = *this; *(_WORD *)(v5 + 2 * *(_DWORD *)(*this - 12)) = 0; *(_DWORD *)(v5 - 4) = 0; *(_DWORD *)(v5 - 12) = v11; *(_WORD *)(v5 + 2 * v11) = 0; } operator delete[](Block); if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v9 - 1, 0xFFFFFFFF) > 0 ) return this; LABEL_15: std::wstring::_Rep::_M_destroy(v9 - 6, (int)&v16); return this; } v7 = *((_DWORD *)v9 - 1); *((_DWORD *)v9 - 1) = v7 - 1; if ( v7 <= 0 ) goto LABEL_15; return this; } // 53E1E4: using guessed type int _CRT_MT; //----- (00498F90) -------------------------------------------------------- int __thiscall std::collate::hash(void *this, unsigned __int16 *a2, unsigned int a3) { unsigned __int16 *v3; // edx int (__stdcall *v4)(unsigned __int16 *, unsigned int); // eax int result; // eax int v6; // ecx v3 = a2; v4 = *(int (__stdcall **)(unsigned __int16 *, unsigned int))(*(_DWORD *)this + 16); if ( v4 != std::collate::do_hash ) return v4(a2, a3); result = 0; if ( (unsigned int)a2 < a3 ) { do { v6 = *v3++; result = v6 + __ROL4__(result, 7); } while ( a3 > (unsigned int)v3 ); } return result; } //----- (00498FE0) -------------------------------------------------------- int __fastcall std::collate::compare(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (00498FF0) -------------------------------------------------------- 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; } //----- (00499020) -------------------------------------------------------- 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; } //----- (00499050) -------------------------------------------------------- _DWORD *__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; // eax char v8; // al unsigned int v9; // eax unsigned int v10; // edx unsigned int v11; // eax _DWORD *v12; // ebx unsigned int v13; // eax unsigned int v14; // edx unsigned int v15; // eax int v16; // eax int v17; // eax _DWORD *v18; // ecx unsigned int v19; // eax unsigned int v20; // edx unsigned int v21; // eax int *v22; // eax bool v24; // al bool v25; // zf _DWORD *v26; // eax char *v27; // eax char *v28; // eax unsigned int v29; // edx _BYTE *v30; // eax int v31; // eax _DWORD *v32; // ecx unsigned int v33; // eax unsigned int v34; // edx unsigned int v35; // eax char *v36; // eax size_t v37; // edx size_t v38; // edx int v39; // edx char *v40; // eax char *v41; // eax _DWORD *v42; // eax int v43; // eax bool v44; // bl bool v45; // zf _DWORD *v46; // eax bool v47; // zf _DWORD *v48; // eax bool v49; // zf _DWORD *v50; // eax bool v51; // dl bool v52; // zf _DWORD *v53; // eax int v54; // eax bool v55; // zf char v56; // bl _DWORD *v57; // eax int v58; // eax bool v59; // zf char v60; // dl _DWORD *v61; // eax char v62; // bl int v63; // eax bool v64; // zf _DWORD *v65; // eax char v66; // bl int v67; // eax bool v68; // zf _DWORD *v69; // eax bool v70; // zf char v71; // al _DWORD *v72; // eax bool v73; // zf _DWORD *v74; // eax bool v75; // cl char v76; // bl int v77; // eax bool v78; // dl bool v79; // zf _DWORD *v80; // eax int v81; // eax bool v82; // bl bool v83; // zf _DWORD *v84; // eax int v85; // eax char v86; // dl bool v87; // zf _DWORD *v88; // eax int v89; // eax bool v90; // dl bool v91; // zf _DWORD *v92; // eax unsigned int v93; // [esp+8h] [ebp-B0h] std::locale::_Impl *v94; // [esp+18h] [ebp-A0h] size_t MaxCount; // [esp+1Ch] [ebp-9Ch] int Buf; // [esp+20h] [ebp-98h] void *Bufa; // [esp+20h] [ebp-98h] bool v98; // [esp+26h] [ebp-92h] char v99; // [esp+27h] [ebp-91h] unsigned int v100; // [esp+28h] [ebp-90h] char v101; // [esp+2Ch] [ebp-8Ch] char v102; // [esp+2Ch] [ebp-8Ch] int v103; // [esp+30h] [ebp-88h] char v104; // [esp+30h] [ebp-88h] char v105; // [esp+34h] [ebp-84h] int v106; // [esp+34h] [ebp-84h] size_t v107; // [esp+34h] [ebp-84h] char v108; // [esp+38h] [ebp-80h] unsigned int v109; // [esp+38h] [ebp-80h] _DWORD *v110; // [esp+3Ch] [ebp-7Ch] char v111; // [esp+40h] [ebp-78h] bool v112; // [esp+40h] [ebp-78h] int *v113; // [esp+44h] [ebp-74h] unsigned int v114; // [esp+44h] [ebp-74h] char v115; // [esp+48h] [ebp-70h] bool v116; // [esp+48h] [ebp-70h] char v117; // [esp+48h] [ebp-70h] char v118; // [esp+48h] [ebp-70h] char v119; // [esp+48h] [ebp-70h] char v120; // [esp+48h] [ebp-70h] _DWORD *v121; // [esp+4Ch] [ebp-6Ch] bool v122; // [esp+50h] [ebp-68h] int v123; // [esp+54h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] bool lpuexcpta; // [esp+58h] [ebp-60h] char lpuexcptb; // [esp+58h] [ebp-60h] char lpuexcptc; // [esp+58h] [ebp-60h] struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] char lpuexcpte; // [esp+58h] [ebp-60h] void *Block; // [esp+98h] [ebp-20h] BYREF size_t v131; // [esp+9Ch] [ebp-1Ch] int v132[5]; // [esp+A0h] [ebp-18h] BYREF v121 = a1; v110 = a3; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v113 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); v123 = *v113; if ( !*v113 ) { v42 = operator new(0x68u); v42[1] = 0; *v42 = &off_5605B0; v42[2] = 0; v42[3] = 0; *((_BYTE *)v42 + 16) = 0; v42[5] = 0; v42[6] = 0; v42[7] = 0; v42[8] = 0; *((_WORD *)v42 + 18) = 0; *((_BYTE *)v42 + 100) = 0; v94 = (std::locale::_Impl *)v42; std::__numpunct_cache::_M_cache((int)v42, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); v123 = *v113; } v114 = 8; v103 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v103 != 64 ) { v7 = 10; if ( v103 == 8 ) v7 = 16; v114 = v7; } lpuexcpta = a2 == -1; if ( lpuexcpta && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v81 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v82 = lpuexcpta && a1 != 0; v83 = v81 == -1; if ( v81 != -1 ) v82 = 0; v84 = 0; if ( !v83 ) v84 = a1; v105 = v82; v121 = v84; } else { v105 = 0; } } else { v105 = a2 == -1; } v122 = a4 == -1; if ( v122 && a3 != 0 ) { if ( a3[2] >= a3[3] ) { v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v78 = v122 && a3 != 0; v79 = v77 == -1; if ( v77 != -1 ) v78 = 0; v80 = 0; if ( !v79 ) v80 = a3; v101 = v78; v110 = v80; } else { v101 = 0; } } else { v101 = a4 == -1; } if ( v105 != v101 ) { if ( v121 && a2 == -1 ) { v41 = (char *)v121[2]; if ( (unsigned int)v41 >= v121[3] ) { v85 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v86 = -1; v87 = v85 == -1; if ( v85 != -1 ) v86 = v85; v88 = 0; if ( !v87 ) v88 = v121; lpuexcptb = v86; v121 = v88; } else { lpuexcptb = *v41; } } else { lpuexcptb = a2; } v8 = *(_BYTE *)(v123 + 16); v98 = *(_BYTE *)(v123 + 74) == (unsigned __int8)lpuexcptb; if ( *(_BYTE *)(v123 + 74) == lpuexcptb || *(_BYTE *)(v123 + 75) == lpuexcptb ) { if ( (!v8 || *(_BYTE *)(v123 + 37) != lpuexcptb) && *(_BYTE *)(v123 + 36) != lpuexcptb ) { v9 = v121[2]; v10 = v121[3]; if ( v9 >= v10 ) { (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v11 = v121[2]; v10 = v121[3]; } else { v11 = v9 + 1; v121[2] = v11; } v111 = 0; if ( v11 >= v10 ) { v52 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; v53 = 0; if ( !v52 ) v53 = v121; v111 = v52; v121 = v53; } if ( v122 && v110 != 0 ) { if ( v110[2] >= v110[3] ) { v89 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110); v90 = v122 && v110 != 0; v91 = v89 == -1; if ( v89 != -1 ) v90 = 0; v92 = 0; if ( !v91 ) v92 = v110; v115 = v90; v110 = v92; } else { v115 = 0; } } else { v115 = a4 == -1; } if ( v111 == v115 ) { v104 = 1; v106 = 0; v112 = 0; goto LABEL_43; } lpuexcptb = -1; if ( v121 ) { v40 = (char *)v121[2]; if ( (unsigned int)v40 >= v121[3] ) { v62 = -1; v63 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v64 = v63 == -1; if ( v63 != -1 ) v62 = v63; v65 = 0; if ( !v64 ) v65 = v121; lpuexcptb = v62; v121 = v65; } else { lpuexcptb = *v40; } } v8 = *(_BYTE *)(v123 + 16); } } else { v98 = 0; } v106 = 0; v112 = 0; while ( 1 ) { if ( v8 && *(_BYTE *)(v123 + 37) == lpuexcptb || *(_BYTE *)(v123 + 36) == lpuexcptb ) { LABEL_111: v104 = 0; goto LABEL_43; } if ( *(_BYTE *)(v123 + 78) != lpuexcptb ) break; v24 = v114 == 10 || !v112; if ( !v24 ) goto LABEL_33; v112 = v103 == 0 || v114 == 8; if ( !v112 ) { ++v106; v112 = v24; goto LABEL_37; } v12 = v121; v114 = 8; v106 = 0; v13 = v121[2]; v14 = v121[3]; if ( v13 < v14 ) { LABEL_38: v15 = v13 + 1; v108 = 0; v12[2] = v15; if ( v15 < v14 ) goto LABEL_39; goto LABEL_76; } LABEL_75: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v108 = 0; if ( v121[2] < v121[3] ) { LABEL_39: v116 = v122 && v110 != 0; if ( !v116 ) goto LABEL_40; goto LABEL_79; } LABEL_76: v25 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; v26 = 0; if ( !v25 ) v26 = v121; v108 = v25; v121 = v26; v116 = v122 && v110 != 0; if ( !v116 ) { LABEL_40: v117 = a4 == -1; goto LABEL_41; } LABEL_79: if ( v110[2] >= v110[3] ) { v43 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110); v44 = v116; v45 = v43 == -1; if ( v43 != -1 ) v44 = 0; v46 = 0; if ( !v45 ) v46 = v110; v117 = v44; v110 = v46; LABEL_41: if ( v108 == v117 ) goto LABEL_42; goto LABEL_81; } if ( !v108 ) { LABEL_42: v104 = 1; goto LABEL_43; } LABEL_81: lpuexcptb = -1; if ( v121 ) { v27 = (char *)v121[2]; if ( (unsigned int)v27 >= v121[3] ) { v66 = -1; v67 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v68 = v67 == -1; if ( v67 != -1 ) v66 = v67; v69 = 0; if ( !v68 ) v69 = v121; lpuexcptb = v66; v121 = v69; } else { lpuexcptb = *v27; } } if ( !v112 ) { v104 = 0; goto LABEL_43; } v8 = *(_BYTE *)(v123 + 16); } if ( !v112 ) goto LABEL_111; LABEL_33: if ( *(_BYTE *)(v123 + 76) != lpuexcptb && *(_BYTE *)(v123 + 77) != lpuexcptb ) { v104 = 0; v112 = 1; goto LABEL_43; } if ( v103 != 0 && v114 != 16 ) { v104 = 0; MaxCount = v114; Buf = v114; v112 = 1; goto LABEL_46; } v106 = 0; v112 = 0; v114 = 16; LABEL_37: v12 = v121; v13 = v121[2]; v14 = v121[3]; if ( v13 < v14 ) goto LABEL_38; goto LABEL_75; } v98 = 0; v104 = 1; lpuexcptb = 0; v106 = 0; v112 = 0; LABEL_43: v16 = 22; if ( v114 != 16 ) v16 = v114; MaxCount = v16; Buf = v16; LABEL_46: v131 = 0; Block = v132; LOBYTE(v132[0]) = 0; if ( *(_BYTE *)(v123 + 16) ) std::string::reserve(&Block, 0x20u); v100 = 0xFFFFFFFF / v114; v99 = *(_BYTE *)(v123 + 100); if ( !v99 ) { if ( v104 ) { v76 = v104; v102 = 0; v104 = 0; lpuexcptd = (struct _Unwind_Exception *)v131; v22 = (int *)Block; v99 = v76; v109 = 0; goto LABEL_63; } v102 = 0; v109 = 0; while ( Buf > 10 ) { if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) goto LABEL_54; if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) { if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) goto LABEL_110; v17 = lpuexcptb - 55; goto LABEL_55; } v17 = lpuexcptb - 87; if ( v100 < v109 ) { LABEL_56: v18 = v121; v102 = 1; v19 = v121[2]; v20 = v121[3]; if ( v19 < v20 ) goto LABEL_57; goto LABEL_90; } LABEL_89: v102 |= ~v17 < v114 * v109; v18 = v121; v109 = v114 * v109 + v17; v20 = v121[3]; v19 = v121[2]; ++v106; if ( v19 < v20 ) { LABEL_57: v21 = v19 + 1; v18[2] = v21; goto LABEL_58; } LABEL_90: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v21 = v121[2]; v20 = v121[3]; LABEL_58: v118 = 0; if ( v21 >= v20 ) { v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; v48 = 0; if ( !v47 ) v48 = v121; v118 = v47; v121 = v48; } if ( v122 && v110 != 0 ) { if ( v110[2] >= v110[3] ) { v49 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110) == -1; v50 = 0; if ( !v49 ) v50 = v110; v51 = v122 && v110 != 0; v110 = v50; if ( !v49 ) v51 = 0; lpuexcptc = v51; } else { lpuexcptc = 0; } } else { lpuexcptc = a4 == -1; } if ( lpuexcptc == v118 ) { v99 = 1; lpuexcptd = (struct _Unwind_Exception *)v131; v22 = (int *)Block; goto LABEL_63; } if ( v121 ) { v28 = (char *)v121[2]; if ( (unsigned int)v28 >= v121[3] ) { v54 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v55 = v54 == -1; v56 = -1; if ( v54 != -1 ) v56 = v54; v57 = 0; if ( !v55 ) v57 = v121; lpuexcptb = v56; v121 = v57; } else { lpuexcptb = *v28; } } else { lpuexcptb = -1; } } if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) goto LABEL_110; LABEL_54: v17 = lpuexcptb - 48; LABEL_55: if ( v100 < v109 ) goto LABEL_56; goto LABEL_89; } if ( v104 ) { v109 = 0; v102 = 0; lpuexcptd = (struct _Unwind_Exception *)v131; v22 = (int *)Block; v99 = v104; v104 = 0; goto LABEL_63; } v102 = 0; v109 = 0; Bufa = (void *)(v123 + 78); while ( !*(_BYTE *)(v123 + 16) || *(_BYTE *)(v123 + 37) != lpuexcptb ) { if ( lpuexcptb == *(_BYTE *)(v123 + 36) || (v30 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) { LABEL_110: v99 = 0; lpuexcptd = (struct _Unwind_Exception *)v131; v22 = (int *)Block; goto LABEL_63; } v31 = v30 - (_BYTE *)Bufa; if ( v31 > 15 ) v31 -= 6; if ( v100 >= v109 ) { v102 |= ~v31 < v114 * v109; ++v106; v109 = v114 * v109 + v31; goto LABEL_122; } v32 = v121; v102 = v99; v34 = v121[3]; v33 = v121[2]; if ( v33 < v34 ) { LABEL_123: v35 = v33 + 1; v32[2] = v35; goto LABEL_124; } LABEL_130: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v35 = v121[2]; v34 = v121[3]; LABEL_124: v119 = 0; if ( v34 <= v35 ) { v70 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; v71 = 0; if ( v70 ) v71 = v99; v119 = v71; v72 = 0; if ( !v70 ) v72 = v121; v121 = v72; } if ( v122 && v110 != 0 ) { if ( v110[2] >= v110[3] ) { v73 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110) == -1; v74 = 0; if ( !v73 ) v74 = v110; v75 = v122 && v110 != 0; v110 = v74; if ( !v73 ) v75 = 0; lpuexcpte = v75; } else { lpuexcpte = 0; } } else { lpuexcpte = a4 == -1; } if ( lpuexcpte == v119 ) { lpuexcptd = (struct _Unwind_Exception *)v131; v22 = (int *)Block; goto LABEL_63; } if ( v121 ) { v36 = (char *)v121[2]; if ( (unsigned int)v36 >= v121[3] ) { v58 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v59 = v58 == -1; v60 = -1; if ( v58 != -1 ) v60 = v58; v61 = 0; if ( !v59 ) v61 = v121; lpuexcptb = v60; v121 = v61; } else { lpuexcptb = *v36; } } else { lpuexcptb = -1; } } v22 = (int *)Block; lpuexcptd = (struct _Unwind_Exception *)v131; if ( v106 ) { v120 = v106; v37 = 15; if ( Block != v132 ) v37 = v132[0]; v107 = v131 + 1; if ( v131 + 1 > v37 ) { std::string::_M_mutate((int)&Block, v131, 0, 0, 1u); v22 = (int *)Block; } v38 = v107; v106 = 0; *((_BYTE *)lpuexcptd + (_DWORD)v22) = v120; v131 = v38; *((_BYTE *)Block + v38) = 0; LABEL_122: v32 = v121; v33 = v121[2]; v34 = v121[3]; if ( v33 < v34 ) goto LABEL_123; goto LABEL_130; } v99 = 0; v104 = *(_BYTE *)(v123 + 16); LABEL_63: if ( lpuexcptd ) { v29 = 15; if ( v22 != v132 ) v29 = v132[0]; if ( (unsigned int)lpuexcptd + 1 > v29 ) { std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); v22 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v22) = v106; v131 = (size_t)lpuexcptd + 1; *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v123 + 8), *(_DWORD *)(v123 + 12), (int)&Block) ) *a6 = 4; v22 = (int *)Block; if ( v112 || v131 | v106 ) goto LABEL_102; LABEL_66: *a7 = 0; *a6 = 4; } else { if ( !v106 && !v112 ) goto LABEL_66; LABEL_102: if ( v104 ) goto LABEL_66; if ( v102 ) { *a7 = -1; *a6 = 4; } else { v39 = -v109; if ( !v98 ) v39 = v109; *a7 = v39; } } if ( v99 ) *a6 |= 2u; if ( v22 != v132 ) operator delete(v22); return v121; } // 499B57: variable 'v93' is possibly undefined // 53F728: using guessed type signed __int32 std::numpunct::id; // 5605B0: using guessed type int (*off_5605B0)(); //----- (0049A080) -------------------------------------------------------- _DWORD *__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; // eax char v8; // al unsigned int v9; // eax unsigned int v10; // edx unsigned int v11; // eax _DWORD *v12; // ebx unsigned int v13; // eax unsigned int v14; // edx unsigned int v15; // eax int v16; // eax int v17; // eax _DWORD *v18; // ecx unsigned int v19; // eax unsigned int v20; // edx unsigned int v21; // eax int *v22; // eax bool v24; // al bool v25; // zf _DWORD *v26; // eax char *v27; // eax char *v28; // eax unsigned int v29; // edx _BYTE *v30; // eax int v31; // eax _DWORD *v32; // ecx unsigned int v33; // eax unsigned int v34; // edx unsigned int v35; // eax char *v36; // eax size_t v37; // edx size_t v38; // edx int v39; // edx char *v40; // eax char *v41; // eax _DWORD *v42; // eax int v43; // eax bool v44; // dl bool v45; // zf _DWORD *v46; // eax bool v47; // zf _DWORD *v48; // eax bool v49; // zf _DWORD *v50; // eax bool v51; // cl bool v52; // zf _DWORD *v53; // eax int v54; // eax bool v55; // zf char v56; // bl _DWORD *v57; // eax int v58; // eax bool v59; // zf char v60; // dl _DWORD *v61; // eax char v62; // bl int v63; // eax bool v64; // zf _DWORD *v65; // eax char v66; // bl int v67; // eax bool v68; // zf _DWORD *v69; // eax bool v70; // zf char v71; // al _DWORD *v72; // eax bool v73; // zf _DWORD *v74; // eax bool v75; // cl char v76; // bl int v77; // eax bool v78; // dl bool v79; // zf _DWORD *v80; // eax int v81; // eax bool v82; // bl bool v83; // zf _DWORD *v84; // eax int v85; // eax char v86; // dl bool v87; // zf _DWORD *v88; // eax int v89; // eax bool v90; // dl bool v91; // zf _DWORD *v92; // eax unsigned int v93; // [esp+8h] [ebp-B0h] std::locale::_Impl *v94; // [esp+10h] [ebp-A8h] bool v95; // [esp+14h] [ebp-A4h] size_t MaxCount; // [esp+18h] [ebp-A0h] unsigned int v97; // [esp+1Ch] [ebp-9Ch] int Buf; // [esp+20h] [ebp-98h] void *Bufa; // [esp+20h] [ebp-98h] char v100; // [esp+27h] [ebp-91h] unsigned int v101; // [esp+28h] [ebp-90h] char v102; // [esp+2Ch] [ebp-8Ch] char v103; // [esp+2Ch] [ebp-8Ch] int v104; // [esp+30h] [ebp-88h] char v105; // [esp+30h] [ebp-88h] char v106; // [esp+34h] [ebp-84h] int v107; // [esp+34h] [ebp-84h] size_t v108; // [esp+34h] [ebp-84h] char v109; // [esp+38h] [ebp-80h] unsigned int v110; // [esp+38h] [ebp-80h] _DWORD *v111; // [esp+3Ch] [ebp-7Ch] char v112; // [esp+40h] [ebp-78h] bool v113; // [esp+40h] [ebp-78h] int *v114; // [esp+44h] [ebp-74h] unsigned int v115; // [esp+44h] [ebp-74h] char v116; // [esp+48h] [ebp-70h] bool v117; // [esp+48h] [ebp-70h] char v118; // [esp+48h] [ebp-70h] char v119; // [esp+48h] [ebp-70h] char v120; // [esp+48h] [ebp-70h] char v121; // [esp+48h] [ebp-70h] _DWORD *v122; // [esp+4Ch] [ebp-6Ch] bool v123; // [esp+50h] [ebp-68h] int v124; // [esp+54h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] bool lpuexcpta; // [esp+58h] [ebp-60h] char lpuexcptb; // [esp+58h] [ebp-60h] char lpuexcptc; // [esp+58h] [ebp-60h] struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] char lpuexcpte; // [esp+58h] [ebp-60h] void *Block; // [esp+98h] [ebp-20h] BYREF size_t v132; // [esp+9Ch] [ebp-1Ch] int v133[5]; // [esp+A0h] [ebp-18h] BYREF v122 = a1; v111 = a3; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v114 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); v124 = *v114; if ( !*v114 ) { v42 = operator new(0x68u); v42[1] = 0; *v42 = &off_5605B0; v42[2] = 0; v42[3] = 0; *((_BYTE *)v42 + 16) = 0; v42[5] = 0; v42[6] = 0; v42[7] = 0; v42[8] = 0; *((_WORD *)v42 + 18) = 0; *((_BYTE *)v42 + 100) = 0; v94 = (std::locale::_Impl *)v42; std::__numpunct_cache::_M_cache((int)v42, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); v124 = *v114; } v115 = 8; v104 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v104 != 64 ) { v7 = 10; if ( v104 == 8 ) v7 = 16; v115 = v7; } lpuexcpta = a2 == -1; if ( lpuexcpta && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v81 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v82 = lpuexcpta && a1 != 0; v83 = v81 == -1; if ( v81 != -1 ) v82 = 0; v84 = 0; if ( !v83 ) v84 = a1; v106 = v82; v122 = v84; } else { v106 = 0; } } else { v106 = a2 == -1; } v123 = a4 == -1; if ( v123 && a3 != 0 ) { if ( a3[2] >= a3[3] ) { v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v78 = v123 && a3 != 0; v79 = v77 == -1; if ( v77 != -1 ) v78 = 0; v80 = 0; if ( !v79 ) v80 = a3; v102 = v78; v111 = v80; } else { v102 = 0; } } else { v102 = a4 == -1; } if ( v106 != v102 ) { if ( v122 && a2 == -1 ) { v41 = (char *)v122[2]; if ( (unsigned int)v41 >= v122[3] ) { v85 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); v86 = -1; v87 = v85 == -1; if ( v85 != -1 ) v86 = v85; v88 = 0; if ( !v87 ) v88 = v122; lpuexcptb = v86; v122 = v88; } else { lpuexcptb = *v41; } } else { lpuexcptb = a2; } v8 = *(_BYTE *)(v124 + 16); v95 = *(_BYTE *)(v124 + 74) == (unsigned __int8)lpuexcptb; if ( *(_BYTE *)(v124 + 74) == lpuexcptb || *(_BYTE *)(v124 + 75) == lpuexcptb ) { if ( (!v8 || *(_BYTE *)(v124 + 37) != lpuexcptb) && *(_BYTE *)(v124 + 36) != lpuexcptb ) { v9 = v122[2]; v10 = v122[3]; if ( v9 >= v10 ) { (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v11 = v122[2]; v10 = v122[3]; } else { v11 = v9 + 1; v122[2] = v11; } v112 = 0; if ( v11 >= v10 ) { v52 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; v53 = 0; if ( !v52 ) v53 = v122; v112 = v52; v122 = v53; } if ( v123 && v111 != 0 ) { if ( v111[2] >= v111[3] ) { v89 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111); v90 = v123 && v111 != 0; v91 = v89 == -1; if ( v89 != -1 ) v90 = 0; v92 = 0; if ( !v91 ) v92 = v111; v116 = v90; v111 = v92; } else { v116 = 0; } } else { v116 = a4 == -1; } if ( v112 == v116 ) { v105 = 1; v107 = 0; v113 = 0; goto LABEL_43; } lpuexcptb = -1; if ( v122 ) { v40 = (char *)v122[2]; if ( (unsigned int)v40 >= v122[3] ) { v62 = -1; v63 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); v64 = v63 == -1; if ( v63 != -1 ) v62 = v63; v65 = 0; if ( !v64 ) v65 = v122; lpuexcptb = v62; v122 = v65; } else { lpuexcptb = *v40; } } v8 = *(_BYTE *)(v124 + 16); } } else { v95 = 0; } v107 = 0; v113 = 0; while ( 1 ) { if ( v8 && *(_BYTE *)(v124 + 37) == lpuexcptb || *(_BYTE *)(v124 + 36) == lpuexcptb ) { LABEL_111: v105 = 0; goto LABEL_43; } if ( *(_BYTE *)(v124 + 78) != lpuexcptb ) break; v24 = v115 == 10 || !v113; if ( !v24 ) goto LABEL_33; v113 = v104 == 0 || v115 == 8; if ( !v113 ) { ++v107; v113 = v24; goto LABEL_37; } v12 = v122; v115 = 8; v107 = 0; v13 = v122[2]; v14 = v122[3]; if ( v13 < v14 ) { LABEL_38: v15 = v13 + 1; v109 = 0; v12[2] = v15; if ( v15 < v14 ) goto LABEL_39; goto LABEL_76; } LABEL_75: (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v109 = 0; if ( v122[2] < v122[3] ) { LABEL_39: v117 = v123 && v111 != 0; if ( !v117 ) goto LABEL_40; goto LABEL_79; } LABEL_76: v25 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; v26 = 0; if ( !v25 ) v26 = v122; v109 = v25; v122 = v26; v117 = v123 && v111 != 0; if ( !v117 ) { LABEL_40: v118 = a4 == -1; goto LABEL_41; } LABEL_79: if ( v111[2] >= v111[3] ) { v43 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111); v44 = v117; v45 = v43 == -1; if ( v43 != -1 ) v44 = 0; v46 = 0; if ( !v45 ) v46 = v111; v118 = v44; v111 = v46; LABEL_41: if ( v109 == v118 ) goto LABEL_42; goto LABEL_81; } if ( !v109 ) { LABEL_42: v105 = 1; goto LABEL_43; } LABEL_81: lpuexcptb = -1; if ( v122 ) { v27 = (char *)v122[2]; if ( (unsigned int)v27 >= v122[3] ) { v66 = -1; v67 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); v68 = v67 == -1; if ( v67 != -1 ) v66 = v67; v69 = 0; if ( !v68 ) v69 = v122; lpuexcptb = v66; v122 = v69; } else { lpuexcptb = *v27; } } if ( !v113 ) { v105 = 0; goto LABEL_43; } v8 = *(_BYTE *)(v124 + 16); } if ( !v113 ) goto LABEL_111; LABEL_33: if ( *(_BYTE *)(v124 + 76) != lpuexcptb && *(_BYTE *)(v124 + 77) != lpuexcptb ) { v105 = 0; v113 = 1; goto LABEL_43; } if ( v104 != 0 && v115 != 16 ) { v105 = 0; MaxCount = v115; Buf = v115; v113 = 1; goto LABEL_46; } v107 = 0; v113 = 0; v115 = 16; LABEL_37: v12 = v122; v13 = v122[2]; v14 = v122[3]; if ( v13 < v14 ) goto LABEL_38; goto LABEL_75; } v95 = 0; v105 = 1; lpuexcptb = 0; v107 = 0; v113 = 0; LABEL_43: v16 = 22; if ( v115 != 16 ) v16 = v115; MaxCount = v16; Buf = v16; LABEL_46: v132 = 0; Block = v133; LOBYTE(v133[0]) = 0; if ( *(_BYTE *)(v124 + 16) ) std::string::reserve(&Block, 0x20u); v97 = v95 + 0x7FFFFFFF; v101 = v97 / v115; v100 = *(_BYTE *)(v124 + 100); if ( !v100 ) { if ( v105 ) { v76 = v105; v103 = 0; v105 = 0; lpuexcptd = (struct _Unwind_Exception *)v132; v22 = (int *)Block; v100 = v76; v110 = 0; goto LABEL_63; } v103 = 0; v110 = 0; while ( Buf > 10 ) { if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) goto LABEL_54; if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) { if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) goto LABEL_110; v17 = lpuexcptb - 55; goto LABEL_55; } v17 = lpuexcptb - 87; if ( v101 < v110 ) { LABEL_56: v18 = v122; v103 = 1; v19 = v122[2]; v20 = v122[3]; if ( v19 < v20 ) goto LABEL_57; goto LABEL_90; } LABEL_89: v103 |= v97 - v17 < v115 * v110; v18 = v122; v110 = v115 * v110 + v17; v20 = v122[3]; v19 = v122[2]; ++v107; if ( v19 < v20 ) { LABEL_57: v21 = v19 + 1; v18[2] = v21; goto LABEL_58; } LABEL_90: (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v21 = v122[2]; v20 = v122[3]; LABEL_58: v119 = 0; if ( v21 >= v20 ) { v47 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; v48 = 0; if ( !v47 ) v48 = v122; v119 = v47; v122 = v48; } if ( v123 && v111 != 0 ) { if ( v111[2] >= v111[3] ) { v49 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111) == -1; v50 = 0; if ( !v49 ) v50 = v111; v51 = v123 && v111 != 0; v111 = v50; if ( !v49 ) v51 = 0; lpuexcptc = v51; } else { lpuexcptc = 0; } } else { lpuexcptc = a4 == -1; } if ( lpuexcptc == v119 ) { v100 = 1; lpuexcptd = (struct _Unwind_Exception *)v132; v22 = (int *)Block; goto LABEL_63; } if ( v122 ) { v28 = (char *)v122[2]; if ( (unsigned int)v28 >= v122[3] ) { v54 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); v55 = v54 == -1; v56 = -1; if ( v54 != -1 ) v56 = v54; v57 = 0; if ( !v55 ) v57 = v122; lpuexcptb = v56; v122 = v57; } else { lpuexcptb = *v28; } } else { lpuexcptb = -1; } } if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) goto LABEL_110; LABEL_54: v17 = lpuexcptb - 48; LABEL_55: if ( v101 < v110 ) goto LABEL_56; goto LABEL_89; } if ( v105 ) { v110 = 0; v103 = 0; lpuexcptd = (struct _Unwind_Exception *)v132; v22 = (int *)Block; v100 = v105; v105 = 0; goto LABEL_63; } v103 = 0; v110 = 0; Bufa = (void *)(v124 + 78); while ( !*(_BYTE *)(v124 + 16) || *(_BYTE *)(v124 + 37) != lpuexcptb ) { if ( lpuexcptb == *(_BYTE *)(v124 + 36) || (v30 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) { LABEL_110: v100 = 0; lpuexcptd = (struct _Unwind_Exception *)v132; v22 = (int *)Block; goto LABEL_63; } v31 = v30 - (_BYTE *)Bufa; if ( v31 > 15 ) v31 -= 6; if ( v101 >= v110 ) { v103 |= v97 - v31 < v115 * v110; ++v107; v110 = v115 * v110 + v31; goto LABEL_122; } v32 = v122; v103 = v100; v34 = v122[3]; v33 = v122[2]; if ( v33 < v34 ) { LABEL_123: v35 = v33 + 1; v32[2] = v35; goto LABEL_124; } LABEL_130: (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v35 = v122[2]; v34 = v122[3]; LABEL_124: v120 = 0; if ( v34 <= v35 ) { v70 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; v71 = 0; if ( v70 ) v71 = v100; v120 = v71; v72 = 0; if ( !v70 ) v72 = v122; v122 = v72; } if ( v123 && v111 != 0 ) { if ( v111[2] >= v111[3] ) { v73 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111) == -1; v74 = 0; if ( !v73 ) v74 = v111; v75 = v123 && v111 != 0; v111 = v74; if ( !v73 ) v75 = 0; lpuexcpte = v75; } else { lpuexcpte = 0; } } else { lpuexcpte = a4 == -1; } if ( lpuexcpte == v120 ) { lpuexcptd = (struct _Unwind_Exception *)v132; v22 = (int *)Block; goto LABEL_63; } if ( v122 ) { v36 = (char *)v122[2]; if ( (unsigned int)v36 >= v122[3] ) { v58 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); v59 = v58 == -1; v60 = -1; if ( v58 != -1 ) v60 = v58; v61 = 0; if ( !v59 ) v61 = v122; lpuexcptb = v60; v122 = v61; } else { lpuexcptb = *v36; } } else { lpuexcptb = -1; } } v22 = (int *)Block; lpuexcptd = (struct _Unwind_Exception *)v132; if ( v107 ) { v121 = v107; v37 = 15; if ( Block != v133 ) v37 = v133[0]; v108 = v132 + 1; if ( v132 + 1 > v37 ) { std::string::_M_mutate((int)&Block, v132, 0, 0, 1u); v22 = (int *)Block; } v38 = v108; v107 = 0; *((_BYTE *)lpuexcptd + (_DWORD)v22) = v121; v132 = v38; *((_BYTE *)Block + v38) = 0; LABEL_122: v32 = v122; v33 = v122[2]; v34 = v122[3]; if ( v33 < v34 ) goto LABEL_123; goto LABEL_130; } v100 = 0; v105 = *(_BYTE *)(v124 + 16); LABEL_63: if ( lpuexcptd ) { v29 = 15; if ( v22 != v133 ) v29 = v133[0]; if ( (unsigned int)lpuexcptd + 1 > v29 ) { std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); v22 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v22) = v107; v132 = (size_t)lpuexcptd + 1; *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v124 + 8), *(_DWORD *)(v124 + 12), (int)&Block) ) *a6 = 4; v22 = (int *)Block; if ( v113 || v132 | v107 ) goto LABEL_102; LABEL_66: *a7 = 0; *a6 = 4; } else { if ( !v107 && !v113 ) goto LABEL_66; LABEL_102: if ( v105 ) goto LABEL_66; if ( v103 ) { *a7 = v95 + 0x7FFFFFFF; *a6 = 4; } else { v39 = -v110; if ( !v95 ) v39 = v110; *a7 = v39; } } if ( v100 ) *a6 |= 2u; if ( v22 != v133 ) operator delete(v22); return v122; } // 49AB95: variable 'v93' is possibly undefined // 53F728: using guessed type signed __int32 std::numpunct::id; // 5605B0: using guessed type int (*off_5605B0)(); //----- (0049B0C0) -------------------------------------------------------- _DWORD *__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; // eax char v8; // al unsigned int v9; // eax unsigned int v10; // edx unsigned int v11; // eax _DWORD *v12; // ebx unsigned int v13; // eax unsigned int v14; // edx unsigned int v15; // eax int v16; // eax int v17; // eax _DWORD *v18; // ecx unsigned int v19; // eax unsigned int v20; // edx unsigned int v21; // eax int *v22; // eax bool v24; // al bool v25; // zf _DWORD *v26; // eax char *v27; // eax char *v28; // eax unsigned int v29; // edx _BYTE *v30; // eax int v31; // eax _DWORD *v32; // ecx unsigned int v33; // eax unsigned int v34; // edx unsigned int v35; // eax char *v36; // eax size_t v37; // edx size_t v38; // edx int v39; // edx char *v40; // eax char *v41; // eax _DWORD *v42; // eax int v43; // eax bool v44; // bl bool v45; // zf _DWORD *v46; // eax bool v47; // zf _DWORD *v48; // eax bool v49; // zf _DWORD *v50; // eax bool v51; // dl bool v52; // zf _DWORD *v53; // eax int v54; // eax bool v55; // zf char v56; // bl _DWORD *v57; // eax int v58; // eax bool v59; // zf char v60; // dl _DWORD *v61; // eax char v62; // bl int v63; // eax bool v64; // zf _DWORD *v65; // eax char v66; // bl int v67; // eax bool v68; // zf _DWORD *v69; // eax bool v70; // zf char v71; // al _DWORD *v72; // eax bool v73; // zf _DWORD *v74; // eax bool v75; // cl char v76; // bl int v77; // eax bool v78; // dl bool v79; // zf _DWORD *v80; // eax int v81; // eax bool v82; // bl bool v83; // zf _DWORD *v84; // eax int v85; // eax char v86; // dl bool v87; // zf _DWORD *v88; // eax int v89; // eax bool v90; // dl bool v91; // zf _DWORD *v92; // eax unsigned int v93; // [esp+8h] [ebp-B0h] std::locale::_Impl *v94; // [esp+18h] [ebp-A0h] size_t MaxCount; // [esp+1Ch] [ebp-9Ch] int Buf; // [esp+20h] [ebp-98h] void *Bufa; // [esp+20h] [ebp-98h] bool v98; // [esp+26h] [ebp-92h] char v99; // [esp+27h] [ebp-91h] unsigned int v100; // [esp+28h] [ebp-90h] char v101; // [esp+2Ch] [ebp-8Ch] char v102; // [esp+2Ch] [ebp-8Ch] int v103; // [esp+30h] [ebp-88h] char v104; // [esp+30h] [ebp-88h] char v105; // [esp+34h] [ebp-84h] int v106; // [esp+34h] [ebp-84h] size_t v107; // [esp+34h] [ebp-84h] char v108; // [esp+38h] [ebp-80h] unsigned int v109; // [esp+38h] [ebp-80h] _DWORD *v110; // [esp+3Ch] [ebp-7Ch] char v111; // [esp+40h] [ebp-78h] bool v112; // [esp+40h] [ebp-78h] int *v113; // [esp+44h] [ebp-74h] unsigned int v114; // [esp+44h] [ebp-74h] char v115; // [esp+48h] [ebp-70h] bool v116; // [esp+48h] [ebp-70h] char v117; // [esp+48h] [ebp-70h] char v118; // [esp+48h] [ebp-70h] char v119; // [esp+48h] [ebp-70h] char v120; // [esp+48h] [ebp-70h] _DWORD *v121; // [esp+4Ch] [ebp-6Ch] bool v122; // [esp+50h] [ebp-68h] int v123; // [esp+54h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] bool lpuexcpta; // [esp+58h] [ebp-60h] char lpuexcptb; // [esp+58h] [ebp-60h] char lpuexcptc; // [esp+58h] [ebp-60h] struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] char lpuexcpte; // [esp+58h] [ebp-60h] void *Block; // [esp+98h] [ebp-20h] BYREF size_t v131; // [esp+9Ch] [ebp-1Ch] int v132[5]; // [esp+A0h] [ebp-18h] BYREF v121 = a1; v110 = a3; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v113 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); v123 = *v113; if ( !*v113 ) { v42 = operator new(0x68u); v42[1] = 0; *v42 = &off_5605B0; v42[2] = 0; v42[3] = 0; *((_BYTE *)v42 + 16) = 0; v42[5] = 0; v42[6] = 0; v42[7] = 0; v42[8] = 0; *((_WORD *)v42 + 18) = 0; *((_BYTE *)v42 + 100) = 0; v94 = (std::locale::_Impl *)v42; std::__numpunct_cache::_M_cache((int)v42, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); v123 = *v113; } v114 = 8; v103 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v103 != 64 ) { v7 = 10; if ( v103 == 8 ) v7 = 16; v114 = v7; } lpuexcpta = a2 == -1; if ( lpuexcpta && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v81 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v82 = lpuexcpta && a1 != 0; v83 = v81 == -1; if ( v81 != -1 ) v82 = 0; v84 = 0; if ( !v83 ) v84 = a1; v105 = v82; v121 = v84; } else { v105 = 0; } } else { v105 = a2 == -1; } v122 = a4 == -1; if ( v122 && a3 != 0 ) { if ( a3[2] >= a3[3] ) { v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v78 = v122 && a3 != 0; v79 = v77 == -1; if ( v77 != -1 ) v78 = 0; v80 = 0; if ( !v79 ) v80 = a3; v101 = v78; v110 = v80; } else { v101 = 0; } } else { v101 = a4 == -1; } if ( v105 != v101 ) { if ( v121 && a2 == -1 ) { v41 = (char *)v121[2]; if ( (unsigned int)v41 >= v121[3] ) { v85 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v86 = -1; v87 = v85 == -1; if ( v85 != -1 ) v86 = v85; v88 = 0; if ( !v87 ) v88 = v121; lpuexcptb = v86; v121 = v88; } else { lpuexcptb = *v41; } } else { lpuexcptb = a2; } v8 = *(_BYTE *)(v123 + 16); v98 = *(_BYTE *)(v123 + 74) == (unsigned __int8)lpuexcptb; if ( *(_BYTE *)(v123 + 74) == lpuexcptb || *(_BYTE *)(v123 + 75) == lpuexcptb ) { if ( (!v8 || *(_BYTE *)(v123 + 37) != lpuexcptb) && *(_BYTE *)(v123 + 36) != lpuexcptb ) { v9 = v121[2]; v10 = v121[3]; if ( v9 >= v10 ) { (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v11 = v121[2]; v10 = v121[3]; } else { v11 = v9 + 1; v121[2] = v11; } v111 = 0; if ( v11 >= v10 ) { v52 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; v53 = 0; if ( !v52 ) v53 = v121; v111 = v52; v121 = v53; } if ( v122 && v110 != 0 ) { if ( v110[2] >= v110[3] ) { v89 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110); v90 = v122 && v110 != 0; v91 = v89 == -1; if ( v89 != -1 ) v90 = 0; v92 = 0; if ( !v91 ) v92 = v110; v115 = v90; v110 = v92; } else { v115 = 0; } } else { v115 = a4 == -1; } if ( v111 == v115 ) { v104 = 1; v106 = 0; v112 = 0; goto LABEL_43; } lpuexcptb = -1; if ( v121 ) { v40 = (char *)v121[2]; if ( (unsigned int)v40 >= v121[3] ) { v62 = -1; v63 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v64 = v63 == -1; if ( v63 != -1 ) v62 = v63; v65 = 0; if ( !v64 ) v65 = v121; lpuexcptb = v62; v121 = v65; } else { lpuexcptb = *v40; } } v8 = *(_BYTE *)(v123 + 16); } } else { v98 = 0; } v106 = 0; v112 = 0; while ( 1 ) { if ( v8 && *(_BYTE *)(v123 + 37) == lpuexcptb || *(_BYTE *)(v123 + 36) == lpuexcptb ) { LABEL_111: v104 = 0; goto LABEL_43; } if ( *(_BYTE *)(v123 + 78) != lpuexcptb ) break; v24 = v114 == 10 || !v112; if ( !v24 ) goto LABEL_33; v112 = v103 == 0 || v114 == 8; if ( !v112 ) { ++v106; v112 = v24; goto LABEL_37; } v12 = v121; v114 = 8; v106 = 0; v13 = v121[2]; v14 = v121[3]; if ( v13 < v14 ) { LABEL_38: v15 = v13 + 1; v108 = 0; v12[2] = v15; if ( v15 < v14 ) goto LABEL_39; goto LABEL_76; } LABEL_75: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v108 = 0; if ( v121[2] < v121[3] ) { LABEL_39: v116 = v122 && v110 != 0; if ( !v116 ) goto LABEL_40; goto LABEL_79; } LABEL_76: v25 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; v26 = 0; if ( !v25 ) v26 = v121; v108 = v25; v121 = v26; v116 = v122 && v110 != 0; if ( !v116 ) { LABEL_40: v117 = a4 == -1; goto LABEL_41; } LABEL_79: if ( v110[2] >= v110[3] ) { v43 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110); v44 = v116; v45 = v43 == -1; if ( v43 != -1 ) v44 = 0; v46 = 0; if ( !v45 ) v46 = v110; v117 = v44; v110 = v46; LABEL_41: if ( v108 == v117 ) goto LABEL_42; goto LABEL_81; } if ( !v108 ) { LABEL_42: v104 = 1; goto LABEL_43; } LABEL_81: lpuexcptb = -1; if ( v121 ) { v27 = (char *)v121[2]; if ( (unsigned int)v27 >= v121[3] ) { v66 = -1; v67 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v68 = v67 == -1; if ( v67 != -1 ) v66 = v67; v69 = 0; if ( !v68 ) v69 = v121; lpuexcptb = v66; v121 = v69; } else { lpuexcptb = *v27; } } if ( !v112 ) { v104 = 0; goto LABEL_43; } v8 = *(_BYTE *)(v123 + 16); } if ( !v112 ) goto LABEL_111; LABEL_33: if ( *(_BYTE *)(v123 + 76) != lpuexcptb && *(_BYTE *)(v123 + 77) != lpuexcptb ) { v104 = 0; v112 = 1; goto LABEL_43; } if ( v103 != 0 && v114 != 16 ) { v104 = 0; MaxCount = v114; Buf = v114; v112 = 1; goto LABEL_46; } v106 = 0; v112 = 0; v114 = 16; LABEL_37: v12 = v121; v13 = v121[2]; v14 = v121[3]; if ( v13 < v14 ) goto LABEL_38; goto LABEL_75; } v98 = 0; v104 = 1; lpuexcptb = 0; v106 = 0; v112 = 0; LABEL_43: v16 = 22; if ( v114 != 16 ) v16 = v114; MaxCount = v16; Buf = v16; LABEL_46: v131 = 0; Block = v132; LOBYTE(v132[0]) = 0; if ( *(_BYTE *)(v123 + 16) ) std::string::reserve(&Block, 0x20u); v100 = 0xFFFFFFFF / v114; v99 = *(_BYTE *)(v123 + 100); if ( !v99 ) { if ( v104 ) { v76 = v104; v102 = 0; v104 = 0; lpuexcptd = (struct _Unwind_Exception *)v131; v22 = (int *)Block; v99 = v76; v109 = 0; goto LABEL_63; } v102 = 0; v109 = 0; while ( Buf > 10 ) { if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) goto LABEL_54; if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) { if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) goto LABEL_110; v17 = lpuexcptb - 55; goto LABEL_55; } v17 = lpuexcptb - 87; if ( v100 < v109 ) { LABEL_56: v18 = v121; v102 = 1; v19 = v121[2]; v20 = v121[3]; if ( v19 < v20 ) goto LABEL_57; goto LABEL_90; } LABEL_89: v102 |= ~v17 < v114 * v109; v18 = v121; v109 = v114 * v109 + v17; v20 = v121[3]; v19 = v121[2]; ++v106; if ( v19 < v20 ) { LABEL_57: v21 = v19 + 1; v18[2] = v21; goto LABEL_58; } LABEL_90: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v21 = v121[2]; v20 = v121[3]; LABEL_58: v118 = 0; if ( v21 >= v20 ) { v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; v48 = 0; if ( !v47 ) v48 = v121; v118 = v47; v121 = v48; } if ( v122 && v110 != 0 ) { if ( v110[2] >= v110[3] ) { v49 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110) == -1; v50 = 0; if ( !v49 ) v50 = v110; v51 = v122 && v110 != 0; v110 = v50; if ( !v49 ) v51 = 0; lpuexcptc = v51; } else { lpuexcptc = 0; } } else { lpuexcptc = a4 == -1; } if ( lpuexcptc == v118 ) { v99 = 1; lpuexcptd = (struct _Unwind_Exception *)v131; v22 = (int *)Block; goto LABEL_63; } if ( v121 ) { v28 = (char *)v121[2]; if ( (unsigned int)v28 >= v121[3] ) { v54 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v55 = v54 == -1; v56 = -1; if ( v54 != -1 ) v56 = v54; v57 = 0; if ( !v55 ) v57 = v121; lpuexcptb = v56; v121 = v57; } else { lpuexcptb = *v28; } } else { lpuexcptb = -1; } } if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) goto LABEL_110; LABEL_54: v17 = lpuexcptb - 48; LABEL_55: if ( v100 < v109 ) goto LABEL_56; goto LABEL_89; } if ( v104 ) { v109 = 0; v102 = 0; lpuexcptd = (struct _Unwind_Exception *)v131; v22 = (int *)Block; v99 = v104; v104 = 0; goto LABEL_63; } v102 = 0; v109 = 0; Bufa = (void *)(v123 + 78); while ( !*(_BYTE *)(v123 + 16) || *(_BYTE *)(v123 + 37) != lpuexcptb ) { if ( lpuexcptb == *(_BYTE *)(v123 + 36) || (v30 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) { LABEL_110: v99 = 0; lpuexcptd = (struct _Unwind_Exception *)v131; v22 = (int *)Block; goto LABEL_63; } v31 = v30 - (_BYTE *)Bufa; if ( v31 > 15 ) v31 -= 6; if ( v100 >= v109 ) { v102 |= ~v31 < v114 * v109; ++v106; v109 = v114 * v109 + v31; goto LABEL_122; } v32 = v121; v102 = v99; v34 = v121[3]; v33 = v121[2]; if ( v33 < v34 ) { LABEL_123: v35 = v33 + 1; v32[2] = v35; goto LABEL_124; } LABEL_130: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v35 = v121[2]; v34 = v121[3]; LABEL_124: v119 = 0; if ( v34 <= v35 ) { v70 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; v71 = 0; if ( v70 ) v71 = v99; v119 = v71; v72 = 0; if ( !v70 ) v72 = v121; v121 = v72; } if ( v122 && v110 != 0 ) { if ( v110[2] >= v110[3] ) { v73 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110) == -1; v74 = 0; if ( !v73 ) v74 = v110; v75 = v122 && v110 != 0; v110 = v74; if ( !v73 ) v75 = 0; lpuexcpte = v75; } else { lpuexcpte = 0; } } else { lpuexcpte = a4 == -1; } if ( lpuexcpte == v119 ) { lpuexcptd = (struct _Unwind_Exception *)v131; v22 = (int *)Block; goto LABEL_63; } if ( v121 ) { v36 = (char *)v121[2]; if ( (unsigned int)v36 >= v121[3] ) { v58 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v59 = v58 == -1; v60 = -1; if ( v58 != -1 ) v60 = v58; v61 = 0; if ( !v59 ) v61 = v121; lpuexcptb = v60; v121 = v61; } else { lpuexcptb = *v36; } } else { lpuexcptb = -1; } } v22 = (int *)Block; lpuexcptd = (struct _Unwind_Exception *)v131; if ( v106 ) { v120 = v106; v37 = 15; if ( Block != v132 ) v37 = v132[0]; v107 = v131 + 1; if ( v131 + 1 > v37 ) { std::string::_M_mutate((int)&Block, v131, 0, 0, 1u); v22 = (int *)Block; } v38 = v107; v106 = 0; *((_BYTE *)lpuexcptd + (_DWORD)v22) = v120; v131 = v38; *((_BYTE *)Block + v38) = 0; LABEL_122: v32 = v121; v33 = v121[2]; v34 = v121[3]; if ( v33 < v34 ) goto LABEL_123; goto LABEL_130; } v99 = 0; v104 = *(_BYTE *)(v123 + 16); LABEL_63: if ( lpuexcptd ) { v29 = 15; if ( v22 != v132 ) v29 = v132[0]; if ( (unsigned int)lpuexcptd + 1 > v29 ) { std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); v22 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v22) = v106; v131 = (size_t)lpuexcptd + 1; *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v123 + 8), *(_DWORD *)(v123 + 12), (int)&Block) ) *a6 = 4; v22 = (int *)Block; if ( v112 || v131 | v106 ) goto LABEL_102; LABEL_66: *a7 = 0; *a6 = 4; } else { if ( !v106 && !v112 ) goto LABEL_66; LABEL_102: if ( v104 ) goto LABEL_66; if ( v102 ) { *a7 = -1; *a6 = 4; } else { v39 = -v109; if ( !v98 ) v39 = v109; *a7 = v39; } } if ( v99 ) *a6 |= 2u; if ( v22 != v132 ) operator delete(v22); return v121; } // 49BBC7: variable 'v93' is possibly undefined // 53F728: using guessed type signed __int32 std::numpunct::id; // 5605B0: using guessed type int (*off_5605B0)(); //----- (0049C0F0) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _WORD *a7) { int v7; // eax char v8; // al unsigned int v9; // eax unsigned int v10; // edx unsigned int v11; // eax _DWORD *v12; // ebx unsigned int v13; // eax unsigned int v14; // edx unsigned int v15; // eax int v16; // eax int v17; // eax _DWORD *v18; // ecx unsigned int v19; // eax unsigned int v20; // edx unsigned int v21; // eax int *v22; // eax bool v24; // al bool v25; // zf _DWORD *v26; // eax char *v27; // eax char *v28; // eax unsigned int v29; // edx _BYTE *v30; // eax int v31; // eax int v32; // ebx _DWORD *v33; // ecx unsigned int v34; // eax unsigned int v35; // edx unsigned int v36; // eax char *v37; // eax size_t v38; // ebx unsigned int v39; // edx int v40; // edx char *v41; // eax char *v42; // eax _DWORD *v43; // eax int v44; // eax bool v45; // bl bool v46; // zf _DWORD *v47; // eax bool v48; // zf _DWORD *v49; // eax bool v50; // zf _DWORD *v51; // eax bool v52; // cl bool v53; // zf _DWORD *v54; // eax int v55; // eax bool v56; // zf char v57; // dl _DWORD *v58; // eax int v59; // eax bool v60; // zf char v61; // dl _DWORD *v62; // eax int v63; // eax char v64; // dl bool v65; // zf _DWORD *v66; // eax char v67; // bl int v68; // eax bool v69; // zf _DWORD *v70; // eax bool v71; // zf char v72; // al _DWORD *v73; // eax bool v74; // zf _DWORD *v75; // eax bool v76; // dl char v77; // bl int v78; // eax bool v79; // bl bool v80; // zf _DWORD *v81; // eax int v82; // eax bool v83; // dl bool v84; // zf _DWORD *v85; // eax char v86; // bl int v87; // eax char v88; // dl bool v89; // zf _DWORD *v90; // eax int v91; // eax bool v92; // bl bool v93; // zf _DWORD *v94; // eax unsigned int v95; // [esp+8h] [ebp-B0h] std::locale::_Impl *v96; // [esp+18h] [ebp-A0h] size_t MaxCount; // [esp+1Ch] [ebp-9Ch] int Buf; // [esp+20h] [ebp-98h] void *Bufa; // [esp+20h] [ebp-98h] bool v100; // [esp+26h] [ebp-92h] char v101; // [esp+27h] [ebp-91h] int v102; // [esp+28h] [ebp-90h] char v103; // [esp+2Ch] [ebp-8Ch] char v104; // [esp+2Ch] [ebp-8Ch] int v105; // [esp+30h] [ebp-88h] char v106; // [esp+30h] [ebp-88h] char v107; // [esp+34h] [ebp-84h] int v108; // [esp+34h] [ebp-84h] char v109; // [esp+38h] [ebp-80h] unsigned __int16 v110; // [esp+38h] [ebp-80h] _DWORD *v111; // [esp+3Ch] [ebp-7Ch] char v112; // [esp+40h] [ebp-78h] bool v113; // [esp+40h] [ebp-78h] int *v114; // [esp+44h] [ebp-74h] int v115; // [esp+44h] [ebp-74h] char v116; // [esp+48h] [ebp-70h] bool v117; // [esp+48h] [ebp-70h] char v118; // [esp+48h] [ebp-70h] char v119; // [esp+48h] [ebp-70h] char v120; // [esp+48h] [ebp-70h] char v121; // [esp+48h] [ebp-70h] _DWORD *v122; // [esp+4Ch] [ebp-6Ch] bool v123; // [esp+50h] [ebp-68h] int v124; // [esp+54h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] bool lpuexcpta; // [esp+58h] [ebp-60h] char lpuexcptb; // [esp+58h] [ebp-60h] char lpuexcptc; // [esp+58h] [ebp-60h] struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] char lpuexcpte; // [esp+58h] [ebp-60h] void *Block; // [esp+98h] [ebp-20h] BYREF size_t v132; // [esp+9Ch] [ebp-1Ch] int v133[5]; // [esp+A0h] [ebp-18h] BYREF v122 = a1; v111 = a3; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v114 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); v124 = *v114; if ( !*v114 ) { v43 = operator new(0x68u); v43[1] = 0; *v43 = &off_5605B0; v43[2] = 0; v43[3] = 0; *((_BYTE *)v43 + 16) = 0; v43[5] = 0; v43[6] = 0; v43[7] = 0; v43[8] = 0; *((_WORD *)v43 + 18) = 0; *((_BYTE *)v43 + 100) = 0; v96 = (std::locale::_Impl *)v43; std::__numpunct_cache::_M_cache((int)v43, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v96, lpuexcpt, v95); v124 = *v114; } v115 = 8; v105 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v105 != 64 ) { v7 = 10; if ( v105 == 8 ) v7 = 16; v115 = v7; } lpuexcpta = a2 == -1; if ( lpuexcpta && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v82 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v83 = lpuexcpta && a1 != 0; v84 = v82 == -1; if ( v82 != -1 ) v83 = 0; v85 = 0; if ( !v84 ) v85 = a1; v107 = v83; v122 = v85; } else { v107 = 0; } } else { v107 = a2 == -1; } v123 = a4 == -1; if ( v123 && a3 != 0 ) { if ( a3[2] >= a3[3] ) { v78 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v79 = v123 && a3 != 0; v80 = v78 == -1; if ( v78 != -1 ) v79 = 0; v81 = 0; if ( !v80 ) v81 = a3; v103 = v79; v111 = v81; } else { v103 = 0; } } else { v103 = a4 == -1; } if ( v107 != v103 ) { if ( v122 && a2 == -1 ) { v42 = (char *)v122[2]; if ( (unsigned int)v42 >= v122[3] ) { v87 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); v88 = -1; v89 = v87 == -1; if ( v87 != -1 ) v88 = v87; v90 = 0; if ( !v89 ) v90 = v122; lpuexcptb = v88; v122 = v90; } else { lpuexcptb = *v42; } } else { lpuexcptb = a2; } v8 = *(_BYTE *)(v124 + 16); v100 = *(_BYTE *)(v124 + 74) == (unsigned __int8)lpuexcptb; if ( *(_BYTE *)(v124 + 74) == lpuexcptb || *(_BYTE *)(v124 + 75) == lpuexcptb ) { if ( (!v8 || *(_BYTE *)(v124 + 37) != lpuexcptb) && *(_BYTE *)(v124 + 36) != lpuexcptb ) { v9 = v122[2]; v10 = v122[3]; if ( v9 >= v10 ) { (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v11 = v122[2]; v10 = v122[3]; } else { v11 = v9 + 1; v122[2] = v11; } v112 = 0; if ( v11 >= v10 ) { v53 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; v54 = 0; if ( !v53 ) v54 = v122; v112 = v53; v122 = v54; } if ( v123 && v111 != 0 ) { if ( v111[2] >= v111[3] ) { v91 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111); v92 = v123 && v111 != 0; v93 = v91 == -1; if ( v91 != -1 ) v92 = 0; v94 = 0; if ( !v93 ) v94 = v111; v116 = v92; v111 = v94; } else { v116 = 0; } } else { v116 = a4 == -1; } if ( v112 == v116 ) { v106 = 1; v108 = 0; v113 = 0; goto LABEL_43; } lpuexcptb = -1; if ( v122 ) { v41 = (char *)v122[2]; if ( (unsigned int)v41 >= v122[3] ) { v63 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); v64 = -1; v65 = v63 == -1; if ( v63 != -1 ) v64 = v63; v66 = 0; if ( !v65 ) v66 = v122; lpuexcptb = v64; v122 = v66; } else { lpuexcptb = *v41; } } v8 = *(_BYTE *)(v124 + 16); } } else { v100 = 0; } v108 = 0; v113 = 0; while ( 1 ) { if ( v8 && *(_BYTE *)(v124 + 37) == lpuexcptb || *(_BYTE *)(v124 + 36) == lpuexcptb ) { LABEL_111: v106 = 0; goto LABEL_43; } if ( *(_BYTE *)(v124 + 78) != lpuexcptb ) break; v24 = v115 == 10 || !v113; if ( !v24 ) goto LABEL_33; v113 = v105 == 0 || v115 == 8; if ( !v113 ) { ++v108; v113 = v24; goto LABEL_37; } v12 = v122; v115 = 8; v108 = 0; v13 = v122[2]; v14 = v122[3]; if ( v13 < v14 ) { LABEL_38: v15 = v13 + 1; v109 = 0; v12[2] = v15; if ( v15 < v14 ) goto LABEL_39; goto LABEL_76; } LABEL_75: (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v109 = 0; if ( v122[2] < v122[3] ) { LABEL_39: v117 = v123 && v111 != 0; if ( !v117 ) goto LABEL_40; goto LABEL_79; } LABEL_76: v25 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; v26 = 0; if ( !v25 ) v26 = v122; v109 = v25; v122 = v26; v117 = v123 && v111 != 0; if ( !v117 ) { LABEL_40: v118 = a4 == -1; goto LABEL_41; } LABEL_79: if ( v111[2] >= v111[3] ) { v44 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111); v45 = v117; v46 = v44 == -1; if ( v44 != -1 ) v45 = 0; v47 = 0; if ( !v46 ) v47 = v111; v118 = v45; v111 = v47; LABEL_41: if ( v109 == v118 ) goto LABEL_42; goto LABEL_81; } if ( !v109 ) { LABEL_42: v106 = 1; goto LABEL_43; } LABEL_81: lpuexcptb = -1; if ( v122 ) { v27 = (char *)v122[2]; if ( (unsigned int)v27 >= v122[3] ) { v67 = -1; v68 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); v69 = v68 == -1; if ( v68 != -1 ) v67 = v68; v70 = 0; if ( !v69 ) v70 = v122; lpuexcptb = v67; v122 = v70; } else { lpuexcptb = *v27; } } if ( !v113 ) { v106 = 0; goto LABEL_43; } v8 = *(_BYTE *)(v124 + 16); } if ( !v113 ) goto LABEL_111; LABEL_33: if ( *(_BYTE *)(v124 + 76) != lpuexcptb && *(_BYTE *)(v124 + 77) != lpuexcptb ) { v106 = 0; v113 = 1; goto LABEL_43; } if ( v105 != 0 && v115 != 16 ) { v106 = 0; MaxCount = v115; Buf = v115; v113 = 1; goto LABEL_46; } v108 = 0; v113 = 0; v115 = 16; LABEL_37: v12 = v122; v13 = v122[2]; v14 = v122[3]; if ( v13 < v14 ) goto LABEL_38; goto LABEL_75; } v100 = 0; v106 = 1; lpuexcptb = 0; v108 = 0; v113 = 0; LABEL_43: v16 = 22; if ( v115 != 16 ) v16 = v115; MaxCount = v16; Buf = v16; LABEL_46: v132 = 0; Block = v133; LOBYTE(v133[0]) = 0; if ( *(_BYTE *)(v124 + 16) ) std::string::reserve(&Block, 0x20u); v102 = 0xFFFF / v115; v101 = *(_BYTE *)(v124 + 100); if ( !v101 ) { if ( v106 ) { v77 = v106; v104 = 0; v106 = 0; lpuexcptd = (struct _Unwind_Exception *)v132; v22 = (int *)Block; v101 = v77; v110 = 0; goto LABEL_63; } v104 = 0; v110 = 0; while ( Buf > 10 ) { if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) goto LABEL_54; if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) { if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) goto LABEL_110; v17 = lpuexcptb - 55; goto LABEL_55; } v17 = lpuexcptb - 87; if ( (unsigned __int16)v102 < v110 ) { LABEL_56: v18 = v122; v104 = 1; v19 = v122[2]; v20 = v122[3]; if ( v19 < v20 ) goto LABEL_57; goto LABEL_90; } LABEL_89: v104 |= (unsigned __int16)(v115 * v110) > 0xFFFF - v17; v18 = v122; v110 = v115 * v110 + v17; v20 = v122[3]; v19 = v122[2]; ++v108; if ( v19 < v20 ) { LABEL_57: v21 = v19 + 1; v18[2] = v21; goto LABEL_58; } LABEL_90: (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v21 = v122[2]; v20 = v122[3]; LABEL_58: v119 = 0; if ( v21 >= v20 ) { v48 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; v49 = 0; if ( !v48 ) v49 = v122; v119 = v48; v122 = v49; } if ( v123 && v111 != 0 ) { if ( v111[2] >= v111[3] ) { v50 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111) == -1; v51 = 0; if ( !v50 ) v51 = v111; v52 = v123 && v111 != 0; v111 = v51; if ( !v50 ) v52 = 0; lpuexcptc = v52; } else { lpuexcptc = 0; } } else { lpuexcptc = a4 == -1; } if ( lpuexcptc == v119 ) { v101 = 1; lpuexcptd = (struct _Unwind_Exception *)v132; v22 = (int *)Block; goto LABEL_63; } if ( v122 ) { v28 = (char *)v122[2]; if ( (unsigned int)v28 >= v122[3] ) { v55 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); v56 = v55 == -1; v57 = -1; if ( v55 != -1 ) v57 = v55; v58 = 0; if ( !v56 ) v58 = v122; lpuexcptb = v57; v122 = v58; } else { lpuexcptb = *v28; } } else { lpuexcptb = -1; } } if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) goto LABEL_110; LABEL_54: v17 = lpuexcptb - 48; LABEL_55: if ( (unsigned __int16)v102 < v110 ) goto LABEL_56; goto LABEL_89; } if ( v106 ) { v86 = v106; v104 = 0; v106 = 0; v101 = v86; lpuexcptd = (struct _Unwind_Exception *)v132; v22 = (int *)Block; v110 = 0; goto LABEL_63; } v104 = 0; Bufa = (void *)(v124 + 78); v110 = 0; while ( !*(_BYTE *)(v124 + 16) || *(_BYTE *)(v124 + 37) != lpuexcptb ) { if ( lpuexcptb == *(_BYTE *)(v124 + 36) || (v30 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) { LABEL_110: v101 = 0; lpuexcptd = (struct _Unwind_Exception *)v132; v22 = (int *)Block; goto LABEL_63; } v31 = v30 - (_BYTE *)Bufa; if ( v31 > 15 ) v31 -= 6; if ( (unsigned __int16)v102 >= v110 ) { v32 = (unsigned __int16)(v115 * v110); v104 |= v32 > 0xFFFF - v31; ++v108; v110 = v32 + v31; goto LABEL_122; } v33 = v122; v104 = v101; v35 = v122[3]; v34 = v122[2]; if ( v34 < v35 ) { LABEL_123: v36 = v34 + 1; v33[2] = v36; goto LABEL_124; } LABEL_130: (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v36 = v122[2]; v35 = v122[3]; LABEL_124: v120 = 0; if ( v35 <= v36 ) { v71 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; v72 = 0; if ( v71 ) v72 = v101; v120 = v72; v73 = 0; if ( !v71 ) v73 = v122; v122 = v73; } if ( v123 && v111 != 0 ) { if ( v111[2] >= v111[3] ) { v74 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111) == -1; v75 = 0; if ( !v74 ) v75 = v111; v76 = v123 && v111 != 0; v111 = v75; if ( !v74 ) v76 = 0; lpuexcpte = v76; } else { lpuexcpte = 0; } } else { lpuexcpte = a4 == -1; } if ( lpuexcpte == v120 ) { lpuexcptd = (struct _Unwind_Exception *)v132; v22 = (int *)Block; goto LABEL_63; } if ( v122 ) { v37 = (char *)v122[2]; if ( (unsigned int)v37 >= v122[3] ) { v59 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); v60 = v59 == -1; v61 = -1; if ( v59 != -1 ) v61 = v59; v62 = 0; if ( !v60 ) v62 = v122; lpuexcptb = v61; v122 = v62; } else { lpuexcptb = *v37; } } else { lpuexcptb = -1; } } v22 = (int *)Block; lpuexcptd = (struct _Unwind_Exception *)v132; if ( v108 ) { v121 = v108; v39 = 15; if ( Block != v133 ) v39 = v133[0]; v38 = v132 + 1; if ( v132 + 1 > v39 ) { std::string::_M_mutate((int)&Block, v132, 0, 0, 1u); v22 = (int *)Block; } v108 = 0; *((_BYTE *)lpuexcptd + (_DWORD)v22) = v121; v132 = v38; *((_BYTE *)Block + v38) = 0; LABEL_122: v33 = v122; v34 = v122[2]; v35 = v122[3]; if ( v34 < v35 ) goto LABEL_123; goto LABEL_130; } v101 = 0; v106 = *(_BYTE *)(v124 + 16); LABEL_63: if ( lpuexcptd ) { v29 = 15; if ( v22 != v133 ) v29 = v133[0]; if ( (unsigned int)lpuexcptd + 1 > v29 ) { std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); v22 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v22) = v108; v132 = (size_t)lpuexcptd + 1; *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v124 + 8), *(_DWORD *)(v124 + 12), (int)&Block) ) *a6 = 4; v22 = (int *)Block; if ( v113 || v132 | v108 ) goto LABEL_102; LABEL_66: *a7 = 0; *a6 = 4; } else { if ( !v108 && !v113 ) goto LABEL_66; LABEL_102: if ( v106 ) goto LABEL_66; if ( v104 ) { *a7 = -1; *a6 = 4; } else { v40 = -v110; if ( !v100 ) LOWORD(v40) = v110; *a7 = v40; } } if ( v101 ) *a6 |= 2u; if ( v22 != v133 ) operator delete(v22); return v122; } // 49CC05: variable 'v95' is possibly undefined // 53F728: using guessed type signed __int32 std::numpunct::id; // 5605B0: using guessed type int (*off_5605B0)(); //----- (0049D130) -------------------------------------------------------- _DWORD *__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; // eax char v8; // al unsigned int v9; // eax unsigned int v10; // edx unsigned int v11; // eax _DWORD *v12; // edi unsigned int v13; // eax unsigned int v14; // edx unsigned int v15; // eax int v16; // eax unsigned __int64 v17; // kr00_8 int v18; // esi _DWORD *v19; // ecx unsigned int v20; // eax unsigned int v21; // edx unsigned int v22; // eax int *v23; // eax bool v25; // al bool v26; // zf _DWORD *v27; // eax char *v28; // eax char *v29; // eax unsigned int v30; // edx int v31; // ecx unsigned int v32; // ebx _BYTE *v33; // eax int v34; // esi _DWORD *v35; // esi unsigned int v36; // eax unsigned int v37; // edx unsigned int v38; // eax char *v39; // eax size_t v40; // edi unsigned int v41; // edx char *v42; // eax char *v43; // eax _DWORD *v44; // eax int v45; // eax bool v46; // dl bool v47; // zf _DWORD *v48; // eax bool v49; // zf _DWORD *v50; // eax bool v51; // zf _DWORD *v52; // eax bool v53; // bl bool v54; // zf _DWORD *v55; // eax int v56; // eax bool v57; // zf char v58; // dl _DWORD *v59; // eax int v60; // eax bool v61; // zf char v62; // dl _DWORD *v63; // eax int v64; // eax char v65; // dl bool v66; // zf _DWORD *v67; // eax int v68; // eax char v69; // dl bool v70; // zf _DWORD *v71; // eax bool v72; // zf char v73; // al _DWORD *v74; // eax bool v75; // zf _DWORD *v76; // eax bool v77; // dl char v78; // cl int v79; // eax bool v80; // si bool v81; // zf _DWORD *v82; // eax int v83; // eax bool v84; // dl bool v85; // zf _DWORD *v86; // eax int v87; // eax bool v88; // zf char v89; // si _DWORD *v90; // eax int v91; // eax bool v92; // bl bool v93; // zf _DWORD *v94; // eax unsigned int v95; // [esp+8h] [ebp-D0h] std::locale::_Impl *v96; // [esp+14h] [ebp-C4h] unsigned __int64 v97; // [esp+18h] [ebp-C0h] size_t MaxCount; // [esp+20h] [ebp-B8h] int Buf; // [esp+24h] [ebp-B4h] void *Bufa; // [esp+24h] [ebp-B4h] bool v101; // [esp+2Ah] [ebp-AEh] char v102; // [esp+2Bh] [ebp-ADh] char v103; // [esp+34h] [ebp-A4h] char v104; // [esp+34h] [ebp-A4h] int v105; // [esp+38h] [ebp-A0h] char v106; // [esp+38h] [ebp-A0h] char v107; // [esp+3Ch] [ebp-9Ch] int v108; // [esp+3Ch] [ebp-9Ch] char v109; // [esp+40h] [ebp-98h] char v110; // [esp+40h] [ebp-98h] char v111; // [esp+40h] [ebp-98h] char v112; // [esp+40h] [ebp-98h] _DWORD *v113; // [esp+44h] [ebp-94h] int *v114; // [esp+48h] [ebp-90h] int v115; // [esp+48h] [ebp-90h] char v116; // [esp+50h] [ebp-88h] char v117; // [esp+50h] [ebp-88h] unsigned __int64 v118; // [esp+50h] [ebp-88h] char v119; // [esp+58h] [ebp-80h] bool v120; // [esp+58h] [ebp-80h] _DWORD *v121; // [esp+5Ch] [ebp-7Ch] bool v122; // [esp+60h] [ebp-78h] int v123; // [esp+64h] [ebp-74h] struct _Unwind_Exception *lpuexcpt; // [esp+68h] [ebp-70h] bool lpuexcpta; // [esp+68h] [ebp-70h] char lpuexcptb; // [esp+68h] [ebp-70h] char lpuexcptc; // [esp+68h] [ebp-70h] struct _Unwind_Exception *lpuexcptd; // [esp+68h] [ebp-70h] char lpuexcpte; // [esp+68h] [ebp-70h] void *Block; // [esp+A8h] [ebp-30h] BYREF size_t v131; // [esp+ACh] [ebp-2Ch] int v132[10]; // [esp+B0h] [ebp-28h] BYREF v121 = a1; v113 = a3; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v114 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); v123 = *v114; if ( !*v114 ) { v44 = operator new(0x68u); v44[1] = 0; *v44 = &off_5605B0; v44[2] = 0; v44[3] = 0; *((_BYTE *)v44 + 16) = 0; v44[5] = 0; v44[6] = 0; v44[7] = 0; v44[8] = 0; *((_WORD *)v44 + 18) = 0; *((_BYTE *)v44 + 100) = 0; v96 = (std::locale::_Impl *)v44; std::__numpunct_cache::_M_cache((int)v44, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v96, lpuexcpt, v95); v123 = *v114; } v115 = 8; v105 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v105 != 64 ) { v7 = 10; if ( v105 == 8 ) v7 = 16; v115 = v7; } lpuexcpta = a2 == -1; if ( lpuexcpta && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v83 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v84 = lpuexcpta && a1 != 0; v85 = v83 == -1; if ( v83 != -1 ) v84 = 0; v86 = 0; if ( !v85 ) v86 = a1; v107 = v84; v121 = v86; } else { v107 = 0; } } else { v107 = a2 == -1; } v122 = a4 == -1; if ( v122 && a3 != 0 ) { if ( a3[2] >= a3[3] ) { v79 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v80 = v122 && a3 != 0; v81 = v79 == -1; if ( v79 != -1 ) v80 = 0; v103 = v80; v82 = 0; if ( !v81 ) v82 = a3; v113 = v82; } else { v103 = 0; } } else { v103 = a4 == -1; } if ( v107 != v103 ) { if ( v121 && a2 == -1 ) { v43 = (char *)v121[2]; if ( (unsigned int)v43 >= v121[3] ) { v87 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v88 = v87 == -1; v89 = -1; if ( v87 != -1 ) v89 = v87; lpuexcptb = v89; v90 = 0; if ( !v88 ) v90 = v121; v121 = v90; } else { lpuexcptb = *v43; } } else { lpuexcptb = a2; } v8 = *(_BYTE *)(v123 + 16); v101 = *(_BYTE *)(v123 + 74) == (unsigned __int8)lpuexcptb; if ( *(_BYTE *)(v123 + 74) == lpuexcptb || *(_BYTE *)(v123 + 75) == lpuexcptb ) { if ( (!v8 || *(_BYTE *)(v123 + 37) != lpuexcptb) && *(_BYTE *)(v123 + 36) != lpuexcptb ) { v9 = v121[2]; v10 = v121[3]; if ( v9 >= v10 ) { (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v11 = v121[2]; v10 = v121[3]; } else { v11 = v9 + 1; v121[2] = v11; } v119 = 0; if ( v11 >= v10 ) { v54 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; v55 = 0; if ( !v54 ) v55 = v121; v119 = v54; v121 = v55; } if ( v122 && v113 != 0 ) { if ( v113[2] >= v113[3] ) { v91 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113); v92 = v122 && v113 != 0; v93 = v91 == -1; if ( v91 != -1 ) v92 = 0; v94 = 0; if ( !v93 ) v94 = v113; v116 = v92; v113 = v94; } else { v116 = 0; } } else { v116 = a4 == -1; } if ( v119 == v116 ) { v106 = 1; v108 = 0; v120 = 0; goto LABEL_43; } lpuexcptb = -1; if ( v121 ) { v42 = (char *)v121[2]; if ( (unsigned int)v42 >= v121[3] ) { v64 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v65 = -1; v66 = v64 == -1; if ( v64 != -1 ) v65 = v64; v67 = 0; if ( !v66 ) v67 = v121; lpuexcptb = v65; v121 = v67; } else { lpuexcptb = *v42; } } v8 = *(_BYTE *)(v123 + 16); } } else { v101 = 0; } v108 = 0; v120 = 0; while ( 1 ) { if ( v8 && *(_BYTE *)(v123 + 37) == lpuexcptb || *(_BYTE *)(v123 + 36) == lpuexcptb ) { LABEL_115: v106 = 0; goto LABEL_43; } if ( *(_BYTE *)(v123 + 78) != lpuexcptb ) break; v25 = v115 == 10 || !v120; if ( !v25 ) goto LABEL_33; v120 = v105 == 0 || v115 == 8; if ( !v120 ) { ++v108; v120 = v25; goto LABEL_37; } v108 = 0; v12 = v121; v115 = 8; v13 = v121[2]; v14 = v121[3]; if ( v13 >= v14 ) { LABEL_77: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v109 = 0; if ( v121[2] < v121[3] ) goto LABEL_39; goto LABEL_78; } LABEL_38: v15 = v13 + 1; v109 = 0; v12[2] = v15; if ( v15 < v14 ) goto LABEL_39; LABEL_78: v26 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; v27 = 0; if ( !v26 ) v27 = v121; v109 = v26; v121 = v27; LABEL_39: if ( v122 && v113 != 0 ) { if ( v113[2] >= v113[3] ) { v45 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113); v46 = v122 && v113 != 0; v47 = v45 == -1; if ( v45 != -1 ) v46 = 0; v48 = 0; if ( !v47 ) v48 = v113; v117 = v46; v113 = v48; } else { v117 = 0; } } else { v117 = a4 == -1; } if ( v109 == v117 ) { v106 = 1; goto LABEL_43; } lpuexcptb = -1; if ( v121 ) { v28 = (char *)v121[2]; if ( (unsigned int)v28 >= v121[3] ) { v68 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v69 = -1; v70 = v68 == -1; if ( v68 != -1 ) v69 = v68; v71 = 0; if ( !v70 ) v71 = v121; lpuexcptb = v69; v121 = v71; } else { lpuexcptb = *v28; } } if ( !v120 ) { v106 = 0; goto LABEL_43; } v8 = *(_BYTE *)(v123 + 16); } if ( !v120 ) goto LABEL_115; LABEL_33: if ( *(_BYTE *)(v123 + 76) != lpuexcptb && *(_BYTE *)(v123 + 77) != lpuexcptb ) { v106 = 0; v120 = 1; goto LABEL_43; } if ( v105 != 0 && v115 != 16 ) { v106 = 0; MaxCount = v115; Buf = v115; v120 = 1; goto LABEL_46; } v108 = 0; v120 = 0; v115 = 16; LABEL_37: v12 = v121; v13 = v121[2]; v14 = v121[3]; if ( v13 >= v14 ) goto LABEL_77; goto LABEL_38; } v101 = 0; v106 = 1; lpuexcptb = 0; v108 = 0; v120 = 0; LABEL_43: v16 = 22; if ( v115 != 16 ) v16 = v115; MaxCount = v16; Buf = v16; LABEL_46: v131 = 0; Block = v132; LOBYTE(v132[0]) = 0; if ( *(_BYTE *)(v123 + 16) ) std::string::reserve(&Block, 0x20u); v97 = 0x8000000000000000LL; if ( !v101 ) v97 = 0x7FFFFFFFFFFFFFFFLL; v17 = v97 / v115; v102 = *(_BYTE *)(v123 + 100); if ( !v102 ) { if ( v106 ) { v78 = v106; v104 = 0; v106 = 0; lpuexcptd = (struct _Unwind_Exception *)v131; v23 = (int *)Block; v102 = v78; v118 = 0LL; goto LABEL_65; } v104 = 0; v118 = 0LL; while ( Buf > 10 ) { if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) goto LABEL_56; if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) { if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) goto LABEL_114; v18 = lpuexcptb - 55; } else { v18 = lpuexcptb - 87; } LABEL_57: if ( v17 >= v118 ) { v104 |= v97 - v18 < v115 * v118; v19 = v121; v118 = v115 * v118 + v18; v20 = v121[2]; v21 = v121[3]; ++v108; if ( v20 < v21 ) { LABEL_59: v22 = v20 + 1; v19[2] = v22; goto LABEL_60; } } else { v19 = v121; v104 = 1; v20 = v121[2]; v21 = v121[3]; if ( v20 < v21 ) goto LABEL_59; } (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v22 = v121[2]; v21 = v121[3]; LABEL_60: v110 = 0; if ( v22 >= v21 ) { v49 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; v50 = 0; if ( !v49 ) v50 = v121; v110 = v49; v121 = v50; } if ( v122 && v113 != 0 ) { if ( v113[2] >= v113[3] ) { v51 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113) == -1; v52 = 0; if ( !v51 ) v52 = v113; v53 = v122 && v113 != 0; v113 = v52; if ( !v51 ) v53 = 0; lpuexcptc = v53; } else { lpuexcptc = 0; } } else { lpuexcptc = a4 == -1; } if ( lpuexcptc == v110 ) { v102 = 1; lpuexcptd = (struct _Unwind_Exception *)v131; v23 = (int *)Block; goto LABEL_65; } if ( v121 ) { v29 = (char *)v121[2]; if ( (unsigned int)v29 >= v121[3] ) { v56 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v57 = v56 == -1; v58 = -1; if ( v56 != -1 ) v58 = v56; v59 = 0; if ( !v57 ) v59 = v121; lpuexcptb = v58; v121 = v59; } else { lpuexcptb = *v29; } } else { lpuexcptb = -1; } } if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) goto LABEL_114; LABEL_56: v18 = lpuexcptb - 48; goto LABEL_57; } if ( v106 ) { v118 = 0LL; lpuexcptd = (struct _Unwind_Exception *)v131; v23 = (int *)Block; v102 = v106; v104 = 0; v106 = 0; goto LABEL_65; } v104 = 0; v118 = 0LL; Bufa = (void *)(v123 + 78); while ( !*(_BYTE *)(v123 + 16) || *(_BYTE *)(v123 + 37) != lpuexcptb ) { if ( lpuexcptb == *(_BYTE *)(v123 + 36) || (v33 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) { LABEL_114: v102 = 0; lpuexcptd = (struct _Unwind_Exception *)v131; v23 = (int *)Block; goto LABEL_65; } v34 = v33 - (_BYTE *)Bufa; if ( v33 - (_BYTE *)Bufa > 15 ) v34 -= 6; if ( v17 >= v118 ) { v104 |= v97 - v34 < v115 * v118; ++v108; v118 = v115 * v118 + v34; goto LABEL_126; } v35 = v121; v104 = v102; v37 = v121[3]; v36 = v121[2]; if ( v36 < v37 ) { LABEL_127: v38 = v36 + 1; v35[2] = v38; goto LABEL_128; } LABEL_134: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v38 = v121[2]; v37 = v121[3]; LABEL_128: v111 = 0; if ( v37 <= v38 ) { v72 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; v73 = 0; if ( v72 ) v73 = v102; v111 = v73; v74 = 0; if ( !v72 ) v74 = v121; v121 = v74; } if ( v122 && v113 != 0 ) { if ( v113[2] >= v113[3] ) { v75 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113) == -1; v76 = 0; if ( !v75 ) v76 = v113; v77 = v122 && v113 != 0; v113 = v76; if ( !v75 ) v77 = 0; lpuexcpte = v77; } else { lpuexcpte = 0; } } else { lpuexcpte = a4 == -1; } if ( lpuexcpte == v111 ) { lpuexcptd = (struct _Unwind_Exception *)v131; v23 = (int *)Block; goto LABEL_65; } if ( v121 ) { v39 = (char *)v121[2]; if ( (unsigned int)v39 >= v121[3] ) { v60 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); v61 = v60 == -1; v62 = -1; if ( v60 != -1 ) v62 = v60; v63 = 0; if ( !v61 ) v63 = v121; lpuexcptb = v62; v121 = v63; } else { lpuexcptb = *v39; } } else { lpuexcptb = -1; } } v23 = (int *)Block; lpuexcptd = (struct _Unwind_Exception *)v131; if ( v108 ) { v41 = 15; if ( Block != v132 ) v41 = v132[0]; v112 = v108; v40 = v131 + 1; if ( v131 + 1 > v41 ) { std::string::_M_mutate((int)&Block, v131, 0, 0, 1u); v23 = (int *)Block; } v108 = 0; *((_BYTE *)lpuexcptd + (_DWORD)v23) = v112; v131 = v40; *((_BYTE *)Block + v40) = 0; LABEL_126: v35 = v121; v36 = v121[2]; v37 = v121[3]; if ( v36 < v37 ) goto LABEL_127; goto LABEL_134; } v102 = 0; v106 = *(_BYTE *)(v123 + 16); LABEL_65: if ( lpuexcptd ) { v30 = 15; if ( v23 != v132 ) v30 = v132[0]; if ( (unsigned int)lpuexcptd + 1 > v30 ) { std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); v23 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v23) = v108; v131 = (size_t)lpuexcptd + 1; *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v123 + 8), *(_DWORD *)(v123 + 12), (int)&Block) ) *a6 = 4; v23 = (int *)Block; if ( v120 || v131 | v108 ) goto LABEL_104; LABEL_68: *a7 = 0; a7[1] = 0; *a6 = 4; } else { if ( !v108 && !v120 ) goto LABEL_68; LABEL_104: if ( v106 ) goto LABEL_68; if ( v104 ) { v31 = 0; v32 = 0x80000000; if ( !v101 ) { v31 = -1; v32 = 0x7FFFFFFF; } a7[1] = v32; *a7 = v31; *a6 = 4; } else { if ( v101 ) v118 = -(__int64)v118; *(_QWORD *)a7 = v118; } } if ( v102 ) *a6 |= 2u; if ( v23 != v132 ) operator delete(v23); return v121; } // 49DE27: variable 'v95' is possibly undefined // 53F728: using guessed type signed __int32 std::numpunct::id; // 5605B0: using guessed type int (*off_5605B0)(); //----- (0049E3B0) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { int v7; // eax char v8; // al unsigned int v9; // eax unsigned int v10; // edx unsigned int v11; // eax _DWORD *v12; // edi unsigned int v13; // eax unsigned int v14; // edx unsigned int v15; // eax int v16; // eax unsigned __int64 v17; // kr08_8 int v18; // esi _DWORD *v19; // ecx unsigned int v20; // eax unsigned int v21; // edx unsigned int v22; // eax int *v23; // eax bool v25; // al bool v26; // zf _DWORD *v27; // eax char *v28; // eax char *v29; // eax unsigned int v30; // edx _BYTE *v31; // eax int v32; // esi _DWORD *v33; // ebx unsigned int v34; // eax unsigned int v35; // edx unsigned int v36; // eax char *v37; // eax size_t v38; // edx size_t v39; // esi char *v40; // eax char *v41; // eax _DWORD *v42; // eax int v43; // eax bool v44; // dl bool v45; // zf _DWORD *v46; // eax bool v47; // zf _DWORD *v48; // eax bool v49; // zf _DWORD *v50; // eax bool v51; // di bool v52; // zf _DWORD *v53; // eax int v54; // eax bool v55; // zf char v56; // dl _DWORD *v57; // eax int v58; // eax bool v59; // zf char v60; // dl _DWORD *v61; // eax char v62; // si int v63; // eax bool v64; // zf _DWORD *v65; // eax char v66; // bl int v67; // eax bool v68; // zf _DWORD *v69; // eax bool v70; // zf char v71; // al _DWORD *v72; // eax bool v73; // zf _DWORD *v74; // eax bool v75; // di char v76; // bl int v77; // eax bool v78; // bl bool v79; // zf _DWORD *v80; // eax int v81; // eax bool v82; // dl bool v83; // zf _DWORD *v84; // eax int v85; // eax char v86; // dl bool v87; // zf _DWORD *v88; // eax int v89; // eax bool v90; // di bool v91; // zf _DWORD *v92; // eax unsigned int v93; // [esp+8h] [ebp-D0h] std::locale::_Impl *v94; // [esp+18h] [ebp-C0h] size_t MaxCount; // [esp+1Ch] [ebp-BCh] int Buf; // [esp+20h] [ebp-B8h] void *Bufa; // [esp+20h] [ebp-B8h] bool v98; // [esp+26h] [ebp-B2h] char v99; // [esp+27h] [ebp-B1h] char v100; // [esp+30h] [ebp-A8h] char v101; // [esp+30h] [ebp-A8h] int v102; // [esp+34h] [ebp-A4h] char v103; // [esp+34h] [ebp-A4h] char v104; // [esp+38h] [ebp-A0h] int v105; // [esp+38h] [ebp-A0h] size_t v106; // [esp+38h] [ebp-A0h] char v107; // [esp+3Ch] [ebp-9Ch] char v108; // [esp+3Ch] [ebp-9Ch] char v109; // [esp+3Ch] [ebp-9Ch] char v110; // [esp+3Ch] [ebp-9Ch] int *v111; // [esp+40h] [ebp-98h] int v112; // [esp+40h] [ebp-98h] _DWORD *v113; // [esp+48h] [ebp-90h] char v114; // [esp+4Ch] [ebp-8Ch] bool v115; // [esp+4Ch] [ebp-8Ch] char v116; // [esp+50h] [ebp-88h] char v117; // [esp+50h] [ebp-88h] unsigned __int64 v118; // [esp+50h] [ebp-88h] _DWORD *v119; // [esp+58h] [ebp-80h] bool v120; // [esp+5Ch] [ebp-7Ch] struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-78h] bool lpuexcpta; // [esp+60h] [ebp-78h] char lpuexcptb; // [esp+60h] [ebp-78h] char lpuexcptc; // [esp+60h] [ebp-78h] struct _Unwind_Exception *lpuexcptd; // [esp+60h] [ebp-78h] char lpuexcpte; // [esp+60h] [ebp-78h] int v127; // [esp+68h] [ebp-70h] void *Block; // [esp+A8h] [ebp-30h] BYREF size_t v129; // [esp+ACh] [ebp-2Ch] int v130[10]; // [esp+B0h] [ebp-28h] BYREF v119 = a1; v113 = a3; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v111 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); v127 = *v111; if ( !*v111 ) { v42 = operator new(0x68u); v42[1] = 0; *v42 = &off_5605B0; v42[2] = 0; v42[3] = 0; *((_BYTE *)v42 + 16) = 0; v42[5] = 0; v42[6] = 0; v42[7] = 0; v42[8] = 0; *((_WORD *)v42 + 18) = 0; *((_BYTE *)v42 + 100) = 0; v94 = (std::locale::_Impl *)v42; std::__numpunct_cache::_M_cache((int)v42, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); v127 = *v111; } v112 = 8; v102 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v102 != 64 ) { v7 = 10; if ( v102 == 8 ) v7 = 16; v112 = v7; } lpuexcpta = a2 == -1; if ( lpuexcpta && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v81 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v82 = lpuexcpta && a1 != 0; v83 = v81 == -1; if ( v81 != -1 ) v82 = 0; v84 = 0; if ( !v83 ) v84 = a1; v104 = v82; v119 = v84; } else { v104 = 0; } } else { v104 = a2 == -1; } v120 = a4 == -1; if ( v120 && a3 != 0 ) { if ( a3[2] >= a3[3] ) { v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v78 = v120 && a3 != 0; v79 = v77 == -1; if ( v77 != -1 ) v78 = 0; v80 = 0; if ( !v79 ) v80 = a3; v100 = v78; v113 = v80; } else { v100 = 0; } } else { v100 = a4 == -1; } if ( v104 != v100 ) { if ( v119 && a2 == -1 ) { v41 = (char *)v119[2]; if ( (unsigned int)v41 >= v119[3] ) { v85 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); v86 = -1; v87 = v85 == -1; if ( v85 != -1 ) v86 = v85; v88 = 0; if ( !v87 ) v88 = v119; lpuexcptb = v86; v119 = v88; } else { lpuexcptb = *v41; } } else { lpuexcptb = a2; } v8 = *(_BYTE *)(v127 + 16); v98 = *(_BYTE *)(v127 + 74) == (unsigned __int8)lpuexcptb; if ( *(_BYTE *)(v127 + 74) == lpuexcptb || *(_BYTE *)(v127 + 75) == lpuexcptb ) { if ( (!v8 || *(_BYTE *)(v127 + 37) != lpuexcptb) && *(_BYTE *)(v127 + 36) != lpuexcptb ) { v9 = v119[2]; v10 = v119[3]; if ( v9 >= v10 ) { (*(void (__fastcall **)(_DWORD *))(*v119 + 40))(v119); v11 = v119[2]; v10 = v119[3]; } else { v11 = v9 + 1; v119[2] = v11; } v114 = 0; if ( v11 >= v10 ) { v52 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119) == -1; v53 = 0; if ( !v52 ) v53 = v119; v114 = v52; v119 = v53; } if ( v120 && v113 != 0 ) { if ( v113[2] >= v113[3] ) { v89 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113); v90 = v120 && v113 != 0; v91 = v89 == -1; if ( v89 != -1 ) v90 = 0; v116 = v90; v92 = 0; if ( !v91 ) v92 = v113; v113 = v92; } else { v116 = 0; } } else { v116 = a4 == -1; } if ( v114 == v116 ) { v103 = 1; v105 = 0; v115 = 0; goto LABEL_43; } lpuexcptb = -1; if ( v119 ) { v40 = (char *)v119[2]; if ( (unsigned int)v40 >= v119[3] ) { v62 = -1; v63 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); v64 = v63 == -1; if ( v63 != -1 ) v62 = v63; lpuexcptb = v62; v65 = 0; if ( !v64 ) v65 = v119; v119 = v65; } else { lpuexcptb = *v40; } } v8 = *(_BYTE *)(v127 + 16); } } else { v98 = 0; } v105 = 0; v115 = 0; while ( 1 ) { if ( v8 && *(_BYTE *)(v127 + 37) == lpuexcptb || *(_BYTE *)(v127 + 36) == lpuexcptb ) { LABEL_112: v103 = 0; goto LABEL_43; } if ( *(_BYTE *)(v127 + 78) != lpuexcptb ) break; v25 = v112 == 10 || !v115; if ( !v25 ) goto LABEL_33; v115 = v102 == 0 || v112 == 8; if ( !v115 ) { ++v105; v115 = v25; goto LABEL_37; } v105 = 0; v12 = v119; v112 = 8; v13 = v119[2]; v14 = v119[3]; if ( v13 >= v14 ) { LABEL_75: (*(void (__fastcall **)(_DWORD *))(*v119 + 40))(v119); v107 = 0; if ( v119[2] < v119[3] ) goto LABEL_39; goto LABEL_76; } LABEL_38: v15 = v13 + 1; v107 = 0; v12[2] = v15; if ( v15 < v14 ) goto LABEL_39; LABEL_76: v26 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119) == -1; v27 = 0; if ( !v26 ) v27 = v119; v107 = v26; v119 = v27; LABEL_39: if ( v120 && v113 != 0 ) { if ( v113[2] >= v113[3] ) { v43 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113); v44 = v120 && v113 != 0; v45 = v43 == -1; if ( v43 != -1 ) v44 = 0; v46 = 0; if ( !v45 ) v46 = v113; v117 = v44; v113 = v46; } else { v117 = 0; } } else { v117 = a4 == -1; } if ( v107 == v117 ) { v103 = 1; goto LABEL_43; } lpuexcptb = -1; if ( v119 ) { v28 = (char *)v119[2]; if ( (unsigned int)v28 >= v119[3] ) { v66 = -1; v67 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); v68 = v67 == -1; if ( v67 != -1 ) v66 = v67; v69 = 0; if ( !v68 ) v69 = v119; lpuexcptb = v66; v119 = v69; } else { lpuexcptb = *v28; } } if ( !v115 ) { v103 = 0; goto LABEL_43; } v8 = *(_BYTE *)(v127 + 16); } if ( !v115 ) goto LABEL_112; LABEL_33: if ( *(_BYTE *)(v127 + 76) != lpuexcptb && *(_BYTE *)(v127 + 77) != lpuexcptb ) { v103 = 0; v115 = 1; goto LABEL_43; } if ( v102 != 0 && v112 != 16 ) { v103 = 0; MaxCount = v112; Buf = v112; v115 = 1; goto LABEL_46; } v105 = 0; v115 = 0; v112 = 16; LABEL_37: v12 = v119; v13 = v119[2]; v14 = v119[3]; if ( v13 >= v14 ) goto LABEL_75; goto LABEL_38; } v98 = 0; v103 = 1; lpuexcptb = 0; v105 = 0; v115 = 0; LABEL_43: v16 = 22; if ( v112 != 16 ) v16 = v112; MaxCount = v16; Buf = v16; LABEL_46: v129 = 0; Block = v130; LOBYTE(v130[0]) = 0; if ( *(_BYTE *)(v127 + 16) ) std::string::reserve(&Block, 0x20u); v17 = 0xFFFFFFFFFFFFFFFFLL / v112; v99 = *(_BYTE *)(v127 + 100); if ( !v99 ) { if ( v103 ) { v76 = v103; v101 = 0; v103 = 0; lpuexcptd = (struct _Unwind_Exception *)v129; v23 = (int *)Block; v99 = v76; v118 = 0LL; goto LABEL_63; } v101 = 0; v118 = 0LL; while ( Buf > 10 ) { if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) goto LABEL_54; v18 = lpuexcptb - 87; if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) { if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) goto LABEL_111; v18 = lpuexcptb - 55; } LABEL_55: if ( v17 >= v118 ) { v101 |= __PAIR64__(~(v18 >> 31), ~v18) < v112 * v118; v19 = v119; ++v105; v20 = v119[2]; v21 = v119[3]; v118 = v112 * v118 + v18; if ( v20 < v21 ) { LABEL_57: v22 = v20 + 1; v19[2] = v22; goto LABEL_58; } } else { v19 = v119; v101 = 1; v20 = v119[2]; v21 = v119[3]; if ( v20 < v21 ) goto LABEL_57; } (*(void (__fastcall **)(_DWORD *))(*v119 + 40))(v119); v22 = v119[2]; v21 = v119[3]; LABEL_58: v108 = 0; if ( v22 >= v21 ) { v47 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119) == -1; v48 = 0; if ( !v47 ) v48 = v119; v108 = v47; v119 = v48; } if ( v120 && v113 != 0 ) { if ( v113[2] >= v113[3] ) { v49 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113) == -1; v50 = 0; if ( !v49 ) v50 = v113; v51 = v120 && v113 != 0; v113 = v50; if ( !v49 ) v51 = 0; lpuexcptc = v51; } else { lpuexcptc = 0; } } else { lpuexcptc = a4 == -1; } if ( lpuexcptc == v108 ) { v99 = 1; lpuexcptd = (struct _Unwind_Exception *)v129; v23 = (int *)Block; goto LABEL_63; } if ( v119 ) { v29 = (char *)v119[2]; if ( (unsigned int)v29 >= v119[3] ) { v54 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); v55 = v54 == -1; v56 = -1; if ( v54 != -1 ) v56 = v54; v57 = 0; if ( !v55 ) v57 = v119; lpuexcptb = v56; v119 = v57; } else { lpuexcptb = *v29; } } else { lpuexcptb = -1; } } if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) goto LABEL_111; LABEL_54: v18 = lpuexcptb - 48; goto LABEL_55; } if ( v103 ) { v118 = 0LL; lpuexcptd = (struct _Unwind_Exception *)v129; v23 = (int *)Block; v99 = v103; v101 = 0; v103 = 0; goto LABEL_63; } v101 = 0; v118 = 0LL; Bufa = (void *)(v127 + 78); while ( !*(_BYTE *)(v127 + 16) || *(_BYTE *)(v127 + 37) != lpuexcptb ) { if ( lpuexcptb == *(_BYTE *)(v127 + 36) || (v31 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) { LABEL_111: v99 = 0; lpuexcptd = (struct _Unwind_Exception *)v129; v23 = (int *)Block; goto LABEL_63; } v32 = v31 - (_BYTE *)Bufa; if ( v31 - (_BYTE *)Bufa > 15 ) v32 -= 6; if ( v17 >= v118 ) { v101 |= __PAIR64__(~(v32 >> 31), ~v32) < v112 * v118; v118 = v112 * v118 + v32; ++v105; goto LABEL_123; } v33 = v119; v101 = v99; v35 = v119[3]; v34 = v119[2]; if ( v34 < v35 ) { LABEL_124: v36 = v34 + 1; v33[2] = v36; goto LABEL_125; } LABEL_131: (*(void (__fastcall **)(_DWORD *))(*v119 + 40))(v119); v36 = v119[2]; v35 = v119[3]; LABEL_125: v109 = 0; if ( v35 <= v36 ) { v70 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119) == -1; v71 = 0; if ( v70 ) v71 = v99; v109 = v71; v72 = 0; if ( !v70 ) v72 = v119; v119 = v72; } if ( v120 && v113 != 0 ) { if ( v113[2] >= v113[3] ) { v73 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113) == -1; v74 = 0; if ( !v73 ) v74 = v113; v75 = v120 && v113 != 0; v113 = v74; if ( !v73 ) v75 = 0; lpuexcpte = v75; } else { lpuexcpte = 0; } } else { lpuexcpte = a4 == -1; } if ( lpuexcpte == v109 ) { lpuexcptd = (struct _Unwind_Exception *)v129; v23 = (int *)Block; goto LABEL_63; } if ( v119 ) { v37 = (char *)v119[2]; if ( (unsigned int)v37 >= v119[3] ) { v58 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); v59 = v58 == -1; v60 = -1; if ( v58 != -1 ) v60 = v58; v61 = 0; if ( !v59 ) v61 = v119; lpuexcptb = v60; v119 = v61; } else { lpuexcptb = *v37; } } else { lpuexcptb = -1; } } v23 = (int *)Block; lpuexcptd = (struct _Unwind_Exception *)v129; if ( v105 ) { v38 = 15; if ( Block != v130 ) v38 = v130[0]; v110 = v105; v106 = v129 + 1; if ( v129 + 1 > v38 ) { std::string::_M_mutate((int)&Block, v129, 0, 0, 1u); v23 = (int *)Block; } v39 = v106; v105 = 0; *((_BYTE *)lpuexcptd + (_DWORD)v23) = v110; v129 = v39; *((_BYTE *)Block + v39) = 0; LABEL_123: v33 = v119; v34 = v119[2]; v35 = v119[3]; if ( v34 < v35 ) goto LABEL_124; goto LABEL_131; } v99 = 0; v103 = *(_BYTE *)(v127 + 16); LABEL_63: if ( lpuexcptd ) { v30 = 15; if ( v23 != v130 ) v30 = v130[0]; if ( (unsigned int)lpuexcptd + 1 > v30 ) { std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); v23 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v23) = v105; v129 = (size_t)lpuexcptd + 1; *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v127 + 8), *(_DWORD *)(v127 + 12), (int)&Block) ) *a6 = 4; v23 = (int *)Block; if ( v115 || v129 | v105 ) goto LABEL_103; LABEL_66: *a7 = 0; a7[1] = 0; *a6 = 4; } else { if ( !v105 && !v115 ) goto LABEL_66; LABEL_103: if ( v103 ) goto LABEL_66; if ( v101 ) { *a7 = -1; a7[1] = -1; *a6 = 4; } else { if ( v98 ) v118 = -(__int64)v118; *(_QWORD *)a7 = v118; } } if ( v99 ) *a6 |= 2u; if ( v23 != v130 ) operator delete(v23); return v119; } // 49F0A5: variable 'v93' is possibly undefined // 53F728: using guessed type signed __int32 std::numpunct::id; // 5605B0: using guessed type int (*off_5605B0)(); //----- (0049F650) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_int( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { int v6; // eax _BYTE *v7; // eax char v8; // al int v9; // eax unsigned int v10; // edx int v11; // eax int v12; // eax _DWORD *v13; // ecx unsigned int v14; // eax char v15; // al const char *v16; // ecx int v17; // eax _DWORD *v19; // ecx unsigned int v20; // eax bool v21; // al _BYTE *v22; // eax char v23; // al char i; // al _BYTE *v25; // eax int v26; // eax _DWORD *v27; // ecx unsigned int v28; // eax char v29; // al char v30; // al int v31; // edx int v32; // eax char *v33; // eax char *v34; // eax bool v35; // al int v36; // eax unsigned int v37; // [esp+4h] [ebp-94h] bool v38; // [esp+1Fh] [ebp-79h] size_t MaxCount; // [esp+20h] [ebp-78h] int Buf; // [esp+24h] [ebp-74h] void *Bufa; // [esp+24h] [ebp-74h] unsigned int v42; // [esp+28h] [ebp-70h] char v43; // [esp+28h] [ebp-70h] int v44; // [esp+2Ch] [ebp-6Ch] char v45; // [esp+2Ch] [ebp-6Ch] int v46; // [esp+30h] [ebp-68h] char v47; // [esp+34h] [ebp-64h] char v48; // [esp+35h] [ebp-63h] char v49; // [esp+35h] [ebp-63h] bool v50; // [esp+36h] [ebp-62h] char v51; // [esp+36h] [ebp-62h] bool v52; // [esp+37h] [ebp-61h] unsigned int v53; // [esp+38h] [ebp-60h] struct _Unwind_Exception *v54; // [esp+3Ch] [ebp-5Ch] char lpuexcpt; // [esp+40h] [ebp-58h] char lpuexcpta; // [esp+40h] [ebp-58h] unsigned __int64 lpuexcptb; // [esp+40h] [ebp-58h] char lpuexcptc; // [esp+40h] [ebp-58h] unsigned int v59; // [esp+48h] [ebp-50h] char v60; // [esp+48h] [ebp-50h] int v61; // [esp+8Bh] [ebp-Dh] BYREF const char *v62[2]; // [esp+8Ch] [ebp-Ch] BYREF v54 = std::__use_cache>::operator()((int *)(a4 + 108)); v6 = *(_DWORD *)(a4 + 12) & 0x4A; v44 = v6; if ( v6 == 64 ) { v53 = 8; LABEL_4: v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v50 ) { lpuexcpt = 0; v46 = 0; MaxCount = v53; Buf = v53; v52 = 0; v38 = 0; goto LABEL_17; } goto LABEL_5; } if ( v6 != 8 ) { v53 = 10; goto LABEL_4; } v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v50 ) { MaxCount = 22; lpuexcpt = 0; v46 = 0; v52 = 0; v38 = 0; v53 = 16; Buf = 22; goto LABEL_17; } v53 = 16; LABEL_5: LOBYTE(v7) = BYTE4(a1); if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) goto LABEL_7; v7 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v7 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v7) = *v7; LABEL_7: lpuexcpt = (char)v7; goto LABEL_8; } v7 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v7 != (_BYTE *)-1 ) goto LABEL_7; LODWORD(a1) = 0; lpuexcpt = -1; LABEL_8: v8 = *((_BYTE *)v54 + 16); v38 = *((_BYTE *)v54 + 74) == (unsigned __int8)lpuexcpt; if ( *((_BYTE *)v54 + 74) != lpuexcpt && *((_BYTE *)v54 + 75) != lpuexcpt || v8 && *((_BYTE *)v54 + 37) == lpuexcpt || *((_BYTE *)v54 + 36) == lpuexcpt ) { goto LABEL_45; } std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v46 = 0; v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); v52 = 0; if ( !v50 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v8 = *((_BYTE *)v54 + 16); LABEL_45: v46 = 0; v52 = 0; while ( 1 ) { if ( v8 && *((_BYTE *)v54 + 37) == lpuexcpt || *((_BYTE *)v54 + 36) == lpuexcpt ) { LABEL_94: v50 = 0; goto LABEL_14; } if ( *((_BYTE *)v54 + 78) != lpuexcpt ) break; v21 = v53 == 10 || !v52; if ( !v21 ) goto LABEL_51; v52 = v44 == 0 || v53 == 8; if ( !v52 ) { ++v46; v52 = v21; goto LABEL_55; } v19 = (_DWORD *)a1; v46 = 0; v53 = 8; v20 = *(_DWORD *)(a1 + 8); if ( v20 < *(_DWORD *)(a1 + 12) ) { LABEL_56: HIDWORD(a1) = -1; v19[2] = v20 + 1; goto LABEL_57; } LABEL_64: (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); v19 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v51 = 1; goto LABEL_58; } LABEL_57: v51 = 0; if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) { LODWORD(a1) = 0; v51 = 1; } LABEL_58: v60 = a3 == -1; v43 = v60 & (a2 != 0); if ( v43 ) { v60 = 0; if ( a2[2] >= a2[3] && (*(int (**)(void))(*a2 + 36))() == -1 ) { a2 = 0; v60 = v43; } } if ( v51 == v60 ) { v50 = 1; goto LABEL_14; } LOBYTE(v22) = BYTE4(a1); if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) goto LABEL_68; v22 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v22 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v22) = *v22; LABEL_68: lpuexcpt = (char)v22; goto LABEL_69; } v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v22 != (_BYTE *)-1 ) goto LABEL_68; LODWORD(a1) = 0; lpuexcpt = -1; LABEL_69: if ( !v52 ) goto LABEL_94; v8 = *((_BYTE *)v54 + 16); } if ( !v52 ) goto LABEL_94; LABEL_51: if ( *((_BYTE *)v54 + 76) != lpuexcpt && *((_BYTE *)v54 + 77) != lpuexcpt ) { v50 = 0; v52 = 1; goto LABEL_14; } if ( v44 != 0 && v53 != 16 ) { v50 = 0; v52 = 1; MaxCount = v53; Buf = v53; goto LABEL_17; } v46 = 0; v52 = 0; v53 = 16; LABEL_55: v19 = (_DWORD *)a1; v20 = *(_DWORD *)(a1 + 8); if ( v20 < *(_DWORD *)(a1 + 12) ) goto LABEL_56; goto LABEL_64; } LABEL_14: v9 = 22; if ( v53 != 16 ) v9 = v53; MaxCount = v9; Buf = v9; LABEL_17: v62[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v54 + 16) ) std::string::reserve((int *)v62, (std::string *)0x20, v37); v10 = 0xFFFFFFFF % v53; v42 = 0xFFFFFFFF / v53; v48 = *((_BYTE *)v54 + 100); if ( v48 ) { if ( v50 ) { v59 = 0; v45 = 0; v48 = v50; v50 = 0; goto LABEL_33; } v45 = 0; v59 = 0; Bufa = (char *)v54 + 78; LABEL_100: for ( i = *((_BYTE *)v54 + 16); i && *((_BYTE *)v54 + 37) == lpuexcpt; i = *((_BYTE *)v54 + 16) ) { if ( !v46 ) { v48 = 0; v50 = i; goto LABEL_33; } std::string::push_back((int *)v62, (std::string *)(char)v46, v37); v27 = (_DWORD *)a1; v46 = 0; v28 = *(_DWORD *)(a1 + 8); if ( v28 < *(_DWORD *)(a1 + 12) ) goto LABEL_109; LABEL_118: (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); v27 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_110; lpuexcptc = v48; LABEL_111: v29 = a3 == -1; v47 = v29 & (a2 != 0); if ( v47 ) { v29 = 0; if ( a2[2] >= a2[3] ) { v31 = (*(int (**)(void))(*a2 + 36))(); v29 = 0; if ( v31 == -1 ) { a2 = 0; v29 = v47; } } } if ( v29 == lpuexcptc ) goto LABEL_33; v30 = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v34 = *(char **)(a1 + 8); if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) { v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v36; if ( v36 == -1 ) { LODWORD(a1) = 0; lpuexcpt = -1; } goto LABEL_100; } v30 = *v34; } lpuexcpt = v30; } if ( lpuexcpt != *((_BYTE *)v54 + 36) ) { v25 = memchr(Bufa, lpuexcpt, MaxCount); if ( v25 ) { v26 = v25 - (_BYTE *)Bufa; if ( v26 > 15 ) v26 -= 6; if ( v42 < v59 ) { v45 = v48; } else { v45 |= ~v26 < v53 * v59; ++v46; v59 = v53 * v59 + v26; } v27 = (_DWORD *)a1; v28 = *(_DWORD *)(a1 + 8); if ( v28 >= *(_DWORD *)(a1 + 12) ) goto LABEL_118; LABEL_109: HIDWORD(a1) = -1; v27[2] = v28 + 1; LABEL_110: lpuexcptc = 0; if ( v27[2] >= v27[3] ) { lpuexcptc = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) { LODWORD(a1) = 0; lpuexcptc = v48; } } goto LABEL_111; } } LABEL_97: v48 = 0; } else { v45 = 0; if ( !v50 ) { v59 = 0; LABEL_22: v11 = lpuexcpt; if ( Buf > 10 ) { v10 = (unsigned __int8)lpuexcpt; if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) goto LABEL_25; while ( (unsigned __int8)(v10 - 97) <= 5u ) { v12 = v11 - 87; if ( v42 < v59 ) goto LABEL_27; LABEL_74: v10 = v53 * v59; v45 |= ~v12 < v53 * v59; v13 = (_DWORD *)a1; v59 = v53 * v59 + v12; ++v46; v14 = *(_DWORD *)(a1 + 8); if ( v14 < *(_DWORD *)(a1 + 12) ) goto LABEL_28; LABEL_75: (*(void (__fastcall **)(_DWORD *, unsigned int))(*v13 + 40))(v13, v10); v13 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_29; lpuexcpta = 1; LABEL_30: v15 = a3 == -1; LOBYTE(v10) = v15 & (a2 != 0); v49 = v10; if ( (_BYTE)v10 ) { v15 = 0; if ( a2[2] >= a2[3] ) { v10 = (*(int (**)(void))(*a2 + 36))(); v15 = 0; if ( v10 == -1 ) { a2 = 0; v15 = v49; } } } if ( lpuexcpta == v15 ) { v48 = 1; goto LABEL_33; } v23 = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_81; v33 = *(char **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) { v23 = *v33; LABEL_81: lpuexcpt = v23; goto LABEL_22; } v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v11; if ( v11 != -1 ) goto LABEL_22; LODWORD(a1) = 0; if ( Buf <= 10 ) goto LABEL_97; v10 = -1; } v10 -= 65; if ( (unsigned __int8)v10 <= 5u ) { v12 = v11 - 55; goto LABEL_26; } } else if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) { LABEL_25: v12 = lpuexcpt - 48; LABEL_26: if ( v42 >= v59 ) goto LABEL_74; LABEL_27: v13 = (_DWORD *)a1; v45 = 1; v14 = *(_DWORD *)(a1 + 8); if ( v14 >= *(_DWORD *)(a1 + 12) ) goto LABEL_75; LABEL_28: HIDWORD(a1) = -1; v13[2] = v14 + 1; LABEL_29: lpuexcpta = 0; if ( v13[2] >= v13[3] ) { lpuexcpta = 0; if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v13 + 36))(v13, v10) == -1 ) { LODWORD(a1) = 0; lpuexcpta = 1; } } goto LABEL_30; } goto LABEL_97; } v35 = v50; v59 = 0; v50 = 0; v48 = v35; } LABEL_33: v16 = v62[0]; if ( *((_DWORD *)v62[0] - 3) ) { std::string::push_back((int *)v62, (std::string *)(char)v46, v37); if ( !(unsigned __int8)std::__verify_grouping(*((char **)v54 + 2), *((_DWORD *)v54 + 3), v62) ) *a5 = 4; v16 = v62[0]; if ( !v46 && !v52 && !*((_DWORD *)v62[0] - 3) ) goto LABEL_36; } else if ( !v52 && !v46 ) { goto LABEL_36; } if ( v50 ) { LABEL_36: *a6 = 0; *a5 = 4; goto LABEL_37; } if ( v45 ) { *a6 = -1; *a5 = 4; } else { v32 = -v59; if ( !v38 ) v32 = v59; *a6 = v32; } LABEL_37: if ( v48 ) *a5 |= 2u; lpuexcptb = a1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) return lpuexcptb; LABEL_125: std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v61); return lpuexcptb; } v17 = *((_DWORD *)v16 - 1); *((_DWORD *)v16 - 1) = v17 - 1; if ( v17 <= 0 ) goto LABEL_125; return lpuexcptb; } // 49FEA9: variable 'v37' is possibly undefined // 49FB57: variable 'v10' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004A01C0) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_int( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { int v6; // eax char v7; // dl char v8; // al int v9; // eax unsigned int v10; // edx int v11; // eax int v12; // eax _DWORD *v13; // ecx unsigned int v14; // eax char v15; // al const char *v16; // ecx int v17; // eax _DWORD *v19; // ecx unsigned int v20; // eax bool v21; // al _BYTE *v22; // eax char v23; // al char i; // al _BYTE *v25; // eax int v26; // eax _DWORD *v27; // ecx unsigned int v28; // eax char v29; // al char v30; // al int v31; // edx int v32; // eax char *v33; // eax char *v34; // eax bool v35; // al int v36; // eax unsigned int v37; // [esp+4h] [ebp-94h] bool v38; // [esp+18h] [ebp-80h] size_t MaxCount; // [esp+1Ch] [ebp-7Ch] unsigned int v40; // [esp+20h] [ebp-78h] int Buf; // [esp+24h] [ebp-74h] void *Bufa; // [esp+24h] [ebp-74h] unsigned int v43; // [esp+28h] [ebp-70h] char v44; // [esp+28h] [ebp-70h] int v45; // [esp+2Ch] [ebp-6Ch] char v46; // [esp+2Ch] [ebp-6Ch] int v47; // [esp+30h] [ebp-68h] char v48; // [esp+34h] [ebp-64h] char v49; // [esp+35h] [ebp-63h] char v50; // [esp+35h] [ebp-63h] bool v51; // [esp+36h] [ebp-62h] char v52; // [esp+36h] [ebp-62h] bool v53; // [esp+37h] [ebp-61h] unsigned int v54; // [esp+38h] [ebp-60h] struct _Unwind_Exception *v55; // [esp+3Ch] [ebp-5Ch] char lpuexcpt; // [esp+40h] [ebp-58h] char lpuexcpta; // [esp+40h] [ebp-58h] unsigned __int64 lpuexcptb; // [esp+40h] [ebp-58h] char lpuexcptc; // [esp+40h] [ebp-58h] unsigned int v60; // [esp+48h] [ebp-50h] char v61; // [esp+48h] [ebp-50h] int v62; // [esp+8Bh] [ebp-Dh] BYREF const char *v63[2]; // [esp+8Ch] [ebp-Ch] BYREF v55 = std::__use_cache>::operator()((int *)(a4 + 108)); v6 = *(_DWORD *)(a4 + 12) & 0x4A; v45 = v6; if ( v6 == 64 ) { v54 = 8; LABEL_4: v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v51 ) { lpuexcpt = 0; v47 = 0; MaxCount = v54; Buf = v54; v53 = 0; v38 = 0; goto LABEL_14; } goto LABEL_5; } if ( v6 != 8 ) { v54 = 10; goto LABEL_4; } v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v51 ) { MaxCount = 22; lpuexcpt = 0; v47 = 0; v53 = 0; v38 = 0; v54 = 16; Buf = 22; goto LABEL_14; } v54 = 16; LABEL_5: v7 = std::istreambuf_iterator::_M_get((int)&a1); lpuexcpt = v7; v38 = *((_BYTE *)v55 + 74) == (unsigned __int8)v7; if ( *((_BYTE *)v55 + 74) == v7 ) { v8 = *((_BYTE *)v55 + 16); } else { v8 = *((_BYTE *)v55 + 16); if ( *((_BYTE *)v55 + 75) != v7 ) { LABEL_42: v47 = 0; v53 = 0; while ( 1 ) { if ( v8 && *((_BYTE *)v55 + 37) == lpuexcpt || *((_BYTE *)v55 + 36) == lpuexcpt ) { LABEL_91: v51 = 0; goto LABEL_11; } if ( *((_BYTE *)v55 + 78) != lpuexcpt ) break; v21 = v54 == 10 || !v53; if ( !v21 ) goto LABEL_48; v53 = v54 == 8 || v45 == 0; if ( !v53 ) { ++v47; v53 = v21; goto LABEL_52; } v19 = (_DWORD *)a1; v47 = 0; v54 = 8; v20 = *(_DWORD *)(a1 + 8); if ( v20 < *(_DWORD *)(a1 + 12) ) { LABEL_53: HIDWORD(a1) = -1; v19[2] = v20 + 1; goto LABEL_54; } LABEL_61: (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); v19 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v52 = 1; goto LABEL_55; } LABEL_54: v52 = 0; if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) { LODWORD(a1) = 0; v52 = 1; } LABEL_55: v61 = a3 == -1; v44 = v61 & (a2 != 0); if ( v44 ) { v61 = 0; if ( a2[2] >= a2[3] && (*(int (**)(void))(*a2 + 36))() == -1 ) { a2 = 0; v61 = v44; } } if ( v61 == v52 ) { v51 = 1; goto LABEL_11; } LOBYTE(v22) = BYTE4(a1); if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) goto LABEL_65; v22 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v22 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v22) = *v22; LABEL_65: lpuexcpt = (char)v22; goto LABEL_66; } v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v22 != (_BYTE *)-1 ) goto LABEL_65; LODWORD(a1) = 0; lpuexcpt = -1; LABEL_66: if ( !v53 ) goto LABEL_91; v8 = *((_BYTE *)v55 + 16); } if ( !v53 ) goto LABEL_91; LABEL_48: if ( *((_BYTE *)v55 + 76) != lpuexcpt && *((_BYTE *)v55 + 77) != lpuexcpt ) { v51 = 0; v53 = 1; goto LABEL_11; } if ( v45 != 0 && v54 != 16 ) { v51 = 0; v53 = 1; MaxCount = v54; Buf = v54; goto LABEL_14; } v47 = 0; v53 = 0; v54 = 16; LABEL_52: v19 = (_DWORD *)a1; v20 = *(_DWORD *)(a1 + 8); if ( v20 < *(_DWORD *)(a1 + 12) ) goto LABEL_53; goto LABEL_61; } } if ( v8 && *((_BYTE *)v55 + 37) == v7 || *((_BYTE *)v55 + 36) == v7 ) goto LABEL_42; std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v47 = 0; v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); v53 = 0; if ( !v51 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v8 = *((_BYTE *)v55 + 16); goto LABEL_42; } LABEL_11: v9 = 22; if ( v54 != 16 ) v9 = v54; MaxCount = v9; Buf = v9; LABEL_14: v63[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v55 + 16) ) std::string::reserve((int *)v63, (std::string *)0x20, v37); v40 = v38 + 0x7FFFFFFF; v10 = v40 % v54; v43 = v40 / v54; v49 = *((_BYTE *)v55 + 100); if ( v49 ) { if ( v51 ) { v60 = 0; v46 = 0; v49 = v51; v51 = 0; goto LABEL_30; } v46 = 0; v60 = 0; Bufa = (char *)v55 + 78; LABEL_97: for ( i = *((_BYTE *)v55 + 16); i && *((_BYTE *)v55 + 37) == lpuexcpt; i = *((_BYTE *)v55 + 16) ) { if ( !v47 ) { v49 = 0; v51 = i; goto LABEL_30; } std::string::push_back((int *)v63, (std::string *)(char)v47, v37); v27 = (_DWORD *)a1; v47 = 0; v28 = *(_DWORD *)(a1 + 8); if ( v28 < *(_DWORD *)(a1 + 12) ) goto LABEL_106; LABEL_116: (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); v27 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_107; lpuexcptc = v49; LABEL_108: v29 = a3 == -1; v48 = v29 & (a2 != 0); if ( v48 ) { v29 = 0; if ( a2[2] >= a2[3] ) { v31 = (*(int (**)(void))(*a2 + 36))(); v29 = 0; if ( v31 == -1 ) { a2 = 0; v29 = v48; } } } if ( v29 == lpuexcptc ) goto LABEL_30; v30 = BYTE4(a1); if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) { v34 = *(char **)(a1 + 8); if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) { v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v36; if ( v36 == -1 ) { LODWORD(a1) = 0; lpuexcpt = -1; } goto LABEL_97; } v30 = *v34; } lpuexcpt = v30; } if ( lpuexcpt != *((_BYTE *)v55 + 36) ) { v25 = memchr(Bufa, lpuexcpt, MaxCount); if ( v25 ) { v26 = v25 - (_BYTE *)Bufa; if ( v26 > 15 ) v26 -= 6; if ( v43 < v60 ) { v46 = v49; } else { v46 |= v40 - v26 < v60 * v54; ++v47; v60 = v60 * v54 + v26; } v27 = (_DWORD *)a1; v28 = *(_DWORD *)(a1 + 8); if ( v28 >= *(_DWORD *)(a1 + 12) ) goto LABEL_116; LABEL_106: HIDWORD(a1) = -1; v27[2] = v28 + 1; LABEL_107: lpuexcptc = 0; if ( v27[2] >= v27[3] ) { lpuexcptc = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) { LODWORD(a1) = 0; lpuexcptc = v49; } } goto LABEL_108; } } LABEL_94: v49 = 0; } else { v46 = 0; if ( !v51 ) { v60 = 0; LABEL_19: v11 = lpuexcpt; if ( Buf > 10 ) { v10 = (unsigned __int8)lpuexcpt; if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) goto LABEL_22; while ( (unsigned __int8)(v10 - 97) <= 5u ) { v12 = v11 - 87; if ( v43 < v60 ) goto LABEL_24; LABEL_71: v10 = v54 * v60; v46 |= v40 - v12 < v54 * v60; v13 = (_DWORD *)a1; v60 = v54 * v60 + v12; ++v47; v14 = *(_DWORD *)(a1 + 8); if ( v14 < *(_DWORD *)(a1 + 12) ) goto LABEL_25; LABEL_72: (*(void (__fastcall **)(_DWORD *, unsigned int))(*v13 + 40))(v13, v10); v13 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_26; lpuexcpta = 1; LABEL_27: v15 = a3 == -1; LOBYTE(v10) = v15 & (a2 != 0); v50 = v10; if ( (_BYTE)v10 ) { v10 = a2[3]; v15 = 0; if ( a2[2] >= v10 ) { v10 = (*(int (**)(void))(*a2 + 36))(); v15 = 0; if ( v10 == -1 ) { a2 = 0; v15 = v50; } } } if ( lpuexcpta == v15 ) { v49 = 1; goto LABEL_30; } v23 = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_78; v33 = *(char **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) { v23 = *v33; LABEL_78: lpuexcpt = v23; goto LABEL_19; } v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v11; if ( v11 != -1 ) goto LABEL_19; LODWORD(a1) = 0; if ( Buf <= 10 ) goto LABEL_94; v10 = -1; } v10 -= 65; if ( (unsigned __int8)v10 <= 5u ) { v12 = v11 - 55; goto LABEL_23; } } else if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) { LABEL_22: v12 = lpuexcpt - 48; LABEL_23: if ( v43 >= v60 ) goto LABEL_71; LABEL_24: v13 = (_DWORD *)a1; v46 = 1; v14 = *(_DWORD *)(a1 + 8); if ( v14 >= *(_DWORD *)(a1 + 12) ) goto LABEL_72; LABEL_25: HIDWORD(a1) = -1; v13[2] = v14 + 1; LABEL_26: lpuexcpta = 0; if ( v13[2] >= v13[3] ) { lpuexcpta = 0; if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v13 + 36))(v13, v10) == -1 ) { LODWORD(a1) = 0; lpuexcpta = 1; } } goto LABEL_27; } goto LABEL_94; } v35 = v51; v60 = 0; v51 = 0; v49 = v35; } LABEL_30: v16 = v63[0]; if ( *((_DWORD *)v63[0] - 3) ) { std::string::push_back((int *)v63, (std::string *)(char)v47, v37); if ( !(unsigned __int8)std::__verify_grouping(*((char **)v55 + 2), *((_DWORD *)v55 + 3), v63) ) *a5 = 4; v16 = v63[0]; if ( !v47 && !v53 && !*((_DWORD *)v63[0] - 3) ) goto LABEL_33; } else if ( !v53 && !v47 ) { goto LABEL_33; } if ( v51 ) { LABEL_33: *a6 = 0; *a5 = 4; goto LABEL_34; } if ( v46 ) { *a6 = v38 + 0x7FFFFFFF; *a5 = 4; } else { v32 = -v60; if ( !v38 ) v32 = v60; *a6 = v32; } LABEL_34: if ( v49 ) *a5 |= 2u; lpuexcptb = a1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) return lpuexcptb; LABEL_123: std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v62); return lpuexcptb; } v17 = *((_DWORD *)v16 - 1); *((_DWORD *)v16 - 1) = v17 - 1; if ( v17 <= 0 ) goto LABEL_123; return lpuexcptb; } // 4A0A39: variable 'v37' is possibly undefined // 4A06D8: variable 'v10' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004A0D20) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_int( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { int v6; // eax _BYTE *v7; // eax char v8; // al int v9; // eax unsigned int v10; // edx int v11; // eax int v12; // eax _DWORD *v13; // ecx unsigned int v14; // eax char v15; // al const char *v16; // ecx int v17; // eax _DWORD *v19; // ecx unsigned int v20; // eax bool v21; // al _BYTE *v22; // eax char v23; // al char i; // al _BYTE *v25; // eax int v26; // eax _DWORD *v27; // ecx unsigned int v28; // eax char v29; // al char v30; // al int v31; // edx int v32; // eax char *v33; // eax char *v34; // eax bool v35; // al int v36; // eax unsigned int v37; // [esp+4h] [ebp-94h] bool v38; // [esp+1Fh] [ebp-79h] size_t MaxCount; // [esp+20h] [ebp-78h] int Buf; // [esp+24h] [ebp-74h] void *Bufa; // [esp+24h] [ebp-74h] unsigned int v42; // [esp+28h] [ebp-70h] char v43; // [esp+28h] [ebp-70h] int v44; // [esp+2Ch] [ebp-6Ch] char v45; // [esp+2Ch] [ebp-6Ch] int v46; // [esp+30h] [ebp-68h] char v47; // [esp+34h] [ebp-64h] char v48; // [esp+35h] [ebp-63h] char v49; // [esp+35h] [ebp-63h] bool v50; // [esp+36h] [ebp-62h] char v51; // [esp+36h] [ebp-62h] bool v52; // [esp+37h] [ebp-61h] unsigned int v53; // [esp+38h] [ebp-60h] struct _Unwind_Exception *v54; // [esp+3Ch] [ebp-5Ch] char lpuexcpt; // [esp+40h] [ebp-58h] char lpuexcpta; // [esp+40h] [ebp-58h] unsigned __int64 lpuexcptb; // [esp+40h] [ebp-58h] char lpuexcptc; // [esp+40h] [ebp-58h] unsigned int v59; // [esp+48h] [ebp-50h] char v60; // [esp+48h] [ebp-50h] int v61; // [esp+8Bh] [ebp-Dh] BYREF const char *v62[2]; // [esp+8Ch] [ebp-Ch] BYREF v54 = std::__use_cache>::operator()((int *)(a4 + 108)); v6 = *(_DWORD *)(a4 + 12) & 0x4A; v44 = v6; if ( v6 == 64 ) { v53 = 8; LABEL_4: v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v50 ) { lpuexcpt = 0; v46 = 0; MaxCount = v53; Buf = v53; v52 = 0; v38 = 0; goto LABEL_17; } goto LABEL_5; } if ( v6 != 8 ) { v53 = 10; goto LABEL_4; } v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v50 ) { MaxCount = 22; lpuexcpt = 0; v46 = 0; v52 = 0; v38 = 0; v53 = 16; Buf = 22; goto LABEL_17; } v53 = 16; LABEL_5: LOBYTE(v7) = BYTE4(a1); if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) goto LABEL_7; v7 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v7 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v7) = *v7; LABEL_7: lpuexcpt = (char)v7; goto LABEL_8; } v7 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v7 != (_BYTE *)-1 ) goto LABEL_7; LODWORD(a1) = 0; lpuexcpt = -1; LABEL_8: v8 = *((_BYTE *)v54 + 16); v38 = *((_BYTE *)v54 + 74) == (unsigned __int8)lpuexcpt; if ( *((_BYTE *)v54 + 74) != lpuexcpt && *((_BYTE *)v54 + 75) != lpuexcpt || v8 && *((_BYTE *)v54 + 37) == lpuexcpt || *((_BYTE *)v54 + 36) == lpuexcpt ) { goto LABEL_45; } std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v46 = 0; v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); v52 = 0; if ( !v50 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v8 = *((_BYTE *)v54 + 16); LABEL_45: v46 = 0; v52 = 0; while ( 1 ) { if ( v8 && *((_BYTE *)v54 + 37) == lpuexcpt || *((_BYTE *)v54 + 36) == lpuexcpt ) { LABEL_94: v50 = 0; goto LABEL_14; } if ( *((_BYTE *)v54 + 78) != lpuexcpt ) break; v21 = v53 == 10 || !v52; if ( !v21 ) goto LABEL_51; v52 = v44 == 0 || v53 == 8; if ( !v52 ) { ++v46; v52 = v21; goto LABEL_55; } v19 = (_DWORD *)a1; v46 = 0; v53 = 8; v20 = *(_DWORD *)(a1 + 8); if ( v20 < *(_DWORD *)(a1 + 12) ) { LABEL_56: HIDWORD(a1) = -1; v19[2] = v20 + 1; goto LABEL_57; } LABEL_64: (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); v19 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v51 = 1; goto LABEL_58; } LABEL_57: v51 = 0; if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) { LODWORD(a1) = 0; v51 = 1; } LABEL_58: v60 = a3 == -1; v43 = v60 & (a2 != 0); if ( v43 ) { v60 = 0; if ( a2[2] >= a2[3] && (*(int (**)(void))(*a2 + 36))() == -1 ) { a2 = 0; v60 = v43; } } if ( v51 == v60 ) { v50 = 1; goto LABEL_14; } LOBYTE(v22) = BYTE4(a1); if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) goto LABEL_68; v22 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v22 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v22) = *v22; LABEL_68: lpuexcpt = (char)v22; goto LABEL_69; } v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v22 != (_BYTE *)-1 ) goto LABEL_68; LODWORD(a1) = 0; lpuexcpt = -1; LABEL_69: if ( !v52 ) goto LABEL_94; v8 = *((_BYTE *)v54 + 16); } if ( !v52 ) goto LABEL_94; LABEL_51: if ( *((_BYTE *)v54 + 76) != lpuexcpt && *((_BYTE *)v54 + 77) != lpuexcpt ) { v50 = 0; v52 = 1; goto LABEL_14; } if ( v44 != 0 && v53 != 16 ) { v50 = 0; v52 = 1; MaxCount = v53; Buf = v53; goto LABEL_17; } v46 = 0; v52 = 0; v53 = 16; LABEL_55: v19 = (_DWORD *)a1; v20 = *(_DWORD *)(a1 + 8); if ( v20 < *(_DWORD *)(a1 + 12) ) goto LABEL_56; goto LABEL_64; } LABEL_14: v9 = 22; if ( v53 != 16 ) v9 = v53; MaxCount = v9; Buf = v9; LABEL_17: v62[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v54 + 16) ) std::string::reserve((int *)v62, (std::string *)0x20, v37); v10 = 0xFFFFFFFF % v53; v42 = 0xFFFFFFFF / v53; v48 = *((_BYTE *)v54 + 100); if ( v48 ) { if ( v50 ) { v59 = 0; v45 = 0; v48 = v50; v50 = 0; goto LABEL_33; } v45 = 0; v59 = 0; Bufa = (char *)v54 + 78; LABEL_100: for ( i = *((_BYTE *)v54 + 16); i && *((_BYTE *)v54 + 37) == lpuexcpt; i = *((_BYTE *)v54 + 16) ) { if ( !v46 ) { v48 = 0; v50 = i; goto LABEL_33; } std::string::push_back((int *)v62, (std::string *)(char)v46, v37); v27 = (_DWORD *)a1; v46 = 0; v28 = *(_DWORD *)(a1 + 8); if ( v28 < *(_DWORD *)(a1 + 12) ) goto LABEL_109; LABEL_118: (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); v27 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_110; lpuexcptc = v48; LABEL_111: v29 = a3 == -1; v47 = v29 & (a2 != 0); if ( v47 ) { v29 = 0; if ( a2[2] >= a2[3] ) { v31 = (*(int (**)(void))(*a2 + 36))(); v29 = 0; if ( v31 == -1 ) { a2 = 0; v29 = v47; } } } if ( v29 == lpuexcptc ) goto LABEL_33; v30 = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v34 = *(char **)(a1 + 8); if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) { v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v36; if ( v36 == -1 ) { LODWORD(a1) = 0; lpuexcpt = -1; } goto LABEL_100; } v30 = *v34; } lpuexcpt = v30; } if ( lpuexcpt != *((_BYTE *)v54 + 36) ) { v25 = memchr(Bufa, lpuexcpt, MaxCount); if ( v25 ) { v26 = v25 - (_BYTE *)Bufa; if ( v26 > 15 ) v26 -= 6; if ( v42 < v59 ) { v45 = v48; } else { v45 |= ~v26 < v53 * v59; ++v46; v59 = v53 * v59 + v26; } v27 = (_DWORD *)a1; v28 = *(_DWORD *)(a1 + 8); if ( v28 >= *(_DWORD *)(a1 + 12) ) goto LABEL_118; LABEL_109: HIDWORD(a1) = -1; v27[2] = v28 + 1; LABEL_110: lpuexcptc = 0; if ( v27[2] >= v27[3] ) { lpuexcptc = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) { LODWORD(a1) = 0; lpuexcptc = v48; } } goto LABEL_111; } } LABEL_97: v48 = 0; } else { v45 = 0; if ( !v50 ) { v59 = 0; LABEL_22: v11 = lpuexcpt; if ( Buf > 10 ) { v10 = (unsigned __int8)lpuexcpt; if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) goto LABEL_25; while ( (unsigned __int8)(v10 - 97) <= 5u ) { v12 = v11 - 87; if ( v42 < v59 ) goto LABEL_27; LABEL_74: v10 = v53 * v59; v45 |= ~v12 < v53 * v59; v13 = (_DWORD *)a1; v59 = v53 * v59 + v12; ++v46; v14 = *(_DWORD *)(a1 + 8); if ( v14 < *(_DWORD *)(a1 + 12) ) goto LABEL_28; LABEL_75: (*(void (__fastcall **)(_DWORD *, unsigned int))(*v13 + 40))(v13, v10); v13 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_29; lpuexcpta = 1; LABEL_30: v15 = a3 == -1; LOBYTE(v10) = v15 & (a2 != 0); v49 = v10; if ( (_BYTE)v10 ) { v15 = 0; if ( a2[2] >= a2[3] ) { v10 = (*(int (**)(void))(*a2 + 36))(); v15 = 0; if ( v10 == -1 ) { a2 = 0; v15 = v49; } } } if ( lpuexcpta == v15 ) { v48 = 1; goto LABEL_33; } v23 = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_81; v33 = *(char **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) { v23 = *v33; LABEL_81: lpuexcpt = v23; goto LABEL_22; } v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v11; if ( v11 != -1 ) goto LABEL_22; LODWORD(a1) = 0; if ( Buf <= 10 ) goto LABEL_97; v10 = -1; } v10 -= 65; if ( (unsigned __int8)v10 <= 5u ) { v12 = v11 - 55; goto LABEL_26; } } else if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) { LABEL_25: v12 = lpuexcpt - 48; LABEL_26: if ( v42 >= v59 ) goto LABEL_74; LABEL_27: v13 = (_DWORD *)a1; v45 = 1; v14 = *(_DWORD *)(a1 + 8); if ( v14 >= *(_DWORD *)(a1 + 12) ) goto LABEL_75; LABEL_28: HIDWORD(a1) = -1; v13[2] = v14 + 1; LABEL_29: lpuexcpta = 0; if ( v13[2] >= v13[3] ) { lpuexcpta = 0; if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v13 + 36))(v13, v10) == -1 ) { LODWORD(a1) = 0; lpuexcpta = 1; } } goto LABEL_30; } goto LABEL_97; } v35 = v50; v59 = 0; v50 = 0; v48 = v35; } LABEL_33: v16 = v62[0]; if ( *((_DWORD *)v62[0] - 3) ) { std::string::push_back((int *)v62, (std::string *)(char)v46, v37); if ( !(unsigned __int8)std::__verify_grouping(*((char **)v54 + 2), *((_DWORD *)v54 + 3), v62) ) *a5 = 4; v16 = v62[0]; if ( !v46 && !v52 && !*((_DWORD *)v62[0] - 3) ) goto LABEL_36; } else if ( !v52 && !v46 ) { goto LABEL_36; } if ( v50 ) { LABEL_36: *a6 = 0; *a5 = 4; goto LABEL_37; } if ( v45 ) { *a6 = -1; *a5 = 4; } else { v32 = -v59; if ( !v38 ) v32 = v59; *a6 = v32; } LABEL_37: if ( v48 ) *a5 |= 2u; lpuexcptb = a1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) return lpuexcptb; LABEL_125: std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v61); return lpuexcptb; } v17 = *((_DWORD *)v16 - 1); *((_DWORD *)v16 - 1) = v17 - 1; if ( v17 <= 0 ) goto LABEL_125; return lpuexcptb; } // 4A1579: variable 'v37' is possibly undefined // 4A1227: variable 'v10' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004A1890) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_int( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _WORD *a6) { int v6; // eax _BYTE *v7; // eax char v8; // al int v9; // eax unsigned int v10; // edx int v11; // eax int v12; // eax _DWORD *v13; // ecx unsigned int v14; // eax char v15; // al const char *v16; // ecx int v17; // eax _DWORD *v19; // ecx unsigned int v20; // eax bool v21; // al _BYTE *v22; // eax char v23; // al char i; // al _BYTE *v25; // eax int v26; // eax _DWORD *v27; // ecx unsigned int v28; // eax char v29; // al char v30; // al int v31; // edx int v32; // eax char *v33; // eax char *v34; // eax bool v35; // al bool v36; // al int v37; // eax unsigned int v38; // [esp+4h] [ebp-94h] bool v39; // [esp+1Fh] [ebp-79h] size_t MaxCount; // [esp+20h] [ebp-78h] int Buf; // [esp+24h] [ebp-74h] void *Bufa; // [esp+24h] [ebp-74h] int v43; // [esp+28h] [ebp-70h] char v44; // [esp+28h] [ebp-70h] int v45; // [esp+2Ch] [ebp-6Ch] char v46; // [esp+2Ch] [ebp-6Ch] int v47; // [esp+30h] [ebp-68h] char v48; // [esp+34h] [ebp-64h] char v49; // [esp+35h] [ebp-63h] char v50; // [esp+35h] [ebp-63h] bool v51; // [esp+36h] [ebp-62h] char v52; // [esp+36h] [ebp-62h] bool v53; // [esp+37h] [ebp-61h] int v54; // [esp+38h] [ebp-60h] struct _Unwind_Exception *v55; // [esp+3Ch] [ebp-5Ch] char lpuexcpt; // [esp+40h] [ebp-58h] char lpuexcpta; // [esp+40h] [ebp-58h] unsigned __int64 lpuexcptb; // [esp+40h] [ebp-58h] char lpuexcptc; // [esp+40h] [ebp-58h] unsigned __int16 v60; // [esp+48h] [ebp-50h] char v61; // [esp+48h] [ebp-50h] int v62; // [esp+8Bh] [ebp-Dh] BYREF const char *v63[2]; // [esp+8Ch] [ebp-Ch] BYREF v55 = std::__use_cache>::operator()((int *)(a4 + 108)); v6 = *(_DWORD *)(a4 + 12) & 0x4A; v45 = v6; if ( v6 == 64 ) { v54 = 8; LABEL_4: v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v51 ) { lpuexcpt = 0; v47 = 0; MaxCount = v54; Buf = v54; v53 = 0; v39 = 0; goto LABEL_17; } goto LABEL_5; } if ( v6 != 8 ) { v54 = 10; goto LABEL_4; } v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v51 ) { MaxCount = 22; lpuexcpt = 0; v47 = 0; v53 = 0; v39 = 0; v54 = 16; Buf = 22; goto LABEL_17; } v54 = 16; LABEL_5: LOBYTE(v7) = BYTE4(a1); if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) goto LABEL_7; v7 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v7 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v7) = *v7; LABEL_7: lpuexcpt = (char)v7; goto LABEL_8; } v7 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v7 != (_BYTE *)-1 ) goto LABEL_7; LODWORD(a1) = 0; lpuexcpt = -1; LABEL_8: v8 = *((_BYTE *)v55 + 16); v39 = *((_BYTE *)v55 + 74) == (unsigned __int8)lpuexcpt; if ( *((_BYTE *)v55 + 74) != lpuexcpt && *((_BYTE *)v55 + 75) != lpuexcpt || v8 && *((_BYTE *)v55 + 37) == lpuexcpt || *((_BYTE *)v55 + 36) == lpuexcpt ) { goto LABEL_45; } std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v47 = 0; v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); v53 = 0; if ( !v51 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v8 = *((_BYTE *)v55 + 16); LABEL_45: v47 = 0; v53 = 0; while ( 1 ) { if ( v8 && *((_BYTE *)v55 + 37) == lpuexcpt || *((_BYTE *)v55 + 36) == lpuexcpt ) { LABEL_94: v51 = 0; goto LABEL_14; } if ( *((_BYTE *)v55 + 78) != lpuexcpt ) break; v21 = v54 == 10 || !v53; if ( !v21 ) goto LABEL_51; v53 = v45 == 0 || v54 == 8; if ( !v53 ) { ++v47; v53 = v21; goto LABEL_55; } v19 = (_DWORD *)a1; v47 = 0; v54 = 8; v20 = *(_DWORD *)(a1 + 8); if ( v20 < *(_DWORD *)(a1 + 12) ) { LABEL_56: HIDWORD(a1) = -1; v19[2] = v20 + 1; goto LABEL_57; } LABEL_64: (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); v19 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v52 = 1; goto LABEL_58; } LABEL_57: v52 = 0; if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) { LODWORD(a1) = 0; v52 = 1; } LABEL_58: v61 = a3 == -1; v44 = v61 & (a2 != 0); if ( v44 ) { v61 = 0; if ( a2[2] >= a2[3] && (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1 ) { a2 = 0; v61 = v44; } } if ( v52 == v61 ) { v51 = 1; goto LABEL_14; } LOBYTE(v22) = BYTE4(a1); if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) goto LABEL_68; v22 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v22 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v22) = *v22; LABEL_68: lpuexcpt = (char)v22; goto LABEL_69; } v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v22 != (_BYTE *)-1 ) goto LABEL_68; LODWORD(a1) = 0; lpuexcpt = -1; LABEL_69: if ( !v53 ) goto LABEL_94; v8 = *((_BYTE *)v55 + 16); } if ( !v53 ) goto LABEL_94; LABEL_51: if ( *((_BYTE *)v55 + 76) != lpuexcpt && *((_BYTE *)v55 + 77) != lpuexcpt ) { v51 = 0; v53 = 1; goto LABEL_14; } if ( v45 != 0 && v54 != 16 ) { v51 = 0; v53 = 1; MaxCount = v54; Buf = v54; goto LABEL_17; } v47 = 0; v53 = 0; v54 = 16; LABEL_55: v19 = (_DWORD *)a1; v20 = *(_DWORD *)(a1 + 8); if ( v20 < *(_DWORD *)(a1 + 12) ) goto LABEL_56; goto LABEL_64; } LABEL_14: v9 = 22; if ( v54 != 16 ) v9 = v54; MaxCount = v9; Buf = v9; LABEL_17: v63[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v55 + 16) ) std::string::reserve((int *)v63, (std::string *)0x20, v38); v10 = 0xFFFF % v54; v43 = 0xFFFF / v54; v49 = *((_BYTE *)v55 + 100); if ( v49 ) { if ( v51 ) { v36 = v51; v46 = 0; v51 = 0; v49 = v36; v60 = 0; goto LABEL_33; } v46 = 0; v60 = 0; Bufa = (char *)v55 + 78; LABEL_100: for ( i = *((_BYTE *)v55 + 16); i && *((_BYTE *)v55 + 37) == lpuexcpt; i = *((_BYTE *)v55 + 16) ) { if ( !v47 ) { v49 = 0; v51 = i; goto LABEL_33; } std::string::push_back((int *)v63, (std::string *)(char)v47, v38); v27 = (_DWORD *)a1; v47 = 0; v28 = *(_DWORD *)(a1 + 8); if ( v28 < *(_DWORD *)(a1 + 12) ) goto LABEL_109; LABEL_118: (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); v27 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_110; lpuexcptc = v49; LABEL_111: v29 = a3 == -1; v48 = v29 & (a2 != 0); if ( v48 ) { v29 = 0; if ( a2[2] >= a2[3] ) { v31 = (*(int (**)(void))(*a2 + 36))(); v29 = 0; if ( v31 == -1 ) { a2 = 0; v29 = v48; } } } if ( v29 == lpuexcptc ) goto LABEL_33; v30 = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v34 = *(char **)(a1 + 8); if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) { v37 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v37; if ( v37 == -1 ) { LODWORD(a1) = 0; lpuexcpt = -1; } goto LABEL_100; } v30 = *v34; } lpuexcpt = v30; } if ( lpuexcpt != *((_BYTE *)v55 + 36) ) { v25 = memchr(Bufa, lpuexcpt, MaxCount); if ( v25 ) { v26 = v25 - (_BYTE *)Bufa; if ( v26 > 15 ) v26 -= 6; if ( (unsigned __int16)v43 < v60 ) { v46 = v49; } else { v46 |= (unsigned __int16)(v54 * v60) > 0xFFFF - v26; ++v47; v60 = v54 * v60 + v26; } v27 = (_DWORD *)a1; v28 = *(_DWORD *)(a1 + 8); if ( v28 >= *(_DWORD *)(a1 + 12) ) goto LABEL_118; LABEL_109: HIDWORD(a1) = -1; v27[2] = v28 + 1; LABEL_110: lpuexcptc = 0; if ( v27[2] >= v27[3] ) { lpuexcptc = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) { LODWORD(a1) = 0; lpuexcptc = v49; } } goto LABEL_111; } } LABEL_97: v49 = 0; } else { v46 = 0; if ( !v51 ) { v60 = 0; LABEL_22: v11 = lpuexcpt; if ( Buf > 10 ) { v10 = (unsigned __int8)lpuexcpt; if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) goto LABEL_25; while ( (unsigned __int8)(v10 - 97) <= 5u ) { v12 = v11 - 87; if ( (unsigned __int16)v43 < v60 ) goto LABEL_27; LABEL_74: v10 = v60; LOWORD(v10) = v54 * v60; v46 |= (unsigned __int16)(v54 * v60) > 0xFFFF - v12; v13 = (_DWORD *)a1; v60 = v54 * v60 + v12; ++v47; v14 = *(_DWORD *)(a1 + 8); if ( v14 < *(_DWORD *)(a1 + 12) ) goto LABEL_28; LABEL_75: (*(void (__fastcall **)(_DWORD *, unsigned int))(*v13 + 40))(v13, v10); v13 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_29; lpuexcpta = 1; LABEL_30: v15 = a3 == -1; LOBYTE(v10) = v15 & (a2 != 0); v50 = v10; if ( (_BYTE)v10 ) { v10 = a2[3]; v15 = 0; if ( a2[2] >= v10 ) { v10 = (*(int (**)(void))(*a2 + 36))(); v15 = 0; if ( v10 == -1 ) { a2 = 0; v15 = v50; } } } if ( lpuexcpta == v15 ) { v49 = 1; goto LABEL_33; } v23 = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_81; v33 = *(char **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) { v23 = *v33; LABEL_81: lpuexcpt = v23; goto LABEL_22; } v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v11; if ( v11 != -1 ) goto LABEL_22; LODWORD(a1) = 0; if ( Buf <= 10 ) goto LABEL_97; v10 = -1; } v10 -= 65; if ( (unsigned __int8)v10 <= 5u ) { v12 = v11 - 55; goto LABEL_26; } } else if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) { LABEL_25: v12 = lpuexcpt - 48; LABEL_26: if ( (unsigned __int16)v43 >= v60 ) goto LABEL_74; LABEL_27: v13 = (_DWORD *)a1; v46 = 1; v14 = *(_DWORD *)(a1 + 8); if ( v14 >= *(_DWORD *)(a1 + 12) ) goto LABEL_75; LABEL_28: HIDWORD(a1) = -1; v13[2] = v14 + 1; LABEL_29: lpuexcpta = 0; if ( v13[2] >= v13[3] ) { lpuexcpta = 0; if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v13 + 36))(v13, v10) == -1 ) { LODWORD(a1) = 0; lpuexcpta = 1; } } goto LABEL_30; } goto LABEL_97; } v35 = v51; v51 = 0; v49 = v35; v60 = 0; } LABEL_33: v16 = v63[0]; if ( *((_DWORD *)v63[0] - 3) ) { std::string::push_back((int *)v63, (std::string *)(char)v47, v38); if ( !(unsigned __int8)std::__verify_grouping(*((char **)v55 + 2), *((_DWORD *)v55 + 3), v63) ) *a5 = 4; v16 = v63[0]; if ( !v47 && !v53 && !*((_DWORD *)v63[0] - 3) ) goto LABEL_36; } else if ( !v53 && !v47 ) { goto LABEL_36; } if ( v51 ) { LABEL_36: *a6 = 0; *a5 = 4; goto LABEL_37; } if ( v46 ) { *a6 = -1; *a5 = 4; } else { v32 = -v60; if ( !v39 ) LOWORD(v32) = v60; *a6 = v32; } LABEL_37: if ( v49 ) *a5 |= 2u; lpuexcptb = a1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) return lpuexcptb; LABEL_125: std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v62); return lpuexcptb; } v17 = *((_DWORD *)v16 - 1); *((_DWORD *)v16 - 1) = v17 - 1; if ( v17 <= 0 ) goto LABEL_125; return lpuexcptb; } // 4A2101: variable 'v38' is possibly undefined // 4A1DA0: variable 'v10' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004A2410) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_int( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { int v6; // eax char v7; // dl char v8; // al int v9; // eax unsigned __int64 v10; // kr00_8 int v11; // esi int v12; // esi _DWORD *v13; // ecx unsigned int v14; // eax char v15; // al const char *v16; // ecx int *v17; // eax int v18; // eax _DWORD *v20; // ecx unsigned int v21; // eax bool v22; // al _BYTE *v23; // eax char v24; // al char v25; // al int v26; // eax unsigned int v27; // edx int *v28; // esi _DWORD *v29; // eax int v30; // edx char v31; // al _BYTE *v32; // eax int v33; // esi _DWORD *v34; // ecx unsigned int v35; // eax char v36; // al char v37; // al int v38; // edx char *v39; // eax char *v40; // eax bool v41; // al int v42; // eax int v43; // eax unsigned int v44; // [esp+4h] [ebp-B4h] char v45; // [esp+4h] [ebp-B4h] char v46; // [esp+1Bh] [ebp-9Dh] size_t MaxCount; // [esp+1Ch] [ebp-9Ch] unsigned __int64 v48; // [esp+20h] [ebp-98h] int Buf; // [esp+28h] [ebp-90h] void *Bufa; // [esp+28h] [ebp-90h] char v51; // [esp+30h] [ebp-88h] int v52; // [esp+34h] [ebp-84h] char v53; // [esp+34h] [ebp-84h] int v54; // [esp+38h] [ebp-80h] int v55; // [esp+40h] [ebp-78h] bool v56; // [esp+44h] [ebp-74h] char v57; // [esp+45h] [ebp-73h] char v58; // [esp+45h] [ebp-73h] bool v59; // [esp+46h] [ebp-72h] char v60; // [esp+46h] [ebp-72h] bool v61; // [esp+47h] [ebp-71h] unsigned __int64 v62; // [esp+48h] [ebp-70h] char v63; // [esp+48h] [ebp-70h] char lpuexcpt; // [esp+50h] [ebp-68h] char lpuexcpta; // [esp+50h] [ebp-68h] unsigned __int64 lpuexcptb; // [esp+50h] [ebp-68h] char lpuexcptc; // [esp+50h] [ebp-68h] struct _Unwind_Exception *v68; // [esp+58h] [ebp-60h] int v69; // [esp+9Bh] [ebp-1Dh] BYREF const char *v70[7]; // [esp+9Ch] [ebp-1Ch] BYREF v68 = std::__use_cache>::operator()((int *)(a4 + 108)); v6 = *(_DWORD *)(a4 + 12) & 0x4A; v52 = v6; if ( v6 == 64 ) { v54 = 8; LABEL_4: v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v59 ) { lpuexcpt = 0; v55 = 0; MaxCount = v54; Buf = v54; v61 = 0; v56 = 0; goto LABEL_14; } goto LABEL_5; } if ( v6 != 8 ) { v54 = 10; goto LABEL_4; } v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v59 ) { MaxCount = 22; lpuexcpt = 0; v55 = 0; v61 = 0; v56 = 0; v54 = 16; Buf = 22; goto LABEL_14; } v54 = 16; LABEL_5: v7 = std::istreambuf_iterator::_M_get((int)&a1); lpuexcpt = v7; v56 = *((_BYTE *)v68 + 74) == (unsigned __int8)v7; if ( *((_BYTE *)v68 + 74) == v7 ) { v8 = *((_BYTE *)v68 + 16); } else { v8 = *((_BYTE *)v68 + 16); if ( *((_BYTE *)v68 + 75) != v7 ) { LABEL_44: v55 = 0; v61 = 0; while ( 1 ) { if ( v8 && *((_BYTE *)v68 + 37) == lpuexcpt || *((_BYTE *)v68 + 36) == lpuexcpt ) { LABEL_95: v59 = 0; goto LABEL_11; } if ( *((_BYTE *)v68 + 78) != lpuexcpt ) break; v22 = v54 == 10 || !v61; if ( !v22 ) goto LABEL_50; v61 = v54 == 8 || v52 == 0; if ( !v61 ) { ++v55; v61 = v22; goto LABEL_54; } v20 = (_DWORD *)a1; v55 = 0; v54 = 8; v21 = *(_DWORD *)(a1 + 8); if ( v21 < *(_DWORD *)(a1 + 12) ) { LABEL_55: HIDWORD(a1) = -1; v20[2] = v21 + 1; goto LABEL_56; } LABEL_63: (*(void (__fastcall **)(_DWORD *))(*v20 + 40))(v20); v20 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v60 = 1; goto LABEL_57; } LABEL_56: v60 = 0; if ( v20[2] >= v20[3] && (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20) == -1 ) { LODWORD(a1) = 0; v60 = 1; } LABEL_57: v63 = a3 == -1; v51 = v63 & (a2 != 0); if ( v51 ) { v63 = 0; if ( a2[2] >= a2[3] && (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1 ) { a2 = 0; v63 = v51; } } if ( v63 == v60 ) { v59 = 1; goto LABEL_11; } LOBYTE(v23) = BYTE4(a1); if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) goto LABEL_67; v23 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v23 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v23) = *v23; LABEL_67: lpuexcpt = (char)v23; goto LABEL_68; } v23 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v23 != (_BYTE *)-1 ) goto LABEL_67; LODWORD(a1) = 0; lpuexcpt = -1; LABEL_68: if ( !v61 ) goto LABEL_95; v8 = *((_BYTE *)v68 + 16); } if ( !v61 ) goto LABEL_95; LABEL_50: if ( *((_BYTE *)v68 + 76) != lpuexcpt && *((_BYTE *)v68 + 77) != lpuexcpt ) { v59 = 0; v61 = 1; goto LABEL_11; } if ( v52 != 0 && v54 != 16 ) { v59 = 0; v61 = 1; MaxCount = v54; Buf = v54; goto LABEL_14; } v55 = 0; v61 = 0; v54 = 16; LABEL_54: v20 = (_DWORD *)a1; v21 = *(_DWORD *)(a1 + 8); if ( v21 < *(_DWORD *)(a1 + 12) ) goto LABEL_55; goto LABEL_63; } } if ( v8 && *((_BYTE *)v68 + 37) == v7 || *((_BYTE *)v68 + 36) == v7 ) goto LABEL_44; std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v55 = 0; v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); v61 = 0; if ( !v59 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v8 = *((_BYTE *)v68 + 16); goto LABEL_44; } LABEL_11: v9 = 22; if ( v54 != 16 ) v9 = v54; MaxCount = v9; Buf = v9; LABEL_14: v70[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v68 + 16) ) std::string::reserve((int *)v70, (std::string *)0x20, v44); v48 = 0x8000000000000000LL; if ( !v56 ) v48 = 0x7FFFFFFFFFFFFFFFLL; v10 = v48 / v54; v57 = *((_BYTE *)v68 + 100); if ( !v57 ) { v53 = 0; if ( v59 ) { v41 = v59; v62 = 0LL; v59 = 0; v57 = v41; goto LABEL_32; } v62 = 0LL; LABEL_21: v11 = lpuexcpt; if ( Buf <= 10 ) { if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) { LABEL_24: v12 = lpuexcpt - 48; goto LABEL_25; } LABEL_98: v57 = 0; goto LABEL_32; } v24 = lpuexcpt; if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) goto LABEL_24; while ( 1 ) { if ( (unsigned __int8)(v24 - 97) > 5u ) { if ( (unsigned __int8)(v24 - 65) > 5u ) goto LABEL_98; v12 = v11 - 55; } else { v12 = v11 - 87; } LABEL_25: if ( v10 >= v62 ) { v53 |= v48 - v12 < v54 * v62; v13 = (_DWORD *)a1; v62 = v54 * v62 + v12; ++v55; v14 = *(_DWORD *)(a1 + 8); if ( v14 < *(_DWORD *)(a1 + 12) ) { LABEL_27: HIDWORD(a1) = -1; v13[2] = v14 + 1; goto LABEL_28; } } else { v13 = (_DWORD *)a1; v53 = 1; v14 = *(_DWORD *)(a1 + 8); if ( v14 < *(_DWORD *)(a1 + 12) ) goto LABEL_27; } (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); v13 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { lpuexcpta = 1; goto LABEL_29; } LABEL_28: lpuexcpta = 0; if ( v13[2] >= v13[3] ) { lpuexcpta = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) { LODWORD(a1) = 0; lpuexcpta = 1; } } LABEL_29: v15 = a3 == -1; v58 = v15 & (a2 != 0); if ( v58 ) { v15 = 0; if ( a2[2] >= a2[3] ) { v30 = (*(int (**)(void))(*a2 + 36))(); v15 = 0; if ( v30 == -1 ) { a2 = 0; v15 = v58; } } } if ( lpuexcpta == v15 ) { v57 = 1; goto LABEL_32; } v25 = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_80; v39 = *(char **)(a1 + 8); if ( (unsigned int)v39 < *(_DWORD *)(a1 + 12) ) { v25 = *v39; LABEL_80: lpuexcpt = v25; goto LABEL_21; } v42 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v42; v11 = v42; if ( v42 != -1 ) goto LABEL_21; LODWORD(a1) = 0; if ( Buf <= 10 ) goto LABEL_98; v24 = -1; } } if ( v59 ) { v62 = 0LL; v57 = v59; v53 = 0; v59 = 0; } else { v53 = 0; v62 = 0LL; Bufa = (char *)v68 + 78; LABEL_101: v31 = *((_BYTE *)v68 + 16); if ( !v31 || *((_BYTE *)v68 + 37) != lpuexcpt ) { LABEL_103: if ( lpuexcpt == *((_BYTE *)v68 + 36) ) goto LABEL_98; v32 = memchr(Bufa, lpuexcpt, MaxCount); if ( !v32 ) goto LABEL_98; v33 = v32 - (_BYTE *)Bufa; if ( v32 - (_BYTE *)Bufa > 15 ) v33 -= 6; if ( v10 < v62 ) { v53 = v57; } else { v53 |= v48 - v33 < v54 * v62; ++v55; v62 = v54 * v62 + v33; } v34 = (_DWORD *)a1; v35 = *(_DWORD *)(a1 + 8); if ( v35 >= *(_DWORD *)(a1 + 12) ) goto LABEL_120; LABEL_110: HIDWORD(a1) = -1; v34[2] = v35 + 1; LABEL_111: lpuexcptc = 0; if ( v34[2] >= v34[3] ) { lpuexcptc = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v34 + 36))(v34) == -1 ) { LODWORD(a1) = 0; lpuexcptc = v57; } } goto LABEL_112; } while ( v55 ) { std::string::push_back((int *)v70, (std::string *)(char)v55, v45); v34 = (_DWORD *)a1; v55 = 0; v35 = *(_DWORD *)(a1 + 8); if ( v35 < *(_DWORD *)(a1 + 12) ) goto LABEL_110; LABEL_120: (*(void (__fastcall **)(_DWORD *))(*v34 + 40))(v34); v34 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_111; lpuexcptc = v57; LABEL_112: v36 = a3 == -1; v46 = v36 & (a2 != 0); if ( v46 ) { v36 = 0; if ( a2[2] >= a2[3] ) { v38 = (*(int (**)(void))(*a2 + 36))(); v36 = 0; if ( v38 == -1 ) { a2 = 0; v36 = v46; } } } if ( v36 == lpuexcptc ) goto LABEL_32; v37 = BYTE4(a1); if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) { v40 = *(char **)(a1 + 8); if ( (unsigned int)v40 >= *(_DWORD *)(a1 + 12) ) { v43 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v43; if ( v43 == -1 ) { LODWORD(a1) = 0; lpuexcpt = -1; } goto LABEL_101; } v37 = *v40; } lpuexcpt = v37; v31 = *((_BYTE *)v68 + 16); if ( !v31 || *((_BYTE *)v68 + 37) != lpuexcpt ) goto LABEL_103; } v57 = 0; v59 = v31; } LABEL_32: v16 = v70[0]; if ( *((_DWORD *)v70[0] - 3) ) { std::string::push_back((int *)v70, (std::string *)(char)v55, v45); if ( !(unsigned __int8)std::__verify_grouping(*((char **)v68 + 2), *((_DWORD *)v68 + 3), v70) ) *a5 = 4; v16 = v70[0]; if ( !v55 && !v61 && !*((_DWORD *)v70[0] - 3) ) goto LABEL_35; } else if ( !v61 && !v55 ) { goto LABEL_35; } if ( v59 ) { LABEL_35: v17 = a6; *a6 = 0; v17[1] = 0; *a5 = 4; goto LABEL_36; } if ( v53 ) { v26 = 0; v27 = 0x80000000; if ( !v56 ) { v26 = -1; v27 = 0x7FFFFFFF; } v28 = a6; *a6 = v26; v29 = a5; v28[1] = v27; *v29 = 4; } else { if ( v56 ) v62 = -(__int64)v62; *(_QWORD *)a6 = v62; } LABEL_36: if ( v57 ) *a5 |= 2u; lpuexcptb = a1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) return lpuexcptb; LABEL_127: std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v69); return lpuexcptb; } v18 = *((_DWORD *)v16 - 1); *((_DWORD *)v16 - 1) = v18 - 1; if ( v18 <= 0 ) goto LABEL_127; return lpuexcptb; } // 4A2DA9: variable 'v44' is possibly undefined // 4A2A69: variable 'v45' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004A30C0) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_int( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6) { int v6; // eax char v7; // dl char v8; // al int v9; // eax unsigned __int64 v10; // kr08_8 int v11; // eax int v12; // esi _DWORD *v13; // ecx unsigned int v14; // eax char v15; // al const char *v16; // ecx _DWORD *v17; // eax int v18; // eax _DWORD *v20; // ecx unsigned int v21; // eax bool v22; // al _BYTE *v23; // eax char v24; // dl char v25; // al int v26; // edx char v27; // al _BYTE *v28; // eax int v29; // esi _DWORD *v30; // ecx unsigned int v31; // eax char v32; // al char v33; // al int v34; // edx _DWORD *v35; // eax char *v36; // eax char *v37; // eax bool v38; // al int v39; // eax unsigned int v40; // [esp+4h] [ebp-A4h] char v41; // [esp+4h] [ebp-A4h] bool v42; // [esp+13h] [ebp-95h] size_t MaxCount; // [esp+14h] [ebp-94h] int Buf; // [esp+18h] [ebp-90h] void *Bufa; // [esp+18h] [ebp-90h] char v46; // [esp+20h] [ebp-88h] int v47; // [esp+24h] [ebp-84h] char v48; // [esp+24h] [ebp-84h] int v49; // [esp+28h] [ebp-80h] int v50; // [esp+30h] [ebp-78h] char v51; // [esp+34h] [ebp-74h] char v52; // [esp+35h] [ebp-73h] char v53; // [esp+35h] [ebp-73h] bool v54; // [esp+36h] [ebp-72h] char v55; // [esp+36h] [ebp-72h] bool v56; // [esp+37h] [ebp-71h] unsigned __int64 v57; // [esp+38h] [ebp-70h] char v58; // [esp+38h] [ebp-70h] char lpuexcpt; // [esp+40h] [ebp-68h] char lpuexcpta; // [esp+40h] [ebp-68h] unsigned __int64 lpuexcptb; // [esp+40h] [ebp-68h] char lpuexcptc; // [esp+40h] [ebp-68h] struct _Unwind_Exception *v63; // [esp+48h] [ebp-60h] int v64; // [esp+8Bh] [ebp-1Dh] BYREF const char *v65[7]; // [esp+8Ch] [ebp-1Ch] BYREF v63 = std::__use_cache>::operator()((int *)(a4 + 108)); v6 = *(_DWORD *)(a4 + 12) & 0x4A; v47 = v6; if ( v6 == 64 ) { v49 = 8; LABEL_4: v54 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v54 ) { lpuexcpt = 0; v50 = 0; MaxCount = v49; Buf = v49; v56 = 0; v42 = 0; goto LABEL_14; } goto LABEL_5; } if ( v6 != 8 ) { v49 = 10; goto LABEL_4; } v54 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v54 ) { MaxCount = 22; lpuexcpt = 0; v50 = 0; v56 = 0; v42 = 0; v49 = 16; Buf = 22; goto LABEL_14; } v49 = 16; LABEL_5: v7 = std::istreambuf_iterator::_M_get((int)&a1); lpuexcpt = v7; v42 = *((_BYTE *)v63 + 74) == (unsigned __int8)v7; if ( *((_BYTE *)v63 + 74) == v7 ) { v8 = *((_BYTE *)v63 + 16); } else { v8 = *((_BYTE *)v63 + 16); if ( *((_BYTE *)v63 + 75) != v7 ) { LABEL_42: v50 = 0; v56 = 0; while ( 1 ) { if ( v8 && *((_BYTE *)v63 + 37) == lpuexcpt || *((_BYTE *)v63 + 36) == lpuexcpt ) { LABEL_94: v54 = 0; goto LABEL_11; } if ( *((_BYTE *)v63 + 78) != lpuexcpt ) break; v22 = v49 == 10 || !v56; if ( !v22 ) goto LABEL_48; v56 = v49 == 8 || v47 == 0; if ( !v56 ) { ++v50; v56 = v22; goto LABEL_52; } v20 = (_DWORD *)a1; v50 = 0; v49 = 8; v21 = *(_DWORD *)(a1 + 8); if ( v21 < *(_DWORD *)(a1 + 12) ) { LABEL_53: HIDWORD(a1) = -1; v20[2] = v21 + 1; goto LABEL_54; } LABEL_61: (*(void (__fastcall **)(_DWORD *))(*v20 + 40))(v20); v20 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v55 = 1; goto LABEL_55; } LABEL_54: v55 = 0; if ( v20[2] >= v20[3] && (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20) == -1 ) { LODWORD(a1) = 0; v55 = 1; } LABEL_55: v58 = a3 == -1; v46 = v58 & (a2 != 0); if ( v46 ) { v58 = 0; if ( a2[2] >= a2[3] && (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1 ) { a2 = 0; v58 = v46; } } if ( v58 == v55 ) { v54 = 1; goto LABEL_11; } LOBYTE(v23) = BYTE4(a1); if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) goto LABEL_65; v23 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v23 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v23) = *v23; LABEL_65: lpuexcpt = (char)v23; goto LABEL_66; } v23 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v23 != (_BYTE *)-1 ) goto LABEL_65; LODWORD(a1) = 0; lpuexcpt = -1; LABEL_66: if ( !v56 ) goto LABEL_94; v8 = *((_BYTE *)v63 + 16); } if ( !v56 ) goto LABEL_94; LABEL_48: if ( *((_BYTE *)v63 + 76) != lpuexcpt && *((_BYTE *)v63 + 77) != lpuexcpt ) { v54 = 0; v56 = 1; goto LABEL_11; } if ( v47 != 0 && v49 != 16 ) { v54 = 0; v56 = 1; MaxCount = v49; Buf = v49; goto LABEL_14; } v50 = 0; v56 = 0; v49 = 16; LABEL_52: v20 = (_DWORD *)a1; v21 = *(_DWORD *)(a1 + 8); if ( v21 < *(_DWORD *)(a1 + 12) ) goto LABEL_53; goto LABEL_61; } } if ( v8 && *((_BYTE *)v63 + 37) == v7 || *((_BYTE *)v63 + 36) == v7 ) goto LABEL_42; std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v50 = 0; v54 = std::istreambuf_iterator::equal(&a1, (int)&a2); v56 = 0; if ( !v54 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v8 = *((_BYTE *)v63 + 16); goto LABEL_42; } LABEL_11: v9 = 22; if ( v49 != 16 ) v9 = v49; MaxCount = v9; Buf = v9; LABEL_14: v65[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v63 + 16) ) std::string::reserve((int *)v65, (std::string *)0x20, v40); v10 = 0xFFFFFFFFFFFFFFFFLL / v49; v52 = *((_BYTE *)v63 + 100); if ( !v52 ) { v48 = 0; if ( v54 ) { v38 = v54; v57 = 0LL; v54 = 0; v52 = v38; goto LABEL_30; } v57 = 0LL; LABEL_19: v11 = lpuexcpt; if ( Buf <= 10 ) { if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) { LABEL_22: v12 = lpuexcpt - 48; goto LABEL_23; } LABEL_95: v52 = 0; goto LABEL_30; } v24 = lpuexcpt; if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) goto LABEL_22; while ( 1 ) { v12 = v11 - 87; if ( (unsigned __int8)(v24 - 97) > 5u ) { if ( (unsigned __int8)(v24 - 65) > 5u ) goto LABEL_95; v12 = v11 - 55; } LABEL_23: if ( v10 >= v57 ) { v48 |= __PAIR64__(~(v12 >> 31), ~v12) < v49 * v57; v13 = (_DWORD *)a1; ++v50; v57 = v49 * v57 + v12; v14 = *(_DWORD *)(a1 + 8); if ( v14 < *(_DWORD *)(a1 + 12) ) { LABEL_25: HIDWORD(a1) = -1; v13[2] = v14 + 1; goto LABEL_26; } } else { v13 = (_DWORD *)a1; v48 = 1; v14 = *(_DWORD *)(a1 + 8); if ( v14 < *(_DWORD *)(a1 + 12) ) goto LABEL_25; } (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); v13 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { lpuexcpta = 1; goto LABEL_27; } LABEL_26: lpuexcpta = 0; if ( v13[2] >= v13[3] ) { lpuexcpta = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) { LODWORD(a1) = 0; lpuexcpta = 1; } } LABEL_27: v15 = a3 == -1; v53 = v15 & (a2 != 0); if ( v53 ) { v15 = 0; if ( a2[2] >= a2[3] ) { v26 = (*(int (**)(void))(*a2 + 36))(); v15 = 0; if ( v26 == -1 ) { a2 = 0; v15 = v53; } } } if ( v15 == lpuexcpta ) { v52 = 1; goto LABEL_30; } v25 = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_79; v36 = *(char **)(a1 + 8); if ( (unsigned int)v36 < *(_DWORD *)(a1 + 12) ) { v25 = *v36; LABEL_79: lpuexcpt = v25; goto LABEL_19; } v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v11; if ( v11 != -1 ) goto LABEL_19; LODWORD(a1) = 0; if ( Buf <= 10 ) goto LABEL_95; v24 = -1; } } if ( v54 ) { v57 = 0LL; v52 = v54; v48 = 0; v54 = 0; } else { v48 = 0; v57 = 0LL; Bufa = (char *)v63 + 78; LABEL_98: v27 = *((_BYTE *)v63 + 16); if ( !v27 || *((_BYTE *)v63 + 37) != lpuexcpt ) { LABEL_100: if ( lpuexcpt == *((_BYTE *)v63 + 36) ) goto LABEL_95; v28 = memchr(Bufa, lpuexcpt, MaxCount); if ( !v28 ) goto LABEL_95; v29 = v28 - (_BYTE *)Bufa; if ( v28 - (_BYTE *)Bufa > 15 ) v29 -= 6; if ( v10 < v57 ) { v48 = v52; } else { v48 |= __PAIR64__(~(v29 >> 31), ~v29) < v49 * v57; v57 = v49 * v57 + v29; ++v50; } v30 = (_DWORD *)a1; v31 = *(_DWORD *)(a1 + 8); if ( v31 >= *(_DWORD *)(a1 + 12) ) goto LABEL_117; LABEL_107: HIDWORD(a1) = -1; v30[2] = v31 + 1; LABEL_108: lpuexcptc = 0; if ( v30[2] >= v30[3] ) { lpuexcptc = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v30 + 36))(v30) == -1 ) { LODWORD(a1) = 0; lpuexcptc = v52; } } goto LABEL_109; } while ( v50 ) { std::string::push_back((int *)v65, (std::string *)(char)v50, v41); v30 = (_DWORD *)a1; v50 = 0; v31 = *(_DWORD *)(a1 + 8); if ( v31 < *(_DWORD *)(a1 + 12) ) goto LABEL_107; LABEL_117: (*(void (__fastcall **)(_DWORD *))(*v30 + 40))(v30); v30 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_108; lpuexcptc = v52; LABEL_109: v32 = a3 == -1; v51 = v32 & (a2 != 0); if ( v51 ) { v32 = 0; if ( a2[2] >= a2[3] ) { v34 = (*(int (**)(void))(*a2 + 36))(); v32 = 0; if ( v34 == -1 ) { a2 = 0; v32 = v51; } } } if ( lpuexcptc == v32 ) goto LABEL_30; v33 = BYTE4(a1); if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) { v37 = *(char **)(a1 + 8); if ( (unsigned int)v37 >= *(_DWORD *)(a1 + 12) ) { v39 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v39; if ( v39 == -1 ) { LODWORD(a1) = 0; lpuexcpt = -1; } goto LABEL_98; } v33 = *v37; } lpuexcpt = v33; v27 = *((_BYTE *)v63 + 16); if ( !v27 || *((_BYTE *)v63 + 37) != lpuexcpt ) goto LABEL_100; } v52 = 0; v54 = v27; } LABEL_30: v16 = v65[0]; if ( *((_DWORD *)v65[0] - 3) ) { std::string::push_back((int *)v65, (std::string *)(char)v50, v41); if ( !(unsigned __int8)std::__verify_grouping(*((char **)v63 + 2), *((_DWORD *)v63 + 3), v65) ) *a5 = 4; v16 = v65[0]; if ( !v50 && !v56 && !*((_DWORD *)v65[0] - 3) ) goto LABEL_33; } else if ( !v56 && !v50 ) { goto LABEL_33; } if ( v54 ) { LABEL_33: v17 = a6; *a6 = 0; v17[1] = 0; *a5 = 4; goto LABEL_34; } if ( v48 ) { v35 = a6; *a6 = -1; v35[1] = -1; *a5 = 4; } else { if ( v42 ) v57 = -(__int64)v57; *(_QWORD *)a6 = v57; } LABEL_34: if ( v52 ) *a5 |= 2u; lpuexcptb = a1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) return lpuexcptb; LABEL_124: std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v64); return lpuexcptb; } v18 = *((_DWORD *)v16 - 1); *((_DWORD *)v16 - 1) = v18 - 1; if ( v18 <= 0 ) goto LABEL_124; return lpuexcptb; } // 4A3A19: variable 'v40' is possibly undefined // 4A3701: variable 'v41' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004A3D30) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::_M_extract_float( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { char v6; // dl char v7; // cl int v8; // eax _DWORD *v9; // ecx unsigned int v10; // eax char v11; // al char v12; // al char v13; // al int v14; // eax char v15; // al void *v16; // eax int v17; // eax _DWORD *v18; // ecx unsigned int v19; // eax char v20; // al int v21; // eax bool v23; // zf int v24; // eax int v25; // eax char v26; // al int v27; // eax _DWORD *v28; // ecx unsigned int v29; // eax char v30; // al char v31; // al char v32; // dl int v33; // edx char v34; // cl const char *v35; // eax int v36; // ebx int v37; // edx char *v38; // eax char *v39; // eax int v40; // edx char *v41; // eax char v42; // cl char v43; // al char i; // dl _DWORD *v45; // ecx unsigned int v46; // eax int v47; // eax _BYTE *v48; // eax bool v49; // al int v50; // eax int v51; // eax int v52; // eax unsigned int v53; // [esp+4h] [ebp-84h] unsigned int v54; // [esp+4h] [ebp-84h] unsigned int v55; // [esp+Ch] [ebp-7Ch] int v56; // [esp+14h] [ebp-74h] char v57; // [esp+14h] [ebp-74h] void *Buf; // [esp+18h] [ebp-70h] bool v59; // [esp+1Ch] [ebp-6Ch] char v60; // [esp+1Ch] [ebp-6Ch] int v61; // [esp+1Ch] [ebp-6Ch] char v62; // [esp+20h] [ebp-68h] int v63; // [esp+20h] [ebp-68h] char v64; // [esp+20h] [ebp-68h] int v65; // [esp+20h] [ebp-68h] char v66; // [esp+20h] [ebp-68h] int v67; // [esp+24h] [ebp-64h] char v68; // [esp+28h] [ebp-60h] int v69; // [esp+28h] [ebp-60h] char v70; // [esp+28h] [ebp-60h] char v71; // [esp+28h] [ebp-60h] int v72; // [esp+28h] [ebp-60h] char v73; // [esp+2Ch] [ebp-5Ch] char v74; // [esp+2Ch] [ebp-5Ch] char v75; // [esp+2Ch] [ebp-5Ch] char v76; // [esp+2Ch] [ebp-5Ch] std::string *v77; // [esp+2Ch] [ebp-5Ch] struct _Unwind_Exception *v78; // [esp+30h] [ebp-58h] unsigned __int64 v79; // [esp+30h] [ebp-58h] char lpuexcpt; // [esp+38h] [ebp-50h] struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-50h] char lpuexcptb; // [esp+38h] [ebp-50h] struct _Unwind_Exception *lpuexcptc; // [esp+38h] [ebp-50h] char lpuexcptd; // [esp+38h] [ebp-50h] struct _Unwind_Exception *lpuexcpte; // [esp+38h] [ebp-50h] struct _Unwind_Exception *lpuexcptf; // [esp+38h] [ebp-50h] struct _Unwind_Exception *lpuexcptg; // [esp+38h] [ebp-50h] char lpuexcpth; // [esp+38h] [ebp-50h] struct _Unwind_Exception *lpuexcpti; // [esp+38h] [ebp-50h] int v90; // [esp+7Bh] [ebp-Dh] BYREF const char *v91[2]; // [esp+7Ch] [ebp-Ch] BYREF v78 = std::__use_cache>::operator()((int *)(a4 + 108)); v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v59 ) { lpuexcpt = 0; v67 = 0; v73 = 0; goto LABEL_3; } lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v42 = *((_BYTE *)v78 + 75); if ( v42 == lpuexcpt ) { v43 = *((_BYTE *)v78 + 16); } else { v43 = *((_BYTE *)v78 + 16); if ( *((_BYTE *)v78 + 74) != lpuexcpt ) { LABEL_113: v67 = 0; for ( i = 0; ; i = 1 ) { if ( v43 && *((_BYTE *)v78 + 37) == lpuexcpt || *((_BYTE *)v78 + 36) == lpuexcpt || *((_BYTE *)v78 + 78) != lpuexcpt ) { v73 = i; goto LABEL_3; } if ( i ) { v45 = (_DWORD *)a1; ++v67; v46 = *(_DWORD *)(a1 + 8); if ( v46 < *(_DWORD *)(a1 + 12) ) goto LABEL_120; } else { v72 = *(_DWORD *)(*a6 - 12); v77 = (std::string *)(v72 + 1); if ( (unsigned int)(v72 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) std::string::reserve(a6, v77, v53); ++v67; *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 48; v47 = *a6; *(_DWORD *)(v47 - 12) = v77; *(_DWORD *)(v47 - 4) = 0; *(_BYTE *)(v47 + v72 + 1) = 0; v45 = (_DWORD *)a1; v46 = *(_DWORD *)(a1 + 8); if ( v46 < *(_DWORD *)(a1 + 12) ) { LABEL_120: HIDWORD(a1) = -1; v45[2] = v46 + 1; goto LABEL_121; } } (*(void (__fastcall **)(_DWORD *))(*v45 + 40))(v45); v45 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { v71 = 1; goto LABEL_122; } LABEL_121: v71 = 0; if ( v45[2] >= v45[3] && (*(int (__fastcall **)(_DWORD *))(*v45 + 36))(v45) == -1 ) { LODWORD(a1) = 0; v71 = 1; } LABEL_122: v76 = a3 == -1; v66 = v76 & (a2 != 0); if ( v66 ) { v76 = 0; if ( a2[2] >= a2[3] && (*(int (**)(void))(*a2 + 36))() == -1 ) { a2 = 0; v76 = v66; } } if ( v71 == v76 ) { v73 = 1; v59 = 1; goto LABEL_3; } LOBYTE(v48) = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_132; v48 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v48 < *(_DWORD *)(a1 + 12) ) { LOBYTE(v48) = *v48; LABEL_132: lpuexcpt = (char)v48; goto LABEL_133; } v48 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v48 != (_BYTE *)-1 ) goto LABEL_132; LODWORD(a1) = 0; lpuexcpt = -1; LABEL_133: v43 = *((_BYTE *)v78 + 16); } } } if ( v43 && *((_BYTE *)v78 + 37) == lpuexcpt || *((_BYTE *)v78 + 36) == lpuexcpt ) goto LABEL_113; std::string::push_back(a6, (std::string *)(2 * (v42 != lpuexcpt) + 43), v53); std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v49 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !v49 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v43 = *((_BYTE *)v78 + 16); goto LABEL_113; } v73 = 0; v59 = v49; v67 = 0; LABEL_3: v91[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v78 + 16) ) std::string::reserve((int *)v91, (std::string *)0x20, v54); v68 = *((_BYTE *)v78 + 100); if ( !v68 ) { if ( !v59 ) { v62 = 0; v60 = 0; LABEL_8: v6 = lpuexcpt; if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) { LABEL_9: v74 = v6; v69 = *(_DWORD *)(*a6 - 12); lpuexcpta = (struct _Unwind_Exception *)(v69 + 1); if ( (unsigned int)(v69 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) std::string::reserve(a6, lpuexcpta, v54); v7 = v74; v73 = 1; *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = v7; v8 = *a6; *(_DWORD *)(v8 - 4) = 0; *(_DWORD *)(v8 - 12) = lpuexcpta; *(_BYTE *)(v8 + v69 + 1) = 0; goto LABEL_13; } while ( 1 ) { if ( *((_BYTE *)v78 + 36) == lpuexcpt && !((unsigned __int8)v60 | (unsigned __int8)v62) ) { std::string::push_back(a6, (std::string *)0x2E, v54); v62 = 0; v60 = 1; LABEL_13: v9 = (_DWORD *)a1; v10 = *(_DWORD *)(a1 + 8); if ( v10 >= *(_DWORD *)(a1 + 12) ) goto LABEL_29; LABEL_14: HIDWORD(a1) = -1; v9[2] = v10 + 1; LABEL_15: lpuexcptb = 0; if ( v9[2] >= v9[3] ) { lpuexcptb = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) == -1 ) { LODWORD(a1) = 0; lpuexcptb = 1; } } goto LABEL_16; } if ( *((_BYTE *)v78 + 92) != lpuexcpt && *((_BYTE *)v78 + 98) != lpuexcpt ) goto LABEL_46; v73 &= v62 ^ 1; if ( !v73 ) goto LABEL_46; std::string::push_back(a6, (std::string *)0x65, v54); std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) goto LABEL_164; v13 = std::istreambuf_iterator::_M_get((int)&a1); lpuexcpt = v13; if ( *((_BYTE *)v78 + 75) == v13 ) { v14 = 43; } else { if ( *((_BYTE *)v78 + 74) != v13 ) { v62 = v73; goto LABEL_8; } v14 = 45; } std::string::push_back(a6, (std::string *)v14, v54); v9 = (_DWORD *)a1; v62 = v73; v10 = *(_DWORD *)(a1 + 8); if ( v10 < *(_DWORD *)(a1 + 12) ) goto LABEL_14; LABEL_29: (*(void (__fastcall **)(_DWORD *))(*v9 + 40))(v9); v9 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_15; lpuexcptb = 1; LABEL_16: v11 = a3 == -1; v70 = v11 & (a2 != 0); if ( v70 ) { v11 = 0; if ( a2[2] >= a2[3] ) { v33 = (*(int (**)(void))(*a2 + 36))(); v11 = 0; if ( v33 == -1 ) { a2 = 0; v11 = v70; } } } if ( v11 == lpuexcptb ) goto LABEL_46; v12 = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v38 = *(char **)(a1 + 8); if ( (unsigned int)v38 >= *(_DWORD *)(a1 + 12) ) { v50 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v50; if ( v50 == -1 ) { LODWORD(a1) = 0; lpuexcpt = -1; } goto LABEL_8; } v12 = *v38; } lpuexcpt = v12; v6 = v12; if ( (unsigned __int8)(v12 - 48) <= 9u ) goto LABEL_9; } } LABEL_166: lpuexcpte = (struct _Unwind_Exception *)v91[0]; if ( *((_DWORD *)v91[0] - 3) ) goto LABEL_50; goto LABEL_53; } if ( v59 ) goto LABEL_166; v62 = 0; v60 = 0; v15 = *((_BYTE *)v78 + 16); Buf = (char *)v78 + 78; while ( 1 ) { while ( 1 ) { if ( v15 && *((_BYTE *)v78 + 37) == lpuexcpt ) { v60 |= v62; if ( v60 ) { lpuexcpte = (struct _Unwind_Exception *)v91[0]; v24 = *((_DWORD *)v91[0] - 3); LABEL_160: if ( v24 ) goto LABEL_51; goto LABEL_53; } if ( !v67 ) { std::string::_M_mutate((char **)a6, 0, *(_DWORD *)(*a6 - 12), 0, v55); lpuexcpte = (struct _Unwind_Exception *)v91[0]; if ( *((_DWORD *)v91[0] - 3) ) goto LABEL_50; goto LABEL_53; } v65 = *((_DWORD *)v91[0] - 3); lpuexcpti = (struct _Unwind_Exception *)(v65 + 1); if ( (unsigned int)(v65 + 1) > *((_DWORD *)v91[0] - 2) || *((int *)v91[0] - 1) > 0 ) std::string::reserve((int *)v91, lpuexcpti, v54); v34 = v67; v67 = 0; v91[0][*((_DWORD *)v91[0] - 3)] = v34; v35 = v91[0]; *((_DWORD *)v91[0] - 3) = lpuexcpti; v36 = v65; *((_DWORD *)v35 - 1) = 0; v62 = 0; v35[v36 + 1] = 0; LABEL_41: v18 = (_DWORD *)a1; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) goto LABEL_42; goto LABEL_62; } if ( *((_BYTE *)v78 + 36) == lpuexcpt ) break; v16 = memchr(Buf, lpuexcpt, 0xAu); if ( v16 ) { v75 = (_BYTE)v16 - (_BYTE)Buf + 48; v56 = *(_DWORD *)(*a6 - 12); lpuexcptc = (struct _Unwind_Exception *)(v56 + 1); if ( (unsigned int)(v56 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) std::string::reserve(a6, lpuexcptc, v54); ++v67; *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = v75; v17 = *a6; *(_DWORD *)(v17 - 12) = lpuexcptc; *(_DWORD *)(v17 - 4) = 0; *(_BYTE *)(v17 + v56 + 1) = 0; v73 = v68; goto LABEL_41; } if ( *((_BYTE *)v78 + 92) != lpuexcpt && *((_BYTE *)v78 + 98) != lpuexcpt ) goto LABEL_46; v23 = (((unsigned __int8)v62 ^ 1) & (unsigned __int8)v73) == 0; v73 &= v62 ^ 1; lpuexcpte = (struct _Unwind_Exception *)v91[0]; v21 = *((_DWORD *)v91[0] - 3); if ( v23 ) goto LABEL_47; if ( v21 && !v60 ) std::string::push_back((int *)v91, (std::string *)(char)v67, v54); v63 = *(_DWORD *)(*a6 - 12); lpuexcptg = (struct _Unwind_Exception *)(v63 + 1); if ( (unsigned int)(v63 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) std::string::reserve(a6, lpuexcptg, v54); *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 101; v27 = *a6; *(_DWORD *)(v27 - 12) = lpuexcptg; *(_DWORD *)(v27 - 4) = 0; *(_BYTE *)(v27 + v63 + 1) = 0; v28 = (_DWORD *)a1; v29 = *(_DWORD *)(a1 + 8); if ( v29 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v28 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { lpuexcpth = v73; goto LABEL_79; } } else { HIDWORD(a1) = -1; *(_DWORD *)(a1 + 8) = v29 + 1; } lpuexcpth = 0; if ( v28[2] >= v28[3] ) { lpuexcpth = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v28 + 36))(v28) == -1 ) { LODWORD(a1) = 0; lpuexcpth = v73; } } LABEL_79: v30 = a3 == -1; v64 = v30 & (a2 != 0); if ( v64 ) { v30 = 0; if ( a2[2] >= a2[3] ) { v40 = (*(int (**)(void))(*a2 + 36))(); v30 = 0; if ( v40 == -1 ) { a2 = 0; v30 = v64; } } } if ( v30 == lpuexcpth ) { LABEL_164: lpuexcpte = (struct _Unwind_Exception *)v91[0]; if ( *((_DWORD *)v91[0] - 3) ) goto LABEL_51; goto LABEL_53; } v31 = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_82; v41 = *(char **)(a1 + 8); if ( (unsigned int)v41 < *(_DWORD *)(a1 + 12) ) { v31 = *v41; LABEL_82: lpuexcpt = v31; goto LABEL_83; } v52 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v52; if ( v52 == -1 ) { LODWORD(a1) = 0; lpuexcpt = -1; } LABEL_83: v32 = *((_BYTE *)v78 + 75); v15 = *((_BYTE *)v78 + 16); if ( v32 != lpuexcpt && *((_BYTE *)v78 + 74) != lpuexcpt ) goto LABEL_85; if ( v15 && *((_BYTE *)v78 + 37) == lpuexcpt ) { v62 = *((_BYTE *)v78 + 16); v73 = v62; } else { if ( *((_BYTE *)v78 + 36) != lpuexcpt ) { std::string::push_back(a6, (std::string *)(2 * (v32 != lpuexcpt) + 43), v54); v62 = v73; goto LABEL_41; } LABEL_85: v62 = v73; } } v23 = ((unsigned __int8)v60 | (unsigned __int8)v62) == 0; v62 |= v60; lpuexcpte = (struct _Unwind_Exception *)v91[0]; v24 = *((_DWORD *)v91[0] - 3); if ( !v23 ) goto LABEL_160; if ( v24 ) std::string::push_back((int *)v91, (std::string *)(char)v67, v54); v61 = *(_DWORD *)(*a6 - 12); lpuexcptf = (struct _Unwind_Exception *)(v61 + 1); if ( (unsigned int)(v61 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) std::string::reserve(a6, lpuexcptf, v54); *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 46; v25 = *a6; *(_DWORD *)(v25 - 12) = lpuexcptf; *(_DWORD *)(v25 - 4) = 0; *(_BYTE *)(v25 + v61 + 1) = 0; v18 = (_DWORD *)a1; v60 = v68; v19 = *(_DWORD *)(a1 + 8); if ( v19 < *(_DWORD *)(a1 + 12) ) { LABEL_42: HIDWORD(a1) = -1; v18[2] = v19 + 1; goto LABEL_43; } LABEL_62: (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); v18 = (_DWORD *)a1; HIDWORD(a1) = -1; if ( !(_DWORD)a1 ) { lpuexcptd = v68; goto LABEL_44; } LABEL_43: lpuexcptd = 0; if ( v18[2] >= v18[3] ) { lpuexcptd = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) { LODWORD(a1) = 0; lpuexcptd = v68; } } LABEL_44: v20 = a3 == -1; v57 = v20 & (a2 != 0); if ( v57 ) { v20 = 0; if ( a2[2] >= a2[3] ) { v37 = (*(int (**)(void))(*a2 + 36))(); v20 = 0; if ( v37 == -1 ) { a2 = 0; v20 = v57; } } } if ( lpuexcptd == v20 ) break; v26 = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_65; v39 = *(char **)(a1 + 8); if ( (unsigned int)v39 < *(_DWORD *)(a1 + 12) ) { v26 = *v39; LABEL_65: lpuexcpt = v26; goto LABEL_66; } v51 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcpt = v51; if ( v51 == -1 ) { LODWORD(a1) = 0; lpuexcpt = -1; } LABEL_66: v15 = *((_BYTE *)v78 + 16); } LABEL_46: lpuexcpte = (struct _Unwind_Exception *)v91[0]; v21 = *((_DWORD *)v91[0] - 3); LABEL_47: if ( !v21 ) goto LABEL_53; if ( v60 || v62 ) goto LABEL_51; LABEL_50: std::string::push_back((int *)v91, (std::string *)(char)v67, v54); lpuexcpte = (struct _Unwind_Exception *)v91[0]; LABEL_51: if ( !(unsigned __int8)std::__verify_grouping(*((char **)v78 + 2), *((_DWORD *)v78 + 3), v91) ) *a5 = 4; LABEL_53: v79 = a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)lpuexcpte - 3, (int)&v90); return v79; } // 4A4623: variable 'v54' is possibly undefined // 4A4735: variable 'v53' is possibly undefined // 4A4B05: variable 'v55' is possibly undefined //----- (004A4B70) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { unsigned __int64 (__stdcall *v7)(unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *); // eax int v8; // esi int result; // eax int v10[8]; // [esp+3Ch] [ebp-20h] BYREF v7 = *(unsigned __int64 (__stdcall **)(unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *))(*(_DWORD *)this + 48); if ( v7 != std::num_get>::do_get ) return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD *, int, int, _DWORD *, _DWORD *))v7)( a2, HIDWORD(a2), a3, a4, a5, a6, a7); v8 = *(_DWORD *)(a5 + 12); *(_DWORD *)(a5 + 12) = v8 & 0xFFFFFFB5 | 8; result = std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, v10); *(_DWORD *)(a5 + 12) = v8; *a7 = v10[0]; return result; } // 4A4B70: using guessed type int var_20[8]; //----- (004A4C20) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (004A4C30) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); } //----- (004A4C40) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); } //----- (004A4C50) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); } //----- (004A4C60) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7) { 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(a2, a3, a4, a5, a6, a7); else return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); } // 4A5A90: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004A4CE0) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7) { 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(a2, a3, a4, a5, a6, a7); else return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); } // 4A5AA0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004A4D60) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7) { 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(a2, a3, a4, a5, a6, a7); else return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); } // 4A5AB0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004A4DE0) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _WORD *a7) { 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(a2, a3, a4, a5, a6, a7); else return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); } // 4A5AC0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004A4E60) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7) { 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(a2, a3, a4, a5, a6, a7); else return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); } // 4A5AD0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004A4EE0) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { 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(a2, a3, a4, a5, a6, a7); else return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); } // 4A5AE0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004A4F60) -------------------------------------------------------- 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 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; } // 4A4F60: using guessed type int var_20[8]; //----- (004A4FD0) -------------------------------------------------------- unsigned __int64 __stdcall std::num_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, int a4, int *a5, _BYTE *a6) { _BYTE *v6; // edi struct _Unwind_Exception *v8; // eax int v9; // ecx struct _Unwind_Exception *v10; // edi int v11; // eax bool v12; // dl int v13; // eax struct _Unwind_Exception *v14; // ebp unsigned int v15; // edi unsigned int v16; // eax bool v17; // cl char v18; // si char v19; // bl char v20; // bl _BYTE *v21; // eax int v22; // eax int v23; // eax unsigned int v24; // eax bool v25; // bl struct _Unwind_Exception *v26; // edi unsigned int v27; // ebp int v28; // eax unsigned int v29; // eax bool v30; // [esp+2Bh] [ebp-31h] bool v31; // [esp+2Ch] [ebp-30h] char v32; // [esp+2Dh] [ebp-2Fh] char v33; // [esp+2Eh] [ebp-2Eh] char v34; // [esp+2Eh] [ebp-2Eh] bool v35; // [esp+2Eh] [ebp-2Eh] bool v36; // [esp+2Eh] [ebp-2Eh] bool v37; // [esp+2Fh] [ebp-2Dh] unsigned int v38[8]; // [esp+3Ch] [ebp-20h] BYREF if ( (*(_BYTE *)(a4 + 12) & 1) == 0 ) { v38[0] = -1; a1 = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, (int *)v38); if ( v38[0] > 1 ) { *a6 = 1; *a5 = 4; if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) *a5 |= 2u; } else { v6 = a6; *a6 = v38[0]; *v6 &= 1u; } return a1; } v8 = std::__use_cache>::operator()((int *)(a4 + 108)); v9 = *((_DWORD *)v8 + 8); v10 = v8; v11 = *((_DWORD *)v8 + 6); v12 = v9 == 0; v31 = v11 == 0; if ( !(v11 | v9) ) goto LABEL_41; v32 = 1; v13 = HIDWORD(a1); v30 = 1; v14 = v10; v15 = 0; while ( 1 ) { v18 = v13 == -1; v19 = ((_DWORD)a1 != 0) & v18; if ( v19 ) { v18 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v35 = v12; v23 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); v12 = v35; if ( v23 == -1 ) { LODWORD(a1) = 0; v18 = v19; } } } v20 = a3 == -1; v34 = v20 & (a2 != 0); if ( v34 ) { v20 = 0; if ( a2[2] >= a2[3] ) { v37 = v12; v22 = (*(int (**)(void))(*a2 + 36))(); v12 = v37; if ( v22 == -1 ) { a2 = 0; v20 = v34; } } } if ( v20 == v18 ) { v33 = 1; v24 = v15; v25 = v30; v26 = v14; v27 = v24; LABEL_45: if ( v25 && *((_DWORD *)v26 + 8) == v27 && v27 ) { *a6 = 0; if ( v32 && *((_DWORD *)v26 + 6) == v27 ) goto LABEL_42; } else { if ( !v32 || *((_DWORD *)v26 + 6) != v27 || !v27 ) { *a6 = 0; if ( !v33 ) goto LABEL_42; *a5 = 6; return a1; } *a6 = 1; } v28 = 2 * (v33 != 0); LABEL_62: *a5 = v28; return a1; } LOBYTE(v21) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v21 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v21 >= *(_DWORD *)(a1 + 12) ) { v36 = v12; v21 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); v12 = v36; if ( v21 == (_BYTE *)-1 ) LODWORD(a1) = 0; } else { LOBYTE(v21) = *v21; } } if ( !v12 ) v30 = *(_BYTE *)(*((_DWORD *)v14 + 7) + v15) == (unsigned __int8)v21; if ( !v30 ) { if ( v31 ) { if ( v32 ) { if ( *((_DWORD *)v14 + 6) == v15 && v15 ) { *a6 = 1; v28 = 0; goto LABEL_62; } goto LABEL_41; } LABEL_43: *a6 = 0; *a5 = 4; return a1; } LABEL_8: v32 = *(_BYTE *)(*((_DWORD *)v14 + 5) + v15) == (unsigned __int8)v21; goto LABEL_9; } if ( !v31 ) goto LABEL_8; LABEL_9: v33 = v12 & (v32 ^ 1); if ( v33 ) break; if ( !(v30 | (unsigned __int8)v32) ) goto LABEL_43; ++v15; v16 = *(_DWORD *)(a1 + 8); if ( v16 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v16 + 1; HIDWORD(a1) = -1; if ( !v30 ) { v12 = v32; LABEL_29: v31 = *((_DWORD *)v14 + 6) <= v15; v32 |= v30; v17 = v12 && v31; goto LABEL_16; } v12 = *((_DWORD *)v14 + 8) <= v15; if ( v32 ) goto LABEL_29; v17 = *((_DWORD *)v14 + 8) <= v15; v31 = v30; LABEL_16: v13 = -1; if ( v17 ) { v29 = v15; v25 = v30; v26 = v14; v27 = v29; goto LABEL_45; } } if ( !v30 ) goto LABEL_43; if ( *((_DWORD *)v14 + 8) == v15 && v15 ) { *a6 = 0; v28 = 0; goto LABEL_62; } LABEL_41: *a6 = 0; LABEL_42: *a5 = 4; return a1; } // 4A4FD0: using guessed type unsigned int var_20[8]; //----- (004A5430) -------------------------------------------------------- int __stdcall std::num_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, double *a6) { char v6; // al int v7; // ecx int v8; // eax int v10; // eax char v11; // dl bool v12; // zf int v13; // eax unsigned int v14; // [esp+4h] [ebp-84h] char v15; // [esp+23h] [ebp-65h] int v16; // [esp+24h] [ebp-64h] char v17; // [esp+30h] [ebp-58h] unsigned __int64 v18; // [esp+34h] [ebp-54h] int v19; // [esp+78h] [ebp-10h] BYREF int v20[3]; // [esp+7Ch] [ebp-Ch] BYREF v19 = (int)std::string::_S_construct(0, 0); std::string::reserve(&v19, (std::string *)0x20, v14); v18 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, &v19); v16 = v18; v20[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v((unsigned __int8 *)v19, a6, a5); v17 = HIDWORD(v18) == -1; v15 = v17 & ((_DWORD)v18 != 0); if ( v15 ) { v17 = 0; if ( *(_DWORD *)(v18 + 8) >= *(_DWORD *)(v18 + 12) ) { v10 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v18 + 36))(v18); v11 = v15; v12 = v10 == -1; if ( v10 != -1 ) v11 = 0; v13 = 0; if ( !v12 ) v13 = v18; v17 = v11; v16 = v13; } } v6 = a3 == -1; if ( a2 ) { if ( a3 == -1 ) { v6 = 0; if ( a2[2] >= a2[3] ) v6 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; } } if ( v6 == v17 ) *a5 |= 2u; v7 = v19; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v19 - 4), 0xFFFFFFFF) > 0 ) return v16; LABEL_10: std::string::_Rep::_M_destroy((void *)(v7 - 12), (int)v20); return v16; } v8 = *(_DWORD *)(v19 - 4); *(_DWORD *)(v19 - 4) = v8 - 1; if ( v8 <= 0 ) goto LABEL_10; return v16; } // 4A54B0: variable 'v14' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 4A5430: using guessed type int var_C[3]; //----- (004A5650) -------------------------------------------------------- int __stdcall std::num_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, long double *a6) { char v6; // al char *v7; // ecx int v8; // eax int v10; // eax char v11; // dl bool v12; // zf int v13; // eax unsigned int v14; // [esp+4h] [ebp-84h] char v15; // [esp+23h] [ebp-65h] int v16; // [esp+24h] [ebp-64h] char v17; // [esp+30h] [ebp-58h] unsigned __int64 v18; // [esp+34h] [ebp-54h] char *String; // [esp+78h] [ebp-10h] BYREF int v20[3]; // [esp+7Ch] [ebp-Ch] BYREF String = (char *)std::string::_S_construct(0, 0); std::string::reserve((int *)&String, (std::string *)0x20, v14); v18 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (int *)&String); v16 = v18; v20[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String, a6, a5); v17 = HIDWORD(v18) == -1; v15 = v17 & ((_DWORD)v18 != 0); if ( v15 ) { v17 = 0; if ( *(_DWORD *)(v18 + 8) >= *(_DWORD *)(v18 + 12) ) { v10 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v18 + 36))(v18); v11 = v15; v12 = v10 == -1; if ( v10 != -1 ) v11 = 0; v13 = 0; if ( !v12 ) v13 = v18; v17 = v11; v16 = v13; } } v6 = a3 == -1; if ( a2 ) { if ( a3 == -1 ) { v6 = 0; if ( a2[2] >= a2[3] ) v6 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; } } if ( v6 == v17 ) *a5 |= 2u; v7 = String; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF) > 0 ) return v16; LABEL_10: std::string::_Rep::_M_destroy(v7 - 12, (int)v20); return v16; } v8 = *((_DWORD *)String - 1); *((_DWORD *)String - 1) = v8 - 1; if ( v8 <= 0 ) goto LABEL_10; return v16; } // 4A56D0: variable 'v14' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 4A5650: using guessed type int var_C[3]; //----- (004A5870) -------------------------------------------------------- int __stdcall std::num_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, float *a6) { char v6; // al int v7; // ecx int v8; // eax int v10; // eax char v11; // dl bool v12; // zf int v13; // eax unsigned int v14; // [esp+4h] [ebp-84h] char v15; // [esp+23h] [ebp-65h] int v16; // [esp+24h] [ebp-64h] char v17; // [esp+30h] [ebp-58h] unsigned __int64 v18; // [esp+34h] [ebp-54h] int v19; // [esp+78h] [ebp-10h] BYREF int v20[3]; // [esp+7Ch] [ebp-Ch] BYREF v19 = (int)std::string::_S_construct(0, 0); std::string::reserve(&v19, (std::string *)0x20, v14); v18 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, &v19); v16 = v18; v20[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v((unsigned __int8 *)v19, a6, a5); v17 = HIDWORD(v18) == -1; v15 = v17 & ((_DWORD)v18 != 0); if ( v15 ) { v17 = 0; if ( *(_DWORD *)(v18 + 8) >= *(_DWORD *)(v18 + 12) ) { v10 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v18 + 36))(v18); v11 = v15; v12 = v10 == -1; if ( v10 != -1 ) v11 = 0; v13 = 0; if ( !v12 ) v13 = v18; v17 = v11; v16 = v13; } } v6 = a3 == -1; if ( a2 ) { if ( a3 == -1 ) { v6 = 0; if ( a2[2] >= a2[3] ) v6 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; } } if ( v6 == v17 ) *a5 |= 2u; v7 = v19; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v19 - 4), 0xFFFFFFFF) > 0 ) return v16; LABEL_10: std::string::_Rep::_M_destroy((void *)(v7 - 12), (int)v20); return v16; } v8 = *(_DWORD *)(v19 - 4); *(_DWORD *)(v19 - 4) = v8 - 1; if ( v8 <= 0 ) goto LABEL_10; return v16; } // 4A58F0: variable 'v14' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 4A5870: using guessed type int var_C[3]; //----- (004A5AF0) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7) { int v7; // eax char v8; // al unsigned int v9; // eax unsigned int v10; // edx __int16 *v11; // eax __int16 v12; // ax bool v13; // zf _DWORD *v14; // eax _DWORD *v15; // ebx unsigned int v16; // eax unsigned int v17; // edx __int16 *v18; // eax __int16 v19; // ax bool v20; // zf _DWORD *v21; // eax int v22; // eax int v23; // eax _DWORD *v24; // ecx unsigned int v25; // eax unsigned int v26; // edx __int16 *v27; // eax __int16 v28; // ax bool v29; // zf _DWORD *v30; // eax int *v31; // eax bool v33; // al unsigned __int16 *v34; // eax _DWORD *v35; // eax _WORD *v36; // eax unsigned int v37; // edx unsigned int v38; // edx int v39; // eax bool v40; // cc int v41; // edx int v42; // eax _DWORD *v43; // ecx unsigned int v44; // eax unsigned int v45; // edx __int16 *v46; // eax __int16 v47; // ax bool v48; // zf _DWORD *v49; // eax unsigned __int16 *v50; // eax _DWORD *v51; // eax __int16 *v52; // eax __int16 v53; // ax bool v54; // zf _DWORD *v55; // eax bool v56; // bl unsigned __int16 *v57; // eax _DWORD *v58; // eax size_t v59; // edx size_t v60; // ecx __int16 *v61; // eax __int16 v62; // ax bool v63; // zf _DWORD *v64; // eax bool v65; // dl __int16 *v66; // eax __int16 v67; // ax bool v68; // zf _DWORD *v69; // eax bool v70; // cl int v71; // edx unsigned __int16 *v72; // eax _DWORD *v73; // eax _DWORD *v74; // eax __int16 *v75; // eax __int16 v76; // ax bool v77; // zf _DWORD *v78; // eax bool v79; // bl __int16 *v80; // eax __int16 v81; // ax bool v82; // zf _DWORD *v83; // eax bool v84; // dl unsigned __int16 *v85; // eax _DWORD *v86; // edx __int16 *v87; // eax __int16 v88; // ax bool v89; // zf _DWORD *v90; // eax bool v91; // bl char v92; // bl unsigned int v93; // [esp+8h] [ebp-B0h] std::locale::_Impl *v94; // [esp+14h] [ebp-A4h] unsigned int v95; // [esp+1Ch] [ebp-9Ch] int v96; // [esp+20h] [ebp-98h] unsigned int v97; // [esp+24h] [ebp-94h] bool v98; // [esp+2Dh] [ebp-8Bh] char v99; // [esp+2Eh] [ebp-8Ah] int v100; // [esp+30h] [ebp-88h] char v101; // [esp+30h] [ebp-88h] _DWORD *v102; // [esp+34h] [ebp-84h] char v103; // [esp+38h] [ebp-80h] int v104; // [esp+38h] [ebp-80h] size_t v105; // [esp+38h] [ebp-80h] char v106; // [esp+3Dh] [ebp-7Bh] char v107; // [esp+3Eh] [ebp-7Ah] char v108; // [esp+3Eh] [ebp-7Ah] char v109; // [esp+3Eh] [ebp-7Ah] char v110; // [esp+3Eh] [ebp-7Ah] char v111; // [esp+40h] [ebp-78h] char v112; // [esp+40h] [ebp-78h] unsigned int v113; // [esp+40h] [ebp-78h] bool v114; // [esp+44h] [ebp-74h] char v115; // [esp+48h] [ebp-70h] char v116; // [esp+48h] [ebp-70h] bool v117; // [esp+48h] [ebp-70h] int *v118; // [esp+4Ch] [ebp-6Ch] unsigned int v119; // [esp+4Ch] [ebp-6Ch] int v120; // [esp+50h] [ebp-68h] _DWORD *v121; // [esp+54h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] bool lpuexcpta; // [esp+58h] [ebp-60h] unsigned __int16 lpuexcptb; // [esp+58h] [ebp-60h] char lpuexcptc; // [esp+58h] [ebp-60h] struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] char lpuexcpte; // [esp+58h] [ebp-60h] void *Block; // [esp+98h] [ebp-20h] BYREF size_t v129; // [esp+9Ch] [ebp-1Ch] int v130[5]; // [esp+A0h] [ebp-18h] BYREF v121 = a1; v102 = a3; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v118 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); v120 = *v118; if ( !*v118 ) { v74 = operator new(0xA8u); v74[1] = 0; *v74 = &off_5605C0; v74[2] = 0; v74[3] = 0; *((_BYTE *)v74 + 16) = 0; v74[5] = 0; v74[6] = 0; v74[7] = 0; v74[8] = 0; v74[9] = 0; *((_BYTE *)v74 + 164) = 0; v94 = (std::locale::_Impl *)v74; std::__numpunct_cache::_M_cache((int)v74, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); v120 = *v118; } v119 = 8; v100 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v100 != 64 ) { v7 = 10; if ( v100 == 8 ) v7 = 16; v119 = v7; } lpuexcpta = a2 == 0xFFFF; if ( lpuexcpta && a1 != 0 ) { v75 = (__int16 *)a1[2]; if ( (unsigned int)v75 >= a1[3] ) v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v76 = *v75; v77 = v76 == -1; v78 = 0; if ( !v77 ) v78 = a1; v79 = lpuexcpta && a1 != 0; v121 = v78; if ( !v77 ) v79 = 0; v103 = v79; } else { v103 = a2 == 0xFFFF; } v114 = a4 == -1; if ( v114 && a3 != 0 ) { v80 = (__int16 *)a3[2]; if ( (unsigned int)v80 >= a3[3] ) v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v81 = *v80; v82 = v81 == -1; v83 = 0; if ( !v82 ) v83 = a3; v84 = v114 && a3 != 0; v102 = v83; if ( !v82 ) v84 = 0; v115 = v84; } else { v115 = a4 == -1; } if ( v115 != v103 ) { if ( v121 && a2 == 0xFFFF ) { v72 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v72 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v72; v73 = 0; if ( lpuexcptb != 0xFFFF ) v73 = v121; v121 = v73; } else { lpuexcptb = a2; } v8 = *(_BYTE *)(v120 + 16); v98 = *(_WORD *)(v120 + 112) == lpuexcptb; if ( *(_WORD *)(v120 + 112) == lpuexcptb || *(_WORD *)(v120 + 114) == lpuexcptb ) { if ( (!v8 || *(_WORD *)(v120 + 38) != lpuexcptb) && *(_WORD *)(v120 + 36) != lpuexcptb ) { v9 = v121[2]; v10 = v121[3]; if ( v9 >= v10 ) { (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v11 = (__int16 *)v121[2]; v10 = v121[3]; } else { v11 = (__int16 *)(v9 + 2); v121[2] = v11; } if ( (unsigned int)v11 >= v10 ) v12 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else v12 = *v11; v13 = v12 == -1; v14 = 0; if ( !v13 ) v14 = v121; v111 = v13; v121 = v14; if ( v114 && v102 != 0 ) { v87 = (__int16 *)v102[2]; if ( (unsigned int)v87 >= v102[3] ) v88 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); else v88 = *v87; v89 = v88 == -1; v90 = 0; if ( !v89 ) v90 = v102; v91 = v114 && v102 != 0; v102 = v90; if ( !v89 ) v91 = 0; v116 = v91; } else { v116 = a4 == -1; } if ( v111 == v116 ) { v106 = 1; v104 = 0; v117 = 0; goto LABEL_49; } if ( v121 ) { v85 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v85 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v85; v86 = 0; if ( lpuexcptb != 0xFFFF ) v86 = v121; v8 = *(_BYTE *)(v120 + 16); v121 = v86; } else { lpuexcptb = -1; v8 = *(_BYTE *)(v120 + 16); } } } else { v98 = 0; } v104 = 0; v117 = 0; while ( 1 ) { if ( v8 && *(_WORD *)(v120 + 38) == lpuexcptb || *(_WORD *)(v120 + 36) == lpuexcptb ) { LABEL_178: v106 = 0; goto LABEL_49; } if ( *(_WORD *)(v120 + 120) != lpuexcptb ) break; v33 = v119 == 10 || !v117; if ( !v33 ) goto LABEL_36; v117 = v100 == 0 || v119 == 8; if ( !v117 ) { ++v104; v117 = v33; goto LABEL_40; } v15 = v121; v104 = 0; v119 = 8; v16 = v121[2]; v17 = v121[3]; if ( v16 < v17 ) { LABEL_41: v18 = (__int16 *)(v16 + 2); v15[2] = v18; if ( v17 > (unsigned int)v18 ) goto LABEL_42; goto LABEL_85; } LABEL_84: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v18 = (__int16 *)v121[2]; if ( v121[3] > (unsigned int)v18 ) { LABEL_42: v19 = *v18; goto LABEL_43; } LABEL_85: v19 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); LABEL_43: v20 = v19 == -1; v21 = 0; if ( !v20 ) v21 = v121; v107 = v20; v121 = v21; if ( v114 && v102 != 0 ) { v52 = (__int16 *)v102[2]; if ( (unsigned int)v52 >= v102[3] ) v53 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); else v53 = *v52; v54 = v53 == -1; v55 = 0; if ( !v54 ) v55 = v102; v56 = v114 && v102 != 0; v102 = v55; if ( !v54 ) v56 = 0; v112 = v56; } else { v112 = a4 == -1; } if ( v112 == v107 ) { v106 = 1; goto LABEL_49; } lpuexcptb = -1; if ( v121 ) { v34 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v34 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v34; v35 = 0; if ( lpuexcptb != 0xFFFF ) v35 = v121; v121 = v35; } if ( !v117 ) { v106 = 0; goto LABEL_49; } v8 = *(_BYTE *)(v120 + 16); } if ( !v117 ) goto LABEL_178; LABEL_36: if ( *(_WORD *)(v120 + 116) != lpuexcptb && *(_WORD *)(v120 + 118) != lpuexcptb ) { v106 = 0; v117 = 1; goto LABEL_49; } if ( v100 != 0 && v119 != 16 ) { v106 = 0; v95 = v119; v96 = v119; v117 = 1; goto LABEL_52; } v104 = 0; v117 = 0; v119 = 16; LABEL_40: v15 = v121; v16 = v121[2]; v17 = v121[3]; if ( v16 < v17 ) goto LABEL_41; goto LABEL_84; } v98 = 0; lpuexcptb = 0; v106 = 1; v104 = 0; v117 = 0; LABEL_49: v22 = 22; if ( v119 != 16 ) v22 = v119; v95 = v22; v96 = v22; LABEL_52: v129 = 0; Block = v130; LOBYTE(v130[0]) = 0; if ( *(_BYTE *)(v120 + 16) ) std::string::reserve(&Block, 0x20u); v97 = 0xFFFFFFFF / v119; v99 = *(_BYTE *)(v120 + 164); if ( !v99 ) { if ( !v106 ) { v101 = 0; v113 = 0; while ( v96 > 10 ) { if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) goto LABEL_60; if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) { if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) goto LABEL_102; v23 = lpuexcptb - 55; goto LABEL_61; } v23 = lpuexcptb - 87; if ( v97 < v113 ) { LABEL_62: v24 = v121; v101 = 1; v25 = v121[2]; v26 = v121[3]; if ( v25 < v26 ) goto LABEL_63; goto LABEL_118; } LABEL_117: v101 |= ~v23 < v119 * v113; v24 = v121; v113 = v119 * v113 + v23; v26 = v121[3]; v25 = v121[2]; ++v104; if ( v25 < v26 ) { LABEL_63: v27 = (__int16 *)(v25 + 2); v24[2] = v27; goto LABEL_64; } LABEL_118: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v27 = (__int16 *)v121[2]; v26 = v121[3]; LABEL_64: if ( v26 <= (unsigned int)v27 ) v28 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else v28 = *v27; v29 = v28 == -1; v30 = 0; if ( !v29 ) v30 = v121; v108 = v29; v121 = v30; if ( v114 && v102 != 0 ) { v66 = (__int16 *)v102[2]; if ( (unsigned int)v66 >= v102[3] ) v67 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); else v67 = *v66; v68 = v67 == -1; v69 = 0; if ( !v68 ) v69 = v102; v70 = v114 && v102 != 0; v102 = v69; if ( !v68 ) v70 = 0; lpuexcptc = v70; } else { lpuexcptc = a4 == -1; } if ( v108 == lpuexcptc ) { v99 = 1; lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; goto LABEL_72; } if ( v121 ) { v57 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v57 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v57; v58 = 0; if ( lpuexcptb != 0xFFFF ) v58 = v121; v121 = v58; } else { lpuexcptb = -1; } } if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v96 + 48) <= lpuexcptb ) goto LABEL_102; LABEL_60: v23 = lpuexcptb - 48; LABEL_61: if ( v97 < v113 ) goto LABEL_62; goto LABEL_117; } v92 = v106; v101 = 0; v106 = 0; lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; v99 = v92; v113 = 0; goto LABEL_72; } if ( v106 ) { v113 = 0; v101 = 0; lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; v99 = v106; v106 = 0; LABEL_72: if ( lpuexcptd ) goto LABEL_103; LABEL_73: if ( v117 || v104 ) goto LABEL_111; goto LABEL_75; } v101 = 0; v113 = 0; while ( 1 ) { if ( *(_BYTE *)(v120 + 16) && *(_WORD *)(v120 + 38) == lpuexcptb ) { v31 = (int *)Block; lpuexcptd = (struct _Unwind_Exception *)v129; if ( !v104 ) { v99 = 0; v106 = *(_BYTE *)(v120 + 16); goto LABEL_72; } v110 = v104; v59 = 15; if ( Block != v130 ) v59 = v130[0]; v105 = v129 + 1; if ( v129 + 1 > v59 ) { std::string::_M_mutate((int)&Block, v129, 0, 0, 1u); v31 = (int *)Block; } v60 = v105; v104 = 0; *((_BYTE *)lpuexcptd + (_DWORD)v31) = v110; v129 = v60; *((_BYTE *)Block + v60) = 0; LABEL_123: v43 = v121; v44 = v121[2]; v45 = v121[3]; if ( v44 < v45 ) goto LABEL_124; goto LABEL_134; } if ( lpuexcptb == *(_WORD *)(v120 + 36) ) break; v36 = (_WORD *)(v120 + 120); v37 = v95; while ( *v36 != lpuexcptb ) { ++v36; if ( !--v37 ) goto LABEL_102; } v39 = (int)v36 - v120 - 120; v40 = v39 <= 30; v41 = (v39 >> 1) - 6; v42 = v39 >> 1; if ( !v40 ) v42 = v41; if ( v97 < v113 ) { v101 = v99; goto LABEL_123; } v101 |= ~v42 < v119 * v113; v43 = v121; v113 = v119 * v113 + v42; v45 = v121[3]; v44 = v121[2]; ++v104; if ( v44 < v45 ) { LABEL_124: v46 = (__int16 *)(v44 + 2); v43[2] = v46; goto LABEL_125; } LABEL_134: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v46 = (__int16 *)v121[2]; v45 = v121[3]; LABEL_125: if ( v45 <= (unsigned int)v46 ) v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else v47 = *v46; v48 = v47 == -1; v49 = 0; if ( !v48 ) v49 = v121; v109 = v48; v121 = v49; if ( v114 && v102 != 0 ) { v61 = (__int16 *)v102[2]; if ( (unsigned int)v61 >= v102[3] ) v62 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); else v62 = *v61; v63 = v62 == -1; v64 = 0; if ( !v63 ) v64 = v102; v65 = v114 && v102 != 0; v102 = v64; if ( !v63 ) v65 = 0; lpuexcpte = v65; } else { lpuexcpte = a4 == -1; } if ( v109 == lpuexcpte ) { lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; goto LABEL_72; } if ( v121 ) { v50 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v50 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v50; v51 = 0; if ( lpuexcptb != 0xFFFF ) v51 = v121; v121 = v51; } else { lpuexcptb = -1; } } LABEL_102: v99 = 0; lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; if ( !v129 ) goto LABEL_73; LABEL_103: v38 = 15; if ( v31 != v130 ) v38 = v130[0]; if ( (unsigned int)lpuexcptd + 1 > v38 ) { std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); v31 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v31) = v104; v129 = (size_t)lpuexcptd + 1; *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v120 + 8), *(_DWORD *)(v120 + 12), (int)&Block) ) *a6 = 4; v31 = (int *)Block; if ( !v117 && !(v129 | v104) ) { LABEL_75: *a7 = 0; *a6 = 4; goto LABEL_76; } LABEL_111: if ( v106 ) goto LABEL_75; if ( v101 ) { *a7 = -1; *a6 = 4; } else { v71 = -v113; if ( !v98 ) v71 = v113; *a7 = v71; } LABEL_76: if ( v99 ) *a6 |= 2u; if ( v31 != v130 ) operator delete(v31); return v121; } // 4A66D0: variable 'v93' is possibly undefined // 53F72C: using guessed type signed __int32 std::numpunct::id; // 5605C0: using guessed type int (*off_5605C0)(); //----- (004A6AE0) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7) { int v7; // eax char v8; // al unsigned int v9; // eax unsigned int v10; // edx __int16 *v11; // eax __int16 v12; // ax bool v13; // zf _DWORD *v14; // eax _DWORD *v15; // ebx unsigned int v16; // eax unsigned int v17; // edx __int16 *v18; // eax __int16 v19; // ax bool v20; // zf _DWORD *v21; // eax int v22; // eax int v23; // eax _DWORD *v24; // ecx unsigned int v25; // eax unsigned int v26; // edx __int16 *v27; // eax __int16 v28; // ax bool v29; // zf _DWORD *v30; // eax int *v31; // eax bool v33; // al unsigned __int16 *v34; // eax _DWORD *v35; // eax _WORD *v36; // eax unsigned int v37; // edx unsigned int v38; // edx int v39; // eax bool v40; // cc int v41; // edx int v42; // eax _DWORD *v43; // ecx unsigned int v44; // eax unsigned int v45; // edx __int16 *v46; // eax __int16 v47; // ax bool v48; // zf _DWORD *v49; // eax unsigned __int16 *v50; // eax _DWORD *v51; // eax __int16 *v52; // eax __int16 v53; // ax bool v54; // zf _DWORD *v55; // eax bool v56; // bl unsigned __int16 *v57; // eax _DWORD *v58; // eax size_t v59; // edx size_t v60; // edx __int16 *v61; // eax __int16 v62; // ax bool v63; // zf _DWORD *v64; // eax bool v65; // bl __int16 *v66; // eax __int16 v67; // ax bool v68; // zf _DWORD *v69; // eax bool v70; // bl int v71; // edx unsigned __int16 *v72; // eax _DWORD *v73; // eax _DWORD *v74; // eax __int16 *v75; // eax __int16 v76; // ax bool v77; // zf _DWORD *v78; // eax bool v79; // cl __int16 *v80; // eax __int16 v81; // ax bool v82; // zf _DWORD *v83; // eax bool v84; // cl unsigned __int16 *v85; // eax _DWORD *v86; // edx __int16 *v87; // eax __int16 v88; // ax bool v89; // zf _DWORD *v90; // eax bool v91; // dl char v92; // bl unsigned int v93; // [esp+8h] [ebp-C0h] std::locale::_Impl *v94; // [esp+1Ch] [ebp-ACh] bool v95; // [esp+20h] [ebp-A8h] unsigned int v96; // [esp+28h] [ebp-A0h] unsigned int v97; // [esp+2Ch] [ebp-9Ch] int v98; // [esp+30h] [ebp-98h] unsigned int v99; // [esp+34h] [ebp-94h] char v100; // [esp+3Eh] [ebp-8Ah] int v101; // [esp+40h] [ebp-88h] char v102; // [esp+40h] [ebp-88h] _DWORD *v103; // [esp+44h] [ebp-84h] char v104; // [esp+48h] [ebp-80h] int v105; // [esp+48h] [ebp-80h] size_t v106; // [esp+48h] [ebp-80h] char v107; // [esp+4Dh] [ebp-7Bh] char v108; // [esp+4Eh] [ebp-7Ah] char v109; // [esp+4Eh] [ebp-7Ah] char v110; // [esp+4Eh] [ebp-7Ah] char v111; // [esp+4Eh] [ebp-7Ah] char v112; // [esp+50h] [ebp-78h] char v113; // [esp+50h] [ebp-78h] unsigned int v114; // [esp+50h] [ebp-78h] bool v115; // [esp+54h] [ebp-74h] char v116; // [esp+58h] [ebp-70h] char v117; // [esp+58h] [ebp-70h] bool v118; // [esp+58h] [ebp-70h] int *v119; // [esp+5Ch] [ebp-6Ch] unsigned int v120; // [esp+5Ch] [ebp-6Ch] int v121; // [esp+60h] [ebp-68h] _DWORD *v122; // [esp+64h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+68h] [ebp-60h] bool lpuexcpta; // [esp+68h] [ebp-60h] unsigned __int16 lpuexcptb; // [esp+68h] [ebp-60h] char lpuexcptc; // [esp+68h] [ebp-60h] struct _Unwind_Exception *lpuexcptd; // [esp+68h] [ebp-60h] char lpuexcpte; // [esp+68h] [ebp-60h] void *Block; // [esp+A8h] [ebp-20h] BYREF size_t v130; // [esp+ACh] [ebp-1Ch] int v131[5]; // [esp+B0h] [ebp-18h] BYREF v122 = a1; v103 = a3; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v119 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); v121 = *v119; if ( !*v119 ) { v74 = operator new(0xA8u); v74[1] = 0; *v74 = &off_5605C0; v74[2] = 0; v74[3] = 0; *((_BYTE *)v74 + 16) = 0; v74[5] = 0; v74[6] = 0; v74[7] = 0; v74[8] = 0; v74[9] = 0; *((_BYTE *)v74 + 164) = 0; v94 = (std::locale::_Impl *)v74; std::__numpunct_cache::_M_cache((int)v74, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); v121 = *v119; } v120 = 8; v101 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v101 != 64 ) { v7 = 10; if ( v101 == 8 ) v7 = 16; v120 = v7; } lpuexcpta = a2 == 0xFFFF; if ( lpuexcpta && a1 != 0 ) { v75 = (__int16 *)a1[2]; if ( (unsigned int)v75 >= a1[3] ) v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v76 = *v75; v77 = v76 == -1; v78 = 0; if ( !v77 ) v78 = a1; v79 = lpuexcpta && a1 != 0; v122 = v78; if ( !v77 ) v79 = 0; v104 = v79; } else { v104 = a2 == 0xFFFF; } v115 = a4 == -1; if ( v115 && a3 != 0 ) { v80 = (__int16 *)a3[2]; if ( (unsigned int)v80 >= a3[3] ) v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v81 = *v80; v82 = v81 == -1; v83 = 0; if ( !v82 ) v83 = a3; v84 = v115 && a3 != 0; v103 = v83; if ( !v82 ) v84 = 0; v116 = v84; } else { v116 = a4 == -1; } if ( v116 != v104 ) { if ( v122 && a2 == 0xFFFF ) { v72 = (unsigned __int16 *)v122[2]; if ( (unsigned int)v72 >= v122[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else lpuexcptb = *v72; v73 = 0; if ( lpuexcptb != 0xFFFF ) v73 = v122; v122 = v73; } else { lpuexcptb = a2; } v8 = *(_BYTE *)(v121 + 16); v95 = *(_WORD *)(v121 + 112) == lpuexcptb; if ( *(_WORD *)(v121 + 112) == lpuexcptb || *(_WORD *)(v121 + 114) == lpuexcptb ) { if ( (!v8 || *(_WORD *)(v121 + 38) != lpuexcptb) && *(_WORD *)(v121 + 36) != lpuexcptb ) { v9 = v122[2]; v10 = v122[3]; if ( v9 >= v10 ) { (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v11 = (__int16 *)v122[2]; v10 = v122[3]; } else { v11 = (__int16 *)(v9 + 2); v122[2] = v11; } if ( (unsigned int)v11 >= v10 ) v12 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else v12 = *v11; v13 = v12 == -1; v14 = 0; if ( !v13 ) v14 = v122; v112 = v13; v122 = v14; if ( v115 && v103 != 0 ) { v87 = (__int16 *)v103[2]; if ( (unsigned int)v87 >= v103[3] ) v88 = (*(int (__fastcall **)(_DWORD *))(*v103 + 36))(v103); else v88 = *v87; v89 = v88 == -1; v90 = 0; if ( !v89 ) v90 = v103; v91 = v115 && v103 != 0; v103 = v90; if ( !v89 ) v91 = 0; v117 = v91; } else { v117 = a4 == -1; } if ( v112 == v117 ) { v107 = 1; v105 = 0; v118 = 0; goto LABEL_49; } if ( v122 ) { v85 = (unsigned __int16 *)v122[2]; if ( (unsigned int)v85 >= v122[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else lpuexcptb = *v85; v86 = 0; if ( lpuexcptb != 0xFFFF ) v86 = v122; v8 = *(_BYTE *)(v121 + 16); v122 = v86; } else { lpuexcptb = -1; v8 = *(_BYTE *)(v121 + 16); } } } else { v95 = 0; } v105 = 0; v118 = 0; while ( 1 ) { if ( v8 && *(_WORD *)(v121 + 38) == lpuexcptb || *(_WORD *)(v121 + 36) == lpuexcptb ) { LABEL_178: v107 = 0; goto LABEL_49; } if ( *(_WORD *)(v121 + 120) != lpuexcptb ) break; v33 = v120 == 10 || !v118; if ( !v33 ) goto LABEL_36; v118 = v101 == 0 || v120 == 8; if ( !v118 ) { ++v105; v118 = v33; goto LABEL_40; } v15 = v122; v105 = 0; v120 = 8; v16 = v122[2]; v17 = v122[3]; if ( v16 < v17 ) { LABEL_41: v18 = (__int16 *)(v16 + 2); v15[2] = v18; if ( (unsigned int)v18 < v17 ) goto LABEL_42; goto LABEL_85; } LABEL_84: (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v18 = (__int16 *)v122[2]; if ( (unsigned int)v18 < v122[3] ) { LABEL_42: v19 = *v18; goto LABEL_43; } LABEL_85: v19 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); LABEL_43: v20 = v19 == -1; v21 = 0; if ( !v20 ) v21 = v122; v108 = v20; v122 = v21; if ( v115 && v103 != 0 ) { v52 = (__int16 *)v103[2]; if ( (unsigned int)v52 >= v103[3] ) v53 = (*(int (__fastcall **)(_DWORD *))(*v103 + 36))(v103); else v53 = *v52; v54 = v53 == -1; v55 = 0; if ( !v54 ) v55 = v103; v56 = v115 && v103 != 0; v103 = v55; if ( !v54 ) v56 = 0; v113 = v56; } else { v113 = a4 == -1; } if ( v113 == v108 ) { v107 = 1; goto LABEL_49; } lpuexcptb = -1; if ( v122 ) { v34 = (unsigned __int16 *)v122[2]; if ( (unsigned int)v34 >= v122[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else lpuexcptb = *v34; v35 = 0; if ( lpuexcptb != 0xFFFF ) v35 = v122; v122 = v35; } if ( !v118 ) { v107 = 0; goto LABEL_49; } v8 = *(_BYTE *)(v121 + 16); } if ( !v118 ) goto LABEL_178; LABEL_36: if ( *(_WORD *)(v121 + 116) != lpuexcptb && *(_WORD *)(v121 + 118) != lpuexcptb ) { v107 = 0; v118 = 1; goto LABEL_49; } if ( v101 != 0 && v120 != 16 ) { v107 = 0; v96 = v120; v98 = v120; v118 = 1; goto LABEL_52; } v105 = 0; v118 = 0; v120 = 16; LABEL_40: v15 = v122; v16 = v122[2]; v17 = v122[3]; if ( v16 < v17 ) goto LABEL_41; goto LABEL_84; } v95 = 0; lpuexcptb = 0; v107 = 1; v105 = 0; v118 = 0; LABEL_49: v22 = 22; if ( v120 != 16 ) v22 = v120; v96 = v22; v98 = v22; LABEL_52: v130 = 0; Block = v131; LOBYTE(v131[0]) = 0; if ( *(_BYTE *)(v121 + 16) ) std::string::reserve(&Block, 0x20u); v97 = v95 + 0x7FFFFFFF; v99 = v97 / v120; v100 = *(_BYTE *)(v121 + 164); if ( !v100 ) { if ( !v107 ) { v102 = 0; v114 = 0; while ( v98 > 10 ) { if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) goto LABEL_60; if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) { if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) goto LABEL_102; v23 = lpuexcptb - 55; goto LABEL_61; } v23 = lpuexcptb - 87; if ( v99 < v114 ) { LABEL_62: v24 = v122; v102 = 1; v25 = v122[2]; v26 = v122[3]; if ( v25 < v26 ) goto LABEL_63; goto LABEL_118; } LABEL_117: v102 |= v97 - v23 < v120 * v114; v24 = v122; v114 = v120 * v114 + v23; v26 = v122[3]; v25 = v122[2]; ++v105; if ( v25 < v26 ) { LABEL_63: v27 = (__int16 *)(v25 + 2); v24[2] = v27; goto LABEL_64; } LABEL_118: (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v27 = (__int16 *)v122[2]; v26 = v122[3]; LABEL_64: if ( v26 <= (unsigned int)v27 ) v28 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else v28 = *v27; v29 = v28 == -1; v30 = 0; if ( !v29 ) v30 = v122; v109 = v29; v122 = v30; if ( v115 && v103 != 0 ) { v66 = (__int16 *)v103[2]; if ( (unsigned int)v66 >= v103[3] ) v67 = (*(int (__fastcall **)(_DWORD *))(*v103 + 36))(v103); else v67 = *v66; v68 = v67 == -1; v69 = 0; if ( !v68 ) v69 = v103; v70 = v115 && v103 != 0; v103 = v69; if ( !v68 ) v70 = 0; lpuexcptc = v70; } else { lpuexcptc = a4 == -1; } if ( v109 == lpuexcptc ) { v100 = 1; lpuexcptd = (struct _Unwind_Exception *)v130; v31 = (int *)Block; goto LABEL_72; } if ( v122 ) { v57 = (unsigned __int16 *)v122[2]; if ( (unsigned int)v57 >= v122[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else lpuexcptb = *v57; v58 = 0; if ( lpuexcptb != 0xFFFF ) v58 = v122; v122 = v58; } else { lpuexcptb = -1; } } if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v98 + 48) <= lpuexcptb ) goto LABEL_102; LABEL_60: v23 = lpuexcptb - 48; LABEL_61: if ( v99 < v114 ) goto LABEL_62; goto LABEL_117; } v92 = v107; v102 = 0; v107 = 0; lpuexcptd = (struct _Unwind_Exception *)v130; v31 = (int *)Block; v100 = v92; v114 = 0; goto LABEL_72; } if ( v107 ) { v114 = 0; v102 = 0; lpuexcptd = (struct _Unwind_Exception *)v130; v31 = (int *)Block; v100 = v107; v107 = 0; LABEL_72: if ( lpuexcptd ) goto LABEL_103; LABEL_73: if ( v118 || v105 ) goto LABEL_111; goto LABEL_75; } v102 = 0; v114 = 0; while ( 1 ) { if ( *(_BYTE *)(v121 + 16) && *(_WORD *)(v121 + 38) == lpuexcptb ) { v31 = (int *)Block; lpuexcptd = (struct _Unwind_Exception *)v130; if ( !v105 ) { v100 = 0; v107 = *(_BYTE *)(v121 + 16); goto LABEL_72; } v111 = v105; v59 = 15; if ( Block != v131 ) v59 = v131[0]; v106 = v130 + 1; if ( v130 + 1 > v59 ) { std::string::_M_mutate((int)&Block, v130, 0, 0, 1u); v31 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v31) = v111; v60 = v106; v105 = 0; v130 = v60; *((_BYTE *)Block + v60) = 0; LABEL_123: v43 = v122; v44 = v122[2]; v45 = v122[3]; if ( v44 < v45 ) goto LABEL_124; goto LABEL_134; } if ( lpuexcptb == *(_WORD *)(v121 + 36) ) break; v36 = (_WORD *)(v121 + 120); v37 = v96; while ( *v36 != lpuexcptb ) { ++v36; if ( !--v37 ) goto LABEL_102; } v39 = (int)v36 - v121 - 120; v40 = v39 <= 30; v41 = (v39 >> 1) - 6; v42 = v39 >> 1; if ( !v40 ) v42 = v41; if ( v99 < v114 ) { v102 = v100; goto LABEL_123; } v102 |= v97 - v42 < v120 * v114; v43 = v122; v114 = v120 * v114 + v42; v45 = v122[3]; v44 = v122[2]; ++v105; if ( v44 < v45 ) { LABEL_124: v46 = (__int16 *)(v44 + 2); v43[2] = v46; goto LABEL_125; } LABEL_134: (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v46 = (__int16 *)v122[2]; v45 = v122[3]; LABEL_125: if ( v45 <= (unsigned int)v46 ) v47 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else v47 = *v46; v48 = v47 == -1; v49 = 0; if ( !v48 ) v49 = v122; v110 = v48; v122 = v49; if ( v115 && v103 != 0 ) { v61 = (__int16 *)v103[2]; if ( (unsigned int)v61 >= v103[3] ) v62 = (*(int (__fastcall **)(_DWORD *))(*v103 + 36))(v103); else v62 = *v61; v63 = v62 == -1; v64 = 0; if ( !v63 ) v64 = v103; v65 = v115 && v103 != 0; v103 = v64; if ( !v63 ) v65 = 0; lpuexcpte = v65; } else { lpuexcpte = a4 == -1; } if ( lpuexcpte == v110 ) { lpuexcptd = (struct _Unwind_Exception *)v130; v31 = (int *)Block; goto LABEL_72; } if ( v122 ) { v50 = (unsigned __int16 *)v122[2]; if ( (unsigned int)v50 >= v122[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else lpuexcptb = *v50; v51 = 0; if ( lpuexcptb != 0xFFFF ) v51 = v122; v122 = v51; } else { lpuexcptb = -1; } } LABEL_102: v100 = 0; lpuexcptd = (struct _Unwind_Exception *)v130; v31 = (int *)Block; if ( !v130 ) goto LABEL_73; LABEL_103: v38 = 15; if ( v31 != v131 ) v38 = v131[0]; if ( (unsigned int)lpuexcptd + 1 > v38 ) { std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); v31 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v31) = v105; v130 = (size_t)lpuexcptd + 1; *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v121 + 8), *(_DWORD *)(v121 + 12), (int)&Block) ) *a6 = 4; v31 = (int *)Block; if ( !v118 && !(v130 | v105) ) { LABEL_75: *a7 = 0; *a6 = 4; goto LABEL_76; } LABEL_111: if ( v107 ) goto LABEL_75; if ( v102 ) { *a7 = v95 + 0x7FFFFFFF; *a6 = 4; } else { v71 = -v114; if ( !v95 ) v71 = v114; *a7 = v71; } LABEL_76: if ( v100 ) *a6 |= 2u; if ( v31 != v131 ) operator delete(v31); return v122; } // 4A76E0: variable 'v93' is possibly undefined // 53F72C: using guessed type signed __int32 std::numpunct::id; // 5605C0: using guessed type int (*off_5605C0)(); //----- (004A7AF0) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7) { int v7; // eax char v8; // al unsigned int v9; // eax unsigned int v10; // edx __int16 *v11; // eax __int16 v12; // ax bool v13; // zf _DWORD *v14; // eax _DWORD *v15; // ebx unsigned int v16; // eax unsigned int v17; // edx __int16 *v18; // eax __int16 v19; // ax bool v20; // zf _DWORD *v21; // eax int v22; // eax int v23; // eax _DWORD *v24; // ecx unsigned int v25; // eax unsigned int v26; // edx __int16 *v27; // eax __int16 v28; // ax bool v29; // zf _DWORD *v30; // eax int *v31; // eax bool v33; // al unsigned __int16 *v34; // eax _DWORD *v35; // eax _WORD *v36; // eax unsigned int v37; // edx unsigned int v38; // edx int v39; // eax bool v40; // cc int v41; // edx int v42; // eax _DWORD *v43; // ecx unsigned int v44; // eax unsigned int v45; // edx __int16 *v46; // eax __int16 v47; // ax bool v48; // zf _DWORD *v49; // eax unsigned __int16 *v50; // eax _DWORD *v51; // eax __int16 *v52; // eax __int16 v53; // ax bool v54; // zf _DWORD *v55; // eax bool v56; // bl unsigned __int16 *v57; // eax _DWORD *v58; // eax size_t v59; // edx size_t v60; // ecx __int16 *v61; // eax __int16 v62; // ax bool v63; // zf _DWORD *v64; // eax bool v65; // dl __int16 *v66; // eax __int16 v67; // ax bool v68; // zf _DWORD *v69; // eax bool v70; // cl int v71; // edx unsigned __int16 *v72; // eax _DWORD *v73; // eax _DWORD *v74; // eax __int16 *v75; // eax __int16 v76; // ax bool v77; // zf _DWORD *v78; // eax bool v79; // bl __int16 *v80; // eax __int16 v81; // ax bool v82; // zf _DWORD *v83; // eax bool v84; // dl unsigned __int16 *v85; // eax _DWORD *v86; // edx __int16 *v87; // eax __int16 v88; // ax bool v89; // zf _DWORD *v90; // eax bool v91; // bl char v92; // bl unsigned int v93; // [esp+8h] [ebp-B0h] std::locale::_Impl *v94; // [esp+14h] [ebp-A4h] unsigned int v95; // [esp+1Ch] [ebp-9Ch] int v96; // [esp+20h] [ebp-98h] unsigned int v97; // [esp+24h] [ebp-94h] bool v98; // [esp+2Dh] [ebp-8Bh] char v99; // [esp+2Eh] [ebp-8Ah] int v100; // [esp+30h] [ebp-88h] char v101; // [esp+30h] [ebp-88h] _DWORD *v102; // [esp+34h] [ebp-84h] char v103; // [esp+38h] [ebp-80h] int v104; // [esp+38h] [ebp-80h] size_t v105; // [esp+38h] [ebp-80h] char v106; // [esp+3Dh] [ebp-7Bh] char v107; // [esp+3Eh] [ebp-7Ah] char v108; // [esp+3Eh] [ebp-7Ah] char v109; // [esp+3Eh] [ebp-7Ah] char v110; // [esp+3Eh] [ebp-7Ah] char v111; // [esp+40h] [ebp-78h] char v112; // [esp+40h] [ebp-78h] unsigned int v113; // [esp+40h] [ebp-78h] bool v114; // [esp+44h] [ebp-74h] char v115; // [esp+48h] [ebp-70h] char v116; // [esp+48h] [ebp-70h] bool v117; // [esp+48h] [ebp-70h] int *v118; // [esp+4Ch] [ebp-6Ch] unsigned int v119; // [esp+4Ch] [ebp-6Ch] int v120; // [esp+50h] [ebp-68h] _DWORD *v121; // [esp+54h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] bool lpuexcpta; // [esp+58h] [ebp-60h] unsigned __int16 lpuexcptb; // [esp+58h] [ebp-60h] char lpuexcptc; // [esp+58h] [ebp-60h] struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] char lpuexcpte; // [esp+58h] [ebp-60h] void *Block; // [esp+98h] [ebp-20h] BYREF size_t v129; // [esp+9Ch] [ebp-1Ch] int v130[5]; // [esp+A0h] [ebp-18h] BYREF v121 = a1; v102 = a3; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v118 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); v120 = *v118; if ( !*v118 ) { v74 = operator new(0xA8u); v74[1] = 0; *v74 = &off_5605C0; v74[2] = 0; v74[3] = 0; *((_BYTE *)v74 + 16) = 0; v74[5] = 0; v74[6] = 0; v74[7] = 0; v74[8] = 0; v74[9] = 0; *((_BYTE *)v74 + 164) = 0; v94 = (std::locale::_Impl *)v74; std::__numpunct_cache::_M_cache((int)v74, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); v120 = *v118; } v119 = 8; v100 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v100 != 64 ) { v7 = 10; if ( v100 == 8 ) v7 = 16; v119 = v7; } lpuexcpta = a2 == 0xFFFF; if ( lpuexcpta && a1 != 0 ) { v75 = (__int16 *)a1[2]; if ( (unsigned int)v75 >= a1[3] ) v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v76 = *v75; v77 = v76 == -1; v78 = 0; if ( !v77 ) v78 = a1; v79 = lpuexcpta && a1 != 0; v121 = v78; if ( !v77 ) v79 = 0; v103 = v79; } else { v103 = a2 == 0xFFFF; } v114 = a4 == -1; if ( v114 && a3 != 0 ) { v80 = (__int16 *)a3[2]; if ( (unsigned int)v80 >= a3[3] ) v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v81 = *v80; v82 = v81 == -1; v83 = 0; if ( !v82 ) v83 = a3; v84 = v114 && a3 != 0; v102 = v83; if ( !v82 ) v84 = 0; v115 = v84; } else { v115 = a4 == -1; } if ( v115 != v103 ) { if ( v121 && a2 == 0xFFFF ) { v72 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v72 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v72; v73 = 0; if ( lpuexcptb != 0xFFFF ) v73 = v121; v121 = v73; } else { lpuexcptb = a2; } v8 = *(_BYTE *)(v120 + 16); v98 = *(_WORD *)(v120 + 112) == lpuexcptb; if ( *(_WORD *)(v120 + 112) == lpuexcptb || *(_WORD *)(v120 + 114) == lpuexcptb ) { if ( (!v8 || *(_WORD *)(v120 + 38) != lpuexcptb) && *(_WORD *)(v120 + 36) != lpuexcptb ) { v9 = v121[2]; v10 = v121[3]; if ( v9 >= v10 ) { (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v11 = (__int16 *)v121[2]; v10 = v121[3]; } else { v11 = (__int16 *)(v9 + 2); v121[2] = v11; } if ( (unsigned int)v11 >= v10 ) v12 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else v12 = *v11; v13 = v12 == -1; v14 = 0; if ( !v13 ) v14 = v121; v111 = v13; v121 = v14; if ( v114 && v102 != 0 ) { v87 = (__int16 *)v102[2]; if ( (unsigned int)v87 >= v102[3] ) v88 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); else v88 = *v87; v89 = v88 == -1; v90 = 0; if ( !v89 ) v90 = v102; v91 = v114 && v102 != 0; v102 = v90; if ( !v89 ) v91 = 0; v116 = v91; } else { v116 = a4 == -1; } if ( v111 == v116 ) { v106 = 1; v104 = 0; v117 = 0; goto LABEL_49; } if ( v121 ) { v85 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v85 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v85; v86 = 0; if ( lpuexcptb != 0xFFFF ) v86 = v121; v8 = *(_BYTE *)(v120 + 16); v121 = v86; } else { lpuexcptb = -1; v8 = *(_BYTE *)(v120 + 16); } } } else { v98 = 0; } v104 = 0; v117 = 0; while ( 1 ) { if ( v8 && *(_WORD *)(v120 + 38) == lpuexcptb || *(_WORD *)(v120 + 36) == lpuexcptb ) { LABEL_178: v106 = 0; goto LABEL_49; } if ( *(_WORD *)(v120 + 120) != lpuexcptb ) break; v33 = v119 == 10 || !v117; if ( !v33 ) goto LABEL_36; v117 = v100 == 0 || v119 == 8; if ( !v117 ) { ++v104; v117 = v33; goto LABEL_40; } v15 = v121; v104 = 0; v119 = 8; v16 = v121[2]; v17 = v121[3]; if ( v16 < v17 ) { LABEL_41: v18 = (__int16 *)(v16 + 2); v15[2] = v18; if ( v17 > (unsigned int)v18 ) goto LABEL_42; goto LABEL_85; } LABEL_84: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v18 = (__int16 *)v121[2]; if ( v121[3] > (unsigned int)v18 ) { LABEL_42: v19 = *v18; goto LABEL_43; } LABEL_85: v19 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); LABEL_43: v20 = v19 == -1; v21 = 0; if ( !v20 ) v21 = v121; v107 = v20; v121 = v21; if ( v114 && v102 != 0 ) { v52 = (__int16 *)v102[2]; if ( (unsigned int)v52 >= v102[3] ) v53 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); else v53 = *v52; v54 = v53 == -1; v55 = 0; if ( !v54 ) v55 = v102; v56 = v114 && v102 != 0; v102 = v55; if ( !v54 ) v56 = 0; v112 = v56; } else { v112 = a4 == -1; } if ( v112 == v107 ) { v106 = 1; goto LABEL_49; } lpuexcptb = -1; if ( v121 ) { v34 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v34 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v34; v35 = 0; if ( lpuexcptb != 0xFFFF ) v35 = v121; v121 = v35; } if ( !v117 ) { v106 = 0; goto LABEL_49; } v8 = *(_BYTE *)(v120 + 16); } if ( !v117 ) goto LABEL_178; LABEL_36: if ( *(_WORD *)(v120 + 116) != lpuexcptb && *(_WORD *)(v120 + 118) != lpuexcptb ) { v106 = 0; v117 = 1; goto LABEL_49; } if ( v100 != 0 && v119 != 16 ) { v106 = 0; v95 = v119; v96 = v119; v117 = 1; goto LABEL_52; } v104 = 0; v117 = 0; v119 = 16; LABEL_40: v15 = v121; v16 = v121[2]; v17 = v121[3]; if ( v16 < v17 ) goto LABEL_41; goto LABEL_84; } v98 = 0; lpuexcptb = 0; v106 = 1; v104 = 0; v117 = 0; LABEL_49: v22 = 22; if ( v119 != 16 ) v22 = v119; v95 = v22; v96 = v22; LABEL_52: v129 = 0; Block = v130; LOBYTE(v130[0]) = 0; if ( *(_BYTE *)(v120 + 16) ) std::string::reserve(&Block, 0x20u); v97 = 0xFFFFFFFF / v119; v99 = *(_BYTE *)(v120 + 164); if ( !v99 ) { if ( !v106 ) { v101 = 0; v113 = 0; while ( v96 > 10 ) { if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) goto LABEL_60; if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) { if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) goto LABEL_102; v23 = lpuexcptb - 55; goto LABEL_61; } v23 = lpuexcptb - 87; if ( v97 < v113 ) { LABEL_62: v24 = v121; v101 = 1; v25 = v121[2]; v26 = v121[3]; if ( v25 < v26 ) goto LABEL_63; goto LABEL_118; } LABEL_117: v101 |= ~v23 < v119 * v113; v24 = v121; v113 = v119 * v113 + v23; v26 = v121[3]; v25 = v121[2]; ++v104; if ( v25 < v26 ) { LABEL_63: v27 = (__int16 *)(v25 + 2); v24[2] = v27; goto LABEL_64; } LABEL_118: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v27 = (__int16 *)v121[2]; v26 = v121[3]; LABEL_64: if ( v26 <= (unsigned int)v27 ) v28 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else v28 = *v27; v29 = v28 == -1; v30 = 0; if ( !v29 ) v30 = v121; v108 = v29; v121 = v30; if ( v114 && v102 != 0 ) { v66 = (__int16 *)v102[2]; if ( (unsigned int)v66 >= v102[3] ) v67 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); else v67 = *v66; v68 = v67 == -1; v69 = 0; if ( !v68 ) v69 = v102; v70 = v114 && v102 != 0; v102 = v69; if ( !v68 ) v70 = 0; lpuexcptc = v70; } else { lpuexcptc = a4 == -1; } if ( v108 == lpuexcptc ) { v99 = 1; lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; goto LABEL_72; } if ( v121 ) { v57 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v57 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v57; v58 = 0; if ( lpuexcptb != 0xFFFF ) v58 = v121; v121 = v58; } else { lpuexcptb = -1; } } if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v96 + 48) <= lpuexcptb ) goto LABEL_102; LABEL_60: v23 = lpuexcptb - 48; LABEL_61: if ( v97 < v113 ) goto LABEL_62; goto LABEL_117; } v92 = v106; v101 = 0; v106 = 0; lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; v99 = v92; v113 = 0; goto LABEL_72; } if ( v106 ) { v113 = 0; v101 = 0; lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; v99 = v106; v106 = 0; LABEL_72: if ( lpuexcptd ) goto LABEL_103; LABEL_73: if ( v117 || v104 ) goto LABEL_111; goto LABEL_75; } v101 = 0; v113 = 0; while ( 1 ) { if ( *(_BYTE *)(v120 + 16) && *(_WORD *)(v120 + 38) == lpuexcptb ) { v31 = (int *)Block; lpuexcptd = (struct _Unwind_Exception *)v129; if ( !v104 ) { v99 = 0; v106 = *(_BYTE *)(v120 + 16); goto LABEL_72; } v110 = v104; v59 = 15; if ( Block != v130 ) v59 = v130[0]; v105 = v129 + 1; if ( v129 + 1 > v59 ) { std::string::_M_mutate((int)&Block, v129, 0, 0, 1u); v31 = (int *)Block; } v60 = v105; v104 = 0; *((_BYTE *)lpuexcptd + (_DWORD)v31) = v110; v129 = v60; *((_BYTE *)Block + v60) = 0; LABEL_123: v43 = v121; v44 = v121[2]; v45 = v121[3]; if ( v44 < v45 ) goto LABEL_124; goto LABEL_134; } if ( lpuexcptb == *(_WORD *)(v120 + 36) ) break; v36 = (_WORD *)(v120 + 120); v37 = v95; while ( *v36 != lpuexcptb ) { ++v36; if ( !--v37 ) goto LABEL_102; } v39 = (int)v36 - v120 - 120; v40 = v39 <= 30; v41 = (v39 >> 1) - 6; v42 = v39 >> 1; if ( !v40 ) v42 = v41; if ( v97 < v113 ) { v101 = v99; goto LABEL_123; } v101 |= ~v42 < v119 * v113; v43 = v121; v113 = v119 * v113 + v42; v45 = v121[3]; v44 = v121[2]; ++v104; if ( v44 < v45 ) { LABEL_124: v46 = (__int16 *)(v44 + 2); v43[2] = v46; goto LABEL_125; } LABEL_134: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v46 = (__int16 *)v121[2]; v45 = v121[3]; LABEL_125: if ( v45 <= (unsigned int)v46 ) v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else v47 = *v46; v48 = v47 == -1; v49 = 0; if ( !v48 ) v49 = v121; v109 = v48; v121 = v49; if ( v114 && v102 != 0 ) { v61 = (__int16 *)v102[2]; if ( (unsigned int)v61 >= v102[3] ) v62 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); else v62 = *v61; v63 = v62 == -1; v64 = 0; if ( !v63 ) v64 = v102; v65 = v114 && v102 != 0; v102 = v64; if ( !v63 ) v65 = 0; lpuexcpte = v65; } else { lpuexcpte = a4 == -1; } if ( v109 == lpuexcpte ) { lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; goto LABEL_72; } if ( v121 ) { v50 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v50 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v50; v51 = 0; if ( lpuexcptb != 0xFFFF ) v51 = v121; v121 = v51; } else { lpuexcptb = -1; } } LABEL_102: v99 = 0; lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; if ( !v129 ) goto LABEL_73; LABEL_103: v38 = 15; if ( v31 != v130 ) v38 = v130[0]; if ( (unsigned int)lpuexcptd + 1 > v38 ) { std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); v31 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v31) = v104; v129 = (size_t)lpuexcptd + 1; *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v120 + 8), *(_DWORD *)(v120 + 12), (int)&Block) ) *a6 = 4; v31 = (int *)Block; if ( !v117 && !(v129 | v104) ) { LABEL_75: *a7 = 0; *a6 = 4; goto LABEL_76; } LABEL_111: if ( v106 ) goto LABEL_75; if ( v101 ) { *a7 = -1; *a6 = 4; } else { v71 = -v113; if ( !v98 ) v71 = v113; *a7 = v71; } LABEL_76: if ( v99 ) *a6 |= 2u; if ( v31 != v130 ) operator delete(v31); return v121; } // 4A86D0: variable 'v93' is possibly undefined // 53F72C: using guessed type signed __int32 std::numpunct::id; // 5605C0: using guessed type int (*off_5605C0)(); //----- (004A8AE0) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _WORD *a7) { int v7; // eax char v8; // al unsigned int v9; // eax unsigned int v10; // edx __int16 *v11; // eax __int16 v12; // ax bool v13; // zf _DWORD *v14; // eax _DWORD *v15; // ebx unsigned int v16; // eax unsigned int v17; // edx __int16 *v18; // eax __int16 v19; // ax bool v20; // zf _DWORD *v21; // eax int v22; // eax int v23; // eax _DWORD *v24; // ecx unsigned int v25; // eax unsigned int v26; // edx __int16 *v27; // eax __int16 v28; // ax bool v29; // zf _DWORD *v30; // eax int *v31; // eax bool v33; // al unsigned __int16 *v34; // eax _DWORD *v35; // eax _WORD *v36; // eax int v37; // edx unsigned int v38; // edx int v39; // eax bool v40; // cc int v41; // edx int v42; // eax _DWORD *v43; // ecx unsigned int v44; // eax unsigned int v45; // edx __int16 *v46; // eax __int16 v47; // ax bool v48; // zf _DWORD *v49; // eax unsigned __int16 *v50; // eax _DWORD *v51; // eax __int16 *v52; // eax __int16 v53; // ax bool v54; // zf _DWORD *v55; // eax bool v56; // bl unsigned __int16 *v57; // eax _DWORD *v58; // eax size_t v59; // edx size_t v60; // edx __int16 *v61; // eax __int16 v62; // ax bool v63; // zf _DWORD *v64; // eax bool v65; // dl __int16 *v66; // eax __int16 v67; // ax bool v68; // zf _DWORD *v69; // eax bool v70; // bl int v71; // edx unsigned __int16 *v72; // eax _DWORD *v73; // eax _DWORD *v74; // eax __int16 *v75; // eax __int16 v76; // ax bool v77; // zf _DWORD *v78; // eax bool v79; // dl __int16 *v80; // eax __int16 v81; // ax bool v82; // zf _DWORD *v83; // eax bool v84; // dl unsigned __int16 *v85; // eax _DWORD *v86; // edx __int16 *v87; // eax __int16 v88; // ax bool v89; // zf _DWORD *v90; // eax bool v91; // dl char v92; // bl unsigned int v93; // [esp+8h] [ebp-B0h] std::locale::_Impl *v94; // [esp+14h] [ebp-A4h] int v95; // [esp+1Ch] [ebp-9Ch] int v96; // [esp+20h] [ebp-98h] int v97; // [esp+24h] [ebp-94h] bool v98; // [esp+2Dh] [ebp-8Bh] char v99; // [esp+2Eh] [ebp-8Ah] int v100; // [esp+30h] [ebp-88h] char v101; // [esp+30h] [ebp-88h] _DWORD *v102; // [esp+34h] [ebp-84h] char v103; // [esp+38h] [ebp-80h] int v104; // [esp+38h] [ebp-80h] size_t v105; // [esp+38h] [ebp-80h] char v106; // [esp+3Dh] [ebp-7Bh] char v107; // [esp+3Eh] [ebp-7Ah] char v108; // [esp+3Eh] [ebp-7Ah] char v109; // [esp+3Eh] [ebp-7Ah] char v110; // [esp+3Eh] [ebp-7Ah] char v111; // [esp+40h] [ebp-78h] char v112; // [esp+40h] [ebp-78h] unsigned __int16 v113; // [esp+40h] [ebp-78h] bool v114; // [esp+44h] [ebp-74h] char v115; // [esp+48h] [ebp-70h] char v116; // [esp+48h] [ebp-70h] bool v117; // [esp+48h] [ebp-70h] int *v118; // [esp+4Ch] [ebp-6Ch] int v119; // [esp+4Ch] [ebp-6Ch] int v120; // [esp+50h] [ebp-68h] _DWORD *v121; // [esp+54h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] bool lpuexcpta; // [esp+58h] [ebp-60h] unsigned __int16 lpuexcptb; // [esp+58h] [ebp-60h] char lpuexcptc; // [esp+58h] [ebp-60h] struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] char lpuexcpte; // [esp+58h] [ebp-60h] void *Block; // [esp+98h] [ebp-20h] BYREF size_t v129; // [esp+9Ch] [ebp-1Ch] int v130[5]; // [esp+A0h] [ebp-18h] BYREF v121 = a1; v102 = a3; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v118 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); v120 = *v118; if ( !*v118 ) { v74 = operator new(0xA8u); v74[1] = 0; *v74 = &off_5605C0; v74[2] = 0; v74[3] = 0; *((_BYTE *)v74 + 16) = 0; v74[5] = 0; v74[6] = 0; v74[7] = 0; v74[8] = 0; v74[9] = 0; *((_BYTE *)v74 + 164) = 0; v94 = (std::locale::_Impl *)v74; std::__numpunct_cache::_M_cache((int)v74, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); v120 = *v118; } v119 = 8; v100 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v100 != 64 ) { v7 = 10; if ( v100 == 8 ) v7 = 16; v119 = v7; } lpuexcpta = a2 == 0xFFFF; if ( lpuexcpta && a1 != 0 ) { v75 = (__int16 *)a1[2]; if ( (unsigned int)v75 >= a1[3] ) v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v76 = *v75; v77 = v76 == -1; v78 = 0; if ( !v77 ) v78 = a1; v79 = lpuexcpta && a1 != 0; v121 = v78; if ( !v77 ) v79 = 0; v103 = v79; } else { v103 = a2 == 0xFFFF; } v114 = a4 == -1; if ( v114 && a3 != 0 ) { v80 = (__int16 *)a3[2]; if ( (unsigned int)v80 >= a3[3] ) v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v81 = *v80; v82 = v81 == -1; v83 = 0; if ( !v82 ) v83 = a3; v84 = v114 && a3 != 0; v102 = v83; if ( !v82 ) v84 = 0; v115 = v84; } else { v115 = a4 == -1; } if ( v115 != v103 ) { if ( v121 && a2 == 0xFFFF ) { v72 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v72 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v72; v73 = 0; if ( lpuexcptb != 0xFFFF ) v73 = v121; v121 = v73; } else { lpuexcptb = a2; } v8 = *(_BYTE *)(v120 + 16); v98 = *(_WORD *)(v120 + 112) == lpuexcptb; if ( *(_WORD *)(v120 + 112) == lpuexcptb || *(_WORD *)(v120 + 114) == lpuexcptb ) { if ( (!v8 || *(_WORD *)(v120 + 38) != lpuexcptb) && *(_WORD *)(v120 + 36) != lpuexcptb ) { v9 = v121[2]; v10 = v121[3]; if ( v9 >= v10 ) { (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v11 = (__int16 *)v121[2]; v10 = v121[3]; } else { v11 = (__int16 *)(v9 + 2); v121[2] = v11; } if ( (unsigned int)v11 >= v10 ) v12 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else v12 = *v11; v13 = v12 == -1; v14 = 0; if ( !v13 ) v14 = v121; v111 = v13; v121 = v14; if ( v114 && v102 != 0 ) { v87 = (__int16 *)v102[2]; if ( (unsigned int)v87 >= v102[3] ) v88 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); else v88 = *v87; v89 = v88 == -1; v90 = 0; if ( !v89 ) v90 = v102; v91 = v114 && v102 != 0; v102 = v90; if ( !v89 ) v91 = 0; v116 = v91; } else { v116 = a4 == -1; } if ( v111 == v116 ) { v106 = 1; v104 = 0; v117 = 0; goto LABEL_49; } if ( v121 ) { v85 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v85 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v85; v86 = 0; if ( lpuexcptb != 0xFFFF ) v86 = v121; v8 = *(_BYTE *)(v120 + 16); v121 = v86; } else { lpuexcptb = -1; v8 = *(_BYTE *)(v120 + 16); } } } else { v98 = 0; } v104 = 0; v117 = 0; while ( 1 ) { if ( v8 && *(_WORD *)(v120 + 38) == lpuexcptb || *(_WORD *)(v120 + 36) == lpuexcptb ) { LABEL_178: v106 = 0; goto LABEL_49; } if ( *(_WORD *)(v120 + 120) != lpuexcptb ) break; v33 = v119 == 10 || !v117; if ( !v33 ) goto LABEL_36; v117 = v100 == 0 || v119 == 8; if ( !v117 ) { ++v104; v117 = v33; goto LABEL_40; } v15 = v121; v104 = 0; v119 = 8; v16 = v121[2]; v17 = v121[3]; if ( v16 < v17 ) { LABEL_41: v18 = (__int16 *)(v16 + 2); v15[2] = v18; if ( v17 > (unsigned int)v18 ) goto LABEL_42; goto LABEL_85; } LABEL_84: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v18 = (__int16 *)v121[2]; if ( v121[3] > (unsigned int)v18 ) { LABEL_42: v19 = *v18; goto LABEL_43; } LABEL_85: v19 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); LABEL_43: v20 = v19 == -1; v21 = 0; if ( !v20 ) v21 = v121; v107 = v20; v121 = v21; if ( v114 && v102 != 0 ) { v52 = (__int16 *)v102[2]; if ( (unsigned int)v52 >= v102[3] ) v53 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); else v53 = *v52; v54 = v53 == -1; v55 = 0; if ( !v54 ) v55 = v102; v56 = v114 && v102 != 0; v102 = v55; if ( !v54 ) v56 = 0; v112 = v56; } else { v112 = a4 == -1; } if ( v112 == v107 ) { v106 = 1; goto LABEL_49; } lpuexcptb = -1; if ( v121 ) { v34 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v34 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v34; v35 = 0; if ( lpuexcptb != 0xFFFF ) v35 = v121; v121 = v35; } if ( !v117 ) { v106 = 0; goto LABEL_49; } v8 = *(_BYTE *)(v120 + 16); } if ( !v117 ) goto LABEL_178; LABEL_36: if ( *(_WORD *)(v120 + 116) != lpuexcptb && *(_WORD *)(v120 + 118) != lpuexcptb ) { v106 = 0; v117 = 1; goto LABEL_49; } if ( v100 != 0 && v119 != 16 ) { v106 = 0; v95 = v119; v96 = v119; v117 = 1; goto LABEL_52; } v104 = 0; v117 = 0; v119 = 16; LABEL_40: v15 = v121; v16 = v121[2]; v17 = v121[3]; if ( v16 < v17 ) goto LABEL_41; goto LABEL_84; } v98 = 0; lpuexcptb = 0; v106 = 1; v104 = 0; v117 = 0; LABEL_49: v22 = 22; if ( v119 != 16 ) v22 = v119; v95 = v22; v96 = v22; LABEL_52: v129 = 0; Block = v130; LOBYTE(v130[0]) = 0; if ( *(_BYTE *)(v120 + 16) ) std::string::reserve(&Block, 0x20u); v97 = 0xFFFF / v119; v99 = *(_BYTE *)(v120 + 164); if ( !v99 ) { if ( !v106 ) { v101 = 0; v113 = 0; while ( v96 > 10 ) { if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) goto LABEL_60; if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) { if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) goto LABEL_102; v23 = lpuexcptb - 55; goto LABEL_61; } v23 = lpuexcptb - 87; if ( (unsigned __int16)v97 < v113 ) { LABEL_62: v24 = v121; v101 = 1; v25 = v121[2]; v26 = v121[3]; if ( v25 < v26 ) goto LABEL_63; goto LABEL_118; } LABEL_117: v101 |= (unsigned __int16)(v119 * v113) > 0xFFFF - v23; v24 = v121; v113 = v119 * v113 + v23; v26 = v121[3]; v25 = v121[2]; ++v104; if ( v25 < v26 ) { LABEL_63: v27 = (__int16 *)(v25 + 2); v24[2] = v27; goto LABEL_64; } LABEL_118: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v27 = (__int16 *)v121[2]; v26 = v121[3]; LABEL_64: if ( v26 <= (unsigned int)v27 ) v28 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else v28 = *v27; v29 = v28 == -1; v30 = 0; if ( !v29 ) v30 = v121; v108 = v29; v121 = v30; if ( v114 && v102 != 0 ) { v66 = (__int16 *)v102[2]; if ( (unsigned int)v66 >= v102[3] ) v67 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); else v67 = *v66; v68 = v67 == -1; v69 = 0; if ( !v68 ) v69 = v102; v70 = v114 && v102 != 0; v102 = v69; if ( !v68 ) v70 = 0; lpuexcptc = v70; } else { lpuexcptc = a4 == -1; } if ( v108 == lpuexcptc ) { v99 = 1; lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; goto LABEL_72; } if ( v121 ) { v57 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v57 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v57; v58 = 0; if ( lpuexcptb != 0xFFFF ) v58 = v121; v121 = v58; } else { lpuexcptb = -1; } } if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v96 + 48) <= lpuexcptb ) goto LABEL_102; LABEL_60: v23 = lpuexcptb - 48; LABEL_61: if ( (unsigned __int16)v97 < v113 ) goto LABEL_62; goto LABEL_117; } v92 = v106; v101 = 0; v106 = 0; v99 = v92; lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; v113 = 0; goto LABEL_72; } if ( v106 ) { v101 = 0; v113 = 0; lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; v99 = v106; v106 = 0; LABEL_72: if ( lpuexcptd ) goto LABEL_103; LABEL_73: if ( v117 || v104 ) goto LABEL_111; goto LABEL_75; } v101 = 0; v113 = 0; while ( 1 ) { if ( *(_BYTE *)(v120 + 16) && *(_WORD *)(v120 + 38) == lpuexcptb ) { v31 = (int *)Block; lpuexcptd = (struct _Unwind_Exception *)v129; if ( !v104 ) { v99 = 0; v106 = *(_BYTE *)(v120 + 16); goto LABEL_72; } v110 = v104; v59 = 15; if ( Block != v130 ) v59 = v130[0]; v105 = v129 + 1; if ( v129 + 1 > v59 ) { std::string::_M_mutate((int)&Block, v129, 0, 0, 1u); v31 = (int *)Block; } v60 = v105; v104 = 0; *((_BYTE *)lpuexcptd + (_DWORD)v31) = v110; v129 = v60; *((_BYTE *)Block + v60) = 0; LABEL_123: v43 = v121; v44 = v121[2]; v45 = v121[3]; if ( v44 < v45 ) goto LABEL_124; goto LABEL_134; } if ( lpuexcptb == *(_WORD *)(v120 + 36) ) break; v36 = (_WORD *)(v120 + 120); v37 = v95; while ( *v36 != lpuexcptb ) { ++v36; if ( !--v37 ) goto LABEL_102; } v39 = (int)v36 - v120 - 120; v40 = v39 <= 30; v41 = (v39 >> 1) - 6; v42 = v39 >> 1; if ( !v40 ) v42 = v41; if ( (unsigned __int16)v97 < v113 ) { v101 = v99; goto LABEL_123; } v101 |= (unsigned __int16)(v119 * v113) > 0xFFFF - v42; v43 = v121; v113 = v119 * v113 + v42; v45 = v121[3]; v44 = v121[2]; ++v104; if ( v44 < v45 ) { LABEL_124: v46 = (__int16 *)(v44 + 2); v43[2] = v46; goto LABEL_125; } LABEL_134: (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); v46 = (__int16 *)v121[2]; v45 = v121[3]; LABEL_125: if ( v45 <= (unsigned int)v46 ) v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else v47 = *v46; v48 = v47 == -1; v49 = 0; if ( !v48 ) v49 = v121; v109 = v48; v121 = v49; if ( v114 && v102 != 0 ) { v61 = (__int16 *)v102[2]; if ( (unsigned int)v61 >= v102[3] ) v62 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); else v62 = *v61; v63 = v62 == -1; v64 = 0; if ( !v63 ) v64 = v102; v65 = v114 && v102 != 0; v102 = v64; if ( !v63 ) v65 = 0; lpuexcpte = v65; } else { lpuexcpte = a4 == -1; } if ( v109 == lpuexcpte ) { lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; goto LABEL_72; } if ( v121 ) { v50 = (unsigned __int16 *)v121[2]; if ( (unsigned int)v50 >= v121[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); else lpuexcptb = *v50; v51 = 0; if ( lpuexcptb != 0xFFFF ) v51 = v121; v121 = v51; } else { lpuexcptb = -1; } } LABEL_102: v99 = 0; lpuexcptd = (struct _Unwind_Exception *)v129; v31 = (int *)Block; if ( !v129 ) goto LABEL_73; LABEL_103: v38 = 15; if ( v31 != v130 ) v38 = v130[0]; if ( (unsigned int)lpuexcptd + 1 > v38 ) { std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); v31 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v31) = v104; v129 = (size_t)lpuexcptd + 1; *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v120 + 8), *(_DWORD *)(v120 + 12), (int)&Block) ) *a6 = 4; v31 = (int *)Block; if ( !v117 && !(v129 | v104) ) { LABEL_75: *a7 = 0; *a6 = 4; goto LABEL_76; } LABEL_111: if ( v106 ) goto LABEL_75; if ( v101 ) { *a7 = -1; *a6 = 4; } else { v71 = -v113; if ( !v98 ) LOWORD(v71) = v113; *a7 = v71; } LABEL_76: if ( v99 ) *a6 |= 2u; if ( v31 != v130 ) operator delete(v31); return v121; } // 4A96E0: variable 'v93' is possibly undefined // 53F72C: using guessed type signed __int32 std::numpunct::id; // 5605C0: using guessed type int (*off_5605C0)(); //----- (004A9AF0) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7) { int v7; // eax char v8; // al unsigned int v9; // eax unsigned int v10; // edx __int16 *v11; // eax __int16 v12; // ax bool v13; // zf _DWORD *v14; // eax _DWORD *v15; // edi unsigned int v16; // eax unsigned int v17; // edx __int16 *v18; // eax __int16 v19; // ax bool v20; // zf _DWORD *v21; // eax int v22; // eax unsigned __int64 v23; // kr00_8 int v24; // esi _DWORD *v25; // ecx unsigned int v26; // eax unsigned int v27; // edx __int16 *v28; // eax __int16 v29; // ax bool v30; // zf _DWORD *v31; // eax int *v32; // eax bool v34; // al unsigned __int16 *v35; // eax _DWORD *v36; // eax _WORD *v37; // eax int v38; // edx unsigned int v39; // edx int v40; // ecx unsigned int v41; // ebx int v42; // eax int v43; // esi _DWORD *v44; // ebx unsigned int v45; // eax unsigned int v46; // edx __int16 *v47; // eax __int16 v48; // ax bool v49; // zf _DWORD *v50; // eax unsigned __int16 *v51; // eax _DWORD *v52; // eax __int16 *v53; // eax __int16 v54; // ax bool v55; // zf _DWORD *v56; // eax bool v57; // si unsigned __int16 *v58; // eax _DWORD *v59; // eax char v60; // bl size_t v61; // edx size_t v62; // ebx __int16 *v63; // eax __int16 v64; // ax bool v65; // zf _DWORD *v66; // eax bool v67; // cl __int16 *v68; // eax __int16 v69; // ax bool v70; // zf _DWORD *v71; // eax bool v72; // bl unsigned __int16 *v73; // eax _DWORD *v74; // eax _DWORD *v75; // eax __int16 *v76; // eax __int16 v77; // ax bool v78; // zf _DWORD *v79; // eax bool v80; // si __int16 *v81; // eax __int16 v82; // ax bool v83; // zf _DWORD *v84; // eax bool v85; // si unsigned __int16 *v86; // eax _DWORD *v87; // edx __int16 *v88; // eax __int16 v89; // ax bool v90; // zf _DWORD *v91; // eax bool v92; // bl char v93; // bl unsigned int v94; // [esp+8h] [ebp-D0h] std::locale::_Impl *v95; // [esp+14h] [ebp-C4h] int v96; // [esp+1Ch] [ebp-BCh] unsigned __int64 v97; // [esp+20h] [ebp-B8h] int v98; // [esp+28h] [ebp-B0h] bool v99; // [esp+39h] [ebp-9Fh] char v100; // [esp+3Ah] [ebp-9Eh] _DWORD *v101; // [esp+3Ch] [ebp-9Ch] int v102; // [esp+40h] [ebp-98h] __int64 v103; // [esp+40h] [ebp-98h] int v104; // [esp+48h] [ebp-90h] size_t v105; // [esp+48h] [ebp-90h] char v106; // [esp+4Ch] [ebp-8Ch] char v107; // [esp+4Dh] [ebp-8Bh] char v108; // [esp+4Dh] [ebp-8Bh] char v109; // [esp+4Dh] [ebp-8Bh] char v110; // [esp+4Eh] [ebp-8Ah] char v111; // [esp+4Eh] [ebp-8Ah] char v112; // [esp+4Eh] [ebp-8Ah] char v113; // [esp+4Eh] [ebp-8Ah] bool v114; // [esp+50h] [ebp-88h] char v115; // [esp+54h] [ebp-84h] char v116; // [esp+54h] [ebp-84h] bool v117; // [esp+54h] [ebp-84h] int *v118; // [esp+58h] [ebp-80h] int v119; // [esp+58h] [ebp-80h] unsigned __int64 v120; // [esp+58h] [ebp-80h] int v121; // [esp+60h] [ebp-78h] _DWORD *v122; // [esp+64h] [ebp-74h] struct _Unwind_Exception *lpuexcpt; // [esp+68h] [ebp-70h] bool lpuexcpta; // [esp+68h] [ebp-70h] unsigned __int16 lpuexcptb; // [esp+68h] [ebp-70h] char lpuexcptc; // [esp+68h] [ebp-70h] struct _Unwind_Exception *lpuexcptd; // [esp+68h] [ebp-70h] char lpuexcpte; // [esp+68h] [ebp-70h] void *Block; // [esp+A8h] [ebp-30h] BYREF size_t v130; // [esp+ACh] [ebp-2Ch] int v131[10]; // [esp+B0h] [ebp-28h] BYREF v122 = a1; v101 = a3; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v118 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); v121 = *v118; if ( !*v118 ) { v75 = operator new(0xA8u); v75[1] = 0; *v75 = &off_5605C0; v75[2] = 0; v75[3] = 0; *((_BYTE *)v75 + 16) = 0; v75[5] = 0; v75[6] = 0; v75[7] = 0; v75[8] = 0; v75[9] = 0; *((_BYTE *)v75 + 164) = 0; v95 = (std::locale::_Impl *)v75; std::__numpunct_cache::_M_cache((int)v75, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v95, lpuexcpt, v94); v121 = *v118; } v119 = 8; v102 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v102 != 64 ) { v7 = 10; if ( v102 == 8 ) v7 = 16; v119 = v7; } lpuexcpta = a2 == 0xFFFF; if ( lpuexcpta && a1 != 0 ) { v76 = (__int16 *)a1[2]; if ( (unsigned int)v76 >= a1[3] ) v77 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v77 = *v76; v78 = v77 == -1; v79 = 0; if ( !v78 ) v79 = a1; v80 = lpuexcpta && a1 != 0; v122 = v79; if ( !v78 ) v80 = 0; v107 = v80; } else { v107 = a2 == 0xFFFF; } v114 = a4 == -1; if ( v114 && a3 != 0 ) { v81 = (__int16 *)a3[2]; if ( (unsigned int)v81 >= a3[3] ) v82 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v82 = *v81; v83 = v82 == -1; v84 = 0; if ( !v83 ) v84 = a3; v85 = v114 && a3 != 0; v101 = v84; if ( !v83 ) v85 = 0; v115 = v85; } else { v115 = a4 == -1; } if ( v115 != v107 ) { if ( v122 && a2 == 0xFFFF ) { v73 = (unsigned __int16 *)v122[2]; if ( (unsigned int)v73 >= v122[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else lpuexcptb = *v73; v74 = 0; if ( lpuexcptb != 0xFFFF ) v74 = v122; v122 = v74; } else { lpuexcptb = a2; } v8 = *(_BYTE *)(v121 + 16); v99 = *(_WORD *)(v121 + 112) == lpuexcptb; if ( *(_WORD *)(v121 + 112) == lpuexcptb || *(_WORD *)(v121 + 114) == lpuexcptb ) { if ( (!v8 || *(_WORD *)(v121 + 38) != lpuexcptb) && *(_WORD *)(v121 + 36) != lpuexcptb ) { v9 = v122[2]; v10 = v122[3]; if ( v9 >= v10 ) { (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v11 = (__int16 *)v122[2]; v10 = v122[3]; } else { v11 = (__int16 *)(v9 + 2); v122[2] = v11; } if ( (unsigned int)v11 >= v10 ) v12 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else v12 = *v11; v13 = v12 == -1; v14 = 0; if ( !v13 ) v14 = v122; v110 = v13; v122 = v14; if ( v114 && v101 != 0 ) { v88 = (__int16 *)v101[2]; if ( (unsigned int)v88 >= v101[3] ) v89 = (*(int (__fastcall **)(_DWORD *))(*v101 + 36))(v101); else v89 = *v88; v90 = v89 == -1; v91 = 0; if ( !v90 ) v91 = v101; v92 = v114 && v101 != 0; v101 = v91; if ( !v90 ) v92 = 0; v116 = v92; } else { v116 = a4 == -1; } if ( v110 == v116 ) { v106 = 1; v104 = 0; v117 = 0; goto LABEL_49; } if ( v122 ) { v86 = (unsigned __int16 *)v122[2]; if ( (unsigned int)v86 >= v122[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else lpuexcptb = *v86; v87 = 0; if ( lpuexcptb != 0xFFFF ) v87 = v122; v8 = *(_BYTE *)(v121 + 16); v122 = v87; } else { lpuexcptb = -1; v8 = *(_BYTE *)(v121 + 16); } } } else { v99 = 0; } v117 = 0; v104 = 0; while ( 1 ) { if ( v8 && *(_WORD *)(v121 + 38) == lpuexcptb || *(_WORD *)(v121 + 36) == lpuexcptb ) { LABEL_182: v106 = 0; goto LABEL_49; } if ( *(_WORD *)(v121 + 120) != lpuexcptb ) break; v34 = v119 == 10 || !v117; if ( !v34 ) goto LABEL_36; v117 = v102 == 0 || v119 == 8; if ( !v117 ) { ++v104; v117 = v34; goto LABEL_40; } v15 = v122; v119 = 8; v104 = 0; v16 = v122[2]; v17 = v122[3]; if ( v16 < v17 ) { LABEL_41: v18 = (__int16 *)(v16 + 2); v15[2] = v18; if ( (unsigned int)v18 < v17 ) goto LABEL_42; goto LABEL_87; } LABEL_86: (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v18 = (__int16 *)v122[2]; if ( (unsigned int)v18 < v122[3] ) { LABEL_42: v19 = *v18; goto LABEL_43; } LABEL_87: v19 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); LABEL_43: v20 = v19 == -1; v21 = 0; if ( !v20 ) v21 = v122; v108 = v20; v122 = v21; if ( v114 && v101 != 0 ) { v53 = (__int16 *)v101[2]; if ( (unsigned int)v53 >= v101[3] ) v54 = (*(int (__fastcall **)(_DWORD *))(*v101 + 36))(v101); else v54 = *v53; v55 = v54 == -1; v56 = 0; if ( !v55 ) v56 = v101; v57 = v114 && v101 != 0; v101 = v56; if ( !v55 ) v57 = 0; v111 = v57; } else { v111 = a4 == -1; } if ( v111 == v108 ) { v106 = 1; goto LABEL_49; } lpuexcptb = -1; if ( v122 ) { v35 = (unsigned __int16 *)v122[2]; if ( (unsigned int)v35 >= v122[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else lpuexcptb = *v35; v36 = 0; if ( lpuexcptb != 0xFFFF ) v36 = v122; v122 = v36; } if ( !v117 ) { v106 = 0; goto LABEL_49; } v8 = *(_BYTE *)(v121 + 16); } if ( !v117 ) goto LABEL_182; LABEL_36: if ( *(_WORD *)(v121 + 116) != lpuexcptb && *(_WORD *)(v121 + 118) != lpuexcptb ) { v106 = 0; v117 = 1; goto LABEL_49; } if ( v102 != 0 && v119 != 16 ) { v106 = 0; v96 = v119; v98 = v119; v117 = 1; goto LABEL_52; } v104 = 0; v117 = 0; v119 = 16; LABEL_40: v15 = v122; v16 = v122[2]; v17 = v122[3]; if ( v16 < v17 ) goto LABEL_41; goto LABEL_86; } v99 = 0; lpuexcptb = 0; v106 = 1; v104 = 0; v117 = 0; LABEL_49: v22 = 22; if ( v119 != 16 ) v22 = v119; v96 = v22; v98 = v22; LABEL_52: v130 = 0; Block = v131; LOBYTE(v131[0]) = 0; if ( *(_BYTE *)(v121 + 16) ) std::string::reserve(&Block, 0x20u); v97 = 0x8000000000000000LL; if ( !v99 ) v97 = 0x7FFFFFFFFFFFFFFFLL; v103 = v119; v23 = v97 / v119; v100 = *(_BYTE *)(v121 + 164); if ( !v100 ) { if ( !v106 ) { v109 = 0; v120 = 0LL; while ( v98 > 10 ) { if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) goto LABEL_62; if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) { if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) goto LABEL_104; v24 = lpuexcptb - 55; } else { v24 = lpuexcptb - 87; } LABEL_63: if ( v23 >= v120 ) { v109 |= v97 - v24 < v103 * v120; v25 = v122; v120 = v103 * v120 + v24; v26 = v122[2]; v27 = v122[3]; ++v104; if ( v26 < v27 ) { LABEL_65: v28 = (__int16 *)(v26 + 2); v25[2] = v28; goto LABEL_66; } } else { v25 = v122; v109 = 1; v26 = v122[2]; v27 = v122[3]; if ( v26 < v27 ) goto LABEL_65; } (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v28 = (__int16 *)v122[2]; v27 = v122[3]; LABEL_66: if ( v27 <= (unsigned int)v28 ) v29 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else v29 = *v28; v30 = v29 == -1; v31 = 0; if ( !v30 ) v31 = v122; v112 = v30; v122 = v31; if ( v114 && v101 != 0 ) { v68 = (__int16 *)v101[2]; if ( (unsigned int)v68 >= v101[3] ) v69 = (*(int (__fastcall **)(_DWORD *))(*v101 + 36))(v101); else v69 = *v68; v70 = v69 == -1; v71 = 0; if ( !v70 ) v71 = v101; v72 = v114 && v101 != 0; v101 = v71; if ( !v70 ) v72 = 0; lpuexcptc = v72; } else { lpuexcptc = a4 == -1; } if ( v112 == lpuexcptc ) { v100 = 1; lpuexcptd = (struct _Unwind_Exception *)v130; v32 = (int *)Block; goto LABEL_74; } if ( v122 ) { v58 = (unsigned __int16 *)v122[2]; if ( (unsigned int)v58 >= v122[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else lpuexcptb = *v58; v59 = 0; if ( lpuexcptb != 0xFFFF ) v59 = v122; v122 = v59; } else { lpuexcptb = -1; } } if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v98 + 48) <= lpuexcptb ) goto LABEL_104; LABEL_62: v24 = lpuexcptb - 48; goto LABEL_63; } v93 = v106; v109 = 0; v106 = 0; lpuexcptd = (struct _Unwind_Exception *)v130; v32 = (int *)Block; v100 = v93; v120 = 0LL; goto LABEL_74; } if ( v106 ) { v120 = 0LL; lpuexcptd = (struct _Unwind_Exception *)v130; v32 = (int *)Block; v100 = v106; v109 = 0; v106 = 0; LABEL_74: if ( lpuexcptd ) goto LABEL_105; LABEL_75: if ( v117 || v104 ) goto LABEL_113; goto LABEL_77; } v109 = 0; v120 = 0LL; while ( 1 ) { if ( *(_BYTE *)(v121 + 16) && *(_WORD *)(v121 + 38) == lpuexcptb ) { v32 = (int *)Block; lpuexcptd = (struct _Unwind_Exception *)v130; if ( !v104 ) { v100 = 0; v106 = *(_BYTE *)(v121 + 16); goto LABEL_74; } v60 = v104; v61 = 15; if ( Block != v131 ) v61 = v131[0]; v105 = v130 + 1; if ( v130 + 1 > v61 ) { std::string::_M_mutate((int)&Block, v130, 0, 0, 1u); v32 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v32) = v60; v62 = v105; v104 = 0; v130 = v62; *((_BYTE *)Block + v62) = 0; LABEL_127: v44 = v122; v45 = v122[2]; v46 = v122[3]; if ( v45 < v46 ) goto LABEL_128; goto LABEL_138; } if ( lpuexcptb == *(_WORD *)(v121 + 36) ) break; v37 = (_WORD *)(v121 + 120); v38 = v96; while ( *v37 != lpuexcptb ) { ++v37; if ( !--v38 ) goto LABEL_104; } v42 = (int)v37 - v121 - 120; v43 = (v42 >> 1) - 6; if ( v42 <= 30 ) v43 = v42 >> 1; if ( v23 < v120 ) { v109 = v100; goto LABEL_127; } v44 = v122; v109 |= v97 - v43 < v103 * v120; v45 = v122[2]; v46 = v122[3]; v120 = v103 * v120 + v43; ++v104; if ( v45 < v46 ) { LABEL_128: v47 = (__int16 *)(v45 + 2); v44[2] = v47; goto LABEL_129; } LABEL_138: (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); v47 = (__int16 *)v122[2]; v46 = v122[3]; LABEL_129: if ( v46 <= (unsigned int)v47 ) v48 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else v48 = *v47; v49 = v48 == -1; v50 = 0; if ( !v49 ) v50 = v122; v113 = v49; v122 = v50; if ( v114 && v101 != 0 ) { v63 = (__int16 *)v101[2]; if ( (unsigned int)v63 >= v101[3] ) v64 = (*(int (__fastcall **)(_DWORD *))(*v101 + 36))(v101); else v64 = *v63; v65 = v64 == -1; v66 = 0; if ( !v65 ) v66 = v101; v67 = v114 && v101 != 0; v101 = v66; if ( !v65 ) v67 = 0; lpuexcpte = v67; } else { lpuexcpte = a4 == -1; } if ( lpuexcpte == v113 ) { lpuexcptd = (struct _Unwind_Exception *)v130; v32 = (int *)Block; goto LABEL_74; } if ( v122 ) { v51 = (unsigned __int16 *)v122[2]; if ( (unsigned int)v51 >= v122[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); else lpuexcptb = *v51; v52 = 0; if ( lpuexcptb != 0xFFFF ) v52 = v122; v122 = v52; } else { lpuexcptb = -1; } } LABEL_104: v100 = 0; lpuexcptd = (struct _Unwind_Exception *)v130; v32 = (int *)Block; if ( !v130 ) goto LABEL_75; LABEL_105: v39 = 15; if ( v32 != v131 ) v39 = v131[0]; if ( (unsigned int)lpuexcptd + 1 > v39 ) { std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); v32 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v32) = v104; v130 = (size_t)lpuexcptd + 1; *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v121 + 8), *(_DWORD *)(v121 + 12), (int)&Block) ) *a6 = 4; v32 = (int *)Block; if ( !v117 && !(v130 | v104) ) { LABEL_77: *a7 = 0; a7[1] = 0; *a6 = 4; goto LABEL_78; } LABEL_113: if ( v106 ) goto LABEL_77; if ( v109 ) { v40 = 0; v41 = 0x80000000; if ( !v99 ) { v40 = -1; v41 = 0x7FFFFFFF; } *a7 = v40; a7[1] = v41; *a6 = 4; } else { if ( v99 ) v120 = -(__int64)v120; *(_QWORD *)a7 = v120; } LABEL_78: if ( v100 ) *a6 |= 2u; if ( v32 != v131 ) operator delete(v32); return v122; } // 4AA912: variable 'v94' is possibly undefined // 53F72C: using guessed type signed __int32 std::numpunct::id; // 5605C0: using guessed type int (*off_5605C0)(); //----- (004AAD90) -------------------------------------------------------- _DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( _DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7) { int v7; // eax char v8; // al unsigned int v9; // eax unsigned int v10; // edx __int16 *v11; // eax __int16 v12; // ax bool v13; // zf _DWORD *v14; // eax _DWORD *v15; // edi unsigned int v16; // eax unsigned int v17; // edx __int16 *v18; // eax __int16 v19; // ax bool v20; // zf _DWORD *v21; // eax int v22; // eax unsigned __int64 v23; // kr08_8 int v24; // esi _DWORD *v25; // ecx unsigned int v26; // eax unsigned int v27; // edx __int16 *v28; // eax __int16 v29; // ax bool v30; // zf _DWORD *v31; // eax int *v32; // eax bool v34; // al unsigned __int16 *v35; // eax _DWORD *v36; // eax _WORD *v37; // eax int v38; // edx unsigned int v39; // edx int v40; // eax int v41; // esi _DWORD *v42; // ebx unsigned int v43; // eax unsigned int v44; // edx __int16 *v45; // eax __int16 v46; // ax bool v47; // zf _DWORD *v48; // eax unsigned __int16 *v49; // eax _DWORD *v50; // eax __int16 *v51; // eax __int16 v52; // ax bool v53; // zf _DWORD *v54; // eax bool v55; // bl unsigned __int16 *v56; // eax _DWORD *v57; // eax size_t v58; // edx size_t v59; // edi __int16 *v60; // eax __int16 v61; // ax bool v62; // zf _DWORD *v63; // eax bool v64; // cl __int16 *v65; // eax __int16 v66; // ax bool v67; // zf _DWORD *v68; // eax bool v69; // bl unsigned __int16 *v70; // eax _DWORD *v71; // eax _DWORD *v72; // eax __int16 *v73; // eax __int16 v74; // ax bool v75; // zf _DWORD *v76; // eax bool v77; // bl __int16 *v78; // eax __int16 v79; // ax bool v80; // zf _DWORD *v81; // eax bool v82; // cl unsigned __int16 *v83; // eax _DWORD *v84; // edx __int16 *v85; // eax __int16 v86; // ax bool v87; // zf _DWORD *v88; // eax bool v89; // si char v90; // bl unsigned int v91; // [esp+8h] [ebp-D0h] std::locale::_Impl *v92; // [esp+18h] [ebp-C0h] int v93; // [esp+20h] [ebp-B8h] int v94; // [esp+24h] [ebp-B4h] bool v95; // [esp+35h] [ebp-A3h] char v96; // [esp+36h] [ebp-A2h] int v97; // [esp+38h] [ebp-A0h] __int64 v98; // [esp+38h] [ebp-A0h] _DWORD *v99; // [esp+40h] [ebp-98h] int v100; // [esp+44h] [ebp-94h] size_t v101; // [esp+44h] [ebp-94h] char v102; // [esp+48h] [ebp-90h] char v103; // [esp+49h] [ebp-8Fh] char v104; // [esp+49h] [ebp-8Fh] char v105; // [esp+49h] [ebp-8Fh] char v106; // [esp+4Ah] [ebp-8Eh] char v107; // [esp+4Ah] [ebp-8Eh] char v108; // [esp+4Ah] [ebp-8Eh] char v109; // [esp+4Ah] [ebp-8Eh] char v110; // [esp+4Ah] [ebp-8Eh] bool v111; // [esp+4Ch] [ebp-8Ch] int *v112; // [esp+50h] [ebp-88h] int v113; // [esp+50h] [ebp-88h] unsigned __int64 v114; // [esp+50h] [ebp-88h] char v115; // [esp+58h] [ebp-80h] char v116; // [esp+58h] [ebp-80h] bool v117; // [esp+58h] [ebp-80h] int v118; // [esp+5Ch] [ebp-7Ch] struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-78h] bool lpuexcpta; // [esp+60h] [ebp-78h] unsigned __int16 lpuexcptb; // [esp+60h] [ebp-78h] char lpuexcptc; // [esp+60h] [ebp-78h] struct _Unwind_Exception *lpuexcptd; // [esp+60h] [ebp-78h] char lpuexcpte; // [esp+60h] [ebp-78h] _DWORD *v125; // [esp+68h] [ebp-70h] void *Block; // [esp+A8h] [ebp-30h] BYREF size_t v127; // [esp+ACh] [ebp-2Ch] int v128[10]; // [esp+B0h] [ebp-28h] BYREF v125 = a1; v99 = a3; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v112 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); v118 = *v112; if ( !*v112 ) { v72 = operator new(0xA8u); v72[1] = 0; *v72 = &off_5605C0; v72[2] = 0; v72[3] = 0; *((_BYTE *)v72 + 16) = 0; v72[5] = 0; v72[6] = 0; v72[7] = 0; v72[8] = 0; v72[9] = 0; *((_BYTE *)v72 + 164) = 0; v92 = (std::locale::_Impl *)v72; std::__numpunct_cache::_M_cache((int)v72, a5 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v92, lpuexcpt, v91); v118 = *v112; } v113 = 8; v97 = *(_DWORD *)(a5 + 12) & 0x4A; if ( v97 != 64 ) { v7 = 10; if ( v97 == 8 ) v7 = 16; v113 = v7; } lpuexcpta = a2 == 0xFFFF; if ( lpuexcpta && a1 != 0 ) { v73 = (__int16 *)a1[2]; if ( (unsigned int)v73 >= a1[3] ) v74 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v74 = *v73; v75 = v74 == -1; v76 = 0; if ( !v75 ) v76 = a1; v77 = lpuexcpta && a1 != 0; v125 = v76; if ( !v75 ) v77 = 0; v103 = v77; } else { v103 = a2 == 0xFFFF; } v111 = a4 == -1; if ( v111 && a3 != 0 ) { v78 = (__int16 *)a3[2]; if ( (unsigned int)v78 >= a3[3] ) v79 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v79 = *v78; v80 = v79 == -1; v81 = 0; if ( !v80 ) v81 = a3; v82 = v111 && a3 != 0; v99 = v81; if ( !v80 ) v82 = 0; v115 = v82; } else { v115 = a4 == -1; } if ( v115 != v103 ) { if ( v125 && a2 == 0xFFFF ) { v70 = (unsigned __int16 *)v125[2]; if ( (unsigned int)v70 >= v125[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); else lpuexcptb = *v70; v71 = 0; if ( lpuexcptb != 0xFFFF ) v71 = v125; v125 = v71; } else { lpuexcptb = a2; } v8 = *(_BYTE *)(v118 + 16); v95 = *(_WORD *)(v118 + 112) == lpuexcptb; if ( *(_WORD *)(v118 + 112) == lpuexcptb || *(_WORD *)(v118 + 114) == lpuexcptb ) { if ( (!v8 || *(_WORD *)(v118 + 38) != lpuexcptb) && *(_WORD *)(v118 + 36) != lpuexcptb ) { v9 = v125[2]; v10 = v125[3]; if ( v9 >= v10 ) { (*(void (__fastcall **)(_DWORD *))(*v125 + 40))(v125); v11 = (__int16 *)v125[2]; v10 = v125[3]; } else { v11 = (__int16 *)(v9 + 2); v125[2] = v11; } if ( (unsigned int)v11 >= v10 ) v12 = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); else v12 = *v11; v13 = v12 == -1; v14 = 0; if ( !v13 ) v14 = v125; v106 = v13; v125 = v14; if ( v111 && v99 != 0 ) { v85 = (__int16 *)v99[2]; if ( (unsigned int)v85 >= v99[3] ) v86 = (*(int (__fastcall **)(_DWORD *))(*v99 + 36))(v99); else v86 = *v85; v87 = v86 == -1; v88 = 0; if ( !v87 ) v88 = v99; v89 = v111 && v99 != 0; v99 = v88; if ( !v87 ) v89 = 0; v116 = v89; } else { v116 = a4 == -1; } if ( v106 == v116 ) { v102 = 1; v100 = 0; v117 = 0; goto LABEL_49; } if ( v125 ) { v83 = (unsigned __int16 *)v125[2]; if ( (unsigned int)v83 >= v125[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); else lpuexcptb = *v83; v84 = 0; if ( lpuexcptb != 0xFFFF ) v84 = v125; v8 = *(_BYTE *)(v118 + 16); v125 = v84; } else { lpuexcptb = -1; v8 = *(_BYTE *)(v118 + 16); } } } else { v95 = 0; } v117 = 0; v100 = 0; while ( 1 ) { if ( v8 && *(_WORD *)(v118 + 38) == lpuexcptb || *(_WORD *)(v118 + 36) == lpuexcptb ) { LABEL_179: v102 = 0; goto LABEL_49; } if ( *(_WORD *)(v118 + 120) != lpuexcptb ) break; v34 = v113 == 10 || !v117; if ( !v34 ) goto LABEL_36; v117 = v97 == 0 || v113 == 8; if ( !v117 ) { ++v100; v117 = v34; goto LABEL_40; } v100 = 0; v15 = v125; v113 = 8; v16 = v125[2]; v17 = v125[3]; if ( v16 < v17 ) { LABEL_41: v18 = (__int16 *)(v16 + 2); v15[2] = v18; if ( v17 > (unsigned int)v18 ) goto LABEL_42; goto LABEL_85; } LABEL_84: (*(void (__fastcall **)(_DWORD *))(*v125 + 40))(v125); v18 = (__int16 *)v125[2]; if ( v125[3] > (unsigned int)v18 ) { LABEL_42: v19 = *v18; goto LABEL_43; } LABEL_85: v19 = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); LABEL_43: v20 = v19 == -1; v21 = 0; if ( !v20 ) v21 = v125; v104 = v20; v125 = v21; if ( v111 && v99 != 0 ) { v51 = (__int16 *)v99[2]; if ( (unsigned int)v51 >= v99[3] ) v52 = (*(int (__fastcall **)(_DWORD *))(*v99 + 36))(v99); else v52 = *v51; v53 = v52 == -1; v54 = 0; if ( !v53 ) v54 = v99; v55 = v111 && v99 != 0; v99 = v54; if ( !v53 ) v55 = 0; v107 = v55; } else { v107 = a4 == -1; } if ( v107 == v104 ) { v102 = 1; goto LABEL_49; } lpuexcptb = -1; if ( v125 ) { v35 = (unsigned __int16 *)v125[2]; if ( (unsigned int)v35 >= v125[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); else lpuexcptb = *v35; v36 = 0; if ( lpuexcptb != 0xFFFF ) v36 = v125; v125 = v36; } if ( !v117 ) { v102 = 0; goto LABEL_49; } v8 = *(_BYTE *)(v118 + 16); } if ( !v117 ) goto LABEL_179; LABEL_36: if ( *(_WORD *)(v118 + 116) != lpuexcptb && *(_WORD *)(v118 + 118) != lpuexcptb ) { v102 = 0; v117 = 1; goto LABEL_49; } if ( v97 != 0 && v113 != 16 ) { v102 = 0; v93 = v113; v94 = v113; v117 = 1; goto LABEL_52; } v100 = 0; v117 = 0; v113 = 16; LABEL_40: v15 = v125; v16 = v125[2]; v17 = v125[3]; if ( v16 < v17 ) goto LABEL_41; goto LABEL_84; } v117 = 0; v95 = 0; lpuexcptb = 0; v102 = 1; v100 = 0; LABEL_49: v22 = 22; if ( v113 != 16 ) v22 = v113; v93 = v22; v94 = v22; LABEL_52: v127 = 0; Block = v128; LOBYTE(v128[0]) = 0; if ( *(_BYTE *)(v118 + 16) ) std::string::reserve(&Block, 0x20u); v98 = v113; v23 = 0xFFFFFFFFFFFFFFFFLL / v113; v96 = *(_BYTE *)(v118 + 164); if ( !v96 ) { if ( !v102 ) { v105 = 0; v114 = 0LL; while ( v94 > 10 ) { if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) goto LABEL_60; v24 = lpuexcptb - 87; if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) { if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) goto LABEL_102; v24 = lpuexcptb - 55; } LABEL_61: if ( v23 >= v114 ) { v105 |= __PAIR64__(~(v24 >> 31), ~v24) < v98 * v114; v25 = v125; ++v100; v26 = v125[2]; v27 = v125[3]; v114 = v98 * v114 + v24; if ( v26 < v27 ) { LABEL_63: v28 = (__int16 *)(v26 + 2); v25[2] = v28; goto LABEL_64; } } else { v25 = v125; v105 = 1; v26 = v125[2]; v27 = v125[3]; if ( v26 < v27 ) goto LABEL_63; } (*(void (__fastcall **)(_DWORD *))(*v125 + 40))(v125); v28 = (__int16 *)v125[2]; v27 = v125[3]; LABEL_64: if ( v27 <= (unsigned int)v28 ) v29 = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); else v29 = *v28; v30 = v29 == -1; v31 = 0; if ( !v30 ) v31 = v125; v108 = v30; v125 = v31; if ( v111 && v99 != 0 ) { v65 = (__int16 *)v99[2]; if ( (unsigned int)v65 >= v99[3] ) v66 = (*(int (__fastcall **)(_DWORD *))(*v99 + 36))(v99); else v66 = *v65; v67 = v66 == -1; v68 = 0; if ( !v67 ) v68 = v99; v69 = v111 && v99 != 0; v99 = v68; if ( !v67 ) v69 = 0; lpuexcptc = v69; } else { lpuexcptc = a4 == -1; } if ( v108 == lpuexcptc ) { v96 = 1; lpuexcptd = (struct _Unwind_Exception *)v127; v32 = (int *)Block; goto LABEL_72; } if ( v125 ) { v56 = (unsigned __int16 *)v125[2]; if ( (unsigned int)v56 >= v125[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); else lpuexcptb = *v56; v57 = 0; if ( lpuexcptb != 0xFFFF ) v57 = v125; v125 = v57; } else { lpuexcptb = -1; } } if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v94 + 48) <= lpuexcptb ) goto LABEL_102; LABEL_60: v24 = lpuexcptb - 48; goto LABEL_61; } v90 = v102; v105 = 0; v102 = 0; lpuexcptd = (struct _Unwind_Exception *)v127; v32 = (int *)Block; v96 = v90; v114 = 0LL; goto LABEL_72; } if ( v102 ) { v114 = 0LL; lpuexcptd = (struct _Unwind_Exception *)v127; v32 = (int *)Block; v96 = v102; v105 = 0; v102 = 0; LABEL_72: if ( lpuexcptd ) goto LABEL_103; LABEL_73: if ( v117 || v100 ) goto LABEL_111; goto LABEL_75; } v105 = 0; v114 = 0LL; while ( 1 ) { if ( *(_BYTE *)(v118 + 16) && *(_WORD *)(v118 + 38) == lpuexcptb ) { v32 = (int *)Block; lpuexcptd = (struct _Unwind_Exception *)v127; if ( !v100 ) { v96 = 0; v102 = *(_BYTE *)(v118 + 16); goto LABEL_72; } v58 = 15; v110 = v100; if ( Block != v128 ) v58 = v128[0]; v101 = v127 + 1; if ( v127 + 1 > v58 ) { std::string::_M_mutate((int)&Block, v127, 0, 0, 1u); v32 = (int *)Block; } v59 = v101; v100 = 0; *((_BYTE *)lpuexcptd + (_DWORD)v32) = v110; v127 = v59; *((_BYTE *)Block + v59) = 0; LABEL_126: v42 = v125; v43 = v125[2]; v44 = v125[3]; if ( v43 < v44 ) goto LABEL_127; goto LABEL_137; } if ( lpuexcptb == *(_WORD *)(v118 + 36) ) break; v37 = (_WORD *)(v118 + 120); v38 = v93; while ( *v37 != lpuexcptb ) { ++v37; if ( !--v38 ) goto LABEL_102; } v40 = (int)v37 - v118 - 120; v41 = (v40 >> 1) - 6; if ( v40 <= 30 ) v41 = v40 >> 1; if ( v23 < v114 ) { v105 = v96; goto LABEL_126; } v105 |= __PAIR64__(~(v41 >> 31), ~v41) < v98 * v114; v114 = v98 * v114 + v41; ++v100; v42 = v125; v43 = v125[2]; v44 = v125[3]; if ( v43 < v44 ) { LABEL_127: v45 = (__int16 *)(v43 + 2); v42[2] = v45; goto LABEL_128; } LABEL_137: (*(void (__fastcall **)(_DWORD *))(*v125 + 40))(v125); v45 = (__int16 *)v125[2]; v44 = v125[3]; LABEL_128: if ( v44 <= (unsigned int)v45 ) v46 = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); else v46 = *v45; v47 = v46 == -1; v48 = 0; if ( !v47 ) v48 = v125; v109 = v47; v125 = v48; if ( v111 && v99 != 0 ) { v60 = (__int16 *)v99[2]; if ( (unsigned int)v60 >= v99[3] ) v61 = (*(int (__fastcall **)(_DWORD *))(*v99 + 36))(v99); else v61 = *v60; v62 = v61 == -1; v63 = 0; if ( !v62 ) v63 = v99; v64 = v111 && v99 != 0; v99 = v63; if ( !v62 ) v64 = 0; lpuexcpte = v64; } else { lpuexcpte = a4 == -1; } if ( v109 == lpuexcpte ) { lpuexcptd = (struct _Unwind_Exception *)v127; v32 = (int *)Block; goto LABEL_72; } if ( v125 ) { v49 = (unsigned __int16 *)v125[2]; if ( (unsigned int)v49 >= v125[3] ) lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); else lpuexcptb = *v49; v50 = 0; if ( lpuexcptb != 0xFFFF ) v50 = v125; v125 = v50; } else { lpuexcptb = -1; } } LABEL_102: v96 = 0; lpuexcptd = (struct _Unwind_Exception *)v127; v32 = (int *)Block; if ( !v127 ) goto LABEL_73; LABEL_103: v39 = 15; if ( v32 != v128 ) v39 = v128[0]; if ( (unsigned int)lpuexcptd + 1 > v39 ) { std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); v32 = (int *)Block; } *((_BYTE *)lpuexcptd + (_DWORD)v32) = v100; v127 = (size_t)lpuexcptd + 1; *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v118 + 8), *(_DWORD *)(v118 + 12), (int)&Block) ) *a6 = 4; v32 = (int *)Block; if ( !v117 && !(v127 | v100) ) { LABEL_75: *a7 = 0; a7[1] = 0; *a6 = 4; goto LABEL_76; } LABEL_111: if ( v102 ) goto LABEL_75; if ( v105 ) { *a7 = -1; a7[1] = -1; *a6 = 4; } else { if ( v95 ) v114 = -(__int64)v114; *(_QWORD *)a7 = v114; } LABEL_76: if ( v96 ) *a6 |= 2u; if ( v32 != v128 ) operator delete(v32); return v125; } // 4ABB6F: variable 'v91' is possibly undefined // 53F72C: using guessed type signed __int32 std::numpunct::id; // 5605C0: using guessed type int (*off_5605C0)(); //----- (004ABFD0) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_int( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6) { int v6; // eax char v7; // al unsigned int v8; // eax int v9; // eax int v10; // eax int v11; // eax _DWORD *v12; // ecx unsigned int v13; // eax __int16 *v14; // eax __int16 v15; // ax char v16; // al const char *v17; // eax int v18; // edx _DWORD *v19; // edx int v20; // edx _DWORD *v22; // ecx unsigned int v23; // eax __int16 *v24; // eax __int16 v25; // ax char v26; // al bool v27; // al char *v28; // eax int v29; // edx _WORD *v30; // eax __int16 v31; // dx _WORD *v32; // eax _WORD *v33; // eax __int16 v34; // dx int v35; // eax bool v36; // cc int v37; // edx int v38; // eax _DWORD *v39; // ecx unsigned int v40; // eax __int16 *v41; // eax __int16 v42; // ax char v43; // al _WORD *v44; // eax char v45; // bl const char *v46; // eax _WORD *v47; // eax __int16 v48; // dx _WORD *v49; // eax int v50; // edx _WORD *v51; // eax char v52; // bl unsigned int v53; // [esp+4h] [ebp-94h] bool v54; // [esp+1Bh] [ebp-7Dh] int v55; // [esp+1Ch] [ebp-7Ch] int v56; // [esp+20h] [ebp-78h] unsigned int v57; // [esp+24h] [ebp-74h] char v58; // [esp+28h] [ebp-70h] char v59; // [esp+2Ah] [ebp-6Eh] char v60; // [esp+2Bh] [ebp-6Dh] char v61; // [esp+2Bh] [ebp-6Dh] int v62; // [esp+2Ch] [ebp-6Ch] char v63; // [esp+2Ch] [ebp-6Ch] char v64; // [esp+2Ch] [ebp-6Ch] int v65; // [esp+30h] [ebp-68h] unsigned int v66; // [esp+34h] [ebp-64h] char v67; // [esp+34h] [ebp-64h] bool v68; // [esp+38h] [ebp-60h] unsigned int v69; // [esp+3Ch] [ebp-5Ch] unsigned __int16 lpuexcpt; // [esp+40h] [ebp-58h] char lpuexcpta; // [esp+40h] [ebp-58h] __int64 lpuexcptb; // [esp+40h] [ebp-58h] char lpuexcptc; // [esp+40h] [ebp-58h] std::string *lpuexcptd; // [esp+40h] [ebp-58h] struct _Unwind_Exception *v75; // [esp+48h] [ebp-50h] int v76; // [esp+8Bh] [ebp-Dh] BYREF const char *v77[2]; // [esp+8Ch] [ebp-Ch] BYREF v75 = std::__use_cache>::operator()((int *)(a4 + 108)); v6 = *(_DWORD *)(a4 + 12) & 0x4A; v62 = v6; if ( v6 == 64 ) { v69 = 8; LABEL_4: v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v60 ) { v65 = 0; v68 = 0; v55 = v69; v56 = v69; lpuexcpt = 0; v54 = 0; goto LABEL_18; } goto LABEL_5; } if ( v6 != 8 ) { v69 = 10; goto LABEL_4; } v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v60 ) { v55 = 22; lpuexcpt = 0; v65 = 0; v68 = 0; v54 = 0; v69 = 16; v56 = 22; goto LABEL_18; } v69 = 16; LABEL_5: lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v51 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v51; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } v7 = *((_BYTE *)v75 + 16); v54 = *((_WORD *)v75 + 56) == lpuexcpt; if ( *((_WORD *)v75 + 56) != lpuexcpt && *((_WORD *)v75 + 57) != lpuexcpt || v7 && *((_WORD *)v75 + 19) == lpuexcpt || *((_WORD *)v75 + 18) == lpuexcpt ) { goto LABEL_49; } v8 = *(_DWORD *)(a1 + 8); if ( v8 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v8 + 2; WORD2(a1) = -1; v65 = 0; v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); v68 = 0; if ( !v60 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v7 = *((_BYTE *)v75 + 16); LABEL_49: v65 = 0; v68 = 0; while ( 1 ) { if ( v7 && *((_WORD *)v75 + 19) == lpuexcpt || *((_WORD *)v75 + 18) == lpuexcpt ) { LABEL_116: v60 = 0; goto LABEL_15; } if ( *((_WORD *)v75 + 60) != lpuexcpt ) break; v27 = v69 == 10 || !v68; if ( !v27 ) goto LABEL_55; v68 = v62 == 0 || v69 == 8; if ( !v68 ) { ++v65; v68 = v27; goto LABEL_59; } v22 = (_DWORD *)a1; v65 = 0; v69 = 8; v23 = *(_DWORD *)(a1 + 8); if ( v23 < *(_DWORD *)(a1 + 12) ) { LABEL_60: v22[2] = v23 + 2; WORD2(a1) = -1; goto LABEL_61; } LABEL_71: (*(void (__fastcall **)(_DWORD *))(*v22 + 40))(v22); v22 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v67 = 1; goto LABEL_65; } LABEL_61: v24 = (__int16 *)v22[2]; if ( (unsigned int)v24 >= v22[3] ) v25 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); else v25 = *v24; v67 = 0; if ( v25 == -1 ) { LODWORD(a1) = 0; v67 = 1; } LABEL_65: v26 = a3 == -1; v61 = v26 & (a2 != 0); if ( v61 ) { v30 = (_WORD *)a2[2]; v31 = (unsigned int)v30 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v30; v26 = 0; if ( v31 == -1 ) { a2 = 0; v26 = v61; } } if ( v26 == v67 ) { v60 = 1; goto LABEL_15; } lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v49 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v49 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v49; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } if ( !v68 ) goto LABEL_116; v7 = *((_BYTE *)v75 + 16); } if ( !v68 ) goto LABEL_116; LABEL_55: if ( *((_WORD *)v75 + 58) != lpuexcpt && *((_WORD *)v75 + 59) != lpuexcpt ) { v60 = 0; v68 = 1; goto LABEL_15; } if ( v62 != 0 && v69 != 16 ) { v60 = 0; v68 = 1; v55 = v69; v56 = v69; goto LABEL_18; } v65 = 0; v68 = 0; v69 = 16; LABEL_59: v22 = (_DWORD *)a1; v23 = *(_DWORD *)(a1 + 8); if ( v23 < *(_DWORD *)(a1 + 12) ) goto LABEL_60; goto LABEL_71; } LABEL_15: v9 = 22; if ( v69 != 16 ) v9 = v69; v55 = v9; v56 = v9; LABEL_18: v77[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v75 + 16) ) std::string::reserve((int *)v77, (std::string *)0x20, v53); v57 = 0xFFFFFFFF / v69; v63 = *((_BYTE *)v75 + 164); if ( v63 ) { if ( v60 ) { v17 = v77[0]; v66 = 0; v59 = 0; v63 = v60; v18 = *((_DWORD *)v77[0] - 3); v60 = 0; LABEL_37: if ( v18 ) goto LABEL_86; goto LABEL_38; } v59 = 0; v66 = 0; while ( !*((_BYTE *)v75 + 16) || *((_WORD *)v75 + 19) != lpuexcpt ) { if ( lpuexcpt == *((_WORD *)v75 + 18) ) goto LABEL_85; v28 = (char *)v75 + 120; v29 = v55; while ( lpuexcpt != *(_WORD *)v28 ) { v28 += 2; if ( !--v29 ) goto LABEL_85; } v35 = v28 - ((char *)v75 + 120); v36 = v35 <= 30; v37 = (v35 >> 1) - 6; v38 = v35 >> 1; if ( !v36 ) v38 = v37; if ( v57 < v66 ) { v59 = v63; goto LABEL_123; } v59 |= ~v38 < v69 * v66; v39 = (_DWORD *)a1; v66 = v69 * v66 + v38; ++v65; v40 = *(_DWORD *)(a1 + 8); if ( v40 < *(_DWORD *)(a1 + 12) ) { LABEL_124: v39[2] = v40 + 2; WORD2(a1) = -1; goto LABEL_125; } LABEL_133: (*(void (__fastcall **)(_DWORD *))(*v39 + 40))(v39); v39 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { lpuexcptc = v63; goto LABEL_129; } LABEL_125: v41 = (__int16 *)v39[2]; if ( (unsigned int)v41 >= v39[3] ) v42 = (*(int (__fastcall **)(_DWORD *))(*v39 + 36))(v39); else v42 = *v41; lpuexcptc = 0; if ( v42 == -1 ) { LODWORD(a1) = 0; lpuexcptc = v63; } LABEL_129: v43 = a3 == -1; v58 = v43 & (a2 != 0); if ( v58 ) { v47 = (_WORD *)a2[2]; v48 = (unsigned int)v47 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v47; v43 = 0; if ( v48 == -1 ) { a2 = 0; v43 = v58; } } if ( lpuexcptc == v43 ) { v17 = v77[0]; v18 = *((_DWORD *)v77[0] - 3); goto LABEL_37; } lpuexcpt = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v44 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v44 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v44; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } } v17 = v77[0]; v18 = *((_DWORD *)v77[0] - 3); if ( !v65 ) { v63 = 0; v60 = *((_BYTE *)v75 + 16); goto LABEL_37; } lpuexcptd = (std::string *)(v18 + 1); if ( (unsigned int)(v18 + 1) > *((_DWORD *)v77[0] - 2) || *((int *)v77[0] - 1) > 0 ) std::string::reserve((int *)v77, lpuexcptd, v53); v45 = v65; v65 = 0; v77[0][*((_DWORD *)v77[0] - 3)] = v45; v46 = v77[0]; *((_DWORD *)v77[0] - 1) = 0; *((_DWORD *)v46 - 3) = lpuexcptd; *((_BYTE *)lpuexcptd + (_DWORD)v46) = 0; LABEL_123: v39 = (_DWORD *)a1; v40 = *(_DWORD *)(a1 + 8); if ( v40 < *(_DWORD *)(a1 + 12) ) goto LABEL_124; goto LABEL_133; } if ( v60 ) { v52 = v60; v17 = v77[0]; v59 = 0; v60 = 0; v63 = v52; v18 = *((_DWORD *)v77[0] - 3); v66 = 0; goto LABEL_37; } v59 = 0; v66 = 0; LABEL_23: v10 = lpuexcpt; if ( v56 > 10 ) { if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) { LABEL_26: v11 = lpuexcpt - 48; LABEL_27: if ( v57 >= v66 ) goto LABEL_97; LABEL_28: v12 = (_DWORD *)a1; v59 = 1; v13 = *(_DWORD *)(a1 + 8); if ( v13 >= *(_DWORD *)(a1 + 12) ) goto LABEL_98; LABEL_29: v12[2] = v13 + 2; WORD2(a1) = -1; LABEL_30: v14 = (__int16 *)v12[2]; if ( (unsigned int)v14 >= v12[3] ) v15 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); else v15 = *v14; lpuexcpta = 0; if ( v15 == -1 ) { LODWORD(a1) = 0; lpuexcpta = 1; } goto LABEL_34; } while ( (unsigned __int16)(lpuexcpt - 97) <= 5u ) { v11 = v10 - 87; if ( v57 < v66 ) goto LABEL_28; LABEL_97: v59 |= ~v11 < v69 * v66; v12 = (_DWORD *)a1; v66 = v69 * v66 + v11; ++v65; v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) goto LABEL_29; LABEL_98: (*(void (__fastcall **)(_DWORD *))(*v12 + 40))(v12); v12 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_30; lpuexcpta = 1; LABEL_34: v16 = a3 == -1; v64 = v16 & (a2 != 0); if ( v64 ) { v33 = (_WORD *)a2[2]; v34 = (unsigned int)v33 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v33; v16 = 0; if ( v34 == -1 ) { a2 = 0; v16 = v64; } } if ( lpuexcpta == v16 ) { v17 = v77[0]; v63 = 1; v18 = *((_DWORD *)v77[0] - 3); goto LABEL_37; } lpuexcpt = WORD2(a1); if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) goto LABEL_23; v32 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v32 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v32; if ( lpuexcpt != 0xFFFF ) goto LABEL_23; LODWORD(a1) = 0; v10 = 0xFFFF; if ( v56 <= 10 ) goto LABEL_85; } if ( (unsigned __int16)(lpuexcpt - 65) <= 5u ) { v11 = v10 - 55; goto LABEL_27; } } else if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v56 + 48) > lpuexcpt ) { goto LABEL_26; } LABEL_85: v17 = v77[0]; v63 = 0; if ( *((_DWORD *)v77[0] - 3) ) { LABEL_86: std::string::push_back((int *)v77, (std::string *)(char)v65, v53); if ( !(unsigned __int8)std::__verify_grouping(*((char **)v75 + 2), *((_DWORD *)v75 + 3), v77) ) *a5 = 4; v17 = v77[0]; if ( !v65 && !v68 && !*((_DWORD *)v77[0] - 3) ) goto LABEL_40; goto LABEL_91; } LABEL_38: if ( !v65 && !v68 ) goto LABEL_40; LABEL_91: if ( v60 ) { LABEL_40: v19 = a5; *a6 = 0; *v19 = 4; goto LABEL_41; } if ( v59 ) { *a6 = -1; *a5 = 4; } else { v50 = -v66; if ( !v54 ) v50 = v66; *a6 = v50; } LABEL_41: if ( v63 ) *a5 |= 2u; lpuexcptb = a1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v17 - 1, 0xFFFFFFFF) > 0 ) return lpuexcptb; LABEL_156: std::string::_Rep::_M_destroy((void *)(v17 - 12), (int)&v76); return lpuexcptb; } v20 = *((_DWORD *)v17 - 1); *((_DWORD *)v17 - 1) = v20 - 1; if ( v20 <= 0 ) goto LABEL_156; return lpuexcptb; } // 4AC977: variable 'v53' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004ACC10) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_int( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6) { int v6; // eax char v7; // al int v8; // eax int v9; // eax int v10; // eax _DWORD *v11; // ecx unsigned int v12; // eax __int16 *v13; // eax __int16 v14; // ax char v15; // al const char *v16; // eax int v17; // edx _DWORD *v18; // ecx int v19; // edx _DWORD *v21; // ecx unsigned int v22; // eax __int16 *v23; // eax __int16 v24; // ax char v25; // al bool v26; // al char *v27; // eax int v28; // edx _WORD *v29; // eax __int16 v30; // dx _WORD *v31; // eax _WORD *v32; // eax __int16 v33; // dx int v34; // eax bool v35; // cc int v36; // edx int v37; // eax _DWORD *v38; // ecx unsigned int v39; // eax __int16 *v40; // eax __int16 v41; // ax char v42; // al _WORD *v43; // eax char v44; // bl const char *v45; // eax _WORD *v46; // eax __int16 v47; // dx _WORD *v48; // eax int v49; // edx _WORD *v50; // eax char v51; // bl unsigned int v52; // [esp+4h] [ebp-94h] bool v53; // [esp+14h] [ebp-84h] int v54; // [esp+18h] [ebp-80h] unsigned int v55; // [esp+1Ch] [ebp-7Ch] int v56; // [esp+20h] [ebp-78h] unsigned int v57; // [esp+24h] [ebp-74h] char v58; // [esp+28h] [ebp-70h] char v59; // [esp+2Ah] [ebp-6Eh] char v60; // [esp+2Bh] [ebp-6Dh] char v61; // [esp+2Bh] [ebp-6Dh] int v62; // [esp+2Ch] [ebp-6Ch] char v63; // [esp+2Ch] [ebp-6Ch] char v64; // [esp+2Ch] [ebp-6Ch] int v65; // [esp+30h] [ebp-68h] unsigned int v66; // [esp+34h] [ebp-64h] char v67; // [esp+34h] [ebp-64h] bool v68; // [esp+38h] [ebp-60h] unsigned int v69; // [esp+3Ch] [ebp-5Ch] unsigned __int16 lpuexcpt; // [esp+40h] [ebp-58h] char lpuexcpta; // [esp+40h] [ebp-58h] __int64 lpuexcptb; // [esp+40h] [ebp-58h] char lpuexcptc; // [esp+40h] [ebp-58h] std::string *lpuexcptd; // [esp+40h] [ebp-58h] struct _Unwind_Exception *v75; // [esp+48h] [ebp-50h] int v76; // [esp+8Bh] [ebp-Dh] BYREF const char *v77[2]; // [esp+8Ch] [ebp-Ch] BYREF v75 = std::__use_cache>::operator()((int *)(a4 + 108)); v6 = *(_DWORD *)(a4 + 12) & 0x4A; v62 = v6; if ( v6 == 64 ) { v69 = 8; LABEL_4: v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v60 ) { v65 = 0; v68 = 0; v54 = v69; v56 = v69; lpuexcpt = 0; v53 = 0; goto LABEL_16; } goto LABEL_5; } if ( v6 != 8 ) { v69 = 10; goto LABEL_4; } v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v60 ) { v54 = 22; lpuexcpt = 0; v65 = 0; v68 = 0; v53 = 0; v69 = 16; v56 = 22; goto LABEL_16; } v69 = 16; LABEL_5: lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v50 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v50 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v50; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } v7 = *((_BYTE *)v75 + 16); v53 = *((_WORD *)v75 + 56) == lpuexcpt; if ( *((_WORD *)v75 + 56) != lpuexcpt && *((_WORD *)v75 + 57) != lpuexcpt || v7 && *((_WORD *)v75 + 19) == lpuexcpt || *((_WORD *)v75 + 18) == lpuexcpt ) { goto LABEL_47; } std::wstreambuf::sbumpc((_DWORD *)a1); WORD2(a1) = -1; v65 = 0; v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); v68 = 0; if ( !v60 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v7 = *((_BYTE *)v75 + 16); LABEL_47: v65 = 0; v68 = 0; while ( 1 ) { if ( v7 && *((_WORD *)v75 + 19) == lpuexcpt || *((_WORD *)v75 + 18) == lpuexcpt ) { LABEL_114: v60 = 0; goto LABEL_13; } if ( *((_WORD *)v75 + 60) != lpuexcpt ) break; v26 = v69 == 10 || !v68; if ( !v26 ) goto LABEL_53; v68 = v62 == 0 || v69 == 8; if ( !v68 ) { ++v65; v68 = v26; goto LABEL_57; } v21 = (_DWORD *)a1; v65 = 0; v69 = 8; v22 = *(_DWORD *)(a1 + 8); if ( v22 < *(_DWORD *)(a1 + 12) ) { LABEL_58: v21[2] = v22 + 2; WORD2(a1) = -1; goto LABEL_59; } LABEL_69: (*(void (__fastcall **)(_DWORD *))(*v21 + 40))(v21); v21 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v67 = 1; goto LABEL_63; } LABEL_59: v23 = (__int16 *)v21[2]; if ( (unsigned int)v23 >= v21[3] ) v24 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); else v24 = *v23; v67 = 0; if ( v24 == -1 ) { LODWORD(a1) = 0; v67 = 1; } LABEL_63: v25 = a3 == -1; v61 = v25 & (a2 != 0); if ( v61 ) { v29 = (_WORD *)a2[2]; v30 = (unsigned int)v29 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v29; v25 = 0; if ( v30 == -1 ) { a2 = 0; v25 = v61; } } if ( v25 == v67 ) { v60 = 1; goto LABEL_13; } lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v48 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v48; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } if ( !v68 ) goto LABEL_114; v7 = *((_BYTE *)v75 + 16); } if ( !v68 ) goto LABEL_114; LABEL_53: if ( *((_WORD *)v75 + 58) != lpuexcpt && *((_WORD *)v75 + 59) != lpuexcpt ) { v60 = 0; v68 = 1; goto LABEL_13; } if ( v69 != 16 && v62 != 0 ) { v60 = 0; v68 = 1; v54 = v69; v56 = v69; goto LABEL_16; } v65 = 0; v68 = 0; v69 = 16; LABEL_57: v21 = (_DWORD *)a1; v22 = *(_DWORD *)(a1 + 8); if ( v22 < *(_DWORD *)(a1 + 12) ) goto LABEL_58; goto LABEL_69; } LABEL_13: v8 = 22; if ( v69 != 16 ) v8 = v69; v54 = v8; v56 = v8; LABEL_16: v77[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v75 + 16) ) std::string::reserve((int *)v77, (std::string *)0x20, v52); v55 = v53 + 0x7FFFFFFF; v57 = v55 / v69; v63 = *((_BYTE *)v75 + 164); if ( v63 ) { if ( v60 ) { v16 = v77[0]; v66 = 0; v59 = 0; v63 = v60; v17 = *((_DWORD *)v77[0] - 3); v60 = 0; LABEL_35: if ( v17 ) goto LABEL_84; goto LABEL_36; } v59 = 0; v66 = 0; while ( !*((_BYTE *)v75 + 16) || *((_WORD *)v75 + 19) != lpuexcpt ) { if ( lpuexcpt == *((_WORD *)v75 + 18) ) goto LABEL_83; v27 = (char *)v75 + 120; v28 = v54; while ( *(_WORD *)v27 != lpuexcpt ) { v27 += 2; if ( !--v28 ) goto LABEL_83; } v34 = v27 - ((char *)v75 + 120); v35 = v34 <= 30; v36 = (v34 >> 1) - 6; v37 = v34 >> 1; if ( !v35 ) v37 = v36; if ( v57 < v66 ) { v59 = v63; goto LABEL_121; } v59 |= v55 - v37 < v69 * v66; v38 = (_DWORD *)a1; v66 = v69 * v66 + v37; ++v65; v39 = *(_DWORD *)(a1 + 8); if ( v39 < *(_DWORD *)(a1 + 12) ) { LABEL_122: v38[2] = v39 + 2; WORD2(a1) = -1; goto LABEL_123; } LABEL_131: (*(void (__fastcall **)(_DWORD *))(*v38 + 40))(v38); v38 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { lpuexcptc = v63; goto LABEL_127; } LABEL_123: v40 = (__int16 *)v38[2]; if ( (unsigned int)v40 >= v38[3] ) v41 = (*(int (__fastcall **)(_DWORD *))(*v38 + 36))(v38); else v41 = *v40; lpuexcptc = 0; if ( v41 == -1 ) { LODWORD(a1) = 0; lpuexcptc = v63; } LABEL_127: v42 = a3 == -1; v58 = v42 & (a2 != 0); if ( v58 ) { v46 = (_WORD *)a2[2]; v47 = (unsigned int)v46 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v46; v42 = 0; if ( v47 == -1 ) { a2 = 0; v42 = v58; } } if ( v42 == lpuexcptc ) { v16 = v77[0]; v17 = *((_DWORD *)v77[0] - 3); goto LABEL_35; } lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v43 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v43 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v43; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } } v16 = v77[0]; v17 = *((_DWORD *)v77[0] - 3); if ( !v65 ) { v63 = 0; v60 = *((_BYTE *)v75 + 16); goto LABEL_35; } lpuexcptd = (std::string *)(v17 + 1); if ( (unsigned int)(v17 + 1) > *((_DWORD *)v77[0] - 2) || *((int *)v77[0] - 1) > 0 ) std::string::reserve((int *)v77, lpuexcptd, v52); v44 = v65; v65 = 0; v77[0][*((_DWORD *)v77[0] - 3)] = v44; v45 = v77[0]; *((_DWORD *)v77[0] - 1) = 0; *((_DWORD *)v45 - 3) = lpuexcptd; *((_BYTE *)lpuexcptd + (_DWORD)v45) = 0; LABEL_121: v38 = (_DWORD *)a1; v39 = *(_DWORD *)(a1 + 8); if ( v39 < *(_DWORD *)(a1 + 12) ) goto LABEL_122; goto LABEL_131; } if ( v60 ) { v51 = v60; v16 = v77[0]; v59 = 0; v60 = 0; v63 = v51; v17 = *((_DWORD *)v77[0] - 3); v66 = 0; goto LABEL_35; } v59 = 0; v66 = 0; LABEL_21: v9 = lpuexcpt; if ( v56 > 10 ) { if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) { LABEL_24: v10 = lpuexcpt - 48; LABEL_25: if ( v57 >= v66 ) goto LABEL_95; LABEL_26: v11 = (_DWORD *)a1; v59 = 1; v12 = *(_DWORD *)(a1 + 8); if ( v12 >= *(_DWORD *)(a1 + 12) ) goto LABEL_96; LABEL_27: v11[2] = v12 + 2; WORD2(a1) = -1; LABEL_28: v13 = (__int16 *)v11[2]; if ( (unsigned int)v13 >= v11[3] ) v14 = (*(int (__fastcall **)(_DWORD *))(*v11 + 36))(v11); else v14 = *v13; lpuexcpta = 0; if ( v14 == -1 ) { LODWORD(a1) = 0; lpuexcpta = 1; } goto LABEL_32; } while ( (unsigned __int16)(lpuexcpt - 97) <= 5u ) { v10 = v9 - 87; if ( v57 < v66 ) goto LABEL_26; LABEL_95: v59 |= v55 - v10 < v69 * v66; v11 = (_DWORD *)a1; v66 = v69 * v66 + v10; ++v65; v12 = *(_DWORD *)(a1 + 8); if ( v12 < *(_DWORD *)(a1 + 12) ) goto LABEL_27; LABEL_96: (*(void (__fastcall **)(_DWORD *))(*v11 + 40))(v11); v11 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_28; lpuexcpta = 1; LABEL_32: v15 = a3 == -1; v64 = v15 & (a2 != 0); if ( v64 ) { v32 = (_WORD *)a2[2]; v33 = (unsigned int)v32 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v32; v15 = 0; if ( v33 == -1 ) { a2 = 0; v15 = v64; } } if ( v15 == lpuexcpta ) { v16 = v77[0]; v63 = 1; v17 = *((_DWORD *)v77[0] - 3); goto LABEL_35; } lpuexcpt = WORD2(a1); if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) goto LABEL_21; v31 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v31 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v31; if ( lpuexcpt != 0xFFFF ) goto LABEL_21; LODWORD(a1) = 0; v9 = 0xFFFF; if ( v56 <= 10 ) goto LABEL_83; } if ( (unsigned __int16)(lpuexcpt - 65) <= 5u ) { v10 = v9 - 55; goto LABEL_25; } } else if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v56 + 48) > lpuexcpt ) { goto LABEL_24; } LABEL_83: v16 = v77[0]; v63 = 0; if ( *((_DWORD *)v77[0] - 3) ) { LABEL_84: std::string::push_back((int *)v77, (std::string *)(char)v65, v52); if ( !(unsigned __int8)std::__verify_grouping(*((char **)v75 + 2), *((_DWORD *)v75 + 3), v77) ) *a5 = 4; v16 = v77[0]; if ( !v65 && !v68 && !*((_DWORD *)v77[0] - 3) ) goto LABEL_38; goto LABEL_89; } LABEL_36: if ( !v65 && !v68 ) goto LABEL_38; LABEL_89: if ( v60 ) { LABEL_38: v18 = a5; *a6 = 0; *v18 = 4; goto LABEL_39; } if ( v59 ) { *a6 = v53 + 0x7FFFFFFF; *a5 = 4; } else { v49 = -v66; if ( !v53 ) v49 = v66; *a6 = v49; } LABEL_39: if ( v63 ) *a5 |= 2u; lpuexcptb = a1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) return lpuexcptb; LABEL_154: std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v76); return lpuexcptb; } v19 = *((_DWORD *)v16 - 1); *((_DWORD *)v16 - 1) = v19 - 1; if ( v19 <= 0 ) goto LABEL_154; return lpuexcptb; } // 4AD5C7: variable 'v52' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004AD850) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_int( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6) { int v6; // eax char v7; // al int v8; // eax int v9; // eax int v10; // eax _DWORD *v11; // ecx unsigned int v12; // eax __int16 *v13; // eax __int16 v14; // ax char v15; // al const char *v16; // eax int v17; // edx _DWORD *v18; // ecx int v19; // edx _DWORD *v21; // ecx unsigned int v22; // eax __int16 *v23; // eax __int16 v24; // ax char v25; // al bool v26; // al char *v27; // eax int v28; // edx _WORD *v29; // eax __int16 v30; // dx _WORD *v31; // eax _WORD *v32; // eax __int16 v33; // dx int v34; // eax bool v35; // cc int v36; // edx int v37; // eax _DWORD *v38; // ecx unsigned int v39; // eax __int16 *v40; // eax __int16 v41; // ax char v42; // al _WORD *v43; // eax char v44; // bl const char *v45; // eax _WORD *v46; // eax __int16 v47; // dx _WORD *v48; // eax int v49; // edx _WORD *v50; // eax char v51; // bl unsigned int v52; // [esp+4h] [ebp-94h] bool v53; // [esp+1Bh] [ebp-7Dh] int v54; // [esp+1Ch] [ebp-7Ch] int v55; // [esp+20h] [ebp-78h] unsigned int v56; // [esp+24h] [ebp-74h] char v57; // [esp+28h] [ebp-70h] char v58; // [esp+2Ah] [ebp-6Eh] char v59; // [esp+2Bh] [ebp-6Dh] char v60; // [esp+2Bh] [ebp-6Dh] int v61; // [esp+2Ch] [ebp-6Ch] char v62; // [esp+2Ch] [ebp-6Ch] char v63; // [esp+2Ch] [ebp-6Ch] int v64; // [esp+30h] [ebp-68h] unsigned int v65; // [esp+34h] [ebp-64h] char v66; // [esp+34h] [ebp-64h] bool v67; // [esp+38h] [ebp-60h] unsigned int v68; // [esp+3Ch] [ebp-5Ch] unsigned __int16 lpuexcpt; // [esp+40h] [ebp-58h] char lpuexcpta; // [esp+40h] [ebp-58h] __int64 lpuexcptb; // [esp+40h] [ebp-58h] char lpuexcptc; // [esp+40h] [ebp-58h] std::string *lpuexcptd; // [esp+40h] [ebp-58h] struct _Unwind_Exception *v74; // [esp+48h] [ebp-50h] int v75; // [esp+8Bh] [ebp-Dh] BYREF const char *v76[2]; // [esp+8Ch] [ebp-Ch] BYREF v74 = std::__use_cache>::operator()((int *)(a4 + 108)); v6 = *(_DWORD *)(a4 + 12) & 0x4A; v61 = v6; if ( v6 == 64 ) { v68 = 8; LABEL_4: v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v59 ) { v64 = 0; v67 = 0; v54 = v68; v55 = v68; lpuexcpt = 0; v53 = 0; goto LABEL_16; } goto LABEL_5; } if ( v6 != 8 ) { v68 = 10; goto LABEL_4; } v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v59 ) { v54 = 22; lpuexcpt = 0; v64 = 0; v67 = 0; v53 = 0; v68 = 16; v55 = 22; goto LABEL_16; } v68 = 16; LABEL_5: lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v50 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v50 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v50; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } v7 = *((_BYTE *)v74 + 16); v53 = *((_WORD *)v74 + 56) == lpuexcpt; if ( *((_WORD *)v74 + 56) != lpuexcpt && *((_WORD *)v74 + 57) != lpuexcpt || v7 && *((_WORD *)v74 + 19) == lpuexcpt || *((_WORD *)v74 + 18) == lpuexcpt ) { goto LABEL_47; } std::wstreambuf::sbumpc((_DWORD *)a1); WORD2(a1) = -1; v64 = 0; v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); v67 = 0; if ( !v59 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v7 = *((_BYTE *)v74 + 16); LABEL_47: v64 = 0; v67 = 0; while ( 1 ) { if ( v7 && *((_WORD *)v74 + 19) == lpuexcpt || *((_WORD *)v74 + 18) == lpuexcpt ) { LABEL_114: v59 = 0; goto LABEL_13; } if ( *((_WORD *)v74 + 60) != lpuexcpt ) break; v26 = v68 == 10 || !v67; if ( !v26 ) goto LABEL_53; v67 = v61 == 0 || v68 == 8; if ( !v67 ) { ++v64; v67 = v26; goto LABEL_57; } v21 = (_DWORD *)a1; v64 = 0; v68 = 8; v22 = *(_DWORD *)(a1 + 8); if ( v22 < *(_DWORD *)(a1 + 12) ) { LABEL_58: v21[2] = v22 + 2; WORD2(a1) = -1; goto LABEL_59; } LABEL_69: (*(void (__fastcall **)(_DWORD *))(*v21 + 40))(v21); v21 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v66 = 1; goto LABEL_63; } LABEL_59: v23 = (__int16 *)v21[2]; if ( (unsigned int)v23 >= v21[3] ) v24 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); else v24 = *v23; v66 = 0; if ( v24 == -1 ) { LODWORD(a1) = 0; v66 = 1; } LABEL_63: v25 = a3 == -1; v60 = v25 & (a2 != 0); if ( v60 ) { v29 = (_WORD *)a2[2]; v30 = (unsigned int)v29 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v29; v25 = 0; if ( v30 == -1 ) { a2 = 0; v25 = v60; } } if ( v66 == v25 ) { v59 = 1; goto LABEL_13; } lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v48 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v48; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } if ( !v67 ) goto LABEL_114; v7 = *((_BYTE *)v74 + 16); } if ( !v67 ) goto LABEL_114; LABEL_53: if ( *((_WORD *)v74 + 58) != lpuexcpt && *((_WORD *)v74 + 59) != lpuexcpt ) { v59 = 0; v67 = 1; goto LABEL_13; } if ( v68 != 16 && v61 != 0 ) { v59 = 0; v67 = 1; v54 = v68; v55 = v68; goto LABEL_16; } v64 = 0; v67 = 0; v68 = 16; LABEL_57: v21 = (_DWORD *)a1; v22 = *(_DWORD *)(a1 + 8); if ( v22 < *(_DWORD *)(a1 + 12) ) goto LABEL_58; goto LABEL_69; } LABEL_13: v8 = 22; if ( v68 != 16 ) v8 = v68; v54 = v8; v55 = v8; LABEL_16: v76[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v74 + 16) ) std::string::reserve((int *)v76, (std::string *)0x20, v52); v56 = 0xFFFFFFFF / v68; v62 = *((_BYTE *)v74 + 164); if ( v62 ) { if ( v59 ) { v16 = v76[0]; v65 = 0; v58 = 0; v62 = v59; v17 = *((_DWORD *)v76[0] - 3); v59 = 0; LABEL_35: if ( v17 ) goto LABEL_84; goto LABEL_36; } v58 = 0; v65 = 0; while ( !*((_BYTE *)v74 + 16) || *((_WORD *)v74 + 19) != lpuexcpt ) { if ( lpuexcpt == *((_WORD *)v74 + 18) ) goto LABEL_83; v27 = (char *)v74 + 120; v28 = v54; while ( *(_WORD *)v27 != lpuexcpt ) { v27 += 2; if ( !--v28 ) goto LABEL_83; } v34 = v27 - ((char *)v74 + 120); v35 = v34 <= 30; v36 = (v34 >> 1) - 6; v37 = v34 >> 1; if ( !v35 ) v37 = v36; if ( v56 < v65 ) { v58 = v62; goto LABEL_121; } v58 |= ~v37 < v68 * v65; v38 = (_DWORD *)a1; v65 = v68 * v65 + v37; ++v64; v39 = *(_DWORD *)(a1 + 8); if ( v39 < *(_DWORD *)(a1 + 12) ) { LABEL_122: v38[2] = v39 + 2; WORD2(a1) = -1; goto LABEL_123; } LABEL_131: (*(void (__fastcall **)(_DWORD *))(*v38 + 40))(v38); v38 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { lpuexcptc = v62; goto LABEL_127; } LABEL_123: v40 = (__int16 *)v38[2]; if ( (unsigned int)v40 >= v38[3] ) v41 = (*(int (__fastcall **)(_DWORD *))(*v38 + 36))(v38); else v41 = *v40; lpuexcptc = 0; if ( v41 == -1 ) { LODWORD(a1) = 0; lpuexcptc = v62; } LABEL_127: v42 = a3 == -1; v57 = v42 & (a2 != 0); if ( v57 ) { v46 = (_WORD *)a2[2]; v47 = (unsigned int)v46 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v46; v42 = 0; if ( v47 == -1 ) { a2 = 0; v42 = v57; } } if ( v42 == lpuexcptc ) { v16 = v76[0]; v17 = *((_DWORD *)v76[0] - 3); goto LABEL_35; } lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v43 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v43 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v43; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } } v16 = v76[0]; v17 = *((_DWORD *)v76[0] - 3); if ( !v64 ) { v62 = 0; v59 = *((_BYTE *)v74 + 16); goto LABEL_35; } lpuexcptd = (std::string *)(v17 + 1); if ( (unsigned int)(v17 + 1) > *((_DWORD *)v76[0] - 2) || *((int *)v76[0] - 1) > 0 ) std::string::reserve((int *)v76, lpuexcptd, v52); v44 = v64; v64 = 0; v76[0][*((_DWORD *)v76[0] - 3)] = v44; v45 = v76[0]; *((_DWORD *)v76[0] - 1) = 0; *((_DWORD *)v45 - 3) = lpuexcptd; *((_BYTE *)lpuexcptd + (_DWORD)v45) = 0; LABEL_121: v38 = (_DWORD *)a1; v39 = *(_DWORD *)(a1 + 8); if ( v39 < *(_DWORD *)(a1 + 12) ) goto LABEL_122; goto LABEL_131; } if ( v59 ) { v51 = v59; v16 = v76[0]; v58 = 0; v59 = 0; v62 = v51; v17 = *((_DWORD *)v76[0] - 3); v65 = 0; goto LABEL_35; } v58 = 0; v65 = 0; LABEL_21: v9 = lpuexcpt; if ( v55 > 10 ) { if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) { LABEL_24: v10 = lpuexcpt - 48; LABEL_25: if ( v56 >= v65 ) goto LABEL_95; LABEL_26: v11 = (_DWORD *)a1; v58 = 1; v12 = *(_DWORD *)(a1 + 8); if ( v12 >= *(_DWORD *)(a1 + 12) ) goto LABEL_96; LABEL_27: v11[2] = v12 + 2; WORD2(a1) = -1; LABEL_28: v13 = (__int16 *)v11[2]; if ( (unsigned int)v13 >= v11[3] ) v14 = (*(int (__fastcall **)(_DWORD *))(*v11 + 36))(v11); else v14 = *v13; lpuexcpta = 0; if ( v14 == -1 ) { LODWORD(a1) = 0; lpuexcpta = 1; } goto LABEL_32; } while ( (unsigned __int16)(lpuexcpt - 97) <= 5u ) { v10 = v9 - 87; if ( v56 < v65 ) goto LABEL_26; LABEL_95: v58 |= ~v10 < v68 * v65; v11 = (_DWORD *)a1; v65 = v68 * v65 + v10; ++v64; v12 = *(_DWORD *)(a1 + 8); if ( v12 < *(_DWORD *)(a1 + 12) ) goto LABEL_27; LABEL_96: (*(void (__fastcall **)(_DWORD *))(*v11 + 40))(v11); v11 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_28; lpuexcpta = 1; LABEL_32: v15 = a3 == -1; v63 = v15 & (a2 != 0); if ( v63 ) { v32 = (_WORD *)a2[2]; v33 = (unsigned int)v32 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v32; v15 = 0; if ( v33 == -1 ) { a2 = 0; v15 = v63; } } if ( v15 == lpuexcpta ) { v16 = v76[0]; v62 = 1; v17 = *((_DWORD *)v76[0] - 3); goto LABEL_35; } lpuexcpt = WORD2(a1); if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) goto LABEL_21; v31 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v31 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v31; if ( lpuexcpt != 0xFFFF ) goto LABEL_21; LODWORD(a1) = 0; v9 = 0xFFFF; if ( v55 <= 10 ) goto LABEL_83; } if ( (unsigned __int16)(lpuexcpt - 65) <= 5u ) { v10 = v9 - 55; goto LABEL_25; } } else if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v55 + 48) > lpuexcpt ) { goto LABEL_24; } LABEL_83: v16 = v76[0]; v62 = 0; if ( *((_DWORD *)v76[0] - 3) ) { LABEL_84: std::string::push_back((int *)v76, (std::string *)(char)v64, v52); if ( !(unsigned __int8)std::__verify_grouping(*((char **)v74 + 2), *((_DWORD *)v74 + 3), v76) ) *a5 = 4; v16 = v76[0]; if ( !v64 && !v67 && !*((_DWORD *)v76[0] - 3) ) goto LABEL_38; goto LABEL_89; } LABEL_36: if ( !v64 && !v67 ) goto LABEL_38; LABEL_89: if ( v59 ) { LABEL_38: v18 = a5; *a6 = 0; *v18 = 4; goto LABEL_39; } if ( v58 ) { *a6 = -1; *a5 = 4; } else { v49 = -v65; if ( !v53 ) v49 = v65; *a6 = v49; } LABEL_39: if ( v62 ) *a5 |= 2u; lpuexcptb = a1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) return lpuexcptb; LABEL_154: std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v75); return lpuexcptb; } v19 = *((_DWORD *)v16 - 1); *((_DWORD *)v16 - 1) = v19 - 1; if ( v19 <= 0 ) goto LABEL_154; return lpuexcptb; } // 4AE1E7: variable 'v52' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004AE460) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_int( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _WORD *a6) { int v6; // eax char v7; // al unsigned int v8; // eax int v9; // eax int v10; // eax int v11; // eax _DWORD *v12; // ecx unsigned int v13; // eax __int16 *v14; // eax __int16 v15; // ax char v16; // al const char *v17; // eax int v18; // edx _DWORD *v19; // edx int v20; // edx _DWORD *v22; // ecx unsigned int v23; // eax __int16 *v24; // eax __int16 v25; // ax char v26; // al bool v27; // al char *v28; // eax int v29; // edx _WORD *v30; // eax __int16 v31; // dx _WORD *v32; // eax _WORD *v33; // eax __int16 v34; // dx int v35; // eax bool v36; // cc int v37; // edx int v38; // eax _DWORD *v39; // ecx unsigned int v40; // eax __int16 *v41; // eax __int16 v42; // ax char v43; // al _WORD *v44; // eax char v45; // bl const char *v46; // eax _WORD *v47; // eax __int16 v48; // dx _WORD *v49; // eax int v50; // edx _WORD *v51; // eax char v52; // bl unsigned int v53; // [esp+4h] [ebp-94h] int v54; // [esp+1Ch] [ebp-7Ch] bool v55; // [esp+21h] [ebp-77h] char v56; // [esp+22h] [ebp-76h] int v57; // [esp+24h] [ebp-74h] int v58; // [esp+28h] [ebp-70h] int v59; // [esp+2Ch] [ebp-6Ch] char v60; // [esp+2Ch] [ebp-6Ch] char v61; // [esp+2Ch] [ebp-6Ch] int v62; // [esp+30h] [ebp-68h] char v63; // [esp+34h] [ebp-64h] char v64; // [esp+35h] [ebp-63h] char v65; // [esp+35h] [ebp-63h] unsigned __int16 v66; // [esp+36h] [ebp-62h] char v67; // [esp+36h] [ebp-62h] bool v68; // [esp+38h] [ebp-60h] int v69; // [esp+3Ch] [ebp-5Ch] unsigned __int16 lpuexcpt; // [esp+40h] [ebp-58h] char lpuexcpta; // [esp+40h] [ebp-58h] __int64 lpuexcptb; // [esp+40h] [ebp-58h] char lpuexcptc; // [esp+40h] [ebp-58h] std::string *lpuexcptd; // [esp+40h] [ebp-58h] struct _Unwind_Exception *v75; // [esp+48h] [ebp-50h] int v76; // [esp+8Bh] [ebp-Dh] BYREF const char *v77[2]; // [esp+8Ch] [ebp-Ch] BYREF v75 = std::__use_cache>::operator()((int *)(a4 + 108)); v6 = *(_DWORD *)(a4 + 12) & 0x4A; v59 = v6; if ( v6 == 64 ) { v69 = 8; LABEL_4: v64 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v64 ) { v62 = 0; v68 = 0; v54 = v69; v57 = v69; lpuexcpt = 0; v55 = 0; goto LABEL_18; } goto LABEL_5; } if ( v6 != 8 ) { v69 = 10; goto LABEL_4; } v64 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v64 ) { v54 = 22; lpuexcpt = 0; v62 = 0; v68 = 0; v55 = 0; v69 = 16; v57 = 22; goto LABEL_18; } v69 = 16; LABEL_5: lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v51 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v51; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } v7 = *((_BYTE *)v75 + 16); v55 = *((_WORD *)v75 + 56) == lpuexcpt; if ( *((_WORD *)v75 + 56) != lpuexcpt && *((_WORD *)v75 + 57) != lpuexcpt || v7 && *((_WORD *)v75 + 19) == lpuexcpt || *((_WORD *)v75 + 18) == lpuexcpt ) { goto LABEL_49; } v8 = *(_DWORD *)(a1 + 8); if ( v8 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v8 + 2; WORD2(a1) = -1; v62 = 0; v64 = std::istreambuf_iterator::equal(&a1, (int)&a2); v68 = 0; if ( !v64 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v7 = *((_BYTE *)v75 + 16); LABEL_49: v62 = 0; v68 = 0; while ( 1 ) { if ( v7 && *((_WORD *)v75 + 19) == lpuexcpt || *((_WORD *)v75 + 18) == lpuexcpt ) { LABEL_116: v64 = 0; goto LABEL_15; } if ( *((_WORD *)v75 + 60) != lpuexcpt ) break; v27 = v69 == 10 || !v68; if ( !v27 ) goto LABEL_55; v68 = v59 == 0 || v69 == 8; if ( !v68 ) { ++v62; v68 = v27; goto LABEL_59; } v22 = (_DWORD *)a1; v62 = 0; v69 = 8; v23 = *(_DWORD *)(a1 + 8); if ( v23 < *(_DWORD *)(a1 + 12) ) { LABEL_60: v22[2] = v23 + 2; WORD2(a1) = -1; goto LABEL_61; } LABEL_71: (*(void (__fastcall **)(_DWORD *))(*v22 + 40))(v22); v22 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v67 = 1; goto LABEL_65; } LABEL_61: v24 = (__int16 *)v22[2]; if ( (unsigned int)v24 >= v22[3] ) v25 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); else v25 = *v24; v67 = 0; if ( v25 == -1 ) { LODWORD(a1) = 0; v67 = 1; } LABEL_65: v26 = a3 == -1; v65 = v26 & (a2 != 0); if ( v65 ) { v30 = (_WORD *)a2[2]; v31 = (unsigned int)v30 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v30; v26 = 0; if ( v31 == -1 ) { a2 = 0; v26 = v65; } } if ( v26 == v67 ) { v64 = 1; goto LABEL_15; } lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v49 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v49 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v49; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } if ( !v68 ) goto LABEL_116; v7 = *((_BYTE *)v75 + 16); } if ( !v68 ) goto LABEL_116; LABEL_55: if ( *((_WORD *)v75 + 58) != lpuexcpt && *((_WORD *)v75 + 59) != lpuexcpt ) { v64 = 0; v68 = 1; goto LABEL_15; } if ( v69 != 16 && v59 != 0 ) { v64 = 0; v68 = 1; v54 = v69; v57 = v69; goto LABEL_18; } v62 = 0; v68 = 0; v69 = 16; LABEL_59: v22 = (_DWORD *)a1; v23 = *(_DWORD *)(a1 + 8); if ( v23 < *(_DWORD *)(a1 + 12) ) goto LABEL_60; goto LABEL_71; } LABEL_15: v9 = 22; if ( v69 != 16 ) v9 = v69; v54 = v9; v57 = v9; LABEL_18: v77[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v75 + 16) ) std::string::reserve((int *)v77, (std::string *)0x20, v53); v58 = 0xFFFF / v69; v60 = *((_BYTE *)v75 + 164); if ( v60 ) { if ( v64 ) { v17 = v77[0]; v63 = 0; v66 = 0; v60 = v64; v18 = *((_DWORD *)v77[0] - 3); v64 = 0; LABEL_37: if ( v18 ) goto LABEL_86; goto LABEL_38; } v63 = 0; v66 = 0; while ( !*((_BYTE *)v75 + 16) || *((_WORD *)v75 + 19) != lpuexcpt ) { if ( lpuexcpt == *((_WORD *)v75 + 18) ) goto LABEL_85; v28 = (char *)v75 + 120; v29 = v54; while ( lpuexcpt != *(_WORD *)v28 ) { v28 += 2; if ( !--v29 ) goto LABEL_85; } v35 = v28 - ((char *)v75 + 120); v36 = v35 <= 30; v37 = (v35 >> 1) - 6; v38 = v35 >> 1; if ( !v36 ) v38 = v37; if ( (unsigned __int16)v58 < v66 ) { v63 = v60; goto LABEL_123; } v63 |= (unsigned __int16)(v69 * v66) > 0xFFFF - v38; v39 = (_DWORD *)a1; v66 = v69 * v66 + v38; ++v62; v40 = *(_DWORD *)(a1 + 8); if ( v40 < *(_DWORD *)(a1 + 12) ) { LABEL_124: v39[2] = v40 + 2; WORD2(a1) = -1; goto LABEL_125; } LABEL_133: (*(void (__fastcall **)(_DWORD *))(*v39 + 40))(v39); v39 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { lpuexcptc = v60; goto LABEL_129; } LABEL_125: v41 = (__int16 *)v39[2]; if ( (unsigned int)v41 >= v39[3] ) v42 = (*(int (__fastcall **)(_DWORD *))(*v39 + 36))(v39); else v42 = *v41; lpuexcptc = 0; if ( v42 == -1 ) { LODWORD(a1) = 0; lpuexcptc = v60; } LABEL_129: v43 = a3 == -1; v56 = v43 & (a2 != 0); if ( v56 ) { v47 = (_WORD *)a2[2]; v48 = (unsigned int)v47 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v47; v43 = 0; if ( v48 == -1 ) { a2 = 0; v43 = v56; } } if ( lpuexcptc == v43 ) { v17 = v77[0]; v18 = *((_DWORD *)v77[0] - 3); goto LABEL_37; } lpuexcpt = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v44 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v44 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v44; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } } v17 = v77[0]; v18 = *((_DWORD *)v77[0] - 3); if ( !v62 ) { v60 = 0; v64 = *((_BYTE *)v75 + 16); goto LABEL_37; } lpuexcptd = (std::string *)(v18 + 1); if ( (unsigned int)(v18 + 1) > *((_DWORD *)v77[0] - 2) || *((int *)v77[0] - 1) > 0 ) std::string::reserve((int *)v77, lpuexcptd, v53); v45 = v62; v62 = 0; v77[0][*((_DWORD *)v77[0] - 3)] = v45; v46 = v77[0]; *((_DWORD *)v77[0] - 1) = 0; *((_DWORD *)v46 - 3) = lpuexcptd; *((_BYTE *)lpuexcptd + (_DWORD)v46) = 0; LABEL_123: v39 = (_DWORD *)a1; v40 = *(_DWORD *)(a1 + 8); if ( v40 < *(_DWORD *)(a1 + 12) ) goto LABEL_124; goto LABEL_133; } if ( v64 ) { v52 = v64; v17 = v77[0]; v63 = 0; v64 = 0; v60 = v52; v18 = *((_DWORD *)v77[0] - 3); v66 = 0; goto LABEL_37; } v63 = 0; v66 = 0; LABEL_23: v10 = lpuexcpt; if ( v57 > 10 ) { if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) { LABEL_26: v11 = lpuexcpt - 48; LABEL_27: if ( (unsigned __int16)v58 >= v66 ) goto LABEL_97; LABEL_28: v12 = (_DWORD *)a1; v63 = 1; v13 = *(_DWORD *)(a1 + 8); if ( v13 >= *(_DWORD *)(a1 + 12) ) goto LABEL_98; LABEL_29: v12[2] = v13 + 2; WORD2(a1) = -1; LABEL_30: v14 = (__int16 *)v12[2]; if ( (unsigned int)v14 >= v12[3] ) v15 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); else v15 = *v14; lpuexcpta = 0; if ( v15 == -1 ) { LODWORD(a1) = 0; lpuexcpta = 1; } goto LABEL_34; } while ( (unsigned __int16)(lpuexcpt - 97) <= 5u ) { v11 = v10 - 87; if ( (unsigned __int16)v58 < v66 ) goto LABEL_28; LABEL_97: v63 |= (unsigned __int16)(v69 * v66) > 0xFFFF - v11; v12 = (_DWORD *)a1; v66 = v69 * v66 + v11; ++v62; v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) goto LABEL_29; LABEL_98: (*(void (__fastcall **)(_DWORD *))(*v12 + 40))(v12); v12 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_30; lpuexcpta = 1; LABEL_34: v16 = a3 == -1; v61 = v16 & (a2 != 0); if ( v61 ) { v33 = (_WORD *)a2[2]; v34 = (unsigned int)v33 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v33; v16 = 0; if ( v34 == -1 ) { a2 = 0; v16 = v61; } } if ( lpuexcpta == v16 ) { v17 = v77[0]; v60 = 1; v18 = *((_DWORD *)v77[0] - 3); goto LABEL_37; } lpuexcpt = WORD2(a1); if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) goto LABEL_23; v32 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v32 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v32; if ( lpuexcpt != 0xFFFF ) goto LABEL_23; LODWORD(a1) = 0; v10 = 0xFFFF; if ( v57 <= 10 ) goto LABEL_85; } if ( (unsigned __int16)(lpuexcpt - 65) <= 5u ) { v11 = v10 - 55; goto LABEL_27; } } else if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v57 + 48) > lpuexcpt ) { goto LABEL_26; } LABEL_85: v17 = v77[0]; v60 = 0; if ( *((_DWORD *)v77[0] - 3) ) { LABEL_86: std::string::push_back((int *)v77, (std::string *)(char)v62, v53); if ( !(unsigned __int8)std::__verify_grouping(*((char **)v75 + 2), *((_DWORD *)v75 + 3), v77) ) *a5 = 4; v17 = v77[0]; if ( !v62 && !v68 && !*((_DWORD *)v77[0] - 3) ) goto LABEL_40; goto LABEL_91; } LABEL_38: if ( !v62 && !v68 ) goto LABEL_40; LABEL_91: if ( v64 ) { LABEL_40: v19 = a5; *a6 = 0; *v19 = 4; goto LABEL_41; } if ( v63 ) { *a6 = -1; *a5 = 4; } else { v50 = -v66; if ( !v55 ) LOWORD(v50) = v66; *a6 = v50; } LABEL_41: if ( v60 ) *a5 |= 2u; lpuexcptb = a1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v17 - 1, 0xFFFFFFFF) > 0 ) return lpuexcptb; LABEL_156: std::string::_Rep::_M_destroy((void *)(v17 - 12), (int)&v76); return lpuexcptb; } v20 = *((_DWORD *)v17 - 1); *((_DWORD *)v17 - 1) = v20 - 1; if ( v20 <= 0 ) goto LABEL_156; return lpuexcptb; } // 4AEE07: variable 'v53' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004AF0A0) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_int( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6) { int v6; // eax char v7; // al int v8; // eax unsigned __int64 v9; // kr00_8 int v10; // esi int v11; // esi _DWORD *v12; // ecx unsigned int v13; // eax __int16 *v14; // eax __int16 v15; // ax char v16; // al const char *v17; // eax int v18; // edx _DWORD *v19; // edi _DWORD *v20; // esi int v21; // edx _DWORD *v23; // ecx unsigned int v24; // eax __int16 *v25; // eax __int16 v26; // ax char v27; // al bool v28; // al char *v29; // eax int v30; // edx int v31; // ecx unsigned int v32; // ebx int *v33; // edi _DWORD *v34; // ebx _WORD *v35; // eax __int16 v36; // dx _WORD *v37; // eax _WORD *v38; // eax __int16 v39; // dx int v40; // eax int v41; // esi _DWORD *v42; // ecx unsigned int v43; // eax __int16 *v44; // eax __int16 v45; // ax char v46; // al _WORD *v47; // eax char v48; // bl const char *v49; // eax _WORD *v50; // eax __int16 v51; // dx _WORD *v52; // eax _WORD *v53; // eax char v54; // bl unsigned int v55; // [esp+4h] [ebp-B4h] unsigned int v56; // [esp+4h] [ebp-B4h] int v57; // [esp+14h] [ebp-A4h] unsigned __int64 v58; // [esp+18h] [ebp-A0h] bool v59; // [esp+21h] [ebp-97h] char v60; // [esp+22h] [ebp-96h] int v61; // [esp+24h] [ebp-94h] char v62; // [esp+32h] [ebp-86h] char v63; // [esp+33h] [ebp-85h] char v64; // [esp+33h] [ebp-85h] int v65; // [esp+34h] [ebp-84h] char v66; // [esp+34h] [ebp-84h] char v67; // [esp+34h] [ebp-84h] __int64 v68; // [esp+38h] [ebp-80h] char v69; // [esp+38h] [ebp-80h] int v70; // [esp+40h] [ebp-78h] bool v71; // [esp+44h] [ebp-74h] int v72; // [esp+48h] [ebp-70h] unsigned __int64 v73; // [esp+48h] [ebp-70h] unsigned __int16 lpuexcpt; // [esp+50h] [ebp-68h] char lpuexcpta; // [esp+50h] [ebp-68h] __int64 lpuexcptb; // [esp+50h] [ebp-68h] char lpuexcptc; // [esp+50h] [ebp-68h] std::string *lpuexcptd; // [esp+50h] [ebp-68h] struct _Unwind_Exception *v79; // [esp+58h] [ebp-60h] int v80; // [esp+9Bh] [ebp-1Dh] BYREF const char *v81[7]; // [esp+9Ch] [ebp-1Ch] BYREF v79 = std::__use_cache>::operator()((int *)(a4 + 108)); v6 = *(_DWORD *)(a4 + 12) & 0x4A; v65 = v6; if ( v6 == 64 ) { v72 = 8; LABEL_4: v63 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v63 ) { v70 = 0; v71 = 0; v57 = v72; v61 = v72; lpuexcpt = 0; v59 = 0; goto LABEL_16; } goto LABEL_5; } if ( v6 != 8 ) { v72 = 10; goto LABEL_4; } v63 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v63 ) { v70 = 0; v57 = 22; lpuexcpt = 0; v71 = 0; v59 = 0; v72 = 16; v61 = 22; goto LABEL_16; } v72 = 16; LABEL_5: lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v53 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v53 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v53; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } v7 = *((_BYTE *)v79 + 16); v59 = *((_WORD *)v79 + 56) == lpuexcpt; if ( *((_WORD *)v79 + 56) != lpuexcpt && *((_WORD *)v79 + 57) != lpuexcpt || v7 && *((_WORD *)v79 + 19) == lpuexcpt || *((_WORD *)v79 + 18) == lpuexcpt ) { goto LABEL_49; } std::wstreambuf::sbumpc((_DWORD *)a1); WORD2(a1) = -1; v70 = 0; v63 = std::istreambuf_iterator::equal(&a1, (int)&a2); v71 = 0; if ( !v63 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v7 = *((_BYTE *)v79 + 16); LABEL_49: v70 = 0; v71 = 0; while ( 1 ) { if ( v7 && *((_WORD *)v79 + 19) == lpuexcpt || *((_WORD *)v79 + 18) == lpuexcpt ) { LABEL_118: v63 = 0; goto LABEL_13; } if ( *((_WORD *)v79 + 60) != lpuexcpt ) break; v28 = v72 == 10 || !v71; if ( !v28 ) goto LABEL_55; v71 = v65 == 0 || v72 == 8; if ( !v71 ) { ++v70; v71 = v28; goto LABEL_59; } v23 = (_DWORD *)a1; v70 = 0; v72 = 8; v24 = *(_DWORD *)(a1 + 8); if ( v24 < *(_DWORD *)(a1 + 12) ) { LABEL_60: v23[2] = v24 + 2; WORD2(a1) = -1; goto LABEL_61; } LABEL_71: (*(void (__fastcall **)(_DWORD *))(*v23 + 40))(v23); v23 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v69 = 1; goto LABEL_65; } LABEL_61: v25 = (__int16 *)v23[2]; if ( (unsigned int)v25 >= v23[3] ) v26 = (*(int (__fastcall **)(_DWORD *))(*v23 + 36))(v23); else v26 = *v25; v69 = 0; if ( v26 == -1 ) { LODWORD(a1) = 0; v69 = 1; } LABEL_65: v27 = a3 == -1; v64 = v27 & (a2 != 0); if ( v64 ) { v35 = (_WORD *)a2[2]; v36 = (unsigned int)v35 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v35; v27 = 0; if ( v36 == -1 ) { a2 = 0; v27 = v64; } } if ( v27 == v69 ) { v63 = 1; goto LABEL_13; } lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v52 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v52 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v52; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } if ( !v71 ) goto LABEL_118; v7 = *((_BYTE *)v79 + 16); } if ( !v71 ) goto LABEL_118; LABEL_55: if ( *((_WORD *)v79 + 58) != lpuexcpt && *((_WORD *)v79 + 59) != lpuexcpt ) { v63 = 0; v71 = 1; goto LABEL_13; } if ( v72 != 16 && v65 != 0 ) { v63 = 0; v71 = 1; v57 = v72; v61 = v72; goto LABEL_16; } v70 = 0; v71 = 0; v72 = 16; LABEL_59: v23 = (_DWORD *)a1; v24 = *(_DWORD *)(a1 + 8); if ( v24 < *(_DWORD *)(a1 + 12) ) goto LABEL_60; goto LABEL_71; } LABEL_13: v8 = 22; if ( v72 != 16 ) v8 = v72; v57 = v8; v61 = v8; LABEL_16: v81[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v79 + 16) ) std::string::reserve((int *)v81, (std::string *)0x20, v55); v58 = 0x8000000000000000LL; if ( !v59 ) v58 = 0x7FFFFFFFFFFFFFFFLL; v68 = v72; v9 = v58 / v72; v66 = *((_BYTE *)v79 + 164); if ( v66 ) { if ( v63 ) { v17 = v81[0]; v73 = 0LL; v66 = v63; v18 = *((_DWORD *)v81[0] - 3); v62 = 0; v63 = 0; LABEL_37: if ( v18 ) goto LABEL_86; goto LABEL_38; } v62 = 0; v73 = 0LL; while ( !*((_BYTE *)v79 + 16) || *((_WORD *)v79 + 19) != lpuexcpt ) { if ( lpuexcpt == *((_WORD *)v79 + 18) ) goto LABEL_85; v29 = (char *)v79 + 120; v30 = v57; while ( *(_WORD *)v29 != lpuexcpt ) { v29 += 2; if ( !--v30 ) goto LABEL_85; } v40 = v29 - ((char *)v79 + 120); v41 = (v40 >> 1) - 6; if ( v40 <= 30 ) v41 = v40 >> 1; if ( v9 < v73 ) { v62 = v66; goto LABEL_125; } v62 |= v58 - v41 < v68 * v73; v42 = (_DWORD *)a1; v73 = v68 * v73 + v41; ++v70; v43 = *(_DWORD *)(a1 + 8); if ( v43 < *(_DWORD *)(a1 + 12) ) { LABEL_126: v42[2] = v43 + 2; WORD2(a1) = -1; goto LABEL_127; } LABEL_135: (*(void (__fastcall **)(_DWORD *))(*v42 + 40))(v42); v42 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { lpuexcptc = v66; goto LABEL_131; } LABEL_127: v44 = (__int16 *)v42[2]; if ( (unsigned int)v44 >= v42[3] ) v45 = (*(int (__fastcall **)(_DWORD *))(*v42 + 36))(v42); else v45 = *v44; lpuexcptc = 0; if ( v45 == -1 ) { LODWORD(a1) = 0; lpuexcptc = v66; } LABEL_131: v46 = a3 == -1; v60 = v46 & (a2 != 0); if ( v60 ) { v50 = (_WORD *)a2[2]; v51 = (unsigned int)v50 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v50; v46 = 0; if ( v51 == -1 ) { a2 = 0; v46 = v60; } } if ( v46 == lpuexcptc ) { v17 = v81[0]; v18 = *((_DWORD *)v81[0] - 3); goto LABEL_37; } lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v47 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v47; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } } v17 = v81[0]; v18 = *((_DWORD *)v81[0] - 3); if ( !v70 ) { v66 = 0; v63 = *((_BYTE *)v79 + 16); goto LABEL_37; } lpuexcptd = (std::string *)(v18 + 1); if ( (unsigned int)(v18 + 1) > *((_DWORD *)v81[0] - 2) || *((int *)v81[0] - 1) > 0 ) std::string::reserve((int *)v81, lpuexcptd, v56); v48 = v70; v70 = 0; v81[0][*((_DWORD *)v81[0] - 3)] = v48; v49 = v81[0]; *((_DWORD *)v81[0] - 1) = 0; *((_DWORD *)v49 - 3) = lpuexcptd; *((_BYTE *)lpuexcptd + (_DWORD)v49) = 0; LABEL_125: v42 = (_DWORD *)a1; v43 = *(_DWORD *)(a1 + 8); if ( v43 < *(_DWORD *)(a1 + 12) ) goto LABEL_126; goto LABEL_135; } if ( v63 ) { v54 = v63; v17 = v81[0]; v62 = 0; v63 = 0; v66 = v54; v18 = *((_DWORD *)v81[0] - 3); v73 = 0LL; goto LABEL_37; } v62 = 0; v73 = 0LL; LABEL_23: v10 = lpuexcpt; if ( v61 > 10 ) { if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) { LABEL_26: v11 = lpuexcpt - 48; goto LABEL_27; } while ( 1 ) { if ( (unsigned __int16)(lpuexcpt - 97) > 5u ) { if ( (unsigned __int16)(lpuexcpt - 65) > 5u ) goto LABEL_85; v11 = v10 - 55; } else { v11 = v10 - 87; } LABEL_27: if ( v9 >= v73 ) { v62 |= v58 - v11 < v68 * v73; v12 = (_DWORD *)a1; v73 = v68 * v73 + v11; ++v70; v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) { LABEL_29: v12[2] = v13 + 2; WORD2(a1) = -1; goto LABEL_30; } } else { v12 = (_DWORD *)a1; v62 = 1; v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) goto LABEL_29; } (*(void (__fastcall **)(_DWORD *))(*v12 + 40))(v12); v12 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { lpuexcpta = 1; goto LABEL_34; } LABEL_30: v14 = (__int16 *)v12[2]; if ( (unsigned int)v14 >= v12[3] ) v15 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); else v15 = *v14; lpuexcpta = 0; if ( v15 == -1 ) { LODWORD(a1) = 0; lpuexcpta = 1; } LABEL_34: v16 = a3 == -1; v67 = v16 & (a2 != 0); if ( v67 ) { v38 = (_WORD *)a2[2]; v39 = (unsigned int)v38 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v38; v16 = 0; if ( v39 == -1 ) { a2 = 0; v16 = v67; } } if ( v16 == lpuexcpta ) { v17 = v81[0]; v66 = 1; v18 = *((_DWORD *)v81[0] - 3); goto LABEL_37; } lpuexcpt = WORD2(a1); if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) goto LABEL_23; v37 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v37 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v37; if ( lpuexcpt != 0xFFFF ) goto LABEL_23; LODWORD(a1) = 0; v10 = 0xFFFF; if ( v61 <= 10 ) goto LABEL_85; } } if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v61 + 48) > lpuexcpt ) goto LABEL_26; LABEL_85: v17 = v81[0]; v66 = 0; if ( *((_DWORD *)v81[0] - 3) ) { LABEL_86: std::string::push_back((int *)v81, (std::string *)(char)v70, v56); if ( !(unsigned __int8)std::__verify_grouping(*((char **)v79 + 2), *((_DWORD *)v79 + 3), v81) ) *a5 = 4; v17 = v81[0]; if ( !v70 && !v71 && !*((_DWORD *)v81[0] - 3) ) goto LABEL_40; goto LABEL_91; } LABEL_38: if ( !v70 && !v71 ) goto LABEL_40; LABEL_91: if ( v63 ) { LABEL_40: v19 = a6; v20 = a5; *a6 = 0; v19[1] = 0; *v20 = 4; goto LABEL_41; } if ( v62 ) { v31 = 0; v32 = 0x80000000; if ( !v59 ) { v31 = -1; v32 = 0x7FFFFFFF; } v33 = a6; a6[1] = v32; v34 = a5; *v33 = v31; *v34 = 4; } else { if ( v59 ) v73 = -(__int64)v73; *(_QWORD *)a6 = v73; } LABEL_41: if ( v66 ) *a5 |= 2u; lpuexcptb = a1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v17 - 1, 0xFFFFFFFF) > 0 ) return lpuexcptb; LABEL_158: std::string::_Rep::_M_destroy((void *)(v17 - 12), (int)&v80); return lpuexcptb; } v21 = *((_DWORD *)v17 - 1); *((_DWORD *)v17 - 1) = v21 - 1; if ( v21 <= 0 ) goto LABEL_158; return lpuexcptb; } // 4AFBA7: variable 'v55' is possibly undefined // 4AF6E7: variable 'v56' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004AFE80) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_int( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6) { int v6; // eax char v7; // al int v8; // eax unsigned __int64 v9; // kr00_8 int v10; // eax int v11; // esi _DWORD *v12; // ecx unsigned int v13; // eax __int16 *v14; // eax __int16 v15; // ax char v16; // al const char *v17; // eax int v18; // edx _DWORD *v19; // ebx _DWORD *v20; // edi int v21; // edx _DWORD *v23; // ecx unsigned int v24; // eax __int16 *v25; // eax __int16 v26; // ax char v27; // al bool v28; // al char *v29; // eax int v30; // edx _WORD *v31; // eax __int16 v32; // dx _WORD *v33; // eax _WORD *v34; // eax __int16 v35; // dx int v36; // eax int v37; // esi _DWORD *v38; // ecx unsigned int v39; // eax __int16 *v40; // eax __int16 v41; // ax char v42; // al _WORD *v43; // eax char v44; // bl const char *v45; // eax _WORD *v46; // eax __int16 v47; // dx _WORD *v48; // eax _DWORD *v49; // ebx _DWORD *v50; // edi _WORD *v51; // eax char v52; // bl unsigned int v53; // [esp+4h] [ebp-B4h] unsigned int v54; // [esp+4h] [ebp-B4h] bool v55; // [esp+1Fh] [ebp-99h] int v56; // [esp+20h] [ebp-98h] int v57; // [esp+24h] [ebp-94h] char v58; // [esp+30h] [ebp-88h] char v59; // [esp+32h] [ebp-86h] char v60; // [esp+33h] [ebp-85h] char v61; // [esp+33h] [ebp-85h] int v62; // [esp+34h] [ebp-84h] char v63; // [esp+34h] [ebp-84h] char v64; // [esp+34h] [ebp-84h] __int64 v65; // [esp+38h] [ebp-80h] char v66; // [esp+38h] [ebp-80h] int v67; // [esp+40h] [ebp-78h] bool v68; // [esp+44h] [ebp-74h] int v69; // [esp+48h] [ebp-70h] unsigned __int64 v70; // [esp+48h] [ebp-70h] unsigned __int16 lpuexcpt; // [esp+50h] [ebp-68h] char lpuexcpta; // [esp+50h] [ebp-68h] __int64 lpuexcptb; // [esp+50h] [ebp-68h] char lpuexcptc; // [esp+50h] [ebp-68h] std::string *lpuexcptd; // [esp+50h] [ebp-68h] struct _Unwind_Exception *v76; // [esp+58h] [ebp-60h] int v77; // [esp+9Bh] [ebp-1Dh] BYREF const char *v78[7]; // [esp+9Ch] [ebp-1Ch] BYREF v76 = std::__use_cache>::operator()((int *)(a4 + 108)); v6 = *(_DWORD *)(a4 + 12) & 0x4A; v62 = v6; if ( v6 == 64 ) { v69 = 8; LABEL_4: v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v60 ) { v67 = 0; v68 = 0; v56 = v69; v57 = v69; lpuexcpt = 0; v55 = 0; goto LABEL_16; } goto LABEL_5; } if ( v6 != 8 ) { v69 = 10; goto LABEL_4; } v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v60 ) { v67 = 0; v56 = 22; lpuexcpt = 0; v68 = 0; v55 = 0; v69 = 16; v57 = 22; goto LABEL_16; } v69 = 16; LABEL_5: lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v51 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v51; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } v7 = *((_BYTE *)v76 + 16); v55 = *((_WORD *)v76 + 56) == lpuexcpt; if ( *((_WORD *)v76 + 56) != lpuexcpt && *((_WORD *)v76 + 57) != lpuexcpt || v7 && *((_WORD *)v76 + 19) == lpuexcpt || *((_WORD *)v76 + 18) == lpuexcpt ) { goto LABEL_47; } std::wstreambuf::sbumpc((_DWORD *)a1); WORD2(a1) = -1; v67 = 0; v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); v68 = 0; if ( !v60 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v7 = *((_BYTE *)v76 + 16); LABEL_47: v67 = 0; v68 = 0; while ( 1 ) { if ( v7 && *((_WORD *)v76 + 19) == lpuexcpt || *((_WORD *)v76 + 18) == lpuexcpt ) { LABEL_117: v60 = 0; goto LABEL_13; } if ( *((_WORD *)v76 + 60) != lpuexcpt ) break; v28 = v69 == 10 || !v68; if ( !v28 ) goto LABEL_53; v68 = v62 == 0 || v69 == 8; if ( !v68 ) { ++v67; v68 = v28; goto LABEL_57; } v23 = (_DWORD *)a1; v67 = 0; v69 = 8; v24 = *(_DWORD *)(a1 + 8); if ( v24 < *(_DWORD *)(a1 + 12) ) { LABEL_58: v23[2] = v24 + 2; WORD2(a1) = -1; goto LABEL_59; } LABEL_69: (*(void (__fastcall **)(_DWORD *))(*v23 + 40))(v23); v23 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v66 = 1; goto LABEL_63; } LABEL_59: v25 = (__int16 *)v23[2]; if ( (unsigned int)v25 >= v23[3] ) v26 = (*(int (__fastcall **)(_DWORD *))(*v23 + 36))(v23); else v26 = *v25; v66 = 0; if ( v26 == -1 ) { LODWORD(a1) = 0; v66 = 1; } LABEL_63: v27 = a3 == -1; v61 = v27 & (a2 != 0); if ( v61 ) { v31 = (_WORD *)a2[2]; v32 = (unsigned int)v31 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v31; v27 = 0; if ( v32 == -1 ) { a2 = 0; v27 = v61; } } if ( v66 == v27 ) { v60 = 1; goto LABEL_13; } lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v48 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v48; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } if ( !v68 ) goto LABEL_117; v7 = *((_BYTE *)v76 + 16); } if ( !v68 ) goto LABEL_117; LABEL_53: if ( *((_WORD *)v76 + 58) != lpuexcpt && *((_WORD *)v76 + 59) != lpuexcpt ) { v60 = 0; v68 = 1; goto LABEL_13; } if ( v69 != 16 && v62 != 0 ) { v60 = 0; v68 = 1; v56 = v69; v57 = v69; goto LABEL_16; } v67 = 0; v68 = 0; v69 = 16; LABEL_57: v23 = (_DWORD *)a1; v24 = *(_DWORD *)(a1 + 8); if ( v24 < *(_DWORD *)(a1 + 12) ) goto LABEL_58; goto LABEL_69; } LABEL_13: v8 = 22; if ( v69 != 16 ) v8 = v69; v56 = v8; v57 = v8; LABEL_16: v78[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v76 + 16) ) std::string::reserve((int *)v78, (std::string *)0x20, v53); v65 = v69; v9 = 0xFFFFFFFFFFFFFFFFLL / v69; v63 = *((_BYTE *)v76 + 164); if ( v63 ) { if ( v60 ) { v17 = v78[0]; v70 = 0LL; v63 = v60; v18 = *((_DWORD *)v78[0] - 3); v59 = 0; v60 = 0; LABEL_35: if ( v18 ) goto LABEL_84; goto LABEL_36; } v59 = 0; v70 = 0LL; while ( !*((_BYTE *)v76 + 16) || *((_WORD *)v76 + 19) != lpuexcpt ) { if ( lpuexcpt == *((_WORD *)v76 + 18) ) goto LABEL_83; v29 = (char *)v76 + 120; v30 = v56; while ( *(_WORD *)v29 != lpuexcpt ) { v29 += 2; if ( !--v30 ) goto LABEL_83; } v36 = v29 - ((char *)v76 + 120); v37 = (v36 >> 1) - 6; if ( v36 <= 30 ) v37 = v36 >> 1; if ( v9 < v70 ) { v59 = v63; goto LABEL_122; } v59 |= __PAIR64__(~(v37 >> 31), ~v37) < v65 * v70; v38 = (_DWORD *)a1; ++v67; v70 = v65 * v70 + v37; v39 = *(_DWORD *)(a1 + 8); if ( v39 < *(_DWORD *)(a1 + 12) ) { LABEL_123: v38[2] = v39 + 2; WORD2(a1) = -1; goto LABEL_124; } LABEL_132: (*(void (__fastcall **)(_DWORD *))(*v38 + 40))(v38); v38 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { lpuexcptc = v63; goto LABEL_128; } LABEL_124: v40 = (__int16 *)v38[2]; if ( (unsigned int)v40 >= v38[3] ) v41 = (*(int (__fastcall **)(_DWORD *))(*v38 + 36))(v38); else v41 = *v40; lpuexcptc = 0; if ( v41 == -1 ) { LODWORD(a1) = 0; lpuexcptc = v63; } LABEL_128: v42 = a3 == -1; v58 = v42 & (a2 != 0); if ( v58 ) { v46 = (_WORD *)a2[2]; v47 = (unsigned int)v46 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v46; v42 = 0; if ( v47 == -1 ) { a2 = 0; v42 = v58; } } if ( v42 == lpuexcptc ) { v17 = v78[0]; v18 = *((_DWORD *)v78[0] - 3); goto LABEL_35; } lpuexcpt = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v43 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v43 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v43; if ( lpuexcpt == 0xFFFF ) LODWORD(a1) = 0; } } v17 = v78[0]; v18 = *((_DWORD *)v78[0] - 3); if ( !v67 ) { v63 = 0; v60 = *((_BYTE *)v76 + 16); goto LABEL_35; } lpuexcptd = (std::string *)(v18 + 1); if ( (unsigned int)(v18 + 1) > *((_DWORD *)v78[0] - 2) || *((int *)v78[0] - 1) > 0 ) std::string::reserve((int *)v78, lpuexcptd, v54); v44 = v67; v67 = 0; v78[0][*((_DWORD *)v78[0] - 3)] = v44; v45 = v78[0]; *((_DWORD *)v78[0] - 1) = 0; *((_DWORD *)v45 - 3) = lpuexcptd; *((_BYTE *)lpuexcptd + (_DWORD)v45) = 0; LABEL_122: v38 = (_DWORD *)a1; v39 = *(_DWORD *)(a1 + 8); if ( v39 < *(_DWORD *)(a1 + 12) ) goto LABEL_123; goto LABEL_132; } if ( v60 ) { v52 = v60; v17 = v78[0]; v59 = 0; v60 = 0; v63 = v52; v18 = *((_DWORD *)v78[0] - 3); v70 = 0LL; goto LABEL_35; } v59 = 0; v70 = 0LL; LABEL_21: v10 = lpuexcpt; if ( v57 > 10 ) { if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) { LABEL_24: v11 = lpuexcpt - 48; goto LABEL_25; } while ( 1 ) { v11 = v10 - 87; if ( (unsigned __int16)(lpuexcpt - 97) > 5u ) { if ( (unsigned __int16)(lpuexcpt - 65) > 5u ) goto LABEL_83; v11 = v10 - 55; } LABEL_25: if ( v9 >= v70 ) { v59 |= __PAIR64__(~(v11 >> 31), ~v11) < v65 * v70; v12 = (_DWORD *)a1; ++v67; v70 = v65 * v70 + v11; v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) { LABEL_27: v12[2] = v13 + 2; WORD2(a1) = -1; goto LABEL_28; } } else { v12 = (_DWORD *)a1; v59 = 1; v13 = *(_DWORD *)(a1 + 8); if ( v13 < *(_DWORD *)(a1 + 12) ) goto LABEL_27; } (*(void (__fastcall **)(_DWORD *))(*v12 + 40))(v12); v12 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { lpuexcpta = 1; goto LABEL_32; } LABEL_28: v14 = (__int16 *)v12[2]; if ( (unsigned int)v14 >= v12[3] ) v15 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); else v15 = *v14; lpuexcpta = 0; if ( v15 == -1 ) { LODWORD(a1) = 0; lpuexcpta = 1; } LABEL_32: v16 = a3 == -1; v64 = v16 & (a2 != 0); if ( v64 ) { v34 = (_WORD *)a2[2]; v35 = (unsigned int)v34 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v34; v16 = 0; if ( v35 == -1 ) { a2 = 0; v16 = v64; } } if ( v16 == lpuexcpta ) { v17 = v78[0]; v63 = 1; v18 = *((_DWORD *)v78[0] - 3); goto LABEL_35; } lpuexcpt = WORD2(a1); if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) goto LABEL_21; v33 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v33 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v33; if ( lpuexcpt != 0xFFFF ) goto LABEL_21; LODWORD(a1) = 0; v10 = 0xFFFF; if ( v57 <= 10 ) goto LABEL_83; } } if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v57 + 48) > lpuexcpt ) goto LABEL_24; LABEL_83: v17 = v78[0]; v63 = 0; if ( *((_DWORD *)v78[0] - 3) ) { LABEL_84: std::string::push_back((int *)v78, (std::string *)(char)v67, v54); if ( !(unsigned __int8)std::__verify_grouping(*((char **)v76 + 2), *((_DWORD *)v76 + 3), v78) ) *a5 = 4; v17 = v78[0]; if ( !v67 && !v68 && !*((_DWORD *)v78[0] - 3) ) goto LABEL_38; goto LABEL_89; } LABEL_36: if ( !v67 && !v68 ) goto LABEL_38; LABEL_89: if ( v60 ) { LABEL_38: v19 = a6; v20 = a5; *a6 = 0; v19[1] = 0; *v20 = 4; goto LABEL_39; } if ( v59 ) { v49 = a6; v50 = a5; *a6 = -1; v49[1] = -1; *v50 = 4; } else { if ( v55 ) v70 = -(__int64)v70; *(_QWORD *)a6 = v70; } LABEL_39: if ( v63 ) *a5 |= 2u; lpuexcptb = a1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)v17 - 1, 0xFFFFFFFF) > 0 ) return lpuexcptb; LABEL_155: std::string::_Rep::_M_destroy((void *)(v17 - 12), (int)&v77); return lpuexcptb; } v21 = *((_DWORD *)v17 - 1); *((_DWORD *)v17 - 1) = v21 - 1; if ( v21 <= 0 ) goto LABEL_155; return lpuexcptb; } // 4B0947: variable 'v53' is possibly undefined // 4B0497: variable 'v54' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004B0C20) -------------------------------------------------------- __int64 __stdcall std::num_get>::_M_extract_float( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6) { char v6; // cl int v7; // eax _DWORD *v8; // ecx unsigned int v9; // eax __int16 *v10; // eax __int16 v11; // ax char v12; // al int v13; // eax int v14; // eax char v16; // al char *v17; // eax bool v18; // zf int v19; // eax _DWORD *v20; // ecx unsigned int v21; // eax __int16 *v22; // eax __int16 v23; // ax char v24; // al __int16 v25; // dx _WORD *v26; // eax unsigned int v27; // eax __int16 v28; // ax int v29; // eax int v30; // eax _DWORD *v31; // ecx unsigned int v32; // eax __int16 *v33; // eax __int16 v34; // ax char v35; // al int v36; // eax const char *v37; // eax int v38; // eax _WORD *v39; // eax __int16 v40; // dx char v41; // cl const char *v42; // eax std::string *v43; // ebx int v44; // eax _WORD *v45; // eax __int16 v46; // dx __int16 *v47; // eax _WORD *v48; // eax __int16 v49; // dx _WORD *v50; // eax __int16 v51; // dx char v52; // al char i; // dl _DWORD *v54; // ecx unsigned int v55; // eax __int16 *v56; // eax __int16 v57; // ax char v58; // al int v59; // eax _WORD *v60; // eax __int16 v61; // dx _WORD *v62; // eax bool v63; // al unsigned int v64; // [esp+4h] [ebp-84h] unsigned int v65; // [esp+4h] [ebp-84h] unsigned int v66; // [esp+Ch] [ebp-7Ch] int v67; // [esp+14h] [ebp-74h] char v68; // [esp+14h] [ebp-74h] int v69; // [esp+14h] [ebp-74h] char v70; // [esp+1Bh] [ebp-6Dh] char v71; // [esp+1Ch] [ebp-6Ch] std::string *v72; // [esp+1Ch] [ebp-6Ch] std::string *v73; // [esp+1Ch] [ebp-6Ch] bool v74; // [esp+20h] [ebp-68h] char v75; // [esp+20h] [ebp-68h] std::string *v76; // [esp+20h] [ebp-68h] char v77; // [esp+20h] [ebp-68h] std::string *v78; // [esp+20h] [ebp-68h] std::string *v79; // [esp+20h] [ebp-68h] int v80; // [esp+24h] [ebp-64h] int v81; // [esp+28h] [ebp-60h] char v82; // [esp+28h] [ebp-60h] char v83; // [esp+28h] [ebp-60h] int v84; // [esp+28h] [ebp-60h] char v85; // [esp+2Ch] [ebp-5Ch] char v86; // [esp+2Ch] [ebp-5Ch] char v87; // [esp+2Ch] [ebp-5Ch] char v88; // [esp+2Ch] [ebp-5Ch] std::string *v89; // [esp+2Ch] [ebp-5Ch] struct _Unwind_Exception *v90; // [esp+30h] [ebp-58h] __int64 v91; // [esp+30h] [ebp-58h] __int16 lpuexcpt; // [esp+38h] [ebp-50h] struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-50h] char lpuexcptb; // [esp+38h] [ebp-50h] struct _Unwind_Exception *lpuexcptc; // [esp+38h] [ebp-50h] struct _Unwind_Exception *lpuexcptd; // [esp+38h] [ebp-50h] char lpuexcpte; // [esp+38h] [ebp-50h] struct _Unwind_Exception *lpuexcptf; // [esp+38h] [ebp-50h] char lpuexcptg; // [esp+38h] [ebp-50h] struct _Unwind_Exception *lpuexcpth; // [esp+38h] [ebp-50h] struct _Unwind_Exception *lpuexcpti; // [esp+38h] [ebp-50h] char lpuexcptj; // [esp+38h] [ebp-50h] int v103; // [esp+7Bh] [ebp-Dh] BYREF const char *v104[2]; // [esp+7Ch] [ebp-Ch] BYREF v90 = std::__use_cache>::operator()((int *)(a4 + 108)); v74 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( v74 ) { v80 = 0; lpuexcpt = 0; v85 = 0; goto LABEL_3; } lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v51 = *((_WORD *)v90 + 57); if ( v51 == lpuexcpt ) { v52 = *((_BYTE *)v90 + 16); } else { v52 = *((_BYTE *)v90 + 16); if ( *((_WORD *)v90 + 56) != lpuexcpt ) { LABEL_144: v80 = 0; for ( i = 0; ; i = 1 ) { if ( v52 && *((_WORD *)v90 + 19) == lpuexcpt || *((_WORD *)v90 + 18) == lpuexcpt || *((_WORD *)v90 + 60) != lpuexcpt ) { v85 = i; goto LABEL_3; } if ( i ) { v54 = (_DWORD *)a1; ++v80; v55 = *(_DWORD *)(a1 + 8); if ( v55 < *(_DWORD *)(a1 + 12) ) goto LABEL_151; } else { v84 = *(_DWORD *)(*a6 - 12); v89 = (std::string *)(v84 + 1); if ( (unsigned int)(v84 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) std::string::reserve(a6, v89, v64); ++v80; *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 48; v59 = *a6; *(_DWORD *)(v59 - 12) = v89; *(_DWORD *)(v59 - 4) = 0; *(_BYTE *)(v59 + v84 + 1) = 0; v54 = (_DWORD *)a1; v55 = *(_DWORD *)(a1 + 8); if ( v55 < *(_DWORD *)(a1 + 12) ) { LABEL_151: v54[2] = v55 + 2; WORD2(a1) = -1; goto LABEL_152; } } (*(void (__fastcall **)(_DWORD *))(*v54 + 40))(v54); v54 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { v88 = 1; goto LABEL_156; } LABEL_152: v56 = (__int16 *)v54[2]; if ( (unsigned int)v56 >= v54[3] ) v57 = (*(int (__fastcall **)(_DWORD *))(*v54 + 36))(v54); else v57 = *v56; v88 = 0; if ( v57 == -1 ) { LODWORD(a1) = 0; v88 = 1; } LABEL_156: v58 = a3 == -1; v83 = v58 & (a2 != 0); if ( v83 ) { v60 = (_WORD *)a2[2]; v61 = (unsigned int)v60 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v60; v58 = 0; if ( v61 == -1 ) { a2 = 0; v58 = v83; } } if ( v58 == v88 ) { v85 = 1; v74 = 1; goto LABEL_3; } lpuexcpt = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v62 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v62 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v62; if ( lpuexcpt == -1 ) LODWORD(a1) = 0; } v52 = *((_BYTE *)v90 + 16); } } } if ( v52 && *((_WORD *)v90 + 19) == lpuexcpt || *((_WORD *)v90 + 18) == lpuexcpt ) goto LABEL_144; std::string::push_back(a6, (std::string *)(2 * (v51 != lpuexcpt) + 43), v64); std::wstreambuf::sbumpc((_DWORD *)a1); WORD2(a1) = -1; v63 = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !v63 ) { lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); v52 = *((_BYTE *)v90 + 16); goto LABEL_144; } v85 = 0; v74 = v63; v80 = 0; LABEL_3: v104[0] = (const char *)std::string::_S_construct(0, 0); if ( *((_BYTE *)v90 + 16) ) std::string::reserve((int *)v104, (std::string *)0x20, v65); v70 = *((_BYTE *)v90 + 164); if ( !v70 ) { if ( !v74 ) { v75 = 0; v71 = 0; LABEL_8: if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) { v86 = lpuexcpt; v81 = *(_DWORD *)(*a6 - 12); lpuexcpta = (struct _Unwind_Exception *)(v81 + 1); if ( (unsigned int)(v81 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) std::string::reserve(a6, lpuexcpta, v65); v6 = v86; v85 = 1; *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = v6; v7 = *a6; *(_DWORD *)(v7 - 4) = 0; *(_DWORD *)(v7 - 12) = lpuexcpta; *(_BYTE *)(v7 + v81 + 1) = 0; goto LABEL_13; } while ( 1 ) { if ( *((_WORD *)v90 + 18) == lpuexcpt && !((unsigned __int8)v75 | (unsigned __int8)v71) ) { v71 = 1; std::string::push_back(a6, (std::string *)0x2E, v65); v75 = 0; LABEL_13: v8 = (_DWORD *)a1; v9 = *(_DWORD *)(a1 + 8); if ( v9 >= *(_DWORD *)(a1 + 12) ) goto LABEL_78; LABEL_14: v8[2] = v9 + 2; WORD2(a1) = -1; LABEL_15: v10 = (__int16 *)v8[2]; if ( (unsigned int)v10 >= v8[3] ) v11 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); else v11 = *v10; lpuexcptb = 0; if ( v11 == -1 ) { LODWORD(a1) = 0; lpuexcptb = 1; } goto LABEL_19; } if ( *((_WORD *)v90 + 74) != lpuexcpt && *((_WORD *)v90 + 80) != lpuexcpt ) goto LABEL_21; v85 &= v75 ^ 1; if ( !v85 ) goto LABEL_21; std::string::push_back(a6, (std::string *)0x65, v65); v27 = *(_DWORD *)(a1 + 8); if ( v27 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v27 + 2; WORD2(a1) = -1; if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) goto LABEL_200; v28 = std::istreambuf_iterator::_M_get((int)&a1); lpuexcpt = v28; if ( *((_WORD *)v90 + 57) == v28 ) { v29 = 43; } else { if ( *((_WORD *)v90 + 56) != v28 ) { v75 = v85; goto LABEL_8; } v29 = 45; } std::string::push_back(a6, (std::string *)v29, v65); v8 = (_DWORD *)a1; v75 = v85; v9 = *(_DWORD *)(a1 + 8); if ( v9 < *(_DWORD *)(a1 + 12) ) goto LABEL_14; LABEL_78: (*(void (__fastcall **)(_DWORD *))(*v8 + 40))(v8); v8 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_15; lpuexcptb = 1; LABEL_19: v12 = a3 == -1; v82 = v12 & (a2 != 0); if ( v82 ) { v39 = (_WORD *)a2[2]; v40 = (unsigned int)v39 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v39; v12 = 0; if ( v40 == -1 ) { a2 = 0; v12 = v82; } } if ( lpuexcptb == v12 ) goto LABEL_21; lpuexcpt = WORD2(a1); if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) goto LABEL_8; v26 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v26 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v26; if ( lpuexcpt != -1 ) goto LABEL_8; LODWORD(a1) = 0; } } LABEL_203: lpuexcptc = (struct _Unwind_Exception *)v104[0]; if ( *((_DWORD *)v104[0] - 3) ) goto LABEL_25; goto LABEL_28; } if ( v74 ) goto LABEL_203; v75 = 0; v71 = 0; v16 = *((_BYTE *)v90 + 16); while ( 1 ) { if ( v16 && *((_WORD *)v90 + 19) == lpuexcpt ) { v71 |= v75; if ( v71 ) { lpuexcptc = (struct _Unwind_Exception *)v104[0]; v36 = *((_DWORD *)v104[0] - 3); LABEL_197: if ( v36 ) goto LABEL_26; goto LABEL_28; } if ( !v80 ) { std::string::_M_mutate((char **)a6, 0, *(_DWORD *)(*a6 - 12), 0, v66); lpuexcptc = (struct _Unwind_Exception *)v104[0]; if ( *((_DWORD *)v104[0] - 3) ) goto LABEL_25; goto LABEL_28; } v78 = (std::string *)*((_DWORD *)v104[0] - 3); lpuexcpti = (std::string *)((char *)v78 + 1); if ( (unsigned int)v78 + 1 > *((_DWORD *)v104[0] - 2) || *((int *)v104[0] - 1) > 0 ) std::string::reserve((int *)v104, lpuexcpti, v65); v41 = v80; v80 = 0; v104[0][*((_DWORD *)v104[0] - 3)] = v41; v42 = v104[0]; *((_DWORD *)v104[0] - 3) = lpuexcpti; v43 = v78; *((_DWORD *)v42 - 1) = 0; v75 = 0; *((_BYTE *)v43 + (_DWORD)v42 + 1) = 0; LABEL_84: v31 = (_DWORD *)a1; v32 = *(_DWORD *)(a1 + 8); if ( v32 < *(_DWORD *)(a1 + 12) ) goto LABEL_85; goto LABEL_105; } v17 = (char *)v90 + 120; if ( *((_WORD *)v90 + 18) != lpuexcpt ) { do { if ( *(_WORD *)v17 == lpuexcpt ) { v87 = ((v17 - ((char *)v90 + 120)) >> 1) + 48; v67 = *(_DWORD *)(*a6 - 12); lpuexcptf = (struct _Unwind_Exception *)(v67 + 1); if ( (unsigned int)(v67 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) std::string::reserve(a6, lpuexcptf, v65); ++v80; *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = v87; v30 = *a6; *(_DWORD *)(v30 - 12) = lpuexcptf; *(_DWORD *)(v30 - 4) = 0; *(_BYTE *)(v30 + v67 + 1) = 0; v85 = v70; goto LABEL_84; } v17 += 2; } while ( v17 != (char *)v90 + 140 ); if ( *((_WORD *)v90 + 74) != lpuexcpt && *((_WORD *)v90 + 80) != lpuexcpt ) break; v18 = (((unsigned __int8)v75 ^ 1) & (unsigned __int8)v85) == 0; v85 &= v75 ^ 1; lpuexcptc = (struct _Unwind_Exception *)v104[0]; v13 = *((_DWORD *)v104[0] - 3); if ( v18 ) goto LABEL_22; if ( v13 && !v71 ) std::string::push_back((int *)v104, (std::string *)(char)v80, v65); v76 = *(std::string **)(*a6 - 12); lpuexcptd = (std::string *)((char *)v76 + 1); if ( (unsigned int)v76 + 1 > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) std::string::reserve(a6, lpuexcptd, v65); *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 101; v19 = *a6; *(_DWORD *)(v19 - 12) = lpuexcptd; *(_DWORD *)(v19 - 4) = 0; *((_BYTE *)v76 + v19 + 1) = 0; v20 = (_DWORD *)a1; v21 = *(_DWORD *)(a1 + 8); if ( v21 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v20 = (_DWORD *)a1; WORD2(a1) = -1; if ( (_DWORD)a1 ) goto LABEL_49; lpuexcpte = v85; } else { *(_DWORD *)(a1 + 8) = v21 + 2; WORD2(a1) = -1; LABEL_49: v22 = (__int16 *)v20[2]; if ( (unsigned int)v22 >= v20[3] ) v23 = (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20); else v23 = *v22; lpuexcpte = 0; if ( v23 == -1 ) { LODWORD(a1) = 0; lpuexcpte = v85; } } v24 = a3 == -1; v77 = v24 & (a2 != 0); if ( v77 ) { v48 = (_WORD *)a2[2]; v49 = (unsigned int)v48 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v48; v24 = 0; if ( v49 == -1 ) { a2 = 0; v24 = v77; } } if ( v24 == lpuexcpte ) { LABEL_200: lpuexcptc = (struct _Unwind_Exception *)v104[0]; if ( *((_DWORD *)v104[0] - 3) ) goto LABEL_26; goto LABEL_28; } lpuexcpt = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v50 = *(_WORD **)(a1 + 8); lpuexcpt = (unsigned int)v50 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v50; if ( lpuexcpt == -1 ) LODWORD(a1) = 0; } v25 = *((_WORD *)v90 + 57); v16 = *((_BYTE *)v90 + 16); if ( v25 != lpuexcpt && *((_WORD *)v90 + 56) != lpuexcpt ) goto LABEL_59; if ( v16 && *((_WORD *)v90 + 19) == lpuexcpt ) { v75 = *((_BYTE *)v90 + 16); v85 = v75; continue; } if ( *((_WORD *)v90 + 18) == lpuexcpt ) { LABEL_59: v75 = v85; continue; } lpuexcptj = 2 * (v25 != lpuexcpt) + 43; v69 = *(_DWORD *)(*a6 - 12); v79 = (std::string *)(v69 + 1); if ( (unsigned int)(v69 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) std::string::reserve(a6, v79, v65); *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = lpuexcptj; v44 = *a6; *(_DWORD *)(v44 - 12) = v79; *(_DWORD *)(v44 - 4) = 0; *(_BYTE *)(v44 + v69 + 1) = 0; v75 = v85; goto LABEL_84; } v18 = ((unsigned __int8)v71 | (unsigned __int8)v75) == 0; v75 |= v71; lpuexcptc = (struct _Unwind_Exception *)v104[0]; v36 = *((_DWORD *)v104[0] - 3); if ( !v18 ) goto LABEL_197; if ( v36 ) { v72 = (std::string *)(v36 + 1); if ( (unsigned int)(v36 + 1) > *((_DWORD *)v104[0] - 2) || *((int *)v104[0] - 1) > 0 ) std::string::reserve((int *)v104, v72, v65); v104[0][*((_DWORD *)v104[0] - 3)] = v80; v37 = v104[0]; *((_DWORD *)v104[0] - 1) = 0; *((_DWORD *)v37 - 3) = v72; *((_BYTE *)v72 + (_DWORD)v37) = 0; } v73 = *(std::string **)(*a6 - 12); lpuexcpth = (std::string *)((char *)v73 + 1); if ( (unsigned int)v73 + 1 > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) std::string::reserve(a6, lpuexcpth, v65); *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 46; v38 = *a6; *(_DWORD *)(v38 - 12) = lpuexcpth; *(_DWORD *)(v38 - 4) = 0; *((_BYTE *)v73 + v38 + 1) = 0; v31 = (_DWORD *)a1; v71 = v70; v32 = *(_DWORD *)(a1 + 8); if ( v32 < *(_DWORD *)(a1 + 12) ) { LABEL_85: v31[2] = v32 + 2; WORD2(a1) = -1; goto LABEL_86; } LABEL_105: (*(void (__fastcall **)(_DWORD *))(*v31 + 40))(v31); v31 = (_DWORD *)a1; WORD2(a1) = -1; if ( !(_DWORD)a1 ) { lpuexcptg = v70; goto LABEL_90; } LABEL_86: v33 = (__int16 *)v31[2]; if ( (unsigned int)v33 >= v31[3] ) v34 = (*(int (__fastcall **)(_DWORD *))(*v31 + 36))(v31); else v34 = *v33; lpuexcptg = 0; if ( v34 == -1 ) { LODWORD(a1) = 0; lpuexcptg = v70; } LABEL_90: v35 = a3 == -1; v68 = v35 & (a2 != 0); if ( v68 ) { v45 = (_WORD *)a2[2]; v46 = (unsigned int)v45 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v45; v35 = 0; if ( v46 == -1 ) { a2 = 0; v35 = v68; } } if ( lpuexcptg == v35 ) break; lpuexcpt = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v47 = *(__int16 **)(a1 + 8); if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) lpuexcpt = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); else lpuexcpt = *v47; v16 = *((_BYTE *)v90 + 16); if ( lpuexcpt == -1 ) LODWORD(a1) = 0; } else { v16 = *((_BYTE *)v90 + 16); } } LABEL_21: lpuexcptc = (struct _Unwind_Exception *)v104[0]; v13 = *((_DWORD *)v104[0] - 3); LABEL_22: if ( !v13 ) goto LABEL_28; if ( v71 || v75 ) goto LABEL_26; LABEL_25: std::string::push_back((int *)v104, (std::string *)(char)v80, v65); lpuexcptc = (struct _Unwind_Exception *)v104[0]; LABEL_26: if ( !(unsigned __int8)std::__verify_grouping(*((char **)v90 + 2), *((_DWORD *)v90 + 3), v104) ) *a5 = 4; LABEL_28: v91 = a1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)lpuexcptc - 1, 0xFFFFFFFF) > 0 ) return v91; LABEL_141: std::string::_Rep::_M_destroy((char *)lpuexcptc - 12, (int)&v103); return v91; } v14 = *((_DWORD *)lpuexcptc - 1); *((_DWORD *)lpuexcptc - 1) = v14 - 1; if ( v14 <= 0 ) goto LABEL_141; return v91; } // 4B1644: variable 'v65' is possibly undefined // 4B1765: variable 'v64' is possibly undefined // 4B1B06: variable 'v66' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004B1B80) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7) { int (__stdcall *v7)(__int64, _DWORD *, __int16, int, _DWORD *, _DWORD *); // eax int v8; // edi int result; // eax int v10; // ecx int v11[8]; // [esp+4Ch] [ebp-20h] BYREF v7 = *(int (__stdcall **)(__int64, _DWORD *, __int16, int, _DWORD *, _DWORD *))(*(_DWORD *)this + 48); if ( v7 != std::num_get>::do_get ) return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD *, int, int, _DWORD *, int *))v7)( a2, HIDWORD(a2), a3, a4, a5, a6, a7); v8 = *(_DWORD *)(a5 + 12); *(_DWORD *)(a5 + 12) = v8 & 0xFFFFFFB5 | 8; result = std::num_get>::_M_extract_int( a2, a3, a4, a5, a6, v11); v10 = v11[0]; *(_DWORD *)(a5 + 12) = v8; *a7 = v10; return result; } // 4B1B80: using guessed type int var_20[8]; //----- (004B1C50) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); } //----- (004B1C60) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); } //----- (004B1C70) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); } //----- (004B1C80) -------------------------------------------------------- int __fastcall std::num_get>::get(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); } //----- (004B1C90) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7) { 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(a2, a3, a4, a5, a6, a7); else return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); } // 4B2BA0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004B1D10) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7) { 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(a2, a3, a4, a5, a6, a7); else return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); } // 4B2BB0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004B1D90) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7) { 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( a2, a3, a4, a5, a6, a7); else return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); } // 4B2BC0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004B1E10) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _WORD *a7) { 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( a2, a3, a4, a5, a6, a7); else return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); } // 4B2BD0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004B1E90) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { 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(a2, a3, a4, a5, a6, a7); else return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); } // 4B2BE0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004B1F10) -------------------------------------------------------- int __thiscall std::num_get>::get( void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { 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( a2, a3, a4, a5, a6, a7); else return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); } // 4B2BF0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); //----- (004B1F90) -------------------------------------------------------- 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 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; } // 4B1F90: using guessed type int var_20[8]; //----- (004B2030) -------------------------------------------------------- __int64 __stdcall std::num_get>::do_get( __int64 a1, _DWORD *a2, __int16 a3, int a4, int *a5, _BYTE *a6) { _BYTE *v6; // edx struct _Unwind_Exception *v8; // eax int v9; // ecx struct _Unwind_Exception *v10; // esi int v11; // eax bool v12; // dl __int16 v13; // ax unsigned int v14; // ebp char v15; // di unsigned int v16; // eax bool v17; // cl char v18; // si char v19; // di char v20; // al char v21; // di unsigned __int16 v22; // ax __int16 *v23; // eax __int16 v24; // cx bool v25; // bl struct _Unwind_Exception *v26; // esi char v27; // dl __int16 *v28; // eax __int16 v29; // ax unsigned __int16 *v30; // eax int v31; // eax __int16 v32; // ax struct _Unwind_Exception *v33; // [esp+20h] [ebp-3Ch] bool v34; // [esp+24h] [ebp-38h] bool v35; // [esp+25h] [ebp-37h] char v36; // [esp+26h] [ebp-36h] bool v37; // [esp+27h] [ebp-35h] bool v38; // [esp+27h] [ebp-35h] bool v39; // [esp+27h] [ebp-35h] __int64 v40; // [esp+28h] [ebp-34h] unsigned int v41[8]; // [esp+3Ch] [ebp-20h] BYREF if ( (*(_BYTE *)(a4 + 12) & 1) == 0 ) { v41[0] = -1; v40 = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, (int *)v41); LODWORD(a1) = v40; WORD2(a1) = WORD2(v40); if ( v41[0] > 1 ) { *a6 = 1; *a5 = 4; if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) *a5 |= 2u; } else { v6 = a6; *a6 = v41[0]; *v6 &= 1u; } return a1; } v8 = std::__use_cache>::operator()((int *)(a4 + 108)); v9 = *((_DWORD *)v8 + 8); v10 = v8; v11 = *((_DWORD *)v8 + 6); v12 = v9 == 0; v35 = v11 == 0; if ( !(v11 | v9) ) goto LABEL_55; v33 = v10; v13 = WORD2(a1); v14 = 0; v36 = 1; v34 = 1; while ( 1 ) { v18 = v13 == -1; v19 = v18 & ((_DWORD)a1 != 0); if ( v19 ) { v28 = *(__int16 **)(a1 + 8); if ( (unsigned int)v28 >= *(_DWORD *)(a1 + 12) ) { v38 = v12; v29 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); v12 = v38; } else { v29 = *v28; } v18 = 0; if ( v29 == -1 ) { LODWORD(a1) = 0; v18 = v19; } } v20 = a3 == -1; v21 = v20 & (a2 != 0); if ( v21 ) { v23 = (__int16 *)a2[2]; if ( (unsigned int)v23 >= a2[3] ) { v37 = v12; v32 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v12 = v37; v24 = v32; } else { v24 = *v23; } v20 = 0; if ( v24 == -1 ) break; } if ( v18 == v20 ) goto LABEL_35; LABEL_20: v22 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v30 = *(unsigned __int16 **)(a1 + 8); if ( (unsigned int)v30 >= *(_DWORD *)(a1 + 12) ) { v39 = v12; v22 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); v12 = v39; } else { v22 = *v30; } if ( v22 == 0xFFFF ) LODWORD(a1) = 0; } if ( !v12 ) v34 = *(_WORD *)(*((_DWORD *)v33 + 7) + 2 * v14) == v22; if ( !v34 ) { if ( v35 ) { if ( v36 ) { if ( *((_DWORD *)v33 + 6) == v14 && v14 ) { *a6 = 1; v31 = 0; LABEL_68: *a5 = v31; return a1; } LABEL_55: *a6 = 0; goto LABEL_56; } LABEL_57: *a6 = 0; *a5 = 4; return a1; } LABEL_8: v36 = *(_WORD *)(*((_DWORD *)v33 + 5) + 2 * v14) == v22; goto LABEL_9; } if ( !v35 ) goto LABEL_8; LABEL_9: v15 = v12 & (v36 ^ 1); if ( v15 ) { if ( v34 ) { if ( *((_DWORD *)v33 + 8) == v14 && v14 ) { *a6 = 0; v31 = 0; goto LABEL_68; } goto LABEL_55; } goto LABEL_57; } if ( !(v34 | (unsigned __int8)v36) ) goto LABEL_57; ++v14; v16 = *(_DWORD *)(a1 + 8); if ( v16 >= *(_DWORD *)(a1 + 12) ) (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); else *(_DWORD *)(a1 + 8) = v16 + 2; WORD2(a1) = -1; if ( !v34 ) { v12 = v36; LABEL_30: v35 = *((_DWORD *)v33 + 6) <= v14; v36 |= v34; v17 = v12 && v35; goto LABEL_16; } v12 = *((_DWORD *)v33 + 8) <= v14; if ( v36 ) goto LABEL_30; v17 = *((_DWORD *)v33 + 8) <= v14; v35 = v34; LABEL_16: v13 = -1; if ( v17 ) { v25 = v34; v26 = v33; v27 = v15; goto LABEL_36; } } a2 = 0; if ( v18 != v21 ) goto LABEL_20; LABEL_35: v25 = v34; v26 = v33; v27 = 1; LABEL_36: if ( v25 && *((_DWORD *)v26 + 8) == v14 && v14 ) { *a6 = 0; if ( !v36 || *((_DWORD *)v26 + 6) != v14 ) goto LABEL_71; LABEL_56: *a5 = 4; return a1; } if ( v36 && *((_DWORD *)v26 + 6) == v14 && v14 ) { *a6 = 1; LABEL_71: v31 = 2 * (v27 != 0); goto LABEL_68; } *a6 = 0; if ( !v27 ) goto LABEL_56; *a5 = 6; return a1; } // 4B2030: using guessed type unsigned int var_20[8]; //----- (004B24B0) -------------------------------------------------------- std::locale::facet *__stdcall std::num_get>::do_get( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, double *a6) { __int64 v6; // rax char v7; // dl int v8; // ecx int v9; // eax __int16 *v11; // eax __int16 v12; // ax __int16 *v13; // eax __int16 v14; // ax unsigned __int8 v15; // dl bool v16; // zf std::locale::facet *v17; // eax unsigned int v18; // [esp+4h] [ebp-94h] std::locale::facet *v19; // [esp+30h] [ebp-68h] std::locale::facet *v20; // [esp+38h] [ebp-60h] __int16 lpuexcpta; // [esp+40h] [ebp-58h] unsigned __int8 lpuexcpt; // [esp+40h] [ebp-58h] int v23; // [esp+88h] [ebp-10h] BYREF int v24[3]; // [esp+8Ch] [ebp-Ch] BYREF v23 = (int)std::string::_S_construct(0, 0); std::string::reserve(&v23, (std::string *)0x20, v18); v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, &v23); lpuexcpta = WORD2(v6); v20 = (std::locale::facet *)v6; v19 = (std::locale::facet *)v6; v24[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v((unsigned __int8 *)v23, a6, a5); lpuexcpt = lpuexcpta == -1; if ( (lpuexcpt & (v19 != 0)) != 0 ) { v13 = (__int16 *)*((_DWORD *)v20 + 2); if ( (unsigned int)v13 >= *((_DWORD *)v20 + 3) ) v14 = (*(int (__fastcall **)(std::locale::facet *))(*(_DWORD *)v20 + 36))(v20); else v14 = *v13; v15 = lpuexcpt & (v20 != 0); v16 = v14 == -1; if ( v14 != -1 ) v15 = 0; v17 = 0; if ( !v16 ) v17 = v20; lpuexcpt = v15; v19 = v17; } v7 = a3 == -1; if ( a2 && a3 == -1 ) { v11 = (__int16 *)a2[2]; if ( (unsigned int)v11 >= a2[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); else v12 = *v11; v7 = v12 == -1; } if ( lpuexcpt == v7 ) *a5 |= 2u; v8 = v23; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23 - 4), 0xFFFFFFFF) > 0 ) return v19; LABEL_10: std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)v24); return v19; } v9 = *(_DWORD *)(v23 - 4); *(_DWORD *)(v23 - 4) = v9 - 1; if ( v9 <= 0 ) goto LABEL_10; return v19; } // 4B2530: variable 'v18' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 4B24B0: using guessed type int var_C[3]; //----- (004B2700) -------------------------------------------------------- std::locale::facet *__stdcall std::num_get>::do_get( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, long double *a6) { __int64 v6; // rax char v7; // dl char *v8; // ecx int v9; // eax __int16 *v11; // eax __int16 v12; // ax __int16 *v13; // eax __int16 v14; // ax unsigned __int8 v15; // dl bool v16; // zf std::locale::facet *v17; // eax unsigned int v18; // [esp+4h] [ebp-94h] std::locale::facet *v19; // [esp+30h] [ebp-68h] std::locale::facet *v20; // [esp+38h] [ebp-60h] __int16 lpuexcpta; // [esp+40h] [ebp-58h] unsigned __int8 lpuexcpt; // [esp+40h] [ebp-58h] char *String; // [esp+88h] [ebp-10h] BYREF int v24[3]; // [esp+8Ch] [ebp-Ch] BYREF String = (char *)std::string::_S_construct(0, 0); std::string::reserve((int *)&String, (std::string *)0x20, v18); v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (int *)&String); lpuexcpta = WORD2(v6); v20 = (std::locale::facet *)v6; v19 = (std::locale::facet *)v6; v24[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String, a6, a5); lpuexcpt = lpuexcpta == -1; if ( (lpuexcpt & (v19 != 0)) != 0 ) { v13 = (__int16 *)*((_DWORD *)v20 + 2); if ( (unsigned int)v13 >= *((_DWORD *)v20 + 3) ) v14 = (*(int (__fastcall **)(std::locale::facet *))(*(_DWORD *)v20 + 36))(v20); else v14 = *v13; v15 = lpuexcpt & (v20 != 0); v16 = v14 == -1; if ( v14 != -1 ) v15 = 0; v17 = 0; if ( !v16 ) v17 = v20; lpuexcpt = v15; v19 = v17; } v7 = a3 == -1; if ( a2 && a3 == -1 ) { v11 = (__int16 *)a2[2]; if ( (unsigned int)v11 >= a2[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); else v12 = *v11; v7 = v12 == -1; } if ( lpuexcpt == v7 ) *a5 |= 2u; v8 = String; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF) > 0 ) return v19; LABEL_10: std::string::_Rep::_M_destroy(v8 - 12, (int)v24); return v19; } v9 = *((_DWORD *)String - 1); *((_DWORD *)String - 1) = v9 - 1; if ( v9 <= 0 ) goto LABEL_10; return v19; } // 4B2780: variable 'v18' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 4B2700: using guessed type int var_C[3]; //----- (004B2950) -------------------------------------------------------- std::locale::facet *__stdcall std::num_get>::do_get( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, float *a6) { __int64 v6; // rax char v7; // dl int v8; // ecx int v9; // eax __int16 *v11; // eax __int16 v12; // ax __int16 *v13; // eax __int16 v14; // ax unsigned __int8 v15; // dl bool v16; // zf std::locale::facet *v17; // eax unsigned int v18; // [esp+4h] [ebp-94h] std::locale::facet *v19; // [esp+30h] [ebp-68h] std::locale::facet *v20; // [esp+38h] [ebp-60h] __int16 lpuexcpta; // [esp+40h] [ebp-58h] unsigned __int8 lpuexcpt; // [esp+40h] [ebp-58h] int v23; // [esp+88h] [ebp-10h] BYREF int v24[3]; // [esp+8Ch] [ebp-Ch] BYREF v23 = (int)std::string::_S_construct(0, 0); std::string::reserve(&v23, (std::string *)0x20, v18); v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, &v23); lpuexcpta = WORD2(v6); v20 = (std::locale::facet *)v6; v19 = (std::locale::facet *)v6; v24[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v((unsigned __int8 *)v23, a6, a5); lpuexcpt = lpuexcpta == -1; if ( (lpuexcpt & (v19 != 0)) != 0 ) { v13 = (__int16 *)*((_DWORD *)v20 + 2); if ( (unsigned int)v13 >= *((_DWORD *)v20 + 3) ) v14 = (*(int (__fastcall **)(std::locale::facet *))(*(_DWORD *)v20 + 36))(v20); else v14 = *v13; v15 = lpuexcpt & (v20 != 0); v16 = v14 == -1; if ( v14 != -1 ) v15 = 0; v17 = 0; if ( !v16 ) v17 = v20; lpuexcpt = v15; v19 = v17; } v7 = a3 == -1; if ( a2 && a3 == -1 ) { v11 = (__int16 *)a2[2]; if ( (unsigned int)v11 >= a2[3] ) v12 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); else v12 = *v11; v7 = v12 == -1; } if ( lpuexcpt == v7 ) *a5 |= 2u; v8 = v23; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23 - 4), 0xFFFFFFFF) > 0 ) return v19; LABEL_10: std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)v24); return v19; } v9 = *(_DWORD *)(v23 - 4); *(_DWORD *)(v23 - 4) = v9 - 1; if ( v9 <= 0 ) goto LABEL_10; return v19; } // 4B29D0: variable 'v18' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 4B2950: using guessed type int var_C[3]; //----- (004B2C00) -------------------------------------------------------- _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; } //----- (004B2C50) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, int *a3, int a4, int a5) { struct _Unwind_Exception *v5; // esi void *v6; // esp void *v7; // esp unsigned int v8; // eax int v9; // eax int v10; // ebx char *v11; // edx int v12; // esi int v14; // eax void *v15; // esp void *v16; // esp int v17; // eax void *v18; // esp void *v19; // esp char *v20; // eax _BYTE *v21; // eax char v22; // al int v23; // [esp-14h] [ebp-7Ch] int v24; // [esp-Ch] [ebp-74h] char v25[2]; // [esp+0h] [ebp-68h] BYREF _BYTE v26[18]; // [esp+2h] [ebp-66h] BYREF char v27[20]; // [esp+14h] [ebp-54h] BYREF unsigned int v28; // [esp+28h] [ebp-40h] int v29; // [esp+2Ch] [ebp-3Ch] char *v30; // [esp+30h] [ebp-38h] int v31; // [esp+34h] [ebp-34h] unsigned int v32; // [esp+38h] [ebp-30h] char *v33; // [esp+3Ch] [ebp-2Ch] v31 = a2; v29 = a4; v5 = std::__use_cache>::operator()(a3 + 27); v33 = (char *)v5 + 38; v32 = a3[3]; v6 = alloca(32); v7 = alloca(32); v28 = v32 & 0x4A; v8 = a5; LOBYTE(v33) = v28 != 8 && v28 != 64; if ( a5 <= 0 ) { v8 = -a5; if ( v28 == 8 || v28 == 64 ) v8 = a5; } v30 = v25; v9 = std::__int_to_char(v27, v8, (int)v5 + 38, v32, (char)v33); v10 = v9; v11 = &v30[-v9 + 20]; if ( !*((_BYTE *)v5 + 16) ) { if ( (_BYTE)v33 ) goto LABEL_6; LABEL_16: if ( (v32 & 0x200) != 0 && a5 ) { if ( v28 == 64 ) { v22 = *((_BYTE *)v5 + 42); ++v10; --v11; } else { v10 += 2; v11 -= 2; v11[1] = *((_BYTE *)v5 + ((v32 >> 14) & 1) + 40); v22 = *((_BYTE *)v5 + 42); } *v11 = v22; } goto LABEL_8; } v17 = 16 * ((unsigned int)(2 * v9 + 29) >> 4); v18 = alloca(v17); v19 = alloca(v17); v23 = *((_DWORD *)v5 + 3); v20 = (char *)*((_DWORD *)v5 + 2); v30 = v26; v21 = std::__add_grouping(v26, *((_BYTE *)v5 + 37), v20, v23, v11, &v11[v10]); v11 = v30; v10 = v21 - v30; if ( !(_BYTE)v33 ) goto LABEL_16; LABEL_6: if ( a5 < 0 ) { ++v10; *--v11 = *((_BYTE *)v5 + 38); } else if ( (v32 & 0x800) != 0 ) { ++v10; *--v11 = *((_BYTE *)v5 + 39); v12 = a3[2]; if ( v12 <= v10 ) goto LABEL_9; goto LABEL_13; } LABEL_8: v12 = a3[2]; if ( v12 <= v10 ) goto LABEL_9; LABEL_13: v14 = 16 * ((unsigned int)(v12 + 27) >> 4); v15 = alloca(v14); v16 = alloca(v14); v24 = v10; v10 = v12; v33 = v25; std::__pad>::_S_pad(a3, (void *)(char)v29, v25, v11, v12, v24); v11 = v33; LABEL_9: a3[2] = 0; if ( !(_BYTE)v31 ) (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)a1 + 48))(a1, v11, v10); return a1; } // 4B2C50: using guessed type char anonymous_0[20]; //----- (004B2EA0) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, _DWORD *a3, int a4, int a5) { unsigned int v5; // ecx void *v6; // esp void *v7; // esp struct _Unwind_Exception *v8; // edx int v9; // eax char v10; // bl struct _Unwind_Exception *v11; // eax char v12; // si int v14; // eax void *v15; // esp void *v16; // esp int v17; // eax _BYTE *v18; // eax int v19; // esi int v20; // eax void *v21; // esp void *v22; // esp _DWORD *v23; // eax char v24[2]; // [esp+0h] [ebp-88h] BYREF _BYTE v25[6]; // [esp+2h] [ebp-86h] BYREF unsigned int v26; // [esp+8h] [ebp-80h] char v27[16]; // [esp+14h] [ebp-74h] BYREF int v28; // [esp+24h] [ebp-64h] unsigned int v29; // [esp+28h] [ebp-60h] unsigned int v30; // [esp+2Ch] [ebp-5Ch] int v31; // [esp+30h] [ebp-58h] int v32; // [esp+34h] [ebp-54h] std::locale::_Impl *v33; // [esp+38h] [ebp-50h] int *v34; // [esp+3Ch] [ebp-4Ch] int v35; // [esp+40h] [ebp-48h] int v36; // [esp+44h] [ebp-44h] struct _Unwind_Exception *lpuexcpt; // [esp+48h] [ebp-40h] v35 = a1; v32 = a2; v31 = a4; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v34 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); v36 = *v34; if ( !v36 ) { v23 = operator new(0x68u); v23[1] = 0; *v23 = &off_5605B0; v23[2] = 0; v23[3] = 0; *((_BYTE *)v23 + 16) = 0; v23[5] = 0; v23[6] = 0; v23[7] = 0; v23[8] = 0; *((_WORD *)v23 + 18) = 0; *((_BYTE *)v23 + 100) = 0; v33 = (std::locale::_Impl *)v23; std::__numpunct_cache::_M_cache((int)v23, (int)(a3 + 27)); std::locale::_Impl::_M_install_cache(a3[27], v33, lpuexcpt, v26); v36 = *v34; } v5 = a3[3]; v28 = v36 + 38; v30 = v5; v6 = alloca(32); v7 = alloca(32); v33 = (std::locale::_Impl *)v24; v29 = v5 & 0x4A; LOBYTE(v34) = v29 != 8 && v29 != 64; lpuexcpt = (struct _Unwind_Exception *)std::__int_to_char(v27, a5, v36 + 38, v5, (char)v34); v8 = (struct _Unwind_Exception *)(v33 - lpuexcpt + 20); if ( *(_BYTE *)(v36 + 16) ) { v14 = 16 * ((unsigned int)(2 * (_DWORD)lpuexcpt + 29) >> 4); v15 = alloca(v14); v16 = alloca(v14); v17 = *(_DWORD *)(v36 + 12); lpuexcpt = (struct _Unwind_Exception *)v25; v18 = std::__add_grouping(v25, *(_BYTE *)(v36 + 37), *(char **)(v36 + 8), v17, v8, (_BYTE *)v33 + 20); v8 = lpuexcpt; lpuexcpt = (struct _Unwind_Exception *)(v18 - (_BYTE *)lpuexcpt); if ( (_BYTE)v34 ) goto LABEL_5; } else if ( (_BYTE)v34 ) { goto LABEL_5; } if ( (v30 & 0x200) != 0 && a5 ) { if ( v29 == 64 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v8 = (struct _Unwind_Exception *)((char *)v8 - 1); } else { v8 = (struct _Unwind_Exception *)((char *)v8 - 2); lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); *((_BYTE *)v8 + 1) = *(_BYTE *)(v28 + ((v30 >> 14) & 1) + 2); } *(_BYTE *)v8 = *(_BYTE *)(v36 + 42); } LABEL_5: v9 = a3[2]; v36 = v9; if ( v9 > (int)lpuexcpt ) { v19 = v9; v20 = 16 * ((unsigned int)(v9 + 27) >> 4); v21 = alloca(v20); v22 = alloca(v20); v34 = (int *)v24; std::__pad>::_S_pad(a3, (void *)(char)v31, v24, v8, v19, (int)lpuexcpt); v8 = (struct _Unwind_Exception *)v34; lpuexcpt = (struct _Unwind_Exception *)v36; } v10 = v32; a3[2] = 0; LOBYTE(v36) = v10; if ( !v10 ) { v11 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v35 + 48))( v35, v8, lpuexcpt); v12 = v36; if ( lpuexcpt != v11 ) v12 = 1; LOBYTE(v36) = v12; } lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v36; return v35; } // 53F788: using guessed type signed __int32 std::numpunct::id; // 5605B0: using guessed type int (*off_5605B0)(); // 4B2EA0: using guessed type char anonymous_1[16]; //----- (004B3240) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, int *a3, int a4, __int64 a5) { struct _Unwind_Exception *v5; // edi void *v6; // esp void *v7; // esp __int64 v8; // rax int v9; // eax char *v10; // esi int v11; // ebx char *v12; // edx int v13; // esi int v15; // eax void *v16; // esp void *v17; // esp int v18; // eax void *v19; // esp void *v20; // esp _BYTE *v21; // eax char v22; // al int v23; // [esp-2Ch] [ebp-94h] char v24[2]; // [esp-20h] [ebp-88h] BYREF _BYTE v25[38]; // [esp-1Eh] [ebp-86h] BYREF char v26[24]; // [esp+8h] [ebp-60h] BYREF unsigned int v27; // [esp+20h] [ebp-48h] int v28; // [esp+24h] [ebp-44h] int v29; // [esp+28h] [ebp-40h] unsigned int v30; // [esp+2Ch] [ebp-3Ch] int v31; // [esp+30h] [ebp-38h] int v32; // [esp+34h] [ebp-34h] __int64 v33; // [esp+38h] [ebp-30h] v31 = a1; v29 = a2; v28 = a4; v33 = a5; v5 = std::__use_cache>::operator()(a3 + 27); v32 = (int)v5 + 38; v30 = a3[3]; v6 = alloca(64); v7 = alloca(64); v27 = v30 & 0x4A; v8 = a5; LOBYTE(v32) = v27 != 8 && v27 != 64; if ( ((HIDWORD(a5) | ((unsigned __int64)(a5 - 1) >> 32)) & 0x80000000) != 0LL && (_BYTE)v32 ) v8 = -a5; v9 = std::__int_to_char(v26, v8, HIDWORD(v8), (int)v5 + 38, v30, v32); v10 = &v24[-v9]; v11 = v9; v12 = &v24[-v9 + 40]; if ( !*((_BYTE *)v5 + 16) ) { if ( (_BYTE)v32 ) goto LABEL_6; LABEL_16: if ( (v30 & 0x200) != 0 && v33 ) { if ( v27 == 64 ) { v22 = *((_BYTE *)v5 + 42); ++v11; --v12; } else { v11 += 2; v12 -= 2; v12[1] = *((_BYTE *)v5 + ((v30 >> 14) & 1) + 40); v22 = *((_BYTE *)v5 + 42); } *v12 = v22; } goto LABEL_8; } v18 = 16 * ((unsigned int)(2 * v9 + 29) >> 4); v19 = alloca(v18); v20 = alloca(v18); v21 = std::__add_grouping( v25, *((_BYTE *)v5 + 37), *((char **)v5 + 2), *((_DWORD *)v5 + 3), v10 + 40, &v12[v11]); v12 = v25; v11 = v21 - v25; if ( !(_BYTE)v32 ) goto LABEL_16; LABEL_6: if ( v33 < 0 ) { ++v11; *--v12 = *((_BYTE *)v5 + 38); } else if ( (v30 & 0x800) != 0 ) { ++v11; *--v12 = *((_BYTE *)v5 + 39); v13 = a3[2]; if ( v13 <= v11 ) goto LABEL_9; goto LABEL_13; } LABEL_8: v13 = a3[2]; if ( v13 <= v11 ) goto LABEL_9; LABEL_13: v15 = 16 * ((unsigned int)(v13 + 27) >> 4); v16 = alloca(v15); v17 = alloca(v15); v23 = v11; v11 = v13; std::__pad>::_S_pad(a3, (void *)(char)v28, v24, v12, v13, v23); v12 = v24; LABEL_9: a3[2] = 0; if ( !(_BYTE)v29 ) (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v31 + 48))(v31, v12, v11); return v31; } // 4B3240: using guessed type char anonymous_0[24]; //----- (004B34A0) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, _DWORD *a3, int a4, int a5, int a6) { unsigned int v6; // ecx void *v7; // esp void *v8; // esp int v9; // ebx struct _Unwind_Exception *v10; // edx int v11; // eax char v12; // bl struct _Unwind_Exception *v13; // eax char v14; // si int v16; // eax void *v17; // esp void *v18; // esp int v19; // eax _BYTE *v20; // eax int v21; // ebx int v22; // eax void *v23; // esp void *v24; // esp _DWORD *v25; // eax char v26[2]; // [esp-20h] [ebp-B8h] BYREF _BYTE v27[38]; // [esp-1Eh] [ebp-B6h] BYREF unsigned int v28[9]; // [esp+8h] [ebp-90h] BYREF int v29; // [esp+2Ch] [ebp-6Ch] unsigned int v30; // [esp+30h] [ebp-68h] unsigned int v31; // [esp+34h] [ebp-64h] int v32; // [esp+38h] [ebp-60h] int v33; // [esp+3Ch] [ebp-5Ch] std::locale::_Impl *v34; // [esp+40h] [ebp-58h] int *v35; // [esp+44h] [ebp-54h] unsigned __int64 v36; // [esp+48h] [ebp-50h] int v37; // [esp+50h] [ebp-48h] int v38; // [esp+54h] [ebp-44h] struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-40h] v37 = a1; v33 = a2; v32 = a4; v36 = __PAIR64__(a5, a6); lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v35 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); v38 = *v35; if ( !v38 ) { v25 = operator new(0x68u); v25[1] = 0; *v25 = &off_5605B0; v25[2] = 0; v25[3] = 0; *((_BYTE *)v25 + 16) = 0; v25[5] = 0; v25[6] = 0; v25[7] = 0; v25[8] = 0; *((_WORD *)v25 + 18) = 0; *((_BYTE *)v25 + 100) = 0; v34 = (std::locale::_Impl *)v25; std::__numpunct_cache::_M_cache((int)v25, (int)(a3 + 27)); std::locale::_Impl::_M_install_cache(a3[27], v34, lpuexcpt, v28[0]); v38 = *v35; } v6 = a3[3]; v29 = v38 + 38; v31 = v6; v7 = alloca(64); v8 = alloca(64); v34 = (std::locale::_Impl *)v26; v30 = v6 & 0x4A; LOBYTE(v35) = v30 != 8 && v30 != 64; lpuexcpt = (struct _Unwind_Exception *)std::__int_to_char( v28, HIDWORD(v36), v36, v38 + 38, v6, (char)v35); v9 = v34 - lpuexcpt; v10 = (struct _Unwind_Exception *)(v34 - lpuexcpt + 40); if ( *(_BYTE *)(v38 + 16) ) { v16 = 16 * ((unsigned int)(2 * (_DWORD)lpuexcpt + 29) >> 4); v17 = alloca(v16); v18 = alloca(v16); v19 = *(_DWORD *)(v38 + 12); lpuexcpt = (struct _Unwind_Exception *)v27; v20 = std::__add_grouping( v27, *(_BYTE *)(v38 + 37), *(char **)(v38 + 8), v19, (_BYTE *)(v9 + 40), (_BYTE *)v34 + 40); v10 = lpuexcpt; lpuexcpt = (struct _Unwind_Exception *)(v20 - (_BYTE *)lpuexcpt); if ( (_BYTE)v35 ) goto LABEL_5; } else if ( (_BYTE)v35 ) { goto LABEL_5; } if ( (v31 & 0x200) != 0 && v36 ) { if ( v30 == 64 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v10 = (struct _Unwind_Exception *)((char *)v10 - 1); } else { v10 = (struct _Unwind_Exception *)((char *)v10 - 2); lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); *((_BYTE *)v10 + 1) = *(_BYTE *)(v29 + ((v31 >> 14) & 1) + 2); } *(_BYTE *)v10 = *(_BYTE *)(v38 + 42); } LABEL_5: v11 = a3[2]; v38 = v11; if ( v11 > (int)lpuexcpt ) { v21 = v11; v22 = 16 * ((unsigned int)(v11 + 27) >> 4); v23 = alloca(v22); v24 = alloca(v22); HIDWORD(v36) = v26; std::__pad>::_S_pad(a3, (void *)(char)v32, v26, v10, v21, (int)lpuexcpt); v10 = (struct _Unwind_Exception *)HIDWORD(v36); lpuexcpt = (struct _Unwind_Exception *)v38; } v12 = v33; a3[2] = 0; LOBYTE(v38) = v12; if ( !v12 ) { v13 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v37 + 48))( v37, v10, lpuexcpt); v14 = v38; if ( lpuexcpt != v13 ) v14 = 1; LOBYTE(v38) = v14; } lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v38; return v37; } // 53F788: using guessed type signed __int32 std::numpunct::id; // 5605B0: using guessed type int (*off_5605B0)(); // 4B34A0: using guessed type unsigned int anonymous_0[9]; //----- (004B3860) -------------------------------------------------------- _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; // ecx int v9; // eax _BYTE *v10; // edx _BYTE *result; // eax _BYTE *v12; // [esp+2Ch] [ebp-20h] if ( Src ) { v7 = (char *)(Src - a6); v8 = std::__add_grouping((_BYTE *)a5, a3, a1, a2, a6, Src); v9 = 0; v10 = &v8[-a5]; if ( *a7 != Src - a6 ) { v12 = &v8[-a5]; memcpy(v8, Src, *a7 - (_DWORD)v7); v10 = v12; v9 = *a7 - (_DWORD)v7; } result = &v10[v9]; *a7 = result; } else { result = &std::__add_grouping((_BYTE *)a5, a3, a1, a2, a6, &a6[*a7])[-a5]; *a7 = result; } return result; } //----- (004B3930) -------------------------------------------------------- int __thiscall std::num_put>::_M_insert_float( void *this, int a2, int a3, int *a4, int a5, char a6, double a7) { int v7; // ebx void *v8; // esp void *v9; // esp int v10; // eax _BYTE *v11; // eax int v12; // ebx _BYTE *v13; // esi int v14; // eax void *v15; // esp char v16; // dl void *v17; // esp char *v18; // eax void (__thiscall *v19)(_BYTE *, char *, char *, void *); // edx char *v20; // eax char *v21; // edx struct _Unwind_Exception *v22; // ecx signed int v23; // esi int v25; // eax void *v26; // esp void *v27; // esp int v28; // eax void *v29; // esp void *v30; // esp char *v31; // ecx int v32; // ebx int v33; // eax void *v34; // esp void *v35; // esp int v36; // eax int v37; // eax void *v38; // esp void *v39; // esp int v40; // [esp-2Ch] [ebp-B4h] char v41; // [esp-20h] [ebp-A8h] BYREF _BYTE v42[71]; // [esp-1Fh] [ebp-A7h] BYREF char *v43; // [esp+28h] [ebp-60h] int v44; // [esp+2Ch] [ebp-5Ch] void *v45; // [esp+30h] [ebp-58h] int v46; // [esp+34h] [ebp-54h] size_t Size; // [esp+38h] [ebp-50h] struct _Unwind_Exception *v48; // [esp+3Ch] [ebp-4Ch] void *v49; // [esp+40h] [ebp-48h] int v50; // [esp+44h] [ebp-44h] int v51[2]; // [esp+48h] [ebp-40h] size_t MaxCount; // [esp+58h] [ebp-30h] BYREF int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF char v54[40]; // [esp+60h] [ebp-28h] BYREF v45 = this; v50 = a2; *(double *)v51 = a7; v46 = a3; v44 = a5; v49 = a4 + 27; v48 = std::__use_cache>::operator()(a4 + 27); v7 = a4[1]; if ( v7 < 0 ) v7 = 6; std::__num_base::_S_format_float((std::__num_base *)a4, (const std::ios_base *)v54, (char *)a6); v8 = alloca(64); v9 = alloca(64); if ( (a4[3] & 0x104) == 260 ) { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v36 = std::__convert_from_v(&c_locale, &v41, 45, v54, v51[0], v51[1]); MaxCount = v36; if ( v36 > 44 ) { Size = v36 + 1; v37 = 16 * ((unsigned int)(v36 + 28) >> 4); v38 = alloca(v37); v39 = alloca(v37); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, &v41, Size, v54, v51[0], v51[1]); } } else { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v10 = std::__convert_from_v(&c_locale, &v41, 45, v54, v7, v51[0], v51[1]); MaxCount = v10; if ( v10 > 44 ) { Size = v10 + 1; v25 = 16 * ((unsigned int)(v10 + 28) >> 4); v26 = alloca(v25); v27 = alloca(v25); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, &v41, Size, v54, v7, v51[0], v51[1]); } } v11 = std::use_facet>((int)v49); v12 = MaxCount; v13 = v11; Size = MaxCount; v14 = 16 * ((MaxCount + 27) >> 4); v15 = alloca(v14); v16 = v13[28]; v17 = alloca(v14); v49 = &v41; v51[0] = (int)&v41; v18 = &v42[MaxCount - 1]; if ( v16 != 1 ) { if ( v16 ) { v19 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); if ( (char *)v19 == (char *)std::ctype::do_widen ) goto LABEL_9; } else { v43 = &v42[MaxCount - 1]; std::ctype::_M_widen_init((int)v13); v18 = v43; v19 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); if ( (char *)v19 == (char *)std::ctype::do_widen ) { LABEL_9: v12 = MaxCount; if ( v18 != &v41 ) memcpy(v49, &v41, Size); goto LABEL_11; } } v19(v13, &v41, v18, v49); v12 = MaxCount; goto LABEL_11; } if ( v18 != &v41 ) memcpy(v49, &v41, MaxCount); LABEL_11: if ( !v12 ) { if ( *((_BYTE *)v48 + 16) ) { v21 = 0; goto LABEL_20; } LABEL_14: v23 = a4[2]; if ( v23 <= v12 ) goto LABEL_15; goto LABEL_23; } v20 = (char *)memchr(&v41, 46, v12); v21 = v20; if ( !v20 ) { if ( *((_BYTE *)v48 + 16) && (v12 <= 2 || v42[0] <= 57 && (unsigned __int8)(v42[1] - 48) <= 9u && v42[0] > 47) ) goto LABEL_20; goto LABEL_14; } v22 = v48; v21 = (char *)v49 + v20 - &v41; *v21 = *((_BYTE *)v48 + 36); if ( !*((_BYTE *)v22 + 16) ) goto LABEL_14; LABEL_20: v28 = 16 * ((unsigned int)(2 * v12 + 27) >> 4); v29 = alloca(v28); v30 = alloca(v28); if ( ((v41 - 43) & 0xFD) != 0 ) { v31 = &v41; v32 = 0; } else { v31 = v42; MaxCount = v12 - 1; v32 = 1; v41 = *(_BYTE *)v49; v51[0] = (int)v49 + 1; } std::num_put>::_M_group_float( *((char **)v48 + 2), *((_DWORD *)v48 + 3), *((_BYTE *)v48 + 37), v21, (int)v31, (_BYTE *)v51[0], &MaxCount); v12 = MaxCount + v32; v51[0] = (int)&v41; MaxCount = v12; v23 = a4[2]; if ( v23 <= v12 ) goto LABEL_15; LABEL_23: v33 = 16 * ((unsigned int)(v23 + 27) >> 4); v34 = alloca(v33); v35 = alloca(v33); v40 = v12; v12 = v23; std::__pad>::_S_pad(a4, (void *)(char)v44, &v41, (_BYTE *)v51[0], v23, v40); MaxCount = v23; v51[0] = (int)&v41; LABEL_15: a4[2] = 0; if ( !(_BYTE)v46 ) (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v50 + 48))(v50, v51[0], v12); return v50; } //----- (004B3D90) -------------------------------------------------------- int __thiscall std::num_put>::_M_insert_float( void *this, int a2, int a3, int *a4, int a5, char a6, long double a7) { int v7; // ebx void *v8; // esp void *v9; // esp int v10; // eax _BYTE *v11; // eax int v12; // ebx _BYTE *v13; // esi int v14; // eax void *v15; // esp char v16; // dl void *v17; // esp char *v18; // eax void (__thiscall *v19)(_BYTE *, char *, char *, void *); // edx char *v20; // eax char *v21; // edx struct _Unwind_Exception *v22; // ecx signed int v23; // esi int v25; // eax void *v26; // esp void *v27; // esp int v28; // eax void *v29; // esp void *v30; // esp char *v31; // ecx int v32; // ebx int v33; // eax void *v34; // esp void *v35; // esp int v36; // eax int v37; // eax void *v38; // esp void *v39; // esp int v44; // [esp-3Ch] [ebp-C4h] char v45; // [esp-30h] [ebp-B8h] BYREF _BYTE v46[91]; // [esp-2Fh] [ebp-B7h] BYREF char *v47; // [esp+2Ch] [ebp-5Ch] int v48; // [esp+30h] [ebp-58h] void *v49; // [esp+34h] [ebp-54h] size_t Size; // [esp+38h] [ebp-50h] int v51; // [esp+3Ch] [ebp-4Ch] struct _Unwind_Exception *v52; // [esp+40h] [ebp-48h] void *v53; // [esp+44h] [ebp-44h] int v54; // [esp+48h] [ebp-40h] int v55; // [esp+4Ch] [ebp-3Ch] size_t MaxCount; // [esp+58h] [ebp-30h] BYREF int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF char v58[40]; // [esp+60h] [ebp-28h] BYREF v49 = this; v54 = a2; v51 = a3; v48 = a5; v55 = (int)(a4 + 27); v52 = std::__use_cache>::operator()(a4 + 27); v7 = a4[1]; if ( v7 < 0 ) v7 = 6; std::__num_base::_S_format_float((std::__num_base *)a4, (const std::ios_base *)v58, (char *)a6); v8 = alloca(80); v9 = alloca(80); if ( (a4[3] & 0x104) == 260 ) { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v36 = std::__convert_from_v(&c_locale, &v45, 54, v58, *(_QWORD *)&a7, HIDWORD(a7)); MaxCount = v36; if ( v36 > 53 ) { v53 = (void *)(v36 + 1); v37 = 16 * ((unsigned int)(v36 + 28) >> 4); v38 = alloca(v37); v39 = alloca(v37); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, &v45, (int)v53, v58, *(_QWORD *)&a7, HIDWORD(a7)); } } else { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v10 = std::__convert_from_v(&c_locale, &v45, 54, v58, v7, *(_QWORD *)&a7, HIDWORD(a7)); MaxCount = v10; if ( v10 > 53 ) { v53 = (void *)(v10 + 1); v25 = 16 * ((unsigned int)(v10 + 28) >> 4); v26 = alloca(v25); v27 = alloca(v25); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, &v45, (int)v53, v58, v7, *(_QWORD *)&a7, HIDWORD(a7)); } } v11 = std::use_facet>(v55); v12 = MaxCount; v13 = v11; Size = MaxCount; v14 = 16 * ((MaxCount + 27) >> 4); v15 = alloca(v14); v16 = v13[28]; v17 = alloca(v14); v53 = &v45; v55 = (int)&v45; v18 = &v46[MaxCount - 1]; if ( v16 != 1 ) { if ( v16 ) { v19 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); if ( (char *)v19 == (char *)std::ctype::do_widen ) goto LABEL_9; } else { v47 = &v46[MaxCount - 1]; std::ctype::_M_widen_init((int)v13); v18 = v47; v19 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); if ( (char *)v19 == (char *)std::ctype::do_widen ) { LABEL_9: v12 = MaxCount; if ( v18 != &v45 ) memcpy(v53, &v45, Size); goto LABEL_11; } } v19(v13, &v45, v18, v53); v12 = MaxCount; goto LABEL_11; } if ( v18 != &v45 ) memcpy(v53, &v45, MaxCount); LABEL_11: if ( !v12 ) { if ( *((_BYTE *)v52 + 16) ) { v21 = 0; goto LABEL_20; } LABEL_14: v23 = a4[2]; if ( v23 <= v12 ) goto LABEL_15; goto LABEL_23; } v20 = (char *)memchr(&v45, 46, v12); v21 = v20; if ( !v20 ) { if ( *((_BYTE *)v52 + 16) && (v12 <= 2 || v46[0] <= 57 && (unsigned __int8)(v46[1] - 48) <= 9u && v46[0] > 47) ) goto LABEL_20; goto LABEL_14; } v22 = v52; v21 = (char *)v53 + v20 - &v45; *v21 = *((_BYTE *)v52 + 36); if ( !*((_BYTE *)v22 + 16) ) goto LABEL_14; LABEL_20: v28 = 16 * ((unsigned int)(2 * v12 + 27) >> 4); v29 = alloca(v28); v30 = alloca(v28); if ( ((v45 - 43) & 0xFD) != 0 ) { v31 = &v45; v32 = 0; } else { v31 = v46; MaxCount = v12 - 1; v32 = 1; v45 = *(_BYTE *)v53; v55 = (int)v53 + 1; } std::num_put>::_M_group_float( *((char **)v52 + 2), *((_DWORD *)v52 + 3), *((_BYTE *)v52 + 37), v21, (int)v31, (_BYTE *)v55, &MaxCount); v12 = MaxCount + v32; v55 = (int)&v45; MaxCount = v12; v23 = a4[2]; if ( v23 <= v12 ) goto LABEL_15; LABEL_23: v33 = 16 * ((unsigned int)(v23 + 27) >> 4); v34 = alloca(v33); v35 = alloca(v33); v44 = v12; v12 = v23; std::__pad>::_S_pad(a4, (void *)(char)v48, &v45, (_BYTE *)v55, v23, v44); MaxCount = v23; v55 = (int)&v45; LABEL_15: a4[2] = 0; if ( !(_BYTE)v51 ) (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v54 + 48))(v54, v55, v12); return v54; } //----- (004B41F0) -------------------------------------------------------- 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 int v7; // edi int result; // eax v6 = *(int (__stdcall **)(int, int, _DWORD *, char, int))(*(_DWORD *)this + 36); if ( v6 != std::num_put>::do_put ) return v6(a2, a3, a4, a5, a6); v7 = a4[3]; a4[3] = v7 & 0xFFFFBDB5 | 0x208; result = std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); a4[3] = v7; return result; } //----- (004B4290) -------------------------------------------------------- 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); } //----- (004B42B0) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, int *a4, char a5, double a6) { int (__thiscall *v6)(void *, int, int, int *, char, double); // eax v6 = *(int (__thiscall **)(void *, int, int, int *, char, double))(*(_DWORD *)this + 28); if ( v6 == std::num_put>::do_put ) return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); else return ((int (__stdcall *)(int, int, int *, _DWORD, _DWORD, _DWORD))v6)(a2, a3, a4, a5, LODWORD(a6), HIDWORD(a6)); } //----- (004B4320) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, int *a4, char a5, long double a6) { int (__thiscall *v6)(void *, int, int, int *, char, long double); // eax v6 = *(int (__thiscall **)(void *, int, int, int *, char, long double))(*(_DWORD *)this + 32); if ( v6 == std::num_put>::do_put ) return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 76, a6); else return ((int (__stdcall *)(int, int, int *, _DWORD, _DWORD, _DWORD, _DWORD))v6)( a2, a3, a4, a5, LODWORD(a6), DWORD1(a6), HIDWORD(a6)); } //----- (004B4390) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, int *a4, char a5, int a6) { int (__stdcall *v6)(int, int, int *, char, int); // eax v6 = *(int (__stdcall **)(int, int, int *, 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); } //----- (004B43F0) -------------------------------------------------------- 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); } //----- (004B4450) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, int *a4, char a5, __int64 a6) { int (__stdcall *v6)(int, int, int *, char, __int64); // eax v6 = *(int (__stdcall **)(int, int, int *, char, __int64))(*(_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, int *, _DWORD, _DWORD, _DWORD))v6)(a2, a3, a4, a5, a6, HIDWORD(a6)); } //----- (004B44C0) -------------------------------------------------------- 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); } //----- (004B4530) -------------------------------------------------------- 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; } //----- (004B4580) -------------------------------------------------------- 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; } //----- (004B4600) -------------------------------------------------------- int *__stdcall std::num_put>::do_put(int *a1, int a2, int *a3, int a4, int a5) { int v5; // edi struct _Unwind_Exception *v7; // eax int v8; // ecx char v9; // dl int v10; // ecx int v11; // eax size_t v12; // edx int v13; // eax void *v14; // esp void *v15; // esp char v16; // dl int v17; // edi int v18; // ecx int v19; // eax int v20; // edi _BYTE v21[8]; // [esp+20h] [ebp-68h] BYREF _BYTE *v22; // [esp+28h] [ebp-60h] int v23; // [esp+2Ch] [ebp-5Ch] char v24; // [esp+33h] [ebp-55h] int v25; // [esp+34h] [ebp-54h] int v26; // [esp+38h] [ebp-50h] int v27; // [esp+3Ch] [ebp-4Ch] v5 = a3[3]; v26 = a4; if ( (v5 & 1) == 0 ) return (int *)std::num_put>::_M_insert_int( (int)a1, a2, a3, (char)a4, (unsigned __int8)a5); v27 = a5; v7 = std::__use_cache>::operator()(a3 + 27); if ( (_BYTE)a5 ) { v8 = *((_DWORD *)v7 + 5); v9 = a2; v27 = *((_DWORD *)v7 + 6); v25 = v8; v10 = v27; v11 = a3[2]; if ( v27 < v11 ) goto LABEL_5; LABEL_10: a3[2] = 0; if ( !v9 ) { v19 = *a1; LOBYTE(v26) = 0; (*(int (__thiscall **)(int *, int, int))(v19 + 48))(a1, v25, v27); } return a1; } v18 = *((_DWORD *)v7 + 7); v9 = a2; v27 = *((_DWORD *)v7 + 8); v25 = v18; v10 = v27; v11 = a3[2]; if ( v27 >= v11 ) goto LABEL_10; LABEL_5: v24 = v9; v23 = v11 - v10; v12 = v11 - v10; v13 = 16 * ((unsigned int)(v11 - v10 + 27) >> 4); v14 = alloca(v13); v15 = alloca(v13); v22 = v21; memset(v21, (char)v26, v12); v16 = v24; a3[2] = 0; if ( (v5 & 0xB0) == 32 ) { if ( !v16 ) { v20 = v27; if ( v20 == (*(int (__thiscall **)(int *, int, int))(*a1 + 48))(a1, v25, v27) ) (*(void (__thiscall **)(int *, _BYTE *, int))(*a1 + 48))(a1, v22, v23); } } else if ( !v16 ) { v17 = v23; if ( v17 == (*(int (__thiscall **)(int *, _BYTE *, int))(*a1 + 48))(a1, v22, v23) ) (*(void (__thiscall **)(int *, int, int))(*a1 + 48))(a1, v25, v27); } return a1; } //----- (004B4800) -------------------------------------------------------- int __thiscall std::num_put>::do_put( void *this, int a2, int a3, int *a4, char a5, double a6) { return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); } //----- (004B4850) -------------------------------------------------------- int __thiscall std::num_put>::do_put( void *this, int a2, int a3, int *a4, char a5, long double a6) { return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 76, a6); } //----- (004B48A0) -------------------------------------------------------- int __stdcall std::num_put>::do_put(int a1, int a2, int *a3, char a4, int a5) { return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); } //----- (004B48B0) -------------------------------------------------------- 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); } //----- (004B48C0) -------------------------------------------------------- int __stdcall std::num_put>::do_put(int a1, int a2, int *a3, char a4, __int64 a5) { return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); } //----- (004B48D0) -------------------------------------------------------- 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); } //----- (004B48E0) -------------------------------------------------------- int __stdcall std::num_put>::_M_group_int( char *a1, int a2, __int16 a3, int a4, _WORD *a5, char *a6, int *a7) { int result; // eax result = std::__add_grouping(a5, a3, a1, a2, a6, &a6[2 * *a7]) - a5; *a7 = result; return result; } //----- (004B4930) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, _DWORD *a3, int a4, int a5) { void *v5; // esp void *v6; // esp unsigned int v7; // eax int v8; // ecx struct _Unwind_Exception *v9; // edx int v10; // eax char v11; // cl struct _Unwind_Exception *v12; // eax char v13; // bl int v15; // ebx int v16; // eax void *v17; // esp void *v18; // esp int v19; // eax void *v20; // esp void *v21; // esp int v22; // eax char *v23; // eax _DWORD *v24; // eax __int16 v25; // [esp-20h] [ebp-A8h] BYREF _WORD v26[18]; // [esp-1Ch] [ebp-A4h] BYREF unsigned int v27; // [esp+8h] [ebp-80h] unsigned int v28; // [esp+24h] [ebp-64h] int v29; // [esp+28h] [ebp-60h] int v30; // [esp+2Ch] [ebp-5Ch] int v31; // [esp+30h] [ebp-58h] unsigned int v32; // [esp+34h] [ebp-54h] int v33; // [esp+38h] [ebp-50h] std::locale::_Impl *v34; // [esp+3Ch] [ebp-4Ch] int *v35; // [esp+40h] [ebp-48h] int v36; // [esp+44h] [ebp-44h] struct _Unwind_Exception *lpuexcpt; // [esp+48h] [ebp-40h] v33 = a1; v30 = a2; v29 = a4; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v35 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); v36 = *v35; if ( !v36 ) { v24 = operator new(0xA8u); v24[1] = 0; *v24 = &off_5605C0; v24[2] = 0; v24[3] = 0; *((_BYTE *)v24 + 16) = 0; v24[5] = 0; v24[6] = 0; v24[7] = 0; v24[8] = 0; v24[9] = 0; *((_BYTE *)v24 + 164) = 0; v34 = (std::locale::_Impl *)v24; std::__numpunct_cache::_M_cache((int)v24, (int)(a3 + 27)); std::locale::_Impl::_M_install_cache(a3[27], v34, lpuexcpt, v27); v36 = *v35; } v31 = v36 + 40; v32 = a3[3]; v5 = alloca(64); v6 = alloca(64); v28 = v32 & 0x4A; v34 = (std::locale::_Impl *)&v25; v7 = a5; LOBYTE(v35) = v28 != 8 && v28 != 64; if ( a5 <= 0 ) { v7 = -a5; if ( v28 == 8 || v28 == 64 ) v7 = a5; } v8 = std::__int_to_char((_WORD *)v34 + 20, v7, v31, v32, (char)v35); lpuexcpt = (struct _Unwind_Exception *)v8; v9 = (std::locale::_Impl *)((char *)v34 + 2 * (20 - v8)); if ( !*(_BYTE *)(v36 + 16) ) { if ( (_BYTE)v35 ) goto LABEL_8; LABEL_20: if ( (v32 & 0x200) != 0 && a5 ) { if ( v28 == 64 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v9 = (struct _Unwind_Exception *)((char *)v9 - 2); } else { v9 = (struct _Unwind_Exception *)((char *)v9 - 4); lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); *((_WORD *)v9 + 1) = *(_WORD *)(v31 + 2 * ((v32 >> 14) & 1) + 4); } *(_WORD *)v9 = *(_WORD *)(v36 + 48); } goto LABEL_10; } v19 = 16 * ((unsigned int)(4 * v8 + 31) >> 4); v20 = alloca(v19); v21 = alloca(v19); v22 = *(_DWORD *)(v36 + 12); lpuexcpt = (struct _Unwind_Exception *)v26; v23 = (char *)std::__add_grouping( v26, *(_WORD *)(v36 + 38), *(char **)(v36 + 8), v22, (char *)v9, (char *)v9 + 2 * v8); v9 = lpuexcpt; lpuexcpt = (struct _Unwind_Exception *)((v23 - (char *)lpuexcpt) >> 1); if ( !(_BYTE)v35 ) goto LABEL_20; LABEL_8: if ( a5 < 0 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v9 = (struct _Unwind_Exception *)((char *)v9 - 2); *(_WORD *)v9 = *(_WORD *)(v36 + 40); } else if ( (v32 & 0x800) != 0 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v9 = (struct _Unwind_Exception *)((char *)v9 - 2); *(_WORD *)v9 = *(_WORD *)(v36 + 42); v10 = a3[2]; v36 = v10; if ( v10 <= (int)lpuexcpt ) goto LABEL_11; goto LABEL_17; } LABEL_10: v10 = a3[2]; v36 = v10; if ( v10 <= (int)lpuexcpt ) goto LABEL_11; LABEL_17: v15 = v10; v16 = 16 * ((unsigned int)(2 * v10 + 27) >> 4); v17 = alloca(v16); v18 = alloca(v16); v35 = (int *)&v25; std::__pad>::_S_pad(a3, (void *)(unsigned __int16)v29, &v25, v9, v15, (int)lpuexcpt); v9 = (struct _Unwind_Exception *)v35; lpuexcpt = (struct _Unwind_Exception *)v36; LABEL_11: v11 = v30; a3[2] = 0; LOBYTE(v36) = v11; if ( !v11 ) { v12 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v33 + 48))( v33, v9, lpuexcpt); v13 = v36; if ( v12 != lpuexcpt ) v13 = 1; LOBYTE(v36) = v13; } lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v36; return v33; } // 53F78C: using guessed type signed __int32 std::numpunct::id; // 5605C0: using guessed type int (*off_5605C0)(); //----- (004B4D50) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, _DWORD *a3, int a4, int a5) { unsigned int v5; // ecx void *v6; // esp void *v7; // esp struct _Unwind_Exception *v8; // edx int v9; // eax char v10; // si struct _Unwind_Exception *v11; // eax char v12; // dl int v14; // eax void *v15; // esp void *v16; // esp int v17; // eax char *v18; // eax int v19; // esi int v20; // eax void *v21; // esp void *v22; // esp _DWORD *v23; // eax char *v24; // [esp-2Ch] [ebp-B4h] __int16 v25; // [esp-20h] [ebp-A8h] BYREF _WORD v26[18]; // [esp-1Ch] [ebp-A4h] BYREF unsigned int v27[7]; // [esp+8h] [ebp-80h] BYREF int v28; // [esp+24h] [ebp-64h] unsigned int v29; // [esp+28h] [ebp-60h] unsigned int v30; // [esp+2Ch] [ebp-5Ch] int v31; // [esp+30h] [ebp-58h] int v32; // [esp+34h] [ebp-54h] std::locale::_Impl *v33; // [esp+38h] [ebp-50h] int *v34; // [esp+3Ch] [ebp-4Ch] int v35; // [esp+40h] [ebp-48h] int v36; // [esp+44h] [ebp-44h] struct _Unwind_Exception *lpuexcpt; // [esp+48h] [ebp-40h] v35 = a1; v32 = a2; v31 = a4; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v34 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); v36 = *v34; if ( !v36 ) { v23 = operator new(0xA8u); v23[1] = 0; *v23 = &off_5605C0; v23[2] = 0; v23[3] = 0; *((_BYTE *)v23 + 16) = 0; v23[5] = 0; v23[6] = 0; v23[7] = 0; v23[8] = 0; v23[9] = 0; *((_BYTE *)v23 + 164) = 0; v33 = (std::locale::_Impl *)v23; std::__numpunct_cache::_M_cache((int)v23, (int)(a3 + 27)); std::locale::_Impl::_M_install_cache(a3[27], v33, lpuexcpt, v27[0]); v36 = *v34; } v5 = a3[3]; v28 = v36 + 40; v30 = v5; v6 = alloca(64); v7 = alloca(64); v33 = (std::locale::_Impl *)&v25; v29 = v5 & 0x4A; LOBYTE(v34) = v29 != 8 && v29 != 64; lpuexcpt = (struct _Unwind_Exception *)std::__int_to_char(v27, a5, v36 + 40, v5, (char)v34); v8 = (std::locale::_Impl *)((char *)v33 + 2 * (20 - (_DWORD)lpuexcpt)); if ( *(_BYTE *)(v36 + 16) ) { v14 = 16 * ((unsigned int)(4 * (_DWORD)lpuexcpt + 31) >> 4); v15 = alloca(v14); v16 = alloca(v14); v24 = (char *)v8 + 2 * (_DWORD)lpuexcpt; v17 = *(_DWORD *)(v36 + 12); lpuexcpt = (struct _Unwind_Exception *)v26; v18 = (char *)std::__add_grouping(v26, *(_WORD *)(v36 + 38), *(char **)(v36 + 8), v17, (char *)v8, v24); v8 = lpuexcpt; lpuexcpt = (struct _Unwind_Exception *)((v18 - (char *)lpuexcpt) >> 1); if ( (_BYTE)v34 ) goto LABEL_5; } else if ( (_BYTE)v34 ) { goto LABEL_5; } if ( (v30 & 0x200) != 0 && a5 ) { if ( v29 == 64 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v8 = (struct _Unwind_Exception *)((char *)v8 - 2); } else { v8 = (struct _Unwind_Exception *)((char *)v8 - 4); lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); *((_WORD *)v8 + 1) = *(_WORD *)(v28 + 2 * ((v30 >> 14) & 1) + 4); } *(_WORD *)v8 = *(_WORD *)(v36 + 48); } LABEL_5: v9 = a3[2]; v36 = v9; if ( v9 > (int)lpuexcpt ) { v19 = v9; v20 = 16 * ((unsigned int)(2 * v9 + 27) >> 4); v21 = alloca(v20); v22 = alloca(v20); v34 = (int *)&v25; std::__pad>::_S_pad( a3, (void *)(unsigned __int16)v31, &v25, v8, v19, (int)lpuexcpt); v8 = (struct _Unwind_Exception *)v34; lpuexcpt = (struct _Unwind_Exception *)v36; } v10 = v32; a3[2] = 0; LOBYTE(v36) = v10; if ( !v10 ) { v11 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v35 + 48))( v35, v8, lpuexcpt); v12 = v36; if ( v11 != lpuexcpt ) v12 = 1; LOBYTE(v36) = v12; } lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v36; return v35; } // 53F78C: using guessed type signed __int32 std::numpunct::id; // 5605C0: using guessed type int (*off_5605C0)(); // 4B4D50: using guessed type unsigned int anonymous_0[7]; //----- (004B5100) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, _DWORD *a3, int a4, __int64 a5) { void *v5; // esp void *v6; // esp __int64 v7; // rax int v8; // ecx struct _Unwind_Exception *v9; // edx int v10; // eax char v11; // bl struct _Unwind_Exception *v12; // eax char v13; // bl int v15; // edi int v16; // eax void *v17; // esp void *v18; // esp int v19; // eax void *v20; // esp void *v21; // esp int v22; // eax char *v23; // eax _DWORD *v24; // eax __int16 v25; // [esp-40h] [ebp-E8h] BYREF _WORD v26[34]; // [esp-3Ch] [ebp-E4h] BYREF unsigned int v27; // [esp+8h] [ebp-A0h] unsigned int v28; // [esp+2Ch] [ebp-7Ch] int v29; // [esp+30h] [ebp-78h] int v30; // [esp+34h] [ebp-74h] int v31; // [esp+38h] [ebp-70h] unsigned int v32; // [esp+3Ch] [ebp-6Ch] int v33; // [esp+40h] [ebp-68h] std::locale::_Impl *v34; // [esp+44h] [ebp-64h] __int64 v35; // [esp+48h] [ebp-60h] int *v36; // [esp+50h] [ebp-58h] int v37; // [esp+54h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-50h] v33 = a1; v30 = a2; v29 = a4; v35 = a5; lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v36 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); v37 = *v36; if ( !v37 ) { v24 = operator new(0xA8u); v24[1] = 0; *v24 = &off_5605C0; v24[2] = 0; v24[3] = 0; *((_BYTE *)v24 + 16) = 0; v24[5] = 0; v24[6] = 0; v24[7] = 0; v24[8] = 0; v24[9] = 0; *((_BYTE *)v24 + 164) = 0; v34 = (std::locale::_Impl *)v24; std::__numpunct_cache::_M_cache((int)v24, (int)(a3 + 27)); std::locale::_Impl::_M_install_cache(a3[27], v34, lpuexcpt, v27); v37 = *v36; } v31 = v37 + 40; v32 = a3[3]; v5 = alloca(96); v6 = alloca(96); v28 = v32 & 0x4A; v34 = (std::locale::_Impl *)&v25; v7 = v35; LOBYTE(v36) = v28 != 8 && v28 != 64; if ( (HIDWORD(v35) | (((_DWORD)v35 != 0) + HIDWORD(v35) - 1)) < 0 && (_BYTE)v36 ) v7 = -v35; v8 = std::__int_to_char((_WORD *)v34 + 40, v7, HIDWORD(v7), v31, v32, (char)v36); lpuexcpt = (struct _Unwind_Exception *)v8; v9 = (std::locale::_Impl *)((char *)v34 + 2 * (40 - v8)); if ( !*(_BYTE *)(v37 + 16) ) { if ( (_BYTE)v36 ) goto LABEL_8; LABEL_20: if ( (v32 & 0x200) != 0 && v35 ) { if ( v28 == 64 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v9 = (struct _Unwind_Exception *)((char *)v9 - 2); } else { v9 = (struct _Unwind_Exception *)((char *)v9 - 4); lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); *((_WORD *)v9 + 1) = *(_WORD *)(v31 + 2 * ((v32 >> 14) & 1) + 4); } *(_WORD *)v9 = *(_WORD *)(v37 + 48); } goto LABEL_10; } v19 = 16 * ((unsigned int)(4 * v8 + 31) >> 4); v20 = alloca(v19); v21 = alloca(v19); v22 = *(_DWORD *)(v37 + 12); lpuexcpt = (struct _Unwind_Exception *)v26; v23 = (char *)std::__add_grouping( v26, *(_WORD *)(v37 + 38), *(char **)(v37 + 8), v22, (char *)v9, (char *)v9 + 2 * v8); v9 = lpuexcpt; lpuexcpt = (struct _Unwind_Exception *)((v23 - (char *)lpuexcpt) >> 1); if ( !(_BYTE)v36 ) goto LABEL_20; LABEL_8: if ( v35 < 0 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v9 = (struct _Unwind_Exception *)((char *)v9 - 2); *(_WORD *)v9 = *(_WORD *)(v37 + 40); } else if ( (v32 & 0x800) != 0 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v9 = (struct _Unwind_Exception *)((char *)v9 - 2); *(_WORD *)v9 = *(_WORD *)(v37 + 42); v10 = a3[2]; v37 = v10; if ( v10 <= (int)lpuexcpt ) goto LABEL_11; goto LABEL_17; } LABEL_10: v10 = a3[2]; v37 = v10; if ( v10 <= (int)lpuexcpt ) goto LABEL_11; LABEL_17: v15 = v10; v16 = 16 * ((unsigned int)(2 * v10 + 27) >> 4); v17 = alloca(v16); v18 = alloca(v16); v36 = (int *)&v25; std::__pad>::_S_pad(a3, (void *)(unsigned __int16)v29, &v25, v9, v15, (int)lpuexcpt); v9 = (struct _Unwind_Exception *)v36; lpuexcpt = (struct _Unwind_Exception *)v37; LABEL_11: v11 = v30; a3[2] = 0; LOBYTE(v37) = v11; if ( !v11 ) { v12 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v33 + 48))( v33, v9, lpuexcpt); v13 = v37; if ( v12 != lpuexcpt ) v13 = 1; LOBYTE(v37) = v13; } lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v37; return v33; } // 53F78C: using guessed type signed __int32 std::numpunct::id; // 5605C0: using guessed type int (*off_5605C0)(); //----- (004B5550) -------------------------------------------------------- int __stdcall std::num_put>::_M_insert_int( int a1, int a2, _DWORD *a3, int a4, int a5, int a6) { unsigned int v6; // ecx void *v7; // esp void *v8; // esp struct _Unwind_Exception *v9; // edx int v10; // eax char v11; // si struct _Unwind_Exception *v12; // eax char v13; // dl int v15; // eax void *v16; // esp void *v17; // esp int v18; // eax char *v19; // eax int v20; // esi int v21; // eax void *v22; // esp void *v23; // esp _DWORD *v24; // eax char *v25; // [esp-4Ch] [ebp-E4h] __int16 v26; // [esp-40h] [ebp-D8h] BYREF _WORD v27[34]; // [esp-3Ch] [ebp-D4h] BYREF unsigned int v28; // [esp+8h] [ebp-90h] __int16 v29[14]; // [esp+10h] [ebp-88h] BYREF int v30; // [esp+2Ch] [ebp-6Ch] unsigned int v31; // [esp+30h] [ebp-68h] unsigned int v32; // [esp+34h] [ebp-64h] int v33; // [esp+38h] [ebp-60h] int v34; // [esp+3Ch] [ebp-5Ch] std::locale::_Impl *v35; // [esp+40h] [ebp-58h] int *v36; // [esp+44h] [ebp-54h] unsigned __int64 v37; // [esp+48h] [ebp-50h] int v38; // [esp+50h] [ebp-48h] int v39; // [esp+54h] [ebp-44h] struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-40h] v38 = a1; v34 = a2; v33 = a4; v37 = __PAIR64__(a5, a6); lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); v36 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); v39 = *v36; if ( !v39 ) { v24 = operator new(0xA8u); v24[1] = 0; *v24 = &off_5605C0; v24[2] = 0; v24[3] = 0; *((_BYTE *)v24 + 16) = 0; v24[5] = 0; v24[6] = 0; v24[7] = 0; v24[8] = 0; v24[9] = 0; *((_BYTE *)v24 + 164) = 0; v35 = (std::locale::_Impl *)v24; std::__numpunct_cache::_M_cache((int)v24, (int)(a3 + 27)); std::locale::_Impl::_M_install_cache(a3[27], v35, lpuexcpt, v28); v39 = *v36; } v6 = a3[3]; v30 = v39 + 40; v32 = v6; v7 = alloca(96); v8 = alloca(96); v35 = (std::locale::_Impl *)&v26; v31 = v6 & 0x4A; LOBYTE(v36) = v31 != 8 && v31 != 64; lpuexcpt = (struct _Unwind_Exception *)std::__int_to_char( v29, HIDWORD(v37), v37, v39 + 40, v6, (char)v36); v9 = (std::locale::_Impl *)((char *)v35 + 2 * (40 - (_DWORD)lpuexcpt)); if ( *(_BYTE *)(v39 + 16) ) { v15 = 16 * ((unsigned int)(4 * (_DWORD)lpuexcpt + 31) >> 4); v16 = alloca(v15); v17 = alloca(v15); v25 = (char *)v9 + 2 * (_DWORD)lpuexcpt; v18 = *(_DWORD *)(v39 + 12); lpuexcpt = (struct _Unwind_Exception *)v27; v19 = (char *)std::__add_grouping(v27, *(_WORD *)(v39 + 38), *(char **)(v39 + 8), v18, (char *)v9, v25); v9 = lpuexcpt; lpuexcpt = (struct _Unwind_Exception *)((v19 - (char *)lpuexcpt) >> 1); if ( (_BYTE)v36 ) goto LABEL_5; } else if ( (_BYTE)v36 ) { goto LABEL_5; } if ( (v32 & 0x200) != 0 && v37 ) { if ( v31 == 64 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v9 = (struct _Unwind_Exception *)((char *)v9 - 2); } else { v9 = (struct _Unwind_Exception *)((char *)v9 - 4); lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); *((_WORD *)v9 + 1) = *(_WORD *)(v30 + 2 * ((v32 >> 14) & 1) + 4); } *(_WORD *)v9 = *(_WORD *)(v39 + 48); } LABEL_5: v10 = a3[2]; v39 = v10; if ( v10 > (int)lpuexcpt ) { v20 = v10; v21 = 16 * ((unsigned int)(2 * v10 + 27) >> 4); v22 = alloca(v21); v23 = alloca(v21); HIDWORD(v37) = &v26; std::__pad>::_S_pad( a3, (void *)(unsigned __int16)v33, &v26, v9, v20, (int)lpuexcpt); v9 = (struct _Unwind_Exception *)HIDWORD(v37); lpuexcpt = (struct _Unwind_Exception *)v39; } v11 = v34; a3[2] = 0; LOBYTE(v39) = v11; if ( !v11 ) { v12 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v38 + 48))( v38, v9, lpuexcpt); v13 = v39; if ( v12 != lpuexcpt ) v13 = 1; LOBYTE(v39) = v13; } lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v39; return v38; } // 53F78C: using guessed type signed __int32 std::numpunct::id; // 5605C0: using guessed type int (*off_5605C0)(); // 4B5550: using guessed type __int16 anonymous_1[14]; //----- (004B5920) -------------------------------------------------------- int __stdcall std::num_put>::_M_group_float( char *a1, int a2, __int16 a3, char *Src, _WORD *a5, char *a6, _DWORD *a7) { int v7; // ebx _WORD *v8; // edx int v9; // ebp int v10; // eax int result; // eax if ( Src ) { v7 = (Src - a6) >> 1; v8 = std::__add_grouping(a5, a3, a1, a2, a6, Src); v9 = v8 - a5; v10 = 0; if ( *a7 != v7 ) { memcpy(v8, Src, 2 * (*a7 - v7)); v10 = *a7 - v7; } result = v9 + v10; *a7 = result; } else { result = std::__add_grouping(a5, a3, a1, a2, a6, &a6[2 * *a7]) - a5; *a7 = result; } return result; } //----- (004B59F0) -------------------------------------------------------- int *__thiscall std::num_put>::_M_insert_float( void *this, int *a2, int a3, std::__num_base *a4, int a5, void *a6, double a7) { int v7; // eax int v8; // edx void *v9; // esp void *v10; // esp int v11; // eax void *v12; // ecx int v13; // eax void *v14; // esp void *v15; // esp char *v16; // edx char v17; // cl int v18; // eax char v19; // dl int v20; // eax int v21; // eax char v22; // bl int v24; // eax void *v25; // esp void *v26; // esp size_t v27; // esi int v28; // eax void *v29; // esp void *v30; // esp __int16 *v31; // ecx int v32; // ecx int v33; // eax void *v34; // esp void *v35; // esp int v36; // eax int v37; // eax void *v38; // esp void *v39; // esp char v40; // al _DWORD *v41; // eax int v42; // esi int v43; // [esp-34h] [ebp-ECh] int v44; // [esp-30h] [ebp-E8h] int v45; // [esp-2Ch] [ebp-E4h] int v46; // [esp-28h] [ebp-E0h] _DWORD v47[11]; // [esp-20h] [ebp-D8h] BYREF _WORD *v48; // [esp+Ch] [ebp-ACh] __int16 v49; // [esp+20h] [ebp-98h] BYREF __int16 v50; // [esp+22h] [ebp-96h] BYREF std::locale::_Impl *v51; // [esp+2Ch] [ebp-8Ch] int v52; // [esp+30h] [ebp-88h] int v53; // [esp+34h] [ebp-84h] void *v54; // [esp+38h] [ebp-80h] std::locale::facet *v55; // [esp+3Ch] [ebp-7Ch] int v56; // [esp+40h] [ebp-78h] int *v57; // [esp+44h] [ebp-74h] int v58; // [esp+48h] [ebp-70h] int v59; // [esp+4Ch] [ebp-6Ch] size_t MaxCount[2]; // [esp+50h] [ebp-68h] void *Buf; // [esp+58h] [ebp-60h] int v62; // [esp+98h] [ebp-20h] BYREF int *c_locale; // [esp+9Ch] [ebp-1Ch] BYREF char v64[24]; // [esp+A0h] [ebp-18h] BYREF v54 = this; v57 = a2; *(double *)MaxCount = a7; v56 = a3; v53 = a5; Buf = a6; v59 = (int)a4 + 108; v55 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); v52 = *(_DWORD *)(*((_DWORD *)a4 + 27) + 12) + 4 * (_DWORD)v55; v58 = *(_DWORD *)v52; if ( !v58 ) { v41 = operator new(0xA8u); v42 = v59; v41[1] = 0; *v41 = &off_5605C0; v41[2] = 0; v41[3] = 0; *((_BYTE *)v41 + 16) = 0; v41[5] = 0; v41[6] = 0; v41[7] = 0; v41[8] = 0; v41[9] = 0; *((_BYTE *)v41 + 164) = 0; v51 = (std::locale::_Impl *)v41; std::__numpunct_cache::_M_cache((int)v41, v42); std::locale::_Impl::_M_install_cache(*((_DWORD *)a4 + 27), v51, v55, v47[10]); v58 = *(_DWORD *)v52; } v7 = 6; if ( *((int *)a4 + 1) >= 0 ) v7 = *((_DWORD *)a4 + 1); v55 = (std::locale::facet *)v7; std::__num_base::_S_format_float(a4, (const std::ios_base *)v64, (char *)(char)Buf); v8 = *((_DWORD *)a4 + 3) & 0x104; v9 = alloca(64); v10 = alloca(64); Buf = v47; if ( v8 == 260 ) { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v36 = std::__convert_from_v(&c_locale, (char *)Buf, 45, v64, MaxCount[0], MaxCount[1]); v62 = v36; if ( v36 > 44 ) { v55 = (std::locale::facet *)(v36 + 1); v37 = 16 * ((unsigned int)(v36 + 28) >> 4); v38 = alloca(v37); v39 = alloca(v37); Buf = v47; c_locale = (int *)std::locale::facet::_S_get_c_locale(); v62 = std::__convert_from_v(&c_locale, (char *)Buf, (int)v55, v64, MaxCount[0], MaxCount[1]); } } else { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v11 = std::__convert_from_v(&c_locale, (char *)Buf, 45, v64, v55, MaxCount[0], MaxCount[1]); v62 = v11; if ( v11 > 44 ) { v52 = v11 + 1; v24 = 16 * ((unsigned int)(v11 + 28) >> 4); v25 = alloca(v24); v26 = alloca(v24); Buf = v47; c_locale = (int *)std::locale::facet::_S_get_c_locale(); v62 = std::__convert_from_v(&c_locale, (char *)Buf, v52, v64, v55, MaxCount[0], MaxCount[1]); } } v12 = std::use_facet>(v59); v13 = 16 * ((unsigned int)(2 * v62 + 27) >> 4); v14 = alloca(v13); v15 = alloca(v13); v55 = (std::locale::facet *)v47; v59 = (int)v47; (*(void (__thiscall **)(void *, void *, char *, _DWORD *, int, int, int, int))(*(_DWORD *)v12 + 44))( v12, Buf, (char *)Buf + v62, v47, v43, v44, v45, v46); MaxCount[0] = v62; if ( !v62 ) { if ( *(_BYTE *)(v58 + 16) ) { v16 = 0; goto LABEL_19; } LABEL_11: v18 = *((_DWORD *)a4 + 2); Buf = (void *)v18; if ( v18 <= (int)MaxCount[0] ) goto LABEL_12; goto LABEL_22; } v16 = (char *)memchr(Buf, 46, MaxCount[0]); v17 = *(_BYTE *)(v58 + 16); if ( !v16 ) { if ( v17 ) { if ( (int)MaxCount[0] <= 2 ) goto LABEL_19; v40 = *((_BYTE *)Buf + 1); if ( v40 <= 57 ) { LOBYTE(v52) = *((_BYTE *)Buf + 2); if ( (unsigned __int8)(v52 - 48) <= 9u && v40 > 47 ) goto LABEL_19; } } goto LABEL_11; } v16 = (char *)v55 + 2 * (v16 - (_BYTE *)Buf); *(_WORD *)v16 = *(_WORD *)(v58 + 36); if ( !v17 ) goto LABEL_11; LABEL_19: v27 = MaxCount[0]; v28 = 16 * ((4 * MaxCount[0] + 27) >> 4); v29 = alloca(v28); v30 = alloca(v28); v52 = (int)&v49; if ( ((*(_BYTE *)Buf - 43) & 0xFD) != 0 ) { MaxCount[0] = 0; v31 = (__int16 *)v52; } else { MaxCount[0] = 1; v49 = *(_WORD *)v55; v62 = v27 - 1; v31 = &v50; v59 = (int)v55 + 2; } std::num_put>::_M_group_float( *(char **)(v58 + 8), *(_DWORD *)(v58 + 12), *(_WORD *)(v58 + 38), v16, v31, (char *)v59, &v62); MaxCount[0] += v62; v62 = MaxCount[0]; v59 = v52; v18 = *((_DWORD *)a4 + 2); Buf = (void *)v18; if ( v18 > (int)MaxCount[0] ) { LABEL_22: v32 = v18; v33 = 16 * ((unsigned int)(2 * v18 + 27) >> 4); v34 = alloca(v33); v35 = alloca(v33); v48 = (_WORD *)v59; v59 = (int)&v49; std::__pad>::_S_pad( a4, (void *)(unsigned __int16)v53, &v49, v48, v32, MaxCount[0]); v62 = (int)Buf; MaxCount[0] = (size_t)Buf; } LABEL_12: v19 = v56; *((_DWORD *)a4 + 2) = 0; LOBYTE(Buf) = v19; if ( !v19 ) { v20 = *v57; v47[8] = v59; v47[9] = MaxCount[0]; v21 = (*(int (__thiscall **)(int *, int, size_t))(v20 + 48))(v57, v59, MaxCount[0]); v22 = (char)Buf; if ( v21 != MaxCount[0] ) v22 = 1; LOBYTE(Buf) = v22; } MaxCount[0] = (unsigned __int8)Buf; return v57; } // 4B5B72: variable 'v43' is possibly undefined // 4B5B72: variable 'v44' is possibly undefined // 4B5B72: variable 'v45' is possibly undefined // 4B5B72: variable 'v46' is possibly undefined // 53F78C: using guessed type signed __int32 std::numpunct::id; // 5605C0: using guessed type int (*off_5605C0)(); //----- (004B6010) -------------------------------------------------------- // 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, int *a4, int a5, char a6, long double a7) { int v7; // esi void *v8; // esp void *v9; // esp int v10; // eax int *v11; // ecx int v12; // eax void *v13; // esp void *v14; // esp int v15; // eax int v16; // esi char *v17; // edx char v18; // cl signed int v19; // ebx int v21; // eax void *v22; // esp void *v23; // esp int v24; // eax void *v25; // esp void *v26; // esp __int16 *v27; // ebx int v28; // esi int v29; // eax void *v30; // esp void *v31; // esp int v32; // eax int v33; // eax void *v34; // esp void *v35; // esp int v36; // [esp-44h] [ebp-BCh] int v37; // [esp-40h] [ebp-B8h] int v41; // [esp-3Ch] [ebp-B4h] int v43; // [esp-38h] [ebp-B0h] int v44; // [esp-34h] [ebp-ACh] __int16 v45; // [esp-30h] [ebp-A8h] BYREF char v46; // [esp-2Eh] [ebp-A6h] BYREF const std::ios_base *v47; // [esp+4h] [ebp-74h] char *v48; // [esp+8h] [ebp-70h] int v49; // [esp+14h] [ebp-64h] __int16 v50; // [esp+20h] [ebp-58h] BYREF __int16 v51; // [esp+22h] [ebp-56h] BYREF int v52; // [esp+24h] [ebp-54h] void *v53; // [esp+28h] [ebp-50h] int v54; // [esp+2Ch] [ebp-4Ch] int v55; // [esp+30h] [ebp-48h] int v56; // [esp+34h] [ebp-44h] struct _Unwind_Exception *v57; // [esp+38h] [ebp-40h] int v58; // [esp+3Ch] [ebp-3Ch] size_t MaxCount; // [esp+48h] [ebp-30h] BYREF int *c_locale; // [esp+4Ch] [ebp-2Ch] BYREF char v61[40]; // [esp+50h] [ebp-28h] BYREF v53 = this; v56 = a2; v54 = a3; v52 = a5; v58 = (int)(a4 + 27); v57 = std::__use_cache>::operator()(a4 + 27); v7 = a4[1]; v48 = (char *)a6; v47 = (const std::ios_base *)v61; if ( v7 < 0 ) v7 = 6; std::__num_base::_S_format_float((std::__num_base *)a4, v47, v48); v55 = a4[3]; v8 = alloca(80); v9 = alloca(80); if ( (v55 & 0x104) == 260 ) { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v32 = std::__convert_from_v(&c_locale, (char *)&v45, 54, v61, *(_QWORD *)&a7, HIDWORD(a7)); MaxCount = v32; if ( v32 > 53 ) { v55 = v32 + 1; v33 = 16 * ((unsigned int)(v32 + 28) >> 4); v34 = alloca(v33); v35 = alloca(v33); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, (char *)&v45, v55, v61, *(_QWORD *)&a7, HIDWORD(a7)); } } else { c_locale = (int *)std::locale::facet::_S_get_c_locale(); v10 = std::__convert_from_v(&c_locale, (char *)&v45, 54, v61, v7, *(_QWORD *)&a7, HIDWORD(a7)); MaxCount = v10; if ( v10 > 53 ) { v55 = v10 + 1; v21 = 16 * ((unsigned int)(v10 + 28) >> 4); v22 = alloca(v21); v23 = alloca(v21); c_locale = (int *)std::locale::facet::_S_get_c_locale(); MaxCount = std::__convert_from_v(&c_locale, (char *)&v45, v55, v61, v7, *(_QWORD *)&a7, HIDWORD(a7)); } } v11 = (int *)std::use_facet>(v58); v12 = 16 * ((2 * MaxCount + 27) >> 4); v13 = alloca(v12); v14 = alloca(v12); v15 = *v11; v58 = (int)&v45; (*(void (__thiscall **)(int *, __int16 *, char *, __int16 *, int, int, int, int, int))(v15 + 44))( v11, &v45, (char *)&v45 + MaxCount, &v45, v36, v37, v41, v43, v44); v16 = MaxCount; if ( !MaxCount ) { if ( *((_BYTE *)v57 + 16) ) { v17 = 0; goto LABEL_15; } LABEL_9: v19 = a4[2]; if ( v16 >= v19 ) goto LABEL_10; goto LABEL_18; } v17 = (char *)memchr(&v45, 46, MaxCount); v18 = *((_BYTE *)v57 + 16); if ( !v17 ) { if ( v18 && (v16 <= 2 || SHIBYTE(v45) <= 57 && (unsigned __int8)(v46 - 48) <= 9u && SHIBYTE(v45) > 47) ) goto LABEL_15; goto LABEL_9; } v17 = (char *)(&v45 + v17 - (char *)&v45); *(_WORD *)v17 = *((_WORD *)v57 + 18); if ( !v18 ) goto LABEL_9; LABEL_15: v24 = 16 * ((unsigned int)(4 * v16 + 27) >> 4); v25 = alloca(v24); v26 = alloca(v24); if ( (((_BYTE)v45 - 43) & 0xFD) != 0 ) { v27 = &v50; v28 = 0; } else { v27 = &v51; v58 = (int)&v46; v50 = v45; MaxCount = v16 - 1; v28 = 1; } v55 = (int)&v50; std::num_put>::_M_group_float( *((char **)v57 + 2), *((_DWORD *)v57 + 3), *((_WORD *)v57 + 19), v17, v27, (char *)v58, &MaxCount); v16 = MaxCount + v28; MaxCount = v16; v58 = v55; v19 = a4[2]; if ( v16 >= v19 ) goto LABEL_10; LABEL_18: v29 = 16 * ((unsigned int)(2 * v19 + 27) >> 4); v30 = alloca(v29); v31 = alloca(v29); v49 = v16; v16 = v19; std::__pad>::_S_pad(a4, (void *)(unsigned __int16)v52, &v50, (_WORD *)v58, v19, v49); MaxCount = v19; v58 = (int)&v50; LABEL_10: a4[2] = 0; if ( !(_BYTE)v54 ) (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v56 + 48))(v56, v58, v16); return v56; } // 4B6138: bad sp value at call // 4B6118: variable 'v36' is possibly undefined // 4B6118: variable 'v37' is possibly undefined // 4B6118: variable 'v41' is possibly undefined // 4B6118: variable 'v43' is possibly undefined // 4B6118: variable 'v44' is possibly undefined //----- (004B63F0) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, int a6) { int (__stdcall *v6)(int, int, _DWORD *, unsigned __int16, int); // eax int v7; // edi int result; // eax v6 = *(int (__stdcall **)(int, int, _DWORD *, unsigned __int16, int))(*(_DWORD *)this + 36); if ( v6 != std::num_put>::do_put ) return v6(a2, a3, a4, a5, a6); v7 = a4[3]; a4[3] = v7 & 0xFFFFBDB5 | 0x208; result = std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); a4[3] = v7; return result; } //----- (004B6490) -------------------------------------------------------- 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); } //----- (004B64B0) -------------------------------------------------------- int *__thiscall std::num_put>::put( void *this, int *a2, int a3, std::__num_base *a4, unsigned __int16 a5, double a6) { int *(__thiscall *v6)(void *, int *, int, std::__num_base *, unsigned __int16, double); // eax v6 = *(int *(__thiscall **)(void *, int *, int, std::__num_base *, unsigned __int16, double))(*(_DWORD *)this + 28); if ( v6 == std::num_put>::do_put ) return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); else return (int *)((int (__stdcall *)(int *, int, std::__num_base *, _DWORD, _DWORD, _DWORD))v6)( a2, a3, a4, a5, LODWORD(a6), HIDWORD(a6)); } //----- (004B6520) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, int *a4, unsigned __int16 a5, long double a6) { int (__thiscall *v6)(void *, int, int, int *, unsigned __int16, long double); // eax v6 = *(int (__thiscall **)(void *, int, int, int *, unsigned __int16, long double))(*(_DWORD *)this + 32); if ( v6 == std::num_put>::do_put ) return std::num_put>::_M_insert_float( this, a2, a3, a4, a5, 76, a6); else return ((int (__stdcall *)(int, int, int *, _DWORD, _DWORD, _DWORD, _DWORD))v6)( a2, a3, a4, a5, LODWORD(a6), DWORD1(a6), HIDWORD(a6)); } //----- (004B6590) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, int a6) { int (__stdcall *v6)(int, int, _DWORD *, unsigned __int16, int); // eax v6 = *(int (__stdcall **)(int, int, _DWORD *, 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); } //----- (004B65F0) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, int a6) { int (__stdcall *v6)(int, int, _DWORD *, unsigned __int16, int); // eax v6 = *(int (__stdcall **)(int, int, _DWORD *, 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); } //----- (004B6650) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, __int64 a6) { int (__stdcall *v6)(int, int, _DWORD *, unsigned __int16, __int64); // eax v6 = *(int (__stdcall **)(int, int, _DWORD *, unsigned __int16, __int64))(*(_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)); } //----- (004B66C0) -------------------------------------------------------- int __thiscall std::num_put>::put( void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, int a6, int a7) { int (__stdcall *v7)(int, int, _DWORD *, unsigned __int16, int, int); // eax v7 = *(int (__stdcall **)(int, int, _DWORD *, 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); } //----- (004B6730) -------------------------------------------------------- _WORD *__stdcall std::num_put>::_M_pad( unsigned __int16 a1, int a2, _DWORD *a3, _WORD *Size, _WORD *a5, int *a6) { _WORD *result; // eax result = std::__pad>::_S_pad(a3, (void *)a1, Size, a5, a2, *a6); *a6 = a2; return result; } //----- (004B6780) -------------------------------------------------------- int __stdcall std::num_put>::do_put( int a1, int a2, _DWORD *a3, unsigned __int16 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; } //----- (004B6800) -------------------------------------------------------- int __stdcall std::num_put>::do_put( int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5) { int v5; // edi struct _Unwind_Exception *v7; // eax int v8; // ecx int v9; // eax int v10; // edx int v11; // eax int v12; // edx int v13; // eax void *v14; // esp __int16 v15; // di void *v16; // esp __int16 *v17; // eax int v18; // edi int v19; // edi int v20; // eax char v21; // cl int v22; // edi int v23; // edi int v24; // eax char v25; // dl int v26; // [esp+20h] [ebp-68h] BYREF int *v27; // [esp+24h] [ebp-64h] int v28; // [esp+28h] [ebp-60h] int v29; // [esp+2Ch] [ebp-5Ch] __int16 v30; // [esp+32h] [ebp-56h] int v31; // [esp+34h] [ebp-54h] int v32; // [esp+38h] [ebp-50h] int v33; // [esp+3Ch] [ebp-4Ch] v5 = a3[3]; v30 = a4; v31 = v5; if ( (v5 & 1) == 0 ) return std::num_put>::_M_insert_int( a1, a2, a3, a4, (unsigned __int8)a5); v33 = a5; v7 = std::__use_cache>::operator()(a3 + 27); if ( (_BYTE)a5 ) { v8 = *((_DWORD *)v7 + 5); v9 = *((_DWORD *)v7 + 6); } else { v8 = *((_DWORD *)v7 + 7); v9 = *((_DWORD *)v7 + 8); } v29 = v8; v32 = v9; v10 = v9; LOBYTE(v33) = a2; v11 = a3[2]; if ( v32 >= v11 ) { a3[2] = 0; if ( !(_BYTE)a2 ) LOBYTE(v33) = v32 != (*(int (__thiscall **)(int, int, int))(*(_DWORD *)a1 + 48))(a1, v29, v32); return a1; } v12 = v11 - v10; v28 = v12; v13 = 16 * ((unsigned int)(2 * v12 + 27) >> 4); v14 = alloca(v13); v15 = v30; v16 = alloca(v13); v17 = (__int16 *)&v26; v27 = &v26; do { *v17++ = v15; --v12; } while ( v12 ); a3[2] = 0; if ( (v31 & 0xB0) == 32 ) { if ( !(_BYTE)a2 ) { v22 = v32; if ( v22 == (*(int (__thiscall **)(int, int, int))(*(_DWORD *)a1 + 48))(a1, v29, v32) ) { v23 = v28; v24 = (*(int (__thiscall **)(int, int *, int))(*(_DWORD *)a1 + 48))(a1, v27, v28); v25 = v33; if ( v23 != v24 ) v25 = 1; LOBYTE(v33) = v25; return a1; } LABEL_23: LOBYTE(v33) = 1; } } else if ( !(_BYTE)a2 ) { v18 = v28; if ( v18 == (*(int (__thiscall **)(int, int *, int))(*(_DWORD *)a1 + 48))(a1, v27, v28) ) { v19 = v32; v20 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)a1 + 48))(a1, v29, v32); v21 = v33; if ( v19 != v20 ) v21 = 1; LOBYTE(v33) = v21; return a1; } goto LABEL_23; } return a1; } //----- (004B6A30) -------------------------------------------------------- int *__thiscall std::num_put>::do_put( void *this, int *a2, int a3, std::__num_base *a4, unsigned __int16 a5, double a6) { return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); } //----- (004B6A80) -------------------------------------------------------- int __thiscall std::num_put>::do_put( void *this, int a2, int a3, int *a4, unsigned __int16 a5, long double a6) { return std::num_put>::_M_insert_float( this, a2, a3, a4, a5, 76, a6); } //----- (004B6AD0) -------------------------------------------------------- int __stdcall std::num_put>::do_put( int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5) { return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); } //----- (004B6AE0) -------------------------------------------------------- int __stdcall std::num_put>::do_put( int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5) { return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); } //----- (004B6AF0) -------------------------------------------------------- int __stdcall std::num_put>::do_put( int a1, int a2, _DWORD *a3, unsigned __int16 a4, __int64 a5) { return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); } //----- (004B6B00) -------------------------------------------------------- int __stdcall std::num_put>::do_put( int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5, int a6) { return std::num_put>::_M_insert_int( a1, a2, a3, a4, a5, a6); } //----- (004B6B10) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( _DWORD *this, int a2) { _DWORD *v2; // esi _DWORD *v3; // ebx _DWORD *i; // edi char v5; // al _DWORD *v6; // edx v2 = this + 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v6 ) { v5 = std::operator<((int)(i + 4), a2); v6 = (_DWORD *)i[3]; if ( !v5 ) v6 = (_DWORD *)i[2]; if ( !v5 ) v3 = i; } if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) return v2; return v3; } //----- (004B6B70) -------------------------------------------------------- const char *std::bad_cast::what() { return "std::bad_cast"; } //----- (004B6B80) -------------------------------------------------------- int __fastcall std::ios_base::failure::what(int a1) { return *(_DWORD *)(a1 + 4); } //----- (004B6BA0) -------------------------------------------------------- int __stdcall std::messages::_M_convert_to_char(int a1) { return *(_DWORD *)a1; } //----- (004B6BB0) -------------------------------------------------------- _DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) { *this = std::string::_S_construct(0, 0); return this; } //----- (004B6BE0) -------------------------------------------------------- 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; } //----- (004B6C20) -------------------------------------------------------- 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); } //----- (004B6C40) -------------------------------------------------------- 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); } //----- (004B6C80) -------------------------------------------------------- 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; } // 4B6CD0: using guessed type int __stdcall std::messages::do_close(int); //----- (004B6CA0) -------------------------------------------------------- _DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, std::string *a6) { const std::string *v8; // [esp+4h] [ebp-18h] std::string::string(this, a6, v8); return this; } // 4B6CAD: variable 'v8' is possibly undefined //----- (004B6CC0) -------------------------------------------------------- int __stdcall std::messages::do_open(int a1, int a2) { return 0; } //----- (004B6CE0) -------------------------------------------------------- int __stdcall std::messages::_M_convert_to_char(int a1) { return *(_DWORD *)a1; } //----- (004B6CF0) -------------------------------------------------------- _DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) { *this = std::wstring::_S_construct(0, 0); return this; } //----- (004B6D20) -------------------------------------------------------- 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; } //----- (004B6D60) -------------------------------------------------------- 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); } //----- (004B6D80) -------------------------------------------------------- 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); } //----- (004B6DC0) -------------------------------------------------------- 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; } // 4B6E10: using guessed type int __stdcall std::messages::do_close(int); //----- (004B6DE0) -------------------------------------------------------- _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; } //----- (004B6E00) -------------------------------------------------------- int __stdcall std::messages::do_open(int a1, int a2) { return 0; } //----- (004B6E20) -------------------------------------------------------- _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; } // 4B6E20: using guessed type int var_D[3]; //----- (004B6E50) -------------------------------------------------------- _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; } // 4B6E50: using guessed type int var_D[3]; //----- (004B6E80) -------------------------------------------------------- _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; } // 4B6E80: using guessed type int var_D[3]; //----- (004B6EB0) -------------------------------------------------------- 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(); } //----- (004B6ED0) -------------------------------------------------------- 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(); } //----- (004B6EF0) -------------------------------------------------------- int __fastcall std::numpunct::do_decimal_point(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); } //----- (004B6F00) -------------------------------------------------------- int __fastcall std::numpunct::do_thousands_sep(int a1) { return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); } //----- (004B6F10) -------------------------------------------------------- _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; } // 4B6F10: using guessed type int var_D[3]; //----- (004B6F70) -------------------------------------------------------- _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; } // 4B6F70: using guessed type int var_D[3]; //----- (004B6FD0) -------------------------------------------------------- _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; } // 4B6FD0: using guessed type int var_D[3]; //----- (004B7030) -------------------------------------------------------- _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; } // 4B7030: using guessed type int var_D[3]; //----- (004B7060) -------------------------------------------------------- _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; } // 4B7060: using guessed type int var_D[3]; //----- (004B7090) -------------------------------------------------------- _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; } // 4B7090: using guessed type int var_D[3]; //----- (004B70C0) -------------------------------------------------------- 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(); } //----- (004B70E0) -------------------------------------------------------- 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(); } //----- (004B7100) -------------------------------------------------------- int __fastcall std::numpunct::do_decimal_point(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); } //----- (004B7110) -------------------------------------------------------- int __fastcall std::numpunct::do_thousands_sep(int a1) { return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); } //----- (004B7120) -------------------------------------------------------- _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; } // 4B7120: using guessed type int var_D[3]; //----- (004B7180) -------------------------------------------------------- _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; } // 4B7180: using guessed type int var_D[3]; //----- (004B71E0) -------------------------------------------------------- _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; } // 4B71E0: using guessed type int var_D[3]; //----- (004B7240) -------------------------------------------------------- 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(); } //----- (004B7260) -------------------------------------------------------- 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+28h] [ebp-24h] char v11; // [esp+28h] [ebp-24h] 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 *)v8 + 36))(v8); BYTE4(v8) = 0; if ( (_DWORD)v8 == -1 ) BYTE4(v8) = v10; if ( (_DWORD)v8 == -1 ) v7 = 0; } } 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; } //----- (004B7370) -------------------------------------------------------- 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+28h] [ebp-24h] char v11; // [esp+28h] [ebp-24h] 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 *)v8 + 36))(v8); BYTE4(v8) = 0; if ( (_DWORD)v8 == -1 ) BYTE4(v8) = v10; if ( (_DWORD)v8 == -1 ) v7 = 0; } } 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; } //----- (004B7480) -------------------------------------------------------- _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; // ebx int v9; // eax char v10; // si char v11; // al int v13; // eax bool v14; // zf _DWORD *v15; // eax _DWORD *v16; // [esp+34h] [ebp-38h] char v17; // [esp+38h] [ebp-34h] int v18; // [esp+48h] [ebp-24h] BYREF int v19[8]; // [esp+4Ch] [ebp-20h] BYREF v19[0] = 0; v8 = std::time_get>::_M_extract_num(a1, a2, a3, a4, &v18, 0, 9999, 4u, a5, v19); v16 = v8; if ( v19[0] ) { *a6 |= 4u; } else { v9 = v18 - 1900; if ( v18 < 0 ) v9 = v18 + 100; *(_DWORD *)(a7 + 20) = v9; } v10 = v7 == -1; v17 = (v8 != 0) & v10; if ( v17 ) { v10 = 0; if ( v8[2] >= v8[3] ) { v13 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); v14 = v13 == -1; if ( v13 == -1 ) v10 = v17; v15 = 0; if ( !v14 ) v15 = v8; v16 = v15; } } v11 = a4 == -1; if ( a3 ) { if ( a4 == -1 ) { v11 = 0; if ( a3[2] >= a3[3] ) v11 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; } } if ( v10 == v11 ) *a6 |= 2u; return v16; } // 4B7513: variable 'v7' is possibly undefined // 4B7480: using guessed type int var_20[8]; //----- (004B75D0) -------------------------------------------------------- int __fastcall std::time_get>::get_weekday(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); } //----- (004B75E0) -------------------------------------------------------- int std::time_get>::do_date_order() { return 0; } //----- (004B75F0) -------------------------------------------------------- int __fastcall std::time_get>::get_monthname(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); } //----- (004B7600) -------------------------------------------------------- _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) { unsigned int v10; // ebp int v12; // eax int v13; // edi char v14; // al unsigned __int8 v15; // al unsigned int v16; // eax bool v17; // dl char v18; // bl int v19; // ebx char v20; // dl int (__stdcall *v21)(unsigned __int8, int); // eax int v23; // eax char *v24; // eax int v25; // eax int v26; // eax unsigned int v28; // [esp+20h] [ebp-2Ch] _BYTE *v29; // [esp+24h] [ebp-28h] bool v31; // [esp+2Fh] [ebp-1Dh] v10 = 10; v29 = std::use_facet>(a9 + 108); if ( a8 != 2 ) { v12 = 1; if ( a8 == 4 ) v12 = 1000; v10 = v12; } v28 = 0; v13 = 0; while ( 1 ) { v17 = a2 == -1; v18 = v17 && a1 != 0; if ( v18 ) { if ( a1[2] >= a1[3] ) { v25 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v17 = a2 == -1; if ( v25 != -1 ) v18 = 0; if ( v25 == -1 ) a1 = 0; } else { v18 = 0; } } else { v18 = a2 == -1; } if ( a3 && a4 == -1 ) { if ( a3[2] >= a3[3] ) { v31 = v17; v23 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v17 = v31; if ( v23 == -1 ) { a3 = 0; v18 ^= 1u; } } } else { v18 ^= a4 == -1; } if ( v28 >= a8 || !v18 ) break; if ( a1 && v17 ) { v24 = (char *)a1[2]; if ( (unsigned int)v24 >= a1[3] ) { v26 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); if ( v26 == -1 ) { v20 = -1; v19 = 255; a1 = 0; } else { v19 = (unsigned __int8)v26; v20 = v26; } } else { v19 = (unsigned __int8)*v24; v20 = *v24; } } else { v19 = (unsigned __int8)a2; v20 = a2; } v14 = v29[v19 + 285]; if ( !v14 ) { v21 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v29 + 32); if ( v21 != std::ctype::do_narrow ) v20 = v21(v20, 42); if ( v20 == 42 ) goto LABEL_27; v29[v19 + 285] = v20; v14 = v20; } v15 = v14 - 48; if ( v15 > 9u ) goto LABEL_27; v13 = (char)v15 + 10 * v13; if ( (int)(v13 * v10) > a7 || (int)(v10 + v13 * v10) <= a6 ) goto LABEL_27; v16 = a1[2]; v10 /= 0xAu; if ( v16 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v16 + 1; ++v28; a2 = -1; } if ( v28 == a8 ) { LABEL_30: *a5 = v13; return a1; } LABEL_27: if ( a8 == 4 && v28 == 2 ) { v13 -= 100; goto LABEL_30; } *a10 |= 4u; return a1; } //----- (004B78C0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_weekday( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int a6) { _DWORD *v6; // eax int v7; // edx int v8; // eax int v9; // edx _DWORD *v10; // ecx _DWORD *v11; // ebp char v12; // dl char v13; // al int v15; // eax int v16; // eax char v17; // [esp+34h] [ebp-68h] char v18; // [esp+34h] [ebp-68h] _DWORD *v19; // [esp+38h] [ebp-64h] unsigned int v20; // [esp+40h] [ebp-5Ch] BYREF int v21; // [esp+44h] [ebp-58h] BYREF int v22[21]; // [esp+48h] [ebp-54h] BYREF v21 = 0; v6 = (_DWORD *)*((_DWORD *)std::use_facet>(a4 + 108) + 2); v22[0] = v6[18]; v22[1] = v6[19]; v22[2] = v6[20]; v22[3] = v6[21]; v22[4] = v6[22]; v22[5] = v6[23]; v22[6] = v6[24]; v22[7] = v6[11]; v22[8] = v6[12]; v22[9] = v6[13]; v22[10] = v6[14]; v22[11] = v6[15]; v7 = v6[16]; v8 = v6[17]; v22[12] = v7; v22[13] = v8; v10 = (_DWORD *)std::time_get>::_M_extract_wday_or_month( a1, a2, a3, &v20, (int)v22, 7u, a4, &v21); v11 = v10; if ( v21 ) *a5 |= 4u; else *(_DWORD *)(a6 + 24) = v20; v12 = v9 == -1; v17 = v12 & (v10 != 0); if ( v17 ) { v12 = 0; if ( v10[2] >= v10[3] ) { v11 = 0; v19 = v10; v16 = (*(int (**)(void))(*v10 + 36))(); v12 = 0; if ( v16 != -1 ) v11 = v19; if ( v16 == -1 ) v12 = v17; } } v13 = a3 == -1; if ( a2 ) { if ( a3 == -1 ) { v13 = 0; if ( a2[2] >= a2[3] ) { v18 = v12; v15 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v12 = v18; v13 = v15 == -1; } } } if ( v12 == v13 ) *a5 |= 2u; return v11; } // 4B79CF: variable 'v9' is possibly undefined //----- (004B7A80) -------------------------------------------------------- unsigned __int64 __stdcall std::time_get>::_M_extract_name( unsigned __int64 a1, _DWORD *a2, int a3, int **a4, int a5, int a6, int a7, _DWORD *a8) { _DWORD *v8; // edi int v9; // ebx _DWORD *v10; // edx int v11; // eax void *v12; // esp void *v13; // esp char v14; // bl int v16; // edi unsigned int v17; // ebx int *v18; // esi int v19; // edx int v20; // eax char v21; // al int v22; // ecx int *v23; // esi int *v24; // edx int v25; // esi size_t v26; // eax unsigned int v27; // ebx unsigned int i; // esi size_t v29; // eax int v30; // esi unsigned int v31; // edi unsigned int v32; // eax char v33; // di unsigned int j; // edi char v35; // si _BYTE *v36; // eax int v37; // eax const char *v38; // edi unsigned int v39; // ebx size_t v40; // eax unsigned int v41; // esi int *v42; // edi char v43; // bl int v44; // ecx char v45; // bl int v46; // eax _BYTE *v47; // eax char v48; // dl int v49; // eax int v50; // eax int v51; // eax int v52; // eax int v53; // eax int v54; // eax int v55; // eax bool v56; // zf _DWORD *v57; // eax int v58; // eax int v59; // eax int v60; // eax int v61; // eax bool v62; // zf _DWORD *v63; // eax int v64; // eax int v65; // eax int v66; // [esp+10h] [ebp-38h] BYREF _DWORD *v67; // [esp+18h] [ebp-30h] int *v68; // [esp+1Ch] [ebp-2Ch] int *v69; // [esp+20h] [ebp-28h] _DWORD *v70; // [esp+24h] [ebp-24h] int *v71; // [esp+28h] [ebp-20h] unsigned int v72; // [esp+2Ch] [ebp-1Ch] v8 = a2; v9 = a3; v67 = a2; v10 = std::use_facet>(a7 + 108); v11 = 16 * ((unsigned int)(4 * a6 + 27) >> 4); v12 = alloca(v11); v13 = alloca(v11); LOBYTE(v72) = HIDWORD(a1) == -1; LOBYTE(v71) = v72 & ((_DWORD)a1 != 0); if ( (_BYTE)v71 ) { LOBYTE(v72) = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v53 = *(_DWORD *)a1; v70 = v10; v54 = (*(int (**)(void))(v53 + 36))(); v10 = v70; if ( v54 == -1 ) { LODWORD(a1) = 0; LOBYTE(v72) = (_BYTE)v71; } } } LOBYTE(v70) = v9 == -1; v14 = (unsigned __int8)v70 & (v8 != 0); if ( v14 ) { if ( v8[2] >= v8[3] ) { v60 = *v8; v71 = v10; v61 = (*(int (__fastcall **)(_DWORD *))(v60 + 36))(v8); v10 = v71; v62 = v61 == -1; if ( v61 != -1 ) v14 = 0; v63 = 0; if ( !v62 ) v63 = v8; v67 = v63; } else { v14 = 0; } } else { v14 = (char)v70; } if ( v14 == (_BYTE)v72 ) goto LABEL_5; v69 = v10; LOBYTE(v72) = std::istreambuf_iterator::_M_get((int)&a1); if ( !a6 ) goto LABEL_5; v71 = &v66; v16 = 0; v17 = 0; v18 = v69; v19 = a5; do { while ( 1 ) { v22 = **(char **)(v19 + 4 * v16); if ( (_BYTE)v22 == (_BYTE)v72 ) break; v20 = *v18; a5 = v19; v21 = (*(int (__thiscall **)(int *, int))(v20 + 8))(v18, v22); v19 = a5; if ( (_BYTE)v72 == v21 ) break; if ( a6 == ++v16 ) goto LABEL_13; } v71[v17++] = v16++; } while ( a6 != v16 ); LABEL_13: v72 = 0; v23 = v71; if ( v17 <= 1 ) goto LABEL_35; v24 = v71; do { v25 = *v24; v68 = v24; v26 = strlen(*(const char **)(a5 + 4 * v25)); v71 = (int *)v17; v69 = (int *)v25; v27 = v26; for ( i = 1; i < (unsigned int)v71; ++i ) { v29 = strlen(*(const char **)(a5 + 4 * v68[i])); if ( v27 > v29 ) v27 = v29; } v24 = v68; v30 = (int)v69; v31 = v27; v17 = (unsigned int)v71; v32 = *(_DWORD *)(a1 + 8); if ( v32 >= *(_DWORD *)(a1 + 12) ) { v52 = *(_DWORD *)a1; v71 = v68; (*(void (__fastcall **)(_DWORD))(v52 + 40))(a1); v24 = v71; } else { *(_DWORD *)(a1 + 8) = v32 + 1; } ++v72; HIDWORD(a1) = -1; if ( v72 >= v31 ) goto LABEL_5; LOBYTE(v71) = 1; if ( (_DWORD)a1 ) { LOBYTE(v71) = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v58 = *(_DWORD *)a1; v69 = v24; v59 = (*(int (**)(void))(v58 + 36))(); v24 = v69; if ( v59 == -1 ) { LODWORD(a1) = 0; LOBYTE(v71) = 1; } } } v33 = (unsigned __int8)v70 & (v67 != 0); if ( v33 ) { if ( v67[2] >= v67[3] ) { v69 = v24; v55 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); v24 = v69; v56 = v55 == -1; if ( v55 != -1 ) v33 = 0; v57 = 0; if ( !v56 ) v57 = v67; v67 = v57; } else { v33 = 0; } } else { v33 = (char)v70; } if ( (_BYTE)v71 == v33 ) goto LABEL_5; for ( j = 0; ; v30 = v24[j] ) { v35 = *(_BYTE *)(*(_DWORD *)(a5 + 4 * v30) + v72); LOBYTE(v36) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v36 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v36 >= *(_DWORD *)(a1 + 12) ) { v51 = *(_DWORD *)a1; v71 = v24; v36 = (_BYTE *)(*(int (**)(void))(v51 + 36))(); v24 = v71; if ( v36 == (_BYTE *)-1 ) LODWORD(a1) = 0; } else { LOBYTE(v36) = *v36; } } if ( v35 == (_BYTE)v36 ) break; v24[j] = v24[--v17]; if ( v17 <= j ) goto LABEL_33; LABEL_29: ; } if ( v17 > ++j ) goto LABEL_29; LABEL_33: ; } while ( v17 > 1 ); v23 = v24; LABEL_35: if ( v17 == 1 ) { std::streambuf::sbumpc((_DWORD *)a1); v37 = *v23; HIDWORD(a1) = -1; v38 = *(const char **)(a5 + 4 * v37); v69 = (int *)v37; v39 = v72 + 1; v40 = strlen(v38); v71 = (int *)v40; if ( v72 + 1 < v40 ) { v72 = (unsigned int)v38; v41 = v39; v42 = v67; while ( 1 ) { v48 = 1; if ( (_DWORD)a1 ) { v48 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v49 = *(_DWORD *)a1; LOBYTE(v68) = 0; v50 = (*(int (**)(void))(v49 + 36))(); v48 = (char)v68; if ( v50 == -1 ) { LODWORD(a1) = 0; v48 = 1; } } } v43 = (unsigned __int8)v70 & (v42 != 0); if ( v43 ) { if ( v42[2] >= (unsigned int)v42[3] ) { v64 = *v42; LOBYTE(v68) = v48; v65 = (*(int (__fastcall **)(int *))(v64 + 36))(v42); v48 = (char)v68; if ( v65 != -1 ) v43 = 0; if ( v65 == -1 ) v42 = 0; } else { v43 = 0; } } else { v43 = (char)v70; } if ( v43 == v48 ) goto LABEL_5; v44 = a1; v45 = *(_BYTE *)(v72 + v41); LOBYTE(v46) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v47 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v47 < *(_DWORD *)(a1 + 12) ) { if ( v45 != *v47 ) goto LABEL_5; goto LABEL_44; } v46 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); if ( v46 == -1 ) LODWORD(a1) = 0; } if ( v45 != (_BYTE)v46 ) goto LABEL_5; v44 = a1; v47 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); goto LABEL_45; } LABEL_44: *(_DWORD *)(v44 + 8) = v47 + 1; LABEL_45: HIDWORD(a1) = -1; if ( (int *)++v41 == v71 ) goto LABEL_81; } } if ( v39 == v40 ) { LABEL_81: *a4 = v69; return a1; } } LABEL_5: *a8 |= 4u; return a1; } //----- (004B7F50) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_monthname( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int a6) { _DWORD *v6; // eax int v7; // edx int v8; // edx int v9; // edx _DWORD *v10; // ecx _DWORD *v11; // ebp char v12; // dl char v13; // al int v15; // eax int v16; // eax char v17; // [esp+34h] [ebp-98h] char v18; // [esp+34h] [ebp-98h] _DWORD *v19; // [esp+38h] [ebp-94h] unsigned int v20; // [esp+48h] [ebp-84h] BYREF int v21; // [esp+4Ch] [ebp-80h] BYREF int v22[31]; // [esp+50h] [ebp-7Ch] BYREF v6 = (_DWORD *)*((_DWORD *)std::use_facet>(a4 + 108) + 2); v22[0] = v6[37]; v22[1] = v6[38]; v22[2] = v6[39]; v22[3] = v6[40]; v22[4] = v6[41]; v22[5] = v6[42]; v22[6] = v6[43]; v22[7] = v6[44]; v22[8] = v6[45]; v22[9] = v6[46]; v22[10] = v6[47]; v22[11] = v6[48]; v22[12] = v6[25]; v22[13] = v6[26]; v22[14] = v6[27]; v22[15] = v6[28]; v7 = v6[29]; v21 = 0; v22[16] = v7; v22[17] = v6[30]; v22[18] = v6[31]; v22[19] = v6[32]; v22[20] = v6[33]; v22[21] = v6[34]; v8 = v6[35]; v22[23] = v6[36]; v22[22] = v8; v10 = (_DWORD *)std::time_get>::_M_extract_wday_or_month( a1, a2, a3, &v20, (int)v22, 0xCu, a4, &v21); v11 = v10; if ( v21 ) *a5 |= 4u; else *(_DWORD *)(a6 + 16) = v20; v12 = v9 == -1; v17 = v12 & (v10 != 0); if ( v17 ) { v12 = 0; if ( v10[2] >= v10[3] ) { v11 = 0; v19 = v10; v16 = (*(int (**)(void))(*v10 + 36))(); v12 = 0; if ( v16 != -1 ) v11 = v19; if ( v16 == -1 ) v12 = v17; } } v13 = a3 == -1; if ( a2 ) { if ( a3 == -1 ) { v13 = 0; if ( a2[2] >= a2[3] ) { v18 = v12; v15 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v12 = v18; v13 = v15 == -1; } } } if ( v12 == v13 ) *a5 |= 2u; return v11; } // 4B80FC: variable 'v9' is possibly undefined //----- (004B81B0) -------------------------------------------------------- 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 size_t v9; // ebx _BYTE *v10; // esi size_t v11; // eax _DWORD *v12; // ecx int v13; // eax char v14; // dl char v15; // di size_t v16; // edi char *v17; // ebp int v18; // edx char v19; // al char v20; // cl int (__stdcall *v21)(unsigned __int8, int); // eax _BYTE *v22; // eax char v23; // bl int v24; // eax int v25; // ebp char v26; // al char v27; // dl int (__stdcall *v28)(unsigned __int8, int); // eax char v29; // al int v31; // eax int v32; // ebx char v33; // dl int (__stdcall *v34)(unsigned __int8, int); // eax unsigned __int64 v35; // rax int *v36; // eax _DWORD *v37; // eax int v38; // eax unsigned __int64 v39; // rax _DWORD *v40; // eax char v41; // al char *v42; // eax unsigned __int64 v43; // rax _DWORD *v44; // eax int v45; // eax unsigned __int64 v46; // rax unsigned __int64 v47; // rax unsigned __int64 v48; // rax unsigned __int64 v49; // rax unsigned __int64 v50; // rax char v51; // al char v52; // bp char v53; // al char v54; // bp char v55; // al unsigned __int64 v56; // rax unsigned __int64 v57; // rax _DWORD *v58; // eax int (__stdcall *v59)(unsigned __int8); // edx char *v60; // ecx int (__stdcall *v61)(unsigned __int8); // edx char *v62; // edx char *Stra; // [esp+0h] [ebp-9Ch] char *Str; // [esp+0h] [ebp-9Ch] size_t v65; // [esp+30h] [ebp-6Ch] _DWORD *v66; // [esp+38h] [ebp-64h] char v67; // [esp+3Ch] [ebp-60h] int v68; // [esp+3Ch] [ebp-60h] int v69; // [esp+48h] [ebp-54h] BYREF int *v70; // [esp+4Ch] [ebp-50h] BYREF unsigned int v71; // [esp+50h] [ebp-4Ch] BYREF int v72; // [esp+54h] [ebp-48h] int v73; // [esp+58h] [ebp-44h] int v74; // [esp+5Ch] [ebp-40h] int v75; // [esp+60h] [ebp-3Ch] int v76; // [esp+64h] [ebp-38h] int v77; // [esp+68h] [ebp-34h] int v78; // [esp+6Ch] [ebp-30h] int v79; // [esp+70h] [ebp-2Ch] int v80; // [esp+74h] [ebp-28h] int v81; // [esp+78h] [ebp-24h] int v82; // [esp+7Ch] [ebp-20h] v7 = (char *)(a4 + 108); v8 = std::use_facet>(a4 + 108); Stra = v7; v9 = 0; v66 = v8; v10 = std::use_facet>((int)Stra); v11 = strlen(a7); v69 = 0; v12 = (_DWORD *)a1; v65 = v11; v13 = HIDWORD(a1); while ( 1 ) { v14 = v13 == -1; v15 = v14 & (v12 != 0); if ( v15 ) { v14 = 0; if ( v12[2] >= v12[3] ) { v31 = (*(int (__thiscall **)(_DWORD *, char *))(*v12 + 36))(v12, Str); v14 = 0; if ( v31 == -1 ) { LODWORD(a1) = 0; v14 = v15; } } } if ( a2 && a3 == -1 ) { if ( a2[2] >= a2[3] ) { v67 = v14; v24 = (*(int (**)(void))(*a2 + 36))(); v14 = v67; if ( v24 == -1 ) { a2 = 0; v14 = v67 ^ 1; } } } else { v14 ^= a3 == -1; } if ( v9 >= v65 || !v14 ) break; if ( v69 ) goto LABEL_32; v16 = v9 + 1; v17 = &a7[v9]; v18 = (unsigned __int8)a7[v9]; v19 = v10[v18 + 285]; v20 = a7[v9]; if ( v19 ) { LABEL_14: if ( v19 != 37 ) goto LABEL_15; v25 = (unsigned __int8)a7[v16]; v26 = v10[v25 + 285]; v27 = a7[v16]; if ( !v26 ) { v28 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v28 != std::ctype::do_narrow ) v27 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v28)(v10, v27, 0); if ( !v27 ) { LABEL_43: v69 |= 4u; v13 = HIDWORD(a1); goto LABEL_44; } v10[v25 + 285] = v27; v26 = v27; } v70 = 0; if ( (v26 == 69 || v26 == 79) && (v16 = v9 + 2, v32 = (unsigned __int8)a7[v9 + 2], v26 = v10[v32 + 285], v33 = v32, !v26) ) { v34 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v34 != std::ctype::do_narrow ) v33 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v34)(v10, (char)v32, 0); if ( !v33 ) goto LABEL_43; v10[v32 + 285] = v33; v29 = v33 - 65; if ( (unsigned __int8)(v33 - 65) > 0x38u ) goto LABEL_43; } else { v29 = v26 - 65; } switch ( v29 ) { case 0: v44 = (_DWORD *)v66[2]; v71 = v44[11]; v72 = v44[12]; v73 = v44[13]; v74 = v44[14]; v75 = v44[15]; v76 = v44[16]; v45 = v44[17]; goto LABEL_63; case 1: v40 = (_DWORD *)v66[2]; v71 = v40[25]; v72 = v40[26]; v73 = v40[27]; v74 = v40[28]; v75 = v40[29]; v76 = v40[30]; v77 = v40[31]; v78 = v40[32]; v79 = v40[33]; v80 = v40[34]; v81 = v40[35]; v38 = v40[36]; goto LABEL_52; case 2: case 24: case 56: LODWORD(v35) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, (int *)&v70, 0, 9999, 4u, a4, &v69); a1 = v35; if ( v69 ) goto LABEL_55; v36 = v70 - 475; if ( (int)v70 < 0 ) v36 = v70 + 25; a6[5] = v36; v13 = HIDWORD(a1); break; case 3: std::ctype::widen(v10, "%m/%d/%y", "%H:%M", &v71); LODWORD(v43) = std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, a3, a4, (int)&v69, (int)a6, (char *)&v71); goto LABEL_61; case 7: LODWORD(v46) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, (int *)&v70, 0, 23, 2u, a4, &v69); goto LABEL_67; case 8: LODWORD(v46) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, (int *)&v70, 1, 12, 2u, a4, &v69); LABEL_67: a1 = v46; if ( v69 ) goto LABEL_55; a6[2] = v70; v13 = HIDWORD(a1); break; case 12: LODWORD(v47) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, (int *)&v70, 0, 59, 2u, a4, &v69); a1 = v47; if ( v69 ) goto LABEL_55; a6[1] = v70; v13 = HIDWORD(a1); break; case 17: std::ctype::widen(v10, "%H:%M", "%H:%M:%S", &v71); LODWORD(v43) = std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, a3, a4, (int)&v69, (int)a6, (char *)&v71); goto LABEL_61; case 18: LODWORD(v39) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, (int *)&v70, 0, 60, 2u, a4, &v69); a1 = v39; if ( v69 ) goto LABEL_55; *a6 = v70; v13 = HIDWORD(a1); break; case 19: std::ctype::widen(v10, "%H:%M:%S", byte_557ACA, &v71); LODWORD(v43) = std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, a3, a4, (int)&v69, (int)a6, (char *)&v71); goto LABEL_61; case 23: v42 = *(char **)(v66[2] + 16); goto LABEL_60; case 25: if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1)) & 1) == 0 ) goto LABEL_43; a1 = std::time_get>::_M_extract_name( a1, a2, a3, (int **)&v71, (int)std::__timepunct_cache::_S_timezones, 14, a4, &v69); if ( !std::istreambuf_iterator::equal(&a1, (int)&a2) && !(v71 | v69) ) { v52 = std::istreambuf_iterator::_M_get((int)&a1); if ( v10[28] ) { v53 = v10[74]; } else { std::ctype::_M_widen_init((int)v10); v59 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v10 + 24); v53 = 45; if ( v59 != std::ctype::do_widen ) { v53 = ((int (__thiscall *)(_BYTE *, int))v59)(v10, 45); Str = v60; } } if ( v52 == v53 ) goto LABEL_94; v54 = std::istreambuf_iterator::_M_get((int)&a1); if ( v10[28] ) { v55 = v10[72]; } else { std::ctype::_M_widen_init((int)v10); v61 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v10 + 24); v55 = 43; if ( v61 != std::ctype::do_widen ) { v55 = ((int (__thiscall *)(_BYTE *, int))v61)(v10, 43); Str = v62; } } if ( v54 == v55 ) { LABEL_94: LODWORD(v56) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, (int *)&v71, 0, 23, 2u, a4, &v69); a1 = v56; LODWORD(v57) = std::time_get>::_M_extract_num( (_DWORD *)v56, SHIDWORD(v56), a2, a3, (int *)&v71, 0, 59, 2u, a4, &v69); a1 = v57; } } goto LABEL_55; case 32: v58 = (_DWORD *)v66[2]; v71 = v58[18]; v72 = v58[19]; v73 = v58[20]; v74 = v58[21]; v75 = v58[22]; v76 = v58[23]; v45 = v58[24]; LABEL_63: v77 = v45; a1 = std::time_get>::_M_extract_name( a1, a2, a3, &v70, (int)&v71, 7, a4, &v69); if ( v69 ) goto LABEL_55; a6[6] = v70; v13 = HIDWORD(a1); break; case 33: case 39: v37 = (_DWORD *)v66[2]; v71 = v37[37]; v72 = v37[38]; v73 = v37[39]; v74 = v37[40]; v75 = v37[41]; v76 = v37[42]; v77 = v37[43]; v78 = v37[44]; v79 = v37[45]; v80 = v37[46]; v81 = v37[47]; v38 = v37[48]; LABEL_52: v82 = v38; a1 = std::time_get>::_M_extract_name( a1, a2, a3, &v70, (int)&v71, 12, a4, &v69); if ( v69 ) goto LABEL_55; a6[4] = v70; v13 = HIDWORD(a1); break; case 34: v42 = *(char **)(v66[2] + 24); goto LABEL_60; case 35: LODWORD(v48) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, (int *)&v70, 1, 31, 2u, a4, &v69); a1 = v48; if ( v69 ) goto LABEL_55; a6[3] = v70; v13 = HIDWORD(a1); break; case 36: if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1)) & 0x20) != 0 ) { std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; LODWORD(v49) = std::time_get>::_M_extract_num( (_DWORD *)a1, -1, a2, a3, (int *)&v70, 1, 9, 1u, a4, &v69); } else { LODWORD(v49) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, (int *)&v70, 10, 31, 2u, a4, &v69); } a1 = v49; v13 = HIDWORD(v49); if ( !v69 ) a6[3] = v70; break; case 44: LODWORD(v50) = std::time_get>::_M_extract_num( (_DWORD *)a1, SHIDWORD(a1), a2, a3, (int *)&v70, 1, 12, 2u, a4, &v69); a1 = v50; if ( v69 ) { LABEL_55: v13 = HIDWORD(a1); } else { a6[4] = (char *)v70 - 1; v13 = HIDWORD(a1); } break; case 45: v51 = std::istreambuf_iterator::_M_get((int)&a1); if ( (unsigned __int8)std::ctype::narrow(v10, v51, 0) != 10 ) goto LABEL_43; goto LABEL_58; case 51: v41 = std::istreambuf_iterator::_M_get((int)&a1); if ( (unsigned __int8)std::ctype::narrow(v10, v41, 0) != 9 ) goto LABEL_43; LABEL_58: std::streambuf::sbumpc((_DWORD *)a1); v13 = -1; HIDWORD(a1) = -1; break; case 55: v42 = *(char **)(v66[2] + 8); LABEL_60: LODWORD(v43) = std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, a3, a4, (int)&v69, (int)a6, v42); LABEL_61: a1 = v43; v13 = HIDWORD(v43); break; default: goto LABEL_43; } LABEL_44: v12 = (_DWORD *)a1; v9 = v16 + 1; } else { v21 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); if ( v21 != std::ctype::do_narrow ) { v68 = (unsigned __int8)a7[v9]; v20 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v21)(v10, (char)v18, 0); v18 = v68; } if ( v20 ) { v10[v18 + 285] = v20; v19 = v20; goto LABEL_14; } LABEL_15: LOBYTE(v22) = BYTE4(a1); v23 = *v17; v12 = (_DWORD *)a1; if ( a1 > 0xFFFFFFFF00000000LL ) { v22 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v22 >= *(_DWORD *)(a1 + 12) ) { v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v22 == (_BYTE *)-1 ) { LODWORD(a1) = 0; v12 = 0; LOBYTE(v22) = -1; } else { v12 = (_DWORD *)a1; } } else { LOBYTE(v22) = *v22; } } if ( v23 == (_BYTE)v22 ) { std::streambuf::sbumpc(v12); v9 = v16; v13 = -1; HIDWORD(a1) = -1; v12 = (_DWORD *)a1; } else { v69 |= 4u; v13 = HIDWORD(a1); v9 = v16; } } } if ( v69 || v9 != v65 ) LABEL_32: *a5 |= 4u; return a1; } // 4B83C4: variable 'Str' is possibly undefined // 4B8536: variable 'v35' is possibly undefined // 4B86F7: variable 'v39' is possibly undefined // 4B8837: variable 'v43' is possibly undefined // 4B89B3: variable 'v46' is possibly undefined // 4B8A81: variable 'v47' is possibly undefined // 4B8B86: variable 'v48' is possibly undefined // 4B8C47: variable 'v49' is possibly undefined // 4B8CDA: variable 'v50' is possibly undefined // 4B8EFB: variable 'v56' is possibly undefined // 4B8F11: variable 'v57' is possibly undefined // 4B9061: variable 'v60' is possibly undefined // 4B908F: variable 'v62' is possibly undefined // 53F660: using guessed type void *std::__timepunct_cache::_S_timezones[2]; // 557ACA: using guessed type _BYTE byte_557ACA[2]; //----- (004B90A0) -------------------------------------------------------- int __stdcall std::time_get>::_M_extract_wday_or_month( unsigned __int64 a1, _DWORD *a2, int a3, unsigned int *a4, int a5, unsigned int a6, int a7, _DWORD *a8) { _DWORD *v8; // esi int v9; // ebx int v10; // eax void *v11; // esp void *v12; // esp unsigned __int8 v13; // dl char v14; // bl int v15; // eax unsigned int v16; // edi unsigned int v17; // esi int *v18; // ecx char v19; // dl char v20; // bl char v21; // bl _BYTE *v22; // eax unsigned int v23; // edx unsigned int *v24; // ecx unsigned int v25; // eax int v26; // eax int v27; // eax unsigned int v29; // eax int v30; // ebx int v31; // edx int *v32; // esi int v33; // eax char v34; // al int v35; // ecx int v36; // eax void *v37; // esp int v38; // esi void *v39; // esp int v40; // ecx int *v41; // edi int *v42; // ebx int v43; // eax unsigned __int8 v44; // di int v45; // eax int v46; // eax int v47; // eax int v48; // eax bool v49; // zf _DWORD *v50; // eax int v51; // eax int v52; // eax bool v53; // zf _DWORD *v54; // eax int v55; // [esp+10h] [ebp-38h] BYREF int *v56; // [esp+14h] [ebp-34h] _DWORD *v57; // [esp+18h] [ebp-30h] bool v58; // [esp+1Eh] [ebp-2Ah] char v59; // [esp+1Fh] [ebp-29h] int *v60; // [esp+20h] [ebp-28h] int *v61; // [esp+24h] [ebp-24h] int *v62; // [esp+28h] [ebp-20h] int *v63; // [esp+2Ch] [ebp-1Ch] v8 = a2; v9 = a3; v57 = a2; v60 = (int *)std::use_facet>(a7 + 108); v10 = 16 * ((8 * a6 + 27) >> 4); v11 = alloca(v10); v12 = alloca(v10); v13 = HIDWORD(a1) == -1; v62 = &v55; if ( (v13 & ((_DWORD)a1 != 0)) != 0 ) { v44 = v13 & ((_DWORD)a1 != 0); v13 = 0; if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) { v45 = *(_DWORD *)a1; LOBYTE(v63) = 0; v46 = (*(int (**)(void))(v45 + 36))(); v13 = (unsigned __int8)v63; if ( v46 == -1 ) { LODWORD(a1) = 0; v13 = v44; } } } v58 = v9 == -1; v14 = v58 && v8 != 0; if ( v14 ) { if ( v8[2] >= v8[3] ) { v51 = *v8; LOBYTE(v63) = v13; v52 = (*(int (__fastcall **)(_DWORD *))(v51 + 36))(v8); v13 = (unsigned __int8)v63; v53 = v52 == -1; if ( v52 != -1 ) v14 = 0; v54 = 0; if ( !v53 ) v54 = v8; v57 = v54; } else { v14 = 0; } } else { v14 = v58; } if ( v13 == v14 ) { v56 = 0; v15 = HIDWORD(a1); v16 = 0; v17 = 0; v18 = (int *)a1; } else { v30 = 0; v16 = 0; LOBYTE(v63) = std::istreambuf_iterator::_M_get((int)&a1); v17 = 2 * a6; if ( 2 * a6 ) { v61 = (int *)(2 * a6); v31 = a5; v32 = v60; do { while ( 1 ) { v35 = **(char **)(v31 + 4 * v30); if ( (_BYTE)v35 == (_BYTE)v63 ) break; v33 = *v32; a5 = v31; v34 = (*(int (__thiscall **)(int *, int))(v33 + 8))(v32, v35); v31 = a5; if ( (_BYTE)v63 == v34 ) break; if ( (int *)++v30 == v61 ) goto LABEL_47; } v62[v16++] = v30++; } while ( (int *)v30 != v61 ); LABEL_47: v18 = (int *)a1; if ( v16 ) { std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v36 = 16 * ((4 * v16 + 27) >> 4); v37 = alloca(v36); v38 = a5; v39 = alloca(v36); v40 = (int)&v62[v16]; v61 = (int *)v16; v41 = v62; v63 = (int *)v40; v56 = &v55; v42 = &v55; do { v43 = *v41; ++v42; ++v41; *(v42 - 1) = strlen(*(const char **)(v38 + 4 * v43)); } while ( v41 != v63 ); v16 = (unsigned int)v61; v18 = (int *)a1; v15 = -1; v17 = 1; } else { v56 = 0; v15 = HIDWORD(a1); v17 = 0; } } else { v15 = HIDWORD(a1); v18 = (int *)a1; v56 = 0; } } v19 = v15 == -1; v20 = v19 & (v18 != 0); if ( v20 ) goto LABEL_23; LABEL_7: v21 = v58 && v57 != 0; if ( !v21 ) { v21 = v58; goto LABEL_9; } if ( v57[2] >= v57[3] ) { v47 = *v57; LOBYTE(v63) = v19; v48 = (*(int (__fastcall **)(_DWORD *))(v47 + 36))(v57); v19 = (char)v63; v49 = v48 == -1; if ( v48 != -1 ) v21 = 0; v50 = 0; if ( !v49 ) v50 = v57; v57 = v50; LABEL_9: if ( v21 == v19 ) goto LABEL_29; LABEL_10: LOBYTE(v22) = BYTE4(a1); if ( a1 > 0xFFFFFFFF00000000LL ) { v22 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v22 >= *(_DWORD *)(a1 + 12) ) { v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v22 == (_BYTE *)-1 ) { LODWORD(a1) = 0; v59 = -1; goto LABEL_12; } } else { LOBYTE(v22) = *v22; } } v59 = (char)v22; LABEL_12: if ( !v16 ) goto LABEL_31; v23 = 0; v60 = 0; v63 = v56; while ( 1 ) { while ( 1 ) { v24 = (unsigned int *)&v63[v23]; if ( *v24 > v17 ) break; v60 = (int *)((char *)v60 + 1); ++v23; LABEL_15: if ( v16 <= v23 ) goto LABEL_19; } v61 = &v62[v23]; if ( *(_BYTE *)(*(_DWORD *)(a5 + 4 * *v61) + v17) == v59 ) { ++v23; goto LABEL_15; } *v61 = v62[--v16]; *v24 = v63[v16]; if ( v16 <= v23 ) { LABEL_19: if ( v60 == (int *)v16 ) goto LABEL_29; v18 = (int *)a1; v25 = *(_DWORD *)(a1 + 8); if ( v25 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v18 = (int *)a1; } else { *(_DWORD *)(a1 + 8) = v25 + 1; } ++v17; HIDWORD(a1) = -1; v19 = 1; v20 = v18 != 0; if ( v18 ) { LABEL_23: v19 = 0; if ( v18[2] >= (unsigned int)v18[3] ) { v26 = *v18; LOBYTE(v63) = 0; v27 = (*(int (__fastcall **)(int *))(v26 + 36))(v18); v19 = (char)v63; if ( v27 == -1 ) { LODWORD(a1) = 0; v19 = v20; } } } goto LABEL_7; } } } if ( v19 ) goto LABEL_10; LABEL_29: if ( v16 == 1 ) { if ( *v56 != v17 ) { LABEL_31: *a8 |= 4u; return a1; } } else if ( v16 != 2 || *v56 != v17 && v56[1] != v17 ) { goto LABEL_31; } v29 = *v62; if ( *v62 >= a6 ) v29 = *v62 - a6; *a4 = v29; return a1; } //----- (004B94D0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::get( _DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, unsigned __int8 *a8, unsigned __int8 *a9) { unsigned __int8 *v9; // edi _DWORD *v11; // ebp int v12; // edx char v13; // dl char v14; // bl char v15; // dl char v16; // bl unsigned int v17; // eax char v18; // dl char v19; // bl char v20; // bl char v21; // dl int (__stdcall *v22)(unsigned __int8, int); // eax unsigned __int8 v23; // dl int (__stdcall *v24)(unsigned __int8, int); // eax int v25; // edi int (__stdcall *v26)(unsigned __int8, int); // eax _BYTE *v27; // eax char v28; // dl _BYTE *v29; // edi char v30; // bl unsigned __int64 v31; // rax char v32; // al unsigned __int8 *i; // edi int j; // ebp bool v36; // al bool v37; // di char v38; // dl char v39; // bl int v40; // eax unsigned __int8 *v41; // eax int (__stdcall *v42)(unsigned __int8); // eax char *v43; // eax int v44; // eax int v45; // eax bool v46; // zf _DWORD *v47; // eax char *v48; // eax int v49; // eax int v50; // eax bool v51; // zf _DWORD *v52; // eax int v53; // eax int v54; // eax bool v55; // [esp+3Fh] [ebp-4Dh] bool v57; // [esp+44h] [ebp-48h] char v58; // [esp+44h] [ebp-48h] _DWORD *v59; // [esp+44h] [ebp-48h] char v60; // [esp+44h] [ebp-48h] bool v62; // [esp+48h] [ebp-44h] char v63; // [esp+48h] [ebp-44h] int v64; // [esp+4Ch] [ebp-40h] unsigned __int8 *v65; // [esp+4Ch] [ebp-40h] char v66; // [esp+4Ch] [ebp-40h] int v67; // [esp+50h] [ebp-3Ch] unsigned __int8 v68; // [esp+50h] [ebp-3Ch] char v69; // [esp+6Ch] [ebp-20h] BYREF char v70; // [esp+6Dh] [ebp-1Fh] char v71; // [esp+6Eh] [ebp-1Eh] char v72; // [esp+6Fh] [ebp-1Dh] unsigned __int8 *v73; // [esp+ACh] [ebp+20h] v9 = a8; v11 = std::use_facet>(a5 + 108); *a6 = 0; if ( a8 == a9 ) return a1; v55 = a4 == -1; while ( 1 ) { v57 = a2 == -1; if ( !v57 || a1 == 0 ) { v18 = a2 == -1; goto LABEL_19; } if ( a1[2] >= a1[3] ) { v49 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v18 = v57 && a1 != 0; if ( v49 != -1 ) v18 = 0; if ( v49 == -1 ) a1 = 0; LABEL_19: v19 = v55 && a3 != 0; if ( !v19 ) goto LABEL_20; goto LABEL_85; } v18 = 0; v19 = v55 && a3 != 0; if ( !v19 ) { LABEL_20: v19 = a4 == -1; goto LABEL_21; } LABEL_85: if ( a3[2] >= a3[3] ) { v66 = v18; v50 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v18 = v66; v51 = v50 == -1; if ( v50 != -1 ) v19 = 0; v52 = 0; if ( !v51 ) v52 = a3; a3 = v52; LABEL_21: if ( v18 == v19 ) goto LABEL_87; goto LABEL_22; } if ( !v18 ) { LABEL_87: *a6 = 6; return a1; } LABEL_22: v20 = *((_BYTE *)v11 + *v9 + 285); v64 = *v9; v21 = *v9; if ( !v20 ) { v22 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); if ( v22 != std::ctype::do_narrow ) v21 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v22)(v11, v21, 0); if ( !v21 ) goto LABEL_3; v20 = v21; *((_BYTE *)v11 + v64 + 285) = v21; } if ( v20 == 37 ) { v65 = v9 + 1; if ( a9 == v9 + 1 ) break; v67 = v9[1]; v23 = v9[1]; v58 = *((_BYTE *)v11 + v67 + 285); if ( !v58 ) { v24 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); if ( v24 != std::ctype::do_narrow ) v23 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v24)(v11, (char)v67, 0); if ( !v23 ) goto LABEL_89; v58 = v23; *((_BYTE *)v11 + v67 + 285) = v23; } if ( v58 == 69 || v58 == 79 ) { v65 = v9 + 2; if ( a9 == v9 + 2 ) break; v25 = v9[2]; v23 = v25; if ( *((_BYTE *)v11 + v25 + 285) ) { v23 = *((_BYTE *)v11 + v25 + 285); } else { v26 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); if ( v26 != std::ctype::do_narrow ) v23 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v26)(v11, (char)v25, 0); if ( v23 ) *((_BYTE *)v11 + v25 + 285) = v23; } LABEL_42: v68 = v23; v27 = std::use_facet>(a5 + 108); v28 = v68; v29 = v27; *a6 = 0; if ( v27[28] ) { v20 = v27[66]; } else { std::ctype::_M_widen_init((int)v27); v28 = v68; v42 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v29 + 24); if ( v42 != std::ctype::do_widen ) { v20 = ((int (__fastcall *)(_BYTE *, _DWORD, int))v42)(v29, v68, 37); v28 = v68; } } v69 = v20; if ( v58 ) { v71 = v28; v72 = 0; v70 = v58; } else { v70 = v28; v71 = 0; } v31 = std::time_get>::_M_extract_via_format( __PAIR64__(a2, (unsigned int)a1), a3, a4, a5, a6, a7, &v69); a1 = (_DWORD *)v31; v30 = HIDWORD(v31) == -1; a2 = HIDWORD(v31); BYTE4(v31) = v30 & ((_DWORD)v31 != 0); if ( BYTE4(v31) ) { v30 = 0; if ( *(_DWORD *)(v31 + 8) >= *(_DWORD *)(v31 + 12) ) { v60 = BYTE4(v31); if ( (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v31 + 36))(v31) == -1 ) { v30 = v60; a1 = 0; } } } if ( a3 && a4 == -1 ) { v32 = 0; if ( a3[2] >= a3[3] ) v32 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; } else { v32 = a4 == -1; } if ( v30 == v32 ) *a6 |= 2u; v9 = v65 + 1; if ( a9 == v65 + 1 ) return a1; goto LABEL_16; } v23 = v58; LABEL_89: v58 = 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; } v73 = i; v59 = v11; for ( j = a2; ; j = -1 ) { v36 = j == -1; v37 = v36; if ( v36 && a1 != 0 ) { if ( a1[2] >= a1[3] ) { v62 = v36 && a1 != 0; v44 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v38 = v62; if ( v44 != -1 ) v38 = 0; if ( v44 == -1 ) a1 = 0; } else { v38 = 0; } } else { v38 = j == -1; } v39 = v55 && a3 != 0; if ( !v39 ) break; if ( a3[2] >= a3[3] ) { v63 = v38; v45 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v38 = v63; v46 = v45 == -1; if ( v45 != -1 ) v39 = 0; v47 = 0; if ( !v46 ) v47 = a3; a3 = v47; LABEL_63: if ( v38 == v39 ) goto LABEL_76; goto LABEL_64; } if ( !v38 ) { LABEL_76: a2 = j; v9 = v73; v11 = v59; goto LABEL_15; } LABEL_64: if ( a1 && v37 ) { v41 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v41 < a1[3] ) { if ( (*(_BYTE *)(v59[6] + 2 * *v41) & 0x20) == 0 ) { a2 = -1; v9 = v73; v11 = v59; goto LABEL_15; } LABEL_69: a1[2] = v41 + 1; continue; } v40 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); if ( v40 == -1 ) a1 = 0; } else { LOBYTE(v40) = j; } if ( (*(_BYTE *)(v59[6] + 2 * (unsigned __int8)v40) & 0x20) == 0 ) goto LABEL_76; v41 = (unsigned __int8 *)a1[2]; if ( (unsigned int)v41 < a1[3] ) goto LABEL_69; (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); } v39 = a4 == -1; goto LABEL_63; } if ( a1 && a2 == -1 ) { v43 = (char *)a1[2]; if ( (unsigned int)v43 >= a1[3] ) { v53 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v13 = v53; if ( v53 == -1 ) v13 = -1; if ( v53 == -1 ) a1 = 0; } 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 ) { v48 = (char *)a1[2]; if ( (unsigned int)v48 >= a1[3] ) { v54 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v15 = v54; if ( v54 == -1 ) v15 = -1; if ( v54 == -1 ) a1 = 0; } else { v15 = *v48; } } 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 = a1[2]; if ( v17 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v17 + 1; a2 = -1; ++v9; LABEL_15: if ( a9 == v9 ) return a1; LABEL_16: if ( *a6 ) return a1; } *a6 = 4; return a1; } // 4B9AF9: conditional instruction was optimized away because eax.4==FFFFFFFF //----- (004B9CA0) -------------------------------------------------------- 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; // dl int v10; // esi unsigned __int64 v11; // rax char v12; // bp int (__stdcall *v14)(unsigned __int8); // eax 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); v9 = 37; v14 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v8 + 24); if ( v14 != std::ctype::do_widen ) v9 = ((int (__fastcall *)(_BYTE *, int, int))v14)(v8, 37, 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 *)v11 + 36))(v11); BYTE4(v11) = 0; if ( (_DWORD)v11 == -1 ) { BYTE4(v11) = v12; v10 = 0; } } } 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 ( (_BYTE)v11 == BYTE4(v11) ) *a5 |= 2u; return v10; } // 4B9E49: conditional instruction was optimized away because eax.4==FFFFFFFF //----- (004B9E60) -------------------------------------------------------- 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; // dl int v10; // esi unsigned __int64 v11; // rax char v12; // bp int (__stdcall *v14)(unsigned __int8); // eax 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); v9 = 37; v14 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v8 + 24); if ( v14 != std::ctype::do_widen ) v9 = ((int (__fastcall *)(_BYTE *, int, int))v14)(v8, 37, 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 *)v11 + 36))(v11); BYTE4(v11) = 0; if ( (_DWORD)v11 == -1 ) { BYTE4(v11) = v12; v10 = 0; } } } 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; } // 4BA009: conditional instruction was optimized away because eax.4==FFFFFFFF //----- (004BA020) -------------------------------------------------------- int __fastcall std::time_get>::get_date(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); } //----- (004BA030) -------------------------------------------------------- int __fastcall std::time_get>::get_time(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); } //----- (004BA040) -------------------------------------------------------- int __fastcall std::time_get>::get_year(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); } //----- (004BA050) -------------------------------------------------------- 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(); } //----- (004BA070) -------------------------------------------------------- _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 _BOOL2 v10; // bx bool v11; // cl __int16 *v13; // eax __int16 v14; // ax bool v15; // si __int16 *v16; // eax __int16 v17; // ax _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; if ( v10 && (_DWORD)v7 != 0 ) { v15 = v10 && (_DWORD)v7 != 0; v16 = *(__int16 **)(v7 + 8); if ( (unsigned int)v16 >= v8[3] ) { v18 = v8; v17 = (*(int (**)(void))(*v8 + 36))(); v8 = v18; } else { v17 = *v16; } LOBYTE(v10) = 0; v9 = 0; if ( v17 == -1 ) LOBYTE(v10) = v15; if ( v17 != -1 ) v9 = 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 ( v10 == v11 ) *a5 |= 2u; return v9; } //----- (004BA1A0) -------------------------------------------------------- _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 _BOOL2 v10; // bx bool v11; // cl __int16 *v13; // eax __int16 v14; // ax bool v15; // si __int16 *v16; // eax __int16 v17; // ax _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; if ( v10 && (_DWORD)v7 != 0 ) { v15 = v10 && (_DWORD)v7 != 0; v16 = *(__int16 **)(v7 + 8); if ( (unsigned int)v16 >= v8[3] ) { v18 = v8; v17 = (*(int (**)(void))(*v8 + 36))(); v8 = v18; } else { v17 = *v16; } LOBYTE(v10) = 0; v9 = 0; if ( v17 == -1 ) LOBYTE(v10) = v15; if ( v17 != -1 ) v9 = 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 ( v10 == v11 ) *a5 |= 2u; return v9; } //----- (004BA2D0) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::do_get_year( _DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7) { __int16 v7; // dx _DWORD *v8; // ecx _DWORD *v9; // ebp int v10; // ebx char v11; // bl char v12; // cl __int16 *v14; // eax __int16 v15; // ax __int16 *v16; // eax __int16 v17; // ax bool v18; // zf _DWORD *v19; // eax char v20; // [esp+40h] [ebp-3Ch] _DWORD *v21; // [esp+44h] [ebp-38h] int v22; // [esp+58h] [ebp-24h] BYREF int v23[8]; // [esp+5Ch] [ebp-20h] BYREF v23[0] = 0; v8 = std::time_get>::_M_extract_num( a1, a2, a3, a4, &v22, 0, 9999, 4u, a5, v23); v9 = v8; if ( v23[0] ) { *a6 |= 4u; } else { v10 = v22 + 100; if ( v22 >= 0 ) v10 = v22 - 1900; *(_DWORD *)(a7 + 20) = v10; } v11 = v7 == -1; v20 = v11 & (v8 != 0); if ( v20 ) { v16 = (__int16 *)v8[2]; if ( (unsigned int)v16 >= v8[3] ) { v21 = v8; v17 = (*(int (**)(void))(*v8 + 36))(); v8 = v21; } else { v17 = *v16; } v18 = v17 == -1; v11 = 0; if ( v17 == -1 ) v11 = v20; v19 = 0; if ( !v18 ) v19 = v8; v9 = v19; } v12 = a4 == -1; if ( a3 && a4 == -1 ) { v14 = (__int16 *)a3[2]; if ( (unsigned int)v14 >= a3[3] ) v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); else v15 = *v14; v12 = v15 == -1; } if ( v12 == v11 ) *a6 |= 2u; return v9; } // 4BA38D: variable 'v7' is possibly undefined // 4BA2D0: using guessed type int var_20[8]; //----- (004BA440) -------------------------------------------------------- int __fastcall std::time_get>::get_weekday(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); } //----- (004BA450) -------------------------------------------------------- int std::time_get>::do_date_order() { return 0; } //----- (004BA460) -------------------------------------------------------- int __fastcall std::time_get>::get_monthname(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); } //----- (004BA470) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_num( _DWORD *a1, unsigned __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; // eax int v13; // edi char v14; // dl char v15; // bl int v16; // edx unsigned __int8 v17; // al unsigned int v18; // eax __int16 *v19; // eax __int16 v20; // ax __int16 *v21; // eax __int16 v22; // ax bool v23; // zf _DWORD *v24; // eax unsigned __int16 *v26; // eax bool v27; // [esp+1Bh] [ebp-31h] unsigned int v28; // [esp+1Ch] [ebp-30h] void *v30; // [esp+24h] [ebp-28h] char v32; // [esp+2Eh] [ebp-1Eh] char v33; // [esp+2Fh] [ebp-1Dh] v10 = 10; v30 = std::use_facet>(a9 + 108); if ( a8 != 2 ) { v12 = 1; if ( a8 == 4 ) v12 = 1000; v10 = v12; } v28 = 0; v32 = a4 == -1; v13 = 0; while ( 1 ) { v27 = a2 == 0xFFFF; v14 = v27 && a1 != 0; if ( v14 ) break; v14 = a2 == 0xFFFF; v15 = v32 & (a3 != 0); if ( v15 ) goto LABEL_26; LABEL_7: if ( v14 == v32 ) goto LABEL_33; LABEL_8: if ( v28 >= a8 ) goto LABEL_33; if ( a1 && a2 == 0xFFFF ) { v26 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v26 >= a1[3] ) v16 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v16 = *v26; if ( (_WORD)v16 == 0xFFFF ) a1 = 0; } else { v16 = a2; } v17 = (*(int (__thiscall **)(void *, int, int))(*(_DWORD *)v30 + 48))(v30, v16, 42) - 48; if ( v17 > 9u ) goto LABEL_34; v13 = (char)v17 + 10 * v13; if ( (int)(v13 * v10) > a7 || (int)(v10 + v13 * v10) <= a6 ) goto LABEL_34; v18 = a1[2]; v10 /= 0xAu; if ( v18 >= a1[3] ) (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); else a1[2] = v18 + 2; ++v28; a2 = -1; } v19 = (__int16 *)a1[2]; if ( (unsigned int)v19 >= a1[3] ) { v20 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); v14 = v27 && a1 != 0; } else { v20 = *v19; } if ( v20 == -1 ) a1 = 0; if ( v20 != -1 ) v14 = 0; v15 = v32 & (a3 != 0); if ( !v15 ) goto LABEL_7; LABEL_26: v21 = (__int16 *)a3[2]; if ( (unsigned int)v21 >= a3[3] ) { v33 = v14; v22 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); v14 = v33; } else { v22 = *v21; } v23 = v22 == -1; v24 = 0; if ( !v23 ) v24 = a3; a3 = v24; if ( !v23 ) v15 = 0; if ( v14 != v15 ) goto LABEL_8; LABEL_33: if ( v28 == a8 ) { LABEL_37: *a5 = v13; return a1; } LABEL_34: if ( a8 == 4 && v28 == 2 ) { v13 -= 100; goto LABEL_37; } *a10 |= 4u; return a1; } //----- (004BA6F0) -------------------------------------------------------- _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] unsigned 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 = 0; v12 = 0; if ( v20 == -1 ) v13 = v14; if ( v20 != -1 ) v12 = 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; } // 4BA81D: variable 'v10' is possibly undefined //----- (004BA8E0) -------------------------------------------------------- int __stdcall std::time_get>::_M_extract_name( int *a1, int a2, _DWORD *a3, int a4, int **a5, int a6, int a7, int a8, _DWORD *a9) { void *v9; // edi int v10; // eax void *v11; // esp void *v12; // esp int *v13; // edx char v14; // bl int v15; // eax int v17; // ebx int v18; // edx size_t v19; // esi __int16 v20; // ax int v21; // ecx int *v22; // edx int *v23; // ebx int *v24; // edi size_t v25; // eax unsigned int v26; // ebx unsigned int v27; // esi size_t v28; // eax unsigned int v29; // edi unsigned int v30; // eax __int16 *v31; // eax __int16 v32; // ax bool v33; // zf int v34; // eax char v35; // di char v36; // dl int *v37; // ecx size_t v38; // edi int i; // eax __int16 v40; // ax __int16 *v41; // eax unsigned int v42; // eax int v43; // ebx const wchar_t *v44; // edi unsigned int v45; // ebx int *v46; // esi unsigned int v47; // eax __int16 *v48; // eax __int16 v49; // ax char v50; // di char v51; // dl wchar_t v52; // di __int16 v53; // ax _WORD *v54; // eax __int16 *v55; // eax __int16 v56; // ax bool v57; // zf _DWORD *v58; // eax int v59; // eax __int16 *v60; // eax __int16 v61; // ax bool v62; // zf int v63; // eax char v64; // cl __int16 *v65; // eax __int16 v66; // ax bool v67; // zf _DWORD *v68; // eax _WORD *v69; // eax int v70; // eax int v71; // eax int v72; // eax __int16 v73; // ax __int16 *v74; // eax __int16 v75; // ax bool v76; // zf _DWORD *v77; // eax int v78; // [esp+10h] [ebp-38h] BYREF _DWORD *v79; // [esp+14h] [ebp-34h] bool v80; // [esp+1Bh] [ebp-2Dh] int *v81; // [esp+1Ch] [ebp-2Ch] int *v82; // [esp+20h] [ebp-28h] int *v83; // [esp+24h] [ebp-24h] const wchar_t *v84; // [esp+28h] [ebp-20h] size_t v85; // [esp+2Ch] [ebp-1Ch] v81 = (int *)a4; v78 = a2; LOWORD(v84) = a2; v82 = a1; v79 = a3; v9 = std::use_facet>(a8 + 108); v10 = 16 * ((unsigned int)(4 * a7 + 27) >> 4); v11 = alloca(v10); v12 = alloca(v10); v13 = &v78; LOBYTE(v85) = (_WORD)a2 == 0xFFFF; LOBYTE(v83) = v85 & (a1 != 0); if ( (_BYTE)v83 ) { v60 = (__int16 *)a1[2]; if ( (unsigned int)v60 >= a1[3] ) { v72 = *a1; v82 = &v78; v61 = (*(int (__fastcall **)(int *))(v72 + 36))(a1); v13 = v82; } else { v61 = *v60; } v62 = v61 == -1; v63 = 0; v64 = (char)v83; if ( !v62 ) v63 = (int)a1; v82 = (int *)v63; if ( !v62 ) v64 = 0; LOBYTE(v83) = v64; } else { LOBYTE(v83) = v85; } v80 = (_WORD)v81 == 0xFFFF; v14 = v80 && a3 != 0; if ( v14 ) { v65 = (__int16 *)a3[2]; if ( (unsigned int)v65 >= a3[3] ) { v71 = *a3; v81 = v13; v66 = (*(int (__fastcall **)(_DWORD *))(v71 + 36))(a3); v13 = v81; } else { v66 = *v65; } v67 = v66 == -1; v68 = 0; if ( !v67 ) v68 = a3; v79 = v68; if ( !v67 ) v14 = 0; } else { v14 = v80; } if ( v14 == (_BYTE)v83 ) goto LABEL_6; if ( v82 && (_BYTE)v85 ) { v69 = (_WORD *)v82[2]; if ( (unsigned int)v69 >= v82[3] ) { v83 = v13; v73 = (*(int (__fastcall **)(int *))(*v82 + 36))(v82); v13 = v83; LOWORD(v85) = v73; } else { LOWORD(v85) = *v69; } v70 = 0; if ( (_WORD)v85 != 0xFFFF ) v70 = (int)v82; v82 = (int *)v70; } else { LOWORD(v85) = (_WORD)v84; } if ( !a7 ) goto LABEL_6; v83 = v13; v17 = 0; v18 = a6; v19 = 0; do { while ( 1 ) { v21 = **(unsigned __int16 **)(v18 + 4 * v17); if ( (_WORD)v21 == (_WORD)v85 ) break; a6 = v18; v20 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 24))(v9, v21); v18 = a6; if ( v20 == (_WORD)v85 ) break; if ( a7 == ++v17 ) goto LABEL_17; } v83[v19++] = v17++; } while ( a7 != v17 ); LABEL_17: v22 = v83; v83 = 0; if ( v19 <= 1 ) goto LABEL_44; v23 = v22; do { v24 = v23; v81 = (int *)*v23; v25 = wcslen(*(const wchar_t **)(a6 + 4 * (_DWORD)v81)); v85 = v19; v26 = 1; v27 = v25; do { v28 = wcslen(*(const wchar_t **)(a6 + 4 * v24[v26])); if ( v27 > v28 ) v27 = v28; ++v26; } while ( v26 < v85 ); v23 = v24; v29 = v27; v19 = v85; v30 = v82[2]; if ( v30 >= v82[3] ) (*(void (__fastcall **)(int *))(*v82 + 40))(v82); else v82[2] = v30 + 2; v83 = (int *)((char *)v83 + 1); if ( (unsigned int)v83 >= v29 ) goto LABEL_73; v31 = (__int16 *)v82[2]; if ( (unsigned int)v31 >= v82[3] ) v32 = (*(int (__fastcall **)(int *))(*v82 + 36))(v82); else v32 = *v31; v33 = v32 == -1; v34 = 0; if ( !v33 ) v34 = (int)v82; v82 = (int *)v34; v35 = v33; v36 = v80 && v79 != 0; if ( v36 ) { v55 = (__int16 *)v79[2]; if ( (unsigned int)v55 >= v79[3] ) { LOBYTE(v85) = v80 && v79 != 0; v56 = (*(int (__fastcall **)(_DWORD *))(*v79 + 36))(v79); v36 = v85; } else { v56 = *v55; } v57 = v56 == -1; v58 = 0; if ( !v57 ) v58 = v79; v79 = v58; if ( !v57 ) v36 = 0; if ( v35 == v36 ) goto LABEL_73; } else if ( v33 == v80 ) { goto LABEL_73; } v37 = v82; v38 = 0; v84 = (const wchar_t *)(2 * (_DWORD)v83); for ( i = (int)v81; ; i = v23[v38] ) { LOWORD(v85) = *(const wchar_t *)((char *)v84 + *(_DWORD *)(a6 + 4 * i)); v40 = -1; if ( v37 ) { v41 = (__int16 *)v37[2]; if ( (unsigned int)v41 >= v37[3] ) { v59 = *v37; v82 = v37; v40 = (*(int (**)(void))(v59 + 36))(); v37 = v82; } else { v40 = *v41; } if ( v40 == -1 ) v37 = 0; } if ( (_WORD)v85 == v40 ) break; v23[v38] = v23[--v19]; if ( v19 <= v38 ) goto LABEL_42; LABEL_34: ; } if ( v19 > ++v38 ) goto LABEL_34; LABEL_42: v82 = v37; } while ( v19 > 1 ); LOWORD(v84) = -1; v22 = v23; LABEL_44: if ( v19 == 1 ) { v42 = v82[2]; if ( v42 >= v82[3] ) { v85 = (size_t)v22; (*(void (__fastcall **)(int *))(*v82 + 40))(v82); v22 = (int *)v85; } else { v82[2] = v42 + 2; } v43 = (int)v83; v44 = *(const wchar_t **)(a6 + 4 * *v22); v83 = (int *)*v22; v45 = v43 + 1; v85 = wcslen(v44); if ( v45 < v85 ) { v84 = v44; v46 = v82; do { v48 = (__int16 *)v46[2]; if ( (unsigned int)v48 >= v46[3] ) v49 = (*(int (__fastcall **)(int *))(*v46 + 36))(v46); else v49 = *v48; v50 = v49 == -1; if ( v49 == -1 ) v46 = 0; v51 = v80 && v79 != 0; if ( v51 ) { v74 = (__int16 *)v79[2]; if ( (unsigned int)v74 >= v79[3] ) { LOBYTE(v82) = v80 && v79 != 0; v75 = (*(int (__fastcall **)(_DWORD *))(*v79 + 36))(v79); v51 = (char)v82; } else { v75 = *v74; } v76 = v75 == -1; v77 = 0; if ( !v76 ) v77 = v79; v79 = v77; if ( !v76 ) v51 = 0; } else { v51 = v80; } if ( v51 == v50 ) goto LABEL_108; v52 = v84[v45]; v53 = -1; if ( v46 ) { v54 = (_WORD *)v46[2]; v53 = (unsigned int)v54 >= v46[3] ? (*(int (__fastcall **)(int *))(*v46 + 36))(v46) : *v54; if ( v53 == -1 ) v46 = 0; } if ( v52 != v53 ) { LABEL_108: v82 = v46; LOWORD(v84) = -1; goto LABEL_6; } v47 = v46[2]; if ( v47 >= v46[3] ) (*(void (__fastcall **)(int *))(*v46 + 40))(v46); else v46[2] = v47 + 2; ++v45; } while ( v45 < v85 ); v82 = v46; } if ( v85 == v45 ) { *a5 = v83; LOWORD(v84) = -1; goto LABEL_7; } LABEL_73: LOWORD(v84) = -1; } LABEL_6: *a9 |= 4u; LABEL_7: HIWORD(v15) = HIWORD(v78); LOWORD(v15) = (_WORD)v84; v78 = v15; return (int)v82; } //----- (004BAE30) -------------------------------------------------------- _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] unsigned 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 = 0; v12 = 0; if ( v20 == -1 ) v13 = v14; if ( v20 != -1 ) v12 = 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; } // 4BAFFA: variable 'v10' is possibly undefined //----- (004BB0C0) -------------------------------------------------------- __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 _DWORD *v12; // ecx __int16 v13; // ax char v14; // dl char v15; // di char v16; // al char v17; // di size_t v18; // edi size_t v19; // ebp char v20; // al unsigned __int8 v21; // al __int16 v22; // ax wchar_t v23; // bx _WORD *v25; // eax __int16 v26; // ax __int16 *v27; // eax __int16 v28; // cx __int16 *v29; // eax __int16 v30; // dx int *v31; // edx _DWORD *v32; // eax __int16 v33; // dx _DWORD *v34; // eax __int16 v35; // dx __int16 v36; // dx unsigned __int16 v37; // ax __int16 v38; // dx __int16 v39; // di __int16 v40; // di unsigned __int16 v41; // dx __int16 v42; // dx __int16 v43; // dx __int16 v44; // dx __int16 v45; // dx __int16 v46; // dx __int16 v47; // dx __int16 v48; // dx _DWORD *v49; // eax __int16 v50; // dx _DWORD *v51; // eax __int16 v52; // dx __int16 v53; // dx unsigned __int16 v54; // ax __int16 v55; // dx __int16 v56; // dx unsigned __int16 v57; // ax unsigned __int16 v58; // ax __int16 v59; // dx __int16 v60; // dx __int16 v61; // dx __int16 v62; // ax wchar_t *String; // [esp+20h] [ebp-15Ch] size_t v64; // [esp+5Ch] [ebp-120h] wchar_t *v65; // [esp+60h] [ebp-11Ch] char v66; // [esp+60h] [ebp-11Ch] _DWORD *v67; // [esp+6Ch] [ebp-110h] int v68; // [esp+128h] [ebp-54h] BYREF int *v69; // [esp+12Ch] [ebp-50h] BYREF wchar_t v70[2]; // [esp+130h] [ebp-4Ch] BYREF int v71; // [esp+134h] [ebp-48h] int v72; // [esp+138h] [ebp-44h] int v73; // [esp+13Ch] [ebp-40h] int v74; // [esp+140h] [ebp-3Ch] int v75; // [esp+144h] [ebp-38h] int v76; // [esp+148h] [ebp-34h] int v77; // [esp+14Ch] [ebp-30h] int v78; // [esp+150h] [ebp-2Ch] int v79; // [esp+154h] [ebp-28h] int v80; // [esp+158h] [ebp-24h] int v81; // [esp+15Ch] [ebp-20h] v7 = (wchar_t *)(a4 + 108); v8 = std::use_facet>(a4 + 108); String = v7; v9 = 0; v67 = v8; v10 = std::use_facet>((int)String); v11 = wcslen(a7); v12 = (_DWORD *)a1; v68 = 0; v64 = v11; v13 = WORD2(a1); while ( 1 ) { v14 = v13 == -1; v15 = v14 & (v12 != 0); if ( v15 ) { v25 = (_WORD *)v12[2]; v26 = (unsigned int)v25 >= v12[3] ? (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12) : *v25; v14 = 0; if ( v26 == -1 ) { LODWORD(a1) = 0; v14 = v15; } } v16 = (_WORD)a3 == 0xFFFF; v17 = v16 & (a2 != 0); if ( v17 ) { v27 = (__int16 *)a2[2]; if ( (unsigned int)v27 >= a2[3] ) { v66 = v14; v62 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); v14 = v66; v28 = v62; } else { v28 = *v27; } v16 = 0; if ( v28 == -1 ) { a2 = 0; v16 = v17; } } if ( v14 == v16 || v9 >= v64 ) break; if ( v68 ) goto LABEL_21; v18 = v9; v19 = v9 + 1; v65 = &a7[v9]; if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, *v65, 0) == 37 ) { v20 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, a7[v18 + 1], 0); v69 = 0; if ( v20 == 69 || v20 == 79 ) { v19 = v9 + 2; v21 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, a7[v18 + 2], 0) - 65; if ( v21 > 0x38u ) { LABEL_17: v68 |= 4u; LABEL_18: v13 = WORD2(a1); goto LABEL_19; } } else { v21 = v20 - 65; } switch ( v21 ) { case 0u: v49 = (_DWORD *)v67[2]; *(_DWORD *)v70 = v49[11]; v71 = v49[12]; v72 = v49[13]; v73 = v49[14]; v74 = v49[15]; v75 = v49[16]; v76 = v49[17]; LODWORD(a1) = std::time_get>::_M_extract_name( (int *)a1, SHIDWORD(a1), a2, a3, &v69, (int)v70, 7, a4, &v68); v13 = v50; WORD2(a1) = v50; if ( !v68 ) goto LABEL_45; break; case 1u: v51 = (_DWORD *)v67[2]; *(_DWORD *)v70 = v51[25]; v71 = v51[26]; v72 = v51[27]; v73 = v51[28]; v74 = v51[29]; v75 = v51[30]; v76 = v51[31]; v77 = v51[32]; v78 = v51[33]; v79 = v51[34]; v80 = v51[35]; v81 = v51[36]; LODWORD(a1) = std::time_get>::_M_extract_name( (int *)a1, SHIDWORD(a1), a2, a3, &v69, (int)v70, 12, a4, &v68); v13 = v52; WORD2(a1) = v52; if ( !v68 ) goto LABEL_43; break; case 2u: case 0x18u: case 0x38u: LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, WORD2(a1), a2, a3, (int *)&v69, 0, 9999, 4u, a4, &v68); v13 = v30; WORD2(a1) = v30; if ( !v68 ) { v31 = v69 - 475; if ( (int)v69 < 0 ) v31 = v69 + 25; a6[5] = v31; } break; case 3u: (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v10 + 44))( v10, "%m/%d/%y", "%H:%M", v70); LODWORD(a1) = std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, a3, a4, (int)&v68, (int)a6, v70); v13 = v53; WORD2(a1) = v53; break; case 7u: LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, WORD2(a1), a2, a3, (int *)&v69, 0, 23, 2u, a4, &v68); v13 = v45; WORD2(a1) = v45; if ( !v68 ) goto LABEL_57; break; case 8u: LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, WORD2(a1), a2, a3, (int *)&v69, 1, 12, 2u, a4, &v68); v13 = v46; WORD2(a1) = v46; if ( !v68 ) LABEL_57: a6[2] = v69; break; case 0xCu: LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, WORD2(a1), a2, a3, (int *)&v69, 0, 59, 2u, a4, &v68); v13 = v47; WORD2(a1) = v47; if ( !v68 ) a6[1] = v69; break; case 0x11u: (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v10 + 44))( v10, "%H:%M", "%H:%M:%S", v70); LODWORD(a1) = std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, a3, a4, (int)&v68, (int)a6, v70); v13 = v48; WORD2(a1) = v48; break; case 0x12u: LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, WORD2(a1), a2, a3, (int *)&v69, 0, 60, 2u, a4, &v68); v13 = v60; WORD2(a1) = v60; if ( !v68 ) *a6 = v69; break; case 0x13u: (*(void (__thiscall **)(void *, const char *, void *, wchar_t *))(*(_DWORD *)v10 + 44))( v10, "%H:%M:%S", &unk_558106, v70); LODWORD(a1) = std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, a3, a4, (int)&v68, (int)a6, v70); v13 = v61; WORD2(a1) = v61; break; case 0x17u: LODWORD(a1) = std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, a3, a4, (int)&v68, (int)a6, *(wchar_t **)(v67[2] + 16)); v13 = v36; WORD2(a1) = v36; break; case 0x19u: v37 = std::istreambuf_iterator::_M_get((int)&a1); if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 1, v37) ) goto LABEL_17; LODWORD(a1) = std::time_get>::_M_extract_name( (int *)a1, SHIDWORD(a1), a2, a3, (int **)v70, (int)std::__timepunct_cache::_S_timezones, 14, a4, &v68); WORD2(a1) = v38; if ( !std::istreambuf_iterator::equal(&a1, (int)&a2) && !(*(_DWORD *)v70 | v68) ) { v39 = std::istreambuf_iterator::_M_get((int)&a1); if ( v39 == (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 45) || (v40 = std::istreambuf_iterator::_M_get((int)&a1), v40 == (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 43)) ) { LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, WORD2(a1), a2, a3, (int *)v70, 0, 23, 2u, a4, &v68); WORD2(a1) = v41; LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, v41, a2, a3, (int *)v70, 0, 59, 2u, a4, &v68); WORD2(a1) = v42; } } goto LABEL_18; case 0x20u: v34 = (_DWORD *)v67[2]; *(_DWORD *)v70 = v34[18]; v71 = v34[19]; v72 = v34[20]; v73 = v34[21]; v74 = v34[22]; v75 = v34[23]; v76 = v34[24]; LODWORD(a1) = std::time_get>::_M_extract_name( (int *)a1, SHIDWORD(a1), a2, a3, &v69, (int)v70, 7, a4, &v68); v13 = v35; WORD2(a1) = v35; if ( !v68 ) LABEL_45: a6[6] = v69; break; case 0x21u: case 0x27u: v32 = (_DWORD *)v67[2]; *(_DWORD *)v70 = v32[37]; v71 = v32[38]; v72 = v32[39]; v73 = v32[40]; v74 = v32[41]; v75 = v32[42]; v76 = v32[43]; v77 = v32[44]; v78 = v32[45]; v79 = v32[46]; v80 = v32[47]; v81 = v32[48]; LODWORD(a1) = std::time_get>::_M_extract_name( (int *)a1, SHIDWORD(a1), a2, a3, &v69, (int)v70, 12, a4, &v68); v13 = v33; WORD2(a1) = v33; if ( !v68 ) LABEL_43: a6[4] = v69; break; case 0x22u: LODWORD(a1) = std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, a3, a4, (int)&v68, (int)a6, *(wchar_t **)(v67[2] + 24)); v13 = v43; WORD2(a1) = v43; break; case 0x23u: LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, WORD2(a1), a2, a3, (int *)&v69, 1, 31, 2u, a4, &v68); v13 = v44; WORD2(a1) = v44; if ( !v68 ) goto LABEL_55; break; case 0x24u: v54 = std::istreambuf_iterator::_M_get((int)&a1); if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 32, v54) ) { std::wstreambuf::sbumpc((_DWORD *)a1); WORD2(a1) = -1; LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, 0xFFFFu, a2, a3, (int *)&v69, 1, 9, 1u, a4, &v68); } else { LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, WORD2(a1), a2, a3, (int *)&v69, 10, 31, 2u, a4, &v68); } WORD2(a1) = v55; v13 = v55; if ( !v68 ) LABEL_55: a6[3] = v69; break; case 0x2Cu: LODWORD(a1) = std::time_get>::_M_extract_num( (_DWORD *)a1, WORD2(a1), a2, a3, (int *)&v69, 1, 12, 2u, a4, &v68); v13 = v56; WORD2(a1) = v56; if ( !v68 ) a6[4] = (char *)v69 - 1; break; case 0x2Du: v57 = std::istreambuf_iterator::_M_get((int)&a1); if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, v57, 0) != 10 ) goto LABEL_17; goto LABEL_75; case 0x33u: v58 = std::istreambuf_iterator::_M_get((int)&a1); if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, v58, 0) != 9 ) goto LABEL_17; LABEL_75: std::wstreambuf::sbumpc((_DWORD *)a1); v13 = -1; WORD2(a1) = -1; break; case 0x37u: LODWORD(a1) = std::time_get>::_M_extract_via_format( a1, SHIDWORD(a1), (int)a2, a3, a4, (int)&v68, (int)a6, *(wchar_t **)(v67[2] + 8)); v13 = v59; WORD2(a1) = v59; break; default: goto LABEL_17; } LABEL_19: v12 = (_DWORD *)a1; v9 = v19 + 1; } else { v12 = (_DWORD *)a1; v22 = WORD2(a1); v23 = *v65; if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v29 = *(__int16 **)(a1 + 8); if ( (unsigned int)v29 >= *(_DWORD *)(a1 + 12) ) v22 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); else v22 = *v29; if ( v22 == -1 ) { LODWORD(a1) = 0; v12 = 0; } else { v12 = (_DWORD *)a1; } } if ( v23 == v22 ) { std::wstreambuf::sbumpc(v12); v9 = v19; v12 = (_DWORD *)a1; WORD2(a1) = -1; v13 = -1; } else { v68 |= 4u; v13 = WORD2(a1); v9 = v19; } } } if ( v9 != v64 || v68 ) LABEL_21: *a5 |= 4u; return a1; } // 4BB406: variable 'v30' is possibly undefined // 4BB56A: variable 'v33' is possibly undefined // 4BB66C: variable 'v35' is possibly undefined // 4BB70F: variable 'v36' is possibly undefined // 4BB7DC: variable 'v38' is possibly undefined // 4BB8F6: variable 'v41' is possibly undefined // 4BB96C: variable 'v42' is possibly undefined // 4BB9FB: variable 'v43' is possibly undefined // 4BBA9C: variable 'v44' is possibly undefined // 4BBB56: variable 'v45' is possibly undefined // 4BBC10: variable 'v46' is possibly undefined // 4BBCB9: variable 'v47' is possibly undefined // 4BBD7C: variable 'v48' is possibly undefined // 4BBE65: variable 'v50' is possibly undefined // 4BBF97: variable 'v52' is possibly undefined // 4BC049: variable 'v53' is possibly undefined // 4BC117: variable 'v55' is possibly undefined // 4BC1C7: variable 'v56' is possibly undefined // 4BC2EA: variable 'v59' is possibly undefined // 4BC388: variable 'v60' is possibly undefined // 4BC44A: variable 'v61' is possibly undefined // 53F6A0: using guessed type wchar_t *std::__timepunct_cache::_S_timezones[3]; //----- (004BC560) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( _DWORD *a1, int a2, _DWORD *a3, __int16 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 char v13; // di char v14; // bl unsigned int v15; // edi int *v16; // esi char v17; // dl char v18; // bl unsigned int v19; // edx unsigned int *v20; // ecx int v21; // ebx unsigned int v22; // eax __int16 *v23; // eax __int16 v24; // ax bool v25; // zf _DWORD *v26; // eax __int16 *v28; // eax __int16 v29; // ax bool v30; // zf _DWORD *v31; // eax __int16 *v32; // eax _DWORD *v33; // eax unsigned int v34; // eax __int16 v35; // si int v36; // edx int v37; // ebx int v38; // edi __int16 v39; // ax int v40; // ecx unsigned int v41; // eax int v42; // eax void *v43; // esp void *v44; // esp int v45; // ebx __int16 *v46; // eax __int16 v47; // ax bool v48; // zf _DWORD *v49; // eax _WORD *v50; // eax __int16 v51; // ax __int16 *v52; // eax _DWORD *v53; // eax int v54; // eax _DWORD v55[2]; // [esp+10h] [ebp-48h] BYREF _DWORD *v56; // [esp+18h] [ebp-40h] char v57; // [esp+1Fh] [ebp-39h] _DWORD *v58; // [esp+20h] [ebp-38h] unsigned int v59; // [esp+24h] [ebp-34h] __int16 v60; // [esp+28h] [ebp-30h] __int16 v61; // [esp+2Ah] [ebp-2Eh] int v62; // [esp+2Ch] [ebp-2Ch] int *v63; // [esp+30h] [ebp-28h] int *v64; // [esp+34h] [ebp-24h] unsigned int v65; // [esp+38h] [ebp-20h] unsigned int v66; // [esp+3Ch] [ebp-1Ch] v58 = a1; v55[1] = a2; v60 = a2; v56 = a3; v63 = (int *)std::use_facet>(a8 + 108); v9 = 16 * ((8 * a7 + 27) >> 4); v10 = alloca(v9); v11 = alloca(v9); v12 = (_WORD)a2 == 0xFFFF; v64 = v55; v13 = v12 & (a1 != 0); if ( v13 ) { v50 = (_WORD *)v58[2]; v51 = (unsigned int)v50 >= v58[3] ? (*(int (__fastcall **)(_DWORD *))(*v58 + 36))(v58) : *v50; v12 = 0; if ( v51 == -1 ) { v12 = v13; v58 = 0; v13 = 0; } } v57 = a4 == -1; v14 = v57 & (a3 != 0); if ( v14 ) { v46 = (__int16 *)a3[2]; if ( (unsigned int)v46 >= a3[3] ) { v54 = *a3; LOBYTE(v66) = v12; v47 = (*(int (__fastcall **)(_DWORD *))(v54 + 36))(a3); v12 = v66; } else { v47 = *v46; } v48 = v47 == -1; v49 = 0; if ( !v48 ) v49 = a3; v56 = v49; if ( !v48 ) v14 = 0; } else { v14 = v57; } if ( v12 == v14 ) { v65 = 0; v15 = 0; v16 = 0; goto LABEL_6; } v35 = v60; if ( v13 ) { v52 = (__int16 *)v58[2]; if ( (unsigned int)v52 >= v58[3] ) v35 = (*(int (__fastcall **)(_DWORD *))(*v58 + 36))(v58); else v35 = *v52; v53 = 0; if ( v35 != -1 ) v53 = v58; v58 = v53; } v15 = 2 * a7; if ( !(2 * a7) ) { v65 = 0; v16 = 0; goto LABEL_6; } v66 = 2 * a7; v36 = a6; v37 = 0; v65 = 0; v38 = (int)v63; do { while ( 1 ) { v40 = **(unsigned __int16 **)(v36 + 4 * v37); if ( (_WORD)v40 == v35 ) break; a6 = v36; v39 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v38 + 24))(v38, v40); v36 = a6; if ( v39 == v35 ) break; if ( ++v37 == v66 ) goto LABEL_62; } v41 = v65; v64[v65] = v37++; v65 = v41 + 1; } while ( v37 != v66 ); LABEL_62: v15 = 0; v16 = 0; if ( v65 ) { std::wstreambuf::sbumpc(v58); v42 = 16 * ((4 * v65 + 27) >> 4); v43 = alloca(v42); v44 = alloca(v42); v63 = v55; v66 = (unsigned int)v55; v45 = (int)v64; do { *(_DWORD *)(v66 + 4 * v15) = wcslen(*(const wchar_t **)(a6 + 4 * *(_DWORD *)(v45 + 4 * v15))); ++v15; } while ( v65 != v15 ); v65 = 1; v16 = v63; v60 = -1; } LABEL_6: while ( 2 ) { LOBYTE(v66) = v60 == -1; v17 = v66 & (v58 != 0); if ( v17 ) { v28 = (__int16 *)v58[2]; if ( (unsigned int)v28 >= v58[3] ) { LOBYTE(v63) = v66 & (v58 != 0); v29 = (*(int (__fastcall **)(_DWORD *))(*v58 + 36))(v58); v17 = (char)v63; } else { v29 = *v28; } v30 = v29 == -1; v31 = 0; if ( !v30 ) v31 = v58; v58 = v31; if ( !v30 ) v17 = 0; } else { v17 = v66; } v18 = v57 & (v56 != 0); if ( v18 ) { v23 = (__int16 *)v56[2]; if ( (unsigned int)v23 >= v56[3] ) { LOBYTE(v63) = v17; v24 = (*(int (__fastcall **)(_DWORD *))(*v56 + 36))(v56); v17 = (char)v63; } else { v24 = *v23; } v25 = v24 == -1; v26 = 0; if ( !v25 ) v26 = v56; v56 = v26; if ( !v25 ) v18 = 0; if ( v17 == v18 ) break; } else if ( v17 == v57 ) { break; } if ( v58 && (_BYTE)v66 ) { v32 = (__int16 *)v58[2]; if ( (unsigned int)v32 >= v58[3] ) v61 = (*(int (__fastcall **)(_DWORD *))(*v58 + 36))(v58); else v61 = *v32; v33 = 0; if ( v61 != -1 ) v33 = v58; v58 = v33; } else { v61 = v60; } if ( !v15 ) { LABEL_34: *a9 |= 4u; return v58; } v66 = (unsigned int)v16; v19 = 0; v62 = 0; v59 = 2 * v65; do { while ( 1 ) { v20 = (unsigned int *)(v66 + 4 * v19); if ( *v20 > v65 ) break; ++v62; ++v19; LABEL_16: if ( v19 >= v15 ) goto LABEL_20; } v21 = v64[v19]; v63 = &v64[v19]; if ( *(_WORD *)(*(_DWORD *)(a6 + 4 * v21) + v59) == v61 ) { ++v19; goto LABEL_16; } *v63 = v64[--v15]; *v20 = *(_DWORD *)(v66 + 4 * v15); } while ( v19 < v15 ); LABEL_20: v16 = (int *)v66; if ( v15 != v62 ) { v22 = v58[2]; if ( v22 >= v58[3] ) (*(void (__fastcall **)(_DWORD *))(*v58 + 40))(v58); else v58[2] = v22 + 2; ++v65; v60 = -1; continue; } break; } if ( v15 != 1 ) { if ( v15 == 2 && (*v16 == v65 || v16[1] == v65) ) goto LABEL_52; goto LABEL_34; } if ( *v16 != v65 ) goto LABEL_34; LABEL_52: v34 = *v64; if ( *v64 >= a7 ) v34 = *v64 - a7; *a5 = v34; return v58; } //----- (004BCA00) -------------------------------------------------------- _DWORD *__thiscall std::time_get>::get( void *this, _DWORD *a2, int a3, _DWORD *a4, int a5, _DWORD *a6, _DWORD *a7, _DWORD *a8, unsigned __int16 *a9, unsigned __int16 *a10) { unsigned __int16 *v10; // ebp void *v12; // edi int v13; // edx __int16 v14; // bx int v15; // edx __int16 v16; // bx unsigned int v17; // eax char v18; // bl char v19; // dl char v20; // al __int16 v21; // bx void *v22; // eax int v23; // edx _DWORD *v24; // ebx __int64 v25; // rax char v26; // bp char v28; // bl char v29; // dl int v30; // edx unsigned int v31; // eax __int16 *v32; // eax __int16 v33; // ax __int16 *v34; // eax __int16 v35; // ax bool v36; // zf _DWORD *v37; // eax unsigned __int16 *v38; // eax unsigned __int16 *v39; // eax void *v40; // eax __int16 *v41; // eax __int16 v42; // ax bool v43; // zf _DWORD *v44; // eax __int16 *v45; // eax __int16 v46; // ax unsigned __int16 *v47; // eax unsigned __int16 *v48; // eax __int64 v49; // [esp+30h] [ebp-7Ch] int v50; // [esp+30h] [ebp-7Ch] __int16 v51; // [esp+56h] [ebp-56h] unsigned __int16 v52; // [esp+5Ah] [ebp-52h] unsigned __int16 *v54; // [esp+60h] [ebp-4Ch] char v55; // [esp+60h] [ebp-4Ch] unsigned __int16 *v56; // [esp+68h] [ebp-44h] char v57; // [esp+70h] [ebp-3Ch] __int16 v58; // [esp+76h] [ebp-36h] wchar_t v60; // [esp+88h] [ebp-24h] BYREF __int16 v61; // [esp+8Ah] [ebp-22h] __int16 v62; // [esp+8Ch] [ebp-20h] __int16 v63; // [esp+8Eh] [ebp-1Eh] v10 = a9; v52 = a3; HIWORD(v56) = a5; v12 = std::use_facet>((int)(a6 + 27)); *a7 = 0; if ( a9 != a10 ) { BYTE1(v56) = (_WORD)a5 == 0xFFFF; while ( 1 ) { v18 = v52 == 0xFFFF && a2 != 0; if ( v18 ) { v45 = (__int16 *)a2[2]; if ( (unsigned int)v45 >= a2[3] ) v46 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); else v46 = *v45; if ( v46 == -1 ) a2 = 0; if ( v46 != -1 ) v18 = 0; } else { v18 = v52 == 0xFFFF; } v19 = BYTE1(v56) & (a4 != 0); if ( v19 ) { v41 = (__int16 *)a4[2]; if ( (unsigned int)v41 >= a4[3] ) { v42 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v19 = BYTE1(v56) & (a4 != 0); } else { v42 = *v41; } v43 = v42 == -1; v44 = 0; if ( !v43 ) v44 = a4; a4 = v44; if ( !v43 ) v19 = 0; if ( v19 == v18 ) { LABEL_81: *a7 = 6; return a2; } } else if ( BYTE1(v56) == v18 ) { goto LABEL_81; } if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, *v10, 0) == 37 ) { v54 = v10 + 1; if ( a10 == v10 + 1 ) goto LABEL_114; v20 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, v10[1], 0); v21 = v20; if ( v20 == 69 || v20 == 79 ) { if ( a10 == v10 + 2 ) goto LABEL_114; (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 48))(v12, v10[2]); HIWORD(v39) = (unsigned int)(v10 + 2) >> 16; LOWORD(v39) = v51; v54 = v39; HIWORD(v39) = HIWORD(v56); LOWORD(v39) = HIWORD(a3); v56 = v39; HIWORD(v10) = HIWORD(v39); v40 = std::use_facet>((int)this); *a6 = 0; v60 = (*(int (__thiscall **)(void *, int, int))(*(_DWORD *)v40 + 40))(v40, 37, v50); HIWORD(v23) = v58; if ( (_BYTE)v21 ) { v61 = v21; v62 = (char)v51; v63 = 0; LABEL_27: LOWORD(v10) = HIWORD(v56); LODWORD(v49) = a2; LOWORD(v23) = v52; HIDWORD(v49) = v23; v25 = std::time_get>::_M_extract_via_format( v49, a4, (int)v10, (int)a6, a7, a8, &v60); v24 = (_DWORD *)v25; a2 = (_DWORD *)v25; v52 = 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) = 0; a2 = 0; if ( (_WORD)v25 == 0xFFFF ) BYTE4(v25) = v26; if ( (_WORD)v25 != 0xFFFF ) a2 = v24; } if ( a4 && BYTE1(v56) ) { LODWORD(v25) = a4[2]; if ( (unsigned int)v25 >= a4[3] ) { v57 = BYTE4(v25); LOWORD(v25) = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); BYTE4(v25) = v57; } else { LOWORD(v25) = *(_WORD *)v25; } LOBYTE(v25) = (_WORD)v25 == 0xFFFF; } else { LOBYTE(v25) = BYTE1(v56); } if ( (_BYTE)v25 == BYTE4(v25) ) *a7 |= 2u; v10 = v54 + 1; if ( a10 == v54 + 1 ) return a2; goto LABEL_16; } v21 = (char)v51; } else { HIWORD(v10) = HIWORD(a5); v22 = std::use_facet>((int)(a6 + 27)); *a7 = 0; v60 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v22 + 40))(v22, 37); HIWORD(v23) = HIWORD(a3); } v61 = v21; v62 = 0; goto LABEL_27; } if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, *v10) ) break; if ( a2 && v52 == 0xFFFF ) { v47 = (unsigned __int16 *)a2[2]; if ( (unsigned int)v47 >= a2[3] ) v13 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a2 + 36))(a2); else v13 = *v47; if ( (_WORD)v13 == 0xFFFF ) a2 = 0; } else { v13 = v52; } v14 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v12 + 32))(v12, v13); if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 32))(v12, *v10) != v14 ) { if ( a2 && v52 == 0xFFFF ) { v48 = (unsigned __int16 *)a2[2]; if ( (unsigned int)v48 >= a2[3] ) v15 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a2 + 36))(a2); else v15 = *v48; if ( (_WORD)v15 == 0xFFFF ) a2 = 0; } else { v15 = v52; } v16 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v12 + 24))(v12, v15); if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 24))(v12, *v10) != v16 ) { LABEL_114: *a7 = 4; return a2; } } v17 = a2[2]; if ( v17 >= a2[3] ) (*(void (__fastcall **)(_DWORD *))(*a2 + 40))(a2); else a2[2] = v17 + 2; ++v10; v52 = -1; LABEL_15: if ( a10 == v10 ) return a2; LABEL_16: if ( *a7 ) return a2; } for ( ++v10; a10 != v10; ++v10 ) { if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, *v10) ) break; } while ( 1 ) { v28 = v52 == 0xFFFF && a2 != 0; if ( v28 ) { v32 = (__int16 *)a2[2]; if ( (unsigned int)v32 >= a2[3] ) v33 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); else v33 = *v32; if ( v33 == -1 ) a2 = 0; if ( v33 != -1 ) v28 = 0; v29 = BYTE1(v56) & (a4 != 0); if ( !v29 ) { LABEL_41: if ( BYTE1(v56) == v28 ) goto LABEL_15; goto LABEL_42; } } else { v28 = v52 == 0xFFFF; v29 = BYTE1(v56) & (a4 != 0); if ( !v29 ) goto LABEL_41; } v34 = (__int16 *)a4[2]; if ( (unsigned int)v34 >= a4[3] ) { v55 = v29; v35 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); v29 = v55; } else { v35 = *v34; } v36 = v35 == -1; v37 = 0; if ( !v36 ) v37 = a4; a4 = v37; if ( !v36 ) v29 = 0; if ( v29 == v28 ) goto LABEL_15; LABEL_42: if ( a2 && v52 == 0xFFFF ) { v38 = (unsigned __int16 *)a2[2]; if ( (unsigned int)v38 >= a2[3] ) v30 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a2 + 36))(a2); else v30 = *v38; if ( (_WORD)v30 == 0xFFFF ) a2 = 0; } else { v30 = v52; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, int))(*(_DWORD *)v12 + 8))(v12, 32, v30) ) goto LABEL_15; v31 = a2[2]; if ( v31 >= a2[3] ) (*(void (__fastcall **)(_DWORD *))(*a2 + 40))(a2); else a2[2] = v31 + 2; v52 = -1; } } return a2; } // 4BCEE5: variable 'v51' is possibly undefined // 4BCF27: variable 'v50' is possibly undefined // 4BCF34: variable 'v58' is possibly undefined //----- (004BD150) -------------------------------------------------------- _DWORD *__stdcall std::time_get>::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 _BOOL2 v12; // bx bool v13; // si bool 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) = 0; v11 = 0; if ( v19 == -1 ) LOBYTE(v12) = v13; if ( v19 != -1 ) v11 = 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 ( v12 == v14 ) *a5 |= 2u; return v11; } //----- (004BD310) -------------------------------------------------------- _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 _BOOL2 v12; // bx bool v13; // si bool 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) = 0; v11 = 0; if ( v19 == -1 ) LOBYTE(v12) = v13; if ( v19 != -1 ) v11 = 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 ( v12 == v14 ) *a5 |= 2u; return v11; } //----- (004BD4D0) -------------------------------------------------------- int __fastcall std::time_get>::get_date(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); } //----- (004BD4E0) -------------------------------------------------------- int __fastcall std::time_get>::get_time(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); } //----- (004BD4F0) -------------------------------------------------------- int __fastcall std::time_get>::get_year(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); } //----- (004BD500) -------------------------------------------------------- _DWORD *__thiscall std::time_put>::put( void *this, _DWORD *a2, int a3, int a4, char a5, int a6, unsigned __int8 *a7, unsigned __int8 *a8) { int v8; // ebp unsigned __int8 *v9; // ebx _BYTE *v10; // eax _BYTE *v11; // esi int v12; // edx unsigned __int8 *v13; // edi unsigned __int8 v14; // al unsigned __int8 v15; // cl int (__stdcall *v16)(unsigned __int8, int); // eax int v17; // edx signed __int8 v18; // al unsigned __int8 v19; // cl int (__stdcall *v20)(unsigned __int8, int); // eax int v21; // ecx int v22; // ebx int v23; // edx int v24; // ebx __int64 v25; // rax int v27; // edx _BYTE *v28; // eax int v29; // ecx char v30; // dl int (__stdcall *v31)(unsigned __int8, int); // eax char v32; // al int v33; // [esp+18h] [ebp-44h] char v34; // [esp+27h] [ebp-35h] int v37; // [esp+34h] [ebp-28h] int v38; // [esp+34h] [ebp-28h] int v39; // [esp+34h] [ebp-28h] v8 = a3; v9 = a7; v34 = a3; v10 = std::use_facet>(a4 + 108); if ( a7 != a8 ) { v11 = v10; while ( 1 ) { v12 = *v9; v13 = v9 + 1; v14 = v11[v12 + 285]; v15 = *v9; if ( !v14 ) { v16 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v11 + 32); if ( v16 != std::ctype::do_narrow ) { v38 = *v9; v15 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v16)(v11, (char)v12, 0); v12 = v38; } if ( !v15 ) goto LABEL_3; v11[v12 + 285] = v15; v14 = v15; } if ( v14 == 37 ) { if ( a8 == v13 ) return a2; v17 = v9[1]; v18 = v11[v17 + 285]; v19 = v9[1]; if ( !v18 ) { v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v11 + 32); if ( v20 != std::ctype::do_narrow ) { v39 = v9[1]; v19 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v11, (char)v17, 0); v17 = v39; } if ( !v19 ) { v21 = 0; v22 = 0; goto LABEL_21; } v11[v17 + 285] = v19; v18 = v19; } if ( v18 == 69 || v18 == 79 ) { v13 = v9 + 2; if ( a8 == v9 + 2 ) return a2; v29 = v9[2]; v22 = v18; v37 = v29; v30 = v29; v21 = (char)v11[v29 + 285]; if ( !(_BYTE)v21 ) { v21 = v30; v31 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v11 + 32); if ( v31 != std::ctype::do_narrow ) { v32 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v31)(v11, v30, 0); v21 = v32; v30 = v32; } if ( v30 ) v11[v37 + 285] = v30; } } else { v21 = v18; v22 = 0; } LABEL_21: v23 = v8; LOBYTE(v23) = v34; v33 = v22; v24 = v23; v25 = ((__int64 (__thiscall *)(void *, _DWORD *, int, int, _DWORD, int, int, int))*(_DWORD *)(*(_DWORD *)this + 8))( this, a2, v23, a4, a5, a6, v21, v33); LOBYTE(v24) = BYTE4(v25); v8 = v24; v9 = v13 + 1; a2 = (_DWORD *)v25; v34 = BYTE4(v25); if ( a8 == v13 + 1 ) return a2; } else { LABEL_3: if ( v34 ) { ++v9; } else { v27 = *v9; v28 = (_BYTE *)a2[5]; if ( (unsigned int)v28 >= a2[6] ) { ++v9; v34 = (*(int (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v27) == -1; } else { *v28 = v27; ++a2[5]; ++v9; } } if ( a8 == v9 ) return a2; } } } return a2; } //----- (004BD790) -------------------------------------------------------- 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); } //----- (004BD7B0) -------------------------------------------------------- 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 size_t v11; // eax 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 = strlen(Buffer); if ( !a2 ) (*(int (__thiscall **)(int, char *, size_t))(*(_DWORD *)a1 + 48))(a1, Buffer, v11); return a1; } //----- (004BD900) -------------------------------------------------------- _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; // edi char v13; // al int v14; // edx int v15; // eax int v16; // ecx int v17; // ebp __int64 v18; // rax int v19; // ecx int v21; // edx _WORD *v22; // eax 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 ) { v12 = v9 + 1; if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, *v9, 0) != 37 ) break; if ( a8 == v12 ) return a2; v13 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v9[1], 0); v14 = v13; if ( v13 == 69 || (v15 = 0, (_BYTE)v14 == 79) ) { v27 = v14; v12 = v9 + 2; if ( a8 == v9 + 2 ) return a2; v23 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v9[2], 0); v15 = v27; v14 = v23; } v16 = v8; LOBYTE(v16) = v26; v17 = v16; v18 = ((__int64 (__thiscall *)(void *, _DWORD *, int, int, _DWORD, int, int, int))*(_DWORD *)(*(_DWORD *)this + 8))( this, a2, v16, a4, a5, a6, v14, v15); v19 = v17; v9 = v12 + 1; LOBYTE(v19) = BYTE4(v18); v8 = v19; a2 = (_DWORD *)v18; v26 = BYTE4(v18); if ( a8 == v12 + 1 ) return a2; } if ( v26 ) { ++v9; } else { v21 = *v9; v22 = (_WORD *)a2[5]; if ( (unsigned int)v22 >= a2[6] ) { LOWORD(v21) = (*(int (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v21); } else { *v22 = v21; a2[5] = v22 + 1; } ++v9; v26 = (_WORD)v21 == 0xFFFF; } } while ( a8 != v9 ); } return a2; } //----- (004BDAC0) -------------------------------------------------------- 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); } //----- (004BDAE0) -------------------------------------------------------- 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; // eax 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; } //----- (004BDC00) -------------------------------------------------------- const char *std::bad_alloc::what() { return "std::bad_alloc"; } //----- (004BDC10) -------------------------------------------------------- int __fastcall std::ios::exceptions(int a1) { return *(_DWORD *)(a1 + 16); } //----- (004BDC20) -------------------------------------------------------- int __fastcall std::ios::bad(int a1) { return *(_DWORD *)(a1 + 20) & 1; } //----- (004BDC30) -------------------------------------------------------- int __fastcall std::ios::eof(int a1) { return (*(_DWORD *)(a1 + 20) >> 1) & 1; } //----- (004BDC40) -------------------------------------------------------- int __fastcall std::ios::tie(int a1) { return *(_DWORD *)(a1 + 112); } //----- (004BDC50) -------------------------------------------------------- bool __fastcall std::ios::fail(int a1) { return (*(_BYTE *)(a1 + 20) & 5) != 0; } //----- (004BDC60) -------------------------------------------------------- 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; } //----- (004BDCD0) -------------------------------------------------------- bool __fastcall std::ios::good(int a1) { return *(_DWORD *)(a1 + 20) == 0; } //----- (004BDCE0) -------------------------------------------------------- int __fastcall std::ios::rdbuf(int a1) { return *(_DWORD *)(a1 + 120); } //----- (004BDCF0) -------------------------------------------------------- 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; } //----- (004BDD50) -------------------------------------------------------- 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); // eax 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; } //----- (004BDDC0) -------------------------------------------------------- int __fastcall std::ios::rdstate(int a1) { return *(_DWORD *)(a1 + 20); } //----- (004BDDD0) -------------------------------------------------------- int __fastcall std::ios::operator void *(int a1) { int result; // eax result = 0; if ( (*(_BYTE *)(a1 + 20) & 5) == 0 ) return a1; return result; } //----- (004BDDE0) -------------------------------------------------------- bool __fastcall std::ios::operator bool(int a1) { return (*(_BYTE *)(a1 + 20) & 5) == 0; } //----- (004BDDF0) -------------------------------------------------------- bool __fastcall std::ios::operator!(int a1) { return (*(_BYTE *)(a1 + 20) & 5) != 0; } //----- (004BDE00) -------------------------------------------------------- int __fastcall std::wios::exceptions(int a1) { return *(_DWORD *)(a1 + 16); } //----- (004BDE10) -------------------------------------------------------- int __fastcall std::wios::bad(int a1) { return *(_DWORD *)(a1 + 20) & 1; } //----- (004BDE20) -------------------------------------------------------- int __fastcall std::wios::eof(int a1) { return (*(_DWORD *)(a1 + 20) >> 1) & 1; } //----- (004BDE30) -------------------------------------------------------- int __fastcall std::wios::tie(int a1) { return *(_DWORD *)(a1 + 112); } //----- (004BDE40) -------------------------------------------------------- bool __fastcall std::wios::fail(int a1) { return (*(_BYTE *)(a1 + 20) & 5) != 0; } //----- (004BDE50) -------------------------------------------------------- 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; } //----- (004BDE90) -------------------------------------------------------- bool __fastcall std::wios::good(int a1) { return *(_DWORD *)(a1 + 20) == 0; } //----- (004BDEA0) -------------------------------------------------------- int __fastcall std::wios::rdbuf(int a1) { return *(_DWORD *)(a1 + 120); } //----- (004BDEB0) -------------------------------------------------------- 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); } //----- (004BDEE0) -------------------------------------------------------- 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); } //----- (004BDF20) -------------------------------------------------------- int __fastcall std::wios::rdstate(int a1) { return *(_DWORD *)(a1 + 20); } //----- (004BDF30) -------------------------------------------------------- int __fastcall std::wios::operator void *(int a1) { int result; // eax result = 0; if ( (*(_BYTE *)(a1 + 20) & 5) == 0 ) return a1; return result; } //----- (004BDF40) -------------------------------------------------------- bool __fastcall std::wios::operator bool(int a1) { return (*(_BYTE *)(a1 + 20) & 5) == 0; } //----- (004BDF50) -------------------------------------------------------- bool __fastcall std::wios::operator!(int a1) { return (*(_BYTE *)(a1 + 20) & 5) != 0; } //----- (004BDF60) -------------------------------------------------------- const char *_ZGTtNKSt9exception4whatEv() { return "std::exception"; } //----- (004BDF70) -------------------------------------------------------- unsigned __int64 __stdcall std::money_get>::_M_extract( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { char v6; // al int v7; // eax int v8; // eax _DWORD *v9; // ecx int v10; // eax _BYTE *v11; // eax int v12; // eax int v13; // eax _DWORD *v14; // ecx int v15; // eax unsigned int v16; // eax char v17; // al char v18; // al _BYTE *v19; // eax char v20; // al char v21; // bl int v22; // eax int v23; // eax _DWORD *v24; // ecx int v25; // eax int v26; // eax _BYTE *v27; // eax int v28; // eax int v29; // eax _DWORD *v30; // ecx char v31; // al int v32; // eax unsigned __int8 *v33; // eax int v34; // edx char *v35; // eax char v36; // al int v38; // edx std::string *v39; // eax unsigned int first_not_of; // eax unsigned int v41; // edx int v42; // eax _WORD *v43; // eax int *v44; // eax unsigned int v45; // [esp+4h] [ebp-94h] unsigned int v46; // [esp+4h] [ebp-94h] std::string *v47; // [esp+4h] [ebp-94h] unsigned int v48; // [esp+8h] [ebp-90h] char *v49; // [esp+8h] [ebp-90h] unsigned int v50; // [esp+Ch] [ebp-8Ch] char v51; // [esp+10h] [ebp-88h] std::locale::_Impl *v52; // [esp+14h] [ebp-84h] char v53; // [esp+18h] [ebp-80h] _DWORD *v54; // [esp+1Ch] [ebp-7Ch] unsigned int v55; // [esp+20h] [ebp-78h] int v56; // [esp+28h] [ebp-70h] bool v57; // [esp+2Ch] [ebp-6Ch] char v58; // [esp+2Dh] [ebp-6Bh] char v59; // [esp+2Eh] [ebp-6Ah] char v60; // [esp+2Fh] [ebp-69h] char v61; // [esp+30h] [ebp-68h] int v62; // [esp+30h] [ebp-68h] unsigned int v63; // [esp+30h] [ebp-68h] char v64; // [esp+30h] [ebp-68h] char v65; // [esp+30h] [ebp-68h] char v66; // [esp+34h] [ebp-64h] int v67; // [esp+34h] [ebp-64h] char v68; // [esp+34h] [ebp-64h] char v69; // [esp+34h] [ebp-64h] char v70; // [esp+34h] [ebp-64h] int v71; // [esp+34h] [ebp-64h] unsigned int v72; // [esp+34h] [ebp-64h] int *Buf; // [esp+38h] [ebp-60h] unsigned int Bufa; // [esp+38h] [ebp-60h] std::locale::facet *v75; // [esp+3Ch] [ebp-5Ch] std::locale::facet *v76; // [esp+3Ch] [ebp-5Ch] int lpuexcpt; // [esp+40h] [ebp-58h] char lpuexcpta; // [esp+40h] [ebp-58h] std::string *lpuexcptb; // [esp+40h] [ebp-58h] char lpuexcptc; // [esp+40h] [ebp-58h] char lpuexcptd; // [esp+40h] [ebp-58h] std::string *lpuexcpte; // [esp+40h] [ebp-58h] char lpuexcptf; // [esp+40h] [ebp-58h] char lpuexcptg; // [esp+40h] [ebp-58h] char lpuexcpth; // [esp+40h] [ebp-58h] unsigned __int64 lpuexcpti; // [esp+40h] [ebp-58h] int v87; // [esp+48h] [ebp-50h] char v88[5]; // [esp+83h] [ebp-15h] BYREF int v89; // [esp+88h] [ebp-10h] BYREF int v90[2]; // [esp+8Ch] [ebp-Ch] lpuexcpt = a4 + 108; v54 = std::use_facet>(a4 + 108); v75 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); Buf = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * (_DWORD)v75); v87 = *Buf; if ( !*Buf ) { v43 = operator new(0x44u); *(_DWORD *)v43 = &off_5606D4; v43[8] = 0; *((_DWORD *)v43 + 1) = 0; *((_DWORD *)v43 + 2) = 0; *((_DWORD *)v43 + 3) = 0; *((_BYTE *)v43 + 18) = 0; *((_DWORD *)v43 + 5) = 0; *((_DWORD *)v43 + 6) = 0; *((_DWORD *)v43 + 7) = 0; *((_DWORD *)v43 + 8) = 0; *((_DWORD *)v43 + 9) = 0; *((_DWORD *)v43 + 10) = 0; *((_DWORD *)v43 + 11) = 0; *((_DWORD *)v43 + 12) = 0; *((_DWORD *)v43 + 13) = 0; *((_BYTE *)v43 + 67) = 0; v52 = (std::locale::_Impl *)v43; std::__moneypunct_cache::_M_cache((int)v43, lpuexcpt); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v52, v75, v48); v87 = *Buf; } if ( *(_DWORD *)(v87 + 32) ) v57 = *(_DWORD *)(v87 + 40) != 0; else v57 = 0; *(_DWORD *)&v88[1] = std::string::_S_construct(0, 0); if ( *(_BYTE *)(v87 + 16) ) std::string::reserve((int *)&v88[1], (std::string *)0x20, v45); v49 = v88; v89 = (int)std::string::_S_construct(0, 0); std::string::reserve(&v89, (std::string *)0x20, v46); v60 = 0; v56 = 0; v76 = 0; v90[0] = *(_DWORD *)(v87 + 52); v53 = 0; v55 = 0; v58 = 0; while ( 2 ) { switch ( *((_BYTE *)v90 + v56) ) { case 0: v66 = 1; goto LABEL_10; case 1: if ( std::istreambuf_iterator::equal(&a1, (int)&a2) || (*(_BYTE *)(v54[6] + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1)) & 0x20) == 0 ) { v66 = 0; if ( v56 == 3 ) { LABEL_11: v6 = v66 & (v55 > 1); goto LABEL_12; } } else { std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v66 = 1; LABEL_10: if ( v56 == 3 ) goto LABEL_11; } v29 = HIDWORD(a1); v30 = (_DWORD *)a1; while ( 1 ) { lpuexcpth = v29 == -1; v65 = lpuexcpth & (v30 != 0); if ( v65 ) { lpuexcpth = 0; if ( v30[2] >= v30[3] ) { lpuexcpth = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v30 + 36))(v30) == -1 ) { LODWORD(a1) = 0; lpuexcpth = v65; } } } v31 = a3 == -1; v64 = v31 & (a2 != 0); if ( v64 ) { v31 = 0; if ( a2[2] >= a2[3] ) { v38 = (*(int (**)(void))(*a2 + 36))(); v31 = 0; if ( v38 == -1 ) { a2 = 0; v31 = v64; } } } if ( lpuexcpth == v31 ) goto LABEL_113; v30 = (_DWORD *)a1; LOBYTE(v32) = BYTE4(a1); if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) { v33 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) { if ( (*(_BYTE *)(v54[6] + 2 * *v33) & 0x20) == 0 ) goto LABEL_113; LABEL_88: v30[2] = v33 + 1; goto LABEL_89; } v32 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v32 == -1 ) LODWORD(a1) = 0; } if ( (*(_BYTE *)(v54[6] + 2 * (unsigned __int8)v32) & 0x20) == 0 ) goto LABEL_113; v30 = (_DWORD *)a1; v33 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) goto LABEL_88; (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v30 = (_DWORD *)a1; LABEL_89: HIDWORD(a1) = -1; v29 = -1; } case 2: if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) goto LABEL_65; lpuexcptf = v56 == 0 || v55 > 1; if ( lpuexcptf ) goto LABEL_65; if ( v56 == 1 ) { if ( v57 || LOBYTE(v90[0]) == 3 || BYTE2(v90[0]) == 1 ) { LABEL_65: v24 = (_DWORD *)a1; v72 = 0; v63 = *(_DWORD *)(v87 + 24); v25 = HIDWORD(a1); while ( 2 ) { lpuexcptg = v25 == -1; v59 = lpuexcptg & (v24 != 0); if ( v59 ) { lpuexcptg = 0; if ( v24[2] >= v24[3] ) { lpuexcptg = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24) == -1 ) { LODWORD(a1) = 0; lpuexcptg = v59; } } } if ( a2 && a3 == -1 ) { if ( a2[2] >= a2[3] ) { v28 = (*(int (**)(void))(*a2 + 36))(); lpuexcptg ^= v28 == -1; if ( v28 == -1 ) a2 = 0; } } else { lpuexcptg ^= a3 == -1; } lpuexcptf = (v72 < v63) & lpuexcptg; if ( !lpuexcptf ) { if ( v72 == v63 ) { LABEL_160: v66 = 1; goto LABEL_114; } LABEL_143: if ( !v72 ) { v66 = (*(_BYTE *)(a4 + 13) & 2) == 0; lpuexcptf = (*(_BYTE *)(a4 + 13) & 2) != 0; goto LABEL_114; } LABEL_107: *a5 |= 4u; goto LABEL_108; } LOBYTE(v26) = BYTE4(a1); v24 = (_DWORD *)a1; if ( a1 > 0xFFFFFFFF00000000LL ) { v27 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v27 >= *(_DWORD *)(a1 + 12) ) { v26 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v26 == -1 ) LODWORD(a1) = 0; goto LABEL_69; } if ( *v27 != *(_BYTE *)(*(_DWORD *)(v87 + 20) + v72) ) goto LABEL_143; LABEL_71: v24[2] = v27 + 1; } else { LABEL_69: if ( *(_BYTE *)(*(_DWORD *)(v87 + 20) + v72) != (_BYTE)v26 ) goto LABEL_143; v24 = (_DWORD *)a1; v27 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v27 < *(_DWORD *)(a1 + 12) ) goto LABEL_71; (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v24 = (_DWORD *)a1; } ++v72; v25 = -1; HIDWORD(a1) = -1; continue; } } v23 = 2; LABEL_116: v56 = v23; continue; } v66 = 1; if ( v56 == 2 ) { if ( HIBYTE(v90[0]) == 4 ) goto LABEL_65; v23 = 3; if ( HIBYTE(v90[0]) == 3 && v57 ) goto LABEL_65; goto LABEL_116; } LABEL_114: v23 = v56 + 1; if ( v56 + 1 <= 3 && !lpuexcptf ) goto LABEL_116; v6 = v66 & (v55 > 1); LABEL_12: if ( !v6 ) { if ( v66 ) { if ( *(_DWORD *)(v89 - 12) > 1u ) goto LABEL_161; goto LABEL_149; } goto LABEL_107; } if ( v58 ) v7 = *(_DWORD *)(v87 + 36); else v7 = *(_DWORD *)(v87 + 28); v67 = v7; v8 = HIDWORD(a1); v9 = (_DWORD *)a1; Bufa = 1; while ( 2 ) { lpuexcpta = v8 == -1; v61 = lpuexcpta & (v9 != 0); if ( v61 ) { lpuexcpta = 0; if ( v9[2] >= v9[3] ) { lpuexcpta = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) == -1 ) { LODWORD(a1) = 0; lpuexcpta = v61; } } } if ( a2 && a3 == -1 ) { if ( a2[2] >= a2[3] ) { v12 = (*(int (**)(void))(*a2 + 36))(); lpuexcpta ^= v12 == -1; if ( v12 == -1 ) a2 = 0; } } else { lpuexcpta ^= a3 == -1; } if ( Bufa < v55 && lpuexcpta ) { v9 = (_DWORD *)a1; LOBYTE(v10) = BYTE4(a1); if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) goto LABEL_21; v11 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v11 < *(_DWORD *)(a1 + 12) ) { if ( *v11 != *(_BYTE *)(v67 + Bufa) ) goto LABEL_107; goto LABEL_23; } v10 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v10 == -1 ) LODWORD(a1) = 0; LABEL_21: if ( *(_BYTE *)(v67 + Bufa) != (_BYTE)v10 ) goto LABEL_107; v9 = (_DWORD *)a1; v11 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v11 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v9 = (_DWORD *)a1; } else { LABEL_23: v9[2] = v11 + 1; } ++Bufa; v8 = -1; HIDWORD(a1) = -1; continue; } break; } if ( Bufa != v55 ) goto LABEL_107; if ( *(_DWORD *)(v89 - 12) <= 1u ) goto LABEL_149; LABEL_161: first_not_of = std::string::find_first_not_of(&v89, (std::string *)0x30, 0, (unsigned int)v49); if ( first_not_of ) { v41 = *(_DWORD *)(v89 - 12); if ( first_not_of == -1 ) first_not_of = v41 - 1; if ( first_not_of > v41 ) first_not_of = *(_DWORD *)(v89 - 12); std::string::_M_mutate((char **)&v89, 0, first_not_of, 0, v50); } LABEL_149: if ( v58 ) { v44 = (int *)v89; if ( *(int *)(v89 - 4) >= 0 ) { std::string::_M_leak_hard((char **)&v89); v44 = (int *)v89; } if ( *(_BYTE *)v44 != 48 ) { if ( *(v44 - 1) >= 0 ) std::string::_M_leak_hard((char **)&v89); std::string::_M_replace_aux((char **)&v89, 0, 0, 1u, 45, v51); *(_DWORD *)(v89 - 4) = -1; } } if ( *(_DWORD *)(*(_DWORD *)&v88[1] - 12) ) { v39 = (std::string *)(char)v76; if ( v60 ) v39 = (std::string *)v53; std::string::push_back((int *)&v88[1], v39, (char)v47); if ( !(unsigned __int8)std::__verify_grouping( *(char **)(v87 + 8), *(_DWORD *)(v87 + 12), (const char **)&v88[1]) ) *a5 |= 4u; } if ( v60 && *(std::locale::facet **)(v87 + 44) != v76 ) goto LABEL_107; std::string::swap(a6, (std::string *)&v89, v47); LABEL_108: if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) *a5 |= 2u; lpuexcpti = a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)(v89 - 12), (int)v88); std::string::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v88[1] - 12), (int)&v89); return lpuexcpti; case 3: if ( *(_DWORD *)(v87 + 32) ) { lpuexcptf = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !lpuexcptf && **(_BYTE **)(v87 + 28) == (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1) ) { v55 = *(_DWORD *)(v87 + 32); std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v66 = 1; goto LABEL_114; } if ( !*(_DWORD *)(v87 + 40) ) { if ( !*(_DWORD *)(v87 + 32) ) goto LABEL_57; goto LABEL_125; } } else if ( !*(_DWORD *)(v87 + 40) ) { goto LABEL_57; } lpuexcptf = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !lpuexcptf && **(_BYTE **)(v87 + 36) == (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1) ) { v55 = *(_DWORD *)(v87 + 40); std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v66 = 1; v58 = 1; goto LABEL_114; } if ( !*(_DWORD *)(v87 + 32) || *(_DWORD *)(v87 + 40) ) { LABEL_57: lpuexcptf = v57; v66 = !v57; goto LABEL_114; } LABEL_125: lpuexcptf = 0; v66 = 1; v58 = 1; goto LABEL_114; case 4: v13 = HIDWORD(a1); v14 = (_DWORD *)a1; while ( 2 ) { lpuexcptc = v13 == -1; v69 = lpuexcptc & (v14 != 0); if ( v69 ) { lpuexcptc = 0; if ( v14[2] >= v14[3] ) { lpuexcptc = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v14 + 36))(v14) == -1 ) { LODWORD(a1) = 0; lpuexcptc = v69; } } } v17 = a3 == -1; v70 = v17 & (a2 != 0); if ( v70 ) { v17 = 0; if ( a2[2] >= a2[3] ) { v34 = (*(int (**)(void))(*a2 + 36))(); v17 = 0; if ( v34 == -1 ) { a2 = 0; v17 = v70; } } } if ( lpuexcptc == v17 ) goto LABEL_105; v18 = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_43; v35 = *(char **)(a1 + 8); if ( (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ) { v42 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcptd = v42; if ( v42 == -1 ) { LODWORD(a1) = 0; lpuexcptd = -1; } } else { v18 = *v35; LABEL_43: lpuexcptd = v18; } v19 = memchr((const void *)(v87 + 57), lpuexcptd, 0xAu); if ( v19 ) { v68 = v19[(_DWORD)std::money_base::_S_atoms - 56 - v87]; v62 = *(_DWORD *)(v89 - 12); lpuexcptb = (std::string *)(v62 + 1); if ( (unsigned int)(v62 + 1) > *(_DWORD *)(v89 - 8) || *(int *)(v89 - 4) > 0 ) std::string::reserve(&v89, lpuexcptb, (unsigned int)v47); v76 = (std::locale::facet *)((char *)v76 + 1); *(_BYTE *)(v89 + *(_DWORD *)(v89 - 12)) = v68; v15 = v89; *(_DWORD *)(v89 - 12) = lpuexcptb; *(_DWORD *)(v15 - 4) = 0; *(_BYTE *)(v15 + v62 + 1) = 0; LABEL_36: v14 = (_DWORD *)a1; v16 = *(_DWORD *)(a1 + 8); if ( v16 < *(_DWORD *)(a1 + 12) ) { LABEL_37: v14[2] = v16 + 1; LABEL_38: HIDWORD(a1) = -1; v13 = -1; continue; } LABEL_54: (*(void (__fastcall **)(_DWORD *))(*v14 + 40))(v14); v14 = (_DWORD *)a1; goto LABEL_38; } break; } v66 = v60 | (*(_BYTE *)(v87 + 17) != (unsigned __int8)lpuexcptd); if ( v66 ) { v20 = *(_BYTE *)(v87 + 16); if ( v20 ) { if ( *(_BYTE *)(v87 + 18) != lpuexcptd ) goto LABEL_172; if ( v60 ) { v20 = v60; LABEL_172: v66 = v20; if ( !*(_DWORD *)(v89 - 12) ) goto LABEL_107; goto LABEL_113; } if ( v76 ) { v71 = *(_DWORD *)(*(_DWORD *)&v88[1] - 12); lpuexcpte = (std::string *)(v71 + 1); if ( (unsigned int)(v71 + 1) > *(_DWORD *)(*(_DWORD *)&v88[1] - 8) || *(int *)(*(_DWORD *)&v88[1] - 4) > 0 ) std::string::reserve((int *)&v88[1], lpuexcpte, (unsigned int)v47); v21 = (char)v76; v76 = 0; *(_BYTE *)(*(_DWORD *)&v88[1] + *(_DWORD *)(*(_DWORD *)&v88[1] - 12)) = v21; v22 = *(_DWORD *)&v88[1]; *(_DWORD *)(*(_DWORD *)&v88[1] - 4) = 0; *(_DWORD *)(v22 - 12) = lpuexcpte; *(_BYTE *)(v22 + v71 + 1) = 0; v14 = (_DWORD *)a1; v16 = *(_DWORD *)(a1 + 8); if ( v16 < *(_DWORD *)(a1 + 12) ) goto LABEL_37; goto LABEL_54; } v66 = 0; } } else { if ( *(int *)(v87 + 44) > 0 ) { v36 = (char)v76; v60 = 1; v76 = 0; v53 = v36; goto LABEL_36; } v60 = 0; LABEL_105: v66 = 1; } if ( !*(_DWORD *)(v89 - 12) ) goto LABEL_107; LABEL_113: lpuexcptf = v66 ^ 1; goto LABEL_114; default: lpuexcptf = 0; goto LABEL_160; } } } // 4BED35: variable 'v48' is possibly undefined // 4BE03D: variable 'v45' is possibly undefined // 4BE07B: variable 'v46' is possibly undefined // 4BE233: variable 'v47' is possibly undefined // 4BEB6A: variable 'v49' is possibly undefined // 4BEBAB: variable 'v50' is possibly undefined // 4BEDDF: variable 'v51' is possibly undefined // 53F588: using guessed type char *std::money_base::_S_atoms; // 53F58C: using guessed type signed __int32 std::moneypunct::id; // 5606D4: using guessed type int (*off_5606D4)(); //----- (004BEF60) -------------------------------------------------------- unsigned __int64 __stdcall std::money_get>::_M_extract( unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6) { char v6; // al int v7; // eax int v8; // eax _DWORD *v9; // ecx int v10; // eax _BYTE *v11; // eax int v12; // eax int v13; // eax _DWORD *v14; // ecx int v15; // eax unsigned int v16; // eax char v17; // al char v18; // al _BYTE *v19; // eax char v20; // al char v21; // bl int v22; // eax int v23; // eax _DWORD *v24; // ecx int v25; // eax int v26; // eax _BYTE *v27; // eax int v28; // eax int v29; // eax _DWORD *v30; // ecx char v31; // al int v32; // eax unsigned __int8 *v33; // eax int v34; // edx char *v35; // eax char v36; // al int v38; // edx std::string *v39; // eax unsigned int first_not_of; // eax unsigned int v41; // edx int v42; // eax _WORD *v43; // eax int *v44; // eax unsigned int v45; // [esp+4h] [ebp-94h] unsigned int v46; // [esp+4h] [ebp-94h] std::string *v47; // [esp+4h] [ebp-94h] unsigned int v48; // [esp+8h] [ebp-90h] char *v49; // [esp+8h] [ebp-90h] unsigned int v50; // [esp+Ch] [ebp-8Ch] char v51; // [esp+10h] [ebp-88h] std::locale::_Impl *v52; // [esp+14h] [ebp-84h] char v53; // [esp+18h] [ebp-80h] _DWORD *v54; // [esp+1Ch] [ebp-7Ch] unsigned int v55; // [esp+20h] [ebp-78h] int v56; // [esp+28h] [ebp-70h] bool v57; // [esp+2Ch] [ebp-6Ch] char v58; // [esp+2Dh] [ebp-6Bh] char v59; // [esp+2Eh] [ebp-6Ah] char v60; // [esp+2Fh] [ebp-69h] char v61; // [esp+30h] [ebp-68h] int v62; // [esp+30h] [ebp-68h] unsigned int v63; // [esp+30h] [ebp-68h] char v64; // [esp+30h] [ebp-68h] char v65; // [esp+30h] [ebp-68h] char v66; // [esp+34h] [ebp-64h] int v67; // [esp+34h] [ebp-64h] char v68; // [esp+34h] [ebp-64h] char v69; // [esp+34h] [ebp-64h] char v70; // [esp+34h] [ebp-64h] int v71; // [esp+34h] [ebp-64h] unsigned int v72; // [esp+34h] [ebp-64h] int *Buf; // [esp+38h] [ebp-60h] unsigned int Bufa; // [esp+38h] [ebp-60h] std::locale::facet *v75; // [esp+3Ch] [ebp-5Ch] std::locale::facet *v76; // [esp+3Ch] [ebp-5Ch] int lpuexcpt; // [esp+40h] [ebp-58h] char lpuexcpta; // [esp+40h] [ebp-58h] std::string *lpuexcptb; // [esp+40h] [ebp-58h] char lpuexcptc; // [esp+40h] [ebp-58h] char lpuexcptd; // [esp+40h] [ebp-58h] std::string *lpuexcpte; // [esp+40h] [ebp-58h] char lpuexcptf; // [esp+40h] [ebp-58h] char lpuexcptg; // [esp+40h] [ebp-58h] char lpuexcpth; // [esp+40h] [ebp-58h] unsigned __int64 lpuexcpti; // [esp+40h] [ebp-58h] int v87; // [esp+48h] [ebp-50h] char v88[5]; // [esp+83h] [ebp-15h] BYREF int v89; // [esp+88h] [ebp-10h] BYREF int v90[2]; // [esp+8Ch] [ebp-Ch] lpuexcpt = a4 + 108; v54 = std::use_facet>(a4 + 108); v75 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); Buf = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * (_DWORD)v75); v87 = *Buf; if ( !*Buf ) { v43 = operator new(0x44u); *(_DWORD *)v43 = &off_5606E4; v43[8] = 0; *((_DWORD *)v43 + 1) = 0; *((_DWORD *)v43 + 2) = 0; *((_DWORD *)v43 + 3) = 0; *((_BYTE *)v43 + 18) = 0; *((_DWORD *)v43 + 5) = 0; *((_DWORD *)v43 + 6) = 0; *((_DWORD *)v43 + 7) = 0; *((_DWORD *)v43 + 8) = 0; *((_DWORD *)v43 + 9) = 0; *((_DWORD *)v43 + 10) = 0; *((_DWORD *)v43 + 11) = 0; *((_DWORD *)v43 + 12) = 0; *((_DWORD *)v43 + 13) = 0; *((_BYTE *)v43 + 67) = 0; v52 = (std::locale::_Impl *)v43; std::__moneypunct_cache::_M_cache((int)v43, lpuexcpt); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v52, v75, v48); v87 = *Buf; } if ( *(_DWORD *)(v87 + 32) ) v57 = *(_DWORD *)(v87 + 40) != 0; else v57 = 0; *(_DWORD *)&v88[1] = std::string::_S_construct(0, 0); if ( *(_BYTE *)(v87 + 16) ) std::string::reserve((int *)&v88[1], (std::string *)0x20, v45); v49 = v88; v89 = (int)std::string::_S_construct(0, 0); std::string::reserve(&v89, (std::string *)0x20, v46); v60 = 0; v56 = 0; v76 = 0; v90[0] = *(_DWORD *)(v87 + 52); v53 = 0; v55 = 0; v58 = 0; while ( 2 ) { switch ( *((_BYTE *)v90 + v56) ) { case 0: v66 = 1; goto LABEL_10; case 1: if ( std::istreambuf_iterator::equal(&a1, (int)&a2) || (*(_BYTE *)(v54[6] + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1)) & 0x20) == 0 ) { v66 = 0; if ( v56 == 3 ) { LABEL_11: v6 = v66 & (v55 > 1); goto LABEL_12; } } else { std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v66 = 1; LABEL_10: if ( v56 == 3 ) goto LABEL_11; } v29 = HIDWORD(a1); v30 = (_DWORD *)a1; while ( 1 ) { lpuexcpth = v29 == -1; v65 = lpuexcpth & (v30 != 0); if ( v65 ) { lpuexcpth = 0; if ( v30[2] >= v30[3] ) { lpuexcpth = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v30 + 36))(v30) == -1 ) { LODWORD(a1) = 0; lpuexcpth = v65; } } } v31 = a3 == -1; v64 = v31 & (a2 != 0); if ( v64 ) { v31 = 0; if ( a2[2] >= a2[3] ) { v38 = (*(int (**)(void))(*a2 + 36))(); v31 = 0; if ( v38 == -1 ) { a2 = 0; v31 = v64; } } } if ( lpuexcpth == v31 ) goto LABEL_113; v30 = (_DWORD *)a1; LOBYTE(v32) = BYTE4(a1); if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) { v33 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) { if ( (*(_BYTE *)(v54[6] + 2 * *v33) & 0x20) == 0 ) goto LABEL_113; LABEL_88: v30[2] = v33 + 1; goto LABEL_89; } v32 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v32 == -1 ) LODWORD(a1) = 0; } if ( (*(_BYTE *)(v54[6] + 2 * (unsigned __int8)v32) & 0x20) == 0 ) goto LABEL_113; v30 = (_DWORD *)a1; v33 = *(unsigned __int8 **)(a1 + 8); if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) goto LABEL_88; (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v30 = (_DWORD *)a1; LABEL_89: HIDWORD(a1) = -1; v29 = -1; } case 2: if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) goto LABEL_65; lpuexcptf = v56 == 0 || v55 > 1; if ( lpuexcptf ) goto LABEL_65; if ( v56 == 1 ) { if ( v57 || LOBYTE(v90[0]) == 3 || BYTE2(v90[0]) == 1 ) { LABEL_65: v24 = (_DWORD *)a1; v72 = 0; v63 = *(_DWORD *)(v87 + 24); v25 = HIDWORD(a1); while ( 2 ) { lpuexcptg = v25 == -1; v59 = lpuexcptg & (v24 != 0); if ( v59 ) { lpuexcptg = 0; if ( v24[2] >= v24[3] ) { lpuexcptg = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24) == -1 ) { LODWORD(a1) = 0; lpuexcptg = v59; } } } if ( a2 && a3 == -1 ) { if ( a2[2] >= a2[3] ) { v28 = (*(int (**)(void))(*a2 + 36))(); lpuexcptg ^= v28 == -1; if ( v28 == -1 ) a2 = 0; } } else { lpuexcptg ^= a3 == -1; } lpuexcptf = (v72 < v63) & lpuexcptg; if ( !lpuexcptf ) { if ( v72 == v63 ) { LABEL_160: v66 = 1; goto LABEL_114; } LABEL_143: if ( !v72 ) { v66 = (*(_BYTE *)(a4 + 13) & 2) == 0; lpuexcptf = (*(_BYTE *)(a4 + 13) & 2) != 0; goto LABEL_114; } LABEL_107: *a5 |= 4u; goto LABEL_108; } LOBYTE(v26) = BYTE4(a1); v24 = (_DWORD *)a1; if ( a1 > 0xFFFFFFFF00000000LL ) { v27 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v27 >= *(_DWORD *)(a1 + 12) ) { v26 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v26 == -1 ) LODWORD(a1) = 0; goto LABEL_69; } if ( *v27 != *(_BYTE *)(*(_DWORD *)(v87 + 20) + v72) ) goto LABEL_143; LABEL_71: v24[2] = v27 + 1; } else { LABEL_69: if ( *(_BYTE *)(*(_DWORD *)(v87 + 20) + v72) != (_BYTE)v26 ) goto LABEL_143; v24 = (_DWORD *)a1; v27 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v27 < *(_DWORD *)(a1 + 12) ) goto LABEL_71; (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v24 = (_DWORD *)a1; } ++v72; v25 = -1; HIDWORD(a1) = -1; continue; } } v23 = 2; LABEL_116: v56 = v23; continue; } v66 = 1; if ( v56 == 2 ) { if ( HIBYTE(v90[0]) == 4 ) goto LABEL_65; v23 = 3; if ( HIBYTE(v90[0]) == 3 && v57 ) goto LABEL_65; goto LABEL_116; } LABEL_114: v23 = v56 + 1; if ( v56 + 1 <= 3 && !lpuexcptf ) goto LABEL_116; v6 = v66 & (v55 > 1); LABEL_12: if ( !v6 ) { if ( v66 ) { if ( *(_DWORD *)(v89 - 12) > 1u ) goto LABEL_161; goto LABEL_149; } goto LABEL_107; } if ( v58 ) v7 = *(_DWORD *)(v87 + 36); else v7 = *(_DWORD *)(v87 + 28); v67 = v7; v8 = HIDWORD(a1); v9 = (_DWORD *)a1; Bufa = 1; while ( 2 ) { lpuexcpta = v8 == -1; v61 = lpuexcpta & (v9 != 0); if ( v61 ) { lpuexcpta = 0; if ( v9[2] >= v9[3] ) { lpuexcpta = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) == -1 ) { LODWORD(a1) = 0; lpuexcpta = v61; } } } if ( a2 && a3 == -1 ) { if ( a2[2] >= a2[3] ) { v12 = (*(int (**)(void))(*a2 + 36))(); lpuexcpta ^= v12 == -1; if ( v12 == -1 ) a2 = 0; } } else { lpuexcpta ^= a3 == -1; } if ( Bufa < v55 && lpuexcpta ) { v9 = (_DWORD *)a1; LOBYTE(v10) = BYTE4(a1); if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) goto LABEL_21; v11 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v11 < *(_DWORD *)(a1 + 12) ) { if ( *v11 != *(_BYTE *)(v67 + Bufa) ) goto LABEL_107; goto LABEL_23; } v10 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); if ( v10 == -1 ) LODWORD(a1) = 0; LABEL_21: if ( *(_BYTE *)(v67 + Bufa) != (_BYTE)v10 ) goto LABEL_107; v9 = (_DWORD *)a1; v11 = *(_BYTE **)(a1 + 8); if ( (unsigned int)v11 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v9 = (_DWORD *)a1; } else { LABEL_23: v9[2] = v11 + 1; } ++Bufa; v8 = -1; HIDWORD(a1) = -1; continue; } break; } if ( Bufa != v55 ) goto LABEL_107; if ( *(_DWORD *)(v89 - 12) <= 1u ) goto LABEL_149; LABEL_161: first_not_of = std::string::find_first_not_of(&v89, (std::string *)0x30, 0, (unsigned int)v49); if ( first_not_of ) { v41 = *(_DWORD *)(v89 - 12); if ( first_not_of == -1 ) first_not_of = v41 - 1; if ( first_not_of > v41 ) first_not_of = *(_DWORD *)(v89 - 12); std::string::_M_mutate((char **)&v89, 0, first_not_of, 0, v50); } LABEL_149: if ( v58 ) { v44 = (int *)v89; if ( *(int *)(v89 - 4) >= 0 ) { std::string::_M_leak_hard((char **)&v89); v44 = (int *)v89; } if ( *(_BYTE *)v44 != 48 ) { if ( *(v44 - 1) >= 0 ) std::string::_M_leak_hard((char **)&v89); std::string::_M_replace_aux((char **)&v89, 0, 0, 1u, 45, v51); *(_DWORD *)(v89 - 4) = -1; } } if ( *(_DWORD *)(*(_DWORD *)&v88[1] - 12) ) { v39 = (std::string *)(char)v76; if ( v60 ) v39 = (std::string *)v53; std::string::push_back((int *)&v88[1], v39, (char)v47); if ( !(unsigned __int8)std::__verify_grouping( *(char **)(v87 + 8), *(_DWORD *)(v87 + 12), (const char **)&v88[1]) ) *a5 |= 4u; } if ( v60 && *(std::locale::facet **)(v87 + 44) != v76 ) goto LABEL_107; std::string::swap(a6, (std::string *)&v89, v47); LABEL_108: if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) *a5 |= 2u; lpuexcpti = a1; std::string::_Rep::_M_dispose((volatile signed __int32 *)(v89 - 12), (int)v88); std::string::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v88[1] - 12), (int)&v89); return lpuexcpti; case 3: if ( *(_DWORD *)(v87 + 32) ) { lpuexcptf = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !lpuexcptf && **(_BYTE **)(v87 + 28) == (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1) ) { v55 = *(_DWORD *)(v87 + 32); std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v66 = 1; goto LABEL_114; } if ( !*(_DWORD *)(v87 + 40) ) { if ( !*(_DWORD *)(v87 + 32) ) goto LABEL_57; goto LABEL_125; } } else if ( !*(_DWORD *)(v87 + 40) ) { goto LABEL_57; } lpuexcptf = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !lpuexcptf && **(_BYTE **)(v87 + 36) == (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1) ) { v55 = *(_DWORD *)(v87 + 40); std::streambuf::sbumpc((_DWORD *)a1); HIDWORD(a1) = -1; v66 = 1; v58 = 1; goto LABEL_114; } if ( !*(_DWORD *)(v87 + 32) || *(_DWORD *)(v87 + 40) ) { LABEL_57: lpuexcptf = v57; v66 = !v57; goto LABEL_114; } LABEL_125: lpuexcptf = 0; v66 = 1; v58 = 1; goto LABEL_114; case 4: v13 = HIDWORD(a1); v14 = (_DWORD *)a1; while ( 2 ) { lpuexcptc = v13 == -1; v69 = lpuexcptc & (v14 != 0); if ( v69 ) { lpuexcptc = 0; if ( v14[2] >= v14[3] ) { lpuexcptc = 0; if ( (*(int (__fastcall **)(_DWORD *))(*v14 + 36))(v14) == -1 ) { LODWORD(a1) = 0; lpuexcptc = v69; } } } v17 = a3 == -1; v70 = v17 & (a2 != 0); if ( v70 ) { v17 = 0; if ( a2[2] >= a2[3] ) { v34 = (*(int (**)(void))(*a2 + 36))(); v17 = 0; if ( v34 == -1 ) { a2 = 0; v17 = v70; } } } if ( lpuexcptc == v17 ) goto LABEL_105; v18 = BYTE4(a1); if ( a1 <= 0xFFFFFFFF00000000LL ) goto LABEL_43; v35 = *(char **)(a1 + 8); if ( (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ) { v42 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); lpuexcptd = v42; if ( v42 == -1 ) { LODWORD(a1) = 0; lpuexcptd = -1; } } else { v18 = *v35; LABEL_43: lpuexcptd = v18; } v19 = memchr((const void *)(v87 + 57), lpuexcptd, 0xAu); if ( v19 ) { v68 = v19[(_DWORD)std::money_base::_S_atoms - 56 - v87]; v62 = *(_DWORD *)(v89 - 12); lpuexcptb = (std::string *)(v62 + 1); if ( (unsigned int)(v62 + 1) > *(_DWORD *)(v89 - 8) || *(int *)(v89 - 4) > 0 ) std::string::reserve(&v89, lpuexcptb, (unsigned int)v47); v76 = (std::locale::facet *)((char *)v76 + 1); *(_BYTE *)(v89 + *(_DWORD *)(v89 - 12)) = v68; v15 = v89; *(_DWORD *)(v89 - 12) = lpuexcptb; *(_DWORD *)(v15 - 4) = 0; *(_BYTE *)(v15 + v62 + 1) = 0; LABEL_36: v14 = (_DWORD *)a1; v16 = *(_DWORD *)(a1 + 8); if ( v16 < *(_DWORD *)(a1 + 12) ) { LABEL_37: v14[2] = v16 + 1; LABEL_38: HIDWORD(a1) = -1; v13 = -1; continue; } LABEL_54: (*(void (__fastcall **)(_DWORD *))(*v14 + 40))(v14); v14 = (_DWORD *)a1; goto LABEL_38; } break; } v66 = v60 | (*(_BYTE *)(v87 + 17) != (unsigned __int8)lpuexcptd); if ( v66 ) { v20 = *(_BYTE *)(v87 + 16); if ( v20 ) { if ( *(_BYTE *)(v87 + 18) != lpuexcptd ) goto LABEL_172; if ( v60 ) { v20 = v60; LABEL_172: v66 = v20; if ( !*(_DWORD *)(v89 - 12) ) goto LABEL_107; goto LABEL_113; } if ( v76 ) { v71 = *(_DWORD *)(*(_DWORD *)&v88[1] - 12); lpuexcpte = (std::string *)(v71 + 1); if ( (unsigned int)(v71 + 1) > *(_DWORD *)(*(_DWORD *)&v88[1] - 8) || *(int *)(*(_DWORD *)&v88[1] - 4) > 0 ) std::string::reserve((int *)&v88[1], lpuexcpte, (unsigned int)v47); v21 = (char)v76; v76 = 0; *(_BYTE *)(*(_DWORD *)&v88[1] + *(_DWORD *)(*(_DWORD *)&v88[1] - 12)) = v21; v22 = *(_DWORD *)&v88[1]; *(_DWORD *)(*(_DWORD *)&v88[1] - 4) = 0; *(_DWORD *)(v22 - 12) = lpuexcpte; *(_BYTE *)(v22 + v71 + 1) = 0; v14 = (_DWORD *)a1; v16 = *(_DWORD *)(a1 + 8); if ( v16 < *(_DWORD *)(a1 + 12) ) goto LABEL_37; goto LABEL_54; } v66 = 0; } } else { if ( *(int *)(v87 + 44) > 0 ) { v36 = (char)v76; v60 = 1; v76 = 0; v53 = v36; goto LABEL_36; } v60 = 0; LABEL_105: v66 = 1; } if ( !*(_DWORD *)(v89 - 12) ) goto LABEL_107; LABEL_113: lpuexcptf = v66 ^ 1; goto LABEL_114; default: lpuexcptf = 0; goto LABEL_160; } } } // 4BFD25: variable 'v48' is possibly undefined // 4BF02D: variable 'v45' is possibly undefined // 4BF06B: variable 'v46' is possibly undefined // 4BF223: variable 'v47' is possibly undefined // 4BFB5A: variable 'v49' is possibly undefined // 4BFB9B: variable 'v50' is possibly undefined // 4BFDCF: variable 'v51' is possibly undefined // 53F588: using guessed type char *std::money_base::_S_atoms; // 53F590: using guessed type signed __int32 std::moneypunct::id; // 5606E4: using guessed type int (*off_5606E4)(); //----- (004BFF50) -------------------------------------------------------- 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); } //----- (004BFF60) -------------------------------------------------------- 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); } //----- (004BFF70) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! unsigned __int64 __stdcall std::money_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, int *a7) { unsigned __int64 v7; // rax size_t v8; // eax char v9; // al void (__thiscall *v10)(_BYTE *, char *, char *, void *); // eax int v11; // eax char v13; // [esp+4h] [ebp-84h] char *v14; // [esp+28h] [ebp-60h] void *v15; // [esp+2Ch] [ebp-5Ch] size_t Size; // [esp+30h] [ebp-58h] _BYTE *v17; // [esp+34h] [ebp-54h] char *Src; // [esp+38h] [ebp-50h] int v19; // [esp+7Bh] [ebp-Dh] BYREF int v20[3]; // [esp+7Ch] [ebp-Ch] BYREF unsigned __int64 v21; // [esp+90h] [ebp+8h] v17 = std::use_facet>(a5 + 108); v20[0] = (int)std::string::_S_construct(0, 0); if ( a4 ) v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, v20); else v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, v20); v21 = v7; Src = (char *)v20[0]; v8 = *(_DWORD *)(v20[0] - 12); Size = v8; if ( v8 ) { std::string::resize(a7, v8, 0, v13); v15 = (void *)*a7; if ( *(int *)(*a7 - 4) >= 0 ) { std::string::_M_leak_hard((char **)a7); v15 = (void *)*a7; } Src = (char *)v20[0]; v14 = (char *)(Size + v20[0]); v9 = v17[28]; if ( v9 == 1 ) { if ( v14 != (char *)v20[0] ) goto LABEL_11; } else { if ( !v9 ) std::ctype::_M_widen_init((int)v17); v10 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v17 + 28); if ( (char *)v10 == (char *)std::ctype::do_widen ) { if ( v14 != Src ) { LABEL_11: memcpy(v15, Src, Size); Src = (char *)v20[0]; goto LABEL_12; } } else { v10(v17, Src, v14, v15); } Src = (char *)v20[0]; } } LABEL_12: if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)Src - 1, 0xFFFFFFFF) > 0 ) return v21; LABEL_17: std::string::_Rep::_M_destroy(Src - 12, (int)&v19); return v21; } v11 = *((_DWORD *)Src - 1); *((_DWORD *)Src - 1) = v11 - 1; if ( v11 <= 0 ) goto LABEL_17; return v21; } // 4C01CF: positive sp value 4 has been found // 4C0059: variable 'v13' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 4BFF70: using guessed type _DWORD *arg_8; //----- (004C01F0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! unsigned __int64 __stdcall std::money_get>::do_get( unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, long double *a7) { unsigned __int64 v7; // rax char *v8; // ecx int v9; // eax char *String; // [esp+68h] [ebp-10h] BYREF int v12[3]; // [esp+6Ch] [ebp-Ch] BYREF unsigned __int64 v13; // [esp+80h] [ebp+8h] String = (char *)std::string::_S_construct(0, 0); 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); v13 = v7; v12[0] = std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String, a7, a6); v8 = String; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF) > 0 ) return v13; LABEL_8: std::string::_Rep::_M_destroy(v8 - 12, (int)v12); return v13; } v9 = *((_DWORD *)String - 1); *((_DWORD *)String - 1) = v9 - 1; if ( v9 <= 0 ) goto LABEL_8; return v13; } // 4C0348: positive sp value 4 has been found // 53E1E4: using guessed type int _CRT_MT; // 4C01F0: using guessed type int var_C[3]; //----- (004C0360) -------------------------------------------------------- __int64 __stdcall std::money_get>::_M_extract( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6) { char v6; // al int v7; // eax __int16 v8; // ax _DWORD *v9; // ecx char v10; // al __int16 v11; // ax unsigned int v12; // eax _WORD *v13; // eax __int16 v14; // ax __int16 v15; // ax _DWORD *v16; // ecx char v17; // al unsigned __int16 v18; // dx _WORD *v19; // eax char v20; // al char v21; // cl int v22; // eax unsigned int v23; // eax int v24; // eax _DWORD *v25; // ecx __int16 i; // ax bool v27; // al __int16 v28; // ax unsigned int v29; // eax _WORD *v30; // eax __int16 v31; // ax __int16 v32; // ax _DWORD *v33; // ecx char v34; // al unsigned __int16 v35; // ax unsigned int v36; // eax _WORD *v37; // eax __int16 v38; // ax int v39; // eax __int16 *v40; // eax __int16 v41; // dx int v42; // eax int v43; // edx int v44; // eax int v45; // edx _WORD *v47; // eax __int16 v48; // ax _WORD *v49; // eax char v50; // al _WORD *v51; // eax __int16 v52; // dx _WORD *v53; // eax unsigned __int16 v54; // ax __int16 *v55; // eax __int16 v56; // dx std::string *v57; // eax _WORD *v58; // eax _WORD *v59; // eax __int16 v60; // dx __int16 *v61; // eax unsigned int first_not_of; // eax unsigned int v63; // edx _DWORD *v64; // eax int *v65; // eax unsigned int v66; // [esp+4h] [ebp-94h] unsigned int v67; // [esp+4h] [ebp-94h] std::string *v68; // [esp+4h] [ebp-94h] unsigned int v69; // [esp+8h] [ebp-90h] unsigned int v70; // [esp+Ch] [ebp-8Ch] std::locale::_Impl *v71; // [esp+10h] [ebp-88h] char v72; // [esp+14h] [ebp-84h] void *v73; // [esp+18h] [ebp-80h] unsigned int v74; // [esp+1Ch] [ebp-7Ch] int v75; // [esp+24h] [ebp-74h] bool v76; // [esp+29h] [ebp-6Fh] char v77; // [esp+2Ah] [ebp-6Eh] char v78; // [esp+2Bh] [ebp-6Dh] bool v79; // [esp+2Ch] [ebp-6Ch] bool v80; // [esp+2Ch] [ebp-6Ch] char v81; // [esp+30h] [ebp-68h] char v82; // [esp+30h] [ebp-68h] unsigned int v83; // [esp+30h] [ebp-68h] char v84; // [esp+30h] [ebp-68h] char v85; // [esp+30h] [ebp-68h] int v86; // [esp+30h] [ebp-68h] char v87; // [esp+34h] [ebp-64h] int v88; // [esp+34h] [ebp-64h] char v89; // [esp+34h] [ebp-64h] char v90; // [esp+34h] [ebp-64h] int v91; // [esp+34h] [ebp-64h] unsigned int v92; // [esp+34h] [ebp-64h] char v93; // [esp+34h] [ebp-64h] int *v94; // [esp+38h] [ebp-60h] unsigned int v95; // [esp+38h] [ebp-60h] std::locale::facet *v96; // [esp+3Ch] [ebp-5Ch] std::locale::facet *v97; // [esp+3Ch] [ebp-5Ch] int lpuexcpt; // [esp+40h] [ebp-58h] char lpuexcpta; // [esp+40h] [ebp-58h] char lpuexcptb; // [esp+40h] [ebp-58h] std::string *lpuexcptc; // [esp+40h] [ebp-58h] char lpuexcptd; // [esp+40h] [ebp-58h] bool lpuexcpte; // [esp+40h] [ebp-58h] char lpuexcptf; // [esp+40h] [ebp-58h] std::string *lpuexcptg; // [esp+40h] [ebp-58h] __int64 lpuexcpth; // [esp+40h] [ebp-58h] int v107; // [esp+48h] [ebp-50h] char v108[5]; // [esp+83h] [ebp-15h] BYREF int v109; // [esp+88h] [ebp-10h] BYREF int v110[2]; // [esp+8Ch] [ebp-Ch] lpuexcpt = a4 + 108; v73 = std::use_facet>(a4 + 108); v96 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * (_DWORD)v96); v107 = *v94; if ( !*v94 ) { v64 = operator new(0x54u); v64[1] = 0; *v64 = &off_5606F4; v64[2] = 0; v64[3] = 0; *((_BYTE *)v64 + 16) = 0; *(_DWORD *)((char *)v64 + 18) = 0; v64[6] = 0; v64[7] = 0; v64[8] = 0; v64[9] = 0; v64[10] = 0; v64[11] = 0; v64[12] = 0; v64[13] = 0; v64[14] = 0; *((_BYTE *)v64 + 82) = 0; v71 = (std::locale::_Impl *)v64; std::__moneypunct_cache::_M_cache((int)v64, lpuexcpt); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v71, v96, v69); v107 = *v94; } if ( *(_DWORD *)(v107 + 36) ) v76 = *(_DWORD *)(v107 + 44) != 0; else v76 = 0; *(_DWORD *)&v108[1] = std::string::_S_construct(0, 0); if ( *(_BYTE *)(v107 + 16) ) std::string::reserve((int *)&v108[1], (std::string *)0x20, v66); v109 = (int)std::string::_S_construct(0, 0); std::string::reserve(&v109, (std::string *)0x20, v67); v78 = 0; v75 = 0; v77 = 0; v110[0] = *(_DWORD *)(v107 + 56); v97 = 0; v72 = 0; v74 = 0; while ( 2 ) { switch ( *((_BYTE *)v110 + v75) ) { case 0: v87 = 1; goto LABEL_10; case 1: if ( std::istreambuf_iterator::equal(&a1, (int)&a2) || (v54 = std::istreambuf_iterator::_M_get((int)&a1), (v87 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v73 + 8))(v73, 32, v54)) == 0) ) { v87 = 0; if ( v75 == 3 ) goto LABEL_11; } else { std::wstreambuf::sbumpc((_DWORD *)a1); WORD2(a1) = -1; LABEL_10: if ( v75 == 3 ) { LABEL_11: v6 = v87 & (v74 > 1); goto LABEL_12; } } v32 = WORD2(a1); v33 = (_DWORD *)a1; while ( 1 ) { lpuexcptf = v32 == -1; v85 = lpuexcptf & (v33 != 0); if ( v85 ) { v37 = (_WORD *)v33[2]; v38 = (unsigned int)v37 >= v33[3] ? (*(int (__fastcall **)(_DWORD *))(*v33 + 36))(v33) : *v37; lpuexcptf = 0; if ( v38 == -1 ) { LODWORD(a1) = 0; lpuexcptf = v85; } } v34 = a3 == -1; v84 = v34 & (a2 != 0); if ( v84 ) { v51 = (_WORD *)a2[2]; v52 = (unsigned int)v51 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v51; v34 = 0; if ( v52 == -1 ) { a2 = 0; v34 = v84; } } if ( lpuexcptf == v34 ) break; v35 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v53 = *(_WORD **)(a1 + 8); v35 = (unsigned int)v53 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v53; if ( v35 == 0xFFFF ) LODWORD(a1) = 0; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v73 + 8))(v73, 32, v35) ) break; v33 = (_DWORD *)a1; v36 = *(_DWORD *)(a1 + 8); if ( v36 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v33 = (_DWORD *)a1; } else { *(_DWORD *)(a1 + 8) = v36 + 2; } WORD2(a1) = -1; v32 = -1; } LABEL_120: lpuexcptd = v87 ^ 1; goto LABEL_121; case 2: if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) goto LABEL_61; lpuexcptd = v75 == 0 || v74 > 1; if ( lpuexcptd ) goto LABEL_61; if ( v75 != 1 ) { v87 = 1; if ( v75 != 2 ) goto LABEL_121; if ( HIBYTE(v110[0]) == 4 ) goto LABEL_61; v24 = 3; if ( HIBYTE(v110[0]) == 3 && v76 ) goto LABEL_61; LABEL_123: v75 = v24; continue; } if ( !v76 && LOBYTE(v110[0]) != 3 && BYTE2(v110[0]) != 1 ) { v24 = 2; goto LABEL_123; } LABEL_61: v25 = (_DWORD *)a1; v92 = 0; v83 = *(_DWORD *)(v107 + 28); for ( i = WORD2(a1); ; i = -1 ) { lpuexcpte = i == -1; v80 = lpuexcpte && v25 != 0; if ( v80 ) { v30 = (_WORD *)v25[2]; v31 = (unsigned int)v30 >= v25[3] ? (*(int (__fastcall **)(_DWORD *))(*v25 + 36))(v25) : *v30; lpuexcpte = 0; if ( v31 == -1 ) { LODWORD(a1) = 0; lpuexcpte = v80; } } v27 = a3 == -1; v79 = v27 && a2 != 0; if ( v79 ) { v59 = (_WORD *)a2[2]; v60 = (unsigned int)v59 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v59; v27 = 0; if ( v60 == -1 ) { a2 = 0; v27 = v79; } } lpuexcptd = (v92 < v83) & (lpuexcpte ^ v27); if ( !lpuexcptd ) break; v28 = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF && ((v61 = *(__int16 **)(a1 + 8), (unsigned int)v61 >= *(_DWORD *)(a1 + 12)) ? (v28 = (*(int (**)(void))(*(_DWORD *)a1 + 36))()) : (v28 = *v61), v28 == -1) ) { LODWORD(a1) = 0; if ( *(_WORD *)(*(_DWORD *)(v107 + 24) + 2 * v92) != 0xFFFF ) goto LABEL_171; } else if ( *(_WORD *)(*(_DWORD *)(v107 + 24) + 2 * v92) != v28 ) { goto LABEL_171; } v25 = (_DWORD *)a1; v29 = *(_DWORD *)(a1 + 8); if ( v29 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v25 = (_DWORD *)a1; } else { *(_DWORD *)(a1 + 8) = v29 + 2; } ++v92; WORD2(a1) = -1; } if ( v92 == v83 ) { LABEL_181: v87 = 1; } else { LABEL_171: if ( v92 ) goto LABEL_102; v87 = (*(_BYTE *)(a4 + 13) & 2) == 0; lpuexcptd = (*(_BYTE *)(a4 + 13) & 2) != 0; } LABEL_121: v24 = v75 + 1; if ( v75 + 1 <= 3 && !lpuexcptd ) goto LABEL_123; v6 = v87 & (v74 > 1); LABEL_12: if ( !v6 ) { if ( v87 ) { if ( *(_DWORD *)(v109 - 12) > 1u ) goto LABEL_182; goto LABEL_150; } goto LABEL_102; } if ( v77 ) v7 = *(_DWORD *)(v107 + 40); else v7 = *(_DWORD *)(v107 + 32); v88 = v7; v8 = WORD2(a1); v9 = (_DWORD *)a1; v95 = 1; while ( 2 ) { lpuexcpta = v8 == -1; v82 = lpuexcpta & (v9 != 0); if ( v82 ) { v13 = (_WORD *)v9[2]; v14 = (unsigned int)v13 >= v9[3] ? (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) : *v13; lpuexcpta = 0; if ( v14 == -1 ) { LODWORD(a1) = 0; lpuexcpta = v82; } } v10 = a3 == -1; v81 = v10 & (a2 != 0); if ( !v81 || ((v55 = (__int16 *)a2[2], (unsigned int)v55 >= a2[3]) ? (v56 = (*(int (**)(void))(*a2 + 36))()) : (v56 = *v55), v10 = 0, v56 != -1) ) { if ( v95 >= v74 ) break; goto LABEL_18; } v10 = v81; a2 = 0; if ( v95 < v74 ) { LABEL_18: if ( lpuexcpta == v10 ) break; v11 = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v58 = *(_WORD **)(a1 + 8); v11 = (unsigned int)v58 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v58; if ( v11 == -1 ) LODWORD(a1) = 0; } if ( *(_WORD *)(v88 + 2 * v95) != v11 ) goto LABEL_102; v9 = (_DWORD *)a1; v12 = *(_DWORD *)(a1 + 8); if ( v12 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v9 = (_DWORD *)a1; } else { *(_DWORD *)(a1 + 8) = v12 + 2; } ++v95; WORD2(a1) = -1; v8 = -1; continue; } break; } if ( v95 != v74 ) goto LABEL_102; if ( *(_DWORD *)(v109 - 12) <= 1u ) goto LABEL_150; LABEL_182: first_not_of = std::string::find_first_not_of(&v109, (std::string *)0x30, 0, (unsigned int)v108); if ( first_not_of ) { v63 = *(_DWORD *)(v109 - 12); if ( first_not_of == -1 ) first_not_of = v63 - 1; if ( first_not_of > v63 ) first_not_of = *(_DWORD *)(v109 - 12); std::string::_M_mutate((char **)&v109, 0, first_not_of, 0, v70); } LABEL_150: if ( v77 ) { v65 = (int *)v109; if ( *(int *)(v109 - 4) >= 0 ) { std::string::_M_leak_hard((char **)&v109); v65 = (int *)v109; } if ( *(_BYTE *)v65 != 48 ) { if ( *(v65 - 1) >= 0 ) std::string::_M_leak_hard((char **)&v109); std::string::_M_replace_aux((char **)&v109, 0, 0, 1u, 45, (char)v71); *(_DWORD *)(v109 - 4) = -1; } } if ( *(_DWORD *)(*(_DWORD *)&v108[1] - 12) ) { v57 = (std::string *)(char)v97; if ( v78 ) v57 = (std::string *)v72; std::string::push_back((int *)&v108[1], v57, (char)v68); if ( !(unsigned __int8)std::__verify_grouping( *(char **)(v107 + 8), *(_DWORD *)(v107 + 12), (const char **)&v108[1]) ) *a5 |= 4u; } if ( v78 && *(std::locale::facet **)(v107 + 48) != v97 ) { LABEL_102: *a5 |= 4u; goto LABEL_103; } std::string::swap(a6, (std::string *)&v109, v68); LABEL_103: if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) *a5 |= 2u; lpuexcpth = a1; v42 = v109; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v109 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_179; } else { v43 = *(_DWORD *)(v109 - 4); *(_DWORD *)(v109 - 4) = v43 - 1; if ( v43 > 0 ) goto LABEL_107; LABEL_179: std::string::_Rep::_M_destroy((void *)(v42 - 12), (int)v108); } LABEL_107: v44 = *(_DWORD *)&v108[1]; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v108[1] - 4), 0xFFFFFFFF) > 0 ) return lpuexcpth; LABEL_177: std::string::_Rep::_M_destroy((void *)(v44 - 12), (int)&v109); return lpuexcpth; } v45 = *(_DWORD *)(*(_DWORD *)&v108[1] - 4); *(_DWORD *)(*(_DWORD *)&v108[1] - 4) = v45 - 1; if ( v45 <= 0 ) goto LABEL_177; return lpuexcpth; case 3: if ( *(_DWORD *)(v107 + 36) ) { lpuexcptd = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !lpuexcptd && **(_WORD **)(v107 + 32) == (unsigned __int16)std::istreambuf_iterator::_M_get((int)&a1) ) { v74 = *(_DWORD *)(v107 + 36); std::wstreambuf::sbumpc((_DWORD *)a1); WORD2(a1) = -1; goto LABEL_181; } if ( !*(_DWORD *)(v107 + 44) ) { if ( !*(_DWORD *)(v107 + 36) ) goto LABEL_53; LABEL_137: lpuexcptd = 0; v87 = 1; v77 = 1; goto LABEL_121; } } else if ( !*(_DWORD *)(v107 + 44) ) { goto LABEL_53; } lpuexcptd = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( lpuexcptd || **(_WORD **)(v107 + 40) != (unsigned __int16)std::istreambuf_iterator::_M_get((int)&a1) ) { if ( !*(_DWORD *)(v107 + 36) || *(_DWORD *)(v107 + 44) ) { LABEL_53: lpuexcptd = v76; v87 = !v76; goto LABEL_121; } goto LABEL_137; } v74 = *(_DWORD *)(v107 + 44); std::wstreambuf::sbumpc((_DWORD *)a1); v87 = 1; WORD2(a1) = -1; v77 = 1; goto LABEL_121; case 4: v15 = WORD2(a1); v16 = (_DWORD *)a1; while ( 2 ) { lpuexcptb = v15 == -1; v89 = lpuexcptb & (v16 != 0); if ( v89 ) { v47 = (_WORD *)v16[2]; v48 = (unsigned int)v47 >= v16[3] ? (*(int (__fastcall **)(_DWORD *))(*v16 + 36))(v16) : *v47; lpuexcptb = 0; if ( v48 == -1 ) { LODWORD(a1) = 0; lpuexcptb = v89; } } v17 = a3 == -1; v90 = v17 & (a2 != 0); if ( v90 && ((v40 = (__int16 *)a2[2], (unsigned int)v40 >= a2[3]) ? (v41 = (*(int (**)(void))(*a2 + 36))()) : (v41 = *v40), v17 = 0, v41 == -1) ) { a2 = 0; if ( lpuexcptb == v90 ) goto LABEL_100; } else if ( lpuexcptb == v17 ) { goto LABEL_100; } v18 = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v49 = *(_WORD **)(a1 + 8); v18 = (unsigned int)v49 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v49; if ( v18 == 0xFFFF ) LODWORD(a1) = 0; } v19 = (_WORD *)(v107 + 62); do { if ( v18 == *v19 ) { v93 = std::money_base::_S_atoms[((int)v19 - v107 - 60) >> 1]; v86 = *(_DWORD *)(v109 - 12); lpuexcptg = (std::string *)(v86 + 1); if ( (unsigned int)(v86 + 1) > *(_DWORD *)(v109 - 8) || *(int *)(v109 - 4) > 0 ) std::string::reserve(&v109, lpuexcptg, (unsigned int)v68); v97 = (std::locale::facet *)((char *)v97 + 1); *(_BYTE *)(v109 + *(_DWORD *)(v109 - 12)) = v93; v39 = v109; *(_DWORD *)(v109 - 12) = lpuexcptg; *(_DWORD *)(v39 - 4) = 0; *(_BYTE *)(v39 + v86 + 1) = 0; v16 = (_DWORD *)a1; v23 = *(_DWORD *)(a1 + 8); if ( v23 < *(_DWORD *)(a1 + 12) ) goto LABEL_49; goto LABEL_95; } ++v19; } while ( v19 != (_WORD *)(v107 + 82) ); v20 = v78 | (*(_WORD *)(v107 + 18) != v18); if ( !v20 ) { if ( *(int *)(v107 + 48) > 0 ) { v50 = (char)v97; v78 = 1; v97 = 0; v72 = v50; goto LABEL_48; } v78 = 0; LABEL_100: v87 = 1; LABEL_101: if ( !*(_DWORD *)(v109 - 12) ) goto LABEL_102; goto LABEL_120; } v87 = *(_BYTE *)(v107 + 16); if ( v87 ) { if ( *(_WORD *)(v107 + 20) != v18 ) goto LABEL_101; if ( !v78 ) { if ( v97 ) { v91 = *(_DWORD *)(*(_DWORD *)&v108[1] - 12); lpuexcptc = (std::string *)(v91 + 1); if ( (unsigned int)(v91 + 1) > *(_DWORD *)(*(_DWORD *)&v108[1] - 8) || *(int *)(*(_DWORD *)&v108[1] - 4) > 0 ) { std::string::reserve((int *)&v108[1], lpuexcptc, (unsigned int)v68); } v21 = (char)v97; v97 = 0; *(_BYTE *)(*(_DWORD *)&v108[1] + *(_DWORD *)(*(_DWORD *)&v108[1] - 12)) = v21; v22 = *(_DWORD *)&v108[1]; *(_DWORD *)(*(_DWORD *)&v108[1] - 12) = lpuexcptc; *(_DWORD *)(v22 - 4) = 0; *(_BYTE *)(v22 + v91 + 1) = 0; LABEL_48: v16 = (_DWORD *)a1; v23 = *(_DWORD *)(a1 + 8); if ( v23 < *(_DWORD *)(a1 + 12) ) { LABEL_49: v16[2] = v23 + 2; LABEL_50: WORD2(a1) = -1; v15 = -1; continue; } LABEL_95: (*(void (__fastcall **)(_DWORD *))(*v16 + 40))(v16); v16 = (_DWORD *)a1; goto LABEL_50; } v87 = 0; goto LABEL_101; } v20 = v78; } break; } v87 = v20; if ( !*(_DWORD *)(v109 - 12) ) goto LABEL_102; goto LABEL_120; default: lpuexcptd = 0; v87 = 1; goto LABEL_121; } } } // 4C110C: variable 'v69' is possibly undefined // 4C042D: variable 'v66' is possibly undefined // 4C046B: variable 'v67' is possibly undefined // 4C06D2: variable 'v68' is possibly undefined // 4C0F9B: variable 'v70' is possibly undefined // 4C11D8: variable 'v71' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53F588: using guessed type char *std::money_base::_S_atoms; // 53F594: using guessed type signed __int32 std::moneypunct::id; // 5606F4: using guessed type int (*off_5606F4)(); //----- (004C13B0) -------------------------------------------------------- __int64 __stdcall std::money_get>::_M_extract( __int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6) { char v6; // al int v7; // eax __int16 v8; // ax _DWORD *v9; // ecx char v10; // al __int16 v11; // ax unsigned int v12; // eax _WORD *v13; // eax __int16 v14; // ax __int16 v15; // ax _DWORD *v16; // ecx char v17; // al unsigned __int16 v18; // dx _WORD *v19; // eax char v20; // al char v21; // cl int v22; // eax unsigned int v23; // eax int v24; // eax _DWORD *v25; // ecx __int16 i; // ax bool v27; // al __int16 v28; // ax unsigned int v29; // eax _WORD *v30; // eax __int16 v31; // ax __int16 v32; // ax _DWORD *v33; // ecx char v34; // al unsigned __int16 v35; // ax unsigned int v36; // eax _WORD *v37; // eax __int16 v38; // ax int v39; // eax __int16 *v40; // eax __int16 v41; // dx int v42; // eax int v43; // edx int v44; // eax int v45; // edx _WORD *v47; // eax __int16 v48; // ax _WORD *v49; // eax char v50; // al _WORD *v51; // eax __int16 v52; // dx _WORD *v53; // eax unsigned __int16 v54; // ax __int16 *v55; // eax __int16 v56; // dx std::string *v57; // eax _WORD *v58; // eax _WORD *v59; // eax __int16 v60; // dx __int16 *v61; // eax unsigned int first_not_of; // eax unsigned int v63; // edx _DWORD *v64; // eax int *v65; // eax unsigned int v66; // [esp+4h] [ebp-94h] unsigned int v67; // [esp+4h] [ebp-94h] std::string *v68; // [esp+4h] [ebp-94h] unsigned int v69; // [esp+8h] [ebp-90h] unsigned int v70; // [esp+Ch] [ebp-8Ch] std::locale::_Impl *v71; // [esp+10h] [ebp-88h] char v72; // [esp+14h] [ebp-84h] void *v73; // [esp+18h] [ebp-80h] unsigned int v74; // [esp+1Ch] [ebp-7Ch] int v75; // [esp+24h] [ebp-74h] bool v76; // [esp+29h] [ebp-6Fh] char v77; // [esp+2Ah] [ebp-6Eh] char v78; // [esp+2Bh] [ebp-6Dh] bool v79; // [esp+2Ch] [ebp-6Ch] bool v80; // [esp+2Ch] [ebp-6Ch] char v81; // [esp+30h] [ebp-68h] char v82; // [esp+30h] [ebp-68h] unsigned int v83; // [esp+30h] [ebp-68h] char v84; // [esp+30h] [ebp-68h] char v85; // [esp+30h] [ebp-68h] int v86; // [esp+30h] [ebp-68h] char v87; // [esp+34h] [ebp-64h] int v88; // [esp+34h] [ebp-64h] char v89; // [esp+34h] [ebp-64h] char v90; // [esp+34h] [ebp-64h] int v91; // [esp+34h] [ebp-64h] unsigned int v92; // [esp+34h] [ebp-64h] char v93; // [esp+34h] [ebp-64h] int *v94; // [esp+38h] [ebp-60h] unsigned int v95; // [esp+38h] [ebp-60h] std::locale::facet *v96; // [esp+3Ch] [ebp-5Ch] std::locale::facet *v97; // [esp+3Ch] [ebp-5Ch] int lpuexcpt; // [esp+40h] [ebp-58h] char lpuexcpta; // [esp+40h] [ebp-58h] char lpuexcptb; // [esp+40h] [ebp-58h] std::string *lpuexcptc; // [esp+40h] [ebp-58h] char lpuexcptd; // [esp+40h] [ebp-58h] bool lpuexcpte; // [esp+40h] [ebp-58h] char lpuexcptf; // [esp+40h] [ebp-58h] std::string *lpuexcptg; // [esp+40h] [ebp-58h] __int64 lpuexcpth; // [esp+40h] [ebp-58h] int v107; // [esp+48h] [ebp-50h] char v108[5]; // [esp+83h] [ebp-15h] BYREF int v109; // [esp+88h] [ebp-10h] BYREF int v110[2]; // [esp+8Ch] [ebp-Ch] lpuexcpt = a4 + 108; v73 = std::use_facet>(a4 + 108); v96 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * (_DWORD)v96); v107 = *v94; if ( !*v94 ) { v64 = operator new(0x54u); v64[1] = 0; *v64 = &off_560704; v64[2] = 0; v64[3] = 0; *((_BYTE *)v64 + 16) = 0; *(_DWORD *)((char *)v64 + 18) = 0; v64[6] = 0; v64[7] = 0; v64[8] = 0; v64[9] = 0; v64[10] = 0; v64[11] = 0; v64[12] = 0; v64[13] = 0; v64[14] = 0; *((_BYTE *)v64 + 82) = 0; v71 = (std::locale::_Impl *)v64; std::__moneypunct_cache::_M_cache((int)v64, lpuexcpt); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v71, v96, v69); v107 = *v94; } if ( *(_DWORD *)(v107 + 36) ) v76 = *(_DWORD *)(v107 + 44) != 0; else v76 = 0; *(_DWORD *)&v108[1] = std::string::_S_construct(0, 0); if ( *(_BYTE *)(v107 + 16) ) std::string::reserve((int *)&v108[1], (std::string *)0x20, v66); v109 = (int)std::string::_S_construct(0, 0); std::string::reserve(&v109, (std::string *)0x20, v67); v78 = 0; v75 = 0; v77 = 0; v110[0] = *(_DWORD *)(v107 + 56); v97 = 0; v72 = 0; v74 = 0; while ( 2 ) { switch ( *((_BYTE *)v110 + v75) ) { case 0: v87 = 1; goto LABEL_10; case 1: if ( std::istreambuf_iterator::equal(&a1, (int)&a2) || (v54 = std::istreambuf_iterator::_M_get((int)&a1), (v87 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v73 + 8))(v73, 32, v54)) == 0) ) { v87 = 0; if ( v75 == 3 ) goto LABEL_11; } else { std::wstreambuf::sbumpc((_DWORD *)a1); WORD2(a1) = -1; LABEL_10: if ( v75 == 3 ) { LABEL_11: v6 = v87 & (v74 > 1); goto LABEL_12; } } v32 = WORD2(a1); v33 = (_DWORD *)a1; while ( 1 ) { lpuexcptf = v32 == -1; v85 = lpuexcptf & (v33 != 0); if ( v85 ) { v37 = (_WORD *)v33[2]; v38 = (unsigned int)v37 >= v33[3] ? (*(int (__fastcall **)(_DWORD *))(*v33 + 36))(v33) : *v37; lpuexcptf = 0; if ( v38 == -1 ) { LODWORD(a1) = 0; lpuexcptf = v85; } } v34 = a3 == -1; v84 = v34 & (a2 != 0); if ( v84 ) { v51 = (_WORD *)a2[2]; v52 = (unsigned int)v51 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v51; v34 = 0; if ( v52 == -1 ) { a2 = 0; v34 = v84; } } if ( lpuexcptf == v34 ) break; v35 = WORD2(a1); if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) { v53 = *(_WORD **)(a1 + 8); v35 = (unsigned int)v53 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v53; if ( v35 == 0xFFFF ) LODWORD(a1) = 0; } if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v73 + 8))(v73, 32, v35) ) break; v33 = (_DWORD *)a1; v36 = *(_DWORD *)(a1 + 8); if ( v36 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v33 = (_DWORD *)a1; } else { *(_DWORD *)(a1 + 8) = v36 + 2; } WORD2(a1) = -1; v32 = -1; } LABEL_120: lpuexcptd = v87 ^ 1; goto LABEL_121; case 2: if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) goto LABEL_61; lpuexcptd = v75 == 0 || v74 > 1; if ( lpuexcptd ) goto LABEL_61; if ( v75 != 1 ) { v87 = 1; if ( v75 != 2 ) goto LABEL_121; if ( HIBYTE(v110[0]) == 4 ) goto LABEL_61; v24 = 3; if ( HIBYTE(v110[0]) == 3 && v76 ) goto LABEL_61; LABEL_123: v75 = v24; continue; } if ( !v76 && LOBYTE(v110[0]) != 3 && BYTE2(v110[0]) != 1 ) { v24 = 2; goto LABEL_123; } LABEL_61: v25 = (_DWORD *)a1; v92 = 0; v83 = *(_DWORD *)(v107 + 28); for ( i = WORD2(a1); ; i = -1 ) { lpuexcpte = i == -1; v80 = lpuexcpte && v25 != 0; if ( v80 ) { v30 = (_WORD *)v25[2]; v31 = (unsigned int)v30 >= v25[3] ? (*(int (__fastcall **)(_DWORD *))(*v25 + 36))(v25) : *v30; lpuexcpte = 0; if ( v31 == -1 ) { LODWORD(a1) = 0; lpuexcpte = v80; } } v27 = a3 == -1; v79 = v27 && a2 != 0; if ( v79 ) { v59 = (_WORD *)a2[2]; v60 = (unsigned int)v59 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v59; v27 = 0; if ( v60 == -1 ) { a2 = 0; v27 = v79; } } lpuexcptd = (v92 < v83) & (lpuexcpte ^ v27); if ( !lpuexcptd ) break; v28 = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF && ((v61 = *(__int16 **)(a1 + 8), (unsigned int)v61 >= *(_DWORD *)(a1 + 12)) ? (v28 = (*(int (**)(void))(*(_DWORD *)a1 + 36))()) : (v28 = *v61), v28 == -1) ) { LODWORD(a1) = 0; if ( *(_WORD *)(*(_DWORD *)(v107 + 24) + 2 * v92) != 0xFFFF ) goto LABEL_171; } else if ( *(_WORD *)(*(_DWORD *)(v107 + 24) + 2 * v92) != v28 ) { goto LABEL_171; } v25 = (_DWORD *)a1; v29 = *(_DWORD *)(a1 + 8); if ( v29 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v25 = (_DWORD *)a1; } else { *(_DWORD *)(a1 + 8) = v29 + 2; } ++v92; WORD2(a1) = -1; } if ( v92 == v83 ) { LABEL_181: v87 = 1; } else { LABEL_171: if ( v92 ) goto LABEL_102; v87 = (*(_BYTE *)(a4 + 13) & 2) == 0; lpuexcptd = (*(_BYTE *)(a4 + 13) & 2) != 0; } LABEL_121: v24 = v75 + 1; if ( v75 + 1 <= 3 && !lpuexcptd ) goto LABEL_123; v6 = v87 & (v74 > 1); LABEL_12: if ( !v6 ) { if ( v87 ) { if ( *(_DWORD *)(v109 - 12) > 1u ) goto LABEL_182; goto LABEL_150; } goto LABEL_102; } if ( v77 ) v7 = *(_DWORD *)(v107 + 40); else v7 = *(_DWORD *)(v107 + 32); v88 = v7; v8 = WORD2(a1); v9 = (_DWORD *)a1; v95 = 1; while ( 2 ) { lpuexcpta = v8 == -1; v82 = lpuexcpta & (v9 != 0); if ( v82 ) { v13 = (_WORD *)v9[2]; v14 = (unsigned int)v13 >= v9[3] ? (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) : *v13; lpuexcpta = 0; if ( v14 == -1 ) { LODWORD(a1) = 0; lpuexcpta = v82; } } v10 = a3 == -1; v81 = v10 & (a2 != 0); if ( !v81 || ((v55 = (__int16 *)a2[2], (unsigned int)v55 >= a2[3]) ? (v56 = (*(int (**)(void))(*a2 + 36))()) : (v56 = *v55), v10 = 0, v56 != -1) ) { if ( v95 >= v74 ) break; goto LABEL_18; } v10 = v81; a2 = 0; if ( v95 < v74 ) { LABEL_18: if ( lpuexcpta == v10 ) break; v11 = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v58 = *(_WORD **)(a1 + 8); v11 = (unsigned int)v58 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v58; if ( v11 == -1 ) LODWORD(a1) = 0; } if ( *(_WORD *)(v88 + 2 * v95) != v11 ) goto LABEL_102; v9 = (_DWORD *)a1; v12 = *(_DWORD *)(a1 + 8); if ( v12 >= *(_DWORD *)(a1 + 12) ) { (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); v9 = (_DWORD *)a1; } else { *(_DWORD *)(a1 + 8) = v12 + 2; } ++v95; WORD2(a1) = -1; v8 = -1; continue; } break; } if ( v95 != v74 ) goto LABEL_102; if ( *(_DWORD *)(v109 - 12) <= 1u ) goto LABEL_150; LABEL_182: first_not_of = std::string::find_first_not_of(&v109, (std::string *)0x30, 0, (unsigned int)v108); if ( first_not_of ) { v63 = *(_DWORD *)(v109 - 12); if ( first_not_of == -1 ) first_not_of = v63 - 1; if ( first_not_of > v63 ) first_not_of = *(_DWORD *)(v109 - 12); std::string::_M_mutate((char **)&v109, 0, first_not_of, 0, v70); } LABEL_150: if ( v77 ) { v65 = (int *)v109; if ( *(int *)(v109 - 4) >= 0 ) { std::string::_M_leak_hard((char **)&v109); v65 = (int *)v109; } if ( *(_BYTE *)v65 != 48 ) { if ( *(v65 - 1) >= 0 ) std::string::_M_leak_hard((char **)&v109); std::string::_M_replace_aux((char **)&v109, 0, 0, 1u, 45, (char)v71); *(_DWORD *)(v109 - 4) = -1; } } if ( *(_DWORD *)(*(_DWORD *)&v108[1] - 12) ) { v57 = (std::string *)(char)v97; if ( v78 ) v57 = (std::string *)v72; std::string::push_back((int *)&v108[1], v57, (char)v68); if ( !(unsigned __int8)std::__verify_grouping( *(char **)(v107 + 8), *(_DWORD *)(v107 + 12), (const char **)&v108[1]) ) *a5 |= 4u; } if ( v78 && *(std::locale::facet **)(v107 + 48) != v97 ) { LABEL_102: *a5 |= 4u; goto LABEL_103; } std::string::swap(a6, (std::string *)&v109, v68); LABEL_103: if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) *a5 |= 2u; lpuexcpth = a1; v42 = v109; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v109 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_179; } else { v43 = *(_DWORD *)(v109 - 4); *(_DWORD *)(v109 - 4) = v43 - 1; if ( v43 > 0 ) goto LABEL_107; LABEL_179: std::string::_Rep::_M_destroy((void *)(v42 - 12), (int)v108); } LABEL_107: v44 = *(_DWORD *)&v108[1]; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v108[1] - 4), 0xFFFFFFFF) > 0 ) return lpuexcpth; LABEL_177: std::string::_Rep::_M_destroy((void *)(v44 - 12), (int)&v109); return lpuexcpth; } v45 = *(_DWORD *)(*(_DWORD *)&v108[1] - 4); *(_DWORD *)(*(_DWORD *)&v108[1] - 4) = v45 - 1; if ( v45 <= 0 ) goto LABEL_177; return lpuexcpth; case 3: if ( *(_DWORD *)(v107 + 36) ) { lpuexcptd = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( !lpuexcptd && **(_WORD **)(v107 + 32) == (unsigned __int16)std::istreambuf_iterator::_M_get((int)&a1) ) { v74 = *(_DWORD *)(v107 + 36); std::wstreambuf::sbumpc((_DWORD *)a1); WORD2(a1) = -1; goto LABEL_181; } if ( !*(_DWORD *)(v107 + 44) ) { if ( !*(_DWORD *)(v107 + 36) ) goto LABEL_53; LABEL_137: lpuexcptd = 0; v87 = 1; v77 = 1; goto LABEL_121; } } else if ( !*(_DWORD *)(v107 + 44) ) { goto LABEL_53; } lpuexcptd = std::istreambuf_iterator::equal(&a1, (int)&a2); if ( lpuexcptd || **(_WORD **)(v107 + 40) != (unsigned __int16)std::istreambuf_iterator::_M_get((int)&a1) ) { if ( !*(_DWORD *)(v107 + 36) || *(_DWORD *)(v107 + 44) ) { LABEL_53: lpuexcptd = v76; v87 = !v76; goto LABEL_121; } goto LABEL_137; } v74 = *(_DWORD *)(v107 + 44); std::wstreambuf::sbumpc((_DWORD *)a1); v87 = 1; WORD2(a1) = -1; v77 = 1; goto LABEL_121; case 4: v15 = WORD2(a1); v16 = (_DWORD *)a1; while ( 2 ) { lpuexcptb = v15 == -1; v89 = lpuexcptb & (v16 != 0); if ( v89 ) { v47 = (_WORD *)v16[2]; v48 = (unsigned int)v47 >= v16[3] ? (*(int (__fastcall **)(_DWORD *))(*v16 + 36))(v16) : *v47; lpuexcptb = 0; if ( v48 == -1 ) { LODWORD(a1) = 0; lpuexcptb = v89; } } v17 = a3 == -1; v90 = v17 & (a2 != 0); if ( v90 && ((v40 = (__int16 *)a2[2], (unsigned int)v40 >= a2[3]) ? (v41 = (*(int (**)(void))(*a2 + 36))()) : (v41 = *v40), v17 = 0, v41 == -1) ) { a2 = 0; if ( lpuexcptb == v90 ) goto LABEL_100; } else if ( lpuexcptb == v17 ) { goto LABEL_100; } v18 = WORD2(a1); if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) { v49 = *(_WORD **)(a1 + 8); v18 = (unsigned int)v49 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v49; if ( v18 == 0xFFFF ) LODWORD(a1) = 0; } v19 = (_WORD *)(v107 + 62); do { if ( v18 == *v19 ) { v93 = std::money_base::_S_atoms[((int)v19 - v107 - 60) >> 1]; v86 = *(_DWORD *)(v109 - 12); lpuexcptg = (std::string *)(v86 + 1); if ( (unsigned int)(v86 + 1) > *(_DWORD *)(v109 - 8) || *(int *)(v109 - 4) > 0 ) std::string::reserve(&v109, lpuexcptg, (unsigned int)v68); v97 = (std::locale::facet *)((char *)v97 + 1); *(_BYTE *)(v109 + *(_DWORD *)(v109 - 12)) = v93; v39 = v109; *(_DWORD *)(v109 - 12) = lpuexcptg; *(_DWORD *)(v39 - 4) = 0; *(_BYTE *)(v39 + v86 + 1) = 0; v16 = (_DWORD *)a1; v23 = *(_DWORD *)(a1 + 8); if ( v23 < *(_DWORD *)(a1 + 12) ) goto LABEL_49; goto LABEL_95; } ++v19; } while ( v19 != (_WORD *)(v107 + 82) ); v20 = v78 | (*(_WORD *)(v107 + 18) != v18); if ( !v20 ) { if ( *(int *)(v107 + 48) > 0 ) { v50 = (char)v97; v78 = 1; v97 = 0; v72 = v50; goto LABEL_48; } v78 = 0; LABEL_100: v87 = 1; LABEL_101: if ( !*(_DWORD *)(v109 - 12) ) goto LABEL_102; goto LABEL_120; } v87 = *(_BYTE *)(v107 + 16); if ( v87 ) { if ( *(_WORD *)(v107 + 20) != v18 ) goto LABEL_101; if ( !v78 ) { if ( v97 ) { v91 = *(_DWORD *)(*(_DWORD *)&v108[1] - 12); lpuexcptc = (std::string *)(v91 + 1); if ( (unsigned int)(v91 + 1) > *(_DWORD *)(*(_DWORD *)&v108[1] - 8) || *(int *)(*(_DWORD *)&v108[1] - 4) > 0 ) { std::string::reserve((int *)&v108[1], lpuexcptc, (unsigned int)v68); } v21 = (char)v97; v97 = 0; *(_BYTE *)(*(_DWORD *)&v108[1] + *(_DWORD *)(*(_DWORD *)&v108[1] - 12)) = v21; v22 = *(_DWORD *)&v108[1]; *(_DWORD *)(*(_DWORD *)&v108[1] - 12) = lpuexcptc; *(_DWORD *)(v22 - 4) = 0; *(_BYTE *)(v22 + v91 + 1) = 0; LABEL_48: v16 = (_DWORD *)a1; v23 = *(_DWORD *)(a1 + 8); if ( v23 < *(_DWORD *)(a1 + 12) ) { LABEL_49: v16[2] = v23 + 2; LABEL_50: WORD2(a1) = -1; v15 = -1; continue; } LABEL_95: (*(void (__fastcall **)(_DWORD *))(*v16 + 40))(v16); v16 = (_DWORD *)a1; goto LABEL_50; } v87 = 0; goto LABEL_101; } v20 = v78; } break; } v87 = v20; if ( !*(_DWORD *)(v109 - 12) ) goto LABEL_102; goto LABEL_120; default: lpuexcptd = 0; v87 = 1; goto LABEL_121; } } } // 4C215C: variable 'v69' is possibly undefined // 4C147D: variable 'v66' is possibly undefined // 4C14BB: variable 'v67' is possibly undefined // 4C1722: variable 'v68' is possibly undefined // 4C1FEB: variable 'v70' is possibly undefined // 4C2228: variable 'v71' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53F588: using guessed type char *std::money_base::_S_atoms; // 53F598: using guessed type signed __int32 std::moneypunct::id; // 560704: using guessed type int (*off_560704)(); //----- (004C2400) -------------------------------------------------------- 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); } //----- (004C2410) -------------------------------------------------------- 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); } //----- (004C2420) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! struct _Unwind_Exception *__stdcall std::money_get>::do_get( __int64 a1, _DWORD *a2, __int16 a3, char a4, int a5, _DWORD *a6, int *a7) { struct _Unwind_Exception *v7; // eax int v8; // ecx unsigned int v9; // eax int v10; // eax int v11; // eax void *v13; // [esp+20h] [ebp-68h] unsigned int v14; // [esp+28h] [ebp-60h] struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-58h] int v16; // [esp+7Bh] [ebp-Dh] BYREF int v17[2]; // [esp+7Ch] [ebp-Ch] BYREF v13 = std::use_facet>(a5 + 108); v17[0] = (int)std::string::_S_construct(0, 0); if ( a4 ) v7 = (struct _Unwind_Exception *)std::money_get>::_M_extract( a1, a2, a3, a5, a6, v17); else v7 = (struct _Unwind_Exception *)std::money_get>::_M_extract( a1, a2, a3, a5, a6, v17); v8 = v17[0]; lpuexcpt = v7; v9 = *(_DWORD *)(v17[0] - 12); v14 = v9; if ( v9 ) { std::wstring::resize(a7, v9, 0); v10 = *a7; if ( *(int *)(*a7 - 4) >= 0 ) { std::wstring::_M_leak_hard((int **)a7); v10 = *a7; } (*(void (__thiscall **)(void *, int, unsigned int, int))(*(_DWORD *)v13 + 44))(v13, v17[0], v17[0] + v14, v10); v8 = v17[0]; } if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF) > 0 ) return lpuexcpt; LABEL_12: std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)&v16); return lpuexcpt; } v11 = *(_DWORD *)(v8 - 4); *(_DWORD *)(v8 - 4) = v11 - 1; if ( v11 <= 0 ) goto LABEL_12; return lpuexcpt; } // 4C2637: positive sp value 4 has been found // 53E1E4: using guessed type int _CRT_MT; //----- (004C2650) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! struct _Unwind_Exception *__stdcall std::money_get>::do_get( __int64 a1, _DWORD *a2, __int16 a3, char a4, int a5, _DWORD *a6, long double *a7) { struct _Unwind_Exception *v7; // eax char *v8; // ecx int v9; // eax struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-58h] char *String; // [esp+78h] [ebp-10h] BYREF int c_locale; // [esp+7Ch] [ebp-Ch] BYREF String = (char *)std::string::_S_construct(0, 0); if ( a4 ) v7 = (struct _Unwind_Exception *)std::money_get>::_M_extract( a1, a2, a3, a5, a6, (int *)&String); else v7 = (struct _Unwind_Exception *)std::money_get>::_M_extract( a1, a2, a3, a5, a6, (int *)&String); lpuexcpt = v7; c_locale = std::locale::facet::_S_get_c_locale(); std::__convert_to_v(String, a7, a6); v8 = String; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF) > 0 ) return lpuexcpt; LABEL_8: std::string::_Rep::_M_destroy(v8 - 12, (int)&c_locale); return lpuexcpt; } v9 = *((_DWORD *)String - 1); *((_DWORD *)String - 1) = v9 - 1; if ( v9 <= 0 ) goto LABEL_8; return lpuexcpt; } // 4C27E0: positive sp value 4 has been found // 53E1E4: using guessed type int _CRT_MT; //----- (004C2800) -------------------------------------------------------- int __thiscall std::money_put>::put( void *this, __int64 a2, unsigned __int8 a3, int a4, char a5, struct _Unwind_Exception **a6) { __int64 (__stdcall *v6)(__int64, char, int, char, struct _Unwind_Exception **); // edx v6 = *(__int64 (__stdcall **)(__int64, char, int, char, struct _Unwind_Exception **))(*(_DWORD *)this + 12); if ( v6 != std::money_put>::do_put ) return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, int, _DWORD, struct _Unwind_Exception **))v6)( a2, HIDWORD(a2), a3, a4, a5, a6); if ( a3 ) return std::money_put>::_M_insert(a2, a4, a5, a6); return std::money_put>::_M_insert(a2, a4, a5, a6); } //----- (004C28A0) -------------------------------------------------------- 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); } //----- (004C28C0) -------------------------------------------------------- __int64 __stdcall std::money_put>::do_put( __int64 a1, char a2, int a3, char a4, struct _Unwind_Exception **a5) { if ( a2 ) return std::money_put>::_M_insert(a1, a3, a4, a5); else return std::money_put>::_M_insert(a1, a3, a4, a5); } //----- (004C2930) -------------------------------------------------------- __int64 __thiscall std::money_put>::do_put( void *this, __int64 a2, int a3, int a4, int a5, long double a6) { void *v6; // esp void *v7; // esp int v8; // eax int v9; // eax void *v10; // esp void *v11; // esp char v12; // al void (__thiscall *v13)(_BYTE *, void *, char *, char *); // eax __int64 v14; // rax int *v15; // ecx int v16; // eax const std::locale *v18[22]; // [esp-30h] [ebp-C8h] BYREF char *v19; // [esp+28h] [ebp-70h] int v20; // [esp+2Ch] [ebp-6Ch] int v21; // [esp+30h] [ebp-68h] void *v22; // [esp+34h] [ebp-64h] char *v23; // [esp+38h] [ebp-60h] _BYTE *v24; // [esp+3Ch] [ebp-5Ch] __int64 Size; // [esp+40h] [ebp-58h] void *Src; // [esp+48h] [ebp-50h] char v27[5]; // [esp+87h] [ebp-11h] BYREF int *v28[3]; // [esp+8Ch] [ebp-Ch] BYREF v22 = this; v21 = a3; v20 = a5; std::locale::locale((volatile signed __int32 **)&v27[1], (volatile signed __int32 **)(a4 + 108), v18[13]); v24 = std::use_facet>((int)&v27[1]); v6 = alloca(80); v7 = alloca(80); LODWORD(Size) = v18; Src = v18; v28[0] = (int *)std::locale::facet::_S_get_c_locale(); v8 = std::__convert_from_v(v28, (char *)Size, 64, "%.*Lf", 0, a6); LODWORD(Size) = v8; if ( v8 > 63 ) { LODWORD(Size) = v8 + 1; v9 = 16 * ((unsigned int)(v8 + 28) >> 4); v10 = alloca(v9); v11 = alloca(v9); v23 = (char *)v18; Src = v18; v28[0] = (int *)std::locale::facet::_S_get_c_locale(); LODWORD(Size) = std::__convert_from_v(v28, v23, Size, "%.*Lf", 0, a6); } std::string::string(v28, Size, 0, (int)v27); v23 = (char *)v28[0]; if ( *(v28[0] - 1) >= 0 ) { std::string::_M_leak_hard((char **)v28); v23 = (char *)v28[0]; } v19 = (char *)Src + Size; v12 = v24[28]; if ( v12 == 1 ) goto LABEL_8; if ( v12 ) { v13 = *(void (__thiscall **)(_BYTE *, void *, char *, char *))(*(_DWORD *)v24 + 28); if ( (char *)v13 == (char *)std::ctype::do_widen ) goto LABEL_8; LABEL_19: v13(v24, Src, v19, v23); goto LABEL_10; } std::ctype::_M_widen_init((int)v24); v13 = *(void (__thiscall **)(_BYTE *, void *, char *, char *))(*(_DWORD *)v24 + 28); if ( (char *)v13 != (char *)std::ctype::do_widen ) goto LABEL_19; LABEL_8: if ( v19 != Src ) memcpy(v23, Src, Size); LABEL_10: if ( (_BYTE)v21 ) v14 = std::money_put>::_M_insert( a2, a4, v20, (struct _Unwind_Exception **)v28); else v14 = std::money_put>::_M_insert( a2, a4, v20, (struct _Unwind_Exception **)v28); Size = v14; v15 = v28[0]; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd(v28[0] - 1, 0xFFFFFFFF) > 0 ) goto LABEL_14; LABEL_17: std::string::_Rep::_M_destroy(v15 - 3, (int)v27); goto LABEL_14; } v16 = *(v28[0] - 1); *(v28[0] - 1) = v16 - 1; if ( v16 <= 0 ) goto LABEL_17; LABEL_14: std::locale::~locale((_DWORD **)&v27[1]); return Size; } // 53E1E4: using guessed type int _CRT_MT; //----- (004C2C40) -------------------------------------------------------- __int64 __stdcall std::money_put>::_M_insert( __int64 a1, int a2, char a3, struct _Unwind_Exception **a4) { int v4; // ecx char *v5; // edx struct _Unwind_Exception *v6; // eax unsigned __int8 *v7; // ecx int v9; // eax bool v10; // sf size_t v11; // eax _BYTE *v12; // eax int v13; // eax size_t v14; // edx size_t v15; // eax bool v16; // dl char v17; // al unsigned int v18; // ecx size_t v19; // edx int v20; // eax char v21; // dl int v22; // ebx _DWORD *v23; // eax unsigned int v24; // [esp+4h] [ebp-B4h] char v25; // [esp+4h] [ebp-B4h] unsigned int v26; // [esp+4h] [ebp-B4h] const std::string *v27; // [esp+4h] [ebp-B4h] unsigned int v28; // [esp+8h] [ebp-B0h] unsigned int *v29; // [esp+8h] [ebp-B0h] char *v30; // [esp+8h] [ebp-B0h] unsigned int v31; // [esp+8h] [ebp-B0h] unsigned int v32; // [esp+Ch] [ebp-ACh] char v33; // [esp+10h] [ebp-A8h] char v34; // [esp+28h] [ebp-90h] char *v35; // [esp+2Ch] [ebp-8Ch] std::locale::_Impl *v36; // [esp+30h] [ebp-88h] int v37; // [esp+34h] [ebp-84h] size_t v38; // [esp+34h] [ebp-84h] _BYTE *v39; // [esp+38h] [ebp-80h] bool v40; // [esp+38h] [ebp-80h] signed int v41; // [esp+3Ch] [ebp-7Ch] int v42; // [esp+3Ch] [ebp-7Ch] int *v43; // [esp+40h] [ebp-78h] char *v44; // [esp+40h] [ebp-78h] std::locale::facet *v45; // [esp+4Ch] [ebp-6Ch] std::locale::facet *v46; // [esp+4Ch] [ebp-6Ch] _DWORD *v47; // [esp+50h] [ebp-68h] size_t v48; // [esp+50h] [ebp-68h] size_t v49; // [esp+50h] [ebp-68h] __int64 v50; // [esp+54h] [ebp-64h] int v51; // [esp+5Ch] [ebp-5Ch] struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-58h] struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-58h] char *lpuexcptb; // [esp+60h] [ebp-58h] char lpuexcptc; // [esp+60h] [ebp-58h] char v56[5]; // [esp+A3h] [ebp-15h] BYREF unsigned int v57; // [esp+A8h] [ebp-10h] BYREF int v58; // [esp+ACh] [ebp-Ch] BYREF char v59; // [esp+B0h] [ebp-8h] BYREF v50 = a1; v47 = std::use_facet>(a2 + 108); v45 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v45); v51 = *v43; if ( !*v43 ) { v23 = operator new(0x44u); *v23 = &off_5606D4; v23[1] = 0; v23[2] = 0; v23[3] = 0; *((_WORD *)v23 + 8) = 0; *((_BYTE *)v23 + 18) = 0; v23[5] = 0; v23[6] = 0; v23[7] = 0; v23[8] = 0; v23[9] = 0; v23[10] = 0; v23[11] = 0; v23[12] = 0; v23[13] = 0; *((_BYTE *)v23 + 67) = 0; v36 = (std::locale::_Impl *)v23; std::__moneypunct_cache::_M_cache((int)v23, a2 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v36, v45, v28); v51 = *v43; } v4 = *((_DWORD *)*a4 - 3); lpuexcpt = *a4; if ( *(_BYTE *)*a4 == *(_BYTE *)(v51 + 56) ) { v58 = *(_DWORD *)(v51 + 52); if ( !v4 ) goto LABEL_10; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v44 = *(char **)(v51 + 36); v46 = *(std::locale::facet **)(v51 + 40); } else { v5 = *(char **)(v51 + 28); v58 = *(_DWORD *)(v51 + 48); v44 = v5; v46 = *(std::locale::facet **)(v51 + 32); } v6 = lpuexcpt; v7 = (unsigned __int8 *)lpuexcpt + v4; if ( v7 > (unsigned __int8 *)lpuexcpt ) { do { if ( (*(_BYTE *)(v47[6] + 2 * *(unsigned __int8 *)v6) & 8) == 0 ) break; v6 = (struct _Unwind_Exception *)((char *)v6 + 1); } while ( v7 != (unsigned __int8 *)v6 ); v48 = v6 - lpuexcpt; if ( v6 != lpuexcpt ) { v29 = &v57; *(_DWORD *)&v56[1] = std::string::_S_construct(0, 0); std::string::reserve((int *)&v56[1], (std::string *)(2 * v48), v24); v9 = *(_DWORD *)(v51 + 44); v41 = v48 - v9; if ( (int)(v48 - v9) > 0 ) { v10 = v9 < 0; v11 = v48 - v9; if ( v10 ) v11 = v48; v41 = v11; if ( *(_DWORD *)(v51 + 12) ) { std::string::_M_replace_aux((char **)&v56[1], 0, *(_DWORD *)(*(_DWORD *)&v56[1] - 12), 2 * v11, 0, v33); v37 = *(_DWORD *)(v51 + 12); v35 = *(char **)(v51 + 8); v34 = *(_BYTE *)(v51 + 18); v12 = *(_BYTE **)&v56[1]; if ( *(int *)(*(_DWORD *)&v56[1] - 4) >= 0 ) { std::string::_M_leak_hard((char **)&v56[1]); v12 = *(_BYTE **)&v56[1]; } v39 = std::__add_grouping(v12, v34, v35, v37, lpuexcpt, (_BYTE *)lpuexcpt + v41); v13 = *(_DWORD *)&v56[1]; if ( *(int *)(*(_DWORD *)&v56[1] - 4) >= 0 ) { std::string::_M_leak_hard((char **)&v56[1]); v13 = *(_DWORD *)&v56[1]; } v14 = (size_t)&v39[-v13]; v15 = *(_DWORD *)(v13 - 12); if ( v14 > v15 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v14, v15); std::string::_M_mutate((char **)&v56[1], v14, v15 - v14, 0, v32); v9 = *(_DWORD *)(v51 + 44); } else { std::string::assign((char **)&v56[1], lpuexcpt, v11, (unsigned int)&v57); v9 = *(_DWORD *)(v51 + 44); } } if ( v9 > 0 ) { std::string::push_back((int *)&v56[1], (std::string *)*(char *)(v51 + 17), v25); if ( v41 < 0 ) { std::string::append((int *)&v56[1], -v41, *(_BYTE *)(v51 + 57), (char)v29); std::string::append((int *)&v56[1], lpuexcpt, v48, v31); } else { std::string::append( (int *)&v56[1], (struct _Unwind_Exception *)((char *)lpuexcpt + v41), *(_DWORD *)(v51 + 44), (unsigned int)v29); } } v42 = *(_DWORD *)(a2 + 12) & 0xB0; lpuexcpta = (std::locale::facet *)((char *)v46 + *(_DWORD *)(*(_DWORD *)&v56[1] - 12)); if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) lpuexcpta = (std::locale::facet *)((char *)v46 + *(_DWORD *)(*(_DWORD *)&v56[1] - 12) + *(_DWORD *)(v51 + 24)); v30 = v56; v57 = (unsigned int)std::string::_S_construct(0, 0); std::string::reserve((int *)&v57, (std::string *)(2 * (_DWORD)lpuexcpta), v26); v49 = *(_DWORD *)(a2 + 8); v16 = v49 > (unsigned int)lpuexcpta && v42 == 16; v38 = v49 - (_DWORD)lpuexcpta; lpuexcptb = (char *)&v58; v40 = v16; do { switch ( *lpuexcptb ) { case 0: if ( v40 ) { v17 = a3; goto LABEL_33; } break; case 1: v17 = a3; if ( v40 ) LABEL_33: std::string::append((int *)&v57, v38, v17, (char)v30); else std::string::push_back((int *)&v57, (std::string *)a3, (char)v27); break; case 2: if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) std::string::append((int *)&v57, *(std::string **)(v51 + 20), *(_DWORD *)(v51 + 24), (unsigned int)v30); break; case 3: if ( v46 ) std::string::push_back((int *)&v57, (std::string *)*v44, (char)v27); break; case 4: std::string::append((int *)&v57, (std::string *)&v56[1], v27); break; default: break; } ++lpuexcptb; } while ( lpuexcptb != &v59 ); if ( (unsigned int)v46 > 1 ) { std::string::append((int *)&v57, (std::string *)(v44 + 1), (size_t)v46 - 1, (unsigned int)v30); v18 = v57; v19 = *(_DWORD *)(v57 - 12); if ( v49 > v19 ) goto LABEL_40; } else { v18 = v57; v19 = *(_DWORD *)(v57 - 12); if ( v49 > v19 ) { LABEL_40: if ( v42 == 32 ) std::string::append((int *)&v57, v49 - v19, a3, (char)v30); else std::string::_M_replace_aux((char **)&v57, 0, 0, v49 - v19, a3, v33); v18 = v57; goto LABEL_43; } } v49 = v19; LABEL_43: lpuexcptc = BYTE4(a1); if ( !BYTE4(a1) ) { v20 = (*(int (__thiscall **)(_DWORD, unsigned int, size_t))(*(_DWORD *)a1 + 48))(a1, v18, v49); v21 = 0; v18 = v57; if ( v20 != v49 ) v21 = 1; lpuexcptc = v21; } v22 = HIDWORD(a1); LOBYTE(v22) = lpuexcptc; HIDWORD(v50) = v22; std::string::_Rep::_M_dispose((volatile signed __int32 *)(v18 - 12), (int)v56); std::string::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v56[1] - 12), (int)&v57); } } LABEL_10: *(_DWORD *)(a2 + 8) = 0; return v50; } // 4C32D5: variable 'v28' is possibly undefined // 4C2DB2: variable 'v24' is possibly undefined // 4C2E12: variable 'v33' is possibly undefined // 4C2EC2: variable 'v32' is possibly undefined // 4C2F38: variable 'v26' is possibly undefined // 4C2FAE: variable 'v27' is possibly undefined // 4C2FE3: variable 'v30' is possibly undefined // 4C3164: variable 'v25' is possibly undefined // 4C318C: variable 'v29' is possibly undefined // 4C334C: variable 'v31' is possibly undefined // 53F58C: using guessed type signed __int32 std::moneypunct::id; // 5606D4: using guessed type int (*off_5606D4)(); //----- (004C3450) -------------------------------------------------------- __int64 __stdcall std::money_put>::_M_insert( __int64 a1, int a2, char a3, struct _Unwind_Exception **a4) { int v4; // ecx char *v5; // edx struct _Unwind_Exception *v6; // eax unsigned __int8 *v7; // ecx int v9; // eax bool v10; // sf size_t v11; // eax _BYTE *v12; // eax int v13; // eax size_t v14; // edx size_t v15; // eax bool v16; // dl char v17; // al unsigned int v18; // ecx size_t v19; // edx int v20; // eax char v21; // dl int v22; // ebx _DWORD *v23; // eax unsigned int v24; // [esp+4h] [ebp-B4h] char v25; // [esp+4h] [ebp-B4h] unsigned int v26; // [esp+4h] [ebp-B4h] const std::string *v27; // [esp+4h] [ebp-B4h] unsigned int v28; // [esp+8h] [ebp-B0h] unsigned int *v29; // [esp+8h] [ebp-B0h] char *v30; // [esp+8h] [ebp-B0h] unsigned int v31; // [esp+8h] [ebp-B0h] unsigned int v32; // [esp+Ch] [ebp-ACh] char v33; // [esp+10h] [ebp-A8h] char v34; // [esp+28h] [ebp-90h] char *v35; // [esp+2Ch] [ebp-8Ch] std::locale::_Impl *v36; // [esp+30h] [ebp-88h] int v37; // [esp+34h] [ebp-84h] size_t v38; // [esp+34h] [ebp-84h] _BYTE *v39; // [esp+38h] [ebp-80h] bool v40; // [esp+38h] [ebp-80h] signed int v41; // [esp+3Ch] [ebp-7Ch] int v42; // [esp+3Ch] [ebp-7Ch] int *v43; // [esp+40h] [ebp-78h] char *v44; // [esp+40h] [ebp-78h] std::locale::facet *v45; // [esp+4Ch] [ebp-6Ch] std::locale::facet *v46; // [esp+4Ch] [ebp-6Ch] _DWORD *v47; // [esp+50h] [ebp-68h] size_t v48; // [esp+50h] [ebp-68h] size_t v49; // [esp+50h] [ebp-68h] __int64 v50; // [esp+54h] [ebp-64h] int v51; // [esp+5Ch] [ebp-5Ch] struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-58h] struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-58h] char *lpuexcptb; // [esp+60h] [ebp-58h] char lpuexcptc; // [esp+60h] [ebp-58h] char v56[5]; // [esp+A3h] [ebp-15h] BYREF unsigned int v57; // [esp+A8h] [ebp-10h] BYREF int v58; // [esp+ACh] [ebp-Ch] BYREF char v59; // [esp+B0h] [ebp-8h] BYREF v50 = a1; v47 = std::use_facet>(a2 + 108); v45 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v45); v51 = *v43; if ( !*v43 ) { v23 = operator new(0x44u); *v23 = &off_5606E4; v23[1] = 0; v23[2] = 0; v23[3] = 0; *((_WORD *)v23 + 8) = 0; *((_BYTE *)v23 + 18) = 0; v23[5] = 0; v23[6] = 0; v23[7] = 0; v23[8] = 0; v23[9] = 0; v23[10] = 0; v23[11] = 0; v23[12] = 0; v23[13] = 0; *((_BYTE *)v23 + 67) = 0; v36 = (std::locale::_Impl *)v23; std::__moneypunct_cache::_M_cache((int)v23, a2 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v36, v45, v28); v51 = *v43; } v4 = *((_DWORD *)*a4 - 3); lpuexcpt = *a4; if ( *(_BYTE *)*a4 == *(_BYTE *)(v51 + 56) ) { v58 = *(_DWORD *)(v51 + 52); if ( !v4 ) goto LABEL_10; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); v44 = *(char **)(v51 + 36); v46 = *(std::locale::facet **)(v51 + 40); } else { v5 = *(char **)(v51 + 28); v58 = *(_DWORD *)(v51 + 48); v44 = v5; v46 = *(std::locale::facet **)(v51 + 32); } v6 = lpuexcpt; v7 = (unsigned __int8 *)lpuexcpt + v4; if ( v7 > (unsigned __int8 *)lpuexcpt ) { do { if ( (*(_BYTE *)(v47[6] + 2 * *(unsigned __int8 *)v6) & 8) == 0 ) break; v6 = (struct _Unwind_Exception *)((char *)v6 + 1); } while ( v7 != (unsigned __int8 *)v6 ); v48 = v6 - lpuexcpt; if ( v6 != lpuexcpt ) { v29 = &v57; *(_DWORD *)&v56[1] = std::string::_S_construct(0, 0); std::string::reserve((int *)&v56[1], (std::string *)(2 * v48), v24); v9 = *(_DWORD *)(v51 + 44); v41 = v48 - v9; if ( (int)(v48 - v9) > 0 ) { v10 = v9 < 0; v11 = v48 - v9; if ( v10 ) v11 = v48; v41 = v11; if ( *(_DWORD *)(v51 + 12) ) { std::string::_M_replace_aux((char **)&v56[1], 0, *(_DWORD *)(*(_DWORD *)&v56[1] - 12), 2 * v11, 0, v33); v37 = *(_DWORD *)(v51 + 12); v35 = *(char **)(v51 + 8); v34 = *(_BYTE *)(v51 + 18); v12 = *(_BYTE **)&v56[1]; if ( *(int *)(*(_DWORD *)&v56[1] - 4) >= 0 ) { std::string::_M_leak_hard((char **)&v56[1]); v12 = *(_BYTE **)&v56[1]; } v39 = std::__add_grouping(v12, v34, v35, v37, lpuexcpt, (_BYTE *)lpuexcpt + v41); v13 = *(_DWORD *)&v56[1]; if ( *(int *)(*(_DWORD *)&v56[1] - 4) >= 0 ) { std::string::_M_leak_hard((char **)&v56[1]); v13 = *(_DWORD *)&v56[1]; } v14 = (size_t)&v39[-v13]; v15 = *(_DWORD *)(v13 - 12); if ( v14 > v15 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v14, v15); std::string::_M_mutate((char **)&v56[1], v14, v15 - v14, 0, v32); v9 = *(_DWORD *)(v51 + 44); } else { std::string::assign((char **)&v56[1], lpuexcpt, v11, (unsigned int)&v57); v9 = *(_DWORD *)(v51 + 44); } } if ( v9 > 0 ) { std::string::push_back((int *)&v56[1], (std::string *)*(char *)(v51 + 17), v25); if ( v41 < 0 ) { std::string::append((int *)&v56[1], -v41, *(_BYTE *)(v51 + 57), (char)v29); std::string::append((int *)&v56[1], lpuexcpt, v48, v31); } else { std::string::append( (int *)&v56[1], (struct _Unwind_Exception *)((char *)lpuexcpt + v41), *(_DWORD *)(v51 + 44), (unsigned int)v29); } } v42 = *(_DWORD *)(a2 + 12) & 0xB0; lpuexcpta = (std::locale::facet *)((char *)v46 + *(_DWORD *)(*(_DWORD *)&v56[1] - 12)); if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) lpuexcpta = (std::locale::facet *)((char *)v46 + *(_DWORD *)(*(_DWORD *)&v56[1] - 12) + *(_DWORD *)(v51 + 24)); v30 = v56; v57 = (unsigned int)std::string::_S_construct(0, 0); std::string::reserve((int *)&v57, (std::string *)(2 * (_DWORD)lpuexcpta), v26); v49 = *(_DWORD *)(a2 + 8); v16 = v49 > (unsigned int)lpuexcpta && v42 == 16; v38 = v49 - (_DWORD)lpuexcpta; lpuexcptb = (char *)&v58; v40 = v16; do { switch ( *lpuexcptb ) { case 0: if ( v40 ) { v17 = a3; goto LABEL_33; } break; case 1: v17 = a3; if ( v40 ) LABEL_33: std::string::append((int *)&v57, v38, v17, (char)v30); else std::string::push_back((int *)&v57, (std::string *)a3, (char)v27); break; case 2: if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) std::string::append((int *)&v57, *(std::string **)(v51 + 20), *(_DWORD *)(v51 + 24), (unsigned int)v30); break; case 3: if ( v46 ) std::string::push_back((int *)&v57, (std::string *)*v44, (char)v27); break; case 4: std::string::append((int *)&v57, (std::string *)&v56[1], v27); break; default: break; } ++lpuexcptb; } while ( lpuexcptb != &v59 ); if ( (unsigned int)v46 > 1 ) { std::string::append((int *)&v57, (std::string *)(v44 + 1), (size_t)v46 - 1, (unsigned int)v30); v18 = v57; v19 = *(_DWORD *)(v57 - 12); if ( v49 > v19 ) goto LABEL_40; } else { v18 = v57; v19 = *(_DWORD *)(v57 - 12); if ( v49 > v19 ) { LABEL_40: if ( v42 == 32 ) std::string::append((int *)&v57, v49 - v19, a3, (char)v30); else std::string::_M_replace_aux((char **)&v57, 0, 0, v49 - v19, a3, v33); v18 = v57; goto LABEL_43; } } v49 = v19; LABEL_43: lpuexcptc = BYTE4(a1); if ( !BYTE4(a1) ) { v20 = (*(int (__thiscall **)(_DWORD, unsigned int, size_t))(*(_DWORD *)a1 + 48))(a1, v18, v49); v21 = 0; v18 = v57; if ( v20 != v49 ) v21 = 1; lpuexcptc = v21; } v22 = HIDWORD(a1); LOBYTE(v22) = lpuexcptc; HIDWORD(v50) = v22; std::string::_Rep::_M_dispose((volatile signed __int32 *)(v18 - 12), (int)v56); std::string::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v56[1] - 12), (int)&v57); } } LABEL_10: *(_DWORD *)(a2 + 8) = 0; return v50; } // 4C3AE5: variable 'v28' is possibly undefined // 4C35C2: variable 'v24' is possibly undefined // 4C3622: variable 'v33' is possibly undefined // 4C36D2: variable 'v32' is possibly undefined // 4C3748: variable 'v26' is possibly undefined // 4C37BE: variable 'v27' is possibly undefined // 4C37F3: variable 'v30' is possibly undefined // 4C3974: variable 'v25' is possibly undefined // 4C399C: variable 'v29' is possibly undefined // 4C3B5C: variable 'v31' is possibly undefined // 53F590: using guessed type signed __int32 std::moneypunct::id; // 5606E4: using guessed type int (*off_5606E4)(); //----- (004C3C60) -------------------------------------------------------- int __thiscall std::money_put>::put( void *this, __int64 a2, unsigned __int8 a3, int a4, unsigned __int16 a5, char **a6) { __int64 (__stdcall *v6)(__int64, char, int, __int16, char **); // edx v6 = *(__int64 (__stdcall **)(__int64, char, int, __int16, char **))(*(_DWORD *)this + 12); if ( v6 != std::money_put>::do_put ) return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, int, _DWORD, char **))v6)(a2, HIDWORD(a2), a3, a4, a5, a6); if ( a3 ) return std::money_put>::_M_insert(a2, a4, a5, a6); return std::money_put>::_M_insert(a2, a4, a5, a6); } //----- (004C3D00) -------------------------------------------------------- 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); } //----- (004C3D20) -------------------------------------------------------- __int64 __stdcall std::money_put>::do_put( __int64 a1, char a2, int a3, __int16 a4, char **a5) { if ( a2 ) return std::money_put>::_M_insert(a1, a3, a4, a5); else return std::money_put>::_M_insert(a1, a3, a4, a5); } //----- (004C3D90) -------------------------------------------------------- __int64 __thiscall std::money_put>::do_put( void *this, __int64 a2, int a3, int a4, int a5, long double a6) { void *v6; // esp void *v7; // esp int v8; // eax int v9; // eax void *v10; // esp void *v11; // esp int *v12; // eax __int64 v13; // rax int *v14; // ecx int v15; // eax int v17; // [esp-44h] [ebp-DCh] int v18; // [esp-40h] [ebp-D8h] int v19; // [esp-3Ch] [ebp-D4h] int v20; // [esp-38h] [ebp-D0h] int v21; // [esp-34h] [ebp-CCh] char *v22[23]; // [esp-30h] [ebp-C8h] BYREF char *v23; // [esp+2Ch] [ebp-6Ch] int v24; // [esp+30h] [ebp-68h] int v25; // [esp+34h] [ebp-64h] void *v26; // [esp+38h] [ebp-60h] void *v27; // [esp+3Ch] [ebp-5Ch] __int64 lpuexcpt; // [esp+40h] [ebp-58h] char **v29; // [esp+48h] [ebp-50h] char v30[5]; // [esp+87h] [ebp-11h] BYREF int *v31[2]; // [esp+8Ch] [ebp-Ch] BYREF v26 = this; v25 = a3; v24 = a5; std::locale::locale( (volatile signed __int32 **)&v30[1], (volatile signed __int32 **)(a4 + 108), (const std::locale *)v22[13]); v27 = std::use_facet>((int)&v30[1]); v6 = alloca(80); v7 = alloca(80); LODWORD(lpuexcpt) = v22; v29 = v22; v31[0] = (int *)std::locale::facet::_S_get_c_locale(); v8 = std::__convert_from_v(v31, (char *)lpuexcpt, 64, "%.*Lf", 0, a6); LODWORD(lpuexcpt) = v8; if ( v8 > 63 ) { LODWORD(lpuexcpt) = v8 + 1; v9 = 16 * ((unsigned int)(v8 + 28) >> 4); v10 = alloca(v9); v11 = alloca(v9); v23 = (char *)v22; v29 = v22; v31[0] = (int *)std::locale::facet::_S_get_c_locale(); LODWORD(lpuexcpt) = std::__convert_from_v(v31, v23, lpuexcpt, "%.*Lf", 0, a6); } std::wstring::basic_string(v31, lpuexcpt, 0, (int)v30); v12 = v31[0]; if ( *(v31[0] - 1) >= 0 ) { std::wstring::_M_leak_hard(v31); v12 = v31[0]; } (*(void (__thiscall **)(void *, char **, char *, int *, int, int, int, int, int, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *))(*(_DWORD *)v27 + 44))( v27, v29, (char *)v29 + lpuexcpt, v12, v17, v18, v19, v20, v21, v22[0], v22[1], v22[2], v22[3], v22[4], v22[5], v22[6], v22[7], v22[8], v22[9]); if ( (_BYTE)v25 ) v13 = std::money_put>::_M_insert(a2, a4, v24, (char **)v31); else v13 = std::money_put>::_M_insert(a2, a4, v24, (char **)v31); lpuexcpt = v13; v14 = v31[0]; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd(v31[0] - 1, 0xFFFFFFFF) > 0 ) goto LABEL_9; LABEL_12: std::wstring::_Rep::_M_destroy(v14 - 3, (int)v30); goto LABEL_9; } v15 = *(v31[0] - 1); *(v31[0] - 1) = v15 - 1; if ( v15 <= 0 ) goto LABEL_12; LABEL_9: std::locale::~locale((_DWORD **)&v30[1]); return lpuexcpt; } // 4C3F0D: variable 'v17' is possibly undefined // 4C3F0D: variable 'v18' is possibly undefined // 4C3F0D: variable 'v19' is possibly undefined // 4C3F0D: variable 'v20' is possibly undefined // 4C3F0D: variable 'v21' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004C4060) -------------------------------------------------------- __int64 __stdcall std::money_put>::_M_insert( __int64 a1, int a2, __int16 a3, char **a4) { int v4; // eax char *v6; // edx int v7; // eax bool v8; // sf unsigned int v9; // eax unsigned int v10; // ebx _WORD *v11; // edx _WORD *v12; // eax int v13; // edx int v14; // eax unsigned int v15; // edx unsigned int v16; // eax bool v17; // dl __int16 v18; // ax int v19; // ecx unsigned int v20; // edx int v21; // eax char v22; // bl int v23; // edx _DWORD *v24; // eax unsigned int v25; // [esp+8h] [ebp-B0h] __int16 v26; // [esp+28h] [ebp-90h] char *v27; // [esp+2Ch] [ebp-8Ch] std::locale::_Impl *v28; // [esp+30h] [ebp-88h] int v29; // [esp+34h] [ebp-84h] unsigned int v30; // [esp+34h] [ebp-84h] _WORD *v31; // [esp+38h] [ebp-80h] bool v32; // [esp+38h] [ebp-80h] int v33; // [esp+3Ch] [ebp-7Ch] int *v34; // [esp+48h] [ebp-70h] int v35; // [esp+48h] [ebp-70h] int v36; // [esp+48h] [ebp-70h] int v37; // [esp+48h] [ebp-70h] std::locale::facet *v38; // [esp+4Ch] [ebp-6Ch] std::locale::facet *v39; // [esp+4Ch] [ebp-6Ch] void *v40; // [esp+50h] [ebp-68h] unsigned int v41; // [esp+50h] [ebp-68h] unsigned int v42; // [esp+50h] [ebp-68h] __int64 v43; // [esp+54h] [ebp-64h] int v44; // [esp+5Ch] [ebp-5Ch] char *lpuexcpt; // [esp+60h] [ebp-58h] struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-58h] char *lpuexcptb; // [esp+60h] [ebp-58h] char lpuexcptc; // [esp+60h] [ebp-58h] char v49[5]; // [esp+A3h] [ebp-15h] BYREF int v50; // [esp+A8h] [ebp-10h] BYREF int v51; // [esp+ACh] [ebp-Ch] BYREF char v52; // [esp+B0h] [ebp-8h] BYREF v43 = a1; v40 = std::use_facet>(a2 + 108); v38 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v34 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v38); v44 = *v34; if ( !*v34 ) { v24 = operator new(0x54u); v24[1] = 0; *v24 = &off_5606F4; v24[2] = 0; v24[3] = 0; *((_BYTE *)v24 + 16) = 0; *(_DWORD *)((char *)v24 + 18) = 0; v24[6] = 0; v24[7] = 0; v24[8] = 0; v24[9] = 0; v24[10] = 0; v24[11] = 0; v24[12] = 0; v24[13] = 0; v24[14] = 0; *((_BYTE *)v24 + 82) = 0; v28 = (std::locale::_Impl *)v24; std::__moneypunct_cache::_M_cache((int)v24, a2 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v28, v38, v25); v44 = *v34; } lpuexcpt = *a4; v4 = *((_DWORD *)*a4 - 3); if ( *(_WORD *)*a4 == *(_WORD *)(v44 + 60) ) { v51 = *(_DWORD *)(v44 + 56); v33 = *(_DWORD *)(v44 + 40); v39 = *(std::locale::facet **)(v44 + 44); v6 = lpuexcpt + 2; if ( !v4 ) v6 = lpuexcpt; lpuexcpt = v6; } else { v51 = *(_DWORD *)(v44 + 52); v33 = *(_DWORD *)(v44 + 32); v39 = *(std::locale::facet **)(v44 + 36); } v35 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v40 + 20))(v40, 8) - (_DWORD)lpuexcpt; v41 = v35 >> 1; if ( v35 >> 1 ) { *(_DWORD *)&v49[1] = std::wstring::_S_construct(0, 0); std::wstring::reserve((int *)&v49[1], v35); v7 = *(_DWORD *)(v44 + 48); v36 = v41 - v7; if ( (int)(v41 - v7) > 0 ) { v8 = v7 < 0; v9 = v41 - v7; if ( v8 ) v9 = v41; v36 = v9; v10 = v9; if ( *(_DWORD *)(v44 + 12) ) { std::wstring::_M_replace_aux((int **)&v49[1], 0, *(_DWORD *)(*(_DWORD *)&v49[1] - 12), 2 * v9, 0); v11 = *(_WORD **)&v49[1]; v29 = *(_DWORD *)(v44 + 12); v27 = *(char **)(v44 + 8); v26 = *(_WORD *)(v44 + 20); if ( *(int *)(*(_DWORD *)&v49[1] - 4) >= 0 ) { std::wstring::_M_leak_hard((int **)&v49[1]); v11 = *(_WORD **)&v49[1]; } v12 = std::__add_grouping(v11, v26, v27, v29, lpuexcpt, &lpuexcpt[2 * v10]); v13 = *(_DWORD *)&v49[1]; v31 = v12; if ( *(int *)(*(_DWORD *)&v49[1] - 4) >= 0 ) { std::wstring::_M_leak_hard((int **)&v49[1]); v13 = *(_DWORD *)&v49[1]; } v14 = (int)v31 - v13; v15 = *(_DWORD *)(v13 - 12); v16 = v14 >> 1; if ( v16 > v15 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v16, v15); std::wstring::_M_mutate((int **)&v49[1], v16, v15 - v16, 0); v7 = *(_DWORD *)(v44 + 48); } else { std::wstring::assign((int **)&v49[1], lpuexcpt, v9); v7 = *(_DWORD *)(v44 + 48); } } if ( v7 > 0 ) { std::wstring::push_back((int *)&v49[1], *(_WORD *)(v44 + 18)); if ( v36 < 0 ) { std::wstring::append((int *)&v49[1], -v36, *(_WORD *)(v44 + 62)); std::wstring::append((int *)&v49[1], lpuexcpt, v41); } else { std::wstring::append((int *)&v49[1], &lpuexcpt[2 * v36], *(_DWORD *)(v44 + 48)); } } v37 = *(_DWORD *)(a2 + 12) & 0xB0; lpuexcpta = (std::locale::facet *)((char *)v39 + *(_DWORD *)(*(_DWORD *)&v49[1] - 12)); if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) lpuexcpta = (std::locale::facet *)((char *)v39 + *(_DWORD *)(*(_DWORD *)&v49[1] - 12) + *(_DWORD *)(v44 + 28)); v50 = (int)std::wstring::_S_construct(0, 0); std::wstring::reserve(&v50, 2 * (_DWORD)lpuexcpta); v42 = *(_DWORD *)(a2 + 8); v17 = v42 > (unsigned int)lpuexcpta && v37 == 16; v30 = v42 - (_DWORD)lpuexcpta; lpuexcptb = (char *)&v51; v32 = v17; do { switch ( *lpuexcptb ) { case 0: if ( v32 ) { v18 = a3; goto LABEL_30; } break; case 1: v18 = a3; if ( v32 ) LABEL_30: std::wstring::append(&v50, v30, v18); else std::wstring::push_back(&v50, a3); break; case 2: if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) std::wstring::append(&v50, *(char **)(v44 + 24), *(_DWORD *)(v44 + 28)); break; case 3: if ( v39 ) std::wstring::push_back(&v50, *(_WORD *)v33); break; case 4: std::wstring::append(&v50, &v49[1]); break; default: break; } ++lpuexcptb; } while ( lpuexcptb != &v52 ); if ( (unsigned int)v39 > 1 ) { std::wstring::append(&v50, (char *)(v33 + 2), (unsigned int)v39 - 1); v19 = v50; v20 = *(_DWORD *)(v50 - 12); if ( v42 > v20 ) goto LABEL_37; } else { v19 = v50; v20 = *(_DWORD *)(v50 - 12); if ( v42 > v20 ) { LABEL_37: if ( v37 == 32 ) std::wstring::append(&v50, v42 - v20, a3); else std::wstring::_M_replace_aux((int **)&v50, 0, 0, v42 - v20, a3); v19 = v50; goto LABEL_40; } } v42 = v20; LABEL_40: lpuexcptc = BYTE4(a1); if ( !BYTE4(a1) ) { v21 = (*(int (__thiscall **)(_DWORD, int, unsigned int))(*(_DWORD *)a1 + 48))(a1, v19, v42); v22 = 0; v19 = v50; if ( v21 != v42 ) v22 = 1; lpuexcptc = v22; } v23 = HIDWORD(a1); LOBYTE(v23) = lpuexcptc; HIDWORD(v43) = v23; std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v19 - 12), (int)v49); std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v49[1] - 12), (int)&v50); } *(_DWORD *)(a2 + 8) = 0; return v43; } // 4C46FE: variable 'v25' is possibly undefined // 53F594: using guessed type signed __int32 std::moneypunct::id; // 5606F4: using guessed type int (*off_5606F4)(); //----- (004C4890) -------------------------------------------------------- __int64 __stdcall std::money_put>::_M_insert( __int64 a1, int a2, __int16 a3, char **a4) { int v4; // eax char *v6; // edx int v7; // eax bool v8; // sf unsigned int v9; // eax unsigned int v10; // ebx _WORD *v11; // edx _WORD *v12; // eax int v13; // edx int v14; // eax unsigned int v15; // edx unsigned int v16; // eax bool v17; // dl __int16 v18; // ax int v19; // ecx unsigned int v20; // edx int v21; // eax char v22; // bl int v23; // edx _DWORD *v24; // eax unsigned int v25; // [esp+8h] [ebp-B0h] __int16 v26; // [esp+28h] [ebp-90h] char *v27; // [esp+2Ch] [ebp-8Ch] std::locale::_Impl *v28; // [esp+30h] [ebp-88h] int v29; // [esp+34h] [ebp-84h] unsigned int v30; // [esp+34h] [ebp-84h] _WORD *v31; // [esp+38h] [ebp-80h] bool v32; // [esp+38h] [ebp-80h] int v33; // [esp+3Ch] [ebp-7Ch] int *v34; // [esp+48h] [ebp-70h] int v35; // [esp+48h] [ebp-70h] int v36; // [esp+48h] [ebp-70h] int v37; // [esp+48h] [ebp-70h] std::locale::facet *v38; // [esp+4Ch] [ebp-6Ch] std::locale::facet *v39; // [esp+4Ch] [ebp-6Ch] void *v40; // [esp+50h] [ebp-68h] unsigned int v41; // [esp+50h] [ebp-68h] unsigned int v42; // [esp+50h] [ebp-68h] __int64 v43; // [esp+54h] [ebp-64h] int v44; // [esp+5Ch] [ebp-5Ch] char *lpuexcpt; // [esp+60h] [ebp-58h] struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-58h] char *lpuexcptb; // [esp+60h] [ebp-58h] char lpuexcptc; // [esp+60h] [ebp-58h] char v49[5]; // [esp+A3h] [ebp-15h] BYREF int v50; // [esp+A8h] [ebp-10h] BYREF int v51; // [esp+ACh] [ebp-Ch] BYREF char v52; // [esp+B0h] [ebp-8h] BYREF v43 = a1; v40 = std::use_facet>(a2 + 108); v38 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); v34 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v38); v44 = *v34; if ( !*v34 ) { v24 = operator new(0x54u); v24[1] = 0; *v24 = &off_560704; v24[2] = 0; v24[3] = 0; *((_BYTE *)v24 + 16) = 0; *(_DWORD *)((char *)v24 + 18) = 0; v24[6] = 0; v24[7] = 0; v24[8] = 0; v24[9] = 0; v24[10] = 0; v24[11] = 0; v24[12] = 0; v24[13] = 0; v24[14] = 0; *((_BYTE *)v24 + 82) = 0; v28 = (std::locale::_Impl *)v24; std::__moneypunct_cache::_M_cache((int)v24, a2 + 108); std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v28, v38, v25); v44 = *v34; } lpuexcpt = *a4; v4 = *((_DWORD *)*a4 - 3); if ( *(_WORD *)*a4 == *(_WORD *)(v44 + 60) ) { v51 = *(_DWORD *)(v44 + 56); v33 = *(_DWORD *)(v44 + 40); v39 = *(std::locale::facet **)(v44 + 44); v6 = lpuexcpt + 2; if ( !v4 ) v6 = lpuexcpt; lpuexcpt = v6; } else { v51 = *(_DWORD *)(v44 + 52); v33 = *(_DWORD *)(v44 + 32); v39 = *(std::locale::facet **)(v44 + 36); } v35 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v40 + 20))(v40, 8) - (_DWORD)lpuexcpt; v41 = v35 >> 1; if ( v35 >> 1 ) { *(_DWORD *)&v49[1] = std::wstring::_S_construct(0, 0); std::wstring::reserve((int *)&v49[1], v35); v7 = *(_DWORD *)(v44 + 48); v36 = v41 - v7; if ( (int)(v41 - v7) > 0 ) { v8 = v7 < 0; v9 = v41 - v7; if ( v8 ) v9 = v41; v36 = v9; v10 = v9; if ( *(_DWORD *)(v44 + 12) ) { std::wstring::_M_replace_aux((int **)&v49[1], 0, *(_DWORD *)(*(_DWORD *)&v49[1] - 12), 2 * v9, 0); v11 = *(_WORD **)&v49[1]; v29 = *(_DWORD *)(v44 + 12); v27 = *(char **)(v44 + 8); v26 = *(_WORD *)(v44 + 20); if ( *(int *)(*(_DWORD *)&v49[1] - 4) >= 0 ) { std::wstring::_M_leak_hard((int **)&v49[1]); v11 = *(_WORD **)&v49[1]; } v12 = std::__add_grouping(v11, v26, v27, v29, lpuexcpt, &lpuexcpt[2 * v10]); v13 = *(_DWORD *)&v49[1]; v31 = v12; if ( *(int *)(*(_DWORD *)&v49[1] - 4) >= 0 ) { std::wstring::_M_leak_hard((int **)&v49[1]); v13 = *(_DWORD *)&v49[1]; } v14 = (int)v31 - v13; v15 = *(_DWORD *)(v13 - 12); v16 = v14 >> 1; if ( v16 > v15 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::erase", v16, v15); std::wstring::_M_mutate((int **)&v49[1], v16, v15 - v16, 0); v7 = *(_DWORD *)(v44 + 48); } else { std::wstring::assign((int **)&v49[1], lpuexcpt, v9); v7 = *(_DWORD *)(v44 + 48); } } if ( v7 > 0 ) { std::wstring::push_back((int *)&v49[1], *(_WORD *)(v44 + 18)); if ( v36 < 0 ) { std::wstring::append((int *)&v49[1], -v36, *(_WORD *)(v44 + 62)); std::wstring::append((int *)&v49[1], lpuexcpt, v41); } else { std::wstring::append((int *)&v49[1], &lpuexcpt[2 * v36], *(_DWORD *)(v44 + 48)); } } v37 = *(_DWORD *)(a2 + 12) & 0xB0; lpuexcpta = (std::locale::facet *)((char *)v39 + *(_DWORD *)(*(_DWORD *)&v49[1] - 12)); if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) lpuexcpta = (std::locale::facet *)((char *)v39 + *(_DWORD *)(*(_DWORD *)&v49[1] - 12) + *(_DWORD *)(v44 + 28)); v50 = (int)std::wstring::_S_construct(0, 0); std::wstring::reserve(&v50, 2 * (_DWORD)lpuexcpta); v42 = *(_DWORD *)(a2 + 8); v17 = v42 > (unsigned int)lpuexcpta && v37 == 16; v30 = v42 - (_DWORD)lpuexcpta; lpuexcptb = (char *)&v51; v32 = v17; do { switch ( *lpuexcptb ) { case 0: if ( v32 ) { v18 = a3; goto LABEL_30; } break; case 1: v18 = a3; if ( v32 ) LABEL_30: std::wstring::append(&v50, v30, v18); else std::wstring::push_back(&v50, a3); break; case 2: if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) std::wstring::append(&v50, *(char **)(v44 + 24), *(_DWORD *)(v44 + 28)); break; case 3: if ( v39 ) std::wstring::push_back(&v50, *(_WORD *)v33); break; case 4: std::wstring::append(&v50, &v49[1]); break; default: break; } ++lpuexcptb; } while ( lpuexcptb != &v52 ); if ( (unsigned int)v39 > 1 ) { std::wstring::append(&v50, (char *)(v33 + 2), (unsigned int)v39 - 1); v19 = v50; v20 = *(_DWORD *)(v50 - 12); if ( v42 > v20 ) goto LABEL_37; } else { v19 = v50; v20 = *(_DWORD *)(v50 - 12); if ( v42 > v20 ) { LABEL_37: if ( v37 == 32 ) std::wstring::append(&v50, v42 - v20, a3); else std::wstring::_M_replace_aux((int **)&v50, 0, 0, v42 - v20, a3); v19 = v50; goto LABEL_40; } } v42 = v20; LABEL_40: lpuexcptc = BYTE4(a1); if ( !BYTE4(a1) ) { v21 = (*(int (__thiscall **)(_DWORD, int, unsigned int))(*(_DWORD *)a1 + 48))(a1, v19, v42); v22 = 0; v19 = v50; if ( v21 != v42 ) v22 = 1; lpuexcptc = v22; } v23 = HIDWORD(a1); LOBYTE(v23) = lpuexcptc; HIDWORD(v43) = v23; std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v19 - 12), (int)v49); std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v49[1] - 12), (int)&v50); } *(_DWORD *)(a2 + 8) = 0; return v43; } // 4C4F2E: variable 'v25' is possibly undefined // 53F598: using guessed type signed __int32 std::moneypunct::id; // 560704: using guessed type int (*off_560704)(); //----- (004C50C0) -------------------------------------------------------- bool __userpurge std::type_info::__do_catch@( std::type_info *a1@, std::type_info *this, const type_info *a3, void **a4, unsigned int a5) { bool result; // al const char *Str1; // ecx result = 1; if ( a1 != this ) { Str1 = (const char *)*((_DWORD *)a1 + 1); result = 0; if ( *Str1 != 42 ) return strcmp(Str1, (const char *)((**((_BYTE **)this + 1) == 42) + *((_DWORD *)this + 1))) == 0; } return result; } //----- (004C5100) -------------------------------------------------------- int __stdcall std::type_info::__do_upcast(std::type_info *this, const __cxxabiv1::__class_type_info *a2, void **a3) { return 0; } //----- (004C5110) -------------------------------------------------------- int std::type_info::__is_function_p() { return 0; } //----- (004C5120) -------------------------------------------------------- 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; } //----- (004C5160) -------------------------------------------------------- int __cdecl std::wstring::_S_compare(int a1, int a2) { return a1 - a2; } //----- (004C5170) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004C5180) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004C5190) -------------------------------------------------------- int *__fastcall std::wstring::_M_leak_hard(int **a1) { int *result; // eax if ( *(*a1 - 1) > 0 ) std::wstring::_M_mutate(a1, 0, 0, 0); result = *a1; *(*a1 - 1) = -1; return result; } //----- (004C51D0) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_S_construct(unsigned int a1, __int16 a2) { _DWORD *v2; // eax _WORD *v3; // ecx unsigned int v4; // edx v2 = std::wstring::_Rep::_S_create(a1, 0); if ( a1 ) { v3 = v2 + 3; v4 = a1; if ( a1 == 1 ) { *((_WORD *)v2 + 6) = a2; } else { do { *v3++ = a2; --v4; } while ( v4 ); } } v2[2] = 0; *v2 = a1; *((_WORD *)v2 + a1 + 6) = 0; return v2 + 3; } //----- (004C5240) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(_WORD *Src, int a2) { size_t Size; // esi int v3; // ebp int *v4; // eax int *v5; // ebx _DWORD *v6; // edx _DWORD *v8; // [esp+1Ch] [ebp-20h] Size = a2 - (_DWORD)Src; v3 = (a2 - (int)Src) >> 1; v4 = std::wstring::_Rep::_S_create(v3, 0); v5 = v4; v6 = v4 + 3; if ( v3 == 1 ) { *((_WORD *)v4 + 6) = *Src; } else if ( v3 ) { v8 = v4 + 3; memcpy(v4 + 3, Src, Size); v6 = v8; } v5[2] = 0; *v5 = v3; *(_WORD *)((char *)v5 + Size + 12) = 0; return v6; } //----- (004C52D0) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_S_construct(_WORD *Src, int a2) { size_t Size; // esi int v3; // ebp int *v4; // eax int *v5; // ebx _DWORD *v6; // edx _DWORD *v8; // [esp+1Ch] [ebp-20h] if ( a2 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); Size = a2 - (_DWORD)Src; v3 = (a2 - (int)Src) >> 1; v4 = std::wstring::_Rep::_S_create(v3, 0); v5 = v4; v6 = v4 + 3; if ( v3 == 1 ) { *((_WORD *)v4 + 6) = *Src; } else if ( v3 ) { v8 = v4 + 3; memcpy(v4 + 3, Src, Size); v6 = v8; } v5[2] = 0; *v5 = v3; *(_WORD *)((char *)v5 + Size + 12) = 0; return v6; } //----- (004C5370) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_S_construct(_WORD *Src, int a2) { size_t Size; // esi int v3; // ebp int *v4; // eax int *v5; // ebx _DWORD *v6; // edx _DWORD *v8; // [esp+1Ch] [ebp-20h] if ( a2 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); Size = a2 - (_DWORD)Src; v3 = (a2 - (int)Src) >> 1; v4 = std::wstring::_Rep::_S_create(v3, 0); v5 = v4; v6 = v4 + 3; if ( v3 == 1 ) { *((_WORD *)v4 + 6) = *Src; } else if ( v3 ) { v8 = v4 + 3; memcpy(v4 + 3, Src, Size); v6 = v8; } v5[2] = 0; *v5 = v3; *(_WORD *)((char *)v5 + Size + 12) = 0; return v6; } //----- (004C5410) -------------------------------------------------------- void *std::wstring::_S_empty_rep() { return &std::wstring::_Rep::_S_empty_rep_storage; } //----- (004C5420) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) { int result; // eax int v4; // ecx result = Size - (_DWORD)Src; v4 = (int)(Size - (_DWORD)Src) >> 1; if ( v4 == 1 ) { result = *Src; *a1 = result; } else if ( v4 ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (004C5460) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) { int result; // eax int v4; // ecx result = Size - (_DWORD)Src; v4 = (int)(Size - (_DWORD)Src) >> 1; if ( v4 == 1 ) { result = *Src; *a1 = result; } else if ( v4 ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (004C54A0) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) { int result; // eax int v4; // ecx result = Size - (_DWORD)Src; v4 = (int)(Size - (_DWORD)Src) >> 1; if ( v4 == 1 ) { result = *Src; *a1 = result; } else if ( v4 ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (004C54E0) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) { int result; // eax int v4; // ecx result = Size - (_DWORD)Src; v4 = (int)(Size - (_DWORD)Src) >> 1; if ( v4 == 1 ) { result = *Src; *a1 = result; } else if ( v4 ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (004C5520) -------------------------------------------------------- void __fastcall std::wstring::shrink_to_fit(int *a1) { if ( *(_DWORD *)(*a1 - 12) < *(_DWORD *)(*a1 - 8) ) std::wstring::reserve(a1, 0); } //----- (004C55B0) -------------------------------------------------------- int **__thiscall std::wstring::_M_replace_aux(int **this, int a2, int a3, unsigned int a4, __int16 a5) { unsigned int v6; // ebx _WORD *v7; // eax v6 = a4; if ( a4 > a3 + 536870910 - *(*this - 3) ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); std::wstring::_M_mutate(this, a2, a3, a4); if ( !a4 ) return this; v7 = (_WORD *)*this + a2; if ( a4 != 1 ) { do { *v7++ = a5; --v6; } while ( v6 ); return this; } *v7 = a5; return this; } //----- (004C5640) -------------------------------------------------------- int **__thiscall std::wstring::_M_replace_safe(int **this, int a2, int a3, _WORD *Src, int a5) { std::wstring::_M_mutate(this, a2, a3, a5); if ( !a5 ) return this; if ( a5 != 1 ) { memcpy((char *)*this + 2 * a2, Src, 2 * a5); return this; } *((_WORD *)*this + a2) = *Src; return this; } //----- (004C56C0) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_S_construct_aux_2(unsigned int a1, __int16 a2) { _DWORD *v2; // eax _WORD *v3; // ecx unsigned int v4; // edx v2 = std::wstring::_Rep::_S_create(a1, 0); if ( a1 ) { v3 = v2 + 3; v4 = a1; if ( a1 == 1 ) { *((_WORD *)v2 + 6) = a2; } else { do { *v3++ = a2; --v4; } while ( v4 ); } } v2[2] = 0; *v2 = a1; *((_WORD *)v2 + a1 + 6) = 0; return v2 + 3; } //----- (004C5730) -------------------------------------------------------- char *__thiscall std::wstring::at(int **this, unsigned int a2) { int *v2; // eax int *v5; // eax v2 = *this; if ( a2 >= *(*this - 3) ) std::__throw_out_of_range_fmt( "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, *(*this - 3)); if ( *(v2 - 1) < 0 ) return (char *)v2 + 2 * a2; if ( *(v2 - 1) > 0 ) std::wstring::_M_mutate(this, 0, 0, 0); v5 = *this; *(v5 - 1) = -1; return (char *)v5 + 2 * a2; } //----- (004C57B0) -------------------------------------------------------- char *__fastcall std::wstring::end(int **a1) { int *v1; // eax int *v4; // eax int v5; // edx v1 = *a1; if ( *(*a1 - 1) < 0 ) return (char *)v1 + 2 * *(v1 - 3); if ( *(v1 - 1) > 0 ) std::wstring::_M_mutate(a1, 0, 0, 0); v4 = *a1; v5 = *(*a1 - 3); *(v4 - 1) = -1; return (char *)v4 + 2 * v5; } //----- (004C5800) -------------------------------------------------------- void __thiscall std::wstring::_Rep::_M_destroy(void *Block, int a2) { operator delete(Block); } //----- (004C5820) -------------------------------------------------------- void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *Block, int a2) { int v2; // eax if ( !_CRT_MT ) { v2 = *((_DWORD *)Block + 2); *((_DWORD *)Block + 2) = v2 - 1; if ( v2 > 0 ) return; LABEL_5: operator delete((void *)Block); return; } if ( _InterlockedExchangeAdd(Block + 2, 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 53E1E4: using guessed type int _CRT_MT; //----- (004C5860) -------------------------------------------------------- int __fastcall std::wstring::_Rep::_M_refcopy(int a1) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)(a1 + 8), 1u); else ++*(_DWORD *)(a1 + 8); return a1 + 12; } // 53E1E4: using guessed type int _CRT_MT; //----- (004C5890) -------------------------------------------------------- int __fastcall std::wstring::_Rep::_M_refdata(int a1) { return a1 + 12; } //----- (004C58A0) -------------------------------------------------------- void *std::wstring::_Rep::_S_empty_rep() { return &std::wstring::_Rep::_S_empty_rep_storage; } //----- (004C58B0) -------------------------------------------------------- void __fastcall std::wstring::_Rep::_M_set_leaked(int a1) { *(_DWORD *)(a1 + 8) = -1; } //----- (004C58C0) -------------------------------------------------------- void __fastcall std::wstring::_Rep::_M_set_sharable(int a1) { *(_DWORD *)(a1 + 8) = 0; } //----- (004C58D0) -------------------------------------------------------- int __thiscall std::wstring::_Rep::_M_set_length_and_sharable(_DWORD *this, int a2) { int result; // eax result = a2; this[2] = 0; *this = a2; *((_WORD *)this + a2 + 6) = 0; return result; } //----- (004C58F0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::_Rep::_M_grab(int this, int a2, int a3) { _DWORD *result; // eax if ( *(int *)(this + 8) < 0 ) return std::wstring::_Rep::_M_clone((int *)this, a2, 0); if ( _CRT_MT ) { _InterlockedAdd((volatile signed __int32 *)(this + 8), 1u); return (_DWORD *)(this + 12); } else { result = (_DWORD *)(this + 12); ++*(_DWORD *)(this + 8); } return result; } // 53E1E4: using guessed type int _CRT_MT; //----- (004C5940) -------------------------------------------------------- _DWORD *__thiscall std::wstring::_Rep::_M_clone(int *this, int a2, int a3) { _DWORD *v4; // eax int v5; // edx _DWORD *v6; // ebx int v7; // eax v4 = std::wstring::_Rep::_S_create(a3 + *this, this[1]); v5 = 0; v6 = v4; v7 = *this; if ( *this ) { if ( v7 == 1 ) { *((_WORD *)v6 + 6) = *((_WORD *)this + 6); v5 = 2; } else { memcpy(v6 + 3, this + 3, 2 * v7); v7 = *this; v5 = 2 * *this; } } *v6 = v7; v6[2] = 0; *(_WORD *)((char *)v6 + v5 + 12) = 0; return v6 + 3; } //----- (004C59C0) -------------------------------------------------------- _DWORD *__cdecl std::wstring::_Rep::_S_create(unsigned int a1, unsigned int a2) { unsigned int v2; // ebx signed int v3; // eax unsigned int v4; // ecx _DWORD *result; // eax v2 = a1; if ( a1 > 0x1FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::_S_create"); if ( a1 <= a2 ) { v3 = 2 * a1 + 14; } else { if ( a1 < 2 * a2 ) v2 = 2 * a2; v3 = 2 * v2 + 14; v4 = 2 * v2 + 30; if ( v4 <= 0x1000 || v2 <= a2 ) { if ( v3 < 0 ) std::__throw_bad_alloc(); } else { v2 += (4096 - (v4 & 0xFFF)) >> 1; if ( v2 > 0x1FFFFFFE ) v2 = 536870910; v3 = 2 * v2 + 14; } } result = operator new(v3); result[1] = v2; result[2] = 0; return result; } //----- (004C5A60) -------------------------------------------------------- char *__fastcall std::wstring::back(int **a1) { int *v1; // eax int v2; // esi int *v5; // eax v1 = *a1; v2 = *(*a1 - 3) - 1; if ( *(*a1 - 1) < 0 ) return (char *)v1 + 2 * v2; if ( *(v1 - 1) > 0 ) std::wstring::_M_mutate(a1, 0, 0, 0); v5 = *a1; *(v5 - 1) = -1; return (char *)v5 + 2 * v2; } //----- (004C5AC0) -------------------------------------------------------- int **__thiscall std::wstring::rend(int **this, int **a2) { int *v3; // eax int *v5; // eax v3 = *a2; if ( *(*a2 - 1) >= 0 ) { if ( *(v3 - 1) > 0 ) std::wstring::_M_mutate(a2, 0, 0, 0); v5 = *a2; *(v5 - 1) = -1; *this = v5; return this; } else { *this = v3; return this; } } //----- (004C5B20) -------------------------------------------------------- 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; } //----- (004C5B50) -------------------------------------------------------- int *__fastcall std::wstring::begin(int **a1) { int *result; // eax result = *a1; if ( *(*a1 - 1) >= 0 ) { if ( *(result - 1) > 0 ) std::wstring::_M_mutate(a1, 0, 0, 0); result = *a1; *(*a1 - 1) = -1; } return result; } //----- (004C5BA0) -------------------------------------------------------- int __fastcall std::wstring::clear(int **a1) { return std::wstring::_M_mutate(a1, 0, *(*a1 - 3), 0); } //----- (004C5BD0) -------------------------------------------------------- char *__thiscall std::wstring::erase(int **this, int a2) { int v3; // esi int *v4; // eax v3 = a2 - (_DWORD)*this; std::wstring::_M_mutate(this, v3 >> 1, 1, 0); v4 = *this; *(v4 - 1) = -1; return (char *)v4 + v3; } //----- (004C5C10) -------------------------------------------------------- char *__thiscall std::wstring::erase(int **this, char *a2, int a3) { char *result; // eax int v5; // ebx int *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; *(v6 - 1) = -1; return (char *)v6 + v5; } return result; } //----- (004C5C70) -------------------------------------------------------- int **__thiscall std::wstring::erase(int **this, unsigned int a2, unsigned int a3) { unsigned int v4; // ecx int v5; // eax v4 = *(*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; } //----- (004C5CD0) -------------------------------------------------------- int *__fastcall std::wstring::front(int **a1) { int *result; // eax result = *a1; if ( *(*a1 - 1) >= 0 ) { if ( *(result - 1) > 0 ) std::wstring::_M_mutate(a1, 0, 0, 0); result = *a1; *(*a1 - 1) = -1; } return result; } //----- (004C5D20) -------------------------------------------------------- int *__thiscall std::wstring::append(int *this, wchar_t *String) { unsigned int v3; // eax v3 = wcslen(String); return std::wstring::append(this, (char *)String, v3); } //----- (004C5D50) -------------------------------------------------------- int *__thiscall std::wstring::append(int *this, char *a2, unsigned int a3) { char *Src; // edi unsigned int v5; // eax int v6; // ebp unsigned int v7; // ebp _WORD *v8; // edx char *v10; // edi bool v11; // cc Src = a2; if ( a3 ) { v5 = *this; v6 = *(_DWORD *)(*this - 12); if ( a3 > 536870910 - v6 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v7 = a3 + v6; if ( v7 > *(_DWORD *)(v5 - 8) || (v11 = *(_DWORD *)(v5 - 4) <= 0, v5 = *this, !v11) ) { if ( v5 <= (unsigned int)a2 && (unsigned int)a2 <= v5 + 2 * *(_DWORD *)(v5 - 12) ) { v10 = &a2[-v5]; std::wstring::reserve(this, v7); v5 = *this; Src = &v10[*this]; v8 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); if ( a3 != 1 ) goto LABEL_8; goto LABEL_12; } std::wstring::reserve(this, v7); v5 = *this; } v8 = (_WORD *)(v5 + 2 * *(_DWORD *)(v5 - 12)); if ( a3 != 1 ) { LABEL_8: memcpy(v8, Src, 2 * a3); v5 = *this; LABEL_9: *(_DWORD *)(v5 - 4) = 0; *(_DWORD *)(v5 - 12) = v7; *(_WORD *)(v5 + 2 * v7) = 0; return this; } LABEL_12: *v8 = *(_WORD *)Src; goto LABEL_9; } return this; } //----- (004C5E30) -------------------------------------------------------- int *__thiscall std::wstring::append(int *this, _DWORD *a2) { int v3; // esi unsigned int v4; // edi int v5; // eax _WORD *Src; // ecx _WORD *v7; // edx v3 = *(_DWORD *)(*a2 - 12); if ( v3 ) { v4 = v3 + *(_DWORD *)(*this - 12); if ( v4 > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) { std::wstring::reserve(this, v3 + *(_DWORD *)(*this - 12)); v5 = *this; Src = (_WORD *)*a2; v7 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); if ( v3 == 1 ) { LABEL_9: *v7 = *Src; goto LABEL_5; } } else { v5 = *this; Src = (_WORD *)*a2; v7 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); if ( v3 == 1 ) goto LABEL_9; } memcpy(v7, Src, 2 * v3); v5 = *this; LABEL_5: *(_DWORD *)(v5 - 4) = 0; *(_DWORD *)(v5 - 12) = v4; *(_WORD *)(v5 + 2 * v4) = 0; } return this; } //----- (004C5EC0) -------------------------------------------------------- int *__thiscall std::wstring::append(int *this, _DWORD *a2, unsigned int a3, unsigned int a4) { unsigned int v4; // ebx unsigned int v5; // ebx unsigned int v7; // edx _WORD *Src; // edi int v9; // eax _WORD *v10; // ecx unsigned int v12; // [esp+1Ch] [ebp-20h] unsigned int 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)); v5 = v4 - a3; if ( v5 > a4 ) v5 = a4; if ( v5 ) { v7 = v5 + *(_DWORD *)(*this - 12); if ( v7 > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) { v12 = v5 + *(_DWORD *)(*this - 12); std::wstring::reserve(this, v12); v7 = v12; } Src = (_WORD *)(*a2 + 2 * a3); v9 = *this; v10 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); if ( v5 == 1 ) { *v10 = *Src; } else { v13 = v7; memcpy(v10, Src, 2 * v5); v9 = *this; v7 = v13; } *(_DWORD *)(v9 - 4) = 0; *(_DWORD *)(v9 - 12) = v7; *(_WORD *)(v9 + 2 * v7) = 0; } return this; } //----- (004C5FA0) -------------------------------------------------------- int *__thiscall std::wstring::append(int *this, unsigned int a2, __int16 a3) { unsigned int v4; // ebx __int16 v5; // dx int v6; // ecx int v7; // edi unsigned int v8; // edi int v9; // ecx _WORD *v10; // eax v4 = a2; v5 = a3; if ( a2 ) { v6 = *this; v7 = *(_DWORD *)(v6 - 12); if ( a2 > 536870910 - v7 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v8 = a2 + v7; if ( v8 > *(_DWORD *)(v6 - 8) || *(int *)(v6 - 4) > 0 ) { std::wstring::reserve(this, v8); v5 = a3; } v9 = *this; v10 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); if ( a2 == 1 ) { *v10 = v5; *(_DWORD *)(v9 - 4) = 0; *(_DWORD *)(v9 - 12) = v8; *(_WORD *)(v9 + 2 * v8) = 0; } else { do { *v10++ = a3; --v4; } while ( v4 ); *(_DWORD *)(v9 - 4) = 0; *(_DWORD *)(v9 - 12) = v8; *(_WORD *)(v9 + 2 * v8) = 0; } } return this; } //----- (004C6060) -------------------------------------------------------- _DWORD *__thiscall std::wstring::assign(_DWORD *this, int *a2) { _DWORD *result; // eax int v3; // edx int v4; // ecx result = this; v3 = *this; if ( *(int *)(*this - 4) < 0 ) *(_DWORD *)(v3 - 4) = 0; v4 = *a2; if ( *(int *)(*a2 - 4) < 0 ) *(_DWORD *)(v4 - 4) = 0; *result = v4; *a2 = v3; return result; } //----- (004C60A0) -------------------------------------------------------- int **__thiscall std::wstring::assign(int **this, wchar_t *String) { unsigned int v3; // eax v3 = wcslen(String); return std::wstring::assign(this, (char *)String, v3); } //----- (004C60D0) -------------------------------------------------------- int **__thiscall std::wstring::assign(int **this, char *Src, unsigned int a3) { int *v3; // eax int v4; // edx bool v6; // cc int *v7; // eax int *v8; // eax unsigned int v10; // edx v3 = *this; v4 = *(*this - 3); if ( a3 > 0x1FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::assign"); if ( v3 <= (int *)Src && (char *)v3 + 2 * v4 >= Src ) { v6 = *(v3 - 1) <= 0; v7 = *this; if ( !v6 ) { v4 = *(v7 - 3); goto LABEL_6; } v10 = (Src - (char *)v7) >> 1; if ( a3 <= v10 ) { if ( a3 != 1 ) { if ( a3 ) { memcpy(v7, Src, 2 * a3); v7 = *this; } goto LABEL_15; } } else { if ( !v10 ) { LABEL_15: *(v7 - 1) = 0; *(v7 - 3) = a3; *((_WORD *)v7 + a3) = 0; return this; } if ( a3 != 1 ) { if ( a3 ) { memmove(v7, Src, 2 * a3); v7 = *this; } goto LABEL_15; } } *(_WORD *)v7 = *(_WORD *)Src; goto LABEL_15; } LABEL_6: std::wstring::_M_mutate(this, 0, v4, a3); if ( !a3 ) return this; v8 = *this; if ( a3 != 1 ) { memcpy(v8, Src, 2 * a3); return this; } *(_WORD *)v8 = *(_WORD *)Src; return this; } //----- (004C61F0) -------------------------------------------------------- int *__thiscall std::wstring::assign(int *this, _DWORD *a2) { _DWORD *v3; // esi int v4; // eax int v5; // edx char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF v3 = (_DWORD *)*a2; if ( *this != *a2 ) { if ( (int)*(v3 - 1) < 0 ) { v3 = std::wstring::_Rep::_M_clone(v3 - 3, (int)v7, 0); v4 = *this; if ( !_CRT_MT ) goto LABEL_6; } else { if ( _CRT_MT ) _InterlockedAdd(v3 - 1, 1u); else ++*(v3 - 1); v4 = *this; if ( !_CRT_MT ) { LABEL_6: v5 = *(_DWORD *)(v4 - 4); *(_DWORD *)(v4 - 4) = v5 - 1; if ( v5 > 0 ) { LABEL_7: *this = (int)v3; return this; } LABEL_11: operator delete((void *)(v4 - 12)); *this = (int)v3; return this; } } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v4 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_7; goto LABEL_11; } return this; } // 53E1E4: using guessed type int _CRT_MT; // 4C61F0: using guessed type char var_D[13]; //----- (004C62A0) -------------------------------------------------------- int **__thiscall std::wstring::assign(int **this, _DWORD *a2, unsigned int a3, unsigned int a4) { unsigned int v4; // eax 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, (char *)(*a2 + 2 * a3), v4); } //----- (004C6310) -------------------------------------------------------- int **__thiscall std::wstring::assign(int **this, unsigned int a2, __int16 a3) { unsigned int v3; // ebx int *v5; // eax v3 = a2; if ( a2 > 0x1FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); std::wstring::_M_mutate(this, 0, *(*this - 3), a2); if ( !a2 ) return this; v5 = *this; if ( a2 != 1 ) { do { *(_WORD *)v5 = a3; v5 = (int *)((char *)v5 + 2); --v3; } while ( v3 ); return this; } *(_WORD *)v5 = a3; return this; } //----- (004C6390) -------------------------------------------------------- int **__thiscall std::wstring::insert(int **this, int a2, int *a3, unsigned int a4) { return std::wstring::insert(this, (a2 - (int)*this) >> 1, a3, a4); } //----- (004C63B0) -------------------------------------------------------- int __thiscall std::wstring::insert(int **this, int a2, unsigned int a3, unsigned __int16 a4) { unsigned int v5; // esi int v6; // ebx int result; // eax unsigned __int16 *v8; // ebx v5 = a3; v6 = a2 - (_DWORD)*this; if ( a3 > 536870910 - *(*this - 3) ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); result = std::wstring::_M_mutate(this, v6 >> 1, 0, a3); if ( a3 ) { v8 = (unsigned __int16 *)((char *)*this + v6); if ( a3 == 1 ) { result = a4; *v8 = a4; } else { do { *v8++ = a4; --v5; } while ( v5 ); } } return result; } //----- (004C6440) -------------------------------------------------------- _WORD *__thiscall std::wstring::insert(int **this, int a2, __int16 a3) { int v3; // ebx int *v5; // edx _WORD *result; // eax v3 = a2 - (_DWORD)*this; if ( *(*this - 3) == 536870910 ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); std::wstring::_M_mutate(this, (a2 - (int)*this) >> 1, 0, 1); v5 = *this; result = (_WORD *)((char *)*this + v3); *result = a3; *(v5 - 1) = -1; return result; } //----- (004C64A0) -------------------------------------------------------- int **__thiscall std::wstring::insert(int **this, int a2, wchar_t *String) { unsigned int v4; // eax v4 = wcslen(String); return std::wstring::insert(this, a2, (int *)String, v4); } //----- (004C64E0) -------------------------------------------------------- int **__thiscall std::wstring::insert(int **this, unsigned int a2, int *Src, unsigned int a4) { int *v5; // edx unsigned int v6; // ecx _WORD *v7; // eax char *v9; // ebp int v10; // edx char *v11; // eax _WORD *v12; // edi char *v13; // ecx size_t Size; // ecx int v15; // edx unsigned int v16; // esi _WORD *v17; // ebp _WORD *v18; // ecx size_t v19; // [esp+18h] [ebp-24h] int v20; // [esp+1Ch] [ebp-20h] v5 = *this; v6 = *(*this - 3); if ( a2 > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::insert", a2, v6); if ( a4 > 536870910 - v6 ) std::__throw_length_error((std::length_error *)"basic_string::insert"); if ( v5 <= Src && Src <= (int *)((char *)v5 + 2 * v6) && *(v5 - 1) <= 0 ) { v9 = (char *)((char *)Src - (char *)*this); std::wstring::_M_mutate(this, a2, 0, a4); v10 = 2 * a2; v11 = &v9[(_DWORD)*this]; v12 = (_WORD *)*this + a2; v13 = &v11[2 * a4]; if ( v13 > (char *)v12 ) { if ( v11 < (char *)v12 ) { Size = v10 - (_DWORD)v9; v15 = (v10 - (int)v9) >> 1; if ( v15 == 1 ) { *v12 = *(_WORD *)v11; } else if ( v15 ) { v20 = v15; v19 = Size; memcpy(v12, v11, Size); v15 = v20; Size = v19; } v16 = a4 - v15; v17 = &v12[a4]; v18 = (_WORD *)((char *)v12 + Size); if ( a4 - v15 == 1 ) { *v18 = *v17; } else if ( v16 ) { memcpy(v18, v17, 2 * v16); } } else if ( a4 == 1 ) { *v12 = *(_WORD *)v13; } else if ( a4 ) { memcpy(v12, &v11[2 * a4], 2 * a4); } } else if ( a4 == 1 ) { *v12 = *(_WORD *)v11; } else if ( a4 ) { memcpy(v12, v11, 2 * a4); } return this; } std::wstring::_M_mutate(this, a2, 0, a4); if ( !a4 ) return this; v7 = (_WORD *)*this + a2; if ( a4 != 1 ) { memcpy(v7, Src, 2 * a4); return this; } *v7 = *(_WORD *)Src; return this; } //----- (004C66C0) -------------------------------------------------------- int **__thiscall std::wstring::insert(int **this, int a2, int **a3) { return std::wstring::insert(this, a2, *a3, *(*a3 - 3)); } //----- (004C66F0) -------------------------------------------------------- int **__thiscall std::wstring::insert(int **this, int a2, _DWORD *a3, unsigned int a4, unsigned int a5) { unsigned int v5; // eax 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, (int *)(*a3 + 2 * a4), v5); } //----- (004C6760) -------------------------------------------------------- int **__thiscall std::wstring::insert(int **this, unsigned int a2, unsigned int a3, __int16 a4) { if ( a2 > *(*this - 3) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::insert", a2, *(*this - 3)); return std::wstring::_M_replace_aux(this, a2, 0, a3, a4); } //----- (004C67C0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, int **a2) { int *v3; // eax v3 = *a2; if ( *(*a2 - 1) >= 0 ) { if ( *(v3 - 1) > 0 ) std::wstring::_M_mutate(a2, 0, 0, 0); v3 = *a2; *(*a2 - 1) = -1; } *this = (char *)v3 + 2 * *(v3 - 3); return this; } //----- (004C6830) -------------------------------------------------------- int *__thiscall std::wstring::resize(int *this, unsigned int a2) { int *result; // eax unsigned int v3; // edx result = (int *)a2; v3 = *(_DWORD *)(*this - 12); if ( a2 > 0x1FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::resize"); if ( a2 > v3 ) return std::wstring::append(this, a2 - v3, 0); if ( a2 < v3 ) return (int *)std::wstring::_M_mutate((int **)this, a2, v3 - a2, 0); return result; } //----- (004C68A0) -------------------------------------------------------- int *__thiscall std::wstring::resize(int *this, unsigned int a2, __int16 a3) { int *result; // eax unsigned int v4; // edx result = (int *)a2; v4 = *(_DWORD *)(*this - 12); if ( a2 > 0x1FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::resize"); if ( a2 > v4 ) return std::wstring::append(this, a2 - v4, a3); if ( a2 < v4 ) return (int *)std::wstring::_M_mutate((int **)this, a2, v4 - a2, 0); return result; } //----- (004C6920) -------------------------------------------------------- int __cdecl std::wstring::_M_copy(_WORD *a1, unsigned __int16 *Src, size_t Size) { int result; // eax result = Size; if ( Size == 1 ) { result = *Src; *a1 = result; } else if ( Size ) { return (int)memcpy(a1, Src, 2 * Size); } return result; } //----- (004C6960) -------------------------------------------------------- int __thiscall std::wstring::_M_data(_DWORD *this, int a2) { int result; // eax result = a2; *this = a2; return result; } //----- (004C6970) -------------------------------------------------------- int *__fastcall std::wstring::_M_leak(int **a1) { int *result; // eax result = *a1; if ( *(*a1 - 1) >= 0 ) { if ( *(result - 1) > 0 ) std::wstring::_M_mutate(a1, 0, 0, 0); result = *a1; *(*a1 - 1) = -1; } return result; } //----- (004C69C0) -------------------------------------------------------- int __cdecl std::wstring::_M_move(_WORD *a1, unsigned __int16 *Src, size_t Size) { int result; // eax result = Size; if ( Size == 1 ) { result = *Src; *a1 = result; } else if ( Size ) { return (int)memmove(a1, Src, 2 * Size); } return result; } //----- (004C6A00) -------------------------------------------------------- int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (a5 - (int)a4) >> 1); } //----- (004C6A30) -------------------------------------------------------- int **__thiscall std::wstring::replace(int **this, int a2, int a3, wchar_t *String) { unsigned int v5; // eax v5 = wcslen(String); return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, String, v5); } //----- (004C6A80) -------------------------------------------------------- int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (a5 - (int)a4) >> 1); } //----- (004C6AB0) -------------------------------------------------------- int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, unsigned int a5) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, a5); } //----- (004C6AD0) -------------------------------------------------------- int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD **a4) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, *a4, *((_DWORD *)*a4 - 3)); } //----- (004C6B10) -------------------------------------------------------- int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (a5 - (int)a4) >> 1); } //----- (004C6B40) -------------------------------------------------------- int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (a5 - (int)a4) >> 1); } //----- (004C6B70) -------------------------------------------------------- int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) { return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (2 * a5) >> 1); } //----- (004C6BA0) -------------------------------------------------------- int **__thiscall std::wstring::replace(int **this, int a2, int a3, unsigned int a4, __int16 a5) { unsigned int v6; // esi int v7; // ebx _WORD *v8; // ebx v6 = a4; v7 = a2 - (_DWORD)*this; if ( a4 > ((a3 - a2) >> 1) + 536870910 - *(*this - 3) ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); std::wstring::_M_mutate(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4); if ( !a4 ) return this; v8 = (_WORD *)((char *)*this + v7); if ( a4 != 1 ) { do { *v8++ = a5; --v6; } while ( v6 ); return this; } *v8 = a5; return this; } //----- (004C6C40) -------------------------------------------------------- int **__thiscall std::wstring::replace(int **this, int a2, int a3, wchar_t *String) { unsigned int v5; // eax v5 = wcslen(String); return std::wstring::replace(this, a2, a3, String, v5); } //----- (004C6C80) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int **__thiscall std::wstring::replace(int **this, unsigned int a2, unsigned int a3, _WORD *Src, unsigned int a5) { int *v5; // edx unsigned int v6; // eax int v7; // ecx int *v9; // edx _WORD *v10; // eax int v11; // eax int Size; // [esp+18h] [ebp-60h] int v13; // [esp+1Ch] [ebp-5Ch] _DWORD *v14; // [esp+1Ch] [ebp-5Ch] int v15; // [esp+20h] [ebp-58h] int v16; // [esp+24h] [ebp-54h] v5 = *this; v6 = *(*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, *(*this - 3)); v7 = v6 - a2; if ( v6 - a2 > a3 ) v7 = a3; v16 = v7; if ( v7 - v6 + 536870910 < a5 ) std::__throw_length_error((std::length_error *)"basic_string::replace"); if ( v5 > (int *)Src || Src > (_WORD *)v5 + v6 || *(v5 - 1) > 0 ) { std::wstring::_M_mutate(this, a2, v7, a5); if ( a5 ) { if ( a5 == 1 ) *((_WORD *)*this + a2) = *Src; else memcpy((char *)*this + 2 * a2, Src, 2 * a5); } return this; } v9 = *this; Size = 2 * a5; v15 = 2 * a2; if ( &Src[a5] <= (_WORD *)*this + a2 ) { v13 = ((char *)Src - (char *)v9) >> 1; LABEL_15: std::wstring::_M_mutate(this, a2, v7, a5); v10 = (_WORD *)((char *)*this + v15); if ( a5 == 1 ) { *v10 = *((_WORD *)*this + v13); } else if ( a5 ) { memcpy(v10, (char *)*this + 2 * v13, Size); } return this; } if ( Src >= (_WORD *)v9 + a2 + v7 ) { v13 = a5 + (((char *)Src - (char *)v9) >> 1) - v7; goto LABEL_15; } v14 = std::wstring::_S_construct(Src, (int)&Src[a5]); std::wstring::_M_mutate(this, a2, v16, a5); if ( a5 ) { if ( a5 == 1 ) *((_WORD *)*this + a2) = *(_WORD *)v14; else memcpy((char *)*this + v15, v14, Size); } if ( _CRT_MT ) { v11 = _InterlockedExchangeAdd(v14 - 1, 0xFFFFFFFF); } else { v11 = *(v14 - 1); *(v14 - 1) = v11 - 1; } if ( v11 <= 0 ) operator delete(v14 - 3); return this; } // 4C6F5A: positive sp value 4 has been found // 53E1E4: using guessed type int _CRT_MT; //----- (004C6F70) -------------------------------------------------------- int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD **a4) { return std::wstring::replace(this, a2, a3, *a4, *((_DWORD *)*a4 - 3)); } //----- (004C6FB0) -------------------------------------------------------- int **__thiscall std::wstring::replace(int **this, int a2, int a3, _DWORD *a4, unsigned int a5, unsigned int a6) { unsigned int v6; // eax v6 = *(_DWORD *)(*a4 - 12) - a5; if ( v6 > a6 ) v6 = 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, (_WORD *)(*a4 + 2 * a5), v6); } //----- (004C7020) -------------------------------------------------------- int **__thiscall std::wstring::replace(int **this, unsigned int a2, unsigned int a3, unsigned int a4, __int16 a5) { unsigned int v5; // eax v5 = *(*this - 3) - a2; if ( v5 > a3 ) v5 = a3; if ( a2 > *(*this - 3) ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", a2, *(*this - 3)); return std::wstring::_M_replace_aux(this, a2, v5, a4, a5); } //----- (004C7090) -------------------------------------------------------- void __thiscall std::wstring::reserve(int *this, unsigned int a2) { int v3; // ecx unsigned int v4; // eax unsigned int v5; // edx int *v6; // ecx _DWORD *v7; // esi int v8; // eax int v9; // edx char v10[13]; // [esp+1Fh] [ebp-Dh] BYREF v3 = *this; v4 = a2; if ( a2 == *(_DWORD *)(v3 - 8) ) { if ( *(int *)(v3 - 4) <= 0 ) return; v3 = *this; } v5 = *(_DWORD *)(v3 - 12); v6 = (int *)(v3 - 12); if ( a2 < v5 ) v4 = v5; v7 = std::wstring::_Rep::_M_clone(v6, (int)v10, v4 - v5); v8 = *this; if ( _CRT_MT ) { v9 = _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF); } else { v9 = *(_DWORD *)(v8 - 4); *(_DWORD *)(v8 - 4) = v9 - 1; } if ( v9 <= 0 ) operator delete((void *)(v8 - 12)); *this = (int)v7; } // 53E1E4: using guessed type int _CRT_MT; // 4C7090: using guessed type char var_D[13]; //----- (004C7120) -------------------------------------------------------- int __fastcall std::wstring::pop_back(int **a1) { unsigned int v1; // eax v1 = *(*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); return std::wstring::_M_mutate(a1, v1 - 1, 1, 0); } //----- (004C7180) -------------------------------------------------------- int __cdecl std::wstring::_M_assign(_WORD *a1, int a2, __int16 a3) { int result; // eax _WORD *v4; // edx result = a2; v4 = a1; if ( a2 == 1 ) { *a1 = a3; } else if ( a2 ) { do { *v4++ = a3; --result; } while ( result ); } return result; } //----- (004C71C0) -------------------------------------------------------- int __thiscall std::wstring::_M_mutate(int **this, int a2, int a3, int a4) { int *v5; // eax int v6; // edi unsigned int v7; // ecx unsigned int v8; // ebx int v9; // edi _DWORD *v10; // eax _DWORD *v11; // ecx char *v12; // ebp int *v13; // eax _WORD *v14; // ecx int v15; // edx int result; // eax void *v17; // [esp+18h] [ebp-34h] _WORD *Src; // [esp+18h] [ebp-34h] _DWORD *v19; // [esp+1Ch] [ebp-30h] v5 = *this; v6 = *(*this - 3); v7 = *(*this - 2); v8 = v6 + a4 - a3; v17 = (void *)(a2 + a3); v9 = v6 - (a2 + a3); if ( v8 > v7 ) { LABEL_4: v10 = std::wstring::_Rep::_S_create(v8, v7); v11 = v10; if ( a2 ) { v13 = *this; v12 = (char *)(v11 + 3); if ( a2 == 1 ) { *((_WORD *)v11 + 6) = *(_WORD *)v13; } else { v19 = v11; memcpy(v12, v13, 2 * a2); v13 = *this; v11 = v19; } } else { v12 = (char *)(v10 + 3); v13 = *this; } if ( v9 ) { Src = (_WORD *)v13 + (_DWORD)v17; v14 = (_WORD *)v11 + a2 + a4 + 6; if ( v9 == 1 ) { *v14 = *Src; } else { memcpy(v14, Src, 2 * v9); v13 = *this; } } if ( _CRT_MT ) { v15 = _InterlockedExchangeAdd(v13 - 1, 0xFFFFFFFF); } else { v15 = *(v13 - 1); *(v13 - 1) = v15 - 1; } if ( v15 <= 0 ) operator delete(v13 - 3); *this = (int *)v12; goto LABEL_14; } if ( *(v5 - 1) > 0 ) { v7 = *(*this - 2); goto LABEL_4; } v12 = (char *)*this; if ( v9 && a4 != a3 ) { if ( v9 == 1 ) { *(_WORD *)&v12[2 * a2 + 2 * a4] = *(_WORD *)&v12[2 * (_DWORD)v17]; } else { memmove(&v12[2 * a2 + 2 * a4], &v12[2 * (_DWORD)v17], 2 * v9); v12 = (char *)*this; } } LABEL_14: result = 0; *((_DWORD *)v12 - 1) = 0; *((_DWORD *)v12 - 3) = v8; *(_WORD *)&v12[2 * v8] = 0; return result; } // 53E1E4: using guessed type int _CRT_MT; //----- (004C7380) -------------------------------------------------------- int __thiscall std::wstring::push_back(int *this, __int16 a2) { int v3; // edx int v4; // ebx int result; // eax v3 = *(_DWORD *)(*this - 12); v4 = v3 + 1; if ( (unsigned int)(v3 + 1) > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) std::wstring::reserve(this, v3 + 1); result = *this; *(_WORD *)(result + 2 * *(_DWORD *)(*this - 12)) = a2; *(_DWORD *)(result - 4) = 0; *(_DWORD *)(result - 12) = v4; *(_WORD *)(result + 2 * v4) = 0; return result; } //----- (004C73D0) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) { char *v2; // eax _WORD *result; // eax *this = *a2; v2 = (char *)operator new(0xEu); *((_DWORD *)v2 + 1) = 0; result = v2 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *a2 = result; return result; } //----- (004C7410) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) { char *v3; // eax _WORD *result; // eax *this = *a2; v3 = (char *)operator new(0xEu); *((_DWORD *)v3 + 1) = 0; result = v3 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *a2 = result; return result; } //----- (004C7450) -------------------------------------------------------- _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; } //----- (004C74A0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, (int)&a2[a3]); *this = result; return result; } //----- (004C74E0) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2) { char *v3; // eax _WORD *result; // eax v3 = (char *)operator new(0xEu); *((_DWORD *)v3 + 1) = 0; result = v3 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *this = result; return result; } //----- (004C7520) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax char v4[13]; // [esp+1Fh] [ebp-Dh] BYREF result = (_DWORD *)*a2; if ( *(int *)(*a2 - 4) < 0 ) { result = std::wstring::_Rep::_M_clone(result - 3, (int)v4, 0); *this = result; } else { if ( _CRT_MT ) _InterlockedAdd(result - 1, 1u); else ++*(result - 1); *this = result; } return result; } // 53E1E4: using guessed type int _CRT_MT; // 4C7520: using guessed type char var_D[13]; //----- (004C7590) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax result = (_DWORD *)*a2; if ( *(int *)(*a2 - 4) < 0 ) { result = std::wstring::_Rep::_M_clone(result - 3, a3, 0); *this = result; } else { if ( _CRT_MT ) _InterlockedAdd(result - 1, 1u); else ++*(result - 1); *this = result; } return result; } // 53E1E4: using guessed type int _CRT_MT; //----- (004C7600) -------------------------------------------------------- _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((_WORD *)(*a2 + 2 * a3), *a2 + 2 * v5); *this = result; return result; } //----- (004C7660) -------------------------------------------------------- _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((_WORD *)(v5 + 2 * a3), v7); *this = result; return result; } //----- (004C76D0) -------------------------------------------------------- _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((_WORD *)(v6 + 2 * a3), v8); *this = result; return result; } //----- (004C7740) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, (int)&a2[a3]); *this = result; return result; } //----- (004C7780) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, a3); *this = result; return result; } //----- (004C77B0) -------------------------------------------------------- _WORD *__fastcall std::wstring::basic_string(_DWORD *a1) { char *v2; // eax _WORD *result; // eax v2 = (char *)operator new(0xEu); *((_DWORD *)v2 + 1) = 0; result = v2 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *a1 = result; return result; } //----- (004C77F0) -------------------------------------------------------- int __thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>( _DWORD *this, _WORD *Src, int a3, int a4) { size_t Size; // esi int v6; // ebp _DWORD *v7; // ebx void *v8; // ecx int result; // eax Size = a3 - (_DWORD)Src; v6 = (a3 - (int)Src) >> 1; v7 = std::wstring::_Rep::_S_create(v6, 0); v8 = v7 + 3; if ( v6 == 1 ) { *((_WORD *)v7 + 6) = *Src; } else if ( v6 ) { memcpy(v8, Src, Size); v8 = v7 + 3; } result = 0; v7[2] = 0; *v7 = v6; *(_WORD *)((char *)v7 + Size + 12) = 0; *this = v8; return result; } //----- (004C7880) -------------------------------------------------------- int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4) { size_t Size; // esi int v6; // ebp int *v7; // eax int *v8; // ebx _DWORD *v9; // ecx int result; // eax _DWORD *v11; // [esp+1Ch] [ebp-20h] if ( !Src && a3 ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); Size = a3 - (_DWORD)Src; v6 = (a3 - (int)Src) >> 1; v7 = std::wstring::_Rep::_S_create(v6, 0); v8 = v7; v9 = v7 + 3; if ( v6 == 1 ) { *((_WORD *)v7 + 6) = *Src; } else if ( v6 ) { v11 = v7 + 3; memcpy(v7 + 3, Src, Size); v9 = v11; } result = 0; v8[2] = 0; *v8 = v6; *(_WORD *)((char *)v8 + Size + 12) = 0; *this = v9; return result; } //----- (004C7930) -------------------------------------------------------- int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4) { size_t Size; // esi int v6; // ebp int *v7; // eax int *v8; // ebx _DWORD *v9; // ecx int result; // eax _DWORD *v11; // [esp+1Ch] [ebp-20h] if ( !Src && a3 ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); Size = a3 - (_DWORD)Src; v6 = (a3 - (int)Src) >> 1; v7 = std::wstring::_Rep::_S_create(v6, 0); v8 = v7; v9 = v7 + 3; if ( v6 == 1 ) { *((_WORD *)v7 + 6) = *Src; } else if ( v6 ) { v11 = v7 + 3; memcpy(v7 + 3, Src, Size); v9 = v11; } result = 0; v8[2] = 0; *v8 = v6; *(_WORD *)((char *)v8 + Size + 12) = 0; *this = v9; return result; } //----- (004C79E0) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) { char *v2; // eax _WORD *result; // eax *this = *a2; v2 = (char *)operator new(0xEu); *((_DWORD *)v2 + 1) = 0; result = v2 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *a2 = result; return result; } //----- (004C7A20) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) { char *v3; // eax _WORD *result; // eax *this = *a2; v3 = (char *)operator new(0xEu); *((_DWORD *)v3 + 1) = 0; result = v3 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *a2 = result; return result; } //----- (004C7A60) -------------------------------------------------------- _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; } //----- (004C7AB0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, (int)&a2[a3]); *this = result; return result; } //----- (004C7AF0) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2) { char *v3; // eax _WORD *result; // eax v3 = (char *)operator new(0xEu); *((_DWORD *)v3 + 1) = 0; result = v3 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *this = result; return result; } //----- (004C7B30) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax char v4[13]; // [esp+1Fh] [ebp-Dh] BYREF result = (_DWORD *)*a2; if ( *(int *)(*a2 - 4) < 0 ) { result = std::wstring::_Rep::_M_clone(result - 3, (int)v4, 0); *this = result; } else { if ( _CRT_MT ) _InterlockedAdd(result - 1, 1u); else ++*(result - 1); *this = result; } return result; } // 53E1E4: using guessed type int _CRT_MT; // 4C7B30: using guessed type char var_D[13]; //----- (004C7BA0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax result = (_DWORD *)*a2; if ( *(int *)(*a2 - 4) < 0 ) { result = std::wstring::_Rep::_M_clone(result - 3, a3, 0); *this = result; } else { if ( _CRT_MT ) _InterlockedAdd(result - 1, 1u); else ++*(result - 1); *this = result; } return result; } // 53E1E4: using guessed type int _CRT_MT; //----- (004C7C10) -------------------------------------------------------- _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((_WORD *)(*a2 + 2 * a3), *a2 + 2 * v5); *this = result; return result; } //----- (004C7C70) -------------------------------------------------------- _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((_WORD *)(v5 + 2 * a3), v7); *this = result; return result; } //----- (004C7CE0) -------------------------------------------------------- _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((_WORD *)(v6 + 2 * a3), v8); *this = result; return result; } //----- (004C7D50) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, (int)&a2[a3]); *this = result; return result; } //----- (004C7D90) -------------------------------------------------------- _DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4) { _DWORD *result; // eax result = std::wstring::_S_construct(a2, a3); *this = result; return result; } //----- (004C7DC0) -------------------------------------------------------- _WORD *__fastcall std::wstring::basic_string(_DWORD *a1) { char *v2; // eax _WORD *result; // eax v2 = (char *)operator new(0xEu); *((_DWORD *)v2 + 1) = 0; result = v2 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *a1 = result; return result; } //----- (004C7E00) -------------------------------------------------------- int __thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>( _DWORD *this, _WORD *Src, int a3, int a4) { size_t Size; // esi int v6; // ebp _DWORD *v7; // ebx void *v8; // ecx int result; // eax Size = a3 - (_DWORD)Src; v6 = (a3 - (int)Src) >> 1; v7 = std::wstring::_Rep::_S_create(v6, 0); v8 = v7 + 3; if ( v6 == 1 ) { *((_WORD *)v7 + 6) = *Src; } else if ( v6 ) { memcpy(v8, Src, Size); v8 = v7 + 3; } result = 0; v7[2] = 0; *v7 = v6; *(_WORD *)((char *)v7 + Size + 12) = 0; *this = v8; return result; } //----- (004C7E90) -------------------------------------------------------- int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4) { size_t Size; // esi int v6; // ebp int *v7; // eax int *v8; // ebx _DWORD *v9; // ecx int result; // eax _DWORD *v11; // [esp+1Ch] [ebp-20h] if ( !Src && a3 ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); Size = a3 - (_DWORD)Src; v6 = (a3 - (int)Src) >> 1; v7 = std::wstring::_Rep::_S_create(v6, 0); v8 = v7; v9 = v7 + 3; if ( v6 == 1 ) { *((_WORD *)v7 + 6) = *Src; } else if ( v6 ) { v11 = v7 + 3; memcpy(v7 + 3, Src, Size); v9 = v11; } result = 0; v8[2] = 0; *v8 = v6; *(_WORD *)((char *)v8 + Size + 12) = 0; *this = v9; return result; } //----- (004C7F40) -------------------------------------------------------- int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4) { size_t Size; // esi int v6; // ebp int *v7; // eax int *v8; // ebx _DWORD *v9; // ecx int result; // eax _DWORD *v11; // [esp+1Ch] [ebp-20h] if ( !Src && a3 ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); Size = a3 - (_DWORD)Src; v6 = (a3 - (int)Src) >> 1; v7 = std::wstring::_Rep::_S_create(v6, 0); v8 = v7; v9 = v7 + 3; if ( v6 == 1 ) { *((_WORD *)v7 + 6) = *Src; } else if ( v6 ) { v11 = v7 + 3; memcpy(v7 + 3, Src, Size); v9 = v11; } result = 0; v8[2] = 0; *v8 = v6; *(_WORD *)((char *)v8 + Size + 12) = 0; *this = v9; return result; } //----- (004C7FF0) -------------------------------------------------------- void __fastcall std::wstring::~wstring(int *a1) { int v1; // eax int v2; // edx v1 = *a1; if ( !_CRT_MT ) { v2 = *(_DWORD *)(v1 - 4); *(_DWORD *)(v1 - 4) = v2 - 1; if ( v2 > 0 ) return; LABEL_5: operator delete((void *)(v1 - 12)); return; } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 53E1E4: using guessed type int _CRT_MT; //----- (004C8030) -------------------------------------------------------- void __fastcall std::wstring::~wstring(int *a1) { int v1; // eax int v2; // edx v1 = *a1; if ( !_CRT_MT ) { v2 = *(_DWORD *)(v1 - 4); *(_DWORD *)(v1 - 4) = v2 - 1; if ( v2 > 0 ) return; LABEL_5: operator delete((void *)(v1 - 12)); return; } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 53E1E4: using guessed type int _CRT_MT; //----- (004C8070) -------------------------------------------------------- _DWORD *__thiscall std::wstring::operator=(_DWORD *this, int *a2) { _DWORD *result; // eax int v3; // edx int v4; // ecx result = this; v3 = *this; if ( *(int *)(*this - 4) < 0 ) *(_DWORD *)(v3 - 4) = 0; v4 = *a2; if ( *(int *)(*a2 - 4) < 0 ) *(_DWORD *)(v4 - 4) = 0; *result = v4; *a2 = v3; return result; } //----- (004C80B0) -------------------------------------------------------- int **__thiscall std::wstring::operator=(int **this, wchar_t *String) { unsigned int v3; // eax v3 = wcslen(String); return std::wstring::assign(this, (char *)String, v3); } //----- (004C80E0) -------------------------------------------------------- int *__thiscall std::wstring::operator=(int *this, _DWORD *a2) { _DWORD *v3; // esi int v4; // eax int v5; // edx char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF v3 = (_DWORD *)*a2; if ( *this != *a2 ) { if ( (int)*(v3 - 1) < 0 ) { v3 = std::wstring::_Rep::_M_clone(v3 - 3, (int)v7, 0); v4 = *this; if ( !_CRT_MT ) goto LABEL_6; } else { if ( _CRT_MT ) _InterlockedAdd(v3 - 1, 1u); else ++*(v3 - 1); v4 = *this; if ( !_CRT_MT ) { LABEL_6: v5 = *(_DWORD *)(v4 - 4); *(_DWORD *)(v4 - 4) = v5 - 1; if ( v5 > 0 ) { LABEL_7: *this = (int)v3; return this; } LABEL_11: operator delete((void *)(v4 - 12)); *this = (int)v3; return this; } } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v4 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_7; goto LABEL_11; } return this; } // 53E1E4: using guessed type int _CRT_MT; // 4C80E0: using guessed type char var_D[13]; //----- (004C8190) -------------------------------------------------------- int **__thiscall std::wstring::operator=(int **this, char *a2, int a3) { std::wstring::assign(this, a2, a3); return this; } //----- (004C81C0) -------------------------------------------------------- int **__thiscall std::wstring::operator=(int **this, __int16 a2) { std::wstring::_M_mutate(this, 0, *(*this - 3), 1); *(_WORD *)*this = a2; return this; } //----- (004C8200) -------------------------------------------------------- char *__thiscall std::wstring::operator[](int **this, int a2) { int *v2; // eax int *v5; // eax v2 = *this; if ( *(*this - 1) < 0 ) return (char *)v2 + 2 * a2; if ( *(v2 - 1) > 0 ) std::wstring::_M_mutate(this, 0, 0, 0); v5 = *this; *(v5 - 1) = -1; return (char *)v5 + 2 * a2; } //----- (004C8260) -------------------------------------------------------- int *__thiscall std::wstring::operator+=(int *this, wchar_t *String) { unsigned int v3; // eax v3 = wcslen(String); return std::wstring::append(this, (char *)String, v3); } //----- (004C82B0) -------------------------------------------------------- int *__thiscall std::wstring::operator+=(int *this, __int16 a2) { int v3; // edx int v4; // esi int v5; // eax v3 = *(_DWORD *)(*this - 12); v4 = v3 + 1; if ( (unsigned int)(v3 + 1) > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) std::wstring::reserve(this, v3 + 1); v5 = *this; *(_WORD *)(v5 + 2 * *(_DWORD *)(*this - 12)) = a2; *(_DWORD *)(v5 - 4) = 0; *(_DWORD *)(v5 - 12) = v4; *(_WORD *)(v5 + 2 * v4) = 0; return this; } //----- (004C8310) -------------------------------------------------------- void __userpurge std::iostream::swap(_DWORD *a1@, std::iostream *this, std::iostream *a3) { std::ios_base *v4; // esi std::ios_base *v5; // ebx int v6; // edx char v7; // cl char v8; // cl int v9; // edx std::ios_base *v10; // [esp+4h] [ebp-68h] v4 = (std::ios_base *)((char *)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(v4, (int)v4 + 108); std::ios::_M_cache_locale(v5, (int)v5 + 108); v6 = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = *((_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; v9 = a1[1]; *((_BYTE *)v5 + 117) = v8; a1[1] = *((_DWORD *)this + 1); *((_DWORD *)this + 1) = v9; } // 4C834D: variable 'v10' is possibly undefined //----- (004C83D0) -------------------------------------------------------- void __thiscall std::iostream::iostream(_DWORD *this, int *a2) { int v2; // eax int v3; // eax std::ios_base *v4; // ecx int v5; // eax std::ios_base *v6; // [esp+4h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] _DWORD *v8; // [esp+14h] [ebp-44h] v8 = this + 3; std::ios_base::ios_base(this + 3); *((_WORD *)this + 64) = 0; v2 = a2[1]; *this = &unk_55B3C0; this[1] = v2; this[31] = 0; v3 = *a2; this[33] = 0; this[34] = 0; v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); this[3] = &unk_55B3D4; this[35] = 0; this[36] = 0; lpuexcpt = v4; std::ios_base::_M_move((int)v8, v4, v6); std::ios::_M_cache_locale(v8, (int)(this + 30)); this[33] = 0; v5 = *((_DWORD *)lpuexcpt + 28); *((_DWORD *)lpuexcpt + 28) = 0; this[31] = v5; *((_WORD *)this + 64) = *((_WORD *)lpuexcpt + 58); a2[1] = 0; *this = &off_55FE04; this[3] = off_55FE2C; this[2] = off_55FE18; } // 4C8472: variable 'v6' is possibly undefined // 55FE04: using guessed type void (__cdecl *off_55FE04)(std::iostream *__hidden this); // 55FE18: using guessed type void (__cdecl *off_55FE18[2])(std::iostream *__hidden this); // 55FE2C: using guessed type void (__cdecl *off_55FE2C[2])(std::iostream *__hidden this); //----- (004C8520) -------------------------------------------------------- void __thiscall std::iostream::iostream(_DWORD *this, int a2) { int v2; // [esp+14h] [ebp-44h] 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_55B3C0; this[3] = &unk_55B3D4; this[1] = 0; std::ios::init(v2, a2); this[2] = &unk_55B3E8; this[3] = &unk_55B3FC; std::ios::init(v2, a2); *this = &off_55FE04; this[3] = off_55FE2C; this[2] = off_55FE18; } // 55FE04: using guessed type void (__cdecl *off_55FE04)(std::iostream *__hidden this); // 55FE18: using guessed type void (__cdecl *off_55FE18[2])(std::iostream *__hidden this); // 55FE2C: using guessed type void (__cdecl *off_55FE2C[2])(std::iostream *__hidden this); //----- (004C8660) -------------------------------------------------------- void __fastcall std::iostream::iostream(int a1) { int v1; // [esp+14h] [ebp-44h] 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_55B3C0; *(_DWORD *)(a1 + 12) = &unk_55B3D4; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_55B3E8; *(_DWORD *)(a1 + 12) = &unk_55B3FC; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_55FE04; *(_DWORD *)(a1 + 12) = off_55FE2C; *(_DWORD *)(a1 + 8) = off_55FE18; } // 55FE04: using guessed type void (__cdecl *off_55FE04)(std::iostream *__hidden this); // 55FE18: using guessed type void (__cdecl *off_55FE18[2])(std::iostream *__hidden this); // 55FE2C: using guessed type void (__cdecl *off_55FE2C[2])(std::iostream *__hidden this); //----- (004C87A0) -------------------------------------------------------- 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; } // 4C87DB: variable 'v13' is possibly undefined //----- (004C8850) -------------------------------------------------------- void __thiscall std::iostream::iostream(int *this, int *a2, int a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax _DWORD *v8; // ecx int v9; // eax int v10; // edx v4 = a2[1]; v5 = a2[2]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v4 - 12), a3); v7 = a2[3]; this[2] = v7; v8 = (int *)((char *)this + *(_DWORD *)(v7 - 12) + 8); *v8 = a2[4]; std::ios::init((int)v8, a3); v9 = *a2; v10 = a2[5]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; this[2] = a2[6]; } //----- (004C8950) -------------------------------------------------------- void __thiscall std::iostream::iostream(_DWORD *ecx0, std::iostream *this) { int v3; // eax int v4; // ecx int v5; // edx int v6; // eax _DWORD *v7; // ecx int v8; // eax int v9; // edx v3 = *((_DWORD *)this + 1); v4 = *((_DWORD *)this + 2); v5 = *(_DWORD *)(v3 - 12); *ecx0 = v3; *(_DWORD *)((char *)ecx0 + v5) = v4; ecx0[1] = 0; std::ios::init((int)ecx0 + *(_DWORD *)(v3 - 12), 0); v6 = *((_DWORD *)this + 3); ecx0[2] = v6; v7 = (_DWORD *)((char *)ecx0 + *(_DWORD *)(v6 - 12) + 8); *v7 = *((_DWORD *)this + 4); std::ios::init((int)v7, 0); v8 = *(_DWORD *)this; v9 = *((_DWORD *)this + 5); *ecx0 = *(_DWORD *)this; *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v8 - 12)) = v9; ecx0[2] = *((_DWORD *)this + 6); } //----- (004C8A50) -------------------------------------------------------- void __fastcall std::iostream::~iostream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 3; *(v2 - 1) = &unk_55B3E8; *(v2 - 3) = &unk_55B3C0; *(v2 - 2) = 0; *v2 = &off_560E20; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 560E20: using guessed type int (*off_560E20)(); //----- (004C8A90) -------------------------------------------------------- void __fastcall std::iostream::~iostream(int a1) { _DWORD *v1; // ecx *(_DWORD *)(a1 + 8) = &unk_55B3E8; v1 = (_DWORD *)(a1 + 12); *(v1 - 3) = &unk_55B3C0; *(v1 - 2) = 0; *v1 = &off_560E20; std::ios_base::~ios_base((int)v1); } // 560E20: using guessed type int (*off_560E20)(); //----- (004C8AC0) -------------------------------------------------------- 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; } //----- (004C8B10) -------------------------------------------------------- _DWORD *__thiscall std::iostream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // edx char v6; // cl char v7; // cl int v8; // edx std::ios_base *v10; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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; } // 4C8B4D: variable 'v10' is possibly undefined //----- (004C8BD0) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { char *v2; // edi int v3; // ecx bool v5; // [esp+8h] [ebp-80h] char v7; // [esp+6Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v7, this, 0, v5); if ( v7 ) { v8[0] = 0; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 48))( v3, *((_DWORD *)v2 + 30), -1, 0, -1, (int)this + *(_DWORD *)(*(_DWORD *)this - 12), v8, a2); if ( v8[0] ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); } return this; } // 4C8C1A: variable 'v5' is possibly undefined // 4C8BD0: using guessed type int var_1C[7]; //----- (004C8D90) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { char *v2; // edi int v3; // ecx bool v5; // [esp+8h] [ebp-80h] char v7; // [esp+6Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v7, this, 0, v5); if ( v7 ) { v8[0] = 0; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 8))( v3, *((_DWORD *)v2 + 30), -1, 0, -1, (int)this + *(_DWORD *)(*(_DWORD *)this - 12), v8, a2); if ( v8[0] ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); } return this; } // 4C8DDA: variable 'v5' is possibly undefined // 4C8D90: using guessed type int var_1C[7]; //----- (004C8F50) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { char *v2; // edi int v3; // ecx bool v5; // [esp+8h] [ebp-80h] char v7; // [esp+6Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v7, this, 0, v5); if ( v7 ) { v8[0] = 0; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 40))( v3, *((_DWORD *)v2 + 30), -1, 0, -1, (int)this + *(_DWORD *)(*(_DWORD *)this - 12), v8, a2); if ( v8[0] ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); } return this; } // 4C8F9A: variable 'v5' is possibly undefined // 4C8F50: using guessed type int var_1C[7]; //----- (004C9110) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { char *v2; // edi int v3; // ecx bool v5; // [esp+8h] [ebp-80h] char v7; // [esp+6Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v7, this, 0, v5); if ( v7 ) { v8[0] = 0; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 44))( v3, *((_DWORD *)v2 + 30), -1, 0, -1, (int)this + *(_DWORD *)(*(_DWORD *)this - 12), v8, a2); if ( v8[0] ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); } return this; } // 4C915A: variable 'v5' is possibly undefined // 4C9110: using guessed type int var_1C[7]; //----- (004C92D0) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { char *v2; // edi int v3; // ecx bool v5; // [esp+8h] [ebp-80h] char v7; // [esp+6Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v7, this, 0, v5); if ( v7 ) { v8[0] = 0; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 36))( v3, *((_DWORD *)v2 + 30), -1, 0, -1, (int)this + *(_DWORD *)(*(_DWORD *)this - 12), v8, a2); if ( v8[0] ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); } return this; } // 4C931A: variable 'v5' is possibly undefined // 4C92D0: using guessed type int var_1C[7]; //----- (004C9490) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { char *v2; // edi int v3; // ecx bool v5; // [esp+8h] [ebp-80h] char v7; // [esp+6Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v7, this, 0, v5); if ( v7 ) { v8[0] = 0; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 20))( v3, *((_DWORD *)v2 + 30), -1, 0, -1, (int)this + *(_DWORD *)(*(_DWORD *)this - 12), v8, a2); if ( v8[0] ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); } return this; } // 4C94DA: variable 'v5' is possibly undefined // 4C9490: using guessed type int var_1C[7]; //----- (004C9650) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { char *v2; // edi int v3; // ecx bool v5; // [esp+8h] [ebp-80h] char v7; // [esp+6Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v7, this, 0, v5); if ( v7 ) { v8[0] = 0; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 12))( v3, *((_DWORD *)v2 + 30), -1, 0, -1, (int)this + *(_DWORD *)(*(_DWORD *)this - 12), v8, a2); if ( v8[0] ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); } return this; } // 4C969A: variable 'v5' is possibly undefined // 4C9650: using guessed type int var_1C[7]; //----- (004C9810) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { char *v2; // edi int v3; // ecx bool v5; // [esp+8h] [ebp-80h] char v7; // [esp+6Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v7, this, 0, v5); if ( v7 ) { v8[0] = 0; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 24))( v3, *((_DWORD *)v2 + 30), -1, 0, -1, (int)this + *(_DWORD *)(*(_DWORD *)this - 12), v8, a2); if ( v8[0] ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); } return this; } // 4C985A: variable 'v5' is possibly undefined // 4C9810: using guessed type int var_1C[7]; //----- (004C99D0) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { char *v2; // edi int v3; // ecx bool v5; // [esp+8h] [ebp-80h] char v7; // [esp+6Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v7, this, 0, v5); if ( v7 ) { v8[0] = 0; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 16))( v3, *((_DWORD *)v2 + 30), -1, 0, -1, (int)this + *(_DWORD *)(*(_DWORD *)this - 12), v8, a2); if ( v8[0] ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); } return this; } // 4C9A1A: variable 'v5' is possibly undefined // 4C99D0: using guessed type int var_1C[7]; //----- (004C9B90) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { char *v2; // edi int v3; // ecx bool v5; // [esp+8h] [ebp-80h] char v7; // [esp+6Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v7, this, 0, v5); if ( v7 ) { v8[0] = 0; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 28))( v3, *((_DWORD *)v2 + 30), -1, 0, -1, (int)this + *(_DWORD *)(*(_DWORD *)this - 12), v8, a2); if ( v8[0] ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); } return this; } // 4C9BDA: variable 'v5' is possibly undefined // 4C9B90: using guessed type int var_1C[7]; //----- (004C9D50) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) { char *v2; // edi int v3; // ecx bool v5; // [esp+8h] [ebp-80h] char v7; // [esp+6Bh] [ebp-1Dh] BYREF int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v7, this, 0, v5); if ( v7 ) { v8[0] = 0; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 32))( v3, *((_DWORD *)v2 + 30), -1, 0, -1, (int)this + *(_DWORD *)(*(_DWORD *)this - 12), v8, a2); if ( v8[0] ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); } return this; } // 4C9D9A: variable 'v5' is possibly undefined // 4C9D50: using guessed type int var_1C[7]; //----- (004C9F10) -------------------------------------------------------- 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); } // 4C9F43: variable 'v10' is possibly undefined //----- (004C9F90) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::get@( std::istream::sentry *a1@, std::istream *this, char *a3, unsigned __int8 a4, char a5) { int v6; // edx unsigned __int8 *v7; // eax int v8; // eax unsigned __int8 *v9; // eax unsigned int v10; // edx unsigned int v11; // eax bool v12; // [esp+8h] [ebp-80h] struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] char v15[25]; // [esp+6Fh] [ebp-19h] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v15, a1, (std::istream *)1, v12); if ( !v15[0] ) { if ( (int)a3 > 0 ) *(_BYTE *)this = 0; goto LABEL_4; } lpuexcpt = *(struct _Unwind_Exception **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v7 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v7 < *((_DWORD *)lpuexcpt + 3) ) { v8 = *v7; if ( (int)a3 <= *((_DWORD *)a1 + 1) + 1 ) goto LABEL_7; goto LABEL_13; } v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); v6 = *((_DWORD *)a1 + 1); if ( (int)a3 <= v6 + 1 ) { LABEL_6: if ( v8 != -1 ) goto LABEL_7; } else if ( v8 != -1 ) { LABEL_13: if ( a4 != v8 ) { while ( 1 ) { this = (std::istream *)((char *)this + 1); *((_BYTE *)this - 1) = v8; v10 = *((_DWORD *)lpuexcpt + 3); ++*((_DWORD *)a1 + 1); v11 = *((_DWORD *)lpuexcpt + 2); if ( v11 < v10 ) { v9 = (unsigned __int8 *)(v11 + 1); *((_DWORD *)lpuexcpt + 2) = v9; } else { if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) goto LABEL_21; v9 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); v10 = *((_DWORD *)lpuexcpt + 3); } if ( (unsigned int)v9 >= v10 ) { v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); v6 = *((_DWORD *)a1 + 1); if ( v6 + 1 >= (int)a3 ) goto LABEL_6; if ( v8 == -1 ) { LABEL_21: if ( (int)a3 > 0 ) { v6 = 2; *(_BYTE *)this = 0; if ( *((_DWORD *)a1 + 1) ) goto LABEL_10; goto LABEL_23; } if ( !*((_DWORD *)a1 + 1) ) { v6 = 2; LABEL_23: v6 |= 4u; goto LABEL_10; } LABEL_33: v6 = 2; goto LABEL_10; } } else { v8 = *v9; v6 = *((_DWORD *)a1 + 1); if ( v6 + 1 >= (int)a3 ) break; } if ( v8 == a4 ) { if ( (int)a3 > 0 ) { *(_BYTE *)this = 0; v6 = *((_DWORD *)a1 + 1); } if ( !v6 ) goto LABEL_23; return a1; } } } LABEL_7: if ( (int)a3 > 0 ) { *(_BYTE *)this = 0; if ( *((_DWORD *)a1 + 1) ) return a1; goto LABEL_9; } LABEL_4: if ( *((_DWORD *)a1 + 1) ) return a1; LABEL_9: v6 = 4; goto LABEL_10; } if ( (int)a3 <= 0 ) { if ( v6 ) goto LABEL_33; } else { *(_BYTE *)this = 0; if ( *((_DWORD *)a1 + 1) ) goto LABEL_33; } v6 = 6; LABEL_10: std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v6); return a1; } // 4C9FE7: variable 'v12' is possibly undefined // 4C9F90: using guessed type char var_19[25]; //----- (004CA2F0) -------------------------------------------------------- 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); } //----- (004CA370) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2, unsigned __int8 a3) { int v3; // eax unsigned __int8 *v5; // eax int v6; // edx int v7; // eax unsigned int v8; // edx unsigned int v9; // eax unsigned __int8 *v10; // eax int v11; // edx _BYTE *v12; // edx bool v13; // [esp+8h] [ebp-70h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] char v16[25]; // [esp+5Fh] [ebp-19h] BYREF *((_DWORD *)this + 1) = 0; std::istream::sentry::sentry(v16, this, (std::istream *)1, v13); if ( v16[0] ) { lpuexcpt = *(struct _Unwind_Exception **)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 120); v5 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v5 >= *((_DWORD *)lpuexcpt + 3) ) { v6 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); v7 = (unsigned __int8)v6; if ( v6 == -1 ) { LABEL_20: v3 = *((_DWORD *)this + 1) == 0 ? 6 : 2; goto LABEL_4; } } else { v6 = *v5; v7 = v6; } if ( v6 != a3 ) { do { v12 = (_BYTE *)a2[5]; if ( (unsigned int)v12 < a2[6] ) { *v12 = v7; ++a2[5]; } else if ( (*(int (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v7) == -1 ) { break; } ++*((_DWORD *)this + 1); v8 = *((_DWORD *)lpuexcpt + 3); v9 = *((_DWORD *)lpuexcpt + 2); if ( v9 >= v8 ) { if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) goto LABEL_20; v10 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); v8 = *((_DWORD *)lpuexcpt + 3); } else { v10 = (unsigned __int8 *)(v9 + 1); *((_DWORD *)lpuexcpt + 2) = v10; } if ( (unsigned int)v10 >= v8 ) { v11 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); v7 = (unsigned __int8)v11; if ( v11 == -1 ) goto LABEL_20; } else { v7 = *v10; v11 = (unsigned __int8)v7; } } while ( a3 != v11 ); } } if ( !*((_DWORD *)this + 1) ) { v3 = 4; LABEL_4: std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v3); } return this; } // 4CA3C7: variable 'v13' is possibly undefined // 4CA370: using guessed type char var_19[25]; //----- (004CA600) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3) { int v3; // eax _DWORD *v5; // ecx char *v6; // eax char v7; // dl int v8; // eax bool v9; // [esp+8h] [ebp-70h] char v11[25]; // [esp+5Fh] [ebp-19h] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v11, a1, (std::istream *)1, v9); if ( v11[0] ) { v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v6 = (char *)v5[2]; if ( (unsigned int)v6 >= v5[3] ) { v8 = (*(int (__fastcall **)(_DWORD *))(*v5 + 40))(v5); if ( v8 == -1 ) { v3 = *((_DWORD *)a1 + 1) == 0 ? 6 : 2; goto LABEL_4; } v7 = v8; } else { v7 = *v6; v5[2] = v6 + 1; } *((_DWORD *)a1 + 1) = 1; *(_BYTE *)this = v7; if ( *((_DWORD *)a1 + 1) ) return a1; LABEL_3: v3 = 4; LABEL_4: std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v3); return a1; } if ( !*((_DWORD *)a1 + 1) ) goto LABEL_3; return a1; } // 4CA651: variable 'v9' is possibly undefined // 4CA600: using guessed type char var_19[25]; //----- (004CA7D0) -------------------------------------------------------- int __fastcall std::istream::get(std::istream::sentry *a1) { _DWORD *v1; // ecx unsigned __int8 *v2; // eax struct _Unwind_Exception *v3; // edi int v5; // eax bool v6; // [esp+8h] [ebp-70h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] char v9[25]; // [esp+5Fh] [ebp-19h] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v9, a1, (std::istream *)1, v6); if ( !v9[0] ) { if ( *((_DWORD *)a1 + 1) ) return -1; v5 = 4; LABEL_8: std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v5); return -1; } v1 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v2 = (unsigned __int8 *)v1[2]; if ( (unsigned int)v2 >= v1[3] ) { lpuexcpt = (struct _Unwind_Exception *)(*(int (__fastcall **)(_DWORD *))(*v1 + 40))(v1); if ( lpuexcpt != (struct _Unwind_Exception *)-1 ) goto LABEL_4; v5 = *((_DWORD *)a1 + 1) == 0 ? 6 : 2; goto LABEL_8; } v3 = (struct _Unwind_Exception *)*v2; v1[2] = v2 + 1; lpuexcpt = v3; LABEL_4: *((_DWORD *)a1 + 1) = 1; return (int)lpuexcpt; } // 4CA821: variable 'v6' is possibly undefined // 4CA7D0: using guessed type char var_19[25]; //----- (004CA990) -------------------------------------------------------- int __fastcall std::istream::peek(std::istream::sentry *a1) { _DWORD *v1; // ecx unsigned __int8 *v2; // eax bool v4; // [esp+8h] [ebp-70h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] char v7[25]; // [esp+5Fh] [ebp-19h] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v7, a1, (std::istream *)1, v4); if ( !v7[0] ) return -1; v1 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v2 = (unsigned __int8 *)v1[2]; if ( (unsigned int)v2 < v1[3] ) return *v2; lpuexcpt = (struct _Unwind_Exception *)(*(int (__fastcall **)(_DWORD *))(*v1 + 36))(v1); if ( lpuexcpt == (struct _Unwind_Exception *)-1 ) std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); return (int)lpuexcpt; } // 4CA9E1: variable 'v4' is possibly undefined // 4CA990: using guessed type char var_19[25]; //----- (004CAB30) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::read@( std::istream::sentry *a1@, std::istream *this, char *a3, int a4) { int v4; // ecx char *v5; // eax bool v7; // [esp+8h] [ebp-70h] char v9[25]; // [esp+5Fh] [ebp-19h] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v9, a1, (std::istream *)1, v7); if ( v9[0] ) { v4 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v5 = (char *)(*(int (__thiscall **)(int, std::istream *, char *))(*(_DWORD *)v4 + 32))(v4, this, a3); *((_DWORD *)a1 + 1) = v5; if ( a3 != v5 ) std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 6); } return a1; } // 4CAB81: variable 'v7' is possibly undefined // 4CAB30: using guessed type char var_19[25]; //----- (004CACC0) -------------------------------------------------------- void __userpurge std::istream::swap(_DWORD *a1@, std::istream *this, std::istream *a3) { std::ios_base *v4; // esi std::ios_base *v5; // ebx int v6; // edx char v7; // cl char v8; // cl int v9; // edx std::ios_base *v10; // [esp+4h] [ebp-68h] v4 = (std::ios_base *)((char *)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(v4, (int)v4 + 108); std::ios::_M_cache_locale(v5, (int)v5 + 108); v6 = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = *((_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; v9 = a1[1]; *((_BYTE *)v5 + 117) = v8; a1[1] = *((_DWORD *)this + 1); *((_DWORD *)this + 1) = v9; } // 4CACFD: variable 'v10' is possibly undefined //----- (004CAD80) -------------------------------------------------------- int __fastcall std::istream::sync(std::istream::sentry *a1) { int v1; // ecx bool v3; // [esp+8h] [ebp-70h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] char v6[25]; // [esp+5Fh] [ebp-19h] BYREF std::istream::sentry::sentry(v6, a1, (std::istream *)1, v3); if ( !v6[0] ) return -1; v1 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); if ( !v1 ) return -1; lpuexcpt = (struct _Unwind_Exception *)(*(int (__fastcall **)(int))(*(_DWORD *)v1 + 24))(v1); if ( lpuexcpt != (struct _Unwind_Exception *)-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 (int)lpuexcpt; } // 4CADCA: variable 'v3' is possibly undefined // 4CAD80: using guessed type char var_19[25]; //----- (004CAF10) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4, int a5) { char *v5; // edi _DWORD *v6; // eax int v7; // edi void (__thiscall *v8)(int *, _DWORD *, int, int, int, int, int); // eax _DWORD *v10; // [esp+0h] [ebp-B8h] bool v11; // [esp+8h] [ebp-B0h] char v13; // [esp+7Fh] [ebp-39h] BYREF int v14[14]; // [esp+80h] [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(&v13, this, (std::istream *)1, v11); if ( v13 ) { v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( (v5[20] & 5) == 0 ) { v6 = (_DWORD *)*((_DWORD *)v5 + 30); v7 = *v6; v14[6] = a4; v10 = v6; v8 = *(void (__thiscall **)(int *, _DWORD *, int, int, int, int, int))(v7 + 20); v14[4] = a2; v14[5] = a3; v14[7] = a5; v8(v14, v10, a2, a3, a4, a5, 8); if ( (v14[0] & v14[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; } // 4CAF9F: variable 'v11' is possibly undefined //----- (004CB150) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4) { char *v4; // edi bool v6; // [esp+8h] [ebp-90h] char v8; // [esp+6Fh] [ebp-29h] BYREF int v9[10]; // [esp+70h] [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, v6); if ( v8 ) { v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( (v4[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v4 + 30) + 16))( v9, *((_DWORD *)v4 + 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; } // 4CB1C4: variable 'v6' is possibly undefined //----- (004CB320) -------------------------------------------------------- _DWORD *__thiscall std::istream::tellg(_DWORD *ecx0, std::istream *this) { char *v2; // esi bool v4; // [esp+8h] [ebp-90h] char v6; // [esp+6Fh] [ebp-29h] BYREF int v7[10]; // [esp+70h] [ebp-28h] BYREF *ecx0 = -1; ecx0[1] = -1; ecx0[2] = 0; std::istream::sentry::sentry(&v6, this, (std::istream *)1, v4); if ( v6 ) { v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( (v2[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v2 + 30) + 16))( v7, *((_DWORD *)v2 + 30), 0, 0, 1, 8); *ecx0 = v7[0]; ecx0[1] = v7[1]; ecx0[2] = v7[2]; } } return ecx0; } // 4CB384: variable 'v4' is possibly undefined //----- (004CB4D0) -------------------------------------------------------- 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-70h] char v9[25]; // [esp+5Fh] [ebp-19h] 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(v9, a1, (std::istream *)1, v7); if ( v9[0] ) { 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 (__thiscall **)(_DWORD *, int))(*v3 + 44))(v3, -1) != -1 ) return a1; v4 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); } std::ios::clear(v4, v4[5] | 1); } return a1; } // 4CB53C: variable 'v7' is possibly undefined // 4CB4D0: using guessed type char var_19[25]; //----- (004CB680) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::ignore@( std::istream::sentry *a1@, std::istream *this, int a3) { unsigned __int8 *v4; // eax int v5; // edx int i; // eax unsigned int v7; // ebx unsigned int v8; // edx int v9; // ecx unsigned __int8 *v10; // edx unsigned __int8 *v11; // edx bool v12; // [esp+8h] [ebp-80h] _DWORD *v13; // [esp+1Ch] [ebp-6Ch] char v14; // [esp+23h] [ebp-65h] char lpuexcpt; // [esp+24h] [ebp-64h] std::istream::sentry *v16; // [esp+28h] [ebp-60h] char v17[25]; // [esp+6Fh] [ebp-19h] BYREF v16 = a1; if ( this == (std::istream *)1 ) return std::istream::ignore(a1); *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v17, a1, (std::istream *)1, v12); if ( (int)this > 0 ) { lpuexcpt = v17[0]; if ( v17[0] ) { v13 = *(_DWORD **)((char *)v16 + *(_DWORD *)(*(_DWORD *)v16 - 12) + 120); v4 = (unsigned __int8 *)v13[2]; if ( (unsigned int)v4 >= v13[3] ) v5 = (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13); else v5 = *v4; v14 = 0; for ( i = *((_DWORD *)v16 + 1); ; i = 0x80000000 ) { while ( 2 ) { if ( (int)this > i ) { while ( 1 ) { if ( v5 == -1 ) goto LABEL_23; v7 = v13[3]; v8 = v13[2]; v9 = (int)this - i; if ( (int)this - i > (int)(v7 - v8) ) v9 = v13[3] - v8; if ( v9 <= 1 ) break; v10 = (unsigned __int8 *)(v9 + v8); i += v9; v13[2] = v10; *((_DWORD *)v16 + 1) = i; if ( v7 <= (unsigned int)v10 ) goto LABEL_26; v5 = *v10; if ( (int)this <= i ) goto LABEL_16; } *((_DWORD *)v16 + 1) = i + 1; if ( v8 >= v7 ) { if ( (*(int (__fastcall **)(_DWORD *))(*v13 + 40))(v13) == -1 ) { LABEL_23: if ( v14 ) *((_DWORD *)v16 + 1) = 0x7FFFFFFF; goto LABEL_25; } v11 = (unsigned __int8 *)v13[2]; v7 = v13[3]; } else { v11 = (unsigned __int8 *)(v8 + 1); v13[2] = v11; } if ( v7 > (unsigned int)v11 ) { v5 = *v11; i = *((_DWORD *)v16 + 1); continue; } LABEL_26: v5 = (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13); i = *((_DWORD *)v16 + 1); continue; } break; } LABEL_16: if ( this != (std::istream *)0x7FFFFFFF ) break; if ( v5 == -1 ) goto LABEL_23; *((_DWORD *)v16 + 1) = 0x80000000; v14 = lpuexcpt; } if ( v14 ) *((_DWORD *)v16 + 1) = 0x7FFFFFFF; if ( v5 == -1 ) LABEL_25: std::ios::clear( (std::istream::sentry *)((char *)v16 + *(_DWORD *)(*(_DWORD *)v16 - 12)), *(_DWORD *)((char *)v16 + *(_DWORD *)(*(_DWORD *)v16 - 12) + 20) | 2); } } return v16; } // 4CB6D7: variable 'v12' is possibly undefined // 4CB680: using guessed type char var_19[25]; //----- (004CB980) -------------------------------------------------------- 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 unsigned __int8 *v7; // ebx signed int v8; // edi _BYTE *v9; // eax _DWORD *v10; // edx signed int v11; // ecx unsigned __int8 *v12; // ebx unsigned int v13; // eax unsigned __int8 *v14; // eax int v15; // [esp+4h] [ebp-94h] bool v16; // [esp+8h] [ebp-90h] unsigned int v17; // [esp+24h] [ebp-74h] _DWORD *v18; // [esp+2Ch] [ebp-6Ch] char v19; // [esp+32h] [ebp-66h] char v20; // [esp+33h] [ebp-65h] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] std::istream::sentry *v22; // [esp+38h] [ebp-60h] char v23[25]; // [esp+7Fh] [ebp-19h] BYREF v22 = a1; if ( a3 == -1 ) return std::istream::ignore(a1, this, v15); *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v23, a1, (std::istream *)1, v16); if ( (int)this > 0 ) { v20 = v23[0]; if ( v23[0] ) { v18 = *(_DWORD **)((char *)v22 + *(_DWORD *)(*(_DWORD *)v22 - 12) + 120); v5 = (unsigned __int8 *)v18[2]; if ( (unsigned int)v5 >= v18[3] ) v6 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); else v6 = *v5; v19 = 0; LABEL_9: for ( lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v22 + 1); (int)this <= (int)lpuexcpt; lpuexcpt = (struct _Unwind_Exception *)0x80000000 ) { LABEL_19: if ( this != (std::istream *)0x7FFFFFFF ) { if ( v19 ) goto LABEL_25; goto LABEL_26; } if ( v6 == -1 ) { LABEL_33: if ( v19 ) *((_DWORD *)v22 + 1) = 0x7FFFFFFF; goto LABEL_35; } if ( v6 == a3 ) { if ( !v19 ) { LABEL_29: if ( lpuexcpt != (struct _Unwind_Exception *)0x7FFFFFFF ) LABEL_30: *((_DWORD *)v22 + 1) = (char *)lpuexcpt + 1; v13 = v18[2]; if ( v13 >= v18[3] ) (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); else v18[2] = v13 + 1; return v22; } LABEL_25: *((_DWORD *)v22 + 1) = 0x7FFFFFFF; LABEL_26: if ( v6 == -1 ) { LABEL_35: std::ios::clear( (std::istream::sentry *)((char *)v22 + *(_DWORD *)(*(_DWORD *)v22 - 12)), *(_DWORD *)((char *)v22 + *(_DWORD *)(*(_DWORD *)v22 - 12) + 20) | 2); return v22; } if ( v6 != a3 ) return v22; LABEL_28: lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v22 + 1); goto LABEL_29; } *((_DWORD *)v22 + 1) = 0x80000000; v19 = v20; } while ( 1 ) { if ( v6 == -1 ) goto LABEL_33; if ( v6 == a3 ) break; v7 = (unsigned __int8 *)v18[2]; v17 = v18[3]; v8 = v17 - (_DWORD)v7; if ( this - lpuexcpt <= (int)(v17 - (_DWORD)v7) ) v8 = this - lpuexcpt; if ( v8 <= 1 ) { *((_DWORD *)v22 + 1) = (char *)lpuexcpt + 1; if ( v17 > (unsigned int)v7 ) { v10 = v18; v14 = v7 + 1; v18[2] = v7 + 1; goto LABEL_38; } if ( (*(int (__fastcall **)(_DWORD *))(*v18 + 40))(v18) != -1 ) { v14 = (unsigned __int8 *)v18[2]; v17 = v18[3]; LABEL_38: if ( v17 > (unsigned int)v14 ) { v6 = *v14; lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v22 + 1); goto LABEL_9; } LABEL_40: v6 = (*(int (__fastcall **)(_DWORD *, _DWORD *))(*v18 + 36))(v18, v10); lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v22 + 1); goto LABEL_9; } goto LABEL_33; } v9 = memchr(v7, (char)a3, v8); v10 = v18; v11 = v9 - v7; if ( !v9 ) v11 = v8; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + v11); v12 = &v7[v11]; v18[2] = v12; *((_DWORD *)v22 + 1) = lpuexcpt; if ( v17 <= (unsigned int)v12 ) goto LABEL_40; v6 = *v12; if ( (int)this <= (int)lpuexcpt ) goto LABEL_19; } if ( this == (std::istream *)0x7FFFFFFF ) { if ( !v19 ) goto LABEL_30; goto LABEL_25; } if ( v19 ) goto LABEL_25; goto LABEL_28; } } return v22; } // 4CB9DA: variable 'v16' is possibly undefined // 4CBA20: variable 'v15' is possibly undefined // 4CBC37: variable 'v10' is possibly undefined // 4CB980: using guessed type char var_19[25]; //----- (004CBD90) -------------------------------------------------------- std::istream::sentry *__fastcall std::istream::ignore(std::istream::sentry *a1) { _DWORD *v2; // ecx unsigned int v3; // eax bool v4; // [esp+8h] [ebp-70h] char v6[25]; // [esp+5Fh] [ebp-19h] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v6, a1, (std::istream *)1, v4); if ( v6[0] ) { v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v3 = v2[2]; if ( v3 >= v2[3] ) { if ( (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2) == -1 ) { std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); return a1; } } else { v2[2] = v3 + 1; } *((_DWORD *)a1 + 1) = 1; } return a1; } // 4CBDE1: variable 'v4' is possibly undefined // 4CBD90: using guessed type char var_19[25]; //----- (004CBF20) -------------------------------------------------------- void __userpurge std::istream::sentry::sentry(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4) { char *v4; // ecx int v5; // eax _BYTE *v6; // eax unsigned int v7; // eax unsigned int v8; // edx unsigned __int8 *v9; // eax int v10; // [esp+10h] [ebp-58h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] *a1 = 0; v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v5 = *((_DWORD *)v4 + 5); if ( v5 ) goto LABEL_6; if ( *((_DWORD *)v4 + 28) ) { std::ostream::flush(*((_DWORD **)v4 + 28)); v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( (_BYTE)a3 || (v4[13] & 0x10) == 0 ) goto LABEL_5; } else if ( (_BYTE)a3 || (v4[13] & 0x10) == 0 ) { goto LABEL_9; } lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v4 + 30); v6 = (_BYTE *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v6 >= *((_DWORD *)lpuexcpt + 3) ) { v6 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v10 = *((_DWORD *)v4 + 31); if ( v10 ) { if ( v6 == (_BYTE *)-1 ) { LABEL_20: v5 = *((_DWORD *)v4 + 5) | 2; goto LABEL_6; } goto LABEL_12; } LABEL_27: std::__throw_bad_cast(); } LOBYTE(v6) = *v6; v10 = *((_DWORD *)v4 + 31); if ( !v10 ) goto LABEL_27; LABEL_12: while ( (*(_BYTE *)(*(_DWORD *)(v10 + 24) + 2 * (unsigned __int8)v6) & 0x20) != 0 ) { while ( 1 ) { v7 = *((_DWORD *)lpuexcpt + 2); v8 = *((_DWORD *)lpuexcpt + 3); if ( v7 >= v8 ) { if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) goto LABEL_19; v9 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); v8 = *((_DWORD *)lpuexcpt + 3); } else { v9 = (unsigned __int8 *)(v7 + 1); *((_DWORD *)lpuexcpt + 2) = v9; } if ( (unsigned int)v9 >= v8 ) break; if ( (*(_BYTE *)(*(_DWORD *)(v10 + 24) + 2 * *v9) & 0x20) == 0 ) goto LABEL_17; } v6 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); if ( v6 == (_BYTE *)-1 ) { LABEL_19: v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); goto LABEL_20; } } LABEL_17: v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); LABEL_5: v5 = *((_DWORD *)v4 + 5); if ( v5 ) { LABEL_6: std::ios::clear(v4, v5 | 4); return; } LABEL_9: *a1 = 1; } //----- (004CC1B0) -------------------------------------------------------- void __userpurge std::istream::sentry::sentry(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4) { char *v4; // ecx int v5; // eax _BYTE *v6; // eax unsigned int v7; // eax unsigned int v8; // edx unsigned __int8 *v9; // eax int v10; // [esp+10h] [ebp-58h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] *a1 = 0; v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v5 = *((_DWORD *)v4 + 5); if ( v5 ) goto LABEL_6; if ( *((_DWORD *)v4 + 28) ) { std::ostream::flush(*((_DWORD **)v4 + 28)); v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( (_BYTE)a3 || (v4[13] & 0x10) == 0 ) goto LABEL_5; } else if ( (_BYTE)a3 || (v4[13] & 0x10) == 0 ) { goto LABEL_9; } lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v4 + 30); v6 = (_BYTE *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v6 >= *((_DWORD *)lpuexcpt + 3) ) { v6 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v10 = *((_DWORD *)v4 + 31); if ( v10 ) { if ( v6 == (_BYTE *)-1 ) { LABEL_20: v5 = *((_DWORD *)v4 + 5) | 2; goto LABEL_6; } goto LABEL_12; } LABEL_27: std::__throw_bad_cast(); } LOBYTE(v6) = *v6; v10 = *((_DWORD *)v4 + 31); if ( !v10 ) goto LABEL_27; LABEL_12: while ( (*(_BYTE *)(*(_DWORD *)(v10 + 24) + 2 * (unsigned __int8)v6) & 0x20) != 0 ) { while ( 1 ) { v7 = *((_DWORD *)lpuexcpt + 2); v8 = *((_DWORD *)lpuexcpt + 3); if ( v7 >= v8 ) { if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) goto LABEL_19; v9 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); v8 = *((_DWORD *)lpuexcpt + 3); } else { v9 = (unsigned __int8 *)(v7 + 1); *((_DWORD *)lpuexcpt + 2) = v9; } if ( (unsigned int)v9 >= v8 ) break; if ( (*(_BYTE *)(*(_DWORD *)(v10 + 24) + 2 * *v9) & 0x20) == 0 ) goto LABEL_17; } v6 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); if ( v6 == (_BYTE *)-1 ) { LABEL_19: v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); goto LABEL_20; } } LABEL_17: v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); LABEL_5: v5 = *((_DWORD *)v4 + 5); if ( v5 ) { LABEL_6: std::ios::clear(v4, v5 | 4); return; } LABEL_9: *a1 = 1; } //----- (004CC440) -------------------------------------------------------- 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); } // 4CC473: variable 'v10' is possibly undefined //----- (004CC4C0) -------------------------------------------------------- std::istream::sentry *__userpurge std::istream::getline@( std::istream::sentry *a1@, std::istream *this, char *a3, unsigned __int8 a4, char a5) { int v5; // edx size_t v6; // edx _DWORD *v8; // eax char *v9; // esi size_t v10; // eax int v11; // ecx unsigned __int8 *v12; // eax unsigned __int8 *v13; // edx char *v14; // eax signed int v15; // edx unsigned int v16; // edx unsigned int v17; // eax unsigned __int8 *v18; // eax size_t v19; // ebx bool v20; // [esp+8h] [ebp-90h] std::istream *v21; // [esp+1Ch] [ebp-7Ch] _DWORD *v22; // [esp+28h] [ebp-70h] unsigned int v23; // [esp+2Ch] [ebp-6Ch] char *Buf; // [esp+34h] [ebp-64h] size_t MaxCount; // [esp+38h] [ebp-60h] char v27[25]; // [esp+7Fh] [ebp-19h] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v27, a1, (std::istream *)1, v20); if ( v27[0] ) { v8 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v9 = (char *)v8[2]; v22 = v8; Buf = v9; v23 = v8[3]; if ( (unsigned int)v9 < v23 ) { v10 = *((_DWORD *)a1 + 1); v11 = (unsigned __int8)*v9; v6 = v10 + 1; if ( (int)a3 > (int)(v10 + 1) ) goto LABEL_11; LABEL_31: if ( a4 != v11 ) { if ( (int)a3 <= 0 ) { v5 = 4; v10 = *((_DWORD *)a1 + 1); goto LABEL_38; } v5 = 4; *(_BYTE *)this = 0; LABEL_5: std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v5); return a1; } Buf = (char *)v22[2]; v23 = v22[3]; goto LABEL_43; } v11 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); v10 = *((_DWORD *)a1 + 1); v19 = v10; v6 = v10 + 1; if ( (int)a3 <= (int)(v10 + 1) ) { LABEL_50: if ( v11 != -1 ) goto LABEL_31; if ( (int)a3 <= 0 ) { v10 = v19; v5 = 2; goto LABEL_38; } } else { if ( v11 != -1 ) { Buf = (char *)v22[2]; v23 = v22[3]; LABEL_11: if ( a4 == v11 ) { LABEL_43: *((_DWORD *)a1 + 1) = v6; if ( (unsigned int)Buf < v23 ) { v22[2] = Buf + 1; if ( (int)a3 > 0 ) { *(_BYTE *)this = 0; if ( !*((_DWORD *)a1 + 1) ) goto LABEL_4; return a1; } goto LABEL_7; } (*(void (__fastcall **)(_DWORD *))(*v22 + 40))(v22); if ( (int)a3 > 0 ) { *(_BYTE *)this = 0; if ( !*((_DWORD *)a1 + 1) ) goto LABEL_4; return a1; } LABEL_6: v6 = *((_DWORD *)a1 + 1); LABEL_7: if ( !v6 ) goto LABEL_4; return a1; } while ( 1 ) { v14 = &a3[-v10 - 1]; v15 = v23 - (_DWORD)Buf; if ( (int)v14 <= (int)(v23 - (_DWORD)Buf) ) v15 = (signed int)v14; MaxCount = v15; if ( v15 > 1 ) { v12 = (unsigned __int8 *)memchr(Buf, (char)a4, v15); v13 = v12; if ( !v12 || (MaxCount = v12 - (unsigned __int8 *)Buf, v12 != (unsigned __int8 *)Buf) ) { memcpy(this, Buf, MaxCount); v13 = (unsigned __int8 *)(v22[2] + MaxCount); v23 = v22[3]; } this = (std::istream *)((char *)this + MaxCount); v22[2] = v13; v10 = *((_DWORD *)a1 + 1) + MaxCount; *((_DWORD *)a1 + 1) = v10; if ( (unsigned int)v13 < v23 ) { v11 = *v13; goto LABEL_17; } v11 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); } else { v21 = (std::istream *)((char *)this + 1); *(_BYTE *)this = v11; v16 = v22[3]; ++*((_DWORD *)a1 + 1); v17 = v22[2]; if ( v17 >= v16 ) { if ( (*(int (__fastcall **)(_DWORD *))(*v22 + 40))(v22) == -1 ) goto LABEL_35; v18 = (unsigned __int8 *)v22[2]; v16 = v22[3]; } else { v18 = (unsigned __int8 *)(v17 + 1); v22[2] = v18; } if ( (unsigned int)v18 < v16 ) { v11 = *v18; this = (std::istream *)((char *)this + 1); v10 = *((_DWORD *)a1 + 1); LABEL_17: v6 = v10 + 1; if ( (int)a3 <= (int)(v10 + 1) ) goto LABEL_31; goto LABEL_18; } v11 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); this = (std::istream *)((char *)this + 1); } v19 = *((_DWORD *)a1 + 1); v10 = v19; v6 = v19 + 1; if ( (int)(v19 + 1) >= (int)a3 ) goto LABEL_50; if ( v11 == -1 ) { v21 = this; LABEL_35: if ( (int)a3 > 0 ) *(_BYTE *)v21 = 0; v5 = 2; v10 = *((_DWORD *)a1 + 1); LABEL_38: if ( !v10 ) v5 |= 4u; goto LABEL_5; } LABEL_18: Buf = (char *)v22[2]; v23 = v22[3]; if ( a4 == v11 ) goto LABEL_43; } } if ( (int)a3 <= 0 ) { v5 = 2; goto LABEL_38; } } v5 = 2; *(_BYTE *)this = 0; if ( !*((_DWORD *)a1 + 1) ) v5 = 6; goto LABEL_5; } if ( (int)a3 <= 0 ) goto LABEL_6; *(_BYTE *)this = 0; if ( !*((_DWORD *)a1 + 1) ) { LABEL_4: v5 = 4; goto LABEL_5; } return a1; } // 4CC51F: variable 'v20' is possibly undefined // 4CC4C0: using guessed type char var_19[25]; //----- (004CC9F0) -------------------------------------------------------- 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-70h] char v11[25]; // [esp+5Fh] [ebp-19h] 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(v11, a1, (std::istream *)1, v9); if ( v11[0] ) { 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 (__thiscall **)(_DWORD *, _DWORD))(*v5 + 44))(v5, (unsigned __int8)this) != -1 ) return a1; v6 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); } std::ios::clear(v6, v6[5] | 1); } return a1; } // 4CCA62: variable 'v9' is possibly undefined // 4CC9F0: using guessed type char var_19[25]; //----- (004CCBB0) -------------------------------------------------------- struct _Unwind_Exception *__userpurge std::istream::readsome@( std::istream::sentry *a1@, std::istream *this, char *a3, int a4) { _DWORD *v5; // ecx char *v6; // eax int v7; // ecx bool v8; // [esp+8h] [ebp-70h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] char v11[25]; // [esp+5Fh] [ebp-19h] BYREF *((_DWORD *)a1 + 1) = 0; std::istream::sentry::sentry(v11, a1, (std::istream *)1, v8); if ( !v11[0] ) return (struct _Unwind_Exception *)*((_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 (struct _Unwind_Exception *)*((_DWORD *)a1 + 1); } return (struct _Unwind_Exception *)*((_DWORD *)a1 + 1); } if ( (int)v6 > (int)a3 ) v6 = a3; v7 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); lpuexcpt = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, std::istream *, char *))(*(_DWORD *)v7 + 32))( v7, this, v6); *((_DWORD *)a1 + 1) = lpuexcpt; return lpuexcpt; } // 4CCC01: variable 'v8' is possibly undefined // 4CCBB0: using guessed type char var_19[25]; //----- (004CCD90) -------------------------------------------------------- void __thiscall std::istream::istream(_DWORD *this, int *a2) { int v2; // eax int v3; // eax std::ios_base *v4; // ecx int v5; // eax std::ios_base *v6; // [esp+4h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] _DWORD *v8; // [esp+14h] [ebp-44h] v8 = this + 2; std::ios_base::ios_base(this + 2); *((_WORD *)this + 62) = 0; v2 = a2[1]; *this = &off_55FE40; this[1] = v2; this[30] = 0; v3 = *a2; this[32] = 0; this[33] = 0; v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); this[2] = off_55FE54; this[34] = 0; this[35] = 0; lpuexcpt = v4; std::ios_base::_M_move((int)v8, v4, v6); std::ios::_M_cache_locale(v8, (int)(this + 29)); this[32] = 0; v5 = *((_DWORD *)lpuexcpt + 28); *((_DWORD *)lpuexcpt + 28) = 0; this[30] = v5; *((_WORD *)this + 62) = *((_WORD *)lpuexcpt + 58); a2[1] = 0; } // 4CCE2F: variable 'v6' is possibly undefined // 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); // 55FE54: using guessed type void (__cdecl *off_55FE54[2])(std::istream *__hidden this); //----- (004CCEC0) -------------------------------------------------------- void __thiscall std::istream::istream(_DWORD *this, int a2) { int v2; // [esp+14h] [ebp-44h] 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_55FE40; this[2] = off_55FE54; this[1] = 0; std::ios::init(v2, a2); } // 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); // 55FE54: using guessed type void (__cdecl *off_55FE54[2])(std::istream *__hidden this); //----- (004CCFA0) -------------------------------------------------------- void __fastcall std::istream::istream(int a1) { int v1; // [esp+14h] [ebp-44h] 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_55FE40; *(_DWORD *)(a1 + 8) = off_55FE54; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); } // 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); // 55FE54: using guessed type void (__cdecl *off_55FE54[2])(std::istream *__hidden this); //----- (004CD080) -------------------------------------------------------- int __thiscall std::istream::istream(int *this, int *a2, _DWORD *a3) { int v3; // eax int v4; // edx int v5; // ebx std::ios_base *v6; // edi int v7; // eax int result; // eax std::ios_base *v9; // [esp+4h] [ebp-18h] v3 = *a2; v4 = a2[1]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = v4; this[1] = a3[1]; v5 = (int)this + *(_DWORD *)(v3 - 12); v6 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v5, v6, v9); std::ios::_M_cache_locale((_DWORD *)v5, v5 + 108); v7 = *((_DWORD *)v6 + 28); *(_DWORD *)(v5 + 120) = 0; *((_DWORD *)v6 + 28) = 0; *(_DWORD *)(v5 + 112) = v7; result = *((unsigned __int16 *)v6 + 58); a3[1] = 0; *(_WORD *)(v5 + 116) = result; return result; } // 4CD0B2: variable 'v9' is possibly undefined //----- (004CD100) -------------------------------------------------------- BOOL __thiscall std::istream::istream(int *this, int *a2, int a3) { int v3; // eax int v4; // edx int v5; // ebx 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); } //----- (004CD140) -------------------------------------------------------- BOOL __thiscall std::istream::istream(_DWORD *ecx0, std::istream *this) { int v2; // eax int v3; // edx int v4; // ebx 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); } //----- (004CD170) -------------------------------------------------------- void __fastcall std::istream::~istream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 2; *(v2 - 2) = &off_55FE40; *(v2 - 1) = 0; *v2 = &off_560E20; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); // 560E20: using guessed type int (*off_560E20)(); //----- (004CD1A0) -------------------------------------------------------- void __fastcall std::istream::~istream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_55FE40; v1 = a1 + 2; *(v1 - 1) = 0; *v1 = &off_560E20; std::ios_base::~ios_base((int)v1); } // 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); // 560E20: using guessed type int (*off_560E20)(); //----- (004CD1C0) -------------------------------------------------------- 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; } //----- (004CD1E0) -------------------------------------------------------- _DWORD *__thiscall std::istream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // edx char v6; // cl char v7; // cl int v8; // edx std::ios_base *v10; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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; } // 4CD21D: variable 'v10' is possibly undefined //----- (004CD2A0) -------------------------------------------------------- int __thiscall std::istream::operator>>(void *this, int (__cdecl *a2)(void *)) { return a2(this); } //----- (004CD2B0) -------------------------------------------------------- char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004CD2D0) -------------------------------------------------------- char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004CD2F0) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2) { char *v2; // ecx int v3; // eax bool v5; // [esp+8h] [ebp-70h] char v7; // [esp+5Eh] [ebp-1Ah] BYREF char v8[25]; // [esp+5Fh] [ebp-19h] BYREF std::istream::sentry::sentry(&v7, this, 0, v5); if ( v7 ) { v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( !a2 ) { v3 = 4; goto LABEL_9; } if ( !std::__copy_streambufs_eof>(*((_DWORD **)v2 + 30), a2, v8) ) { v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = v8[0] == 0 ? 4 : 6; goto LABEL_9; } if ( v8[0] ) { v3 = 2; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); LABEL_9: std::ios::clear(v2, *((_DWORD *)v2 + 5) | v3); } } else if ( !a2 ) { v3 = 4; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); goto LABEL_9; } return this; } // 4CD33A: variable 'v5' is possibly undefined // 4CD2F0: using guessed type char var_19[25]; //----- (004CD510) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2) { char *v2; // edi int v3; // ecx bool v5; // [esp+8h] [ebp-80h] char v7; // [esp+67h] [ebp-21h] BYREF int v8; // [esp+68h] [ebp-20h] BYREF int v9[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v7, this, 0, v5); if ( v7 ) { v8 = 0; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int *))(*(_DWORD *)v3 + 12))( v3, *((_DWORD *)v2 + 30), -1, 0, -1, (int)this + *(_DWORD *)(*(_DWORD *)this - 12), &v8, v9); *a2 = v9[0]; if ( v8 ) std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8); } return this; } // 4CD55A: variable 'v5' is possibly undefined // 4CD510: using guessed type int var_1C[7]; //----- (004CD710) -------------------------------------------------------- std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _WORD *a2) { char *v2; // edi int v3; // ecx int v4; // eax bool v6; // [esp+8h] [ebp-80h] char v8; // [esp+67h] [ebp-21h] BYREF int v9; // [esp+68h] [ebp-20h] BYREF int v10[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v8, this, 0, v6); if ( v8 ) { v9 = 0; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int *))(*(_DWORD *)v3 + 12))( v3, *((_DWORD *)v2 + 30), -1, 0, -1, (int)this + *(_DWORD *)(*(_DWORD *)this - 12), &v9, v10); v4 = v9; if ( v10[0] >= -32768 ) { if ( v10[0] > 0x7FFF ) { v9 |= 4u; v4 = v9; *a2 = 0x7FFF; goto LABEL_9; } *a2 = v10[0]; } else { v4 = v9 | 4; v9 |= 4u; *a2 = 0x8000; } if ( !v4 ) return this; LABEL_9: std::ios::clear( (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v4); } return this; } // 4CD823: conditional instruction was optimized away because eax.4>=4u // 4CD75A: variable 'v6' is possibly undefined // 4CD710: using guessed type int var_1C[7]; //----- (004CD950) -------------------------------------------------------- std::ostream::sentry *__userpurge std::ostream::put@(std::ostream::sentry *a1@, std::ostream *this, char a3) { _DWORD *v3; // ecx _BYTE *v4; // eax int v5; // ecx int v7; // [esp+0h] [ebp-78h] std::ostream *v8; // [esp+4h] [ebp-74h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] char v11[4]; // [esp+58h] [ebp-20h] BYREF _DWORD *v12; // [esp+5Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v11, a1, v8); if ( v11[0] ) { v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v4 = (_BYTE *)v3[5]; if ( (unsigned int)v4 >= v3[6] ) { if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v3 + 52))(v3, (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 { *v4 = (_BYTE)this; ++v3[5]; } } lpuexcpt = (struct _Unwind_Exception *)((char *)v12 + *(_DWORD *)(*v12 - 12)); if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v5 = *((_DWORD *)lpuexcpt + 30); if ( v5 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v7) == -1 ) std::ios::clear( (_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12)), *(_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12) + 20) | 1); } } return a1; } // 4CD998: variable 'v8' is possibly undefined // 4CD9F4: variable 'v7' is possibly undefined // 4CD950: using guessed type char var_20[4]; //----- (004CDB40) -------------------------------------------------------- void __userpurge std::ostream::swap(_DWORD *a1@, std::ostream *this, std::ostream *a3) { std::ios_base *v3; // ebx std::ios_base *v4; // esi int v5; // eax char v6; // dl char v7; // dl std::ios_base *v8; // [esp+4h] [ebp-58h] v3 = (std::ios_base *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v4 = (std::ostream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); std::ios_base::_M_swap(v3, v4, v8); std::ios::_M_cache_locale(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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; } // 4CDB77: variable 'v8' is possibly undefined //----- (004CDBE0) -------------------------------------------------------- _DWORD *__fastcall std::ostream::flush(_DWORD *a1) { int v1; // ecx v1 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); if ( v1 && (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 24))(v1) == -1 ) std::ios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); return a1; } //----- (004CDD30) -------------------------------------------------------- _DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5) { char *v5; // edi _DWORD *v6; // eax int v7; // edi void (__thiscall *v8)(int *, _DWORD *, int, int, int, int, int); // eax _DWORD *v10; // [esp+0h] [ebp-A8h] int v12[14]; // [esp+70h] [ebp-38h] BYREF v5 = (char *)this + *(_DWORD *)(*this - 12); if ( (v5[20] & 5) == 0 ) { v6 = (_DWORD *)*((_DWORD *)v5 + 30); v7 = *v6; v12[6] = a4; v10 = v6; v8 = *(void (__thiscall **)(int *, _DWORD *, int, int, int, int, int))(v7 + 20); v12[4] = a2; v12[5] = a3; v12[7] = a5; v8(v12, v10, a2, a3, a4, a5, 16); if ( (v12[0] & v12[1]) == -1 ) std::ios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); } return this; } //----- (004CDEF0) -------------------------------------------------------- _DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4) { char *v4; // edi int v7[10]; // [esp+60h] [ebp-28h] BYREF v4 = (char *)this + *(_DWORD *)(*this - 12); if ( (v4[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v4 + 30) + 16))( v7, *((_DWORD *)v4 + 30), a2, a3, a4, 16); if ( (v7[0] & v7[1]) == -1 ) std::ios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); } return this; } //----- (004CE080) -------------------------------------------------------- _DWORD *__thiscall std::ostream::tellp(_DWORD *ecx0, std::ostream *this) { int v2; // eax char *v3; // esi int v6[10]; // [esp+60h] [ebp-28h] BYREF v2 = *(_DWORD *)this; *ecx0 = -1; ecx0[1] = -1; v3 = (char *)this + *(_DWORD *)(v2 - 12); ecx0[2] = 0; if ( (v3[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v3 + 30) + 16))( v6, *((_DWORD *)v3 + 30), 0, 0, 1, 16); *ecx0 = v6[0]; ecx0[1] = v6[1]; ecx0[2] = v6[2]; } return ecx0; } //----- (004CE200) -------------------------------------------------------- std::ostream::sentry *__userpurge std::ostream::write@( std::ostream::sentry *a1@, std::ostream *this, const char *a3, int a4) { int v4; // ecx int v5; // ecx int v7; // [esp+0h] [ebp-78h] std::ostream *v8; // [esp+4h] [ebp-74h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] char v11[4]; // [esp+58h] [ebp-20h] BYREF _DWORD *v12; // [esp+5Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v11, a1, v8); if ( v11[0] ) { v4 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); if ( a3 != (const char *)(*(int (__thiscall **)(int, std::ostream *, const char *))(*(_DWORD *)v4 + 48))( v4, this, a3) ) std::ios::clear( (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); } lpuexcpt = (struct _Unwind_Exception *)((char *)v12 + *(_DWORD *)(*v12 - 12)); if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v5 = *((_DWORD *)lpuexcpt + 30); if ( v5 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v7) == -1 ) std::ios::clear( (_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12)), *(_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12) + 20) | 1); } } return a1; } // 4CE242: variable 'v8' is possibly undefined // 4CE2AF: variable 'v7' is possibly undefined // 4CE200: using guessed type char var_20[4]; //----- (004CE3D0) -------------------------------------------------------- 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; } //----- (004CE430) -------------------------------------------------------- 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; } //----- (004CE490) -------------------------------------------------------- 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); } } } } } //----- (004CE520) -------------------------------------------------------- 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); } } } } } //----- (004CE5B0) -------------------------------------------------------- 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; } //----- (004CE600) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) { int v2; // ecx char v3; // dl int v4; // ecx char v6; // al int v7; // eax int (__stdcall *v8)(unsigned __int8); // edx int v9; // [esp+0h] [ebp-98h] std::ostream *v10; // [esp+4h] [ebp-94h] _BYTE *v11; // [esp+2Ch] [ebp-6Ch] int v12; // [esp+30h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] char v16[4]; // [esp+78h] [ebp-20h] BYREF _DWORD *v17; // [esp+7Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v16, this, v10); if ( v16[0] ) { lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); v12 = *((_DWORD *)lpuexcpt + 32); if ( !v12 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 117) ) { v2 = *((char *)lpuexcpt + 116); } else { v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); if ( !v11 ) std::__throw_bad_cast(); if ( v11[28] ) { v2 = (char)v11[61]; v6 = v11[61]; } else { std::ctype::_M_widen_init((int)v11); v2 = 32; v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); v6 = 32; if ( v8 != std::ctype::do_widen ) { v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); v2 = v6; } } *((_BYTE *)lpuexcpt + 116) = v6; v7 = *(_DWORD *)this; *((_BYTE *)lpuexcpt + 117) = 1; lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int))(*(_DWORD *)v12 + 36))( v12, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v2, a2); if ( v3 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpta + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) std::ios::clear( (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); } } return this; } // 4CE645: variable 'v10' is possibly undefined // 4CE6C8: variable 'v3' is possibly undefined // 4CE71C: variable 'v9' is possibly undefined // 4CE600: using guessed type char var_20[4]; //----- (004CE8B0) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, unsigned __int8 a2) { int v2; // ecx char v3; // dl int v4; // ecx char v6; // al int v7; // eax int (__stdcall *v8)(unsigned __int8); // edx int v9; // [esp+0h] [ebp-98h] std::ostream *v10; // [esp+4h] [ebp-94h] _BYTE *v11; // [esp+28h] [ebp-70h] int v12; // [esp+2Ch] [ebp-6Ch] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] char v16[4]; // [esp+78h] [ebp-20h] BYREF _DWORD *v17; // [esp+7Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v16, this, v10); if ( v16[0] ) { lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); v12 = *((_DWORD *)lpuexcpt + 32); if ( !v12 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 117) ) { v2 = *((char *)lpuexcpt + 116); } else { v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); if ( !v11 ) std::__throw_bad_cast(); if ( v11[28] ) { v2 = (char)v11[61]; v6 = v11[61]; } else { std::ctype::_M_widen_init((int)v11); v2 = 32; v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); v6 = 32; if ( v8 != std::ctype::do_widen ) { v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); v2 = v6; } } *((_BYTE *)lpuexcpt + 116) = v6; v7 = *(_DWORD *)this; *((_BYTE *)lpuexcpt + 117) = 1; lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, _DWORD))(*(_DWORD *)v12 + 8))( v12, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v2, a2); if ( v3 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpta + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) std::ios::clear( (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); } } return this; } // 4CE8FB: variable 'v10' is possibly undefined // 4CE985: variable 'v3' is possibly undefined // 4CE9D9: variable 'v9' is possibly undefined // 4CE8B0: using guessed type char var_20[4]; //----- (004CEB70) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, double a2) { int v2; // ecx char v3; // dl int v4; // ecx char v6; // al int v7; // eax int (__stdcall *v8)(unsigned __int8); // edx int v9; // [esp+0h] [ebp-98h] std::ostream *v10; // [esp+4h] [ebp-94h] _BYTE *v11; // [esp+24h] [ebp-74h] int v12; // [esp+30h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] char v16[4]; // [esp+78h] [ebp-20h] BYREF _DWORD *v17; // [esp+7Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v16, this, v10); if ( v16[0] ) { lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); v12 = *((_DWORD *)lpuexcpt + 32); if ( !v12 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 117) ) { v2 = *((char *)lpuexcpt + 116); } else { v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); if ( !v11 ) std::__throw_bad_cast(); if ( v11[28] ) { v2 = (char)v11[61]; v6 = v11[61]; } else { std::ctype::_M_widen_init((int)v11); v2 = 32; v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); v6 = 32; if ( v8 != std::ctype::do_widen ) { v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); v2 = v6; } } *((_BYTE *)lpuexcpt + 116) = v6; v7 = *(_DWORD *)this; *((_BYTE *)lpuexcpt + 117) = 1; lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, _DWORD, _DWORD))(*(_DWORD *)v12 + 28))( v12, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v2, LODWORD(a2), HIDWORD(a2)); if ( v3 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpta + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) std::ios::clear( (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); } } return this; } // 4CEBBB: variable 'v10' is possibly undefined // 4CEC38: variable 'v3' is possibly undefined // 4CEC8C: variable 'v9' is possibly undefined // 4CEB70: using guessed type char var_20[4]; //----- (004CEE20) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, long double a2) { int v2; // ecx char v3; // dl int v4; // ecx char v6; // al int v7; // eax int (__stdcall *v8)(unsigned __int8); // edx int v9; // [esp+0h] [ebp-98h] std::ostream *v10; // [esp+4h] [ebp-94h] _BYTE *v12; // [esp+2Ch] [ebp-6Ch] int v13; // [esp+30h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] char v17[4]; // [esp+78h] [ebp-20h] BYREF _DWORD *v18; // [esp+7Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v17, this, v10); if ( v17[0] ) { lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); v13 = *((_DWORD *)lpuexcpt + 32); if ( !v13 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 117) ) { v2 = *((char *)lpuexcpt + 116); } else { v12 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); if ( !v12 ) std::__throw_bad_cast(); if ( v12[28] ) { v2 = (char)v12[61]; v6 = v12[61]; } else { std::ctype::_M_widen_init((int)v12); v2 = 32; v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v12 + 24); v6 = 32; if ( v8 != std::ctype::do_widen ) { v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v12, 32); v2 = v6; } } *((_BYTE *)lpuexcpt + 116) = v6; v7 = *(_DWORD *)this; *((_BYTE *)lpuexcpt + 117) = 1; lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v13 + 32))( v13, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v2, LODWORD(a2), DWORD1(a2), HIDWORD(a2)); if ( v3 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v18 + *(_DWORD *)(*v18 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpta + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) std::ios::clear( (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); } } return this; } // 4CEE65: variable 'v10' is possibly undefined // 4CEEE2: variable 'v3' is possibly undefined // 4CEF36: variable 'v9' is possibly undefined // 4CEE20: using guessed type char var_20[4]; //----- (004CF0D0) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) { int v2; // ecx char v3; // dl int v4; // ecx char v6; // al int v7; // eax int (__stdcall *v8)(unsigned __int8); // edx int v9; // [esp+0h] [ebp-98h] std::ostream *v10; // [esp+4h] [ebp-94h] _BYTE *v11; // [esp+2Ch] [ebp-6Ch] int v12; // [esp+30h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] char v16[4]; // [esp+78h] [ebp-20h] BYREF _DWORD *v17; // [esp+7Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v16, this, v10); if ( v16[0] ) { lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); v12 = *((_DWORD *)lpuexcpt + 32); if ( !v12 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 117) ) { v2 = *((char *)lpuexcpt + 116); } else { v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); if ( !v11 ) std::__throw_bad_cast(); if ( v11[28] ) { v2 = (char)v11[61]; v6 = v11[61]; } else { std::ctype::_M_widen_init((int)v11); v2 = 32; v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); v6 = 32; if ( v8 != std::ctype::do_widen ) { v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); v2 = v6; } } *((_BYTE *)lpuexcpt + 116) = v6; v7 = *(_DWORD *)this; *((_BYTE *)lpuexcpt + 117) = 1; lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int))(*(_DWORD *)v12 + 12))( v12, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v2, a2); if ( v3 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpta + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) std::ios::clear( (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); } } return this; } // 4CF115: variable 'v10' is possibly undefined // 4CF198: variable 'v3' is possibly undefined // 4CF1EC: variable 'v9' is possibly undefined // 4CF0D0: using guessed type char var_20[4]; //----- (004CF380) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) { int v2; // ecx char v3; // dl int v4; // ecx char v6; // al int v7; // eax int (__stdcall *v8)(unsigned __int8); // edx int v9; // [esp+0h] [ebp-98h] std::ostream *v10; // [esp+4h] [ebp-94h] _BYTE *v11; // [esp+2Ch] [ebp-6Ch] int v12; // [esp+30h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] char v16[4]; // [esp+78h] [ebp-20h] BYREF _DWORD *v17; // [esp+7Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v16, this, v10); if ( v16[0] ) { lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); v12 = *((_DWORD *)lpuexcpt + 32); if ( !v12 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 117) ) { v2 = *((char *)lpuexcpt + 116); } else { v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); if ( !v11 ) std::__throw_bad_cast(); if ( v11[28] ) { v2 = (char)v11[61]; v6 = v11[61]; } else { std::ctype::_M_widen_init((int)v11); v2 = 32; v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); v6 = 32; if ( v8 != std::ctype::do_widen ) { v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); v2 = v6; } } *((_BYTE *)lpuexcpt + 116) = v6; v7 = *(_DWORD *)this; *((_BYTE *)lpuexcpt + 117) = 1; lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int))(*(_DWORD *)v12 + 16))( v12, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v2, a2); if ( v3 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpta + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) std::ios::clear( (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); } } return this; } // 4CF3C5: variable 'v10' is possibly undefined // 4CF448: variable 'v3' is possibly undefined // 4CF49C: variable 'v9' is possibly undefined // 4CF380: using guessed type char var_20[4]; //----- (004CF630) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3) { int v3; // ecx char v4; // dl int v5; // ecx char v7; // al int v8; // eax int (__stdcall *v9)(unsigned __int8); // edx int v10; // [esp+0h] [ebp-98h] std::ostream *v11; // [esp+4h] [ebp-94h] _BYTE *v12; // [esp+24h] [ebp-74h] int v13; // [esp+30h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] char v17[4]; // [esp+78h] [ebp-20h] BYREF _DWORD *v18; // [esp+7Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v17, this, v11); if ( v17[0] ) { lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); v13 = *((_DWORD *)lpuexcpt + 32); if ( !v13 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 117) ) { v3 = *((char *)lpuexcpt + 116); } else { v12 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); if ( !v12 ) std::__throw_bad_cast(); if ( v12[28] ) { v3 = (char)v12[61]; v7 = v12[61]; } else { std::ctype::_M_widen_init((int)v12); v3 = 32; v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v12 + 24); v7 = 32; if ( v9 != std::ctype::do_widen ) { v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v12, 32); v3 = v7; } } *((_BYTE *)lpuexcpt + 116) = v7; v8 = *(_DWORD *)this; *((_BYTE *)lpuexcpt + 117) = 1; lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v8 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int, int))(*(_DWORD *)v13 + 20))( v13, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v3, a2, a3); if ( v4 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v18 + *(_DWORD *)(*v18 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v5 = *((_DWORD *)lpuexcpta + 30); if ( v5 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v10) == -1 ) std::ios::clear( (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); } } return this; } // 4CF681: variable 'v11' is possibly undefined // 4CF709: variable 'v4' is possibly undefined // 4CF75D: variable 'v10' is possibly undefined // 4CF630: using guessed type char var_20[4]; //----- (004CF8F0) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::_M_insert( std::ostream::sentry *this, int a2, int a3) { int v3; // ecx char v4; // dl int v5; // ecx char v7; // al int v8; // eax int (__stdcall *v9)(unsigned __int8); // edx int v10; // [esp+0h] [ebp-98h] std::ostream *v11; // [esp+4h] [ebp-94h] _BYTE *v12; // [esp+24h] [ebp-74h] int v13; // [esp+30h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] char v17[4]; // [esp+78h] [ebp-20h] BYREF _DWORD *v18; // [esp+7Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v17, this, v11); if ( v17[0] ) { lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); v13 = *((_DWORD *)lpuexcpt + 32); if ( !v13 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 117) ) { v3 = *((char *)lpuexcpt + 116); } else { v12 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); if ( !v12 ) std::__throw_bad_cast(); if ( v12[28] ) { v3 = (char)v12[61]; v7 = v12[61]; } else { std::ctype::_M_widen_init((int)v12); v3 = 32; v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v12 + 24); v7 = 32; if ( v9 != std::ctype::do_widen ) { v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v12, 32); v3 = v7; } } *((_BYTE *)lpuexcpt + 116) = v7; v8 = *(_DWORD *)this; *((_BYTE *)lpuexcpt + 117) = 1; lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v8 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int, int))(*(_DWORD *)v13 + 24))( v13, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v3, a2, a3); if ( v4 ) std::ios::clear( (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v18 + *(_DWORD *)(*v18 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v5 = *((_DWORD *)lpuexcpta + 30); if ( v5 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v10) == -1 ) std::ios::clear( (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); } } return this; } // 4CF941: variable 'v11' is possibly undefined // 4CF9C9: variable 'v4' is possibly undefined // 4CFA1D: variable 'v10' is possibly undefined // 4CF8F0: using guessed type char var_20[4]; //----- (004CFBB0) -------------------------------------------------------- void __thiscall std::ostream::ostream(_DWORD *this, _DWORD *a2) { int v2; // eax std::ios_base *v3; // [esp+4h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] _DWORD *v5; // [esp+14h] [ebp-44h] v5 = this + 1; std::ios_base::ios_base(this + 1); *((_WORD *)this + 60) = 0; this[29] = 0; this[31] = 0; this[32] = 0; this[33] = 0; this[34] = 0; *this = &off_55FE68; this[1] = off_55FE7C; lpuexcpt = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_move((int)v5, lpuexcpt, v3); std::ios::_M_cache_locale(v5, (int)(this + 28)); v2 = *((_DWORD *)lpuexcpt + 28); this[31] = 0; *((_DWORD *)lpuexcpt + 28) = 0; this[29] = v2; *((_WORD *)this + 60) = *((_WORD *)lpuexcpt + 58); } // 4CFC42: variable 'v3' is possibly undefined // 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); // 55FE7C: using guessed type void (__cdecl *off_55FE7C[2])(std::ostream *__hidden this); //----- (004CFCC0) -------------------------------------------------------- void __thiscall std::ostream::ostream(_DWORD *this, int a2) { int v2; // [esp+14h] [ebp-44h] 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_55FE68; this[1] = off_55FE7C; std::ios::init(v2, a2); } // 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); // 55FE7C: using guessed type void (__cdecl *off_55FE7C[2])(std::ostream *__hidden this); //----- (004CFDA0) -------------------------------------------------------- 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_55FE68; *(_DWORD *)(a1 + 4) = off_55FE7C; return result; } // 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); // 55FE7C: using guessed type void (__cdecl *off_55FE7C[2])(std::ostream *__hidden this); //----- (004CFE00) -------------------------------------------------------- void __fastcall std::ostream::ostream(int a1) { int v1; // [esp+14h] [ebp-44h] 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_55FE68; *(_DWORD *)(a1 + 4) = off_55FE7C; std::ios::init(v1, 0); } // 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); // 55FE7C: using guessed type void (__cdecl *off_55FE7C[2])(std::ostream *__hidden this); //----- (004CFEE0) -------------------------------------------------------- int __thiscall std::ostream::ostream(_DWORD *this, _DWORD *a2, _DWORD *a3) { int v3; // eax int v4; // ebx std::ios_base *v5; // esi int v6; // eax int result; // eax std::ios_base *v8; // [esp+4h] [ebp-18h] v3 = a2[1]; v4 = (int)this + *(_DWORD *)(*a2 - 12); *this = *a2; *(_DWORD *)v4 = v3; v5 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v4, v5, v8); std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); v6 = *((_DWORD *)v5 + 28); *(_DWORD *)(v4 + 120) = 0; *((_DWORD *)v5 + 28) = 0; *(_DWORD *)(v4 + 112) = v6; result = *((unsigned __int16 *)v5 + 58); *(_WORD *)(v4 + 116) = result; return result; } // 4CFF05: variable 'v8' is possibly undefined //----- (004CFF50) -------------------------------------------------------- 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); } //----- (004CFF80) -------------------------------------------------------- int __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this, std::iostream *a3) { int v3; // edx int result; // eax v3 = *(_DWORD *)this; result = *((_DWORD *)this + 1); *ecx0 = *(_DWORD *)this; *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v3 - 12)) = result; return result; } //----- (004CFFA0) -------------------------------------------------------- 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); } //----- (004CFFC0) -------------------------------------------------------- void __fastcall std::ostream::~ostream(_DWORD *a1) { _DWORD *v2; // ecx v2 = a1 + 1; *(v2 - 1) = &off_55FE68; *v2 = &off_560E20; std::ios_base::~ios_base((int)v2); operator delete(a1); } // 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); // 560E20: using guessed type int (*off_560E20)(); //----- (004CFFF0) -------------------------------------------------------- void __fastcall std::ostream::~ostream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_55FE68; v1 = a1 + 1; *v1 = &off_560E20; std::ios_base::~ios_base((int)v1); } // 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); // 560E20: using guessed type int (*off_560E20)(); //----- (004D0010) -------------------------------------------------------- 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); } //----- (004D0030) -------------------------------------------------------- _DWORD *__thiscall std::ostream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // ebx std::ios_base *v4; // esi int v5; // eax char v6; // dl char v7; // dl std::ios_base *v9; // [esp+4h] [ebp-18h] v3 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); v4 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); std::ios_base::_M_swap(v4, v3, v9); std::ios::_M_cache_locale(v4, (int)v4 + 108); std::ios::_M_cache_locale(v3, (int)v3 + 108); v5 = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = v5; v6 = *((_BYTE *)v4 + 116); *((_BYTE *)v4 + 116) = *((_BYTE *)v3 + 116); LOBYTE(v5) = *((_BYTE *)v3 + 117); *((_BYTE *)v3 + 116) = v6; v7 = *((_BYTE *)v4 + 117); *((_BYTE *)v4 + 117) = v5; *((_BYTE *)v3 + 117) = v7; return this; } // 4D006A: variable 'v9' is possibly undefined //----- (004D00E0) -------------------------------------------------------- int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)) { return a2(this); } //----- (004D00F0) -------------------------------------------------------- char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004D0110) -------------------------------------------------------- char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004D0140) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, _DWORD *a2) { char *v2; // ecx int v3; // eax int v4; // ecx int v6; // [esp+0h] [ebp-78h] std::ostream *v7; // [esp+4h] [ebp-74h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] char v10; // [esp+57h] [ebp-21h] BYREF char v11[4]; // [esp+58h] [ebp-20h] BYREF _DWORD *v12; // [esp+5Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v11, this, v7); if ( v11[0] ) { v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); if ( !a2 ) { v3 = 1; goto LABEL_13; } if ( !std::__copy_streambufs_eof>(a2, *((_DWORD **)v2 + 30), &v10) ) { v3 = 4; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); LABEL_13: std::ios::clear(v2, *((_DWORD *)v2 + 5) | v3); } } else if ( !a2 ) { v3 = 1; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); goto LABEL_13; } lpuexcpt = (struct _Unwind_Exception *)((char *)v12 + *(_DWORD *)(*v12 - 12)); if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpt + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v6) == -1 ) std::ios::clear( (_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12)), *(_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12) + 20) | 1); } } return this; } // 4D0182: variable 'v7' is possibly undefined // 4D021B: variable 'v6' is possibly undefined // 4D0140: using guessed type char var_20[4]; //----- (004D0350) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int8 a2) { return std::ostream::_M_insert(this, a2); } //----- (004D0380) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, float a2) { return std::ostream::_M_insert(this, a2); } //----- (004D03E0) -------------------------------------------------------- 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); } //----- (004D0420) -------------------------------------------------------- std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2) { return std::ostream::_M_insert(this, a2); } //----- (004D0450) -------------------------------------------------------- char *__cdecl std::string::_S_compare(std::string *this, unsigned int a2) { return (char *)this - a2; } //----- (004D0460) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004D0470) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (004D0480) -------------------------------------------------------- char *__fastcall std::string::_M_leak_hard(char **a1) { char *result; // eax unsigned int v3; // [esp+Ch] [ebp-10h] if ( *((int *)*a1 - 1) > 0 ) std::string::_M_mutate(a1, 0, 0, 0, v3); result = *a1; *((_DWORD *)*a1 - 1) = -1; return result; } // 4D04A6: variable 'v3' is possibly undefined //----- (004D04C0) -------------------------------------------------------- _DWORD *__cdecl std::string::_S_construct(size_t Size, char a2) { _DWORD *v2; // ebx _DWORD *result; // eax v2 = std::string::_Rep::_S_create(Size, 0); if ( Size ) { if ( Size == 1 ) *((_BYTE *)v2 + 12) = a2; else memset(v2 + 3, a2, Size); } v2[2] = 0; result = v2 + 3; *v2 = Size; *((_BYTE *)v2 + Size + 12) = 0; return result; } //----- (004D0530) -------------------------------------------------------- int __cdecl std::string::_S_construct<__gnu_cxx::__normal_iterator>(_BYTE *Src, int a2) { size_t Size; // ebx size_t *v3; // eax size_t *v4; // esi int v5; // ebp int result; // eax Size = a2 - (_DWORD)Src; v3 = std::string::_Rep::_S_create(a2 - (_DWORD)Src, 0); v4 = v3; v5 = (int)(v3 + 3); if ( a2 - (_DWORD)Src == 1 ) { *((_BYTE *)v3 + 12) = *Src; } else if ( Size ) { memcpy(v3 + 3, Src, Size); } v4[2] = 0; result = v5; *v4 = Size; *((_BYTE *)v4 + Size + 12) = 0; return result; } //----- (004D05A0) -------------------------------------------------------- int __cdecl std::string::_S_construct(_BYTE *Src, int a2) { size_t Size; // ebx size_t *v3; // eax size_t *v4; // esi int v5; // ebp int result; // eax if ( a2 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); Size = a2 - (_DWORD)Src; v3 = std::string::_Rep::_S_create(a2 - (_DWORD)Src, 0); v4 = v3; v5 = (int)(v3 + 3); if ( a2 - (_DWORD)Src == 1 ) { *((_BYTE *)v3 + 12) = *Src; } else if ( Size ) { memcpy(v3 + 3, Src, Size); } v4[2] = 0; result = v5; *v4 = Size; *((_BYTE *)v4 + Size + 12) = 0; return result; } //----- (004D0630) -------------------------------------------------------- int __cdecl std::string::_S_construct(_BYTE *Src, int a2) { size_t Size; // ebx size_t *v3; // eax size_t *v4; // esi int v5; // ebp int result; // eax if ( a2 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); Size = a2 - (_DWORD)Src; v3 = std::string::_Rep::_S_create(a2 - (_DWORD)Src, 0); v4 = v3; v5 = (int)(v3 + 3); if ( a2 - (_DWORD)Src == 1 ) { *((_BYTE *)v3 + 12) = *Src; } else if ( Size ) { memcpy(v3 + 3, Src, Size); } v4[2] = 0; result = v5; *v4 = Size; *((_BYTE *)v4 + Size + 12) = 0; return result; } //----- (004D06C0) -------------------------------------------------------- void *std::string::_S_empty_rep() { return &std::string::_Rep::_S_empty_rep_storage; } //----- (004D06D0) -------------------------------------------------------- int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) { int result; // eax result = Size - (_DWORD)Src; if ( Size - (_DWORD)Src == 1 ) { result = *Src; *a1 = result; } else if ( result ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (004D0710) -------------------------------------------------------- int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) { int result; // eax result = Size - (_DWORD)Src; if ( Size - (_DWORD)Src == 1 ) { result = *Src; *a1 = result; } else if ( result ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (004D0750) -------------------------------------------------------- size_t __cdecl std::string::_S_copy_chars(std::string *this, char *Src, size_t Size) { size_t result; // eax result = Size - (_DWORD)Src; if ( Size - (_DWORD)Src == 1 ) { result = (unsigned __int8)*Src; *(_BYTE *)this = result; } else if ( result ) { return (size_t)memcpy(this, Src, Size - (_DWORD)Src); } return result; } //----- (004D0790) -------------------------------------------------------- size_t __cdecl std::string::_S_copy_chars(std::string *this, char *Src, size_t Size) { size_t result; // eax result = Size - (_DWORD)Src; if ( Size - (_DWORD)Src == 1 ) { result = (unsigned __int8)*Src; *(_BYTE *)this = result; } else if ( result ) { return (size_t)memcpy(this, Src, Size - (_DWORD)Src); } return result; } //----- (004D07D0) -------------------------------------------------------- void __fastcall std::string::shrink_to_fit(int *a1) { unsigned int v1; // [esp+4h] [ebp-64h] if ( *(_DWORD *)(*a1 - 12) < *(_DWORD *)(*a1 - 8) ) std::string::reserve(a1, 0, v1); } // 4D0839: variable 'v1' is possibly undefined //----- (004D0860) -------------------------------------------------------- char **__userpurge std::string::_M_replace_aux@( char **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; } // 4D0895: variable 'v9' is possibly undefined //----- (004D08F0) -------------------------------------------------------- char **__userpurge std::string::_M_replace_safe@( char **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; } // 4D090F: variable 'v9' is possibly undefined //----- (004D0960) -------------------------------------------------------- _DWORD *__cdecl std::string::_S_construct_aux_2(size_t Size, char a2) { _DWORD *v2; // ebx _DWORD *result; // eax v2 = std::string::_Rep::_S_create(Size, 0); if ( Size ) { if ( Size == 1 ) *((_BYTE *)v2 + 12) = a2; else memset(v2 + 3, a2, Size); } v2[2] = 0; result = v2 + 3; *v2 = Size; *((_BYTE *)v2 + Size + 12) = 0; return result; } //----- (004D09D0) -------------------------------------------------------- char *__userpurge std::string::at@(char **a1@, unsigned int this, unsigned int a3) { char *v3; // eax char *v6; // eax unsigned int v7; // [esp+Ch] [ebp-10h] v3 = *a1; if ( this >= *((_DWORD *)*a1 - 3) ) std::__throw_out_of_range_fmt( "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", this, *((_DWORD *)*a1 - 3)); if ( *((int *)v3 - 1) < 0 ) return &v3[this]; if ( *((int *)v3 - 1) > 0 ) std::string::_M_mutate(a1, 0, 0, 0, v7); v6 = *a1; *((_DWORD *)v6 - 1) = -1; return &v6[this]; } // 4D0A18: variable 'v7' is possibly undefined //----- (004D0A50) -------------------------------------------------------- char *__fastcall std::string::end(char **a1) { char *v1; // eax char *v4; // eax unsigned int v5; // [esp+Ch] [ebp-10h] v1 = *a1; if ( *((int *)*a1 - 1) < 0 ) return &v1[*((_DWORD *)v1 - 3)]; if ( *((int *)v1 - 1) > 0 ) std::string::_M_mutate(a1, 0, 0, 0, v5); v4 = *a1; *((_DWORD *)v4 - 1) = -1; return &v4[*((_DWORD *)v4 - 3)]; } // 4D0A84: variable 'v5' is possibly undefined //----- (004D0AA0) -------------------------------------------------------- void __thiscall std::string::_Rep::_M_destroy(void *Block, int a2) { operator delete(Block); } //----- (004D0AC0) -------------------------------------------------------- void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *Block, int a2) { int v2; // eax if ( !_CRT_MT ) { v2 = *((_DWORD *)Block + 2); *((_DWORD *)Block + 2) = v2 - 1; if ( v2 > 0 ) return; LABEL_5: operator delete((void *)Block); return; } if ( _InterlockedExchangeAdd(Block + 2, 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 53E1E4: using guessed type int _CRT_MT; //----- (004D0B00) -------------------------------------------------------- int __fastcall std::string::_Rep::_M_refcopy(int a1) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)(a1 + 8), 1u); else ++*(_DWORD *)(a1 + 8); return a1 + 12; } // 53E1E4: using guessed type int _CRT_MT; //----- (004D0B30) -------------------------------------------------------- int __fastcall std::string::_Rep::_M_refdata(int a1) { return a1 + 12; } //----- (004D0B40) -------------------------------------------------------- void *std::string::_Rep::_S_empty_rep() { return &std::string::_Rep::_S_empty_rep_storage; } //----- (004D0B50) -------------------------------------------------------- void __fastcall std::string::_Rep::_M_set_leaked(int a1) { *(_DWORD *)(a1 + 8) = -1; } //----- (004D0B60) -------------------------------------------------------- void __fastcall std::string::_Rep::_M_set_sharable(int a1) { *(_DWORD *)(a1 + 8) = 0; } //----- (004D0B70) -------------------------------------------------------- std::string::_Rep *__userpurge std::string::_Rep::_M_set_length_and_sharable@( _DWORD *a1@, std::string::_Rep *this, unsigned int a3) { std::string::_Rep *result; // eax result = this; a1[2] = 0; *a1 = this; *((_BYTE *)this + (_DWORD)a1 + 12) = 0; return result; } //----- (004D0B90) -------------------------------------------------------- volatile signed __int32 *__thiscall std::string::_Rep::_M_grab(volatile signed __int32 *this, int a2, int a3) { volatile signed __int32 *result; // eax if ( *((int *)this + 2) < 0 ) return std::string::_Rep::_M_clone((int)this, a2, 0); if ( _CRT_MT ) { _InterlockedAdd(this + 2, 1u); return this + 3; } else { result = this + 3; ++*((_DWORD *)this + 2); } return result; } // 53E1E4: using guessed type int _CRT_MT; //----- (004D0BE0) -------------------------------------------------------- _DWORD *__thiscall std::string::_Rep::_M_clone(int this, int a2, int a3) { _DWORD *v4; // ebx 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); else memcpy(v4 + 3, (const void *)(this + 12), *(_DWORD *)this); v5 = *(_DWORD *)this; } *v4 = v5; v4[2] = 0; *((_BYTE *)v4 + v5 + 12) = 0; return v4 + 3; } //----- (004D0C60) -------------------------------------------------------- _DWORD *__cdecl std::string::_Rep::_S_create(unsigned int a1, unsigned int a2) { unsigned int v2; // ebx size_t v3; // eax _DWORD *result; // eax v2 = a1; if ( a1 > 0x3FFFFFFC ) std::__throw_length_error((std::length_error *)"basic_string::_S_create"); if ( a1 <= a2 ) { v3 = a1 + 13; } else { if ( a1 < 2 * a2 ) v2 = 2 * a2; if ( v2 + 29 <= 0x1000 || v2 <= a2 ) { v3 = v2 + 13; if ( (int)(v2 + 13) < 0 ) std::__throw_bad_alloc(); } else { v2 = v2 + 4096 - (((_WORD)v2 + 29) & 0xFFF); if ( v2 > 0x3FFFFFFC ) v2 = 1073741820; v3 = v2 + 13; } } result = operator new(v3); result[1] = v2; result[2] = 0; return result; } //----- (004D0CF0) -------------------------------------------------------- char *__fastcall std::string::back(char **a1) { char *v1; // eax int v2; // esi char *v5; // eax unsigned int v6; // [esp+Ch] [ebp-10h] v1 = *a1; v2 = *((_DWORD *)*a1 - 3) - 1; if ( *((int *)*a1 - 1) < 0 ) return &v1[v2]; if ( *((int *)v1 - 1) > 0 ) std::string::_M_mutate(a1, 0, 0, 0, v6); v5 = *a1; *((_DWORD *)v5 - 1) = -1; return &v5[v2]; } // 4D0D30: variable 'v6' is possibly undefined //----- (004D0D50) -------------------------------------------------------- char **__thiscall std::string::rend(char **ecx0, char **this) { char *v3; // eax char *v5; // eax unsigned int v6; // [esp+Ch] [ebp-10h] v3 = *this; if ( *((int *)*this - 1) >= 0 ) { if ( *((int *)v3 - 1) > 0 ) std::string::_M_mutate(this, 0, 0, 0, v6); v5 = *this; *((_DWORD *)v5 - 1) = -1; *ecx0 = v5; return ecx0; } else { *ecx0 = v3; return ecx0; } } // 4D0D90: variable 'v6' is possibly undefined //----- (004D0DB0) -------------------------------------------------------- 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; } //----- (004D0DE0) -------------------------------------------------------- char *__fastcall std::string::begin(char **a1) { char *result; // eax unsigned int v3; // [esp+Ch] [ebp-10h] result = *a1; if ( *((int *)*a1 - 1) >= 0 ) { if ( *((int *)result - 1) > 0 ) std::string::_M_mutate(a1, 0, 0, 0, v3); result = *a1; *((_DWORD *)*a1 - 1) = -1; } return result; } // 4D0E14: variable 'v3' is possibly undefined //----- (004D0E30) -------------------------------------------------------- void __fastcall std::string::clear(char **a1) { unsigned int v1; // [esp+Ch] [ebp-10h] std::string::_M_mutate(a1, 0, *((_DWORD *)*a1 - 3), 0, v1); } // 4D0E4B: variable 'v1' is possibly undefined //----- (004D0E60) -------------------------------------------------------- char *__thiscall std::string::erase(char **this, int a2) { size_t v3; // esi char *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 &v4[v3]; } // 4D0E82: variable 'v6' is possibly undefined //----- (004D0EA0) -------------------------------------------------------- char *__thiscall std::string::erase(char **this, char *a2, char *a3) { char *result; // eax size_t v5; // ebx char *v6; // eax unsigned int v7; // [esp+Ch] [ebp-10h] result = a2; if ( a3 != a2 ) { v5 = a2 - *this; std::string::_M_mutate(this, v5, a3 - a2, 0, v7); v6 = *this; *((_DWORD *)v6 - 1) = -1; return &v6[v5]; } return result; } // 4D0ED5: variable 'v7' is possibly undefined //----- (004D0EF0) -------------------------------------------------------- char **__userpurge std::string::erase@(char **a1@, std::string *this, unsigned int a3, unsigned int a4) { unsigned int v5; // ecx unsigned int v6; // eax 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; } // 4D0F22: variable 'v8' is possibly undefined //----- (004D0F50) -------------------------------------------------------- char *__fastcall std::string::front(char **a1) { char *result; // eax unsigned int v3; // [esp+Ch] [ebp-10h] result = *a1; if ( *((int *)*a1 - 1) >= 0 ) { if ( *((int *)result - 1) > 0 ) std::string::_M_mutate(a1, 0, 0, 0, v3); result = *a1; *((_DWORD *)*a1 - 1) = -1; } return result; } // 4D0F84: variable 'v3' is possibly undefined //----- (004D0FA0) -------------------------------------------------------- int *__userpurge std::string::append@(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); } // 4D0FBC: variable 'v6' is possibly undefined //----- (004D0FD0) -------------------------------------------------------- int *__userpurge std::string::append@(int *a1@, std::string *this, size_t Size, unsigned int a4) { std::string *v5; // ebp unsigned int v6; // eax int v7; // esi std::string *v8; // esi _BYTE *v9; // eax int v10; // eax char *v12; // ebp bool v13; // cc void *Src; // [esp+4h] [ebp-28h] v5 = this; if ( Size ) { v6 = *a1; v7 = *(_DWORD *)(*a1 - 12); if ( Size > 1073741820 - v7 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v8 = (std::string *)(Size + v7); if ( (unsigned int)v8 > *(_DWORD *)(v6 - 8) || (v13 = *(_DWORD *)(v6 - 4) <= 0, v6 = *a1, !v13) ) { if ( v6 <= (unsigned int)this && (unsigned int)this <= v6 + *(_DWORD *)(v6 - 12) ) { v12 = (char *)this - v6; std::string::reserve(a1, v8, (unsigned int)Src); v5 = (std::string *)&v12[*a1]; v9 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); if ( Size != 1 ) goto LABEL_8; goto LABEL_12; } std::string::reserve(a1, v8, (unsigned int)Src); v6 = *a1; } v9 = (_BYTE *)(*(_DWORD *)(v6 - 12) + v6); if ( Size != 1 ) { LABEL_8: memcpy(v9, v5, Size); LABEL_9: v10 = *a1; *(_DWORD *)(v10 - 4) = 0; *(_DWORD *)(v10 - 12) = v8; *((_BYTE *)v8 + v10) = 0; return a1; } LABEL_12: *v9 = *(_BYTE *)v5; goto LABEL_9; } return a1; } // 4D1012: variable 'Src' is possibly undefined //----- (004D10A0) -------------------------------------------------------- int *__userpurge std::string::append@(int *a1@, std::string *this, const std::string *a3) { size_t Size; // esi size_t v5; // edi _BYTE *v6; // edx _BYTE *v7; // eax int v8; // eax void *Src; // [esp+4h] [ebp-28h] Size = *(_DWORD *)(*(_DWORD *)this - 12); if ( Size ) { v5 = Size + *(_DWORD *)(*a1 - 12); if ( v5 > *(_DWORD *)(*a1 - 8) || *(int *)(*a1 - 4) > 0 ) { std::string::reserve(a1, (std::string *)(Size + *(_DWORD *)(*a1 - 12)), (unsigned int)Src); v6 = *(_BYTE **)this; v7 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); if ( Size == 1 ) { LABEL_9: *v7 = *v6; goto LABEL_5; } } else { v6 = *(_BYTE **)this; v7 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); if ( Size == 1 ) goto LABEL_9; } memcpy(v7, v6, Size); LABEL_5: v8 = *a1; *(_DWORD *)(v8 - 4) = 0; *(_DWORD *)(v8 - 12) = v5; *(_BYTE *)(v8 + v5) = 0; } return a1; } // 4D10C8: variable 'Src' is possibly undefined //----- (004D1130) -------------------------------------------------------- int *__userpurge std::string::append@( int *a1@, std::string *this, const std::string *a3, size_t a4, unsigned int a5) { unsigned int v5; // ebx size_t Size; // ebx std::string *v8; // edx _BYTE *v9; // edi _BYTE *v10; // eax int v11; // eax void *Src; // [esp+4h] [ebp-38h] std::string *v14; // [esp+1Ch] [ebp-20h] std::string *v15; // [esp+1Ch] [ebp-20h] v5 = *(_DWORD *)(*(_DWORD *)this - 12); if ( (unsigned int)a3 > v5 ) 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 = v5 - (_DWORD)a3; if ( Size > a4 ) Size = a4; if ( Size ) { v8 = (std::string *)(Size + *(_DWORD *)(*a1 - 12)); if ( (unsigned int)v8 > *(_DWORD *)(*a1 - 8) || *(int *)(*a1 - 4) > 0 ) { v14 = (std::string *)(Size + *(_DWORD *)(*a1 - 12)); std::string::reserve(a1, v14, (unsigned int)Src); v8 = v14; } v9 = (char *)a3 + *(_DWORD *)this; v10 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); if ( Size == 1 ) { *v10 = *v9; } else { v15 = v8; memcpy(v10, v9, Size); v8 = v15; } v11 = *a1; *(_DWORD *)(v11 - 4) = 0; *(_DWORD *)(v11 - 12) = v8; *((_BYTE *)v8 + v11) = 0; } return a1; } // 4D117A: variable 'Src' is possibly undefined //----- (004D1210) -------------------------------------------------------- int *__userpurge std::string::append@(int *a1@, size_t this, char a3, char a4) { int v5; // edx int v6; // esi std::string *v7; // esi _BYTE *v8; // eax int v9; // eax int Val; // [esp+4h] [ebp-28h] if ( this ) { v5 = *a1; v6 = *(_DWORD *)(*a1 - 12); if ( this > 1073741820 - v6 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v7 = (std::string *)(this + v6); if ( (unsigned int)v7 > *(_DWORD *)(v5 - 8) || *(int *)(v5 - 4) > 0 ) std::string::reserve(a1, v7, Val); v8 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); if ( this == 1 ) *v8 = a3; else memset(v8, a3, this); v9 = *a1; *(_DWORD *)(v9 - 4) = 0; *(_DWORD *)(v9 - 12) = v7; *((_BYTE *)v7 + v9) = 0; } return a1; } // 4D1248: variable 'Val' is possibly undefined //----- (004D12B0) -------------------------------------------------------- _DWORD *__thiscall std::string::assign(_DWORD *this, int *a2) { _DWORD *result; // eax int v3; // edx int v4; // ecx result = this; v3 = *this; if ( *(int *)(*this - 4) < 0 ) *(_DWORD *)(v3 - 4) = 0; v4 = *a2; if ( *(int *)(*a2 - 4) < 0 ) *(_DWORD *)(v4 - 4) = 0; *result = v4; *a2 = v3; return result; } //----- (004D12F0) -------------------------------------------------------- char **__userpurge std::string::assign@(char **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); } // 4D130C: variable 'v6' is possibly undefined //----- (004D1320) -------------------------------------------------------- char **__userpurge std::string::assign@(char **a1@, std::string *this, size_t Size, unsigned int a4) { char *v4; // eax unsigned int v5; // edx bool v7; // cc char *v8; // eax char *v9; // eax unsigned int v11; // [esp+Ch] [ebp-10h] v4 = *a1; v5 = *((_DWORD *)*a1 - 3); if ( Size > 0x3FFFFFFC ) std::__throw_length_error((std::length_error *)"basic_string::assign"); if ( v4 <= (char *)this && &v4[v5] >= (char *)this ) { v7 = *((_DWORD *)v4 - 1) <= 0; v8 = *a1; if ( !v7 ) { v5 = *((_DWORD *)v8 - 3); goto LABEL_6; } if ( Size <= this - (std::string *)v8 ) { if ( Size != 1 ) { if ( Size ) { memcpy(v8, this, Size); v8 = *a1; } goto LABEL_15; } } else { if ( this == (std::string *)v8 ) { LABEL_15: *((_DWORD *)v8 - 1) = 0; *((_DWORD *)v8 - 3) = Size; v8[Size] = 0; return a1; } if ( Size != 1 ) { if ( Size ) { memmove(v8, this, Size); v8 = *a1; } goto LABEL_15; } } *v8 = *(_BYTE *)this; v8 = *a1; goto LABEL_15; } LABEL_6: std::string::_M_mutate(a1, 0, v5, Size, v11); if ( !Size ) return a1; v9 = *a1; if ( Size != 1 ) { memcpy(v9, this, Size); return a1; } *v9 = *(_BYTE *)this; return a1; } // 4D1371: variable 'v11' is possibly undefined //----- (004D1430) -------------------------------------------------------- int *__userpurge std::string::assign@(int *a1@, std::string *this, const std::string *a3) { _DWORD *v4; // esi int v5; // eax int v6; // edx char v8[13]; // [esp+1Fh] [ebp-Dh] BYREF v4 = *(_DWORD **)this; if ( *a1 != *(_DWORD *)this ) { if ( (int)*(v4 - 1) < 0 ) { v4 = std::string::_Rep::_M_clone((int)(v4 - 3), (int)v8, 0); v5 = *a1; if ( !_CRT_MT ) goto LABEL_6; } else { if ( _CRT_MT ) _InterlockedAdd(v4 - 1, 1u); else ++*(v4 - 1); v5 = *a1; if ( !_CRT_MT ) { LABEL_6: v6 = *(_DWORD *)(v5 - 4); *(_DWORD *)(v5 - 4) = v6 - 1; if ( v6 > 0 ) { LABEL_7: *a1 = (int)v4; return a1; } LABEL_11: operator delete((void *)(v5 - 12)); *a1 = (int)v4; return a1; } } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v5 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_7; goto LABEL_11; } return a1; } // 53E1E4: using guessed type int _CRT_MT; // 4D1430: using guessed type char var_D[13]; //----- (004D14E0) -------------------------------------------------------- char **__userpurge std::string::assign@( char **a1@, std::string *this, const std::string *a3, size_t a4, unsigned int a5) { size_t v5; // eax 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); } // 4D1511: variable 'v7' is possibly undefined //----- (004D1550) -------------------------------------------------------- char **__userpurge std::string::assign@(char **a1@, size_t this, char a3, char a4) { char *v5; // edx unsigned int v7; // [esp+Ch] [ebp-10h] if ( this > 0x3FFFFFFC ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); std::string::_M_mutate(a1, 0, *((_DWORD *)*a1 - 3), this, v7); if ( !this ) return a1; v5 = *a1; if ( this != 1 ) { memset(v5, a3, this); return a1; } *v5 = a3; return a1; } // 4D157C: variable 'v7' is possibly undefined //----- (004D15D0) -------------------------------------------------------- char **__userpurge std::string::insert@(char **a1@, std::string *a2, char *a3, size_t a4, unsigned int a5) { return std::string::insert(a1, a2 - (std::string *)*a1, a3, a4, a5); } //----- (004D15E0) -------------------------------------------------------- char *__thiscall std::string::insert(char **this, int a2, char a3) { int v3; // esi char *v5; // eax unsigned int v7; // [esp+Ch] [ebp-10h] v3 = a2 - (_DWORD)*this; if ( *((_DWORD *)*this - 3) == 1073741820 ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); std::string::_M_mutate(this, a2 - (_DWORD)*this, 0, 1u, v7); (*this)[v3] = a3; v5 = *this; *((_DWORD *)v5 - 1) = -1; return &v5[v3]; } // 4D1610: variable 'v7' is possibly undefined //----- (004D1640) -------------------------------------------------------- void __thiscall std::string::insert(char **this, int a2, size_t Size, char a4) { size_t v4; // esi char *v6; // esi unsigned int v7; // [esp+Ch] [ebp-20h] v4 = a2 - (_DWORD)*this; if ( Size > 1073741820 - *((_DWORD *)*this - 3) ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); std::string::_M_mutate(this, v4, 0, Size, v7); if ( Size ) { v6 = &(*this)[v4]; if ( Size == 1 ) *v6 = a4; else memset(v6, a4, Size); } } // 4D1674: variable 'v7' is possibly undefined //----- (004D16D0) -------------------------------------------------------- char **__userpurge std::string::insert@(char **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, (unsigned int)this, Str, v5, v7); } // 4D16F4: variable 'v7' is possibly undefined //----- (004D1710) -------------------------------------------------------- char **__userpurge std::string::insert@( char **a1@, unsigned int this, char *Src, size_t Size, unsigned int a5) { char *v5; // edx unsigned int v6; // eax char *v8; // edi std::string *v10; // ebp char *v11; // eax char *v12; // edx size_t v13; // edi char *v14; // esi char *v15; // edx size_t v16; // eax unsigned int v17; // [esp+Ch] [ebp-30h] char *v18; // [esp+1Ch] [ebp-20h] v5 = *a1; v6 = *((_DWORD *)*a1 - 3); if ( this > v6 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::insert", this, *((_DWORD *)*a1 - 3)); if ( Size > 1073741820 - v6 ) std::__throw_length_error((std::length_error *)"basic_string::insert"); if ( v5 <= Src && Src <= &v5[v6] && *((int *)v5 - 1) <= 0 ) { v10 = (std::string *)(Src - *a1); std::string::_M_mutate(a1, this, 0, Size, v17); v11 = (char *)v10 + (_DWORD)*a1; v12 = &(*a1)[this]; if ( &v11[Size] > v12 ) { if ( v11 < v12 ) { v13 = this - (_DWORD)v10; if ( this - (_DWORD)v10 == 1 ) { *v12 = *v11; } else if ( v13 ) { v18 = &(*a1)[this]; memcpy(v12, v11, v13); v12 = v18; } v14 = &v12[Size]; v15 = &v12[v13]; v16 = Size - v13; if ( Size - v13 == 1 ) { *v15 = *v14; } else if ( v16 ) { memcpy(v15, v14, v16); } } else if ( Size == 1 ) { *v12 = v11[1]; } else if ( Size ) { memcpy(v12, &v11[Size], Size); } } else if ( Size == 1 ) { *v12 = *v11; } else if ( Size ) { memcpy(v12, v11, Size); } return a1; } std::string::_M_mutate(a1, this, 0, Size, v17); if ( !Size ) return a1; v8 = &(*a1)[this]; if ( Size != 1 ) { memcpy(v8, Src, Size); return a1; } *v8 = *Src; return a1; } // 4D1763: variable 'v17' is possibly undefined //----- (004D18C0) -------------------------------------------------------- char **__userpurge std::string::insert@(char **a1@, std::string *this, char **a3, const std::string *a4) { unsigned int v5; // [esp+Ch] [ebp-10h] return std::string::insert(a1, (unsigned int)this, *a3, *((_DWORD *)*a3 - 3), v5); } // 4D18DB: variable 'v5' is possibly undefined //----- (004D18F0) -------------------------------------------------------- char **__userpurge std::string::insert@( char **a1@, std::string *this, _DWORD *a3, const std::string *a4, size_t a5, unsigned int a6) { size_t v6; // eax 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, (unsigned int)this, (char *)a4 + *a3, v6, v8); } // 4D1929: variable 'v8' is possibly undefined //----- (004D1960) -------------------------------------------------------- char **__userpurge std::string::insert@(char **a1@, std::string *this, size_t Size, char a4, char a5) { unsigned int v5; // edx _BYTE *v7; // edi unsigned int v9; // [esp+Ch] [ebp-20h] v5 = *((_DWORD *)*a1 - 3); if ( (unsigned int)this > v5 ) 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 - v5 ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); std::string::_M_mutate(a1, (size_t)this, 0, Size, v9); if ( !Size ) return a1; v7 = (char *)this + (_DWORD)*a1; if ( Size != 1 ) { memset(v7, a4, Size); return a1; } *v7 = a4; return a1; } // 4D1998: variable 'v9' is possibly undefined //----- (004D1A10) -------------------------------------------------------- _DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, char **this) { char *v3; // eax char *v5; // eax unsigned int v6; // [esp+Ch] [ebp-10h] v3 = *this; if ( *((int *)*this - 1) >= 0 ) { if ( *((int *)v3 - 1) > 0 ) std::string::_M_mutate(this, 0, 0, 0, v6); v5 = *this; *((_DWORD *)v5 - 1) = -1; *ecx0 = &v5[*((_DWORD *)v5 - 3)]; return ecx0; } else { *ecx0 = &v3[*((_DWORD *)v3 - 3)]; return ecx0; } } // 4D1A58: variable 'v6' is possibly undefined //----- (004D1A80) -------------------------------------------------------- void __userpurge std::string::resize(int *a1@, std::string *this, unsigned int a3) { unsigned int v3; // edx char v4; // [esp+8h] [ebp-14h] unsigned int v5; // [esp+Ch] [ebp-10h] v3 = *(_DWORD *)(*a1 - 12); if ( (unsigned int)this > 0x3FFFFFFC ) std::__throw_length_error((std::length_error *)"basic_string::resize"); if ( (unsigned int)this > v3 ) { std::string::append(a1, (size_t)this - v3, 0, v4); } else if ( (unsigned int)this < v3 ) { std::string::_M_mutate((char **)a1, (size_t)this, v3 - (_DWORD)this, 0, v5); } } // 4D1AB1: variable 'v5' is possibly undefined // 4D1ACD: variable 'v4' is possibly undefined //----- (004D1AF0) -------------------------------------------------------- void __userpurge std::string::resize(int *a1@, size_t this, char a3, char a4) { unsigned int v4; // edx unsigned int v5; // [esp+Ch] [ebp-10h] v4 = *(_DWORD *)(*a1 - 12); if ( this > 0x3FFFFFFC ) std::__throw_length_error((std::length_error *)"basic_string::resize"); if ( this > v4 ) { std::string::append(a1, this - v4, a3, a4); } else if ( this < v4 ) { std::string::_M_mutate((char **)a1, this, v4 - this, 0, v5); } } // 4D1B29: variable 'v5' is possibly undefined //----- (004D1B70) -------------------------------------------------------- size_t __cdecl std::string::_M_copy(std::string *this, char *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; } //----- (004D1BB0) -------------------------------------------------------- std::string *__userpurge std::string::_M_data@(_DWORD *a1@, std::string *this, char *a3) { std::string *result; // eax result = this; *a1 = this; return result; } //----- (004D1BC0) -------------------------------------------------------- char *__fastcall std::string::_M_leak(char **a1) { char *result; // eax unsigned int v3; // [esp+Ch] [ebp-10h] result = *a1; if ( *((int *)*a1 - 1) >= 0 ) { if ( *((int *)result - 1) > 0 ) std::string::_M_mutate(a1, 0, 0, 0, v3); result = *a1; *((_DWORD *)*a1 - 1) = -1; } return result; } // 4D1BF4: variable 'v3' is possibly undefined //----- (004D1C10) -------------------------------------------------------- size_t __cdecl std::string::_M_move(std::string *this, char *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; } //----- (004D1C50) -------------------------------------------------------- char **__userpurge std::string::replace@( char **a1@, std::string *a2, int a3, char *a4, int a5, unsigned int a6) { return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5 - (_DWORD)a4, a6); } //----- (004D1C70) -------------------------------------------------------- char **__thiscall std::string::replace(char **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, a2 - (_DWORD)*this, a3 - a2, Str, Size, v7); } // 4D1CA1: variable 'v7' is possibly undefined //----- (004D1CC0) -------------------------------------------------------- char **__userpurge std::string::replace@( char **a1@, std::string *a2, int a3, char *a4, int a5, unsigned int a6) { return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5 - (_DWORD)a4, a6); } //----- (004D1CE0) -------------------------------------------------------- char **__userpurge std::string::replace@( char **a1@, std::string *a2, int a3, char *a4, size_t a5, unsigned int a6) { return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5, a6); } //----- (004D1D00) -------------------------------------------------------- char **__thiscall std::string::replace(char **this, int a2, int a3, char **a4) { unsigned int v5; // [esp+10h] [ebp-Ch] return std::string::replace(this, a2 - (_DWORD)*this, a3 - a2, *a4, *((_DWORD *)*a4 - 3), v5); } // 4D1D28: variable 'v5' is possibly undefined //----- (004D1D40) -------------------------------------------------------- char **__userpurge std::string::replace@( char **a1@, std::string *a2, int a3, char *a4, int a5, unsigned int a6) { return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5 - (_DWORD)a4, a6); } //----- (004D1D60) -------------------------------------------------------- char **__userpurge std::string::replace@( char **a1@, std::string *a2, int a3, char *a4, int a5, unsigned int a6) { return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5 - (_DWORD)a4, a6); } //----- (004D1D80) -------------------------------------------------------- char **__userpurge std::string::replace@( char **a1@, std::string *a2, int a3, char *a4, size_t a5, unsigned int a6) { return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5, a6); } //----- (004D1DA0) -------------------------------------------------------- char **__thiscall std::string::replace(char **this, int a2, int a3, size_t Size, char a5) { char *v6; // ecx size_t v7; // esi char *v8; // esi unsigned int v10; // [esp+Ch] [ebp-20h] v6 = *this; v7 = a2 - (_DWORD)v6; if ( Size > a3 - a2 + 1073741820 - *((_DWORD *)v6 - 3) ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); std::string::_M_mutate(this, v7, a3 - a2, Size, v10); if ( !Size ) return this; v8 = &(*this)[v7]; if ( Size != 1 ) { memset(v8, a5, Size); return this; } *v8 = a5; return this; } // 4D1DD9: variable 'v10' is possibly undefined //----- (004D1E30) -------------------------------------------------------- char **__userpurge std::string::replace@( char **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, (unsigned int)this, a3, Str, Size, v8); } // 4D1E5C: variable 'v8' is possibly undefined //----- (004D1E70) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! char **__userpurge std::string::replace@( char **a1@, unsigned int this, unsigned int a3, char *Src, size_t Size, unsigned int a6) { char *v6; // edx unsigned int v7; // eax unsigned int v8; // ecx char *v10; // eax char *v11; // edx int v12; // eax unsigned int v13; // [esp+8h] [ebp-60h] char *v14; // [esp+10h] [ebp-58h] char *v15; // [esp+10h] [ebp-58h] unsigned int v16; // [esp+14h] [ebp-54h] v6 = *a1; v7 = *((_DWORD *)*a1 - 3); if ( this > v7 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", this, *((_DWORD *)*a1 - 3)); v8 = v7 - this; if ( v7 - this > a3 ) v8 = a3; v16 = v8; if ( Size > v8 - v7 + 1073741820 ) std::__throw_length_error((std::length_error *)"basic_string::replace"); if ( v6 > Src || Src > &v6[v7] || *((int *)v6 - 1) > 0 ) { std::string::_M_mutate(a1, this, v8, Size, v13); if ( Size ) { if ( Size == 1 ) (*a1)[this] = *Src; else memcpy(&(*a1)[this], Src, Size); } return a1; } v10 = *a1; if ( &Src[Size] <= &(*a1)[this] ) { v14 = (char *)(Src - v10); LABEL_15: std::string::_M_mutate(a1, this, v8, Size, v13); v11 = &v14[(_DWORD)*a1]; if ( Size == 1 ) { (*a1)[this] = *v11; } else if ( Size ) { memcpy(&(*a1)[this], v11, Size); } return a1; } if ( Src >= &v10[this + v8] ) { v14 = (char *)(Src - v10 + Size - v8); goto LABEL_15; } LOBYTE(v13) = 0; v15 = (char *)std::string::_S_construct(Src, (int)&Src[Size]); std::string::_M_mutate(a1, this, v16, Size, v13); if ( Size ) { if ( Size == 1 ) (*a1)[this] = *v15; else memcpy(&(*a1)[this], v15, Size); } if ( _CRT_MT ) { v12 = _InterlockedExchangeAdd((volatile signed __int32 *)v15 - 1, 0xFFFFFFFF); } else { v12 = *((_DWORD *)v15 - 1); *((_DWORD *)v15 - 1) = v12 - 1; } if ( v12 <= 0 ) operator delete(v15 - 12); return a1; } // 4D2139: positive sp value 4 has been found // 4D1F06: variable 'v13' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004D2150) -------------------------------------------------------- char **__userpurge std::string::replace@( char **a1@, std::string *this, unsigned int a3, char **a4, const std::string *a5) { unsigned int v6; // [esp+10h] [ebp-Ch] return std::string::replace(a1, (unsigned int)this, a3, *a4, *((_DWORD *)*a4 - 3), v6); } // 4D2173: variable 'v6' is possibly undefined //----- (004D2190) -------------------------------------------------------- char **__userpurge std::string::replace@( char **a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, size_t a6, unsigned int a7) { size_t Size; // eax 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, (unsigned int)this, a3, (char *)a5 + *a4, Size, v9); } // 4D21D1: variable 'v9' is possibly undefined //----- (004D2200) -------------------------------------------------------- char **__userpurge std::string::replace@( char **a1@, std::string *this, unsigned int a3, size_t a4, char a5, char a6) { unsigned int v6; // eax 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); } //----- (004D2270) -------------------------------------------------------- void __userpurge std::string::reserve(int *a1@, std::string *this, unsigned int a3) { int v4; // ecx std::string *v5; // eax unsigned int v6; // edx int v7; // ecx _DWORD *v8; // esi int v9; // eax int v10; // edx char v11[13]; // [esp+1Fh] [ebp-Dh] BYREF v4 = *a1; v5 = this; if ( this == *(std::string **)(v4 - 8) ) { if ( *(int *)(v4 - 4) <= 0 ) return; v4 = *a1; } v6 = *(_DWORD *)(v4 - 12); v7 = v4 - 12; if ( (unsigned int)this < v6 ) v5 = (std::string *)v6; v8 = std::string::_Rep::_M_clone(v7, (int)v11, (int)v5 - v6); v9 = *a1; if ( _CRT_MT ) { v10 = _InterlockedExchangeAdd((volatile signed __int32 *)(v9 - 4), 0xFFFFFFFF); } else { v10 = *(_DWORD *)(v9 - 4); *(_DWORD *)(v9 - 4) = v10 - 1; } if ( v10 <= 0 ) operator delete((void *)(v9 - 12)); *a1 = (int)v8; } // 53E1E4: using guessed type int _CRT_MT; // 4D2270: using guessed type char var_D[13]; //----- (004D2300) -------------------------------------------------------- void __fastcall std::string::pop_back(char **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); } // 4D2322: variable 'v2' is possibly undefined //----- (004D2360) -------------------------------------------------------- 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; } //----- (004D23A0) -------------------------------------------------------- void __userpurge std::string::_M_mutate( char **a1@, size_t this, unsigned int a3, unsigned int a4, unsigned int a5) { int v6; // edi unsigned int v7; // edx unsigned int v8; // esi size_t Size; // edi _DWORD *v10; // edx char *v11; // ebp size_t v12; // ecx char *Src; // eax char *v14; // eax int v15; // edx char *v16; // eax char *v17; // edx char *v18; // ecx _DWORD *v19; // [esp+18h] [ebp-34h] v6 = *((_DWORD *)*a1 - 3); v7 = *((_DWORD *)*a1 - 2); v8 = v6 + a4 - a3; Size = v6 - (this + a3); if ( v8 > v7 ) { LABEL_4: v10 = std::string::_Rep::_S_create(v8, v7); v11 = (char *)(v10 + 3); v12 = this + a3; if ( this ) { Src = *a1; v11 = (char *)(v10 + 3); if ( this == 1 ) { *((_BYTE *)v10 + 12) = *Src; v14 = *a1; if ( !Size ) goto LABEL_8; goto LABEL_12; } v19 = v10; memcpy(v11, Src, this); v12 = this + a3; v10 = v19; } v14 = *a1; if ( !Size ) goto LABEL_8; LABEL_12: v16 = &v14[v12]; v17 = (char *)v10 + this + a4 + 12; if ( Size != 1 ) { memcpy(v17, v16, Size); v14 = *a1; if ( !_CRT_MT ) { LABEL_9: v15 = *((_DWORD *)v14 - 1); *((_DWORD *)v14 - 1) = v15 - 1; if ( v15 > 0 ) { LABEL_10: *a1 = v11; goto LABEL_11; } LABEL_15: operator delete(v14 - 12); goto LABEL_10; } LABEL_14: if ( _InterlockedExchangeAdd((volatile signed __int32 *)v14 - 1, 0xFFFFFFFF) > 0 ) goto LABEL_10; goto LABEL_15; } *v17 = *v16; v14 = *a1; LABEL_8: if ( !_CRT_MT ) goto LABEL_9; goto LABEL_14; } if ( *((int *)*a1 - 1) > 0 ) { v7 = *((_DWORD *)*a1 - 2); goto LABEL_4; } v11 = *a1; if ( Size && a4 != a3 ) { v18 = &v11[this + a3]; if ( Size == 1 ) v11[this + a4] = *v18; else memmove(&v11[this + a4], v18, Size); v11 = *a1; } LABEL_11: *((_DWORD *)v11 - 1) = 0; *((_DWORD *)v11 - 3) = v8; v11[v8] = 0; } // 53E1E4: using guessed type int _CRT_MT; //----- (004D2550) -------------------------------------------------------- int __userpurge std::string::push_back@(int *a1@, std::string *this, char a3) { int v4; // edi int result; // eax unsigned int v6; // [esp+4h] [ebp-28h] v4 = *(_DWORD *)(*a1 - 12); if ( (unsigned int)(v4 + 1) > *(_DWORD *)(*a1 - 8) || *(int *)(*a1 - 4) > 0 ) std::string::reserve(a1, (std::string *)(v4 + 1), v6); *(_BYTE *)(*a1 + *(_DWORD *)(*a1 - 12)) = (_BYTE)this; result = *a1; *(_DWORD *)(result - 4) = 0; *(_DWORD *)(result - 12) = v4 + 1; *(_BYTE *)(result + v4 + 1) = 0; return result; } // 4D2576: variable 'v6' is possibly undefined //----- (004D25B0) -------------------------------------------------------- _BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2) { char *v2; // eax _BYTE *result; // eax *this = *a2; v2 = (char *)operator new(0xDu); *((_DWORD *)v2 + 1) = 0; result = v2 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *a2 = result; return result; } //----- (004D25F0) -------------------------------------------------------- _BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) { char *v3; // eax _BYTE *result; // eax *this = *a2; v3 = (char *)operator new(0xDu); *((_DWORD *)v3 + 1) = 0; result = v3 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *a2 = result; return result; } //----- (004D2630) -------------------------------------------------------- int __thiscall std::string::string(_DWORD *this, char *Str, int a3) { int v3; // eax int result; // eax v3 = -1; if ( Str ) v3 = (int)&Str[strlen(Str)]; result = std::string::_S_construct(Str, v3); *this = result; return result; } //----- (004D2680) -------------------------------------------------------- int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4) { int result; // eax int v6; // ebx int v7; // edx int v8; // [esp+1Ch] [ebp-20h] if ( &Src[Size] && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); result = (int)std::string::_Rep::_S_create(Size, 0); v6 = result; v7 = result + 12; if ( Size == 1 ) { result = *Src; *(_BYTE *)(v6 + 12) = result; } else if ( Size ) { v8 = result + 12; result = (int)memcpy((void *)(result + 12), Src, Size); v7 = v8; } *(_DWORD *)(v6 + 8) = 0; *(_DWORD *)v6 = Size; *(_BYTE *)(v6 + Size + 12) = 0; *this = v7; return result; } //----- (004D2720) -------------------------------------------------------- _BYTE *__thiscall std::string::string(_DWORD *this, int a2) { char *v3; // eax _BYTE *result; // eax v3 = (char *)operator new(0xDu); *((_DWORD *)v3 + 1) = 0; result = v3 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *this = result; return result; } //----- (004D2760) -------------------------------------------------------- _DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3) { _DWORD *result; // eax char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF result = *(_DWORD **)this; if ( *(int *)(*(_DWORD *)this - 4) < 0 ) { result = std::string::_Rep::_M_clone((int)(result - 3), (int)v5, 0); *a1 = result; } else { if ( _CRT_MT ) _InterlockedAdd(result - 1, 1u); else ++*(result - 1); *a1 = result; } return result; } // 53E1E4: using guessed type int _CRT_MT; // 4D2760: using guessed type char var_D[13]; //----- (004D27D0) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax result = (_DWORD *)*a2; if ( *(int *)(*a2 - 4) < 0 ) { result = std::string::_Rep::_M_clone((int)(result - 3), a3, 0); *this = result; } else { if ( _CRT_MT ) _InterlockedAdd(result - 1, 1u); else ++*(result - 1); *this = result; } return result; } // 53E1E4: using guessed type int _CRT_MT; //----- (004D2840) -------------------------------------------------------- int __thiscall std::string::string(int *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v5; // edx int 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; } //----- (004D28A0) -------------------------------------------------------- int __userpurge std::string::string@( int *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5) { int v6; // edx unsigned int v7; // eax char *v8; // eax int 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; } //----- (004D2910) -------------------------------------------------------- int __thiscall std::string::string(int *this, int *a2, unsigned int a3, unsigned int a4, int a5) { int v6; // edx unsigned int v7; // eax int v8; // eax int 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; } //----- (004D2980) -------------------------------------------------------- int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4) { int result; // eax int v6; // ebx int v7; // edx int v8; // [esp+1Ch] [ebp-20h] if ( &Src[Size] && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); result = (int)std::string::_Rep::_S_create(Size, 0); v6 = result; v7 = result + 12; if ( Size == 1 ) { result = *Src; *(_BYTE *)(v6 + 12) = result; } else if ( Size ) { v8 = result + 12; result = (int)memcpy((void *)(result + 12), Src, Size); v7 = v8; } *(_DWORD *)(v6 + 8) = 0; *(_DWORD *)v6 = Size; *(_BYTE *)(v6 + Size + 12) = 0; *this = v7; return result; } //----- (004D2A20) -------------------------------------------------------- char *__thiscall std::string::string(_DWORD *this, size_t Size, char *a3, int a4) { char *result; // eax int v6; // ebx void *v7; // edx char *v8; // [esp+1Ch] [ebp-20h] result = (char *)std::string::_Rep::_S_create(Size, 0); v6 = (int)result; v7 = result + 12; if ( Size ) { if ( Size == 1 ) { result = a3; *(_BYTE *)(v6 + 12) = (_BYTE)a3; } else { v8 = result + 12; result = (char *)memset(v7, (char)a3, Size); v7 = v8; } } *(_DWORD *)(v6 + 8) = 0; *(_DWORD *)v6 = Size; *(_BYTE *)(v6 + Size + 12) = 0; *this = v7; return result; } //----- (004D2AA0) -------------------------------------------------------- _BYTE *__fastcall std::string::string(_DWORD *a1) { char *v2; // eax _BYTE *result; // eax v2 = (char *)operator new(0xDu); *((_DWORD *)v2 + 1) = 0; result = v2 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *a1 = result; return result; } //----- (004D2AE0) -------------------------------------------------------- int __thiscall std::string::string<__gnu_cxx::__normal_iterator>( _DWORD *this, unsigned __int8 *Src, int a3, int a4) { size_t Size; // ebx int result; // eax int v7; // esi int v8; // edx int v9; // [esp+1Ch] [ebp-20h] Size = a3 - (_DWORD)Src; result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); v7 = result; v8 = result + 12; if ( a3 - (_DWORD)Src == 1 ) { result = *Src; *(_BYTE *)(v7 + 12) = result; } else if ( Size ) { v9 = result + 12; result = (int)memcpy((void *)(result + 12), Src, Size); v8 = v9; } *(_DWORD *)(v7 + 8) = 0; *(_DWORD *)v7 = Size; *(_BYTE *)(v7 + Size + 12) = 0; *this = v8; return result; } //----- (004D2B70) -------------------------------------------------------- int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4) { size_t Size; // ebx int result; // eax int v7; // esi int v8; // edx int v9; // [esp+1Ch] [ebp-20h] if ( a3 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); Size = a3 - (_DWORD)Src; result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); v7 = result; v8 = result + 12; if ( a3 - (_DWORD)Src == 1 ) { result = *Src; *(_BYTE *)(v7 + 12) = result; } else if ( Size ) { v9 = result + 12; result = (int)memcpy((void *)(result + 12), Src, Size); v8 = v9; } *(_DWORD *)(v7 + 8) = 0; *(_DWORD *)v7 = Size; *(_BYTE *)(v7 + Size + 12) = 0; *this = v8; return result; } //----- (004D2C10) -------------------------------------------------------- int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4) { size_t Size; // ebx int result; // eax int v7; // esi int v8; // edx int v9; // [esp+1Ch] [ebp-20h] if ( a3 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); Size = a3 - (_DWORD)Src; result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); v7 = result; v8 = result + 12; if ( a3 - (_DWORD)Src == 1 ) { result = *Src; *(_BYTE *)(v7 + 12) = result; } else if ( Size ) { v9 = result + 12; result = (int)memcpy((void *)(result + 12), Src, Size); v8 = v9; } *(_DWORD *)(v7 + 8) = 0; *(_DWORD *)v7 = Size; *(_BYTE *)(v7 + Size + 12) = 0; *this = v8; return result; } //----- (004D2CB0) -------------------------------------------------------- _BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2) { char *v2; // eax _BYTE *result; // eax *this = *a2; v2 = (char *)operator new(0xDu); *((_DWORD *)v2 + 1) = 0; result = v2 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *a2 = result; return result; } //----- (004D2CF0) -------------------------------------------------------- _BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) { char *v3; // eax _BYTE *result; // eax *this = *a2; v3 = (char *)operator new(0xDu); *((_DWORD *)v3 + 1) = 0; result = v3 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *a2 = result; return result; } //----- (004D2D30) -------------------------------------------------------- int __thiscall std::string::string(_DWORD *this, char *Str, int a3) { int v3; // eax int result; // eax v3 = -1; if ( Str ) v3 = (int)&Str[strlen(Str)]; result = std::string::_S_construct(Str, v3); *this = result; return result; } //----- (004D2D80) -------------------------------------------------------- int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4) { int result; // eax int v6; // ebx int v7; // edx int v8; // [esp+1Ch] [ebp-20h] if ( &Src[Size] && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); result = (int)std::string::_Rep::_S_create(Size, 0); v6 = result; v7 = result + 12; if ( Size == 1 ) { result = *Src; *(_BYTE *)(v6 + 12) = result; } else if ( Size ) { v8 = result + 12; result = (int)memcpy((void *)(result + 12), Src, Size); v7 = v8; } *(_DWORD *)(v6 + 8) = 0; *(_DWORD *)v6 = Size; *(_BYTE *)(v6 + Size + 12) = 0; *this = v7; return result; } //----- (004D2E20) -------------------------------------------------------- _BYTE *__thiscall std::string::string(_DWORD *this, int a2) { char *v3; // eax _BYTE *result; // eax v3 = (char *)operator new(0xDu); *((_DWORD *)v3 + 1) = 0; result = v3 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *this = result; return result; } //----- (004D2E60) -------------------------------------------------------- _DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3) { _DWORD *result; // eax char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF result = *(_DWORD **)this; if ( *(int *)(*(_DWORD *)this - 4) < 0 ) { result = std::string::_Rep::_M_clone((int)(result - 3), (int)v5, 0); *a1 = result; } else { if ( _CRT_MT ) _InterlockedAdd(result - 1, 1u); else ++*(result - 1); *a1 = result; } return result; } // 53E1E4: using guessed type int _CRT_MT; // 4D2E60: using guessed type char var_D[13]; //----- (004D2ED0) -------------------------------------------------------- _DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) { _DWORD *result; // eax result = (_DWORD *)*a2; if ( *(int *)(*a2 - 4) < 0 ) { result = std::string::_Rep::_M_clone((int)(result - 3), a3, 0); *this = result; } else { if ( _CRT_MT ) _InterlockedAdd(result - 1, 1u); else ++*(result - 1); *this = result; } return result; } // 53E1E4: using guessed type int _CRT_MT; //----- (004D2F40) -------------------------------------------------------- int __thiscall std::string::string(int *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v5; // edx int 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; } //----- (004D2FA0) -------------------------------------------------------- int __userpurge std::string::string@( int *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5) { int v6; // edx unsigned int v7; // eax char *v8; // eax int 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; } //----- (004D3010) -------------------------------------------------------- int __thiscall std::string::string(int *this, int *a2, unsigned int a3, unsigned int a4, int a5) { int v6; // edx unsigned int v7; // eax int v8; // eax int 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; } //----- (004D3080) -------------------------------------------------------- int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4) { int result; // eax int v6; // ebx int v7; // edx int v8; // [esp+1Ch] [ebp-20h] if ( &Src[Size] && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); result = (int)std::string::_Rep::_S_create(Size, 0); v6 = result; v7 = result + 12; if ( Size == 1 ) { result = *Src; *(_BYTE *)(v6 + 12) = result; } else if ( Size ) { v8 = result + 12; result = (int)memcpy((void *)(result + 12), Src, Size); v7 = v8; } *(_DWORD *)(v6 + 8) = 0; *(_DWORD *)v6 = Size; *(_BYTE *)(v6 + Size + 12) = 0; *this = v7; return result; } //----- (004D3120) -------------------------------------------------------- char *__thiscall std::string::string(_DWORD *this, size_t Size, char *a3, int a4) { char *result; // eax int v6; // ebx void *v7; // edx char *v8; // [esp+1Ch] [ebp-20h] result = (char *)std::string::_Rep::_S_create(Size, 0); v6 = (int)result; v7 = result + 12; if ( Size ) { if ( Size == 1 ) { result = a3; *(_BYTE *)(v6 + 12) = (_BYTE)a3; } else { v8 = result + 12; result = (char *)memset(v7, (char)a3, Size); v7 = v8; } } *(_DWORD *)(v6 + 8) = 0; *(_DWORD *)v6 = Size; *(_BYTE *)(v6 + Size + 12) = 0; *this = v7; return result; } //----- (004D31A0) -------------------------------------------------------- _BYTE *__fastcall std::string::string(_DWORD *a1) { char *v2; // eax _BYTE *result; // eax v2 = (char *)operator new(0xDu); *((_DWORD *)v2 + 1) = 0; result = v2 + 12; *((_DWORD *)result - 1) = 0; *((_DWORD *)result - 3) = 0; *result = 0; *a1 = result; return result; } //----- (004D31E0) -------------------------------------------------------- int __thiscall std::string::string<__gnu_cxx::__normal_iterator>( _DWORD *this, unsigned __int8 *Src, int a3, int a4) { size_t Size; // ebx int result; // eax int v7; // esi int v8; // edx int v9; // [esp+1Ch] [ebp-20h] Size = a3 - (_DWORD)Src; result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); v7 = result; v8 = result + 12; if ( a3 - (_DWORD)Src == 1 ) { result = *Src; *(_BYTE *)(v7 + 12) = result; } else if ( Size ) { v9 = result + 12; result = (int)memcpy((void *)(result + 12), Src, Size); v8 = v9; } *(_DWORD *)(v7 + 8) = 0; *(_DWORD *)v7 = Size; *(_BYTE *)(v7 + Size + 12) = 0; *this = v8; return result; } //----- (004D3270) -------------------------------------------------------- int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4) { size_t Size; // ebx int result; // eax int v7; // esi int v8; // edx int v9; // [esp+1Ch] [ebp-20h] if ( a3 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); Size = a3 - (_DWORD)Src; result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); v7 = result; v8 = result + 12; if ( a3 - (_DWORD)Src == 1 ) { result = *Src; *(_BYTE *)(v7 + 12) = result; } else if ( Size ) { v9 = result + 12; result = (int)memcpy((void *)(result + 12), Src, Size); v8 = v9; } *(_DWORD *)(v7 + 8) = 0; *(_DWORD *)v7 = Size; *(_BYTE *)(v7 + Size + 12) = 0; *this = v8; return result; } //----- (004D3310) -------------------------------------------------------- int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4) { size_t Size; // ebx int result; // eax int v7; // esi int v8; // edx int v9; // [esp+1Ch] [ebp-20h] if ( a3 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); Size = a3 - (_DWORD)Src; result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); v7 = result; v8 = result + 12; if ( a3 - (_DWORD)Src == 1 ) { result = *Src; *(_BYTE *)(v7 + 12) = result; } else if ( Size ) { v9 = result + 12; result = (int)memcpy((void *)(result + 12), Src, Size); v8 = v9; } *(_DWORD *)(v7 + 8) = 0; *(_DWORD *)v7 = Size; *(_BYTE *)(v7 + Size + 12) = 0; *this = v8; return result; } //----- (004D33B0) -------------------------------------------------------- void __fastcall std::string::~string(int *a1) { int v1; // eax int v2; // edx v1 = *a1; if ( !_CRT_MT ) { v2 = *(_DWORD *)(v1 - 4); *(_DWORD *)(v1 - 4) = v2 - 1; if ( v2 > 0 ) return; LABEL_5: operator delete((void *)(v1 - 12)); return; } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 53E1E4: using guessed type int _CRT_MT; //----- (004D33F0) -------------------------------------------------------- void __fastcall std::string::~string(int *a1) { int v1; // eax int v2; // edx v1 = *a1; if ( !_CRT_MT ) { v2 = *(_DWORD *)(v1 - 4); *(_DWORD *)(v1 - 4) = v2 - 1; if ( v2 > 0 ) return; LABEL_5: operator delete((void *)(v1 - 12)); return; } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 53E1E4: using guessed type int _CRT_MT; //----- (004D3430) -------------------------------------------------------- _DWORD *__thiscall std::string::operator=(_DWORD *this, int *a2) { _DWORD *result; // eax int v3; // edx int v4; // ecx result = this; v3 = *this; if ( *(int *)(*this - 4) < 0 ) *(_DWORD *)(v3 - 4) = 0; v4 = *a2; if ( *(int *)(*a2 - 4) < 0 ) *(_DWORD *)(v4 - 4) = 0; *result = v4; *a2 = v3; return result; } //----- (004D3470) -------------------------------------------------------- char **__thiscall std::string::operator=(char **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); } // 4D348C: variable 'v5' is possibly undefined //----- (004D34A0) -------------------------------------------------------- int *__thiscall std::string::operator=(int *this, _DWORD *a2) { _DWORD *v3; // esi int v4; // eax int v5; // edx char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF v3 = (_DWORD *)*a2; if ( *this != *a2 ) { if ( (int)*(v3 - 1) < 0 ) { v3 = std::string::_Rep::_M_clone((int)(v3 - 3), (int)v7, 0); v4 = *this; if ( !_CRT_MT ) goto LABEL_6; } else { if ( _CRT_MT ) _InterlockedAdd(v3 - 1, 1u); else ++*(v3 - 1); v4 = *this; if ( !_CRT_MT ) { LABEL_6: v5 = *(_DWORD *)(v4 - 4); *(_DWORD *)(v4 - 4) = v5 - 1; if ( v5 > 0 ) { LABEL_7: *this = (int)v3; return this; } LABEL_11: operator delete((void *)(v4 - 12)); *this = (int)v3; return this; } } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v4 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_7; goto LABEL_11; } return this; } // 53E1E4: using guessed type int _CRT_MT; // 4D34A0: using guessed type char var_D[13]; //----- (004D3550) -------------------------------------------------------- char **__thiscall std::string::operator=(char **this, std::string *a2, size_t a3) { unsigned int v5; // [esp+8h] [ebp-14h] std::string::assign(this, a2, a3, v5); return this; } // 4D3565: variable 'v5' is possibly undefined //----- (004D3580) -------------------------------------------------------- char **__thiscall std::string::operator=(char **this, char a2) { unsigned int v4; // [esp+Ch] [ebp-10h] std::string::_M_mutate(this, 0, *((_DWORD *)*this - 3), 1u, v4); **this = a2; return this; } // 4D35A3: variable 'v4' is possibly undefined //----- (004D35C0) -------------------------------------------------------- char *__thiscall std::string::operator[](char **this, int a2) { char *v2; // eax char *v5; // eax unsigned int v6; // [esp+Ch] [ebp-10h] v2 = *this; if ( *((int *)*this - 1) < 0 ) return &v2[a2]; if ( *((int *)v2 - 1) > 0 ) std::string::_M_mutate(this, 0, 0, 0, v6); v5 = *this; *((_DWORD *)v5 - 1) = -1; return &v5[a2]; } // 4D3600: variable 'v6' is possibly undefined //----- (004D3620) -------------------------------------------------------- int *__thiscall std::string::operator+=(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); } // 4D363C: variable 'v5' is possibly undefined //----- (004D3670) -------------------------------------------------------- int *__thiscall std::string::operator+=(int *this, char a2) { int v3; // edi int v4; // eax unsigned int v6; // [esp+4h] [ebp-28h] v3 = *(_DWORD *)(*this - 12); if ( (unsigned int)(v3 + 1) > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) std::string::reserve(this, (std::string *)(v3 + 1), v6); *(_BYTE *)(*this + *(_DWORD *)(*this - 12)) = a2; v4 = *this; *(_DWORD *)(v4 - 4) = 0; *(_DWORD *)(v4 - 12) = v3 + 1; *(_BYTE *)(v4 + v3 + 1) = 0; return this; } // 4D3696: variable 'v6' is possibly undefined //----- (004D36D0) -------------------------------------------------------- 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 _BYTE *v7; // esi int v8; // edx 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; v5 = result & 0x104; if ( v5 == 260 ) { v6 = v4; if ( !(_BYTE)a3 ) goto LABEL_16; LABEL_12: *v6++ = (_BYTE)a3; v7 = v6 + 1; if ( v5 != 4 ) goto LABEL_8; LABEL_13: *v6 = 102; *v7 = 0; return result; } v6 = v4 + 2; *(_WORD *)v4 = 10798; if ( (_BYTE)a3 ) goto LABEL_12; v7 = v4 + 3; if ( v5 == 4 ) goto LABEL_13; LABEL_8: v8 = result & 0x4000; if ( v5 == 256 ) { result = v8 == 0 ? 101 : 69; *v6 = result; *v7 = 0; return result; } if ( v5 != 260 ) { result = v8 == 0 ? 103 : 71; *v6 = result; *v7 = 0; return result; } v4 = v6; LABEL_16: result = (result & 0x4000) == 0 ? 97 : 65; *v4 = result; v4[1] = 0; return result; } //----- (004D37C0) -------------------------------------------------------- void __fastcall std::bad_typeid::~bad_typeid(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_55FE8C; std::exception::~exception(Block); operator delete(a1); } // 4D37CC: variable 'Block' is possibly undefined // 55FE8C: using guessed type void (__cdecl *off_55FE8C)(std::bad_typeid *__hidden this); //----- (004D37F0) -------------------------------------------------------- void __cdecl std::bad_typeid::~bad_typeid(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_55FE8C; std::exception::~exception(a1); } // 4D37F0: variable 'v1' is possibly undefined // 55FE8C: using guessed type void (__cdecl *off_55FE8C)(std::bad_typeid *__hidden this); //----- (004D3800) -------------------------------------------------------- int __cdecl std::money_base::_S_construct_pattern() { return std::money_base::_S_default_pattern; } // 55AF40: using guessed type int std::money_base::_S_default_pattern; //----- (004D3810) -------------------------------------------------------- int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) { _DWORD *v4; // eax char *v5; // esi _DWORD *v6; // eax int result; // eax v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new(0x44u); *v4 = &off_5606D4; 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_556C0C; v6[3] = 0; v6[5] = &unk_556C0C; v6[6] = 0; v6[7] = &unk_556C0C; v6[8] = 0; v6[9] = &unk_556C0C; 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; } // 53F588: using guessed type char *std::money_base::_S_atoms; // 55AF40: using guessed type int std::money_base::_S_default_pattern; // 5606D4: using guessed type int (*off_5606D4)(); //----- (004D3930) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FEA0; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FEA0: using guessed type int (*off_55FEA0)(); //----- (004D39D0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55FEA0; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55FEA0: using guessed type int (*off_55FEA0)(); //----- (004D3A70) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FEA0; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FEA0: using guessed type int (*off_55FEA0)(); //----- (004D3B10) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FEA0; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FEA0: using guessed type int (*off_55FEA0)(); //----- (004D3BB0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55FEA0; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55FEA0: using guessed type int (*off_55FEA0)(); //----- (004D3C50) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FEA0; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FEA0: using guessed type int (*off_55FEA0)(); //----- (004D3CF0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { std::moneypunct::~moneypunct(a1); operator delete(a1); } //----- (004D3D80) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { void *v1; // edx void (__fastcall *v2)(void *); // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] void *Block; // [esp+14h] [ebp-48h] v1 = (void *)a1[2]; *a1 = &off_55FEA0; Block = v1; if ( v1 ) { v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); if ( v2 == std::__moneypunct_cache::~__moneypunct_cache ) { std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); operator delete(Block); } else { v2(v1); } } std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4D3DDF: variable 'lpfctx' is possibly undefined // 55FEA0: using guessed type int (*off_55FEA0)(); //----- (004D3E80) -------------------------------------------------------- int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) { _DWORD *v4; // eax char *v5; // esi _DWORD *v6; // eax int result; // eax v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new(0x44u); *v4 = &off_5606E4; 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_556C0C; v6[3] = 0; v6[5] = &unk_556C0C; v6[6] = 0; v6[7] = &unk_556C0C; v6[8] = 0; v6[9] = &unk_556C0C; 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; } // 53F588: using guessed type char *std::money_base::_S_atoms; // 55AF40: using guessed type int std::money_base::_S_default_pattern; // 5606E4: using guessed type int (*off_5606E4)(); //----- (004D3FA0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FED4; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FED4: using guessed type int (*off_55FED4)(); //----- (004D4040) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55FED4; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55FED4: using guessed type int (*off_55FED4)(); //----- (004D40E0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FED4; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FED4: using guessed type int (*off_55FED4)(); //----- (004D4180) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FED4; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FED4: using guessed type int (*off_55FED4)(); //----- (004D4220) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55FED4; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55FED4: using guessed type int (*off_55FED4)(); //----- (004D42C0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FED4; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FED4: using guessed type int (*off_55FED4)(); //----- (004D4360) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { std::moneypunct::~moneypunct(a1); operator delete(a1); } //----- (004D43F0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { void *v1; // edx void (__fastcall *v2)(void *); // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] void *Block; // [esp+14h] [ebp-48h] v1 = (void *)a1[2]; *a1 = &off_55FED4; Block = v1; if ( v1 ) { v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); if ( v2 == std::__moneypunct_cache::~__moneypunct_cache ) { std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); operator delete(Block); } else { v2(v1); } } std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4D444F: variable 'lpfctx' is possibly undefined // 55FED4: using guessed type int (*off_55FED4)(); //----- (004D44F0) -------------------------------------------------------- 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 v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new(0x54u); v4[1] = 0; *v4 = &off_5606F4; 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_556C0C; v5 = std::money_base::_S_atoms; v4[13] = std::money_base::_S_default_pattern; v4[3] = 0; v4[6] = &unk_556C0E; v4[7] = 0; v4[8] = &unk_556C0E; v4[9] = 0; v4[10] = &unk_556C0E; 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; } // 53F588: using guessed type char *std::money_base::_S_atoms; // 55AF40: using guessed type int std::money_base::_S_default_pattern; // 5606F4: using guessed type int (*off_5606F4)(); //----- (004D4610) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FF08; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FF08: using guessed type int (*off_55FF08)(); //----- (004D46B0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55FF08; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55FF08: using guessed type int (*off_55FF08)(); //----- (004D4750) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FF08; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FF08: using guessed type int (*off_55FF08)(); //----- (004D47F0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FF08; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FF08: using guessed type int (*off_55FF08)(); //----- (004D4890) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55FF08; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55FF08: using guessed type int (*off_55FF08)(); //----- (004D4930) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FF08; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FF08: using guessed type int (*off_55FF08)(); //----- (004D49D0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { std::moneypunct::~moneypunct(a1); operator delete(a1); } //----- (004D4A60) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { void *v1; // edx void (__fastcall *v2)(void *); // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] void *Block; // [esp+14h] [ebp-48h] v1 = (void *)a1[2]; *a1 = &off_55FF08; Block = v1; if ( v1 ) { v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); if ( v2 == std::__moneypunct_cache::~__moneypunct_cache ) { std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); operator delete(Block); } else { v2(v1); } } std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4D4ABF: variable 'lpfctx' is possibly undefined // 55FF08: using guessed type int (*off_55FF08)(); //----- (004D4B60) -------------------------------------------------------- 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 v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new(0x54u); v4[1] = 0; *v4 = &off_560704; 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_556C0C; v5 = std::money_base::_S_atoms; v4[13] = std::money_base::_S_default_pattern; v4[3] = 0; v4[6] = &unk_556C0E; v4[7] = 0; v4[8] = &unk_556C0E; v4[9] = 0; v4[10] = &unk_556C0E; 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; } // 53F588: using guessed type char *std::money_base::_S_atoms; // 55AF40: using guessed type int std::money_base::_S_default_pattern; // 560704: using guessed type int (*off_560704)(); //----- (004D4C80) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FF3C; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FF3C: using guessed type int (*off_55FF3C)(); //----- (004D4D20) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55FF3C; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55FF3C: using guessed type int (*off_55FF3C)(); //----- (004D4DC0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FF3C; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FF3C: using guessed type int (*off_55FF3C)(); //----- (004D4E60) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FF3C; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FF3C: using guessed type int (*off_55FF3C)(); //----- (004D4F00) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55FF3C; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55FF3C: using guessed type int (*off_55FF3C)(); //----- (004D4FA0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FF3C; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55FF3C: using guessed type int (*off_55FF3C)(); //----- (004D5040) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { std::moneypunct::~moneypunct(a1); operator delete(a1); } //----- (004D50D0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { void *v1; // edx void (__fastcall *v2)(void *); // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] void *Block; // [esp+14h] [ebp-48h] v1 = (void *)a1[2]; *a1 = &off_55FF3C; Block = v1; if ( v1 ) { v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); if ( v2 == std::__moneypunct_cache::~__moneypunct_cache ) { std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); operator delete(Block); } else { v2(v1); } } std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4D512F: variable 'lpfctx' is possibly undefined // 55FF3C: using guessed type int (*off_55FF3C)(); //----- (004D51D0) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2) { _DWORD *result; // eax result = (_DWORD *)this[2]; if ( !result ) { result = operator new(0xC8u); result[1] = 0; *result = &off_5605E4; 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_559FE2; result[7] = &off_559FE2; result[8] = 5611491; result[9] = &unk_559FE6; result[10] = &off_559FE2; result[11] = "Sunday"; result[12] = "Monday"; result[13] = "Tuesday"; result[14] = "Wednesday"; result[15] = "Thursday"; result[16] = "Friday"; result[17] = "Saturday"; result[18] = &off_55A022; result[19] = &off_55A026; result[20] = &off_55A02A; result[21] = &off_55A02E; result[22] = &off_55A032; result[23] = &off_55A036; result[24] = &off_55A03A; 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_55A094; result[38] = &off_55A098; result[39] = &off_55A09C; result[40] = &off_55A0A0; result[41] = "May"; result[42] = &off_55A0A4; result[43] = &off_55A0A8; result[44] = &off_55A0AC; result[45] = &off_55A0B0; result[46] = &off_55A0B4; result[47] = &off_55A0B8; result[48] = &off_55A0BC; return result; } // 559FE2: using guessed type void *off_559FE2; // 55A022: using guessed type void *off_55A022; // 55A026: using guessed type void *off_55A026; // 55A02A: using guessed type void *off_55A02A; // 55A02E: using guessed type void *off_55A02E; // 55A032: using guessed type void *off_55A032; // 55A036: using guessed type void *off_55A036; // 55A03A: using guessed type void *off_55A03A; // 55A094: using guessed type void *off_55A094; // 55A098: using guessed type void *off_55A098; // 55A09C: using guessed type void *off_55A09C; // 55A0A0: using guessed type void *off_55A0A0; // 55A0A4: using guessed type void *off_55A0A4; // 55A0A8: using guessed type void *off_55A0A8; // 55A0AC: using guessed type void *off_55A0AC; // 55A0B0: using guessed type void *off_55A0B0; // 55A0B4: using guessed type void *off_55A0B4; // 55A0B8: using guessed type void *off_55A0B8; // 55A0BC: using guessed type void *off_55A0BC; // 5605E4: using guessed type int (*off_5605E4)(); //----- (004D5510) -------------------------------------------------------- void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FF70; this[2] = a2; this[4] = std::locale::facet::_S_get_c_name(); std::__timepunct::_M_initialize_timepunct(this, 0); } // 55FF70: using guessed type int (*off_55FF70)(); //----- (004D55B0) -------------------------------------------------------- void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4) { unsigned int v4; // [esp+8h] [ebp-50h] void *Size; // [esp+10h] [ebp-48h] const char *c_name; // [esp+14h] [ebp-44h] this[1] = a4 != 0; *this = &off_55FF70; this[2] = 0; c_name = (const char *)std::locale::facet::_S_get_c_name(); if ( !strcmp(Str1, c_name) ) { this[4] = c_name; } else { v4 = strlen(Str1) + 1; Size = (void *)operator new[](v4); memcpy(Size, Str1, v4); this[4] = Size; } std::__timepunct::_M_initialize_timepunct(this, a2); } // 55FF70: using guessed type int (*off_55FF70)(); //----- (004D5710) -------------------------------------------------------- void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FF70; this[2] = 0; this[4] = std::locale::facet::_S_get_c_name(); std::__timepunct::_M_initialize_timepunct(this, 0); } // 55FF70: using guessed type int (*off_55FF70)(); //----- (004D57B0) -------------------------------------------------------- void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FF70; this[2] = a2; this[4] = std::locale::facet::_S_get_c_name(); std::__timepunct::_M_initialize_timepunct(this, 0); } // 55FF70: using guessed type int (*off_55FF70)(); //----- (004D5850) -------------------------------------------------------- void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4) { unsigned int v4; // [esp+8h] [ebp-50h] void *Size; // [esp+10h] [ebp-48h] const char *c_name; // [esp+14h] [ebp-44h] this[1] = a4 != 0; *this = &off_55FF70; this[2] = 0; c_name = (const char *)std::locale::facet::_S_get_c_name(); if ( !strcmp(Str1, c_name) ) { this[4] = c_name; } else { v4 = strlen(Str1) + 1; Size = (void *)operator new[](v4); memcpy(Size, Str1, v4); this[4] = Size; } std::__timepunct::_M_initialize_timepunct(this, a2); } // 55FF70: using guessed type int (*off_55FF70)(); //----- (004D59B0) -------------------------------------------------------- void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FF70; this[2] = 0; this[4] = std::locale::facet::_S_get_c_name(); std::__timepunct::_M_initialize_timepunct(this, 0); } // 55FF70: using guessed type int (*off_55FF70)(); //----- (004D5A50) -------------------------------------------------------- void __fastcall std::__timepunct::~__timepunct(_DWORD *Block) { std::__timepunct::~__timepunct(Block); operator delete(Block); } //----- (004D5A70) -------------------------------------------------------- void __fastcall std::__timepunct::~__timepunct(_DWORD *a1) { int **v2; // esi void *v3; // esi void (__fastcall *v4)(_DWORD *); // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] struct SjLj_Function_Context *lpfctxa; // [esp+0h] [ebp-5Ch] *a1 = &off_55FF70; v2 = (int **)a1[4]; if ( v2 != std::locale::facet::_S_get_c_name() && v2 ) operator delete[](v2); v3 = (void *)a1[2]; if ( v3 ) { v4 = *(void (__fastcall **)(_DWORD *))(*(_DWORD *)v3 + 4); if ( v4 == std::__timepunct_cache::~__timepunct_cache ) { *(_DWORD *)v3 = &off_5605E4; std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(v3); } else { v4((_DWORD *)a1[2]); } } std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 3)); std::locale::facet::~facet((std::locale::facet *)lpfctxa); } // 4D5ACD: variable 'lpfctx' is possibly undefined // 4D5AEF: variable 'lpfctxa' is possibly undefined // 55FF70: using guessed type int (*off_55FF70)(); // 5605E4: using guessed type int (*off_5605E4)(); //----- (004D5B10) -------------------------------------------------------- void __fastcall std::__timepunct::~__timepunct(_DWORD *a1) { int **v2; // esi void *v3; // esi void (__fastcall *v4)(_DWORD *); // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] struct SjLj_Function_Context *lpfctxa; // [esp+0h] [ebp-5Ch] *a1 = &off_55FF70; v2 = (int **)a1[4]; if ( v2 != std::locale::facet::_S_get_c_name() && v2 ) operator delete[](v2); v3 = (void *)a1[2]; if ( v3 ) { v4 = *(void (__fastcall **)(_DWORD *))(*(_DWORD *)v3 + 4); if ( v4 == std::__timepunct_cache::~__timepunct_cache ) { *(_DWORD *)v3 = &off_5605E4; std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(v3); } else { v4((_DWORD *)a1[2]); } } std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 3)); std::locale::facet::~facet((std::locale::facet *)lpfctxa); } // 4D5B6D: variable 'lpfctx' is possibly undefined // 4D5B8F: variable 'lpfctxa' is possibly undefined // 55FF70: using guessed type int (*off_55FF70)(); // 5605E4: using guessed type int (*off_5605E4)(); //----- (004D5BB0) -------------------------------------------------------- _DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2) { _DWORD *result; // eax result = (_DWORD *)this[2]; if ( !result ) { result = operator new(0xC8u); result[1] = 0; *result = &off_5605F4; 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_55A0C0; result[3] = &off_55A0C0; result[4] = &off_55A0D2; result[5] = &off_55A0D2; result[6] = &unk_55A0E4; result[7] = &unk_55A0E4; result[8] = &off_55A0E6; result[9] = L"PM"; result[10] = &unk_55A0E4; result[11] = &off_55A0F2; result[12] = &off_55A100; result[13] = &off_55A10E; result[14] = &off_55A11E; result[15] = &off_55A132; result[16] = &off_55A144; result[17] = &off_55A152; result[18] = &off_55A164; result[19] = &off_55A16C; result[20] = &off_55A174; result[21] = &off_55A17C; result[22] = &off_55A184; result[23] = &off_55A18C; result[24] = &off_55A194; result[25] = &off_55A19C; result[26] = &off_55A1AC; result[27] = &off_55A1BE; result[28] = &off_55A1CA; result[29] = &off_55A1D6; result[30] = &off_55A1DE; result[31] = &off_55A1E8; result[32] = &off_55A1F2; result[33] = &off_55A200; result[34] = &off_55A214; result[35] = &off_55A224; result[36] = &off_55A236; result[37] = &off_55A248; result[38] = &off_55A250; result[39] = &off_55A258; result[40] = &off_55A260; result[41] = &off_55A1D6; result[42] = &off_55A268; result[43] = &off_55A270; result[44] = &off_55A278; result[45] = &off_55A280; result[46] = &off_55A288; result[47] = &off_55A290; result[48] = &off_55A298; return result; } // 55A0C0: using guessed type void *off_55A0C0; // 55A0D2: using guessed type void *off_55A0D2; // 55A0E6: using guessed type void *off_55A0E6; // 55A0EC: using guessed type wchar_t aPm[3]; // 55A0F2: using guessed type void *off_55A0F2; // 55A100: using guessed type void *off_55A100; // 55A10E: using guessed type void *off_55A10E; // 55A11E: using guessed type void *off_55A11E; // 55A132: using guessed type void *off_55A132; // 55A144: using guessed type void *off_55A144; // 55A152: using guessed type void *off_55A152; // 55A164: using guessed type void *off_55A164; // 55A16C: using guessed type void *off_55A16C; // 55A174: using guessed type void *off_55A174; // 55A17C: using guessed type void *off_55A17C; // 55A184: using guessed type void *off_55A184; // 55A18C: using guessed type void *off_55A18C; // 55A194: using guessed type void *off_55A194; // 55A19C: using guessed type void *off_55A19C; // 55A1AC: using guessed type void *off_55A1AC; // 55A1BE: using guessed type void *off_55A1BE; // 55A1CA: using guessed type void *off_55A1CA; // 55A1D6: using guessed type void *off_55A1D6; // 55A1DE: using guessed type void *off_55A1DE; // 55A1E8: using guessed type void *off_55A1E8; // 55A1F2: using guessed type void *off_55A1F2; // 55A200: using guessed type void *off_55A200; // 55A214: using guessed type void *off_55A214; // 55A224: using guessed type void *off_55A224; // 55A236: using guessed type void *off_55A236; // 55A248: using guessed type void *off_55A248; // 55A250: using guessed type void *off_55A250; // 55A258: using guessed type void *off_55A258; // 55A260: using guessed type void *off_55A260; // 55A268: using guessed type void *off_55A268; // 55A270: using guessed type void *off_55A270; // 55A278: using guessed type void *off_55A278; // 55A280: using guessed type void *off_55A280; // 55A288: using guessed type void *off_55A288; // 55A290: using guessed type void *off_55A290; // 55A298: using guessed type void *off_55A298; // 5605F4: using guessed type int (*off_5605F4)(); //----- (004D5EF0) -------------------------------------------------------- void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FF80; this[2] = a2; this[4] = std::locale::facet::_S_get_c_name(); std::__timepunct::_M_initialize_timepunct(this, 0); } // 55FF80: using guessed type int (*off_55FF80)(); //----- (004D5F90) -------------------------------------------------------- void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4) { unsigned int v4; // [esp+8h] [ebp-50h] void *Size; // [esp+10h] [ebp-48h] const char *c_name; // [esp+14h] [ebp-44h] this[1] = a4 != 0; *this = &off_55FF80; this[2] = 0; c_name = (const char *)std::locale::facet::_S_get_c_name(); if ( !strcmp(Str1, c_name) ) { this[4] = c_name; } else { v4 = strlen(Str1) + 1; Size = (void *)operator new[](v4); memcpy(Size, Str1, v4); this[4] = Size; } std::__timepunct::_M_initialize_timepunct(this, a2); } // 55FF80: using guessed type int (*off_55FF80)(); //----- (004D60F0) -------------------------------------------------------- void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FF80; this[2] = 0; this[4] = std::locale::facet::_S_get_c_name(); std::__timepunct::_M_initialize_timepunct(this, 0); } // 55FF80: using guessed type int (*off_55FF80)(); //----- (004D6190) -------------------------------------------------------- void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FF80; this[2] = a2; this[4] = std::locale::facet::_S_get_c_name(); std::__timepunct::_M_initialize_timepunct(this, 0); } // 55FF80: using guessed type int (*off_55FF80)(); //----- (004D6230) -------------------------------------------------------- void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4) { unsigned int v4; // [esp+8h] [ebp-50h] void *Size; // [esp+10h] [ebp-48h] const char *c_name; // [esp+14h] [ebp-44h] this[1] = a4 != 0; *this = &off_55FF80; this[2] = 0; c_name = (const char *)std::locale::facet::_S_get_c_name(); if ( !strcmp(Str1, c_name) ) { this[4] = c_name; } else { v4 = strlen(Str1) + 1; Size = (void *)operator new[](v4); memcpy(Size, Str1, v4); this[4] = Size; } std::__timepunct::_M_initialize_timepunct(this, a2); } // 55FF80: using guessed type int (*off_55FF80)(); //----- (004D6390) -------------------------------------------------------- void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FF80; this[2] = 0; this[4] = std::locale::facet::_S_get_c_name(); std::__timepunct::_M_initialize_timepunct(this, 0); } // 55FF80: using guessed type int (*off_55FF80)(); //----- (004D6430) -------------------------------------------------------- void __fastcall std::__timepunct::~__timepunct(_DWORD *Block) { std::__timepunct::~__timepunct(Block); operator delete(Block); } //----- (004D6450) -------------------------------------------------------- void __fastcall std::__timepunct::~__timepunct(_DWORD *a1) { int **v2; // esi void *v3; // esi void (__fastcall *v4)(_DWORD *); // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] struct SjLj_Function_Context *lpfctxa; // [esp+0h] [ebp-5Ch] *a1 = &off_55FF80; v2 = (int **)a1[4]; if ( v2 != std::locale::facet::_S_get_c_name() && v2 ) operator delete[](v2); v3 = (void *)a1[2]; if ( v3 ) { v4 = *(void (__fastcall **)(_DWORD *))(*(_DWORD *)v3 + 4); if ( v4 == std::__timepunct_cache::~__timepunct_cache ) { *(_DWORD *)v3 = &off_5605F4; std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(v3); } else { v4((_DWORD *)a1[2]); } } std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 3)); std::locale::facet::~facet((std::locale::facet *)lpfctxa); } // 4D64AD: variable 'lpfctx' is possibly undefined // 4D64CF: variable 'lpfctxa' is possibly undefined // 55FF80: using guessed type int (*off_55FF80)(); // 5605F4: using guessed type int (*off_5605F4)(); //----- (004D64F0) -------------------------------------------------------- void __fastcall std::__timepunct::~__timepunct(_DWORD *a1) { int **v2; // esi void *v3; // esi void (__fastcall *v4)(_DWORD *); // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] struct SjLj_Function_Context *lpfctxa; // [esp+0h] [ebp-5Ch] *a1 = &off_55FF80; v2 = (int **)a1[4]; if ( v2 != std::locale::facet::_S_get_c_name() && v2 ) operator delete[](v2); v3 = (void *)a1[2]; if ( v3 ) { v4 = *(void (__fastcall **)(_DWORD *))(*(_DWORD *)v3 + 4); if ( v4 == std::__timepunct_cache::~__timepunct_cache ) { *(_DWORD *)v3 = &off_5605F4; std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(v3); } else { v4((_DWORD *)a1[2]); } } std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 3)); std::locale::facet::~facet((std::locale::facet *)lpfctxa); } // 4D654D: variable 'lpfctx' is possibly undefined // 4D656F: variable 'lpfctxa' is possibly undefined // 55FF80: using guessed type int (*off_55FF80)(); // 5605F4: using guessed type int (*off_5605F4)(); //----- (004D6590) -------------------------------------------------------- void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const char *a3) { int v3; // [esp+5Fh] [ebp-9h] BYREF *a1 = &off_55FF90; std::string::string((char *)this, (int)&v3); } // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); //----- (004D6620) -------------------------------------------------------- void __thiscall std::logic_error::logic_error(_DWORD *this, int a2) { unsigned int v2; // [esp+8h] [ebp-50h] *this = &off_55FF90; std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); } // 4D6674: variable 'v2' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); //----- (004D66B0) -------------------------------------------------------- void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const std::logic_error *a3) { const std::string *v3; // [esp+4h] [ebp-58h] *a1 = &off_55FF90; std::string::string(a1 + 1, (std::logic_error *)((char *)this + 4), v3); } // 4D66EE: variable 'v3' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); //----- (004D6710) -------------------------------------------------------- void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const std::string *a3) { const std::string *v3; // [esp+4h] [ebp-54h] *a1 = &off_55FF90; std::string::string(a1 + 1, this, v3); } // 4D6758: variable 'v3' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); //----- (004D6790) -------------------------------------------------------- void __fastcall std::logic_error::~logic_error(void *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] std::logic_error::~logic_error(Block); operator delete(a1); } // 4D6796: variable 'Block' is possibly undefined //----- (004D67B0) -------------------------------------------------------- void __cdecl std::logic_error::~logic_error(std::exception *a1) { _DWORD *v1; // ecx int v2; // eax int v3; // ecx int v4; // eax int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v2 = _CRT_MT; *v1 = &off_55FF90; v3 = v1[1]; if ( v2 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v4 = *(_DWORD *)(v3 - 4); *(_DWORD *)(v3 - 4) = v4 - 1; if ( v4 > 0 ) { LABEL_3: std::exception::~exception(a1); return; } } std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); std::exception::~exception(a1); } // 4D67BB: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 4D67B0: using guessed type int var_D[3]; //----- (004D6810) -------------------------------------------------------- int *__thiscall std::logic_error::operator=(int *this, int a2) { const std::string *v4; // [esp+4h] [ebp-58h] std::string::assign(this + 1, (std::string *)(a2 + 4), v4); return this; } // 4D6848: variable 'v4' is possibly undefined //----- (004D6870) -------------------------------------------------------- int *__thiscall std::logic_error::operator=(int *this, int a2) { const std::string *v4; // [esp+4h] [ebp-58h] std::string::assign(this + 1, (std::string *)(a2 + 4), v4); return this; } // 4D68A8: variable 'v4' is possibly undefined //----- (004D68D0) -------------------------------------------------------- void __userpurge std::range_error::range_error(_DWORD *a1@, std::range_error *this, const char *a3) { int v4; // [esp+5Fh] [ebp-9h] BYREF *a1 = &off_5601E8; std::string::string(a1 + 1, (char *)this, (int)&v4); *a1 = &off_55FFA4; } // 55FFA4: using guessed type void (__cdecl *off_55FFA4)(std::range_error *__hidden this); // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); //----- (004D6960) -------------------------------------------------------- void __thiscall std::range_error::range_error(_DWORD *this, int a2) { unsigned int v2; // [esp+8h] [ebp-50h] *this = &off_5601E8; std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); *this = &off_55FFA4; } // 4D69B4: variable 'v2' is possibly undefined // 55FFA4: using guessed type void (__cdecl *off_55FFA4)(std::range_error *__hidden this); // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); //----- (004D6A00) -------------------------------------------------------- void __userpurge std::range_error::range_error(_DWORD *a1@, std::range_error *this, const std::string *a3) { const std::string *v3; // [esp+4h] [ebp-54h] *a1 = &off_5601E8; std::string::string(a1 + 1, this, v3); *a1 = &off_55FFA4; } // 4D6A48: variable 'v3' is possibly undefined // 55FFA4: using guessed type void (__cdecl *off_55FFA4)(std::range_error *__hidden this); // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); //----- (004D6A90) -------------------------------------------------------- void __fastcall std::range_error::~range_error(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_55FFA4; std::runtime_error::~runtime_error(Block); operator delete(a1); } // 4D6A9C: variable 'Block' is possibly undefined // 55FFA4: using guessed type void (__cdecl *off_55FFA4)(std::range_error *__hidden this); //----- (004D6AB0) -------------------------------------------------------- void __cdecl std::range_error::~range_error(std::exception *a1) { _DWORD *v1; // ecx int v2; // eax int v3; // ecx int v4; // eax int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v2 = _CRT_MT; *v1 = &off_5601E8; v3 = v1[1]; if ( v2 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v4 = *(_DWORD *)(v3 - 4); *(_DWORD *)(v3 - 4) = v4 - 1; if ( v4 > 0 ) { LABEL_3: std::exception::~exception(a1); return; } } std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); std::exception::~exception(a1); } // 4D6ABB: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 4D6AB0: using guessed type int var_D[3]; //----- (004D6B10) -------------------------------------------------------- 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; } //----- (004D6B30) -------------------------------------------------------- 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; } //----- (004D6B50) -------------------------------------------------------- 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; } //----- (004D6B70) -------------------------------------------------------- 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; } } //----- (004D6BB4) -------------------------------------------------------- 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; } //----- (004D6BD4) -------------------------------------------------------- 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; } //----- (004D6C00) -------------------------------------------------------- unsigned __int8 *__usercall std::`anonymous namespace'::utf16_span@( unsigned __int8 *a1@, unsigned __int8 *a2@, unsigned int a3@, unsigned int a4, char a5) { unsigned int v6; // ebp unsigned int v7; // esi unsigned int v8; // ebx unsigned int utf8_code; // eax unsigned __int8 *v11[6]; // [esp+8h] [ebp-18h] BYREF v11[0] = a1; v6 = a4; v11[1] = a2; if ( (a5 & 4) != 0 && (unsigned int)(a2 - a1) > 2 && *(_WORD *)a1 == std::`anonymous namespace'::utf8_bom && a1[2] == 0xBF ) { v11[0] = a1 + 3; } if ( a3 > 1 ) { v7 = 0; v8 = 1; while ( 1 ) { utf8_code = std::`anonymous namespace'::read_utf8_code_point(v11, a4); if ( a4 < utf8_code ) return v11[0]; if ( utf8_code <= 0xFFFF ) v8 = v7; v7 = v8 + 1; v8 += 2; if ( v8 >= a3 ) goto LABEL_10; } } v8 = 1; LABEL_10: if ( a3 != v8 ) return v11[0]; if ( a4 >= 0xFFFF ) v6 = 0xFFFF; std::`anonymous namespace'::read_utf8_code_point(v11, v6); return v11[0]; } // 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; //----- (004D6CD0) -------------------------------------------------------- int __cdecl std::`anonymous namespace'::__x86_rdrand() { bool v0; // cf int v1; // edx int v4; // [esp+1Ch] [ebp-10h] v0 = 0; v1 = 100; while ( 1 ) { __asm { rdrand eax } v4 = _EAX; if ( v0 ) _EAX = 1; if ( _EAX ) break; v0 = v1-- == 0; if ( !v1 ) std::__throw_runtime_error((std::runtime_error *)"random_device: rdrand failed"); } return v4; } //----- (004D6D10) -------------------------------------------------------- int __cdecl std::`anonymous namespace'::__x86_rdseed(std::_anonymous_namespace_ *this) { bool v1; // cf int v3; // eax v1 = 0; __asm { rdseed eax } v3 = 99; do { _mm_pause(); __asm { rdseed edx } if ( v1 ) return _EDX; v1 = v3-- == 0; } while ( v3 ); if ( !this ) std::__throw_runtime_error((std::runtime_error *)"random_device: rdseed failed"); return ((int (__cdecl *)(_DWORD))this)(0); } //----- (004D6D70) -------------------------------------------------------- int __cdecl std::`anonymous namespace'::__winxp_rand_s() { int v1[4]; // [esp+1Ch] [ebp-10h] BYREF if ( _rand_s((int)v1) ) std::__throw_runtime_error((std::runtime_error *)"random_device: rand_s failed"); return v1[0]; } // 53E258: using guessed type int (__cdecl *_rand_s)(int); // 4D6D70: using guessed type int var_10[4]; //----- (004D6DA0) -------------------------------------------------------- int __usercall std::`anonymous namespace'::read_utf16_bom@(int a1@, int *a2@) { int result; // eax _WORD *v4; // ebx result = *a2; if ( (*a2 & 4) != 0 ) { v4 = *(_WORD **)a1; if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) > 1 ) { if ( *v4 == 0xFFFE ) { result &= ~1u; *(_DWORD *)a1 = v4 + 1; *a2 = result; } else if ( *v4 == 0xFEFF ) { result |= 1u; *(_DWORD *)a1 = v4 + 1; *a2 = result; } } } return result; } //----- (004D6DF0) -------------------------------------------------------- int __cdecl std::`anonymous namespace'::__x86_rdseed_rdrand() { bool v0; // cf int v2; // eax v0 = 0; __asm { rdseed eax } v2 = 99; do { _mm_pause(); __asm { rdseed edx } if ( v0 ) return _EDX; v0 = v2-- == 0; } while ( v2 ); return std::`anonymous namespace'::__x86_rdrand(); } //----- (004D6E30) -------------------------------------------------------- int __usercall std::`anonymous namespace'::read_utf8_code_point@( unsigned __int8 **a1@, unsigned int a2@) { unsigned __int8 *v2; // edx unsigned int v3; // edi int v4; // ecx unsigned int v5; // esi unsigned __int8 v7; // di unsigned __int8 v8; // di unsigned __int8 v10; // [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; v10 = v2[2]; if ( (v10 & 0xC0) == 0x80 && (v2[3] & 0xC0) == 0x80 ) { v5 = (v10 << 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 = (v7 << 6) + (v4 << 12) + 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; } //----- (004D6FF0) -------------------------------------------------------- int __usercall std::`anonymous namespace'::read_utf8_code_point@( unsigned __int8 **a1@, unsigned int a2@) { unsigned __int8 *v2; // edx unsigned int v3; // edi int v4; // ecx unsigned int v5; // esi unsigned __int8 v7; // di unsigned __int8 v8; // di unsigned __int8 v10; // [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; v10 = v2[2]; if ( (v10 & 0xC0) == 0x80 && (v2[3] & 0xC0) == 0x80 ) { v5 = (v10 << 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 = (v7 << 6) + (v4 << 12) + 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; } //----- (004D71B0) -------------------------------------------------------- int __usercall std::`anonymous namespace'::write_utf8_code_point@(int a1@, unsigned int a2@) { _BYTE *v3; // esi int v4; // ecx int result; // eax _BYTE *v6; // ecx int v7; // esi _BYTE *v8; // ecx if ( a2 > 0x7FF ) { if ( a2 > 0xFFFF ) { result = 0; if ( a2 <= 0x10FFFF ) { v8 = *(_BYTE **)a1; if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) > 3 ) { *v8 = (a2 >> 18) - 16; v8[1] = ((a2 >> 12) & 0x3F) + 0x80; v8[2] = ((a2 >> 6) & 0x3F) + 0x80; *(_DWORD *)a1 = v8 + 4; result = 1; v8[3] = (a2 & 0x3F) + 0x80; } } } else { v6 = *(_BYTE **)a1; v7 = *(_DWORD *)(a1 + 4); result = 0; if ( (unsigned int)(v7 - (_DWORD)v6) > 2 ) { *v6 = (a2 >> 12) - 32; v6[1] = ((a2 >> 6) & 0x3F) + 0x80; *(_DWORD *)a1 = v6 + 3; result = 1; v6[2] = (a2 & 0x3F) + 0x80; } } } else { v3 = *(_BYTE **)a1; v4 = *(_DWORD *)(a1 + 4); result = 0; if ( (unsigned int)(v4 - (_DWORD)v3) > 1 ) { *v3 = (a2 >> 6) - 64; *(_DWORD *)a1 = v3 + 2; result = 1; v3[1] = (a2 & 0x3F) + 0x80; } } return result; } //----- (004D7290) -------------------------------------------------------- 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 ( a1[1] == v3 ) 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; } //----- (004D7380) -------------------------------------------------------- int __usercall std::`anonymous namespace'::ucs2_in@( unsigned __int16 **a1@, int *a2@, unsigned int a3@, char a4) { int v7; // eax unsigned __int16 *v8; // edx int v9; // ecx unsigned __int16 v10; // ax unsigned __int16 v11; // di int v13; // [esp+0h] [ebp-20h] int v14; // [esp+4h] [ebp-1Ch] unsigned __int16 *v15; // [esp+8h] [ebp-18h] unsigned int v16; // [esp+Ch] [ebp-14h] std::`anonymous namespace'::read_utf16_bom((int)a1, (int *)&a4); v7 = 0xFFFF; v8 = *a1; if ( a3 < 0xFFFF ) v7 = a3; v16 = v7; v15 = a1[1]; if ( !((unsigned int)((char *)v15 - (char *)v8) >> 1) ) return 0; v9 = *a2; v13 = a2[1]; v14 = a4 & 1; while ( v13 != v9 ) { v10 = *v8; v11 = __ROL2__(*v8, 8); if ( !v14 ) v10 = v11; if ( (unsigned __int16)(v10 + 10240) <= 0x7FFu || v16 < v10 ) return 2; ++v8; v9 += 2; *a1 = v8; *a2 = v9; *(_WORD *)(v9 - 2) = v10; if ( !((unsigned int)((char *)v15 - (char *)v8) >> 1) ) return 0; } return 1; } //----- (004D7450) -------------------------------------------------------- int __usercall std::`anonymous namespace'::ucs2_out@( unsigned __int16 **a1@, _DWORD *a2@, unsigned int a3@, char a4) { unsigned __int16 *v5; // ebp unsigned __int16 *v6; // eax _WORD *v8; // edx unsigned int v9; // eax __int16 v10; // cx __int16 v11; // ax unsigned __int16 *v12; // eax v5 = a1[1]; v6 = *a1; if ( v5 == v6 ) return 0; v8 = (_WORD *)*a2; while ( 1 ) { if ( !((unsigned int)(a2[1] - (_DWORD)v8) >> 1) ) return v6 != v5; v9 = *v6; v10 = v9; if ( v9 - 55296 <= 0x3FF || v9 > a3 ) break; v11 = __ROL2__(v9, 8); if ( (a4 & 1) == 0 ) v10 = v11; *v8 = v10; v5 = a1[1]; v8 = (_WORD *)(*a2 + 2); v12 = *a1; *a2 = v8; v6 = v12 + 1; *a1 = v6; if ( v5 == v6 ) return 0; } return 2; } //----- (004D74F0) -------------------------------------------------------- int __usercall std::`anonymous namespace'::utf16_in@( unsigned __int8 **a1@, char **a2@, unsigned int a3@, char a4, int a5) { unsigned __int8 *v8; // edi char *v9; // edi __int16 v10; // cx unsigned int utf8_code; // eax unsigned __int8 *v12; // ecx char *v13; // edx unsigned int v15; // ecx __int16 v16; // ax __int16 v17; // cx unsigned __int8 *v18; // ecx unsigned __int8 *v19; // [esp+0h] [ebp-1Ch] unsigned __int8 *v20; // [esp+4h] [ebp-18h] v20 = a1[1]; v8 = *a1; v19 = *a1; if ( (a4 & 4) != 0 && (unsigned int)(v20 - v8) > 2 && *(_WORD *)v8 == std::`anonymous namespace'::utf8_bom && v8[2] == 0xBF ) { v19 += 3; *a1 = v19; } if ( v19 != v20 ) { v9 = a2[1]; while ( *a2 != v9 ) { utf8_code = std::`anonymous namespace'::read_utf8_code_point(a1, a3); if ( utf8_code == -2 ) return a5 + 1; if ( a3 < utf8_code ) return 2; v9 = a2[1]; v13 = *a2; if ( utf8_code <= 0xFFFF ) { if ( v13 == v9 ) goto LABEL_13; v10 = __ROL2__(utf8_code, 8); if ( (a4 & 1) == 0 ) LOWORD(utf8_code) = v10; *a2 = v13 + 2; v12 = *a1; *(_WORD *)v13 = utf8_code; v19 = v12; v20 = a1[1]; if ( v20 == v12 ) return 0; } else { if ( (unsigned int)(v9 - v13) <= 2 ) { LABEL_13: *a1 = v19; a1[1] = v20; return 1; } v15 = utf8_code >> 10; v16 = (utf8_code & 0x3FF) - 9216; v17 = v15 - 10304; if ( (a4 & 1) == 0 ) { v17 = __ROL2__(v17, 8); v16 = __ROL2__(v16, 8); } *(_WORD *)v13 = v17; *a2 = v13 + 4; v18 = *a1; *((_WORD *)v13 + 1) = v16; v19 = v18; v20 = a1[1]; if ( v20 == v18 ) return 0; } } } return 0; } // 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; //----- (004D7660) -------------------------------------------------------- int __usercall std::`anonymous namespace'::utf16_out@( unsigned __int16 **a1@, _BYTE **a2@, unsigned int a3@, int a4) { unsigned __int16 *v5; // edx unsigned __int16 *v7; // eax unsigned int v8; // ebp int v10; // eax int v11; // ebp unsigned int v12; // edx unsigned __int16 *v13; // edx v5 = a1[1]; v7 = *a1; v8 = (char *)v5 - (char *)v7; if ( v7 == v5 ) return 0; while ( 1 ) { v12 = *v7; if ( v12 - 55296 <= 0x3FF ) { if ( a4 == 1 ) return 2; if ( v8 <= 2 ) return 0; v10 = v7[1]; if ( (unsigned int)(v10 - 56320) > 0x3FF ) return 2; v11 = 2; v12 = v10 + (v12 << 10) - 56613888; if ( v12 > a3 ) return 2; } else { if ( v12 - 56320 <= 0x3FF ) return 2; v11 = 1; if ( v12 > a3 ) return 2; } if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(a2, v12) ) break; v13 = a1[1]; v7 = &(*a1)[v11]; *a1 = v7; v8 = (char *)v13 - (char *)v7; if ( v13 == v7 ) return 0; } return 1; } //----- (004D7720) -------------------------------------------------------- void __fastcall std::_Vector_base::~_Vector_base(void **a1) { if ( *a1 ) operator delete(*a1); } // 4D7720: could not find valid save-restore pair for ebp //----- (004D7740) -------------------------------------------------------- int __fastcall std::__basic_file::fd(FILE **a1) { return fileno(*a1); } //----- (004D77D0) -------------------------------------------------------- int __fastcall std::__basic_file::file(int a1) { return *(_DWORD *)a1; } //----- (004D77E0) -------------------------------------------------------- _BYTE *__thiscall std::__basic_file::open(_BYTE *this, char *FileName, char a3, int a4) { unsigned int v4; // eax const char *Mode; // eax FILE *v7; // eax v4 = (a3 & 0x3D) - 1; if ( v4 > 0x3B ) return 0; Mode = (&CSWTCH_18)[v4]; if ( !Mode ) return 0; if ( *(_DWORD *)this ) return 0; v7 = fopen64(FileName, Mode); *(_DWORD *)this = v7; if ( !v7 ) return 0; this[4] = 1; return this; } //----- (004D7840) -------------------------------------------------------- FILE *__thiscall std::__basic_file::open(_BYTE *this, wchar_t *FileName, char a3) { FILE *v4; // ecx unsigned int v5; // eax char *v6; // edx char *v7; // edx wchar_t *v8; // esi char v9; // al FILE *v10; // eax wchar_t Mode[2]; // [esp+18h] [ebp-14h] BYREF int v13; // [esp+1Ch] [ebp-10h] v4 = 0; v5 = (a3 & 0x3D) - 1; if ( v5 > 0x3B ) return v4; v6 = (&CSWTCH_18)[v5]; if ( !v6 ) return v4; v4 = *(FILE **)this; if ( !*(_DWORD *)this ) { *(_DWORD *)Mode = 0; v7 = v6 + 1; v8 = Mode; v13 = 0; v9 = *(v7 - 1); do { while ( 1 ) { while ( 1 ) { while ( v9 == 98 ) { ++v7; *v8++ = 98; v9 = *(v7 - 1); if ( !v9 ) goto LABEL_10; } if ( v9 > 98 ) break; if ( v9 == 43 ) { ++v7; *v8++ = 43; v9 = *(v7 - 1); if ( !v9 ) goto LABEL_10; } else { if ( v9 != 97 ) return v4; ++v7; *v8++ = 97; v9 = *(v7 - 1); if ( !v9 ) goto LABEL_10; } } if ( v9 != 114 ) break; ++v7; *v8++ = 114; v9 = *(v7 - 1); if ( !v9 ) goto LABEL_10; } if ( v9 != 119 ) return v4; ++v7; *v8++ = 119; v9 = *(v7 - 1); } while ( v9 ); LABEL_10: v10 = __wfopen(FileName, Mode); *(_DWORD *)this = v10; v4 = v10; if ( v10 ) { this[4] = 1; return (FILE *)this; } return v4; } return 0; } //----- (004D7990) -------------------------------------------------------- int __fastcall std::__basic_file::sync(FILE **a1) { return fflush(*a1); } //----- (004D79B0) -------------------------------------------------------- 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; } } //----- (004D7A10) -------------------------------------------------------- int __thiscall std::__basic_file::xsgetn(FILE **this, void *DstBuf, unsigned int MaxCharCount) { int FileHandle; // eax int v5; // ebp do { FileHandle = std::__basic_file::fd(this); v5 = read(FileHandle, DstBuf, MaxCharCount); } while ( v5 == -1 && *__errno() == 4 ); return v5; } //----- (004D7A60) -------------------------------------------------------- unsigned int __thiscall std::__basic_file::xsputn(FILE **this, char *a2, unsigned int a3) { int FileHandle; // esi unsigned int MaxCharCount; // ebp int v6; // eax FileHandle = std::__basic_file::fd(this); MaxCharCount = a3; while ( 1 ) { while ( 1 ) { v6 = write(FileHandle, a2, MaxCharCount); if ( v6 != -1 ) break; if ( *__errno() != 4 ) return a3 - MaxCharCount; } MaxCharCount -= v6; if ( !MaxCharCount ) break; a2 += v6; } return a3; } //----- (004D7AD0) -------------------------------------------------------- __int64 __thiscall std::__basic_file::seekoff(FILE **this, __int64 a2, int a3) { int v3; // eax v3 = fileno(*this); return lseek64(v3, a2, a3); } //----- (004D7B75) -------------------------------------------------------- #error "4D7BA1: call analysis failed (funcsize=14)" //----- (004D7BB0) -------------------------------------------------------- _BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, FILE *Stream, int a3) { int v4; // ebp _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; } //----- (004D7C20) -------------------------------------------------------- FILE **__thiscall std::__basic_file::sys_open(FILE **this, int FileHandle, char a3) { unsigned int v3; // eax const char *Format; // eax FILE *v6; // eax FILE **v7; // [esp+18h] [ebp-44h] v7 = this; v3 = (a3 & 0x3D) - 1; if ( v3 > 0x3B ) return 0; Format = (&CSWTCH_18)[v3]; if ( !Format ) return 0; if ( *this ) return 0; v6 = fdopen(FileHandle, Format); *v7 = v6; if ( !v6 ) return 0; *((_BYTE *)v7 + 4) = 1; if ( !FileHandle ) setvbuf(v6, 0, 4, 0); return v7; } //----- (004D7D10) -------------------------------------------------------- int __thiscall std::__basic_file::xsputn_2(FILE **this, char *a2, unsigned int a3, char *a4, unsigned int a5) { int FileHandle; // esi unsigned int MaxCharCount; // ebp int v9; // eax unsigned int v11; // ebp int v12; // eax FileHandle = std::__basic_file::fd(this); if ( a3 ) { v11 = a3; while ( 1 ) { while ( 1 ) { v12 = write(FileHandle, a2, v11); if ( v12 != -1 ) break; if ( *__errno() != 4 ) return a3 - v11; } v11 -= v12; if ( !v11 ) break; a2 += v12; } FileHandle = std::__basic_file::fd(this); } MaxCharCount = a5; do { while ( 1 ) { v9 = write(FileHandle, a4, MaxCharCount); if ( v9 == -1 ) break; MaxCharCount -= v9; if ( !MaxCharCount ) return a3 + a5; a4 += v9; } } while ( *__errno() == 4 ); a5 -= MaxCharCount; return a3 + a5; } //----- (004D7DE0) -------------------------------------------------------- int __fastcall std::__basic_file::showmanyc(FILE **a1) { int FileHandle; // eax unsigned int st_size_high; // edi unsigned int st_size; // esi int v6; // eax int v7; // esi signed __int64 v8; // kr08_8 struct _stat64 Stat; // [esp+18h] [ebp-54h] BYREF FileHandle = std::__basic_file::fd(a1); if ( __fstat64(FileHandle, &Stat) || (Stat.st_mode & 0xF000) != 0x8000 ) return 0; st_size_high = HIDWORD(Stat.st_size); st_size = Stat.st_size; v6 = std::__basic_file::fd(a1); v8 = __PAIR64__(st_size_high, st_size) - lseek64(v6, 0LL, 1); v7 = v8; if ( v8 > 0x7FFFFFFF ) return 0x7FFFFFFF; return v7; } //----- (004D7E70) -------------------------------------------------------- void __thiscall std::__basic_file::__basic_file(_BYTE *this, int a2) { *(_DWORD *)this = 0; this[4] = 0; } //----- (004D7E80) -------------------------------------------------------- FILE *__fastcall std::__basic_file::~__basic_file(int a1) { FILE *result; // eax result = *(FILE **)a1; if ( *(_DWORD *)a1 ) { if ( *(_BYTE *)(a1 + 4) ) return (FILE *)fclose(*(FILE **)a1); } return result; } //----- (004D7EA0) -------------------------------------------------------- void __thiscall std::__cow_string::__cow_string(_DWORD *this, _DWORD *a2) { *this = *a2; *a2 = std::string::_S_construct(0, 0); } //----- (004D7F10) -------------------------------------------------------- int __userpurge std::__cow_string::__cow_string@( _DWORD *a1@, std::__cow_string *this, size_t a3, unsigned int a4) { int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF return std::string::string(a1, (unsigned __int8 *)this, a3, (int)v5); } // 4D7F10: using guessed type int var_D[3]; //----- (004D7F40) -------------------------------------------------------- int __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, *(_DWORD *)(a2 + 4), v3); } // 4D7F53: variable 'v3' is possibly undefined //----- (004D7F70) -------------------------------------------------------- void __userpurge std::__cow_string::__cow_string( _DWORD *a1@, std::__cow_string *this, const std::__cow_string *a3) { const std::string *v3; // [esp+4h] [ebp-58h] std::string::string(a1, this, v3); } // 4D7FA4: variable 'v3' is possibly undefined //----- (004D7FD0) -------------------------------------------------------- _DWORD *__fastcall std::__cow_string::__cow_string(_DWORD *a1) { _DWORD *result; // eax result = std::string::_S_construct(0, 0); *a1 = result; return result; } //----- (004D8000) -------------------------------------------------------- void __fastcall std::__cow_string::~__cow_string(int *a1) { int v1; // ecx int v2; // eax int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF v1 = *a1; if ( !_CRT_MT ) { v2 = *(_DWORD *)(v1 - 4); *(_DWORD *)(v1 - 4) = v2 - 1; if ( v2 > 0 ) return; LABEL_5: std::string::_Rep::_M_destroy((void *)(v1 - 12), (int)v3); return; } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 53E1E4: using guessed type int _CRT_MT; // 4D8000: using guessed type int var_D[3]; //----- (004D8050) -------------------------------------------------------- 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; } // 4D805D: variable 'v4' is possibly undefined //----- (004D8070) -------------------------------------------------------- int *__thiscall std::__cow_string::operator=(int *this, std::string *a2) { const std::string *v4; // [esp+4h] [ebp-58h] std::string::assign(this, a2, v4); return this; } // 4D80A4: variable 'v4' is possibly undefined //----- (004D80C0) -------------------------------------------------------- void __thiscall std::__shared_ptr::__shared_ptr( _DWORD *this, _DWORD *a2) { int v2; // eax v2 = a2[1]; *this = *a2; this[1] = v2; if ( v2 ) std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v2); } //----- (004D80E4) -------------------------------------------------------- void __thiscall std::__shared_ptr::__shared_ptr( int *this, int *a2) { int *v2; // ecx int v3; // eax v2 = this + 1; v3 = a2[1]; *(v2 - 1) = *a2; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v2, v3); } //----- (004D8100) -------------------------------------------------------- int __thiscall std::__shared_ptr::__shared_ptr( _DWORD *this, _DWORD *a2) { int result; // eax result = a2[1]; *this = *a2; this[1] = result; if ( result ) { if ( _CRT_MT ) _InterlockedIncrement((volatile signed __int32 *)(result + 4)); else ++*(_DWORD *)(result + 4); } return result; } // 53E1E4: using guessed type int _CRT_MT; //----- (004D8130) -------------------------------------------------------- _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; } //----- (004D8190) -------------------------------------------------------- _BYTE *__userpurge std::__sso_string::__sso_string@( int a1@, std::__sso_string *this, size_t Size, unsigned int a4) { _BYTE *result; // eax char v6; // dl unsigned int v7; // esi size_t v8[4]; // [esp+1Ch] [ebp-10h] BYREF result = (_BYTE *)(a1 + 8); *(_DWORD *)a1 = a1 + 8; if ( (std::__sso_string *)((char *)this + Size) ) { if ( !this ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); } v8[0] = Size; if ( Size > 0xF ) { result = std::string::_M_create(v8, 0); *(_DWORD *)a1 = result; *(_DWORD *)(a1 + 8) = v8[0]; } else { if ( Size == 1 ) { v6 = *(_BYTE *)this; *(_DWORD *)(a1 + 4) = 1; *(_BYTE *)(a1 + 8) = v6; *(_BYTE *)(a1 + 9) = 0; return result; } if ( !Size ) { *(_DWORD *)(a1 + 4) = 0; *result = 0; return result; } } memcpy(result, this, Size); v7 = v8[0]; result = *(_BYTE **)a1; *(_DWORD *)(a1 + 4) = v8[0]; result[v7] = 0; return result; } // 4D8190: using guessed type size_t var_10[4]; //----- (004D8250) -------------------------------------------------------- _BYTE *__thiscall std::__sso_string::__sso_string(char *this, int a2) { _BYTE *result; // eax char *Src; // edi size_t Size; // esi char v6; // dl unsigned int v7; // esi unsigned int v8[4]; // [esp+1Ch] [ebp-10h] BYREF result = this + 8; *(_DWORD *)this = this + 8; Src = *(char **)a2; Size = *(_DWORD *)(a2 + 4); if ( Size + *(_DWORD *)a2 ) { if ( !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); } v8[0] = *(_DWORD *)(a2 + 4); if ( Size > 0xF ) { result = std::string::_M_create(v8, 0); *(_DWORD *)this = result; *((_DWORD *)this + 2) = v8[0]; } else { if ( Size == 1 ) { v6 = *Src; *((_DWORD *)this + 1) = 1; this[8] = v6; this[9] = 0; return result; } if ( !Size ) { *((_DWORD *)this + 1) = 0; *result = 0; return result; } } memcpy(result, Src, Size); v7 = v8[0]; result = *(_BYTE **)this; *((_DWORD *)this + 1) = v8[0]; result[v7] = 0; return result; } // 4D8250: using guessed type unsigned int var_10[4]; //----- (004D8310) -------------------------------------------------------- void __userpurge std::__sso_string::__sso_string( _DWORD *a1@, std::__sso_string *this, const std::__sso_string *a3) { void *v4; // edx _BYTE *v5; // edi size_t v6; // esi void *v7; // eax size_t v8[7]; // [esp+5Ch] [ebp+40h] BYREF v4 = a1 + 2; *a1 = a1 + 2; v5 = *(_BYTE **)this; v6 = *((_DWORD *)this + 1); if ( v6 + *(_DWORD *)this && !v5 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v8[0] = *((_DWORD *)this + 1); if ( v6 > 0xF ) { v7 = std::string::_M_create(v8, 0); *a1 = v7; v4 = v7; a1[2] = v8[0]; goto LABEL_10; } if ( v6 != 1 ) { if ( !v6 ) goto LABEL_6; LABEL_10: memcpy(v4, v5, v6); v6 = v8[0]; v4 = (void *)*a1; goto LABEL_6; } *((_BYTE *)a1 + 8) = *v5; LABEL_6: a1[1] = v6; *((_BYTE *)v4 + v6) = 0; } // 4D8310: using guessed type size_t anonymous_0[7]; //----- (004D83F0) -------------------------------------------------------- _BYTE *__userpurge std::__sso_string::__sso_string@(int a1@, std::__sso_string **this, const std::string *a3) { unsigned int v4; // [esp+8h] [ebp-14h] return std::__sso_string::__sso_string(a1, *this, *((_DWORD *)*this - 3), v4); } // 4D8403: variable 'v4' is possibly undefined //----- (004D8420) -------------------------------------------------------- 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; } //----- (004D8440) -------------------------------------------------------- void __fastcall std::__sso_string::~__sso_string(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (004D8470) -------------------------------------------------------- _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; } //----- (004D8520) -------------------------------------------------------- void *__thiscall std::__sso_string::operator=(void *this, int a2) { std::string::_M_assign((int)this, a2); return this; } //----- (004D8570) -------------------------------------------------------- void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3) { std::ctype::ctype(this, 0, 0, a3); *this = &off_55FFB8; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 55FFB8: using guessed type int (*off_55FFB8)(); //----- (004D8680) -------------------------------------------------------- void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) { std::ctype_byname::ctype_byname(this, *a2, a3); } //----- (004D8690) -------------------------------------------------------- void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) { std::ctype_byname::ctype_byname(this, *a2, a3); } //----- (004D86A0) -------------------------------------------------------- void __fastcall std::ctype_byname::~ctype_byname(_DWORD *Block) { *Block = &off_55FFB8; std::ctype::~ctype((int)Block); operator delete(Block); } // 55FFB8: using guessed type int (*off_55FFB8)(); //----- (004D86C0) -------------------------------------------------------- void __fastcall std::ctype_byname::~ctype_byname(int a1) { *(_DWORD *)a1 = &off_55FFB8; std::ctype::~ctype(a1); } // 55FFB8: using guessed type int (*off_55FFB8)(); //----- (004D86D0) -------------------------------------------------------- void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_560A98; this[2] = std::locale::facet::_S_get_c_locale(); *((_BYTE *)this + 12) = 0; std::ctype::_M_initialize_ctype((int)this); *this = &off_55FFE8; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); std::ctype::_M_initialize_ctype((int)this); } } } // 55FFE8: using guessed type int (*off_55FFE8)(); // 560A98: using guessed type int (*off_560A98)(); //----- (004D8830) -------------------------------------------------------- void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) { std::ctype_byname::ctype_byname(this, *a2, a3); } //----- (004D8840) -------------------------------------------------------- void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) { std::ctype_byname::ctype_byname(this, *a2, a3); } //----- (004D8850) -------------------------------------------------------- void __fastcall std::ctype_byname::~ctype_byname(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_560A98; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); *Block = &unk_56089C; std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 4D8894: variable 'lpfctx' is possibly undefined // 560A98: using guessed type int (*off_560A98)(); //----- (004D88B0) -------------------------------------------------------- void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560A98; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); *a1 = &unk_56089C; std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4D88F4: variable 'lpfctx' is possibly undefined // 560A98: using guessed type int (*off_560A98)(); //----- (004D8910) -------------------------------------------------------- void __userpurge std::domain_error::domain_error(_DWORD *a1@, std::domain_error *this, const char *a3) { int v4; // [esp+5Fh] [ebp-9h] BYREF *a1 = &off_55FF90; std::string::string(a1 + 1, (char *)this, (int)&v4); *a1 = &off_560028; } // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 560028: using guessed type void (__cdecl *off_560028)(std::domain_error *__hidden this); //----- (004D89A0) -------------------------------------------------------- void __thiscall std::domain_error::domain_error(_DWORD *this, int a2) { unsigned int v2; // [esp+8h] [ebp-50h] *this = &off_55FF90; std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); *this = &off_560028; } // 4D89F4: variable 'v2' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 560028: using guessed type void (__cdecl *off_560028)(std::domain_error *__hidden this); //----- (004D8A40) -------------------------------------------------------- void __userpurge std::domain_error::domain_error(_DWORD *a1@, std::domain_error *this, const std::string *a3) { const std::string *v3; // [esp+4h] [ebp-54h] *a1 = &off_55FF90; std::string::string(a1 + 1, this, v3); *a1 = &off_560028; } // 4D8A88: variable 'v3' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 560028: using guessed type void (__cdecl *off_560028)(std::domain_error *__hidden this); //----- (004D8AD0) -------------------------------------------------------- void __fastcall std::domain_error::~domain_error(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_560028; std::logic_error::~logic_error(Block); operator delete(a1); } // 4D8ADC: variable 'Block' is possibly undefined // 560028: using guessed type void (__cdecl *off_560028)(std::domain_error *__hidden this); //----- (004D8AF0) -------------------------------------------------------- void __cdecl std::domain_error::~domain_error(std::exception *a1) { _DWORD *v1; // ecx int v2; // eax int v3; // ecx int v4; // eax int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v2 = _CRT_MT; *v1 = &off_55FF90; v3 = v1[1]; if ( v2 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v4 = *(_DWORD *)(v3 - 4); *(_DWORD *)(v3 - 4) = v4 - 1; if ( v4 > 0 ) { LABEL_3: std::exception::~exception(a1); return; } } std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); std::exception::~exception(a1); } // 4D8AFB: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 4D8AF0: using guessed type int var_D[3]; //----- (004D8B50) -------------------------------------------------------- void __userpurge std::length_error::length_error(_DWORD *a1@, std::length_error *this, const char *a3) { int v4; // [esp+5Fh] [ebp-9h] BYREF *a1 = &off_55FF90; std::string::string(a1 + 1, (char *)this, (int)&v4); *a1 = &off_56003C; } // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 56003C: using guessed type void (__cdecl *off_56003C)(std::length_error *__hidden this); //----- (004D8BE0) -------------------------------------------------------- void __thiscall std::length_error::length_error(_DWORD *this, int a2) { unsigned int v2; // [esp+8h] [ebp-50h] *this = &off_55FF90; std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); *this = &off_56003C; } // 4D8C34: variable 'v2' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 56003C: using guessed type void (__cdecl *off_56003C)(std::length_error *__hidden this); //----- (004D8C80) -------------------------------------------------------- void __userpurge std::length_error::length_error(_DWORD *a1@, std::length_error *this, const std::string *a3) { const std::string *v3; // [esp+4h] [ebp-54h] *a1 = &off_55FF90; std::string::string(a1 + 1, this, v3); *a1 = &off_56003C; } // 4D8CC8: variable 'v3' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 56003C: using guessed type void (__cdecl *off_56003C)(std::length_error *__hidden this); //----- (004D8D10) -------------------------------------------------------- void __fastcall std::length_error::~length_error(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_56003C; std::logic_error::~logic_error(Block); operator delete(a1); } // 4D8D1C: variable 'Block' is possibly undefined // 56003C: using guessed type void (__cdecl *off_56003C)(std::length_error *__hidden this); //----- (004D8D30) -------------------------------------------------------- void __cdecl std::length_error::~length_error(std::exception *a1) { _DWORD *v1; // ecx int v2; // eax int v3; // ecx int v4; // eax int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v2 = _CRT_MT; *v1 = &off_55FF90; v3 = v1[1]; if ( v2 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v4 = *(_DWORD *)(v3 - 4); *(_DWORD *)(v3 - 4) = v4 - 1; if ( v4 > 0 ) { LABEL_3: std::exception::~exception(a1); return; } } std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); std::exception::~exception(a1); } // 4D8D3B: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 4D8D30: using guessed type int var_D[3]; //----- (004D8D90) -------------------------------------------------------- void __userpurge std::out_of_range::out_of_range(_DWORD *a1@, std::out_of_range *this, const char *a3) { int v4; // [esp+5Fh] [ebp-9h] BYREF *a1 = &off_55FF90; std::string::string(a1 + 1, (char *)this, (int)&v4); *a1 = &off_560050; } // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 560050: using guessed type void (__cdecl *off_560050)(std::out_of_range *__hidden this); //----- (004D8E20) -------------------------------------------------------- void __thiscall std::out_of_range::out_of_range(_DWORD *this, int a2) { unsigned int v2; // [esp+8h] [ebp-50h] *this = &off_55FF90; std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); *this = &off_560050; } // 4D8E74: variable 'v2' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 560050: using guessed type void (__cdecl *off_560050)(std::out_of_range *__hidden this); //----- (004D8EC0) -------------------------------------------------------- void __userpurge std::out_of_range::out_of_range(_DWORD *a1@, std::out_of_range *this, const std::string *a3) { const std::string *v3; // [esp+4h] [ebp-54h] *a1 = &off_55FF90; std::string::string(a1 + 1, this, v3); *a1 = &off_560050; } // 4D8F08: variable 'v3' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 560050: using guessed type void (__cdecl *off_560050)(std::out_of_range *__hidden this); //----- (004D8F50) -------------------------------------------------------- void __fastcall std::out_of_range::~out_of_range(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_560050; std::logic_error::~logic_error(Block); operator delete(a1); } // 4D8F5C: variable 'Block' is possibly undefined // 560050: using guessed type void (__cdecl *off_560050)(std::out_of_range *__hidden this); //----- (004D8F70) -------------------------------------------------------- void __cdecl std::out_of_range::~out_of_range(std::exception *a1) { _DWORD *v1; // ecx int v2; // eax int v3; // ecx int v4; // eax int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v2 = _CRT_MT; *v1 = &off_55FF90; v3 = v1[1]; if ( v2 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v4 = *(_DWORD *)(v3 - 4); *(_DWORD *)(v3 - 4) = v4 - 1; if ( v4 > 0 ) { LABEL_3: std::exception::~exception(a1); return; } } std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); std::exception::~exception(a1); } // 4D8F7B: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 4D8F70: using guessed type int var_D[3]; //----- (004D8FD0) -------------------------------------------------------- void __thiscall std::system_error::system_error(_DWORD *this, int a2, int a3, char *Str) { int (__thiscall *v4)(int, int, int); // eax unsigned int *v5; // eax void *v6; // edx size_t v7; // eax unsigned int *v8; // eax void *v9; // edx void *Block[2]; // [esp+68h] [ebp-50h] BYREF int v12[4]; // [esp+70h] [ebp-48h] BYREF void *v13[2]; // [esp+80h] [ebp-38h] BYREF int v14[4]; // [esp+88h] [ebp-30h] BYREF void *v15[2]; // [esp+98h] [ebp-20h] BYREF char v16[24]; // [esp+A0h] [ebp-18h] BYREF v4 = *(int (__thiscall **)(int, int, int))(*(_DWORD *)a3 + 16); if ( v4 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) { v15[1] = 0; v15[0] = v16; v16[0] = 0; if ( a2 == 1 ) std::string::_M_replace((unsigned int *)v15, 0, 0, "iostream error", 0xEu); else std::string::_M_replace((unsigned int *)v15, 0, 0, "Unknown error", 0xDu); } else { ((void (__cdecl *)(int, int))v4)(a3, a2); } v5 = std::string::_M_replace((unsigned int *)v15, 0, 0, ": ", 2u); v13[0] = v14; if ( (unsigned int *)*v5 == v5 + 2 ) { v14[0] = v5[2]; v14[1] = v5[3]; v14[2] = v5[4]; v14[3] = v5[5]; } else { v13[0] = (void *)*v5; v14[0] = v5[2]; } v6 = (void *)v5[1]; *((_BYTE *)v5 + 8) = 0; v13[1] = v6; *v5 = (unsigned int)(v5 + 2); v5[1] = 0; v7 = strlen(Str); v8 = std::string::_M_replace((unsigned int *)v13, 0, 0, Str, v7); Block[0] = v12; if ( (unsigned int *)*v8 == v8 + 2 ) { v12[0] = v8[2]; v12[1] = v8[3]; v12[2] = v8[4]; v12[3] = v8[5]; } else { Block[0] = (void *)*v8; v12[0] = v8[2]; } v9 = (void *)v8[1]; *((_BYTE *)v8 + 8) = 0; Block[1] = v9; *v8 = (unsigned int)(v8 + 2); v8[1] = 0; std::runtime_error::runtime_error(this, (int)Block); if ( Block[0] != v12 ) operator delete(Block[0]); if ( v13[0] != v14 ) operator delete(v13[0]); if ( v15[0] != v16 ) operator delete(v15[0]); *this = &off_560064; this[2] = a2; this[3] = a3; } // 560064: using guessed type void (__cdecl *off_560064)(std::system_error *__hidden this); //----- (004D9310) -------------------------------------------------------- void __thiscall std::system_error::system_error(_DWORD *this, int a2, int a3, int a4) { int (__thiscall *v4)(int, int, int); // eax int *v5; // eax unsigned int v6; // ebx unsigned int v7; // eax unsigned int v8; // edx unsigned int *v9; // eax _BYTE *Src; // [esp+14h] [ebp-B4h] _BYTE *Size; // [esp+28h] [ebp-A0h] void *Block[2]; // [esp+68h] [ebp-60h] BYREF int v14[4]; // [esp+70h] [ebp-58h] BYREF void *v15; // [esp+80h] [ebp-48h] BYREF size_t v16; // [esp+84h] [ebp-44h] int v17[4]; // [esp+88h] [ebp-40h] BYREF void *v18; // [esp+98h] [ebp-30h] BYREF size_t v19; // [esp+9Ch] [ebp-2Ch] int v20[10]; // [esp+A0h] [ebp-28h] BYREF v4 = *(int (__thiscall **)(int, int, int))(*(_DWORD *)a3 + 16); if ( v4 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) { LOBYTE(v20[0]) = 0; v18 = v20; v19 = 0; if ( a2 == 1 ) std::string::_M_replace((unsigned int *)&v18, 0, 0, "iostream error", 0xEu); else std::string::_M_replace((unsigned int *)&v18, 0, 0, "Unknown error", 0xDu); } else { ((void (__cdecl *)(int, int))v4)(a3, a2); } v15 = v17; Size = *(_BYTE **)(a4 + 4); Src = *(_BYTE **)a4; if ( &Size[*(_DWORD *)a4] && !*(_DWORD *)a4 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); Block[0] = *(void **)(a4 + 4); if ( (unsigned int)Size > 0xF ) { v5 = (int *)std::string::_M_create((unsigned int *)Block, 0); v15 = v5; v17[0] = (int)Block[0]; LABEL_29: memcpy(v5, Src, (size_t)Size); Size = Block[0]; v5 = (int *)v15; goto LABEL_9; } if ( Size == (_BYTE *)1 ) { LOBYTE(v17[0]) = *Src; v5 = v17; goto LABEL_9; } v5 = v17; if ( Size ) goto LABEL_29; LABEL_9: v16 = (size_t)Size; Size[(_DWORD)v5] = 0; if ( v16 == 0x3FFFFFFF || v16 == 1073741822 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(&v15, ": ", 2u); v6 = v16 + v19; v7 = 15; v8 = 15; if ( v15 != v17 ) v8 = v17[0]; if ( v6 <= v8 ) goto LABEL_16; if ( v18 != v20 ) v7 = v20[0]; if ( v6 <= v7 ) v9 = std::string::_M_replace((unsigned int *)&v18, 0, 0, (char *)v15, v16); else LABEL_16: v9 = std::string::_M_append(&v15, v18, v19); Block[0] = v14; if ( (unsigned int *)*v9 == v9 + 2 ) { v14[0] = v9[2]; v14[1] = v9[3]; v14[2] = v9[4]; v14[3] = v9[5]; } else { Block[0] = (void *)*v9; v14[0] = v9[2]; } Block[1] = (void *)v9[1]; *v9 = (unsigned int)(v9 + 2); *((_BYTE *)v9 + 8) = 0; v9[1] = 0; std::runtime_error::runtime_error(this, (int)Block); if ( Block[0] != v14 ) operator delete(Block[0]); if ( v15 != v17 ) operator delete(v15); if ( v18 != v20 ) operator delete(v18); this[2] = a2; this[3] = a3; *this = &off_560064; } // 560064: using guessed type void (__cdecl *off_560064)(std::system_error *__hidden this); //----- (004D9780) -------------------------------------------------------- void __fastcall std::system_error::~system_error(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_560064; std::runtime_error::~runtime_error(Block); operator delete(a1); } // 4D978C: variable 'Block' is possibly undefined // 560064: using guessed type void (__cdecl *off_560064)(std::system_error *__hidden this); //----- (004D97A0) -------------------------------------------------------- void __cdecl std::system_error::~system_error(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_560064; std::runtime_error::~runtime_error(a1); } // 4D97A0: variable 'v1' is possibly undefined // 560064: using guessed type void (__cdecl *off_560064)(std::system_error *__hidden this); //----- (004D97B0) -------------------------------------------------------- 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; } //----- (004D9920) -------------------------------------------------------- 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; } //----- (004D9A90) -------------------------------------------------------- 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; } //----- (004D9C00) -------------------------------------------------------- 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; } //----- (004D9D70) -------------------------------------------------------- __int64 __cdecl std::__facet_shims::__money_get( int a1, int a2, __int64 a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int a9, _DWORD *a10) { int v11; // ecx int v12; // eax void (__cdecl *v13)(_DWORD *); // eax int v14; // eax const std::string *v15; // [esp+4h] [ebp-74h] __int64 lpuexcpt; // [esp+20h] [ebp-58h] int v17; // [esp+6Bh] [ebp-Dh] BYREF _DWORD v18[3]; // [esp+6Ch] [ebp-Ch] BYREF __int64 v19; // [esp+88h] [ebp+10h] if ( a9 ) return ((__int64 (__thiscall *)(int, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, int))*(_DWORD *)(*(_DWORD *)a2 + 8))( a2, a3, HIDWORD(a3), a4, a5, a6, a7, a8, a9); v18[0] = std::string::_S_construct(0, 0); v19 = ((__int64 (__thiscall *)(int, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, _DWORD *))*(_DWORD *)(*(_DWORD *)a2 + 12))( a2, a3, HIDWORD(a3), a4, a5, a6, a7, a8, v18); if ( *a8 ) { v11 = v18[0]; } else { v13 = (void (__cdecl *)(_DWORD *))a10[6]; if ( v13 ) v13(a10); std::string::string(a10, (std::string *)v18, v15); v11 = v18[0]; v14 = *(_DWORD *)(v18[0] - 12); a10[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; a10[1] = v14; } lpuexcpt = v19; if ( _CRT_MT ) { v12 = _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF); } else { v12 = *(_DWORD *)(v11 - 4); *(_DWORD *)(v11 - 4) = v12 - 1; } if ( v12 <= 0 ) std::string::_Rep::_M_destroy((void *)(v11 - 12), (int)&v17); return lpuexcpt; } // 4D9F09: variable 'v15' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004D9F70) -------------------------------------------------------- __int64 __cdecl std::__facet_shims::__money_get( int a1, int *a2, __int64 a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int a9, _DWORD *a10) { int v10; // edx __int64 (__thiscall *v12)(int *, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, void **); // eax void (__cdecl *v13)(_DWORD *); // eax _BYTE *v14; // ebx unsigned int v15; // ecx _BYTE *v16; // eax __int64 Size; // [esp+20h] [ebp-68h] size_t Sizea; // [esp+20h] [ebp-68h] unsigned int v19; // [esp+64h] [ebp-24h] BYREF void *Block; // [esp+68h] [ebp-20h] BYREF unsigned int v21; // [esp+6Ch] [ebp-1Ch] char v22[20]; // [esp+70h] [ebp-18h] BYREF __int64 v23; // [esp+98h] [ebp+10h] v10 = *a2; if ( a9 ) return ((__int64 (__thiscall *)(int *, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, int))*(_DWORD *)(v10 + 8))( a2, a3, HIDWORD(a3), a4, a5, a6, a7, a8, a9); Block = v22; v12 = *(__int64 (__thiscall **)(int *, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, void **))(v10 + 12); v21 = 0; v22[0] = 0; v23 = v12(a2, a3, HIDWORD(a3), a4, a5, a6, a7, a8, &Block); if ( !*a8 ) { v13 = (void (__cdecl *)(_DWORD *))a10[6]; if ( v13 ) v13(a10); v14 = Block; v15 = v21; v16 = a10 + 2; *a10 = a10 + 2; Sizea = v15; if ( &v14[v15] && !v14 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v19 = v15; if ( v15 > 0xF ) { v16 = std::string::_M_create(&v19, 0); *a10 = v16; a10[2] = v19; } else { if ( v15 == 1 ) { *((_BYTE *)a10 + 8) = *v14; LABEL_15: a10[1] = Sizea; v16[Sizea] = 0; a10[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; goto LABEL_5; } if ( !v15 ) goto LABEL_15; } memcpy(v16, v14, Sizea); Sizea = v19; v16 = (_BYTE *)*a10; goto LABEL_15; } LABEL_5: Size = v23; if ( Block != v22 ) operator delete(Block); return Size; } //----- (004DA1E0) -------------------------------------------------------- struct _Unwind_Exception *__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 v12; // ecx int v13; // eax void (__cdecl *v14)(_DWORD *); // eax int v15; // eax struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-58h] int v17; // [esp+7Bh] [ebp-Dh] BYREF _DWORD v18[2]; // [esp+7Ch] [ebp-Ch] BYREF if ( a10 ) return (struct _Unwind_Exception *)(*(unsigned int (__thiscall **)(int, int, int, int, int, _DWORD, int, _DWORD *, int))(*(_DWORD *)a2 + 8))( a2, a3, a4, a5, a6, a7, a8, a9, a10); v18[0] = std::wstring::_S_construct(0, 0); lpuexcpt = (struct _Unwind_Exception *)(*(unsigned int (__thiscall **)(int, int, int, int, int, _DWORD, int, _DWORD *, _DWORD *))(*(_DWORD *)a2 + 12))( a2, a3, a4, a5, a6, a7, a8, a9, v18); if ( *a9 ) { v12 = v18[0]; } else { v14 = (void (__cdecl *)(_DWORD *))a11[6]; if ( v14 ) v14(a11); std::wstring::basic_string(a11, v18); v12 = v18[0]; v15 = *(_DWORD *)(v18[0] - 12); a11[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; a11[1] = v15; } if ( _CRT_MT ) { v13 = _InterlockedExchangeAdd((volatile signed __int32 *)(v12 - 4), 0xFFFFFFFF); } else { v13 = *(_DWORD *)(v12 - 4); *(_DWORD *)(v12 - 4) = v13 - 1; } if ( v13 <= 0 ) std::wstring::_Rep::_M_destroy((void *)(v12 - 12), (int)&v17); return lpuexcpt; } // 53E1E4: using guessed type int _CRT_MT; //----- (004DA400) -------------------------------------------------------- struct _Unwind_Exception *__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; // edx __int64 (__thiscall *v13)(int *, int, int, int, int, _DWORD, int, _DWORD *, void **); // eax void (__cdecl *v14)(_DWORD *); // eax int v15; // edx struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-68h] void *Block; // [esp+78h] [ebp-20h] BYREF int v18; // [esp+7Ch] [ebp-1Ch] __int16 v19[10]; // [esp+80h] [ebp-18h] BYREF v11 = *a2; if ( a10 ) return (struct _Unwind_Exception *)(*(unsigned int (__thiscall **)(int *, int, int, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( a2, a3, a4, a5, a6, a7, a8, a9, a10); Block = v19; v19[0] = 0; v13 = *(__int64 (__thiscall **)(int *, int, int, int, int, _DWORD, int, _DWORD *, void **))(v11 + 12); v18 = 0; lpuexcpt = (struct _Unwind_Exception *)v13(a2, a3, a4, a5, a6, a7, a8, a9, &Block); if ( !*a9 ) { v14 = (void (__cdecl *)(_DWORD *))a11[6]; if ( v14 ) v14(a11); v15 = v18; *a11 = a11 + 2; std::wstring::_M_construct(a11, Block, (int)Block + 2 * v15); a11[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; } if ( Block != v19 ) operator delete(Block); return lpuexcpt; } //----- (004DA5D0) -------------------------------------------------------- __int64 __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 v9; // ecx int v10; // eax __int64 lpuexcpt; // [esp+20h] [ebp-58h] char v14; // [esp+6Bh] [ebp-Dh] BYREF _DWORD v15[2]; // [esp+6Ch] [ebp-Ch] BYREF if ( !a9 ) return ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _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, *(unsigned __int8 **)a9, *(_DWORD *)(a9 + 4), (int)&v14); lpuexcpt = ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _DWORD *))*(_DWORD *)(*(_DWORD *)a2 + 12))( a2, a3, a4, a5, a6, a7, v15); v9 = v15[0]; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v15[0] - 4), 0xFFFFFFFF) > 0 ) return lpuexcpt; LABEL_8: std::string::_Rep::_M_destroy((void *)(v9 - 12), (int)&v14); return lpuexcpt; } v10 = *(_DWORD *)(v15[0] - 4); *(_DWORD *)(v15[0] - 4) = v10 - 1; if ( v10 <= 0 ) goto LABEL_8; return lpuexcpt; } // 53E1E4: using guessed type int _CRT_MT; //----- (004DA780) -------------------------------------------------------- __int64 __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) { __int64 lpuexcpt; // [esp+20h] [ebp-68h] void *Block[2]; // [esp+68h] [ebp-20h] BYREF char v13[20]; // [esp+70h] [ebp-18h] BYREF if ( !a9 ) return ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _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"); Block[0] = v13; std::string::_M_construct(Block, *(_BYTE **)a9, *(_DWORD *)a9 + *(_DWORD *)(a9 + 4)); lpuexcpt = ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, void **))*(_DWORD *)(*(_DWORD *)a2 + 12))( a2, a3, a4, a5, a6, a7, Block); if ( Block[0] != v13 ) operator delete(Block[0]); return lpuexcpt; } //----- (004DA900) -------------------------------------------------------- __int64 __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 v9; // ecx int v10; // eax __int64 lpuexcpt; // [esp+20h] [ebp-58h] char v14; // [esp+6Bh] [ebp-Dh] BYREF _DWORD v15[2]; // [esp+6Ch] [ebp-Ch] BYREF if ( !a9 ) return ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _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, *(_WORD **)a9, *(_DWORD *)(a9 + 4), (int)&v14); lpuexcpt = ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _DWORD *))*(_DWORD *)(*(_DWORD *)a2 + 12))( a2, a3, a4, a5, a6, a7, v15); v9 = v15[0]; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v15[0] - 4), 0xFFFFFFFF) > 0 ) return lpuexcpt; LABEL_8: std::wstring::_Rep::_M_destroy((void *)(v9 - 12), (int)&v14); return lpuexcpt; } v10 = *(_DWORD *)(v15[0] - 4); *(_DWORD *)(v15[0] - 4) = v10 - 1; if ( v10 <= 0 ) goto LABEL_8; return lpuexcpt; } // 53E1E4: using guessed type int _CRT_MT; //----- (004DAAB0) -------------------------------------------------------- __int64 __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) { __int64 lpuexcpt; // [esp+20h] [ebp-68h] void *Block[2]; // [esp+68h] [ebp-20h] BYREF char v13[20]; // [esp+70h] [ebp-18h] BYREF if ( !a9 ) return ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _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"); Block[0] = v13; std::wstring::_M_construct(Block, *(_WORD **)a9, *(_DWORD *)a9 + 2 * *(_DWORD *)(a9 + 4)); lpuexcpt = ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, void **))*(_DWORD *)(*(_DWORD *)a2 + 12))( a2, a3, a4, a5, a6, a7, Block); if ( Block[0] != v13 ) operator delete(Block[0]); return lpuexcpt; } //----- (004DAC30) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v2 = _CRT_MT; *Block = &off_55F370; v3 = (volatile signed __int32 *)Block[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); *Block = &off_560BE0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 4DAC93: variable 'lpfctx' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F370: using guessed type int (*off_55F370)(); // 560BE0: using guessed type int (*off_560BE0)(); //----- (004DACC0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v2 = _CRT_MT; *Block = &off_55F38C; v3 = (volatile signed __int32 *)Block[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); *Block = &off_55FC68; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 4DAD23: variable 'lpfctx' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F38C: using guessed type int (*off_55F38C)(); // 55FC68: using guessed type int (*off_55FC68)(); //----- (004DAD50) -------------------------------------------------------- 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 struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v2 = _CRT_MT; *a1 = &off_55F370; 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_560BE0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4DADB3: variable 'lpfctx' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F370: using guessed type int (*off_55F370)(); // 560BE0: using guessed type int (*off_560BE0)(); //----- (004DADE0) -------------------------------------------------------- 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 struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v2 = _CRT_MT; *a1 = &off_55F38C; 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_55FC68; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4DAE43: variable 'lpfctx' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F38C: using guessed type int (*off_55F38C)(); // 55FC68: using guessed type int (*off_55FC68)(); //----- (004DAE70) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v2 = _CRT_MT; *Block = &off_55F3A8; v3 = (volatile signed __int32 *)Block[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); *Block = &off_560BFC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 4DAED3: variable 'lpfctx' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F3A8: using guessed type int (*off_55F3A8)(); // 560BFC: using guessed type int (*off_560BFC)(); //----- (004DAF00) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v2 = _CRT_MT; *Block = &off_55F3C4; v3 = (volatile signed __int32 *)Block[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); *Block = &off_55FC84; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 4DAF63: variable 'lpfctx' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F3C4: using guessed type int (*off_55F3C4)(); // 55FC84: using guessed type int (*off_55FC84)(); //----- (004DAF90) -------------------------------------------------------- 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 struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v2 = _CRT_MT; *a1 = &off_55F3A8; 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_560BFC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4DAFF3: variable 'lpfctx' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F3A8: using guessed type int (*off_55F3A8)(); // 560BFC: using guessed type int (*off_560BFC)(); //----- (004DB020) -------------------------------------------------------- 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 struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v2 = _CRT_MT; *a1 = &off_55F3C4; 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_55FC84; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4DB083: variable 'lpfctx' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F3C4: using guessed type int (*off_55F3C4)(); // 55FC84: using guessed type int (*off_55FC84)(); //----- (004DB0B0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = _CRT_MT; *Block = &off_55F3E0; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F3E0: using guessed type int (*off_55F3E0)(); //----- (004DB100) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = _CRT_MT; *Block = &off_55F3FC; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F3FC: using guessed type int (*off_55F3FC)(); //----- (004DB150) -------------------------------------------------------- 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 v2 = _CRT_MT; *a1 = &off_55F3E0; 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 (**)(void))(*v3 + 4))(); std::messages::~messages(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F3E0: using guessed type int (*off_55F3E0)(); //----- (004DB1A0) -------------------------------------------------------- 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 v2 = _CRT_MT; *a1 = &off_55F3FC; 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 (**)(void))(*v3 + 4))(); std::messages::~messages(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F3FC: using guessed type int (*off_55F3FC)(); //----- (004DB1F0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = _CRT_MT; *Block = &off_55F418; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F418: using guessed type int (*off_55F418)(); //----- (004DB240) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = _CRT_MT; *Block = &off_55F434; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F434: using guessed type int (*off_55F434)(); //----- (004DB290) -------------------------------------------------------- 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 v2 = _CRT_MT; *a1 = &off_55F418; 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 (**)(void))(*v3 + 4))(); std::messages::~messages(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F418: using guessed type int (*off_55F418)(); //----- (004DB2E0) -------------------------------------------------------- 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 v2 = _CRT_MT; *a1 = &off_55F434; 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 (**)(void))(*v3 + 4))(); std::messages::~messages(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F434: using guessed type int (*off_55F434)(); //----- (004DB330) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = Block[4]; *Block = &off_55F450; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F450: using guessed type int (*off_55F450)(); //----- (004DB390) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = Block[4]; *Block = &off_55F474; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F474: using guessed type int (*off_55F474)(); //----- (004DB3F0) -------------------------------------------------------- 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 v2 = a1[4]; *a1 = &off_55F450; 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 (**)(void))(*v3 + 4))(); std::numpunct::~numpunct(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F450: using guessed type int (*off_55F450)(); //----- (004DB440) -------------------------------------------------------- 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 v2 = a1[4]; *a1 = &off_55F474; 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 (**)(void))(*v3 + 4))(); std::numpunct::~numpunct(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F474: using guessed type int (*off_55F474)(); //----- (004DB490) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = Block[4]; *Block = &off_55F498; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F498: using guessed type int (*off_55F498)(); //----- (004DB4F0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = Block[4]; *Block = &off_55F4BC; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F4BC: using guessed type int (*off_55F4BC)(); //----- (004DB550) -------------------------------------------------------- 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 v2 = a1[4]; *a1 = &off_55F498; 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 (**)(void))(*v3 + 4))(); std::numpunct::~numpunct(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F498: using guessed type int (*off_55F498)(); //----- (004DB5A0) -------------------------------------------------------- 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 v2 = a1[4]; *a1 = &off_55F4BC; 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 (**)(void))(*v3 + 4))(); std::numpunct::~numpunct(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F4BC: using guessed type int (*off_55F4BC)(); //----- (004DB5F0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *Block = &off_55F4E0; v3 = (volatile signed __int32 *)Block[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); *Block = &off_560D94; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4DB623: variable 'Blocka' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F4E0: using guessed type int (*off_55F4E0)(); // 560D94: using guessed type int (*off_560D94)(); //----- (004DB650) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *Block = &off_55F508; v3 = (volatile signed __int32 *)Block[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); *Block = &off_55FD20; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4DB683: variable 'Blocka' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F508: using guessed type int (*off_55F508)(); // 55FD20: using guessed type int (*off_55FD20)(); //----- (004DB6B0) -------------------------------------------------------- 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_55F4E0; 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 (**)(void))(*v4 + 4))(); *v2 = &off_560D94; std::locale::facet::~facet(a1); } // 4DB6B1: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F4E0: using guessed type int (*off_55F4E0)(); // 560D94: using guessed type int (*off_560D94)(); //----- (004DB700) -------------------------------------------------------- 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_55F508; 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 (**)(void))(*v4 + 4))(); *v2 = &off_55FD20; std::locale::facet::~facet(a1); } // 4DB701: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F508: using guessed type int (*off_55F508)(); // 55FD20: using guessed type int (*off_55FD20)(); //----- (004DB750) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *Block = &off_55F534; v3 = (volatile signed __int32 *)Block[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); *Block = &off_560DBC; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4DB783: variable 'Blocka' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F534: using guessed type int (*off_55F534)(); // 560DBC: using guessed type int (*off_560DBC)(); //----- (004DB7B0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *Block = &off_55F55C; v3 = (volatile signed __int32 *)Block[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); *Block = &off_55FD4C; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4DB7E3: variable 'Blocka' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F55C: using guessed type int (*off_55F55C)(); // 55FD4C: using guessed type int (*off_55FD4C)(); //----- (004DB810) -------------------------------------------------------- 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_55F534; 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 (**)(void))(*v4 + 4))(); *v2 = &off_560DBC; std::locale::facet::~facet(a1); } // 4DB811: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F534: using guessed type int (*off_55F534)(); // 560DBC: using guessed type int (*off_560DBC)(); //----- (004DB860) -------------------------------------------------------- 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_55F55C; 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 (**)(void))(*v4 + 4))(); *v2 = &off_55FD4C; std::locale::facet::~facet(a1); } // 4DB861: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F55C: using guessed type int (*off_55F55C)(); // 55FD4C: using guessed type int (*off_55FD4C)(); //----- (004DB8B0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *Block = &off_55F588; v3 = (volatile signed __int32 *)Block[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); *Block = &off_560E54; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4DB8E3: variable 'Blocka' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F588: using guessed type int (*off_55F588)(); // 560E54: using guessed type int (*off_560E54)(); //----- (004DB910) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *Block = &off_55F5A0; v3 = (volatile signed __int32 *)Block[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); *Block = &off_55FD78; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4DB943: variable 'Blocka' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F5A0: using guessed type int (*off_55F5A0)(); // 55FD78: using guessed type int (*off_55FD78)(); //----- (004DB970) -------------------------------------------------------- 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_55F588; 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 (**)(void))(*v4 + 4))(); *v2 = &off_560E54; std::locale::facet::~facet(a1); } // 4DB971: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F588: using guessed type int (*off_55F588)(); // 560E54: using guessed type int (*off_560E54)(); //----- (004DB9C0) -------------------------------------------------------- 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_55F5A0; 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 (**)(void))(*v4 + 4))(); *v2 = &off_55FD78; std::locale::facet::~facet(a1); } // 4DB9C1: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F5A0: using guessed type int (*off_55F5A0)(); // 55FD78: using guessed type int (*off_55FD78)(); //----- (004DBA10) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *Block = &off_55F5B8; v3 = (volatile signed __int32 *)Block[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); *Block = &off_560E6C; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4DBA43: variable 'Blocka' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F5B8: using guessed type int (*off_55F5B8)(); // 560E6C: using guessed type int (*off_560E6C)(); //----- (004DBA70) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *Block = &off_55F5D0; v3 = (volatile signed __int32 *)Block[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); *Block = &off_55FD90; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4DBAA3: variable 'Blocka' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F5D0: using guessed type int (*off_55F5D0)(); // 55FD90: using guessed type int (*off_55FD90)(); //----- (004DBAD0) -------------------------------------------------------- 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_55F5B8; 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 (**)(void))(*v4 + 4))(); *v2 = &off_560E6C; std::locale::facet::~facet(a1); } // 4DBAD1: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F5B8: using guessed type int (*off_55F5B8)(); // 560E6C: using guessed type int (*off_560E6C)(); //----- (004DBB20) -------------------------------------------------------- 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_55F5D0; 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 (**)(void))(*v4 + 4))(); *v2 = &off_55FD90; std::locale::facet::~facet(a1); } // 4DBB21: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F5D0: using guessed type int (*off_55F5D0)(); // 55FD90: using guessed type int (*off_55FD90)(); //----- (004DBB70) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *Block = &off_55F5E8; v3 = (volatile signed __int32 *)Block[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); *Block = &off_560E84; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4DBBA3: variable 'Blocka' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F5E8: using guessed type int (*off_55F5E8)(); // 560E84: using guessed type int (*off_560E84)(); //----- (004DBBD0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *Block = &off_55F600; v3 = (volatile signed __int32 *)Block[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); *Block = &off_55FDA8; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4DBC03: variable 'Blocka' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F600: using guessed type int (*off_55F600)(); // 55FDA8: using guessed type int (*off_55FDA8)(); //----- (004DBC30) -------------------------------------------------------- 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_55F5E8; 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 (**)(void))(*v4 + 4))(); *v2 = &off_560E84; std::locale::facet::~facet(a1); } // 4DBC31: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F5E8: using guessed type int (*off_55F5E8)(); // 560E84: using guessed type int (*off_560E84)(); //----- (004DBC80) -------------------------------------------------------- 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_55F600; 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 (**)(void))(*v4 + 4))(); *v2 = &off_55FDA8; std::locale::facet::~facet(a1); } // 4DBC81: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F600: using guessed type int (*off_55F600)(); // 55FDA8: using guessed type int (*off_55FDA8)(); //----- (004DBCD0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *Block = &off_55F618; v3 = (volatile signed __int32 *)Block[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); *Block = &off_560E9C; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4DBD03: variable 'Blocka' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F618: using guessed type int (*off_55F618)(); // 560E9C: using guessed type int (*off_560E9C)(); //----- (004DBD30) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block) { int v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] v2 = _CRT_MT; *Block = &off_55F630; v3 = (volatile signed __int32 *)Block[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); *Block = &off_55FDC0; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4DBD63: variable 'Blocka' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F630: using guessed type int (*off_55F630)(); // 55FDC0: using guessed type int (*off_55FDC0)(); //----- (004DBD90) -------------------------------------------------------- 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_55F618; 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 (**)(void))(*v4 + 4))(); *v2 = &off_560E9C; std::locale::facet::~facet(a1); } // 4DBD91: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F618: using guessed type int (*off_55F618)(); // 560E9C: using guessed type int (*off_560E9C)(); //----- (004DBDE0) -------------------------------------------------------- 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_55F630; 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 (**)(void))(*v4 + 4))(); *v2 = &off_55FDC0; std::locale::facet::~facet(a1); } // 4DBDE1: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55F630: using guessed type int (*off_55F630)(); // 55FDC0: using guessed type int (*off_55FDC0)(); //----- (004DBE30) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)Block[4]; *Block = &off_55F648; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F648: using guessed type int (*off_55F648)(); //----- (004DBEA0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)Block[4]; *Block = &off_55F67C; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F67C: using guessed type int (*off_55F67C)(); //----- (004DBF10) -------------------------------------------------------- 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 v2 = (_DWORD *)a1[4]; *a1 = &off_55F648; 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 (**)(void))(*v3 + 4))(); std::moneypunct::~moneypunct(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F648: using guessed type int (*off_55F648)(); //----- (004DBF80) -------------------------------------------------------- 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 v2 = (_DWORD *)a1[4]; *a1 = &off_55F67C; 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 (**)(void))(*v3 + 4))(); std::moneypunct::~moneypunct(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F67C: using guessed type int (*off_55F67C)(); //----- (004DBFF0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)Block[4]; *Block = &off_55F6B0; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F6B0: using guessed type int (*off_55F6B0)(); //----- (004DC060) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)Block[4]; *Block = &off_55F6E4; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F6E4: using guessed type int (*off_55F6E4)(); //----- (004DC0D0) -------------------------------------------------------- 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 v2 = (_DWORD *)a1[4]; *a1 = &off_55F6B0; 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 (**)(void))(*v3 + 4))(); std::moneypunct::~moneypunct(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F6B0: using guessed type int (*off_55F6B0)(); //----- (004DC140) -------------------------------------------------------- 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 v2 = (_DWORD *)a1[4]; *a1 = &off_55F6E4; 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 (**)(void))(*v3 + 4))(); std::moneypunct::~moneypunct(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F6E4: using guessed type int (*off_55F6E4)(); //----- (004DC1B0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( _DWORD *Block) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)Block[4]; *Block = &off_55F718; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F718: using guessed type int (*off_55F718)(); //----- (004DC220) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( _DWORD *Block) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)Block[4]; *Block = &off_55F74C; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F74C: using guessed type int (*off_55F74C)(); //----- (004DC290) -------------------------------------------------------- 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 v2 = (_DWORD *)a1[4]; *a1 = &off_55F718; 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 (**)(void))(*v3 + 4))(); std::moneypunct::~moneypunct(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F718: using guessed type int (*off_55F718)(); //----- (004DC300) -------------------------------------------------------- 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 v2 = (_DWORD *)a1[4]; *a1 = &off_55F74C; 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 (**)(void))(*v3 + 4))(); std::moneypunct::~moneypunct(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F74C: using guessed type int (*off_55F74C)(); //----- (004DC370) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( _DWORD *Block) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)Block[4]; *Block = &off_55F780; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F780: using guessed type int (*off_55F780)(); //----- (004DC3E0) -------------------------------------------------------- void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( _DWORD *Block) { _DWORD *v2; // eax volatile signed __int32 *v3; // ecx signed __int32 v4; // eax v2 = (_DWORD *)Block[4]; *Block = &off_55F7B4; v3 = (volatile signed __int32 *)Block[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(Block); operator delete(Block); } // 53E1E4: using guessed type int _CRT_MT; // 55F7B4: using guessed type int (*off_55F7B4)(); //----- (004DC450) -------------------------------------------------------- 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 v2 = (_DWORD *)a1[4]; *a1 = &off_55F780; 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 (**)(void))(*v3 + 4))(); std::moneypunct::~moneypunct(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F780: using guessed type int (*off_55F780)(); //----- (004DC4C0) -------------------------------------------------------- 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 v2 = (_DWORD *)a1[4]; *a1 = &off_55F7B4; 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 (**)(void))(*v3 + 4))(); std::moneypunct::~moneypunct(a1); } // 53E1E4: using guessed type int _CRT_MT; // 55F7B4: using guessed type int (*off_55F7B4)(); //----- (004DC530) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(int *a1) { int v1; // ecx int v2; // eax int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF v1 = *a1; if ( !_CRT_MT ) { v2 = *(_DWORD *)(v1 - 4); *(_DWORD *)(v1 - 4) = v2 - 1; if ( v2 > 0 ) return; LABEL_5: std::string::_Rep::_M_destroy((void *)(v1 - 12), (int)v3); return; } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 53E1E4: using guessed type int _CRT_MT; // 4DC530: using guessed type int var_D[3]; //----- (004DC580) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **Block) { if ( *Block != Block + 2 ) operator delete(*Block); } //----- (004DC5B0) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(int *a1) { int v1; // ecx int v2; // eax int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF v1 = *a1; if ( !_CRT_MT ) { v2 = *(_DWORD *)(v1 - 4); *(_DWORD *)(v1 - 4) = v2 - 1; if ( v2 > 0 ) return; LABEL_5: std::wstring::_Rep::_M_destroy((void *)(v1 - 12), (int)v3); return; } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 53E1E4: using guessed type int _CRT_MT; // 4DC5B0: using guessed type int var_D[3]; //----- (004DC600) -------------------------------------------------------- void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **Block) { if ( *Block != Block + 2 ) operator delete(*Block); } //----- (004DC630) -------------------------------------------------------- void __cdecl std::__facet_shims::__messages_get( int a1, int a2, _DWORD *a3, std::string *a4, int a5, int a6, unsigned __int8 *a7, size_t a8) { void (__cdecl *v8)(_DWORD *); // eax int v9; // ecx int v10; // eax int v11; // eax int v12; // ecx int v13; // eax const std::string *v14; // [esp+4h] [ebp-74h] _WORD v15[3]; // [esp+66h] [ebp-12h] BYREF int v16[3]; // [esp+6Ch] [ebp-Ch] BYREF std::string::string(&v15[1], a7, a8, (int)v15); (*(void (__thiscall **)(int *, int, std::string *, int, int, _WORD *))(*(_DWORD *)a2 + 12))( v16, a2, a4, a5, a6, &v15[1]); v8 = (void (__cdecl *)(_DWORD *))a3[6]; if ( v8 ) v8(a3); std::string::string(a3, (std::string *)v16, v14); v9 = v16[0]; v10 = *(_DWORD *)(v16[0] - 12); a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; a3[1] = v10; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v9 - 4), 0xFFFFFFFF) > 0 ) { LABEL_5: v12 = *(_DWORD *)&v15[1]; if ( !_CRT_MT ) goto LABEL_6; goto LABEL_10; } } else { v11 = *(_DWORD *)(v9 - 4); *(_DWORD *)(v9 - 4) = v11 - 1; if ( v11 > 0 ) goto LABEL_5; } std::string::_Rep::_M_destroy((void *)(v9 - 12), (int)v15 + 1); v12 = *(_DWORD *)&v15[1]; if ( !_CRT_MT ) { LABEL_6: v13 = *(_DWORD *)(v12 - 4); *(_DWORD *)(v12 - 4) = v13 - 1; if ( v13 > 0 ) return; LABEL_11: std::string::_Rep::_M_destroy((void *)(v12 - 12), (int)v16); return; } LABEL_10: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v12 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_11; } // 4DC6E4: variable 'v14' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004DC7F0) -------------------------------------------------------- void __cdecl std::__facet_shims::__messages_get( int a1, int a2, _DWORD *a3, int a4, int a5, int a6, _BYTE *a7, int a8) { void (__cdecl *v8)(_DWORD *); // eax _BYTE *v9; // edx void *v10; // eax char *v11; // eax void *Src; // [esp+24h] [ebp-84h] int Size; // [esp+28h] [ebp-80h] int v14; // [esp+6Ch] [ebp-3Ch] BYREF void *v15[2]; // [esp+70h] [ebp-38h] BYREF char v16[16]; // [esp+78h] [ebp-30h] BYREF void *Block; // [esp+88h] [ebp-20h] BYREF unsigned int v18; // [esp+8Ch] [ebp-1Ch] char v19; // [esp+90h] [ebp-18h] BYREF v15[0] = v16; std::string::_M_construct(v15, a7, (int)&a7[a8]); (*(void (__thiscall **)(void **, int, int, int, int, void **))(*(_DWORD *)a2 + 12))(&Block, a2, a4, a5, a6, v15); v8 = (void (__cdecl *)(_DWORD *))a3[6]; if ( v8 ) v8(a3); v9 = Block; v10 = a3 + 2; *a3 = a3 + 2; Src = v9; Size = v18; if ( &v9[v18] && !v9 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v14 = v18; if ( v18 > 0xF ) { v10 = std::string::_M_create((unsigned int *)&v14, 0); *a3 = v10; a3[2] = v14; LABEL_16: memcpy(v10, Src, Size); Size = v14; v10 = (void *)*a3; goto LABEL_8; } if ( v18 == 1 ) { *((_BYTE *)a3 + 8) = *v9; goto LABEL_8; } if ( v18 ) goto LABEL_16; LABEL_8: a3[1] = Size; *((_BYTE *)v10 + Size) = 0; v11 = (char *)Block; a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; if ( v11 != &v19 ) operator delete(v11); if ( v15[0] != v16 ) operator delete(v15[0]); } //----- (004DCA00) -------------------------------------------------------- void __cdecl std::__facet_shims::__messages_get( int a1, int a2, _DWORD *a3, int a4, int a5, int a6, _WORD *a7, int a8) { void (__cdecl *v8)(_DWORD *); // eax int v9; // ecx int v10; // eax int v11; // eax int v12; // ecx int v13; // eax _WORD v14[3]; // [esp+66h] [ebp-12h] BYREF int v15[3]; // [esp+6Ch] [ebp-Ch] BYREF std::wstring::basic_string(&v14[1], a7, a8, (int)v14); (*(void (__thiscall **)(int *, int, int, int, int, _WORD *))(*(_DWORD *)a2 + 12))(v15, a2, a4, a5, a6, &v14[1]); v8 = (void (__cdecl *)(_DWORD *))a3[6]; if ( v8 ) v8(a3); std::wstring::basic_string(a3, v15); v9 = v15[0]; v10 = *(_DWORD *)(v15[0] - 12); a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; a3[1] = v10; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v9 - 4), 0xFFFFFFFF) > 0 ) { LABEL_5: v12 = *(_DWORD *)&v14[1]; if ( !_CRT_MT ) goto LABEL_6; goto LABEL_10; } } else { v11 = *(_DWORD *)(v9 - 4); *(_DWORD *)(v9 - 4) = v11 - 1; if ( v11 > 0 ) goto LABEL_5; } std::wstring::_Rep::_M_destroy((void *)(v9 - 12), (int)v14 + 1); v12 = *(_DWORD *)&v14[1]; if ( !_CRT_MT ) { LABEL_6: v13 = *(_DWORD *)(v12 - 4); *(_DWORD *)(v12 - 4) = v13 - 1; if ( v13 > 0 ) return; LABEL_11: std::wstring::_Rep::_M_destroy((void *)(v12 - 12), (int)v15); return; } LABEL_10: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v12 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_11; } // 53E1E4: using guessed type int _CRT_MT; //----- (004DCBC0) -------------------------------------------------------- void __cdecl std::__facet_shims::__messages_get( int a1, int a2, _DWORD *a3, int a4, int a5, int a6, _WORD *a7, int a8) { void (__cdecl *v8)(_DWORD *); // eax void *v9[2]; // [esp+60h] [ebp-38h] BYREF char v10[16]; // [esp+68h] [ebp-30h] BYREF void *Block[2]; // [esp+78h] [ebp-20h] BYREF char v12; // [esp+80h] [ebp-18h] BYREF v9[0] = v10; std::wstring::_M_construct(v9, a7, (int)&a7[a8]); (*(void (__thiscall **)(void **, int, int, int, int, void **))(*(_DWORD *)a2 + 12))(Block, a2, a4, a5, a6, v9); v8 = (void (__cdecl *)(_DWORD *))a3[6]; if ( v8 ) v8(a3); *a3 = a3 + 2; std::wstring::_M_construct(a3, (_WORD *)Block[0], (int)Block[0] + 2 * (int)Block[1]); a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; if ( Block[0] != &v12 ) operator delete(Block[0]); if ( v9[0] != v10 ) operator delete(v9[0]); } //----- (004DCD20) -------------------------------------------------------- struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open( int a1, int a2, unsigned __int8 *a3, size_t a4, int a5) { int v5; // eax int v6; // ecx int v7; // eax struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] char v10; // [esp+5Bh] [ebp-Dh] BYREF _DWORD v11[3]; // [esp+5Ch] [ebp-Ch] BYREF std::string::string(v11, a3, a4, (int)&v10); v5 = (*(int (__thiscall **)(int, _DWORD *, int))(*(_DWORD *)a2 + 8))(a2, v11, a5); v6 = v11[0]; lpuexcpt = (struct _Unwind_Exception *)v5; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v11[0] - 4), 0xFFFFFFFF) > 0 ) return lpuexcpt; } else { v7 = *(_DWORD *)(v11[0] - 4); *(_DWORD *)(v11[0] - 4) = v7 - 1; if ( v7 > 0 ) return lpuexcpt; } std::string::_Rep::_M_destroy((void *)(v6 - 12), (int)&v10); return lpuexcpt; } // 53E1E4: using guessed type int _CRT_MT; //----- (004DCE30) -------------------------------------------------------- struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5) { struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] void *Block[2]; // [esp+58h] [ebp-20h] BYREF char v8[24]; // [esp+60h] [ebp-18h] BYREF Block[0] = v8; std::string::_M_construct(Block, a3, (int)&a3[a4]); lpuexcpt = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, void **, int))(*(_DWORD *)a2 + 8))(a2, Block, a5); if ( Block[0] != v8 ) operator delete(Block[0]); return lpuexcpt; } //----- (004DCF00) -------------------------------------------------------- struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open( int a1, int a2, unsigned __int8 *a3, size_t a4, int a5) { int v5; // eax int v6; // ecx int v7; // eax struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] char v10; // [esp+5Bh] [ebp-Dh] BYREF _DWORD v11[3]; // [esp+5Ch] [ebp-Ch] BYREF std::string::string(v11, a3, a4, (int)&v10); v5 = (*(int (__thiscall **)(int, _DWORD *, int))(*(_DWORD *)a2 + 8))(a2, v11, a5); v6 = v11[0]; lpuexcpt = (struct _Unwind_Exception *)v5; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v11[0] - 4), 0xFFFFFFFF) > 0 ) return lpuexcpt; } else { v7 = *(_DWORD *)(v11[0] - 4); *(_DWORD *)(v11[0] - 4) = v7 - 1; if ( v7 > 0 ) return lpuexcpt; } std::string::_Rep::_M_destroy((void *)(v6 - 12), (int)&v10); return lpuexcpt; } // 53E1E4: using guessed type int _CRT_MT; //----- (004DD010) -------------------------------------------------------- struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open( int a1, int a2, _BYTE *a3, int a4, int a5) { struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] void *Block[2]; // [esp+58h] [ebp-20h] BYREF char v8[24]; // [esp+60h] [ebp-18h] BYREF Block[0] = v8; std::string::_M_construct(Block, a3, (int)&a3[a4]); lpuexcpt = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, void **, int))(*(_DWORD *)a2 + 8))(a2, Block, a5); if ( Block[0] != v8 ) operator delete(Block[0]); return lpuexcpt; } //----- (004DD0E0) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) { return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); } //----- (004DD100) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) { return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); } //----- (004DD120) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) { return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); } //----- (004DD140) -------------------------------------------------------- int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) { return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); } //----- (004DD160) -------------------------------------------------------- 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); } //----- (004DD1A0) -------------------------------------------------------- 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); } //----- (004DD1E0) -------------------------------------------------------- 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); } //----- (004DD220) -------------------------------------------------------- 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); } //----- (004DD260) -------------------------------------------------------- void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, std::string *a4, int a5) { void (__cdecl *v5)(_DWORD *); // eax int v6; // ecx int v7; // eax int v8; // eax const std::string *v9; // [esp+4h] [ebp-64h] int v10; // [esp+5Bh] [ebp-Dh] BYREF _DWORD v11[3]; // [esp+5Ch] [ebp-Ch] BYREF (*(void (__thiscall **)(_DWORD *, int, std::string *, int))(*(_DWORD *)a2 + 12))(v11, a2, a4, a5); v5 = (void (__cdecl *)(_DWORD *))a3[6]; if ( v5 ) v5(a3); std::string::string(a3, (std::string *)v11, v9); v6 = v11[0]; v7 = *(_DWORD *)(v11[0] - 12); a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; a3[1] = v7; if ( !_CRT_MT ) { v8 = *(_DWORD *)(v6 - 4); *(_DWORD *)(v6 - 4) = v8 - 1; if ( v8 > 0 ) return; LABEL_7: std::string::_Rep::_M_destroy((void *)(v6 - 12), (int)&v10); return; } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v6 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_7; } // 4DD2E0: variable 'v9' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004DD380) -------------------------------------------------------- void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) { void (__cdecl *v5)(_DWORD *); // eax _BYTE *v6; // edx void *v7; // eax char *v8; // eax unsigned int v9; // edx void *Src; // [esp+14h] [ebp-64h] int Size; // [esp+18h] [ebp-60h] unsigned int v12; // [esp+54h] [ebp-24h] BYREF void *Block; // [esp+58h] [ebp-20h] BYREF unsigned int v14; // [esp+5Ch] [ebp-1Ch] char v15; // [esp+60h] [ebp-18h] BYREF (*(void (__thiscall **)(void **, int, int, int))(*(_DWORD *)a2 + 12))(&Block, a2, a4, a5); v5 = (void (__cdecl *)(_DWORD *))a3[6]; if ( v5 ) v5(a3); v6 = Block; v7 = a3 + 2; *a3 = a3 + 2; Src = v6; Size = v14; if ( &v6[v14] && !v6 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v12 = v14; if ( v14 > 0xF ) { v7 = std::string::_M_create(&v12, 0); v9 = v12; *a3 = v7; a3[2] = v9; LABEL_14: memcpy(v7, Src, Size); Size = v12; v7 = (void *)*a3; goto LABEL_8; } if ( v14 == 1 ) { *((_BYTE *)a3 + 8) = *v6; goto LABEL_8; } if ( v14 ) goto LABEL_14; LABEL_8: a3[1] = Size; *((_BYTE *)v7 + Size) = 0; v8 = (char *)Block; a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; if ( v8 != &v15 ) operator delete(v8); } //----- (004DD510) -------------------------------------------------------- void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) { void (__cdecl *v5)(_DWORD *); // eax int v6; // ecx int v7; // eax int v8; // eax int v9; // [esp+5Bh] [ebp-Dh] BYREF _DWORD v10[3]; // [esp+5Ch] [ebp-Ch] BYREF (*(void (__thiscall **)(_DWORD *, int, int, int))(*(_DWORD *)a2 + 12))(v10, a2, a4, a5); v5 = (void (__cdecl *)(_DWORD *))a3[6]; if ( v5 ) v5(a3); std::wstring::basic_string(a3, v10); v6 = v10[0]; v7 = *(_DWORD *)(v10[0] - 12); a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; a3[1] = v7; if ( !_CRT_MT ) { v8 = *(_DWORD *)(v6 - 4); *(_DWORD *)(v6 - 4) = v8 - 1; if ( v8 > 0 ) return; LABEL_7: std::wstring::_Rep::_M_destroy((void *)(v6 - 12), (int)&v9); return; } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v6 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_7; } // 53E1E4: using guessed type int _CRT_MT; //----- (004DD630) -------------------------------------------------------- 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 void *Block[2]; // [esp+58h] [ebp-20h] BYREF char v8; // [esp+60h] [ebp-18h] BYREF (*(void (__thiscall **)(void **, int, int, int))(*(_DWORD *)a2 + 12))(Block, a2, a4, a5); v5 = (void (__cdecl *)(_DWORD *))a3[6]; if ( v5 ) v5(a3); v6 = Block[1]; *a3 = a3 + 2; std::wstring::_M_construct(a3, (_WORD *)Block[0], (int)Block[0] + 2 * (_DWORD)v6); a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; if ( Block[0] != &v8 ) operator delete(Block[0]); } //----- (004DD720) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) { return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); } //----- (004DD730) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) { return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); } //----- (004DD740) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) { return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); } //----- (004DD750) -------------------------------------------------------- int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) { return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); } //----- (004DD760) -------------------------------------------------------- void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax int v5; // ecx int v6; // eax int v7; // eax int v8; // ecx int v9; // eax int v10; // edx int v11; // ecx int v12; // eax unsigned int v13; // [esp+Ch] [ebp-5Ch] unsigned int v14; // [esp+Ch] [ebp-5Ch] unsigned int v15; // [esp+Ch] [ebp-5Ch] std::string *v16; // [esp+14h] [ebp-54h] std::string *v17; // [esp+14h] [ebp-54h] std::string *v18; // [esp+14h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] char v22; // [esp+5Bh] [ebp-Dh] BYREF _DWORD v23[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_BYTE *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_BYTE *)(a3 + 37) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 20) = 0; v3 = *a2; *(_DWORD *)(a3 + 28) = 0; *(_BYTE *)(a3 + 100) = 1; (*(void (__thiscall **)(_DWORD *, int *))(v3 + 16))(v23, a2); lpuexcpt = *(struct _Unwind_Exception **)(v23[0] - 12); v16 = (std::string *)operator new[]((unsigned int)lpuexcpt + 1); std::string::copy(v23, v16, (size_t)lpuexcpt, 0, v13); *((_BYTE *)lpuexcpt + (_DWORD)v16) = 0; *(_DWORD *)(a3 + 12) = lpuexcpt; v4 = _CRT_MT; *(_DWORD *)(a3 + 8) = v16; v5 = v23[0]; if ( v4 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v6 = *(_DWORD *)(v23[0] - 4); *(_DWORD *)(v23[0] - 4) = v6 - 1; if ( v6 > 0 ) goto LABEL_3; } std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)&v22); LABEL_3: (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v23, a2); lpuexcpta = *(struct _Unwind_Exception **)(v23[0] - 12); v17 = (std::string *)operator new[]((unsigned int)lpuexcpta + 1); std::string::copy(v23, v17, (size_t)lpuexcpta, 0, v14); *((_BYTE *)lpuexcpta + (_DWORD)v17) = 0; *(_DWORD *)(a3 + 24) = lpuexcpta; v7 = _CRT_MT; *(_DWORD *)(a3 + 20) = v17; v8 = v23[0]; if ( v7 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF) > 0 ) goto LABEL_5; } else { v9 = *(_DWORD *)(v23[0] - 4); *(_DWORD *)(v23[0] - 4) = v9 - 1; if ( v9 > 0 ) goto LABEL_5; } std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)&v22); LABEL_5: (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v23, a2); lpuexcptb = *(struct _Unwind_Exception **)(v23[0] - 12); v18 = (std::string *)operator new[]((unsigned int)lpuexcptb + 1); std::string::copy(v23, v18, (size_t)lpuexcptb, 0, v15); *(_DWORD *)(a3 + 28) = v18; *(_DWORD *)(a3 + 32) = lpuexcptb; v10 = _CRT_MT; *((_BYTE *)lpuexcptb + (_DWORD)v18) = 0; v11 = v23[0]; if ( !v10 ) { v12 = *(_DWORD *)(v23[0] - 4); *(_DWORD *)(v23[0] - 4) = v12 - 1; if ( v12 > 0 ) return; LABEL_11: std::string::_Rep::_M_destroy((void *)(v11 - 12), (int)&v22); return; } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_11; } // 4DD819: variable 'v13' is possibly undefined // 4DD8A7: variable 'v14' is possibly undefined // 4DD935: variable 'v15' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004DDA50) -------------------------------------------------------- void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax char *v4; // eax char *v5; // eax char *v6; // eax _BYTE *v7; // [esp+14h] [ebp-64h] _BYTE *v8; // [esp+14h] [ebp-64h] _BYTE *v9; // [esp+14h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] void *Block; // [esp+58h] [ebp-20h] BYREF struct _Unwind_Exception *v14; // [esp+5Ch] [ebp-1Ch] char v15[24]; // [esp+60h] [ebp-18h] BYREF *(_BYTE *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_BYTE *)(a3 + 37) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 20) = 0; v3 = *a2; *(_DWORD *)(a3 + 28) = 0; *(_BYTE *)(a3 + 100) = 1; (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); lpuexcpt = v14; v7 = (_BYTE *)operator new[]((unsigned int)v14 + 1); std::string::copy(&Block, v7, (size_t)lpuexcpt, 0); *(_DWORD *)(a3 + 12) = lpuexcpt; *((_BYTE *)lpuexcpt + (_DWORD)v7) = 0; v4 = (char *)Block; *(_DWORD *)(a3 + 8) = v7; if ( v4 != v15 ) operator delete(v4); (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); lpuexcpta = v14; v8 = (_BYTE *)operator new[]((unsigned int)v14 + 1); std::string::copy(&Block, v8, (size_t)lpuexcpta, 0); *(_DWORD *)(a3 + 24) = lpuexcpta; *((_BYTE *)lpuexcpta + (_DWORD)v8) = 0; v5 = (char *)Block; *(_DWORD *)(a3 + 20) = v8; if ( v5 != v15 ) operator delete(v5); (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); lpuexcptb = v14; v9 = (_BYTE *)operator new[]((unsigned int)v14 + 1); std::string::copy(&Block, v9, (size_t)lpuexcptb, 0); *(_DWORD *)(a3 + 32) = lpuexcptb; *((_BYTE *)lpuexcptb + (_DWORD)v9) = 0; v6 = (char *)Block; *(_DWORD *)(a3 + 28) = v9; if ( v6 != v15 ) operator delete(v6); } //----- (004DDC80) -------------------------------------------------------- void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax int v5; // ecx int v6; // eax int v7; // eax int v8; // ecx int v9; // eax int v10; // eax int v11; // ecx int v12; // eax unsigned int v13; // [esp+Ch] [ebp-5Ch] _WORD *v14; // [esp+10h] [ebp-58h] _WORD *v15; // [esp+10h] [ebp-58h] std::string *v16; // [esp+14h] [ebp-54h] int v17; // [esp+14h] [ebp-54h] int v18; // [esp+14h] [ebp-54h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] char v22; // [esp+5Bh] [ebp-Dh] BYREF int v23[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_WORD *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_WORD *)(a3 + 38) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 20) = 0; v3 = *a2; *(_DWORD *)(a3 + 28) = 0; *(_BYTE *)(a3 + 164) = 1; (*(void (__thiscall **)(int *, int *))(v3 + 16))(v23, a2); lpuexcptb = *(struct _Unwind_Exception **)(v23[0] - 12); v16 = (std::string *)operator new[]((unsigned int)lpuexcptb + 1); std::string::copy(v23, v16, (size_t)lpuexcptb, 0, v13); *((_BYTE *)lpuexcptb + (_DWORD)v16) = 0; *(_DWORD *)(a3 + 12) = lpuexcptb; v4 = _CRT_MT; *(_DWORD *)(a3 + 8) = v16; v5 = v23[0]; if ( v4 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v6 = *(_DWORD *)(v23[0] - 4); *(_DWORD *)(v23[0] - 4) = v6 - 1; if ( v6 > 0 ) goto LABEL_3; } std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)&v22); LABEL_3: (*(void (__thiscall **)(int *, int *))(*a2 + 20))(v23, a2); lpuexcpt = *(struct _Unwind_Exception **)(v23[0] - 12); v7 = (int)lpuexcpt + 1; if ( (unsigned int)lpuexcpt + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v17 = v7; v14 = (_WORD *)operator new[](2 * v7); std::wstring::copy(v23, v14, (unsigned int)lpuexcpt, 0); v14[v17 - 1] = 0; *(_DWORD *)(a3 + 20) = v14; v8 = v23[0]; *(_DWORD *)(a3 + 24) = lpuexcpt; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_6; } else { v9 = *(_DWORD *)(v8 - 4); *(_DWORD *)(v8 - 4) = v9 - 1; if ( v9 > 0 ) goto LABEL_6; } std::wstring::_Rep::_M_destroy((void *)(v8 - 12), (int)&v22); LABEL_6: (*(void (__thiscall **)(int *, int *))(*a2 + 24))(v23, a2); lpuexcpta = *(struct _Unwind_Exception **)(v23[0] - 12); v10 = (int)lpuexcpta + 1; if ( (unsigned int)lpuexcpta + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v18 = v10; v15 = (_WORD *)operator new[](2 * v10); std::wstring::copy(v23, v15, (unsigned int)lpuexcpta, 0); v15[v18 - 1] = 0; *(_DWORD *)(a3 + 28) = v15; v11 = v23[0]; *(_DWORD *)(a3 + 32) = lpuexcpta; if ( !_CRT_MT ) { v12 = *(_DWORD *)(v11 - 4); *(_DWORD *)(v11 - 4) = v12 - 1; if ( v12 > 0 ) return; LABEL_13: std::wstring::_Rep::_M_destroy((void *)(v11 - 12), (int)&v22); return; } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_13; } // 4DDD3E: variable 'v13' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004DDFC0) -------------------------------------------------------- void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax char *v4; // eax int v5; // eax int v6; // eax _WORD *v7; // [esp+10h] [ebp-68h] _WORD *v8; // [esp+10h] [ebp-68h] _BYTE *v9; // [esp+14h] [ebp-64h] int v10; // [esp+14h] [ebp-64h] int v11; // [esp+14h] [ebp-64h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] void *Block; // [esp+58h] [ebp-20h] BYREF struct _Unwind_Exception *v16; // [esp+5Ch] [ebp-1Ch] char v17[24]; // [esp+60h] [ebp-18h] BYREF *(_WORD *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_WORD *)(a3 + 38) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 20) = 0; v3 = *a2; *(_DWORD *)(a3 + 28) = 0; *(_BYTE *)(a3 + 164) = 1; (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); lpuexcptb = v16; v9 = (_BYTE *)operator new[]((unsigned int)v16 + 1); std::string::copy(&Block, v9, (size_t)lpuexcptb, 0); *(_DWORD *)(a3 + 12) = lpuexcptb; *((_BYTE *)lpuexcptb + (_DWORD)v9) = 0; v4 = (char *)Block; *(_DWORD *)(a3 + 8) = v9; if ( v4 != v17 ) operator delete(v4); (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); lpuexcpt = v16; v5 = (int)v16 + 1; if ( (unsigned int)v16 + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v10 = v5; v7 = (_WORD *)operator new[](2 * v5); std::wstring::copy(&Block, v7, (unsigned int)lpuexcpt, 0); v7[v10 - 1] = 0; *(_DWORD *)(a3 + 20) = v7; *(_DWORD *)(a3 + 24) = lpuexcpt; if ( Block != v17 ) operator delete(Block); (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); lpuexcpta = v16; v6 = (int)v16 + 1; if ( (unsigned int)v16 + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v11 = v6; v8 = (_WORD *)operator new[](2 * v6); std::wstring::copy(&Block, v8, (unsigned int)lpuexcpta, 0); v8[v11 - 1] = 0; *(_DWORD *)(a3 + 28) = v8; *(_DWORD *)(a3 + 32) = lpuexcpta; if ( Block != v17 ) operator delete(Block); } //----- (004DE230) -------------------------------------------------------- void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax int v5; // ecx int v6; // eax int v7; // eax int v8; // ecx int v9; // eax int v10; // eax int v11; // ecx int v12; // eax int v13; // edx int v14; // ecx int v15; // eax unsigned int v16; // [esp+Ch] [ebp-5Ch] unsigned int v17; // [esp+Ch] [ebp-5Ch] unsigned int v18; // [esp+Ch] [ebp-5Ch] unsigned int v19; // [esp+Ch] [ebp-5Ch] std::string *v20; // [esp+14h] [ebp-54h] std::string *v21; // [esp+14h] [ebp-54h] std::string *v22; // [esp+14h] [ebp-54h] std::string *v23; // [esp+14h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-50h] char v28; // [esp+5Bh] [ebp-Dh] BYREF _DWORD v29[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 44) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 20) = 0; v3 = *a2; *(_DWORD *)(a3 + 28) = 0; *(_DWORD *)(a3 + 36) = 0; *(_BYTE *)(a3 + 67) = 1; (*(void (__thiscall **)(_DWORD *, int *))(v3 + 16))(v29, a2); lpuexcpt = *(struct _Unwind_Exception **)(v29[0] - 12); v20 = (std::string *)operator new[]((unsigned int)lpuexcpt + 1); std::string::copy(v29, v20, (size_t)lpuexcpt, 0, v16); *((_BYTE *)lpuexcpt + (_DWORD)v20) = 0; *(_DWORD *)(a3 + 12) = lpuexcpt; v4 = _CRT_MT; *(_DWORD *)(a3 + 8) = v20; v5 = v29[0]; if ( v4 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v6 = *(_DWORD *)(v29[0] - 4); *(_DWORD *)(v29[0] - 4) = v6 - 1; if ( v6 > 0 ) goto LABEL_3; } std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)&v28); LABEL_3: (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v29, a2); lpuexcpta = *(struct _Unwind_Exception **)(v29[0] - 12); v21 = (std::string *)operator new[]((unsigned int)lpuexcpta + 1); std::string::copy(v29, v21, (size_t)lpuexcpta, 0, v17); *((_BYTE *)lpuexcpta + (_DWORD)v21) = 0; *(_DWORD *)(a3 + 24) = lpuexcpta; v7 = _CRT_MT; *(_DWORD *)(a3 + 20) = v21; v8 = v29[0]; if ( v7 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) goto LABEL_5; } else { v9 = *(_DWORD *)(v29[0] - 4); *(_DWORD *)(v29[0] - 4) = v9 - 1; if ( v9 > 0 ) goto LABEL_5; } std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)&v28); LABEL_5: (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v29, a2); lpuexcptb = *(struct _Unwind_Exception **)(v29[0] - 12); v22 = (std::string *)operator new[]((unsigned int)lpuexcptb + 1); std::string::copy(v29, v22, (size_t)lpuexcptb, 0, v18); *((_BYTE *)lpuexcptb + (_DWORD)v22) = 0; *(_DWORD *)(a3 + 32) = lpuexcptb; v10 = _CRT_MT; *(_DWORD *)(a3 + 28) = v22; v11 = v29[0]; if ( v10 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) goto LABEL_7; } else { v12 = *(_DWORD *)(v29[0] - 4); *(_DWORD *)(v29[0] - 4) = v12 - 1; if ( v12 > 0 ) goto LABEL_7; } std::string::_Rep::_M_destroy((void *)(v11 - 12), (int)&v28); LABEL_7: (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v29, a2); lpuexcptc = *(struct _Unwind_Exception **)(v29[0] - 12); v23 = (std::string *)operator new[]((unsigned int)lpuexcptc + 1); std::string::copy(v29, v23, (size_t)lpuexcptc, 0, v19); *(_DWORD *)(a3 + 36) = v23; *(_DWORD *)(a3 + 40) = lpuexcptc; v13 = _CRT_MT; *((_BYTE *)lpuexcptc + (_DWORD)v23) = 0; v14 = v29[0]; if ( v13 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) goto LABEL_9; LABEL_13: std::string::_Rep::_M_destroy((void *)(v14 - 12), (int)&v28); goto LABEL_9; } v15 = *(_DWORD *)(v29[0] - 4); *(_DWORD *)(v29[0] - 4) = v15 - 1; if ( v15 <= 0 ) goto LABEL_13; LABEL_9: *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); } // 4DE301: variable 'v16' is possibly undefined // 4DE38F: variable 'v17' is possibly undefined // 4DE41D: variable 'v18' is possibly undefined // 4DE4AB: variable 'v19' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004DE610) -------------------------------------------------------- void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax char *v4; // eax char *v5; // eax char *v6; // eax char *v7; // eax _BYTE *v8; // [esp+14h] [ebp-64h] _BYTE *v9; // [esp+14h] [ebp-64h] _BYTE *v10; // [esp+14h] [ebp-64h] _BYTE *v11; // [esp+14h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-60h] void *Block; // [esp+58h] [ebp-20h] BYREF struct _Unwind_Exception *v17; // [esp+5Ch] [ebp-1Ch] char v18[24]; // [esp+60h] [ebp-18h] BYREF *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 44) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 20) = 0; v3 = *a2; *(_DWORD *)(a3 + 28) = 0; *(_DWORD *)(a3 + 36) = 0; *(_BYTE *)(a3 + 67) = 1; (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); lpuexcpt = v17; v8 = (_BYTE *)operator new[]((unsigned int)v17 + 1); std::string::copy(&Block, v8, (size_t)lpuexcpt, 0); *(_DWORD *)(a3 + 12) = lpuexcpt; *((_BYTE *)lpuexcpt + (_DWORD)v8) = 0; v4 = (char *)Block; *(_DWORD *)(a3 + 8) = v8; if ( v4 != v18 ) operator delete(v4); (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); lpuexcpta = v17; v9 = (_BYTE *)operator new[]((unsigned int)v17 + 1); std::string::copy(&Block, v9, (size_t)lpuexcpta, 0); *(_DWORD *)(a3 + 24) = lpuexcpta; *((_BYTE *)lpuexcpta + (_DWORD)v9) = 0; v5 = (char *)Block; *(_DWORD *)(a3 + 20) = v9; if ( v5 != v18 ) operator delete(v5); (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); lpuexcptb = v17; v10 = (_BYTE *)operator new[]((unsigned int)v17 + 1); std::string::copy(&Block, v10, (size_t)lpuexcptb, 0); *(_DWORD *)(a3 + 32) = lpuexcptb; *((_BYTE *)lpuexcptb + (_DWORD)v10) = 0; v6 = (char *)Block; *(_DWORD *)(a3 + 28) = v10; if ( v6 != v18 ) operator delete(v6); (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&Block, a2); lpuexcptc = v17; v11 = (_BYTE *)operator new[]((unsigned int)v17 + 1); std::string::copy(&Block, v11, (size_t)lpuexcptc, 0); *(_DWORD *)(a3 + 40) = lpuexcptc; *((_BYTE *)lpuexcptc + (_DWORD)v11) = 0; v7 = (char *)Block; *(_DWORD *)(a3 + 36) = v11; if ( v7 != v18 ) operator delete(v7); *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); } //----- (004DE900) -------------------------------------------------------- void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax int v5; // ecx int v6; // eax int v7; // eax int v8; // ecx int v9; // eax int v10; // eax int v11; // ecx int v12; // eax int v13; // edx int v14; // ecx int v15; // eax unsigned int v16; // [esp+Ch] [ebp-5Ch] unsigned int v17; // [esp+Ch] [ebp-5Ch] unsigned int v18; // [esp+Ch] [ebp-5Ch] unsigned int v19; // [esp+Ch] [ebp-5Ch] std::string *v20; // [esp+14h] [ebp-54h] std::string *v21; // [esp+14h] [ebp-54h] std::string *v22; // [esp+14h] [ebp-54h] std::string *v23; // [esp+14h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-50h] char v28; // [esp+5Bh] [ebp-Dh] BYREF _DWORD v29[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 44) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 20) = 0; v3 = *a2; *(_DWORD *)(a3 + 28) = 0; *(_DWORD *)(a3 + 36) = 0; *(_BYTE *)(a3 + 67) = 1; (*(void (__thiscall **)(_DWORD *, int *))(v3 + 16))(v29, a2); lpuexcpt = *(struct _Unwind_Exception **)(v29[0] - 12); v20 = (std::string *)operator new[]((unsigned int)lpuexcpt + 1); std::string::copy(v29, v20, (size_t)lpuexcpt, 0, v16); *((_BYTE *)lpuexcpt + (_DWORD)v20) = 0; *(_DWORD *)(a3 + 12) = lpuexcpt; v4 = _CRT_MT; *(_DWORD *)(a3 + 8) = v20; v5 = v29[0]; if ( v4 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v6 = *(_DWORD *)(v29[0] - 4); *(_DWORD *)(v29[0] - 4) = v6 - 1; if ( v6 > 0 ) goto LABEL_3; } std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)&v28); LABEL_3: (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v29, a2); lpuexcpta = *(struct _Unwind_Exception **)(v29[0] - 12); v21 = (std::string *)operator new[]((unsigned int)lpuexcpta + 1); std::string::copy(v29, v21, (size_t)lpuexcpta, 0, v17); *((_BYTE *)lpuexcpta + (_DWORD)v21) = 0; *(_DWORD *)(a3 + 24) = lpuexcpta; v7 = _CRT_MT; *(_DWORD *)(a3 + 20) = v21; v8 = v29[0]; if ( v7 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) goto LABEL_5; } else { v9 = *(_DWORD *)(v29[0] - 4); *(_DWORD *)(v29[0] - 4) = v9 - 1; if ( v9 > 0 ) goto LABEL_5; } std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)&v28); LABEL_5: (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v29, a2); lpuexcptb = *(struct _Unwind_Exception **)(v29[0] - 12); v22 = (std::string *)operator new[]((unsigned int)lpuexcptb + 1); std::string::copy(v29, v22, (size_t)lpuexcptb, 0, v18); *((_BYTE *)lpuexcptb + (_DWORD)v22) = 0; *(_DWORD *)(a3 + 32) = lpuexcptb; v10 = _CRT_MT; *(_DWORD *)(a3 + 28) = v22; v11 = v29[0]; if ( v10 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) goto LABEL_7; } else { v12 = *(_DWORD *)(v29[0] - 4); *(_DWORD *)(v29[0] - 4) = v12 - 1; if ( v12 > 0 ) goto LABEL_7; } std::string::_Rep::_M_destroy((void *)(v11 - 12), (int)&v28); LABEL_7: (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v29, a2); lpuexcptc = *(struct _Unwind_Exception **)(v29[0] - 12); v23 = (std::string *)operator new[]((unsigned int)lpuexcptc + 1); std::string::copy(v29, v23, (size_t)lpuexcptc, 0, v19); *(_DWORD *)(a3 + 36) = v23; *(_DWORD *)(a3 + 40) = lpuexcptc; v13 = _CRT_MT; *((_BYTE *)lpuexcptc + (_DWORD)v23) = 0; v14 = v29[0]; if ( v13 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) goto LABEL_9; LABEL_13: std::string::_Rep::_M_destroy((void *)(v14 - 12), (int)&v28); goto LABEL_9; } v15 = *(_DWORD *)(v29[0] - 4); *(_DWORD *)(v29[0] - 4) = v15 - 1; if ( v15 <= 0 ) goto LABEL_13; LABEL_9: *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); } // 4DE9D1: variable 'v16' is possibly undefined // 4DEA5F: variable 'v17' is possibly undefined // 4DEAED: variable 'v18' is possibly undefined // 4DEB7B: variable 'v19' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004DECE0) -------------------------------------------------------- void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax char *v4; // eax char *v5; // eax char *v6; // eax char *v7; // eax _BYTE *v8; // [esp+14h] [ebp-64h] _BYTE *v9; // [esp+14h] [ebp-64h] _BYTE *v10; // [esp+14h] [ebp-64h] _BYTE *v11; // [esp+14h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-60h] void *Block; // [esp+58h] [ebp-20h] BYREF struct _Unwind_Exception *v17; // [esp+5Ch] [ebp-1Ch] char v18[24]; // [esp+60h] [ebp-18h] BYREF *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 44) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 20) = 0; v3 = *a2; *(_DWORD *)(a3 + 28) = 0; *(_DWORD *)(a3 + 36) = 0; *(_BYTE *)(a3 + 67) = 1; (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); lpuexcpt = v17; v8 = (_BYTE *)operator new[]((unsigned int)v17 + 1); std::string::copy(&Block, v8, (size_t)lpuexcpt, 0); *(_DWORD *)(a3 + 12) = lpuexcpt; *((_BYTE *)lpuexcpt + (_DWORD)v8) = 0; v4 = (char *)Block; *(_DWORD *)(a3 + 8) = v8; if ( v4 != v18 ) operator delete(v4); (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); lpuexcpta = v17; v9 = (_BYTE *)operator new[]((unsigned int)v17 + 1); std::string::copy(&Block, v9, (size_t)lpuexcpta, 0); *(_DWORD *)(a3 + 24) = lpuexcpta; *((_BYTE *)lpuexcpta + (_DWORD)v9) = 0; v5 = (char *)Block; *(_DWORD *)(a3 + 20) = v9; if ( v5 != v18 ) operator delete(v5); (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); lpuexcptb = v17; v10 = (_BYTE *)operator new[]((unsigned int)v17 + 1); std::string::copy(&Block, v10, (size_t)lpuexcptb, 0); *(_DWORD *)(a3 + 32) = lpuexcptb; *((_BYTE *)lpuexcptb + (_DWORD)v10) = 0; v6 = (char *)Block; *(_DWORD *)(a3 + 28) = v10; if ( v6 != v18 ) operator delete(v6); (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&Block, a2); lpuexcptc = v17; v11 = (_BYTE *)operator new[]((unsigned int)v17 + 1); std::string::copy(&Block, v11, (size_t)lpuexcptc, 0); *(_DWORD *)(a3 + 40) = lpuexcptc; *((_BYTE *)lpuexcptc + (_DWORD)v11) = 0; v7 = (char *)Block; *(_DWORD *)(a3 + 36) = v11; if ( v7 != v18 ) operator delete(v7); *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); } //----- (004DEFD0) -------------------------------------------------------- void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax int v5; // ecx int v6; // eax int v7; // eax int v8; // ecx int v9; // eax int v10; // eax int v11; // ecx int v12; // eax int v13; // eax int v14; // ecx int v15; // eax unsigned int v16; // [esp+Ch] [ebp-5Ch] _WORD *v17; // [esp+10h] [ebp-58h] _WORD *v18; // [esp+10h] [ebp-58h] _WORD *v19; // [esp+10h] [ebp-58h] std::string *v20; // [esp+14h] [ebp-54h] int v21; // [esp+14h] [ebp-54h] int v22; // [esp+14h] [ebp-54h] int v23; // [esp+14h] [ebp-54h] struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] char v28; // [esp+5Bh] [ebp-Dh] BYREF int v29[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 24) = 0; v3 = *a2; *(_DWORD *)(a3 + 32) = 0; *(_DWORD *)(a3 + 40) = 0; *(_BYTE *)(a3 + 82) = 1; (*(void (__thiscall **)(int *, int *))(v3 + 16))(v29, a2); lpuexcptc = *(struct _Unwind_Exception **)(v29[0] - 12); v20 = (std::string *)operator new[]((unsigned int)lpuexcptc + 1); std::string::copy(v29, v20, (size_t)lpuexcptc, 0, v16); *((_BYTE *)lpuexcptc + (_DWORD)v20) = 0; *(_DWORD *)(a3 + 12) = lpuexcptc; v4 = _CRT_MT; *(_DWORD *)(a3 + 8) = v20; v5 = v29[0]; if ( v4 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v6 = *(_DWORD *)(v29[0] - 4); *(_DWORD *)(v29[0] - 4) = v6 - 1; if ( v6 > 0 ) goto LABEL_3; } std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)&v28); LABEL_3: (*(void (__thiscall **)(int *, int *))(*a2 + 20))(v29, a2); lpuexcpt = *(struct _Unwind_Exception **)(v29[0] - 12); v7 = (int)lpuexcpt + 1; if ( (unsigned int)lpuexcpt + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v21 = v7; v17 = (_WORD *)operator new[](2 * v7); std::wstring::copy(v29, v17, (unsigned int)lpuexcpt, 0); v17[v21 - 1] = 0; *(_DWORD *)(a3 + 24) = v17; v8 = v29[0]; *(_DWORD *)(a3 + 28) = lpuexcpt; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_6; } else { v9 = *(_DWORD *)(v8 - 4); *(_DWORD *)(v8 - 4) = v9 - 1; if ( v9 > 0 ) goto LABEL_6; } std::wstring::_Rep::_M_destroy((void *)(v8 - 12), (int)&v28); LABEL_6: (*(void (__thiscall **)(int *, int *))(*a2 + 24))(v29, a2); lpuexcpta = *(struct _Unwind_Exception **)(v29[0] - 12); v10 = (int)lpuexcpta + 1; if ( (unsigned int)lpuexcpta + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v22 = v10; v18 = (_WORD *)operator new[](2 * v10); std::wstring::copy(v29, v18, (unsigned int)lpuexcpta, 0); v18[v22 - 1] = 0; *(_DWORD *)(a3 + 32) = v18; v11 = v29[0]; *(_DWORD *)(a3 + 36) = lpuexcpta; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_9; } else { v12 = *(_DWORD *)(v11 - 4); *(_DWORD *)(v11 - 4) = v12 - 1; if ( v12 > 0 ) goto LABEL_9; } std::wstring::_Rep::_M_destroy((void *)(v11 - 12), (int)&v28); LABEL_9: (*(void (__thiscall **)(int *, int *))(*a2 + 28))(v29, a2); lpuexcptb = *(struct _Unwind_Exception **)(v29[0] - 12); v13 = (int)lpuexcptb + 1; if ( (unsigned int)lpuexcptb + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v23 = v13; v19 = (_WORD *)operator new[](2 * v13); std::wstring::copy(v29, v19, (unsigned int)lpuexcptb, 0); v19[v23 - 1] = 0; *(_DWORD *)(a3 + 40) = v19; v14 = v29[0]; *(_DWORD *)(a3 + 44) = lpuexcptb; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v14 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_12; LABEL_16: std::wstring::_Rep::_M_destroy((void *)(v14 - 12), (int)&v28); goto LABEL_12; } v15 = *(_DWORD *)(v14 - 4); *(_DWORD *)(v14 - 4) = v15 - 1; if ( v15 <= 0 ) goto LABEL_16; LABEL_12: *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); *(_DWORD *)(a3 + 56) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); } // 4DF0A3: variable 'v16' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004DF430) -------------------------------------------------------- void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax char *v4; // eax int v5; // eax int v6; // eax int v7; // eax _WORD *v8; // [esp+10h] [ebp-68h] _WORD *v9; // [esp+10h] [ebp-68h] _WORD *v10; // [esp+10h] [ebp-68h] _BYTE *v11; // [esp+14h] [ebp-64h] int v12; // [esp+14h] [ebp-64h] int v13; // [esp+14h] [ebp-64h] int v14; // [esp+14h] [ebp-64h] struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] void *Block; // [esp+58h] [ebp-20h] BYREF struct _Unwind_Exception *v20; // [esp+5Ch] [ebp-1Ch] char v21[24]; // [esp+60h] [ebp-18h] BYREF *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 24) = 0; v3 = *a2; *(_DWORD *)(a3 + 32) = 0; *(_DWORD *)(a3 + 40) = 0; *(_BYTE *)(a3 + 82) = 1; (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); lpuexcptc = v20; v11 = (_BYTE *)operator new[]((unsigned int)v20 + 1); std::string::copy(&Block, v11, (size_t)lpuexcptc, 0); *(_DWORD *)(a3 + 12) = lpuexcptc; *((_BYTE *)lpuexcptc + (_DWORD)v11) = 0; v4 = (char *)Block; *(_DWORD *)(a3 + 8) = v11; if ( v4 != v21 ) operator delete(v4); (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); lpuexcpt = v20; v5 = (int)v20 + 1; if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v12 = v5; v8 = (_WORD *)operator new[](2 * v5); std::wstring::copy(&Block, v8, (unsigned int)lpuexcpt, 0); v8[v12 - 1] = 0; *(_DWORD *)(a3 + 24) = v8; *(_DWORD *)(a3 + 28) = lpuexcpt; if ( Block != v21 ) operator delete(Block); (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); lpuexcpta = v20; v6 = (int)v20 + 1; if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v13 = v6; v9 = (_WORD *)operator new[](2 * v6); std::wstring::copy(&Block, v9, (unsigned int)lpuexcpta, 0); v9[v13 - 1] = 0; *(_DWORD *)(a3 + 32) = v9; *(_DWORD *)(a3 + 36) = lpuexcpta; if ( Block != v21 ) operator delete(Block); (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&Block, a2); lpuexcptb = v20; v7 = (int)v20 + 1; if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v14 = v7; v10 = (_WORD *)operator new[](2 * v7); std::wstring::copy(&Block, v10, (unsigned int)lpuexcptb, 0); v10[v14 - 1] = 0; *(_DWORD *)(a3 + 40) = v10; *(_DWORD *)(a3 + 44) = lpuexcptb; if ( Block != v21 ) operator delete(Block); *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); *(_DWORD *)(a3 + 56) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); } //----- (004DF790) -------------------------------------------------------- void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax int v4; // eax int v5; // ecx int v6; // eax int v7; // eax int v8; // ecx int v9; // eax int v10; // eax int v11; // ecx int v12; // eax int v13; // eax int v14; // ecx int v15; // eax unsigned int v16; // [esp+Ch] [ebp-5Ch] _WORD *v17; // [esp+10h] [ebp-58h] _WORD *v18; // [esp+10h] [ebp-58h] _WORD *v19; // [esp+10h] [ebp-58h] std::string *v20; // [esp+14h] [ebp-54h] int v21; // [esp+14h] [ebp-54h] int v22; // [esp+14h] [ebp-54h] int v23; // [esp+14h] [ebp-54h] struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] char v28; // [esp+5Bh] [ebp-Dh] BYREF int v29[3]; // [esp+5Ch] [ebp-Ch] BYREF *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 24) = 0; v3 = *a2; *(_DWORD *)(a3 + 32) = 0; *(_DWORD *)(a3 + 40) = 0; *(_BYTE *)(a3 + 82) = 1; (*(void (__thiscall **)(int *, int *))(v3 + 16))(v29, a2); lpuexcptc = *(struct _Unwind_Exception **)(v29[0] - 12); v20 = (std::string *)operator new[]((unsigned int)lpuexcptc + 1); std::string::copy(v29, v20, (size_t)lpuexcptc, 0, v16); *((_BYTE *)lpuexcptc + (_DWORD)v20) = 0; *(_DWORD *)(a3 + 12) = lpuexcptc; v4 = _CRT_MT; *(_DWORD *)(a3 + 8) = v20; v5 = v29[0]; if ( v4 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v6 = *(_DWORD *)(v29[0] - 4); *(_DWORD *)(v29[0] - 4) = v6 - 1; if ( v6 > 0 ) goto LABEL_3; } std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)&v28); LABEL_3: (*(void (__thiscall **)(int *, int *))(*a2 + 20))(v29, a2); lpuexcpt = *(struct _Unwind_Exception **)(v29[0] - 12); v7 = (int)lpuexcpt + 1; if ( (unsigned int)lpuexcpt + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v21 = v7; v17 = (_WORD *)operator new[](2 * v7); std::wstring::copy(v29, v17, (unsigned int)lpuexcpt, 0); v17[v21 - 1] = 0; *(_DWORD *)(a3 + 24) = v17; v8 = v29[0]; *(_DWORD *)(a3 + 28) = lpuexcpt; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_6; } else { v9 = *(_DWORD *)(v8 - 4); *(_DWORD *)(v8 - 4) = v9 - 1; if ( v9 > 0 ) goto LABEL_6; } std::wstring::_Rep::_M_destroy((void *)(v8 - 12), (int)&v28); LABEL_6: (*(void (__thiscall **)(int *, int *))(*a2 + 24))(v29, a2); lpuexcpta = *(struct _Unwind_Exception **)(v29[0] - 12); v10 = (int)lpuexcpta + 1; if ( (unsigned int)lpuexcpta + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v22 = v10; v18 = (_WORD *)operator new[](2 * v10); std::wstring::copy(v29, v18, (unsigned int)lpuexcpta, 0); v18[v22 - 1] = 0; *(_DWORD *)(a3 + 32) = v18; v11 = v29[0]; *(_DWORD *)(a3 + 36) = lpuexcpta; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_9; } else { v12 = *(_DWORD *)(v11 - 4); *(_DWORD *)(v11 - 4) = v12 - 1; if ( v12 > 0 ) goto LABEL_9; } std::wstring::_Rep::_M_destroy((void *)(v11 - 12), (int)&v28); LABEL_9: (*(void (__thiscall **)(int *, int *))(*a2 + 28))(v29, a2); lpuexcptb = *(struct _Unwind_Exception **)(v29[0] - 12); v13 = (int)lpuexcptb + 1; if ( (unsigned int)lpuexcptb + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v23 = v13; v19 = (_WORD *)operator new[](2 * v13); std::wstring::copy(v29, v19, (unsigned int)lpuexcptb, 0); v19[v23 - 1] = 0; *(_DWORD *)(a3 + 40) = v19; v14 = v29[0]; *(_DWORD *)(a3 + 44) = lpuexcptb; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v14 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_12; LABEL_16: std::wstring::_Rep::_M_destroy((void *)(v14 - 12), (int)&v28); goto LABEL_12; } v15 = *(_DWORD *)(v14 - 4); *(_DWORD *)(v14 - 4) = v15 - 1; if ( v15 <= 0 ) goto LABEL_16; LABEL_12: *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); *(_DWORD *)(a3 + 56) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); } // 4DF863: variable 'v16' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004DFBF0) -------------------------------------------------------- void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) { int v3; // eax char *v4; // eax int v5; // eax int v6; // eax int v7; // eax _WORD *v8; // [esp+10h] [ebp-68h] _WORD *v9; // [esp+10h] [ebp-68h] _WORD *v10; // [esp+10h] [ebp-68h] _BYTE *v11; // [esp+14h] [ebp-64h] int v12; // [esp+14h] [ebp-64h] int v13; // [esp+14h] [ebp-64h] int v14; // [esp+14h] [ebp-64h] struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] void *Block; // [esp+58h] [ebp-20h] BYREF struct _Unwind_Exception *v20; // [esp+5Ch] [ebp-1Ch] char v21[24]; // [esp+60h] [ebp-18h] BYREF *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); *(_DWORD *)(a3 + 8) = 0; *(_DWORD *)(a3 + 24) = 0; v3 = *a2; *(_DWORD *)(a3 + 32) = 0; *(_DWORD *)(a3 + 40) = 0; *(_BYTE *)(a3 + 82) = 1; (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); lpuexcptc = v20; v11 = (_BYTE *)operator new[]((unsigned int)v20 + 1); std::string::copy(&Block, v11, (size_t)lpuexcptc, 0); *(_DWORD *)(a3 + 12) = lpuexcptc; *((_BYTE *)lpuexcptc + (_DWORD)v11) = 0; v4 = (char *)Block; *(_DWORD *)(a3 + 8) = v11; if ( v4 != v21 ) operator delete(v4); (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); lpuexcpt = v20; v5 = (int)v20 + 1; if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v12 = v5; v8 = (_WORD *)operator new[](2 * v5); std::wstring::copy(&Block, v8, (unsigned int)lpuexcpt, 0); v8[v12 - 1] = 0; *(_DWORD *)(a3 + 24) = v8; *(_DWORD *)(a3 + 28) = lpuexcpt; if ( Block != v21 ) operator delete(Block); (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); lpuexcpta = v20; v6 = (int)v20 + 1; if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v13 = v6; v9 = (_WORD *)operator new[](2 * v6); std::wstring::copy(&Block, v9, (unsigned int)lpuexcpta, 0); v9[v13 - 1] = 0; *(_DWORD *)(a3 + 32) = v9; *(_DWORD *)(a3 + 36) = lpuexcpta; if ( Block != v21 ) operator delete(Block); (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&Block, a2); lpuexcptb = v20; v7 = (int)v20 + 1; if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v14 = v7; v10 = (_WORD *)operator new[](2 * v7); std::wstring::copy(&Block, v10, (unsigned int)lpuexcptb, 0); v10[v14 - 1] = 0; *(_DWORD *)(a3 + 40) = v10; *(_DWORD *)(a3 + 44) = lpuexcptb; if ( Block != v21 ) operator delete(Block); *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); *(_DWORD *)(a3 + 56) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); } //----- (004DFF50) -------------------------------------------------------- void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, int a3, int a4) { void (__cdecl ***v4)(_anonymous_namespace_::system_error_category *__hidden); // eax char *v5; // eax if ( a3 ) { v4 = std::_V2::system_category(); } else { if ( !(_BYTE)`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec && __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((_PVFV)__tcf_0_7); } a3 = 1; v4 = &`anonymous namespace'::__io_category_instance(void)::__ec; } std::system_error::system_error(a1, a3, (int)v4, (char *)this); *a1 = &off_560078; v5 = (char *)std::runtime_error::what((int)a1); std::__construct_ios_failure(a1 + 4, v5); } // 53FCD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); // 560078: using guessed type void (__cdecl *off_560078)(std::__ios_failure *__hidden this); //----- (004E0080) -------------------------------------------------------- void __fastcall std::__ios_failure::~__ios_failure(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560078; std::__destroy_ios_failure((std::exception *)(a1 + 4)); *a1 = &off_55FDD8; std::system_error::~system_error((std::exception *)lpfctx); operator delete(a1); } // 4E00C4: variable 'lpfctx' is possibly undefined // 55FDD8: using guessed type int (*off_55FDD8)(); // 560078: using guessed type void (__cdecl *off_560078)(std::__ios_failure *__hidden this); //----- (004E00E0) -------------------------------------------------------- void __fastcall std::__ios_failure::~__ios_failure(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560078; std::__destroy_ios_failure((std::exception *)(a1 + 4)); *a1 = &off_55FDD8; std::system_error::~system_error((std::exception *)lpfctx); } // 4E0124: variable 'lpfctx' is possibly undefined // 55FDD8: using guessed type int (*off_55FDD8)(); // 560078: using guessed type void (__cdecl *off_560078)(std::__ios_failure *__hidden this); //----- (004E0140) -------------------------------------------------------- void __fastcall std::bad_exception::~bad_exception(void *Block) { operator delete(Block); } //----- (004E0170) -------------------------------------------------------- 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; } //----- (004E01F0) -------------------------------------------------------- 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); } //----- (004E0250) -------------------------------------------------------- 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; } //----- (004E0280) -------------------------------------------------------- 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; } //----- (004E02C0) -------------------------------------------------------- int __fastcall std::filebuf::_M_terminate_output(int a1) { int v1; // esi int v3; // eax int v4; // ecx _DWORD **v5; // eax int v6; // ebx _DWORD **v7; // ebp unsigned int v8; // eax unsigned int v9; // esi unsigned __int8 v11; // [esp+2Bh] [ebp-B5h] FILE **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 ( *(_DWORD *)(a1 + 16) < *(_DWORD *)(a1 + 20) ) { v3 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, -1); LOBYTE(v3) = v3 != -1; v1 = v3; } if ( *(_BYTE *)(a1 + 74) ) { v4 = *(_DWORD *)(a1 + 88); if ( !v4 ) std::__throw_bad_cast(); v11 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); if ( !v11 ) { if ( (_BYTE)v1 ) { v12 = (FILE **)(a1 + 40); v5 = (_DWORD **)a1; v6 = a1 + 56; v7 = v5; while ( 1 ) { v8 = (*(int (__thiscall **)(_DWORD *, int, 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; } // 4E02C0: using guessed type char var_1C[28]; //----- (004E03D0) -------------------------------------------------------- bool __thiscall std::filebuf::_M_convert_to_external(int 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 = *(_DWORD *)(this + 88); 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 + 88) + 32))(*(_DWORD *)(this + 88)) + 27) >> 4); v7 = alloca(v6); v8 = alloca(v6); v9 = (*(int (__thiscall **)(_DWORD, int, char *, char *))(**(_DWORD **)(this + 88) + 8))( *(_DWORD *)(this + 88), this + 56, a2, &a2[a3]); if ( v9 > 1 ) { if ( v9 == 3 ) { LABEL_5: v10 = std::__basic_file::xsputn((FILE **)(this + 40), a2, a3); return v10 == v5; } LABEL_11: std::__throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error"); } v13 = v9; v5 = v14 - (_DWORD)v16; v10 = std::__basic_file::xsputn((FILE **)(this + 40), 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 + 88) + 8))( *(_DWORD *)(this + 88), &v15, v15, *(_DWORD *)(this + 20), &v15, v16, v14, &v14) == 2 ) goto LABEL_11; v12 = v14 - (_DWORD)v16; return std::__basic_file::xsputn((FILE **)(this + 40), v16, v14 - (_DWORD)v16) == v12; } //----- (004E0540) -------------------------------------------------------- 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; } //----- (004E05A0) -------------------------------------------------------- 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; } } //----- (004E05E0) -------------------------------------------------------- _DWORD *__thiscall std::filebuf::open(_DWORD *this, char *a2, int a3) { _BYTE *v3; // esi int v5; // eax int v6; // eax _DWORD v8[7]; // [esp+20h] [ebp-1Ch] BYREF v3 = this + 10; if ( !std::__basic_file::is_open(this + 10) ) { std::__basic_file::open(v3, a2, a3, 436); if ( std::__basic_file::is_open(v3) ) { v5 = this[16]; if ( !*((_BYTE *)this + 72) && !v5 ) { v5 = operator new[](this[17]); *((_BYTE *)this + 72) = 1; this[16] = v5; } this[1] = v5; this[2] = v5; this[3] = v5; v6 = this[13]; this[12] = a3; *(_WORD *)((char *)this + 73) = 0; this[5] = 0; this[4] = 0; this[6] = 0; this[14] = v6; this[15] = v6; if ( (a3 & 2) == 0 ) return this; (*(void (__thiscall **)(_DWORD *, _DWORD *, _DWORD, _DWORD, int, int))(*this + 16))(v8, this, 0, 0, 2, a3); if ( (v8[0] & v8[1]) != -1 ) return this; std::filebuf::close((struct _Unwind_Exception *)this); } } return 0; } //----- (004E06F0) -------------------------------------------------------- _DWORD *__thiscall std::filebuf::open(_DWORD *this, wchar_t *a2, int a3) { _BYTE *v3; // esi int v5; // eax int v6; // eax _DWORD v8[7]; // [esp+20h] [ebp-1Ch] BYREF v3 = this + 10; if ( !std::__basic_file::is_open(this + 10) ) { std::__basic_file::open(v3, a2, a3); if ( std::__basic_file::is_open(v3) ) { v5 = this[16]; if ( !*((_BYTE *)this + 72) && !v5 ) { v5 = operator new[](this[17]); *((_BYTE *)this + 72) = 1; this[16] = v5; } this[1] = v5; this[2] = v5; this[3] = v5; v6 = this[13]; this[12] = a3; *(_WORD *)((char *)this + 73) = 0; this[5] = 0; this[4] = 0; this[6] = 0; this[14] = v6; this[15] = v6; if ( (a3 & 2) == 0 ) return this; (*(void (__thiscall **)(_DWORD *, _DWORD *, _DWORD, _DWORD, int, int))(*this + 16))(v8, this, 0, 0, 2, a3); if ( (v8[0] & v8[1]) != -1 ) return this; std::filebuf::close((struct _Unwind_Exception *)this); } } return 0; } //----- (004E07F0) -------------------------------------------------------- _DWORD *__thiscall std::filebuf::open(_DWORD *this, char *a2, int a3) { return std::filebuf::open(this, *(char **)a2, a3); } //----- (004E0800) -------------------------------------------------------- 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; } // 4E0868: variable 'v40' is possibly undefined //----- (004E0990) -------------------------------------------------------- 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); } //----- (004E09D0) -------------------------------------------------------- struct _Unwind_Exception *__fastcall std::filebuf::close(struct _Unwind_Exception *a1) { bool v1; // zf void *v2; // eax int v3; // edx int v4; // edx struct _Unwind_Exception *lpuexcpt; // [esp+1Ch] [ebp-60h] int v7; // [esp+24h] [ebp-58h] char v8; // [esp+2Bh] [ebp-51h] lpuexcpt = a1; v7 = (int)a1 + 40; if ( !std::__basic_file::is_open((_DWORD *)a1 + 10) ) return 0; v8 = std::filebuf::_M_terminate_output((int)lpuexcpt) ^ 1; v1 = *((_BYTE *)lpuexcpt + 72) == 0; *((_DWORD *)lpuexcpt + 12) = 0; *((_BYTE *)lpuexcpt + 84) = 0; if ( !v1 ) { v2 = (void *)*((_DWORD *)lpuexcpt + 16); if ( v2 ) operator delete[](v2); *((_DWORD *)lpuexcpt + 16) = 0; *((_BYTE *)lpuexcpt + 72) = 0; } if ( *((_DWORD *)lpuexcpt + 23) ) operator delete[](*((void **)lpuexcpt + 23)); *((_DWORD *)lpuexcpt + 23) = 0; *((_DWORD *)lpuexcpt + 24) = 0; *((_DWORD *)lpuexcpt + 25) = 0; *((_DWORD *)lpuexcpt + 26) = 0; *(_WORD *)((char *)lpuexcpt + 73) = 0; v3 = *((_DWORD *)lpuexcpt + 16); *((_DWORD *)lpuexcpt + 5) = 0; *((_DWORD *)lpuexcpt + 1) = v3; *((_DWORD *)lpuexcpt + 2) = v3; *((_DWORD *)lpuexcpt + 3) = v3; v4 = *((_DWORD *)lpuexcpt + 13); *((_DWORD *)lpuexcpt + 4) = 0; *((_DWORD *)lpuexcpt + 6) = 0; *((_DWORD *)lpuexcpt + 14) = v4; *((_DWORD *)lpuexcpt + 15) = v4; if ( !std::__basic_file::close(v7) || v8 ) return 0; return lpuexcpt; } //----- (004E0B80) -------------------------------------------------------- char __thiscall std::filebuf::imbue(void *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 int v12; // eax int v14; // [esp+30h] [ebp-1Ch] BYREF int v15; // [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 + 10); if ( !(_BYTE)v4 ) goto LABEL_13; if ( !*((_BYTE *)this + 73) && !*((_BYTE *)this + 74) ) { *((_DWORD *)this + 22) = v3; return v4; } v5 = *((_DWORD *)this + 22); 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((int)this); if ( (_BYTE)v4 ) { v4 = *((_DWORD *)this + 16); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 1) = v4; *((_DWORD *)this + 2) = v4; *((_DWORD *)this + 3) = v4; *((_DWORD *)this + 6) = 0; goto LABEL_13; } LABEL_18: *((_DWORD *)this + 22) = 0; return v4; } v6 = *((_DWORD *)this + 22); if ( !v6 ) LABEL_24: std::__throw_bad_cast(); LOBYTE(v4) = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6); if ( !(_BYTE)v4 ) { v7 = *((_DWORD *)this + 23); Src = (const void *)(v7 + (*(int (__thiscall **)(_DWORD, int, int, _DWORD, int))(**((_DWORD **)this + 22) + 28))( *((_DWORD *)this + 22), (int)this + 60, v7, *((_DWORD *)this + 25), *((_DWORD *)this + 2) - *((_DWORD *)this + 1))); v9 = *((_DWORD *)this + 26); *((_DWORD *)this + 25) = Src; Size = v9 - (_DWORD)Src; if ( Size ) memmove(*((void **)this + 23), Src, Size); v11 = *((_DWORD *)this + 23); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 25) = v11; *((_DWORD *)this + 26) = Size + v11; v12 = *((_DWORD *)this + 16); *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 1) = v12; *((_DWORD *)this + 2) = v12; *((_DWORD *)this + 3) = v12; v4 = *((_DWORD *)this + 13); *((_DWORD *)this + 14) = v4; *((_DWORD *)this + 15) = v4; goto LABEL_13; } if ( !v3 ) goto LABEL_18; LOBYTE(v4) = (*(int (__fastcall **)(void *))(*(_DWORD *)v3 + 24))(v3); if ( !(_BYTE)v4 ) { (*(void (__thiscall **)(int *, void *, _DWORD, _DWORD, int, _DWORD))(*(_DWORD *)this + 16))( &v14, this, 0, 0, 1, *((_DWORD *)this + 12)); LOBYTE(v4) = v14 & v15; if ( (v14 & v15) == -1 ) goto LABEL_18; } LABEL_13: *((_DWORD *)this + 22) = v3; return v4; } //----- (004E0D60) -------------------------------------------------------- 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; } //----- (004E0DC0) -------------------------------------------------------- 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 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 = v8 == (char *)v6; 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 = 2; if ( this[17] >= 2u ) v13 = this[17]; if ( v5 <= 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((FILE **)this + 10, v4, v5); ; i = std::__basic_file::xsgetn((FILE **)this + 10, v4, v5) ) { if ( i == -1 ) { v22 = __errno(); std::__throw_ios_failure( (std::__ios_failure *)"basic_filebuf::xsgetn error reading the file", (std::runtime_error *)*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; } //----- (004E0FE0) -------------------------------------------------------- int __thiscall std::filebuf::xsputn(int this, unsigned __int8 *a2, signed int a3) { int v4; // eax int v5; // ecx char v6; // si int v7; // edx int v8; // eax unsigned int v9; // ecx signed int v10; // esi int v11; // eax int v12; // edx bool v13; // cc int result; // eax int v15; // edx int v16; // ecx unsigned int v17; // ecx v4 = *(_DWORD *)(this + 48); v5 = *(_DWORD *)(this + 88); if ( (v4 & 0x10) != 0 ) LOBYTE(v4) = 1; 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 >= 1024 ) v8 = 1024; if ( a3 < v8 ) return std::streambuf::xsputn((_DWORD *)this, a2, a3); v10 = v7 - *(_DWORD *)(this + 16); v11 = std::__basic_file::xsputn_2((FILE **)(this + 40), *(char **)(this + 16), v10, (char *)a2, a3); if ( v10 + a3 == v11 ) { v15 = *(_DWORD *)(this + 64); v16 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 4) = v15; *(_DWORD *)(this + 8) = v15; *(_DWORD *)(this + 12) = v15; if ( ((v16 & 0x10) != 0 || (v16 & 1) != 0) && (v17 = *(_DWORD *)(this + 68), v17 > 1) ) { *(_DWORD *)(this + 20) = v15; *(_DWORD *)(this + 16) = v15; *(_DWORD *)(this + 24) = v15 + v17 - 1; } else { *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 24) = 0; } *(_BYTE *)(this + 74) = 1; } v12 = v11 - v10; v13 = v10 < v11; result = 0; if ( v13 ) return v12; return result; } //----- (004E1110) -------------------------------------------------------- _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(a2) ) return this; v7 = std::__basic_file::seekoff((FILE **)(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; } //----- (004E11C0) -------------------------------------------------------- _DWORD *__thiscall std::filebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5) { int v6; // ecx int v7; // eax int v8; // edx bool v9; // al bool v11; // zf __int64 v12; // rax __int64 v13; // rax int v14; // edx int v15; // ecx int v16; // eax unsigned int v17; // esi unsigned int v18; // edi __int64 v19; // kr00_8 __int64 ext_pos; // [esp+28h] [ebp-54h] bool v21; // [esp+34h] [ebp-48h] int v22; // [esp+34h] [ebp-48h] int v23; // [esp+3Ch] [ebp-40h] int v24; // [esp+4Ch] [ebp-30h] BYREF int v25[11]; // [esp+50h] [ebp-2Ch] BYREF v6 = *(_DWORD *)(a2 + 88); if ( v6 ) { v7 = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 20))(v6); v8 = 0; if ( v7 >= 0 ) v8 = v7; v9 = v7 <= 0; v23 = v8; } else { v23 = 0; v9 = 1; } *this = -1; this[1] = -1; this[2] = 0; v21 = v9 && a3 != 0; if ( !std::__basic_file::is_open((_DWORD *)(a2 + 40)) || v21 ) return this; if ( a4 != 1 || a3 || *(_BYTE *)(a2 + 74) && !(*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(a2 + 88) + 24))(*(_DWORD *)(a2 + 88)) ) { if ( *(_BYTE *)(a2 + 84) ) { v11 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); *(_BYTE *)(a2 + 84) = 0; v14 = *(_DWORD *)(a2 + 80); v15 = *(_DWORD *)(a2 + 64); v16 = *(_DWORD *)(a2 + 76) + !v11; *(_DWORD *)(a2 + 76) = v16; *(_DWORD *)(a2 + 4) = v15; *(_DWORD *)(a2 + 8) = v16; *(_DWORD *)(a2 + 12) = v14; } v22 = *(_DWORD *)(a2 + 52); v24 = v22; v17 = a3 * v23; v18 = (unsigned __int64)(a3 * v23) >> 32; if ( *(_BYTE *)(a2 + 73) && a4 == 1 ) { v24 = *(_DWORD *)(a2 + 60); v19 = std::filebuf::_M_get_ext_pos(a2, (int)&v24) + __PAIR64__(v18, v17); std::filebuf::_M_seek(v25, a2, v19, 1, v24); } else { std::filebuf::_M_seek(v25, a2, __SPAIR64__(v18, v17), a4, v22); } *this = v25[0]; this[1] = v25[1]; this[2] = v25[2]; return this; } v11 = *(_BYTE *)(a2 + 73) == 0; ext_pos = 0LL; v24 = *(_DWORD *)(a2 + 52); if ( !v11 ) { v24 = *(_DWORD *)(a2 + 60); ext_pos = std::filebuf::_M_get_ext_pos(a2, (int)&v24); } if ( *(_BYTE *)(a2 + 74) ) ext_pos = *(_DWORD *)(a2 + 20) - *(_DWORD *)(a2 + 16); v12 = std::__basic_file::seekoff((FILE **)(a2 + 40), 0LL, 1); if ( ((unsigned int)v12 & HIDWORD(v12)) == -1 ) return this; v13 = ext_pos + v12; *this = v13; LODWORD(v13) = v24; this[1] = HIDWORD(v13); this[2] = v13; return this; } //----- (004E1420) -------------------------------------------------------- _DWORD *__thiscall std::filebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6) { bool v7; // zf int v8; // edx int v9; // ecx int v10; // eax int v11; // ebp __int64 v12; // rax int v14; // ecx int v15; // ecx *this = -1; this[1] = -1; this[2] = 0; if ( std::__basic_file::is_open((_DWORD *)(a2 + 40)) ) { if ( *(_BYTE *)(a2 + 84) ) { v7 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); *(_BYTE *)(a2 + 84) = 0; v8 = *(_DWORD *)(a2 + 80); v9 = *(_DWORD *)(a2 + 64); v10 = *(_DWORD *)(a2 + 76) + !v7; *(_DWORD *)(a2 + 76) = v10; *(_DWORD *)(a2 + 4) = v9; *(_DWORD *)(a2 + 8) = v10; *(_DWORD *)(a2 + 12) = v8; } v11 = a4; if ( (unsigned __int8)std::filebuf::_M_terminate_output(a2) ) { v12 = std::__basic_file::seekoff((FILE **)(a2 + 40), a3, 0); if ( ((unsigned int)v12 & HIDWORD(v12)) == -1 ) { v11 = 0; } else { *(_DWORD *)(a2 + 20) = 0; *(_WORD *)(a2 + 73) = 0; v14 = *(_DWORD *)(a2 + 92); *(_DWORD *)(a2 + 16) = 0; *(_DWORD *)(a2 + 104) = v14; *(_DWORD *)(a2 + 100) = v14; v15 = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 24) = 0; *(_DWORD *)(a2 + 4) = v15; *(_DWORD *)(a2 + 8) = v15; *(_DWORD *)(a2 + 12) = v15; *(_DWORD *)(a2 + 56) = a4; } } else { v11 = 0; v12 = -1LL; } *(_QWORD *)this = v12; this[2] = v11; } return this; } //----- (004E1550) -------------------------------------------------------- int __thiscall std::filebuf::overflow(int this, int a2) { int v3; // edx int v4; // eax int v5; // ecx int ext_pos; // eax int v7; // ebp int v8; // edi int result; // eax char *v10; // edx char *v11; // eax int v12; // eax int v13; // edx __int64 v14; // rax int v15; // eax int v16; // eax unsigned int v17; // eax unsigned int v18; // edx int v19; // edx int v20; // ecx char v21[29]; // [esp+1Fh] [ebp-1Dh] 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); v7 = *(_DWORD *)(this + 60); v8 = ext_pos; if ( (unsigned __int8)std::filebuf::_M_terminate_output(this) ) { v14 = std::__basic_file::seekoff((FILE **)(this + 40), v8, 1); if ( ((unsigned int)v14 & HIDWORD(v14)) != -1 ) { *(_DWORD *)(this + 20) = 0; *(_WORD *)(this + 73) = 0; v15 = *(_DWORD *)(this + 92); *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 104) = v15; *(_DWORD *)(this + 100) = v15; v16 = *(_DWORD *)(this + 64); *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 4) = v16; *(_DWORD *)(this + 8) = v16; *(_DWORD *)(this + 12) = v16; *(_DWORD *)(this + 56) = v7; goto LABEL_19; } } return -1; } v10 = *(char **)(this + 16); v11 = *(char **)(this + 20); if ( v10 >= v11 ) { LABEL_19: v17 = *(_DWORD *)(this + 68); if ( v17 <= 1 ) { v21[0] = a2; if ( a2 == -1 ) { *(_BYTE *)(this + 74) = 1; return 0; } if ( std::filebuf::_M_convert_to_external(this, v21, 1u) ) { *(_BYTE *)(this + 74) = 1; return a2; } return -1; } v19 = *(_DWORD *)(this + 64); v20 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 4) = v19; *(_DWORD *)(this + 8) = v19; *(_DWORD *)(this + 12) = v19; if ( (v20 & 0x10) != 0 || (v20 & 1) != 0 ) { *(_DWORD *)(this + 20) = v19; *(_DWORD *)(this + 16) = v19; *(_DWORD *)(this + 24) = v19 + v17 - 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; } return 0; } if ( a2 != -1 ) { *v11 = a2; v10 = *(char **)(this + 16); v11 = (char *)(*(_DWORD *)(this + 20) + 1); *(_DWORD *)(this + 20) = v11; } if ( !std::filebuf::_M_convert_to_external(this, v10, v11 - v10) ) return -1; v12 = *(_DWORD *)(this + 64); v13 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 4) = v12; *(_DWORD *)(this + 8) = v12; *(_DWORD *)(this + 12) = v12; if ( ((v13 & 0x10) != 0 || (v13 & 1) != 0) && (v18 = *(_DWORD *)(this + 68), v18 > 1) ) { *(_DWORD *)(this + 20) = v12; *(_DWORD *)(this + 16) = v12; *(_DWORD *)(this + 24) = v12 + v18 - 1; } else { *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 24) = 0; } result = a2; if ( a2 == -1 ) return 0; return result; } // 4E1550: using guessed type char var_1D[29]; //----- (004E17B0) -------------------------------------------------------- int __thiscall std::filebuf::pbackfail(char *this, int a2) { char v3; // di unsigned int v4; // eax 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; v3 = this[84]; *((_DWORD *)this + 1) = v9; *((_DWORD *)this + 2) = v9; *((_DWORD *)this + 3) = v9; *((_DWORD *)this + 6) = 0; this[74] = 0; } else { v3 = this[84]; v4 = *((_DWORD *)this + 2); if ( v4 > *((_DWORD *)this + 1) ) { *((_DWORD *)this + 2) = v4 - 1; v5 = *(unsigned __int8 *)(v4 - 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 ( v3 ) 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; } //----- (004E18E0) -------------------------------------------------------- int __fastcall std::filebuf::showmanyc(_DWORD *a1) { int v1; // esi FILE **v2; // ebp int v4; // ecx int v5; // esi int v6; // edi int v8; // esi v1 = a1[12]; if ( (v1 & 8) == 0 ) return -1; v2 = (FILE **)(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 (**)(void))(*(_DWORD *)a1[22] + 32))() + v6; } //----- (004E1970) -------------------------------------------------------- int __fastcall std::filebuf::underflow(int a1) { unsigned __int8 *v2; // eax int result; // eax bool v4; // zf unsigned int v5; // edx int v6; // ecx int v7; // edi int v8; // ecx int v9; // eax signed int v10; // esi int v11; // ecx const void *v12; // eax signed int v13; // edi unsigned int v14; // edx 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 = 2; if ( *(_DWORD *)(a1 + 68) >= 2u ) v7 = *(_DWORD *)(a1 + 68); 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 = *(_DWORD *)(a1 + 104) - (_DWORD)v12; v14 = v11 - v13; if ( v11 <= v13 ) v14 = 0; v15 = *(_DWORD *)(a1 + 96); if ( *(_BYTE *)(a1 + 73) && *(_DWORD *)(a1 + 4) == *(_DWORD *)(a1 + 12) ) { if ( !v13 ) { if ( v10 <= v15 ) { v16 = *(char **)(a1 + 92); goto LABEL_22; } v42 = v14; v36 = (char *)operator new[](v10); v14 = v42; v16 = v36; LABEL_61: if ( *(_DWORD *)(a1 + 92) ) { v39 = v14; operator delete[](*(void **)(a1 + 92)); v14 = v39; } *(_DWORD *)(a1 + 92) = v16; *(_DWORD *)(a1 + 96) = v10; LABEL_22: v17 = *(_DWORD *)(a1 + 56); v18 = &v16[v13]; *(_DWORD *)(a1 + 100) = v16; *(_DWORD *)(a1 + 104) = &v16[v13]; *(_DWORD *)(a1 + 60) = v17; if ( v14 ) { v20 = 0; goto LABEL_30; } v19 = *(void **)(a1 + 4); v20 = 0; v43 = v19; if ( v18 <= v16 ) { while ( 1 ) { LABEL_29: v18 = *(char **)(a1 + 104); v14 = 1; v13 = (signed int)&v18[-*(_DWORD *)(a1 + 92)]; LABEL_30: if ( (signed int)(v14 + v13) > *(_DWORD *)(a1 + 96) ) std::__throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid"); v24 = std::__basic_file::xsgetn((FILE **)(a1 + 40), v18, v14); 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("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("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", (std::runtime_error *)*v31); } memcpy(v19, Src, Size); Src = (_BYTE *)(*(_DWORD *)(a1 + 92) + Size); goto LABEL_43; } if ( v10 <= v15 ) { v16 = *(char **)(a1 + 92); v14 = 0; LABEL_68: v40 = v14; memmove(v16, v12, v13); v16 = *(char **)(a1 + 92); v14 = v40; goto LABEL_22; } v35 = (char *)operator new[](v10); v14 = 0; v16 = v35; } else { if ( v10 <= v15 ) { v16 = *(char **)(a1 + 92); if ( !v13 ) goto LABEL_22; goto LABEL_68; } v38 = v14; v34 = (char *)operator new[](v10); v14 = v38; v16 = v34; if ( !v13 ) goto LABEL_61; } v41 = v14; memcpy(v16, *(const void **)(a1 + 100), v13); v14 = v41; goto LABEL_61; } v30 = std::__basic_file::xsgetn((FILE **)(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; } //----- (004E1E10) -------------------------------------------------------- int __thiscall std::filebuf::basic_filebuf(int this, std::locale *a2) { int v3; // eax int v4; // edx int v5; // edi int v6; // ecx int v7; // eax int result; // eax int v9; // edi 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 + 10); v4 = *((_DWORD *)a2 + 17); *(_DWORD *)this = off_5600A0; v5 = *((_DWORD *)a2 + 14); v6 = *((_DWORD *)a2 + 16); *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 40) = v3; LOBYTE(v3) = *((_BYTE *)a2 + 44); *(_DWORD *)(this + 36) = 0; *(_BYTE *)(this + 44) = v3; v7 = *((_DWORD *)a2 + 12); *((_DWORD *)a2 + 10) = 0; *((_BYTE *)a2 + 44) = 0; *(_DWORD *)(this + 68) = v4; LOWORD(v4) = *((_WORD *)a2 + 36); *(_DWORD *)(this + 48) = v7; result = *((_DWORD *)a2 + 13); *(_WORD *)(this + 72) = v4; LOBYTE(v4) = *((_BYTE *)a2 + 74); *(_DWORD *)(this + 56) = v5; v9 = *((_DWORD *)a2 + 15); *(_BYTE *)(this + 74) = v4; LOBYTE(v4) = *((_BYTE *)a2 + 75); *(_DWORD *)(this + 64) = v6; *(_DWORD *)(this + 60) = v9; *((_DWORD *)a2 + 12) = 0; *(_DWORD *)(this + 52) = result; *((_DWORD *)a2 + 16) = 0; *((_DWORD *)a2 + 17) = 1; *((_WORD *)a2 + 36) = 0; *((_BYTE *)a2 + 74) = 0; *(_BYTE *)(this + 75) = v4; v10 = *((_DWORD *)a2 + 19); *((_DWORD *)a2 + 19) = 0; *(_DWORD *)(this + 76) = v10; v11 = *((_DWORD *)a2 + 20); *((_DWORD *)a2 + 1) = 0; *(_DWORD *)(this + 80) = v11; LOBYTE(v11) = *((_BYTE *)a2 + 84); *((_DWORD *)a2 + 20) = 0; *(_BYTE *)(this + 84) = v11; v12 = *((_DWORD *)a2 + 22); *((_BYTE *)a2 + 84) = 0; *(_DWORD *)(this + 88) = v12; v13 = *((_DWORD *)a2 + 23); *((_DWORD *)a2 + 2) = 0; *(_DWORD *)(this + 92) = v13; v14 = *((_DWORD *)a2 + 24); *((_DWORD *)a2 + 23) = 0; *(_DWORD *)(this + 96) = v14; v15 = *((_DWORD *)a2 + 25); *((_DWORD *)a2 + 24) = 0; *(_DWORD *)(this + 100) = v15; v16 = *((_DWORD *)a2 + 26); *((_DWORD *)a2 + 25) = 0; *(_DWORD *)(this + 104) = v16; *((_DWORD *)a2 + 26) = 0; *((_DWORD *)a2 + 3) = 0; *((_DWORD *)a2 + 5) = 0; *((_DWORD *)a2 + 4) = 0; *((_DWORD *)a2 + 6) = 0; *((_DWORD *)a2 + 14) = result; *((_DWORD *)a2 + 15) = result; return result; } // 4E1E1F: variable 'v17' is possibly undefined // 5600A0: using guessed type int (*off_5600A0[2])(); //----- (004E1F50) -------------------------------------------------------- void __fastcall std::filebuf::basic_filebuf(int a1) { int v2; // [esp+20h] [ebp-4Ch] *(_DWORD *)a1 = &off_560424; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; v2 = a1 + 28; std::locale::locale((_DWORD *)(a1 + 28)); *(_DWORD *)a1 = off_5600A0; *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = 0; std::__basic_file::__basic_file((_BYTE *)(a1 + 40), 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; if ( (unsigned __int8)std::has_facet>(v2) ) *(_DWORD *)(a1 + 88) = std::use_facet>(v2); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (004E20E0) -------------------------------------------------------- int __thiscall std::filebuf::basic_filebuf(int this, std::locale *a2) { int v3; // eax int v4; // edx int v5; // edi int v6; // ecx int v7; // eax int result; // eax int v9; // edi 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 + 10); v4 = *((_DWORD *)a2 + 17); *(_DWORD *)this = off_5600A0; v5 = *((_DWORD *)a2 + 14); v6 = *((_DWORD *)a2 + 16); *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 40) = v3; LOBYTE(v3) = *((_BYTE *)a2 + 44); *(_DWORD *)(this + 36) = 0; *(_BYTE *)(this + 44) = v3; v7 = *((_DWORD *)a2 + 12); *((_DWORD *)a2 + 10) = 0; *((_BYTE *)a2 + 44) = 0; *(_DWORD *)(this + 68) = v4; LOWORD(v4) = *((_WORD *)a2 + 36); *(_DWORD *)(this + 48) = v7; result = *((_DWORD *)a2 + 13); *(_WORD *)(this + 72) = v4; LOBYTE(v4) = *((_BYTE *)a2 + 74); *(_DWORD *)(this + 56) = v5; v9 = *((_DWORD *)a2 + 15); *(_BYTE *)(this + 74) = v4; LOBYTE(v4) = *((_BYTE *)a2 + 75); *(_DWORD *)(this + 64) = v6; *(_DWORD *)(this + 60) = v9; *((_DWORD *)a2 + 12) = 0; *(_DWORD *)(this + 52) = result; *((_DWORD *)a2 + 16) = 0; *((_DWORD *)a2 + 17) = 1; *((_WORD *)a2 + 36) = 0; *((_BYTE *)a2 + 74) = 0; *(_BYTE *)(this + 75) = v4; v10 = *((_DWORD *)a2 + 19); *((_DWORD *)a2 + 19) = 0; *(_DWORD *)(this + 76) = v10; v11 = *((_DWORD *)a2 + 20); *((_DWORD *)a2 + 1) = 0; *(_DWORD *)(this + 80) = v11; LOBYTE(v11) = *((_BYTE *)a2 + 84); *((_DWORD *)a2 + 20) = 0; *(_BYTE *)(this + 84) = v11; v12 = *((_DWORD *)a2 + 22); *((_BYTE *)a2 + 84) = 0; *(_DWORD *)(this + 88) = v12; v13 = *((_DWORD *)a2 + 23); *((_DWORD *)a2 + 2) = 0; *(_DWORD *)(this + 92) = v13; v14 = *((_DWORD *)a2 + 24); *((_DWORD *)a2 + 23) = 0; *(_DWORD *)(this + 96) = v14; v15 = *((_DWORD *)a2 + 25); *((_DWORD *)a2 + 24) = 0; *(_DWORD *)(this + 100) = v15; v16 = *((_DWORD *)a2 + 26); *((_DWORD *)a2 + 25) = 0; *(_DWORD *)(this + 104) = v16; *((_DWORD *)a2 + 26) = 0; *((_DWORD *)a2 + 3) = 0; *((_DWORD *)a2 + 5) = 0; *((_DWORD *)a2 + 4) = 0; *((_DWORD *)a2 + 6) = 0; *((_DWORD *)a2 + 14) = result; *((_DWORD *)a2 + 15) = result; return result; } // 4E20EF: variable 'v17' is possibly undefined // 5600A0: using guessed type int (*off_5600A0[2])(); //----- (004E2220) -------------------------------------------------------- void __fastcall std::filebuf::basic_filebuf(int a1) { int v2; // [esp+20h] [ebp-4Ch] *(_DWORD *)a1 = &off_560424; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; v2 = a1 + 28; std::locale::locale((_DWORD *)(a1 + 28)); *(_DWORD *)a1 = off_5600A0; *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = 0; std::__basic_file::__basic_file((_BYTE *)(a1 + 40), 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; if ( (unsigned __int8)std::has_facet>(v2) ) *(_DWORD *)(a1 + 88) = std::use_facet>(v2); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (004E23B0) -------------------------------------------------------- void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1) { *(_DWORD *)a1 = off_5600A0; std::filebuf::close(a1); std::__basic_file::~__basic_file((int)a1 + 40); *(_DWORD *)a1 = &off_560424; std::locale::~locale((_DWORD **)a1 + 7); operator delete(a1); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (004E2460) -------------------------------------------------------- void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1) { *(_DWORD *)a1 = off_5600A0; std::filebuf::close(a1); std::__basic_file::~__basic_file((int)a1 + 40); *(_DWORD *)a1 = &off_560424; std::locale::~locale((_DWORD **)a1 + 7); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (004E2500) -------------------------------------------------------- void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1) { *(_DWORD *)a1 = off_5600A0; std::filebuf::close(a1); std::__basic_file::~__basic_file((int)a1 + 40); *(_DWORD *)a1 = &off_560424; std::locale::~locale((_DWORD **)a1 + 7); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (004E25A0) -------------------------------------------------------- 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((struct _Unwind_Exception *)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; } //----- (004E26C0) -------------------------------------------------------- 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; } //----- (004E2740) -------------------------------------------------------- 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); } //----- (004E27B0) -------------------------------------------------------- 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; } //----- (004E27E0) -------------------------------------------------------- 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; } //----- (004E2820) -------------------------------------------------------- int __fastcall std::wfilebuf::_M_terminate_output(int a1) { int v1; // esi int v3; // eax int v4; // ecx _DWORD **v5; // eax int v6; // ebx _DWORD **v7; // ebp unsigned int v8; // eax unsigned int v9; // esi unsigned __int8 v11; // [esp+2Bh] [ebp-B5h] FILE **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 ( *(_DWORD *)(a1 + 16) < *(_DWORD *)(a1 + 20) ) { v3 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, 0xFFFF); LOBYTE(v3) = (_WORD)v3 != 0xFFFF; v1 = v3; } if ( *(_BYTE *)(a1 + 74) ) { v4 = *(_DWORD *)(a1 + 92); if ( !v4 ) std::__throw_bad_cast(); v11 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); if ( !v11 ) { if ( (_BYTE)v1 ) { v12 = (FILE **)(a1 + 40); v5 = (_DWORD **)a1; v6 = a1 + 56; v7 = v5; while ( 1 ) { v8 = (*(int (__thiscall **)(_DWORD *, int, 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; } // 4E2820: using guessed type char var_1C[28]; //----- (004E2930) -------------------------------------------------------- bool __thiscall std::wfilebuf::_M_convert_to_external(int 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 = *(_DWORD *)(this + 92); 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 + 92) + 32))(*(_DWORD *)(this + 92)) + 27) >> 4); v7 = alloca(v6); v8 = alloca(v6); v9 = (*(int (__thiscall **)(_DWORD, int, char *, char *))(**(_DWORD **)(this + 92) + 8))( *(_DWORD *)(this + 92), this + 56, a2, &a2[2 * a3]); if ( v9 > 1 ) { if ( v9 == 3 ) { LABEL_5: v10 = std::__basic_file::xsputn((FILE **)(this + 40), a2, a3); return v10 == v5; } LABEL_11: std::__throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error"); } v13 = v9; v5 = v14 - (_DWORD)v16; v10 = std::__basic_file::xsputn((FILE **)(this + 40), 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 + 92) + 8))( *(_DWORD *)(this + 92), &v15, v15, *(_DWORD *)(this + 20), &v15, v16, v14, &v14) == 2 ) goto LABEL_11; v12 = v14 - (_DWORD)v16; return std::__basic_file::xsputn((FILE **)(this + 40), v16, v14 - (_DWORD)v16) == v12; } //----- (004E2AA0) -------------------------------------------------------- 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; } //----- (004E2B00) -------------------------------------------------------- void __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1) { unsigned int v1; // eax if ( !*(_BYTE *)(a1 + 72) && !*(_DWORD *)(a1 + 64) ) { v1 = *(_DWORD *)(a1 + 68); if ( v1 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); *(_DWORD *)(a1 + 64) = operator new[](2 * v1); *(_BYTE *)(a1 + 72) = 1; } } //----- (004E2B40) -------------------------------------------------------- _DWORD *__thiscall std::wfilebuf::open(_DWORD *this, char *a2, int a3) { _BYTE *v3; // esi int v5; // eax int v6; // eax unsigned int v8; // eax _DWORD v9[7]; // [esp+20h] [ebp-1Ch] BYREF v3 = this + 10; if ( !std::__basic_file::is_open(this + 10) ) { std::__basic_file::open(v3, a2, a3, 436); if ( std::__basic_file::is_open(v3) ) { v5 = this[16]; if ( !*((_BYTE *)this + 72) && !v5 ) { v8 = this[17]; if ( v8 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v5 = operator new[](2 * v8); *((_BYTE *)this + 72) = 1; this[16] = v5; } this[1] = v5; this[2] = v5; this[3] = v5; v6 = this[13]; this[12] = a3; *(_WORD *)((char *)this + 73) = 0; this[5] = 0; this[4] = 0; this[6] = 0; this[14] = v6; this[15] = v6; if ( (a3 & 2) == 0 ) return this; (*(void (__thiscall **)(_DWORD *, _DWORD *, _DWORD, _DWORD, int, int))(*this + 16))(v9, this, 0, 0, 2, a3); if ( (v9[0] & v9[1]) != -1 ) return this; std::wfilebuf::close((struct _Unwind_Exception *)this); } } return 0; } //----- (004E2C60) -------------------------------------------------------- _DWORD *__thiscall std::wfilebuf::open(_DWORD *this, wchar_t *a2, int a3) { _BYTE *v3; // esi int v5; // eax int v6; // eax unsigned int v8; // eax _DWORD v9[7]; // [esp+20h] [ebp-1Ch] BYREF v3 = this + 10; if ( !std::__basic_file::is_open(this + 10) ) { std::__basic_file::open(v3, a2, a3); if ( std::__basic_file::is_open(v3) ) { v5 = this[16]; if ( !*((_BYTE *)this + 72) && !v5 ) { v8 = this[17]; if ( v8 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v5 = operator new[](2 * v8); *((_BYTE *)this + 72) = 1; this[16] = v5; } this[1] = v5; this[2] = v5; this[3] = v5; v6 = this[13]; this[12] = a3; *(_WORD *)((char *)this + 73) = 0; this[5] = 0; this[4] = 0; this[6] = 0; this[14] = v6; this[15] = v6; if ( (a3 & 2) == 0 ) return this; (*(void (__thiscall **)(_DWORD *, _DWORD *, _DWORD, _DWORD, int, int))(*this + 16))(v9, this, 0, 0, 2, a3); if ( (v9[0] & v9[1]) != -1 ) return this; std::wfilebuf::close((struct _Unwind_Exception *)this); } } return 0; } //----- (004E2D70) -------------------------------------------------------- _DWORD *__thiscall std::wfilebuf::open(_DWORD *this, char *a2, int a3) { return std::wfilebuf::open(this, *(char **)a2, a3); } //----- (004E2D80) -------------------------------------------------------- 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; } // 4E2DE8: variable 'v40' is possibly undefined //----- (004E2F10) -------------------------------------------------------- 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); } //----- (004E2F50) -------------------------------------------------------- struct _Unwind_Exception *__fastcall std::wfilebuf::close(struct _Unwind_Exception *a1) { bool v1; // zf void *v2; // eax int v3; // edx int v4; // edx struct _Unwind_Exception *lpuexcpt; // [esp+1Ch] [ebp-60h] int v7; // [esp+24h] [ebp-58h] char v8; // [esp+2Bh] [ebp-51h] lpuexcpt = a1; v7 = (int)a1 + 40; if ( !std::__basic_file::is_open((_DWORD *)a1 + 10) ) return 0; v8 = std::wfilebuf::_M_terminate_output((int)lpuexcpt) ^ 1; v1 = *((_BYTE *)lpuexcpt + 72) == 0; *((_DWORD *)lpuexcpt + 12) = 0; *((_BYTE *)lpuexcpt + 88) = 0; if ( !v1 ) { v2 = (void *)*((_DWORD *)lpuexcpt + 16); if ( v2 ) operator delete[](v2); *((_DWORD *)lpuexcpt + 16) = 0; *((_BYTE *)lpuexcpt + 72) = 0; } if ( *((_DWORD *)lpuexcpt + 24) ) operator delete[](*((void **)lpuexcpt + 24)); *((_DWORD *)lpuexcpt + 24) = 0; *((_DWORD *)lpuexcpt + 25) = 0; *((_DWORD *)lpuexcpt + 26) = 0; *((_DWORD *)lpuexcpt + 27) = 0; *(_WORD *)((char *)lpuexcpt + 73) = 0; v3 = *((_DWORD *)lpuexcpt + 16); *((_DWORD *)lpuexcpt + 5) = 0; *((_DWORD *)lpuexcpt + 1) = v3; *((_DWORD *)lpuexcpt + 2) = v3; *((_DWORD *)lpuexcpt + 3) = v3; v4 = *((_DWORD *)lpuexcpt + 13); *((_DWORD *)lpuexcpt + 4) = 0; *((_DWORD *)lpuexcpt + 6) = 0; *((_DWORD *)lpuexcpt + 14) = v4; *((_DWORD *)lpuexcpt + 15) = v4; if ( !std::__basic_file::close(v7) || v8 ) return 0; return lpuexcpt; } //----- (004E3100) -------------------------------------------------------- char __thiscall std::wfilebuf::imbue(void *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 int v12; // eax int v14; // [esp+30h] [ebp-1Ch] BYREF int v15; // [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 + 10); if ( !(_BYTE)v4 ) goto LABEL_13; if ( !*((_BYTE *)this + 73) && !*((_BYTE *)this + 74) ) { *((_DWORD *)this + 23) = v3; return v4; } v5 = *((_DWORD *)this + 23); 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((int)this); if ( (_BYTE)v4 ) { v4 = *((_DWORD *)this + 16); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 1) = v4; *((_DWORD *)this + 2) = v4; *((_DWORD *)this + 3) = v4; *((_DWORD *)this + 6) = 0; goto LABEL_13; } LABEL_18: *((_DWORD *)this + 23) = 0; return v4; } v6 = *((_DWORD *)this + 23); if ( !v6 ) LABEL_24: std::__throw_bad_cast(); LOBYTE(v4) = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6); if ( !(_BYTE)v4 ) { v7 = *((_DWORD *)this + 24); Src = (const void *)(v7 + (*(int (__thiscall **)(_DWORD, int, int, _DWORD, int))(**((_DWORD **)this + 23) + 28))( *((_DWORD *)this + 23), (int)this + 60, v7, *((_DWORD *)this + 26), (*((_DWORD *)this + 2) - *((_DWORD *)this + 1)) >> 1)); v9 = *((_DWORD *)this + 27); *((_DWORD *)this + 26) = Src; Size = v9 - (_DWORD)Src; if ( Size ) memmove(*((void **)this + 24), Src, Size); v11 = *((_DWORD *)this + 24); *((_DWORD *)this + 5) = 0; *((_DWORD *)this + 4) = 0; *((_DWORD *)this + 26) = v11; *((_DWORD *)this + 27) = Size + v11; v12 = *((_DWORD *)this + 16); *((_DWORD *)this + 6) = 0; *((_DWORD *)this + 1) = v12; *((_DWORD *)this + 2) = v12; *((_DWORD *)this + 3) = v12; v4 = *((_DWORD *)this + 13); *((_DWORD *)this + 14) = v4; *((_DWORD *)this + 15) = v4; goto LABEL_13; } if ( !v3 ) goto LABEL_18; LOBYTE(v4) = (*(int (__fastcall **)(void *))(*(_DWORD *)v3 + 24))(v3); if ( !(_BYTE)v4 ) { (*(void (__thiscall **)(int *, void *, _DWORD, _DWORD, int, _DWORD))(*(_DWORD *)this + 16))( &v14, this, 0, 0, 1, *((_DWORD *)this + 12)); LOBYTE(v4) = v14 & v15; if ( (v14 & v15) == -1 ) goto LABEL_18; } LABEL_13: *((_DWORD *)this + 23) = v3; return v4; } //----- (004E32E0) -------------------------------------------------------- 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; } //----- (004E3340) -------------------------------------------------------- int __thiscall std::wfilebuf::xsgetn(_DWORD *this, char *a2, signed int a3) { char *v4; // edi signed int v5; // esi _WORD *v6; // ecx _WORD *v7; // eax int v8; // ebp bool v9; // zf int v10; // eax int v11; // edx int v12; // eax int v13; // ecx int v14; // eax int v15; // ecx char v16; // al int v18; // eax _BYTE *v19; // edx _BYTE *Src; // eax int i; // eax int v22; // eax int *v23; // eax int v24; // [esp+1Ch] [ebp-20h] int v25; // [esp+1Ch] [ebp-20h] v4 = a2; v5 = a3; if ( *((_BYTE *)this + 88) ) { v6 = (_WORD *)this[2]; v7 = (_WORD *)this[1]; v8 = 0; if ( a3 > 0 && v7 == v6 ) { v6 = v7 + 1; v5 = a3 - 1; v4 = a2 + 2; v8 = 1; *(_WORD *)a2 = *v7; } v9 = v6 == v7; 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; } else if ( *((_BYTE *)this + 74) ) { if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*this + 52))(this, 0xFFFF) == 0xFFFF ) return 0; v18 = this[16]; this[5] = 0; v8 = 0; this[4] = 0; this[1] = v18; this[2] = v18; this[3] = v18; this[6] = 0; *((_BYTE *)this + 74) = 0; } else { v8 = 0; } v14 = 2; if ( this[17] >= 2u ) v14 = this[17]; if ( v5 <= v14 - 1 ) goto LABEL_12; v15 = this[23]; if ( !v15 ) std::__throw_bad_cast(); v24 = this[12]; v16 = (*(int (__fastcall **)(int))(*(_DWORD *)v15 + 24))(v15); if ( (v24 & 8) != 0 && v16 ) { v19 = (_BYTE *)this[3]; Src = (_BYTE *)this[2]; if ( Src != v19 ) { v25 = v19 - Src; memcpy(v4, Src, v19 - Src); this[2] += v25; v4 += v25; v8 += v25 >> 1; v5 -= v25 >> 1; } for ( i = std::__basic_file::xsgetn((FILE **)this + 10, v4, v5); ; i = std::__basic_file::xsgetn((FILE **)this + 10, v4, v5) ) { if ( i == -1 ) { v23 = __errno(); std::__throw_ios_failure( (std::__ios_failure *)"basic_filebuf::xsgetn error reading the file", (std::runtime_error *)*v23); } if ( !i ) break; v8 += i; v5 -= i; if ( !v5 ) goto LABEL_26; v4 += 2 * i; } if ( !v5 ) { LABEL_26: *((_BYTE *)this + 73) = 1; return v8; } v22 = this[16]; this[5] = 0; this[4] = 0; this[1] = v22; this[2] = v22; this[3] = v22; this[6] = 0; *((_BYTE *)this + 73) = 0; } else { LABEL_12: v8 += std::wstreambuf::xsgetn(this, v4, v5); } return v8; } //----- (004E3540) -------------------------------------------------------- int __thiscall std::wfilebuf::xsputn(int this, char *a2, signed int a3) { int v4; // eax int v5; // ecx char v6; // si int v7; // edx int v8; // eax unsigned int v9; // ecx int v10; // esi int v11; // eax int v12; // edx bool v13; // cc int result; // eax int v15; // edx int v16; // ecx unsigned int v17; // ecx char *v18; // [esp+0h] [ebp-2Ch] v4 = *(_DWORD *)(this + 48); v5 = *(_DWORD *)(this + 92); if ( (v4 & 0x10) != 0 ) LOBYTE(v4) = 1; 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 >= 1024 ) v8 = 1024; if ( a3 < v8 ) return std::wstreambuf::xsputn((_DWORD *)this, a2, a3); v18 = *(char **)(this + 16); v10 = (v7 - (int)v18) >> 1; v11 = std::__basic_file::xsputn_2((FILE **)(this + 40), v18, v10, a2, a3); if ( v10 + a3 == v11 ) { v15 = *(_DWORD *)(this + 64); v16 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 4) = v15; *(_DWORD *)(this + 8) = v15; *(_DWORD *)(this + 12) = v15; if ( ((v16 & 0x10) != 0 || (v16 & 1) != 0) && (v17 = *(_DWORD *)(this + 68), v17 > 1) ) { *(_DWORD *)(this + 20) = v15; *(_DWORD *)(this + 16) = v15; *(_DWORD *)(this + 24) = v15 + 2 * v17 - 2; } else { *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 24) = 0; } *(_BYTE *)(this + 74) = 1; } v12 = v11 - v10; v13 = v10 < v11; result = 0; if ( v13 ) return v12; return result; } //----- (004E3670) -------------------------------------------------------- _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(a2) ) return this; v7 = std::__basic_file::seekoff((FILE **)(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; } //----- (004E3720) -------------------------------------------------------- _DWORD *__thiscall std::wfilebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5) { int v6; // ecx int v7; // eax int v8; // edx bool v9; // al bool v11; // zf __int64 v12; // rax __int64 v13; // rax int v14; // eax int v15; // edx 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 + 92); if ( v6 ) { v7 = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 20))(v6); v8 = 0; if ( v7 >= 0 ) v8 = v7; v9 = v7 <= 0; v22 = v8; } else { v22 = 0; v9 = 1; } *this = -1; this[1] = -1; this[2] = 0; v20 = v9 && 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 + 92) + 24))(*(_DWORD *)(a2 + 92)) ) { if ( *(_BYTE *)(a2 + 88) ) { v11 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); *(_BYTE *)(a2 + 88) = 0; v14 = *(_DWORD *)(a2 + 80) + 2 * !v11; v15 = *(_DWORD *)(a2 + 84); *(_DWORD *)(a2 + 4) = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 80) = v14; *(_DWORD *)(a2 + 8) = v14; *(_DWORD *)(a2 + 12) = v15; } 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::wfilebuf::_M_get_ext_pos(a2, (int)&v23) + __PAIR64__(v17, v16); std::wfilebuf::_M_seek(v24, a2, v18, 1, v23); } else { std::wfilebuf::_M_seek(v24, a2, __SPAIR64__(v17, v16), a4, v21); } *this = v24[0]; this[1] = v24[1]; this[2] = v24[2]; return this; } v11 = *(_BYTE *)(a2 + 73) == 0; ext_pos = 0LL; v23 = *(_DWORD *)(a2 + 52); if ( !v11 ) { v23 = *(_DWORD *)(a2 + 60); ext_pos = std::wfilebuf::_M_get_ext_pos(a2, (int)&v23); } if ( *(_BYTE *)(a2 + 74) ) ext_pos = (*(_DWORD *)(a2 + 20) - *(_DWORD *)(a2 + 16)) >> 1; v12 = std::__basic_file::seekoff((FILE **)(a2 + 40), 0LL, 1); if ( ((unsigned int)v12 & HIDWORD(v12)) == -1 ) return this; v13 = ext_pos + v12; *this = v13; LODWORD(v13) = v23; this[1] = HIDWORD(v13); this[2] = v13; return this; } //----- (004E3990) -------------------------------------------------------- _DWORD *__thiscall std::wfilebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6) { bool v7; // zf int v8; // eax int v9; // edx int v10; // ebp __int64 v11; // rax int v13; // ecx int v14; // ecx *this = -1; this[1] = -1; this[2] = 0; if ( std::__basic_file::is_open((_DWORD *)(a2 + 40)) ) { if ( *(_BYTE *)(a2 + 88) ) { v7 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); *(_BYTE *)(a2 + 88) = 0; v8 = *(_DWORD *)(a2 + 80) + 2 * !v7; v9 = *(_DWORD *)(a2 + 84); *(_DWORD *)(a2 + 4) = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 80) = v8; *(_DWORD *)(a2 + 8) = v8; *(_DWORD *)(a2 + 12) = v9; } v10 = a4; if ( (unsigned __int8)std::wfilebuf::_M_terminate_output(a2) ) { v11 = std::__basic_file::seekoff((FILE **)(a2 + 40), a3, 0); if ( ((unsigned int)v11 & HIDWORD(v11)) == -1 ) { v10 = 0; } else { *(_DWORD *)(a2 + 20) = 0; *(_WORD *)(a2 + 73) = 0; v13 = *(_DWORD *)(a2 + 96); *(_DWORD *)(a2 + 16) = 0; *(_DWORD *)(a2 + 108) = v13; *(_DWORD *)(a2 + 104) = v13; v14 = *(_DWORD *)(a2 + 64); *(_DWORD *)(a2 + 24) = 0; *(_DWORD *)(a2 + 4) = v14; *(_DWORD *)(a2 + 8) = v14; *(_DWORD *)(a2 + 12) = v14; *(_DWORD *)(a2 + 56) = a4; } } else { v10 = 0; v11 = -1LL; } *(_QWORD *)this = v11; this[2] = v10; } return this; } //----- (004E3AC0) -------------------------------------------------------- int __thiscall std::wfilebuf::overflow(int this, int a2) { int v3; // eax int v4; // edx int v5; // ecx int ext_pos; // eax int v7; // ebp int v8; // edi int result; // eax char *v10; // edx char *v11; // eax int v12; // eax int v13; // edx __int64 v14; // rax int v15; // eax int v16; // eax unsigned int v17; // eax int v18; // edx int v19; // ecx _WORD *v20; // eax unsigned int v21; // edx __int16 v22[15]; // [esp+1Eh] [ebp-1Eh] 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); v7 = *(_DWORD *)(this + 60); v8 = ext_pos; if ( (unsigned __int8)std::wfilebuf::_M_terminate_output(this) ) { v14 = std::__basic_file::seekoff((FILE **)(this + 40), v8, 1); if ( ((unsigned int)v14 & HIDWORD(v14)) != -1 ) { *(_DWORD *)(this + 20) = 0; *(_WORD *)(this + 73) = 0; v15 = *(_DWORD *)(this + 96); *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 108) = v15; *(_DWORD *)(this + 104) = v15; v16 = *(_DWORD *)(this + 64); *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 4) = v16; *(_DWORD *)(this + 8) = v16; *(_DWORD *)(this + 12) = v16; *(_DWORD *)(this + 56) = v7; goto LABEL_19; } } return -1; } v10 = *(char **)(this + 16); v11 = *(char **)(this + 20); if ( v11 <= v10 ) { LABEL_19: v17 = *(_DWORD *)(this + 68); if ( v17 <= 1 ) { v22[0] = a2; if ( (_WORD)a2 == 0xFFFF ) { *(_BYTE *)(this + 74) = 1; return 0; } if ( std::wfilebuf::_M_convert_to_external(this, (char *)v22, 1u) ) { *(_BYTE *)(this + 74) = 1; return a2; } return -1; } v18 = *(_DWORD *)(this + 64); v19 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 4) = v18; *(_DWORD *)(this + 8) = v18; *(_DWORD *)(this + 12) = v18; if ( (v19 & 0x10) != 0 || (v19 & 1) != 0 ) { *(_DWORD *)(this + 20) = v18; *(_DWORD *)(this + 16) = v18; *(_DWORD *)(this + 24) = v18 + 2 * v17 - 2; } else { *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 24) = 0; } *(_BYTE *)(this + 74) = 1; if ( (_WORD)a2 != 0xFFFF ) { v20 = *(_WORD **)(this + 20); *v20 = a2; *(_DWORD *)(this + 20) = v20 + 1; return a2; } return 0; } if ( (_WORD)a2 != 0xFFFF ) { *(_WORD *)v11 = a2; v11 += 2; *(_DWORD *)(this + 20) = v11; } if ( !std::wfilebuf::_M_convert_to_external(this, v10, (v11 - v10) >> 1) ) return -1; v12 = *(_DWORD *)(this + 64); v13 = *(_DWORD *)(this + 48); *(_DWORD *)(this + 4) = v12; *(_DWORD *)(this + 8) = v12; *(_DWORD *)(this + 12) = v12; if ( ((v13 & 0x10) != 0 || (v13 & 1) != 0) && (v21 = *(_DWORD *)(this + 68), v21 > 1) ) { *(_DWORD *)(this + 20) = v12; *(_DWORD *)(this + 16) = v12; *(_DWORD *)(this + 24) = v12 + 2 * v21 - 2; } else { *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 24) = 0; } result = a2; if ( (_WORD)a2 == 0xFFFF ) return 0; return result; } // 4E3AC0: using guessed type __int16 var_1E[15]; //----- (004E3D10) -------------------------------------------------------- int __thiscall std::wfilebuf::pbackfail(char *this, int a2) { char v3; // di unsigned int v4; // eax 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; v3 = this[88]; *((_DWORD *)this + 1) = v9; *((_DWORD *)this + 2) = v9; *((_DWORD *)this + 3) = v9; *((_DWORD *)this + 6) = 0; this[74] = 0; } else { v3 = this[88]; v4 = *((_DWORD *)this + 2); if ( v4 > *((_DWORD *)this + 1) ) { *((_DWORD *)this + 2) = v4 - 2; v5 = *(unsigned __int16 *)(v4 - 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 ( v3 ) 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; } //----- (004E3E40) -------------------------------------------------------- int __fastcall std::wfilebuf::showmanyc(_DWORD *a1) { int v1; // edi FILE **v2; // ebp int v4; // ecx int v5; // edi int v6; // esi int v8; // edi v1 = a1[12]; if ( (v1 & 8) == 0 ) return -1; v2 = (FILE **)(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 (**)(void))(*(_DWORD *)a1[23] + 32))() + v6; } //----- (004E3ED0) -------------------------------------------------------- int __fastcall std::wfilebuf::underflow(int a1) { unsigned __int16 *v2; // eax int v3; // edi int v4; // ecx int v5; // eax signed int v6; // esi int v7; // ecx const void *Src; // eax signed int Size; // edi unsigned int v10; // edx signed int v11; // ecx char *v12; // ebp int v13; // ecx char *v14; // eax void *v15; // 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 unsigned int v29; // ecx char *v30; // eax unsigned int v31; // 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] void *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 = 2; if ( *(_DWORD *)(a1 + 68) >= 2u ) v3 = *(_DWORD *)(a1 + 68); 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; } Src = *(const void **)(a1 + 104); Size = *(_DWORD *)(a1 + 108) - (_DWORD)Src; v10 = v7 - Size; if ( v7 <= Size ) v10 = 0; v11 = *(_DWORD *)(a1 + 100); if ( *(_BYTE *)(a1 + 73) && *(_DWORD *)(a1 + 4) == *(_DWORD *)(a1 + 12) ) { if ( !Size ) { if ( v6 <= v11 ) { v12 = *(char **)(a1 + 96); goto LABEL_17; } v43 = v10; v37 = (char *)operator new[](v6); v10 = v43; v12 = v37; LABEL_62: if ( *(_DWORD *)(a1 + 96) ) { v40 = v10; operator delete[](*(void **)(a1 + 96)); v10 = v40; } *(_DWORD *)(a1 + 96) = v12; *(_DWORD *)(a1 + 100) = v6; LABEL_17: v13 = *(_DWORD *)(a1 + 56); v14 = &v12[Size]; *(_DWORD *)(a1 + 104) = v12; *(_DWORD *)(a1 + 108) = &v12[Size]; *(_DWORD *)(a1 + 60) = v13; if ( v10 ) { v16 = 0; goto LABEL_25; } v15 = *(void **)(a1 + 4); v16 = 0; v44 = v15; if ( v14 <= v12 ) { while ( 1 ) { LABEL_24: v14 = *(char **)(a1 + 108); v10 = 1; Size = (signed int)&v14[-*(_DWORD *)(a1 + 96)]; LABEL_25: if ( (signed int)(v10 + Size) > *(_DWORD *)(a1 + 100) ) std::__throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid"); v20 = std::__basic_file::xsgetn((FILE **)(a1 + 40), v14, v10); if ( v20 ) { if ( v20 == -1 ) goto LABEL_59; v17 = 0; } else { v17 = 1; } v15 = *(void **)(a1 + 4); v12 = *(char **)(a1 + 104); v14 = (char *)(*(_DWORD *)(a1 + 108) + v20); *(_DWORD *)(a1 + 108) = v14; v44 = v15; 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, void *, unsigned int, void **))(**(_DWORD **)(a1 + 92) + 16))( *(_DWORD *)(a1 + 92), a1 + 56, v12, v14, a1 + 104, v15, (unsigned int)v15 + 2 * v38, &v44); if ( v16 != 3 ) { v18 = ((int)v44 - *(_DWORD *)(a1 + 4)) >> 1; if ( v16 != 2 ) { v19 = v17 | (v44 != *(void **)(a1 + 4)); goto LABEL_23; } if ( (int)v44 - *(_DWORD *)(a1 + 4) <= 0 ) { if ( !v17 ) std::__throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file"); goto LABEL_41; } goto LABEL_54; } v14 = *(char **)(a1 + 108); v15 = *(void **)(a1 + 4); LABEL_44: v29 = *(_DWORD *)(a1 + 96); v30 = &v14[-v29]; v18 = (int)v30; v31 = (unsigned int)v30; if ( v38 < (unsigned int)v30 ) { v31 = v38; v18 = v38; } else if ( !v30 ) { LABEL_46: *(_DWORD *)(a1 + 104) = v29; v16 = 3; v19 = v17 | (v18 != 0); LABEL_23: if ( !v19 ) goto LABEL_24; if ( v18 > 0 ) goto LABEL_54; if ( v17 ) { 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("basic_filebuf::underflow incomplete character in file"); return -1; } LABEL_59: v34 = __errno(); std::__throw_ios_failure( (std::__ios_failure *)"basic_filebuf::underflow error reading the file", (std::runtime_error *)*v34); } memcpy(v15, *(const void **)(a1 + 96), 2 * v31); v29 = v31 + *(_DWORD *)(a1 + 96); goto LABEL_46; } if ( v6 <= v11 ) { v12 = *(char **)(a1 + 96); v10 = 0; LABEL_73: v42 = v10; memmove(v12, Src, Size); v12 = *(char **)(a1 + 96); v10 = v42; goto LABEL_17; } v36 = (char *)operator new[](v6); v10 = 0; v12 = v36; } else { if ( v6 <= v11 ) { v12 = *(char **)(a1 + 96); if ( !Size ) goto LABEL_17; goto LABEL_73; } v39 = v10; v35 = (char *)operator new[](v6); v10 = v39; v12 = v35; if ( !Size ) goto LABEL_62; } v41 = v10; memcpy(v12, *(const void **)(a1 + 104), Size); v10 = v41; goto LABEL_62; } v27 = std::__basic_file::xsgetn((FILE **)(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; } //----- (004E4380) -------------------------------------------------------- int __thiscall std::wfilebuf::basic_filebuf(int this, std::locale *a2) { int v3; // eax int v4; // edx int v5; // edi int v6; // ecx int v7; // eax int result; // eax int v9; // edi 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 + 10); v4 = *((_DWORD *)a2 + 17); *(_DWORD *)this = off_5600E0; v5 = *((_DWORD *)a2 + 14); v6 = *((_DWORD *)a2 + 16); *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 40) = v3; LOBYTE(v3) = *((_BYTE *)a2 + 44); *(_DWORD *)(this + 36) = 0; *(_BYTE *)(this + 44) = v3; v7 = *((_DWORD *)a2 + 12); *((_DWORD *)a2 + 10) = 0; *((_BYTE *)a2 + 44) = 0; *(_DWORD *)(this + 68) = v4; LOWORD(v4) = *((_WORD *)a2 + 36); *(_DWORD *)(this + 48) = v7; result = *((_DWORD *)a2 + 13); *(_WORD *)(this + 72) = v4; LOBYTE(v4) = *((_BYTE *)a2 + 74); *(_DWORD *)(this + 56) = v5; v9 = *((_DWORD *)a2 + 15); *(_BYTE *)(this + 74) = v4; LOWORD(v4) = *((_WORD *)a2 + 38); *(_DWORD *)(this + 64) = v6; *(_DWORD *)(this + 60) = v9; *((_DWORD *)a2 + 12) = 0; *(_DWORD *)(this + 52) = result; *((_DWORD *)a2 + 16) = 0; *((_DWORD *)a2 + 17) = 1; *((_WORD *)a2 + 36) = 0; *((_BYTE *)a2 + 74) = 0; *(_WORD *)(this + 76) = v4; v10 = *((_DWORD *)a2 + 20); *((_DWORD *)a2 + 20) = 0; *(_DWORD *)(this + 80) = v10; v11 = *((_DWORD *)a2 + 21); *((_DWORD *)a2 + 1) = 0; *(_DWORD *)(this + 84) = v11; LOBYTE(v11) = *((_BYTE *)a2 + 88); *((_DWORD *)a2 + 21) = 0; *(_BYTE *)(this + 88) = v11; v12 = *((_DWORD *)a2 + 23); *((_BYTE *)a2 + 88) = 0; *(_DWORD *)(this + 92) = v12; v13 = *((_DWORD *)a2 + 24); *((_DWORD *)a2 + 2) = 0; *(_DWORD *)(this + 96) = v13; v14 = *((_DWORD *)a2 + 25); *((_DWORD *)a2 + 24) = 0; *(_DWORD *)(this + 100) = v14; v15 = *((_DWORD *)a2 + 26); *((_DWORD *)a2 + 25) = 0; *(_DWORD *)(this + 104) = v15; v16 = *((_DWORD *)a2 + 27); *((_DWORD *)a2 + 26) = 0; *(_DWORD *)(this + 108) = v16; *((_DWORD *)a2 + 27) = 0; *((_DWORD *)a2 + 3) = 0; *((_DWORD *)a2 + 5) = 0; *((_DWORD *)a2 + 4) = 0; *((_DWORD *)a2 + 6) = 0; *((_DWORD *)a2 + 14) = result; *((_DWORD *)a2 + 15) = result; return result; } // 4E438F: variable 'v17' is possibly undefined // 5600E0: using guessed type int (*off_5600E0[2])(); //----- (004E44C0) -------------------------------------------------------- void __fastcall std::wfilebuf::basic_filebuf(int a1) { int v2; // [esp+20h] [ebp-4Ch] *(_DWORD *)a1 = &off_560464; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; v2 = a1 + 28; std::locale::locale((_DWORD *)(a1 + 28)); *(_DWORD *)a1 = off_5600E0; *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = 0; std::__basic_file::__basic_file((_BYTE *)(a1 + 40), a1 + 32); *(_WORD *)(a1 + 72) = 0; *(_DWORD *)(a1 + 48) = 0; *(_DWORD *)(a1 + 52) = 0; *(_DWORD *)(a1 + 56) = 0; *(_DWORD *)(a1 + 60) = 0; *(_DWORD *)(a1 + 64) = 0; *(_DWORD *)(a1 + 68) = 512; *(_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; if ( (unsigned __int8)std::has_facet>(v2) ) *(_DWORD *)(a1 + 92) = std::use_facet>(v2); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560464: using guessed type int (*off_560464)(); //----- (004E4660) -------------------------------------------------------- int __thiscall std::wfilebuf::basic_filebuf(int this, std::locale *a2) { int v3; // eax int v4; // edx int v5; // edi int v6; // ecx int v7; // eax int result; // eax int v9; // edi 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 + 10); v4 = *((_DWORD *)a2 + 17); *(_DWORD *)this = off_5600E0; v5 = *((_DWORD *)a2 + 14); v6 = *((_DWORD *)a2 + 16); *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 40) = v3; LOBYTE(v3) = *((_BYTE *)a2 + 44); *(_DWORD *)(this + 36) = 0; *(_BYTE *)(this + 44) = v3; v7 = *((_DWORD *)a2 + 12); *((_DWORD *)a2 + 10) = 0; *((_BYTE *)a2 + 44) = 0; *(_DWORD *)(this + 68) = v4; LOWORD(v4) = *((_WORD *)a2 + 36); *(_DWORD *)(this + 48) = v7; result = *((_DWORD *)a2 + 13); *(_WORD *)(this + 72) = v4; LOBYTE(v4) = *((_BYTE *)a2 + 74); *(_DWORD *)(this + 56) = v5; v9 = *((_DWORD *)a2 + 15); *(_BYTE *)(this + 74) = v4; LOWORD(v4) = *((_WORD *)a2 + 38); *(_DWORD *)(this + 64) = v6; *(_DWORD *)(this + 60) = v9; *((_DWORD *)a2 + 12) = 0; *(_DWORD *)(this + 52) = result; *((_DWORD *)a2 + 16) = 0; *((_DWORD *)a2 + 17) = 1; *((_WORD *)a2 + 36) = 0; *((_BYTE *)a2 + 74) = 0; *(_WORD *)(this + 76) = v4; v10 = *((_DWORD *)a2 + 20); *((_DWORD *)a2 + 20) = 0; *(_DWORD *)(this + 80) = v10; v11 = *((_DWORD *)a2 + 21); *((_DWORD *)a2 + 1) = 0; *(_DWORD *)(this + 84) = v11; LOBYTE(v11) = *((_BYTE *)a2 + 88); *((_DWORD *)a2 + 21) = 0; *(_BYTE *)(this + 88) = v11; v12 = *((_DWORD *)a2 + 23); *((_BYTE *)a2 + 88) = 0; *(_DWORD *)(this + 92) = v12; v13 = *((_DWORD *)a2 + 24); *((_DWORD *)a2 + 2) = 0; *(_DWORD *)(this + 96) = v13; v14 = *((_DWORD *)a2 + 25); *((_DWORD *)a2 + 24) = 0; *(_DWORD *)(this + 100) = v14; v15 = *((_DWORD *)a2 + 26); *((_DWORD *)a2 + 25) = 0; *(_DWORD *)(this + 104) = v15; v16 = *((_DWORD *)a2 + 27); *((_DWORD *)a2 + 26) = 0; *(_DWORD *)(this + 108) = v16; *((_DWORD *)a2 + 27) = 0; *((_DWORD *)a2 + 3) = 0; *((_DWORD *)a2 + 5) = 0; *((_DWORD *)a2 + 4) = 0; *((_DWORD *)a2 + 6) = 0; *((_DWORD *)a2 + 14) = result; *((_DWORD *)a2 + 15) = result; return result; } // 4E466F: variable 'v17' is possibly undefined // 5600E0: using guessed type int (*off_5600E0[2])(); //----- (004E47A0) -------------------------------------------------------- void __fastcall std::wfilebuf::basic_filebuf(int a1) { int v2; // [esp+20h] [ebp-4Ch] *(_DWORD *)a1 = &off_560464; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 0; *(_DWORD *)(a1 + 16) = 0; *(_DWORD *)(a1 + 20) = 0; *(_DWORD *)(a1 + 24) = 0; v2 = a1 + 28; std::locale::locale((_DWORD *)(a1 + 28)); *(_DWORD *)a1 = off_5600E0; *(_DWORD *)(a1 + 32) = 0; *(_DWORD *)(a1 + 36) = 0; std::__basic_file::__basic_file((_BYTE *)(a1 + 40), a1 + 32); *(_WORD *)(a1 + 72) = 0; *(_DWORD *)(a1 + 48) = 0; *(_DWORD *)(a1 + 52) = 0; *(_DWORD *)(a1 + 56) = 0; *(_DWORD *)(a1 + 60) = 0; *(_DWORD *)(a1 + 64) = 0; *(_DWORD *)(a1 + 68) = 512; *(_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; if ( (unsigned __int8)std::has_facet>(v2) ) *(_DWORD *)(a1 + 92) = std::use_facet>(v2); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560464: using guessed type int (*off_560464)(); //----- (004E4940) -------------------------------------------------------- void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1) { *(_DWORD *)a1 = off_5600E0; std::wfilebuf::close(a1); std::__basic_file::~__basic_file((int)a1 + 40); *(_DWORD *)a1 = &off_560464; std::locale::~locale((_DWORD **)a1 + 7); operator delete(a1); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560464: using guessed type int (*off_560464)(); //----- (004E49F0) -------------------------------------------------------- void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1) { *(_DWORD *)a1 = off_5600E0; std::wfilebuf::close(a1); std::__basic_file::~__basic_file((int)a1 + 40); *(_DWORD *)a1 = &off_560464; std::locale::~locale((_DWORD **)a1 + 7); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560464: using guessed type int (*off_560464)(); //----- (004E4A90) -------------------------------------------------------- void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1) { *(_DWORD *)a1 = off_5600E0; std::wfilebuf::close(a1); std::__basic_file::~__basic_file((int)a1 + 40); *(_DWORD *)a1 = &off_560464; std::locale::~locale((_DWORD **)a1 + 7); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560464: using guessed type int (*off_560464)(); //----- (004E4B30) -------------------------------------------------------- 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((struct _Unwind_Exception *)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; } //----- (004E4C50) -------------------------------------------------------- int __thiscall std::fstream::open(int *this, char *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 3, a2, a3) == 0; v5 = *this; if ( v4 ) return std::ios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004E4CC0) -------------------------------------------------------- int __thiscall std::fstream::open(int *this, wchar_t *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 3, a2, a3) == 0; v5 = *this; if ( v4 ) return std::ios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004E4D30) -------------------------------------------------------- int __thiscall std::fstream::open(int *this, char **a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 3, *a2, a3) == 0; v5 = *this; if ( v4 ) return std::ios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004E4DA0) -------------------------------------------------------- void __thiscall std::fstream::swap(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // edi std::ios_base *v4; // esi int v5; // edx char v6; // cl char v7; // cl int v8; // edx std::ios_base *v9; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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::swap((int)(this + 3), (int)(a2 + 3)); } // 4E4DE0: variable 'v9' is possibly undefined //----- (004E4E70) -------------------------------------------------------- struct _Unwind_Exception *__fastcall std::fstream::close(_DWORD *a1) { struct _Unwind_Exception *result; // eax result = std::filebuf::close((struct _Unwind_Exception *)(a1 + 3)); if ( !result ) return (struct _Unwind_Exception *)std::ios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); return result; } //----- (004E4EB0) -------------------------------------------------------- bool __fastcall std::fstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 52)); } //----- (004E4EC0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::fstream::basic_fstream(_DWORD *this, int *a2) { int v2; // eax int v3; // eax std::ios_base *v4; // ecx int v5; // eax std::ios_base *v6; // [esp+0h] [ebp-58h] struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] _DWORD *v8; // [esp+14h] [ebp-44h] v8 = this + 30; std::ios_base::ios_base(this + 30); *((_WORD *)this + 118) = 0; v2 = a2[1]; *this = &unk_55B44C; this[1] = v2; this[58] = 0; v3 = *a2; this[60] = 0; this[61] = 0; v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); this[30] = &unk_55B460; this[62] = 0; this[63] = 0; lpuexcpt = v4; std::ios_base::_M_move((int)v8, v4, v6); std::ios::_M_cache_locale(v8, (int)(this + 57)); this[60] = 0; v5 = *((_DWORD *)lpuexcpt + 28); *((_DWORD *)lpuexcpt + 28) = 0; this[58] = v5; *((_WORD *)this + 118) = *((_WORD *)lpuexcpt + 58); a2[1] = 0; *this = off_560124; this[30] = off_56014C; this[2] = off_560138; std::filebuf::basic_filebuf((int)(this + 3), (std::locale *)(a2 + 3)); this[60] = this + 3; } // 4E5052: positive sp value 4 has been found // 4E4F65: variable 'v6' is possibly undefined // 560124: using guessed type int (*off_560124[2])(); // 560138: using guessed type int (*off_560138[2])(); // 56014C: using guessed type int (*off_56014C[2])(); //----- (004E5060) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::fstream::basic_fstream(_DWORD *this, char *a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+24h] [ebp-44h] v5 = (int)(this + 30); std::ios_base::ios_base(this + 30); this[58] = 0; *((_WORD *)this + 118) = 0; this[60] = 0; this[61] = 0; this[62] = 0; this[63] = 0; *this = &unk_55B44C; this[30] = &unk_55B460; this[1] = 0; std::ios::init(v5, 0); this[2] = &unk_55B474; this[30] = &unk_55B488; std::ios::init(v5, 0); *this = off_560124; this[30] = off_56014C; this[2] = off_560138; std::filebuf::basic_filebuf((int)(this + 3)); std::ios::init(v5, (int)(this + 3)); v3 = std::filebuf::open(this + 3, a2, a3); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::ios::clear(v4, 0); else std::ios::clear(v4, v4[5] | 4); } // 4E5215: positive sp value 4 has been found // 560124: using guessed type int (*off_560124[2])(); // 560138: using guessed type int (*off_560138[2])(); // 56014C: using guessed type int (*off_56014C[2])(); //----- (004E5240) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::fstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+24h] [ebp-44h] v5 = (int)(this + 30); std::ios_base::ios_base(this + 30); this[58] = 0; *((_WORD *)this + 118) = 0; this[60] = 0; this[61] = 0; this[62] = 0; this[63] = 0; *this = &unk_55B44C; this[30] = &unk_55B460; this[1] = 0; std::ios::init(v5, 0); this[2] = &unk_55B474; this[30] = &unk_55B488; std::ios::init(v5, 0); *this = off_560124; this[30] = off_56014C; this[2] = off_560138; std::filebuf::basic_filebuf((int)(this + 3)); std::ios::init(v5, (int)(this + 3)); v3 = std::filebuf::open(this + 3, a2, a3); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::ios::clear(v4, 0); else std::ios::clear(v4, v4[5] | 4); } // 4E53F5: positive sp value 4 has been found // 560124: using guessed type int (*off_560124[2])(); // 560138: using guessed type int (*off_560138[2])(); // 56014C: using guessed type int (*off_56014C[2])(); //----- (004E5420) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::fstream::basic_fstream(_DWORD *this, char **a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+24h] [ebp-44h] v5 = (int)(this + 30); std::ios_base::ios_base(this + 30); this[58] = 0; *((_WORD *)this + 118) = 0; this[60] = 0; this[61] = 0; this[62] = 0; this[63] = 0; *this = &unk_55B44C; this[30] = &unk_55B460; this[1] = 0; std::ios::init(v5, 0); this[2] = &unk_55B474; this[30] = &unk_55B488; std::ios::init(v5, 0); *this = off_560124; this[30] = off_56014C; this[2] = off_560138; std::filebuf::basic_filebuf((int)(this + 3)); std::ios::init(v5, (int)(this + 3)); v3 = std::filebuf::open(this + 3, *a2, a3); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::ios::clear(v4, 0); else std::ios::clear(v4, v4[5] | 4); } // 4E55DD: positive sp value 4 has been found // 560124: using guessed type int (*off_560124[2])(); // 560138: using guessed type int (*off_560138[2])(); // 56014C: using guessed type int (*off_56014C[2])(); //----- (004E5610) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __fastcall std::fstream::basic_fstream(int a1) { int v1; // [esp+24h] [ebp-44h] v1 = a1 + 120; std::ios_base::ios_base((_DWORD *)(a1 + 120)); *(_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_55B44C; *(_DWORD *)(a1 + 120) = &unk_55B460; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_55B474; *(_DWORD *)(a1 + 120) = &unk_55B488; std::ios::init(v1, 0); *(_DWORD *)a1 = off_560124; *(_DWORD *)(a1 + 120) = off_56014C; *(_DWORD *)(a1 + 8) = off_560138; std::filebuf::basic_filebuf(a1 + 12); std::ios::init(v1, a1 + 12); } // 4E5779: positive sp value 4 has been found // 560124: using guessed type int (*off_560124[2])(); // 560138: using guessed type int (*off_560138[2])(); // 56014C: using guessed type int (*off_56014C[2])(); //----- (004E57B0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::fstream::basic_fstream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax int v8; // edx int v9; // eax int v10; // eax int v11; // edx int v12; // eax int v13; // edx std::ios_base *v14; // [esp+0h] [ebp-58h] std::ios_base *v15; // [esp+10h] [ebp-48h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-44h] v4 = a2[2]; v5 = a2[3]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; this[1] = a3[1]; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move((int)lpuexcpt, v15, v14); std::ios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); v7 = *((_DWORD *)v15 + 28); *((_DWORD *)lpuexcpt + 30) = 0; *((_DWORD *)v15 + 28) = 0; *((_DWORD *)lpuexcpt + 28) = v7; *((_WORD *)lpuexcpt + 58) = *((_WORD *)v15 + 58); v8 = a2[5]; a3[1] = 0; v9 = a2[4]; this[2] = v9; *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v8; 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; *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; this[2] = a2[9]; std::filebuf::basic_filebuf((int)(this + 3), (std::locale *)(a3 + 3)); *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 3); } // 4E58FE: positive sp value 4 has been found // 4E5816: variable 'v14' is possibly undefined //----- (004E5920) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::fstream::basic_fstream(int *this, int *a2, char *a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax _DWORD *v9; // ecx int v10; // eax int v11; // edx int v12; // edx int v13; // eax _DWORD *v14; // eax char *v15; // ebx _DWORD *v16; // ecx v5 = a2[2]; v6 = a2[3]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = a2[4]; this[2] = v8; v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); *v9 = a2[5]; std::ios::init((int)v9, 0); v10 = a2[1]; v11 = a2[6]; *this = v10; *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; this[2] = a2[7]; v12 = a2[8]; v13 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; this[2] = a2[9]; std::filebuf::basic_filebuf((int)(this + 3)); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); v14 = std::filebuf::open(this + 3, a3, a4); v15 = (char *)this + *(_DWORD *)(*this - 12); v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v14 ) std::ios::clear(v16, 0); else std::ios::clear(v16, *((_DWORD *)v15 + 5) | 4); } // 4E5AAE: positive sp value 4 has been found //----- (004E5B10) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::fstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax _DWORD *v9; // ecx int v10; // eax int v11; // edx int v12; // edx int v13; // eax _DWORD *v14; // eax char *v15; // ebx _DWORD *v16; // ecx v5 = a2[2]; v6 = a2[3]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = a2[4]; this[2] = v8; v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); *v9 = a2[5]; std::ios::init((int)v9, 0); v10 = a2[1]; v11 = a2[6]; *this = v10; *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; this[2] = a2[7]; v12 = a2[8]; v13 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; this[2] = a2[9]; std::filebuf::basic_filebuf((int)(this + 3)); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); v14 = std::filebuf::open(this + 3, a3, a4); v15 = (char *)this + *(_DWORD *)(*this - 12); v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v14 ) std::ios::clear(v16, 0); else std::ios::clear(v16, *((_DWORD *)v15 + 5) | 4); } // 4E5C9E: positive sp value 4 has been found //----- (004E5D00) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::fstream::basic_fstream(int *this, int *a2, char **a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax _DWORD *v9; // ecx int v10; // eax int v11; // edx int v12; // edx int v13; // eax _DWORD *v14; // eax char *v15; // ebx _DWORD *v16; // ecx v5 = a2[2]; v6 = a2[3]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = a2[4]; this[2] = v8; v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); *v9 = a2[5]; std::ios::init((int)v9, 0); v10 = a2[1]; v11 = a2[6]; *this = v10; *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; this[2] = a2[7]; v12 = a2[8]; v13 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; this[2] = a2[9]; std::filebuf::basic_filebuf((int)(this + 3)); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); v14 = std::filebuf::open(this + 3, *a3, a4); v15 = (char *)this + *(_DWORD *)(*this - 12); v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v14 ) std::ios::clear(v16, 0); else std::ios::clear(v16, *((_DWORD *)v15 + 5) | 4); } // 4E5E8E: positive sp value 4 has been found //----- (004E5EF0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::fstream::basic_fstream(int *this, int *a2) { int v3; // eax int v4; // ecx int v5; // edx int v6; // eax _DWORD *v7; // ecx int v8; // eax int v9; // edx int v10; // edx int v11; // eax v3 = a2[2]; v4 = a2[3]; v5 = *(_DWORD *)(v3 - 12); *this = v3; *(int *)((char *)this + v5) = v4; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); v6 = a2[4]; this[2] = v6; v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); *v7 = a2[5]; std::ios::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[8]; v11 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v10; this[2] = a2[9]; std::filebuf::basic_filebuf((int)(this + 3)); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); } // 4E6026: positive sp value 4 has been found //----- (004E6080) -------------------------------------------------------- void __fastcall std::fstream::~fstream(_DWORD *a1) { *a1 = off_560124; a1[30] = off_56014C; a1[2] = off_560138; a1[3] = off_5600A0; std::filebuf::close((struct _Unwind_Exception *)(a1 + 3)); std::__basic_file::~__basic_file((int)(a1 + 13)); a1[3] = &off_560424; std::locale::~locale((_DWORD **)a1 + 10); a1[2] = &unk_55B474; *a1 = &unk_55B44C; a1[1] = 0; a1[30] = &off_560E20; std::ios_base::~ios_base((int)(a1 + 30)); operator delete(a1); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560124: using guessed type int (*off_560124[2])(); // 560138: using guessed type int (*off_560138[2])(); // 56014C: using guessed type int (*off_56014C[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (004E6170) -------------------------------------------------------- void __fastcall std::fstream::~fstream(int a1) { *(_DWORD *)a1 = off_560124; *(_DWORD *)(a1 + 120) = off_56014C; *(_DWORD *)(a1 + 8) = off_560138; *(_DWORD *)(a1 + 12) = off_5600A0; std::filebuf::close((struct _Unwind_Exception *)(a1 + 12)); std::__basic_file::~__basic_file(a1 + 52); *(_DWORD *)(a1 + 12) = &off_560424; std::locale::~locale((_DWORD **)(a1 + 40)); *(_DWORD *)(a1 + 8) = &unk_55B474; *(_DWORD *)a1 = &unk_55B44C; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 120) = &off_560E20; std::ios_base::~ios_base(a1 + 120); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560124: using guessed type int (*off_560124[2])(); // 560138: using guessed type int (*off_560138[2])(); // 56014C: using guessed type int (*off_56014C[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (004E6250) -------------------------------------------------------- void __thiscall std::fstream::~fstream(int *this, int *a2) { int v3; // eax int v4; // eax int v5; // eax int v6; // eax int v7; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[8]; v4 = a2[9]; this[3] = (int)off_5600A0; this[2] = v4; std::filebuf::close((struct _Unwind_Exception *)(this + 3)); std::__basic_file::~__basic_file((int)(this + 13)); this[3] = (int)&off_560424; std::locale::~locale((_DWORD **)this + 10); v5 = a2[1]; *this = v5; *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[6]; this[2] = a2[7]; v6 = a2[4]; this[2] = v6; *(int *)((char *)this + *(_DWORD *)(v6 - 12) + 8) = a2[5]; v7 = a2[2]; *this = v7; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = a2[3]; this[1] = 0; } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (004E6360) -------------------------------------------------------- _DWORD *__thiscall std::fstream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // cl char v7; // cl int v8; // eax std::ios_base *v10; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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; } // 4E63A0: variable 'v10' is possibly undefined //----- (004E6440) -------------------------------------------------------- int __thiscall std::wfstream::open(int *this, char *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open(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); } //----- (004E64B0) -------------------------------------------------------- int __thiscall std::wfstream::open(int *this, wchar_t *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open(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); } //----- (004E6520) -------------------------------------------------------- int __thiscall std::wfstream::open(int *this, char **a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open(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); } //----- (004E6590) -------------------------------------------------------- void __thiscall std::wfstream::swap(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // edi std::ios_base *v4; // esi int v5; // edx __int16 v6; // cx int v7; // edx std::ios_base *v8; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = 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::swap((int)(this + 3), (int)(a2 + 3)); } // 4E65D0: variable 'v8' is possibly undefined //----- (004E6660) -------------------------------------------------------- struct _Unwind_Exception *__fastcall std::wfstream::close(_DWORD *a1) { struct _Unwind_Exception *result; // eax result = std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 3)); if ( !result ) return (struct _Unwind_Exception *)std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); return result; } //----- (004E66A0) -------------------------------------------------------- bool __fastcall std::wfstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 52)); } //----- (004E66B0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::wfstream::basic_fstream(_DWORD *this, int *a2) { int v2; // eax int v3; // eax std::ios_base *v4; // ecx int v5; // eax std::ios_base *v6; // [esp+0h] [ebp-58h] struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] _DWORD *v8; // [esp+14h] [ebp-44h] v8 = this + 31; std::ios_base::ios_base(this + 31); v2 = a2[1]; *((_WORD *)this + 120) = 0; *this = &unk_55B49C; this[1] = v2; this[59] = 0; v3 = *a2; *((_BYTE *)this + 242) = 0; this[61] = 0; v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); this[62] = 0; this[63] = 0; this[64] = 0; this[31] = &unk_55B4B0; lpuexcpt = v4; std::ios_base::_M_move((int)v8, v4, v6); std::wios::_M_cache_locale(v8, (int)(this + 58)); this[61] = 0; v5 = *((_DWORD *)lpuexcpt + 28); *((_DWORD *)lpuexcpt + 28) = 0; this[59] = v5; *((_WORD *)this + 120) = *((_WORD *)lpuexcpt + 58); *((_BYTE *)this + 242) = *((_BYTE *)lpuexcpt + 118); a2[1] = 0; *this = off_560160; this[31] = off_560188; this[2] = off_560174; std::wfilebuf::basic_filebuf((int)(this + 3), (std::locale *)(a2 + 3)); this[61] = this + 3; } // 4E6853: positive sp value 4 has been found // 4E675C: variable 'v6' is possibly undefined // 560160: using guessed type int (*off_560160[2])(); // 560174: using guessed type int (*off_560174[2])(); // 560188: using guessed type int (*off_560188[2])(); //----- (004E6860) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::wfstream::basic_fstream(_DWORD *this, char *a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+24h] [ebp-44h] v5 = (int)(this + 31); std::ios_base::ios_base(this + 31); this[59] = 0; *((_WORD *)this + 120) = 0; *((_BYTE *)this + 242) = 0; this[61] = 0; this[62] = 0; this[63] = 0; this[64] = 0; *this = &unk_55B49C; this[31] = &unk_55B4B0; this[1] = 0; std::wios::init(v5, 0); this[2] = &unk_55B500; this[31] = &unk_55B514; std::wios::init(v5, 0); *this = off_560160; this[31] = off_560188; this[2] = off_560174; std::wfilebuf::basic_filebuf((int)(this + 3)); std::wios::init(v5, (int)(this + 3)); v3 = std::wfilebuf::open(this + 3, a2, a3); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::wios::clear(v4, 0); else std::wios::clear(v4, v4[5] | 4); } // 4E6A25: positive sp value 4 has been found // 560160: using guessed type int (*off_560160[2])(); // 560174: using guessed type int (*off_560174[2])(); // 560188: using guessed type int (*off_560188[2])(); //----- (004E6A50) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::wfstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+24h] [ebp-44h] v5 = (int)(this + 31); std::ios_base::ios_base(this + 31); this[59] = 0; *((_WORD *)this + 120) = 0; *((_BYTE *)this + 242) = 0; this[61] = 0; this[62] = 0; this[63] = 0; this[64] = 0; *this = &unk_55B49C; this[31] = &unk_55B4B0; this[1] = 0; std::wios::init(v5, 0); this[2] = &unk_55B500; this[31] = &unk_55B514; std::wios::init(v5, 0); *this = off_560160; this[31] = off_560188; this[2] = off_560174; std::wfilebuf::basic_filebuf((int)(this + 3)); std::wios::init(v5, (int)(this + 3)); v3 = std::wfilebuf::open(this + 3, a2, a3); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::wios::clear(v4, 0); else std::wios::clear(v4, v4[5] | 4); } // 4E6C15: positive sp value 4 has been found // 560160: using guessed type int (*off_560160[2])(); // 560174: using guessed type int (*off_560174[2])(); // 560188: using guessed type int (*off_560188[2])(); //----- (004E6C40) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::wfstream::basic_fstream(_DWORD *this, char **a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+24h] [ebp-44h] v5 = (int)(this + 31); std::ios_base::ios_base(this + 31); this[59] = 0; *((_WORD *)this + 120) = 0; *((_BYTE *)this + 242) = 0; this[61] = 0; this[62] = 0; this[63] = 0; this[64] = 0; *this = &unk_55B49C; this[31] = &unk_55B4B0; this[1] = 0; std::wios::init(v5, 0); this[2] = &unk_55B500; this[31] = &unk_55B514; std::wios::init(v5, 0); *this = off_560160; this[31] = off_560188; this[2] = off_560174; std::wfilebuf::basic_filebuf((int)(this + 3)); std::wios::init(v5, (int)(this + 3)); v3 = std::wfilebuf::open(this + 3, *a2, a3); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::wios::clear(v4, 0); else std::wios::clear(v4, v4[5] | 4); } // 4E6E05: positive sp value 4 has been found // 560160: using guessed type int (*off_560160[2])(); // 560174: using guessed type int (*off_560174[2])(); // 560188: using guessed type int (*off_560188[2])(); //----- (004E6E30) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __fastcall std::wfstream::basic_fstream(int a1) { int v1; // [esp+24h] [ebp-44h] v1 = a1 + 124; std::ios_base::ios_base((_DWORD *)(a1 + 124)); *(_DWORD *)(a1 + 236) = 0; *(_WORD *)(a1 + 240) = 0; *(_BYTE *)(a1 + 242) = 0; *(_DWORD *)(a1 + 244) = 0; *(_DWORD *)(a1 + 248) = 0; *(_DWORD *)(a1 + 252) = 0; *(_DWORD *)(a1 + 256) = 0; *(_DWORD *)a1 = &unk_55B49C; *(_DWORD *)(a1 + 124) = &unk_55B4B0; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_55B500; *(_DWORD *)(a1 + 124) = &unk_55B514; std::wios::init(v1, 0); *(_DWORD *)a1 = off_560160; *(_DWORD *)(a1 + 124) = off_560188; *(_DWORD *)(a1 + 8) = off_560174; std::wfilebuf::basic_filebuf(a1 + 12); std::wios::init(v1, a1 + 12); } // 4E6FA0: positive sp value 4 has been found // 560160: using guessed type int (*off_560160[2])(); // 560174: using guessed type int (*off_560174[2])(); // 560188: using guessed type int (*off_560188[2])(); //----- (004E6FD0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::wfstream::basic_fstream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax int v8; // edx int v9; // eax int v10; // eax int v11; // edx int v12; // eax int v13; // edx std::ios_base *v14; // [esp+0h] [ebp-58h] std::ios_base *v15; // [esp+10h] [ebp-48h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-44h] v4 = a2[2]; v5 = a2[3]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; this[1] = a3[1]; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move((int)lpuexcpt, v15, v14); std::wios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); v7 = *((_DWORD *)v15 + 28); *((_DWORD *)lpuexcpt + 30) = 0; *((_DWORD *)v15 + 28) = 0; *((_DWORD *)lpuexcpt + 28) = v7; *((_WORD *)lpuexcpt + 58) = *((_WORD *)v15 + 58); *((_BYTE *)lpuexcpt + 118) = *((_BYTE *)v15 + 118); a3[1] = 0; v8 = a2[5]; v9 = a2[4]; this[2] = v9; *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v8; 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; *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; this[2] = a2[9]; std::wfilebuf::basic_filebuf((int)(this + 3), (std::locale *)(a3 + 3)); *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 3); } // 4E7125: positive sp value 4 has been found // 4E7036: variable 'v14' is possibly undefined //----- (004E7140) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::wfstream::basic_fstream(int *this, int *a2, char *a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax _DWORD *v9; // ecx int v10; // eax int v11; // edx int v12; // edx int v13; // eax _DWORD *v14; // eax char *v15; // ebx _DWORD *v16; // ecx v5 = a2[2]; v6 = a2[3]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = a2[4]; this[2] = v8; v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); *v9 = a2[5]; std::wios::init((int)v9, 0); v10 = a2[1]; v11 = a2[6]; *this = v10; *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; this[2] = a2[7]; v12 = a2[8]; v13 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; this[2] = a2[9]; std::wfilebuf::basic_filebuf((int)(this + 3)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); v14 = std::wfilebuf::open(this + 3, a3, a4); v15 = (char *)this + *(_DWORD *)(*this - 12); v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v14 ) std::wios::clear(v16, 0); else std::wios::clear(v16, *((_DWORD *)v15 + 5) | 4); } // 4E72CE: positive sp value 4 has been found //----- (004E7330) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::wfstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax _DWORD *v9; // ecx int v10; // eax int v11; // edx int v12; // edx int v13; // eax _DWORD *v14; // eax char *v15; // ebx _DWORD *v16; // ecx v5 = a2[2]; v6 = a2[3]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = a2[4]; this[2] = v8; v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); *v9 = a2[5]; std::wios::init((int)v9, 0); v10 = a2[1]; v11 = a2[6]; *this = v10; *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; this[2] = a2[7]; v12 = a2[8]; v13 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; this[2] = a2[9]; std::wfilebuf::basic_filebuf((int)(this + 3)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); v14 = std::wfilebuf::open(this + 3, a3, a4); v15 = (char *)this + *(_DWORD *)(*this - 12); v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v14 ) std::wios::clear(v16, 0); else std::wios::clear(v16, *((_DWORD *)v15 + 5) | 4); } // 4E74BE: positive sp value 4 has been found //----- (004E7520) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::wfstream::basic_fstream(int *this, int *a2, char **a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax _DWORD *v9; // ecx int v10; // eax int v11; // edx int v12; // edx int v13; // eax _DWORD *v14; // eax char *v15; // ebx _DWORD *v16; // ecx v5 = a2[2]; v6 = a2[3]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = a2[4]; this[2] = v8; v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); *v9 = a2[5]; std::wios::init((int)v9, 0); v10 = a2[1]; v11 = a2[6]; *this = v10; *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; this[2] = a2[7]; v12 = a2[8]; v13 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; this[2] = a2[9]; std::wfilebuf::basic_filebuf((int)(this + 3)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); v14 = std::wfilebuf::open(this + 3, *a3, a4); v15 = (char *)this + *(_DWORD *)(*this - 12); v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v14 ) std::wios::clear(v16, 0); else std::wios::clear(v16, *((_DWORD *)v15 + 5) | 4); } // 4E76AE: positive sp value 4 has been found //----- (004E7710) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::wfstream::basic_fstream(int *this, int *a2) { int v3; // eax int v4; // ecx int v5; // edx int v6; // eax _DWORD *v7; // ecx int v8; // eax int v9; // edx int v10; // edx int v11; // eax v3 = a2[2]; v4 = a2[3]; v5 = *(_DWORD *)(v3 - 12); *this = v3; *(int *)((char *)this + v5) = v4; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v3 - 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[8]; v11 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v10; this[2] = a2[9]; std::wfilebuf::basic_filebuf((int)(this + 3)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); } // 4E7846: positive sp value 4 has been found //----- (004E78A0) -------------------------------------------------------- void __fastcall std::wfstream::~wfstream(_DWORD *a1) { *a1 = off_560160; a1[31] = off_560188; a1[2] = off_560174; a1[3] = off_5600E0; std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 3)); std::__basic_file::~__basic_file((int)(a1 + 13)); a1[3] = &off_560464; std::locale::~locale((_DWORD **)a1 + 10); a1[2] = &unk_55B500; *a1 = &unk_55B49C; a1[1] = 0; a1[31] = &off_560E30; std::ios_base::~ios_base((int)(a1 + 31)); operator delete(a1); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560160: using guessed type int (*off_560160[2])(); // 560174: using guessed type int (*off_560174[2])(); // 560188: using guessed type int (*off_560188[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (004E7990) -------------------------------------------------------- void __fastcall std::wfstream::~wfstream(int a1) { *(_DWORD *)a1 = off_560160; *(_DWORD *)(a1 + 124) = off_560188; *(_DWORD *)(a1 + 8) = off_560174; *(_DWORD *)(a1 + 12) = off_5600E0; std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 12)); std::__basic_file::~__basic_file(a1 + 52); *(_DWORD *)(a1 + 12) = &off_560464; std::locale::~locale((_DWORD **)(a1 + 40)); *(_DWORD *)(a1 + 8) = &unk_55B500; *(_DWORD *)a1 = &unk_55B49C; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 124) = &off_560E30; std::ios_base::~ios_base(a1 + 124); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560160: using guessed type int (*off_560160[2])(); // 560174: using guessed type int (*off_560174[2])(); // 560188: using guessed type int (*off_560188[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (004E7A70) -------------------------------------------------------- void __thiscall std::wfstream::~wfstream(int *this, int *a2) { int v3; // eax int v4; // eax int v5; // eax int v6; // eax int v7; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[8]; v4 = a2[9]; this[3] = (int)off_5600E0; this[2] = v4; std::wfilebuf::close((struct _Unwind_Exception *)(this + 3)); std::__basic_file::~__basic_file((int)(this + 13)); this[3] = (int)&off_560464; std::locale::~locale((_DWORD **)this + 10); v5 = a2[1]; *this = v5; *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[6]; this[2] = a2[7]; v6 = a2[4]; this[2] = v6; *(int *)((char *)this + *(_DWORD *)(v6 - 12) + 8) = a2[5]; v7 = a2[2]; *this = v7; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = a2[3]; this[1] = 0; } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560464: using guessed type int (*off_560464)(); //----- (004E7B80) -------------------------------------------------------- _DWORD *__thiscall std::wfstream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // cx int v7; // eax std::ios_base *v9; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = 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; } // 4E7BC0: variable 'v9' is possibly undefined //----- (004E7C60) -------------------------------------------------------- _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) { char *v2; // edi int v3; // ecx char v6; // [esp+6Bh] [ebp-1Dh] BYREF int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( v6 ) { v7[0] = 0; v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 48))( v3, *((_DWORD *)v2 + 30), 0xFFFF, 0, 0xFFFF, (int)this + *(_DWORD *)(*this - 12), v7, a2); if ( v7[0] ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); } return this; } // 4E7C60: using guessed type int var_1C[7]; //----- (004E7E20) -------------------------------------------------------- _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) { char *v2; // edi int v3; // ecx char v6; // [esp+6Bh] [ebp-1Dh] BYREF int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( v6 ) { v7[0] = 0; v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 8))( v3, *((_DWORD *)v2 + 30), 0xFFFF, 0, 0xFFFF, (int)this + *(_DWORD *)(*this - 12), v7, a2); if ( v7[0] ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); } return this; } // 4E7E20: using guessed type int var_1C[7]; //----- (004E7FE0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) { char *v2; // edi int v3; // ecx char v6; // [esp+6Bh] [ebp-1Dh] BYREF int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( v6 ) { v7[0] = 0; v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 40))( v3, *((_DWORD *)v2 + 30), 0xFFFF, 0, 0xFFFF, (int)this + *(_DWORD *)(*this - 12), v7, a2); if ( v7[0] ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); } return this; } // 4E7FE0: using guessed type int var_1C[7]; //----- (004E81A0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) { char *v2; // edi int v3; // ecx char v6; // [esp+6Bh] [ebp-1Dh] BYREF int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( v6 ) { v7[0] = 0; v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 44))( v3, *((_DWORD *)v2 + 30), 0xFFFF, 0, 0xFFFF, (int)this + *(_DWORD *)(*this - 12), v7, a2); if ( v7[0] ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); } return this; } // 4E81A0: using guessed type int var_1C[7]; //----- (004E8360) -------------------------------------------------------- _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) { char *v2; // edi int v3; // ecx char v6; // [esp+6Bh] [ebp-1Dh] BYREF int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( v6 ) { v7[0] = 0; v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 36))( v3, *((_DWORD *)v2 + 30), 0xFFFF, 0, 0xFFFF, (int)this + *(_DWORD *)(*this - 12), v7, a2); if ( v7[0] ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); } return this; } // 4E8360: using guessed type int var_1C[7]; //----- (004E8520) -------------------------------------------------------- _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) { char *v2; // edi int v3; // ecx char v6; // [esp+6Bh] [ebp-1Dh] BYREF int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( v6 ) { v7[0] = 0; v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 20))( v3, *((_DWORD *)v2 + 30), 0xFFFF, 0, 0xFFFF, (int)this + *(_DWORD *)(*this - 12), v7, a2); if ( v7[0] ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); } return this; } // 4E8520: using guessed type int var_1C[7]; //----- (004E86E0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) { char *v2; // edi int v3; // ecx char v6; // [esp+6Bh] [ebp-1Dh] BYREF int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( v6 ) { v7[0] = 0; v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 12))( v3, *((_DWORD *)v2 + 30), 0xFFFF, 0, 0xFFFF, (int)this + *(_DWORD *)(*this - 12), v7, a2); if ( v7[0] ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); } return this; } // 4E86E0: using guessed type int var_1C[7]; //----- (004E88A0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) { char *v2; // edi int v3; // ecx char v6; // [esp+6Bh] [ebp-1Dh] BYREF int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( v6 ) { v7[0] = 0; v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 24))( v3, *((_DWORD *)v2 + 30), 0xFFFF, 0, 0xFFFF, (int)this + *(_DWORD *)(*this - 12), v7, a2); if ( v7[0] ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); } return this; } // 4E88A0: using guessed type int var_1C[7]; //----- (004E8A60) -------------------------------------------------------- _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) { char *v2; // edi int v3; // ecx char v6; // [esp+6Bh] [ebp-1Dh] BYREF int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( v6 ) { v7[0] = 0; v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 16))( v3, *((_DWORD *)v2 + 30), 0xFFFF, 0, 0xFFFF, (int)this + *(_DWORD *)(*this - 12), v7, a2); if ( v7[0] ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); } return this; } // 4E8A60: using guessed type int var_1C[7]; //----- (004E8C20) -------------------------------------------------------- _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) { char *v2; // edi int v3; // ecx char v6; // [esp+6Bh] [ebp-1Dh] BYREF int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( v6 ) { v7[0] = 0; v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 28))( v3, *((_DWORD *)v2 + 30), 0xFFFF, 0, 0xFFFF, (int)this + *(_DWORD *)(*this - 12), v7, a2); if ( v7[0] ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); } return this; } // 4E8C20: using guessed type int var_1C[7]; //----- (004E8DE0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) { char *v2; // edi int v3; // ecx char v6; // [esp+6Bh] [ebp-1Dh] BYREF int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( v6 ) { v7[0] = 0; v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 32))( v3, *((_DWORD *)v2 + 30), 0xFFFF, 0, 0xFFFF, (int)this + *(_DWORD *)(*this - 12), v7, a2); if ( v7[0] ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); } return this; } // 4E8DE0: using guessed type int var_1C[7]; //----- (004E8FA0) -------------------------------------------------------- _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); } //----- (004E8FF0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3, __int16 a4) { int v4; // ecx int v6; // eax __int16 *v7; // eax __int16 v8; // ax int v9; // edx __int16 v10; // dx __int16 *v11; // eax __int16 *v12; // eax int v13; // edx struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] char v16[25]; // [esp+6Fh] [ebp-19h] BYREF this[1] = 0; std::wistream::sentry::sentry(v16, this, 1); if ( !v16[0] ) { v4 = this[1]; goto LABEL_3; } lpuexcpt = *(struct _Unwind_Exception **)((char *)this + *(_DWORD *)(*this - 12) + 120); v7 = (__int16 *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v7 >= *((_DWORD *)lpuexcpt + 3) ) v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); else v8 = *v7; v4 = this[1]; v9 = v4 + 1; if ( a3 <= v4 + 1 ) { LABEL_29: if ( v8 != -1 ) goto LABEL_3; goto LABEL_30; } if ( v8 == -1 ) { LABEL_30: if ( a3 > 0 ) *a2 = 0; v6 = 6; if ( !v4 ) { LABEL_8: std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v6); return this; } goto LABEL_33; } if ( a4 == v8 ) { LABEL_3: if ( a3 > 0 ) *a2 = 0; if ( !v4 ) { v6 = 4; goto LABEL_8; } return this; } while ( 1 ) { *a2++ = v8; this[1] = v9; v12 = (__int16 *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v12 < *((_DWORD *)lpuexcpt + 3) ) { v10 = *v12; *((_DWORD *)lpuexcpt + 2) = v12 + 1; if ( v10 == -1 ) goto LABEL_23; } else if ( (*(unsigned __int16 (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == 0xFFFF ) { LABEL_23: v13 = this[1]; if ( a3 > 0 ) { *a2 = 0; v6 = 2; if ( v13 ) goto LABEL_8; goto LABEL_25; } if ( !v13 ) { v6 = 2; goto LABEL_25; } LABEL_33: v6 = 2; goto LABEL_8; } v11 = (__int16 *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v11 >= *((_DWORD *)lpuexcpt + 3) ) v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); else v8 = *v11; v4 = this[1]; v9 = v4 + 1; if ( v4 + 1 >= a3 ) goto LABEL_29; if ( v8 == -1 ) break; if ( a4 == v8 ) { v6 = 0; goto LABEL_35; } } v6 = 2; LABEL_35: if ( a3 > 0 ) *a2 = 0; if ( !v4 ) { LABEL_25: v6 |= 4u; goto LABEL_8; } if ( v6 ) goto LABEL_8; return this; } // 4E8FF0: using guessed type char var_19[25]; //----- (004E9350) -------------------------------------------------------- _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); } //----- (004E93A0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2, __int16 a3) { int v3; // eax unsigned __int16 *v5; // eax int v6; // edx __int16 *v7; // eax __int16 v8; // dx _WORD *v9; // eax _WORD *v10; // eax struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] char v13[25]; // [esp+6Fh] [ebp-19h] BYREF this[1] = 0; std::wistream::sentry::sentry(v13, this, 1); if ( v13[0] ) { lpuexcpt = *(struct _Unwind_Exception **)((char *)this + *(_DWORD *)(*this - 12) + 120); v5 = (unsigned __int16 *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v5 >= *((_DWORD *)lpuexcpt + 3) ) v6 = (*(unsigned __int16 (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); else v6 = *v5; if ( (_WORD)v6 != 0xFFFF ) { if ( a3 == (_WORD)v6 ) goto LABEL_2; while ( 1 ) { v10 = (_WORD *)a2[5]; if ( (unsigned int)v10 < a2[6] ) { *v10 = v6; a2[5] = v10 + 1; } else if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v6) == 0xFFFF ) { goto LABEL_2; } ++this[1]; v7 = (__int16 *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v7 >= *((_DWORD *)lpuexcpt + 3) ) { v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt); } else { v8 = *v7; *((_DWORD *)lpuexcpt + 2) = v7 + 1; } if ( v8 == -1 ) break; v9 = (_WORD *)*((_DWORD *)lpuexcpt + 2); v6 = (unsigned int)v9 >= *((_DWORD *)lpuexcpt + 3) ? (*(unsigned __int16 (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt) : (unsigned __int16)*v9; if ( (_WORD)v6 == 0xFFFF ) break; if ( a3 == (_WORD)v6 ) goto LABEL_2; } } v3 = this[1] == 0 ? 6 : 2; goto LABEL_4; } LABEL_2: if ( !this[1] ) { v3 = 4; LABEL_4: std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v3); } return this; } // 4E93A0: using guessed type char var_19[25]; //----- (004E9630) -------------------------------------------------------- _DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2) { int v2; // eax _DWORD *v4; // ecx __int16 *v5; // eax __int16 v6; // dx char v8[25]; // [esp+5Fh] [ebp-19h] BYREF this[1] = 0; std::wistream::sentry::sentry(v8, this, 1); if ( v8[0] ) { v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); v5 = (__int16 *)v4[2]; if ( (unsigned int)v5 >= v4[3] ) { v6 = (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4); } else { v6 = *v5; v4[2] = v5 + 1; } if ( v6 != -1 ) { this[1] = 1; *a2 = v6; return this; } v2 = this[1] == 0 ? 6 : 2; goto LABEL_4; } if ( !this[1] ) { v2 = 4; LABEL_4: std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v2); } return this; } // 4E9630: using guessed type char var_19[25]; //----- (004E97F0) -------------------------------------------------------- int __fastcall std::wistream::get(_DWORD *a1) { int v1; // eax _DWORD *v3; // ecx unsigned __int16 *v4; // eax unsigned __int16 v5; // dx unsigned __int16 lpuexcpt; // [esp+14h] [ebp-64h] char v8[25]; // [esp+5Fh] [ebp-19h] BYREF a1[1] = 0; std::wistream::sentry::sentry(v8, a1, 1); if ( v8[0] ) { v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v4 = (unsigned __int16 *)v3[2]; if ( (unsigned int)v4 >= v3[3] ) { lpuexcpt = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); } else { v5 = *v4; v3[2] = v4 + 1; lpuexcpt = v5; } if ( lpuexcpt != 0xFFFF ) { a1[1] = 1; return lpuexcpt; } v1 = a1[1] == 0 ? 6 : 2; goto LABEL_4; } if ( !a1[1] ) { v1 = 4; LABEL_4: std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | v1); } return (unsigned __int16)-1; } // 4E97F0: using guessed type char var_19[25]; //----- (004E99C0) -------------------------------------------------------- int __fastcall std::wistream::peek(_DWORD *a1) { _DWORD *v2; // ecx unsigned __int16 *v3; // eax unsigned __int16 lpuexcpt; // [esp+14h] [ebp-64h] char v6[25]; // [esp+5Fh] [ebp-19h] BYREF a1[1] = 0; std::wistream::sentry::sentry(v6, a1, 1); lpuexcpt = -1; if ( v6[0] ) { v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v3 = (unsigned __int16 *)v2[2]; if ( (unsigned int)v3 >= v2[3] ) lpuexcpt = (*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); else lpuexcpt = *v3; if ( lpuexcpt == 0xFFFF ) std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); } return lpuexcpt; } // 4E99C0: using guessed type char var_19[25]; //----- (004E9B70) -------------------------------------------------------- _DWORD *__thiscall std::wistream::read(_DWORD *this, int a2, int a3) { int v3; // ecx int v4; // eax char v7[25]; // [esp+5Fh] [ebp-19h] BYREF this[1] = 0; std::wistream::sentry::sentry(v7, this, 1); if ( v7[0] ) { v3 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); v4 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v3 + 32))(v3, a2, a3); this[1] = v4; if ( a3 != v4 ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 6); } return this; } // 4E9B70: using guessed type char var_19[25]; //----- (004E9D00) -------------------------------------------------------- void __thiscall std::wistream::swap(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // edx __int16 v6; // cx int v7; // edx std::ios_base *v8; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = 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; } // 4E9D3D: variable 'v8' is possibly undefined //----- (004E9DC0) -------------------------------------------------------- int __fastcall std::wistream::sync(_DWORD *a1) { int v1; // ecx struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] char v5[25]; // [esp+5Fh] [ebp-19h] BYREF std::wistream::sentry::sentry(v5, a1, 1); if ( !v5[0] ) return -1; v1 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); if ( !v1 ) return -1; lpuexcpt = (struct _Unwind_Exception *)(*(int (__fastcall **)(int))(*(_DWORD *)v1 + 24))(v1); if ( lpuexcpt != (struct _Unwind_Exception *)-1 ) return 0; std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); return (int)lpuexcpt; } // 4E9DC0: using guessed type char var_19[25]; //----- (004E9F50) -------------------------------------------------------- _DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4, int a5) { char *v5; // edi _DWORD *v6; // eax int v7; // edi void (__thiscall *v8)(int *, _DWORD *, int, int, int, int, int); // eax _DWORD *v10; // [esp+0h] [ebp-B8h] char v12; // [esp+7Fh] [ebp-39h] BYREF int v13[14]; // [esp+80h] [ebp-38h] BYREF std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) & 0xFFFFFFFD); std::wistream::sentry::sentry(&v12, this, 1); if ( v12 ) { v5 = (char *)this + *(_DWORD *)(*this - 12); if ( (v5[20] & 5) == 0 ) { v6 = (_DWORD *)*((_DWORD *)v5 + 30); v7 = *v6; v13[6] = a4; v10 = v6; v8 = *(void (__thiscall **)(int *, _DWORD *, int, int, int, int, int))(v7 + 20); v13[4] = a2; v13[5] = a3; v13[7] = a5; v8(v13, v10, a2, a3, a4, a5, 8); if ( (v13[0] & v13[1]) == -1 ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); } } return this; } //----- (004EA190) -------------------------------------------------------- _DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4) { char *v4; // edi char v7; // [esp+6Fh] [ebp-29h] BYREF int v8[10]; // [esp+70h] [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 ) { v4 = (char *)this + *(_DWORD *)(*this - 12); if ( (v4[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v4 + 30) + 16))( v8, *((_DWORD *)v4 + 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; } //----- (004EA360) -------------------------------------------------------- _DWORD *__thiscall std::wistream::tellg(_DWORD *this, _DWORD *a2) { char *v2; // esi char v5; // [esp+6Fh] [ebp-29h] BYREF int v6[10]; // [esp+70h] [ebp-28h] BYREF *this = -1; this[1] = -1; this[2] = 0; std::wistream::sentry::sentry(&v5, a2, 1); if ( v5 ) { v2 = (char *)a2 + *(_DWORD *)(*a2 - 12); if ( (v2[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v2 + 30) + 16))( v6, *((_DWORD *)v2 + 30), 0, 0, 1, 8); *this = v6[0]; this[1] = v6[1]; this[2] = v6[2]; } } return this; } //----- (004EA510) -------------------------------------------------------- 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 v10[25]; // [esp+5Fh] [ebp-19h] 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(v10, a1, 1); if ( !v10[0] ) return a1; v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v4 = (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)); if ( !v3 ) { LABEL_8: std::wios::clear(v4, v4[5] | 1); return a1; } v5 = v3[2]; if ( v3[1] >= v5 ) { v7 = (*(int (__thiscall **)(_DWORD *, int))(*v3 + 44))(v3, 0xFFFF); } else { v6 = v5 - 2; v7 = *(_WORD *)(v5 - 2); v3[2] = v6; } if ( v7 == -1 ) { v4 = (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)); goto LABEL_8; } return a1; } // 4EA510: using guessed type char var_19[25]; //----- (004EA6E0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2) { __int16 *v3; // eax __int16 v4; // dx signed int i; // eax unsigned int v6; // esi __int16 *v7; // ecx int v8; // edx __int16 *v9; // ecx __int16 v10; // ax __int16 *v11; // eax _DWORD *v12; // [esp+1Ch] [ebp-6Ch] char v13; // [esp+23h] [ebp-65h] char lpuexcpt; // [esp+24h] [ebp-64h] _DWORD *v15; // [esp+28h] [ebp-60h] char v16[25]; // [esp+6Fh] [ebp-19h] BYREF v15 = this; if ( a2 == 1 ) return std::wistream::ignore(this); this[1] = 0; std::wistream::sentry::sentry(v16, this, 1); if ( a2 > 0 ) { lpuexcpt = v16[0]; if ( v16[0] ) { v12 = *(_DWORD **)((char *)v15 + *(_DWORD *)(*v15 - 12) + 120); v3 = (__int16 *)v12[2]; if ( (unsigned int)v3 >= v12[3] ) v4 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); else v4 = *v3; v13 = 0; for ( i = v15[1]; ; i = 0x80000000 ) { LABEL_9: if ( a2 > i ) { while ( v4 != -1 ) { v6 = v12[3]; v7 = (__int16 *)v12[2]; v8 = (int)(v6 - (_DWORD)v7) >> 1; if ( v8 > a2 - i ) v8 = a2 - i; if ( v8 <= 1 ) { v15[1] = i + 1; if ( (unsigned int)v7 >= v6 ) { v10 = (*(int (__fastcall **)(_DWORD *))(*v12 + 40))(v12); } else { v10 = *v7; v12[2] = v7 + 1; } if ( v10 != -1 ) { v11 = (__int16 *)v12[2]; if ( (unsigned int)v11 < v12[3] ) { v4 = *v11; i = v15[1]; goto LABEL_9; } LABEL_27: v4 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); i = v15[1]; goto LABEL_9; } break; } v9 = &v7[v8]; i += v8; v12[2] = v9; v15[1] = i; if ( v6 <= (unsigned int)v9 ) goto LABEL_27; v4 = *v9; if ( a2 <= i ) goto LABEL_16; } LABEL_24: if ( v13 ) v15[1] = 0x7FFFFFFF; LABEL_26: std::wios::clear( (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 2); return v15; } LABEL_16: if ( a2 != 0x7FFFFFFF ) break; if ( v4 == -1 ) goto LABEL_24; v15[1] = 0x80000000; v13 = lpuexcpt; } if ( v13 ) v15[1] = 0x7FFFFFFF; if ( v4 == -1 ) goto LABEL_26; } } return v15; } // 4EA6E0: using guessed type char var_19[25]; //----- (004EA9E0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2, __int16 a3) { __int16 *v4; // eax __int16 v5; // ax signed int i; // ecx unsigned int v7; // edi __int16 *v8; // esi int v9; // ebx int v10; // edx int v11; // eax _WORD *v12; // eax __int16 *v13; // eax unsigned int v14; // eax __int16 v15; // ax __int16 *v16; // eax _DWORD *v17; // [esp+28h] [ebp-70h] char v18; // [esp+2Eh] [ebp-6Ah] char v19; // [esp+2Fh] [ebp-69h] _DWORD *v20; // [esp+38h] [ebp-60h] char v21[25]; // [esp+7Fh] [ebp-19h] BYREF v20 = this; if ( a3 == -1 ) return std::wistream::ignore(this, a2); this[1] = 0; std::wistream::sentry::sentry(v21, this, 1); if ( a2 > 0 ) { v19 = v21[0]; if ( v21[0] ) { v17 = *(_DWORD **)((char *)v20 + *(_DWORD *)(*v20 - 12) + 120); v4 = (__int16 *)v17[2]; if ( (unsigned int)v4 >= v17[3] ) v5 = (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17); else v5 = *v4; v18 = 0; LABEL_9: for ( i = v20[1]; a2 <= i; i = 0x80000000 ) { LABEL_22: if ( a2 != 0x7FFFFFFF ) { if ( v18 ) goto LABEL_29; goto LABEL_30; } if ( v5 == -1 ) goto LABEL_37; if ( v5 == a3 ) { if ( !v18 ) goto LABEL_33; LABEL_29: v20[1] = 0x7FFFFFFF; LABEL_30: if ( v5 != -1 ) { if ( v5 != a3 ) return v20; LABEL_32: i = v20[1]; LABEL_33: if ( i != 0x7FFFFFFF ) LABEL_34: v20[1] = i + 1; v14 = v17[2]; if ( v14 >= v17[3] ) (*(void (__fastcall **)(_DWORD *))(*v17 + 40))(v17); else v17[2] = v14 + 2; return v20; } LABEL_39: std::wios::clear( (_DWORD *)((char *)v20 + *(_DWORD *)(*v20 - 12)), *(_DWORD *)((char *)v20 + *(_DWORD *)(*v20 - 12) + 20) | 2); return v20; } v20[1] = 0x80000000; v18 = v19; } while ( v5 != -1 ) { if ( v5 == a3 ) { if ( a2 == 0x7FFFFFFF ) { if ( !v18 ) goto LABEL_34; } else if ( !v18 ) { goto LABEL_32; } goto LABEL_29; } v7 = v17[3]; v8 = (__int16 *)v17[2]; v9 = a2 - i; if ( (int)(v7 - (_DWORD)v8) >> 1 <= a2 - i ) v9 = (v17[3] - (int)v8) >> 1; if ( v9 <= 1 ) { v20[1] = i + 1; if ( v7 <= (unsigned int)v8 ) { v15 = (*(int (__fastcall **)(_DWORD *))(*v17 + 40))(v17); } else { v15 = *v8; v17[2] = v8 + 1; } if ( v15 != -1 ) { v16 = (__int16 *)v17[2]; if ( (unsigned int)v16 < v17[3] ) { v5 = *v16; i = v20[1]; goto LABEL_9; } LABEL_45: v5 = (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17); i = v20[1]; goto LABEL_9; } break; } v10 = v9; v11 = v9; if ( v8 ) { v12 = (_WORD *)v17[2]; while ( a3 != *v12 ) { ++v12; if ( !--v10 ) { v11 = v9; goto LABEL_20; } } v11 = v12 - v8; v9 = v11; } LABEL_20: v13 = &v8[v11]; i += v9; v17[2] = v13; v20[1] = i; if ( v7 <= (unsigned int)v13 ) goto LABEL_45; v5 = *v13; if ( a2 <= i ) goto LABEL_22; } LABEL_37: if ( v18 ) v20[1] = 0x7FFFFFFF; goto LABEL_39; } } return v20; } // 4EA9E0: using guessed type char var_19[25]; //----- (004EADE0) -------------------------------------------------------- _DWORD *__fastcall std::wistream::ignore(_DWORD *a1) { _DWORD *v2; // ecx __int16 *v3; // eax __int16 v4; // dx char v6[25]; // [esp+5Fh] [ebp-19h] BYREF a1[1] = 0; std::wistream::sentry::sentry(v6, a1, 1); if ( v6[0] ) { v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v3 = (__int16 *)v2[2]; if ( (unsigned int)v3 >= v2[3] ) { v4 = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); } else { v4 = *v3; v2[2] = v3 + 1; } if ( v4 == -1 ) std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); else a1[1] = 1; } return a1; } // 4EADE0: using guessed type char var_19[25]; //----- (004EAF90) -------------------------------------------------------- void __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3) { char *v3; // ecx int v4; // eax unsigned __int16 *v5; // eax unsigned __int16 v6; // ax __int16 v7; // dx _WORD *v8; // eax __int16 *v9; // eax int v10; // [esp+10h] [ebp-58h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] *this = 0; v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); v4 = *((_DWORD *)v3 + 5); if ( v4 ) goto LABEL_6; if ( !*((_DWORD *)v3 + 28) ) { if ( a3 || (v3[13] & 0x10) == 0 ) goto LABEL_9; goto LABEL_10; } std::wostream::flush(*((_DWORD **)v3 + 28)); v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); if ( !a3 && (v3[13] & 0x10) != 0 ) { LABEL_10: lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v3 + 30); v5 = (unsigned __int16 *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v5 >= *((_DWORD *)lpuexcpt + 3) ) { v6 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); } else { v6 = *v5; } v10 = *((_DWORD *)v3 + 31); if ( !v10 ) std::__throw_bad_cast(); if ( v6 == 0xFFFF ) { LABEL_24: v4 = *((_DWORD *)v3 + 5) | 2; goto LABEL_6; } while ( (*(unsigned __int8 (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 32, v6) ) { v9 = (__int16 *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v9 < *((_DWORD *)lpuexcpt + 3) ) { v7 = *v9; *((_DWORD *)lpuexcpt + 2) = v9 + 1; } else { v7 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt); } if ( v7 != -1 ) { v8 = (_WORD *)*((_DWORD *)lpuexcpt + 2); v6 = (unsigned int)v8 >= *((_DWORD *)lpuexcpt + 3) ? (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt) : *v8; if ( v6 != 0xFFFF ) continue; } v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); goto LABEL_24; } v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); } v4 = *((_DWORD *)v3 + 5); if ( v4 ) { LABEL_6: std::wios::clear(v3, v4 | 4); return; } LABEL_9: *this = 1; } //----- (004EB230) -------------------------------------------------------- void __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3) { char *v3; // ecx int v4; // eax unsigned __int16 *v5; // eax unsigned __int16 v6; // ax __int16 v7; // dx _WORD *v8; // eax __int16 *v9; // eax int v10; // [esp+10h] [ebp-58h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] *this = 0; v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); v4 = *((_DWORD *)v3 + 5); if ( v4 ) goto LABEL_6; if ( !*((_DWORD *)v3 + 28) ) { if ( a3 || (v3[13] & 0x10) == 0 ) goto LABEL_9; goto LABEL_10; } std::wostream::flush(*((_DWORD **)v3 + 28)); v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); if ( !a3 && (v3[13] & 0x10) != 0 ) { LABEL_10: lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v3 + 30); v5 = (unsigned __int16 *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v5 >= *((_DWORD *)lpuexcpt + 3) ) { v6 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); } else { v6 = *v5; } v10 = *((_DWORD *)v3 + 31); if ( !v10 ) std::__throw_bad_cast(); if ( v6 == 0xFFFF ) { LABEL_24: v4 = *((_DWORD *)v3 + 5) | 2; goto LABEL_6; } while ( (*(unsigned __int8 (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 32, v6) ) { v9 = (__int16 *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v9 < *((_DWORD *)lpuexcpt + 3) ) { v7 = *v9; *((_DWORD *)lpuexcpt + 2) = v9 + 1; } else { v7 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt); } if ( v7 != -1 ) { v8 = (_WORD *)*((_DWORD *)lpuexcpt + 2); v6 = (unsigned int)v8 >= *((_DWORD *)lpuexcpt + 3) ? (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt) : *v8; if ( v6 != 0xFFFF ) continue; } v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); goto LABEL_24; } v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); } v4 = *((_DWORD *)v3 + 5); if ( v4 ) { LABEL_6: std::wios::clear(v3, v4 | 4); return; } LABEL_9: *this = 1; } //----- (004EB4D0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::getline(_DWORD *this, char *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::getline(this, a2, a3, v5); } //----- (004EB520) -------------------------------------------------------- _DWORD *__thiscall std::wistream::getline(_DWORD *this, char *a2, int a3, __int16 a4) { int v4; // esi int v5; // edx __int16 *v7; // eax __int16 v8; // dx int v9; // eax unsigned int v10; // ebx char *v11; // ecx int v12; // edi int v13; // eax int v14; // edx int v15; // esi char *v16; // eax char *v17; // ecx unsigned int v18; // eax __int16 v19; // ax __int16 *v20; // eax int v21; // [esp+18h] [ebp-70h] _DWORD *v22; // [esp+20h] [ebp-68h] int lpuexcpt; // [esp+24h] [ebp-64h] char v25[25]; // [esp+6Fh] [ebp-19h] BYREF this[1] = 0; std::wistream::sentry::sentry(v25, this, 1); if ( !v25[0] ) { LABEL_2: v4 = this[1]; if ( a3 > 0 ) goto LABEL_3; LABEL_27: if ( !v4 ) goto LABEL_4; return this; } v22 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); v7 = (__int16 *)v22[2]; if ( (unsigned int)v7 >= v22[3] ) v8 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); else v8 = *v7; v9 = this[1]; v4 = v9 + 1; if ( a3 > v9 + 1 ) { if ( v8 != -1 ) { if ( v8 != a4 ) { while ( 1 ) { v10 = v22[3]; v11 = (char *)v22[2]; v12 = a3 - v9 - 1; v13 = (int)(v10 - (_DWORD)v11) >> 1; if ( v12 <= v13 ) v13 = v12; lpuexcpt = v13; if ( v13 <= 1 ) { *(_WORD *)a2 = v8; this[1] = v4; if ( v10 <= (unsigned int)v11 ) { v19 = (*(int (__fastcall **)(_DWORD *))(*v22 + 40))(v22); } else { v19 = *(_WORD *)v11; v22[2] = v11 + 2; } if ( v19 == -1 ) { a2 += 2; v9 = this[1]; LABEL_43: v5 = 2; if ( a3 > 0 ) *(_WORD *)a2 = 0; LABEL_45: if ( !v9 ) v5 |= 4u; goto LABEL_5; } v20 = (__int16 *)v22[2]; if ( (unsigned int)v20 >= v22[3] ) v8 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); else v8 = *v20; a2 += 2; v9 = this[1]; } else { v14 = v13; v15 = v13; if ( !v11 ) goto LABEL_19; v16 = (char *)v22[2]; while ( *(_WORD *)v16 != a4 ) { v16 += 2; if ( !--v14 ) goto LABEL_19; } v21 = v16 - v11; lpuexcpt = (v16 - v11) >> 1; v15 = lpuexcpt; if ( lpuexcpt ) { LABEL_19: v21 = 2 * v15; memcpy(a2, v11, 2 * v15); v11 = (char *)v22[2]; v10 = v22[3]; } a2 += v21; v17 = &v11[v21]; v22[2] = v17; v9 = this[1] + lpuexcpt; this[1] = v9; if ( (unsigned int)v17 >= v10 ) { v8 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); v9 = this[1]; } else { v8 = *(_WORD *)v17; } } v4 = v9 + 1; if ( v9 + 1 >= a3 ) goto LABEL_38; if ( v8 == -1 ) goto LABEL_43; if ( a4 == v8 ) goto LABEL_25; } } goto LABEL_25; } if ( a3 > 0 ) { LABEL_52: v5 = 2; *(_WORD *)a2 = 0; if ( !v9 ) v5 = 6; goto LABEL_5; } LABEL_56: v5 = 2; goto LABEL_45; } LABEL_38: if ( v8 == -1 ) { v9 = this[1]; if ( a3 > 0 ) goto LABEL_52; goto LABEL_56; } if ( v8 != a4 ) { v9 = this[1]; if ( a3 <= 0 ) { v5 = 4; goto LABEL_45; } *(_WORD *)a2 = 0; v5 = 4; LABEL_5: std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v5); return this; } LABEL_25: this[1] = v4; v18 = v22[2]; if ( v18 >= v22[3] ) { (*(void (__fastcall **)(_DWORD *))(*v22 + 40))(v22); goto LABEL_2; } v22[2] = v18 + 2; if ( a3 <= 0 ) goto LABEL_27; LABEL_3: *(_WORD *)a2 = 0; if ( !v4 ) { LABEL_4: v5 = 4; goto LABEL_5; } return this; } // 4EB520: using guessed type char var_19[25]; //----- (004EB9B0) -------------------------------------------------------- int *__thiscall std::wistream::putback(int *this, unsigned __int16 a2) { int v3; // eax _DWORD *v4; // ecx _DWORD *v5; // eax unsigned int v6; // eax __int16 v7; // dx char v10[25]; // [esp+5Fh] [ebp-19h] 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(v10, this, 1); if ( !v10[0] ) return this; v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); v5 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( !v4 ) { LABEL_9: std::wios::clear(v5, v5[5] | 1); return this; } v6 = v4[2]; if ( v4[1] < v6 && (v7 = *(_WORD *)(v6 - 2), a2 == v7) ) v4[2] = v6 - 2; else v7 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v4 + 44))(v4, a2); if ( v7 == -1 ) { v5 = (int *)((char *)this + *(_DWORD *)(*this - 12)); goto LABEL_9; } return this; } // 4EB9B0: using guessed type char var_19[25]; //----- (004EBB90) -------------------------------------------------------- struct _Unwind_Exception *__thiscall std::wistream::readsome(_DWORD *this, int a2, int a3) { _DWORD *v4; // ecx int v5; // eax int v6; // edx int v7; // eax int v8; // ecx struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] char v11[25]; // [esp+5Fh] [ebp-19h] BYREF this[1] = 0; std::wistream::sentry::sentry(v11, this, 1); if ( !v11[0] ) return (struct _Unwind_Exception *)this[1]; v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); v5 = v4[3]; v6 = v4[2]; if ( v5 == v6 ) 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 (struct _Unwind_Exception *)this[1]; } return (struct _Unwind_Exception *)this[1]; } if ( v7 > a3 ) v7 = a3; v8 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); lpuexcpt = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, int, int))(*(_DWORD *)v8 + 32))(v8, a2, v7); this[1] = lpuexcpt; return lpuexcpt; } // 4EBB90: using guessed type char var_19[25]; //----- (004EBD80) -------------------------------------------------------- void __thiscall std::wistream::basic_istream(_DWORD *this, int *a2) { int v2; // eax int v3; // eax std::ios_base *v4; // ecx int v5; // eax std::ios_base *v6; // [esp+4h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] _DWORD *v8; // [esp+14h] [ebp-44h] v8 = this + 2; std::ios_base::ios_base(this + 2); v2 = a2[1]; *((_WORD *)this + 62) = 0; *((_BYTE *)this + 126) = 0; this[1] = v2; this[30] = 0; v3 = *a2; *this = &off_56019C; this[32] = 0; v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); this[33] = 0; this[34] = 0; this[35] = 0; this[2] = off_5601B0; lpuexcpt = v4; std::ios_base::_M_move((int)v8, v4, v6); std::wios::_M_cache_locale(v8, (int)(this + 29)); this[32] = 0; v5 = *((_DWORD *)lpuexcpt + 28); *((_DWORD *)lpuexcpt + 28) = 0; this[30] = v5; *((_WORD *)this + 62) = *((_WORD *)lpuexcpt + 58); *((_BYTE *)this + 126) = *((_BYTE *)lpuexcpt + 118); a2[1] = 0; } // 4EBE23: variable 'v6' is possibly undefined // 56019C: using guessed type int (*off_56019C)(); // 5601B0: using guessed type int (*off_5601B0[2])(); //----- (004EBEC0) -------------------------------------------------------- void __thiscall std::wistream::basic_istream(_DWORD *this, int a2) { int v2; // [esp+14h] [ebp-44h] 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_56019C; this[2] = off_5601B0; this[1] = 0; std::wios::init(v2, a2); } // 56019C: using guessed type int (*off_56019C)(); // 5601B0: using guessed type int (*off_5601B0[2])(); //----- (004EBFA0) -------------------------------------------------------- void __fastcall std::wistream::basic_istream(int a1) { int v1; // [esp+14h] [ebp-44h] 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_56019C; *(_DWORD *)(a1 + 8) = off_5601B0; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); } // 56019C: using guessed type int (*off_56019C)(); // 5601B0: using guessed type int (*off_5601B0[2])(); //----- (004EC080) -------------------------------------------------------- int __thiscall std::wistream::basic_istream(int *this, int *a2, _DWORD *a3) { int v3; // eax int v4; // edx int v5; // ebx std::ios_base *v6; // esi int v7; // eax int result; // eax std::ios_base *v9; // [esp+4h] [ebp-18h] v3 = *a2; v4 = a2[1]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = v4; this[1] = a3[1]; v5 = (int)this + *(_DWORD *)(v3 - 12); v6 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v5, v6, v9); std::wios::_M_cache_locale((_DWORD *)v5, v5 + 108); v7 = *((_DWORD *)v6 + 28); *(_DWORD *)(v5 + 120) = 0; *((_DWORD *)v6 + 28) = 0; *(_DWORD *)(v5 + 112) = v7; *(_WORD *)(v5 + 116) = *((_WORD *)v6 + 58); result = *((unsigned __int8 *)v6 + 118); a3[1] = 0; *(_BYTE *)(v5 + 118) = result; return result; } // 4EC0B2: variable 'v9' is possibly undefined //----- (004EC100) -------------------------------------------------------- BOOL __thiscall std::wistream::basic_istream(int *this, int *a2, int a3) { int v3; // eax int v4; // edx int v5; // ebx 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); } //----- (004EC140) -------------------------------------------------------- BOOL __thiscall std::wistream::basic_istream(int *this, int *a2) { int v2; // eax int v3; // edx int v4; // ebx 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); } //----- (004EC170) -------------------------------------------------------- void __fastcall std::wistream::~wistream(char *Block) { _DWORD *v2; // ecx v2 = Block + 8; *(v2 - 2) = &off_56019C; *(v2 - 1) = 0; *v2 = &off_560E30; std::ios_base::~ios_base((int)v2); operator delete(Block); } // 56019C: using guessed type int (*off_56019C)(); // 560E30: using guessed type int (*off_560E30)(); //----- (004EC1A0) -------------------------------------------------------- void __fastcall std::wistream::~wistream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_56019C; v1 = a1 + 2; *(v1 - 1) = 0; *v1 = &off_560E30; std::ios_base::~ios_base((int)v1); } // 56019C: using guessed type int (*off_56019C)(); // 560E30: using guessed type int (*off_560E30)(); //----- (004EC1C0) -------------------------------------------------------- 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; } //----- (004EC1E0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // edx __int16 v6; // cx int v7; // edx std::ios_base *v9; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = 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; } // 4EC21D: variable 'v9' is possibly undefined //----- (004EC2A0) -------------------------------------------------------- int __thiscall std::wistream::operator>>(void *this, int (__cdecl *a2)(void *)) { return a2(this); } //----- (004EC2B0) -------------------------------------------------------- char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004EC2D0) -------------------------------------------------------- char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004EC2F0) -------------------------------------------------------- _DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2) { char *v2; // ecx int v3; // eax char v6; // [esp+5Eh] [ebp-1Ah] BYREF char v7[25]; // [esp+5Fh] [ebp-19h] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( v6 ) { v2 = (char *)this + *(_DWORD *)(*this - 12); if ( !a2 ) { v3 = 4; goto LABEL_9; } if ( !std::__copy_streambufs_eof>(*((_DWORD **)v2 + 30), a2, v7) ) { v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = v7[0] == 0 ? 4 : 6; goto LABEL_9; } if ( v7[0] ) { v3 = 2; v2 = (char *)this + *(_DWORD *)(*this - 12); LABEL_9: std::wios::clear(v2, *((_DWORD *)v2 + 5) | v3); } } else if ( !a2 ) { v3 = 4; v2 = (char *)this + *(_DWORD *)(*this - 12); goto LABEL_9; } return this; } // 4EC2F0: using guessed type char var_19[25]; //----- (004EC510) -------------------------------------------------------- _DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2) { char *v2; // edi int v3; // ecx char v6; // [esp+67h] [ebp-21h] BYREF int v7; // [esp+68h] [ebp-20h] BYREF int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v6, this, 0); if ( v6 ) { v7 = 0; v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int *))(*(_DWORD *)v3 + 12))( v3, *((_DWORD *)v2 + 30), 0xFFFF, 0, 0xFFFF, (int)this + *(_DWORD *)(*this - 12), &v7, v8); *a2 = v8[0]; if ( v7 ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7); } return this; } // 4EC510: using guessed type int var_1C[7]; //----- (004EC710) -------------------------------------------------------- _DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _WORD *a2) { char *v2; // edi int v3; // ecx int v4; // eax char v7; // [esp+67h] [ebp-21h] BYREF int v8; // [esp+68h] [ebp-20h] BYREF int v9[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v7, this, 0); if ( v7 ) { v8 = 0; v2 = (char *)this + *(_DWORD *)(*this - 12); v3 = *((_DWORD *)v2 + 33); if ( !v3 ) std::__throw_bad_cast(); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int *))(*(_DWORD *)v3 + 12))( v3, *((_DWORD *)v2 + 30), 0xFFFF, 0, 0xFFFF, (int)this + *(_DWORD *)(*this - 12), &v8, v9); v4 = v8; if ( v9[0] >= -32768 ) { if ( v9[0] > 0x7FFF ) { v8 |= 4u; v4 = v8; *a2 = 0x7FFF; goto LABEL_9; } *a2 = v9[0]; } else { v4 = v8 | 4; v8 |= 4u; *a2 = 0x8000; } if ( !v4 ) return this; LABEL_9: std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v4); } return this; } // 4EC823: conditional instruction was optimized away because eax.4>=4u // 4EC710: using guessed type int var_1C[7]; //----- (004EC950) -------------------------------------------------------- int *__thiscall std::wostream::put(int *this, unsigned __int16 a2) { _DWORD *v2; // ecx unsigned int v3; // eax unsigned int v4; // eax int v5; // ecx int v7; // [esp+0h] [ebp-78h] unsigned __int16 lpuexcpt; // [esp+14h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+14h] [ebp-64h] int v11; // [esp+58h] [ebp-20h] BYREF _DWORD *v12; // [esp+5Ch] [ebp-1Ch] lpuexcpt = a2; std::wostream::sentry::sentry(&v11, this); if ( (_BYTE)v11 ) { v2 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); v3 = v2[5]; if ( v3 >= v2[6] ) { lpuexcpt = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v2 + 52))(v2, a2); } else { v4 = v3 + 2; *(_WORD *)(v4 - 2) = a2; v2[5] = v4; } if ( lpuexcpt == 0xFFFF ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v12 + *(_DWORD *)(*v12 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v5 = *((_DWORD *)lpuexcpta + 30); if ( v5 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v7) == -1 ) std::wios::clear( (_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12)), *(_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12) + 20) | 1); } } return this; } // 4ECA07: variable 'v7' is possibly undefined //----- (004ECB60) -------------------------------------------------------- void __thiscall std::wostream::swap(_DWORD *this, _DWORD *a2) { std::ios_base *v2; // ebx std::ios_base *v3; // esi int v4; // eax __int16 v5; // dx std::ios_base *v6; // [esp+4h] [ebp-58h] v2 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); v3 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v2, v3, v6); std::wios::_M_cache_locale(v2, (int)v2 + 108); std::wios::_M_cache_locale(v3, (int)v3 + 108); v4 = *((_DWORD *)v2 + 28); *((_DWORD *)v2 + 28) = *((_DWORD *)v3 + 28); v5 = *((_WORD *)v3 + 58); *((_DWORD *)v3 + 28) = v4; LOWORD(v4) = *((_WORD *)v2 + 58); *((_WORD *)v2 + 58) = v5; LOBYTE(v5) = *((_BYTE *)v2 + 118); *((_WORD *)v3 + 58) = v4; *((_BYTE *)v2 + 118) = *((_BYTE *)v3 + 118); *((_BYTE *)v3 + 118) = v5; } // 4ECB97: variable 'v6' is possibly undefined //----- (004ECC10) -------------------------------------------------------- _DWORD *__fastcall std::wostream::flush(_DWORD *a1) { int v1; // ecx v1 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); if ( v1 && (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 24))(v1) == -1 ) std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); return a1; } //----- (004ECD60) -------------------------------------------------------- _DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5) { char *v5; // edi _DWORD *v6; // eax int v7; // edi void (__thiscall *v8)(int *, _DWORD *, int, int, int, int, int); // eax _DWORD *v10; // [esp+0h] [ebp-A8h] int v12[14]; // [esp+70h] [ebp-38h] BYREF v5 = (char *)this + *(_DWORD *)(*this - 12); if ( (v5[20] & 5) == 0 ) { v6 = (_DWORD *)*((_DWORD *)v5 + 30); v7 = *v6; v12[6] = a4; v10 = v6; v8 = *(void (__thiscall **)(int *, _DWORD *, int, int, int, int, int))(v7 + 20); v12[4] = a2; v12[5] = a3; v12[7] = a5; v8(v12, v10, a2, a3, a4, a5, 16); if ( (v12[0] & v12[1]) == -1 ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); } return this; } //----- (004ECF20) -------------------------------------------------------- _DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4) { char *v4; // edi int v7[10]; // [esp+60h] [ebp-28h] BYREF v4 = (char *)this + *(_DWORD *)(*this - 12); if ( (v4[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v4 + 30) + 16))( v7, *((_DWORD *)v4 + 30), a2, a3, a4, 16); if ( (v7[0] & v7[1]) == -1 ) std::wios::clear( (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); } return this; } //----- (004ED0B0) -------------------------------------------------------- _DWORD *__thiscall std::wostream::tellp(_DWORD *this, int *a2) { int v2; // eax char *v3; // esi int v6[10]; // [esp+60h] [ebp-28h] BYREF v2 = *a2; *this = -1; this[1] = -1; v3 = (char *)a2 + *(_DWORD *)(v2 - 12); this[2] = 0; if ( (v3[20] & 5) == 0 ) { (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v3 + 30) + 16))( v6, *((_DWORD *)v3 + 30), 0, 0, 1, 16); *this = v6[0]; this[1] = v6[1]; this[2] = v6[2]; } return this; } //----- (004ED230) -------------------------------------------------------- int *__thiscall std::wostream::write(int *this, int a2, int a3) { int v3; // ecx int v4; // ecx int v6; // [esp+0h] [ebp-78h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] int v9; // [esp+58h] [ebp-20h] BYREF _DWORD *v10; // [esp+5Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v9, this); if ( (_BYTE)v9 ) { v3 = *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120); if ( a3 != (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v3 + 48))(v3, a2, a3) ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } lpuexcpt = (struct _Unwind_Exception *)((char *)v10 + *(_DWORD *)(*v10 - 12)); if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpt + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v6) == -1 ) std::wios::clear( (_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12)), *(_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12) + 20) | 1); } } return this; } // 4ED2DF: variable 'v6' is possibly undefined //----- (004ED400) -------------------------------------------------------- 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; } //----- (004ED460) -------------------------------------------------------- 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; } //----- (004ED4C0) -------------------------------------------------------- void __fastcall std::wostream::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::wios::clear(v4, v4[5] | 1); } } } } } //----- (004ED550) -------------------------------------------------------- void __fastcall std::wostream::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::wios::clear(v4, v4[5] | 1); } } } } } //----- (004ED5E0) -------------------------------------------------------- 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; } //----- (004ED630) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, int a2) { unsigned __int16 v2; // ax char v3; // dl int v4; // ecx int v6; // ecx int v7; // edx int v8; // [esp+0h] [ebp-88h] int v9; // [esp+20h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-64h] int v13; // [esp+68h] [ebp-20h] BYREF _DWORD *v14; // [esp+6Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v13, this); if ( (_BYTE)v13 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); v9 = *((_DWORD *)lpuexcpt + 32); if ( !v9 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 118) ) { v2 = *((_WORD *)lpuexcpt + 58); } else { v6 = *((_DWORD *)lpuexcpt + 31); if ( !v6 ) std::__throw_bad_cast(); v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); v7 = *this; *((_WORD *)lpuexcpt + 58) = v2; *((_BYTE *)lpuexcpt + 118) = 1; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int))(*(_DWORD *)v9 + 36))( v9, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v2, a2); if ( v3 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpta + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) std::wios::clear( (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); } } return this; } // 4ED6F8: variable 'v3' is possibly undefined // 4ED74C: variable 'v8' is possibly undefined //----- (004ED8A0) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, unsigned __int8 a2) { unsigned __int16 v2; // ax char v3; // dl int v4; // ecx int v6; // ecx int v7; // edx int v8; // [esp+0h] [ebp-98h] int v9; // [esp+2Ch] [ebp-6Ch] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] int v13; // [esp+78h] [ebp-20h] BYREF _DWORD *v14; // [esp+7Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v13, this); if ( (_BYTE)v13 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); v9 = *((_DWORD *)lpuexcpt + 32); if ( !v9 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 118) ) { v2 = *((_WORD *)lpuexcpt + 58); } else { v6 = *((_DWORD *)lpuexcpt + 31); if ( !v6 ) std::__throw_bad_cast(); v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); v7 = *this; *((_WORD *)lpuexcpt + 58) = v2; *((_BYTE *)lpuexcpt + 118) = 1; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, _DWORD))(*(_DWORD *)v9 + 8))( v9, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v2, a2); if ( v3 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpta + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) std::wios::clear( (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); } } return this; } // 4ED978: variable 'v3' is possibly undefined // 4ED9CC: variable 'v8' is possibly undefined //----- (004EDB20) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, double a2) { unsigned __int16 v2; // ax char v3; // dl int v4; // ecx int v6; // ecx int v7; // edx int v8; // [esp+0h] [ebp-98h] int v9; // [esp+30h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] int v13; // [esp+78h] [ebp-20h] BYREF _DWORD *v14; // [esp+7Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v13, this); if ( (_BYTE)v13 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); v9 = *((_DWORD *)lpuexcpt + 32); if ( !v9 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 118) ) { v2 = *((_WORD *)lpuexcpt + 58); } else { v6 = *((_DWORD *)lpuexcpt + 31); if ( !v6 ) std::__throw_bad_cast(); v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); v7 = *this; *((_WORD *)lpuexcpt + 58) = v2; *((_BYTE *)lpuexcpt + 118) = 1; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 28))( v9, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v2, LODWORD(a2), HIDWORD(a2)); if ( v3 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpta + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) std::wios::clear( (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); } } return this; } // 4EDBEB: variable 'v3' is possibly undefined // 4EDC3F: variable 'v8' is possibly undefined //----- (004EDD90) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, long double a2) { unsigned __int16 v2; // ax char v3; // dl int v4; // ecx int v6; // ecx int v7; // edx int v8; // [esp+0h] [ebp-88h] int v10; // [esp+20h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-64h] int v14; // [esp+68h] [ebp-20h] BYREF _DWORD *v15; // [esp+6Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v14, this); if ( (_BYTE)v14 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); v10 = *((_DWORD *)lpuexcpt + 32); if ( !v10 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 118) ) { v2 = *((_WORD *)lpuexcpt + 58); } else { v6 = *((_DWORD *)lpuexcpt + 31); if ( !v6 ) std::__throw_bad_cast(); v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); v7 = *this; *((_WORD *)lpuexcpt + 58) = v2; *((_BYTE *)lpuexcpt + 118) = 1; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 32))( v10, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v2, LODWORD(a2), DWORD1(a2), HIDWORD(a2)); if ( v3 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v15 + *(_DWORD *)(*v15 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpta + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) std::wios::clear( (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); } } return this; } // 4EDE52: variable 'v3' is possibly undefined // 4EDEA6: variable 'v8' is possibly undefined //----- (004EE000) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, int a2) { unsigned __int16 v2; // ax char v3; // dl int v4; // ecx int v6; // ecx int v7; // edx int v8; // [esp+0h] [ebp-88h] int v9; // [esp+20h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-64h] int v13; // [esp+68h] [ebp-20h] BYREF _DWORD *v14; // [esp+6Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v13, this); if ( (_BYTE)v13 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); v9 = *((_DWORD *)lpuexcpt + 32); if ( !v9 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 118) ) { v2 = *((_WORD *)lpuexcpt + 58); } else { v6 = *((_DWORD *)lpuexcpt + 31); if ( !v6 ) std::__throw_bad_cast(); v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); v7 = *this; *((_WORD *)lpuexcpt + 58) = v2; *((_BYTE *)lpuexcpt + 118) = 1; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int))(*(_DWORD *)v9 + 12))( v9, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v2, a2); if ( v3 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpta + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) std::wios::clear( (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); } } return this; } // 4EE0C8: variable 'v3' is possibly undefined // 4EE11C: variable 'v8' is possibly undefined //----- (004EE270) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, int a2) { unsigned __int16 v2; // ax char v3; // dl int v4; // ecx int v6; // ecx int v7; // edx int v8; // [esp+0h] [ebp-88h] int v9; // [esp+20h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-64h] int v13; // [esp+68h] [ebp-20h] BYREF _DWORD *v14; // [esp+6Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v13, this); if ( (_BYTE)v13 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); v9 = *((_DWORD *)lpuexcpt + 32); if ( !v9 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 118) ) { v2 = *((_WORD *)lpuexcpt + 58); } else { v6 = *((_DWORD *)lpuexcpt + 31); if ( !v6 ) std::__throw_bad_cast(); v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); v7 = *this; *((_WORD *)lpuexcpt + 58) = v2; *((_BYTE *)lpuexcpt + 118) = 1; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int))(*(_DWORD *)v9 + 16))( v9, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v2, a2); if ( v3 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpta + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) std::wios::clear( (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); } } return this; } // 4EE338: variable 'v3' is possibly undefined // 4EE38C: variable 'v8' is possibly undefined //----- (004EE4E0) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3) { unsigned __int16 v3; // ax char v4; // dl int v5; // ecx int v7; // ecx int v8; // edx int v9; // [esp+0h] [ebp-98h] int v10; // [esp+30h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] int v14; // [esp+78h] [ebp-20h] BYREF _DWORD *v15; // [esp+7Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v14, this); if ( (_BYTE)v14 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); v10 = *((_DWORD *)lpuexcpt + 32); if ( !v10 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 118) ) { v3 = *((_WORD *)lpuexcpt + 58); } else { v7 = *((_DWORD *)lpuexcpt + 31); if ( !v7 ) std::__throw_bad_cast(); v3 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 40))(v7, 32); v8 = *this; *((_WORD *)lpuexcpt + 58) = v3; *((_BYTE *)lpuexcpt + 118) = 1; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v8 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int, int))(*(_DWORD *)v10 + 20))( v10, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v3, a2, a3); if ( v4 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v15 + *(_DWORD *)(*v15 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v5 = *((_DWORD *)lpuexcpta + 30); if ( v5 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v9) == -1 ) std::wios::clear( (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); } } return this; } // 4EE5BC: variable 'v4' is possibly undefined // 4EE610: variable 'v9' is possibly undefined //----- (004EE760) -------------------------------------------------------- int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3) { unsigned __int16 v3; // ax char v4; // dl int v5; // ecx int v7; // ecx int v8; // edx int v9; // [esp+0h] [ebp-98h] int v10; // [esp+30h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] int v14; // [esp+78h] [ebp-20h] BYREF _DWORD *v15; // [esp+7Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v14, this); if ( (_BYTE)v14 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); v10 = *((_DWORD *)lpuexcpt + 32); if ( !v10 ) std::__throw_bad_cast(); if ( *((_BYTE *)lpuexcpt + 118) ) { v3 = *((_WORD *)lpuexcpt + 58); } else { v7 = *((_DWORD *)lpuexcpt + 31); if ( !v7 ) std::__throw_bad_cast(); v3 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 40))(v7, 32); v8 = *this; *((_WORD *)lpuexcpt + 58) = v3; *((_BYTE *)lpuexcpt + 118) = 1; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v8 - 12)); } (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int, int))(*(_DWORD *)v10 + 24))( v10, *((_DWORD *)lpuexcpt + 30), *((_DWORD *)lpuexcpt + 30) == 0, lpuexcpt, v3, a2, a3); if ( v4 ) std::wios::clear( (int *)((char *)this + *(_DWORD *)(*this - 12)), *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); } lpuexcpta = (struct _Unwind_Exception *)((char *)v15 + *(_DWORD *)(*v15 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v5 = *((_DWORD *)lpuexcpta + 30); if ( v5 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v9) == -1 ) std::wios::clear( (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); } } return this; } // 4EE83C: variable 'v4' is possibly undefined // 4EE890: variable 'v9' is possibly undefined //----- (004EE9E0) -------------------------------------------------------- void __thiscall std::wostream::basic_ostream(_DWORD *this, _DWORD *a2) { int v2; // eax std::ios_base *v3; // [esp+4h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] _DWORD *v5; // [esp+14h] [ebp-44h] v5 = this + 1; std::ios_base::ios_base(this + 1); *((_WORD *)this + 60) = 0; this[29] = 0; *((_BYTE *)this + 122) = 0; this[31] = 0; this[32] = 0; this[33] = 0; this[34] = 0; *this = &off_5601C4; this[1] = off_5601D8; lpuexcpt = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_move((int)v5, lpuexcpt, v3); std::wios::_M_cache_locale(v5, (int)(this + 28)); v2 = *((_DWORD *)lpuexcpt + 28); this[31] = 0; *((_DWORD *)lpuexcpt + 28) = 0; this[29] = v2; *((_WORD *)this + 60) = *((_WORD *)lpuexcpt + 58); *((_BYTE *)this + 122) = *((_BYTE *)lpuexcpt + 118); } // 4EEA76: variable 'v3' is possibly undefined // 5601C4: using guessed type int (*off_5601C4)(); // 5601D8: using guessed type int (*off_5601D8[2])(); //----- (004EEB00) -------------------------------------------------------- void __thiscall std::wostream::basic_ostream(_DWORD *this, int a2) { int v2; // [esp+14h] [ebp-44h] 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_5601C4; this[1] = off_5601D8; std::wios::init(v2, a2); } // 5601C4: using guessed type int (*off_5601C4)(); // 5601D8: using guessed type int (*off_5601D8[2])(); //----- (004EEBE0) -------------------------------------------------------- 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_5601C4; this[1] = off_5601D8; return result; } // 5601C4: using guessed type int (*off_5601C4)(); // 5601D8: using guessed type int (*off_5601D8[2])(); //----- (004EEC40) -------------------------------------------------------- void __fastcall std::wostream::basic_ostream(int a1) { int v1; // [esp+14h] [ebp-44h] 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_5601C4; *(_DWORD *)(a1 + 4) = off_5601D8; std::wios::init(v1, 0); } // 5601C4: using guessed type int (*off_5601C4)(); // 5601D8: using guessed type int (*off_5601D8[2])(); //----- (004EED20) -------------------------------------------------------- int __thiscall std::wostream::basic_ostream(_DWORD *this, _DWORD *a2, _DWORD *a3) { int v3; // eax int v4; // ebx std::ios_base *v5; // esi int v6; // eax int result; // eax std::ios_base *v8; // [esp+4h] [ebp-18h] v3 = a2[1]; v4 = (int)this + *(_DWORD *)(*a2 - 12); *this = *a2; *(_DWORD *)v4 = v3; v5 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v4, v5, v8); std::wios::_M_cache_locale((_DWORD *)v4, v4 + 108); v6 = *((_DWORD *)v5 + 28); *(_DWORD *)(v4 + 120) = 0; *((_DWORD *)v5 + 28) = 0; *(_DWORD *)(v4 + 112) = v6; *(_WORD *)(v4 + 116) = *((_WORD *)v5 + 58); result = *((unsigned __int8 *)v5 + 118); *(_BYTE *)(v4 + 118) = result; return result; } // 4EED45: variable 'v8' is possibly undefined //----- (004EED90) -------------------------------------------------------- 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); } //----- (004EEDC0) -------------------------------------------------------- int __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3) { int v3; // edx int result; // eax v3 = *a2; result = a2[1]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = result; return result; } //----- (004EEDE0) -------------------------------------------------------- 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); } //----- (004EEE00) -------------------------------------------------------- void __fastcall std::wostream::~wostream(char *Block) { _DWORD *v2; // ecx v2 = Block + 4; *(v2 - 1) = &off_5601C4; *v2 = &off_560E30; std::ios_base::~ios_base((int)v2); operator delete(Block); } // 5601C4: using guessed type int (*off_5601C4)(); // 560E30: using guessed type int (*off_560E30)(); //----- (004EEE30) -------------------------------------------------------- void __fastcall std::wostream::~wostream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_5601C4; v1 = a1 + 1; *v1 = &off_560E30; std::ios_base::~ios_base((int)v1); } // 5601C4: using guessed type int (*off_5601C4)(); // 560E30: using guessed type int (*off_560E30)(); //----- (004EEE50) -------------------------------------------------------- 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; } //----- (004EEE70) -------------------------------------------------------- _DWORD *__thiscall std::wostream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // ebx std::ios_base *v4; // esi int v5; // eax __int16 v6; // dx std::ios_base *v8; // [esp+4h] [ebp-18h] v3 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); v4 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); std::ios_base::_M_swap(v4, v3, v8); std::wios::_M_cache_locale(v4, (int)v4 + 108); std::wios::_M_cache_locale(v3, (int)v3 + 108); v5 = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = *((_DWORD *)v3 + 28); v6 = *((_WORD *)v3 + 58); *((_DWORD *)v3 + 28) = v5; LOWORD(v5) = *((_WORD *)v4 + 58); *((_WORD *)v4 + 58) = v6; LOBYTE(v6) = *((_BYTE *)v4 + 118); *((_WORD *)v3 + 58) = v5; *((_BYTE *)v4 + 118) = *((_BYTE *)v3 + 118); *((_BYTE *)v3 + 118) = v6; return this; } // 4EEEAA: variable 'v8' is possibly undefined //----- (004EEF20) -------------------------------------------------------- int __thiscall std::wostream::operator<<(void *this, int (__cdecl *a2)(void *)) { return a2(this); } //----- (004EEF30) -------------------------------------------------------- char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004EEF50) -------------------------------------------------------- char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) { a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); return this; } //----- (004EEF80) -------------------------------------------------------- int *__thiscall std::wostream::operator<<(int *this, _DWORD *a2) { char *v2; // ecx int v3; // eax int v4; // ecx int v6; // [esp+0h] [ebp-78h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] char v9; // [esp+57h] [ebp-21h] BYREF int v10; // [esp+58h] [ebp-20h] BYREF _DWORD *v11; // [esp+5Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v10, this); if ( (_BYTE)v10 ) { v2 = (char *)this + *(_DWORD *)(*this - 12); if ( !a2 ) { v3 = 1; goto LABEL_13; } if ( !std::__copy_streambufs_eof>(a2, *((_DWORD **)v2 + 30), &v9) ) { v3 = 4; v2 = (char *)this + *(_DWORD *)(*this - 12); LABEL_13: std::wios::clear(v2, *((_DWORD *)v2 + 5) | v3); } } else if ( !a2 ) { v3 = 1; v2 = (char *)this + *(_DWORD *)(*this - 12); goto LABEL_13; } lpuexcpt = (struct _Unwind_Exception *)((char *)v11 + *(_DWORD *)(*v11 - 12)); if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v4 = *((_DWORD *)lpuexcpt + 30); if ( v4 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v6) == -1 ) std::wios::clear( (_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12)), *(_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12) + 20) | 1); } } return this; } // 4EF05B: variable 'v6' is possibly undefined //----- (004EF190) -------------------------------------------------------- int *__thiscall std::wostream::operator<<(int *this, unsigned __int8 a2) { return std::wostream::_M_insert(this, a2); } //----- (004EF1C0) -------------------------------------------------------- int *__thiscall std::wostream::operator<<(int *this, float a2) { return std::wostream::_M_insert(this, a2); } //----- (004EF220) -------------------------------------------------------- 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); } //----- (004EF260) -------------------------------------------------------- int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2) { return std::wostream::_M_insert(this, a2); } //----- (004EF290) -------------------------------------------------------- void __thiscall std::random_device::_M_init_pretr1(_DWORD *this, unsigned __int8 **a2) { void *Block[2]; // [esp+58h] [ebp-20h] BYREF char v4[24]; // [esp+60h] [ebp-18h] BYREF if ( !std::string::compare((int)a2, "mt19937") || (unsigned int)**a2 - 48 <= 9 ) { Block[0] = v4; std::string::_M_construct(Block, "default", (int)""); std::random_device::_M_init(this, (int)Block); if ( Block[0] != v4 ) operator delete(Block[0]); } else { std::random_device::_M_init(this, (int)a2); } } //----- (004EF3A0) -------------------------------------------------------- void __userpurge std::random_device::_M_init_pretr1(_DWORD *a1@, std::random_device **this, const std::string *a3) { unsigned int v3; // [esp+8h] [ebp-14h] std::random_device::_M_init(a1, *this, *((const char **)*this - 3), v3); } // 4EF3B3: variable 'v3' is possibly undefined //----- (004EF3E0) -------------------------------------------------------- int __fastcall std::random_device::_M_fini(int *a1) { int result; // eax result = *a1; if ( *a1 ) { result = close(a1[2]); a1[2] = -1; *a1 = 0; } return result; } //----- (004EF420) -------------------------------------------------------- void __userpurge std::random_device::_M_init( _DWORD *a1@, std::random_device *this, const char *a3, unsigned int a4) { void *Block[2]; // [esp+58h] [ebp-20h] BYREF char v6[24]; // [esp+60h] [ebp-18h] BYREF Block[0] = v6; std::string::_M_construct(Block, this, (int)this + (_DWORD)a3); std::random_device::_M_init(a1, (int)Block); if ( Block[0] != v6 ) operator delete(Block[0]); } //----- (004EF4E0) -------------------------------------------------------- void *__thiscall std::random_device::_M_init(_DWORD *this, int a2) { void *result; // eax unsigned int v5; // kr00_4 unsigned int v6; // kr04_4 unsigned int v7; // kr08_4 unsigned int v17; // kr0C_4 unsigned int v18; // kr10_4 unsigned int v19; // kr14_4 unsigned int v34; // [esp-4h] [ebp-20h] unsigned int v35; // [esp-4h] [ebp-20h] *this = 0; this[1] = 0; this[2] = -1; result = (void *)std::string::compare(a2, "default"); if ( !result ) { LABEL_2: this[1] = std::`anonymous namespace'::__winxp_rand_s; return result; } if ( std::string::compare(a2, "rdseed") ) { if ( std::string::compare(a2, "rdrand") && std::string::compare(a2, "rdrnd") ) { result = (void *)std::string::compare(a2, "rand_s"); if ( result ) std::__throw_runtime_error((std::runtime_error *)"random_device::random_device(const std::string&): unsupported token"); goto LABEL_2; } v5 = __readeflags(); v34 = v5; v6 = __readeflags(); __writeeflags(v6 ^ 0x200000); v7 = __readeflags(); __writeeflags(v34); if ( ((v6 ^ v7) & 0x200000) != 0 ) { _EAX = 0; __asm { cpuid } if ( _EAX ) { if ( _EBX == 1970169159 || _EBX == 1752462657 ) { _EAX = 1; __asm { cpuid } if ( (_ECX & 0x40000000) != 0 ) { this[1] = std::`anonymous namespace'::__x86_rdrand; return result; } } } } LABEL_20: std::__throw_runtime_error((std::runtime_error *)"random_device::random_device(const std::string&): device not available"); } v17 = __readeflags(); v35 = v17; v18 = __readeflags(); __writeeflags(v18 ^ 0x200000); v19 = __readeflags(); __writeeflags(v35); if ( ((v18 ^ v19) & 0x200000) == 0 ) goto LABEL_20; __asm { cpuid } if ( !_EAX || _EBX != 1970169159 && _EBX != 1752462657 ) goto LABEL_20; _EAX = 7; __asm { cpuid } if ( (_EBX & 0x40000) == 0 ) goto LABEL_20; _EAX = 1; __asm { cpuid } result = std::`anonymous namespace'::__x86_rdseed; if ( (_ECX & 0x40000000) != 0 ) result = std::`anonymous namespace'::__x86_rdseed_rdrand; this[1] = result; return result; } //----- (004EF680) -------------------------------------------------------- void __userpurge std::random_device::_M_init(_DWORD *a1@, std::random_device **this, const std::string *a3) { unsigned int v3; // [esp+8h] [ebp-14h] std::random_device::_M_init(a1, *this, *((const char **)*this - 3), v3); } // 4EF693: variable 'v3' is possibly undefined //----- (004EF6B0) -------------------------------------------------------- int __fastcall std::random_device::_M_getval(int a1) { int (__cdecl *v1)(_DWORD); // eax unsigned int MaxCharCount; // ebx int *DstBuf; // esi int v6; // eax int v7; // [esp+1Ch] [ebp-20h] BYREF v1 = *(int (__cdecl **)(_DWORD))(a1 + 4); if ( v1 ) return v1(0); MaxCharCount = 4; DstBuf = &v7; do { while ( 1 ) { v6 = read(*(_DWORD *)(a1 + 8), DstBuf, MaxCharCount); if ( v6 > 0 ) break; if ( v6 != -1 || *__errno() != 4 ) std::__throw_runtime_error((std::runtime_error *)"random_device could not be read"); } DstBuf = (int *)((char *)DstBuf + v6); MaxCharCount -= v6; } while ( MaxCharCount ); return v7; } //----- (004EF730) -------------------------------------------------------- void __userpurge std::runtime_error::runtime_error(_DWORD *a1@, std::runtime_error *this, const char *a3) { int v3; // [esp+5Fh] [ebp-9h] BYREF *a1 = &off_5601E8; std::string::string(a1 + 1, (char *)this, (int)&v3); } // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); //----- (004EF7C0) -------------------------------------------------------- void __thiscall std::runtime_error::runtime_error(_DWORD *this, int a2) { unsigned int v2; // [esp+8h] [ebp-50h] *this = &off_5601E8; std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); } // 4EF814: variable 'v2' is possibly undefined // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); //----- (004EF850) -------------------------------------------------------- void __userpurge std::runtime_error::runtime_error( _DWORD *a1@, std::runtime_error *this, const std::runtime_error *a3) { const std::string *v3; // [esp+4h] [ebp-58h] *a1 = &off_5601E8; std::string::string(a1 + 1, (std::runtime_error *)((char *)this + 4), v3); } // 4EF88E: variable 'v3' is possibly undefined // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); //----- (004EF8B0) -------------------------------------------------------- void __userpurge std::runtime_error::runtime_error(_DWORD *a1@, std::runtime_error *this, const std::string *a3) { const std::string *v3; // [esp+4h] [ebp-54h] *a1 = &off_5601E8; std::string::string(a1 + 1, this, v3); } // 4EF8F8: variable 'v3' is possibly undefined // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); //----- (004EF930) -------------------------------------------------------- void __fastcall std::runtime_error::~runtime_error(void *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] std::runtime_error::~runtime_error(Block); operator delete(a1); } // 4EF936: variable 'Block' is possibly undefined //----- (004EF950) -------------------------------------------------------- void __cdecl std::runtime_error::~runtime_error(std::exception *a1) { _DWORD *v1; // ecx int v2; // eax int v3; // ecx int v4; // eax int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v2 = _CRT_MT; *v1 = &off_5601E8; v3 = v1[1]; if ( v2 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v4 = *(_DWORD *)(v3 - 4); *(_DWORD *)(v3 - 4) = v4 - 1; if ( v4 > 0 ) { LABEL_3: std::exception::~exception(a1); return; } } std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); std::exception::~exception(a1); } // 4EF95B: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 4EF950: using guessed type int var_D[3]; //----- (004EF9B0) -------------------------------------------------------- int *__thiscall std::runtime_error::operator=(int *this, int a2) { const std::string *v4; // [esp+4h] [ebp-58h] std::string::assign(this + 1, (std::string *)(a2 + 4), v4); return this; } // 4EF9E8: variable 'v4' is possibly undefined //----- (004EFA10) -------------------------------------------------------- int *__thiscall std::runtime_error::operator=(int *this, int a2) { const std::string *v4; // [esp+4h] [ebp-58h] std::string::assign(this + 1, (std::string *)(a2 + 4), v4); return this; } // 4EFA48: variable 'v4' is possibly undefined //----- (004EFA70) -------------------------------------------------------- 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; } //----- (004EFA80) -------------------------------------------------------- int __thiscall std::ifstream::open(int *this, char *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 2, a2, a3 | 8) == 0; v5 = *this; if ( v4 ) return std::ios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004EFAF0) -------------------------------------------------------- int __thiscall std::ifstream::open(int *this, wchar_t *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 2, a2, a3 | 8) == 0; v5 = *this; if ( v4 ) return std::ios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004EFB60) -------------------------------------------------------- int __thiscall std::ifstream::open(int *this, char **a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 2, *a2, a3 | 8) == 0; v5 = *this; if ( v4 ) return std::ios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004EFBD0) -------------------------------------------------------- void __thiscall std::ifstream::swap(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // edi std::ios_base *v4; // esi int v5; // edx char v6; // cl char v7; // cl int v8; // edx std::ios_base *v9; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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::swap((int)(this + 2), (int)(a2 + 2)); } // 4EFC10: variable 'v9' is possibly undefined //----- (004EFCA0) -------------------------------------------------------- struct _Unwind_Exception *__fastcall std::ifstream::close(_DWORD *a1) { struct _Unwind_Exception *result; // eax result = std::filebuf::close((struct _Unwind_Exception *)(a1 + 2)); if ( !result ) return (struct _Unwind_Exception *)std::ios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); return result; } //----- (004EFCE0) -------------------------------------------------------- bool __fastcall std::ifstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 48)); } //----- (004EFCF0) -------------------------------------------------------- void __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2) { int v2; // eax int v3; // eax std::ios_base *v4; // ecx int v5; // eax std::ios_base *v6; // [esp+4h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] _DWORD *v8; // [esp+14h] [ebp-44h] v8 = this + 29; std::ios_base::ios_base(this + 29); *((_WORD *)this + 116) = 0; v2 = a2[1]; *this = &unk_55B528; this[1] = v2; this[57] = 0; v3 = *a2; this[59] = 0; this[60] = 0; v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); this[29] = &unk_55B53C; this[61] = 0; this[62] = 0; lpuexcpt = v4; std::ios_base::_M_move((int)v8, v4, v6); std::ios::_M_cache_locale(v8, (int)(this + 56)); this[59] = 0; v5 = *((_DWORD *)lpuexcpt + 28); *((_DWORD *)lpuexcpt + 28) = 0; this[57] = v5; *((_WORD *)this + 116) = *((_WORD *)lpuexcpt + 58); a2[1] = 0; *this = off_560200; this[29] = off_560214; std::filebuf::basic_filebuf((int)(this + 2), (std::locale *)(a2 + 2)); this[59] = this + 2; } // 4EFD95: variable 'v6' is possibly undefined // 560200: using guessed type int (*off_560200[2])(); // 560214: using guessed type int (*off_560214[2])(); //----- (004EFE80) -------------------------------------------------------- void __thiscall std::ifstream::basic_ifstream(_DWORD *this, char *a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+20h] [ebp-48h] v5 = (int)(this + 29); std::ios_base::ios_base(this + 29); this[57] = 0; *((_WORD *)this + 116) = 0; this[59] = 0; this[60] = 0; this[61] = 0; this[62] = 0; *this = &unk_55B528; this[29] = &unk_55B53C; this[1] = 0; std::ios::init(v5, 0); *this = off_560200; this[29] = off_560214; std::filebuf::basic_filebuf((int)(this + 2)); std::ios::init(v5, (int)(this + 2)); v3 = std::filebuf::open(this + 2, a2, a3 | 8); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::ios::clear(v4, 0); else std::ios::clear(v4, v4[5] | 4); } // 560200: using guessed type int (*off_560200[2])(); // 560214: using guessed type int (*off_560214[2])(); //----- (004F0030) -------------------------------------------------------- void __thiscall std::ifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+20h] [ebp-48h] v5 = (int)(this + 29); std::ios_base::ios_base(this + 29); this[57] = 0; *((_WORD *)this + 116) = 0; this[59] = 0; this[60] = 0; this[61] = 0; this[62] = 0; *this = &unk_55B528; this[29] = &unk_55B53C; this[1] = 0; std::ios::init(v5, 0); *this = off_560200; this[29] = off_560214; std::filebuf::basic_filebuf((int)(this + 2)); std::ios::init(v5, (int)(this + 2)); v3 = std::filebuf::open(this + 2, a2, a3 | 8); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::ios::clear(v4, 0); else std::ios::clear(v4, v4[5] | 4); } // 560200: using guessed type int (*off_560200[2])(); // 560214: using guessed type int (*off_560214[2])(); //----- (004F01E0) -------------------------------------------------------- void __thiscall std::ifstream::basic_ifstream(_DWORD *this, char **a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+20h] [ebp-48h] v5 = (int)(this + 29); std::ios_base::ios_base(this + 29); this[57] = 0; *((_WORD *)this + 116) = 0; this[59] = 0; this[60] = 0; this[61] = 0; this[62] = 0; *this = &unk_55B528; this[29] = &unk_55B53C; this[1] = 0; std::ios::init(v5, 0); *this = off_560200; this[29] = off_560214; std::filebuf::basic_filebuf((int)(this + 2)); std::ios::init(v5, (int)(this + 2)); v3 = std::filebuf::open(this + 2, *a2, a3 | 8); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::ios::clear(v4, 0); else std::ios::clear(v4, v4[5] | 4); } // 560200: using guessed type int (*off_560200[2])(); // 560214: using guessed type int (*off_560214[2])(); //----- (004F0390) -------------------------------------------------------- void __fastcall std::ifstream::basic_ifstream(int a1) { int v1; // [esp+24h] [ebp-44h] v1 = a1 + 116; std::ios_base::ios_base((_DWORD *)(a1 + 116)); *(_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_55B528; *(_DWORD *)(a1 + 116) = &unk_55B53C; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)a1 = off_560200; *(_DWORD *)(a1 + 116) = off_560214; std::filebuf::basic_filebuf(a1 + 8); std::ios::init(v1, a1 + 8); } // 560200: using guessed type int (*off_560200[2])(); // 560214: using guessed type int (*off_560214[2])(); //----- (004F04E0) -------------------------------------------------------- void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax int v8; // edx int v9; // eax std::ios_base *v10; // [esp+4h] [ebp-54h] std::ios_base *v11; // [esp+10h] [ebp-48h] int v12; // [esp+14h] [ebp-44h] v4 = a2[1]; v5 = a2[2]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; 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); v7 = *((_DWORD *)v11 + 28); *(_DWORD *)(v12 + 120) = 0; *((_DWORD *)v11 + 28) = 0; v8 = a2[3]; *(_DWORD *)(v12 + 112) = v7; *(_WORD *)(v12 + 116) = *((_WORD *)v11 + 58); a3[1] = 0; v9 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; std::filebuf::basic_filebuf((int)(this + 2), (std::locale *)(a3 + 2)); *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 2); } // 4F0547: variable 'v10' is possibly undefined //----- (004F0620) -------------------------------------------------------- void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, char *a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax int v9; // edx _DWORD *v10; // eax _DWORD *v11; // ecx v5 = a2[1]; v6 = a2[2]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = *a2; v9 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; std::filebuf::basic_filebuf((int)(this + 2)); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); v10 = std::filebuf::open(this + 2, a3, a4 | 8); v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v10 ) std::ios::clear(v11, 0); else std::ios::clear(v11, v11[5] | 4); } //----- (004F0790) -------------------------------------------------------- void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax int v9; // edx _DWORD *v10; // eax _DWORD *v11; // ecx v5 = a2[1]; v6 = a2[2]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = *a2; v9 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; std::filebuf::basic_filebuf((int)(this + 2)); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); v10 = std::filebuf::open(this + 2, a3, a4 | 8); v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v10 ) std::ios::clear(v11, 0); else std::ios::clear(v11, v11[5] | 4); } //----- (004F0900) -------------------------------------------------------- void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, char **a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax int v9; // edx _DWORD *v10; // eax _DWORD *v11; // ecx v5 = a2[1]; v6 = a2[2]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = *a2; v9 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; std::filebuf::basic_filebuf((int)(this + 2)); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); v10 = std::filebuf::open(this + 2, *a3, a4 | 8); v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v10 ) std::ios::clear(v11, 0); else std::ios::clear(v11, v11[5] | 4); } //----- (004F0A70) -------------------------------------------------------- void __thiscall std::ifstream::basic_ifstream(int *this, int *a2) { int v3; // eax int v4; // ecx int v5; // edx int v6; // eax int v7; // edx v3 = a2[1]; v4 = a2[2]; v5 = *(_DWORD *)(v3 - 12); *this = v3; *(int *)((char *)this + v5) = v4; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); v6 = *a2; v7 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; std::filebuf::basic_filebuf((int)(this + 2)); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); } //----- (004F0B90) -------------------------------------------------------- void __fastcall std::ifstream::~ifstream(_DWORD *a1) { *a1 = off_560200; a1[29] = off_560214; a1[2] = off_5600A0; std::filebuf::close((struct _Unwind_Exception *)(a1 + 2)); std::__basic_file::~__basic_file((int)(a1 + 12)); a1[2] = &off_560424; std::locale::~locale((_DWORD **)a1 + 9); *a1 = &unk_55B528; a1[1] = 0; a1[29] = &off_560E20; std::ios_base::~ios_base((int)(a1 + 29)); operator delete(a1); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560200: using guessed type int (*off_560200[2])(); // 560214: using guessed type int (*off_560214[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (004F0C70) -------------------------------------------------------- void __fastcall std::ifstream::~ifstream(int a1) { *(_DWORD *)a1 = off_560200; *(_DWORD *)(a1 + 116) = off_560214; *(_DWORD *)(a1 + 8) = off_5600A0; std::filebuf::close((struct _Unwind_Exception *)(a1 + 8)); std::__basic_file::~__basic_file(a1 + 48); *(_DWORD *)(a1 + 8) = &off_560424; std::locale::~locale((_DWORD **)(a1 + 36)); *(_DWORD *)a1 = &unk_55B528; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 116) = &off_560E20; std::ios_base::~ios_base(a1 + 116); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560200: using guessed type int (*off_560200[2])(); // 560214: using guessed type int (*off_560214[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (004F0D40) -------------------------------------------------------- void __thiscall std::ifstream::~ifstream(int *this, int *a2) { int v3; // eax int v4; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; this[2] = (int)off_5600A0; std::filebuf::close((struct _Unwind_Exception *)(this + 2)); std::__basic_file::~__basic_file((int)(this + 12)); this[2] = (int)&off_560424; std::locale::~locale((_DWORD **)this + 9); v4 = a2[1]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; this[1] = 0; } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (004F0E20) -------------------------------------------------------- _DWORD *__thiscall std::ifstream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // cl char v7; // cl int v8; // eax std::ios_base *v10; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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; } // 4F0E60: variable 'v10' is possibly undefined //----- (004F0F00) -------------------------------------------------------- int __thiscall std::wifstream::open(int *this, char *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open(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); } //----- (004F0F70) -------------------------------------------------------- int __thiscall std::wifstream::open(int *this, wchar_t *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open(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); } //----- (004F0FE0) -------------------------------------------------------- int __thiscall std::wifstream::open(int *this, char **a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open(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); } //----- (004F1050) -------------------------------------------------------- void __thiscall std::wifstream::swap(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // edi std::ios_base *v4; // esi int v5; // edx __int16 v6; // cx int v7; // edx std::ios_base *v8; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = 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::swap((int)(this + 2), (int)(a2 + 2)); } // 4F1090: variable 'v8' is possibly undefined //----- (004F1120) -------------------------------------------------------- struct _Unwind_Exception *__fastcall std::wifstream::close(_DWORD *a1) { struct _Unwind_Exception *result; // eax result = std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 2)); if ( !result ) return (struct _Unwind_Exception *)std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); return result; } //----- (004F1160) -------------------------------------------------------- bool __fastcall std::wifstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 48)); } //----- (004F1170) -------------------------------------------------------- void __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2) { int v2; // eax int v3; // eax std::ios_base *v4; // ecx int v5; // eax std::ios_base *v6; // [esp+4h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] _DWORD *v8; // [esp+14h] [ebp-44h] v8 = this + 30; std::ios_base::ios_base(this + 30); v2 = a2[1]; *((_WORD *)this + 118) = 0; *this = &unk_55B550; this[1] = v2; this[58] = 0; v3 = *a2; *((_BYTE *)this + 238) = 0; this[60] = 0; v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); this[61] = 0; this[62] = 0; this[63] = 0; this[30] = &unk_55B564; lpuexcpt = v4; std::ios_base::_M_move((int)v8, v4, v6); std::wios::_M_cache_locale(v8, (int)(this + 57)); this[60] = 0; v5 = *((_DWORD *)lpuexcpt + 28); *((_DWORD *)lpuexcpt + 28) = 0; this[58] = v5; *((_WORD *)this + 118) = *((_WORD *)lpuexcpt + 58); *((_BYTE *)this + 238) = *((_BYTE *)lpuexcpt + 118); a2[1] = 0; *this = off_560228; this[30] = off_56023C; std::wfilebuf::basic_filebuf((int)(this + 2), (std::locale *)(a2 + 2)); this[60] = this + 2; } // 4F121C: variable 'v6' is possibly undefined // 560228: using guessed type int (*off_560228[2])(); // 56023C: using guessed type int (*off_56023C[2])(); //----- (004F1310) -------------------------------------------------------- void __thiscall std::wifstream::basic_ifstream(_DWORD *this, char *a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+20h] [ebp-48h] v5 = (int)(this + 30); std::ios_base::ios_base(this + 30); this[58] = 0; *((_WORD *)this + 118) = 0; *((_BYTE *)this + 238) = 0; this[60] = 0; this[61] = 0; this[62] = 0; this[63] = 0; *this = &unk_55B550; this[30] = &unk_55B564; this[1] = 0; std::wios::init(v5, 0); *this = off_560228; this[30] = off_56023C; std::wfilebuf::basic_filebuf((int)(this + 2)); std::wios::init(v5, (int)(this + 2)); v3 = std::wfilebuf::open(this + 2, a2, a3 | 8); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::wios::clear(v4, 0); else std::wios::clear(v4, v4[5] | 4); } // 560228: using guessed type int (*off_560228[2])(); // 56023C: using guessed type int (*off_56023C[2])(); //----- (004F14C0) -------------------------------------------------------- void __thiscall std::wifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+20h] [ebp-48h] v5 = (int)(this + 30); std::ios_base::ios_base(this + 30); this[58] = 0; *((_WORD *)this + 118) = 0; *((_BYTE *)this + 238) = 0; this[60] = 0; this[61] = 0; this[62] = 0; this[63] = 0; *this = &unk_55B550; this[30] = &unk_55B564; this[1] = 0; std::wios::init(v5, 0); *this = off_560228; this[30] = off_56023C; std::wfilebuf::basic_filebuf((int)(this + 2)); std::wios::init(v5, (int)(this + 2)); v3 = std::wfilebuf::open(this + 2, a2, a3 | 8); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::wios::clear(v4, 0); else std::wios::clear(v4, v4[5] | 4); } // 560228: using guessed type int (*off_560228[2])(); // 56023C: using guessed type int (*off_56023C[2])(); //----- (004F1670) -------------------------------------------------------- void __thiscall std::wifstream::basic_ifstream(_DWORD *this, char **a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+20h] [ebp-48h] v5 = (int)(this + 30); std::ios_base::ios_base(this + 30); this[58] = 0; *((_WORD *)this + 118) = 0; *((_BYTE *)this + 238) = 0; this[60] = 0; this[61] = 0; this[62] = 0; this[63] = 0; *this = &unk_55B550; this[30] = &unk_55B564; this[1] = 0; std::wios::init(v5, 0); *this = off_560228; this[30] = off_56023C; std::wfilebuf::basic_filebuf((int)(this + 2)); std::wios::init(v5, (int)(this + 2)); v3 = std::wfilebuf::open(this + 2, *a2, a3 | 8); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::wios::clear(v4, 0); else std::wios::clear(v4, v4[5] | 4); } // 560228: using guessed type int (*off_560228[2])(); // 56023C: using guessed type int (*off_56023C[2])(); //----- (004F1820) -------------------------------------------------------- void __fastcall std::wifstream::basic_ifstream(int a1) { int v1; // [esp+24h] [ebp-44h] v1 = a1 + 120; std::ios_base::ios_base((_DWORD *)(a1 + 120)); *(_DWORD *)(a1 + 232) = 0; *(_WORD *)(a1 + 236) = 0; *(_BYTE *)(a1 + 238) = 0; *(_DWORD *)(a1 + 240) = 0; *(_DWORD *)(a1 + 244) = 0; *(_DWORD *)(a1 + 248) = 0; *(_DWORD *)(a1 + 252) = 0; *(_DWORD *)a1 = &unk_55B550; *(_DWORD *)(a1 + 120) = &unk_55B564; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)a1 = off_560228; *(_DWORD *)(a1 + 120) = off_56023C; std::wfilebuf::basic_filebuf(a1 + 8); std::wios::init(v1, a1 + 8); } // 560228: using guessed type int (*off_560228[2])(); // 56023C: using guessed type int (*off_56023C[2])(); //----- (004F1980) -------------------------------------------------------- void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax int v8; // edx int v9; // eax std::ios_base *v10; // [esp+4h] [ebp-54h] std::ios_base *v11; // [esp+10h] [ebp-48h] int v12; // [esp+14h] [ebp-44h] v4 = a2[1]; v5 = a2[2]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; 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); v7 = *((_DWORD *)v11 + 28); *(_DWORD *)(v12 + 120) = 0; *((_DWORD *)v11 + 28) = 0; v8 = a2[3]; *(_DWORD *)(v12 + 112) = v7; *(_WORD *)(v12 + 116) = *((_WORD *)v11 + 58); *(_BYTE *)(v12 + 118) = *((_BYTE *)v11 + 118); a3[1] = 0; v9 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; std::wfilebuf::basic_filebuf((int)(this + 2), (std::locale *)(a3 + 2)); *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 2); } // 4F19E7: variable 'v10' is possibly undefined //----- (004F1AD0) -------------------------------------------------------- void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char *a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax int v9; // edx _DWORD *v10; // eax _DWORD *v11; // ecx v5 = a2[1]; v6 = a2[2]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = *a2; v9 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; std::wfilebuf::basic_filebuf((int)(this + 2)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); v10 = std::wfilebuf::open(this + 2, a3, a4 | 8); v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v10 ) std::wios::clear(v11, 0); else std::wios::clear(v11, v11[5] | 4); } //----- (004F1C40) -------------------------------------------------------- void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax int v9; // edx _DWORD *v10; // eax _DWORD *v11; // ecx v5 = a2[1]; v6 = a2[2]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = *a2; v9 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; std::wfilebuf::basic_filebuf((int)(this + 2)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); v10 = std::wfilebuf::open(this + 2, a3, a4 | 8); v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v10 ) std::wios::clear(v11, 0); else std::wios::clear(v11, v11[5] | 4); } //----- (004F1DB0) -------------------------------------------------------- void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char **a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax int v9; // edx _DWORD *v10; // eax _DWORD *v11; // ecx v5 = a2[1]; v6 = a2[2]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = *a2; v9 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; std::wfilebuf::basic_filebuf((int)(this + 2)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); v10 = std::wfilebuf::open(this + 2, *a3, a4 | 8); v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v10 ) std::wios::clear(v11, 0); else std::wios::clear(v11, v11[5] | 4); } //----- (004F1F20) -------------------------------------------------------- void __thiscall std::wifstream::basic_ifstream(int *this, int *a2) { int v3; // eax int v4; // ecx int v5; // edx int v6; // eax int v7; // edx v3 = a2[1]; v4 = a2[2]; v5 = *(_DWORD *)(v3 - 12); *this = v3; *(int *)((char *)this + v5) = v4; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); v6 = *a2; v7 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; std::wfilebuf::basic_filebuf((int)(this + 2)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); } //----- (004F2040) -------------------------------------------------------- void __fastcall std::wifstream::~wifstream(_DWORD *a1) { *a1 = off_560228; a1[30] = off_56023C; a1[2] = off_5600E0; std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 2)); std::__basic_file::~__basic_file((int)(a1 + 12)); a1[2] = &off_560464; std::locale::~locale((_DWORD **)a1 + 9); *a1 = &unk_55B550; a1[1] = 0; a1[30] = &off_560E30; std::ios_base::~ios_base((int)(a1 + 30)); operator delete(a1); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560228: using guessed type int (*off_560228[2])(); // 56023C: using guessed type int (*off_56023C[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (004F2120) -------------------------------------------------------- void __fastcall std::wifstream::~wifstream(int a1) { *(_DWORD *)a1 = off_560228; *(_DWORD *)(a1 + 120) = off_56023C; *(_DWORD *)(a1 + 8) = off_5600E0; std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 8)); std::__basic_file::~__basic_file(a1 + 48); *(_DWORD *)(a1 + 8) = &off_560464; std::locale::~locale((_DWORD **)(a1 + 36)); *(_DWORD *)a1 = &unk_55B550; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 120) = &off_560E30; std::ios_base::~ios_base(a1 + 120); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560228: using guessed type int (*off_560228[2])(); // 56023C: using guessed type int (*off_56023C[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (004F21F0) -------------------------------------------------------- void __thiscall std::wifstream::~wifstream(int *this, int *a2) { int v3; // eax int v4; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; this[2] = (int)off_5600E0; std::wfilebuf::close((struct _Unwind_Exception *)(this + 2)); std::__basic_file::~__basic_file((int)(this + 12)); this[2] = (int)&off_560464; std::locale::~locale((_DWORD **)this + 9); v4 = a2[1]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; this[1] = 0; } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560464: using guessed type int (*off_560464)(); //----- (004F22D0) -------------------------------------------------------- _DWORD *__thiscall std::wifstream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // cx int v7; // eax std::ios_base *v9; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = 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; } // 4F2310: variable 'v9' is possibly undefined //----- (004F23B0) -------------------------------------------------------- void __thiscall std::wiostream::swap(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // edx __int16 v6; // cx int v7; // edx std::ios_base *v8; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = 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; } // 4F23ED: variable 'v8' is possibly undefined //----- (004F2470) -------------------------------------------------------- void __thiscall std::wiostream::basic_iostream(_DWORD *this, int *a2) { int v2; // eax int v3; // eax std::ios_base *v4; // ecx int v5; // eax std::ios_base *v6; // [esp+4h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] _DWORD *v8; // [esp+14h] [ebp-44h] v8 = this + 3; std::ios_base::ios_base(this + 3); v2 = a2[1]; *((_WORD *)this + 64) = 0; *this = &unk_55B578; this[1] = v2; this[31] = 0; v3 = *a2; *((_BYTE *)this + 130) = 0; this[33] = 0; v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); this[34] = 0; this[35] = 0; this[36] = 0; this[3] = &unk_55B58C; lpuexcpt = v4; std::ios_base::_M_move((int)v8, v4, v6); std::wios::_M_cache_locale(v8, (int)(this + 30)); this[33] = 0; v5 = *((_DWORD *)lpuexcpt + 28); *((_DWORD *)lpuexcpt + 28) = 0; this[31] = v5; *((_WORD *)this + 64) = *((_WORD *)lpuexcpt + 58); *((_BYTE *)this + 130) = *((_BYTE *)lpuexcpt + 118); a2[1] = 0; *this = &off_560250; this[3] = off_560278; this[2] = off_560264; } // 4F2519: variable 'v6' is possibly undefined // 560250: using guessed type int (*off_560250)(); // 560264: using guessed type int (*off_560264[2])(); // 560278: using guessed type int (*off_560278[2])(); //----- (004F25D0) -------------------------------------------------------- void __thiscall std::wiostream::basic_iostream(_DWORD *this, int a2) { int v2; // [esp+14h] [ebp-44h] 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_55B578; this[3] = &unk_55B58C; this[1] = 0; std::wios::init(v2, a2); this[2] = &unk_55B5A0; this[3] = &unk_55B5B4; std::wios::init(v2, a2); *this = &off_560250; this[3] = off_560278; this[2] = off_560264; } // 560250: using guessed type int (*off_560250)(); // 560264: using guessed type int (*off_560264[2])(); // 560278: using guessed type int (*off_560278[2])(); //----- (004F2720) -------------------------------------------------------- void __fastcall std::wiostream::basic_iostream(int a1) { int v1; // [esp+14h] [ebp-44h] 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_55B578; *(_DWORD *)(a1 + 12) = &unk_55B58C; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_55B5A0; *(_DWORD *)(a1 + 12) = &unk_55B5B4; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_560250; *(_DWORD *)(a1 + 12) = off_560278; *(_DWORD *)(a1 + 8) = off_560264; } // 560250: using guessed type int (*off_560250)(); // 560264: using guessed type int (*off_560264[2])(); // 560278: using guessed type int (*off_560278[2])(); //----- (004F2870) -------------------------------------------------------- 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; } // 4F28A6: variable 'v14' is possibly undefined //----- (004F2920) -------------------------------------------------------- void __thiscall std::wiostream::basic_iostream(int *this, int *a2, int a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax _DWORD *v8; // ecx int v9; // eax int v10; // edx v4 = a2[1]; v5 = a2[2]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v4 - 12), a3); v7 = a2[3]; this[2] = v7; v8 = (int *)((char *)this + *(_DWORD *)(v7 - 12) + 8); *v8 = a2[4]; std::wios::init((int)v8, a3); v9 = *a2; v10 = a2[5]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; this[2] = a2[6]; } //----- (004F2A20) -------------------------------------------------------- void __thiscall std::wiostream::basic_iostream(int *this, int *a2) { int v3; // eax int v4; // ecx int v5; // edx int v6; // eax _DWORD *v7; // ecx int v8; // eax int v9; // edx v3 = a2[1]; v4 = a2[2]; v5 = *(_DWORD *)(v3 - 12); *this = v3; *(int *)((char *)this + v5) = v4; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); v6 = a2[3]; this[2] = v6; v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); *v7 = a2[4]; std::wios::init((int)v7, 0); v8 = *a2; v9 = a2[5]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; this[2] = a2[6]; } //----- (004F2B20) -------------------------------------------------------- void __fastcall std::wiostream::~basic_iostream(char *Block) { _DWORD *v2; // ecx v2 = Block + 12; *(v2 - 1) = &unk_55B5A0; *(v2 - 3) = &unk_55B578; *(v2 - 2) = 0; *v2 = &off_560E30; std::ios_base::~ios_base((int)v2); operator delete(Block); } // 560E30: using guessed type int (*off_560E30)(); //----- (004F2B60) -------------------------------------------------------- void __fastcall std::wiostream::~basic_iostream(int a1) { _DWORD *v1; // ecx *(_DWORD *)(a1 + 8) = &unk_55B5A0; v1 = (_DWORD *)(a1 + 12); *(v1 - 3) = &unk_55B578; *(v1 - 2) = 0; *v1 = &off_560E30; std::ios_base::~ios_base((int)v1); } // 560E30: using guessed type int (*off_560E30)(); //----- (004F2B90) -------------------------------------------------------- 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; } //----- (004F2BE0) -------------------------------------------------------- _DWORD *__thiscall std::wiostream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // edx __int16 v6; // cx int v7; // edx std::ios_base *v9; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = 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; } // 4F2C1D: variable 'v9' is possibly undefined //----- (004F2CA0) -------------------------------------------------------- int __thiscall std::ofstream::open(int *this, char *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 1, a2, a3 | 0x10) == 0; v5 = *this; if ( v4 ) return std::ios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004F2D10) -------------------------------------------------------- int __thiscall std::ofstream::open(int *this, wchar_t *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 1, a2, a3 | 0x10) == 0; v5 = *this; if ( v4 ) return std::ios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004F2D80) -------------------------------------------------------- int __thiscall std::ofstream::open(int *this, char **a2, int a3) { bool v4; // zf int v5; // eax v4 = std::filebuf::open(this + 1, *a2, a3 | 0x10) == 0; v5 = *this; if ( v4 ) return std::ios::clear( (int *)((char *)this + *(_DWORD *)(v5 - 12)), *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); else return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); } //----- (004F2DF0) -------------------------------------------------------- void __thiscall std::ofstream::swap(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // edx char v6; // cl char v7; // cl std::ios_base *v8; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v8); std::ios::_M_cache_locale(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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::swap((int)(this + 1), (int)(a2 + 1)); } // 4F2E30: variable 'v8' is possibly undefined //----- (004F2EB0) -------------------------------------------------------- struct _Unwind_Exception *__fastcall std::ofstream::close(_DWORD *a1) { struct _Unwind_Exception *result; // eax result = std::filebuf::close((struct _Unwind_Exception *)(a1 + 1)); if ( !result ) return (struct _Unwind_Exception *)std::ios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); return result; } //----- (004F2EF0) -------------------------------------------------------- bool __fastcall std::ofstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 44)); } //----- (004F2F00) -------------------------------------------------------- void __thiscall std::ofstream::basic_ofstream(_DWORD *this, _DWORD *a2) { int v2; // eax std::ios_base *v3; // [esp+4h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] _DWORD *v5; // [esp+14h] [ebp-44h] v5 = this + 28; std::ios_base::ios_base(this + 28); *((_WORD *)this + 114) = 0; this[56] = 0; this[58] = 0; this[59] = 0; this[60] = 0; this[61] = 0; *this = &unk_55B5C8; this[28] = &unk_55B5DC; lpuexcpt = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_move((int)v5, lpuexcpt, v3); std::ios::_M_cache_locale(v5, (int)(this + 55)); v2 = *((_DWORD *)lpuexcpt + 28); *this = off_56028C; *((_DWORD *)lpuexcpt + 28) = 0; this[56] = v2; LOWORD(v2) = *((_WORD *)lpuexcpt + 58); this[58] = 0; *((_WORD *)this + 114) = v2; this[28] = off_5602A0; std::filebuf::basic_filebuf((int)(this + 1), (std::locale *)(a2 + 1)); this[58] = this + 1; } // 4F2F9B: variable 'v3' is possibly undefined // 56028C: using guessed type int (*off_56028C[2])(); // 5602A0: using guessed type int (*off_5602A0[2])(); //----- (004F3080) -------------------------------------------------------- void __thiscall std::ofstream::basic_ofstream(_DWORD *this, char *a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+20h] [ebp-48h] v5 = (int)(this + 28); std::ios_base::ios_base(this + 28); this[56] = 0; *((_WORD *)this + 114) = 0; this[58] = 0; this[59] = 0; this[60] = 0; this[61] = 0; *this = &unk_55B5C8; this[28] = &unk_55B5DC; std::ios::init(v5, 0); *this = off_56028C; this[28] = off_5602A0; std::filebuf::basic_filebuf((int)(this + 1)); std::ios::init(v5, (int)(this + 1)); v3 = std::filebuf::open(this + 1, a2, a3 | 0x10); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::ios::clear(v4, 0); else std::ios::clear(v4, v4[5] | 4); } // 56028C: using guessed type int (*off_56028C[2])(); // 5602A0: using guessed type int (*off_5602A0[2])(); //----- (004F3220) -------------------------------------------------------- void __thiscall std::ofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+20h] [ebp-48h] v5 = (int)(this + 28); std::ios_base::ios_base(this + 28); this[56] = 0; *((_WORD *)this + 114) = 0; this[58] = 0; this[59] = 0; this[60] = 0; this[61] = 0; *this = &unk_55B5C8; this[28] = &unk_55B5DC; std::ios::init(v5, 0); *this = off_56028C; this[28] = off_5602A0; std::filebuf::basic_filebuf((int)(this + 1)); std::ios::init(v5, (int)(this + 1)); v3 = std::filebuf::open(this + 1, a2, a3 | 0x10); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::ios::clear(v4, 0); else std::ios::clear(v4, v4[5] | 4); } // 56028C: using guessed type int (*off_56028C[2])(); // 5602A0: using guessed type int (*off_5602A0[2])(); //----- (004F33C0) -------------------------------------------------------- void __thiscall std::ofstream::basic_ofstream(_DWORD *this, char **a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+20h] [ebp-48h] v5 = (int)(this + 28); std::ios_base::ios_base(this + 28); this[56] = 0; *((_WORD *)this + 114) = 0; this[58] = 0; this[59] = 0; this[60] = 0; this[61] = 0; *this = &unk_55B5C8; this[28] = &unk_55B5DC; std::ios::init(v5, 0); *this = off_56028C; this[28] = off_5602A0; std::filebuf::basic_filebuf((int)(this + 1)); std::ios::init(v5, (int)(this + 1)); v3 = std::filebuf::open(this + 1, *a2, a3 | 0x10); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::ios::clear(v4, 0); else std::ios::clear(v4, v4[5] | 4); } // 56028C: using guessed type int (*off_56028C[2])(); // 5602A0: using guessed type int (*off_5602A0[2])(); //----- (004F3560) -------------------------------------------------------- void __fastcall std::ofstream::basic_ofstream(int a1) { int v1; // [esp+24h] [ebp-44h] v1 = a1 + 112; std::ios_base::ios_base((_DWORD *)(a1 + 112)); *(_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 = &unk_55B5C8; *(_DWORD *)(a1 + 112) = &unk_55B5DC; std::ios::init(v1, 0); *(_DWORD *)a1 = off_56028C; *(_DWORD *)(a1 + 112) = off_5602A0; std::filebuf::basic_filebuf(a1 + 4); std::ios::init(v1, a1 + 4); } // 56028C: using guessed type int (*off_56028C[2])(); // 5602A0: using guessed type int (*off_5602A0[2])(); //----- (004F36A0) -------------------------------------------------------- void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, _DWORD *a3) { int v3; // eax int v4; // eax int v5; // edx int v6; // eax std::ios_base *v7; // [esp+4h] [ebp-54h] std::ios_base *v8; // [esp+10h] [ebp-48h] int v9; // [esp+14h] [ebp-44h] v3 = a2[1]; *this = v3; v9 = (int)this + *(_DWORD *)(v3 - 12); *(_DWORD *)v9 = a2[2]; v8 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v9, v8, v7); std::ios::_M_cache_locale((_DWORD *)v9, v9 + 108); v4 = *((_DWORD *)v8 + 28); *((_DWORD *)v8 + 28) = 0; *(_DWORD *)(v9 + 120) = 0; *(_DWORD *)(v9 + 112) = v4; *(_WORD *)(v9 + 116) = *((_WORD *)v8 + 58); v5 = a2[3]; v6 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v5; std::filebuf::basic_filebuf((int)(this + 1), (std::locale *)(a3 + 1)); *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 1); } // 4F36FE: variable 'v7' is possibly undefined //----- (004F37D0) -------------------------------------------------------- void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, char *a3, int a4) { int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx _DWORD *v8; // eax _DWORD *v9; // ecx 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((int)(this + 1)); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); v8 = std::filebuf::open(this + 1, a3, a4 | 0x10); v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v8 ) std::ios::clear(v9, 0); else std::ios::clear(v9, v9[5] | 4); } //----- (004F3920) -------------------------------------------------------- void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4) { int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx _DWORD *v8; // eax _DWORD *v9; // ecx 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((int)(this + 1)); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); v8 = std::filebuf::open(this + 1, a3, a4 | 0x10); v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v8 ) std::ios::clear(v9, 0); else std::ios::clear(v9, v9[5] | 4); } //----- (004F3A70) -------------------------------------------------------- void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, char **a3, int a4) { int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx _DWORD *v8; // eax _DWORD *v9; // ecx 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((int)(this + 1)); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); v8 = std::filebuf::open(this + 1, *a3, a4 | 0x10); v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v8 ) std::ios::clear(v9, 0); else std::ios::clear(v9, v9[5] | 4); } //----- (004F3BC0) -------------------------------------------------------- void __thiscall std::ofstream::basic_ofstream(int *this, int *a2) { int v2; // eax _DWORD *v3; // ecx int v4; // eax int v5; // edx v2 = a2[1]; *this = v2; v3 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); *v3 = a2[2]; std::ios::init((int)v3, 0); v4 = *a2; v5 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; std::filebuf::basic_filebuf((int)(this + 1)); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); } //----- (004F3CC0) -------------------------------------------------------- void __fastcall std::ofstream::~ofstream(_DWORD *a1) { *a1 = off_56028C; a1[28] = off_5602A0; a1[1] = off_5600A0; std::filebuf::close((struct _Unwind_Exception *)(a1 + 1)); std::__basic_file::~__basic_file((int)(a1 + 11)); a1[1] = &off_560424; std::locale::~locale((_DWORD **)a1 + 8); *a1 = &unk_55B5C8; a1[28] = &off_560E20; std::ios_base::~ios_base((int)(a1 + 28)); operator delete(a1); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 56028C: using guessed type int (*off_56028C[2])(); // 5602A0: using guessed type int (*off_5602A0[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (004F3DA0) -------------------------------------------------------- void __fastcall std::ofstream::~ofstream(int a1) { *(_DWORD *)a1 = off_56028C; *(_DWORD *)(a1 + 112) = off_5602A0; *(_DWORD *)(a1 + 4) = off_5600A0; std::filebuf::close((struct _Unwind_Exception *)(a1 + 4)); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_560424; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_55B5C8; *(_DWORD *)(a1 + 112) = &off_560E20; std::ios_base::~ios_base(a1 + 112); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 56028C: using guessed type int (*off_56028C[2])(); // 5602A0: using guessed type int (*off_5602A0[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (004F3E70) -------------------------------------------------------- void __thiscall std::ofstream::~ofstream(int *this, int *a2) { int v3; // eax int v4; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; this[1] = (int)off_5600A0; std::filebuf::close((struct _Unwind_Exception *)(this + 1)); std::__basic_file::~__basic_file((int)(this + 11)); this[1] = (int)&off_560424; std::locale::~locale((_DWORD **)this + 8); v4 = a2[1]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (004F3F50) -------------------------------------------------------- _DWORD *__thiscall std::ofstream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // cl char v7; // cl std::ios_base *v9; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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; } // 4F3F90: variable 'v9' is possibly undefined //----- (004F4020) -------------------------------------------------------- int __thiscall std::wofstream::open(int *this, char *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open(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); } //----- (004F4090) -------------------------------------------------------- int __thiscall std::wofstream::open(int *this, wchar_t *a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open(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); } //----- (004F4100) -------------------------------------------------------- int __thiscall std::wofstream::open(int *this, char **a2, int a3) { bool v4; // zf int v5; // eax v4 = std::wfilebuf::open(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); } //----- (004F4170) -------------------------------------------------------- void __thiscall std::wofstream::swap(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // edx __int16 v6; // cx std::ios_base *v7; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v7); std::wios::_M_cache_locale(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = v6; LOBYTE(v6) = *((_BYTE *)v3 + 118); *((_WORD *)v4 + 58) = v5; *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); *((_BYTE *)v4 + 118) = v6; std::wfilebuf::swap((int)(this + 1), (int)(a2 + 1)); } // 4F41B0: variable 'v7' is possibly undefined //----- (004F4230) -------------------------------------------------------- struct _Unwind_Exception *__fastcall std::wofstream::close(_DWORD *a1) { struct _Unwind_Exception *result; // eax result = std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 1)); if ( !result ) return (struct _Unwind_Exception *)std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); return result; } //----- (004F4270) -------------------------------------------------------- bool __fastcall std::wofstream::is_open(int a1) { return std::__basic_file::is_open((_DWORD *)(a1 + 44)); } //----- (004F4280) -------------------------------------------------------- void __thiscall std::wofstream::basic_ofstream(_DWORD *this, _DWORD *a2) { int v2; // eax std::ios_base *v3; // [esp+4h] [ebp-54h] struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] _DWORD *v5; // [esp+14h] [ebp-44h] v5 = this + 29; std::ios_base::ios_base(this + 29); *((_WORD *)this + 116) = 0; this[57] = 0; *((_BYTE *)this + 234) = 0; this[59] = 0; this[60] = 0; this[61] = 0; this[62] = 0; *this = &unk_55B5F0; this[29] = &unk_55B604; lpuexcpt = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_move((int)v5, lpuexcpt, v3); std::wios::_M_cache_locale(v5, (int)(this + 56)); v2 = *((_DWORD *)lpuexcpt + 28); *this = off_5602B4; *((_DWORD *)lpuexcpt + 28) = 0; this[57] = v2; LOWORD(v2) = *((_WORD *)lpuexcpt + 58); this[59] = 0; *((_WORD *)this + 116) = v2; LOBYTE(v2) = *((_BYTE *)lpuexcpt + 118); this[29] = off_5602C8; *((_BYTE *)this + 234) = v2; std::wfilebuf::basic_filebuf((int)(this + 1), (std::locale *)(a2 + 1)); this[59] = this + 1; } // 4F4322: variable 'v3' is possibly undefined // 5602B4: using guessed type int (*off_5602B4[2])(); // 5602C8: using guessed type int (*off_5602C8[2])(); //----- (004F4410) -------------------------------------------------------- void __thiscall std::wofstream::basic_ofstream(_DWORD *this, char *a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+20h] [ebp-48h] v5 = (int)(this + 29); std::ios_base::ios_base(this + 29); this[57] = 0; *((_WORD *)this + 116) = 0; *((_BYTE *)this + 234) = 0; this[59] = 0; this[60] = 0; this[61] = 0; this[62] = 0; *this = &unk_55B5F0; this[29] = &unk_55B604; std::wios::init(v5, 0); *this = off_5602B4; this[29] = off_5602C8; std::wfilebuf::basic_filebuf((int)(this + 1)); std::wios::init(v5, (int)(this + 1)); v3 = std::wfilebuf::open(this + 1, a2, a3 | 0x10); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::wios::clear(v4, 0); else std::wios::clear(v4, v4[5] | 4); } // 5602B4: using guessed type int (*off_5602B4[2])(); // 5602C8: using guessed type int (*off_5602C8[2])(); //----- (004F45B0) -------------------------------------------------------- void __thiscall std::wofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+20h] [ebp-48h] v5 = (int)(this + 29); std::ios_base::ios_base(this + 29); this[57] = 0; *((_WORD *)this + 116) = 0; *((_BYTE *)this + 234) = 0; this[59] = 0; this[60] = 0; this[61] = 0; this[62] = 0; *this = &unk_55B5F0; this[29] = &unk_55B604; std::wios::init(v5, 0); *this = off_5602B4; this[29] = off_5602C8; std::wfilebuf::basic_filebuf((int)(this + 1)); std::wios::init(v5, (int)(this + 1)); v3 = std::wfilebuf::open(this + 1, a2, a3 | 0x10); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::wios::clear(v4, 0); else std::wios::clear(v4, v4[5] | 4); } // 5602B4: using guessed type int (*off_5602B4[2])(); // 5602C8: using guessed type int (*off_5602C8[2])(); //----- (004F4750) -------------------------------------------------------- void __thiscall std::wofstream::basic_ofstream(_DWORD *this, char **a2, int a3) { _DWORD *v3; // eax _DWORD *v4; // ecx int v5; // [esp+20h] [ebp-48h] v5 = (int)(this + 29); std::ios_base::ios_base(this + 29); this[57] = 0; *((_WORD *)this + 116) = 0; *((_BYTE *)this + 234) = 0; this[59] = 0; this[60] = 0; this[61] = 0; this[62] = 0; *this = &unk_55B5F0; this[29] = &unk_55B604; std::wios::init(v5, 0); *this = off_5602B4; this[29] = off_5602C8; std::wfilebuf::basic_filebuf((int)(this + 1)); std::wios::init(v5, (int)(this + 1)); v3 = std::wfilebuf::open(this + 1, *a2, a3 | 0x10); v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); if ( v3 ) std::wios::clear(v4, 0); else std::wios::clear(v4, v4[5] | 4); } // 5602B4: using guessed type int (*off_5602B4[2])(); // 5602C8: using guessed type int (*off_5602C8[2])(); //----- (004F48F0) -------------------------------------------------------- void __fastcall std::wofstream::basic_ofstream(int a1) { int v1; // [esp+24h] [ebp-44h] v1 = a1 + 116; std::ios_base::ios_base((_DWORD *)(a1 + 116)); *(_DWORD *)(a1 + 228) = 0; *(_WORD *)(a1 + 232) = 0; *(_BYTE *)(a1 + 234) = 0; *(_DWORD *)(a1 + 236) = 0; *(_DWORD *)(a1 + 240) = 0; *(_DWORD *)(a1 + 244) = 0; *(_DWORD *)(a1 + 248) = 0; *(_DWORD *)a1 = &unk_55B5F0; *(_DWORD *)(a1 + 116) = &unk_55B604; std::wios::init(v1, 0); *(_DWORD *)a1 = off_5602B4; *(_DWORD *)(a1 + 116) = off_5602C8; std::wfilebuf::basic_filebuf(a1 + 4); std::wios::init(v1, a1 + 4); } // 5602B4: using guessed type int (*off_5602B4[2])(); // 5602C8: using guessed type int (*off_5602C8[2])(); //----- (004F4A40) -------------------------------------------------------- void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, _DWORD *a3) { int v3; // eax int v4; // eax int v5; // edx int v6; // eax std::ios_base *v7; // [esp+4h] [ebp-54h] std::ios_base *v8; // [esp+10h] [ebp-48h] int v9; // [esp+14h] [ebp-44h] v3 = a2[1]; *this = v3; v9 = (int)this + *(_DWORD *)(v3 - 12); *(_DWORD *)v9 = a2[2]; v8 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move(v9, v8, v7); std::wios::_M_cache_locale((_DWORD *)v9, v9 + 108); v4 = *((_DWORD *)v8 + 28); *((_DWORD *)v8 + 28) = 0; *(_DWORD *)(v9 + 120) = 0; *(_DWORD *)(v9 + 112) = v4; *(_WORD *)(v9 + 116) = *((_WORD *)v8 + 58); *(_BYTE *)(v9 + 118) = *((_BYTE *)v8 + 118); v5 = a2[3]; v6 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v5; std::wfilebuf::basic_filebuf((int)(this + 1), (std::locale *)(a3 + 1)); *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 1); } // 4F4A9E: variable 'v7' is possibly undefined //----- (004F4B70) -------------------------------------------------------- void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char *a3, int a4) { int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx _DWORD *v8; // eax _DWORD *v9; // ecx 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((int)(this + 1)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); v8 = std::wfilebuf::open(this + 1, a3, a4 | 0x10); v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v8 ) std::wios::clear(v9, 0); else std::wios::clear(v9, v9[5] | 4); } //----- (004F4CC0) -------------------------------------------------------- void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4) { int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx _DWORD *v8; // eax _DWORD *v9; // ecx 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((int)(this + 1)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); v8 = std::wfilebuf::open(this + 1, a3, a4 | 0x10); v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v8 ) std::wios::clear(v9, 0); else std::wios::clear(v9, v9[5] | 4); } //----- (004F4E10) -------------------------------------------------------- void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char **a3, int a4) { int v4; // eax _DWORD *v5; // ecx int v6; // eax int v7; // edx _DWORD *v8; // eax _DWORD *v9; // ecx 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((int)(this + 1)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); v8 = std::wfilebuf::open(this + 1, *a3, a4 | 0x10); v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); if ( v8 ) std::wios::clear(v9, 0); else std::wios::clear(v9, v9[5] | 4); } //----- (004F4F60) -------------------------------------------------------- void __thiscall std::wofstream::basic_ofstream(int *this, int *a2) { int v2; // eax _DWORD *v3; // ecx int v4; // eax int v5; // edx v2 = a2[1]; *this = v2; v3 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); *v3 = a2[2]; std::wios::init((int)v3, 0); v4 = *a2; v5 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; std::wfilebuf::basic_filebuf((int)(this + 1)); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); } //----- (004F5060) -------------------------------------------------------- void __fastcall std::wofstream::~wofstream(_DWORD *a1) { *a1 = off_5602B4; a1[29] = off_5602C8; a1[1] = off_5600E0; std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 1)); std::__basic_file::~__basic_file((int)(a1 + 11)); a1[1] = &off_560464; std::locale::~locale((_DWORD **)a1 + 8); *a1 = &unk_55B5F0; a1[29] = &off_560E30; std::ios_base::~ios_base((int)(a1 + 29)); operator delete(a1); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 5602B4: using guessed type int (*off_5602B4[2])(); // 5602C8: using guessed type int (*off_5602C8[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (004F5140) -------------------------------------------------------- void __fastcall std::wofstream::~wofstream(int a1) { *(_DWORD *)a1 = off_5602B4; *(_DWORD *)(a1 + 116) = off_5602C8; *(_DWORD *)(a1 + 4) = off_5600E0; std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 4)); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_560464; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_55B5F0; *(_DWORD *)(a1 + 116) = &off_560E30; std::ios_base::~ios_base(a1 + 116); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 5602B4: using guessed type int (*off_5602B4[2])(); // 5602C8: using guessed type int (*off_5602C8[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (004F5210) -------------------------------------------------------- void __thiscall std::wofstream::~wofstream(int *this, int *a2) { int v3; // eax int v4; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; this[1] = (int)off_5600E0; std::wfilebuf::close((struct _Unwind_Exception *)(this + 1)); std::__basic_file::~__basic_file((int)(this + 11)); this[1] = (int)&off_560464; std::locale::~locale((_DWORD **)this + 8); v4 = a2[1]; *this = v4; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560464: using guessed type int (*off_560464)(); //----- (004F52F0) -------------------------------------------------------- _DWORD *__thiscall std::wofstream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // cx std::ios_base *v8; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = 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; } // 4F5330: variable 'v8' is possibly undefined //----- (004F53C0) -------------------------------------------------------- void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) { std::codecvt::codecvt(this, a3); *this = &off_5602D8; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 5602D8: using guessed type int (*off_5602D8)(); //----- (004F54C0) -------------------------------------------------------- void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; std::codecvt::codecvt(this, a3); *this = &off_5602D8; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 5602D8: using guessed type int (*off_5602D8)(); //----- (004F55D0) -------------------------------------------------------- void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; std::codecvt::codecvt(this, a3); *this = &off_5602D8; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 5602D8: using guessed type int (*off_5602D8)(); //----- (004F56E0) -------------------------------------------------------- void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) { std::codecvt::codecvt(this, a3); *this = &off_5602D8; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 5602D8: using guessed type int (*off_5602D8)(); //----- (004F57E0) -------------------------------------------------------- void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; std::codecvt::codecvt(this, a3); *this = &off_5602D8; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 5602D8: using guessed type int (*off_5602D8)(); //----- (004F58F0) -------------------------------------------------------- void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; std::codecvt::codecvt(this, a3); *this = &off_5602D8; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 5602D8: using guessed type int (*off_5602D8)(); //----- (004F5A00) -------------------------------------------------------- void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *Block) { *Block = &off_5602D8; std::codecvt::~codecvt(Block); operator delete(Block); } // 5602D8: using guessed type int (*off_5602D8)(); //----- (004F5A20) -------------------------------------------------------- void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) { *a1 = &off_5602D8; std::codecvt::~codecvt(a1); } // 5602D8: using guessed type int (*off_5602D8)(); //----- (004F5A30) -------------------------------------------------------- void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) { *a1 = &off_5602D8; std::codecvt::~codecvt(a1); } // 5602D8: using guessed type int (*off_5602D8)(); //----- (004F5A40) -------------------------------------------------------- void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) { std::codecvt::codecvt(this, a3); *this = &off_560304; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 560304: using guessed type int (*off_560304)(); //----- (004F5B40) -------------------------------------------------------- void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; std::codecvt::codecvt(this, a3); *this = &off_560304; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 560304: using guessed type int (*off_560304)(); //----- (004F5C50) -------------------------------------------------------- void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; std::codecvt::codecvt(this, a3); *this = &off_560304; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 560304: using guessed type int (*off_560304)(); //----- (004F5D60) -------------------------------------------------------- void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) { std::codecvt::codecvt(this, a3); *this = &off_560304; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 560304: using guessed type int (*off_560304)(); //----- (004F5E60) -------------------------------------------------------- void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; std::codecvt::codecvt(this, a3); *this = &off_560304; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 560304: using guessed type int (*off_560304)(); //----- (004F5F70) -------------------------------------------------------- void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; std::codecvt::codecvt(this, a3); *this = &off_560304; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 560304: using guessed type int (*off_560304)(); //----- (004F6080) -------------------------------------------------------- void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *Block) { *Block = &off_560304; std::codecvt::~codecvt(Block); operator delete(Block); } // 560304: using guessed type int (*off_560304)(); //----- (004F60A0) -------------------------------------------------------- void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) { *a1 = &off_560304; std::codecvt::~codecvt(a1); } // 560304: using guessed type int (*off_560304)(); //----- (004F60B0) -------------------------------------------------------- void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) { *a1 = &off_560304; std::codecvt::~codecvt(a1); } // 560304: using guessed type int (*off_560304)(); //----- (004F60C0) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_560BE0; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_560330; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 560330: using guessed type int (*off_560330)(); // 560BE0: using guessed type int (*off_560BE0)(); //----- (004F6200) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; this[1] = a3 != 0; *this = &off_560BE0; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_560330; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 560330: using guessed type int (*off_560330)(); // 560BE0: using guessed type int (*off_560BE0)(); //----- (004F6350) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_560BE0; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_560330; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 560330: using guessed type int (*off_560330)(); // 560BE0: using guessed type int (*off_560BE0)(); //----- (004F6490) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; this[1] = a3 != 0; *this = &off_560BE0; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_560330; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 560330: using guessed type int (*off_560330)(); // 560BE0: using guessed type int (*off_560BE0)(); //----- (004F65E0) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_560BE0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 4F661E: variable 'lpfctx' is possibly undefined // 560BE0: using guessed type int (*off_560BE0)(); //----- (004F6640) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560BE0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4F667E: variable 'lpfctx' is possibly undefined // 560BE0: using guessed type int (*off_560BE0)(); //----- (004F66A0) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560BE0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4F66DE: variable 'lpfctx' is possibly undefined // 560BE0: using guessed type int (*off_560BE0)(); //----- (004F6700) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_560BFC; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_56034C; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 56034C: using guessed type int (*off_56034C)(); // 560BFC: using guessed type int (*off_560BFC)(); //----- (004F6840) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; this[1] = a3 != 0; *this = &off_560BFC; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_56034C; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 56034C: using guessed type int (*off_56034C)(); // 560BFC: using guessed type int (*off_560BFC)(); //----- (004F6990) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_560BFC; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_56034C; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 56034C: using guessed type int (*off_56034C)(); // 560BFC: using guessed type int (*off_560BFC)(); //----- (004F6AD0) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; this[1] = a3 != 0; *this = &off_560BFC; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_56034C; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 56034C: using guessed type int (*off_56034C)(); // 560BFC: using guessed type int (*off_560BFC)(); //----- (004F6C20) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_560BFC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 4F6C5E: variable 'lpfctx' is possibly undefined // 560BFC: using guessed type int (*off_560BFC)(); //----- (004F6C80) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560BFC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4F6CBE: variable 'lpfctx' is possibly undefined // 560BFC: using guessed type int (*off_560BFC)(); //----- (004F6CE0) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560BFC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4F6D1E: variable 'lpfctx' is possibly undefined // 560BFC: using guessed type int (*off_560BFC)(); //----- (004F6D40) -------------------------------------------------------- void __userpurge std::overflow_error::overflow_error(_DWORD *a1@, std::overflow_error *this, const char *a3) { int v4; // [esp+5Fh] [ebp-9h] BYREF *a1 = &off_5601E8; std::string::string(a1 + 1, (char *)this, (int)&v4); *a1 = &off_560368; } // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 560368: using guessed type void (__cdecl *off_560368)(std::overflow_error *__hidden this); //----- (004F6DD0) -------------------------------------------------------- void __thiscall std::overflow_error::overflow_error(_DWORD *this, int a2) { unsigned int v2; // [esp+8h] [ebp-50h] *this = &off_5601E8; std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); *this = &off_560368; } // 4F6E24: variable 'v2' is possibly undefined // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 560368: using guessed type void (__cdecl *off_560368)(std::overflow_error *__hidden this); //----- (004F6E70) -------------------------------------------------------- void __userpurge std::overflow_error::overflow_error( _DWORD *a1@, std::overflow_error *this, const std::string *a3) { const std::string *v3; // [esp+4h] [ebp-54h] *a1 = &off_5601E8; std::string::string(a1 + 1, this, v3); *a1 = &off_560368; } // 4F6EB8: variable 'v3' is possibly undefined // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 560368: using guessed type void (__cdecl *off_560368)(std::overflow_error *__hidden this); //----- (004F6F00) -------------------------------------------------------- void __fastcall std::overflow_error::~overflow_error(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_560368; std::runtime_error::~runtime_error(Block); operator delete(a1); } // 4F6F0C: variable 'Block' is possibly undefined // 560368: using guessed type void (__cdecl *off_560368)(std::overflow_error *__hidden this); //----- (004F6F20) -------------------------------------------------------- void __cdecl std::overflow_error::~overflow_error(std::exception *a1) { _DWORD *v1; // ecx int v2; // eax int v3; // ecx int v4; // eax int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v2 = _CRT_MT; *v1 = &off_5601E8; v3 = v1[1]; if ( v2 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v4 = *(_DWORD *)(v3 - 4); *(_DWORD *)(v3 - 4) = v4 - 1; if ( v4 > 0 ) { LABEL_3: std::exception::~exception(a1); return; } } std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); std::exception::~exception(a1); } // 4F6F2B: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 4F6F20: using guessed type int var_D[3]; //----- (004F6F80) -------------------------------------------------------- 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; } //----- (004F6F9C) -------------------------------------------------------- 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; } //----- (004F6FB8) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block) { operator delete(Block); } //----- (004F6FC8) -------------------------------------------------------- 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); } } //----- (004F6FEC) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004F6FF4) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block) { operator delete(Block); } //----- (004F7008) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block) { operator delete(Block); } //----- (004F7018) -------------------------------------------------------- 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); } } //----- (004F7044) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004F704C) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( void *Block) { operator delete(Block); } //----- (004F7060) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy( void *Block) { operator delete(Block); } //----- (004F7070) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) { void *v1; // ebx v1 = *(void **)(a1 + 12); if ( v1 ) { WXML::EXPRLib::ExprSyntaxTree::~ExprSyntaxTree(*(_DWORD *)(a1 + 12)); operator delete(v1); } } //----- (004F7094) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004F709C) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( void *Block) { operator delete(Block); } //----- (004F70B0) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block) { operator delete(Block); } //----- (004F70C0) -------------------------------------------------------- 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; } //----- (004F70D0) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004F70D8) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block) { operator delete(Block); } //----- (004F70EC) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block) { operator delete(Block); } //----- (004F70FC) -------------------------------------------------------- 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); } } //----- (004F7120) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) { return 0; } //----- (004F7128) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block) { operator delete(Block); } //----- (004F713C) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::_M_destroy( void *Block) { operator delete(Block); } //----- (004F714C) -------------------------------------------------------- int __fastcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::_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; } //----- (004F715C) -------------------------------------------------------- int __stdcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::_M_get_deleter( int a1) { return 0; } //----- (004F7164) -------------------------------------------------------- void __fastcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr( void *Block) { operator delete(Block); } //----- (004F7180) -------------------------------------------------------- _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; } //----- (004F7200) -------------------------------------------------------- _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; } //----- (004F72A0) -------------------------------------------------------- int __thiscall std::streambuf::__safe_gbump(_DWORD *this, int a2) { int result; // eax result = a2; this[2] += a2; return result; } //----- (004F72B0) -------------------------------------------------------- int __thiscall std::streambuf::__safe_pbump(_DWORD *this, int a2) { int result; // eax result = a2; this[5] += a2; return result; } //----- (004F72C0) -------------------------------------------------------- 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; } //----- (004F72E0) -------------------------------------------------------- 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; } //----- (004F7300) -------------------------------------------------------- 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); } // 4F7361: variable 'v14' is possibly undefined //----- (004F73A0) -------------------------------------------------------- int std::streambuf::sync() { return 0; } //----- (004F73B0) -------------------------------------------------------- int __thiscall std::streambuf::gbump(_DWORD *this, int a2) { int result; // eax result = a2; this[2] += a2; return result; } //----- (004F73D0) -------------------------------------------------------- int __thiscall std::streambuf::pbump(_DWORD *this, int a2) { int result; // eax result = a2; this[5] += a2; return result; } //----- (004F73E0) -------------------------------------------------------- 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; } //----- (004F7410) -------------------------------------------------------- int __fastcall std::streambuf::sgetn(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); } //----- (004F7420) -------------------------------------------------------- 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); } //----- (004F7460) -------------------------------------------------------- int __fastcall std::streambuf::sputn(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); } //----- (004F7470) -------------------------------------------------------- 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; } //----- (004F74C0) -------------------------------------------------------- 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; } //----- (004F7540) -------------------------------------------------------- void *__thiscall std::streambuf::setbuf(void *this, int a2, int a3) { return this; } //----- (004F7550) -------------------------------------------------------- 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(); } //----- (004F7610) -------------------------------------------------------- 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; } //----- (004F7670) -------------------------------------------------------- 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 char *v13; // eax char v14; // cl int v15; // eax char *v16; // [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; v16 = a2; if ( a3 - v5 > v7 ) Size = this[3] - (_DWORD)Src; v5 += Size; memcpy(a2, Src, Size); this[2] += Size; if ( a3 <= v5 ) return v5; v10 = &v16[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 = (char *)this[2]; v14 = *v13; this[2] = v13 + 1; } else { v15 = v11(this); v14 = v15; if ( v15 == -1 ) return v5; } ++v5; *v10 = v14; a2 = v10 + 1; if ( a3 <= v5 ) return v5; } } return 0; } //----- (004F7730) -------------------------------------------------------- int __thiscall std::streambuf::xsputn(_DWORD *this, unsigned __int8 *a2, int a3) { int v5; // ebx void *v6; // edx int v7; // eax size_t Size; // ecx 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; } //----- (004F77D0) -------------------------------------------------------- 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(); } //----- (004F77F0) -------------------------------------------------------- _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; } //----- (004F7810) -------------------------------------------------------- _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; } //----- (004F7830) -------------------------------------------------------- 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; } //----- (004F7880) -------------------------------------------------------- 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; } //----- (004F78B0) -------------------------------------------------------- int __stdcall std::streambuf::overflow(int a1) { return -1; } //----- (004F78C0) -------------------------------------------------------- volatile signed __int32 **__thiscall std::streambuf::pubimbue( volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3) { int (__stdcall *v3)(int); // eax const std::locale *v5; // [esp+4h] [ebp-54h] std::locale::locale(this, a2 + 7, v5); v3 = (int (__stdcall *)(int))*((_DWORD *)*a2 + 2); if ( v3 != std::streambuf::imbue ) ((void (__thiscall *)(volatile signed __int32 **, volatile signed __int32 **))v3)(a2, a3); std::locale::operator=(a2 + 7, a3); return this; } // 4F78FE: variable 'v5' is possibly undefined // 4F73C0: using guessed type int __stdcall std::streambuf::imbue(int); //----- (004F7980) -------------------------------------------------------- int __stdcall std::streambuf::pbackfail(int a1) { return -1; } //----- (004F7990) -------------------------------------------------------- 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; } //----- (004F79B0) -------------------------------------------------------- int std::streambuf::showmanyc() { return 0; } //----- (004F79C0) -------------------------------------------------------- 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; } //----- (004F7A00) -------------------------------------------------------- int std::streambuf::underflow() { return -1; } //----- (004F7A10) -------------------------------------------------------- volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( _DWORD *a1@, std::locale *a2, const std::locale *a3) { volatile signed __int32 **v3; // ecx *a1 = &off_560424; v3 = (volatile signed __int32 **)(a1 + 7); *(v3 - 6) = (volatile signed __int32 *)*((_DWORD *)a2 + 1); *(v3 - 5) = (volatile signed __int32 *)*((_DWORD *)a2 + 2); *(v3 - 4) = (volatile signed __int32 *)*((_DWORD *)a2 + 3); *(v3 - 3) = (volatile signed __int32 *)*((_DWORD *)a2 + 4); *(v3 - 2) = (volatile signed __int32 *)*((_DWORD *)a2 + 5); *(v3 - 1) = (volatile signed __int32 *)*((_DWORD *)a2 + 6); return std::locale::locale(v3, (volatile signed __int32 **)a2 + 7, a3); } // 560424: using guessed type int (*off_560424)(); //----- (004F7A50) -------------------------------------------------------- void __fastcall std::streambuf::basic_streambuf(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_560424; v1 = a1 + 7; *(v1 - 6) = 0; *(v1 - 5) = 0; *(v1 - 4) = 0; *(v1 - 3) = 0; *(v1 - 2) = 0; *(v1 - 1) = 0; std::locale::locale(v1); } // 560424: using guessed type int (*off_560424)(); //----- (004F7A90) -------------------------------------------------------- volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( _DWORD *a1@, std::locale *a2, const std::locale *a3) { volatile signed __int32 **v3; // ecx *a1 = &off_560424; v3 = (volatile signed __int32 **)(a1 + 7); *(v3 - 6) = (volatile signed __int32 *)*((_DWORD *)a2 + 1); *(v3 - 5) = (volatile signed __int32 *)*((_DWORD *)a2 + 2); *(v3 - 4) = (volatile signed __int32 *)*((_DWORD *)a2 + 3); *(v3 - 3) = (volatile signed __int32 *)*((_DWORD *)a2 + 4); *(v3 - 2) = (volatile signed __int32 *)*((_DWORD *)a2 + 5); *(v3 - 1) = (volatile signed __int32 *)*((_DWORD *)a2 + 6); return std::locale::locale(v3, (volatile signed __int32 **)a2 + 7, a3); } // 560424: using guessed type int (*off_560424)(); //----- (004F7AD0) -------------------------------------------------------- void __fastcall std::streambuf::basic_streambuf(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_560424; v1 = a1 + 7; *(v1 - 6) = 0; *(v1 - 5) = 0; *(v1 - 4) = 0; *(v1 - 3) = 0; *(v1 - 2) = 0; *(v1 - 1) = 0; std::locale::locale(v1); } // 560424: using guessed type int (*off_560424)(); //----- (004F7B10) -------------------------------------------------------- void __fastcall std::streambuf::~streambuf(char *Block) { _DWORD **v2; // ecx v2 = (_DWORD **)(Block + 28); *(v2 - 7) = &off_560424; std::locale::~locale(v2); operator delete(Block); } // 560424: using guessed type int (*off_560424)(); //----- (004F7B40) -------------------------------------------------------- void __fastcall std::streambuf::~streambuf(int a1) { *(_DWORD *)a1 = &off_560424; std::locale::~locale((_DWORD **)(a1 + 28)); } // 560424: using guessed type int (*off_560424)(); //----- (004F7B50) -------------------------------------------------------- void __fastcall std::streambuf::~streambuf(int a1) { *(_DWORD *)a1 = &off_560424; std::locale::~locale((_DWORD **)(a1 + 28)); } // 560424: using guessed type int (*off_560424)(); //----- (004F7B60) -------------------------------------------------------- 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; } //----- (004F7BB0) -------------------------------------------------------- _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; } //----- (004F7C30) -------------------------------------------------------- _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; } //----- (004F7CD0) -------------------------------------------------------- int __thiscall std::wstreambuf::__safe_gbump(_DWORD *this, int a2) { int result; // eax result = 2 * a2; this[2] += 2 * a2; return result; } //----- (004F7CE0) -------------------------------------------------------- int __thiscall std::wstreambuf::__safe_pbump(_DWORD *this, int a2) { int result; // eax result = 2 * a2; this[5] += 2 * a2; return result; } //----- (004F7CF0) -------------------------------------------------------- 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; } //----- (004F7D10) -------------------------------------------------------- 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; } //----- (004F7D30) -------------------------------------------------------- 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); } // 4F7D91: variable 'v14' is possibly undefined //----- (004F7DD0) -------------------------------------------------------- int std::wstreambuf::sync() { return 0; } //----- (004F7DE0) -------------------------------------------------------- int __thiscall std::wstreambuf::gbump(_DWORD *this, int a2) { int result; // eax result = 2 * a2; this[2] += 2 * a2; return result; } //----- (004F7E00) -------------------------------------------------------- int __thiscall std::wstreambuf::pbump(_DWORD *this, int a2) { int result; // eax result = 2 * a2; this[5] += 2 * a2; return result; } //----- (004F7E10) -------------------------------------------------------- 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; } //----- (004F7E40) -------------------------------------------------------- int __fastcall std::wstreambuf::sgetn(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); } //----- (004F7E50) -------------------------------------------------------- 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; } //----- (004F7E90) -------------------------------------------------------- int __fastcall std::wstreambuf::sputn(int a1) { return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); } //----- (004F7EA0) -------------------------------------------------------- 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; } //----- (004F7EF0) -------------------------------------------------------- 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; } //----- (004F7F70) -------------------------------------------------------- void *__thiscall std::wstreambuf::setbuf(void *this, int a2, int a3) { return this; } //----- (004F7F80) -------------------------------------------------------- int __fastcall std::wstreambuf::snextc(_DWORD *a1) { __int16 *v1; // eax __int16 v2; // dx unsigned __int16 *v3; // eax int (*v5)(); // eax int (*v6)(void); // edx int (*v7)(); // eax __int16 v8; // ax _DWORD *v9; // ecx __int16 v10; // dx unsigned __int16 *v11; // eax __int16 *v12; // eax 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; v12 = (__int16 *)a1[2]; v10 = *v12; a1[2] = v12 + 1; } else { v8 = v6(); v9 = a1; v10 = v8; } if ( v10 == -1 ) return -1; v11 = (unsigned __int16 *)v9[2]; if ( (unsigned int)v11 < v9[3] ) return *v11; v5 = *(int (**)())(*v9 + 36); if ( v5 == std::wstreambuf::underflow ) return -1; return v5(); } //----- (004F8040) -------------------------------------------------------- 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; } //----- (004F80A0) -------------------------------------------------------- int __thiscall std::wstreambuf::xsgetn(_DWORD *this, char *a2, int a3) { int v4; // esi int v5; // edx _BYTE *v7; // ebx char *Src; // eax int v9; // ebx int v10; // ebp char *v12; // ebp int (__fastcall *v13)(_DWORD *); // ebx int (*v14)(); // eax __int16 *v15; // ecx __int16 v16; // ax char *v17; // [esp+30h] [ebp+4h] int v18; // [esp+34h] [ebp+8h] int v19; // [esp+34h] [ebp+8h] int v20; // [esp+34h] [ebp+8h] v4 = 0; v5 = a3; if ( a3 > 0 ) { while ( 1 ) { v7 = (_BYTE *)this[3]; Src = (char *)this[2]; if ( v7 == Src ) { v12 = a2; } else { v9 = (v7 - Src) >> 1; if ( v9 > v5 - v4 ) v9 = v5 - v4; v10 = 2 * v9; if ( v9 ) { v18 = v5; v17 = a2; memcpy(a2, Src, 2 * v9); Src = (char *)this[2]; v5 = v18; a2 = v17; } v4 += v9; this[2] = &Src[v10]; if ( v5 <= v4 ) return v4; v12 = &a2[v10]; } v13 = *(int (__fastcall **)(_DWORD *))(*this + 40); if ( v13 == std::wstreambuf::uflow ) { v14 = *(int (**)())(*this + 36); if ( v14 == std::wstreambuf::underflow ) return v4; v19 = v5; if ( ((unsigned __int16 (__fastcall *)(_DWORD *))v14)(this) == 0xFFFF ) return v4; v15 = (__int16 *)this[2]; v5 = v19; v16 = *v15; this[2] = v15 + 1; } else { v20 = v5; v16 = v13(this); v5 = v20; } if ( v16 != -1 ) { ++v4; *(_WORD *)v12 = v16; a2 = v12 + 2; if ( v5 > v4 ) continue; } return v4; } } return v4; } //----- (004F8190) -------------------------------------------------------- int __thiscall std::wstreambuf::xsputn(_DWORD *this, char *a2, int a3) { int v3; // edx int v6; // esi _BYTE *v7; // ebx char *v8; // eax int v9; // ebx int v10; // ecx int (__stdcall *v12)(int); // eax int v13; // [esp+44h] [ebp+8h] int v14; // [esp+44h] [ebp+8h] v3 = a3; if ( a3 > 0 ) { v6 = 0; while ( 1 ) { v7 = (_BYTE *)this[6]; v8 = (char *)this[5]; if ( v7 != v8 ) { v9 = (v7 - v8) >> 1; if ( v9 > v3 - v6 ) v9 = v3 - v6; v10 = 2 * v9; if ( v9 ) { v13 = v3; memcpy(v8, a2, 2 * v9); v8 = (char *)this[5]; v3 = v13; v10 = 2 * v9; } v6 += v9; this[5] = &v8[v10]; if ( v3 <= v6 ) return v6; a2 += v10; } v12 = *(int (__stdcall **)(int))(*this + 52); if ( v12 != std::wstreambuf::overflow ) { v14 = v3; if ( ((unsigned __int16 (__thiscall *)(_DWORD *, _DWORD))v12)(this, *(unsigned __int16 *)a2) != 0xFFFF ) { v3 = v14; ++v6; a2 += 2; if ( v14 > v6 ) continue; } } return v6; } } return 0; } //----- (004F8260) -------------------------------------------------------- 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(); } //----- (004F8280) -------------------------------------------------------- _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; } //----- (004F82A0) -------------------------------------------------------- _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; } //----- (004F82C0) -------------------------------------------------------- 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; } //----- (004F8310) -------------------------------------------------------- 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; } //----- (004F8340) -------------------------------------------------------- int __stdcall std::wstreambuf::overflow(int a1) { return -1; } //----- (004F8350) -------------------------------------------------------- volatile signed __int32 **__thiscall std::wstreambuf::pubimbue( volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3) { int (__stdcall *v3)(int); // eax const std::locale *v5; // [esp+4h] [ebp-54h] std::locale::locale(this, a2 + 7, v5); v3 = (int (__stdcall *)(int))*((_DWORD *)*a2 + 2); if ( v3 != std::wstreambuf::imbue ) ((void (__thiscall *)(volatile signed __int32 **, volatile signed __int32 **))v3)(a2, a3); std::locale::operator=(a2 + 7, a3); return this; } // 4F838E: variable 'v5' is possibly undefined // 4F7DF0: using guessed type int __stdcall std::wstreambuf::imbue(int); //----- (004F8410) -------------------------------------------------------- int __stdcall std::wstreambuf::pbackfail(int a1) { return -1; } //----- (004F8420) -------------------------------------------------------- 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; } //----- (004F8440) -------------------------------------------------------- int std::wstreambuf::showmanyc() { return 0; } //----- (004F8450) -------------------------------------------------------- int __thiscall std::wstreambuf::sputbackc(_DWORD *this, int a2) { unsigned int v2; // eax int result; // eax v2 = this[2]; if ( this[1] < v2 && *(_WORD *)(v2 - 2) == (_WORD)a2 ) { this[2] = v2 - 2; return a2; } else { result = -1; if ( *(int (__stdcall **)(int))(*this + 44) != std::wstreambuf::pbackfail ) return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 44))(this, (unsigned __int16)a2); } return result; } //----- (004F8490) -------------------------------------------------------- int std::wstreambuf::underflow() { return -1; } //----- (004F84A0) -------------------------------------------------------- volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( _DWORD *a1@, std::locale *a2, const std::locale *a3) { volatile signed __int32 **v3; // ecx *a1 = &off_560464; v3 = (volatile signed __int32 **)(a1 + 7); *(v3 - 6) = (volatile signed __int32 *)*((_DWORD *)a2 + 1); *(v3 - 5) = (volatile signed __int32 *)*((_DWORD *)a2 + 2); *(v3 - 4) = (volatile signed __int32 *)*((_DWORD *)a2 + 3); *(v3 - 3) = (volatile signed __int32 *)*((_DWORD *)a2 + 4); *(v3 - 2) = (volatile signed __int32 *)*((_DWORD *)a2 + 5); *(v3 - 1) = (volatile signed __int32 *)*((_DWORD *)a2 + 6); return std::locale::locale(v3, (volatile signed __int32 **)a2 + 7, a3); } // 560464: using guessed type int (*off_560464)(); //----- (004F84E0) -------------------------------------------------------- void __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_560464; v1 = a1 + 7; *(v1 - 6) = 0; *(v1 - 5) = 0; *(v1 - 4) = 0; *(v1 - 3) = 0; *(v1 - 2) = 0; *(v1 - 1) = 0; std::locale::locale(v1); } // 560464: using guessed type int (*off_560464)(); //----- (004F8520) -------------------------------------------------------- volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( _DWORD *a1@, std::locale *a2, const std::locale *a3) { volatile signed __int32 **v3; // ecx *a1 = &off_560464; v3 = (volatile signed __int32 **)(a1 + 7); *(v3 - 6) = (volatile signed __int32 *)*((_DWORD *)a2 + 1); *(v3 - 5) = (volatile signed __int32 *)*((_DWORD *)a2 + 2); *(v3 - 4) = (volatile signed __int32 *)*((_DWORD *)a2 + 3); *(v3 - 3) = (volatile signed __int32 *)*((_DWORD *)a2 + 4); *(v3 - 2) = (volatile signed __int32 *)*((_DWORD *)a2 + 5); *(v3 - 1) = (volatile signed __int32 *)*((_DWORD *)a2 + 6); return std::locale::locale(v3, (volatile signed __int32 **)a2 + 7, a3); } // 560464: using guessed type int (*off_560464)(); //----- (004F8560) -------------------------------------------------------- void __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &off_560464; v1 = a1 + 7; *(v1 - 6) = 0; *(v1 - 5) = 0; *(v1 - 4) = 0; *(v1 - 3) = 0; *(v1 - 2) = 0; *(v1 - 1) = 0; std::locale::locale(v1); } // 560464: using guessed type int (*off_560464)(); //----- (004F85A0) -------------------------------------------------------- void __fastcall std::wstreambuf::~wstreambuf(char *Block) { _DWORD **v2; // ecx v2 = (_DWORD **)(Block + 28); *(v2 - 7) = &off_560464; std::locale::~locale(v2); operator delete(Block); } // 560464: using guessed type int (*off_560464)(); //----- (004F85D0) -------------------------------------------------------- void __fastcall std::wstreambuf::~wstreambuf(int a1) { *(_DWORD *)a1 = &off_560464; std::locale::~locale((_DWORD **)(a1 + 28)); } // 560464: using guessed type int (*off_560464)(); //----- (004F85E0) -------------------------------------------------------- void __fastcall std::wstreambuf::~wstreambuf(int a1) { *(_DWORD *)a1 = &off_560464; std::locale::~locale((_DWORD **)(a1 + 28)); } // 560464: using guessed type int (*off_560464)(); //----- (004F85F0) -------------------------------------------------------- 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; } //----- (004F8640) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_560D14; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_5604A4; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 5604A4: using guessed type int (*off_5604A4)(); // 560D14: using guessed type int (*off_560D14)(); //----- (004F8780) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) { std::messages_byname::messages_byname(this, *a2, a3); } //----- (004F8790) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_560D14; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_5604A4; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 5604A4: using guessed type int (*off_5604A4)(); // 560D14: using guessed type int (*off_560D14)(); //----- (004F88D0) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) { std::messages_byname::messages_byname(this, *a2, a3); } //----- (004F88E0) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_560D14; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 4F891E: variable 'lpfctx' is possibly undefined // 560D14: using guessed type int (*off_560D14)(); //----- (004F8940) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560D14; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4F897E: variable 'lpfctx' is possibly undefined // 560D14: using guessed type int (*off_560D14)(); //----- (004F89A0) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560D14; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4F89DE: variable 'lpfctx' is possibly undefined // 560D14: using guessed type int (*off_560D14)(); //----- (004F8A00) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_560D30; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_5604C0; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 5604C0: using guessed type int (*off_5604C0)(); // 560D30: using guessed type int (*off_560D30)(); //----- (004F8B40) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) { std::messages_byname::messages_byname(this, *a2, a3); } //----- (004F8B50) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_560D30; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_5604C0; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 5604C0: using guessed type int (*off_5604C0)(); // 560D30: using guessed type int (*off_560D30)(); //----- (004F8C90) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) { std::messages_byname::messages_byname(this, *a2, a3); } //----- (004F8CA0) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_560D30; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 4F8CDE: variable 'lpfctx' is possibly undefined // 560D30: using guessed type int (*off_560D30)(); //----- (004F8D00) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560D30; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4F8D3E: variable 'lpfctx' is possibly undefined // 560D30: using guessed type int (*off_560D30)(); //----- (004F8D60) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560D30; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 4F8D9E: variable 'lpfctx' is possibly undefined // 560D30: using guessed type int (*off_560D30)(); //----- (004F8DC0) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_560D4C; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_5604DC; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::numpunct::_M_initialize_numpunct(this, v4[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 5604DC: using guessed type int (*off_5604DC)(); // 560D4C: using guessed type int (*off_560D4C)(); //----- (004F8F00) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_560D4C; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_5604DC; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::numpunct::_M_initialize_numpunct(this, v5[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 5604DC: using guessed type int (*off_5604DC)(); // 560D4C: using guessed type int (*off_560D4C)(); //----- (004F9050) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_560D4C; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_5604DC; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::numpunct::_M_initialize_numpunct(this, v4[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 5604DC: using guessed type int (*off_5604DC)(); // 560D4C: using guessed type int (*off_560D4C)(); //----- (004F9190) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_560D4C; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_5604DC; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::numpunct::_M_initialize_numpunct(this, v5[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 5604DC: using guessed type int (*off_5604DC)(); // 560D4C: using guessed type int (*off_560D4C)(); //----- (004F92E0) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block) { *Block = &off_5604DC; std::numpunct::~numpunct(Block); operator delete(Block); } // 5604DC: using guessed type int (*off_5604DC)(); //----- (004F9300) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { *a1 = &off_5604DC; std::numpunct::~numpunct(a1); } // 5604DC: using guessed type int (*off_5604DC)(); //----- (004F9310) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { *a1 = &off_5604DC; std::numpunct::~numpunct(a1); } // 5604DC: using guessed type int (*off_5604DC)(); //----- (004F9320) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_560D70; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_560500; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::numpunct::_M_initialize_numpunct(this, v4[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 560500: using guessed type int (*off_560500)(); // 560D70: using guessed type int (*off_560D70)(); //----- (004F9460) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_560D70; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_560500; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::numpunct::_M_initialize_numpunct(this, v5[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 560500: using guessed type int (*off_560500)(); // 560D70: using guessed type int (*off_560D70)(); //----- (004F95B0) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_560D70; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_560500; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::numpunct::_M_initialize_numpunct(this, v4[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 560500: using guessed type int (*off_560500)(); // 560D70: using guessed type int (*off_560D70)(); //----- (004F96F0) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_560D70; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_560500; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::numpunct::_M_initialize_numpunct(this, v5[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 560500: using guessed type int (*off_560500)(); // 560D70: using guessed type int (*off_560D70)(); //----- (004F9840) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block) { *Block = &off_560500; std::numpunct::~numpunct(Block); operator delete(Block); } // 560500: using guessed type int (*off_560500)(); //----- (004F9860) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { *a1 = &off_560500; std::numpunct::~numpunct(a1); } // 560500: using guessed type int (*off_560500)(); //----- (004F9870) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { *a1 = &off_560500; std::numpunct::~numpunct(a1); } // 560500: using guessed type int (*off_560500)(); //----- (004F9880) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560524; result = a3 != 0; this[1] = result; return result; } // 560524: using guessed type int (*off_560524)(); //----- (004F98A0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560524; result = a3 != 0; this[1] = result; return result; } // 560524: using guessed type int (*off_560524)(); //----- (004F98C0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560524; result = a3 != 0; this[1] = result; return result; } // 560524: using guessed type int (*off_560524)(); //----- (004F98E0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560524; result = a3 != 0; this[1] = result; return result; } // 560524: using guessed type int (*off_560524)(); //----- (004F9900) -------------------------------------------------------- void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560D94; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4F990C: variable 'Blocka' is possibly undefined // 560D94: using guessed type int (*off_560D94)(); //----- (004F9920) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560D94; std::locale::facet::~facet(a1); } // 4F9920: variable 'v1' is possibly undefined // 560D94: using guessed type int (*off_560D94)(); //----- (004F9930) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560D94; std::locale::facet::~facet(a1); } // 4F9930: variable 'v1' is possibly undefined // 560D94: using guessed type int (*off_560D94)(); //----- (004F9940) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_56054C; result = a3 != 0; this[1] = result; return result; } // 56054C: using guessed type int (*off_56054C)(); //----- (004F9960) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_56054C; result = a3 != 0; this[1] = result; return result; } // 56054C: using guessed type int (*off_56054C)(); //----- (004F9980) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_56054C; result = a3 != 0; this[1] = result; return result; } // 56054C: using guessed type int (*off_56054C)(); //----- (004F99A0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_56054C; result = a3 != 0; this[1] = result; return result; } // 56054C: using guessed type int (*off_56054C)(); //----- (004F99C0) -------------------------------------------------------- void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560DBC; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4F99CC: variable 'Blocka' is possibly undefined // 560DBC: using guessed type int (*off_560DBC)(); //----- (004F99E0) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560DBC; std::locale::facet::~facet(a1); } // 4F99E0: variable 'v1' is possibly undefined // 560DBC: using guessed type int (*off_560DBC)(); //----- (004F99F0) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560DBC; std::locale::facet::~facet(a1); } // 4F99F0: variable 'v1' is possibly undefined // 560DBC: using guessed type int (*off_560DBC)(); //----- (004F9A00) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560574; result = a3 != 0; this[1] = result; return result; } // 560574: using guessed type int (*off_560574)(); //----- (004F9A20) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560574; result = a3 != 0; this[1] = result; return result; } // 560574: using guessed type int (*off_560574)(); //----- (004F9A40) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560574; result = a3 != 0; this[1] = result; return result; } // 560574: using guessed type int (*off_560574)(); //----- (004F9A60) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560574; result = a3 != 0; this[1] = result; return result; } // 560574: using guessed type int (*off_560574)(); //----- (004F9A80) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560574; result = a3 != 0; this[1] = result; return result; } // 560574: using guessed type int (*off_560574)(); //----- (004F9AA0) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560574; result = a3 != 0; this[1] = result; return result; } // 560574: using guessed type int (*off_560574)(); //----- (004F9AC0) -------------------------------------------------------- void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560DE4; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4F9ACC: variable 'Blocka' is possibly undefined // 560DE4: using guessed type int (*off_560DE4)(); //----- (004F9AE0) -------------------------------------------------------- void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560DE4; std::locale::facet::~facet(a1); } // 4F9AE0: variable 'v1' is possibly undefined // 560DE4: using guessed type int (*off_560DE4)(); //----- (004F9AF0) -------------------------------------------------------- void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560DE4; std::locale::facet::~facet(a1); } // 4F9AF0: variable 'v1' is possibly undefined // 560DE4: using guessed type int (*off_560DE4)(); //----- (004F9B00) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560588; result = a3 != 0; this[1] = result; return result; } // 560588: using guessed type int (*off_560588)(); //----- (004F9B20) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560588; result = a3 != 0; this[1] = result; return result; } // 560588: using guessed type int (*off_560588)(); //----- (004F9B40) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560588; result = a3 != 0; this[1] = result; return result; } // 560588: using guessed type int (*off_560588)(); //----- (004F9B60) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560588; result = a3 != 0; this[1] = result; return result; } // 560588: using guessed type int (*off_560588)(); //----- (004F9B80) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560588; result = a3 != 0; this[1] = result; return result; } // 560588: using guessed type int (*off_560588)(); //----- (004F9BA0) -------------------------------------------------------- BOOL __thiscall std::time_put_byname>::time_put_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_560588; result = a3 != 0; this[1] = result; return result; } // 560588: using guessed type int (*off_560588)(); //----- (004F9BC0) -------------------------------------------------------- void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560DF8; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4F9BCC: variable 'Blocka' is possibly undefined // 560DF8: using guessed type int (*off_560DF8)(); //----- (004F9BE0) -------------------------------------------------------- void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560DF8; std::locale::facet::~facet(a1); } // 4F9BE0: variable 'v1' is possibly undefined // 560DF8: using guessed type int (*off_560DF8)(); //----- (004F9BF0) -------------------------------------------------------- void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560DF8; std::locale::facet::~facet(a1); } // 4F9BF0: variable 'v1' is possibly undefined // 560DF8: using guessed type int (*off_560DF8)(); //----- (004F9C00) -------------------------------------------------------- void __userpurge std::underflow_error::underflow_error(_DWORD *a1@, std::underflow_error *this, const char *a3) { int v4; // [esp+5Fh] [ebp-9h] BYREF *a1 = &off_5601E8; std::string::string(a1 + 1, (char *)this, (int)&v4); *a1 = &off_56059C; } // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 56059C: using guessed type void (__cdecl *off_56059C)(std::underflow_error *__hidden this); //----- (004F9C90) -------------------------------------------------------- void __thiscall std::underflow_error::underflow_error(_DWORD *this, int a2) { unsigned int v2; // [esp+8h] [ebp-50h] *this = &off_5601E8; std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); *this = &off_56059C; } // 4F9CE4: variable 'v2' is possibly undefined // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 56059C: using guessed type void (__cdecl *off_56059C)(std::underflow_error *__hidden this); //----- (004F9D30) -------------------------------------------------------- void __userpurge std::underflow_error::underflow_error( _DWORD *a1@, std::underflow_error *this, const std::string *a3) { const std::string *v3; // [esp+4h] [ebp-54h] *a1 = &off_5601E8; std::string::string(a1 + 1, this, v3); *a1 = &off_56059C; } // 4F9D78: variable 'v3' is possibly undefined // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 56059C: using guessed type void (__cdecl *off_56059C)(std::underflow_error *__hidden this); //----- (004F9DC0) -------------------------------------------------------- void __fastcall std::underflow_error::~underflow_error(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_56059C; std::runtime_error::~runtime_error(Block); operator delete(a1); } // 4F9DCC: variable 'Block' is possibly undefined // 56059C: using guessed type void (__cdecl *off_56059C)(std::underflow_error *__hidden this); //----- (004F9DE0) -------------------------------------------------------- void __cdecl std::underflow_error::~underflow_error(std::exception *a1) { _DWORD *v1; // ecx int v2; // eax int v3; // ecx int v4; // eax int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v2 = _CRT_MT; *v1 = &off_5601E8; v3 = v1[1]; if ( v2 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v4 = *(_DWORD *)(v3 - 4); *(_DWORD *)(v3 - 4) = v4 - 1; if ( v4 > 0 ) { LABEL_3: std::exception::~exception(a1); return; } } std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); std::exception::~exception(a1); } // 4F9DEB: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); // 4F9DE0: using guessed type int var_D[3]; //----- (004F9E40) -------------------------------------------------------- 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; } // 4F9E6A: variable 'v4' is possibly undefined // 4F9E6A: variable 'v5' is possibly undefined // 4F9E6A: variable 'v6' is possibly undefined // 4F9E6A: variable 'v8' is possibly undefined // 4F9E6A: variable 'v9' is possibly undefined // 4F9E7C: variable 'v7' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (004F9E9C) -------------------------------------------------------- void __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(int a1) { if ( _CRT_MT ) _InterlockedIncrement((volatile signed __int32 *)(a1 + 4)); else ++*(_DWORD *)(a1 + 4); } // 53E1E4: using guessed type int _CRT_MT; //----- (004F9EB0) -------------------------------------------------------- void __thiscall std::__numpunct_cache::_M_cache(int this, int a2) { _DWORD *(__thiscall *v2)(char *, int); // eax unsigned int v3; // eax bool v4; // al _DWORD *(__thiscall *v5)(int *, int); // eax unsigned int v6; // eax _DWORD *(__thiscall *v7)(int *, int); // eax unsigned int v8; // eax int (__fastcall *v9)(int); // eax char v10; // al int (__fastcall *v11)(int); // eax char v12; // al char v13; // al char *v14; // edx void (__thiscall *v15)(_BYTE *, char *, char *, int); // eax char v16; // al void (__thiscall *v17)(_BYTE *, char *, char *, int); // eax int v18; // ecx int v19; // eax int v20; // ecx int v21; // eax int v22; // ecx int v23; // eax unsigned int v24; // [esp+Ch] [ebp-7Ch] unsigned int v25; // [esp+Ch] [ebp-7Ch] unsigned int v26; // [esp+Ch] [ebp-7Ch] char *v27; // [esp+1Ch] [ebp-6Ch] char *v28; // [esp+1Ch] [ebp-6Ch] std::string *v29; // [esp+24h] [ebp-64h] std::string *v30; // [esp+28h] [ebp-60h] std::string *Block; // [esp+2Ch] [ebp-5Ch] _DWORD *v32; // [esp+34h] [ebp-54h] _BYTE *v33; // [esp+34h] [ebp-54h] char v35[7]; // [esp+71h] [ebp-17h] BYREF int v36; // [esp+78h] [ebp-10h] BYREF int v37[3]; // [esp+7Ch] [ebp-Ch] BYREF v32 = std::use_facet>(a2); v2 = *(_DWORD *(__thiscall **)(char *, int))(*v32 + 16); if ( (char *)v2 == (char *)std::numpunct::do_grouping ) std::string::string(&v35[3], *(char **)(v32[2] + 8), (int)v37); else v2(&v35[3], (int)v32); v3 = *(_DWORD *)(*(_DWORD *)&v35[3] - 12); *(_DWORD *)(this + 12) = v3; Block = (std::string *)operator new[](v3); std::string::copy(&v35[3], Block, *(_DWORD *)(this + 12), 0, v24); v4 = 0; if ( *(_DWORD *)(this + 12) ) v4 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; *(_BYTE *)(this + 16) = v4; v5 = *(_DWORD *(__thiscall **)(int *, int))(*v32 + 20); if ( v5 == std::numpunct::do_truename ) std::string::string(&v36, *(char **)(v32[2] + 20), (int)&v35[1]); else v5(&v36, (int)v32); v6 = *(_DWORD *)(v36 - 12); *(_DWORD *)(this + 24) = v6; v29 = (std::string *)operator new[](v6); std::string::copy(&v36, v29, *(_DWORD *)(this + 24), 0, v25); v7 = *(_DWORD *(__thiscall **)(int *, int))(*v32 + 24); if ( v7 == std::numpunct::do_falsename ) std::string::string(v37, *(char **)(v32[2] + 28), (int)&v35[2]); else v7(v37, (int)v32); v8 = *(_DWORD *)(v37[0] - 12); *(_DWORD *)(this + 32) = v8; v30 = (std::string *)operator new[](v8); std::string::copy(v37, v30, *(_DWORD *)(this + 32), 0, v26); v9 = *(int (__fastcall **)(int))(*v32 + 8); if ( v9 == std::numpunct::do_decimal_point ) v10 = *(_BYTE *)(v32[2] + 36); else v10 = v9((int)v32); *(_BYTE *)(this + 36) = v10; v11 = *(int (__fastcall **)(int))(*v32 + 12); if ( v11 == std::numpunct::do_thousands_sep ) v12 = *(_BYTE *)(v32[2] + 37); else v12 = v11((int)v32); *(_BYTE *)(this + 37) = v12; v33 = std::use_facet>(a2); v13 = v33[28]; v27 = std::__num_base::_S_atoms_out[0]; v14 = std::__num_base::_S_atoms_out[0]; if ( v13 == 1 ) goto LABEL_17; if ( !v13 ) std::ctype::_M_widen_init((int)v33); v14 = v27; v15 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v33 + 28); if ( (char *)v15 == (char *)std::ctype::do_widen ) { LABEL_17: *(_DWORD *)(this + 38) = *(_DWORD *)v14; *(_DWORD *)(this + 42) = *((_DWORD *)v14 + 1); *(_DWORD *)(this + 46) = *((_DWORD *)v14 + 2); *(_DWORD *)(this + 50) = *((_DWORD *)v14 + 3); *(_DWORD *)(this + 54) = *((_DWORD *)v14 + 4); *(_DWORD *)(this + 58) = *((_DWORD *)v14 + 5); *(_DWORD *)(this + 62) = *((_DWORD *)v14 + 6); *(_DWORD *)(this + 66) = *((_DWORD *)v14 + 7); *(_DWORD *)(this + 70) = *((_DWORD *)v14 + 8); } else { v15(v33, v27, v27 + 36, this + 38); } v28 = std::__num_base::_S_atoms_in[0]; v16 = v33[28]; if ( v16 == 1 ) goto LABEL_21; if ( v16 ) { v17 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v33 + 28); if ( (char *)v17 == (char *)std::ctype::do_widen ) { LABEL_21: *(_DWORD *)(this + 74) = *(_DWORD *)v28; *(_DWORD *)(this + 78) = *((_DWORD *)v28 + 1); *(_DWORD *)(this + 82) = *((_DWORD *)v28 + 2); *(_DWORD *)(this + 86) = *((_DWORD *)v28 + 3); *(_DWORD *)(this + 90) = *((_DWORD *)v28 + 4); *(_DWORD *)(this + 94) = *((_DWORD *)v28 + 5); *(_WORD *)(this + 98) = *((_WORD *)v28 + 12); goto LABEL_22; } } else { std::ctype::_M_widen_init((int)v33); v17 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v33 + 28); if ( (char *)v17 == (char *)std::ctype::do_widen ) goto LABEL_21; } v17(v33, v28, v28 + 26, this + 74); LABEL_22: *(_DWORD *)(this + 8) = Block; *(_DWORD *)(this + 20) = v29; v18 = v37[0]; *(_DWORD *)(this + 28) = v30; *(_BYTE *)(this + 100) = 1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v18 - 4), 0xFFFFFFFF) > 0 ) { LABEL_24: v20 = v36; if ( !_CRT_MT ) goto LABEL_25; goto LABEL_31; } } else { v19 = *(_DWORD *)(v18 - 4); *(_DWORD *)(v18 - 4) = v19 - 1; if ( v19 > 0 ) goto LABEL_24; } std::string::_Rep::_M_destroy((void *)(v18 - 12), (int)&v35[2]); v20 = v36; if ( !_CRT_MT ) { LABEL_25: v21 = *(_DWORD *)(v20 - 4); *(_DWORD *)(v20 - 4) = v21 - 1; if ( v21 > 0 ) goto LABEL_26; goto LABEL_32; } LABEL_31: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v20 - 4), 0xFFFFFFFF) > 0 ) { LABEL_26: v22 = *(_DWORD *)&v35[3]; if ( !_CRT_MT ) goto LABEL_27; goto LABEL_33; } LABEL_32: std::string::_Rep::_M_destroy((void *)(v20 - 12), (int)v37); v22 = *(_DWORD *)&v35[3]; if ( !_CRT_MT ) { LABEL_27: v23 = *(_DWORD *)(v22 - 4); *(_DWORD *)(v22 - 4) = v23 - 1; if ( v23 > 0 ) return; LABEL_34: std::string::_Rep::_M_destroy((void *)(v22 - 12), (int)v37); return; } LABEL_33: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v22 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_34; } // 4F9F6D: variable 'v24' is possibly undefined // 4FA00F: variable 'v25' is possibly undefined // 4FA091: variable 'v26' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53F580: using guessed type char *std::__num_base::_S_atoms_in[3]; // 53F584: using guessed type char *std::__num_base::_S_atoms_out[2]; //----- (004FA510) -------------------------------------------------------- int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_5605B0; 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; } // 5605B0: using guessed type int (*off_5605B0)(); //----- (004FA560) -------------------------------------------------------- int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_5605B0; 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; } // 5605B0: using guessed type int (*off_5605B0)(); //----- (004FA5B0) -------------------------------------------------------- void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] std::__numpunct_cache::~__numpunct_cache((std::locale::facet *)lpfctx); operator delete(a1); } // 4FA5F0: variable 'lpfctx' is possibly undefined //----- (004FA640) -------------------------------------------------------- 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_5605B0; 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); } // 4FA641: variable 'v1' is possibly undefined // 5605B0: using guessed type int (*off_5605B0)(); //----- (004FA690) -------------------------------------------------------- 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_5605B0; 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); } // 4FA691: variable 'v1' is possibly undefined // 5605B0: using guessed type int (*off_5605B0)(); //----- (004FA6E0) -------------------------------------------------------- void __thiscall std::__numpunct_cache::_M_cache(int this, int a2) { _DWORD *(__thiscall *v2)(char *, int); // eax unsigned int v3; // eax bool v4; // al _DWORD *(__thiscall *v5)(int *, int); // eax unsigned int v6; // eax _DWORD *(__thiscall *v7)(int *, int); // eax unsigned int v8; // eax int v9; // eax int (__fastcall *v10)(int); // edx __int16 v11; // dx int (__fastcall *v12)(int); // eax __int16 v13; // ax int v14; // ecx int v15; // eax int v16; // ecx int v17; // eax int v18; // ecx int v19; // eax unsigned int v20; // [esp+Ch] [ebp-6Ch] _WORD *v21; // [esp+14h] [ebp-64h] _WORD *v22; // [esp+18h] [ebp-60h] std::string *Block; // [esp+1Ch] [ebp-5Ch] _DWORD *v24; // [esp+24h] [ebp-54h] void *v25; // [esp+24h] [ebp-54h] char v27[7]; // [esp+61h] [ebp-17h] BYREF int v28; // [esp+68h] [ebp-10h] BYREF int v29[2]; // [esp+6Ch] [ebp-Ch] BYREF v24 = std::use_facet>(a2); v2 = *(_DWORD *(__thiscall **)(char *, int))(*v24 + 16); if ( (char *)v2 == (char *)std::numpunct::do_grouping ) std::string::string(&v27[3], *(char **)(v24[2] + 8), (int)v29); else v2(&v27[3], (int)v24); v3 = *(_DWORD *)(*(_DWORD *)&v27[3] - 12); *(_DWORD *)(this + 12) = v3; Block = (std::string *)operator new[](v3); std::string::copy(&v27[3], Block, *(_DWORD *)(this + 12), 0, v20); v4 = 0; if ( *(_DWORD *)(this + 12) ) v4 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; *(_BYTE *)(this + 16) = v4; v5 = *(_DWORD *(__thiscall **)(int *, int))(*v24 + 20); if ( v5 == std::numpunct::do_truename ) std::wstring::basic_string(&v28, *(wchar_t **)(v24[2] + 20), (int)&v27[1]); else v5(&v28, (int)v24); v6 = *(_DWORD *)(v28 - 12); *(_DWORD *)(this + 24) = v6; if ( v6 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v21 = (_WORD *)operator new[](2 * v6); std::wstring::copy(&v28, v21, *(_DWORD *)(this + 24), 0); v7 = *(_DWORD *(__thiscall **)(int *, int))(*v24 + 24); if ( v7 == std::numpunct::do_falsename ) std::wstring::basic_string(v29, *(wchar_t **)(v24[2] + 28), (int)&v27[2]); else v7(v29, (int)v24); v8 = *(_DWORD *)(v29[0] - 12); *(_DWORD *)(this + 32) = v8; if ( v8 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v22 = (_WORD *)operator new[](2 * v8); std::wstring::copy(v29, v22, *(_DWORD *)(this + 32), 0); v9 = *v24; v10 = *(int (__fastcall **)(int))(*v24 + 8); if ( v10 == std::numpunct::do_decimal_point ) { v11 = *(_WORD *)(v24[2] + 36); } else { v11 = v10((int)v24); v9 = *v24; } v12 = *(int (__fastcall **)(int))(v9 + 12); *(_WORD *)(this + 36) = v11; if ( v12 == std::numpunct::do_thousands_sep ) v13 = *(_WORD *)(v24[2] + 38); else v13 = v12((int)v24); *(_WORD *)(this + 38) = v13; v25 = std::use_facet>(a2); (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v25 + 44))( v25, std::__num_base::_S_atoms_out[0], std::__num_base::_S_atoms_out[0] + 36, this + 40); (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v25 + 44))( v25, std::__num_base::_S_atoms_in[0], std::__num_base::_S_atoms_in[0] + 26, this + 112); v14 = v29[0]; *(_DWORD *)(this + 8) = Block; *(_BYTE *)(this + 164) = 1; *(_DWORD *)(this + 20) = v21; *(_DWORD *)(this + 28) = v22; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v14 - 4), 0xFFFFFFFF) > 0 ) { LABEL_17: v16 = v28; if ( !_CRT_MT ) goto LABEL_18; goto LABEL_24; } } else { v15 = *(_DWORD *)(v14 - 4); *(_DWORD *)(v14 - 4) = v15 - 1; if ( v15 > 0 ) goto LABEL_17; } std::wstring::_Rep::_M_destroy((void *)(v14 - 12), (int)&v27[2]); v16 = v28; if ( !_CRT_MT ) { LABEL_18: v17 = *(_DWORD *)(v16 - 4); *(_DWORD *)(v16 - 4) = v17 - 1; if ( v17 > 0 ) goto LABEL_19; goto LABEL_25; } LABEL_24: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v16 - 4), 0xFFFFFFFF) > 0 ) { LABEL_19: v18 = *(_DWORD *)&v27[3]; if ( !_CRT_MT ) goto LABEL_20; goto LABEL_26; } LABEL_25: std::wstring::_Rep::_M_destroy((void *)(v16 - 12), (int)v29); v18 = *(_DWORD *)&v27[3]; if ( !_CRT_MT ) { LABEL_20: v19 = *(_DWORD *)(v18 - 4); *(_DWORD *)(v18 - 4) = v19 - 1; if ( v19 > 0 ) return; LABEL_27: std::string::_Rep::_M_destroy((void *)(v18 - 12), (int)v29); return; } LABEL_26: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v18 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_27; } // 4FA79B: variable 'v20' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53F580: using guessed type char *std::__num_base::_S_atoms_in[3]; // 53F584: using guessed type char *std::__num_base::_S_atoms_out[2]; //----- (004FAC60) -------------------------------------------------------- BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5605C0; 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; } // 5605C0: using guessed type int (*off_5605C0)(); //----- (004FACC0) -------------------------------------------------------- BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5605C0; 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; } // 5605C0: using guessed type int (*off_5605C0)(); //----- (004FAD20) -------------------------------------------------------- void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] std::__numpunct_cache::~__numpunct_cache((std::locale::facet *)lpfctx); operator delete(a1); } // 4FAD60: variable 'lpfctx' is possibly undefined //----- (004FADB0) -------------------------------------------------------- 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_5605C0; 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); } // 4FADB1: variable 'v1' is possibly undefined // 5605C0: using guessed type int (*off_5605C0)(); //----- (004FAE00) -------------------------------------------------------- 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_5605C0; 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); } // 4FAE01: variable 'v1' is possibly undefined // 5605C0: using guessed type int (*off_5605C0)(); //----- (004FAE50) -------------------------------------------------------- void __userpurge std::invalid_argument::invalid_argument(_DWORD *a1@, std::invalid_argument *this, const char *a3) { int v4; // [esp+5Fh] [ebp-9h] BYREF *a1 = &off_55FF90; std::string::string(a1 + 1, (char *)this, (int)&v4); *a1 = &off_5605D0; } // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 5605D0: using guessed type void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this); //----- (004FAEE0) -------------------------------------------------------- void __thiscall std::invalid_argument::invalid_argument(_DWORD *this, int a2) { unsigned int v2; // [esp+8h] [ebp-50h] *this = &off_55FF90; std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); *this = &off_5605D0; } // 4FAF34: variable 'v2' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 5605D0: using guessed type void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this); //----- (004FAF80) -------------------------------------------------------- void __userpurge std::invalid_argument::invalid_argument( _DWORD *a1@, std::invalid_argument *this, const std::string *a3) { const std::string *v3; // [esp+4h] [ebp-54h] *a1 = &off_55FF90; std::string::string(a1 + 1, this, v3); *a1 = &off_5605D0; } // 4FAFC8: variable 'v3' is possibly undefined // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 5605D0: using guessed type void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this); //----- (004FB010) -------------------------------------------------------- void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_5605D0; std::logic_error::~logic_error(Block); operator delete(a1); } // 4FB01C: variable 'Block' is possibly undefined // 5605D0: using guessed type void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this); //----- (004FB030) -------------------------------------------------------- void __cdecl std::invalid_argument::~invalid_argument(std::exception *a1) { _DWORD *v1; // ecx int v2; // eax int v3; // ecx int v4; // eax int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v2 = _CRT_MT; *v1 = &off_55FF90; v3 = v1[1]; if ( v2 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v4 = *(_DWORD *)(v3 - 4); *(_DWORD *)(v3 - 4) = v4 - 1; if ( v4 > 0 ) { LABEL_3: std::exception::~exception(a1); return; } } std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); std::exception::~exception(a1); } // 4FB03B: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); // 4FB030: using guessed type int var_D[3]; //----- (004FB090) -------------------------------------------------------- int *__fastcall std::_Rb_tree_iterator>>::operator++( int *a1) { *a1 = std::_Rb_tree_increment(*a1); return a1; } //----- (004FB0B0) -------------------------------------------------------- BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5605E4; 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; } // 5605E4: using guessed type int (*off_5605E4)(); //----- (004FB250) -------------------------------------------------------- BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5605E4; 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; } // 5605E4: using guessed type int (*off_5605E4)(); //----- (004FB3F0) -------------------------------------------------------- void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_5605E4; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4FB3FC: variable 'Blocka' is possibly undefined // 5605E4: using guessed type int (*off_5605E4)(); //----- (004FB410) -------------------------------------------------------- void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5605E4; std::locale::facet::~facet(a1); } // 4FB410: variable 'v1' is possibly undefined // 5605E4: using guessed type int (*off_5605E4)(); //----- (004FB420) -------------------------------------------------------- void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5605E4; std::locale::facet::~facet(a1); } // 4FB420: variable 'v1' is possibly undefined // 5605E4: using guessed type int (*off_5605E4)(); //----- (004FB430) -------------------------------------------------------- BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5605F4; 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; } // 5605F4: using guessed type int (*off_5605F4)(); //----- (004FB5D0) -------------------------------------------------------- BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5605F4; 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; } // 5605F4: using guessed type int (*off_5605F4)(); //----- (004FB770) -------------------------------------------------------- void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_5605F4; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4FB77C: variable 'Blocka' is possibly undefined // 5605F4: using guessed type int (*off_5605F4)(); //----- (004FB790) -------------------------------------------------------- void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5605F4; std::locale::facet::~facet(a1); } // 4FB790: variable 'v1' is possibly undefined // 5605F4: using guessed type int (*off_5605F4)(); //----- (004FB7A0) -------------------------------------------------------- void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_5605F4; std::locale::facet::~facet(a1); } // 4FB7A0: variable 'v1' is possibly undefined // 5605F4: using guessed type int (*off_5605F4)(); //----- (004FB7B0) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55FEA0; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_560604; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55FEA0: using guessed type int (*off_55FEA0)(); // 560604: using guessed type int (*off_560604)(); //----- (004FB900) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55FEA0; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_560604; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55FEA0: using guessed type int (*off_55FEA0)(); // 560604: using guessed type int (*off_560604)(); //----- (004FBA60) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55FEA0; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_560604; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55FEA0: using guessed type int (*off_55FEA0)(); // 560604: using guessed type int (*off_560604)(); //----- (004FBBB0) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55FEA0; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_560604; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55FEA0: using guessed type int (*off_55FEA0)(); // 560604: using guessed type int (*off_560604)(); //----- (004FBD10) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) { *Block = &off_560604; std::moneypunct::~moneypunct(Block); operator delete(Block); } // 560604: using guessed type int (*off_560604)(); //----- (004FBD30) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_560604; std::moneypunct::~moneypunct(a1); } // 560604: using guessed type int (*off_560604)(); //----- (004FBD40) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_560604; std::moneypunct::~moneypunct(a1); } // 560604: using guessed type int (*off_560604)(); //----- (004FBD50) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55FED4; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_560638; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55FED4: using guessed type int (*off_55FED4)(); // 560638: using guessed type int (*off_560638)(); //----- (004FBEA0) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55FED4; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_560638; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55FED4: using guessed type int (*off_55FED4)(); // 560638: using guessed type int (*off_560638)(); //----- (004FC000) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55FED4; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_560638; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55FED4: using guessed type int (*off_55FED4)(); // 560638: using guessed type int (*off_560638)(); //----- (004FC150) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55FED4; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_560638; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55FED4: using guessed type int (*off_55FED4)(); // 560638: using guessed type int (*off_560638)(); //----- (004FC2B0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) { *Block = &off_560638; std::moneypunct::~moneypunct(Block); operator delete(Block); } // 560638: using guessed type int (*off_560638)(); //----- (004FC2D0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_560638; std::moneypunct::~moneypunct(a1); } // 560638: using guessed type int (*off_560638)(); //----- (004FC2E0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_560638; std::moneypunct::~moneypunct(a1); } // 560638: using guessed type int (*off_560638)(); //----- (004FC2F0) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55FF08; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_56066C; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55FF08: using guessed type int (*off_55FF08)(); // 56066C: using guessed type int (*off_56066C)(); //----- (004FC440) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55FF08; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_56066C; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55FF08: using guessed type int (*off_55FF08)(); // 56066C: using guessed type int (*off_56066C)(); //----- (004FC5A0) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55FF08; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_56066C; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55FF08: using guessed type int (*off_55FF08)(); // 56066C: using guessed type int (*off_56066C)(); //----- (004FC6F0) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55FF08; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_56066C; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55FF08: using guessed type int (*off_55FF08)(); // 56066C: using guessed type int (*off_56066C)(); //----- (004FC850) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) { *Block = &off_56066C; std::moneypunct::~moneypunct(Block); operator delete(Block); } // 56066C: using guessed type int (*off_56066C)(); //----- (004FC870) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_56066C; std::moneypunct::~moneypunct(a1); } // 56066C: using guessed type int (*off_56066C)(); //----- (004FC880) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_56066C; std::moneypunct::~moneypunct(a1); } // 56066C: using guessed type int (*off_56066C)(); //----- (004FC890) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55FF3C; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_5606A0; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55FF3C: using guessed type int (*off_55FF3C)(); // 5606A0: using guessed type int (*off_5606A0)(); //----- (004FC9E0) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55FF3C; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_5606A0; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55FF3C: using guessed type int (*off_55FF3C)(); // 5606A0: using guessed type int (*off_5606A0)(); //----- (004FCB40) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55FF3C; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_5606A0; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55FF3C: using guessed type int (*off_55FF3C)(); // 5606A0: using guessed type int (*off_5606A0)(); //----- (004FCC90) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55FF3C; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_5606A0; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55FF3C: using guessed type int (*off_55FF3C)(); // 5606A0: using guessed type int (*off_5606A0)(); //----- (004FCDF0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) { *Block = &off_5606A0; std::moneypunct::~moneypunct(Block); operator delete(Block); } // 5606A0: using guessed type int (*off_5606A0)(); //----- (004FCE10) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_5606A0; std::moneypunct::~moneypunct(a1); } // 5606A0: using guessed type int (*off_5606A0)(); //----- (004FCE20) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_5606A0; std::moneypunct::~moneypunct(a1); } // 5606A0: using guessed type int (*off_5606A0)(); //----- (004FCE30) -------------------------------------------------------- void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) { int (__fastcall *v2)(int); // eax char v3; // al int (__fastcall *v4)(int); // eax char v5; // al int v6; // eax int (__fastcall *v7)(int); // edx int v8; // edx _DWORD *(__thiscall *v9)(int *, int); // eax unsigned int v10; // eax bool v11; // al _DWORD *(__thiscall *v12)(int *, int); // eax unsigned int v13; // eax _DWORD *(__thiscall *v14)(int *, 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 _BYTE *v22; // eax int v23; // ecx char v24; // al char *v25; // edx void (__thiscall *v26)(int, char *, char *, int); // eax int v27; // eax int v28; // ecx int v29; // eax int v30; // ecx int v31; // eax int v32; // ecx int v33; // eax int v34; // ecx int v35; // eax unsigned int v36; // [esp+Ch] [ebp-8Ch] unsigned int v37; // [esp+Ch] [ebp-8Ch] unsigned int v38; // [esp+Ch] [ebp-8Ch] unsigned int v39; // [esp+Ch] [ebp-8Ch] char *v40; // [esp+18h] [ebp-80h] std::string *v41; // [esp+20h] [ebp-78h] std::string *v42; // [esp+24h] [ebp-74h] std::string *v43; // [esp+28h] [ebp-70h] std::string *Block; // [esp+2Ch] [ebp-6Ch] _DWORD *v45; // [esp+34h] [ebp-64h] int v46; // [esp+34h] [ebp-64h] int v48; // [esp+7Dh] [ebp-1Bh] BYREF int v49; // [esp+80h] [ebp-18h] BYREF int v50; // [esp+84h] [ebp-14h] BYREF int v51; // [esp+88h] [ebp-10h] BYREF int v52[3]; // [esp+8Ch] [ebp-Ch] BYREF v45 = std::use_facet>(a2); v2 = *(int (__fastcall **)(int))(*v45 + 8); if ( v2 == std::moneypunct::do_decimal_point ) v3 = *(_BYTE *)(v45[2] + 17); else v3 = ((int (__fastcall *)(_DWORD *, _DWORD *))v2)(v45, v45); *(_BYTE *)(this + 17) = v3; v4 = *(int (__fastcall **)(int))(*v45 + 12); if ( v4 == std::moneypunct::do_thousands_sep ) v5 = *(_BYTE *)(v45[2] + 18); else v5 = v4((int)v45); *(_BYTE *)(this + 18) = v5; v6 = *v45; v7 = *(int (__fastcall **)(int))(*v45 + 32); if ( v7 == std::moneypunct::do_frac_digits ) { v8 = *(_DWORD *)(v45[2] + 44); } else { v8 = v7((int)v45); v6 = *v45; } v9 = *(_DWORD *(__thiscall **)(int *, int))(v6 + 16); *(_DWORD *)(this + 44) = v8; if ( v9 == std::moneypunct::do_grouping ) std::string::string(&v49, *(char **)(v45[2] + 8), (int)v52); else v9(&v49, (int)v45); v10 = *(_DWORD *)(v49 - 12); *(_DWORD *)(this + 12) = v10; Block = (std::string *)operator new[](v10); std::string::copy(&v49, Block, *(_DWORD *)(this + 12), 0, v36); v11 = 0; if ( *(_DWORD *)(this + 12) ) v11 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; *(_BYTE *)(this + 16) = v11; v12 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 20); if ( v12 == std::moneypunct::do_curr_symbol ) std::string::string(&v50, *(char **)(v45[2] + 20), (int)&v48); else v12(&v50, (int)v45); v13 = *(_DWORD *)(v50 - 12); *(_DWORD *)(this + 24) = v13; v41 = (std::string *)operator new[](v13); std::string::copy(&v50, v41, *(_DWORD *)(this + 24), 0, v37); v14 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 24); if ( v14 == std::moneypunct::do_positive_sign ) std::string::string(&v51, *(char **)(v45[2] + 28), (int)&v48 + 1); else v14(&v51, (int)v45); v15 = *(_DWORD *)(v51 - 12); *(_DWORD *)(this + 32) = v15; v42 = (std::string *)operator new[](v15); std::string::copy(&v51, v42, *(_DWORD *)(this + 32), 0, v38); v16 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 28); if ( v16 == std::moneypunct::do_negative_sign ) std::string::string(v52, *(char **)(v45[2] + 36), (int)&v48 + 2); else v16(v52, (int)v45); v17 = *(_DWORD *)(v52[0] - 12); *(_DWORD *)(this + 40) = v17; v43 = (std::string *)operator new[](v17); std::string::copy(v52, v43, *(_DWORD *)(this + 40), 0, v39); v18 = *(int (__fastcall **)(int))(*v45 + 36); if ( v18 == std::moneypunct::do_pos_format ) v19 = *(_DWORD *)(v45[2] + 48); else v19 = v18((int)v45); *(_DWORD *)(this + 48) = v19; v20 = *(int (__fastcall **)(int))(*v45 + 40); if ( v20 == std::moneypunct::do_neg_format ) v21 = *(_DWORD *)(v45[2] + 52); else v21 = v20((int)v45); *(_DWORD *)(this + 52) = v21; v22 = std::use_facet>(a2); v23 = this; v46 = (int)v22; v24 = v22[28]; v25 = std::money_base::_S_atoms; v40 = std::money_base::_S_atoms; if ( v24 == 1 ) { v27 = *(_DWORD *)std::money_base::_S_atoms; goto LABEL_25; } if ( v24 ) { v26 = *(void (__thiscall **)(int, char *, char *, int))(*(_DWORD *)v46 + 28); if ( (char *)v26 == (char *)std::ctype::do_widen ) { LABEL_24: v25 = v40; v23 = this; v27 = *(_DWORD *)v40; LABEL_25: *(_DWORD *)(v23 + 56) = v27; *(_DWORD *)(this + 60) = *((_DWORD *)v25 + 1); *(_WORD *)(this + 64) = *((_WORD *)v25 + 4); *(_BYTE *)(this + 66) = v25[10]; goto LABEL_26; } } else { std::ctype::_M_widen_init(v46); v26 = *(void (__thiscall **)(int, char *, char *, int))(*(_DWORD *)v46 + 28); if ( (char *)v26 == (char *)std::ctype::do_widen ) goto LABEL_24; } v26(v46, v40, v40 + 11, this + 56); LABEL_26: v28 = v52[0]; *(_DWORD *)(this + 8) = Block; *(_BYTE *)(this + 67) = 1; *(_DWORD *)(this + 20) = v41; *(_DWORD *)(this + 28) = v42; *(_DWORD *)(this + 36) = v43; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v28 - 4), 0xFFFFFFFF) > 0 ) { LABEL_28: v30 = v51; if ( !_CRT_MT ) goto LABEL_29; goto LABEL_37; } } else { v29 = *(_DWORD *)(v28 - 4); *(_DWORD *)(v28 - 4) = v29 - 1; if ( v29 > 0 ) goto LABEL_28; } std::string::_Rep::_M_destroy((void *)(v28 - 12), (int)&v48 + 2); v30 = v51; if ( !_CRT_MT ) { LABEL_29: v31 = *(_DWORD *)(v30 - 4); *(_DWORD *)(v30 - 4) = v31 - 1; if ( v31 > 0 ) goto LABEL_30; goto LABEL_38; } LABEL_37: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v30 - 4), 0xFFFFFFFF) > 0 ) { LABEL_30: v32 = v50; if ( !_CRT_MT ) goto LABEL_31; goto LABEL_39; } LABEL_38: std::string::_Rep::_M_destroy((void *)(v30 - 12), (int)v52); v32 = v50; if ( !_CRT_MT ) { LABEL_31: v33 = *(_DWORD *)(v32 - 4); *(_DWORD *)(v32 - 4) = v33 - 1; if ( v33 > 0 ) goto LABEL_32; goto LABEL_40; } LABEL_39: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v32 - 4), 0xFFFFFFFF) > 0 ) { LABEL_32: v34 = v49; if ( !_CRT_MT ) goto LABEL_33; goto LABEL_41; } LABEL_40: std::string::_Rep::_M_destroy((void *)(v32 - 12), (int)v52); v34 = v49; if ( !_CRT_MT ) { LABEL_33: v35 = *(_DWORD *)(v34 - 4); *(_DWORD *)(v34 - 4) = v35 - 1; if ( v35 > 0 ) return; LABEL_42: std::string::_Rep::_M_destroy((void *)(v34 - 12), (int)v52); return; } LABEL_41: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v34 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_42; } // 4FCF4B: variable 'v36' is possibly undefined // 4FCFED: variable 'v37' is possibly undefined // 4FD06F: variable 'v38' is possibly undefined // 4FD0F1: variable 'v39' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53F588: using guessed type char *std::money_base::_S_atoms; //----- (004FD610) -------------------------------------------------------- int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_5606D4; 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; } // 5606D4: using guessed type int (*off_5606D4)(); //----- (004FD690) -------------------------------------------------------- int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_5606D4; 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; } // 5606D4: using guessed type int (*off_5606D4)(); //----- (004FD710) -------------------------------------------------------- void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); operator delete(a1); } // 4FD750: variable 'lpfctx' is possibly undefined //----- (004FD7A0) -------------------------------------------------------- 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_5606D4; 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); } // 4FD7A1: variable 'v1' is possibly undefined // 5606D4: using guessed type int (*off_5606D4)(); //----- (004FD800) -------------------------------------------------------- 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_5606D4; 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); } // 4FD801: variable 'v1' is possibly undefined // 5606D4: using guessed type int (*off_5606D4)(); //----- (004FD860) -------------------------------------------------------- void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) { int (__fastcall *v2)(int); // eax char v3; // al int (__fastcall *v4)(int); // eax char v5; // al int v6; // eax int (__fastcall *v7)(int); // edx int v8; // edx _DWORD *(__thiscall *v9)(int *, int); // eax unsigned int v10; // eax bool v11; // al _DWORD *(__thiscall *v12)(int *, int); // eax unsigned int v13; // eax _DWORD *(__thiscall *v14)(int *, 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 _BYTE *v22; // eax int v23; // ecx char v24; // al char *v25; // edx void (__thiscall *v26)(int, char *, char *, int); // eax int v27; // eax int v28; // ecx int v29; // eax int v30; // ecx int v31; // eax int v32; // ecx int v33; // eax int v34; // ecx int v35; // eax unsigned int v36; // [esp+Ch] [ebp-8Ch] unsigned int v37; // [esp+Ch] [ebp-8Ch] unsigned int v38; // [esp+Ch] [ebp-8Ch] unsigned int v39; // [esp+Ch] [ebp-8Ch] char *v40; // [esp+18h] [ebp-80h] std::string *v41; // [esp+20h] [ebp-78h] std::string *v42; // [esp+24h] [ebp-74h] std::string *v43; // [esp+28h] [ebp-70h] std::string *Block; // [esp+2Ch] [ebp-6Ch] _DWORD *v45; // [esp+34h] [ebp-64h] int v46; // [esp+34h] [ebp-64h] int v48; // [esp+7Dh] [ebp-1Bh] BYREF int v49; // [esp+80h] [ebp-18h] BYREF int v50; // [esp+84h] [ebp-14h] BYREF int v51; // [esp+88h] [ebp-10h] BYREF int v52[3]; // [esp+8Ch] [ebp-Ch] BYREF v45 = std::use_facet>(a2); v2 = *(int (__fastcall **)(int))(*v45 + 8); if ( v2 == std::moneypunct::do_decimal_point ) v3 = *(_BYTE *)(v45[2] + 17); else v3 = ((int (__fastcall *)(_DWORD *, _DWORD *))v2)(v45, v45); *(_BYTE *)(this + 17) = v3; v4 = *(int (__fastcall **)(int))(*v45 + 12); if ( v4 == std::moneypunct::do_thousands_sep ) v5 = *(_BYTE *)(v45[2] + 18); else v5 = v4((int)v45); *(_BYTE *)(this + 18) = v5; v6 = *v45; v7 = *(int (__fastcall **)(int))(*v45 + 32); if ( v7 == std::moneypunct::do_frac_digits ) { v8 = *(_DWORD *)(v45[2] + 44); } else { v8 = v7((int)v45); v6 = *v45; } v9 = *(_DWORD *(__thiscall **)(int *, int))(v6 + 16); *(_DWORD *)(this + 44) = v8; if ( v9 == std::moneypunct::do_grouping ) std::string::string(&v49, *(char **)(v45[2] + 8), (int)v52); else v9(&v49, (int)v45); v10 = *(_DWORD *)(v49 - 12); *(_DWORD *)(this + 12) = v10; Block = (std::string *)operator new[](v10); std::string::copy(&v49, Block, *(_DWORD *)(this + 12), 0, v36); v11 = 0; if ( *(_DWORD *)(this + 12) ) v11 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; *(_BYTE *)(this + 16) = v11; v12 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 20); if ( v12 == std::moneypunct::do_curr_symbol ) std::string::string(&v50, *(char **)(v45[2] + 20), (int)&v48); else v12(&v50, (int)v45); v13 = *(_DWORD *)(v50 - 12); *(_DWORD *)(this + 24) = v13; v41 = (std::string *)operator new[](v13); std::string::copy(&v50, v41, *(_DWORD *)(this + 24), 0, v37); v14 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 24); if ( v14 == std::moneypunct::do_positive_sign ) std::string::string(&v51, *(char **)(v45[2] + 28), (int)&v48 + 1); else v14(&v51, (int)v45); v15 = *(_DWORD *)(v51 - 12); *(_DWORD *)(this + 32) = v15; v42 = (std::string *)operator new[](v15); std::string::copy(&v51, v42, *(_DWORD *)(this + 32), 0, v38); v16 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 28); if ( v16 == std::moneypunct::do_negative_sign ) std::string::string(v52, *(char **)(v45[2] + 36), (int)&v48 + 2); else v16(v52, (int)v45); v17 = *(_DWORD *)(v52[0] - 12); *(_DWORD *)(this + 40) = v17; v43 = (std::string *)operator new[](v17); std::string::copy(v52, v43, *(_DWORD *)(this + 40), 0, v39); v18 = *(int (__fastcall **)(int))(*v45 + 36); if ( v18 == std::moneypunct::do_pos_format ) v19 = *(_DWORD *)(v45[2] + 48); else v19 = v18((int)v45); *(_DWORD *)(this + 48) = v19; v20 = *(int (__fastcall **)(int))(*v45 + 40); if ( v20 == std::moneypunct::do_neg_format ) v21 = *(_DWORD *)(v45[2] + 52); else v21 = v20((int)v45); *(_DWORD *)(this + 52) = v21; v22 = std::use_facet>(a2); v23 = this; v46 = (int)v22; v24 = v22[28]; v25 = std::money_base::_S_atoms; v40 = std::money_base::_S_atoms; if ( v24 == 1 ) { v27 = *(_DWORD *)std::money_base::_S_atoms; goto LABEL_25; } if ( v24 ) { v26 = *(void (__thiscall **)(int, char *, char *, int))(*(_DWORD *)v46 + 28); if ( (char *)v26 == (char *)std::ctype::do_widen ) { LABEL_24: v25 = v40; v23 = this; v27 = *(_DWORD *)v40; LABEL_25: *(_DWORD *)(v23 + 56) = v27; *(_DWORD *)(this + 60) = *((_DWORD *)v25 + 1); *(_WORD *)(this + 64) = *((_WORD *)v25 + 4); *(_BYTE *)(this + 66) = v25[10]; goto LABEL_26; } } else { std::ctype::_M_widen_init(v46); v26 = *(void (__thiscall **)(int, char *, char *, int))(*(_DWORD *)v46 + 28); if ( (char *)v26 == (char *)std::ctype::do_widen ) goto LABEL_24; } v26(v46, v40, v40 + 11, this + 56); LABEL_26: v28 = v52[0]; *(_DWORD *)(this + 8) = Block; *(_BYTE *)(this + 67) = 1; *(_DWORD *)(this + 20) = v41; *(_DWORD *)(this + 28) = v42; *(_DWORD *)(this + 36) = v43; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v28 - 4), 0xFFFFFFFF) > 0 ) { LABEL_28: v30 = v51; if ( !_CRT_MT ) goto LABEL_29; goto LABEL_37; } } else { v29 = *(_DWORD *)(v28 - 4); *(_DWORD *)(v28 - 4) = v29 - 1; if ( v29 > 0 ) goto LABEL_28; } std::string::_Rep::_M_destroy((void *)(v28 - 12), (int)&v48 + 2); v30 = v51; if ( !_CRT_MT ) { LABEL_29: v31 = *(_DWORD *)(v30 - 4); *(_DWORD *)(v30 - 4) = v31 - 1; if ( v31 > 0 ) goto LABEL_30; goto LABEL_38; } LABEL_37: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v30 - 4), 0xFFFFFFFF) > 0 ) { LABEL_30: v32 = v50; if ( !_CRT_MT ) goto LABEL_31; goto LABEL_39; } LABEL_38: std::string::_Rep::_M_destroy((void *)(v30 - 12), (int)v52); v32 = v50; if ( !_CRT_MT ) { LABEL_31: v33 = *(_DWORD *)(v32 - 4); *(_DWORD *)(v32 - 4) = v33 - 1; if ( v33 > 0 ) goto LABEL_32; goto LABEL_40; } LABEL_39: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v32 - 4), 0xFFFFFFFF) > 0 ) { LABEL_32: v34 = v49; if ( !_CRT_MT ) goto LABEL_33; goto LABEL_41; } LABEL_40: std::string::_Rep::_M_destroy((void *)(v32 - 12), (int)v52); v34 = v49; if ( !_CRT_MT ) { LABEL_33: v35 = *(_DWORD *)(v34 - 4); *(_DWORD *)(v34 - 4) = v35 - 1; if ( v35 > 0 ) return; LABEL_42: std::string::_Rep::_M_destroy((void *)(v34 - 12), (int)v52); return; } LABEL_41: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v34 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_42; } // 4FD97B: variable 'v36' is possibly undefined // 4FDA1D: variable 'v37' is possibly undefined // 4FDA9F: variable 'v38' is possibly undefined // 4FDB21: variable 'v39' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53F588: using guessed type char *std::money_base::_S_atoms; //----- (004FE040) -------------------------------------------------------- int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_5606E4; 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; } // 5606E4: using guessed type int (*off_5606E4)(); //----- (004FE0C0) -------------------------------------------------------- int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { int result; // eax *this = &off_5606E4; 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; } // 5606E4: using guessed type int (*off_5606E4)(); //----- (004FE140) -------------------------------------------------------- void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); operator delete(a1); } // 4FE180: variable 'lpfctx' is possibly undefined //----- (004FE1D0) -------------------------------------------------------- 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_5606E4; 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); } // 4FE1D1: variable 'v1' is possibly undefined // 5606E4: using guessed type int (*off_5606E4)(); //----- (004FE230) -------------------------------------------------------- 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_5606E4; 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); } // 4FE231: variable 'v1' is possibly undefined // 5606E4: using guessed type int (*off_5606E4)(); //----- (004FE290) -------------------------------------------------------- void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) { _DWORD *v2; // eax int (__fastcall *v3)(int); // edx __int16 v4; // dx int (__fastcall *v5)(int); // edx __int16 v6; // dx int (__fastcall *v7)(int); // edx int v8; // edx _DWORD *(__thiscall *v9)(int *, int); // eax unsigned int v10; // eax bool v11; // al _DWORD *(__thiscall *v12)(int *, int); // eax unsigned int v13; // eax _DWORD *(__thiscall *v14)(int *, 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 int v23; // ecx int v24; // eax int v25; // ecx int v26; // eax int v27; // ecx int v28; // eax int v29; // ecx int v30; // eax unsigned int v31; // [esp+Ch] [ebp-7Ch] _WORD *v32; // [esp+10h] [ebp-78h] _WORD *v33; // [esp+14h] [ebp-74h] _WORD *v34; // [esp+18h] [ebp-70h] std::string *Block; // [esp+1Ch] [ebp-6Ch] _DWORD *v36; // [esp+24h] [ebp-64h] int v38; // [esp+6Dh] [ebp-1Bh] BYREF int v39; // [esp+70h] [ebp-18h] BYREF int v40; // [esp+74h] [ebp-14h] BYREF int v41; // [esp+78h] [ebp-10h] BYREF int v42[2]; // [esp+7Ch] [ebp-Ch] BYREF v36 = std::use_facet>(a2); v2 = (_DWORD *)*v36; v3 = *(int (__fastcall **)(int))(*v36 + 8); if ( v3 == std::moneypunct::do_decimal_point ) { v4 = *(_WORD *)(v36[2] + 18); } else { v4 = v3((int)v36); v2 = (_DWORD *)*v36; } *(_WORD *)(this + 18) = v4; v5 = (int (__fastcall *)(int))v2[3]; if ( v5 == std::moneypunct::do_thousands_sep ) { v6 = *(_WORD *)(v36[2] + 20); } else { v6 = v5((int)v36); v2 = (_DWORD *)*v36; } *(_WORD *)(this + 20) = v6; v7 = (int (__fastcall *)(int))v2[8]; if ( v7 == std::moneypunct::do_frac_digits ) { v8 = *(_DWORD *)(v36[2] + 48); } else { v8 = v7((int)v36); v2 = (_DWORD *)*v36; } v9 = (_DWORD *(__thiscall *)(int *, int))v2[4]; *(_DWORD *)(this + 48) = v8; if ( v9 == std::moneypunct::do_grouping ) std::string::string(&v39, *(char **)(v36[2] + 8), (int)v42); else v9(&v39, (int)v36); v10 = *(_DWORD *)(v39 - 12); *(_DWORD *)(this + 12) = v10; Block = (std::string *)operator new[](v10); std::string::copy(&v39, Block, *(_DWORD *)(this + 12), 0, v31); v11 = 0; if ( *(_DWORD *)(this + 12) ) v11 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; *(_BYTE *)(this + 16) = v11; v12 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 20); if ( v12 == std::moneypunct::do_curr_symbol ) std::wstring::basic_string(&v40, *(wchar_t **)(v36[2] + 24), (int)&v38); else v12(&v40, (int)v36); v13 = *(_DWORD *)(v40 - 12); *(_DWORD *)(this + 28) = v13; if ( v13 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v32 = (_WORD *)operator new[](2 * v13); std::wstring::copy(&v40, v32, *(_DWORD *)(this + 28), 0); v14 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 24); if ( v14 == std::moneypunct::do_positive_sign ) std::wstring::basic_string(&v41, *(wchar_t **)(v36[2] + 32), (int)&v38 + 1); else v14(&v41, (int)v36); v15 = *(_DWORD *)(v41 - 12); *(_DWORD *)(this + 36) = v15; if ( v15 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v33 = (_WORD *)operator new[](2 * v15); std::wstring::copy(&v41, v33, *(_DWORD *)(this + 36), 0); v16 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 28); if ( v16 == std::moneypunct::do_negative_sign ) std::wstring::basic_string(v42, *(wchar_t **)(v36[2] + 40), (int)&v38 + 2); else v16(v42, (int)v36); v17 = *(_DWORD *)(v42[0] - 12); *(_DWORD *)(this + 44) = v17; if ( v17 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v34 = (_WORD *)operator new[](2 * v17); std::wstring::copy(v42, v34, *(_DWORD *)(this + 44), 0); v18 = *(int (__fastcall **)(int))(*v36 + 36); if ( v18 == std::moneypunct::do_pos_format ) v19 = *(_DWORD *)(v36[2] + 52); else v19 = v18((int)v36); *(_DWORD *)(this + 52) = v19; v20 = *(int (__fastcall **)(int))(*v36 + 40); if ( v20 == std::moneypunct::do_neg_format ) v21 = *(_DWORD *)(v36[2] + 56); else v21 = v20((int)v36); *(_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); v23 = v42[0]; *(_DWORD *)(this + 8) = Block; *(_DWORD *)(this + 24) = v32; *(_DWORD *)(this + 32) = v33; *(_DWORD *)(this + 40) = v34; *(_BYTE *)(this + 82) = 1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23 - 4), 0xFFFFFFFF) > 0 ) { LABEL_26: v25 = v41; if ( !_CRT_MT ) goto LABEL_27; goto LABEL_35; } } else { v24 = *(_DWORD *)(v23 - 4); *(_DWORD *)(v23 - 4) = v24 - 1; if ( v24 > 0 ) goto LABEL_26; } std::wstring::_Rep::_M_destroy((void *)(v23 - 12), (int)&v38 + 2); v25 = v41; if ( !_CRT_MT ) { LABEL_27: v26 = *(_DWORD *)(v25 - 4); *(_DWORD *)(v25 - 4) = v26 - 1; if ( v26 > 0 ) goto LABEL_28; goto LABEL_36; } LABEL_35: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v25 - 4), 0xFFFFFFFF) > 0 ) { LABEL_28: v27 = v40; if ( !_CRT_MT ) goto LABEL_29; goto LABEL_37; } LABEL_36: std::wstring::_Rep::_M_destroy((void *)(v25 - 12), (int)v42); v27 = v40; if ( !_CRT_MT ) { LABEL_29: v28 = *(_DWORD *)(v27 - 4); *(_DWORD *)(v27 - 4) = v28 - 1; if ( v28 > 0 ) goto LABEL_30; goto LABEL_38; } LABEL_37: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v27 - 4), 0xFFFFFFFF) > 0 ) { LABEL_30: v29 = v39; if ( !_CRT_MT ) goto LABEL_31; goto LABEL_39; } LABEL_38: std::wstring::_Rep::_M_destroy((void *)(v27 - 12), (int)v42); v29 = v39; if ( !_CRT_MT ) { LABEL_31: v30 = *(_DWORD *)(v29 - 4); *(_DWORD *)(v29 - 4) = v30 - 1; if ( v30 > 0 ) return; LABEL_40: std::string::_Rep::_M_destroy((void *)(v29 - 12), (int)v42); return; } LABEL_39: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_40; } // 4FE3AC: variable 'v31' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53F588: using guessed type char *std::money_base::_S_atoms; //----- (004FEA20) -------------------------------------------------------- BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5606F4; 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; } // 5606F4: using guessed type int (*off_5606F4)(); //----- (004FEAA0) -------------------------------------------------------- BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_5606F4; 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; } // 5606F4: using guessed type int (*off_5606F4)(); //----- (004FEB20) -------------------------------------------------------- void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); operator delete(a1); } // 4FEB60: variable 'lpfctx' is possibly undefined //----- (004FEBB0) -------------------------------------------------------- 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_5606F4; 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); } // 4FEBB1: variable 'v1' is possibly undefined // 5606F4: using guessed type int (*off_5606F4)(); //----- (004FEC10) -------------------------------------------------------- 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_5606F4; 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); } // 4FEC11: variable 'v1' is possibly undefined // 5606F4: using guessed type int (*off_5606F4)(); //----- (004FEC70) -------------------------------------------------------- void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) { _DWORD *v2; // eax int (__fastcall *v3)(int); // edx __int16 v4; // dx int (__fastcall *v5)(int); // edx __int16 v6; // dx int (__fastcall *v7)(int); // edx int v8; // edx _DWORD *(__thiscall *v9)(int *, int); // eax unsigned int v10; // eax bool v11; // al _DWORD *(__thiscall *v12)(int *, int); // eax unsigned int v13; // eax _DWORD *(__thiscall *v14)(int *, 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 int v23; // ecx int v24; // eax int v25; // ecx int v26; // eax int v27; // ecx int v28; // eax int v29; // ecx int v30; // eax unsigned int v31; // [esp+Ch] [ebp-7Ch] _WORD *v32; // [esp+10h] [ebp-78h] _WORD *v33; // [esp+14h] [ebp-74h] _WORD *v34; // [esp+18h] [ebp-70h] std::string *Block; // [esp+1Ch] [ebp-6Ch] _DWORD *v36; // [esp+24h] [ebp-64h] int v38; // [esp+6Dh] [ebp-1Bh] BYREF int v39; // [esp+70h] [ebp-18h] BYREF int v40; // [esp+74h] [ebp-14h] BYREF int v41; // [esp+78h] [ebp-10h] BYREF int v42[2]; // [esp+7Ch] [ebp-Ch] BYREF v36 = std::use_facet>(a2); v2 = (_DWORD *)*v36; v3 = *(int (__fastcall **)(int))(*v36 + 8); if ( v3 == std::moneypunct::do_decimal_point ) { v4 = *(_WORD *)(v36[2] + 18); } else { v4 = v3((int)v36); v2 = (_DWORD *)*v36; } *(_WORD *)(this + 18) = v4; v5 = (int (__fastcall *)(int))v2[3]; if ( v5 == std::moneypunct::do_thousands_sep ) { v6 = *(_WORD *)(v36[2] + 20); } else { v6 = v5((int)v36); v2 = (_DWORD *)*v36; } *(_WORD *)(this + 20) = v6; v7 = (int (__fastcall *)(int))v2[8]; if ( v7 == std::moneypunct::do_frac_digits ) { v8 = *(_DWORD *)(v36[2] + 48); } else { v8 = v7((int)v36); v2 = (_DWORD *)*v36; } v9 = (_DWORD *(__thiscall *)(int *, int))v2[4]; *(_DWORD *)(this + 48) = v8; if ( v9 == std::moneypunct::do_grouping ) std::string::string(&v39, *(char **)(v36[2] + 8), (int)v42); else v9(&v39, (int)v36); v10 = *(_DWORD *)(v39 - 12); *(_DWORD *)(this + 12) = v10; Block = (std::string *)operator new[](v10); std::string::copy(&v39, Block, *(_DWORD *)(this + 12), 0, v31); v11 = 0; if ( *(_DWORD *)(this + 12) ) v11 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; *(_BYTE *)(this + 16) = v11; v12 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 20); if ( v12 == std::moneypunct::do_curr_symbol ) std::wstring::basic_string(&v40, *(wchar_t **)(v36[2] + 24), (int)&v38); else v12(&v40, (int)v36); v13 = *(_DWORD *)(v40 - 12); *(_DWORD *)(this + 28) = v13; if ( v13 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v32 = (_WORD *)operator new[](2 * v13); std::wstring::copy(&v40, v32, *(_DWORD *)(this + 28), 0); v14 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 24); if ( v14 == std::moneypunct::do_positive_sign ) std::wstring::basic_string(&v41, *(wchar_t **)(v36[2] + 32), (int)&v38 + 1); else v14(&v41, (int)v36); v15 = *(_DWORD *)(v41 - 12); *(_DWORD *)(this + 36) = v15; if ( v15 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v33 = (_WORD *)operator new[](2 * v15); std::wstring::copy(&v41, v33, *(_DWORD *)(this + 36), 0); v16 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 28); if ( v16 == std::moneypunct::do_negative_sign ) std::wstring::basic_string(v42, *(wchar_t **)(v36[2] + 40), (int)&v38 + 2); else v16(v42, (int)v36); v17 = *(_DWORD *)(v42[0] - 12); *(_DWORD *)(this + 44) = v17; if ( v17 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v34 = (_WORD *)operator new[](2 * v17); std::wstring::copy(v42, v34, *(_DWORD *)(this + 44), 0); v18 = *(int (__fastcall **)(int))(*v36 + 36); if ( v18 == std::moneypunct::do_pos_format ) v19 = *(_DWORD *)(v36[2] + 52); else v19 = v18((int)v36); *(_DWORD *)(this + 52) = v19; v20 = *(int (__fastcall **)(int))(*v36 + 40); if ( v20 == std::moneypunct::do_neg_format ) v21 = *(_DWORD *)(v36[2] + 56); else v21 = v20((int)v36); *(_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); v23 = v42[0]; *(_DWORD *)(this + 8) = Block; *(_DWORD *)(this + 24) = v32; *(_DWORD *)(this + 32) = v33; *(_DWORD *)(this + 40) = v34; *(_BYTE *)(this + 82) = 1; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23 - 4), 0xFFFFFFFF) > 0 ) { LABEL_26: v25 = v41; if ( !_CRT_MT ) goto LABEL_27; goto LABEL_35; } } else { v24 = *(_DWORD *)(v23 - 4); *(_DWORD *)(v23 - 4) = v24 - 1; if ( v24 > 0 ) goto LABEL_26; } std::wstring::_Rep::_M_destroy((void *)(v23 - 12), (int)&v38 + 2); v25 = v41; if ( !_CRT_MT ) { LABEL_27: v26 = *(_DWORD *)(v25 - 4); *(_DWORD *)(v25 - 4) = v26 - 1; if ( v26 > 0 ) goto LABEL_28; goto LABEL_36; } LABEL_35: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v25 - 4), 0xFFFFFFFF) > 0 ) { LABEL_28: v27 = v40; if ( !_CRT_MT ) goto LABEL_29; goto LABEL_37; } LABEL_36: std::wstring::_Rep::_M_destroy((void *)(v25 - 12), (int)v42); v27 = v40; if ( !_CRT_MT ) { LABEL_29: v28 = *(_DWORD *)(v27 - 4); *(_DWORD *)(v27 - 4) = v28 - 1; if ( v28 > 0 ) goto LABEL_30; goto LABEL_38; } LABEL_37: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v27 - 4), 0xFFFFFFFF) > 0 ) { LABEL_30: v29 = v39; if ( !_CRT_MT ) goto LABEL_31; goto LABEL_39; } LABEL_38: std::wstring::_Rep::_M_destroy((void *)(v27 - 12), (int)v42); v29 = v39; if ( !_CRT_MT ) { LABEL_31: v30 = *(_DWORD *)(v29 - 4); *(_DWORD *)(v29 - 4) = v30 - 1; if ( v30 > 0 ) return; LABEL_40: std::string::_Rep::_M_destroy((void *)(v29 - 12), (int)v42); return; } LABEL_39: if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29 - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_40; } // 4FED8C: variable 'v31' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53F588: using guessed type char *std::money_base::_S_atoms; //----- (004FF400) -------------------------------------------------------- BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560704; 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; } // 560704: using guessed type int (*off_560704)(); //----- (004FF480) -------------------------------------------------------- BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560704; 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; } // 560704: using guessed type int (*off_560704)(); //----- (004FF500) -------------------------------------------------------- void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); operator delete(a1); } // 4FF540: variable 'lpfctx' is possibly undefined //----- (004FF590) -------------------------------------------------------- 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_560704; 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); } // 4FF591: variable 'v1' is possibly undefined // 560704: using guessed type int (*off_560704)(); //----- (004FF5F0) -------------------------------------------------------- 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_560704; 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); } // 4FF5F1: variable 'v1' is possibly undefined // 560704: using guessed type int (*off_560704)(); //----- (004FF650) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &unk_560908; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4FF65C: variable 'Blocka' is possibly undefined //----- (004FF670) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_560908; std::locale::facet::~facet(a1); } // 4FF670: variable 'v1' is possibly undefined //----- (004FF680) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &unk_560960; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4FF68C: variable 'Blocka' is possibly undefined //----- (004FF6A0) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_560960; std::locale::facet::~facet(a1); } // 4FF6A0: variable 'v1' is possibly undefined //----- (004FF6B0) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block) { *Block = &off_56076C; std::codecvt::~codecvt(Block); operator delete(Block); } // 56076C: using guessed type int (*off_56076C)(); //----- (004FF6D0) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) { *a1 = &off_56076C; std::codecvt::~codecvt(a1); } // 56076C: using guessed type int (*off_56076C)(); //----- (004FF6E0) -------------------------------------------------------- void __fastcall std::__iosfail_type_info::~__iosfail_type_info(_DWORD *a1) { __cxxabiv1::__si_class_type_info *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_560798; __cxxabiv1::__si_class_type_info::~__si_class_type_info(Block); operator delete(a1); } // 4FF6EC: variable 'Block' is possibly undefined // 560798: using guessed type void (__cdecl *off_560798)(std::__iosfail_type_info *__hidden this); //----- (004FF700) -------------------------------------------------------- void __cdecl std::__iosfail_type_info::~__iosfail_type_info(std::__iosfail_type_info *this) { _DWORD *v1; // ecx *v1 = &off_560798; __cxxabiv1::__si_class_type_info::~__si_class_type_info(this); } // 4FF700: variable 'v1' is possibly undefined // 560798: using guessed type void (__cdecl *off_560798)(std::__iosfail_type_info *__hidden this); //----- (004FF710) -------------------------------------------------------- void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &unk_560908; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4FF71C: variable 'Blocka' is possibly undefined //----- (004FF730) -------------------------------------------------------- void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_560908; std::locale::facet::~facet(a1); } // 4FF730: variable 'v1' is possibly undefined //----- (004FF740) -------------------------------------------------------- void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &unk_560960; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4FF74C: variable 'Blocka' is possibly undefined //----- (004FF760) -------------------------------------------------------- void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_560960; std::locale::facet::~facet(a1); } // 4FF760: variable 'v1' is possibly undefined //----- (004FF770) -------------------------------------------------------- void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block) { *Block = &off_56081C; std::codecvt::~codecvt(Block); operator delete(Block); } // 56081C: using guessed type int (*off_56081C)(); //----- (004FF790) -------------------------------------------------------- void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) { *a1 = &off_56081C; std::codecvt::~codecvt(a1); } // 56081C: using guessed type int (*off_56081C)(); //----- (004FF7A0) -------------------------------------------------------- char *__cdecl std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>( int a1, int a2, char *a3) { while ( a1 != a2 ) { std::string::basic_string(a3, a1); a3 += 24; a1 += 24; } return a3; } //----- (004FF868) -------------------------------------------------------- int __cdecl std::__uninitialized_copy::__uninit_copy( night::ns_sourcemap *a1, night::ns_sourcemap *a2, int a3) { const night::ns_sourcemap *v4; // [esp+4h] [ebp-54h] while ( a1 != a2 ) { night::ns_sourcemap::ns_sourcemap(a3, a1, v4); a1 = (night::ns_sourcemap *)((char *)a1 + 64); a3 += 64; } return a3; } // 4FF8B2: variable 'v4' is possibly undefined //----- (004FF930) -------------------------------------------------------- void __fastcall std::bad_array_new_length::~bad_array_new_length(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_560848; std::bad_alloc::~bad_alloc(Block); operator delete(a1); } // 4FF93C: variable 'Block' is possibly undefined // 560848: using guessed type void (__cdecl *off_560848)(std::bad_array_new_length *__hidden this); //----- (004FF960) -------------------------------------------------------- void __cdecl std::bad_array_new_length::~bad_array_new_length(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_560848; std::bad_alloc::~bad_alloc(a1); } // 4FF960: variable 'v1' is possibly undefined // 560848: using guessed type void (__cdecl *off_560848)(std::bad_array_new_length *__hidden this); //----- (004FF970) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &unk_560908; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4FF97C: variable 'Blocka' is possibly undefined //----- (004FF990) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_560908; std::locale::facet::~facet(a1); } // 4FF990: variable 'v1' is possibly undefined //----- (004FF9A0) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &unk_560960; std::locale::facet::~facet(Blocka); operator delete(Block); } // 4FF9AC: variable 'Blocka' is possibly undefined //----- (004FF9C0) -------------------------------------------------------- void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_560960; std::locale::facet::~facet(a1); } // 4FF9C0: variable 'v1' is possibly undefined //----- (004FF9D0) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block) { *Block = &off_560A3C; std::codecvt::~codecvt(Block); operator delete(Block); } // 560A3C: using guessed type int (*off_560A3C)(); //----- (004FF9F0) -------------------------------------------------------- void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) { *a1 = &off_560A3C; std::codecvt::~codecvt(a1); } // 560A3C: using guessed type int (*off_560A3C)(); //----- (004FFA00) -------------------------------------------------------- void __fastcall std::_V2::error_category::~error_category(void *Block) { operator delete(Block); } //----- (004FFA20) -------------------------------------------------------- void (__cdecl ***std::_V2::system_category())(_anonymous_namespace_::system_error_category *__hidden this) { return `anonymous namespace'::system_category_instance; } // 53F0C4: using guessed type void (__cdecl **`anonymous namespace'::system_category_instance[2])(_anonymous_namespace_::system_error_category *__hidden this); //----- (004FFA30) -------------------------------------------------------- void (__cdecl ***std::_V2::generic_category())(_anonymous_namespace_::generic_error_category *__hidden this) { return &`anonymous namespace'::generic_category_instance; } // 53F0C8: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); //----- (004FFA40) -------------------------------------------------------- char *__thiscall std::map>::operator[](_DWORD *this, int a2) { bool v2; // zf struct _Unwind_Exception *v3; // eax struct _Unwind_Exception *v4; // edx _DWORD *v5; // edx char v6; // al int insert_hint_unique_pos; // [esp+14h] [ebp-54h] _DWORD *v9; // [esp+18h] [ebp-50h] _DWORD *v10; // [esp+18h] [ebp-50h] _DWORD *v12; // [esp+20h] [ebp-48h] struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] void **lpuexcpta; // [esp+24h] [ebp-44h] _DWORD *Block; // [esp+28h] [ebp-40h] v12 = this + 1; lpuexcpt = (struct _Unwind_Exception *)this[2]; Block = this + 1; while ( lpuexcpt ) { v2 = (unsigned __int8)std::operator<((int)lpuexcpt + 16, a2) == 0; v3 = (struct _Unwind_Exception *)Block; v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 3); if ( v2 ) { v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 2); if ( v2 ) v3 = lpuexcpt; } lpuexcpt = v4; Block = v3; } if ( v12 == Block || (unsigned __int8)std::operator<(a2, (int)(Block + 4)) ) { v9 = Block; Block = operator new(0x30u); lpuexcpta = (void **)(Block + 4); std::string::basic_string((char *)Block + 16, a2); Block[10] = 0; Block[11] = 0; insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( this, v9, (int)(Block + 4)); v10 = v5; if ( v5 ) { v6 = insert_hint_unique_pos != 0 || v12 == v5; if ( !v6 ) v6 = std::operator<((int)lpuexcpta, (int)(v5 + 4)); std::_Rb_tree_insert_and_rebalance(v6, Block, v10, v12); ++this[5]; } else { std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)Block + 11); std::string::_M_dispose(lpuexcpta); operator delete(Block); Block = (_DWORD *)insert_hint_unique_pos; } } return (char *)(Block + 10); } // 4FFB42: variable 'v5' is possibly undefined //----- (004FFC34) -------------------------------------------------------- _DWORD *__thiscall std::map,std::allocator>>>::operator[]( _DWORD *this, _DWORD *a2) { _DWORD *inserted; // esi _DWORD *v3; // ebx int insert_hint_unique_pos; // eax _DWORD *v5; // edx inserted = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::lower_bound( this, (int)a2); if ( inserted == this + 1 || (unsigned __int8)std::operator<((int)a2, (int)(inserted + 4)) ) { v3 = operator new(0x30u); std::string::basic_string(v3 + 4, a2); v3[10] = 0; v3[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)(v3 + 4)); inserted = (_DWORD *)insert_hint_unique_pos; if ( v5 ) { inserted = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_insert_node( this, insert_hint_unique_pos, v5, v3); } else { std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v3 + 11); std::string::_M_dispose((void **)v3 + 4); operator delete(v3); } } return inserted + 10; } // 4FFCB0: variable 'v5' is possibly undefined //----- (004FFCF4) -------------------------------------------------------- char *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2) { _DWORD *v3; // ebx _DWORD *v4; // edx char v5; // al _DWORD *v6; // ecx int insert_hint_unique_pos; // eax _DWORD *v8; // edx _DWORD *v9; // edi char v10; // al _DWORD *v12; // [esp+18h] [ebp-20h] _DWORD *v13; // [esp+18h] [ebp-20h] _DWORD *v14; // [esp+1Ch] [ebp-1Ch] _DWORD *v15; // [esp+1Ch] [ebp-1Ch] v3 = this + 1; v4 = (_DWORD *)this[2]; v14 = this + 1; while ( v4 ) { v12 = v4; v5 = std::operator<((int)(v4 + 4), (int)a2); v6 = (_DWORD *)v12[3]; if ( !v5 ) v6 = (_DWORD *)v12[2]; if ( !v5 ) v3 = v12; v4 = v6; } if ( v14 == v3 || (unsigned __int8)std::operator<((int)a2, (int)(v3 + 4)) ) { v13 = v3; v3 = operator new(0x98u); 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, v13, (int)(v3 + 4)); v9 = v8; if ( v8 ) { v10 = v14 == v8 || insert_hint_unique_pos != 0; if ( !v10 ) v10 = std::operator<((int)(v3 + 4), (int)(v8 + 4)); std::_Rb_tree_insert_and_rebalance(v10, v3, v9, v14); ++this[5]; } else { v15 = (_DWORD *)insert_hint_unique_pos; WXML::DOMLib::Token::~Token((int)(v3 + 10)); std::string::_M_dispose((void **)v3 + 4); operator delete(v3); v3 = v15; } } return (char *)(v3 + 10); } // 4FFE00: variable 'v8' is possibly undefined //----- (004FFE78) -------------------------------------------------------- char *__thiscall std::map::operator[](_DWORD *this, int a2) { _DWORD *v2; // edx struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] struct _Unwind_Exception *Blocka; // [esp+28h] [ebp-40h] char *Block; // [esp+28h] [ebp-40h] Blocka = (struct _Unwind_Exception *)(this + 1); lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound( this[2], (int)(this + 1), a2); if ( Blocka == lpuexcpt || (unsigned __int8)std::operator<(a2, (int)lpuexcpt + 16) ) { Block = (char *)operator new(0x98u); std::string::basic_string(Block + 16, a2); *((_DWORD *)Block + 10) = 0; *((_DWORD *)Block + 11) = 0; *((_DWORD *)Block + 18) = Block + 80; *((_DWORD *)Block + 19) = 0; *((_DWORD *)Block + 25) = Block + 108; Block[80] = 0; *((_DWORD *)Block + 32) = Block + 136; *((_DWORD *)Block + 26) = 0; Block[108] = 0; *((_DWORD *)Block + 33) = 0; Block[136] = 0; Block[68] = 0; Block[124] = 0; *((_DWORD *)Block + 15) = 0; *((_DWORD *)Block + 12) = 0; *((_DWORD *)Block + 13) = 0; *((_DWORD *)Block + 14) = 0; *((_DWORD *)Block + 24) = -1; lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( this, lpuexcpt, (int)(Block + 16)); if ( v2 ) lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( this, (int)lpuexcpt, v2, Block); else std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node((void **)Block); } return (char *)lpuexcpt + 40; } // 4FFFB8: variable 'v2' is possibly undefined //----- (00500050) -------------------------------------------------------- _DWORD *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2) { _DWORD *inserted; // esi char *v3; // ebx int insert_hint_unique_pos; // eax _DWORD *v5; // edx inserted = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::lower_bound( this, (int)a2); if ( inserted == this + 1 || (unsigned __int8)std::operator<((int)a2, (int)(inserted + 4)) ) { v3 = (char *)operator new(0x40u); std::string::basic_string((_DWORD *)v3 + 4, a2); *((_DWORD *)v3 + 11) = 0; *((_DWORD *)v3 + 10) = v3 + 48; v3[48] = 0; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( this, inserted, (int)(v3 + 16)); inserted = (_DWORD *)insert_hint_unique_pos; if ( v5 ) { inserted = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( this, insert_hint_unique_pos, v5, v3); } else { std::string::_M_dispose((void **)v3 + 10); std::string::_M_dispose((void **)v3 + 4); operator delete(v3); } } return inserted + 10; } // 5000D2: variable 'v5' is possibly undefined //----- (00500114) -------------------------------------------------------- char *__thiscall std::map::operator[](_DWORD *this, int a2) { _DWORD *v2; // edx struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] char *Block; // [esp+28h] [ebp-40h] lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::lower_bound( this, a2); if ( lpuexcpt == (struct _Unwind_Exception *)(this + 1) || (unsigned __int8)std::operator<(a2, (int)lpuexcpt + 16) ) { Block = (char *)operator new(0x40u); std::string::basic_string(Block + 16, a2); *((_DWORD *)Block + 11) = 0; Block[48] = 0; *((_DWORD *)Block + 10) = Block + 48; lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( this, lpuexcpt, (int)(Block + 16)); if ( v2 ) { lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( this, (int)lpuexcpt, v2, Block); } else { std::string::_M_dispose((void **)Block + 10); std::string::_M_dispose((void **)Block + 4); operator delete(Block); } } return (char *)lpuexcpt + 40; } // 5001EB: variable 'v2' is possibly undefined //----- (00500298) -------------------------------------------------------- char *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2) { _DWORD *v3; // ebx _DWORD *v4; // edx char v5; // al _DWORD *v6; // ecx int insert_hint_unique_pos; // eax _DWORD *v8; // edx _DWORD *v9; // edi char v10; // al void *v12; // [esp+0h] [ebp-38h] _DWORD *v13; // [esp+18h] [ebp-20h] _DWORD *v14; // [esp+18h] [ebp-20h] _DWORD *v15; // [esp+18h] [ebp-20h] _DWORD *v16; // [esp+1Ch] [ebp-1Ch] v3 = this + 1; v4 = (_DWORD *)this[2]; v16 = this + 1; while ( v4 ) { v13 = v4; v5 = std::operator<((int)(v4 + 4), (int)a2); v6 = (_DWORD *)v13[3]; if ( !v5 ) v6 = (_DWORD *)v13[2]; if ( !v5 ) v3 = v13; v4 = v6; } if ( v16 == v3 || (unsigned __int8)std::operator<((int)a2, (int)(v3 + 4)) ) { v14 = v3; v3 = operator new(0x34u); 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, v14, (int)(v3 + 4)); v9 = (_DWORD *)insert_hint_unique_pos; if ( v8 ) { v10 = insert_hint_unique_pos != 0 || v16 == v8; if ( v9 == 0 && v16 != v8 ) { v15 = v8; v10 = std::operator<((int)(v3 + 4), (int)(v8 + 4)); v8 = v15; } std::_Rb_tree_insert_and_rebalance(v10, v3, v8, v16); ++this[5]; } else { std::_Destroy_aux::__destroy(0, 0); if ( v3[10] ) operator delete((void *)v3[10]); std::string::_M_dispose((void **)v3 + 4); v12 = v3; v3 = v9; operator delete(v12); } } return (char *)(v3 + 10); } // 500347: variable 'v8' is possibly undefined //----- (005003D4) -------------------------------------------------------- _DWORD *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2) { _DWORD *inserted; // esi _DWORD *v3; // ebx int insert_hint_unique_pos; // eax _DWORD *v5; // edx inserted = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::lower_bound( this, (int)a2); if ( inserted == this + 1 || (unsigned __int8)std::operator<((int)a2, (int)(inserted + 4)) ) { v3 = operator new(0x34u); 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, inserted, (int)(v3 + 4)); inserted = (_DWORD *)insert_hint_unique_pos; if ( v5 ) { inserted = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( this, insert_hint_unique_pos, v5, v3); } else { std::vector::~vector((void ***)v3 + 10, 0); std::string::_M_dispose((void **)v3 + 4); operator delete(v3); } } return inserted + 10; } // 50045B: variable 'v5' is possibly undefined //----- (0050049C) -------------------------------------------------------- char *__thiscall std::map>::operator[](_DWORD *this, int a2) { _DWORD *v2; // edx struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] _DWORD *Block; // [esp+28h] [ebp-40h] lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::lower_bound( this, a2); if ( lpuexcpt == (struct _Unwind_Exception *)(this + 1) || (unsigned __int8)std::operator<(a2, (int)lpuexcpt + 16) ) { Block = operator new(0x34u); std::string::basic_string((char *)Block + 16, a2); Block[10] = 0; Block[11] = 0; Block[12] = 0; lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( this, lpuexcpt, (int)(Block + 4)); if ( v2 ) { lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( this, (int)lpuexcpt, v2, Block); } else { std::vector::~vector((void ***)Block + 10, 0); std::string::_M_dispose((void **)Block + 4); operator delete(Block); } } return (char *)lpuexcpt + 40; } // 50056B: variable 'v2' is possibly undefined //----- (0050061C) -------------------------------------------------------- char *__thiscall std::map::operator[](_DWORD *this, int a2) { bool v2; // zf struct _Unwind_Exception *v3; // eax struct _Unwind_Exception *v4; // edx _DWORD *v5; // edx struct _Unwind_Exception *v7; // [esp+1Ch] [ebp-4Ch] struct _Unwind_Exception *Block; // [esp+24h] [ebp-44h] char *Blocka; // [esp+24h] [ebp-44h] struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-40h] v7 = (struct _Unwind_Exception *)(this + 1); Block = (struct _Unwind_Exception *)this[2]; lpuexcpt = (struct _Unwind_Exception *)(this + 1); while ( Block ) { v2 = (unsigned __int8)std::operator<((int)Block + 16, a2) == 0; v3 = lpuexcpt; v4 = (struct _Unwind_Exception *)*((_DWORD *)Block + 3); if ( v2 ) { v4 = (struct _Unwind_Exception *)*((_DWORD *)Block + 2); if ( v2 ) v3 = Block; } Block = v4; lpuexcpt = v3; } if ( v7 == lpuexcpt || (unsigned __int8)std::operator<(a2, (int)lpuexcpt + 16) ) { Blocka = (char *)operator new(0x2Cu); std::string::basic_string(Blocka + 16, a2); *((_DWORD *)Blocka + 10) = 0; lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( this, lpuexcpt, (int)(Blocka + 16)); if ( v5 ) { lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( this, (int)lpuexcpt, v5, Blocka); } else { std::string::_M_dispose((void **)Blocka + 4); operator delete(Blocka); } } return (char *)lpuexcpt + 40; } // 500714: variable 'v5' is possibly undefined //----- (005007B8) -------------------------------------------------------- void **__thiscall std::map::operator[](void **this, int a2) { bool v2; // zf struct _Unwind_Exception *v3; // eax struct _Unwind_Exception *v4; // edx void **v5; // edx char v6; // al int insert_hint_unique_pos; // [esp+14h] [ebp-54h] void **v9; // [esp+18h] [ebp-50h] void **v10; // [esp+18h] [ebp-50h] void **v12; // [esp+20h] [ebp-48h] struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] void **lpuexcpta; // [esp+24h] [ebp-44h] void **Block; // [esp+28h] [ebp-40h] v12 = this + 1; lpuexcpt = (struct _Unwind_Exception *)this[2]; Block = this + 1; while ( lpuexcpt ) { v2 = (unsigned __int8)std::operator<((int)lpuexcpt + 16, a2) == 0; v3 = (struct _Unwind_Exception *)Block; v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 3); if ( v2 ) { v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 2); if ( v2 ) v3 = lpuexcpt; } lpuexcpt = v4; Block = (void **)v3; } if ( v12 == Block || (unsigned __int8)std::operator<(a2, (int)(Block + 4)) ) { v9 = Block; Block = (void **)operator new(0x2Cu); lpuexcpta = Block + 4; std::string::basic_string((char *)Block + 16, a2); Block[10] = 0; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( this, v9, (int)(Block + 4)); v10 = v5; if ( v5 ) { v6 = insert_hint_unique_pos != 0 || v12 == v5; if ( !v6 ) v6 = std::operator<((int)lpuexcpta, (int)(v5 + 4)); std::_Rb_tree_insert_and_rebalance(v6, Block, v10, v12); this[5] = (char *)this[5] + 1; } else { std::string::_M_dispose(lpuexcpta); operator delete(Block); Block = (void **)insert_hint_unique_pos; } } return Block + 10; } // 5008B3: variable 'v5' is possibly undefined //----- (00500998) -------------------------------------------------------- _DWORD *__thiscall std::map>>::operator[]( _DWORD *this, _DWORD *a2) { _DWORD *v3; // edi _DWORD *v4; // ebx _DWORD *i; // eax _DWORD *v6; // edx int *v7; // eax _DWORD *v8; // edx bool v9; // al _DWORD *v11; // [esp+1Ch] [ebp-1Ch] int insert_hint_unique_pos; // [esp+1Ch] [ebp-1Ch] v3 = this + 1; v4 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v6 ) { v6 = (_DWORD *)i[3]; if ( i[4] >= *a2 ) v6 = (_DWORD *)i[2]; if ( i[4] >= *a2 ) v4 = i; } if ( v3 == v4 || *a2 < v4[4] ) { v11 = v4; v4 = operator new(0x2Cu); 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, v11, v7); 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 { 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; } // 500A13: variable 'v7' is possibly undefined // 500A1F: variable 'v8' is possibly undefined //----- (00500A78) -------------------------------------------------------- _DWORD *__thiscall std::map>>::operator[]( _DWORD *this, int *a2) { _DWORD *v3; // edi _DWORD *v4; // ebx _DWORD *i; // eax _DWORD *v6; // edx int v7; // eax int insert_hint_unique_pos; // eax _DWORD *v9; // edx bool v10; // al _DWORD *v12; // [esp+18h] [ebp-20h] _DWORD *v13; // [esp+18h] [ebp-20h] int v14; // [esp+1Ch] [ebp-1Ch] v3 = this + 1; v4 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v6 ) { v6 = (_DWORD *)i[3]; if ( i[4] >= *a2 ) v6 = (_DWORD *)i[2]; if ( i[4] >= *a2 ) v4 = i; } if ( v3 == v4 || *a2 < v4[4] ) { v12 = v4; v4 = operator new(0x2Cu); v7 = *a2; v4[6] = 0; v4[7] = 0; v4[4] = v7; v14 = v7; 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); v13 = (_DWORD *)insert_hint_unique_pos; if ( v9 ) { v10 = v3 == v9 || insert_hint_unique_pos != 0; if ( !v10 ) v10 = v14 < v9[4]; std::_Rb_tree_insert_and_rebalance(v10, v4, v9, v3); ++this[5]; } else { std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(0); operator delete(v4); v4 = v13; } } return v4 + 5; } // 500B12: variable 'v9' is possibly undefined //----- (00500B68) -------------------------------------------------------- char *__thiscall std::map::operator[](_DWORD *this, unsigned int *a2) { _DWORD *v3; // ebx _DWORD *i; // eax _DWORD *v5; // ecx _DWORD *v6; // edi unsigned int v7; // eax _DWORD *v8; // edx int insert_hint_unique_pos; // edi bool v10; // al void *v12; // [esp+0h] [ebp-38h] unsigned int v13; // [esp+18h] [ebp-20h] _DWORD *v14; // [esp+1Ch] [ebp-1Ch] v3 = this + 1; v14 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v5 = (_DWORD *)i[3]; if ( i[4] >= *a2 ) v5 = (_DWORD *)i[2]; if ( i[4] >= *a2 ) v3 = i; } if ( v14 == v3 || *a2 < v3[4] ) { v6 = v3; v3 = operator new(0x2Cu); v7 = *a2; v3[6] = 0; *((_BYTE *)v3 + 28) = 0; v3[4] = v7; v13 = v7; v3[5] = v3 + 7; insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( this, v6, v3 + 4); if ( v8 ) { v10 = insert_hint_unique_pos != 0 || v14 == v8; if ( !v10 ) v10 = v13 < v8[4]; std::_Rb_tree_insert_and_rebalance(v10, v3, v8, v14); ++this[5]; } else { std::string::_M_dispose((void **)v3 + 5); v12 = v3; v3 = (_DWORD *)insert_hint_unique_pos; operator delete(v12); } } return (char *)(v3 + 5); } // 500BF7: variable 'v8' is possibly undefined //----- (00500C50) -------------------------------------------------------- char *__thiscall std::set::insert(_DWORD *this, int a2) { int insert_unique_pos; // eax _DWORD *v3; // edx char v5; // [esp+1Fh] [ebp-49h] _DWORD *v6; // [esp+20h] [ebp-48h] char *Block; // [esp+28h] [ebp-40h] insert_unique_pos = std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( this, a2); v6 = v3; Block = (char *)insert_unique_pos; if ( v3 ) { v5 = 1; if ( !insert_unique_pos && v3 != this + 1 ) v5 = std::operator<(a2, (int)(v3 + 4)); Block = (char *)operator new(0x28u); std::string::basic_string(Block + 16, a2); std::_Rb_tree_insert_and_rebalance(v5, Block, v6, this + 1); ++this[5]; } return Block; } // 500C8D: variable 'v3' is possibly undefined //----- (00500D90) -------------------------------------------------------- void __thiscall std::pair::swap(_DWORD *this, _DWORD *a2) { int v2; // ebx _DWORD v3[34]; // [esp+10h] [ebp-88h] BYREF v2 = (int)(this + 6); std::string::swap(this, a2); WXML::DOMLib::Token::Token(v3, v2); WXML::DOMLib::Token::operator=(v2, (int)(a2 + 6)); WXML::DOMLib::Token::operator=((int)(a2 + 6), (int)v3); WXML::DOMLib::Token::~Token((int)v3); } // 500D90: using guessed type _DWORD var_88[34]; //----- (00500DE8) -------------------------------------------------------- _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)); } //----- (00500E14) -------------------------------------------------------- void __fastcall std::pair::~pair(void **a1) { WXML::DOMLib::Token::~Token((int)(a1 + 6)); std::string::_M_dispose(a1); } //----- (00500E30) -------------------------------------------------------- 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 _BYTE *v11; // eax _BYTE *v12; // ecx char v13; // al char v14; // dl 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; v11 = std::use_facet>((int)(a1 + 27)); v12 = v11; if ( v11[28] ) { result = (unsigned __int8)*a4; if ( v12[74] == (_BYTE)result ) goto LABEL_29; goto LABEL_8; } v23 = v11; std::ctype::_M_widen_init((int)v11); v12 = v23; v15 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v23 + 24); result = 45; if ( v15 != std::ctype::do_widen ) { result = v15(45u); v12 = v23; } if ( *a4 == (_BYTE)result ) goto LABEL_29; if ( v12[28] ) { result = (unsigned __int8)*a4; LABEL_8: if ( v12[72] != (_BYTE)result ) { LABEL_9: if ( v12[77] == (_BYTE)result && a6 > 1 ) { LABEL_11: v13 = a4[1]; if ( v13 == v12[149] ) { LABEL_43: v6 = a3 + 2; v9 = a6 - 2; *a3 = *a4; result = (unsigned __int8)a4[1]; v22 = a4 + 2; a3[1] = result; goto LABEL_3; } goto LABEL_12; } LABEL_3: v10 = &v6[Size]; if ( !Size ) { if ( !v9 ) return result; return (int)memcpy(v10, v22, v9); } goto LABEL_15; } LABEL_29: *a3 = result; v9 = a6 - 1; v6 = a3 + 1; v22 = a4 + 1; goto LABEL_3; } v24 = v12; std::ctype::_M_widen_init((int)v12); v12 = v24; v16 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v24 + 24); result = 43; if ( v16 != std::ctype::do_widen ) { result = v16(43u); v12 = v24; } if ( *a4 == (_BYTE)result ) goto LABEL_29; if ( v12[28] ) { result = (unsigned __int8)*a4; goto LABEL_9; } v25 = v12; std::ctype::_M_widen_init((int)v12); v12 = v25; v17 = 48; v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v25 + 24); if ( v18 != std::ctype::do_widen ) { v17 = v18(48u); v12 = v25; } result = (int)a4; if ( *a4 != v17 || a6 <= 1 ) goto LABEL_3; if ( v12[28] ) goto LABEL_11; v26 = v12; std::ctype::_M_widen_init((int)v12); v12 = v26; v19 = 120; v20 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v26 + 24); if ( v20 != std::ctype::do_widen ) { v19 = v20(120u); v12 = v26; } v13 = a4[1]; if ( v13 == v19 ) goto LABEL_43; if ( v12[28] ) { LABEL_12: v14 = v12[117]; goto LABEL_13; } v27 = v12; std::ctype::_M_widen_init((int)v12); v21 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v27 + 24); if ( v21 == std::ctype::do_widen ) v14 = 88; else v14 = v21(88u); v13 = a4[1]; LABEL_13: if ( v14 == v13 ) goto LABEL_43; v10 = &a3[Size]; if ( !Size ) return (int)memcpy(v10, v22, v9); LABEL_15: result = (int)memset(v6, (char)Src, Size); if ( v9 ) return (int)memcpy(v10, v22, v9); return result; } //----- (00501170) -------------------------------------------------------- _WORD *__cdecl std::__pad>::_S_pad( _DWORD *a1, void *Src, _WORD *Size, _WORD *a4, int a5, int a6) { _WORD *v6; // esi int v7; // ebx _WORD *result; // eax int v9; // edx __int16 v10; // ax __int16 v11; // ax __int16 v12; // ax _WORD *v13; // esi _WORD *v14; // [esp+20h] [ebp-2Ch] void *v15; // [esp+28h] [ebp-24h] v14 = a4; v6 = Size; v7 = a5 - a6; result = (_WORD *)(a1[3] & 0xB0); if ( result != (_WORD *)32 ) { v9 = a6; if ( result == (_WORD *)16 ) { v15 = std::use_facet>((int)(a1 + 27)); v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(45); if ( *a4 == v10 || (v10 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v15 + 40))(v15, 43), *a4 == v10) ) { *Size = v10; v9 = a6 - 1; v6 = Size + 1; v14 = a4 + 1; } else { v11 = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(48); v9 = a6; if ( *a4 == v11 && a6 > 1 ) { if ( a4[1] != (*(unsigned __int16 (__stdcall **)(int))(*(_DWORD *)v15 + 40))(120) ) { v12 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v15 + 40))(v15, 88); v9 = a6; if ( a4[1] != v12 ) { result = &Size[v7]; if ( !v7 ) return memcpy(result, v14, 2 * v9); do { LABEL_4: *v6++ = (_WORD)Src; --v7; } while ( v7 ); LABEL_5: if ( !v9 ) return result; return memcpy(result, v14, 2 * v9); } } v6 = Size + 2; v9 = a6 - 2; *Size = *a4; v14 = a4 + 2; Size[1] = a4[1]; } } } result = &v6[v7]; if ( !v7 ) goto LABEL_5; goto LABEL_4; } if ( a6 ) { result = memcpy(Size, a4, 2 * a6); v13 = &Size[a6]; if ( !v7 ) return result; } else { v13 = &Size[a6]; if ( !v7 ) return result; } do { *v13++ = (_WORD)Src; --v7; } while ( v7 ); return result; } //----- (005013A0) -------------------------------------------------------- void *std::ctype::classic_table() { return &std::ctype::classic_table(void)::_S_classic_table; } //----- (005013B0) -------------------------------------------------------- int __thiscall std::ctype::ctype(_DWORD *this, void *a2, char a3, int a4) { void *v4; // eax int result; // eax v4 = a2; *this = &off_560A68; 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; *(_DWORD *)((char *)this + 29) = 0; *(_DWORD *)((char *)this + 281) = 0; this[6] = v4; result = 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; } // 560A68: using guessed type int (*off_560A68)(); //----- (00501460) -------------------------------------------------------- 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_560A68; 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; *(_DWORD *)((char *)this + 29) = 0; *(_DWORD *)((char *)this + 281) = 0; this[6] = v5; result = 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; } // 560A68: using guessed type int (*off_560A68)(); //----- (00501510) -------------------------------------------------------- void __fastcall std::ctype::~ctype(void **Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_560A68; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); if ( *((_BYTE *)Block + 12) && Block[6] ) operator delete[](Block[6]); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 501563: variable 'lpfctx' is possibly undefined // 560A68: using guessed type int (*off_560A68)(); //----- (00501580) -------------------------------------------------------- void __fastcall std::ctype::~ctype(int a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *(_DWORD *)a1 = &off_560A68; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 8)); if ( *(_BYTE *)(a1 + 12) && *(_DWORD *)(a1 + 24) ) operator delete[](*(void **)(a1 + 24)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 5015D3: variable 'lpfctx' is possibly undefined // 560A68: using guessed type int (*off_560A68)(); //----- (005015F0) -------------------------------------------------------- int __fastcall std::ctype::_M_initialize_ctype(int a1) { int WCh; // ebx int v3; // eax int i; // ebx int j; // ebx int result; // eax 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; } //----- (00501690) -------------------------------------------------------- int __thiscall std::ctype::ctype(_DWORD *this, char a2, int a3) { int v4; // eax *this = &off_560A98; 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); } // 560A98: using guessed type int (*off_560A98)(); //----- (005016D0) -------------------------------------------------------- void __thiscall std::ctype::ctype(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560A98; this[2] = std::locale::facet::_S_get_c_locale(); *((_BYTE *)this + 12) = 0; std::ctype::_M_initialize_ctype((int)this); } // 560A98: using guessed type int (*off_560A98)(); //----- (00501780) -------------------------------------------------------- void __fastcall std::ctype::~ctype(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_560A98; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); *Block = &unk_56089C; std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 5017C4: variable 'lpfctx' is possibly undefined // 560A98: using guessed type int (*off_560A98)(); //----- (005017E0) -------------------------------------------------------- void __fastcall std::ctype::~ctype(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560A98; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); *a1 = &unk_56089C; std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 501824: variable 'lpfctx' is possibly undefined // 560A98: using guessed type int (*off_560A98)(); //----- (00501840) -------------------------------------------------------- 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; } //----- (00501858) -------------------------------------------------------- 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); } } //----- (005018B0) -------------------------------------------------------- void __thiscall std::deque>::push_back(int this, _DWORD *a2) { int v3; // eax int v4; // edi char *v5; // ecx int v6; // edi unsigned int v7; // eax int v8; // edi char *v9; // edi char *v10; // eax int v11; // ecx unsigned int v12; // esi int v13; // ecx int v14; // eax int v15; // eax int v16; // eax int v17; // esi int *v18; // edx int v19; // eax int v20; // [esp+18h] [ebp-20h] int v21; // [esp+1Ch] [ebp-1Ch] char *v22; // [esp+1Ch] [ebp-1Ch] v3 = *(_DWORD *)(this + 24); if ( v3 == *(_DWORD *)(this + 32) - 8 ) { v4 = *(_DWORD *)(this + 36); v5 = *(char **)(this + 20); v21 = v4; v20 = v4 - (_DWORD)v5; v6 = (v4 - (int)v5) >> 2; if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) + ((v3 - *(_DWORD *)(this + 28)) >> 3) + ((v6 - 1) << 6) == 0xFFFFFFF ) std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); v7 = *(_DWORD *)(this + 4); if ( v7 - ((v21 - *(_DWORD *)this) >> 2) <= 1 ) { v8 = v6 + 2; if ( v7 <= 2 * v8 ) { v11 = 1; if ( v7 ) v11 = *(_DWORD *)(this + 4); v12 = v7 + v11 + 2; if ( v12 > 0x1FFFFFFF ) std::__throw_bad_alloc(); v22 = (char *)operator new(4 * v12); v9 = &v22[4 * ((v12 - v8) >> 1)]; v13 = *(_DWORD *)(this + 20); v14 = *(_DWORD *)(this + 36) + 4; if ( v14 != v13 ) memmove(v9, *(const void **)(this + 20), v14 - v13); operator delete(*(void **)this); *(_DWORD *)(this + 4) = v12; *(_DWORD *)this = v22; } else { v9 = (char *)(*(_DWORD *)this + 4 * ((v7 - v8) >> 1)); v10 = (char *)(v21 + 4); if ( v5 <= v9 ) { if ( v5 != v10 ) memmove(&v9[v20 - (v21 - (_DWORD)v5)], v5, v21 + 4 - (_DWORD)v5); } else if ( v5 != v10 ) { memmove(v9, v5, v21 + 4 - (_DWORD)v5); } } v15 = *(_DWORD *)v9; *(_DWORD *)(this + 20) = v9; *(_DWORD *)(this + 12) = v15; *(_DWORD *)(this + 16) = v15 + 512; v16 = *(_DWORD *)&v9[v20]; *(_DWORD *)(this + 36) = &v9[v20]; *(_DWORD *)(this + 28) = v16; *(_DWORD *)(this + 32) = v16 + 512; } v17 = *(_DWORD *)(this + 36); *(_DWORD *)(v17 + 4) = operator new(0x200u); std::__shared_ptr::__shared_ptr(*(_DWORD **)(this + 24), a2); v18 = (int *)(*(_DWORD *)(this + 36) + 4); v19 = *v18; *(_DWORD *)(this + 36) = v18; *(_DWORD *)(this + 28) = v19; *(_DWORD *)(this + 32) = v19 + 512; *(_DWORD *)(this + 24) = v19; } else { std::__shared_ptr::__shared_ptr(*(_DWORD **)(this + 24), a2); *(_DWORD *)(this + 24) += 8; } } //----- (00501A70) -------------------------------------------------------- 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; } //----- (00501A88) -------------------------------------------------------- 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); } } //----- (00501AE0) -------------------------------------------------------- void __thiscall std::deque>::push_back(int this, int *a2) { int v3; // eax int v4; // edi char *v5; // ecx int v6; // edi unsigned int v7; // eax int v8; // edi char *v9; // edi char *v10; // eax int v11; // ecx unsigned int v12; // esi int v13; // ecx int v14; // eax int v15; // eax int v16; // eax int v17; // esi int *v18; // edx int v19; // eax int v20; // [esp+18h] [ebp-20h] int v21; // [esp+1Ch] [ebp-1Ch] char *v22; // [esp+1Ch] [ebp-1Ch] v3 = *(_DWORD *)(this + 24); if ( v3 == *(_DWORD *)(this + 32) - 8 ) { v4 = *(_DWORD *)(this + 36); v5 = *(char **)(this + 20); v21 = v4; v20 = v4 - (_DWORD)v5; v6 = (v4 - (int)v5) >> 2; if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) + ((v3 - *(_DWORD *)(this + 28)) >> 3) + ((v6 - 1) << 6) == 0xFFFFFFF ) std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); v7 = *(_DWORD *)(this + 4); if ( v7 - ((v21 - *(_DWORD *)this) >> 2) <= 1 ) { v8 = v6 + 2; if ( v7 <= 2 * v8 ) { v11 = 1; if ( v7 ) v11 = *(_DWORD *)(this + 4); v12 = v7 + v11 + 2; if ( v12 > 0x1FFFFFFF ) std::__throw_bad_alloc(); v22 = (char *)operator new(4 * v12); v9 = &v22[4 * ((v12 - v8) >> 1)]; v13 = *(_DWORD *)(this + 20); v14 = *(_DWORD *)(this + 36) + 4; if ( v14 != v13 ) memmove(v9, *(const void **)(this + 20), v14 - v13); operator delete(*(void **)this); *(_DWORD *)(this + 4) = v12; *(_DWORD *)this = v22; } else { v9 = (char *)(*(_DWORD *)this + 4 * ((v7 - v8) >> 1)); v10 = (char *)(v21 + 4); if ( v5 <= v9 ) { if ( v5 != v10 ) memmove(&v9[v20 - (v21 - (_DWORD)v5)], v5, v21 + 4 - (_DWORD)v5); } else if ( v5 != v10 ) { memmove(v9, v5, v21 + 4 - (_DWORD)v5); } } v15 = *(_DWORD *)v9; *(_DWORD *)(this + 20) = v9; *(_DWORD *)(this + 12) = v15; *(_DWORD *)(this + 16) = v15 + 512; v16 = *(_DWORD *)&v9[v20]; *(_DWORD *)(this + 36) = &v9[v20]; *(_DWORD *)(this + 28) = v16; *(_DWORD *)(this + 32) = v16 + 512; } v17 = *(_DWORD *)(this + 36); *(_DWORD *)(v17 + 4) = operator new(0x200u); std::__shared_ptr::__shared_ptr(*(int **)(this + 24), a2); v18 = (int *)(*(_DWORD *)(this + 36) + 4); v19 = *v18; *(_DWORD *)(this + 36) = v18; *(_DWORD *)(this + 28) = v19; *(_DWORD *)(this + 32) = v19 + 512; *(_DWORD *)(this + 24) = v19; } else { std::__shared_ptr::__shared_ptr(*(int **)(this + 24), a2); *(_DWORD *)(this + 24) += 8; } } //----- (00501CA0) -------------------------------------------------------- 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); } } //----- (00501CF8) -------------------------------------------------------- void __thiscall std::deque>::push_back(int this, int *a2) { int *v3; // eax char *v4; // ecx int v5; // esi unsigned int v6; // eax int v7; // ebx char *v8; // ebx char *v9; // eax int v10; // ecx unsigned int v11; // esi char *v12; // eax const void *v13; // ecx int v14; // eax int v15; // eax char *v16; // ebx int v17; // eax int v18; // ebx int *v19; // ecx int *v20; // ecx int v21; // eax int v22; // [esp+18h] [ebp-20h] int v23; // [esp+1Ch] [ebp-1Ch] char *v24; // [esp+1Ch] [ebp-1Ch] v3 = *(int **)(this + 24); if ( v3 == (int *)(*(_DWORD *)(this + 32) - 8) ) { v4 = *(char **)(this + 20); v23 = *(_DWORD *)(this + 36); v22 = v23 - (_DWORD)v4; v5 = (v23 - (int)v4) >> 2; if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) + (((int)v3 - *(_DWORD *)(this + 28)) >> 3) + ((v5 - 1) << 6) == 0xFFFFFFF ) std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); v6 = *(_DWORD *)(this + 4); if ( v6 - ((v23 - *(_DWORD *)this) >> 2) <= 1 ) { v7 = v5 + 2; if ( v6 <= 2 * (v5 + 2) ) { v10 = 1; if ( v6 ) v10 = *(_DWORD *)(this + 4); v11 = v6 + v10 + 2; if ( v11 > 0x1FFFFFFF ) std::__throw_bad_alloc(); v12 = (char *)operator new(4 * v11); v13 = *(const void **)(this + 20); v24 = v12; v8 = &v12[4 * ((v11 - v7) >> 1)]; v14 = *(_DWORD *)(this + 36) + 4; if ( (const void *)v14 != v13 ) memmove(v8, v13, v14 - (_DWORD)v13); operator delete(*(void **)this); *(_DWORD *)(this + 4) = v11; *(_DWORD *)this = v24; } else { v8 = (char *)(*(_DWORD *)this + 4 * ((v6 - v7) >> 1)); v9 = (char *)(v23 + 4); if ( v4 <= v8 ) { if ( v9 != v4 ) memmove(v8, v4, v23 + 4 - (_DWORD)v4); } else if ( v9 != v4 ) { memmove(v8, v4, v23 + 4 - (_DWORD)v4); } } v15 = *(_DWORD *)v8; *(_DWORD *)(this + 20) = v8; v16 = &v8[v22]; *(_DWORD *)(this + 12) = v15; *(_DWORD *)(this + 16) = v15 + 512; v17 = *(_DWORD *)v16; *(_DWORD *)(this + 36) = v16; *(_DWORD *)(this + 28) = v17; *(_DWORD *)(this + 32) = v17 + 512; } v18 = *(_DWORD *)(this + 36); *(_DWORD *)(v18 + 4) = operator new(0x200u); v19 = (int *)(*(_DWORD *)(this + 24) + 4); *(v19 - 1) = *a2; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v19, a2[1]); v20 = (int *)(*(_DWORD *)(this + 36) + 4); v21 = *v20; *(_DWORD *)(this + 36) = v20; *(_DWORD *)(this + 28) = v21; *(_DWORD *)(this + 32) = v21 + 512; *(_DWORD *)(this + 24) = v21; } else { *v3 = *a2; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v3 + 1, a2[1]); *(_DWORD *)(this + 24) += 8; } } //----- (00501ECC) -------------------------------------------------------- void __thiscall std::deque::_M_push_back_aux(int this, int a2) { int v2; // edi struct _Unwind_Exception *v3; // ecx unsigned int v4; // eax struct _Unwind_Exception *v5; // eax int v6; // edx const void *v7; // edx int v8; // eax int v9; // eax int v10; // eax int *v11; // edx int v12; // eax char *v13; // [esp+18h] [ebp-60h] int v14; // [esp+1Ch] [ebp-5Ch] unsigned int v15; // [esp+20h] [ebp-58h] struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-54h] struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-54h] struct _Unwind_Exception *lpuexcptb; // [esp+24h] [ebp-54h] v2 = *(_DWORD *)(this + 36); v3 = *(struct _Unwind_Exception **)(this + 20); v14 = *(_DWORD *)(this + 36) - (_DWORD)v3; if ( -1431655765 * ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) + 21 * ((v14 >> 2) - 1) - 1431655765 * ((*(_DWORD *)(this + 24) - *(_DWORD *)(this + 28)) >> 3) == 89478485 ) std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); v4 = *(_DWORD *)(this + 4); if ( v4 - ((v2 - *(_DWORD *)this) >> 2) <= 1 ) { lpuexcpt = (struct _Unwind_Exception *)((v14 >> 2) + 2); if ( v4 <= 2 * (int)lpuexcpt ) { v6 = 1; if ( v4 ) v6 = *(_DWORD *)(this + 4); v15 = v4 + v6 + 2; if ( v15 > 0x1FFFFFFF ) std::__throw_bad_alloc(); v13 = (char *)operator new(4 * v15); lpuexcpta = (struct _Unwind_Exception *)&v13[4 * ((v15 - (unsigned int)lpuexcpt) >> 1)]; v7 = *(const void **)(this + 20); v8 = *(_DWORD *)(this + 36) + 4; if ( (const void *)v8 != v7 ) memmove(lpuexcpta, v7, v8 - (_DWORD)v7); operator delete(*(void **)this); *(_DWORD *)this = v13; *(_DWORD *)(this + 4) = v15; } else { lpuexcpta = (struct _Unwind_Exception *)(*(_DWORD *)this + 4 * ((v4 - (unsigned int)lpuexcpt) >> 1)); v5 = (struct _Unwind_Exception *)(v2 + 4); if ( v3 <= lpuexcpta ) { if ( v3 != v5 ) memmove((char *)lpuexcpta + *(_DWORD *)(this + 36) - v2, v3, v2 + 4 - (_DWORD)v3); } else if ( v3 != v5 ) { memmove(lpuexcpta, v3, v2 + 4 - (_DWORD)v3); } } *(_DWORD *)(this + 20) = lpuexcpta; v9 = *(_DWORD *)lpuexcpta; *(_DWORD *)(this + 12) = *(_DWORD *)lpuexcpta; *(_DWORD *)(this + 16) = v9 + 504; *(_DWORD *)(this + 36) = (char *)lpuexcpta + v14; v10 = *(_DWORD *)((char *)lpuexcpta + v14); *(_DWORD *)(this + 28) = v10; *(_DWORD *)(this + 32) = v10 + 504; } lpuexcptb = *(struct _Unwind_Exception **)(this + 36); *((_DWORD *)lpuexcptb + 1) = operator new(0x1F8u); std::string::basic_string(*(char **)(this + 24), a2); v11 = (int *)(*(_DWORD *)(this + 36) + 4); v12 = *v11; *(_DWORD *)(this + 36) = v11; *(_DWORD *)(this + 28) = v12; *(_DWORD *)(this + 24) = v12; *(_DWORD *)(this + 32) = v12 + 504; } //----- (00502170) -------------------------------------------------------- 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); } //----- (005021C0) -------------------------------------------------------- std::locale *std::locale::_S_initialize() { std::locale *result; // eax std::locale::_Impl *v1; // [esp+4h] [ebp-18h] std::locale::_Impl *v2; // [esp+4h] [ebp-18h] if ( !_CRT_MT ) { result = (std::locale *)std::locale::_S_classic; if ( std::locale::_S_classic ) return result; LABEL_5: std::locale::_Impl::_Impl(`anonymous namespace'::c_locale_impl, (std::locale::_Impl *)2, (unsigned int)v1); std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; return std::locale::locale( &`anonymous namespace'::c_locale, (std::locale *)`anonymous namespace'::c_locale_impl, v2); } __gthr_win32_once((int)&std::locale::_S_once, (void (*)(void))std::locale::_S_initialize_once); result = (std::locale *)std::locale::_S_classic; if ( !std::locale::_S_classic ) goto LABEL_5; return result; } // 502209: variable 'v1' is possibly undefined // 502231: variable 'v2' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53E49C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; // 53EEC0: using guessed type _DWORD `anonymous namespace'::c_locale; // 53F6E8: using guessed type int std::locale::_S_classic; // 53F704: using guessed type int std::locale::_S_global; //----- (00502240) -------------------------------------------------------- std::locale *std::locale::_S_initialize_once() { unsigned int v1; // [esp+4h] [ebp-18h] std::locale::_Impl *v2; // [esp+4h] [ebp-18h] std::locale::_Impl::_Impl(`anonymous namespace'::c_locale_impl, (std::locale::_Impl *)2, v1); std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; return std::locale::locale(&`anonymous namespace'::c_locale, (std::locale *)`anonymous namespace'::c_locale_impl, v2); } // 50224F: variable 'v1' is possibly undefined // 502277: variable 'v2' is possibly undefined // 53E49C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; // 53EEC0: using guessed type _DWORD `anonymous namespace'::c_locale; // 53F6E8: using guessed type int std::locale::_S_classic; // 53F704: using guessed type int std::locale::_S_global; //----- (00502290) -------------------------------------------------------- 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_112[(_DWORD)this - 1]; } return result; } // 55ADC4: using guessed type int CSWTCH_112[7]; //----- (005022D0) -------------------------------------------------------- void __userpurge std::locale::_Impl::_M_init_extra(int a1@, std::locale::_Impl *this, std::locale::facet **a3) { int v3; // edx int v4; // eax int v5; // edx int v6; // eax int v7; // ecx int v8; // edx int v9; // eax int v10; // ecx int v11; // eax int v12; // edx int v13; // [esp+1Ch] [ebp-5Ch] int v14; // [esp+20h] [ebp-58h] int v15; // [esp+24h] [ebp-54h] int v16; // [esp+24h] [ebp-54h] int v17; // [esp+24h] [ebp-54h] int v18; // [esp+24h] [ebp-54h] int v19; // [esp+24h] [ebp-54h] int v20; // [esp+24h] [ebp-54h] int v21; // [esp+24h] [ebp-54h] int v22; // [esp+24h] [ebp-54h] int v23; // [esp+24h] [ebp-54h] int v24; // [esp+24h] [ebp-54h] int v25; // [esp+28h] [ebp-50h] int v26; // [esp+2Ch] [ebp-4Ch] int v27; // [esp+2Ch] [ebp-4Ch] int v28; // [esp+2Ch] [ebp-4Ch] int v29; // [esp+2Ch] [ebp-4Ch] int v30; // [esp+2Ch] [ebp-4Ch] int v31; // [esp+2Ch] [ebp-4Ch] int v32; // [esp+2Ch] [ebp-4Ch] int v33; // [esp+2Ch] [ebp-4Ch] int v34; // [esp+2Ch] [ebp-4Ch] int v35; // [esp+30h] [ebp-48h] int v36; // [esp+34h] [ebp-44h] int v37; // [esp+34h] [ebp-44h] int v38; // [esp+34h] [ebp-44h] int v39; // [esp+34h] [ebp-44h] struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-40h] v3 = *((_DWORD *)this + 1); v4 = *(_DWORD *)this; dword_53F5C8 = 1; std::`anonymous namespace'::numpunct_c = (int)&off_560D4C; v36 = v3; v14 = v4; v5 = *((_DWORD *)this + 2); dword_53F5CC = v4; v35 = v5; std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_c, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_53F5C8, 1u); else ++dword_53F5C8; v26 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v26 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_c; dword_53F640 = 1; std::`anonymous namespace'::collate_c = (int)&off_560BE0; dword_53F644 = std::locale::facet::_S_get_c_locale(); if ( _CRT_MT ) _InterlockedAdd(&dword_53F640, 1u); else ++dword_53F640; v27 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v27 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_c; dword_53F610 = 1; std::`anonymous namespace'::moneypunct_cf = (int)&off_55FEA0; dword_53F614 = v36; std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_cf, 0, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_53F610, 1u); else ++dword_53F610; v28 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v28 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_cf; dword_53F61C = 1; std::`anonymous namespace'::moneypunct_ct = (int)&off_55FED4; dword_53F620 = v35; std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_ct, 0, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_53F61C, 1u); else ++dword_53F61C; v29 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v29 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_ct; dword_53F5F0 = 1; std::`anonymous namespace'::money_get_c = (int)&off_560E54; if ( _CRT_MT ) _InterlockedAdd(&dword_53F5F0, 1u); else dword_53F5F0 = 2; v30 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v30 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = &std::`anonymous namespace'::money_get_c; dword_53F600 = 1; std::`anonymous namespace'::money_put_c = (int)&off_560E84; if ( _CRT_MT ) _InterlockedAdd(&dword_53F600, 1u); else dword_53F600 = 2; v31 = *(_DWORD *)(a1 + 4); v6 = std::locale::id::_M_id(&std::money_put>::id); v7 = _CRT_MT; *(_DWORD *)(v31 + 4 * v6) = &std::`anonymous namespace'::money_put_c; dword_53F5E0 = 1; std::`anonymous namespace'::time_get_c = (int)&off_560D94; if ( v7 ) _InterlockedAdd(&dword_53F5E0, 1u); else dword_53F5E0 = 2; v32 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v32 + 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_53F5A8, 1u); else ++dword_53F5A8[0]; v33 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v33 + 4 * std::locale::id::_M_id(&std::messages::id)) = &std::`anonymous namespace'::messages_c; dword_53F5D4 = 1; std::`anonymous namespace'::numpunct_w = (int)&off_560D70; v34 = *((_DWORD *)this + 4); v13 = *((_DWORD *)this + 3); v8 = *((_DWORD *)this + 5); dword_53F5D8 = v13; v25 = v8; std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_w, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_53F5D4, 1u); else ++dword_53F5D4; v15 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v15 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_w; dword_53F64C = 1; std::`anonymous namespace'::collate_w = (int)&off_560BFC; dword_53F650 = std::locale::facet::_S_get_c_locale(); if ( _CRT_MT ) _InterlockedAdd(&dword_53F64C, 1u); else ++dword_53F64C; v16 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v16 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_w; dword_53F628 = 1; std::`anonymous namespace'::moneypunct_wf = (int)&off_55FF08; dword_53F62C = v34; std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wf, 0, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_53F628, 1u); else ++dword_53F628; v17 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v17 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wf; dword_53F634 = 1; std::`anonymous namespace'::moneypunct_wt = (int)&off_55FF3C; dword_53F638 = v25; std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wt, 0, 0); if ( _CRT_MT ) _InterlockedAdd(&dword_53F634, 1u); else ++dword_53F634; v18 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v18 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wt; dword_53F5F8 = 1; std::`anonymous namespace'::money_get_w = (int)&off_560E6C; if ( _CRT_MT ) _InterlockedAdd(&dword_53F5F8, 1u); else dword_53F5F8 = 2; v19 = *(_DWORD *)(a1 + 4); v9 = std::locale::id::_M_id(&std::money_get>::id); v10 = _CRT_MT; *(_DWORD *)(v19 + 4 * v9) = &std::`anonymous namespace'::money_get_w; dword_53F608 = 1; std::`anonymous namespace'::money_put_w = (int)&off_560E9C; if ( v10 ) _InterlockedAdd(&dword_53F608, 1u); else dword_53F608 = 2; v20 = *(_DWORD *)(a1 + 4); v11 = std::locale::id::_M_id(std::money_put>::id); v12 = _CRT_MT; *(_DWORD *)(v20 + 4 * v11) = &std::`anonymous namespace'::money_put_w; dword_53F5E8 = 1; std::`anonymous namespace'::time_get_w = (int)&off_560DBC; if ( v12 ) _InterlockedAdd(&dword_53F5E8, 1u); else dword_53F5E8 = 2; v21 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v21 + 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_53F5B8, 1u); else ++dword_53F5B8[0]; v22 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v22 + 4 * std::locale::id::_M_id(&std::messages::id)) = &std::`anonymous namespace'::messages_w; v23 = *(_DWORD *)(a1 + 12); *(_DWORD *)(v23 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v14; v24 = *(_DWORD *)(a1 + 12); *(_DWORD *)(v24 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v36; v37 = *(_DWORD *)(a1 + 12); *(_DWORD *)(v37 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v35; v38 = *(_DWORD *)(a1 + 12); *(_DWORD *)(v38 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v13; v39 = *(_DWORD *)(a1 + 12); *(_DWORD *)(v39 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v34; lpuexcpta = *(struct _Unwind_Exception **)(a1 + 12); *((_DWORD *)lpuexcpta + std::locale::id::_M_id(&std::moneypunct::id)) = v25; } // 53E1E4: using guessed type int _CRT_MT; // 53F58C: using guessed type signed __int32 std::moneypunct::id; // 53F590: using guessed type signed __int32 std::moneypunct::id; // 53F594: using guessed type signed __int32 std::moneypunct::id; // 53F598: using guessed type signed __int32 std::moneypunct::id; // 53F5A4: using guessed type _DWORD std::`anonymous namespace'::messages_c; // 53F5A8: using guessed type signed __int32 dword_53F5A8[3]; // 53F5B4: using guessed type _DWORD std::`anonymous namespace'::messages_w; // 53F5B8: using guessed type signed __int32 dword_53F5B8[3]; // 53F5C4: using guessed type int std::`anonymous namespace'::numpunct_c; // 53F5C8: using guessed type int dword_53F5C8; // 53F5CC: using guessed type int dword_53F5CC; // 53F5D0: using guessed type int std::`anonymous namespace'::numpunct_w; // 53F5D4: using guessed type int dword_53F5D4; // 53F5D8: using guessed type int dword_53F5D8; // 53F5DC: using guessed type int std::`anonymous namespace'::time_get_c; // 53F5E0: using guessed type int dword_53F5E0; // 53F5E4: using guessed type int std::`anonymous namespace'::time_get_w; // 53F5E8: using guessed type int dword_53F5E8; // 53F5EC: using guessed type int std::`anonymous namespace'::money_get_c; // 53F5F0: using guessed type int dword_53F5F0; // 53F5F4: using guessed type int std::`anonymous namespace'::money_get_w; // 53F5F8: using guessed type int dword_53F5F8; // 53F5FC: using guessed type int std::`anonymous namespace'::money_put_c; // 53F600: using guessed type int dword_53F600; // 53F604: using guessed type int std::`anonymous namespace'::money_put_w; // 53F608: using guessed type int dword_53F608; // 53F60C: using guessed type int std::`anonymous namespace'::moneypunct_cf; // 53F610: using guessed type int dword_53F610; // 53F614: using guessed type int dword_53F614; // 53F618: using guessed type int std::`anonymous namespace'::moneypunct_ct; // 53F61C: using guessed type int dword_53F61C; // 53F620: using guessed type int dword_53F620; // 53F624: using guessed type int std::`anonymous namespace'::moneypunct_wf; // 53F628: using guessed type int dword_53F628; // 53F62C: using guessed type int dword_53F62C; // 53F630: using guessed type int std::`anonymous namespace'::moneypunct_wt; // 53F634: using guessed type int dword_53F634; // 53F638: using guessed type int dword_53F638; // 53F63C: using guessed type int std::`anonymous namespace'::collate_c; // 53F640: using guessed type int dword_53F640; // 53F644: using guessed type int dword_53F644; // 53F648: using guessed type int std::`anonymous namespace'::collate_w; // 53F64C: using guessed type int dword_53F64C; // 53F650: using guessed type int dword_53F650; // 53F760: using guessed type signed __int32 std::collate::id; // 53F764: using guessed type signed __int32 std::collate::id; // 53F780: using guessed type signed __int32 std::messages::id; // 53F784: using guessed type signed __int32 std::messages::id; // 53F788: using guessed type signed __int32 std::numpunct::id; // 53F78C: using guessed type signed __int32 std::numpunct::id; // 53F790: using guessed type signed __int32 std::time_get>::id; // 53F794: using guessed type signed __int32 std::time_get>::id; // 53F7A0: using guessed type signed __int32 std::money_get>::id; // 53F7A4: using guessed type signed __int32 std::money_get>::id; // 53F7A8: using guessed type signed __int32 std::money_put>::id; // 53F7AC: using guessed type signed __int32 std::money_put>::id[5]; // 55FEA0: using guessed type int (*off_55FEA0)(); // 55FED4: using guessed type int (*off_55FED4)(); // 55FF08: using guessed type int (*off_55FF08)(); // 55FF3C: using guessed type int (*off_55FF3C)(); // 560BE0: using guessed type int (*off_560BE0)(); // 560BFC: using guessed type int (*off_560BFC)(); // 560D4C: using guessed type int (*off_560D4C)(); // 560D70: using guessed type int (*off_560D70)(); // 560D94: using guessed type int (*off_560D94)(); // 560DBC: using guessed type int (*off_560DBC)(); // 560E54: using guessed type int (*off_560E54)(); // 560E6C: using guessed type int (*off_560E6C)(); // 560E84: using guessed type int (*off_560E84)(); // 560E9C: using guessed type int (*off_560E9C)(); //----- (00502AE0) -------------------------------------------------------- void __userpurge std::locale::_Impl::_M_init_extra( int a1@, std::locale::_Impl *this, int *a3, int **a4, const char *a5, const char *a6) { int v6; // eax _DWORD *v7; // edx int v8; // eax int v9; // eax void *v10; // eax int v11; // ecx void *v12; // eax int v13; // edx void *v14; // eax int v15; // ecx int v16; // eax _DWORD *v17; // edx int v18; // eax int v19; // eax void *v20; // eax int v21; // ecx void *v22; // eax int v23; // edx void *v24; // eax int v25; // ecx int v26; // [esp+14h] [ebp-74h] int v27; // [esp+14h] [ebp-74h] int v28; // [esp+14h] [ebp-74h] volatile signed __int32 *v29; // [esp+14h] [ebp-74h] int v30; // [esp+18h] [ebp-70h] int v31; // [esp+18h] [ebp-70h] int v32; // [esp+18h] [ebp-70h] volatile signed __int32 *v33; // [esp+18h] [ebp-70h] _DWORD *Block; // [esp+1Ch] [ebp-6Ch] int v35; // [esp+20h] [ebp-68h] _DWORD *v36; // [esp+20h] [ebp-68h] _DWORD *v37; // [esp+24h] [ebp-64h] _DWORD *v38; // [esp+28h] [ebp-60h] int v39; // [esp+2Ch] [ebp-5Ch] _DWORD *v40; // [esp+2Ch] [ebp-5Ch] _DWORD *v41; // [esp+30h] [ebp-58h] int v42; // [esp+34h] [ebp-54h] _DWORD *v43; // [esp+34h] [ebp-54h] int v44; // [esp+34h] [ebp-54h] int v45; // [esp+34h] [ebp-54h] int v46; // [esp+34h] [ebp-54h] int v47; // [esp+34h] [ebp-54h] _DWORD *v48; // [esp+34h] [ebp-54h] int v49; // [esp+34h] [ebp-54h] int v50; // [esp+34h] [ebp-54h] struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-50h] v41 = operator new(0xCu); v41[1] = 0; v6 = *(_DWORD *)this; *v41 = &off_560D4C; v41[2] = 0; std::numpunct::_M_initialize_numpunct(v41, v6); if ( _CRT_MT ) _InterlockedAdd(v41 + 1, 1u); else ++v41[1]; v42 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v42 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v41; v7 = operator new(0xCu); v7[1] = 0; *v7 = &off_560BE0; v43 = v7; v7[2] = std::locale::facet::_S_clone_c_locale(); if ( _CRT_MT ) _InterlockedAdd(v43 + 1, 1u); else ++v43[1]; v39 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v39 + 4 * std::locale::id::_M_id(&std::collate::id)) = v43; v40 = operator new(0xCu); v40[1] = 0; v8 = *(_DWORD *)this; *v40 = &off_55FEA0; v40[2] = 0; std::moneypunct::_M_initialize_moneypunct(v40, v8, 0); if ( _CRT_MT ) _InterlockedAdd(v40 + 1, 1u); else ++v40[1]; v44 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v44 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v40; v38 = operator new(0xCu); v38[1] = 0; v9 = *(_DWORD *)this; *v38 = &off_55FED4; v38[2] = 0; std::moneypunct::_M_initialize_moneypunct(v38, v9, 0); if ( _CRT_MT ) _InterlockedAdd(v38 + 1, 1u); else ++v38[1]; v45 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v45 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v38; v10 = operator new(8u); v11 = _CRT_MT; *((_DWORD *)v10 + 1) = 0; *(_DWORD *)v10 = &off_560E54; if ( v11 ) _InterlockedAdd((volatile signed __int32 *)v10 + 1, 1u); else *((_DWORD *)v10 + 1) = 1; v30 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v30 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = v10; v12 = operator new(8u); v13 = _CRT_MT; *((_DWORD *)v12 + 1) = 0; *(_DWORD *)v12 = &off_560E84; if ( v13 ) _InterlockedAdd((volatile signed __int32 *)v12 + 1, 1u); else *((_DWORD *)v12 + 1) = 1; v31 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v31 + 4 * std::locale::id::_M_id(&std::money_put>::id)) = v12; v14 = operator new(8u); v15 = _CRT_MT; *((_DWORD *)v14 + 1) = 0; *(_DWORD *)v14 = &off_560D94; if ( v15 ) _InterlockedAdd((volatile signed __int32 *)v14 + 1, 1u); else *((_DWORD *)v14 + 1) = 1; v32 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v32 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = v14; v33 = (volatile signed __int32 *)operator new(0x10u); std::messages::messages(v33, *(_DWORD *)this, (int)a4, 0); if ( _CRT_MT ) _InterlockedAdd(v33 + 1, 1u); else ++*((_DWORD *)v33 + 1); v46 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v46 + 4 * std::locale::id::_M_id(&std::messages::id)) = v33; v37 = operator new(0xCu); v37[1] = 0; v16 = *(_DWORD *)this; *v37 = &off_560D70; v37[2] = 0; std::numpunct::_M_initialize_numpunct(v37, v16); if ( _CRT_MT ) _InterlockedAdd(v37 + 1, 1u); else ++v37[1]; v47 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v47 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v37; v17 = operator new(0xCu); v17[1] = 0; *v17 = &off_560BFC; v48 = v17; v17[2] = std::locale::facet::_S_clone_c_locale(); if ( _CRT_MT ) _InterlockedAdd(v48 + 1, 1u); else ++v48[1]; v35 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v35 + 4 * std::locale::id::_M_id(&std::collate::id)) = v48; v36 = operator new(0xCu); v36[1] = 0; v18 = *a3; *v36 = &off_55FF08; v36[2] = 0; std::moneypunct::_M_initialize_moneypunct(v36, v18, (int)a5); if ( _CRT_MT ) _InterlockedAdd(v36 + 1, 1u); else ++v36[1]; v49 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v49 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v36; Block = operator new(0xCu); Block[1] = 0; v19 = *a3; *Block = &off_55FF3C; Block[2] = 0; std::moneypunct::_M_initialize_moneypunct(Block, v19, (int)a5); if ( _CRT_MT ) _InterlockedAdd(Block + 1, 1u); else ++Block[1]; v50 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v50 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = Block; v20 = operator new(8u); v21 = _CRT_MT; *((_DWORD *)v20 + 1) = 0; *(_DWORD *)v20 = &off_560E6C; if ( v21 ) _InterlockedAdd((volatile signed __int32 *)v20 + 1, 1u); else *((_DWORD *)v20 + 1) = 1; v26 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v26 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = v20; v22 = operator new(8u); v23 = _CRT_MT; *((_DWORD *)v22 + 1) = 0; *(_DWORD *)v22 = &off_560E9C; if ( v23 ) _InterlockedAdd((volatile signed __int32 *)v22 + 1, 1u); else *((_DWORD *)v22 + 1) = 1; v27 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v27 + 4 * std::locale::id::_M_id(std::money_put>::id)) = v22; v24 = operator new(8u); v25 = _CRT_MT; *((_DWORD *)v24 + 1) = 0; *(_DWORD *)v24 = &off_560DBC; if ( v25 ) _InterlockedAdd((volatile signed __int32 *)v24 + 1, 1u); else *((_DWORD *)v24 + 1) = 1; v28 = *(_DWORD *)(a1 + 4); *(_DWORD *)(v28 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = v24; v29 = (volatile signed __int32 *)operator new(0x10u); std::messages::messages(v29, *(_DWORD *)this, (int)a4, 0); if ( _CRT_MT ) _InterlockedAdd(v29 + 1, 1u); else ++*((_DWORD *)v29 + 1); lpuexcpta = *(struct _Unwind_Exception **)(a1 + 4); *((_DWORD *)lpuexcpta + std::locale::id::_M_id(&std::messages::id)) = v29; } // 53E1E4: using guessed type int _CRT_MT; // 53F58C: using guessed type signed __int32 std::moneypunct::id; // 53F590: using guessed type signed __int32 std::moneypunct::id; // 53F594: using guessed type signed __int32 std::moneypunct::id; // 53F598: using guessed type signed __int32 std::moneypunct::id; // 53F760: using guessed type signed __int32 std::collate::id; // 53F764: using guessed type signed __int32 std::collate::id; // 53F780: using guessed type signed __int32 std::messages::id; // 53F784: using guessed type signed __int32 std::messages::id; // 53F788: using guessed type signed __int32 std::numpunct::id; // 53F78C: using guessed type signed __int32 std::numpunct::id; // 53F790: using guessed type signed __int32 std::time_get>::id; // 53F794: using guessed type signed __int32 std::time_get>::id; // 53F7A0: using guessed type signed __int32 std::money_get>::id; // 53F7A4: using guessed type signed __int32 std::money_get>::id; // 53F7A8: using guessed type signed __int32 std::money_put>::id; // 53F7AC: using guessed type signed __int32 std::money_put>::id[5]; // 55FEA0: using guessed type int (*off_55FEA0)(); // 55FED4: using guessed type int (*off_55FED4)(); // 55FF08: using guessed type int (*off_55FF08)(); // 55FF3C: using guessed type int (*off_55FF3C)(); // 560BE0: using guessed type int (*off_560BE0)(); // 560BFC: using guessed type int (*off_560BFC)(); // 560D4C: using guessed type int (*off_560D4C)(); // 560D70: using guessed type int (*off_560D70)(); // 560D94: using guessed type int (*off_560D94)(); // 560DBC: using guessed type int (*off_560DBC)(); // 560E54: using guessed type int (*off_560E54)(); // 560E6C: using guessed type int (*off_560E6C)(); // 560E84: using guessed type int (*off_560E84)(); // 560E9C: using guessed type int (*off_560E9C)(); //----- (00503350) -------------------------------------------------------- void __userpurge std::locale::_Impl::_M_install_cache( int a1@, std::locale::_Impl *this, const std::locale::facet *a3, unsigned int a4) { int *v4; // edx int **v5; // ecx int v6; // esi volatile signed __int32 *v7; // ebx int v8; // eax int v9; // edx int v10; // edx volatile signed __int32 *v11; // edx int v12; // eax int v13; // esi _DWORD *v14; // ebx void (__fastcall *v15)(void *); // eax int v16; // ebx _DWORD *exception; // eax _DWORD *v18; // eax volatile signed __int32 *v19; // eax 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_5); } if ( _CRT_MT && __gthr_win32_mutex_lock((int)`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) { exception = __cxa_allocate_exception(4u); *exception = &off_55F348; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); } v4 = std::locale::_S_twinned_facets; if ( !std::locale::_S_twinned_facets ) { LABEL_24: v10 = -1; goto LABEL_25; } v5 = &std::locale::_S_twinned_facets; while ( 1 ) { v6 = *v4; if ( *v4 ) goto LABEL_6; if ( !_CRT_MT ) { v6 = std::locale::id::_S_refcount + 1; std::locale::id::_S_refcount = v6; *v4 = v6; LABEL_6: v7 = v5[1]; v8 = *v7; if ( a3 == (const std::locale::facet *)(v6 - 1) ) goto LABEL_15; goto LABEL_7; } _InterlockedCompareExchange(v4, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); v7 = v5[1]; v8 = *v7; if ( a3 == (const std::locale::facet *)(*v4 - 1) ) { LABEL_15: v9 = v8; if ( !v8 ) { if ( _CRT_MT ) { _InterlockedCompareExchange(v7, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); v9 = *v7; } else { v9 = std::locale::id::_S_refcount + 1; std::locale::id::_S_refcount = v9; *v7 = v9; } } v10 = v9 - 1; goto LABEL_25; } LABEL_7: if ( v8 ) goto LABEL_10; if ( _CRT_MT ) break; v8 = std::locale::id::_S_refcount + 1; std::locale::id::_S_refcount = v8; *v7 = v8; LABEL_10: if ( a3 == (const std::locale::facet *)(v8 - 1) ) goto LABEL_20; LABEL_11: v4 = v5[2]; v5 += 2; if ( !v4 ) goto LABEL_24; } _InterlockedCompareExchange(v7, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); if ( a3 != (const std::locale::facet *)(*v7 - 1) ) goto LABEL_11; LABEL_20: v11 = *v5; v12 = **v5; if ( !v12 ) { if ( _CRT_MT ) { _InterlockedCompareExchange(v11, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); v12 = *v11; } else { v12 = std::locale::id::_S_refcount + 1; std::locale::id::_S_refcount = v12; *v11 = v12; } } v10 = (int)a3; a3 = (const std::locale::facet *)(v12 - 1); LABEL_25: v13 = *(_DWORD *)(a1 + 12); v14 = (_DWORD *)(v13 + 4 * (_DWORD)a3); if ( !*v14 ) { v19 = (volatile signed __int32 *)((char *)this + 4); if ( _CRT_MT ) { _InterlockedAdd(v19, 1u); v16 = _CRT_MT; v13 = *(_DWORD *)(a1 + 12); *(_DWORD *)(v13 + 4 * (_DWORD)a3) = this; if ( v10 == -1 ) goto LABEL_30; if ( v16 ) { _InterlockedAdd(v19, 1u); v16 = _CRT_MT; *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * v10) = this; goto LABEL_30; } } else { ++*((_DWORD *)this + 1); *v14 = this; if ( v10 == -1 ) return; } ++*((_DWORD *)this + 1); *(_DWORD *)(v13 + 4 * v10) = this; return; } if ( this ) { v15 = *(void (__fastcall **)(void *))(*(_DWORD *)this + 4); if ( v15 == std::locale::facet::~facet ) operator delete(this); else ((void (__fastcall *)(std::locale::_Impl *, int))v15)(this, v10); } v16 = _CRT_MT; LABEL_30: if ( v16 ) { if ( __gthr_win32_mutex_unlock((int)`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) { v18 = __cxa_allocate_exception(4u); *v18 = &off_55F35C; __cxa_throw( v18, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); } } } // 53E1E4: using guessed type int _CRT_MT; // 53F6EC: using guessed type int std::locale::id::_S_refcount; // 53FCD4: using guessed type _DWORD `anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex[2]; // 55AF80: using guessed type int *std::locale::_S_twinned_facets; // 55B6E8: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; // 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; // 55F348: using guessed type void (__cdecl *off_55F348)(__gnu_cxx::__concurrence_lock_error *__hidden this); // 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (005037C0) -------------------------------------------------------- void __userpurge std::locale::_Impl::_M_install_facet( _DWORD *a1@, std::locale::_Impl *this, const std::locale::id *a3, const std::locale::facet *a4) { void *v4; // esi unsigned int v5; // eax unsigned int v6; // ecx int v7; // ebx int i; // eax unsigned int v9; // ecx int v10; // ebx int j; // eax volatile signed __int32 *v12; // ecx int *v13; // ebx std::locale::facet **v14; // ecx int v15; // edx volatile signed __int32 *v16; // ebx int v17; // eax volatile signed __int32 v18; // edx int v19; // edx _DWORD *v20; // eax _DWORD *v21; // ecx signed __int32 v22; // eax int v23; // eax int v24; // eax volatile signed __int32 *v25; // ecx signed __int32 v26; // eax void (*v27)(void); // eax volatile signed __int32 *v28; // edx int v29; // ebx int v30; // eax _DWORD *v31; // eax _DWORD *v32; // ecx signed __int32 v33; // eax void (*v34)(void); // eax void (*v35)(void); // eax void (*v36)(void); // eax const std::locale::id *Val; // [esp+4h] [ebp-98h] unsigned int v38; // [esp+10h] [ebp-8Ch] struct _Unwind_Exception *lpuexcpt; // [esp+1Ch] [ebp-80h] int v41; // [esp+20h] [ebp-7Ch] int v42; // [esp+24h] [ebp-78h] volatile signed __int32 **v43; // [esp+24h] [ebp-78h] _DWORD *v44; // [esp+28h] [ebp-74h] int v45; // [esp+2Ch] [ebp-70h] unsigned int v46; // [esp+34h] [ebp-68h] void *v47; // [esp+38h] [ebp-64h] int v48; // [esp+3Ch] [ebp-60h] int v49; // [esp+40h] [ebp-5Ch] _DWORD *v50; // [esp+44h] [ebp-58h] _DWORD *v51; // [esp+48h] [ebp-54h] if ( !a3 ) return; v41 = *(_DWORD *)this; if ( !*(_DWORD *)this ) { if ( _CRT_MT ) { _InterlockedCompareExchange( (volatile signed __int32 *)this, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); v41 = *(_DWORD *)this; } else { v41 = ++std::locale::id::_S_refcount; *(_DWORD *)this = std::locale::id::_S_refcount; } } v45 = v41 - 1; if ( a1[2] - 1 < (unsigned int)(v41 - 1) ) { lpuexcpt = (struct _Unwind_Exception *)(v41 + 3); v5 = -1; if ( (unsigned int)(v41 + 3) < 0x20000000 ) v5 = 4 * (v41 + 3); v4 = (void *)a1[1]; v46 = v5; v44 = (_DWORD *)operator new[](v5); v6 = a1[2]; if ( v6 ) { v7 = a1[1]; for ( i = 0; i != v6; ++i ) v44[i] = *(_DWORD *)(v7 + 4 * i); } if ( (unsigned int)lpuexcpt > v6 ) memset(&v44[v6], 0, 4 * ((_DWORD)lpuexcpt - v6)); v47 = (void *)a1[3]; v42 = operator new[](v46); v9 = a1[2]; if ( v9 ) { v10 = a1[3]; for ( j = 0; j != v9; ++j ) *(_DWORD *)(v42 + 4 * j) = *(_DWORD *)(v10 + 4 * j); } if ( (unsigned int)lpuexcpt > v9 ) memset((void *)(v42 + 4 * v9), 0, 4 * ((_DWORD)lpuexcpt - v9)); a1[2] = lpuexcpt; a1[1] = v44; a1[3] = v42; if ( v4 ) operator delete[](v4); if ( v47 ) operator delete[](v47); } if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)a3 + 1, 1u); else ++*((_DWORD *)a3 + 1); v12 = *(volatile signed __int32 **)(a1[1] + 4 * v45); v43 = (volatile signed __int32 **)(a1[1] + 4 * v45); if ( !v12 ) { *v43 = (volatile signed __int32 *)a3; goto LABEL_49; } v13 = std::locale::_S_twinned_facets; if ( !std::locale::_S_twinned_facets ) goto LABEL_46; v14 = (std::locale::facet **)&std::locale::_S_twinned_facets; while ( 1 ) { v15 = *v13; if ( *v13 ) goto LABEL_28; if ( !_CRT_MT ) { v15 = std::locale::id::_S_refcount + 1; std::locale::id::_S_refcount = v15; *v13 = v15; LABEL_28: v16 = (volatile signed __int32 *)v14[1]; v17 = *v16; if ( v41 == v15 ) goto LABEL_37; goto LABEL_29; } _InterlockedCompareExchange(v13, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); v18 = *v13; v16 = (volatile signed __int32 *)v14[1]; v17 = *v16; if ( v41 == v18 ) { LABEL_37: v19 = a1[1]; if ( !v17 ) { if ( _CRT_MT ) { _InterlockedCompareExchange(v16, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); v17 = *v16; } else { v17 = std::locale::id::_S_refcount + 1; std::locale::id::_S_refcount = v17; *v16 = v17; } } v48 = v19 + 4 * v17 - 4; if ( *(_DWORD *)v48 ) { v20 = std::locale::facet::_M_sso_shim((volatile signed __int32 *)a3, v14[1], Val); v51 = v20; if ( _CRT_MT ) { _InterlockedAdd(v20 + 1, 1u); v21 = *(_DWORD **)v48; if ( _CRT_MT ) { v22 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)v48 + 4), 0xFFFFFFFF); goto LABEL_44; } } else { ++v20[1]; v21 = *(_DWORD **)v48; } v22 = v21[1]; v21[1] = v22 - 1; LABEL_44: if ( v22 == 1 ) { v35 = *(void (**)(void))(*v21 + 4); if ( (char *)v35 == (char *)std::locale::facet::~facet ) operator delete(v21); else v35(); } *(_DWORD *)v48 = v51; v12 = *v43; goto LABEL_46; } goto LABEL_71; } LABEL_29: if ( v17 ) goto LABEL_32; if ( !_CRT_MT ) { v17 = std::locale::id::_S_refcount + 1; std::locale::id::_S_refcount = v17; *v16 = v17; LABEL_32: if ( v41 == v17 ) break; goto LABEL_33; } _InterlockedCompareExchange(v16, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); if ( v41 == *v16 ) break; LABEL_33: v13 = (int *)v14[2]; v14 += 2; if ( !v13 ) goto LABEL_71; } v28 = (volatile signed __int32 *)*v14; v29 = a1[1]; v30 = *(_DWORD *)*v14; if ( !v30 ) { if ( _CRT_MT ) { _InterlockedCompareExchange(v28, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); v30 = *v28; } else { v30 = std::locale::id::_S_refcount + 1; std::locale::id::_S_refcount = v30; *v28 = v30; } } v49 = v29 + 4 * v30 - 4; if ( !*(_DWORD *)v49 ) { LABEL_71: v12 = *v43; if ( !_CRT_MT ) goto LABEL_47; goto LABEL_72; } v31 = std::locale::facet::_M_cow_shim((volatile signed __int32 *)a3, *v14, Val); v50 = v31; if ( !_CRT_MT ) { ++v31[1]; v32 = *(_DWORD **)v49; goto LABEL_67; } _InterlockedAdd(v31 + 1, 1u); v32 = *(_DWORD **)v49; if ( _CRT_MT ) { v33 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)v49 + 4), 0xFFFFFFFF); } else { LABEL_67: v33 = v32[1]; v32[1] = v33 - 1; } if ( v33 == 1 ) { v36 = *(void (**)(void))(*v32 + 4); if ( (char *)v36 == (char *)std::locale::facet::~facet ) operator delete(v32); else v36(); } *(_DWORD *)v49 = v50; v12 = *v43; LABEL_46: if ( _CRT_MT ) { LABEL_72: if ( _InterlockedExchangeAdd(v12 + 1, 0xFFFFFFFF) == 1 ) goto LABEL_73; goto LABEL_48; } LABEL_47: v23 = *((_DWORD *)v12 + 1); *((_DWORD *)v12 + 1) = v23 - 1; if ( v23 != 1 ) goto LABEL_48; LABEL_73: v34 = *(void (**)(void))(*v12 + 4); if ( (char *)v34 == (char *)std::locale::facet::~facet ) operator delete((void *)v12); else v34(); LABEL_48: *v43 = (volatile signed __int32 *)a3; LABEL_49: if ( a1[2] ) { v38 = 0; v24 = a1[3]; do { v25 = *(volatile signed __int32 **)(v24 + 4 * v38); if ( v25 ) { if ( _CRT_MT ) { v26 = _InterlockedExchangeAdd(v25 + 1, 0xFFFFFFFF); } else { v26 = *((_DWORD *)v25 + 1); *((_DWORD *)v25 + 1) = v26 - 1; } if ( v26 == 1 ) { v27 = *(void (**)(void))(*v25 + 4); if ( (char *)v27 == (char *)std::locale::facet::~facet ) operator delete((void *)v25); else v27(); } v24 = a1[3]; *(_DWORD *)(v24 + 4 * v38) = 0; } ++v38; } while ( a1[2] > v38 ); } } // 503ACF: variable 'Val' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53F6EC: using guessed type int std::locale::id::_S_refcount; // 55AF80: using guessed type int *std::locale::_S_twinned_facets; //----- (00503F60) -------------------------------------------------------- void __userpurge std::locale::_Impl::_M_replace_facet( _DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl *a3, const std::locale::id *a4) { int v4; // eax unsigned int v5; // eax const std::locale::id *v6; // eax v4 = *(_DWORD *)a3; if ( !*(_DWORD *)a3 ) { if ( _CRT_MT ) { _InterlockedCompareExchange( (volatile signed __int32 *)a3, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); v4 = *(_DWORD *)a3; } else { v4 = std::locale::id::_S_refcount + 1; std::locale::id::_S_refcount = v4; *(_DWORD *)a3 = v4; } } v5 = v4 - 1; if ( *((_DWORD *)this + 2) - 1 < v5 || (v6 = *(const std::locale::id **)(*((_DWORD *)this + 1) + 4 * v5)) == 0 ) std::__throw_runtime_error((std::runtime_error *)"locale::_Impl::_M_replace_facet"); std::locale::_Impl::_M_install_facet(a1, a3, v6, a4); } // 53E1E4: using guessed type int _CRT_MT; // 53F6EC: using guessed type int std::locale::id::_S_refcount; //----- (00503FE0) -------------------------------------------------------- int __userpurge std::locale::_Impl::_M_replace_category@( int result@, _DWORD *a2@, std::locale::_Impl *this, volatile signed __int32 **a4, const std::locale::id *const *a5) { volatile signed __int32 **v5; // ebx volatile signed __int32 *i; // edx int v8; // eax unsigned int v9; // eax const std::locale::id *v10; // eax const std::locale::facet *v11; // [esp+8h] [ebp-14h] v5 = a4; for ( i = *a4; *v5; i = *v5 ) { v8 = *i; if ( !*i ) { if ( _CRT_MT ) { _InterlockedCompareExchange(i, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); v8 = *i; } else { v8 = std::locale::id::_S_refcount + 1; std::locale::id::_S_refcount = v8; *i = v8; } } v9 = v8 - 1; if ( *((_DWORD *)this + 2) - 1 < v9 || (v10 = *(const std::locale::id **)(*((_DWORD *)this + 1) + 4 * v9)) == 0 ) std::__throw_runtime_error((std::runtime_error *)"locale::_Impl::_M_replace_facet"); ++v5; std::locale::_Impl::_M_install_facet(a2, (std::locale::_Impl *)i, v10, v11); } return result; } // 504032: variable 'v11' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53F6EC: using guessed type int std::locale::id::_S_refcount; //----- (00504090) -------------------------------------------------------- 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 v5; // eax int v6; // ecx unsigned int v7; // ebx unsigned int v8; // eax int v9; // eax int v10; // edx int v11; // ecx int v12; // ebx int v13; // eax int v14; // edx _DWORD *v15; // eax unsigned int v16; // edx unsigned int v17; // ecx unsigned int v18; // eax struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-4Ch] _DWORD *v21; // [esp+24h] [ebp-48h] unsigned int Size; // [esp+28h] [ebp-44h] a1[1] = 0; *a1 = a3; a1[3] = 0; v4 = *((_DWORD *)this + 2); a1[4] = 0; a1[2] = v4; v5 = 4 * v4; if ( v4 >= 0x20000000 ) v5 = -1; v6 = operator new[](v5); v7 = a1[2]; a1[1] = v6; v8 = v7; if ( v7 ) { v9 = 0; while ( 1 ) { v10 = *(_DWORD *)(*((_DWORD *)this + 1) + 4 * v9); *(_DWORD *)(v6 + 4 * v9) = v10; if ( v10 ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)(v10 + 4), 1u); else ++*(_DWORD *)(v10 + 4); v7 = a1[2]; } if ( v7 <= ++v9 ) break; v6 = a1[1]; } v8 = 4 * v7; if ( v7 >= 0x20000000 ) v8 = -1; } v11 = operator new[](v8); v12 = a1[2]; a1[3] = v11; if ( v12 ) { v13 = 0; while ( 1 ) { v14 = *(_DWORD *)(*((_DWORD *)this + 3) + 4 * v13); *(_DWORD *)(v11 + 4 * v13) = v14; if ( v14 ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)(v14 + 4), 1u); else ++*(_DWORD *)(v14 + 4); } if ( a1[2] <= (unsigned int)++v13 ) break; v11 = a1[3]; } } v15 = (_DWORD *)operator new[](0x18u); v16 = 0; v17 = (unsigned int)(v15 + 1) & 0xFFFFFFFC; a1[4] = v15; *v15 = 0; v15[5] = 0; v18 = ((unsigned int)v15 - v17 + 24) & 0xFFFFFFFC; do { *(_DWORD *)(v17 + v16) = 0; v16 += 4; } while ( v16 < v18 ); for ( lpuexcpt = 0; lpuexcpt != (struct _Unwind_Exception *)24; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 4) ) { if ( !*(_DWORD *)((char *)lpuexcpt + *((_DWORD *)this + 4)) ) break; Size = strlen(*(const char **)((char *)lpuexcpt + *((_DWORD *)this + 4))) + 1; v21 = (_DWORD *)((char *)lpuexcpt + a1[4]); *v21 = operator new[](Size); memcpy(*(void **)((char *)lpuexcpt + a1[4]), *(const void **)((char *)lpuexcpt + *((_DWORD *)this + 4)), Size); } } // 53E1E4: using guessed type int _CRT_MT; //----- (00504350) -------------------------------------------------------- void __userpurge std::locale::_Impl::_Impl(_DWORD *a1@, std::locale::_Impl *this, unsigned int a3) { std::locale::facet **v4; // [esp+4h] [ebp-74h] const std::locale::facet *v5; // [esp+8h] [ebp-70h] const std::locale::facet *v6; // [esp+8h] [ebp-70h] const std::locale::facet *v7; // [esp+8h] [ebp-70h] const std::locale::facet *v8; // [esp+8h] [ebp-70h] const std::locale::facet *v9; // [esp+8h] [ebp-70h] const std::locale::facet *v10; // [esp+8h] [ebp-70h] const std::locale::facet *v11; // [esp+8h] [ebp-70h] const std::locale::facet *v12; // [esp+8h] [ebp-70h] const std::locale::facet *v13; // [esp+8h] [ebp-70h] const std::locale::facet *v14; // [esp+8h] [ebp-70h] const std::locale::facet *v15; // [esp+8h] [ebp-70h] const std::locale::facet *v16; // [esp+8h] [ebp-70h] const std::locale::facet *v17; // [esp+8h] [ebp-70h] const std::locale::facet *v18; // [esp+8h] [ebp-70h] const std::locale::facet *v19; // [esp+8h] [ebp-70h] const std::locale::facet *v20; // [esp+8h] [ebp-70h] const std::locale::facet *v21; // [esp+8h] [ebp-70h] const std::locale::facet *v22; // [esp+8h] [ebp-70h] const std::locale::facet *v23; // [esp+8h] [ebp-70h] const std::locale::facet *v24; // [esp+8h] [ebp-70h] const std::locale::facet *v25; // [esp+8h] [ebp-70h] const std::locale::facet *v26; // [esp+8h] [ebp-70h] const std::locale::facet *v27; // [esp+8h] [ebp-70h] const std::locale::facet *v28; // [esp+8h] [ebp-70h] const std::locale::facet *v29; // [esp+8h] [ebp-70h] const std::locale::facet *v30; // [esp+8h] [ebp-70h] const std::locale::facet *v31; // [esp+8h] [ebp-70h] const std::locale::facet *v32; // [esp+8h] [ebp-70h] const std::locale::facet *v33; // [esp+8h] [ebp-70h] const std::locale::facet *v34; // [esp+8h] [ebp-70h] const std::locale::facet *v35; // [esp+8h] [ebp-70h] const std::locale::facet *v36; // [esp+8h] [ebp-70h] int v37; // [esp+14h] [ebp-64h] int v38; // [esp+14h] [ebp-64h] int v39; // [esp+14h] [ebp-64h] int v40; // [esp+14h] [ebp-64h] int v41; // [esp+14h] [ebp-64h] int v42; // [esp+14h] [ebp-64h] int v43; // [esp+14h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] int v45[8]; // [esp+58h] [ebp-20h] BYREF dword_53EEC8 = 0; *a1 = this; memset(&`anonymous namespace'::facet_vec, 0, 0xC0u); a1[1] = &`anonymous namespace'::facet_vec; a1[2] = 48; memset(&`anonymous namespace'::cache_vec, 0, 0xC0u); a1[3] = &`anonymous namespace'::cache_vec; a1[4] = &`anonymous namespace'::name_vec; dword_53EECC = 0; dword_53EED0 = 0; dword_53EED4 = 0; dword_53EED8 = 0; `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, v5); 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, v6); dword_53E524 = 1; word_53E544 = 0; `anonymous namespace'::numpunct_cache_c = (int)&off_5605B0; dword_53E528 = 0; dword_53E52C = 0; byte_53E530 = 0; dword_53E534 = 0; dword_53E538 = 0; dword_53E53C = 0; dword_53E540 = 0; byte_53E584 = 0; dword_53E40C = 1; `anonymous namespace'::numpunct_c = &off_55FCD8; dword_53E410 = (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, v7); dword_53F0A4 = 1; `anonymous namespace'::num_get_c = &off_560C18; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::num_get>::id, (const std::locale::id *)&`anonymous namespace'::num_get_c, v8); dword_53F0B4 = 1; `anonymous namespace'::num_put_c = &off_560C90; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::num_put>::id, (const std::locale::id *)&`anonymous namespace'::num_put_c, v9); dword_53EFBC = 1; `anonymous namespace'::collate_c = &off_55FC68; dword_53EFC0 = 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, v10); dword_53E824 = 1; `anonymous namespace'::moneypunct_cache_cf = (int)&off_5606D4; dword_53E828 = 0; dword_53E82C = 0; word_53E830 = 0; byte_53E832 = 0; dword_53E834 = 0; dword_53E838 = 0; dword_53E83C = 0; dword_53E840 = 0; dword_53E844 = 0; dword_53E848 = 0; dword_53E84C = 0; dword_53E850 = 0; dword_53E854 = 0; byte_53E863 = 0; dword_53E4B4 = 1; `anonymous namespace'::moneypunct_cf = &off_55F820; dword_53E4B8 = (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, v11); dword_53E884 = 1; `anonymous namespace'::moneypunct_cache_ct = (int)&off_5606E4; dword_53E888 = 0; dword_53E88C = 0; word_53E890 = 0; byte_53E892 = 0; dword_53E894 = 0; dword_53E898 = 0; dword_53E89C = 0; dword_53E8A0 = 0; dword_53E8A4 = 0; dword_53E8A8 = 0; dword_53E8AC = 0; dword_53E8B0 = 0; dword_53E8B4 = 0; byte_53E8C3 = 0; dword_53E4C0 = 1; `anonymous namespace'::moneypunct_ct = &off_55F854; dword_53E4C4 = (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, v12); dword_53E454 = 1; `anonymous namespace'::money_get_c = &off_55FD78; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::money_get>::id, (const std::locale::id *)&`anonymous namespace'::money_get_c, v13); dword_53E464 = 1; `anonymous namespace'::money_put_c = &off_55FDA8; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::money_put>::id, (const std::locale::id *)&`anonymous namespace'::money_put_c, v14); dword_53E664 = 1; `anonymous namespace'::timepunct_cache_c = (int)&off_5605E4; dword_53E668 = 0; dword_53E66C = 0; dword_53E670 = 0; dword_53E674 = 0; dword_53E678 = 0; dword_53E67C = 0; dword_53E680 = 0; dword_53E684 = 0; dword_53E688 = 0; dword_53E68C = 0; dword_53E690 = 0; dword_53E694 = 0; dword_53E698 = 0; dword_53E69C = 0; dword_53E6A0 = 0; dword_53E6A4 = 0; dword_53E6A8 = 0; dword_53E6AC = 0; dword_53E6B0 = 0; dword_53E6B4 = 0; dword_53E6B8 = 0; dword_53E6BC = 0; dword_53E6C0 = 0; dword_53E6C4 = 0; dword_53E6C8 = 0; dword_53E6CC = 0; dword_53E6D0 = 0; dword_53E6D4 = 0; dword_53E6D8 = 0; dword_53E6DC = 0; dword_53E6E0 = 0; dword_53E6E4 = 0; dword_53E6E8 = 0; dword_53E6EC = 0; dword_53E6F0 = 0; dword_53E6F4 = 0; dword_53E6F8 = 0; dword_53E6FC = 0; dword_53E700 = 0; dword_53E704 = 0; dword_53E708 = 0; dword_53E70C = 0; dword_53E710 = 0; dword_53E714 = 0; dword_53E718 = 0; dword_53E71C = 0; dword_53E720 = 0; byte_53E724 = 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, v15); dword_53E424 = 1; `anonymous namespace'::time_get_c = &off_55FD20; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::time_get>::id, (const std::locale::id *)&`anonymous namespace'::time_get_c, v16); dword_53E434 = 1; `anonymous namespace'::time_put_c = &off_560DE4; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::time_put>::id, (const std::locale::id *)&`anonymous namespace'::time_put_c, v17); 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, v18); 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, v19); 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, v20); dword_53E5A4 = 1; `anonymous namespace'::numpunct_cache_w = (int)&off_5605C0; dword_53E5A8 = 0; dword_53E5AC = 0; byte_53E5B0 = 0; dword_53E5B4 = 0; dword_53E5B8 = 0; dword_53E5BC = 0; dword_53E5C0 = 0; dword_53E5C4 = 0; byte_53E644 = 0; dword_53E418 = 1; `anonymous namespace'::numpunct_w = &off_55FCFC; dword_53E41C = (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, v21); dword_53F0AC = 1; `anonymous namespace'::num_get_w = &off_560C54; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::num_get>::id, (const std::locale::id *)&`anonymous namespace'::num_get_w, v22); dword_53F0BC = 1; `anonymous namespace'::num_put_w = &off_560CC0; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::num_put>::id, (const std::locale::id *)&`anonymous namespace'::num_put_w, v23); dword_53EFC8 = 1; `anonymous namespace'::collate_w = &off_55FC84; dword_53EFCC = 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, v24); dword_53E8E4 = 1; `anonymous namespace'::moneypunct_cache_wf = (int)&off_5606F4; dword_53E8E8 = 0; dword_53E8EC = 0; byte_53E8F0 = 0; dword_53E8F2 = 0; dword_53E8F8 = 0; dword_53E8FC = 0; dword_53E900 = 0; dword_53E904 = 0; dword_53E908 = 0; dword_53E90C = 0; dword_53E910 = 0; dword_53E914 = 0; dword_53E918 = 0; byte_53E932 = 0; dword_53E4CC = 1; `anonymous namespace'::moneypunct_wf = &off_55F888; dword_53E4D0 = (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, v25); dword_53E944 = 1; `anonymous namespace'::moneypunct_cache_wt = (int)&off_560704; dword_53E948 = 0; dword_53E94C = 0; byte_53E950 = 0; dword_53E952 = 0; dword_53E958 = 0; dword_53E95C = 0; dword_53E960 = 0; dword_53E964 = 0; dword_53E968 = 0; dword_53E96C = 0; dword_53E970 = 0; dword_53E974 = 0; dword_53E978 = 0; byte_53E992 = 0; dword_53E4D8 = 1; `anonymous namespace'::moneypunct_wt = &off_55F8BC; dword_53E4DC = (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, v26); dword_53E45C = 1; `anonymous namespace'::money_get_w = &off_55FD90; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::money_get>::id, (const std::locale::id *)&`anonymous namespace'::money_get_w, v27); dword_53E46C = 1; `anonymous namespace'::money_put_w = &off_55FDC0; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::money_put>::id, (const std::locale::id *)&`anonymous namespace'::money_put_w, v28); dword_53E744 = 1; `anonymous namespace'::timepunct_cache_w = (int)&off_5605F4; dword_53E748 = 0; dword_53E74C = 0; dword_53E750 = 0; dword_53E754 = 0; dword_53E758 = 0; dword_53E75C = 0; dword_53E760 = 0; dword_53E764 = 0; dword_53E768 = 0; dword_53E76C = 0; dword_53E770 = 0; dword_53E774 = 0; dword_53E778 = 0; dword_53E77C = 0; dword_53E780 = 0; dword_53E784 = 0; dword_53E788 = 0; dword_53E78C = 0; dword_53E790 = 0; dword_53E794 = 0; dword_53E798 = 0; dword_53E79C = 0; dword_53E7A0 = 0; dword_53E7A4 = 0; dword_53E7A8 = 0; dword_53E7AC = 0; dword_53E7B0 = 0; dword_53E7B4 = 0; dword_53E7B8 = 0; dword_53E7BC = 0; dword_53E7C0 = 0; dword_53E7C4 = 0; dword_53E7C8 = 0; dword_53E7CC = 0; dword_53E7D0 = 0; dword_53E7D4 = 0; dword_53E7D8 = 0; dword_53E7DC = 0; dword_53E7E0 = 0; dword_53E7E4 = 0; dword_53E7E8 = 0; dword_53E7EC = 0; dword_53E7F0 = 0; dword_53E7F4 = 0; dword_53E7F8 = 0; dword_53E7FC = 0; dword_53E800 = 0; byte_53E804 = 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, v29); dword_53E42C = 1; `anonymous namespace'::time_get_w = &off_55FD4C; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::time_get>::id, (const std::locale::id *)&`anonymous namespace'::time_get_w, v30); dword_53E43C = 1; `anonymous namespace'::time_put_w = &off_560DF8; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::time_put>::id, (const std::locale::id *)&`anonymous namespace'::time_put_w, v31); 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, v32); dword_53E444 = 1; `anonymous namespace'::codecvt_c16 = &off_560B5C; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::codecvt::id, (const std::locale::id *)&`anonymous namespace'::codecvt_c16, v33); dword_53E44C = 1; `anonymous namespace'::codecvt_c32 = &off_560B04; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::codecvt::id, (const std::locale::id *)&`anonymous namespace'::codecvt_c32, v34); dword_53E4E4 = 1; `anonymous namespace'::codecvt_c16_c8 = &off_560B30; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::codecvt::id, (const std::locale::id *)&`anonymous namespace'::codecvt_c16_c8, v35); dword_53E4EC = 1; `anonymous namespace'::codecvt_c32_c8 = &off_560AD8; std::locale::_Impl::_M_install_facet( a1, (std::locale::_Impl *)&std::codecvt::id, (const std::locale::id *)&`anonymous namespace'::codecvt_c32_c8, v36); v45[0] = (int)&`anonymous namespace'::numpunct_cache_c; v45[1] = (int)&`anonymous namespace'::moneypunct_cache_cf; v45[2] = (int)&`anonymous namespace'::moneypunct_cache_ct; v45[3] = (int)&`anonymous namespace'::numpunct_cache_w; v45[4] = (int)&`anonymous namespace'::moneypunct_cache_wf; v45[5] = (int)&`anonymous namespace'::moneypunct_cache_wt; std::locale::_Impl::_M_init_extra((int)a1, (std::locale::_Impl *)v45, v4); v37 = a1[3]; *(_DWORD *)(v37 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &`anonymous namespace'::numpunct_cache_c; v38 = a1[3]; *(_DWORD *)(v38 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_cf; v39 = a1[3]; *(_DWORD *)(v39 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_ct; v40 = a1[3]; *(_DWORD *)(v40 + 4 * std::locale::id::_M_id(&std::__timepunct::id)) = &`anonymous namespace'::timepunct_cache_c; v41 = a1[3]; *(_DWORD *)(v41 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &`anonymous namespace'::numpunct_cache_w; v42 = a1[3]; *(_DWORD *)(v42 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_wf; v43 = a1[3]; *(_DWORD *)(v43 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_wt; lpuexcpt = (struct _Unwind_Exception *)a1[3]; *((_DWORD *)lpuexcpt + std::locale::id::_M_id(&std::__timepunct::id)) = &`anonymous namespace'::timepunct_cache_w; } // 504442: variable 'v5' is possibly undefined // 504470: variable 'v6' is possibly undefined // 504531: variable 'v7' is possibly undefined // 50455F: variable 'v8' is possibly undefined // 50458D: variable 'v9' is possibly undefined // 5045D3: variable 'v10' is possibly undefined // 5046CE: variable 'v11' is possibly undefined // 5047C8: variable 'v12' is possibly undefined // 5047F6: variable 'v13' is possibly undefined // 504824: variable 'v14' is possibly undefined // 504A4B: variable 'v15' is possibly undefined // 504A79: variable 'v16' is possibly undefined // 504AA7: variable 'v17' is possibly undefined // 504AD5: variable 'v18' is possibly undefined // 504B03: variable 'v19' is possibly undefined // 504B31: variable 'v20' is possibly undefined // 504BF3: variable 'v21' is possibly undefined // 504C21: variable 'v22' is possibly undefined // 504C4F: variable 'v23' is possibly undefined // 504C95: variable 'v24' is possibly undefined // 504D91: variable 'v25' is possibly undefined // 504E8D: variable 'v26' is possibly undefined // 504EBB: variable 'v27' is possibly undefined // 504EE9: variable 'v28' is possibly undefined // 505110: variable 'v29' is possibly undefined // 50513E: variable 'v30' is possibly undefined // 50516C: variable 'v31' is possibly undefined // 50519A: variable 'v32' is possibly undefined // 5051C8: variable 'v33' is possibly undefined // 5051F6: variable 'v34' is possibly undefined // 505224: variable 'v35' is possibly undefined // 505252: variable 'v36' is possibly undefined // 50528D: variable 'v4' is possibly undefined // 53E3E8: using guessed type _DWORD `anonymous namespace'::messages_c[4]; // 53E3F8: using guessed type _DWORD `anonymous namespace'::messages_w[4]; // 53E40C: using guessed type int dword_53E40C; // 53E410: using guessed type int dword_53E410; // 53E418: using guessed type int dword_53E418; // 53E41C: using guessed type int dword_53E41C; // 53E424: using guessed type int dword_53E424; // 53E42C: using guessed type int dword_53E42C; // 53E434: using guessed type int dword_53E434; // 53E43C: using guessed type int dword_53E43C; // 53E444: using guessed type int dword_53E444; // 53E44C: using guessed type int dword_53E44C; // 53E454: using guessed type int dword_53E454; // 53E45C: using guessed type int dword_53E45C; // 53E464: using guessed type int dword_53E464; // 53E46C: using guessed type int dword_53E46C; // 53E470: using guessed type _DWORD `anonymous namespace'::timepunct_c[5]; // 53E484: using guessed type _DWORD `anonymous namespace'::timepunct_w[5]; // 53E4B4: using guessed type int dword_53E4B4; // 53E4B8: using guessed type int dword_53E4B8; // 53E4C0: using guessed type int dword_53E4C0; // 53E4C4: using guessed type int dword_53E4C4; // 53E4CC: using guessed type int dword_53E4CC; // 53E4D0: using guessed type int dword_53E4D0; // 53E4D8: using guessed type int dword_53E4D8; // 53E4DC: using guessed type int dword_53E4DC; // 53E4E4: using guessed type int dword_53E4E4; // 53E4EC: using guessed type int dword_53E4EC; // 53E520: using guessed type int `anonymous namespace'::numpunct_cache_c; // 53E524: using guessed type int dword_53E524; // 53E528: using guessed type int dword_53E528; // 53E52C: using guessed type int dword_53E52C; // 53E530: using guessed type char byte_53E530; // 53E534: using guessed type int dword_53E534; // 53E538: using guessed type int dword_53E538; // 53E53C: using guessed type int dword_53E53C; // 53E540: using guessed type int dword_53E540; // 53E544: using guessed type __int16 word_53E544; // 53E584: using guessed type char byte_53E584; // 53E5A0: using guessed type int `anonymous namespace'::numpunct_cache_w; // 53E5A4: using guessed type int dword_53E5A4; // 53E5A8: using guessed type int dword_53E5A8; // 53E5AC: using guessed type int dword_53E5AC; // 53E5B0: using guessed type char byte_53E5B0; // 53E5B4: using guessed type int dword_53E5B4; // 53E5B8: using guessed type int dword_53E5B8; // 53E5BC: using guessed type int dword_53E5BC; // 53E5C0: using guessed type int dword_53E5C0; // 53E5C4: using guessed type int dword_53E5C4; // 53E644: using guessed type char byte_53E644; // 53E660: using guessed type int `anonymous namespace'::timepunct_cache_c; // 53E664: using guessed type int dword_53E664; // 53E668: using guessed type int dword_53E668; // 53E66C: using guessed type int dword_53E66C; // 53E670: using guessed type int dword_53E670; // 53E674: using guessed type int dword_53E674; // 53E678: using guessed type int dword_53E678; // 53E67C: using guessed type int dword_53E67C; // 53E680: using guessed type int dword_53E680; // 53E684: using guessed type int dword_53E684; // 53E688: using guessed type int dword_53E688; // 53E68C: using guessed type int dword_53E68C; // 53E690: using guessed type int dword_53E690; // 53E694: using guessed type int dword_53E694; // 53E698: using guessed type int dword_53E698; // 53E69C: using guessed type int dword_53E69C; // 53E6A0: using guessed type int dword_53E6A0; // 53E6A4: using guessed type int dword_53E6A4; // 53E6A8: using guessed type int dword_53E6A8; // 53E6AC: using guessed type int dword_53E6AC; // 53E6B0: using guessed type int dword_53E6B0; // 53E6B4: using guessed type int dword_53E6B4; // 53E6B8: using guessed type int dword_53E6B8; // 53E6BC: using guessed type int dword_53E6BC; // 53E6C0: using guessed type int dword_53E6C0; // 53E6C4: using guessed type int dword_53E6C4; // 53E6C8: using guessed type int dword_53E6C8; // 53E6CC: using guessed type int dword_53E6CC; // 53E6D0: using guessed type int dword_53E6D0; // 53E6D4: using guessed type int dword_53E6D4; // 53E6D8: using guessed type int dword_53E6D8; // 53E6DC: using guessed type int dword_53E6DC; // 53E6E0: using guessed type int dword_53E6E0; // 53E6E4: using guessed type int dword_53E6E4; // 53E6E8: using guessed type int dword_53E6E8; // 53E6EC: using guessed type int dword_53E6EC; // 53E6F0: using guessed type int dword_53E6F0; // 53E6F4: using guessed type int dword_53E6F4; // 53E6F8: using guessed type int dword_53E6F8; // 53E6FC: using guessed type int dword_53E6FC; // 53E700: using guessed type int dword_53E700; // 53E704: using guessed type int dword_53E704; // 53E708: using guessed type int dword_53E708; // 53E70C: using guessed type int dword_53E70C; // 53E710: using guessed type int dword_53E710; // 53E714: using guessed type int dword_53E714; // 53E718: using guessed type int dword_53E718; // 53E71C: using guessed type int dword_53E71C; // 53E720: using guessed type int dword_53E720; // 53E724: using guessed type char byte_53E724; // 53E740: using guessed type int `anonymous namespace'::timepunct_cache_w; // 53E744: using guessed type int dword_53E744; // 53E748: using guessed type int dword_53E748; // 53E74C: using guessed type int dword_53E74C; // 53E750: using guessed type int dword_53E750; // 53E754: using guessed type int dword_53E754; // 53E758: using guessed type int dword_53E758; // 53E75C: using guessed type int dword_53E75C; // 53E760: using guessed type int dword_53E760; // 53E764: using guessed type int dword_53E764; // 53E768: using guessed type int dword_53E768; // 53E76C: using guessed type int dword_53E76C; // 53E770: using guessed type int dword_53E770; // 53E774: using guessed type int dword_53E774; // 53E778: using guessed type int dword_53E778; // 53E77C: using guessed type int dword_53E77C; // 53E780: using guessed type int dword_53E780; // 53E784: using guessed type int dword_53E784; // 53E788: using guessed type int dword_53E788; // 53E78C: using guessed type int dword_53E78C; // 53E790: using guessed type int dword_53E790; // 53E794: using guessed type int dword_53E794; // 53E798: using guessed type int dword_53E798; // 53E79C: using guessed type int dword_53E79C; // 53E7A0: using guessed type int dword_53E7A0; // 53E7A4: using guessed type int dword_53E7A4; // 53E7A8: using guessed type int dword_53E7A8; // 53E7AC: using guessed type int dword_53E7AC; // 53E7B0: using guessed type int dword_53E7B0; // 53E7B4: using guessed type int dword_53E7B4; // 53E7B8: using guessed type int dword_53E7B8; // 53E7BC: using guessed type int dword_53E7BC; // 53E7C0: using guessed type int dword_53E7C0; // 53E7C4: using guessed type int dword_53E7C4; // 53E7C8: using guessed type int dword_53E7C8; // 53E7CC: using guessed type int dword_53E7CC; // 53E7D0: using guessed type int dword_53E7D0; // 53E7D4: using guessed type int dword_53E7D4; // 53E7D8: using guessed type int dword_53E7D8; // 53E7DC: using guessed type int dword_53E7DC; // 53E7E0: using guessed type int dword_53E7E0; // 53E7E4: using guessed type int dword_53E7E4; // 53E7E8: using guessed type int dword_53E7E8; // 53E7EC: using guessed type int dword_53E7EC; // 53E7F0: using guessed type int dword_53E7F0; // 53E7F4: using guessed type int dword_53E7F4; // 53E7F8: using guessed type int dword_53E7F8; // 53E7FC: using guessed type int dword_53E7FC; // 53E800: using guessed type int dword_53E800; // 53E804: using guessed type char byte_53E804; // 53E820: using guessed type int `anonymous namespace'::moneypunct_cache_cf; // 53E824: using guessed type int dword_53E824; // 53E828: using guessed type int dword_53E828; // 53E82C: using guessed type int dword_53E82C; // 53E830: using guessed type __int16 word_53E830; // 53E832: using guessed type char byte_53E832; // 53E834: using guessed type int dword_53E834; // 53E838: using guessed type int dword_53E838; // 53E83C: using guessed type int dword_53E83C; // 53E840: using guessed type int dword_53E840; // 53E844: using guessed type int dword_53E844; // 53E848: using guessed type int dword_53E848; // 53E84C: using guessed type int dword_53E84C; // 53E850: using guessed type int dword_53E850; // 53E854: using guessed type int dword_53E854; // 53E863: using guessed type char byte_53E863; // 53E880: using guessed type int `anonymous namespace'::moneypunct_cache_ct; // 53E884: using guessed type int dword_53E884; // 53E888: using guessed type int dword_53E888; // 53E88C: using guessed type int dword_53E88C; // 53E890: using guessed type __int16 word_53E890; // 53E892: using guessed type char byte_53E892; // 53E894: using guessed type int dword_53E894; // 53E898: using guessed type int dword_53E898; // 53E89C: using guessed type int dword_53E89C; // 53E8A0: using guessed type int dword_53E8A0; // 53E8A4: using guessed type int dword_53E8A4; // 53E8A8: using guessed type int dword_53E8A8; // 53E8AC: using guessed type int dword_53E8AC; // 53E8B0: using guessed type int dword_53E8B0; // 53E8B4: using guessed type int dword_53E8B4; // 53E8C3: using guessed type char byte_53E8C3; // 53E8E0: using guessed type int `anonymous namespace'::moneypunct_cache_wf; // 53E8E4: using guessed type int dword_53E8E4; // 53E8E8: using guessed type int dword_53E8E8; // 53E8EC: using guessed type int dword_53E8EC; // 53E8F0: using guessed type char byte_53E8F0; // 53E8F2: using guessed type int dword_53E8F2; // 53E8F8: using guessed type int dword_53E8F8; // 53E8FC: using guessed type int dword_53E8FC; // 53E900: using guessed type int dword_53E900; // 53E904: using guessed type int dword_53E904; // 53E908: using guessed type int dword_53E908; // 53E90C: using guessed type int dword_53E90C; // 53E910: using guessed type int dword_53E910; // 53E914: using guessed type int dword_53E914; // 53E918: using guessed type int dword_53E918; // 53E932: using guessed type char byte_53E932; // 53E940: using guessed type int `anonymous namespace'::moneypunct_cache_wt; // 53E944: using guessed type int dword_53E944; // 53E948: using guessed type int dword_53E948; // 53E94C: using guessed type int dword_53E94C; // 53E950: using guessed type char byte_53E950; // 53E952: using guessed type int dword_53E952; // 53E958: using guessed type int dword_53E958; // 53E95C: using guessed type int dword_53E95C; // 53E960: using guessed type int dword_53E960; // 53E964: using guessed type int dword_53E964; // 53E968: using guessed type int dword_53E968; // 53E96C: using guessed type int dword_53E96C; // 53E970: using guessed type int dword_53E970; // 53E974: using guessed type int dword_53E974; // 53E978: using guessed type int dword_53E978; // 53E992: using guessed type char byte_53E992; // 53E9A0: using guessed type __int16 `anonymous namespace'::name_c; // 53E9C0: using guessed type _DWORD `anonymous namespace'::ctype_c[136]; // 53EBE0: using guessed type _DWORD `anonymous namespace'::ctype_w[184]; // 53EEC4: using guessed type int `anonymous namespace'::name_vec; // 53EEC8: using guessed type int dword_53EEC8; // 53EECC: using guessed type int dword_53EECC; // 53EED0: using guessed type int dword_53EED0; // 53EED4: using guessed type int dword_53EED4; // 53EED8: using guessed type int dword_53EED8; // 53EFA0: using guessed type _DWORD `anonymous namespace'::codecvt_c[3]; // 53EFAC: using guessed type _DWORD `anonymous namespace'::codecvt_w[3]; // 53EFBC: using guessed type int dword_53EFBC; // 53EFC0: using guessed type int dword_53EFC0; // 53EFC8: using guessed type int dword_53EFC8; // 53EFCC: using guessed type int dword_53EFCC; // 53F0A4: using guessed type int dword_53F0A4; // 53F0AC: using guessed type int dword_53F0AC; // 53F0B4: using guessed type int dword_53F0B4; // 53F0BC: using guessed type int dword_53F0BC; // 53F59C: using guessed type signed __int32 std::__timepunct::id; // 53F5A0: using guessed type signed __int32 std::__timepunct::id; // 53F708: using guessed type signed __int32 std::moneypunct::id; // 53F70C: using guessed type signed __int32 std::moneypunct::id; // 53F710: using guessed type signed __int32 std::moneypunct::id; // 53F714: using guessed type signed __int32 std::moneypunct::id; // 53F728: using guessed type signed __int32 std::numpunct::id; // 53F72C: using guessed type signed __int32 std::numpunct::id; // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FC68: using guessed type int (*off_55FC68)(); // 55FC84: using guessed type int (*off_55FC84)(); // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FD20: using guessed type int (*off_55FD20)(); // 55FD4C: using guessed type int (*off_55FD4C)(); // 55FD78: using guessed type int (*off_55FD78)(); // 55FD90: using guessed type int (*off_55FD90)(); // 55FDA8: using guessed type int (*off_55FDA8)(); // 55FDC0: using guessed type int (*off_55FDC0)(); // 5605B0: using guessed type int (*off_5605B0)(); // 5605C0: using guessed type int (*off_5605C0)(); // 5605E4: using guessed type int (*off_5605E4)(); // 5605F4: using guessed type int (*off_5605F4)(); // 5606D4: using guessed type int (*off_5606D4)(); // 5606E4: using guessed type int (*off_5606E4)(); // 5606F4: using guessed type int (*off_5606F4)(); // 560704: using guessed type int (*off_560704)(); // 560AD8: using guessed type int (*off_560AD8)(); // 560B04: using guessed type int (*off_560B04)(); // 560B30: using guessed type int (*off_560B30)(); // 560B5C: using guessed type int (*off_560B5C)(); // 560C18: using guessed type int (*off_560C18)(); // 560C54: using guessed type int (*off_560C54)(); // 560C90: using guessed type int (*off_560C90)(); // 560CC0: using guessed type int (*off_560CC0)(); // 560DE4: using guessed type int (*off_560DE4)(); // 560DF8: using guessed type int (*off_560DF8)(); //----- (00505430) -------------------------------------------------------- void __fastcall std::locale::_Impl::~_Impl(_DWORD *a1) { _DWORD *v1; // eax volatile signed __int32 *v2; // ecx signed __int32 v3; // eax void (*v4)(void); // eax _DWORD *v5; // eax volatile signed __int32 *v6; // ecx signed __int32 v7; // eax void (*v8)(void); // eax char *v9; // edx unsigned int v11; // [esp+14h] [ebp-58h] int v12; // [esp+14h] [ebp-58h] unsigned int v13; // [esp+18h] [ebp-54h] v1 = (_DWORD *)a1[1]; if ( v1 ) { if ( !a1[2] ) goto LABEL_13; v11 = 0; do { v2 = (volatile signed __int32 *)v1[v11]; if ( v2 ) { if ( _CRT_MT ) { v3 = _InterlockedExchangeAdd(v2 + 1, 0xFFFFFFFF); } else { v3 = *((_DWORD *)v2 + 1); *((_DWORD *)v2 + 1) = v3 - 1; } if ( v3 == 1 ) { v4 = *(void (**)(void))(*v2 + 4); if ( (char *)v4 == (char *)std::locale::facet::~facet ) operator delete((void *)v2); else v4(); } v1 = (_DWORD *)a1[1]; } ++v11; } while ( a1[2] > v11 ); if ( v1 ) LABEL_13: operator delete[](v1); } v5 = (_DWORD *)a1[3]; if ( v5 ) { if ( !a1[2] ) goto LABEL_26; v13 = 0; do { v6 = (volatile signed __int32 *)v5[v13]; if ( v6 ) { if ( _CRT_MT ) { v7 = _InterlockedExchangeAdd(v6 + 1, 0xFFFFFFFF); } else { v7 = *((_DWORD *)v6 + 1); *((_DWORD *)v6 + 1) = v7 - 1; } if ( v7 == 1 ) { v8 = *(void (**)(void))(*v6 + 4); if ( (char *)v8 == (char *)std::locale::facet::~facet ) operator delete((void *)v6); else v8(); } v5 = (_DWORD *)a1[3]; } ++v13; } while ( a1[2] > v13 ); if ( v5 ) LABEL_26: operator delete[](v5); } v12 = 0; v9 = (char *)a1[4]; if ( v9 ) { do { if ( *(_DWORD *)&v9[v12] ) { operator delete[](*(void **)&v9[v12]); v9 = (char *)a1[4]; } v12 += 4; } while ( v12 != 24 ); if ( v9 ) operator delete[](v9); } } // 53E1E4: using guessed type int _CRT_MT; //----- (005056A0) -------------------------------------------------------- int *const *std::locale::facet::_S_get_c_name() { return &std::locale::facet::_S_c_name; } //----- (005056B0) -------------------------------------------------------- int std::locale::facet::_S_get_c_locale() { int result; // eax if ( _CRT_MT ) { __gthr_win32_once((int)&std::locale::facet::_S_once, (void (*)(void))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; } // 53E1E4: using guessed type int _CRT_MT; // 53F6F0: using guessed type int std::locale::facet::_S_c_locale; //----- (00505720) -------------------------------------------------------- int __cdecl std::locale::facet::_S_clone_c_locale() { return 0; } //----- (00505730) -------------------------------------------------------- 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; } //----- (00505770) -------------------------------------------------------- int **std::locale::facet::_S_initialize_once() { return std::locale::facet::_S_create_c_locale( (std::locale::facet *)&std::locale::facet::_S_c_locale, (int **)&std::locale::facet::_S_c_name); } // 53F6F0: using guessed type int std::locale::facet::_S_c_locale; //----- (005057A0) -------------------------------------------------------- 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; } //----- (005057B0) -------------------------------------------------------- int __cdecl std::locale::facet::_S_lc_ctype_c_locale() { return 0; } //----- (005057C0) -------------------------------------------------------- void __fastcall std::locale::facet::~facet(void *Block) { operator delete(Block); } //----- (005057E0) -------------------------------------------------------- std::locale *__cdecl std::locale::global(std::locale *this, volatile signed __int32 **a2) { _DWORD *locale_mutex; // eax volatile signed __int32 *v3; // edx int v4; // eax _DWORD *exception; // eax std::locale::_Impl *v7; // [esp+4h] [ebp-74h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] int v9; // [esp+54h] [ebp-24h] void *Block[2]; // [esp+58h] [ebp-20h] BYREF char v11; // [esp+60h] [ebp-18h] BYREF std::locale::_S_initialize(); locale_mutex = `anonymous namespace'::get_locale_mutex(); v9 = (int)locale_mutex; if ( !_CRT_MT ) { lpuexcpt = (struct _Unwind_Exception *)std::locale::_S_global; v3 = *a2; v4 = std::locale::_S_classic; if ( *a2 == (volatile signed __int32 *)std::locale::_S_classic ) goto LABEL_4; goto LABEL_3; } if ( __gthr_win32_mutex_lock((int)locale_mutex) ) __gnu_cxx::__throw_concurrence_lock_error(); lpuexcpt = (struct _Unwind_Exception *)std::locale::_S_global; v3 = *a2; v4 = std::locale::_S_classic; if ( *a2 != (volatile signed __int32 *)std::locale::_S_classic ) { if ( !_CRT_MT ) { LABEL_3: ++*v3; v4 = (int)v3; goto LABEL_4; } _InterlockedAdd(v3, 1u); v4 = (int)*a2; } LABEL_4: std::locale::_S_global = v4; std::locale::name[abi:cxx11]((int)Block, (int)a2); if ( std::string::compare((int)Block, "*") ) setlocale(0, (const char *)Block[0]); if ( Block[0] != &v11 ) operator delete(Block[0]); if ( _CRT_MT && __gthr_win32_mutex_unlock(v9) ) { exception = __cxa_allocate_exception(4u); *exception = &off_55F35C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); } std::locale::locale(this, lpuexcpt, v7); return this; } // 5058A4: variable 'v7' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53F6E8: using guessed type int std::locale::_S_classic; // 53F704: using guessed type int std::locale::_S_global; // 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; // 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (005059C0) -------------------------------------------------------- _DWORD *std::locale::classic() { std::locale::_Impl *v1; // [esp+4h] [ebp-18h] std::locale::_Impl *v2; // [esp+4h] [ebp-18h] if ( _CRT_MT ) { __gthr_win32_once((int)&std::locale::_S_once, (void (*)(void))std::locale::_S_initialize_once); if ( std::locale::_S_classic ) return &`anonymous namespace'::c_locale; } else if ( std::locale::_S_classic ) { return &`anonymous namespace'::c_locale; } std::locale::_Impl::_Impl(`anonymous namespace'::c_locale_impl, (std::locale::_Impl *)2, (unsigned int)v1); std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; std::locale::locale(&`anonymous namespace'::c_locale, (std::locale *)`anonymous namespace'::c_locale_impl, v2); return &`anonymous namespace'::c_locale; } // 505A09: variable 'v1' is possibly undefined // 505A31: variable 'v2' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 53E49C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; // 53EEC0: using guessed type _DWORD `anonymous namespace'::c_locale; // 53F6E8: using guessed type int std::locale::_S_classic; // 53F704: using guessed type int std::locale::_S_global; //----- (00505A50) -------------------------------------------------------- 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; } //----- (00505A60) -------------------------------------------------------- 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; } // 53E1E4: using guessed type int _CRT_MT; // 53F6E8: using guessed type int std::locale::_S_classic; //----- (00505A90) -------------------------------------------------------- void __fastcall std::locale::locale(_DWORD *a1) { int v1; // eax _DWORD *v2; // eax _DWORD *exception; // eax _DWORD *locale_mutex; // [esp+18h] [ebp-44h] *a1 = 0; std::locale::_S_initialize(); v1 = std::locale::_S_global; *a1 = std::locale::_S_global; if ( v1 != std::locale::_S_classic ) { locale_mutex = `anonymous namespace'::get_locale_mutex(); v2 = (_DWORD *)std::locale::_S_global; if ( !_CRT_MT ) goto LABEL_3; if ( __gthr_win32_mutex_lock((int)locale_mutex) ) __gnu_cxx::__throw_concurrence_lock_error(); v2 = (_DWORD *)std::locale::_S_global; if ( _CRT_MT ) { _InterlockedAdd((volatile signed __int32 *)std::locale::_S_global, 1u); v2 = (_DWORD *)std::locale::_S_global; } else { LABEL_3: ++*v2; } *a1 = v2; if ( _CRT_MT ) { if ( __gthr_win32_mutex_unlock((int)locale_mutex) ) { exception = __cxa_allocate_exception(4u); *exception = &off_55F35C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); } } } } // 53E1E4: using guessed type int _CRT_MT; // 53F6E8: using guessed type int std::locale::_S_classic; // 53F704: using guessed type int std::locale::_S_global; // 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; // 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); //----- (00505BE0) -------------------------------------------------------- void __fastcall std::locale::~locale(_DWORD **a1) { _DWORD *Block; // ebx int v2; // eax Block = *a1; if ( *a1 != (_DWORD *)std::locale::_S_classic ) { if ( !_CRT_MT ) { v2 = (*Block)--; if ( v2 != 1 ) return; LABEL_6: std::locale::_Impl::~_Impl(Block); operator delete(Block); return; } if ( _InterlockedExchangeAdd(Block, 0xFFFFFFFF) == 1 ) goto LABEL_6; } } // 53E1E4: using guessed type int _CRT_MT; // 53F6E8: using guessed type int std::locale::_S_classic; //----- (00505C40) -------------------------------------------------------- volatile signed __int32 **__thiscall std::locale::operator=( volatile signed __int32 **this, volatile signed __int32 **a2) { volatile signed __int32 **result; // eax int v3; // edx volatile signed __int32 *v4; // ecx volatile signed __int32 *Block; // 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; } } Block = *result; if ( *result == (volatile signed __int32 *)v3 ) goto LABEL_7; if ( _CRT_MT ) { if ( _InterlockedExchangeAdd(Block, 0xFFFFFFFF) != 1 ) goto LABEL_7; } else { v6 = (*Block)--; if ( v6 != 1 ) { LABEL_7: *result = *a2; return result; } } v7 = result; std::locale::_Impl::~_Impl(Block); operator delete((void *)Block); result = v7; *v7 = *a2; return result; } // 53E1E4: using guessed type int _CRT_MT; // 53F6E8: using guessed type int std::locale::_S_classic; //----- (00505CE0) -------------------------------------------------------- char *__thiscall std::vector>::_M_realloc_insert const&>( _DWORD *this, char *a2, _DWORD *a3) { int v3; // edx int v4; // eax unsigned int v5; // ebx _DWORD *v6; // edi char *i; // esi volatile signed __int32 **v8; // ecx _DWORD *v9; // ecx volatile signed __int32 **v10; // ecx char *result; // eax char *v12; // [esp+10h] [ebp-28h] char *Block; // [esp+18h] [ebp-20h] char *v15; // [esp+1Ch] [ebp-1Ch] v12 = (char *)this[1]; Block = (char *)*this; v3 = (int)&v12[-*this] >> 3; if ( v3 == 0xFFFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = (int)&v12[-*this] >> 3; v5 = v3 + v4; if ( __CFADD__(v3, v4) ) { v5 = 0xFFFFFFF; LABEL_11: v15 = (char *)operator new(8 * v5); goto LABEL_12; } v15 = 0; if ( v5 ) { if ( v5 > 0xFFFFFFF ) v5 = 0xFFFFFFF; goto LABEL_11; } LABEL_12: std::__shared_ptr::__shared_ptr(&v15[a2 - Block], a3); v6 = v15; for ( i = Block; ; i += 8 ) { v6 += 2; if ( a2 == i ) break; std::__shared_ptr::__shared_ptr(v6 - 2, i); v8 = (volatile signed __int32 **)(i + 4); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v8); } while ( i != v12 ) { v9 = v6; v6 += 2; std::__shared_ptr::__shared_ptr(v9, i); v10 = (volatile signed __int32 **)(i + 4); i += 8; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v10); } if ( Block ) operator delete(Block); this[1] = v6; *this = v15; result = &v15[8 * v5]; this[2] = result; return result; } //----- (00505DEC) -------------------------------------------------------- int __thiscall std::vector>::_M_erase(_DWORD *this, int a2) { int v3; // ebx int v4; // esi int v5; // ebx int v6; // edx volatile signed __int32 **v7; // ecx int v8; // ecx v3 = this[1]; if ( a2 + 8 != v3 ) { v4 = a2 + 4; v5 = (v3 - (a2 + 8)) >> 3; while ( v5 > 0 ) { v6 = *(_DWORD *)(v4 + 4); v7 = (volatile signed __int32 **)v4; --v5; v4 += 8; *(_DWORD *)(v4 - 12) = v6; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v7, *(volatile signed __int32 **)v4); } } v8 = this[1]; this[1] = v8 - 8; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v8 - 4)); return a2; } //----- (00505E48) -------------------------------------------------------- void __thiscall std::vector>::push_back(_DWORD *this, _DWORD *a2) { char *v3; // ecx v3 = (char *)this[1]; if ( v3 == (char *)this[2] ) { std::vector>::_M_realloc_insert const&>( this, v3, a2); } else { std::__shared_ptr::__shared_ptr(v3, a2); this[1] += 8; } } //----- (00505E84) -------------------------------------------------------- char *__thiscall std::vector>::_M_realloc_insert const&>( int **this, int *a2, int *a3) { int v3; // edx int v4; // eax unsigned int v5; // ebx int *v6; // edi int *i; // esi volatile signed __int32 **v8; // ecx int *v9; // ecx volatile signed __int32 **v10; // ecx char *result; // eax int *v12; // [esp+10h] [ebp-28h] int *Block; // [esp+18h] [ebp-20h] int *v15; // [esp+1Ch] [ebp-1Ch] v12 = this[1]; Block = *this; v3 = ((char *)v12 - (char *)*this) >> 3; if ( v3 == 0xFFFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = ((char *)v12 - (char *)*this) >> 3; v5 = v3 + v4; if ( __CFADD__(v3, v4) ) { v5 = 0xFFFFFFF; LABEL_11: v15 = (int *)operator new(8 * v5); goto LABEL_12; } v15 = 0; if ( v5 ) { if ( v5 > 0xFFFFFFF ) v5 = 0xFFFFFFF; goto LABEL_11; } LABEL_12: std::__shared_ptr::__shared_ptr( (int *)((char *)v15 + (char *)a2 - (char *)Block), a3); v6 = v15; for ( i = Block; ; i += 2 ) { v6 += 2; if ( a2 == i ) break; std::__shared_ptr::__shared_ptr(v6 - 2, i); v8 = (volatile signed __int32 **)(i + 1); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v8); } while ( i != v12 ) { v9 = v6; v6 += 2; std::__shared_ptr::__shared_ptr(v9, i); v10 = (volatile signed __int32 **)(i + 1); i += 2; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v10); } if ( Block ) operator delete(Block); this[1] = v6; *this = v15; result = (char *)&v15[2 * v5]; this[2] = (int *)result; return result; } //----- (00505F90) -------------------------------------------------------- void __thiscall std::vector>::push_back(int **this, int *a2) { int *v3; // ecx v3 = this[1]; if ( v3 == this[2] ) { std::vector>::_M_realloc_insert const&>( this, v3, a2); } else { std::__shared_ptr::__shared_ptr(v3, a2); this[1] += 2; } } //----- (00505FCC) -------------------------------------------------------- char *__thiscall std::vector>::_M_realloc_insert const&>( _DWORD *this, char *a2, _DWORD *a3) { int v3; // edx int v4; // eax unsigned int v5; // ebx _DWORD *v6; // edi char *i; // esi volatile signed __int32 **v8; // ecx _DWORD *v9; // ecx volatile signed __int32 **v10; // ecx char *result; // eax char *v12; // [esp+10h] [ebp-28h] char *Block; // [esp+18h] [ebp-20h] char *v15; // [esp+1Ch] [ebp-1Ch] v12 = (char *)this[1]; Block = (char *)*this; v3 = (int)&v12[-*this] >> 3; if ( v3 == 0xFFFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = (int)&v12[-*this] >> 3; v5 = v3 + v4; if ( __CFADD__(v3, v4) ) { v5 = 0xFFFFFFF; LABEL_11: v15 = (char *)operator new(8 * v5); goto LABEL_12; } v15 = 0; if ( v5 ) { if ( v5 > 0xFFFFFFF ) v5 = 0xFFFFFFF; goto LABEL_11; } LABEL_12: std::__shared_ptr::__shared_ptr(&v15[a2 - Block], a3); v6 = v15; for ( i = Block; ; i += 8 ) { v6 += 2; if ( a2 == i ) break; std::__shared_ptr::__shared_ptr(v6 - 2, i); v8 = (volatile signed __int32 **)(i + 4); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v8); } while ( i != v12 ) { v9 = v6; v6 += 2; std::__shared_ptr::__shared_ptr(v9, i); v10 = (volatile signed __int32 **)(i + 4); i += 8; std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v10); } if ( Block ) operator delete(Block); this[1] = v6; *this = v15; result = &v15[8 * v5]; this[2] = result; return result; } //----- (005060D8) -------------------------------------------------------- char *__thiscall std::vector>::push_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 const&>( this, v3, a2); result = (char *)std::__shared_ptr::__shared_ptr(v3, a2); this[1] += 8; return result; } //----- (00506114) -------------------------------------------------------- void __thiscall std::vector>::vector(_DWORD *this, _DWORD *a2) { size_t v3; // esi _DWORD *v4; // ecx _DWORD *v5; // esi _DWORD *i; // edi int v7; // ecx _DWORD *v8; // [esp+0h] [ebp-28h] v3 = a2[1] - *a2; *this = 0; this[1] = 0; this[2] = 0; if ( v3 ) { if ( v3 > 0x7FFFFFF8 ) std::__throw_bad_alloc(); v4 = operator new(v3); } else { v4 = 0; } *this = v4; this[1] = v4; this[2] = (char *)v4 + v3; v5 = (_DWORD *)a2[1]; for ( i = (_DWORD *)*a2; i != v5; i += 2 ) { v8 = i; std::__shared_ptr::__shared_ptr(v4, v8); v4 = (_DWORD *)(v7 + 8); } this[1] = v4; } // 506176: variable 'v7' is possibly undefined //----- (0050618C) -------------------------------------------------------- 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); } //----- (005061C4) -------------------------------------------------------- void __thiscall std::vector::_M_realloc_insert( char **this, char *a2, _DWORD *a3) { int v3; // eax int v4; // edx int v5; // eax char *v6; // eax void **v7; // [esp+1Ch] [ebp-5Ch] char *Block; // [esp+28h] [ebp-50h] void **v10; // [esp+2Ch] [ebp-4Ch] void **v11; // [esp+30h] [ebp-48h] unsigned int lpuexcpt; // [esp+34h] [ebp-44h] void **i; // [esp+38h] [ebp-40h] v7 = (void **)this[1]; Block = *this; v3 = -1227133513 * (((char *)v7 - *this) >> 2); if ( v3 == 76695844 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = -1227133513 * (((char *)v7 - Block) >> 2); lpuexcpt = v4 - 1227133513 * (((char *)v7 - Block) >> 2); if ( __CFADD__(v4, v3) ) { lpuexcpt = 76695844; LABEL_11: v11 = (void **)operator new(28 * lpuexcpt); goto LABEL_12; } v11 = 0; if ( lpuexcpt ) { v5 = 76695844; if ( lpuexcpt <= 0x4924924 ) v5 = v4 - 1227133513 * (((char *)v7 - Block) >> 2); lpuexcpt = v5; goto LABEL_11; } LABEL_12: v6 = (char *)v11 + a2 - Block + 4; *((_DWORD *)v6 - 1) = *a3; std::string::basic_string(v6, (int)(a3 + 1)); v10 = v11; for ( i = (void **)Block; ; i += 7 ) { v10 += 7; if ( a2 == (char *)i ) break; *(v10 - 7) = *i; std::string::basic_string(v10 - 6, i + 1); std::string::_M_dispose(i + 1); } while ( v7 != i ) { *v10 = *i; std::string::basic_string(v10 + 1, i + 1); std::string::_M_dispose(i + 1); i += 7; v10 += 7; } if ( Block ) operator delete(Block); *this = (char *)v11; this[1] = (char *)v10; this[2] = (char *)&v11[7 * lpuexcpt]; } //----- (005063D8) -------------------------------------------------------- void __thiscall std::vector::push_back(char **this, _DWORD *a2) { char *v3; // ecx char *v4; // ecx v3 = this[1]; if ( v3 == this[2] ) { std::vector::_M_realloc_insert(this, v3, a2); } else { v4 = v3 + 4; *((_DWORD *)v4 - 1) = *a2; std::string::basic_string(v4, (int)(a2 + 1)); this[1] += 28; } } //----- (00506420) -------------------------------------------------------- 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); } //----- (00506458) -------------------------------------------------------- void __thiscall std::vector::_M_realloc_insert( void **this, int a2, WXML::DOMLib::Token *a3) { int v3; // eax int v4; // edx int v5; // eax int v6; // eax const WXML::DOMLib::Token *v7; // [esp+4h] [ebp-64h] int v8; // [esp+14h] [ebp-54h] int v9; // [esp+18h] [ebp-50h] void *Block; // [esp+20h] [ebp-48h] unsigned int lpuexcpt; // [esp+24h] [ebp-44h] char *v13; // [esp+28h] [ebp-40h] v8 = (int)this[1]; Block = *this; v3 = -1227133513 * ((v8 - (int)*this) >> 4); if ( v3 == 19173961 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = -1227133513 * ((v8 - (int)Block) >> 4); lpuexcpt = v4 - 1227133513 * ((v8 - (int)Block) >> 4); if ( __CFADD__(v4, v3) ) { lpuexcpt = 19173961; } else { v13 = 0; if ( !lpuexcpt ) goto LABEL_12; v5 = 19173961; if ( lpuexcpt <= 0x1249249 ) v5 = v4 - 1227133513 * ((v8 - (int)Block) >> 4); lpuexcpt = v5; } v13 = (char *)operator new(112 * lpuexcpt); LABEL_12: WXML::DOMLib::Token::Token((int)&v13[a2 - (_DWORD)Block], a3, v7); v6 = std::__relocate_a_1>( (int)Block, a2, (int)v13); v9 = std::__relocate_a_1>( a2, v8, v6 + 112); if ( Block ) operator delete(Block); *this = v13; this[1] = (void *)v9; this[2] = &v13[112 * lpuexcpt]; } // 50653B: variable 'v7' is possibly undefined //----- (00506600) -------------------------------------------------------- void __thiscall std::vector::push_back(int this, WXML::DOMLib::Token *a2) { int v3; // ecx const WXML::DOMLib::Token *v4; // [esp+4h] [ebp-14h] v3 = *(_DWORD *)(this + 4); if ( v3 == *(_DWORD *)(this + 8) ) { std::vector::_M_realloc_insert((void **)this, v3, a2); } else { WXML::DOMLib::Token::Token(v3, a2, v4); *(_DWORD *)(this + 4) += 112; } } // 506617: variable 'v4' is possibly undefined //----- (0050663C) -------------------------------------------------------- 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); } //----- (00506674) -------------------------------------------------------- void __thiscall std::vector::_M_realloc_insert( struct _Unwind_Exception **this, void **a2, _DWORD *a3) { int v3; // eax int v4; // edx int v5; // eax struct _Unwind_Exception *v6; // [esp+10h] [ebp-58h] struct _Unwind_Exception *Block; // [esp+18h] [ebp-50h] unsigned int v9; // [esp+1Ch] [ebp-4Ch] struct _Unwind_Exception *v10; // [esp+20h] [ebp-48h] struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] void **i; // [esp+28h] [ebp-40h] v6 = this[1]; Block = *this; v3 = -1431655765 * ((v6 - *this) >> 2); if ( v3 == 178956970 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = -1431655765 * ((v6 - Block) >> 2); v9 = v4 - 1431655765 * ((v6 - Block) >> 2); if ( __CFADD__(v4, v3) ) { v9 = 178956970; LABEL_11: v10 = (struct _Unwind_Exception *)operator new(12 * v9); goto LABEL_12; } v10 = 0; if ( v9 ) { v5 = 178956970; if ( v9 <= 0xAAAAAAA ) v5 = v4 - 1431655765 * ((v6 - Block) >> 2); v9 = v5; goto LABEL_11; } LABEL_12: std::vector>::vector( (struct _Unwind_Exception *)((char *)v10 + (char *)a2 - (char *)Block), a3); lpuexcpt = v10; for ( i = (void **)Block; ; i += 3 ) { lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 12); if ( a2 == i ) break; *((_DWORD *)lpuexcpt - 3) = *i; *((_DWORD *)lpuexcpt - 2) = i[1]; *((_DWORD *)lpuexcpt - 1) = i[2]; i[2] = 0; i[1] = 0; *i = 0; std::vector>::~vector(i); } while ( v6 != (struct _Unwind_Exception *)i ) { *(_DWORD *)lpuexcpt = *i; *((_DWORD *)lpuexcpt + 1) = i[1]; *((_DWORD *)lpuexcpt + 2) = i[2]; i[2] = 0; i[1] = 0; *i = 0; std::vector>::~vector(i); i += 3; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 12); } if ( Block ) operator delete(Block); *this = v10; this[1] = lpuexcpt; this[2] = (struct _Unwind_Exception *)((char *)v10 + 12 * v9); } //----- (00506898) -------------------------------------------------------- void __thiscall std::vector::push_back(int this, _DWORD *a2) { void **v3; // ecx v3 = *(void ***)(this + 4); if ( v3 == *(void ***)(this + 8) ) { std::vector::_M_realloc_insert( (struct _Unwind_Exception **)this, v3, a2); } else { std::vector>::vector(v3, a2); *(_DWORD *)(this + 4) += 12; } } //----- (005068D4) -------------------------------------------------------- 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); } //----- (0050690C) -------------------------------------------------------- _DWORD *__thiscall std::vector::_M_realloc_insert( _DWORD *this, char *a2, WXML::EXPRLib::Token *a3) { int v3; // eax int v4; // ebx bool v5; // cf unsigned int v6; // ebx char *v7; // esi char *v8; // edi int v9; // edx volatile signed __int32 **v10; // ecx int *v11; // ecx int v12; // edx volatile signed __int32 **v13; // ecx _DWORD *result; // eax const WXML::EXPRLib::Token *v15; // [esp+4h] [ebp-34h] char *v16; // [esp+10h] [ebp-28h] char *Block; // [esp+18h] [ebp-20h] char *v19; // [esp+1Ch] [ebp-1Ch] v16 = (char *)this[1]; Block = (char *)*this; v3 = -1227133513 * ((int)&v16[-*this] >> 2); if ( v3 == 76695844 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = -1227133513 * ((int)&v16[-*this] >> 2); v5 = __CFADD__(v3, v4); v6 = v3 + v4; if ( v5 ) { v6 = 76695844; LABEL_11: v19 = (char *)operator new(28 * v6); goto LABEL_12; } v19 = 0; if ( v6 ) { if ( v6 > 0x4924924 ) v6 = 76695844; goto LABEL_11; } LABEL_12: WXML::EXPRLib::Token::Token((int *)&v19[a2 - Block], a3, v15); v7 = v19; v8 = Block; while ( 1 ) { v7 += 28; if ( a2 == v8 ) break; *((_DWORD *)v7 - 7) = *(_DWORD *)v8; v9 = *((_DWORD *)v8 + 2); *((_DWORD *)v7 - 6) = *((_DWORD *)v8 + 1); *((_DWORD *)v7 - 5) = v9; *((_DWORD *)v7 - 4) = *((_DWORD *)v8 + 3); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count((int *)v7 - 3, *((_DWORD *)v8 + 4)); v10 = (volatile signed __int32 **)(v8 + 16); v8 += 28; *((_DWORD *)v7 - 2) = *((_DWORD *)v8 - 2); *((_DWORD *)v7 - 1) = *((_DWORD *)v8 - 1); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v10); } while ( v8 != v16 ) { v11 = (int *)(v7 + 16); v7 += 28; *((_DWORD *)v7 - 7) = *(_DWORD *)v8; v12 = *((_DWORD *)v8 + 2); *((_DWORD *)v7 - 6) = *((_DWORD *)v8 + 1); *((_DWORD *)v7 - 5) = v12; *((_DWORD *)v7 - 4) = *((_DWORD *)v8 + 3); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v11, *((_DWORD *)v8 + 4)); v13 = (volatile signed __int32 **)(v8 + 16); v8 += 28; *((_DWORD *)v7 - 2) = *((_DWORD *)v8 - 2); *((_DWORD *)v7 - 1) = *((_DWORD *)v8 - 1); std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v13); } if ( Block ) operator delete(Block); result = this; *this = v19; this[1] = v7; this[2] = &v19[28 * v6]; return result; } // 50699B: variable 'v15' is possibly undefined //----- (00506A64) -------------------------------------------------------- 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); } //----- (00506A9C) -------------------------------------------------------- void __thiscall std::vector::_M_realloc_insert( night::ns_sourcemap **this, night::ns_sourcemap *a2, night::ns_sourcemap *a3) { int v3; // eax int v4; // edx int v5; // eax int v6; // eax int v7; // edx const night::ns_sourcemap *v8; // [esp+4h] [ebp-64h] night::ns_sourcemap *v9; // [esp+14h] [ebp-54h] int v11; // [esp+1Ch] [ebp-4Ch] night::ns_sourcemap *Block; // [esp+20h] [ebp-48h] unsigned int lpuexcpt; // [esp+24h] [ebp-44h] night::ns_sourcemap *v14; // [esp+28h] [ebp-40h] v9 = this[1]; Block = *this; v3 = (v9 - *this) >> 6; if ( v3 == 0x1FFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = (v9 - Block) >> 6; lpuexcpt = v4 + v3; if ( __CFADD__(v4, v3) ) { lpuexcpt = 0x1FFFFFF; } else { v14 = 0; if ( !lpuexcpt ) goto LABEL_12; v5 = 0x1FFFFFF; if ( lpuexcpt <= 0x1FFFFFF ) v5 = lpuexcpt; lpuexcpt = v5; } v14 = (night::ns_sourcemap *)operator new(lpuexcpt << 6); LABEL_12: night::ns_sourcemap::ns_sourcemap((int)v14 + a2 - Block, a3, v8); v6 = std::__uninitialized_copy::__uninit_copy( Block, a2, (int)v14); v11 = std::__uninitialized_copy::__uninit_copy( a2, v9, v6 + 64); std::_Destroy_aux::__destroy(v7, (void **)Block, (void **)v9); if ( Block ) operator delete(Block); *this = v14; this[1] = (night::ns_sourcemap *)v11; this[2] = (night::ns_sourcemap *)((char *)v14 + 64 * lpuexcpt); } // 506B7B: variable 'v8' is possibly undefined // 506BD4: variable 'v7' is possibly undefined //----- (00506CB0) -------------------------------------------------------- int __thiscall std::vector::at(int *this, unsigned int a2) { int v3; // ecx unsigned int v4; // eax v3 = *this; v4 = (this[1] - v3) >> 6; if ( a2 >= v4 ) std::__throw_out_of_range_fmt("vector::_M_range_check: __n (which is %zu) >= this->size() (which is %zu)", a2, v4); return v3 + (a2 << 6); } //----- (00506CE8) -------------------------------------------------------- void __thiscall std::vector::push_back(night::ns_sourcemap **this, night::ns_sourcemap *a2) { night::ns_sourcemap *v3; // ecx const night::ns_sourcemap *v4; // [esp+4h] [ebp-14h] v3 = this[1]; if ( v3 == this[2] ) { std::vector::_M_realloc_insert(this, v3, a2); } else { night::ns_sourcemap::ns_sourcemap((int)v3, a2, v4); this[1] = (night::ns_sourcemap *)((char *)this[1] + 64); } } // 506CFF: variable 'v4' is possibly undefined //----- (00506D24) -------------------------------------------------------- void __fastcall std::vector::~vector(void ***a1, int a2) { std::_Destroy_aux::__destroy(a2, *a1, a1[1]); if ( *a1 ) operator delete(*a1); } //----- (00506D54) -------------------------------------------------------- _DWORD *__thiscall std::vector::emplace_back(void **this, _DWORD *a2) { char *v3; // eax _DWORD *result; // eax int v5; // esi _DWORD *v6; // ecx void **i; // edi _DWORD *v8; // esi void **v9; // ecx _DWORD *v10; // ecx void **v11; // ecx void **v12; // [esp+1Ch] [ebp-2Ch] unsigned int v13; // [esp+20h] [ebp-28h] _DWORD *v14; // [esp+24h] [ebp-24h] void **Block; // [esp+28h] [ebp-20h] char *v16; // [esp+2Ch] [ebp-1Ch] v3 = (char *)this[1]; v16 = v3; if ( v3 == this[2] ) { v13 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); Block = (void **)*this; v5 = v16 - (_BYTE *)*this; v12 = (void **)this[1]; v14 = std::_Vector_base::_M_allocate(v13); std::string::basic_string((_DWORD *)((char *)v14 + v5), a2); v6 = v14; for ( i = Block; ; i += 6 ) { v8 = v6 + 6; if ( v16 == (char *)i ) break; std::string::basic_string(v6, i); v9 = i; std::string::_M_dispose(v9); v6 = v8; } while ( v12 != i ) { v10 = v8; v8 += 6; std::string::basic_string(v10, i); v11 = i; i += 6; std::string::_M_dispose(v11); } if ( Block ) operator delete(Block); this[1] = v8; *this = v14; result = &v14[6 * v13]; this[2] = result; } else { result = std::string::basic_string(v3, a2); this[1] = (char *)this[1] + 24; } return result; } //----- (00506E34) -------------------------------------------------------- void __thiscall std::vector::_M_realloc_insert(void **this, char *a2, int a3) { char *v3; // ecx void **v4; // [esp+10h] [ebp-58h] unsigned int v5; // [esp+14h] [ebp-54h] char *v6; // [esp+18h] [ebp-50h] void **Block; // [esp+1Ch] [ebp-4Ch] int v9; // [esp+24h] [ebp-44h] void **i; // [esp+24h] [ebp-44h] char *v11; // [esp+28h] [ebp-40h] v5 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); Block = (void **)*this; v4 = (void **)this[1]; v9 = a2 - (_BYTE *)*this; v11 = (char *)std::_Vector_base::_M_allocate(v5); std::string::basic_string(&v11[v9], a3); v3 = v11; for ( i = Block; ; i += 6 ) { v6 = v3 + 24; if ( a2 == (char *)i ) break; std::string::basic_string(v3, i); std::string::_M_dispose(i); v3 = v6; } while ( v4 != i ) { std::string::basic_string(v6, i); std::string::_M_dispose(i); i += 6; v6 += 24; } if ( Block ) operator delete(Block); *this = v11; this[1] = v6; this[2] = &v11[24 * v5]; } //----- (00506FD0) -------------------------------------------------------- int __thiscall std::vector::_M_realloc_insert(void **this, char *a2, _DWORD *a3) { int v4; // edi _DWORD *v5; // ebx void **v6; // edi _DWORD *i; // ecx void **v8; // ecx void **v9; // ecx int result; // eax void **v11; // [esp+10h] [ebp-28h] _DWORD *v12; // [esp+14h] [ebp-24h] void **Block; // [esp+18h] [ebp-20h] unsigned int v14; // [esp+1Ch] [ebp-1Ch] v14 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); Block = (void **)*this; v4 = a2 - (_BYTE *)*this; v11 = (void **)this[1]; if ( v14 ) { if ( v14 > 0x5555555 ) std::__throw_bad_alloc(); v5 = operator new(24 * v14); } else { v5 = 0; } std::string::basic_string((_DWORD *)((char *)v5 + v4), a3); v6 = Block; for ( i = v5; ; i = v12 ) { v12 = i + 6; if ( a2 == (char *)v6 ) break; std::string::basic_string(i, v6); v8 = v6; v6 += 6; std::string::_M_dispose(v8); } while ( v11 != v6 ) { std::string::basic_string(v12, v6); v9 = v6; v6 += 6; std::string::_M_dispose(v9); v12 += 6; } if ( Block ) operator delete(Block); *this = v5; this[1] = v12; result = 24 * v14; this[2] = &v5[6 * v14]; return result; } //----- (005070B0) -------------------------------------------------------- void __thiscall std::vector::push_back(int this, int a2) { char *v3; // ecx v3 = *(char **)(this + 4); if ( v3 == *(char **)(this + 8) ) { std::vector::_M_realloc_insert((void **)this, v3, a2); } else { std::string::basic_string(v3, a2); *(_DWORD *)(this + 4) += 24; } } //----- (005070EC) -------------------------------------------------------- void __fastcall std::vector::~vector(void ***a1, int a2) { std::_Destroy_aux::__destroy(a2, *a1, a1[1]); if ( *a1 ) operator delete(*a1); } //----- (0050711C) -------------------------------------------------------- char *__thiscall std::vector::_M_realloc_insert( void **this, _BYTE *a2, _DWORD *a3) { int v3; // eax int v4; // edx bool v5; // cf unsigned int v6; // eax signed int v7; // edi char *v8; // ebx bool v9; // cc int v10; // eax char *v11; // edx unsigned int v12; // eax char *v13; // esi char *result; // eax _BYTE *v15; // [esp+10h] [ebp-28h] _BYTE *Src; // [esp+18h] [ebp-20h] int v18; // [esp+1Ch] [ebp-1Ch] v15 = this[1]; Src = *this; v3 = (v15 - (_BYTE *)*this) >> 2; if ( v3 == 0x1FFFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = (v15 - (_BYTE *)*this) >> 2; v5 = __CFADD__(v4, v3); v6 = v4 + v3; v18 = v6; v7 = a2 - Src; if ( v5 ) { v18 = 0x1FFFFFFF; } else { v8 = 0; if ( !v6 ) goto LABEL_12; v9 = v6 <= 0x1FFFFFFF; v10 = 0x1FFFFFFF; if ( v9 ) v10 = v18; v18 = v10; } v8 = (char *)operator new(4 * v18); LABEL_12: *(_DWORD *)&v8[v7] = *a3; if ( v7 > 0 ) memmove(v8, Src, v7); v11 = &v8[v7 + 4]; v12 = v15 - a2; if ( v15 - a2 > 0 ) qmemcpy(v11, a2, v12); v13 = &v11[v12]; if ( Src ) operator delete(Src); *this = v8; this[1] = v13; result = &v8[4 * v18]; this[2] = result; return result; } //----- (00507204) -------------------------------------------------------- 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; } //----- (00507234) -------------------------------------------------------- char *__thiscall std::vector::emplace_back(void **this, char **a2) { char *v3; // edx _DWORD *v4; // edx char *result; // eax void *v6; // edx signed int v7; // edi char *v8; // eax char *v9; // esi char *v10; // ecx int v11; // edi char *v12; // edi size_t v13; // [esp+8h] [ebp-30h] void *v14; // [esp+10h] [ebp-28h] void *v15; // [esp+10h] [ebp-28h] _BYTE *v16; // [esp+14h] [ebp-24h] char *v17; // [esp+14h] [ebp-24h] void *Src; // [esp+18h] [ebp-20h] unsigned int v19; // [esp+1Ch] [ebp-1Ch] v3 = (char *)this[1]; if ( v3 == this[2] ) { v14 = this[1]; v19 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); v6 = v14; Src = *this; v7 = (_BYTE *)v14 - (_BYTE *)*this; v16 = this[1]; if ( v19 ) { if ( v19 > 0x1FFFFFFF ) std::__throw_bad_alloc(); v8 = (char *)operator new(4 * v19); v6 = v14; v9 = v8; } else { v9 = 0; } *(_DWORD *)&v9[v7] = *a2; if ( v7 > 0 ) { v15 = v6; memmove(v9, Src, v7); v6 = v15; } v10 = &v9[v7 + 4]; v11 = v16 - (_BYTE *)v6; if ( v16 - (_BYTE *)v6 > 0 ) { v13 = v16 - (_BYTE *)v6; v17 = v10; memmove(v10, v6, v13); v10 = v17; } v12 = &v10[v11]; if ( Src ) operator delete(Src); *this = v9; this[1] = v12; result = &v9[4 * v19]; this[2] = result; } else { v4 = v3 + 4; result = *a2; *(v4 - 1) = *a2; this[1] = v4; } return result; } //----- (0050732C) -------------------------------------------------------- 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; } //----- (00507364) -------------------------------------------------------- char *__thiscall std::vector::push_back(void **this, char **a2) { char *v3; // edx _DWORD *v4; // edx char *result; // eax void *v6; // edx signed int v7; // edi char *v8; // eax char *v9; // esi char *v10; // ecx int v11; // edi char *v12; // edi size_t v13; // [esp+8h] [ebp-30h] void *v14; // [esp+10h] [ebp-28h] void *v15; // [esp+10h] [ebp-28h] _BYTE *v16; // [esp+14h] [ebp-24h] char *v17; // [esp+14h] [ebp-24h] void *Src; // [esp+18h] [ebp-20h] unsigned int v19; // [esp+1Ch] [ebp-1Ch] v3 = (char *)this[1]; if ( v3 == this[2] ) { v14 = this[1]; v19 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); v6 = v14; Src = *this; v7 = (_BYTE *)v14 - (_BYTE *)*this; v16 = this[1]; if ( v19 ) { if ( v19 > 0x1FFFFFFF ) std::__throw_bad_alloc(); v8 = (char *)operator new(4 * v19); v6 = v14; v9 = v8; } else { v9 = 0; } *(_DWORD *)&v9[v7] = *a2; if ( v7 > 0 ) { v15 = v6; memmove(v9, Src, v7); v6 = v15; } v10 = &v9[v7 + 4]; v11 = v16 - (_BYTE *)v6; if ( v16 - (_BYTE *)v6 > 0 ) { v13 = v16 - (_BYTE *)v6; v17 = v10; memmove(v10, v6, v13); v10 = v17; } v12 = &v10[v11]; if ( Src ) operator delete(Src); *this = v9; this[1] = v12; result = &v9[4 * v19]; this[2] = result; } else { v4 = v3 + 4; result = *a2; *(v4 - 1) = *a2; this[1] = v4; } return result; } //----- (0050745C) -------------------------------------------------------- char *__thiscall std::vector>>::_M_realloc_insert> const&>( void **this, _BYTE *a2, _DWORD *a3) { int v3; // eax int v4; // edx bool v5; // cf unsigned int v6; // eax signed int v7; // edi char *v8; // ebx bool v9; // cc int v10; // eax char *v11; // edx unsigned int v12; // eax char *v13; // esi char *result; // eax _BYTE *v15; // [esp+10h] [ebp-28h] _BYTE *Src; // [esp+18h] [ebp-20h] int v18; // [esp+1Ch] [ebp-1Ch] v15 = this[1]; Src = *this; v3 = (v15 - (_BYTE *)*this) >> 2; if ( v3 == 0x1FFFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = (v15 - (_BYTE *)*this) >> 2; v5 = __CFADD__(v4, v3); v6 = v4 + v3; v18 = v6; v7 = a2 - Src; if ( v5 ) { v18 = 0x1FFFFFFF; } else { v8 = 0; if ( !v6 ) goto LABEL_12; v9 = v6 <= 0x1FFFFFFF; v10 = 0x1FFFFFFF; if ( v9 ) v10 = v18; v18 = v10; } v8 = (char *)operator new(4 * v18); LABEL_12: *(_DWORD *)&v8[v7] = *a3; if ( v7 > 0 ) memmove(v8, Src, v7); v11 = &v8[v7 + 4]; v12 = v15 - a2; if ( v15 - a2 > 0 ) qmemcpy(v11, a2, v12); v13 = &v11[v12]; if ( Src ) operator delete(Src); *this = v8; this[1] = v13; result = &v8[4 * v18]; this[2] = result; return result; } //----- (00507544) -------------------------------------------------------- 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; } //----- (0050757C) -------------------------------------------------------- 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; } //----- (005075AC) -------------------------------------------------------- char **__thiscall std::vector>::_M_realloc_insert>( char **this, char *a2, _DWORD *a3) { int v3; // ebx int v4; // eax bool v5; // cf unsigned int v6; // ebx char *v7; // esi int v8; // edx _DWORD *v9; // edi void **v10; // esi void **v11; // ecx int v12; // edx _DWORD *v13; // ecx void **v14; // ecx int v15; // edx char **result; // eax void **v17; // [esp+10h] [ebp-28h] char *Block; // [esp+18h] [ebp-20h] char *v20; // [esp+1Ch] [ebp-1Ch] v17 = (void **)this[1]; Block = *this; v3 = ((char *)v17 - *this) >> 5; if ( v3 == 0x3FFFFFF ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = ((char *)v17 - *this) >> 5; v5 = __CFADD__(v4, v3); v6 = v4 + v3; if ( v5 ) { v6 = 0x3FFFFFF; LABEL_11: v20 = (char *)operator new(32 * v6); goto LABEL_12; } v20 = 0; if ( v6 ) { if ( v6 > 0x3FFFFFF ) v6 = 0x3FFFFFF; goto LABEL_11; } LABEL_12: v7 = &v20[a2 - Block]; std::string::basic_string(v7, a3); v8 = a3[7]; v9 = v20; *((_DWORD *)v7 + 6) = a3[6]; *((_DWORD *)v7 + 7) = v8; v10 = (void **)Block; while ( 1 ) { v9 += 8; if ( a2 == (char *)v10 ) break; std::string::basic_string(v9 - 8, v10); v11 = v10; v10 += 8; v12 = (int)*(v10 - 1); *(v9 - 2) = *(v10 - 2); *(v9 - 1) = v12; std::string::_M_dispose(v11); } while ( v10 != v17 ) { v13 = v9; v9 += 8; std::string::basic_string(v13, v10); v14 = v10; v10 += 8; v15 = (int)*(v10 - 1); *(v9 - 2) = *(v10 - 2); *(v9 - 1) = v15; std::string::_M_dispose(v14); } if ( Block ) operator delete(Block); result = this; *this = v20; this[1] = (char *)v9; this[2] = &v20[32 * v6]; return result; } //----- (005076D4) -------------------------------------------------------- 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); } //----- (0050770C) -------------------------------------------------------- _DWORD *__thiscall std::vector>::emplace_back>( _DWORD *this, _DWORD *a2) { char *v3; // ecx _DWORD *result; // eax v3 = (char *)this[1]; if ( v3 == (char *)this[2] ) return std::vector>::_M_realloc_insert>( this, v3, a2); result = std::pair::pair(v3, a2); this[1] += 136; return result; } //----- (0050774C) -------------------------------------------------------- _DWORD *__thiscall std::vector>::_M_realloc_insert>( _DWORD *this, char *a2, _DWORD *a3) { int v3; // eax int v4; // ebx bool v6; // cf unsigned int v7; // ebx void **v8; // edi _DWORD *i; // ecx void **v10; // ecx void **v11; // ecx _DWORD *result; // eax char *v13; // [esp+10h] [ebp-28h] _DWORD *v14; // [esp+14h] [ebp-24h] char *Block; // [esp+18h] [ebp-20h] _DWORD *v16; // [esp+1Ch] [ebp-1Ch] v13 = (char *)this[1]; Block = (char *)*this; v3 = -252645135 * ((int)&v13[-*this] >> 3); if ( v3 == 15790320 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = -252645135 * ((v13 - Block) >> 3); v6 = __CFADD__(v3, v4); v7 = v3 + v4; if ( v6 ) { v7 = 15790320; LABEL_11: v16 = operator new(136 * v7); goto LABEL_12; } v16 = 0; if ( v7 ) { if ( v7 > 0xF0F0F0 ) v7 = 15790320; goto LABEL_11; } LABEL_12: std::pair::pair((_DWORD *)((char *)v16 + a2 - Block), a3); v8 = (void **)Block; for ( i = v16; ; i = v14 ) { v14 = i + 34; if ( a2 == (char *)v8 ) break; std::pair::pair(i, v8); v10 = v8; v8 += 34; std::pair::~pair(v10); } while ( v8 != (void **)v13 ) { std::pair::pair(v14, v8); v11 = v8; v8 += 34; std::pair::~pair(v11); v14 += 34; } if ( Block ) operator delete(Block); this[2] = &v16[34 * v7]; *this = v16; result = v14; this[1] = v14; return result; } //----- (0050786C) -------------------------------------------------------- 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); } //----- (005078A8) -------------------------------------------------------- char **__thiscall std::vector>::emplace_back>( int this, _DWORD *a2) { int v3; // esi char **result; // eax v3 = *(_DWORD *)(this + 4); if ( v3 == *(_DWORD *)(this + 8) ) return std::vector>::_M_realloc_insert>( (char **)this, (char *)v3, a2); std::string::basic_string((_DWORD *)v3, a2); result = (char **)a2[6]; *(_DWORD *)(v3 + 24) = result; *(_DWORD *)(this + 4) += 28; return result; } //----- (005078F0) -------------------------------------------------------- char **__thiscall std::vector>::_M_realloc_insert>( char **this, char *a2, _DWORD *a3) { int v3; // ebx int v4; // eax bool v5; // cf unsigned int v6; // ebx char *v7; // esi _DWORD *v8; // edi void **v9; // esi void **v10; // ecx _DWORD *v11; // ecx void **v12; // ecx char **result; // eax void **v14; // [esp+10h] [ebp-28h] char *Block; // [esp+18h] [ebp-20h] char *v17; // [esp+1Ch] [ebp-1Ch] v14 = (void **)this[1]; Block = *this; v3 = -1227133513 * (((char *)v14 - *this) >> 2); if ( v3 == 76695844 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = -1227133513 * (((char *)v14 - *this) >> 2); v5 = __CFADD__(v4, v3); v6 = v4 - 1227133513 * (((char *)v14 - *this) >> 2); if ( v5 ) { v6 = 76695844; LABEL_11: v17 = (char *)operator new(28 * v6); goto LABEL_12; } v17 = 0; if ( v6 ) { if ( v6 > 0x4924924 ) v6 = 76695844; goto LABEL_11; } LABEL_12: v7 = &v17[a2 - Block]; std::string::basic_string(v7, a3); v8 = v17; *((_DWORD *)v7 + 6) = a3[6]; v9 = (void **)Block; while ( 1 ) { v8 += 7; if ( a2 == (char *)v9 ) break; std::string::basic_string(v8 - 7, v9); v10 = v9; v9 += 7; *(v8 - 1) = *(v9 - 1); std::string::_M_dispose(v10); } while ( v9 != v14 ) { v11 = v8; v8 += 7; std::string::basic_string(v11, v9); v12 = v9; v9 += 7; *(v8 - 1) = *(v9 - 1); std::string::_M_dispose(v12); } if ( Block ) operator delete(Block); result = this; *this = v17; this[1] = (char *)v8; this[2] = &v17[28 * v6]; return result; } //----- (00507A0C) -------------------------------------------------------- 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); } //----- (00507A44) -------------------------------------------------------- char *__thiscall std::vector>::_M_realloc_insert>( _DWORD *this, char *a2, _DWORD *a3) { int v3; // ebx int v4; // eax bool v6; // cf unsigned int v7; // ebx char *v8; // eax char *v9; // esi char *result; // eax void **v11; // edx void **v12; // edx char *v13; // [esp+1Ch] [ebp-2Ch] char *v14; // [esp+1Ch] [ebp-2Ch] int v15; // [esp+20h] [ebp-28h] void **v16; // [esp+20h] [ebp-28h] void **v17; // [esp+20h] [ebp-28h] char *v18; // [esp+24h] [ebp-24h] char *v19; // [esp+24h] [ebp-24h] char *Block; // [esp+28h] [ebp-20h] char *v21; // [esp+2Ch] [ebp-1Ch] v18 = (char *)this[1]; Block = (char *)*this; v3 = -1227133513 * ((int)&v18[-*this] >> 2); if ( v3 == 76695844 ) std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); v4 = 1; if ( v3 ) v4 = -1227133513 * ((int)&v18[-*this] >> 2); v6 = __CFADD__(v4, v3); v7 = v4 - 1227133513 * ((int)&v18[-*this] >> 2); v15 = a2 - Block; if ( v6 ) { v7 = 76695844; LABEL_11: v21 = (char *)operator new(28 * v7); goto LABEL_12; } v21 = 0; if ( v7 ) { if ( v7 > 0x4924924 ) v7 = 76695844; goto LABEL_11; } LABEL_12: *(_DWORD *)&v21[v15] = *a3; std::string::basic_string(&v21[v15 + 4], a3 + 1); v8 = v21; v9 = Block; while ( 1 ) { result = v8 + 28; if ( a2 == v9 ) break; v13 = result; *((_DWORD *)result - 7) = *(_DWORD *)v9; v11 = (void **)(v9 + 4); v9 += 28; v16 = v11; std::string::basic_string((_DWORD *)result - 6, v11); std::string::_M_dispose(v16); v8 = v13; } while ( v9 != v18 ) { v14 = result; *(_DWORD *)result = *(_DWORD *)v9; v12 = (void **)(v9 + 4); v9 += 28; v17 = v12; std::string::basic_string((_DWORD *)result + 1, v12); std::string::_M_dispose(v17); result = v14 + 28; } if ( Block ) { v19 = result; operator delete(Block); result = v19; } this[1] = result; *this = v21; this[2] = &v21[28 * v7]; return result; } //----- (00507B84) -------------------------------------------------------- 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); } //----- (00507BC0) -------------------------------------------------------- int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) { _DWORD *v4; // eax char *v5; // esi _DWORD *v6; // eax int result; // eax v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new(0x44u); *v4 = &off_5606D4; 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_556C08; v6[3] = 0; v6[5] = &unk_556C08; v6[6] = 0; v6[7] = &unk_556C08; v6[8] = 0; v6[9] = &unk_556C08; 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; } // 53F588: using guessed type char *std::money_base::_S_atoms; // 55AF40: using guessed type int std::money_base::_S_default_pattern; // 5606D4: using guessed type int (*off_5606D4)(); //----- (00507CE0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55F820; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00507D80) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55F820; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00507E20) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55F820; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00507EC0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55F820; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00507F60) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55F820; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508000) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55F820; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (005080A0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { int v1; // ecx struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v1 = a1[2]; *a1 = &off_55F820; if ( v1 ) (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(a1); } // 508100: variable 'lpfctx' is possibly undefined // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508170) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { int v1; // ecx struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v1 = a1[2]; *a1 = &off_55F820; if ( v1 ) (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 5081D0: variable 'lpfctx' is possibly undefined // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508220) -------------------------------------------------------- int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) { _DWORD *v4; // eax char *v5; // esi _DWORD *v6; // eax int result; // eax v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new(0x44u); *v4 = &off_5606E4; 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_556C08; v6[3] = 0; v6[5] = &unk_556C08; v6[6] = 0; v6[7] = &unk_556C08; v6[8] = 0; v6[9] = &unk_556C08; 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; } // 53F588: using guessed type char *std::money_base::_S_atoms; // 55AF40: using guessed type int std::money_base::_S_default_pattern; // 5606E4: using guessed type int (*off_5606E4)(); //----- (00508340) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55F854; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (005083E0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55F854; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508480) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55F854; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508520) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55F854; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (005085C0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55F854; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508660) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55F854; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508700) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { int v1; // ecx struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v1 = a1[2]; *a1 = &off_55F854; if ( v1 ) (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(a1); } // 508760: variable 'lpfctx' is possibly undefined // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (005087D0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { int v1; // ecx struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v1 = a1[2]; *a1 = &off_55F854; if ( v1 ) (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 508830: variable 'lpfctx' is possibly undefined // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508880) -------------------------------------------------------- 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 v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new(0x54u); v4[1] = 0; *v4 = &off_5606F4; 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_556C08; v5 = std::money_base::_S_atoms; v4[13] = std::money_base::_S_default_pattern; v4[3] = 0; v4[6] = &unk_556C0A; v4[7] = 0; v4[8] = &unk_556C0A; v4[9] = 0; v4[10] = &unk_556C0A; 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; } // 53F588: using guessed type char *std::money_base::_S_atoms; // 55AF40: using guessed type int std::money_base::_S_default_pattern; // 5606F4: using guessed type int (*off_5606F4)(); //----- (005089A0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55F888; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508A40) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55F888; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508AE0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55F888; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508B80) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55F888; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508C20) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55F888; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508CC0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55F888; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508D60) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { int v1; // ecx struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v1 = a1[2]; *a1 = &off_55F888; if ( v1 ) (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(a1); } // 508DC0: variable 'lpfctx' is possibly undefined // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508E30) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { int v1; // ecx struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v1 = a1[2]; *a1 = &off_55F888; if ( v1 ) (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 508E90: variable 'lpfctx' is possibly undefined // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00508EE0) -------------------------------------------------------- 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 v4 = (_DWORD *)this[2]; if ( !v4 ) { v4 = operator new(0x54u); v4[1] = 0; *v4 = &off_560704; 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_556C08; v5 = std::money_base::_S_atoms; v4[13] = std::money_base::_S_default_pattern; v4[3] = 0; v4[6] = &unk_556C0A; v4[7] = 0; v4[8] = &unk_556C0A; v4[9] = 0; v4[10] = &unk_556C0A; 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; } // 53F588: using guessed type char *std::money_base::_S_atoms; // 55AF40: using guessed type int std::money_base::_S_default_pattern; // 560704: using guessed type int (*off_560704)(); //----- (00509000) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55F8BC; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (005090A0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55F8BC; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00509140) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55F8BC; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (005091E0) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55F8BC; this[2] = a2; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00509280) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) { *this = &off_55F8BC; this[2] = 0; this[1] = a4 != 0; std::moneypunct::_M_initialize_moneypunct(this, a2, a3); } // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00509320) -------------------------------------------------------- void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55F8BC; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); } // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (005093C0) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { int v1; // ecx struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v1 = a1[2]; *a1 = &off_55F8BC; if ( v1 ) (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(a1); } // 509420: variable 'lpfctx' is possibly undefined // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00509490) -------------------------------------------------------- void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) { int v1; // ecx struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v1 = a1[2]; *a1 = &off_55F8BC; if ( v1 ) (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 5094F0: variable 'lpfctx' is possibly undefined // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00509540) -------------------------------------------------------- void __thiscall std::string::_M_destroy(void **this, int a2) { operator delete(*this); } //----- (00509560) -------------------------------------------------------- void __fastcall std::string::_M_dispose(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (00509590) -------------------------------------------------------- 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] _BYTE *v18; // [esp+20h] [ebp-2Ch] bool v19; // [esp+27h] [ebp-25h] 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; } v18 = (_BYTE *)(a2 + v17); v19 = v5 != a3 + a2; Size = v5 - (a3 + a2); v9 = v19 && a3 != a5; if ( v17 <= (unsigned int)Src && (unsigned int)Src <= v17 + v5 ) { if ( a5 && a3 >= a5 ) { if ( a5 != 1 ) { memmove(v18, Src, a5); if ( !v19 || a3 == a5 ) goto LABEL_12; LABEL_18: if ( Size == 1 ) v18[a5] = v18[a3]; else memmove(&v18[a5], &v18[a3], Size); LABEL_20: if ( a3 >= a5 ) goto LABEL_12; v12 = (unsigned int)&v18[a3]; if ( &v18[a3] < &Src[a5] ) { if ( v12 > (unsigned int)Src ) { v13 = v12 - (_DWORD)Src; v14 = v13; if ( v13 == 1 ) { *v18 = *Src; } else if ( v13 ) { memmove(v18, Src, v13); } v15 = a5 - v14; v16 = &v18[a5]; if ( a5 - v14 == 1 ) { v18[v14] = *v16; } else if ( v15 ) { memcpy(&v18[v14], v16, v15); } } else if ( a5 == 1 ) { *v18 = Src[v21]; } else if ( a5 ) { memcpy(v18, &Src[v21], a5); } goto LABEL_12; } if ( a5 != 1 ) { if ( a5 ) memmove(v18, Src, a5); goto LABEL_12; } LABEL_27: *v18 = *Src; goto LABEL_12; } *v18 = *Src; } if ( !v9 ) goto LABEL_20; goto LABEL_18; } if ( v9 ) { if ( Size == 1 ) v18[a5] = v18[a3]; else memmove(&v18[a5], &v18[a3], Size); } if ( a5 ) { if ( a5 != 1 ) { memcpy(v18, Src, a5); goto LABEL_12; } goto LABEL_27; } LABEL_12: v10 = *this; this[1] = v7; *(_BYTE *)(v10 + v7) = 0; return this; } //----- (005098A0) -------------------------------------------------------- int __cdecl std::string::_S_compare(int a1, int a2) { return a1 - a2; } //----- (005098B0) -------------------------------------------------------- int __thiscall std::string::_M_capacity(_DWORD *this, int a2) { int result; // eax result = a2; this[2] = a2; return result; } //----- (005098C0) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (005098D0) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (005098E0) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (005098F0) -------------------------------------------------------- int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (00509900) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct(_DWORD *this, size_t Size, char a3) { _BYTE *result; // eax int Val; // edi if ( Size > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); this[2] = Size; *this = result; Val = a3; goto LABEL_6; } result = (_BYTE *)*this; if ( !Size ) { this[1] = 0; *result = 0; return result; } if ( Size != 1 ) { Val = a3; LABEL_6: memset(result, Val, Size); result = (_BYTE *)*this; this[1] = Size; result[Size] = 0; return result; } *result = a3; result = (_BYTE *)*this; this[1] = 1; result[1] = 0; return result; } //----- (005099A0) -------------------------------------------------------- _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 Size = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); this[2] = Size; *this = result; } else { result = (_BYTE *)*this; if ( Size == 1 ) { *result = *Src; result = (_BYTE *)*this; this[1] = 1; result[1] = 0; return result; } if ( !Size ) { this[1] = 0; *result = 0; return result; } } memcpy(result, Src, Size); result = (_BYTE *)*this; this[1] = Size; result[Size] = 0; return result; } //----- (00509A40) -------------------------------------------------------- _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 Size = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); this[2] = Size; *this = result; } else { result = (_BYTE *)*this; if ( Size == 1 ) { *result = *Src; result = (_BYTE *)*this; this[1] = 1; result[1] = 0; return result; } if ( !Size ) { this[1] = 0; *result = 0; return result; } } memcpy(result, Src, Size); result = (_BYTE *)*this; this[1] = Size; result[Size] = 0; return result; } //----- (00509AE0) -------------------------------------------------------- unsigned int __thiscall std::string::_M_construct(void **this, unsigned __int8 *Src, size_t Size) { unsigned int result; // eax _BYTE *v5; // edx unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF if ( !Src && Size ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v6[0] = Size - (_DWORD)Src; if ( Size - (unsigned int)Src > 0xF ) { *this = std::string::_M_create(v6, 0); this[2] = (void *)v6[0]; } std::string::_S_copy_chars(*this, Src, Size); result = v6[0]; v5 = *this; this[1] = (void *)v6[0]; v5[result] = 0; return result; } // 509AE0: using guessed type unsigned int var_1C[7]; //----- (00509B60) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4) { size_t Size; // ebx _BYTE *result; // eax if ( a3 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); Size = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); this[2] = Size; *this = result; } else { result = (_BYTE *)*this; if ( Size == 1 ) { *result = *Src; result = (_BYTE *)*this; this[1] = 1; result[1] = 0; return result; } if ( !Size ) { this[1] = 0; *result = 0; return result; } } memcpy(result, Src, Size); result = (_BYTE *)*this; this[1] = Size; result[Size] = 0; return result; } //----- (00509C10) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3) { size_t Size; // ebx _BYTE *result; // eax unsigned int v6; // ebx unsigned int v7; // ebx unsigned int v8[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; v8[0] = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { result = std::string::_M_create(v8, 0); *this = result; this[2] = v8[0]; } else { result = (_BYTE *)*this; if ( Size == 1 ) { *result = *Src; v6 = v8[0]; result = (_BYTE *)*this; this[1] = v8[0]; result[v6] = 0; return result; } if ( !Size ) { this[1] = 0; *result = 0; return result; } } memcpy(result, Src, Size); v7 = v8[0]; result = (_BYTE *)*this; this[1] = v8[0]; result[v7] = 0; return result; } // 509C10: using guessed type unsigned int var_10[4]; //----- (00509CD0) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3) { size_t Size; // ebx _BYTE *result; // eax unsigned int v6; // ebx unsigned int v7; // ebx unsigned int v8[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; v8[0] = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { result = std::string::_M_create(v8, 0); *this = result; this[2] = v8[0]; } else { result = (_BYTE *)*this; if ( Size == 1 ) { *result = *Src; v6 = v8[0]; result = (_BYTE *)*this; this[1] = v8[0]; result[v6] = 0; return result; } if ( !Size ) { this[1] = 0; *result = 0; return result; } } memcpy(result, Src, Size); v7 = v8[0]; result = (_BYTE *)*this; this[1] = v8[0]; result[v7] = 0; return result; } // 509CD0: using guessed type unsigned int var_10[4]; //----- (00509D90) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3) { size_t Size; // ebx _BYTE *result; // eax unsigned int v6; // ebx unsigned int v7; // ebx unsigned int v8[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; v8[0] = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { result = std::string::_M_create(v8, 0); *this = result; this[2] = v8[0]; } else { result = (_BYTE *)*this; if ( Size == 1 ) { *result = *Src; v6 = v8[0]; result = (_BYTE *)*this; this[1] = v8[0]; result[v6] = 0; return result; } if ( !Size ) { this[1] = 0; *result = 0; return result; } } memcpy(result, Src, Size); v7 = v8[0]; result = (_BYTE *)*this; this[1] = v8[0]; result[v7] = 0; return result; } // 509D90: using guessed type unsigned int var_10[4]; //----- (00509E50) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3) { size_t Size; // ebx _BYTE *result; // eax unsigned int v6; // ebx unsigned int v7; // ebx unsigned int v8[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; v8[0] = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { result = std::string::_M_create(v8, 0); *this = result; this[2] = v8[0]; } else { result = (_BYTE *)*this; if ( Size == 1 ) { *result = *Src; v6 = v8[0]; result = (_BYTE *)*this; this[1] = v8[0]; result[v6] = 0; return result; } if ( !Size ) { this[1] = 0; *result = 0; return result; } } memcpy(result, Src, Size); v7 = v8[0]; result = (_BYTE *)*this; this[1] = v8[0]; result[v7] = 0; return result; } // 509E50: using guessed type unsigned int var_10[4]; //----- (00509F10) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4) { size_t Size; // ebx _BYTE *result; // eax if ( a3 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); Size = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); this[2] = Size; *this = result; } else { result = (_BYTE *)*this; if ( Size == 1 ) { *result = *Src; result = (_BYTE *)*this; this[1] = 1; result[1] = 0; return result; } if ( !Size ) { this[1] = 0; *result = 0; return result; } } memcpy(result, Src, Size); result = (_BYTE *)*this; this[1] = Size; result[Size] = 0; return result; } //----- (00509FC0) -------------------------------------------------------- int __fastcall std::string::_M_local_data(int a1) { return a1 + 8; } //----- (00509FD0) -------------------------------------------------------- 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; } //----- (00509FE0) -------------------------------------------------------- int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) { int result; // eax result = Size - (_DWORD)Src; if ( Size - (_DWORD)Src == 1 ) { result = *Src; *a1 = result; } else if ( result ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (0050A020) -------------------------------------------------------- int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) { int result; // eax result = Size - (_DWORD)Src; if ( Size - (_DWORD)Src == 1 ) { result = *Src; *a1 = result; } else if ( result ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (0050A060) -------------------------------------------------------- int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) { int result; // eax result = Size - (_DWORD)Src; if ( Size - (_DWORD)Src == 1 ) { result = *Src; *a1 = result; } else if ( result ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (0050A0A0) -------------------------------------------------------- int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) { int result; // eax result = Size - (_DWORD)Src; if ( Size - (_DWORD)Src == 1 ) { result = *Src; *a1 = result; } else if ( result ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (0050A0E0) -------------------------------------------------------- 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); } //----- (0050A180) -------------------------------------------------------- _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; } //----- (0050A2A0) -------------------------------------------------------- int __fastcall std::string::_M_get_allocator(int a1) { return a1; } //----- (0050A2B0) -------------------------------------------------------- _BYTE *__thiscall std::string::_M_construct_aux_2(_DWORD *this, size_t Size, char a3) { _BYTE *result; // eax if ( Size > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); this[2] = Size; *this = result; LABEL_6: memset(result, a3, Size); result = (_BYTE *)*this; this[1] = Size; result[Size] = 0; return result; } result = (_BYTE *)*this; if ( !Size ) { this[1] = 0; *result = 0; return result; } if ( Size != 1 ) goto LABEL_6; *result = a3; result = (_BYTE *)*this; this[1] = 1; result[1] = 0; return result; } //----- (0050A350) -------------------------------------------------------- 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; } //----- (0050A380) -------------------------------------------------------- int __fastcall std::string::end(_DWORD *a1) { return a1[1] + *a1; } //----- (0050A390) -------------------------------------------------------- int __fastcall std::string::back(_DWORD *a1) { return *a1 + a1[1] - 1; } //----- (0050A3A0) -------------------------------------------------------- _DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (0050A3B0) -------------------------------------------------------- _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; } //----- (0050A520) -------------------------------------------------------- int __fastcall std::string::begin(int a1) { return *(_DWORD *)a1; } //----- (0050A530) -------------------------------------------------------- _BYTE *__fastcall std::string::clear(int a1) { _BYTE *result; // eax result = *(_BYTE **)a1; *(_DWORD *)(a1 + 4) = 0; *result = 0; return result; } //----- (0050A540) -------------------------------------------------------- char *__thiscall std::string::erase(int *this, char *a2) { int v3; // edx int v4; // eax char *v5; // esi size_t Size; // edi v3 = *this; v4 = this[1] - 1; v5 = &a2[-*this]; Size = v4 - (_DWORD)v5; if ( (char *)v4 != v5 ) { if ( Size == 1 ) *a2 = a2[1]; else memmove(a2, a2 + 1, Size); v3 = *this; v4 = this[1] - 1; } this[1] = v4; *(_BYTE *)(v3 + v4) = 0; return &v5[*this]; } //----- (0050A5B0) -------------------------------------------------------- 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; } //----- (0050A610) -------------------------------------------------------- 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; } //----- (0050A640) -------------------------------------------------------- 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; } //----- (0050A6A0) -------------------------------------------------------- int *__thiscall std::string::erase(int *this, unsigned int a2, unsigned int a3) { int *result; // eax unsigned int v4; // edx unsigned int v5; // edx int v6; // edx 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; this[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; } //----- (0050A720) -------------------------------------------------------- int __fastcall std::string::front(int a1) { return *(_DWORD *)a1; } //----- (0050A730) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, char *Str) { unsigned int Size; // eax size_t v4; // ebp _DWORD *v5; // edx unsigned int v6; // edi unsigned int v7; // ecx _BYTE *v8; // edx _DWORD *result; // eax Size = strlen(Str); v4 = this[1]; if ( 0x3FFFFFFF - v4 < Size ) std::__throw_length_error((std::length_error *)"basic_string::append"); v5 = (_DWORD *)*this; v6 = v4 + Size; if ( (_DWORD *)*this == this + 2 ) v7 = 15; else v7 = this[2]; if ( v6 > v7 ) { std::string::_M_mutate((int)this, v4, 0, Str, Size); v5 = (_DWORD *)*this; } else if ( Size ) { v8 = (char *)v5 + v4; if ( Size == 1 ) *v8 = *Str; else memcpy(v8, Str, Size); v5 = (_DWORD *)*this; } this[1] = v6; result = this; *((_BYTE *)v5 + v6) = 0; return result; } //----- (0050A7F0) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *Src, size_t Size) { size_t v4; // edi _DWORD *v5; // eax unsigned int v6; // esi unsigned int v7; // ecx _BYTE *v8; // eax v4 = this[1]; if ( Size > 0x3FFFFFFF - v4 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v5 = (_DWORD *)*this; v6 = Size + v4; if ( (_DWORD *)*this == this + 2 ) v7 = 15; else v7 = this[2]; if ( v6 > v7 ) { std::string::_M_mutate((int)this, v4, 0, Src, Size); v5 = (_DWORD *)*this; } else if ( Size ) { v8 = (char *)v5 + v4; if ( Size == 1 ) *v8 = *Src; else memcpy(v8, Src, Size); v5 = (_DWORD *)*this; } this[1] = v6; *((_BYTE *)v5 + v6) = 0; return this; } //----- (0050A8B0) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, int a2) { _DWORD *v3; // edi size_t v4; // ecx size_t v5; // edx _BYTE *Src; // ebp _DWORD *v7; // eax unsigned int v8; // esi unsigned int v9; // edi _BYTE *v10; // eax v3 = this + 2; v4 = this[1]; v5 = *(_DWORD *)(a2 + 4); Src = *(_BYTE **)a2; v7 = (_DWORD *)*this; v8 = v5 + v4; if ( (_DWORD *)*this == v3 ) v9 = 15; else v9 = this[2]; if ( v8 > v9 ) { std::string::_M_mutate((int)this, v4, 0, Src, v5); v7 = (_DWORD *)*this; } else if ( v5 ) { v10 = (char *)v7 + v4; if ( v5 == 1 ) *v10 = *Src; else memcpy(v10, Src, *(_DWORD *)(a2 + 4)); v7 = (_DWORD *)*this; } this[1] = v8; *((_BYTE *)v7 + v8) = 0; return this; } //----- (0050A950) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4) { size_t Size; // eax _BYTE *Src; // edi int v7; // ecx _DWORD *v8; // edx unsigned int v9; // esi unsigned int v10; // ebp _BYTE *v11; // edx _DWORD *result; // eax Size = a4; if ( a2[1] - a3 <= a4 ) Size = a2[1] - a3; 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]); Src = (_BYTE *)(*a2 + a3); v7 = this[1]; v8 = (_DWORD *)*this; v9 = Size + v7; if ( (_DWORD *)*this == this + 2 ) v10 = 15; else v10 = this[2]; if ( v9 > v10 ) { std::string::_M_mutate((int)this, this[1], 0, Src, Size); v8 = (_DWORD *)*this; } else if ( Size ) { v11 = (char *)v8 + v7; if ( Size == 1 ) *v11 = *Src; else memcpy(v11, Src, Size); v8 = (_DWORD *)*this; } this[1] = v9; result = this; *((_BYTE *)v8 + v9) = 0; return result; } //----- (0050AA30) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *Src, size_t Size) { size_t v4; // edi _DWORD *v5; // eax unsigned int v6; // esi unsigned int v7; // ecx _BYTE *v8; // eax v4 = this[1]; if ( Size > 0x3FFFFFFF - v4 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v5 = (_DWORD *)*this; v6 = Size + v4; if ( (_DWORD *)*this == this + 2 ) v7 = 15; else v7 = this[2]; if ( v6 > v7 ) { std::string::_M_mutate((int)this, v4, 0, Src, Size); v5 = (_DWORD *)*this; } else if ( Size ) { v8 = (char *)v5 + v4; if ( Size == 1 ) *v8 = *Src; else memcpy(v8, Src, Size); v5 = (_DWORD *)*this; } this[1] = v6; *((_BYTE *)v5 + v6) = 0; return this; } //----- (0050AAF0) -------------------------------------------------------- _DWORD *__thiscall std::string::append(_DWORD *this, size_t a2, char a3) { return std::string::_M_replace_aux(this, this[1], 0, a2, a3); } //----- (0050AB20) -------------------------------------------------------- _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; } //----- (0050ABD0) -------------------------------------------------------- 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); } //----- (0050AC10) -------------------------------------------------------- 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); } //----- (0050AC40) -------------------------------------------------------- void *__thiscall std::string::assign(void *this, int a2) { std::string::_M_assign((int)this, a2); return this; } //----- (0050AC60) -------------------------------------------------------- unsigned int *__thiscall std::string::assign(unsigned int *this, _DWORD *a2, unsigned int a3, size_t a4) { size_t v4; // eax 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); } //----- (0050ACD0) -------------------------------------------------------- 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); } //----- (0050AD00) -------------------------------------------------------- _DWORD *__thiscall std::string::assign(_DWORD *this, size_t a2, char a3) { return std::string::_M_replace_aux(this, 0, this[1], a2, a3); } //----- (0050AD30) -------------------------------------------------------- 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; } //----- (0050ADA0) -------------------------------------------------------- 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; } //----- (0050ADE0) -------------------------------------------------------- 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; } //----- (0050AE20) -------------------------------------------------------- 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); } //----- (0050AE80) -------------------------------------------------------- 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; } //----- (0050AEC0) -------------------------------------------------------- _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); } //----- (0050AF00) -------------------------------------------------------- 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); } //----- (0050AF70) -------------------------------------------------------- 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); } //----- (0050AFD0) -------------------------------------------------------- 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)); } //----- (0050B030) -------------------------------------------------------- unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, _DWORD *a3, char *a4, size_t a5) { size_t v5; // eax v5 = a5; if ( a3[1] - (int)a4 <= a5 ) v5 = a3[1] - (_DWORD)a4; 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); } //----- (0050B0C0) -------------------------------------------------------- _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); } //----- (0050B120) -------------------------------------------------------- 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); } //----- (0050B180) -------------------------------------------------------- _DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + a2[1]; return result; } //----- (0050B190) -------------------------------------------------------- _DWORD *__thiscall std::string::resize(int *this, _DWORD *a2) { size_t v2; // edx _DWORD *result; // eax int v4; // edx v2 = this[1]; result = a2; if ( (unsigned int)a2 > v2 ) return std::string::_M_replace_aux(this, v2, 0, (size_t)a2 - v2, 0); if ( (unsigned int)a2 < v2 ) { v4 = *this; this[1] = (int)a2; *((_BYTE *)a2 + v4) = 0; } return result; } //----- (0050B1E0) -------------------------------------------------------- _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; } //----- (0050B230) -------------------------------------------------------- int __thiscall std::string::_M_data(_DWORD *this, int a2) { int result; // eax result = a2; *this = a2; return result; } //----- (0050B240) -------------------------------------------------------- int __cdecl std::string::_S_copy(_BYTE *a1, unsigned __int8 *Src, int Size) { int result; // eax result = Size; if ( Size == 1 ) { result = *Src; *a1 = result; } else if ( Size ) { return (int)memcpy(a1, Src, Size); } return result; } //----- (0050B280) -------------------------------------------------------- int __cdecl std::string::_S_move(_BYTE *a1, unsigned __int8 *Src, int Size) { int result; // eax result = Size; if ( Size == 1 ) { result = *Src; *a1 = result; } else if ( Size ) { return (int)memmove(a1, Src, Size); } return result; } //----- (0050B2C0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // eax size_t v6; // edx v5 = a3 - a2; v6 = a2 - *this; if ( a3 - a2 > this[1] - v6 ) v5 = 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::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); } //----- (0050B330) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // eax size_t v6; // edx v5 = a3 - a2; v6 = a2 - *this; if ( a3 - a2 > this[1] - v6 ) v5 = 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::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); } //----- (0050B3A0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4) { size_t v4; // edx size_t v5; // eax v4 = a2 - *this; v5 = a3 - a2; if ( a3 - a2 > 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::string::_M_replace(this, v4, v5, *(char **)a4, *(_DWORD *)(a4 + 4)); } //----- (0050B410) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str) { size_t v5; // eax size_t v6; // edx size_t v7; // ecx size_t v8; // eax v5 = strlen(Str); v6 = a2 - *this; v7 = v5; v8 = a3 - a2; if ( a3 - a2 > this[1] - v6 ) v8 = 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::string::_M_replace(this, v6, v8, Str, v7); } //----- (0050B490) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // eax size_t v6; // edx v5 = a3 - a2; v6 = a2 - *this; if ( a3 - a2 > this[1] - v6 ) v5 = 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::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); } //----- (0050B500) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // eax size_t v6; // edx v5 = a3 - a2; v6 = a2 - *this; if ( a3 - a2 > this[1] - v6 ) v5 = 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::string::_M_replace(this, v6, v5, a4, a5); } //----- (0050B570) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // eax size_t v6; // edx v5 = a3 - a2; v6 = a2 - *this; if ( a3 - a2 > this[1] - v6 ) v5 = 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::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); } //----- (0050B5E0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // eax size_t v6; // edx v5 = a3 - a2; v6 = a2 - *this; if ( a3 - a2 > this[1] - v6 ) v5 = 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::string::_M_replace(this, v6, v5, a4, a5); } //----- (0050B650) -------------------------------------------------------- _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); } //----- (0050B670) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // eax size_t v6; // edx v5 = a3 - a2; v6 = a2 - *this; if ( a3 - a2 > this[1] - v6 ) v5 = 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::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); } //----- (0050B6E0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str) { size_t v5; // eax size_t v6; // edx size_t v7; // ecx size_t v8; // eax v5 = strlen(Str); v6 = a2 - *this; v7 = v5; v8 = a3 - a2; if ( a3 - a2 > this[1] - v6 ) v8 = 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::string::_M_replace(this, v6, v8, Str, v7); } //----- (0050B760) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // eax size_t v6; // edx v5 = a3 - a2; v6 = a2 - *this; if ( a3 - a2 > this[1] - v6 ) v5 = 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::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); } //----- (0050B7D0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // eax size_t v6; // edx v5 = a3 - a2; v6 = a2 - *this; if ( a3 - a2 > this[1] - v6 ) v5 = 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::string::_M_replace(this, v6, v5, a4, a5); } //----- (0050B840) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4) { size_t v4; // edx size_t v5; // eax v4 = a2 - *this; v5 = a3 - a2; if ( a3 - a2 > 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::string::_M_replace(this, v4, v5, *(char **)a4, *(_DWORD *)(a4 + 4)); } //----- (0050B8B0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // eax size_t v6; // edx v5 = a3 - a2; v6 = a2 - *this; if ( a3 - a2 > this[1] - v6 ) v5 = 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::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); } //----- (0050B920) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) { size_t v5; // eax size_t v6; // edx v5 = a3 - a2; v6 = a2 - *this; if ( a3 - a2 > this[1] - v6 ) v5 = 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::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); } //----- (0050B990) -------------------------------------------------------- _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); } //----- (0050B9B0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, char *Str) { size_t v5; // edx size_t v6; // eax 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); } //----- (0050BA20) -------------------------------------------------------- unsigned int *__thiscall std::string::replace( unsigned int *this, unsigned int a2, unsigned int a3, char *a4, size_t a5) { size_t v5; // eax 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); } //----- (0050BA80) -------------------------------------------------------- unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int 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)); } //----- (0050BAF0) -------------------------------------------------------- unsigned int *__thiscall std::string::replace( unsigned int *this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, unsigned int a6) { size_t v6; // eax size_t v7; // esi v6 = a6; if ( a4[1] - a5 <= a6 ) v6 = a4[1] - a5; 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); } //----- (0050BB90) -------------------------------------------------------- _DWORD *__thiscall std::string::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, char a5) { unsigned int v5; // eax 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); } //----- (0050BBF0) -------------------------------------------------------- void __thiscall std::string::reserve(_DWORD *this, unsigned int a2) { unsigned int v3; // ecx unsigned int v4; // eax _BYTE *Block; // edi _BYTE *v6; // esi unsigned int v7; // edx unsigned int v8; // ebp _BYTE *v9; // eax _BYTE *Src; // ebp _BYTE *v11; // edi int v12; // eax unsigned int v13; // eax v3 = this[1]; v4 = a2; if ( a2 < v3 ) { a2 = v3; v4 = v3; } Block = (_BYTE *)*this; v6 = this + 2; if ( this + 2 == (_DWORD *)*this ) v7 = 15; else v7 = this[2]; if ( v7 != v4 ) { v8 = 15; if ( v7 <= 0xF ) v8 = v7; if ( v8 >= v4 ) { if ( v6 != Block ) { if ( v3 ) { if ( v3 != -1 ) memcpy(this + 2, Block, v3 + 1); } else { *((_BYTE *)this + 8) = *Block; } operator delete(Block); *this = v6; } } else { v9 = std::string::_M_create(&a2, v7); Src = (_BYTE *)*this; v11 = v9; v12 = this[1]; if ( v12 ) { if ( v12 != -1 ) memcpy(v11, Src, v12 + 1); } else { *v11 = *Src; } if ( Src != v6 ) operator delete(Src); v13 = a2; *this = v11; this[2] = v13; } } } //----- (0050BD00) -------------------------------------------------------- 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 != a3 + a2 && a3 ) { Src = (_BYTE *)(v5 + a3 + a2); v7 = (_BYTE *)(a2 + v5); if ( v4 - (a3 + a2) == 1 ) *v7 = *Src; else memmove(v7, Src, v4 - (a3 + a2)); v5 = *this; v4 = this[1]; } result = v4 - a3; this[1] = result; *(_BYTE *)(v5 + result) = 0; return result; } //----- (0050BD70) -------------------------------------------------------- int __fastcall std::string::pop_back(_DWORD *a1) { int result; // eax result = a1[1]; a1[1] = result - 1; *(_BYTE *)(*a1 + result - 1) = 0; return result; } //----- (0050BD90) -------------------------------------------------------- _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; } //----- (0050BE30) -------------------------------------------------------- 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; } } // 50BE30: using guessed type unsigned int var_20[8]; //----- (0050BEF0) -------------------------------------------------------- void *__stdcall std::string::_M_create(unsigned int *a1, unsigned int a2) { unsigned int v2; // eax unsigned int v3; // edx 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(0x40000000u); } *a1 = v3; v2 = 2 * a2; } } return operator new(v2 + 1); } //----- (0050BF60) -------------------------------------------------------- int __thiscall std::string::_M_length(_DWORD *this, int a2) { int result; // eax result = a2; this[1] = a2; return result; } //----- (0050BF70) -------------------------------------------------------- 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 *Block; // 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); Block = *(_BYTE **)this; v10 = v8; if ( Size ) { if ( Size == 1 ) { *v8 = *Block; } else { v17 = *(_BYTE **)this; memcpy(v8, *(const void **)this, Size); Block = v17; } } if ( a4 && a5 ) { if ( a5 == 1 ) { v10[Size] = *a4; } else { v18 = Block; memcpy(&v10[Size], a4, a5); Block = v18; } } if ( v14 ) { v11 = &v10[a5 + Size]; if ( v14 == 1 ) { *v11 = Block[v15]; } else { Src = &Block[v15]; v16 = Block; memcpy(v11, Src, v14); Block = v16; } } if ( v6 != Block ) operator delete(Block); result = v19[0]; *(_DWORD *)this = v10; *(_DWORD *)(this + 8) = result; return result; } // 50BF70: using guessed type size_t var_20[8]; //----- (0050C0C0) -------------------------------------------------------- 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; } //----- (0050C100) -------------------------------------------------------- _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; } //----- (0050C180) -------------------------------------------------------- _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; } //----- (0050C1E0) -------------------------------------------------------- _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; } //----- (0050C250) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, char *Str, int a3) { int v4; // eax int v6; // [esp+8h] [ebp-14h] *this = this + 2; v4 = -1; if ( Str ) v4 = (int)&Str[strlen(Str)]; LOBYTE(v6) = 0; return std::string::_M_construct(this, Str, v4, v6); } // 50C281: variable 'v6' is possibly undefined //----- (0050C2A0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) { *this = this + 2; LOBYTE(a4) = 0; return std::string::_M_construct(this, a2, (int)&a2[a3], a4); } //----- (0050C2C0) -------------------------------------------------------- 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; } //----- (0050C2E0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(char *this, int a2) { _BYTE *result; // eax char *Src; // edi size_t Size; // esi char v6; // dl result = this + 8; *(_DWORD *)this = this + 8; Src = *(char **)a2; Size = *(_DWORD *)(a2 + 4); if ( Size + *(_DWORD *)a2 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); if ( Size > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); *((_DWORD *)this + 2) = Size; *(_DWORD *)this = result; } else { if ( Size == 1 ) { v6 = *Src; *((_DWORD *)this + 1) = 1; this[8] = v6; this[9] = 0; return result; } if ( !Size ) { *((_DWORD *)this + 1) = 0; *result = 0; return result; } } memcpy(result, Src, Size); result = *(_BYTE **)this; *((_DWORD *)this + 1) = Size; result[Size] = 0; return result; } //----- (0050C390) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(char *this, int a2, int a3) { _BYTE *result; // eax size_t Size; // esi char *Src; // edi result = this + 8; *(_DWORD *)this = this + 8; Size = *(_DWORD *)(a2 + 4); Src = *(char **)a2; if ( Size > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); *((_DWORD *)this + 2) = Size; *(_DWORD *)this = result; } else { if ( Size == 1 ) { this[8] = *Src; *((_DWORD *)this + 1) = 1; this[9] = 0; return result; } if ( !Size ) { *((_DWORD *)this + 1) = 0; *result = 0; return result; } } memcpy(result, Src, Size); result = *(_BYTE **)this; *((_DWORD *)this + 1) = Size; result[Size] = 0; return result; } //----- (0050C430) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v4; // eax *this = this + 2; v4 = 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, a2[1]); LOBYTE(a4) = 0; return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), *a2 + v4, a4); } //----- (0050C480) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v4; // edi unsigned int v5; // eax unsigned int v6; // eax *this = this + 2; v4 = a4; v5 = 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, v5); v6 = v5 - a3; LOBYTE(a4) = 0; if ( v6 > v4 ) v6 = v4; return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, a4); } //----- (0050C4E0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *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, v5); v6 = v5 - a3; LOBYTE(v8) = 0; if ( v6 > a4 ) v6 = a4; return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, v8); } // 50C517: variable 'v8' is possibly undefined //----- (0050C550) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) { *this = this + 2; LOBYTE(a4) = 0; return std::string::_M_construct(this, a2, (int)&a2[a3], a4); } //----- (0050C570) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(char *this, size_t Size, char a3, int a4) { _BYTE *result; // eax result = this + 8; *(_DWORD *)this = this + 8; if ( Size > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); *((_DWORD *)this + 2) = Size; *(_DWORD *)this = result; LABEL_6: memset(result, a3, Size); result = *(_BYTE **)this; *((_DWORD *)this + 1) = Size; result[Size] = 0; return result; } if ( !Size ) { *((_DWORD *)this + 1) = 0; *result = 0; return result; } if ( Size != 1 ) goto LABEL_6; this[8] = a3; *((_DWORD *)this + 1) = 1; this[9] = 0; return result; } //----- (0050C610) -------------------------------------------------------- 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; } //----- (0050C630) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>( char *this, char *Src, int a3, int a4) { _BYTE *result; // eax size_t Size; // ebx result = this + 8; *(_DWORD *)this = this + 8; Size = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); *((_DWORD *)this + 2) = Size; *(_DWORD *)this = result; } else { if ( Size == 1 ) { this[8] = *Src; *((_DWORD *)this + 1) = 1; this[9] = 0; return result; } if ( !Size ) { *((_DWORD *)this + 1) = 0; *result = 0; return result; } } memcpy(result, Src, Size); result = *(_BYTE **)this; *((_DWORD *)this + 1) = Size; result[Size] = 0; return result; } //----- (0050C6D0) -------------------------------------------------------- _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); } //----- (0050C6E0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(char *this, char *Src, int a3, int a4) { _BYTE *result; // eax size_t Size; // ebx char v7; // dl result = this + 8; *(_DWORD *)this = this + 8; if ( !Src && a3 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); Size = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); *((_DWORD *)this + 2) = Size; *(_DWORD *)this = result; } else { if ( Size == 1 ) { v7 = *Src; *((_DWORD *)this + 1) = 1; this[8] = v7; this[9] = 0; return result; } if ( !Size ) { *((_DWORD *)this + 1) = 0; *result = 0; return result; } } memcpy(result, Src, Size); result = *(_BYTE **)this; *((_DWORD *)this + 1) = Size; result[Size] = 0; return result; } //----- (0050C790) -------------------------------------------------------- _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; } //----- (0050C7F0) -------------------------------------------------------- _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; } //----- (0050C860) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, char *Str, int a3) { int v4; // eax int v6; // [esp+8h] [ebp-14h] *this = this + 2; v4 = -1; if ( Str ) v4 = (int)&Str[strlen(Str)]; LOBYTE(v6) = 0; return std::string::_M_construct(this, Str, v4, v6); } // 50C891: variable 'v6' is possibly undefined //----- (0050C8B0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) { *this = this + 2; LOBYTE(a4) = 0; return std::string::_M_construct(this, a2, (int)&a2[a3], a4); } //----- (0050C8D0) -------------------------------------------------------- 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; } //----- (0050C8F0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(char *this, int a2) { _BYTE *result; // eax char *Src; // edi size_t Size; // esi char v6; // dl result = this + 8; *(_DWORD *)this = this + 8; Src = *(char **)a2; Size = *(_DWORD *)(a2 + 4); if ( Size + *(_DWORD *)a2 && !Src ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); if ( Size > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); *((_DWORD *)this + 2) = Size; *(_DWORD *)this = result; } else { if ( Size == 1 ) { v6 = *Src; *((_DWORD *)this + 1) = 1; this[8] = v6; this[9] = 0; return result; } if ( !Size ) { *((_DWORD *)this + 1) = 0; *result = 0; return result; } } memcpy(result, Src, Size); result = *(_BYTE **)this; *((_DWORD *)this + 1) = Size; result[Size] = 0; return result; } //----- (0050C9A0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(char *this, int a2, int a3) { _BYTE *result; // eax size_t Size; // esi char *Src; // edi result = this + 8; *(_DWORD *)this = this + 8; Size = *(_DWORD *)(a2 + 4); Src = *(char **)a2; if ( Size > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); *((_DWORD *)this + 2) = Size; *(_DWORD *)this = result; } else { if ( Size == 1 ) { this[8] = *Src; *((_DWORD *)this + 1) = 1; this[9] = 0; return result; } if ( !Size ) { *((_DWORD *)this + 1) = 0; *result = 0; return result; } } memcpy(result, Src, Size); result = *(_BYTE **)this; *((_DWORD *)this + 1) = Size; result[Size] = 0; return result; } //----- (0050CA40) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v4; // eax *this = this + 2; v4 = 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, a2[1]); LOBYTE(a4) = 0; return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), *a2 + v4, a4); } //----- (0050CA90) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v4; // edi unsigned int v5; // eax unsigned int v6; // eax *this = this + 2; v4 = a4; v5 = 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, v5); v6 = v5 - a3; LOBYTE(a4) = 0; if ( v6 > v4 ) v6 = v4; return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, a4); } //----- (0050CAF0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *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, v5); v6 = v5 - a3; LOBYTE(v8) = 0; if ( v6 > a4 ) v6 = a4; return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, v8); } // 50CB27: variable 'v8' is possibly undefined //----- (0050CB60) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) { *this = this + 2; LOBYTE(a4) = 0; return std::string::_M_construct(this, a2, (int)&a2[a3], a4); } //----- (0050CB80) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(char *this, size_t Size, char a3, int a4) { _BYTE *result; // eax result = this + 8; *(_DWORD *)this = this + 8; if ( Size > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); *((_DWORD *)this + 2) = Size; *(_DWORD *)this = result; LABEL_6: memset(result, a3, Size); result = *(_BYTE **)this; *((_DWORD *)this + 1) = Size; result[Size] = 0; return result; } if ( !Size ) { *((_DWORD *)this + 1) = 0; *result = 0; return result; } if ( Size != 1 ) goto LABEL_6; this[8] = a3; *((_DWORD *)this + 1) = 1; this[9] = 0; return result; } //----- (0050CC20) -------------------------------------------------------- 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; } //----- (0050CC40) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>( char *this, char *Src, int a3, int a4) { _BYTE *result; // eax size_t Size; // ebx result = this + 8; *(_DWORD *)this = this + 8; Size = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); *((_DWORD *)this + 2) = Size; *(_DWORD *)this = result; } else { if ( Size == 1 ) { this[8] = *Src; *((_DWORD *)this + 1) = 1; this[9] = 0; return result; } if ( !Size ) { *((_DWORD *)this + 1) = 0; *result = 0; return result; } } memcpy(result, Src, Size); result = *(_BYTE **)this; *((_DWORD *)this + 1) = Size; result[Size] = 0; return result; } //----- (0050CCE0) -------------------------------------------------------- _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); } //----- (0050CCF0) -------------------------------------------------------- _BYTE *__thiscall std::string::basic_string(char *this, char *Src, int a3, int a4) { _BYTE *result; // eax size_t Size; // ebx char v7; // dl result = this + 8; *(_DWORD *)this = this + 8; if ( !Src && a3 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); Size = a3 - (_DWORD)Src; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) { if ( Size > 0x3FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); result = operator new(Size + 1); *((_DWORD *)this + 2) = Size; *(_DWORD *)this = result; } else { if ( Size == 1 ) { v7 = *Src; *((_DWORD *)this + 1) = 1; this[8] = v7; this[9] = 0; return result; } if ( !Size ) { *((_DWORD *)this + 1) = 0; *result = 0; return result; } } memcpy(result, Src, Size); result = *(_BYTE **)this; *((_DWORD *)this + 1) = Size; result[Size] = 0; return result; } //----- (0050CDA0) -------------------------------------------------------- void __fastcall std::string::~string(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (0050CDD0) -------------------------------------------------------- void __fastcall std::string::~string(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (0050CE00) -------------------------------------------------------- _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; } //----- (0050CEB0) -------------------------------------------------------- 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); } //----- (0050CEF0) -------------------------------------------------------- void *__thiscall std::string::operator=(void *this, int a2) { std::string::_M_assign((int)this, a2); return this; } //----- (0050CF10) -------------------------------------------------------- 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; } //----- (0050CF50) -------------------------------------------------------- _DWORD *__thiscall std::string::operator=(_DWORD *this, char a2) { std::string::_M_replace_aux(this, 0, this[1], 1u, a2); return this; } //----- (0050CF90) -------------------------------------------------------- int __thiscall std::string::operator[](_DWORD *this, int a2) { return a2 + *this; } //----- (0050CFA0) -------------------------------------------------------- _DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str) { unsigned int Size; // eax size_t v4; // ebp _DWORD *v5; // edx unsigned int v6; // edi unsigned int v7; // ecx _BYTE *v8; // edx _DWORD *result; // eax Size = strlen(Str); v4 = this[1]; if ( Size > 0x3FFFFFFF - v4 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v5 = (_DWORD *)*this; v6 = Size + v4; if ( (_DWORD *)*this == this + 2 ) v7 = 15; else v7 = this[2]; if ( v6 > v7 ) { std::string::_M_mutate((int)this, v4, 0, Str, Size); v5 = (_DWORD *)*this; } else if ( Size ) { v8 = (char *)v5 + v4; if ( Size == 1 ) *v8 = *Str; else memcpy(v8, Str, Size); v5 = (_DWORD *)*this; } this[1] = v6; result = this; *((_BYTE *)v5 + v6) = 0; return result; } //----- (0050D060) -------------------------------------------------------- _DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2) { _DWORD *v3; // edi size_t v4; // ecx size_t v5; // edx _BYTE *Src; // ebp _DWORD *v7; // eax unsigned int v8; // esi unsigned int v9; // edi _BYTE *v10; // eax v3 = this + 2; v4 = this[1]; v5 = *(_DWORD *)(a2 + 4); Src = *(_BYTE **)a2; v7 = (_DWORD *)*this; v8 = v5 + v4; if ( (_DWORD *)*this == v3 ) v9 = 15; else v9 = this[2]; if ( v8 > v9 ) { std::string::_M_mutate((int)this, v4, 0, Src, v5); v7 = (_DWORD *)*this; } else if ( v5 ) { v10 = (char *)v7 + v4; if ( v5 == 1 ) *v10 = *Src; else memcpy(v10, Src, *(_DWORD *)(a2 + 4)); v7 = (_DWORD *)*this; } this[1] = v8; *((_BYTE *)v7 + v8) = 0; return this; } //----- (0050D100) -------------------------------------------------------- _DWORD *__thiscall std::string::operator+=(_DWORD *this, _BYTE *Src, size_t Size) { size_t v4; // edi _DWORD *v5; // eax unsigned int v6; // esi unsigned int v7; // ecx _BYTE *v8; // eax v4 = this[1]; if ( Size > 0x3FFFFFFF - v4 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v5 = (_DWORD *)*this; v6 = Size + v4; if ( (_DWORD *)*this == this + 2 ) v7 = 15; else v7 = this[2]; if ( v6 > v7 ) { std::string::_M_mutate((int)this, v4, 0, Src, Size); v5 = (_DWORD *)*this; } else if ( Size ) { v8 = (char *)v5 + v4; if ( Size == 1 ) *v8 = *Src; else memcpy(v8, Src, Size); v5 = (_DWORD *)*this; } this[1] = v6; *((_BYTE *)v5 + v6) = 0; return this; } //----- (0050D1C0) -------------------------------------------------------- _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; } //----- (0050D240) -------------------------------------------------------- void __thiscall std::wstring::_M_destroy(void **this, int a2) { operator delete(*this); } //----- (0050D260) -------------------------------------------------------- void __fastcall std::wstring::_M_dispose(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (0050D290) -------------------------------------------------------- unsigned int *__thiscall std::wstring::_M_replace( unsigned int *this, int a2, unsigned int a3, _WORD *Src, unsigned int a5) { unsigned int v5; // eax unsigned int v7; // edi unsigned int v8; // ecx bool v9; // cl unsigned int v10; // eax int v12; // ecx unsigned int v13; // eax signed int Size; // eax signed int v15; // edx unsigned int v16; // esi unsigned int v17; // [esp+1Ch] [ebp-30h] int v18; // [esp+1Ch] [ebp-30h] int v19; // [esp+1Ch] [ebp-30h] _WORD *v20; // [esp+20h] [ebp-2Ch] bool v21; // [esp+24h] [ebp-28h] signed int v22; // [esp+24h] [ebp-28h] unsigned int v23; // [esp+28h] [ebp-24h] unsigned int v24; // [esp+2Ch] [ebp-20h] v5 = this[1]; if ( a5 > a3 + 0x1FFFFFFF - v5 ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace"); v24 = a5 - a3; v7 = v5 + a5 - a3; v17 = *this; if ( (unsigned int *)*this == this + 2 ) v8 = 7; else v8 = this[2]; if ( v8 < v7 ) { std::wstring::_M_mutate((int)this, a2, a3, Src, a5); goto LABEL_12; } v20 = (_WORD *)(v17 + 2 * a2); v23 = v5 - (a3 + a2); v9 = a3 != a5 && v5 != a3 + a2; if ( v17 <= (unsigned int)Src && (unsigned int)Src <= v17 + 2 * v5 ) { if ( a5 && a3 >= a5 ) { if ( a5 != 1 ) { v21 = a3 != a5 && v5 != a3 + a2; v18 = a5; memmove(v20, Src, 2 * a5); if ( !v21 ) goto LABEL_12; goto LABEL_18; } *v20 = *Src; } if ( !v9 ) goto LABEL_20; v18 = a5; LABEL_18: if ( v23 == 1 ) v20[v18] = v20[a3]; else memmove(&v20[v18], &v20[a3], 2 * v23); LABEL_20: if ( a3 >= a5 ) goto LABEL_12; v12 = a5; v13 = (unsigned int)&v20[a3]; if ( v13 < (unsigned int)&Src[a5] ) { if ( v13 > (unsigned int)Src ) { Size = v13 - (_DWORD)Src; v15 = Size; v19 = Size >> 1; if ( Size >> 1 == 1 ) { *v20 = *Src; } else if ( v19 ) { v22 = Size; memmove(v20, Src, Size); v12 = a5; v15 = v22; } v16 = a5 - v19; if ( a5 - v19 == 1 ) { *(_WORD *)((char *)v20 + v15) = v20[v12]; } else if ( v16 ) { memcpy((char *)v20 + v15, &v20[v12], 2 * v16); } } else if ( a5 == 1 ) { *v20 = Src[v24]; } else if ( a5 ) { memcpy(v20, &Src[v24], 2 * a5); } goto LABEL_12; } if ( a5 != 1 ) { if ( a5 ) memmove(v20, Src, 2 * a5); goto LABEL_12; } LABEL_27: *v20 = *Src; goto LABEL_12; } if ( v9 ) { if ( v23 == 1 ) v20[a5] = v20[a3]; else memmove(&v20[a5], &v20[a3], 2 * v23); } if ( a5 ) { if ( a5 != 1 ) { memcpy(v20, Src, 2 * a5); goto LABEL_12; } goto LABEL_27; } LABEL_12: v10 = *this; this[1] = v7; *(_WORD *)(v10 + 2 * v7) = 0; return this; } //----- (0050D5E0) -------------------------------------------------------- int __cdecl std::wstring::_S_compare(int a1, int a2) { return a1 - a2; } //----- (0050D5F0) -------------------------------------------------------- int __thiscall std::wstring::_M_capacity(_DWORD *this, int a2) { int result; // eax result = a2; this[2] = a2; return result; } //----- (0050D600) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (0050D610) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (0050D620) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (0050D630) -------------------------------------------------------- int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) { int result; // eax result = a2; *this = a2; return result; } //----- (0050D640) -------------------------------------------------------- int __thiscall std::wstring::_M_construct(_DWORD *this, unsigned int a2, __int16 a3) { _WORD *v4; // ecx int result; // eax _WORD *v6; // eax _WORD *v7; // edx unsigned int v8; // eax if ( a2 > 7 ) { if ( a2 > 0x1FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); v6 = operator new(2 * a2 + 2); this[2] = a2; *this = v6; v4 = v6; } else { v4 = (_WORD *)*this; if ( !a2 ) goto LABEL_3; if ( a2 == 1 ) { *v4 = a3; goto LABEL_3; } } v7 = v4; v8 = a2; do { *v7++ = a3; --v8; } while ( v8 ); LABEL_3: result = 0; this[1] = a2; v4[a2] = 0; return result; } //----- (0050D6C0) -------------------------------------------------------- _WORD *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( _DWORD *this, _WORD *Src, int a3, int a4) { size_t Size; // ebx int v6; // edi _WORD *result; // eax Size = a3 - (_DWORD)Src; v6 = (a3 - (int)Src) >> 1; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) { if ( Size > 0x3FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) std::__throw_bad_alloc(); result = operator new(Size + 2); this[2] = v6; *this = result; } else { result = (_WORD *)*this; } if ( v6 == 1 ) { *result = *Src; } else if ( v6 ) { memcpy(result, Src, Size); result = (_WORD *)*this; } this[1] = v6; *(_WORD *)((char *)result + Size) = 0; return result; } //----- (0050D760) -------------------------------------------------------- _WORD *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( _DWORD *this, _WORD *Src, int a3, int a4) { size_t Size; // ebx int v6; // edi _WORD *result; // eax Size = a3 - (_DWORD)Src; v6 = (a3 - (int)Src) >> 1; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) { if ( Size > 0x3FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) std::__throw_bad_alloc(); result = operator new(Size + 2); this[2] = v6; *this = result; } else { result = (_WORD *)*this; } if ( v6 == 1 ) { *result = *Src; } else if ( v6 ) { memcpy(result, Src, Size); result = (_WORD *)*this; } this[1] = v6; *(_WORD *)((char *)result + Size) = 0; return result; } //----- (0050D800) -------------------------------------------------------- _WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3, int a4) { size_t Size; // ebx int v6; // ebp _WORD *result; // eax if ( !Src && a3 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); Size = a3 - (_DWORD)Src; v6 = (a3 - (int)Src) >> 1; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) { if ( Size > 0x3FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) std::__throw_bad_alloc(); result = operator new(Size + 2); this[2] = v6; *this = result; } else { result = (_WORD *)*this; } if ( v6 == 1 ) { *result = *Src; } else if ( v6 ) { memcpy(result, Src, Size); result = (_WORD *)*this; } this[1] = v6; *(_WORD *)((char *)result + Size) = 0; return result; } //----- (0050D8C0) -------------------------------------------------------- _WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3) { int v4; // ebp _WORD *result; // eax unsigned int v6; // edx unsigned int v7[8]; // [esp+1Ch] [ebp-20h] BYREF if ( !Src && a3 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v4 = (a3 - (int)Src) >> 1; v7[0] = v4; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) { result = std::wstring::_M_create(v7, 0); *this = result; this[2] = v7[0]; } else { result = (_WORD *)*this; } if ( v4 == 1 ) { *result = *Src; } else if ( v4 ) { memcpy(result, Src, a3 - (_DWORD)Src); result = (_WORD *)*this; } v6 = v7[0]; this[1] = v7[0]; result[v6] = 0; return result; } // 50D8C0: using guessed type unsigned int var_20[8]; //----- (0050D960) -------------------------------------------------------- _WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3) { int v4; // ebp _WORD *result; // eax unsigned int v6; // edx unsigned int v7[8]; // [esp+1Ch] [ebp-20h] BYREF if ( !Src && a3 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v4 = (a3 - (int)Src) >> 1; v7[0] = v4; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) { result = std::wstring::_M_create(v7, 0); *this = result; this[2] = v7[0]; } else { result = (_WORD *)*this; } if ( v4 == 1 ) { *result = *Src; } else if ( v4 ) { memcpy(result, Src, a3 - (_DWORD)Src); result = (_WORD *)*this; } v6 = v7[0]; this[1] = v7[0]; result[v6] = 0; return result; } // 50D960: using guessed type unsigned int var_20[8]; //----- (0050DA00) -------------------------------------------------------- _WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3, int a4) { size_t Size; // ebx int v6; // ebp _WORD *result; // eax if ( !Src && a3 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); Size = a3 - (_DWORD)Src; v6 = (a3 - (int)Src) >> 1; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) { if ( Size > 0x3FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) std::__throw_bad_alloc(); result = operator new(Size + 2); this[2] = v6; *this = result; } else { result = (_WORD *)*this; } if ( v6 == 1 ) { *result = *Src; } else if ( v6 ) { memcpy(result, Src, Size); result = (_WORD *)*this; } this[1] = v6; *(_WORD *)((char *)result + Size) = 0; return result; } //----- (0050DAC0) -------------------------------------------------------- _WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3) { int v4; // ebp _WORD *result; // eax unsigned int v6; // edx unsigned int v7[8]; // [esp+1Ch] [ebp-20h] BYREF if ( !Src && a3 ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v4 = (a3 - (int)Src) >> 1; v7[0] = v4; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) { result = std::wstring::_M_create(v7, 0); *this = result; this[2] = v7[0]; } else { result = (_WORD *)*this; } if ( v4 == 1 ) { *result = *Src; } else if ( v4 ) { memcpy(result, Src, a3 - (_DWORD)Src); result = (_WORD *)*this; } v6 = v7[0]; this[1] = v7[0]; result[v6] = 0; return result; } // 50DAC0: using guessed type unsigned int var_20[8]; //----- (0050DB60) -------------------------------------------------------- int __fastcall std::wstring::_M_local_data(int a1) { return a1 + 8; } //----- (0050DB70) -------------------------------------------------------- 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; } //----- (0050DB90) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) { int result; // eax int v4; // ecx result = Size - (_DWORD)Src; v4 = (int)(Size - (_DWORD)Src) >> 1; if ( v4 == 1 ) { result = *Src; *a1 = result; } else if ( v4 ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (0050DBD0) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) { int result; // eax int v4; // ecx result = Size - (_DWORD)Src; v4 = (int)(Size - (_DWORD)Src) >> 1; if ( v4 == 1 ) { result = *Src; *a1 = result; } else if ( v4 ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (0050DC10) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) { int result; // eax int v4; // ecx result = Size - (_DWORD)Src; v4 = (int)(Size - (_DWORD)Src) >> 1; if ( v4 == 1 ) { result = *Src; *a1 = result; } else if ( v4 ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (0050DC50) -------------------------------------------------------- int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) { int result; // eax int v4; // ecx result = Size - (_DWORD)Src; v4 = (int)(Size - (_DWORD)Src) >> 1; if ( v4 == 1 ) { result = *Src; *a1 = result; } else if ( v4 ) { return (int)memcpy(a1, Src, Size - (_DWORD)Src); } return result; } //----- (0050DC90) -------------------------------------------------------- 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); } //----- (0050DD30) -------------------------------------------------------- _DWORD *__thiscall std::wstring::_M_replace_aux(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5) { int v6; // edx unsigned int v7; // ebx _DWORD *v8; // ecx unsigned int v9; // edi unsigned int v10; // ebp int v11; // edx char *v12; // ebp char *Src; // eax char *v14; // ebp _WORD *v15; // eax v6 = this[1]; v7 = a4; if ( a4 > a3 + 0x1FFFFFFF - v6 ) std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); v8 = (_DWORD *)*this; v9 = v6 + a4 - a3; if ( (_DWORD *)*this == this + 2 ) v10 = 7; else v10 = this[2]; if ( v10 < v9 ) { std::wstring::_M_mutate((int)this, a2, a3, 0, a4); v8 = (_DWORD *)*this; if ( !a4 ) goto LABEL_12; } else { v11 = v6 - (a3 + a2); if ( !v11 || a3 == a4 ) { LABEL_9: if ( !a4 ) goto LABEL_12; goto LABEL_10; } v12 = (char *)v8 + 2 * a2; Src = &v12[2 * a3]; v14 = &v12[2 * a4]; if ( v11 != 1 ) { memmove(v14, Src, 2 * v11); v8 = (_DWORD *)*this; goto LABEL_9; } *(_WORD *)v14 = *(_WORD *)Src; if ( !a4 ) goto LABEL_12; } LABEL_10: v15 = (_WORD *)v8 + a2; if ( a4 == 1 ) { *v15 = a5; } else { do { *v15++ = a5; --v7; } while ( v7 ); } LABEL_12: this[1] = v9; *((_WORD *)v8 + v9) = 0; return this; } //----- (0050DE60) -------------------------------------------------------- int __fastcall std::wstring::_M_get_allocator(int a1) { return a1; } //----- (0050DE70) -------------------------------------------------------- int __thiscall std::wstring::_M_construct_aux_2(_DWORD *this, unsigned int a2, __int16 a3) { _WORD *v4; // ecx int result; // eax _WORD *v6; // eax _WORD *v7; // edx unsigned int v8; // eax if ( a2 > 7 ) { if ( a2 > 0x1FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); v6 = operator new(2 * a2 + 2); this[2] = a2; *this = v6; v4 = v6; } else { v4 = (_WORD *)*this; if ( !a2 ) goto LABEL_3; if ( a2 == 1 ) { *v4 = a3; goto LABEL_3; } } v7 = v4; v8 = a2; do { *v7++ = a3; --v8; } while ( v8 ); LABEL_3: result = 0; this[1] = a2; v4[a2] = 0; return result; } //----- (0050DEF0) -------------------------------------------------------- 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; } //----- (0050DF20) -------------------------------------------------------- int __fastcall std::wstring::end(_DWORD *a1) { return *a1 + 2 * a1[1]; } //----- (0050DF30) -------------------------------------------------------- int __fastcall std::wstring::back(_DWORD *a1) { return *a1 + 2 * a1[1] - 2; } //----- (0050DF40) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2; return result; } //----- (0050DF50) -------------------------------------------------------- _WORD *__thiscall std::wstring::swap(_DWORD *this, _DWORD *a2) { _WORD *result; // eax _WORD *v3; // edi _WORD *v4; // esi _WORD *v5; // edx int v6; // ebp int v7; // edx int v8; // edi int v9; // edx int v10; // ebp int v11; // edi int v12; // [esp+0h] [ebp-28h] int v13; // [esp+0h] [ebp-28h] int v14; // [esp+4h] [ebp-24h] result = a2; if ( this != a2 ) { v3 = (_WORD *)*this; v4 = (_WORD *)*a2; v5 = a2 + 2; if ( this + 2 == (_DWORD *)*this ) { v8 = a2[1]; if ( v5 == v4 ) { 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 = (_WORD *)*this; this[1] = 0; *result = 0; return result; } v10 = a2[2]; v11 = a2[3]; v13 = a2[4]; v14 = a2[5]; a2[2] = this[2]; a2[3] = this[3]; a2[4] = this[4]; a2[5] = this[5]; this[2] = v10; this[4] = v13; this[3] = v11; this[5] = v14; v8 = a2[1]; v9 = this[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 = (_WORD *)*a2; *(_WORD *)*a2 = 0; return result; } v9 = 0; } } else { v12 = 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] = v12; } } 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 { v7 = a2[2]; *this = v4; *a2 = v3; this[2] = v7; } v8 = a2[1]; v9 = this[1]; a2[2] = v6; } this[1] = v8; a2[1] = v9; } return result; } //----- (0050E0D0) -------------------------------------------------------- int __fastcall std::wstring::begin(int a1) { return *(_DWORD *)a1; } //----- (0050E0E0) -------------------------------------------------------- _WORD *__fastcall std::wstring::clear(int a1) { _WORD *result; // eax result = *(_WORD **)a1; *(_DWORD *)(a1 + 4) = 0; *result = 0; return result; } //----- (0050E0F0) -------------------------------------------------------- char *__thiscall std::wstring::erase(int *this, char *a2) { int v3; // edx int v4; // eax char *v5; // ecx int v6; // eax char *v7; // edi int v8; // esi int v9; // ebp v3 = *this; v4 = this[1]; v5 = a2; v6 = v4 - 1; v7 = &a2[-v3]; v8 = (int)&a2[-v3] >> 1; v9 = v6 - v8; if ( v6 != v8 ) { if ( v9 == 1 ) { *(_WORD *)a2 = *((_WORD *)a2 + 1); } else { memmove(a2, a2 + 2, 2 * v9); v3 = *this; v6 = this[1] - 1; v5 = &v7[*this]; } } this[1] = v6; *(_WORD *)(v3 + 2 * v6) = 0; return v5; } //----- (0050E160) -------------------------------------------------------- _WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3) { int v4; // esi int v5; // edi int v6; // ecx v4 = (int)a2 - *this; v5 = *this + 2 * this[1]; v6 = v4 >> 1; if ( a3 == v5 ) { this[1] = v6; *a2 = 0; return a2; } else { std::wstring::_M_erase(this, v6, (a3 - (int)a2) >> 1); return (_WORD *)(v4 + *this); } } //----- (0050E1D0) -------------------------------------------------------- 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; } //----- (0050E200) -------------------------------------------------------- _WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3) { int v4; // esi int v5; // edi int v6; // ecx v4 = (int)a2 - *this; v5 = *this + 2 * this[1]; v6 = v4 >> 1; if ( a3 == v5 ) { this[1] = v6; *a2 = 0; return a2; } else { std::wstring::_M_erase(this, v6, (a3 - (int)a2) >> 1); return (_WORD *)(v4 + *this); } } //----- (0050E270) -------------------------------------------------------- int *__thiscall std::wstring::erase(int *this, unsigned int a2, unsigned int a3) { int *result; // eax unsigned int v4; // edx unsigned int v5; // edx int v6; // edx 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; this[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; } //----- (0050E2F0) -------------------------------------------------------- int __fastcall std::wstring::front(int a1) { return *(_DWORD *)a1; } //----- (0050E300) -------------------------------------------------------- _DWORD *__thiscall std::wstring::append(_DWORD *this, wchar_t *String) { unsigned int v3; // eax int v4; // ecx _DWORD *v5; // edx unsigned int v6; // edi unsigned int v7; // ebp _WORD *v8; // ecx v3 = wcslen(String); v4 = this[1]; if ( v3 > 0x1FFFFFFF - v4 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v5 = (_DWORD *)*this; v6 = v4 + v3; if ( (_DWORD *)*this == this + 2 ) v7 = 7; else v7 = this[2]; if ( v6 > v7 ) { std::wstring::_M_mutate((int)this, this[1], 0, String, v3); v5 = (_DWORD *)*this; } else if ( v3 ) { v8 = (_WORD *)v5 + v4; if ( v3 == 1 ) { *v8 = *String; } else { memcpy(v8, String, 2 * v3); v5 = (_DWORD *)*this; } } this[1] = v6; *((_WORD *)v5 + v6) = 0; return this; } //----- (0050E3C0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::append(_DWORD *this, _WORD *Src, unsigned int a3) { int v4; // ecx _DWORD *v5; // edx unsigned int v6; // esi unsigned int v7; // edi _WORD *v8; // ecx v4 = this[1]; if ( a3 > 0x1FFFFFFF - v4 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v5 = (_DWORD *)*this; v6 = a3 + v4; if ( (_DWORD *)*this == this + 2 ) v7 = 7; else v7 = this[2]; if ( v6 > v7 ) { std::wstring::_M_mutate((int)this, v4, 0, Src, a3); v5 = (_DWORD *)*this; } else if ( a3 ) { v8 = (_WORD *)v5 + v4; if ( a3 == 1 ) { *v8 = *Src; } else { memcpy(v8, Src, 2 * a3); v5 = (_DWORD *)*this; } } this[1] = v6; *((_WORD *)v5 + v6) = 0; return this; } //----- (0050E480) -------------------------------------------------------- _DWORD *__thiscall std::wstring::append(_DWORD *this, int a2) { _DWORD *v3; // edi int v4; // ecx int v5; // eax _WORD *v6; // ebp _DWORD *v7; // edx unsigned int v8; // esi unsigned int v9; // edi _WORD *v10; // ecx v3 = this + 2; v4 = this[1]; v5 = *(_DWORD *)(a2 + 4); v6 = *(_WORD **)a2; v7 = (_DWORD *)*this; v8 = v5 + v4; if ( (_DWORD *)*this == v3 ) v9 = 7; else v9 = this[2]; if ( v8 > v9 ) { std::wstring::_M_mutate((int)this, v4, 0, v6, v5); v7 = (_DWORD *)*this; } else if ( v5 ) { v10 = (_WORD *)v7 + v4; if ( v5 == 1 ) { *v10 = *v6; } else { memcpy(v10, *(const void **)a2, 2 * v5); v7 = (_DWORD *)*this; } } this[1] = v8; *((_WORD *)v7 + v8) = 0; return this; } //----- (0050E520) -------------------------------------------------------- _DWORD *__thiscall std::wstring::append(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4) { int v5; // eax _WORD *Src; // ebp int v7; // ecx _DWORD *v8; // edx unsigned int v9; // esi unsigned int v10; // edi _WORD *v11; // ecx v5 = a4; if ( a2[1] - a3 <= a4 ) v5 = a2[1] - a3; 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]); Src = (_WORD *)(*a2 + 2 * a3); v7 = this[1]; v8 = (_DWORD *)*this; v9 = v5 + v7; if ( (_DWORD *)*this == this + 2 ) v10 = 7; else v10 = this[2]; if ( v9 > v10 ) { std::wstring::_M_mutate((int)this, this[1], 0, Src, v5); v8 = (_DWORD *)*this; } else if ( v5 ) { v11 = (_WORD *)v8 + v7; if ( v5 == 1 ) { *v11 = *Src; } else { memcpy(v11, Src, 2 * v5); v8 = (_DWORD *)*this; } } this[1] = v9; *((_WORD *)v8 + v9) = 0; return this; } //----- (0050E600) -------------------------------------------------------- _DWORD *__thiscall std::wstring::append(_DWORD *this, _WORD *Src, unsigned int a3) { int v4; // ecx _DWORD *v5; // edx unsigned int v6; // esi unsigned int v7; // ebp _WORD *v8; // ecx v4 = this[1]; if ( a3 > 0x1FFFFFFF - v4 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v5 = (_DWORD *)*this; v6 = a3 + v4; if ( (_DWORD *)*this == this + 2 ) v7 = 7; else v7 = this[2]; if ( v6 > v7 ) { std::wstring::_M_mutate((int)this, v4, 0, Src, a3); v5 = (_DWORD *)*this; } else if ( a3 ) { v8 = (_WORD *)v5 + v4; if ( a3 == 1 ) { *v8 = *Src; } else { memcpy(v8, Src, 2 * a3); v5 = (_DWORD *)*this; } } this[1] = v6; *((_WORD *)v5 + v6) = 0; return this; } //----- (0050E6C0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::append(_DWORD *this, unsigned int a2, __int16 a3) { return std::wstring::_M_replace_aux(this, this[1], 0, a2, a3); } //----- (0050E6F0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::assign(_DWORD *this, _DWORD *a2) { _WORD *v3; // eax _DWORD *v4; // edi _WORD *v5; // ecx int v6; // edx int v7; // ebp int v9; // edi int v10; // [esp+1Ch] [ebp-20h] v3 = (_WORD *)*this; v4 = (_DWORD *)*a2; v5 = a2 + 2; v6 = a2[1]; if ( (_DWORD *)*a2 != a2 + 2 ) { v10 = a2[2]; if ( v3 == (_WORD *)(this + 2) ) { *this = v4; this[1] = v6; this[2] = v10; } else { this[1] = v6; v7 = this[2]; *this = v4; this[2] = v10; if ( v3 ) { *a2 = v3; a2[2] = v7; goto LABEL_5; } } *a2 = v5; v3 = a2 + 2; goto LABEL_5; } v9 = v6; if ( v6 ) { if ( v6 == 1 ) { *v3 = *((_WORD *)a2 + 4); v9 = 1; } else { memcpy(v3, a2 + 2, 2 * v6); v6 = a2[1]; v3 = (_WORD *)*this; v5 = (_WORD *)*a2; v9 = v6; } } this[1] = v6; v3[v9] = 0; v3 = v5; LABEL_5: a2[1] = 0; *v3 = 0; return this; } //----- (0050E7B0) -------------------------------------------------------- unsigned int *__thiscall std::wstring::assign(unsigned int *this, wchar_t *String) { unsigned int v3; // eax v3 = wcslen(String); return std::wstring::_M_replace(this, 0, this[1], String, v3); } //----- (0050E7F0) -------------------------------------------------------- unsigned int *__thiscall std::wstring::assign(unsigned int *this, _WORD *a2, int a3) { return std::wstring::_M_replace(this, 0, this[1], a2, a3); } //----- (0050E820) -------------------------------------------------------- void *__thiscall std::wstring::assign(void *this, int a2) { std::wstring::_M_assign((int)this, a2); return this; } //----- (0050E840) -------------------------------------------------------- unsigned int *__thiscall std::wstring::assign(unsigned int *this, _DWORD *a2, unsigned int a3, unsigned int a4) { unsigned int v4; // eax 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(this, 0, this[1], (_WORD *)(*a2 + 2 * a3), v4); } //----- (0050E8B0) -------------------------------------------------------- unsigned int *__thiscall std::wstring::assign(unsigned int *this, _WORD *a2, int a3) { return std::wstring::_M_replace(this, 0, this[1], a2, a3); } //----- (0050E8E0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::assign(_DWORD *this, unsigned int a2, __int16 a3) { return std::wstring::_M_replace_aux(this, 0, this[1], a2, a3); } //----- (0050E910) -------------------------------------------------------- unsigned int __thiscall std::wstring::insert(unsigned int *this, int a2, _WORD *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(this, v5 >> 1, 0, a3, (2 * a4) >> 1); return v5 + *this; } //----- (0050E980) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, int a2, unsigned int a3, __int16 a4) { int v5; // ebx v5 = a2 - *this; std::wstring::_M_replace_aux(this, v5 >> 1, 0, a3, a4); return v5 + *this; } //----- (0050E9D0) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, int a2, __int16 a3) { int v4; // ebx v4 = a2 - *this; std::wstring::_M_replace_aux(this, v4 >> 1, 0, 1u, a3); return v4 + *this; } //----- (0050EA20) -------------------------------------------------------- unsigned int *__thiscall std::wstring::insert(unsigned int *this, int a2, _WORD *a3, int a4) { unsigned int v4; // eax v4 = (int)(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(this, v4, 0, a3, a4); } //----- (0050EA80) -------------------------------------------------------- _DWORD *__thiscall std::wstring::insert(_DWORD *this, int a2, unsigned int a3, __int16 a4) { return std::wstring::_M_replace_aux(this, (a2 - *this) >> 1, 0, a3, a4); } //----- (0050EAC0) -------------------------------------------------------- int __thiscall std::wstring::insert(_DWORD *this, int a2, __int16 a3) { int v4; // ebx v4 = a2 - *this; std::wstring::_M_replace_aux(this, v4 >> 1, 0, 1u, a3); return v4 + *this; } //----- (0050EB10) -------------------------------------------------------- unsigned int *__thiscall std::wstring::insert(unsigned int *this, unsigned int a2, wchar_t *String) { unsigned int 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(this, a2, 0, String, v4); } //----- (0050EB80) -------------------------------------------------------- unsigned int *__thiscall std::wstring::insert(unsigned int *this, unsigned int a2, _WORD *a3, int 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(this, a2, 0, a3, a4); } //----- (0050EBE0) -------------------------------------------------------- unsigned int *__thiscall std::wstring::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::wstring::_M_replace(this, a2, 0, *(_WORD **)a3, *(_DWORD *)(a3 + 4)); } //----- (0050EC40) -------------------------------------------------------- unsigned int *__thiscall std::wstring::insert( unsigned int *this, unsigned int a2, _DWORD *a3, unsigned int a4, unsigned int a5) { unsigned int v5; // eax v5 = a5; if ( a3[1] - a4 <= a5 ) v5 = a3[1] - a4; 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(this, a2, 0, (_WORD *)(*a3 + 2 * a4), v5); } //----- (0050ECD0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::insert(_DWORD *this, unsigned int a2, unsigned int 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(this, a2, 0, a3, a4); } //----- (0050ED30) -------------------------------------------------------- unsigned int *__thiscall std::wstring::insert<__gnu_cxx::__normal_iterator>( unsigned int *this, int a2, _WORD *a3, int a4) { unsigned int v4; // eax v4 = (int)(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(this, v4, 0, a3, (a4 - (int)a3) >> 1); } //----- (0050EDA0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) { _DWORD *result; // eax result = this; *this = *a2 + 2 * a2[1]; return result; } //----- (0050EDC0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::resize(int *this, unsigned int a2) { unsigned int v2; // edx _DWORD *result; // eax int v4; // edx v2 = this[1]; result = (_DWORD *)a2; if ( a2 > v2 ) return std::wstring::_M_replace_aux(this, v2, 0, a2 - v2, 0); if ( a2 < v2 ) { v4 = *this; this[1] = a2; *(_WORD *)(v4 + 2 * a2) = 0; } return result; } //----- (0050EE10) -------------------------------------------------------- _DWORD *__thiscall std::wstring::resize(int *this, unsigned int a2, __int16 a3) { unsigned int v3; // edx _DWORD *result; // eax int v5; // edx v3 = this[1]; result = (_DWORD *)a2; if ( v3 < a2 ) return std::wstring::_M_replace_aux(this, v3, 0, a2 - v3, a3); if ( v3 > a2 ) { v5 = *this; this[1] = a2; *(_WORD *)(v5 + 2 * a2) = 0; } return result; } //----- (0050EE70) -------------------------------------------------------- int __thiscall std::wstring::_M_data(_DWORD *this, int a2) { int result; // eax result = a2; *this = a2; return result; } //----- (0050EE80) -------------------------------------------------------- int __cdecl std::wstring::_S_copy(_WORD *a1, unsigned __int16 *Src, size_t Size) { int result; // eax result = Size; if ( Size == 1 ) { result = *Src; *a1 = result; } else if ( Size ) { return (int)memcpy(a1, Src, 2 * Size); } return result; } //----- (0050EEC0) -------------------------------------------------------- int __cdecl std::wstring::_S_move(_WORD *a1, unsigned __int16 *Src, size_t Size) { int result; // eax result = Size; if ( Size == 1 ) { result = *Src; *a1 = result; } else if ( Size ) { return (int)memmove(a1, Src, 2 * Size); } return result; } //----- (0050EF00) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (int)(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(this, v5, v6, a4, (a5 - (int)a4) >> 1); } //----- (0050EF70) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (int)(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(this, v5, v6, a4, (a5 - (int)a4) >> 1); } //----- (0050EFE0) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, int a4) { unsigned int v4; // edx unsigned int v5; // eax v4 = (int)(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(this, v4, v5, *(_WORD **)a4, *(_DWORD *)(a4 + 4)); } //----- (0050F050) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, wchar_t *String) { unsigned int v5; // ebp unsigned int v6; // ecx unsigned int v7; // edx unsigned int v8; // eax v5 = this[1]; v6 = wcslen(String); v7 = (int)(a2 - *this) >> 1; v8 = (a3 - a2) >> 1; if ( v8 > this[1] - v7 ) v8 = this[1] - v7; if ( v7 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v7, this[1]); return std::wstring::_M_replace(this, v7, v8, String, v6); } //----- (0050F0D0) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (int)(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(this, v5, v6, a4, (a5 - (int)a4) >> 1); } //----- (0050F140) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (int)(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(this, v5, v6, a4, a5); } //----- (0050F1B0) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (int)(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(this, v5, v6, a4, (a5 - (int)a4) >> 1); } //----- (0050F220) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (int)(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(this, v5, v6, a4, a5); } //----- (0050F290) -------------------------------------------------------- _DWORD *__thiscall std::wstring::replace(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5) { return std::wstring::_M_replace_aux(this, (a2 - *this) >> 1, (a3 - a2) >> 1, a4, a5); } //----- (0050F2C0) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (int)(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(this, v5, v6, a4, (a5 - (int)a4) >> 1); } //----- (0050F330) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, wchar_t *String) { unsigned int v5; // ebp unsigned int v6; // ecx unsigned int v7; // edx unsigned int v8; // eax v5 = this[1]; v6 = wcslen(String); v7 = (int)(a2 - *this) >> 1; v8 = (a3 - a2) >> 1; if ( v8 > this[1] - v7 ) v8 = this[1] - v7; if ( v7 > v5 ) std::__throw_out_of_range_fmt( "%s: __pos (which is %zu) > this->size() (which is %zu)", "basic_string::replace", v7, this[1]); return std::wstring::_M_replace(this, v7, v8, String, v6); } //----- (0050F3B0) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (int)(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(this, v5, v6, a4, (a5 - (int)a4) >> 1); } //----- (0050F420) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (int)(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(this, v5, v6, a4, a5); } //----- (0050F490) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, int a4) { unsigned int v4; // edx unsigned int v5; // eax v4 = (int)(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(this, v4, v5, *(_WORD **)a4, *(_DWORD *)(a4 + 4)); } //----- (0050F500) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (int)(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(this, v5, v6, a4, (a5 - (int)a4) >> 1); } //----- (0050F570) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) { unsigned int v5; // edx unsigned int v6; // eax v5 = (int)(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(this, v5, v6, a4, (a5 - (int)a4) >> 1); } //----- (0050F5E0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::replace(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5) { return std::wstring::_M_replace_aux(this, (a2 - *this) >> 1, (a3 - a2) >> 1, a4, a5); } //----- (0050F610) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, wchar_t *String) { unsigned int v5; // edx unsigned int v6; // eax 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(this, a2, v6, String, v5); } //----- (0050F680) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, _WORD *a4, int a5) { unsigned int v5; // eax 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(this, a2, v5, a4, a5); } //----- (0050F6E0) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, int a4) { unsigned int 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(this, a2, v4, *(_WORD **)a4, *(_DWORD *)(a4 + 4)); } //----- (0050F750) -------------------------------------------------------- unsigned int *__thiscall std::wstring::replace( unsigned int *this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, unsigned int a6) { unsigned int v6; // eax unsigned int v7; // edx v6 = a6; if ( a4[1] - a5 <= a6 ) v6 = a4[1] - a5; 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(this, a2, v7, (_WORD *)(*a4 + 2 * a5), v6); } //----- (0050F7F0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, unsigned int a4, __int16 a5) { unsigned int v5; // eax 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(this, a2, v5, a4, a5); } //----- (0050F850) -------------------------------------------------------- void __thiscall std::wstring::reserve(int this, unsigned int a2) { unsigned int v3; // ecx unsigned int v4; // eax _WORD *v5; // edi _WORD *v6; // esi unsigned int v7; // edx unsigned int v8; // ebp _WORD *v9; // eax _WORD *Block; // ebp _WORD *v11; // edi int v12; // eax unsigned int v13; // eax v3 = *(_DWORD *)(this + 4); v4 = a2; if ( a2 < v3 ) { a2 = v3; v4 = v3; } v5 = *(_WORD **)this; v6 = (_WORD *)(this + 8); if ( this + 8 == *(_DWORD *)this ) v7 = 7; else v7 = *(_DWORD *)(this + 8); if ( v7 != v4 ) { v8 = 7; if ( v7 <= 7 ) v8 = v7; if ( v4 <= v8 ) { if ( v6 != v5 ) { if ( v3 ) { if ( v3 != -1 ) memcpy((void *)(this + 8), *(const void **)this, 2 * (v3 + 1)); } else { *(_WORD *)(this + 8) = *v5; } operator delete(v5); *(_DWORD *)this = v6; } } else { v9 = std::wstring::_M_create(&a2, v7); Block = *(_WORD **)this; v11 = v9; v12 = *(_DWORD *)(this + 4); if ( v12 ) { if ( v12 != -1 ) memcpy(v11, *(const void **)this, 2 * (v12 + 1)); } else { *v11 = *Block; } if ( Block != v6 ) operator delete(Block); v13 = a2; *(_DWORD *)this = v11; *(_DWORD *)(this + 8) = v13; } } } //----- (0050F960) -------------------------------------------------------- int __thiscall std::wstring::_M_erase(int *this, int a2, int a3) { int v4; // eax int v5; // ecx int v6; // ebp _WORD *v7; // edi int result; // eax v4 = this[1]; v5 = *this; v6 = v4 - (a2 + a3); if ( v4 != a2 + a3 && a3 ) { v7 = (_WORD *)(v5 + 2 * a2); if ( v6 == 1 ) { *v7 = *(_WORD *)(v5 + 2 * (a2 + a3)); } else { memmove(v7, (const void *)(v5 + 2 * (a2 + a3)), 2 * v6); v5 = *this; v4 = this[1]; } } result = v4 - a3; this[1] = result; *(_WORD *)(v5 + 2 * result) = 0; return result; } //----- (0050F9D0) -------------------------------------------------------- int __fastcall std::wstring::pop_back(int *a1) { int v1; // edx int result; // eax v1 = *a1; result = a1[1] - 1; a1[1] = result; *(_WORD *)(v1 + 2 * result) = 0; return result; } //----- (0050F9F0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::_M_append(_DWORD *this, _WORD *Src, int a3) { _DWORD *v4; // edi int v5; // ecx _DWORD *v6; // edx unsigned int v7; // esi unsigned int v8; // edi _WORD *v9; // ecx v4 = this + 2; v5 = this[1]; v6 = (_DWORD *)*this; v7 = v5 + a3; if ( (_DWORD *)*this == v4 ) v8 = 7; else v8 = this[2]; if ( v7 > v8 ) { std::wstring::_M_mutate((int)this, v5, 0, Src, a3); v6 = (_DWORD *)*this; } else if ( a3 ) { v9 = (_WORD *)v6 + v5; if ( a3 == 1 ) { *v9 = *Src; } else { memcpy(v9, Src, 2 * a3); v6 = (_DWORD *)*this; } } this[1] = v7; *((_WORD *)v6 + v7) = 0; return this; } //----- (0050FA90) -------------------------------------------------------- void __thiscall std::wstring::_M_assign(int this, int a2) { _WORD *v2; // esi unsigned int v3; // edi unsigned int v5; // eax size_t Size; // eax _WORD *Src; // edx unsigned int v8; // eax int v9; // [esp+1Ch] [ebp-30h] unsigned int v10[8]; // [esp+2Ch] [ebp-20h] BYREF if ( this != a2 ) { v2 = *(_WORD **)this; v3 = *(_DWORD *)(a2 + 4); if ( this + 8 == *(_DWORD *)this ) v5 = 7; else v5 = *(_DWORD *)(this + 8); if ( v5 < v3 ) { v9 = this + 8; v10[0] = *(_DWORD *)(a2 + 4); v2 = std::wstring::_M_create(v10, v5); if ( v9 != *(_DWORD *)this ) operator delete(*(void **)this); v8 = v10[0]; *(_DWORD *)this = v2; *(_DWORD *)(this + 8) = v8; Size = 2 * v3; if ( !v3 ) goto LABEL_8; } else { Size = 2 * v3; if ( !v3 ) { LABEL_8: *(_DWORD *)(this + 4) = v3; v2[v3] = 0; return; } } Src = *(_WORD **)a2; if ( v3 == 1 ) { *v2 = *Src; } else { memcpy(v2, Src, Size); v2 = *(_WORD **)this; } goto LABEL_8; } } // 50FA90: using guessed type unsigned int var_20[8]; //----- (0050FB50) -------------------------------------------------------- void *__stdcall std::wstring::_M_create(unsigned int *a1, unsigned int a2) { unsigned int v2; // eax unsigned int v3; // edx 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(0x40000000u); } *a1 = v3; v2 = 2 * a2; } } return operator new(2 * v2 + 2); } //----- (0050FBC0) -------------------------------------------------------- int __thiscall std::wstring::_M_length(_DWORD *this, int a2) { int result; // eax result = a2; this[1] = a2; return result; } //----- (0050FBD0) -------------------------------------------------------- unsigned int __thiscall std::wstring::_M_mutate(int this, int a2, int a3, _WORD *a4, int a5) { _WORD *v5; // ebp unsigned int v7; // eax _WORD *v8; // eax _WORD *Block; // edx _WORD *v10; // edi _WORD *v11; // ecx unsigned int result; // eax _WORD *Src; // [esp+4h] [ebp-48h] int v14; // [esp+14h] [ebp-38h] int v15; // [esp+18h] [ebp-34h] _WORD *v16; // [esp+18h] [ebp-34h] _WORD *v17; // [esp+1Ch] [ebp-30h] _WORD *v18; // [esp+1Ch] [ebp-30h] unsigned int v19[8]; // [esp+2Ch] [ebp-20h] BYREF v5 = (_WORD *)(this + 8); v15 = a2 + a3; v14 = *(_DWORD *)(this + 4) - (a2 + a3); v19[0] = *(_DWORD *)(this + 4) + a5 - a3; if ( this + 8 == *(_DWORD *)this ) v7 = 7; else v7 = *(_DWORD *)(this + 8); v8 = std::wstring::_M_create(v19, v7); Block = *(_WORD **)this; v10 = v8; if ( a2 ) { if ( a2 == 1 ) { *v8 = *Block; } else { v17 = *(_WORD **)this; memcpy(v8, *(const void **)this, 2 * a2); Block = v17; } } if ( a4 && a5 ) { if ( a5 == 1 ) { v10[a2] = *a4; } else { v18 = Block; memcpy(&v10[a2], a4, 2 * a5); Block = v18; } } if ( v14 ) { v11 = &v10[a5 + a2]; if ( v14 == 1 ) { *v11 = Block[v15]; } else { Src = &Block[v15]; v16 = Block; memcpy(v11, Src, 2 * v14); Block = v16; } } if ( v5 != Block ) operator delete(Block); result = v19[0]; *(_DWORD *)this = v10; *(_DWORD *)(this + 8) = result; return result; } // 50FBD0: using guessed type unsigned int var_20[8]; //----- (0050FD30) -------------------------------------------------------- int __cdecl std::wstring::_S_assign(_WORD *a1, int a2, __int16 a3) { int result; // eax _WORD *v4; // edx result = a2; v4 = a1; if ( a2 == 1 ) { *a1 = a3; } else if ( a2 ) { do { *v4++ = a3; --result; } while ( result ); } return result; } //----- (0050FD70) -------------------------------------------------------- _DWORD *__thiscall std::wstring::push_back(_DWORD *this, __int16 a2) { int v3; // esi _DWORD *result; // eax unsigned int v5; // edi unsigned int v6; // edx v3 = this[1]; result = (_DWORD *)*this; v5 = v3 + 1; if ( (_DWORD *)*this == this + 2 ) v6 = 7; else v6 = this[2]; if ( v5 > v6 ) { std::wstring::_M_mutate((int)this, v3, 0, 0, 1); result = (_DWORD *)*this; } *((_WORD *)result + v3) = a2; this[1] = v5; *((_WORD *)result + v3 + 1) = 0; return result; } //----- (0050FDF0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::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; *((_WORD *)a2 + 4) = 0; this[1] = v3; return result; } //----- (0050FE50) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3) { _WORD *result; // eax int v4; // ebx int v5; // ebx int v6; // edx result = (_WORD *)a2; *this = this + 2; if ( result + 4 == *(_WORD **)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 = *(_WORD **)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; this[2] = v5; *(_WORD *)(a2 + 8) = 0; } return result; } //----- (0050FED0) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) { int v3; // eax size_t v4; // eax int v6; // [esp+8h] [ebp-24h] _DWORD *v7; // [esp+1Ch] [ebp-10h] *this = 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); } // 50FF05: variable 'v6' is possibly undefined //----- (0050FF20) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); } //----- (0050FF40) -------------------------------------------------------- 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; } //----- (0050FF60) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2) { int v3; // [esp+8h] [ebp-14h] *this = this + 2; LOBYTE(v3) = 0; return std::wstring::_M_construct(this, *(_WORD **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v3); } // 50FF80: variable 'v3' is possibly undefined //----- (0050FF90) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3) { _WORD *result; // eax _WORD *Src; // ebp int v6; // edx size_t Size; // edi int v8; // esi int v9; // [esp+1Ch] [ebp-20h] int v10; // [esp+1Ch] [ebp-20h] result = this + 2; *this = this + 2; Src = *(_WORD **)a2; v6 = *(_DWORD *)(a2 + 4); Size = 2 * v6; v8 = (2 * v6) >> 1; if ( (unsigned int)(2 * v6) > 0xE ) { if ( Size > 0x3FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); if ( (unsigned int)(v8 + 1) > 0x3FFFFFFF ) std::__throw_bad_alloc(); v10 = *(_DWORD *)(a2 + 4); result = operator new(Size + 2); this[2] = v8; v6 = v10; *this = result; } if ( v8 == 1 ) { *result = *Src; } else if ( v8 ) { v9 = v6; memcpy(result, Src, Size); result = (_WORD *)*this; v6 = v9; } this[1] = v8; result[v6] = 0; return result; } //----- (00510040) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v4; // eax *this = this + 2; v4 = 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, a2[1]); LOBYTE(a4) = 0; return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * (v4 - a3), a4); } //----- (005100A0) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v4; // esi unsigned int v5; // eax unsigned int v6; // eax *this = this + 2; v4 = a4; v5 = 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, a2[1]); v6 = v5 - a3; LOBYTE(a4) = 0; if ( v6 > v4 ) v6 = v4; return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, a4); } //----- (00510110) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *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::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); } // 510149: variable 'v8' is possibly undefined //----- (00510180) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); } //----- (005101A0) -------------------------------------------------------- int __thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4) { _WORD *v5; // ecx int result; // eax _WORD *v7; // eax _WORD *v8; // edx unsigned int v9; // eax v5 = this + 2; *this = v5; if ( a2 > 7 ) { if ( a2 > 0x1FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); v7 = operator new(2 * a2 + 2); this[2] = a2; *this = v7; v5 = v7; } else { if ( !a2 ) goto LABEL_3; if ( a2 == 1 ) { *((_WORD *)this + 4) = a3; goto LABEL_3; } } v8 = v5; v9 = a2; do { *v8++ = a3; --v9; } while ( v9 ); LABEL_3: result = 0; this[1] = a2; v5[a2] = 0; return result; } //----- (00510230) -------------------------------------------------------- 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; } //----- (00510250) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>( _DWORD *this, _WORD *Src, int a3, int a4) { _WORD *result; // eax size_t Size; // ebx int v7; // edi result = this + 2; *this = this + 2; Size = a3 - (_DWORD)Src; v7 = (a3 - (int)Src) >> 1; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) { if ( Size > 0x3FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); if ( (unsigned int)(v7 + 1) > 0x3FFFFFFF ) std::__throw_bad_alloc(); result = operator new(Size + 2); this[2] = v7; *this = result; } if ( v7 == 1 ) { *result = *Src; } else if ( v7 ) { memcpy(result, Src, Size); result = (_WORD *)*this; } this[1] = v7; *(_WORD *)((char *)result + Size) = 0; return result; } //----- (005102F0) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::wstring::_M_construct(this, a2, a3, a4); } //----- (00510300) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::wstring::_M_construct(this, a2, a3, a4); } //----- (00510310) -------------------------------------------------------- _DWORD *__thiscall std::wstring::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; *((_WORD *)a2 + 4) = 0; this[1] = v3; return result; } //----- (00510370) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3) { _WORD *result; // eax int v4; // ebx int v5; // ebx int v6; // edx result = (_WORD *)a2; *this = this + 2; if ( result + 4 == *(_WORD **)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 = *(_WORD **)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; this[2] = v5; *(_WORD *)(a2 + 8) = 0; } return result; } //----- (005103F0) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) { int v3; // eax size_t v4; // eax int v6; // [esp+8h] [ebp-24h] _DWORD *v7; // [esp+1Ch] [ebp-10h] *this = 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); } // 510425: variable 'v6' is possibly undefined //----- (00510440) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); } //----- (00510460) -------------------------------------------------------- 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; } //----- (00510480) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2) { int v3; // [esp+8h] [ebp-14h] *this = this + 2; LOBYTE(v3) = 0; return std::wstring::_M_construct(this, *(_WORD **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v3); } // 5104A0: variable 'v3' is possibly undefined //----- (005104B0) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3) { _WORD *result; // eax _WORD *Src; // ebp int v6; // edx size_t Size; // edi int v8; // esi int v9; // [esp+1Ch] [ebp-20h] int v10; // [esp+1Ch] [ebp-20h] result = this + 2; *this = this + 2; Src = *(_WORD **)a2; v6 = *(_DWORD *)(a2 + 4); Size = 2 * v6; v8 = (2 * v6) >> 1; if ( (unsigned int)(2 * v6) > 0xE ) { if ( Size > 0x3FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); if ( (unsigned int)(v8 + 1) > 0x3FFFFFFF ) std::__throw_bad_alloc(); v10 = *(_DWORD *)(a2 + 4); result = operator new(Size + 2); this[2] = v8; v6 = v10; *this = result; } if ( v8 == 1 ) { *result = *Src; } else if ( v8 ) { v9 = v6; memcpy(result, Src, Size); result = (_WORD *)*this; v6 = v9; } this[1] = v8; result[v6] = 0; return result; } //----- (00510560) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v4; // eax *this = this + 2; v4 = 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, a2[1]); LOBYTE(a4) = 0; return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * (v4 - a3), a4); } //----- (005105C0) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) { unsigned int v4; // esi unsigned int v5; // eax unsigned int v6; // eax *this = this + 2; v4 = a4; v5 = 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, a2[1]); v6 = v5 - a3; LOBYTE(a4) = 0; if ( v6 > v4 ) v6 = v4; return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, a4); } //----- (00510630) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *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::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); } // 510669: variable 'v8' is possibly undefined //----- (005106A0) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); } //----- (005106C0) -------------------------------------------------------- int __thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4) { _WORD *v5; // ecx int result; // eax _WORD *v7; // eax _WORD *v8; // edx unsigned int v9; // eax v5 = this + 2; *this = v5; if ( a2 > 7 ) { if ( a2 > 0x1FFFFFFF ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); v7 = operator new(2 * a2 + 2); this[2] = a2; *this = v7; v5 = v7; } else { if ( !a2 ) goto LABEL_3; if ( a2 == 1 ) { *((_WORD *)this + 4) = a3; goto LABEL_3; } } v8 = v5; v9 = a2; do { *v8++ = a3; --v9; } while ( v9 ); LABEL_3: result = 0; this[1] = a2; v5[a2] = 0; return result; } //----- (00510750) -------------------------------------------------------- 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; } //----- (00510770) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>( _DWORD *this, _WORD *Src, int a3, int a4) { _WORD *result; // eax size_t Size; // ebx int v7; // edi result = this + 2; *this = this + 2; Size = a3 - (_DWORD)Src; v7 = (a3 - (int)Src) >> 1; if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) { if ( Size > 0x3FFFFFFE ) std::__throw_length_error((std::length_error *)"basic_string::_M_create"); if ( (unsigned int)(v7 + 1) > 0x3FFFFFFF ) std::__throw_bad_alloc(); result = operator new(Size + 2); this[2] = v7; *this = result; } if ( v7 == 1 ) { *result = *Src; } else if ( v7 ) { memcpy(result, Src, Size); result = (_WORD *)*this; } this[1] = v7; *(_WORD *)((char *)result + Size) = 0; return result; } //----- (00510810) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::wstring::_M_construct(this, a2, a3, a4); } //----- (00510820) -------------------------------------------------------- _WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) { LOBYTE(a4) = 0; *this = this + 2; return std::wstring::_M_construct(this, a2, a3, a4); } //----- (00510830) -------------------------------------------------------- void __fastcall std::wstring::~wstring(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (00510860) -------------------------------------------------------- void __fastcall std::wstring::~wstring(void **a1) { if ( *a1 != a1 + 2 ) operator delete(*a1); } //----- (00510890) -------------------------------------------------------- _DWORD *__thiscall std::wstring::operator=(_DWORD *this, int a2) { _WORD *v3; // eax _WORD *Src; // edx int v5; // ecx int v6; // ebp int v8; // edi int v9; // [esp+1Ch] [ebp-20h] v3 = (_WORD *)*this; Src = *(_WORD **)a2; v5 = *(_DWORD *)(a2 + 4); if ( a2 + 8 != *(_DWORD *)a2 ) { v9 = *(_DWORD *)(a2 + 8); if ( v3 == (_WORD *)(this + 2) ) { *this = Src; this[1] = v5; this[2] = v9; } else { *this = Src; v6 = this[2]; this[1] = v5; this[2] = v9; if ( v3 ) { *(_DWORD *)a2 = v3; *(_DWORD *)(a2 + 8) = v6; goto LABEL_5; } } *(_DWORD *)a2 = a2 + 8; v3 = (_WORD *)(a2 + 8); goto LABEL_5; } v8 = v5; if ( v5 ) { if ( v5 == 1 ) { *v3 = *Src; v8 = 1; } else { memcpy(v3, Src, 2 * v5); v5 = *(_DWORD *)(a2 + 4); v3 = (_WORD *)*this; Src = *(_WORD **)a2; v8 = v5; } } this[1] = v5; v3[v8] = 0; v3 = Src; LABEL_5: *(_DWORD *)(a2 + 4) = 0; *v3 = 0; return this; } //----- (00510950) -------------------------------------------------------- unsigned int *__thiscall std::wstring::operator=(unsigned int *this, wchar_t *String) { unsigned int v3; // eax v3 = wcslen(String); return std::wstring::_M_replace(this, 0, this[1], String, v3); } //----- (00510990) -------------------------------------------------------- void *__thiscall std::wstring::operator=(void *this, int a2) { std::wstring::_M_assign((int)this, a2); return this; } //----- (005109B0) -------------------------------------------------------- unsigned int *__thiscall std::wstring::operator=(unsigned int *this, _WORD *a2, int a3) { std::wstring::_M_replace(this, 0, this[1], a2, a3); return this; } //----- (005109F0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::operator=(_DWORD *this, __int16 a2) { std::wstring::_M_replace_aux(this, 0, this[1], 1u, a2); return this; } //----- (00510A30) -------------------------------------------------------- int __thiscall std::wstring::operator[](_DWORD *this, int a2) { return *this + 2 * a2; } //----- (00510A40) -------------------------------------------------------- _DWORD *__thiscall std::wstring::operator+=(_DWORD *this, wchar_t *String) { unsigned int v3; // eax int v4; // ecx _DWORD *v5; // edx unsigned int v6; // edi unsigned int v7; // ebp _WORD *v8; // ecx v3 = wcslen(String); v4 = this[1]; if ( v3 > 0x1FFFFFFF - v4 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v5 = (_DWORD *)*this; v6 = v3 + v4; if ( (_DWORD *)*this == this + 2 ) v7 = 7; else v7 = this[2]; if ( v6 > v7 ) { std::wstring::_M_mutate((int)this, this[1], 0, String, v3); v5 = (_DWORD *)*this; } else if ( v3 ) { v8 = (_WORD *)v5 + v4; if ( v3 == 1 ) { *v8 = *String; } else { memcpy(v8, String, 2 * v3); v5 = (_DWORD *)*this; } } this[1] = v6; *((_WORD *)v5 + v6) = 0; return this; } //----- (00510B00) -------------------------------------------------------- _DWORD *__thiscall std::wstring::operator+=(_DWORD *this, int a2) { _DWORD *v3; // edi int v4; // ecx int v5; // eax _WORD *v6; // ebp _DWORD *v7; // edx unsigned int v8; // esi unsigned int v9; // edi _WORD *v10; // ecx v3 = this + 2; v4 = this[1]; v5 = *(_DWORD *)(a2 + 4); v6 = *(_WORD **)a2; v7 = (_DWORD *)*this; v8 = v5 + v4; if ( (_DWORD *)*this == v3 ) v9 = 7; else v9 = this[2]; if ( v8 > v9 ) { std::wstring::_M_mutate((int)this, v4, 0, v6, v5); v7 = (_DWORD *)*this; } else if ( v5 ) { v10 = (_WORD *)v7 + v4; if ( v5 == 1 ) { *v10 = *v6; } else { memcpy(v10, *(const void **)a2, 2 * v5); v7 = (_DWORD *)*this; } } this[1] = v8; *((_WORD *)v7 + v8) = 0; return this; } //----- (00510BA0) -------------------------------------------------------- _DWORD *__thiscall std::wstring::operator+=(_DWORD *this, _WORD *Src, unsigned int a3) { int v4; // ecx _DWORD *v5; // edx unsigned int v6; // esi unsigned int v7; // ebp _WORD *v8; // ecx v4 = this[1]; if ( a3 > 0x1FFFFFFF - v4 ) std::__throw_length_error((std::length_error *)"basic_string::append"); v5 = (_DWORD *)*this; v6 = a3 + v4; if ( (_DWORD *)*this == this + 2 ) v7 = 7; else v7 = this[2]; if ( v6 > v7 ) { std::wstring::_M_mutate((int)this, v4, 0, Src, a3); v5 = (_DWORD *)*this; } else if ( a3 ) { v8 = (_WORD *)v5 + v4; if ( a3 == 1 ) { *v8 = *Src; } else { memcpy(v8, Src, 2 * a3); v5 = (_DWORD *)*this; } } this[1] = v6; *((_WORD *)v5 + v6) = 0; return this; } //----- (00510C60) -------------------------------------------------------- int __thiscall std::wstring::operator+=(char *this, __int16 a2) { int result; // eax char *v3; // ecx int v4; // ebx char *v5; // edx unsigned int v6; // esi unsigned int v7; // ecx char **v8; // [esp+1Ch] [ebp-10h] result = (int)this; v3 = this + 8; v4 = *((_DWORD *)v3 - 1); v5 = (char *)*((_DWORD *)v3 - 2); v6 = v4 + 1; if ( v5 == v3 ) v7 = 7; else v7 = *(_DWORD *)(result + 8); if ( v6 > v7 ) { v8 = (char **)result; std::wstring::_M_mutate(result, v4, 0, 0, 1); result = (int)v8; v5 = *v8; } *(_WORD *)&v5[2 * v4] = a2; *(_DWORD *)(result + 4) = v6; *(_WORD *)&v5[2 * v4 + 2] = 0; return result; } //----- (00510CE0) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_55FC68; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_55F8F0; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 55F8F0: using guessed type int (*off_55F8F0)(); // 55FC68: using guessed type int (*off_55FC68)(); //----- (00510E20) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; this[1] = a3 != 0; *this = &off_55FC68; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_55F8F0; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 55F8F0: using guessed type int (*off_55F8F0)(); // 55FC68: using guessed type int (*off_55FC68)(); //----- (00510F70) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_55FC68; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_55F8F0; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 55F8F0: using guessed type int (*off_55F8F0)(); // 55FC68: using guessed type int (*off_55FC68)(); //----- (005110B0) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; this[1] = a3 != 0; *this = &off_55FC68; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_55F8F0; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 55F8F0: using guessed type int (*off_55F8F0)(); // 55FC68: using guessed type int (*off_55FC68)(); //----- (00511200) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_55FC68; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 51123E: variable 'lpfctx' is possibly undefined // 55FC68: using guessed type int (*off_55FC68)(); //----- (00511260) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FC68; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 51129E: variable 'lpfctx' is possibly undefined // 55FC68: using guessed type int (*off_55FC68)(); //----- (005112C0) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FC68; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 5112FE: variable 'lpfctx' is possibly undefined // 55FC68: using guessed type int (*off_55FC68)(); //----- (00511320) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_55FC84; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_55F90C; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 55F90C: using guessed type int (*off_55F90C)(); // 55FC84: using guessed type int (*off_55FC84)(); //----- (00511460) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; this[1] = a3 != 0; *this = &off_55FC84; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_55F90C; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 55F90C: using guessed type int (*off_55F90C)(); // 55FC84: using guessed type int (*off_55FC84)(); //----- (005115B0) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_55FC84; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_55F90C; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 55F90C: using guessed type int (*off_55F90C)(); // 55FC84: using guessed type int (*off_55FC84)(); //----- (005116F0) -------------------------------------------------------- void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) { int **v4; // [esp+14h] [ebp-48h] v4 = *a2; this[1] = a3 != 0; *this = &off_55FC84; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_55F90C; if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) { if ( strcmp((const char *)v4, "POSIX") ) { std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); } } } // 55F90C: using guessed type int (*off_55F90C)(); // 55FC84: using guessed type int (*off_55FC84)(); //----- (00511840) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_55FC84; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 51187E: variable 'lpfctx' is possibly undefined // 55FC84: using guessed type int (*off_55FC84)(); //----- (005118A0) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FC84; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 5118DE: variable 'lpfctx' is possibly undefined // 55FC84: using guessed type int (*off_55FC84)(); //----- (00511900) -------------------------------------------------------- void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FC84; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 51193E: variable 'lpfctx' is possibly undefined // 55FC84: using guessed type int (*off_55FC84)(); //----- (00511960) -------------------------------------------------------- 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 int v7; // ebp int v8; // esi 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]; v7 = v6 - v5; v8 = a2[6]; *((_QWORD *)this + 5) = v7; *((_QWORD *)this + 6) = v8 - v3; if ( result < v6 ) result = v6; } if ( result ) { result -= v3; a2[10] = result; } return result; } //----- (00511A50) -------------------------------------------------------- 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 int v7; // ebp int v8; // esi 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]; v7 = v6 - v5; v8 = a2[6]; *((_QWORD *)this + 5) = v7; *((_QWORD *)this + 6) = v8 - v3; if ( result < v6 ) result = v6; } if ( result ) { result -= v3; a2[10] = result; } return result; } //----- (00511B40) -------------------------------------------------------- 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; } //----- (00511BD0) -------------------------------------------------------- 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; } //----- (00511C60) -------------------------------------------------------- unsigned int __fastcall std::stringbuf::_M_update_egptr(int a1) { unsigned int result; // eax result = *(_DWORD *)(a1 + 20); if ( result && *(_DWORD *)(a1 + 12) < result ) { if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) { *(_DWORD *)(a1 + 4) = result; *(_DWORD *)(a1 + 8) = result; } *(_DWORD *)(a1 + 12) = result; } return result; } //----- (00511C90) -------------------------------------------------------- _DWORD *__thiscall std::stringbuf::_M_stringbuf_init(_DWORD *this, int a2) { int v2; // esi int v3; // edx _DWORD *result; // eax char *v5; // edx int v6; // edi int v7; // [esp+0h] [ebp-2Ch] v2 = 0; v3 = this[10]; result = (_DWORD *)this[9]; this[8] = a2; if ( (a2 & 3) != 0 ) v2 = v3; v5 = (char *)result + v3; if ( result == this + 11 ) v6 = 15; else v6 = this[11]; if ( (a2 & 8) != 0 ) { this[1] = result; this[2] = result; this[3] = v5; } if ( (a2 & 0x10) != 0 ) { this[6] = (char *)result + v6; this[4] = result; if ( (unsigned int)v2 > 0x7FFFFFFFuLL ) { v7 = v2 - 0x7FFFFFFF; if ( (((unsigned __int64)(unsigned int)v2 - 0x7FFFFFFF) >> 32) | (unsigned int)(v2 + 1) ) { result = (_DWORD *)((char *)result + 0x7FFFFFFF); } else { v7 = 1; result = (_DWORD *)((char *)result - 2); } v2 = v7; } result = (_DWORD *)((char *)result + v2); this[5] = result; if ( (a2 & 8) == 0 ) { this[1] = v5; this[2] = v5; this[3] = v5; } } return result; } //----- (00511D90) -------------------------------------------------------- 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); } //----- (00511DF0) -------------------------------------------------------- void __thiscall std::stringbuf::swap(_DWORD *this, int a2) { int v2; // edx int v3; // esi int v4; // ebx unsigned int v5; // eax unsigned int v6; // ecx int v7; // ebx int v8; // esi int v9; // ebx int v10; // ecx unsigned int v11; // eax unsigned int v12; // edi int v13; // eax int v14; // edx int v15; // eax int v16; // edx int v17; // eax int v18; // edx int v19; // eax int v20; // edx int v21; // eax int v22; // eax _DWORD *v23; // ebx int v24; // esi int v25; // edx int v26; // ecx int v27; // edi __int64 v28; // rax int v29; // ecx _DWORD *v30; // ebx int v31; // esi int v32; // eax int v33; // ecx __int64 v34; // rax int v35; // ecx int v36; // esi struct _Unwind_Exception *v37; // edi struct _Unwind_Exception *v38; // ecx const std::locale *v39; // [esp+4h] [ebp-E4h] const std::locale *v40; // [esp+4h] [ebp-E4h] const std::locale *v41; // [esp+4h] [ebp-E4h] const std::locale *v42; // [esp+4h] [ebp-E4h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-D0h] _DWORD *v45; // [esp+54h] [ebp-94h] BYREF _DWORD *v46; // [esp+58h] [ebp-90h] BYREF _DWORD *v47; // [esp+5Ch] [ebp-8Ch] BYREF _DWORD *v48; // [esp+60h] [ebp-88h] __int64 v49; // [esp+68h] [ebp-80h] __int64 v50; // [esp+70h] [ebp-78h] __int64 v51; // [esp+78h] [ebp-70h] __int64 v52; // [esp+80h] [ebp-68h] __int64 v53; // [esp+88h] [ebp-60h] __int64 v54; // [esp+90h] [ebp-58h] _DWORD *v55; // [esp+98h] [ebp-50h] __int64 v56; // [esp+A0h] [ebp-48h] __int64 v57; // [esp+A8h] [ebp-40h] __int64 v58; // [esp+B0h] [ebp-38h] __int64 v59; // [esp+B8h] [ebp-30h] __int64 v60; // [esp+C0h] [ebp-28h] __int64 v61; // [esp+C8h] [ebp-20h] v49 = -1LL; v48 = (_DWORD *)a2; v2 = this[1]; v50 = -1LL; v3 = this[9]; v4 = this[4]; v51 = -1LL; v52 = -1LL; v53 = -1LL; v54 = -1LL; if ( !v2 ) { v5 = 0; if ( !v4 ) goto LABEL_7; goto LABEL_3; } v49 = v2 - v3; v50 = this[2] - v3; v5 = this[3]; v51 = (int)(v5 - v3); if ( v4 ) { LABEL_3: v52 = v4 - v3; v6 = this[5]; LODWORD(v53) = this[5] - v4; v7 = this[6]; v53 = (int)v53; v54 = v7 - v3; if ( v5 < v6 ) v5 = v6; } if ( v5 ) this[10] = v5 - v3; LABEL_7: v56 = -1LL; v55 = this; v57 = -1LL; v8 = *(_DWORD *)(a2 + 4); v58 = -1LL; v9 = *(_DWORD *)(a2 + 36); v10 = *(_DWORD *)(a2 + 16); v59 = -1LL; v60 = -1LL; v61 = -1LL; if ( !v8 ) { v11 = 0; if ( !v10 ) goto LABEL_13; goto LABEL_9; } v56 = v8 - v9; v57 = *(_DWORD *)(a2 + 8) - v9; v11 = *(_DWORD *)(a2 + 12); v58 = (int)(v11 - v9); if ( v10 ) { LABEL_9: v59 = v10 - v9; v12 = *(_DWORD *)(a2 + 20); v60 = (int)(v12 - v10); v61 = *(_DWORD *)(a2 + 24) - v9; if ( v11 < v12 ) v11 = v12; } if ( v11 ) *(_DWORD *)(a2 + 40) = v11 - v9; LABEL_13: this[1] = v8; *(_DWORD *)(a2 + 4) = v2; v13 = this[2]; this[2] = *(_DWORD *)(a2 + 8); v14 = *(_DWORD *)(a2 + 12); *(_DWORD *)(a2 + 8) = v13; v15 = this[3]; this[3] = v14; v16 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a2 + 12) = v15; v17 = this[4]; this[4] = v16; v18 = *(_DWORD *)(a2 + 20); *(_DWORD *)(a2 + 16) = v17; v19 = this[5]; this[5] = v18; v20 = *(_DWORD *)(a2 + 24); *(_DWORD *)(a2 + 20) = v19; v21 = this[6]; this[6] = v20; *(_DWORD *)(a2 + 24) = v21; std::locale::locale((volatile signed __int32 **)&v47, (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 **)&v47); std::locale::~locale(&v47); std::locale::locale((volatile signed __int32 **)&v45, (volatile signed __int32 **)(a2 + 28), v40); std::locale::locale((volatile signed __int32 **)&v46, (volatile signed __int32 **)this + 7, v41); (*(void (__thiscall **)(_DWORD *, _DWORD **))(*this + 8))(this, &v45); std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)&v45); std::locale::locale((volatile signed __int32 **)&v47, (volatile signed __int32 **)(a2 + 28), v42); (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)a2 + 8))(a2, &v46); std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v46); std::locale::~locale(&v47); std::locale::~locale(&v46); std::locale::~locale(&v45); v22 = this[8]; this[8] = *(_DWORD *)(a2 + 32); *(_DWORD *)(a2 + 32) = v22; std::string::swap(this + 9, (_DWORD *)(a2 + 36)); v23 = v55; v24 = v55[9]; if ( ((unsigned int)v56 & HIDWORD(v56)) != -1 ) { v25 = v58; v26 = v57; v55[1] = v24 + v56; v23[2] = v24 + v26; v23[3] = v24 + v25; } if ( ((unsigned int)v59 & HIDWORD(v59)) != -1 ) { v27 = v61; v28 = v60; v29 = v24 + v59; v23[4] = v24 + v59; for ( v23[6] = v24 + v27; v28 > 0x7FFFFFFF; v28 -= 0x7FFFFFFFLL ) v29 += 0x7FFFFFFF; v23[5] = v29 + v28; } v30 = v48; v31 = v48[9]; if ( ((unsigned int)v49 & HIDWORD(v49)) != -1 ) { v32 = v51; v33 = v50; v48[1] = v31 + v49; v30[2] = v31 + v33; v30[3] = v31 + v32; } if ( ((unsigned int)v52 & HIDWORD(v52)) != -1 ) { v34 = v53; v35 = v31 + v52; v36 = v31 + v54; v30[4] = v35; v37 = (struct _Unwind_Exception *)v35; v30[6] = v36; if ( v34 > 0x7FFFFFFF ) { v38 = (struct _Unwind_Exception *)(v35 + 0x7FFFFFFF); do { lpuexcpta = v38; v34 -= 0x7FFFFFFFLL; v38 = (struct _Unwind_Exception *)((char *)v38 + 0x7FFFFFFF); } while ( v34 > 0x7FFFFFFF ); v37 = lpuexcpta; } v30[5] = (char *)v37 + v34; } } // 5120BA: variable 'v39' is possibly undefined // 512102: variable 'v40' is possibly undefined // 512115: variable 'v41' is possibly undefined // 51215E: variable 'v42' is possibly undefined //----- (005123C0) -------------------------------------------------------- _DWORD *__thiscall std::stringbuf::setbuf(int this, _DWORD *a2, int a3) { _DWORD *result; // eax int v4; // ebx _DWORD *v5; // esi int v6; // edi int v7; // ecx int v8; // ebp int v9; // ebp int v10; // [esp+0h] [ebp-14h] result = (_DWORD *)this; if ( a2 && a3 >= 0 ) { *(_DWORD *)(this + 40) = 0; v4 = a3; **(_BYTE **)(this + 36) = 0; v5 = *(_DWORD **)(this + 36); v10 = *(_DWORD *)(this + 32) & 0x10; v6 = *(_DWORD *)(this + 32) & 8; v7 = (int)a2 + *(_DWORD *)(this + 40); if ( v5 == result + 11 ) v8 = 15; else v8 = result[11]; v9 = (int)a2 + v8; if ( a2 != v5 ) { v7 += a3; v4 = 0; v9 = v7; } if ( v6 ) { result[1] = a2; result[2] = (char *)a2 + v4; result[3] = v7; if ( v10 ) { result[5] = a2; result[4] = a2; result[6] = v9; } } else if ( v10 ) { result[5] = a2; result[4] = a2; result[6] = v9; result[1] = v7; result[2] = v7; result[3] = v7; } } return result; } //----- (00512480) -------------------------------------------------------- int __thiscall std::stringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4) { _DWORD *v4; // edi int result; // eax int v6; // esi int v7; // ebx int v8; // ebp int v9; // edx int v10; // ebp __int64 v11; // rax int v12; // [esp+4h] [ebp-18h] v4 = (_DWORD *)this[9]; result = (int)a2 + this[10]; v12 = result; v6 = this[8] & 0x10; v7 = this[8] & 8; if ( v4 == this + 11 ) v8 = 15; else v8 = this[11]; if ( a2 == v4 ) { v10 = (int)a2 + v8; } else { v9 = a3; a3 = 0; v12 = v9 + result; result = v12; v10 = v12; } if ( v7 ) { this[1] = a2; this[2] = (char *)a2 + a3; result = v12; this[3] = v12; } if ( v6 ) { this[6] = v10; this[4] = a2; if ( a4 > 0x7FFFFFFFuLL ) { v11 = a4 - 0x7FFFFFFFLL; if ( (a4 + 1) | HIDWORD(v11) ) { a2 = (_DWORD *)((char *)a2 + 0x7FFFFFFF); } else { a2 = (_DWORD *)((char *)a2 - 2); LODWORD(v11) = 1; } a4 = v11; } result = (int)a2 + a4; this[5] = (char *)a2 + a4; if ( !v7 ) { result = v12; this[1] = v12; this[2] = v12; this[3] = v12; } } return result; } //----- (00512590) -------------------------------------------------------- _DWORD *__thiscall std::stringbuf::seekoff(_DWORD *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5) { unsigned int v5; // edx unsigned __int8 v6; // bp unsigned __int8 v7; // di unsigned int v9; // eax _DWORD *v10; // ebx int v11; // esi int v12; // edi __int64 v13; // [esp+0h] [ebp-34h] unsigned __int8 v14; // [esp+8h] [ebp-2Ch] __int64 v15; // [esp+8h] [ebp-2Ch] int v16; // [esp+18h] [ebp-1Ch] char v17; // [esp+1Fh] [ebp-15h] *this = -1; this[1] = -1; this[2] = 0; v13 = a3; v5 = (a5 & a2[8]) >> 4; v6 = (a4 != 1) & v5 & (((unsigned __int8)a5 & a2[8] & 8) != 0); v14 = ((a5 >> 3) ^ 1) & 1 & v5; v7 = (((unsigned __int8)a5 & a2[8] & 8) != 0) & ((a5 >> 4) ^ 1); if ( v7 ) { v16 = a2[1]; if ( !v16 && a3 ) return this; v17 = v6 | v14; } else { v16 = a2[4]; if ( !v16 && a3 ) return this; v17 = v14 | v6; if ( !(v14 | v6) ) return this; } v9 = a2[5]; if ( v9 ) { v10 = a2; if ( v9 > a2[3] ) { if ( (a2[8] & 8) == 0 ) { a2[1] = v9; v10 = a2; a2[2] = v9; } v10[3] = v9; } } if ( a4 == 1 ) { v15 = a3 + (int)(v9 - v16); v13 = a2[2] - v16 + a3; } else { v15 = a3; if ( a4 == 2 ) { v13 = a2[3] - v16 + a3; v15 = v13; } } if ( v6 | v7 && v13 >= 0 && a2[3] - v16 >= v13 ) { *(_QWORD *)this = v13; v12 = a2[1] + v13; this[2] = 0; a2[2] = v12; } if ( v15 >= 0 && v17 && a2[3] - v16 >= v15 ) { *(_QWORD *)this = v15; v11 = a2[4] + v15; this[2] = 0; a2[5] = v11; } return this; } //----- (00512800) -------------------------------------------------------- _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 ( (a6 & v7) != 0 ) v8 = a2[1]; else v8 = a2[4]; if ( (!a3 || v8) && (v10 & 0x18) != 0 ) { v9 = a2[5]; if ( v9 && v9 > a2[3] ) { if ( !v7 ) { a2[1] = v9; a2[2] = v9; } a2[3] = v9; } if ( a3 >= 0 && a2[3] - v8 >= a3 ) { if ( (a6 & v7) != 0 ) a2[2] = a3 + a2[1]; if ( (v10 & 0x10) != 0 ) a2[5] = a2[4] + a3; *(_QWORD *)result = a3; result[2] = a4; } } return result; } //----- (005128F0) -------------------------------------------------------- int __thiscall std::stringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4) { __int64 v5; // rax int v6; // ecx int result; // eax v5 = a4; this[6] = a3; v6 = a2; for ( this[4] = a2; v5 > 0x7FFFFFFF; v5 -= 0x7FFFFFFFLL ) v6 += 0x7FFFFFFF; result = v6 + v5; this[5] = result; return result; } //----- (00512950) -------------------------------------------------------- int __thiscall std::stringbuf::overflow(_DWORD *this, int a2) { int v2; // esi _DWORD *v3; // ecx unsigned int v4; // eax unsigned int v5; // ebx int v6; // edi unsigned int v7; // eax char *v8; // eax _BYTE *v9; // edx unsigned int v10; // eax _BYTE *v12; // edx int v13; // eax int v14; // ebx int v15; // eax _BYTE *v16; // [esp+14h] [ebp-74h] int v17; // [esp+14h] [ebp-74h] size_t v18; // [esp+14h] [ebp-74h] void *Block; // [esp+58h] [ebp-30h] BYREF int v22; // [esp+5Ch] [ebp-2Ch] int v23[10]; // [esp+60h] [ebp-28h] BYREF v2 = this[8]; if ( (v2 & 0x10) == 0 ) return -1; if ( a2 == -1 ) return 0; v3 = (_DWORD *)this[9]; if ( v3 == this + 11 ) v4 = 15; else v4 = this[11]; v5 = this[6]; v6 = this[4]; v16 = (_BYTE *)this[5]; if ( v5 - v6 >= v4 ) { if ( v5 > (unsigned int)v16 ) goto LABEL_21; if ( v4 != 0x3FFFFFFF ) { if ( v5 <= (unsigned int)v16 ) { v7 = 2 * v4; LOBYTE(v23[0]) = 0; Block = v23; if ( v7 > 0x3FFFFFFF ) v7 = 0x3FFFFFFF; v22 = 0; if ( v7 < 0x200 ) v7 = 512; std::string::reserve(&Block, v7); v8 = (char *)this[4]; v17 = v22; if ( v8 ) { std::string::_M_replace((unsigned int *)&Block, 0, v22, v8, this[6] - (_DWORD)v8); v17 = v22; } v9 = Block; v10 = 15; if ( Block != v23 ) v10 = v23[0]; if ( v17 + 1 > v10 ) { std::string::_M_mutate((int)&Block, v17, 0, 0, 1u); v9 = Block; } v9[v17] = a2; v22 = v17 + 1; *((_BYTE *)Block + v17 + 1) = 0; std::string::swap(this + 9, &Block); std::stringbuf::_M_sync(this, (_DWORD *)this[9], this[2] - this[1], this[5] - this[4]); if ( Block != v23 ) operator delete(Block); goto LABEL_22; } LABEL_21: *v16 = a2; LABEL_22: ++this[5]; return a2; } return -1; } this[4] = v3; v12 = &v16[(_DWORD)v3 - v6]; this[6] = (char *)v3 + v4; this[5] = v12; if ( (v2 & 8) != 0 ) { v18 = this[1]; v13 = this[3]; this[1] = v3; v14 = (int)v3 + v13 - v18 + 1; v15 = this[2]; this[3] = v14; this[2] = (char *)v3 + v15 - v18; } *v12 = a2; ++this[5]; return a2; } //----- (00512C10) -------------------------------------------------------- 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; } //----- (00512C60) -------------------------------------------------------- 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); } //----- (00512C90) -------------------------------------------------------- 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; } //----- (00512CD0) -------------------------------------------------------- void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale *a2) { int v2; // edx unsigned int v3; // eax int v4; // ecx int v5; // eax std::locale *v6; // eax int v7; // ebx int v8; // ecx int v9; // ebx char *v10; // eax int v11; // edx int v12; // ecx char *v13; // ecx const std::locale *v14; // [esp+4h] [ebp-A4h] char *v15; // [esp+14h] [ebp-94h] __int64 v18; // [esp+60h] [ebp-48h] int v19; // [esp+68h] [ebp-40h] __int64 v20; // [esp+70h] [ebp-38h] __int64 v21; // [esp+78h] [ebp-30h] int v22; // [esp+80h] [ebp-28h] int v23; // [esp+88h] [ebp-20h] v18 = -1LL; v19 = -1; v2 = *((_DWORD *)a2 + 9); v3 = *((_DWORD *)a2 + 1); LODWORD(v20) = -1; v21 = -1LL; v22 = -1; v23 = -1; if ( !v3 ) { v4 = *((_DWORD *)a2 + 4); if ( !v4 ) goto LABEL_7; goto LABEL_3; } v18 = (int)(v3 - v2); v19 = *((_DWORD *)a2 + 2) - v2; v3 = *((_DWORD *)a2 + 3); v20 = (int)(v3 - v2); v4 = *((_DWORD *)a2 + 4); if ( v4 ) { LABEL_3: v21 = v4 - v2; v22 = *((_DWORD *)a2 + 5) - v4; v23 = *((_DWORD *)a2 + 6) - v2; if ( v3 < *((_DWORD *)a2 + 5) ) v3 = *((_DWORD *)a2 + 5); } if ( v3 ) *((_DWORD *)a2 + 10) = v3 - v2; LABEL_7: std::streambuf::basic_streambuf(this, a2, v14); v5 = *((_DWORD *)a2 + 8); *this = &off_55F928; this[9] = this + 11; this[8] = v5; v15 = (char *)a2 + 44; v6 = (std::locale *)*((_DWORD *)a2 + 9); if ( v6 == (std::locale *)((char *)a2 + 44) ) { this[11] = *((_DWORD *)a2 + 11); this[12] = *((_DWORD *)a2 + 12); this[13] = *((_DWORD *)a2 + 13); this[14] = *((_DWORD *)a2 + 14); } else { this[9] = v6; this[11] = *((_DWORD *)a2 + 11); } this[10] = *((_DWORD *)a2 + 10); *((_BYTE *)a2 + 44) = 0; *((_DWORD *)a2 + 9) = v15; *((_DWORD *)a2 + 10) = 0; v7 = this[9]; if ( ((unsigned int)v18 & HIDWORD(v18)) != -1 ) { this[1] = v7 + v18; this[2] = v7 + v19; this[3] = v7 + v20; } if ( ((unsigned int)v21 & HIDWORD(v21)) != -1 ) { v8 = v7 + v23; v9 = v21 + v7; this[6] = v8; this[4] = v9; this[5] = v9 + v22; } v10 = (char *)*((_DWORD *)a2 + 9); v11 = *((_DWORD *)a2 + 8) & 0x10; if ( v10 == v15 ) v12 = 15; else v12 = *((_DWORD *)a2 + 11); v13 = &v10[v12]; if ( (*((_DWORD *)a2 + 8) & 8) != 0 ) { *((_DWORD *)a2 + 1) = v10; *((_DWORD *)a2 + 2) = v10; *((_DWORD *)a2 + 3) = v10; if ( v11 ) { *((_DWORD *)a2 + 5) = v10; *((_DWORD *)a2 + 4) = v10; *((_DWORD *)a2 + 6) = v13; } } else if ( v11 ) { *((_DWORD *)a2 + 5) = v10; *((_DWORD *)a2 + 4) = v10; *((_DWORD *)a2 + 6) = v13; *((_DWORD *)a2 + 1) = v10; *((_DWORD *)a2 + 2) = v10; *((_DWORD *)a2 + 3) = v10; } } // 512EE3: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) // 512E18: variable 'v14' is possibly undefined // 55F928: using guessed type int (*off_55F928)(); //----- (00513000) -------------------------------------------------------- std::locale *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3) { std::locale *v4; // eax std::locale *v5; // edx std::locale *result; // eax std::locale *v7; // edx const std::locale *v8; // [esp+4h] [ebp-18h] std::streambuf::basic_streambuf(this, (std::locale *)a2, v8); v4 = a2[8]; *this = &off_55F928; this[9] = this + 11; v5 = a2[9]; this[8] = v4; result = (std::locale *)(a2 + 11); if ( v5 == (std::locale *)(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; } // 51300E: variable 'v8' is possibly undefined // 55F928: using guessed type int (*off_55F928)(); //----- (00513080) -------------------------------------------------------- void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2, int a3) { int v3; // eax _BYTE *v4; // edx unsigned int v5; // eax *this = &off_560424; this[1] = 0; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; std::locale::locale(this + 7); v3 = *(_DWORD *)(a2 + 4); v4 = *(_BYTE **)a2; *this = &off_55F928; this[8] = 0; this[9] = this + 11; std::string::_M_construct(this + 9, v4, (int)&v4[v3]); this[8] = a3; v5 = 0; if ( (a3 & 3) != 0 ) v5 = this[10]; std::stringbuf::_M_sync(this, (_DWORD *)this[9], 0, v5); } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (005131A0) -------------------------------------------------------- char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) { _DWORD *v3; // ecx char *result; // eax v3 = this + 7; *(v3 - 7) = &off_560424; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_55F928; this[10] = 0; this[8] = a2; result = (char *)(this + 11); this[9] = this + 11; *((_BYTE *)this + 44) = 0; return result; } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (00513210) -------------------------------------------------------- int __fastcall std::stringbuf::basic_stringbuf(int a1) { _DWORD *v2; // ecx int result; // eax v2 = (_DWORD *)(a1 + 28); *(v2 - 7) = &off_560424; *(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_55F928; *(_DWORD *)(a1 + 32) = 24; *(_DWORD *)(a1 + 36) = a1 + 44; *(_DWORD *)(a1 + 40) = 0; return result; } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (00513280) -------------------------------------------------------- void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale *a2) { int v2; // edx unsigned int v3; // eax int v4; // ecx int v5; // eax std::locale *v6; // eax int v7; // ebx int v8; // ecx int v9; // ebx char *v10; // eax int v11; // edx int v12; // ecx char *v13; // ecx const std::locale *v14; // [esp+4h] [ebp-A4h] char *v15; // [esp+14h] [ebp-94h] __int64 v18; // [esp+60h] [ebp-48h] int v19; // [esp+68h] [ebp-40h] __int64 v20; // [esp+70h] [ebp-38h] __int64 v21; // [esp+78h] [ebp-30h] int v22; // [esp+80h] [ebp-28h] int v23; // [esp+88h] [ebp-20h] v18 = -1LL; v19 = -1; v2 = *((_DWORD *)a2 + 9); v3 = *((_DWORD *)a2 + 1); LODWORD(v20) = -1; v21 = -1LL; v22 = -1; v23 = -1; if ( !v3 ) { v4 = *((_DWORD *)a2 + 4); if ( !v4 ) goto LABEL_7; goto LABEL_3; } v18 = (int)(v3 - v2); v19 = *((_DWORD *)a2 + 2) - v2; v3 = *((_DWORD *)a2 + 3); v20 = (int)(v3 - v2); v4 = *((_DWORD *)a2 + 4); if ( v4 ) { LABEL_3: v21 = v4 - v2; v22 = *((_DWORD *)a2 + 5) - v4; v23 = *((_DWORD *)a2 + 6) - v2; if ( v3 < *((_DWORD *)a2 + 5) ) v3 = *((_DWORD *)a2 + 5); } if ( v3 ) *((_DWORD *)a2 + 10) = v3 - v2; LABEL_7: std::streambuf::basic_streambuf(this, a2, v14); v5 = *((_DWORD *)a2 + 8); *this = &off_55F928; this[9] = this + 11; this[8] = v5; v15 = (char *)a2 + 44; v6 = (std::locale *)*((_DWORD *)a2 + 9); if ( v6 == (std::locale *)((char *)a2 + 44) ) { this[11] = *((_DWORD *)a2 + 11); this[12] = *((_DWORD *)a2 + 12); this[13] = *((_DWORD *)a2 + 13); this[14] = *((_DWORD *)a2 + 14); } else { this[9] = v6; this[11] = *((_DWORD *)a2 + 11); } this[10] = *((_DWORD *)a2 + 10); *((_BYTE *)a2 + 44) = 0; *((_DWORD *)a2 + 9) = v15; *((_DWORD *)a2 + 10) = 0; v7 = this[9]; if ( ((unsigned int)v18 & HIDWORD(v18)) != -1 ) { this[1] = v7 + v18; this[2] = v7 + v19; this[3] = v7 + v20; } if ( ((unsigned int)v21 & HIDWORD(v21)) != -1 ) { v8 = v7 + v23; v9 = v21 + v7; this[6] = v8; this[4] = v9; this[5] = v9 + v22; } v10 = (char *)*((_DWORD *)a2 + 9); v11 = *((_DWORD *)a2 + 8) & 0x10; if ( v10 == v15 ) v12 = 15; else v12 = *((_DWORD *)a2 + 11); v13 = &v10[v12]; if ( (*((_DWORD *)a2 + 8) & 8) != 0 ) { *((_DWORD *)a2 + 1) = v10; *((_DWORD *)a2 + 2) = v10; *((_DWORD *)a2 + 3) = v10; if ( v11 ) { *((_DWORD *)a2 + 5) = v10; *((_DWORD *)a2 + 4) = v10; *((_DWORD *)a2 + 6) = v13; } } else if ( v11 ) { *((_DWORD *)a2 + 5) = v10; *((_DWORD *)a2 + 4) = v10; *((_DWORD *)a2 + 6) = v13; *((_DWORD *)a2 + 1) = v10; *((_DWORD *)a2 + 2) = v10; *((_DWORD *)a2 + 3) = v10; } } // 513493: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) // 5133C8: variable 'v14' is possibly undefined // 55F928: using guessed type int (*off_55F928)(); //----- (005135B0) -------------------------------------------------------- std::locale *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3) { std::locale *v4; // eax std::locale *v5; // edx std::locale *result; // eax std::locale *v7; // edx const std::locale *v8; // [esp+4h] [ebp-18h] std::streambuf::basic_streambuf(this, (std::locale *)a2, v8); v4 = a2[8]; *this = &off_55F928; this[9] = this + 11; v5 = a2[9]; this[8] = v4; result = (std::locale *)(a2 + 11); if ( v5 == (std::locale *)(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; } // 5135BE: variable 'v8' is possibly undefined // 55F928: using guessed type int (*off_55F928)(); //----- (00513630) -------------------------------------------------------- void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2, int a3) { int v3; // eax _BYTE *v4; // edx unsigned int v5; // eax *this = &off_560424; this[1] = 0; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; std::locale::locale(this + 7); v3 = *(_DWORD *)(a2 + 4); v4 = *(_BYTE **)a2; *this = &off_55F928; this[8] = 0; this[9] = this + 11; std::string::_M_construct(this + 9, v4, (int)&v4[v3]); this[8] = a3; v5 = 0; if ( (a3 & 3) != 0 ) v5 = this[10]; std::stringbuf::_M_sync(this, (_DWORD *)this[9], 0, v5); } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (00513750) -------------------------------------------------------- char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) { _DWORD *v3; // ecx char *result; // eax v3 = this + 7; *(v3 - 7) = &off_560424; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_55F928; this[10] = 0; this[8] = a2; result = (char *)(this + 11); this[9] = this + 11; *((_BYTE *)this + 44) = 0; return result; } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (005137C0) -------------------------------------------------------- int __fastcall std::stringbuf::basic_stringbuf(int a1) { _DWORD *v2; // ecx int result; // eax v2 = (_DWORD *)(a1 + 28); *(v2 - 7) = &off_560424; *(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_55F928; *(_DWORD *)(a1 + 32) = 24; *(_DWORD *)(a1 + 36) = a1 + 44; *(_DWORD *)(a1 + 40) = 0; return result; } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (00513830) -------------------------------------------------------- void __fastcall std::stringbuf::~stringbuf(_DWORD *Block) { _DWORD *v2; // eax v2 = (_DWORD *)Block[9]; *Block = &off_55F928; if ( v2 != Block + 11 ) operator delete(v2); *Block = &off_560424; std::locale::~locale((_DWORD **)Block + 7); operator delete(Block); } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (00513870) -------------------------------------------------------- void __fastcall std::stringbuf::~stringbuf(int a1) { void *Block; // eax Block = *(void **)(a1 + 36); *(_DWORD *)a1 = &off_55F928; if ( Block != (void *)(a1 + 44) ) operator delete(Block); *(_DWORD *)a1 = &off_560424; std::locale::~locale((_DWORD **)(a1 + 28)); } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (005138A0) -------------------------------------------------------- int __thiscall std::stringbuf::operator=(int this, int a2) { int v2; // ecx int v3; // ebx unsigned int v4; // eax unsigned int v5; // edx int v6; // edx _BYTE *v7; // eax int v8; // ecx int v9; // ebx char *v10; // eax char *v11; // ebx int v12; // edx int v13; // ecx char *v14; // ecx _DWORD *v15; // esi int v16; // ecx int v17; // edx int v18; // ebx int v19; // edi __int64 v20; // rax int v21; // ebx int v22; // ecx int v24; // edx const std::locale *v25; // [esp+4h] [ebp-A4h] const std::locale *v26; // [esp+4h] [ebp-A4h] char *Src; // [esp+14h] [ebp-94h] _DWORD *v29; // [esp+50h] [ebp-58h] BYREF _DWORD *v30; // [esp+54h] [ebp-54h] BYREF _DWORD *v31; // [esp+58h] [ebp-50h] __int64 v32; // [esp+60h] [ebp-48h] __int64 v33; // [esp+68h] [ebp-40h] __int64 v34; // [esp+70h] [ebp-38h] __int64 v35; // [esp+78h] [ebp-30h] __int64 v36; // [esp+80h] [ebp-28h] int v37; // [esp+88h] [ebp-20h] int v38; // [esp+8Ch] [ebp-1Ch] v32 = -1LL; v31 = (_DWORD *)this; v33 = -1LL; v2 = *(_DWORD *)(a2 + 16); v3 = *(_DWORD *)(a2 + 36); v4 = *(_DWORD *)(a2 + 4); v34 = -1LL; v35 = -1LL; v36 = -1LL; v37 = -1; v38 = -1; if ( !v4 ) { if ( !v2 ) goto LABEL_7; goto LABEL_3; } v32 = (int)(v4 - v3); v33 = *(_DWORD *)(a2 + 8) - v3; v4 = *(_DWORD *)(a2 + 12); v34 = (int)(v4 - v3); if ( v2 ) { LABEL_3: v35 = v2 - v3; v5 = *(_DWORD *)(a2 + 20); v36 = (int)(v5 - v2); v37 = *(_DWORD *)(a2 + 24) - v3; v38 = v37 >> 31; if ( v4 < v5 ) v4 = v5; } if ( v4 ) *(_DWORD *)(a2 + 40) = v4 - v3; LABEL_7: std::streambuf::operator=((volatile signed __int32 **)this, a2); std::locale::locale((volatile signed __int32 **)&v29, (volatile signed __int32 **)(a2 + 28), v25); std::locale::locale((volatile signed __int32 **)&v30, (volatile signed __int32 **)(this + 28), v26); (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)this + 8))(this, &v29); std::locale::operator=((volatile signed __int32 **)(this + 28), (volatile signed __int32 **)&v29); std::locale::~locale(&v30); std::locale::~locale(&v29); v6 = *(_DWORD *)(a2 + 36); *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); v7 = *(_BYTE **)(this + 36); Src = (char *)(a2 + 44); if ( v6 == a2 + 44 ) { v24 = *(_DWORD *)(a2 + 40); if ( v24 ) { if ( v24 == 1 ) *v7 = *(_BYTE *)(a2 + 44); else memcpy(v7, Src, *(_DWORD *)(a2 + 40)); v24 = *(_DWORD *)(a2 + 40); v7 = *(_BYTE **)(this + 36); } *(_DWORD *)(this + 40) = v24; v7[v24] = 0; v7 = *(_BYTE **)(a2 + 36); } else { v8 = *(_DWORD *)(a2 + 40); if ( v7 == (_BYTE *)(this + 44) ) { *(_DWORD *)(this + 36) = v6; *(_DWORD *)(this + 40) = v8; *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); } else { *(_DWORD *)(this + 36) = v6; *(_DWORD *)(this + 40) = v8; v9 = *(_DWORD *)(this + 44); *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); if ( v7 ) { *(_DWORD *)(a2 + 36) = v7; *(_DWORD *)(a2 + 44) = v9; goto LABEL_11; } } v7 = (_BYTE *)(a2 + 44); *(_DWORD *)(a2 + 36) = Src; } LABEL_11: *(_DWORD *)(a2 + 40) = 0; *v7 = 0; v10 = *(char **)(a2 + 36); v11 = &v10[*(_DWORD *)(a2 + 40)]; v12 = *(_DWORD *)(a2 + 32) & 0x10; if ( v10 == Src ) v13 = 15; else v13 = *(_DWORD *)(a2 + 44); v14 = &v10[v13]; if ( (*(_DWORD *)(a2 + 32) & 8) != 0 ) { *(_DWORD *)(a2 + 4) = v10; *(_DWORD *)(a2 + 8) = v10; *(_DWORD *)(a2 + 12) = v11; if ( v12 ) { *(_DWORD *)(a2 + 20) = v10; *(_DWORD *)(a2 + 16) = v10; *(_DWORD *)(a2 + 24) = v14; } } else if ( v12 ) { *(_DWORD *)(a2 + 20) = v10; *(_DWORD *)(a2 + 16) = v10; *(_DWORD *)(a2 + 24) = v14; *(_DWORD *)(a2 + 4) = v11; *(_DWORD *)(a2 + 8) = v11; *(_DWORD *)(a2 + 12) = v11; } v15 = v31; v16 = v31[9]; if ( ((unsigned int)v32 & HIDWORD(v32)) != -1 ) { v17 = v34; v18 = v33; v31[1] = v16 + v32; v15[2] = v16 + v18; v15[3] = v16 + v17; } if ( ((unsigned int)v35 & HIDWORD(v35)) != -1 ) { v19 = v37; v20 = v36; v21 = v16 + v35; v15[4] = v16 + v35; v15[6] = v16 + v19; if ( v20 > 0x7FFFFFFF ) { v22 = v21 + 0x7FFFFFFF; do { v21 = v22; v20 -= 0x7FFFFFFFLL; v22 += 0x7FFFFFFF; } while ( v20 > 0x7FFFFFFF ); } v15[5] = v21 + v20; } return this; } // 5139FB: variable 'v25' is possibly undefined // 513A17: variable 'v26' is possibly undefined //----- (00513D00) -------------------------------------------------------- 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; } //----- (00513E00) -------------------------------------------------------- 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; } //----- (00513F00) -------------------------------------------------------- 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; } //----- (00513F90) -------------------------------------------------------- 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; } //----- (00514020) -------------------------------------------------------- unsigned int __fastcall std::wstringbuf::_M_update_egptr(int a1) { unsigned int result; // eax result = *(_DWORD *)(a1 + 20); if ( result && *(_DWORD *)(a1 + 12) < result ) { if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) { *(_DWORD *)(a1 + 4) = result; *(_DWORD *)(a1 + 8) = result; } *(_DWORD *)(a1 + 12) = result; } return result; } //----- (00514050) -------------------------------------------------------- _DWORD *__thiscall std::wstringbuf::_M_stringbuf_init(_DWORD *this, int a2) { int v2; // ebx int v3; // edi _DWORD *result; // eax int v5; // edi _DWORD *v6; // [esp+8h] [ebp-1Ch] v2 = 0; v3 = this[10]; result = (_DWORD *)this[9]; this[8] = a2; if ( (a2 & 3) != 0 ) v2 = v3; v6 = (_DWORD *)((char *)result + 2 * v3); if ( result == this + 11 ) v5 = 14; else v5 = 2 * this[11]; if ( (a2 & 8) != 0 ) { this[1] = result; this[2] = result; this[3] = v6; } if ( (a2 & 0x10) != 0 ) { this[6] = (char *)result + v5; this[4] = result; if ( (unsigned int)v2 > 0x7FFFFFFFuLL ) { if ( (((unsigned __int64)(unsigned int)v2 - 0x7FFFFFFF) >> 32) | (unsigned int)(v2 + 1) ) { result = (_DWORD *)((char *)result - 2); v2 -= 0x7FFFFFFF; } else { --result; v2 = 1; } } result = (_DWORD *)((char *)result + 2 * v2); this[5] = result; if ( (a2 & 8) == 0 ) { result = v6; this[1] = v6; this[2] = v6; this[3] = v6; } } return result; } //----- (00514140) -------------------------------------------------------- int __thiscall std::wstringbuf::str(int this, int a2) { unsigned int v3; // eax std::wstring::_M_replace((unsigned int *)(this + 36), 0, *(_DWORD *)(this + 40), *(_WORD **)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); } //----- (005141A0) -------------------------------------------------------- void __thiscall std::wstringbuf::swap(_DWORD *this, int a2) { std::locale *v2; // esi int v3; // ecx int v4; // ebx unsigned int v5; // eax unsigned int v6; // esi int v7; // esi int v8; // ecx int v9; // ebx unsigned int v10; // eax unsigned int v11; // edi int v12; // eax int v13; // edx int v14; // eax int v15; // edx int v16; // eax int v17; // edx int v18; // eax int v19; // edx int v20; // eax int v21; // eax _DWORD *v22; // ebx int v23; // ecx int v24; // edx int v25; // esi __int64 v26; // rax int v27; // edi int v28; // ecx bool v29; // cf _DWORD *v30; // esi int v31; // ecx int v32; // edx int v33; // ebx int v34; // edi __int64 v35; // rax int v36; // ebx int v37; // ecx const std::locale *v38; // [esp+4h] [ebp-E4h] const std::locale *v39; // [esp+4h] [ebp-E4h] const std::locale *v40; // [esp+4h] [ebp-E4h] const std::locale *v41; // [esp+4h] [ebp-E4h] std::locale *v42; // [esp+10h] [ebp-D8h] std::locale *v43; // [esp+10h] [ebp-D8h] std::locale *v44; // [esp+10h] [ebp-D8h] std::locale *v45; // [esp+10h] [ebp-D8h] std::locale *v46; // [esp+14h] [ebp-D4h] _DWORD *v48; // [esp+54h] [ebp-94h] BYREF _DWORD *v49; // [esp+58h] [ebp-90h] BYREF _DWORD *v50; // [esp+5Ch] [ebp-8Ch] BYREF _DWORD *v51; // [esp+60h] [ebp-88h] int v52; // [esp+68h] [ebp-80h] int v53; // [esp+6Ch] [ebp-7Ch] int v54; // [esp+70h] [ebp-78h] int v55; // [esp+74h] [ebp-74h] __int64 v56; // [esp+78h] [ebp-70h] int v57; // [esp+80h] [ebp-68h] int v58; // [esp+84h] [ebp-64h] __int64 v59; // [esp+88h] [ebp-60h] int v60; // [esp+90h] [ebp-58h] int v61; // [esp+94h] [ebp-54h] _DWORD *v62; // [esp+98h] [ebp-50h] int v63; // [esp+A0h] [ebp-48h] int v64; // [esp+A4h] [ebp-44h] int v65; // [esp+A8h] [ebp-40h] int v66; // [esp+ACh] [ebp-3Ch] __int64 v67; // [esp+B0h] [ebp-38h] int v68; // [esp+B8h] [ebp-30h] int v69; // [esp+BCh] [ebp-2Ch] __int64 v70; // [esp+C0h] [ebp-28h] int v71; // [esp+C8h] [ebp-20h] int v72; // [esp+CCh] [ebp-1Ch] v52 = -1; v53 = -1; v2 = (std::locale *)this[1]; v51 = (_DWORD *)a2; v54 = -1; v3 = this[9]; v55 = -1; v4 = this[4]; v56 = -1LL; v57 = -1; v58 = -1; v59 = -1LL; v60 = -1; v61 = -1; v46 = v2; if ( !v2 ) { v5 = 0; if ( !v4 ) goto LABEL_7; goto LABEL_3; } v52 = ((int)v2 - v3) >> 1; v53 = ((int)v2 - v3) >> 31; v42 = (std::locale *)this[2]; v54 = ((int)v42 - v3) >> 1; v55 = ((int)v42 - v3) >> 31; v5 = this[3]; v56 = (int)(v5 - v3) >> 1; if ( v4 ) { LABEL_3: v57 = (v4 - v3) >> 1; v58 = (v4 - v3) >> 31; v6 = this[5]; v43 = (std::locale *)this[6]; v59 = (int)(v6 - v4) >> 1; v60 = ((int)v43 - v3) >> 1; v61 = ((int)v43 - v3) >> 31; if ( v5 < v6 ) v5 = v6; } if ( v5 ) this[10] = (int)(v5 - v3) >> 1; LABEL_7: v63 = -1; v64 = -1; v62 = this; v65 = -1; v7 = *(_DWORD *)(a2 + 4); v66 = -1; v67 = -1LL; v8 = *(_DWORD *)(a2 + 36); v9 = *(_DWORD *)(a2 + 16); v68 = -1; v69 = -1; v70 = -1LL; v71 = -1; v72 = -1; if ( !v7 ) { v10 = 0; if ( !v9 ) goto LABEL_13; goto LABEL_9; } v63 = (v7 - v8) >> 1; v64 = (v7 - v8) >> 31; v44 = *(std::locale **)(a2 + 8); v65 = ((int)v44 - v8) >> 1; v66 = ((int)v44 - v8) >> 31; v10 = *(_DWORD *)(a2 + 12); v67 = (int)(v10 - v8) >> 1; if ( v9 ) { LABEL_9: v68 = (v9 - v8) >> 1; v69 = (v9 - v8) >> 31; v11 = *(_DWORD *)(a2 + 20); v70 = (int)(v11 - v9) >> 1; v45 = *(std::locale **)(a2 + 24); v71 = ((int)v45 - v8) >> 1; v72 = ((int)v45 - v8) >> 31; if ( v10 < v11 ) v10 = v11; } if ( v10 ) *(_DWORD *)(a2 + 40) = (int)(v10 - v8) >> 1; LABEL_13: this[1] = v7; *(_DWORD *)(a2 + 4) = v46; v12 = this[2]; this[2] = *(_DWORD *)(a2 + 8); v13 = *(_DWORD *)(a2 + 12); *(_DWORD *)(a2 + 8) = v12; v14 = this[3]; this[3] = v13; v15 = *(_DWORD *)(a2 + 16); *(_DWORD *)(a2 + 12) = v14; v16 = this[4]; this[4] = v15; v17 = *(_DWORD *)(a2 + 20); *(_DWORD *)(a2 + 16) = v16; v18 = this[5]; this[5] = v17; v19 = *(_DWORD *)(a2 + 24); *(_DWORD *)(a2 + 20) = v18; v20 = this[6]; this[6] = v19; *(_DWORD *)(a2 + 24) = v20; std::locale::locale((volatile signed __int32 **)&v50, (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 **)&v50); std::locale::~locale(&v50); std::locale::locale((volatile signed __int32 **)&v48, (volatile signed __int32 **)(a2 + 28), v39); std::locale::locale((volatile signed __int32 **)&v49, (volatile signed __int32 **)this + 7, v40); (*(void (__thiscall **)(_DWORD *, _DWORD **))(*this + 8))(this, &v48); std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)&v48); std::locale::locale((volatile signed __int32 **)&v50, (volatile signed __int32 **)(a2 + 28), v41); (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)a2 + 8))(a2, &v49); std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v49); std::locale::~locale(&v50); std::locale::~locale(&v49); std::locale::~locale(&v48); v21 = this[8]; this[8] = *(_DWORD *)(a2 + 32); *(_DWORD *)(a2 + 32) = v21; std::wstring::swap(this + 9, (_DWORD *)(a2 + 36)); v22 = v62; v23 = v62[9]; if ( (v63 & v64) != -1 ) { v24 = v67; v25 = v65; v62[1] = v23 + 2 * v63; v22[2] = v23 + 2 * v25; v22[3] = v23 + 2 * v24; } if ( (v68 & v69) != -1 ) { v26 = v70; v27 = v23 + 2 * v71; v28 = v23 + 2 * v68; v29 = (unsigned int)v70 > 0x7FFFFFFF; v22[4] = v28; v22[6] = v27; if ( v29 + HIDWORD(v26) > 0 ) { do { v28 -= 2; v26 -= 0x7FFFFFFFLL; } while ( v26 > 0x7FFFFFFF ); } v22[5] = v28 + 2 * v26; } v30 = v51; v31 = v51[9]; if ( (v52 & v53) != -1 ) { v32 = v56; v33 = v54; v51[1] = v31 + 2 * v52; v30[2] = v31 + 2 * v33; v30[3] = v31 + 2 * v32; } if ( (v57 & v58) != -1 ) { v34 = v60; v35 = v59; v36 = v31 + 2 * v57; v30[4] = v36; v30[6] = v31 + 2 * v34; if ( v35 > 0x7FFFFFFF ) { v37 = v36 - 2; do { v36 = v37; v35 -= 0x7FFFFFFFLL; v37 -= 2; } while ( v35 > 0x7FFFFFFF ); } v30[5] = v36 + 2 * v35; } } // 514481: variable 'v38' is possibly undefined // 5144C9: variable 'v39' is possibly undefined // 5144DC: variable 'v40' is possibly undefined // 514527: variable 'v41' is possibly undefined //----- (00514780) -------------------------------------------------------- _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; } // 5147C7: variable 'v5' is possibly undefined //----- (005147E0) -------------------------------------------------------- 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; } //----- (005148D0) -------------------------------------------------------- _DWORD *__thiscall std::wstringbuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, unsigned int a5) { bool v5; // bl int v6; // ebx unsigned int v8; // eax int v9; // edx int v10; // edx __int64 v11; // [esp+0h] [ebp-34h] unsigned int v12; // [esp+8h] [ebp-2Ch] unsigned __int8 v13; // [esp+8h] [ebp-2Ch] __int64 v14; // [esp+8h] [ebp-2Ch] __int16 v15; // [esp+1Dh] [ebp-17h] char v16; // [esp+1Fh] [ebp-15h] *this = -1; this[1] = -1; this[2] = 0; v11 = a3; v5 = ((unsigned __int8)a5 & *(_BYTE *)(a2 + 32) & 8) != 0; v12 = (a5 & *(_DWORD *)(a2 + 32)) >> 4; LOBYTE(v15) = (a4 != 1) & v12 & v5; v13 = v12 & ((a5 >> 3) ^ 1) & 1; HIBYTE(v15) = v5 & ((a5 >> 4) ^ 1); if ( HIBYTE(v15) ) { v6 = *(_DWORD *)(a2 + 4); if ( !v6 && a3 ) return this; v16 = v15 | v13; } else { v6 = *(_DWORD *)(a2 + 16); if ( !v6 && a3 ) return this; v16 = v13 | v15; if ( !(v13 | (unsigned __int8)v15) ) return this; } v8 = *(_DWORD *)(a2 + 20); if ( v8 && v8 > *(_DWORD *)(a2 + 12) ) { if ( (*(_DWORD *)(a2 + 32) & 8) == 0 ) { *(_DWORD *)(a2 + 4) = v8; *(_DWORD *)(a2 + 8) = v8; } *(_DWORD *)(a2 + 12) = v8; } if ( a4 == 1 ) { v14 = a3 + ((int)(v8 - v6) >> 1); v11 = ((*(_DWORD *)(a2 + 8) - v6) >> 1) + a3; } else { v14 = a3; if ( a4 == 2 ) { v11 = ((*(_DWORD *)(a2 + 12) - v6) >> 1) + a3; v14 = v11; } } if ( v15 && v11 >= 0 && (*(_DWORD *)(a2 + 12) - v6) >> 1 >= v11 ) { v10 = *(_DWORD *)(a2 + 4); *(_QWORD *)this = v11; this[2] = 0; *(_DWORD *)(a2 + 8) = v10 + 2 * v11; } if ( v14 >= 0 && v16 && (*(_DWORD *)(a2 + 12) - v6) >> 1 >= v14 ) { v9 = *(_DWORD *)(a2 + 16); *(_QWORD *)this = v14; this[2] = 0; *(_DWORD *)(a2 + 20) = v9 + 2 * v14; } return this; } //----- (00514B10) -------------------------------------------------------- _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 ( (a6 & v7) != 0 ) v8 = a2[1]; else v8 = a2[4]; if ( (!a3 || v8) && (v10 & 0x18) != 0 ) { v9 = a2[5]; if ( v9 && v9 > a2[3] ) { 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 ( (a6 & v7) != 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; } //----- (00514C00) -------------------------------------------------------- int __thiscall std::wstringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4) { __int64 v5; // rax int v6; // ecx int result; // eax v5 = a4; this[6] = a3; v6 = a2; for ( this[4] = a2; v5 > 0x7FFFFFFF; v5 -= 0x7FFFFFFFLL ) v6 -= 2; result = v6 + 2 * v5; this[5] = result; return result; } //----- (00514C60) -------------------------------------------------------- int __thiscall std::wstringbuf::overflow(_DWORD *this, unsigned __int16 a2) { _DWORD *v2; // ebx unsigned int v3; // edx unsigned int v4; // esi unsigned __int16 *v5; // eax unsigned int v6; // eax _WORD *v7; // edx _WORD *v8; // eax unsigned int v9; // edx char *v11; // eax int v12; // edx int v13; // ecx int v14; // edx _DWORD *v15; // edi char *v16; // eax int v17; // [esp+1Ch] [ebp-7Ch] int v18; // [esp+20h] [ebp-78h] int v19; // [esp+20h] [ebp-78h] int v20; // [esp+20h] [ebp-78h] unsigned __int16 lpuexcpta; // [esp+28h] [ebp-70h] void *Block; // [esp+68h] [ebp-30h] BYREF int v24; // [esp+6Ch] [ebp-2Ch] int v25[10]; // [esp+70h] [ebp-28h] BYREF v18 = this[8]; if ( (v18 & 0x10) == 0 ) return (unsigned __int16)-1; if ( a2 == 0xFFFF ) return 0; v2 = (_DWORD *)this[9]; if ( v2 == this + 11 ) v3 = 7; else v3 = this[11]; v4 = this[6]; v5 = (unsigned __int16 *)this[5]; v17 = this[4]; if ( (int)(v4 - v17) >> 1 >= v3 ) { if ( v4 > (unsigned int)v5 ) goto LABEL_22; if ( v3 != 0x1FFFFFFF ) { if ( v4 <= (unsigned int)v5 ) { v24 = 0; Block = v25; v6 = 2 * v3; LOWORD(v25[0]) = 0; if ( 2 * v3 > 0x1FFFFFFF ) v6 = 0x1FFFFFFF; if ( v6 < 0x200 ) v6 = 512; std::wstring::reserve((int)&Block, v6); v7 = (_WORD *)this[4]; v19 = v24; if ( v7 ) { std::wstring::_M_replace((unsigned int *)&Block, 0, v24, v7, (this[6] - (int)v7) >> 1); v19 = v24; } v8 = Block; v9 = 7; if ( Block != v25 ) v9 = v25[0]; if ( v19 + 1 > v9 ) { std::wstring::_M_mutate((int)&Block, v19, 0, 0, 1); v8 = Block; } v8[v19] = a2; v24 = v19 + 1; v8[v19 + 1] = 0; std::wstring::swap(this + 9, &Block); std::wstringbuf::_M_sync(this, (_DWORD *)this[9], (this[2] - this[1]) >> 1, (this[5] - this[4]) >> 1); if ( Block != v25 ) operator delete(Block); v5 = (unsigned __int16 *)this[5]; goto LABEL_23; } LABEL_22: *v5 = a2; LABEL_23: this[5] = v5 + 1; return a2; } return (unsigned __int16)-1; } v11 = (char *)v5 + (_DWORD)v2 - v17; this[4] = v2; this[6] = (char *)v2 + 2 * v3; this[5] = v11; if ( (v18 & 8) != 0 ) { v12 = this[1]; this[1] = v2; v20 = v12; v13 = (int)v2 + this[3] - v12 + 2; v14 = this[2]; this[3] = v13; this[2] = (char *)v2 + v14 - v20; } v15 = this; v16 = v11 + 2; *((_WORD *)v16 - 1) = a2; lpuexcpta = a2; v15[5] = v16; return lpuexcpta; } //----- (00514F50) -------------------------------------------------------- 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; } //----- (00514FB0) -------------------------------------------------------- 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; } //----- (00514FE0) -------------------------------------------------------- int __fastcall std::wstringbuf::underflow(int a1) { unsigned int v2; // eax unsigned int v3; // edx unsigned __int16 *v4; // eax if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) return -1; v2 = *(_DWORD *)(a1 + 20); v3 = *(_DWORD *)(a1 + 12); if ( v2 ) { if ( v2 > v3 ) { *(_DWORD *)(a1 + 12) = v2; v3 = v2; } } v4 = *(unsigned __int16 **)(a1 + 8); if ( (unsigned int)v4 < v3 ) return *v4; else return -1; } //----- (00515020) -------------------------------------------------------- void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale *a2) { int v2; // edx unsigned int v3; // eax int v4; // ecx int v5; // eax char *v6; // esi std::locale *v7; // eax int v8; // ecx int v9; // ebx char *v10; // ecx int v11; // edx const std::locale *v12; // [esp+4h] [ebp-A4h] int v15; // [esp+60h] [ebp-48h] int v16; // [esp+64h] [ebp-44h] int v17; // [esp+68h] [ebp-40h] __int64 v18; // [esp+70h] [ebp-38h] int v19; // [esp+78h] [ebp-30h] int v20; // [esp+7Ch] [ebp-2Ch] int v21; // [esp+80h] [ebp-28h] int v22; // [esp+88h] [ebp-20h] v15 = -1; v16 = -1; v17 = -1; v2 = *((_DWORD *)a2 + 9); v3 = *((_DWORD *)a2 + 1); LODWORD(v18) = -1; v19 = -1; v20 = -1; v21 = -1; v22 = -1; if ( !v3 ) { v4 = *((_DWORD *)a2 + 4); if ( !v4 ) goto LABEL_7; goto LABEL_3; } v15 = (int)(v3 - v2) >> 1; v16 = (int)(v3 - v2) >> 31; v17 = (*((_DWORD *)a2 + 2) - v2) >> 1; v3 = *((_DWORD *)a2 + 3); v18 = (int)(v3 - v2) >> 1; v4 = *((_DWORD *)a2 + 4); if ( v4 ) { LABEL_3: v19 = (v4 - v2) >> 1; v20 = (v4 - v2) >> 31; v21 = (*((_DWORD *)a2 + 5) - v4) >> 1; v22 = (*((_DWORD *)a2 + 6) - v2) >> 1; if ( v3 < *((_DWORD *)a2 + 5) ) v3 = *((_DWORD *)a2 + 5); } if ( v3 ) *((_DWORD *)a2 + 10) = (int)(v3 - v2) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(this, a2, v12); v5 = *((_DWORD *)a2 + 8); *this = &off_55F968; this[9] = this + 11; this[8] = v5; v6 = (char *)a2 + 44; v7 = (std::locale *)*((_DWORD *)a2 + 9); if ( v7 == (std::locale *)((char *)a2 + 44) ) { this[11] = *((_DWORD *)a2 + 11); this[12] = *((_DWORD *)a2 + 12); this[13] = *((_DWORD *)a2 + 13); this[14] = *((_DWORD *)a2 + 14); } else { this[9] = v7; this[11] = *((_DWORD *)a2 + 11); } this[10] = *((_DWORD *)a2 + 10); *((_DWORD *)a2 + 9) = v6; *((_WORD *)a2 + 22) = 0; v8 = this[9]; *((_DWORD *)a2 + 10) = 0; if ( (v15 & v16) != -1 ) { this[1] = v8 + 2 * v15; this[2] = v8 + 2 * v17; this[3] = v8 + 2 * v18; } if ( (v19 & v20) != -1 ) { v9 = v8 + 2 * v19; this[6] = v8 + 2 * v22; this[4] = v9; this[5] = v9 + 2 * v21; } v10 = (char *)a2 + 58; v11 = *((_DWORD *)a2 + 8) & 0x10; if ( (*((_DWORD *)a2 + 8) & 8) != 0 ) { *((_DWORD *)a2 + 1) = v6; *((_DWORD *)a2 + 2) = v6; *((_DWORD *)a2 + 3) = v6; if ( v11 ) { *((_DWORD *)a2 + 5) = v6; *((_DWORD *)a2 + 4) = v6; *((_DWORD *)a2 + 6) = v10; } } else if ( v11 ) { *((_DWORD *)a2 + 5) = v6; *((_DWORD *)a2 + 4) = v6; *((_DWORD *)a2 + 6) = v10; *((_DWORD *)a2 + 1) = v6; *((_DWORD *)a2 + 2) = v6; *((_DWORD *)a2 + 3) = v6; } } // 51524C: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) // 515178: variable 'v12' is possibly undefined // 55F968: using guessed type int (*off_55F968)(); //----- (00515350) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3) { std::locale *v4; // eax std::locale *v5; // edx std::locale *v6; // edx int result; // eax const std::locale *v8; // [esp+4h] [ebp-18h] std::wstreambuf::basic_streambuf(this, (std::locale *)a2, v8); v4 = a2[8]; *this = &off_55F968; this[9] = this + 11; v5 = a2[9]; this[8] = v4; if ( v5 == (std::locale *)(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]; } v6 = a2[10]; a2[9] = (std::locale *)(a2 + 11); result = 0; a2[10] = 0; this[10] = v6; *((_WORD *)a2 + 22) = 0; return result; } // 51535E: variable 'v8' is possibly undefined // 55F968: using guessed type int (*off_55F968)(); //----- (005153D0) -------------------------------------------------------- void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2, int a3) { int v3; // edx _WORD *v4; // eax unsigned int v5; // eax *this = &off_560464; this[1] = 0; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; std::locale::locale(this + 7); v3 = *(_DWORD *)(a2 + 4); v4 = *(_WORD **)a2; *this = &off_55F968; this[8] = 0; this[9] = this + 11; std::wstring::_M_construct(this + 9, v4, (int)&v4[v3]); this[8] = a3; v5 = 0; if ( (a3 & 3) != 0 ) v5 = this[10]; std::wstringbuf::_M_sync(this, (_DWORD *)this[9], 0, v5); } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (005154F0) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) { _DWORD *v3; // ecx int result; // eax v3 = this + 7; *(v3 - 7) = &off_560464; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_55F968; this[10] = 0; this[8] = a2; this[9] = this + 11; result = 0; *((_WORD *)this + 22) = 0; return result; } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (00515560) -------------------------------------------------------- int __fastcall std::wstringbuf::basic_stringbuf(int a1) { _DWORD *v2; // ecx int result; // eax v2 = (_DWORD *)(a1 + 28); *(v2 - 7) = &off_560464; *(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_55F968; *(_DWORD *)(a1 + 36) = a1 + 44; result = 0; *(_DWORD *)(a1 + 32) = 24; *(_DWORD *)(a1 + 40) = 0; *(_WORD *)(a1 + 44) = 0; return result; } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (005155D0) -------------------------------------------------------- void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale *a2) { int v2; // edx unsigned int v3; // eax int v4; // ecx int v5; // eax char *v6; // esi std::locale *v7; // eax int v8; // ecx int v9; // ebx char *v10; // ecx int v11; // edx const std::locale *v12; // [esp+4h] [ebp-A4h] int v15; // [esp+60h] [ebp-48h] int v16; // [esp+64h] [ebp-44h] int v17; // [esp+68h] [ebp-40h] __int64 v18; // [esp+70h] [ebp-38h] int v19; // [esp+78h] [ebp-30h] int v20; // [esp+7Ch] [ebp-2Ch] int v21; // [esp+80h] [ebp-28h] int v22; // [esp+88h] [ebp-20h] v15 = -1; v16 = -1; v17 = -1; v2 = *((_DWORD *)a2 + 9); v3 = *((_DWORD *)a2 + 1); LODWORD(v18) = -1; v19 = -1; v20 = -1; v21 = -1; v22 = -1; if ( !v3 ) { v4 = *((_DWORD *)a2 + 4); if ( !v4 ) goto LABEL_7; goto LABEL_3; } v15 = (int)(v3 - v2) >> 1; v16 = (int)(v3 - v2) >> 31; v17 = (*((_DWORD *)a2 + 2) - v2) >> 1; v3 = *((_DWORD *)a2 + 3); v18 = (int)(v3 - v2) >> 1; v4 = *((_DWORD *)a2 + 4); if ( v4 ) { LABEL_3: v19 = (v4 - v2) >> 1; v20 = (v4 - v2) >> 31; v21 = (*((_DWORD *)a2 + 5) - v4) >> 1; v22 = (*((_DWORD *)a2 + 6) - v2) >> 1; if ( v3 < *((_DWORD *)a2 + 5) ) v3 = *((_DWORD *)a2 + 5); } if ( v3 ) *((_DWORD *)a2 + 10) = (int)(v3 - v2) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(this, a2, v12); v5 = *((_DWORD *)a2 + 8); *this = &off_55F968; this[9] = this + 11; this[8] = v5; v6 = (char *)a2 + 44; v7 = (std::locale *)*((_DWORD *)a2 + 9); if ( v7 == (std::locale *)((char *)a2 + 44) ) { this[11] = *((_DWORD *)a2 + 11); this[12] = *((_DWORD *)a2 + 12); this[13] = *((_DWORD *)a2 + 13); this[14] = *((_DWORD *)a2 + 14); } else { this[9] = v7; this[11] = *((_DWORD *)a2 + 11); } this[10] = *((_DWORD *)a2 + 10); *((_DWORD *)a2 + 9) = v6; *((_WORD *)a2 + 22) = 0; v8 = this[9]; *((_DWORD *)a2 + 10) = 0; if ( (v15 & v16) != -1 ) { this[1] = v8 + 2 * v15; this[2] = v8 + 2 * v17; this[3] = v8 + 2 * v18; } if ( (v19 & v20) != -1 ) { v9 = v8 + 2 * v19; this[6] = v8 + 2 * v22; this[4] = v9; this[5] = v9 + 2 * v21; } v10 = (char *)a2 + 58; v11 = *((_DWORD *)a2 + 8) & 0x10; if ( (*((_DWORD *)a2 + 8) & 8) != 0 ) { *((_DWORD *)a2 + 1) = v6; *((_DWORD *)a2 + 2) = v6; *((_DWORD *)a2 + 3) = v6; if ( v11 ) { *((_DWORD *)a2 + 5) = v6; *((_DWORD *)a2 + 4) = v6; *((_DWORD *)a2 + 6) = v10; } } else if ( v11 ) { *((_DWORD *)a2 + 5) = v6; *((_DWORD *)a2 + 4) = v6; *((_DWORD *)a2 + 6) = v10; *((_DWORD *)a2 + 1) = v6; *((_DWORD *)a2 + 2) = v6; *((_DWORD *)a2 + 3) = v6; } } // 5157FC: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) // 515728: variable 'v12' is possibly undefined // 55F968: using guessed type int (*off_55F968)(); //----- (00515900) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3) { std::locale *v4; // eax std::locale *v5; // edx std::locale *v6; // edx int result; // eax const std::locale *v8; // [esp+4h] [ebp-18h] std::wstreambuf::basic_streambuf(this, (std::locale *)a2, v8); v4 = a2[8]; *this = &off_55F968; this[9] = this + 11; v5 = a2[9]; this[8] = v4; if ( v5 == (std::locale *)(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]; } v6 = a2[10]; a2[9] = (std::locale *)(a2 + 11); result = 0; a2[10] = 0; this[10] = v6; *((_WORD *)a2 + 22) = 0; return result; } // 51590E: variable 'v8' is possibly undefined // 55F968: using guessed type int (*off_55F968)(); //----- (00515980) -------------------------------------------------------- void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2, int a3) { int v3; // edx _WORD *v4; // eax unsigned int v5; // eax *this = &off_560464; this[1] = 0; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; std::locale::locale(this + 7); v3 = *(_DWORD *)(a2 + 4); v4 = *(_WORD **)a2; *this = &off_55F968; this[8] = 0; this[9] = this + 11; std::wstring::_M_construct(this + 9, v4, (int)&v4[v3]); this[8] = a3; v5 = 0; if ( (a3 & 3) != 0 ) v5 = this[10]; std::wstringbuf::_M_sync(this, (_DWORD *)this[9], 0, v5); } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (00515AA0) -------------------------------------------------------- int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) { _DWORD *v3; // ecx int result; // eax v3 = this + 7; *(v3 - 7) = &off_560464; *(v3 - 6) = 0; *(v3 - 5) = 0; *(v3 - 4) = 0; *(v3 - 3) = 0; *(v3 - 2) = 0; *(v3 - 1) = 0; std::locale::locale(v3); *this = &off_55F968; this[10] = 0; this[8] = a2; this[9] = this + 11; result = 0; *((_WORD *)this + 22) = 0; return result; } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (00515B10) -------------------------------------------------------- int __fastcall std::wstringbuf::basic_stringbuf(int a1) { _DWORD *v2; // ecx int result; // eax v2 = (_DWORD *)(a1 + 28); *(v2 - 7) = &off_560464; *(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_55F968; *(_DWORD *)(a1 + 36) = a1 + 44; result = 0; *(_DWORD *)(a1 + 32) = 24; *(_DWORD *)(a1 + 40) = 0; *(_WORD *)(a1 + 44) = 0; return result; } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (00515B80) -------------------------------------------------------- void __fastcall std::wstringbuf::~wstringbuf(_DWORD *Block) { _DWORD *v2; // eax v2 = (_DWORD *)Block[9]; *Block = &off_55F968; if ( v2 != Block + 11 ) operator delete(v2); *Block = &off_560464; std::locale::~locale((_DWORD **)Block + 7); operator delete(Block); } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (00515BC0) -------------------------------------------------------- void __fastcall std::wstringbuf::~wstringbuf(int a1) { void *Block; // eax Block = *(void **)(a1 + 36); *(_DWORD *)a1 = &off_55F968; if ( Block != (void *)(a1 + 44) ) operator delete(Block); *(_DWORD *)a1 = &off_560464; std::locale::~locale((_DWORD **)(a1 + 28)); } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (00515BF0) -------------------------------------------------------- int __thiscall std::wstringbuf::operator=(int this, int a2) { int v2; // ecx int v3; // edx unsigned int v4; // eax unsigned int v5; // ebx int v6; // edi _WORD *v7; // eax int v8; // edx int v9; // ecx int v10; // ebx int v11; // esi int v12; // edx int v13; // ebx int v14; // ecx int v15; // edx _WORD *v16; // edx _DWORD *v17; // esi int v18; // ecx int v19; // edx int v20; // ebx int v21; // edi __int64 v22; // rax int v23; // ebx int v24; // ecx _WORD *v26; // ebx int v27; // edx int v28; // ecx const std::locale *v29; // [esp+4h] [ebp-A4h] const std::locale *v30; // [esp+4h] [ebp-A4h] void *Srca; // [esp+14h] [ebp-94h] _WORD *Src; // [esp+14h] [ebp-94h] _DWORD *v34; // [esp+50h] [ebp-58h] BYREF _DWORD *v35; // [esp+54h] [ebp-54h] BYREF _DWORD *v36; // [esp+58h] [ebp-50h] int v37; // [esp+60h] [ebp-48h] int v38; // [esp+64h] [ebp-44h] int v39; // [esp+68h] [ebp-40h] int v40; // [esp+6Ch] [ebp-3Ch] __int64 v41; // [esp+70h] [ebp-38h] int v42; // [esp+78h] [ebp-30h] int v43; // [esp+7Ch] [ebp-2Ch] __int64 v44; // [esp+80h] [ebp-28h] int v45; // [esp+88h] [ebp-20h] int v46; // [esp+8Ch] [ebp-1Ch] v37 = -1; v38 = -1; v36 = (_DWORD *)this; v39 = -1; v2 = *(_DWORD *)(a2 + 16); v3 = *(_DWORD *)(a2 + 36); v4 = *(_DWORD *)(a2 + 4); v40 = -1; v41 = -1LL; v42 = -1; v43 = -1; v44 = -1LL; v45 = -1; v46 = -1; if ( !v4 ) { if ( !v2 ) goto LABEL_7; goto LABEL_3; } v37 = (int)(v4 - v3) >> 1; v38 = (int)(v4 - v3) >> 31; Srca = *(void **)(a2 + 8); v39 = ((int)Srca - v3) >> 1; v40 = ((int)Srca - v3) >> 31; v4 = *(_DWORD *)(a2 + 12); v41 = (int)(v4 - v3) >> 1; if ( v2 ) { LABEL_3: v42 = (v2 - v3) >> 1; v43 = (v2 - v3) >> 31; v5 = *(_DWORD *)(a2 + 20); LODWORD(v44) = (int)(v5 - v2) >> 1; v6 = *(_DWORD *)(a2 + 24); v44 = (int)v44; v45 = (v6 - v3) >> 1; v46 = (v6 - v3) >> 31; if ( v4 < v5 ) v4 = v5; } if ( v4 ) *(_DWORD *)(a2 + 40) = (int)(v4 - v3) >> 1; LABEL_7: std::wstreambuf::operator=((volatile signed __int32 **)this, a2); std::locale::locale((volatile signed __int32 **)&v34, (volatile signed __int32 **)(a2 + 28), v29); std::locale::locale((volatile signed __int32 **)&v35, (volatile signed __int32 **)(this + 28), v30); (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)this + 8))(this, &v34); std::locale::operator=((volatile signed __int32 **)(this + 28), (volatile signed __int32 **)&v34); std::locale::~locale(&v35); std::locale::~locale(&v34); *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); v7 = *(_WORD **)(this + 36); v8 = *(_DWORD *)(a2 + 36); Src = (_WORD *)(a2 + 44); if ( v8 != a2 + 44 ) { v9 = *(_DWORD *)(a2 + 44); v10 = *(_DWORD *)(a2 + 40); if ( v7 == (_WORD *)(this + 44) ) { *(_DWORD *)(this + 36) = v8; *(_DWORD *)(this + 40) = v10; *(_DWORD *)(this + 44) = v9; } else { v11 = *(_DWORD *)(this + 44); *(_DWORD *)(this + 36) = v8; *(_DWORD *)(this + 40) = v10; *(_DWORD *)(this + 44) = v9; if ( v7 ) { *(_DWORD *)(a2 + 36) = v7; *(_DWORD *)(a2 + 44) = v11; goto LABEL_11; } } v7 = (_WORD *)(a2 + 44); *(_WORD *)(a2 + 44) = 0; *(_DWORD *)(a2 + 36) = Src; *(_DWORD *)(a2 + 40) = 0; v14 = *(_DWORD *)(a2 + 32) & 0x10; v16 = (_WORD *)(a2 + 58); if ( (*(_DWORD *)(a2 + 32) & 8) != 0 ) goto LABEL_14; goto LABEL_26; } v26 = (_WORD *)(a2 + 44); v27 = *(_DWORD *)(a2 + 40); v28 = v27; if ( v27 ) { if ( v27 == 1 ) { *v7 = *(_WORD *)(a2 + 44); v28 = 1; } else { memcpy(v7, Src, 2 * v27); v27 = *(_DWORD *)(a2 + 40); v26 = *(_WORD **)(a2 + 36); v7 = *(_WORD **)(this + 36); v28 = v27; } } *(_DWORD *)(this + 40) = v27; v7[v28] = 0; v7 = v26; LABEL_11: *(_DWORD *)(a2 + 40) = 0; v12 = *(_DWORD *)(a2 + 32); *v7 = 0; v13 = v12 & 8; v14 = v12 & 0x10; if ( v7 == Src ) v15 = 7; else v15 = *(_DWORD *)(a2 + 44); v16 = &v7[v15]; if ( v13 ) { LABEL_14: *(_DWORD *)(a2 + 4) = v7; *(_DWORD *)(a2 + 8) = v7; *(_DWORD *)(a2 + 12) = v7; if ( v14 ) { *(_DWORD *)(a2 + 20) = v7; *(_DWORD *)(a2 + 16) = v7; *(_DWORD *)(a2 + 24) = v16; } goto LABEL_16; } LABEL_26: if ( v14 ) { *(_DWORD *)(a2 + 20) = v7; *(_DWORD *)(a2 + 16) = v7; *(_DWORD *)(a2 + 24) = v16; *(_DWORD *)(a2 + 4) = v7; *(_DWORD *)(a2 + 8) = v7; *(_DWORD *)(a2 + 12) = v7; } LABEL_16: v17 = v36; v18 = v36[9]; if ( (v37 & v38) != -1 ) { v19 = v41; v20 = v39; v36[1] = v18 + 2 * v37; v17[2] = v18 + 2 * v20; v17[3] = v18 + 2 * v19; } if ( (v42 & v43) != -1 ) { v21 = v45; v22 = v44; v23 = v18 + 2 * v42; v17[4] = v23; v17[6] = v18 + 2 * v21; if ( v22 > 0x7FFFFFFF ) { v24 = v23 - 2; do { v23 = v24; v22 -= 0x7FFFFFFFLL; v24 -= 2; } while ( v22 > 0x7FFFFFFF ); } v17[5] = v23 + 2 * v22; } return this; } // 515D58: variable 'v29' is possibly undefined // 515D77: variable 'v30' is possibly undefined //----- (00516080) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_55FCA0; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_55F9A8; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 55F9A8: using guessed type int (*off_55F9A8)(); // 55FCA0: using guessed type int (*off_55FCA0)(); //----- (005161C0) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { std::messages_byname::messages_byname(this, (int **)*a2, a3); } //----- (005161D0) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_55FCA0; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_55F9A8; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 55F9A8: using guessed type int (*off_55F9A8)(); // 55FCA0: using guessed type int (*off_55FCA0)(); //----- (00516310) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { std::messages_byname::messages_byname(this, (int **)*a2, a3); } //----- (00516320) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_55FCA0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 51635E: variable 'lpfctx' is possibly undefined // 55FCA0: using guessed type int (*off_55FCA0)(); //----- (00516380) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FCA0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 5163BE: variable 'lpfctx' is possibly undefined // 55FCA0: using guessed type int (*off_55FCA0)(); //----- (005163E0) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FCA0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 51641E: variable 'lpfctx' is possibly undefined // 55FCA0: using guessed type int (*off_55FCA0)(); //----- (00516440) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_55FCBC; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_55F9C4; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 55F9C4: using guessed type int (*off_55F9C4)(); // 55FCBC: using guessed type int (*off_55FCBC)(); //----- (00516580) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { std::messages_byname::messages_byname(this, (int **)*a2, a3); } //----- (00516590) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { this[1] = a3 != 0; *this = &off_55FCBC; this[2] = std::locale::facet::_S_get_c_locale(); *this = &off_55F9C4; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { 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); } } } // 55F9C4: using guessed type int (*off_55F9C4)(); // 55FCBC: using guessed type int (*off_55FCBC)(); //----- (005166D0) -------------------------------------------------------- void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) { std::messages_byname::messages_byname(this, (int **)*a2, a3); } //----- (005166E0) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_55FCBC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 51671E: variable 'lpfctx' is possibly undefined // 55FCBC: using guessed type int (*off_55FCBC)(); //----- (00516740) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FCBC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 51677E: variable 'lpfctx' is possibly undefined // 55FCBC: using guessed type int (*off_55FCBC)(); //----- (005167A0) -------------------------------------------------------- void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FCBC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 5167DE: variable 'lpfctx' is possibly undefined // 55FCBC: using guessed type int (*off_55FCBC)(); //----- (00516800) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55FCD8; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_55F9E0; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::numpunct::_M_initialize_numpunct(this, v4[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55F9E0: using guessed type int (*off_55F9E0)(); // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00516940) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55FCD8; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_55F9E0; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::numpunct::_M_initialize_numpunct(this, v5[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55F9E0: using guessed type int (*off_55F9E0)(); // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00516A90) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55FCD8; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_55F9E0; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::numpunct::_M_initialize_numpunct(this, v4[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55F9E0: using guessed type int (*off_55F9E0)(); // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00516BD0) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55FCD8; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_55F9E0; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::numpunct::_M_initialize_numpunct(this, v5[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55F9E0: using guessed type int (*off_55F9E0)(); // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00516D20) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block) { *Block = &off_55F9E0; std::numpunct::~numpunct(Block); operator delete(Block); } // 55F9E0: using guessed type int (*off_55F9E0)(); //----- (00516D40) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { *a1 = &off_55F9E0; std::numpunct::~numpunct(a1); } // 55F9E0: using guessed type int (*off_55F9E0)(); //----- (00516D50) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { *a1 = &off_55F9E0; std::numpunct::~numpunct(a1); } // 55F9E0: using guessed type int (*off_55F9E0)(); //----- (00516D60) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55FCFC; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_55FA04; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::numpunct::_M_initialize_numpunct(this, v4[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55FA04: using guessed type int (*off_55FA04)(); // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00516EA0) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55FCFC; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_55FA04; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::numpunct::_M_initialize_numpunct(this, v5[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55FA04: using guessed type int (*off_55FA04)(); // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00516FF0) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55FCFC; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_55FA04; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::numpunct::_M_initialize_numpunct(this, v4[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55FA04: using guessed type int (*off_55FA04)(); // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00517130) -------------------------------------------------------- void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55FCFC; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); *this = &off_55FA04; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::numpunct::_M_initialize_numpunct(this, v5[0]); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55FA04: using guessed type int (*off_55FA04)(); // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00517280) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block) { *Block = &off_55FA04; std::numpunct::~numpunct(Block); operator delete(Block); } // 55FA04: using guessed type int (*off_55FA04)(); //----- (005172A0) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { *a1 = &off_55FA04; std::numpunct::~numpunct(a1); } // 55FA04: using guessed type int (*off_55FA04)(); //----- (005172B0) -------------------------------------------------------- void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) { *a1 = &off_55FA04; std::numpunct::~numpunct(a1); } // 55FA04: using guessed type int (*off_55FA04)(); //----- (005172C0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_55FA28; result = a3 != 0; this[1] = result; return result; } // 55FA28: using guessed type int (*off_55FA28)(); //----- (005172E0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_55FA28; result = a3 != 0; this[1] = result; return result; } // 55FA28: using guessed type int (*off_55FA28)(); //----- (00517300) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_55FA28; result = a3 != 0; this[1] = result; return result; } // 55FA28: using guessed type int (*off_55FA28)(); //----- (00517320) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_55FA28; result = a3 != 0; this[1] = result; return result; } // 55FA28: using guessed type int (*off_55FA28)(); //----- (00517340) -------------------------------------------------------- void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_55FD20; std::locale::facet::~facet(Blocka); operator delete(Block); } // 51734C: variable 'Blocka' is possibly undefined // 55FD20: using guessed type int (*off_55FD20)(); //----- (00517360) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FD20; std::locale::facet::~facet(a1); } // 517360: variable 'v1' is possibly undefined // 55FD20: using guessed type int (*off_55FD20)(); //----- (00517370) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FD20; std::locale::facet::~facet(a1); } // 517370: variable 'v1' is possibly undefined // 55FD20: using guessed type int (*off_55FD20)(); //----- (00517380) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_55FA54; result = a3 != 0; this[1] = result; return result; } // 55FA54: using guessed type int (*off_55FA54)(); //----- (005173A0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_55FA54; result = a3 != 0; this[1] = result; return result; } // 55FA54: using guessed type int (*off_55FA54)(); //----- (005173C0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_55FA54; result = a3 != 0; this[1] = result; return result; } // 55FA54: using guessed type int (*off_55FA54)(); //----- (005173E0) -------------------------------------------------------- BOOL __thiscall std::time_get_byname>::time_get_byname( _DWORD *this, int a2, int a3) { BOOL result; // eax *this = &off_55FA54; result = a3 != 0; this[1] = result; return result; } // 55FA54: using guessed type int (*off_55FA54)(); //----- (00517400) -------------------------------------------------------- void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_55FD4C; std::locale::facet::~facet(Blocka); operator delete(Block); } // 51740C: variable 'Blocka' is possibly undefined // 55FD4C: using guessed type int (*off_55FD4C)(); //----- (00517420) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FD4C; std::locale::facet::~facet(a1); } // 517420: variable 'v1' is possibly undefined // 55FD4C: using guessed type int (*off_55FD4C)(); //----- (00517430) -------------------------------------------------------- void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FD4C; std::locale::facet::~facet(a1); } // 517430: variable 'v1' is possibly undefined // 55FD4C: using guessed type int (*off_55FD4C)(); //----- (00517440) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55F820; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FA80; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FA80: using guessed type int (*off_55FA80)(); //----- (00517590) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55F820; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FA80; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FA80: using guessed type int (*off_55FA80)(); //----- (005176F0) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55F820; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FA80; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FA80: using guessed type int (*off_55FA80)(); //----- (00517840) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55F820; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FA80; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FA80: using guessed type int (*off_55FA80)(); //----- (005179A0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) { *Block = &off_55FA80; std::moneypunct::~moneypunct(Block); operator delete(Block); } // 55FA80: using guessed type int (*off_55FA80)(); //----- (005179C0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_55FA80; std::moneypunct::~moneypunct(a1); } // 55FA80: using guessed type int (*off_55FA80)(); //----- (005179D0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_55FA80; std::moneypunct::~moneypunct(a1); } // 55FA80: using guessed type int (*off_55FA80)(); //----- (005179E0) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55F854; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FAB4; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FAB4: using guessed type int (*off_55FAB4)(); //----- (00517B30) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55F854; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FAB4; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FAB4: using guessed type int (*off_55FAB4)(); //----- (00517C90) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55F854; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FAB4; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FAB4: using guessed type int (*off_55FAB4)(); //----- (00517DE0) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55F854; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FAB4; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FAB4: using guessed type int (*off_55FAB4)(); //----- (00517F40) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) { *Block = &off_55FAB4; std::moneypunct::~moneypunct(Block); operator delete(Block); } // 55FAB4: using guessed type int (*off_55FAB4)(); //----- (00517F60) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_55FAB4; std::moneypunct::~moneypunct(a1); } // 55FAB4: using guessed type int (*off_55FAB4)(); //----- (00517F70) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_55FAB4; std::moneypunct::~moneypunct(a1); } // 55FAB4: using guessed type int (*off_55FAB4)(); //----- (00517F80) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55F888; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FAE8; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FAE8: using guessed type int (*off_55FAE8)(); //----- (005180D0) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55F888; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FAE8; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FAE8: using guessed type int (*off_55FAE8)(); //----- (00518230) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55F888; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FAE8; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FAE8: using guessed type int (*off_55FAE8)(); //----- (00518380) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55F888; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FAE8; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FAE8: using guessed type int (*off_55FAE8)(); //----- (005184E0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) { *Block = &off_55FAE8; std::moneypunct::~moneypunct(Block); operator delete(Block); } // 55FAE8: using guessed type int (*off_55FAE8)(); //----- (00518500) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_55FAE8; std::moneypunct::~moneypunct(a1); } // 55FAE8: using guessed type int (*off_55FAE8)(); //----- (00518510) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_55FAE8; std::moneypunct::~moneypunct(a1); } // 55FAE8: using guessed type int (*off_55FAE8)(); //----- (00518520) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55F8BC; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FB1C; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FB1C: using guessed type int (*off_55FB1C)(); //----- (00518670) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55F8BC; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FB1C; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FB1C: using guessed type int (*off_55FB1C)(); //----- (005187D0) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) { int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF this[1] = a3 != 0; *this = &off_55F8BC; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FB1C; if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) { if ( strcmp((const char *)a2, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); } } } // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FB1C: using guessed type int (*off_55FB1C)(); //----- (00518920) -------------------------------------------------------- void __thiscall std::moneypunct_byname::moneypunct_byname( _DWORD *this, struct _Unwind_Exception **a2, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF lpuexcpt = *a2; this[1] = a3 != 0; *this = &off_55F8BC; this[2] = 0; std::moneypunct::_M_initialize_moneypunct(this, 0, 0); *this = &off_55FB1C; if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) { if ( strcmp((const char *)lpuexcpt, "POSIX") ) { std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); } } } // 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); // 55FB1C: using guessed type int (*off_55FB1C)(); //----- (00518A80) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) { *Block = &off_55FB1C; std::moneypunct::~moneypunct(Block); operator delete(Block); } // 55FB1C: using guessed type int (*off_55FB1C)(); //----- (00518AA0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_55FB1C; std::moneypunct::~moneypunct(a1); } // 55FB1C: using guessed type int (*off_55FB1C)(); //----- (00518AB0) -------------------------------------------------------- void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) { *a1 = &off_55FB1C; std::moneypunct::~moneypunct(a1); } // 55FB1C: using guessed type int (*off_55FB1C)(); //----- (00518AC0) -------------------------------------------------------- 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); } //----- (00518B30) -------------------------------------------------------- void __thiscall std::basic_stringstream,std::allocator>::swap( _DWORD *this, _DWORD *a2) { std::ios_base *v3; // edi std::ios_base *v4; // esi int v5; // edx char v6; // cl char v7; // cl int v8; // edx std::ios_base *v9; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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::stringbuf::swap(this + 3, (int)(a2 + 3)); } // 518B70: variable 'v9' is possibly undefined //----- (00518C00) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( _DWORD *this, int *a2) { int v2; // eax int v3; // eax std::ios_base *v4; // ecx int v5; // eax std::ios_base *v6; // [esp+0h] [ebp-58h] struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] _DWORD *v8; // [esp+14h] [ebp-44h] v8 = this + 18; std::ios_base::ios_base(this + 18); *((_WORD *)this + 94) = 0; v2 = a2[1]; *this = &unk_55B244; this[1] = v2; this[46] = 0; v3 = *a2; this[48] = 0; this[49] = 0; v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); this[18] = &unk_55B258; this[50] = 0; this[51] = 0; lpuexcpt = v4; std::ios_base::_M_move((int)v8, v4, v6); std::ios::_M_cache_locale(v8, (int)(this + 45)); this[48] = 0; v5 = *((_DWORD *)lpuexcpt + 28); *((_DWORD *)lpuexcpt + 28) = 0; this[46] = v5; *((_WORD *)this + 94) = *((_WORD *)lpuexcpt + 58); a2[1] = 0; *this = &off_55FB54; this[18] = off_55FB7C; this[2] = off_55FB68; std::stringbuf::basic_stringbuf(this + 3, (std::locale *)(a2 + 3)); this[48] = this + 3; } // 518D92: positive sp value 4 has been found // 518CA5: variable 'v6' is possibly undefined // 55FB54: using guessed type int (*off_55FB54)(); // 55FB68: using guessed type int (*off_55FB68[2])(); // 55FB7C: using guessed type int (*off_55FB7C[2])(); //----- (00518DA0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( _DWORD *this, int a2, int a3) { int v3; // eax _BYTE *v4; // edx unsigned int v5; // eax _DWORD *v6; // [esp+20h] [ebp-48h] int v7; // [esp+24h] [ebp-44h] v7 = (int)(this + 18); std::ios_base::ios_base(this + 18); this[46] = 0; *((_WORD *)this + 94) = 0; this[48] = 0; this[49] = 0; this[50] = 0; this[51] = 0; *this = &unk_55B244; this[18] = &unk_55B258; this[1] = 0; std::ios::init(v7, 0); this[2] = &unk_55B26C; this[18] = &unk_55B280; std::ios::init(v7, 0); *this = &off_55FB54; this[18] = off_55FB7C; this[2] = off_55FB68; this[3] = &off_560424; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; v6 = this + 3; std::locale::locale(this + 10); v3 = *(_DWORD *)(a2 + 4); v4 = *(_BYTE **)a2; this[3] = &off_55F928; this[11] = 0; this[12] = this + 14; std::string::_M_construct(this + 12, v4, (int)&v4[v3]); this[11] = a3; v5 = 0; if ( (a3 & 3) != 0 ) v5 = this[13]; std::stringbuf::_M_sync(v6, (_DWORD *)this[12], 0, v5); std::ios::init(v7, (int)v6); } // 518FBE: positive sp value 4 has been found // 55F928: using guessed type int (*off_55F928)(); // 55FB54: using guessed type int (*off_55FB54)(); // 55FB68: using guessed type int (*off_55FB68[2])(); // 55FB7C: using guessed type int (*off_55FB7C[2])(); // 560424: using guessed type int (*off_560424)(); //----- (00519000) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( _DWORD *this, int a2) { int v2; // [esp+24h] [ebp-44h] v2 = (int)(this + 18); std::ios_base::ios_base(this + 18); this[46] = 0; *((_WORD *)this + 94) = 0; this[48] = 0; this[49] = 0; this[50] = 0; this[51] = 0; *this = &unk_55B244; this[18] = &unk_55B258; this[1] = 0; std::ios::init(v2, 0); this[2] = &unk_55B26C; this[18] = &unk_55B280; std::ios::init(v2, 0); *this = &off_55FB54; this[18] = off_55FB7C; this[2] = off_55FB68; this[3] = &off_560424; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; std::locale::locale(this + 10); this[11] = a2; this[3] = &off_55F928; this[12] = this + 14; this[13] = 0; *((_BYTE *)this + 56) = 0; std::ios::init(v2, (int)(this + 3)); } // 5191BD: positive sp value 4 has been found // 55F928: using guessed type int (*off_55F928)(); // 55FB54: using guessed type int (*off_55FB54)(); // 55FB68: using guessed type int (*off_55FB68[2])(); // 55FB7C: using guessed type int (*off_55FB7C[2])(); // 560424: using guessed type int (*off_560424)(); //----- (005191E0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1) { int v1; // [esp+24h] [ebp-44h] v1 = a1 + 72; std::ios_base::ios_base((_DWORD *)(a1 + 72)); *(_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_55B244; *(_DWORD *)(a1 + 72) = &unk_55B258; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_55B26C; *(_DWORD *)(a1 + 72) = &unk_55B280; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_55FB54; *(_DWORD *)(a1 + 72) = off_55FB7C; *(_DWORD *)(a1 + 8) = off_55FB68; *(_DWORD *)(a1 + 12) = &off_560424; *(_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 + 12) = &off_55F928; *(_DWORD *)(a1 + 44) = 24; *(_DWORD *)(a1 + 48) = a1 + 56; *(_DWORD *)(a1 + 52) = 0; *(_BYTE *)(a1 + 56) = 0; std::ios::init(v1, a1 + 12); } // 51939C: positive sp value 4 has been found // 55F928: using guessed type int (*off_55F928)(); // 55FB54: using guessed type int (*off_55FB54)(); // 55FB68: using guessed type int (*off_55FB68[2])(); // 55FB7C: using guessed type int (*off_55FB7C[2])(); // 560424: using guessed type int (*off_560424)(); //----- (005193C0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax int v8; // edx int v9; // eax int v10; // eax int v11; // edx int v12; // eax int v13; // edx std::ios_base *v14; // [esp+0h] [ebp-58h] std::ios_base *v15; // [esp+10h] [ebp-48h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-44h] v4 = a2[2]; v5 = a2[3]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; this[1] = a3[1]; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move((int)lpuexcpt, v15, v14); std::ios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); v7 = *((_DWORD *)v15 + 28); *((_DWORD *)lpuexcpt + 30) = 0; *((_DWORD *)v15 + 28) = 0; *((_DWORD *)lpuexcpt + 28) = v7; *((_WORD *)lpuexcpt + 58) = *((_WORD *)v15 + 58); v8 = a2[5]; a3[1] = 0; v9 = a2[4]; this[2] = v9; *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v8; 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; *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; this[2] = a2[9]; std::stringbuf::basic_stringbuf(this + 3, (std::locale *)(a3 + 3)); *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 3); } // 51950E: positive sp value 4 has been found // 519426: variable 'v14' is possibly undefined //----- (00519530) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( int *this, int *a2, int a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax _DWORD *v9; // ecx int v10; // eax int v11; // edx int v12; // edx int v13; // eax int v14; // eax int v15; // eax _BYTE *v16; // edx unsigned int v17; // eax _DWORD *v18; // [esp+24h] [ebp-44h] v5 = a2[2]; v6 = a2[3]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = a2[4]; this[2] = v8; v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); *v9 = a2[5]; std::ios::init((int)v9, 0); v10 = a2[1]; v11 = a2[6]; *this = v10; *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; this[2] = a2[7]; v12 = a2[8]; v13 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; v14 = a2[9]; this[3] = (int)&off_560424; this[2] = v14; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; v18 = this + 3; std::locale::locale(this + 10); v15 = *(_DWORD *)(a3 + 4); v16 = *(_BYTE **)a3; this[3] = (int)&off_55F928; this[11] = 0; this[12] = (int)(this + 14); std::string::_M_construct(this + 12, v16, (int)&v16[v15]); this[11] = a4; v17 = 0; if ( (a4 & 3) != 0 ) v17 = this[13]; std::stringbuf::_M_sync(v18, (_DWORD *)this[12], 0, v17); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)v18); } // 519717: positive sp value 4 has been found // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (00519780) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( int *this, int *a2, int a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax _DWORD *v8; // ecx int v9; // eax int v10; // edx int v11; // edx int v12; // eax int v13; // eax int v14; // eax v4 = a2[2]; v5 = a2[3]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); v7 = a2[4]; this[2] = v7; v8 = (int *)((char *)this + *(_DWORD *)(v7 - 12) + 8); *v8 = a2[5]; std::ios::init((int)v8, 0); v9 = a2[1]; v10 = a2[6]; *this = v9; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; this[2] = a2[7]; v11 = a2[8]; v12 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v11; v13 = a2[9]; this[3] = (int)&off_560424; this[4] = 0; this[2] = v13; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; std::locale::locale(this + 10); this[11] = a3; this[12] = (int)(this + 14); v14 = *this; this[3] = (int)&off_55F928; this[13] = 0; *((_BYTE *)this + 56) = 0; std::ios::init((int)this + *(_DWORD *)(v14 - 12), (int)(this + 3)); } // 51990A: positive sp value 4 has been found // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (00519960) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( int *this, int *a2) { int v3; // eax int v4; // ecx int v5; // edx int v6; // eax _DWORD *v7; // ecx int v8; // eax int v9; // edx int v10; // edx int v11; // eax int v12; // eax int v13; // eax v3 = a2[2]; v4 = a2[3]; v5 = *(_DWORD *)(v3 - 12); *this = v3; *(int *)((char *)this + v5) = v4; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); v6 = a2[4]; this[2] = v6; v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); *v7 = a2[5]; std::ios::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[8]; v11 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v10; v12 = a2[9]; this[3] = (int)&off_560424; this[4] = 0; this[2] = v12; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; std::locale::locale(this + 10); this[3] = (int)&off_55F928; this[12] = (int)(this + 14); v13 = *this; this[11] = 24; this[13] = 0; *((_BYTE *)this + 56) = 0; std::ios::init((int)this + *(_DWORD *)(v13 - 12), (int)(this + 3)); } // 519AEB: positive sp value 4 has been found // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (00519B40) -------------------------------------------------------- void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *Block) { _DWORD *v2; // eax v2 = (_DWORD *)Block[12]; *Block = &off_55FB54; Block[18] = off_55FB7C; Block[2] = off_55FB68; Block[3] = &off_55F928; if ( v2 != Block + 14 ) operator delete(v2); Block[3] = &off_560424; std::locale::~locale((_DWORD **)Block + 10); Block[2] = &unk_55B26C; *Block = &unk_55B244; Block[1] = 0; Block[18] = &off_560E20; std::ios_base::~ios_base((int)(Block + 18)); operator delete(Block); } // 55F928: using guessed type int (*off_55F928)(); // 55FB54: using guessed type int (*off_55FB54)(); // 55FB68: using guessed type int (*off_55FB68[2])(); // 55FB7C: using guessed type int (*off_55FB7C[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (00519BC0) -------------------------------------------------------- void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1) { void *Block; // eax Block = *(void **)(a1 + 48); *(_DWORD *)a1 = &off_55FB54; *(_DWORD *)(a1 + 72) = off_55FB7C; *(_DWORD *)(a1 + 8) = off_55FB68; *(_DWORD *)(a1 + 12) = &off_55F928; if ( Block != (void *)(a1 + 56) ) operator delete(Block); *(_DWORD *)(a1 + 12) = &off_560424; std::locale::~locale((_DWORD **)(a1 + 40)); *(_DWORD *)(a1 + 8) = &unk_55B26C; *(_DWORD *)a1 = &unk_55B244; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 72) = &off_560E20; std::ios_base::~ios_base(a1 + 72); } // 55F928: using guessed type int (*off_55F928)(); // 55FB54: using guessed type int (*off_55FB54)(); // 55FB68: using guessed type int (*off_55FB68[2])(); // 55FB7C: using guessed type int (*off_55FB7C[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (00519C30) -------------------------------------------------------- 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_55F928; *((_DWORD *)this + 2) = v4; if ( *((char **)this + 12) != this + 56 ) operator delete(*((void **)this + 12)); *((_DWORD *)this + 3) = &off_560424; 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; } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (00519CC0) -------------------------------------------------------- _DWORD *__thiscall std::basic_stringstream,std::allocator>::operator=( _DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // cl char v7; // cl int v8; // eax std::ios_base *v10; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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::stringbuf::operator=((int)(this + 3), (int)(a2 + 3)); return this; } // 519D00: variable 'v10' is possibly undefined //----- (00519DA0) -------------------------------------------------------- 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((unsigned int *)(this + 48), 0, *(_DWORD *)(this + 52), *(_WORD **)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); } //----- (00519E10) -------------------------------------------------------- void __thiscall std::basic_stringstream,std::allocator>::swap( _DWORD *this, _DWORD *a2) { std::ios_base *v3; // edi std::ios_base *v4; // esi int v5; // edx __int16 v6; // cx int v7; // edx std::ios_base *v8; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = 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::wstringbuf::swap(this + 3, (int)(a2 + 3)); } // 519E50: variable 'v8' is possibly undefined //----- (00519EF0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( _DWORD *this, _DWORD *a2) { int v2; // eax int v3; // eax std::ios_base *v4; // edx int v5; // eax int v6; // edx unsigned int v7; // eax int v8; // ecx int v9; // eax _DWORD *v10; // esi _DWORD *v11; // eax int v12; // ecx int v13; // ebx char *v14; // ecx int v15; // edx std::ios_base *v16; // [esp+0h] [ebp-B8h] const std::locale *v17; // [esp+0h] [ebp-B8h] struct _Unwind_Exception *lpuexcpta; // [esp+20h] [ebp-98h] struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] _DWORD *v20; // [esp+24h] [ebp-94h] int v22; // [esp+70h] [ebp-48h] int v23; // [esp+74h] [ebp-44h] int v24; // [esp+78h] [ebp-40h] __int64 v25; // [esp+80h] [ebp-38h] int v26; // [esp+88h] [ebp-30h] int v27; // [esp+8Ch] [ebp-2Ch] int v28; // [esp+90h] [ebp-28h] int v29; // [esp+98h] [ebp-20h] v20 = this + 18; std::ios_base::ios_base(this + 18); v2 = a2[1]; this[46] = 0; this[1] = v2; *((_WORD *)this + 94) = 0; v3 = *a2; *this = &unk_55B294; *((_BYTE *)this + 190) = 0; v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); this[48] = 0; this[49] = 0; this[50] = 0; this[51] = 0; this[18] = &unk_55B2A8; lpuexcpta = v4; std::ios_base::_M_move((int)v20, v4, v16); std::wios::_M_cache_locale(v20, (int)(this + 45)); v22 = -1; v23 = -1; v5 = *((_DWORD *)lpuexcpta + 28); *((_DWORD *)lpuexcpta + 28) = 0; this[48] = 0; this[46] = v5; v24 = -1; *((_WORD *)this + 94) = *((_WORD *)lpuexcpta + 58); v6 = a2[12]; *((_BYTE *)this + 190) = *((_BYTE *)lpuexcpta + 118); LODWORD(v25) = -1; a2[1] = 0; lpuexcpt = (struct _Unwind_Exception *)(this + 3); v7 = a2[4]; *this = &off_55FB90; this[18] = off_55FBB8; this[2] = off_55FBA4; v26 = -1; v27 = -1; v28 = -1; v29 = -1; if ( !v7 ) { v8 = a2[7]; if ( !v8 ) goto LABEL_7; goto LABEL_3; } v22 = (int)(v7 - v6) >> 1; v23 = (int)(v7 - v6) >> 31; v24 = (a2[5] - v6) >> 1; v7 = a2[6]; v25 = (int)(v7 - v6) >> 1; v8 = a2[7]; if ( v8 ) { LABEL_3: v26 = (v8 - v6) >> 1; v27 = (v8 - v6) >> 31; v28 = (a2[8] - v8) >> 1; v29 = (a2[9] - v6) >> 1; if ( v7 < a2[8] ) v7 = a2[8]; } if ( v7 ) a2[13] = (int)(v7 - v6) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 3), v17); v9 = a2[11]; this[3] = &off_55F968; this[12] = this + 14; v10 = a2 + 14; this[11] = v9; v11 = (_DWORD *)a2[12]; if ( v11 == a2 + 14 ) { this[14] = a2[14]; this[15] = a2[15]; this[16] = a2[16]; this[17] = a2[17]; } else { this[12] = v11; this[14] = a2[14]; } this[13] = a2[13]; a2[12] = v10; *((_WORD *)a2 + 28) = 0; v12 = this[12]; a2[13] = 0; if ( (v22 & v23) != -1 ) { this[4] = v12 + 2 * v22; this[5] = v12 + 2 * v24; this[6] = v12 + 2 * v25; } if ( (v26 & v27) != -1 ) { v13 = v12 + 2 * v26; this[9] = v12 + 2 * v29; this[7] = v13; this[8] = v13 + 2 * v28; } v14 = (char *)a2 + 70; v15 = a2[11] & 0x10; if ( (a2[11] & 8) != 0 ) { a2[4] = v10; a2[5] = v10; a2[6] = v10; if ( v15 ) { a2[8] = v10; a2[7] = v10; a2[9] = v14; } } else if ( v15 ) { a2[8] = v10; a2[7] = v10; a2[9] = v14; a2[4] = v10; a2[5] = v10; a2[6] = v10; } this[48] = lpuexcpt; } // 51A375: positive sp value 4 has been found // 51A234: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) // 519FB9: variable 'v16' is possibly undefined // 51A15F: variable 'v17' is possibly undefined // 55F968: using guessed type int (*off_55F968)(); // 55FB90: using guessed type int (*off_55FB90)(); // 55FBA4: using guessed type int (*off_55FBA4[2])(); // 55FBB8: using guessed type int (*off_55FBB8[2])(); //----- (0051A380) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( _DWORD *this, int a2, int a3) { int v3; // edx _WORD *v4; // eax unsigned int v5; // eax _DWORD *v6; // [esp+20h] [ebp-48h] int v7; // [esp+24h] [ebp-44h] v7 = (int)(this + 18); std::ios_base::ios_base(this + 18); this[46] = 0; *((_WORD *)this + 94) = 0; *((_BYTE *)this + 190) = 0; this[48] = 0; this[49] = 0; this[50] = 0; this[51] = 0; *this = &unk_55B294; this[18] = &unk_55B2A8; this[1] = 0; std::wios::init(v7, 0); this[2] = &unk_55B2F8; this[18] = &unk_55B30C; std::wios::init(v7, 0); *this = &off_55FB90; this[18] = off_55FBB8; this[2] = off_55FBA4; this[3] = &off_560464; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; v6 = this + 3; std::locale::locale(this + 10); v3 = *(_DWORD *)(a2 + 4); v4 = *(_WORD **)a2; this[3] = &off_55F968; this[11] = 0; this[12] = this + 14; std::wstring::_M_construct(this + 12, v4, (int)&v4[v3]); this[11] = a3; v5 = 0; if ( (a3 & 3) != 0 ) v5 = this[13]; std::wstringbuf::_M_sync(v6, (_DWORD *)this[12], 0, v5); std::wios::init(v7, (int)v6); } // 51A5A3: positive sp value 4 has been found // 55F968: using guessed type int (*off_55F968)(); // 55FB90: using guessed type int (*off_55FB90)(); // 55FBA4: using guessed type int (*off_55FBA4[2])(); // 55FBB8: using guessed type int (*off_55FBB8[2])(); // 560464: using guessed type int (*off_560464)(); //----- (0051A5E0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( _DWORD *this, int a2) { int v2; // [esp+24h] [ebp-44h] v2 = (int)(this + 18); std::ios_base::ios_base(this + 18); this[46] = 0; *((_WORD *)this + 94) = 0; *((_BYTE *)this + 190) = 0; this[48] = 0; this[49] = 0; this[50] = 0; this[51] = 0; *this = &unk_55B294; this[18] = &unk_55B2A8; this[1] = 0; std::wios::init(v2, 0); this[2] = &unk_55B2F8; this[18] = &unk_55B30C; std::wios::init(v2, 0); *this = &off_55FB90; this[18] = off_55FBB8; this[2] = off_55FBA4; this[3] = &off_560464; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; std::locale::locale(this + 10); this[11] = a2; *((_WORD *)this + 28) = 0; this[3] = &off_55F968; this[12] = this + 14; this[13] = 0; std::wios::init(v2, (int)(this + 3)); } // 51A7A6: positive sp value 4 has been found // 55F968: using guessed type int (*off_55F968)(); // 55FB90: using guessed type int (*off_55FB90)(); // 55FBA4: using guessed type int (*off_55FBA4[2])(); // 55FBB8: using guessed type int (*off_55FBB8[2])(); // 560464: using guessed type int (*off_560464)(); //----- (0051A7D0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __fastcall std::basic_stringstream,std::allocator>::basic_stringstream( int a1) { int v1; // [esp+24h] [ebp-44h] v1 = a1 + 72; std::ios_base::ios_base((_DWORD *)(a1 + 72)); *(_DWORD *)(a1 + 184) = 0; *(_WORD *)(a1 + 188) = 0; *(_BYTE *)(a1 + 190) = 0; *(_DWORD *)(a1 + 192) = 0; *(_DWORD *)(a1 + 196) = 0; *(_DWORD *)(a1 + 200) = 0; *(_DWORD *)(a1 + 204) = 0; *(_DWORD *)a1 = &unk_55B294; *(_DWORD *)(a1 + 72) = &unk_55B2A8; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)(a1 + 8) = &unk_55B2F8; *(_DWORD *)(a1 + 72) = &unk_55B30C; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_55FB90; *(_DWORD *)(a1 + 72) = off_55FBB8; *(_DWORD *)(a1 + 8) = off_55FBA4; *(_DWORD *)(a1 + 12) = &off_560464; *(_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)); *(_WORD *)(a1 + 56) = 0; *(_DWORD *)(a1 + 12) = &off_55F968; *(_DWORD *)(a1 + 44) = 24; *(_DWORD *)(a1 + 48) = a1 + 56; *(_DWORD *)(a1 + 52) = 0; std::wios::init(v1, a1 + 12); } // 51A995: positive sp value 4 has been found // 55F968: using guessed type int (*off_55F968)(); // 55FB90: using guessed type int (*off_55FB90)(); // 55FBA4: using guessed type int (*off_55FBA4[2])(); // 55FBB8: using guessed type int (*off_55FBB8[2])(); // 560464: using guessed type int (*off_560464)(); //----- (0051A9C0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax int v8; // edx int v9; // eax int v10; // eax int v11; // edx int v12; // eax int v13; // edx int v14; // edx unsigned int v15; // eax int v16; // ecx int v17; // eax _DWORD *v18; // esi _DWORD *v19; // eax int v20; // ecx int v21; // ebx char *v22; // ecx int v23; // edx std::ios_base *v24; // [esp+0h] [ebp-A8h] const std::locale *v25; // [esp+0h] [ebp-A8h] std::ios_base *v26; // [esp+10h] [ebp-98h] _DWORD *v27; // [esp+10h] [ebp-98h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-94h] int v30; // [esp+60h] [ebp-48h] int v31; // [esp+64h] [ebp-44h] int v32; // [esp+68h] [ebp-40h] __int64 v33; // [esp+70h] [ebp-38h] int v34; // [esp+78h] [ebp-30h] int v35; // [esp+7Ch] [ebp-2Ch] int v36; // [esp+80h] [ebp-28h] int v37; // [esp+88h] [ebp-20h] v4 = a2[2]; v5 = a2[3]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; this[1] = a3[1]; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); v26 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move((int)lpuexcpt, v26, v24); std::wios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); v7 = *((_DWORD *)v26 + 28); *((_DWORD *)lpuexcpt + 30) = 0; *((_DWORD *)v26 + 28) = 0; *((_DWORD *)lpuexcpt + 28) = v7; *((_WORD *)lpuexcpt + 58) = *((_WORD *)v26 + 58); *((_BYTE *)lpuexcpt + 118) = *((_BYTE *)v26 + 118); a3[1] = 0; v8 = a2[5]; v9 = a2[4]; this[2] = v9; *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v8; 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; *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; v30 = -1; this[2] = a2[9]; v27 = this + 3; v31 = -1; v14 = a3[12]; v15 = a3[4]; v32 = -1; LODWORD(v33) = -1; v34 = -1; v35 = -1; v36 = -1; v37 = -1; if ( !v15 ) { v16 = a3[7]; if ( !v16 ) goto LABEL_7; goto LABEL_3; } v30 = (int)(v15 - v14) >> 1; v31 = (int)(v15 - v14) >> 31; v32 = (a3[5] - v14) >> 1; v15 = a3[6]; v33 = (int)(v15 - v14) >> 1; v16 = a3[7]; if ( v16 ) { LABEL_3: v34 = (v16 - v14) >> 1; v35 = (v16 - v14) >> 31; v36 = (a3[8] - v16) >> 1; v37 = (a3[9] - v14) >> 1; if ( v15 < a3[8] ) v15 = a3[8]; } if ( v15 ) a3[13] = (int)(v15 - v14) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(v27, (std::locale *)(a3 + 3), v25); v17 = a3[11]; this[3] = (int)&off_55F968; this[12] = (int)(this + 14); v18 = a3 + 14; this[11] = v17; v19 = (_DWORD *)a3[12]; if ( v19 == a3 + 14 ) { this[14] = a3[14]; this[15] = a3[15]; this[16] = a3[16]; this[17] = a3[17]; } else { this[12] = (int)v19; this[14] = a3[14]; } this[13] = a3[13]; a3[12] = v18; *((_WORD *)a3 + 28) = 0; v20 = this[12]; a3[13] = 0; if ( (v30 & v31) != -1 ) { this[4] = v20 + 2 * v30; this[5] = v20 + 2 * v32; this[6] = v20 + 2 * v33; } if ( (v34 & v35) != -1 ) { v21 = v20 + 2 * v34; this[9] = v20 + 2 * v37; this[7] = v21; this[8] = v21 + 2 * v36; } v22 = (char *)a3 + 70; v23 = a3[11] & 0x10; if ( (a3[11] & 8) != 0 ) { a3[4] = v18; a3[5] = v18; a3[6] = v18; if ( v23 ) { a3[8] = v18; a3[7] = v18; a3[9] = v22; } } else if ( v23 ) { a3[8] = v18; a3[7] = v18; a3[9] = v22; a3[4] = v18; a3[5] = v18; a3[6] = v18; } *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)v27; } // 51ADE8: positive sp value 4 has been found // 51ACD5: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) // 51AA3B: variable 'v24' is possibly undefined // 51AC00: variable 'v25' is possibly undefined // 55F968: using guessed type int (*off_55F968)(); //----- (0051AE10) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( int *this, int *a2, int a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax _DWORD *v9; // ecx int v10; // eax int v11; // edx int v12; // edx int v13; // eax int v14; // eax int v15; // edx _WORD *v16; // eax unsigned int v17; // eax _DWORD *v18; // [esp+24h] [ebp-44h] v5 = a2[2]; v6 = a2[3]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = a2[4]; this[2] = v8; v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); *v9 = a2[5]; std::wios::init((int)v9, 0); v10 = a2[1]; v11 = a2[6]; *this = v10; *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; this[2] = a2[7]; v12 = a2[8]; v13 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; v14 = a2[9]; this[3] = (int)&off_560464; this[2] = v14; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; v18 = this + 3; std::locale::locale(this + 10); v15 = *(_DWORD *)(a3 + 4); v16 = *(_WORD **)a3; this[3] = (int)&off_55F968; this[11] = 0; this[12] = (int)(this + 14); std::wstring::_M_construct(this + 12, v16, (int)&v16[v15]); this[11] = a4; v17 = 0; if ( (a4 & 3) != 0 ) v17 = this[13]; std::wstringbuf::_M_sync(v18, (_DWORD *)this[12], 0, v17); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)v18); } // 51AFF3: positive sp value 4 has been found // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (0051B060) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( int *this, int *a2, int a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax _DWORD *v8; // ecx int v9; // eax int v10; // edx int v11; // edx int v12; // eax int v13; // eax int v14; // eax v4 = a2[2]; v5 = a2[3]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); v7 = a2[4]; this[2] = v7; v8 = (int *)((char *)this + *(_DWORD *)(v7 - 12) + 8); *v8 = a2[5]; std::wios::init((int)v8, 0); v9 = a2[1]; v10 = a2[6]; *this = v9; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; this[2] = a2[7]; v11 = a2[8]; v12 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v11; v13 = a2[9]; this[3] = (int)&off_560464; this[4] = 0; this[2] = v13; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; std::locale::locale(this + 10); this[11] = a3; this[12] = (int)(this + 14); v14 = *this; *((_WORD *)this + 28) = 0; this[3] = (int)&off_55F968; this[13] = 0; std::wios::init((int)this + *(_DWORD *)(v14 - 12), (int)(this + 3)); } // 51B1EC: positive sp value 4 has been found // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (0051B240) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( int *this, int *a2) { int v3; // eax int v4; // ecx int v5; // edx int v6; // eax _DWORD *v7; // ecx int v8; // eax int v9; // edx int v10; // edx int v11; // eax int v12; // eax int v13; // eax v3 = a2[2]; v4 = a2[3]; v5 = *(_DWORD *)(v3 - 12); *this = v3; *(int *)((char *)this + v5) = v4; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v3 - 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[8]; v11 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v10; v12 = a2[9]; this[3] = (int)&off_560464; this[4] = 0; this[2] = v12; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; this[9] = 0; std::locale::locale(this + 10); *((_WORD *)this + 28) = 0; this[12] = (int)(this + 14); v13 = *this; this[3] = (int)&off_55F968; this[11] = 24; this[13] = 0; std::wios::init((int)this + *(_DWORD *)(v13 - 12), (int)(this + 3)); } // 51B3CD: positive sp value 4 has been found // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (0051B420) -------------------------------------------------------- void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *Block) { _DWORD *v2; // eax v2 = (_DWORD *)Block[12]; *Block = &off_55FB90; Block[18] = off_55FBB8; Block[2] = off_55FBA4; Block[3] = &off_55F968; if ( v2 != Block + 14 ) operator delete(v2); Block[3] = &off_560464; std::locale::~locale((_DWORD **)Block + 10); Block[2] = &unk_55B2F8; *Block = &unk_55B294; Block[1] = 0; Block[18] = &off_560E30; std::ios_base::~ios_base((int)(Block + 18)); operator delete(Block); } // 55F968: using guessed type int (*off_55F968)(); // 55FB90: using guessed type int (*off_55FB90)(); // 55FBA4: using guessed type int (*off_55FBA4[2])(); // 55FBB8: using guessed type int (*off_55FBB8[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (0051B4A0) -------------------------------------------------------- void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( int a1) { void *Block; // eax Block = *(void **)(a1 + 48); *(_DWORD *)a1 = &off_55FB90; *(_DWORD *)(a1 + 72) = off_55FBB8; *(_DWORD *)(a1 + 8) = off_55FBA4; *(_DWORD *)(a1 + 12) = &off_55F968; if ( Block != (void *)(a1 + 56) ) operator delete(Block); *(_DWORD *)(a1 + 12) = &off_560464; std::locale::~locale((_DWORD **)(a1 + 40)); *(_DWORD *)(a1 + 8) = &unk_55B2F8; *(_DWORD *)a1 = &unk_55B294; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 72) = &off_560E30; std::ios_base::~ios_base(a1 + 72); } // 55F968: using guessed type int (*off_55F968)(); // 55FB90: using guessed type int (*off_55FB90)(); // 55FBA4: using guessed type int (*off_55FBA4[2])(); // 55FBB8: using guessed type int (*off_55FBB8[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (0051B510) -------------------------------------------------------- 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_55F968; *((_DWORD *)this + 2) = v4; if ( *((char **)this + 12) != this + 56 ) operator delete(*((void **)this + 12)); *((_DWORD *)this + 3) = &off_560464; 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; } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (0051B5A0) -------------------------------------------------------- _DWORD *__thiscall std::basic_stringstream,std::allocator>::operator=( _DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // cx int v7; // eax std::ios_base *v9; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = 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::wstringbuf::operator=((int)(this + 3), (int)(a2 + 3)); return this; } // 51B5E0: variable 'v9' is possibly undefined //----- (0051B680) -------------------------------------------------------- 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); } //----- (0051B6F0) -------------------------------------------------------- void __thiscall std::istringstream::swap(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // edi std::ios_base *v4; // esi int v5; // edx char v6; // cl char v7; // cl int v8; // edx std::ios_base *v9; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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::stringbuf::swap(this + 2, (int)(a2 + 2)); } // 51B730: variable 'v9' is possibly undefined //----- (0051B7C0) -------------------------------------------------------- void __thiscall std::istringstream::basic_istringstream(_DWORD *this, _DWORD *a2) { int v2; // eax int v3; // eax std::ios_base *v4; // esi int v5; // eax int v6; // edx unsigned int v7; // eax int v8; // ecx int v9; // eax _DWORD *v10; // eax int v11; // ebx int v12; // ecx int v13; // ebx _DWORD *v14; // eax int v15; // edx int v16; // ecx int v17; // ecx std::ios_base *v18; // [esp+4h] [ebp-B4h] const std::locale *v19; // [esp+4h] [ebp-B4h] struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] _DWORD *v21; // [esp+24h] [ebp-94h] _DWORD *v22; // [esp+24h] [ebp-94h] __int64 v24; // [esp+70h] [ebp-48h] int v25; // [esp+78h] [ebp-40h] __int64 v26; // [esp+80h] [ebp-38h] __int64 v27; // [esp+88h] [ebp-30h] int v28; // [esp+90h] [ebp-28h] int v29; // [esp+98h] [ebp-20h] v21 = this + 17; std::ios_base::ios_base(this + 17); *((_WORD *)this + 92) = 0; v2 = a2[1]; this[45] = 0; this[1] = v2; this[47] = 0; v3 = *a2; *this = &unk_55B320; this[48] = 0; v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); this[17] = &unk_55B334; this[49] = 0; this[50] = 0; std::ios_base::_M_move((int)v21, v4, v18); std::ios::_M_cache_locale(v21, (int)(this + 44)); v24 = -1LL; v5 = *((_DWORD *)v4 + 28); *((_DWORD *)v4 + 28) = 0; this[47] = 0; this[45] = v5; v25 = -1; *((_WORD *)this + 92) = *((_WORD *)v4 + 58); a2[1] = 0; lpuexcpt = (struct _Unwind_Exception *)(this + 2); v6 = a2[11]; v7 = a2[3]; *this = &off_55FBCC; this[17] = off_55FBE0; LODWORD(v26) = -1; v27 = -1LL; v28 = -1; v29 = -1; if ( !v7 ) { v8 = a2[6]; if ( !v8 ) goto LABEL_7; goto LABEL_3; } v24 = (int)(v7 - v6); v25 = a2[4] - v6; v7 = a2[5]; v26 = (int)(v7 - v6); v8 = a2[6]; if ( v8 ) { LABEL_3: v27 = v8 - v6; v28 = a2[7] - v8; v29 = a2[8] - v6; if ( v7 < a2[7] ) v7 = a2[7]; } if ( v7 ) a2[12] = v7 - v6; LABEL_7: std::streambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 2), v19); v9 = a2[10]; this[2] = &off_55F928; this[11] = this + 13; this[10] = v9; v22 = a2 + 13; v10 = (_DWORD *)a2[11]; if ( v10 == a2 + 13 ) { this[13] = a2[13]; this[14] = a2[14]; this[15] = a2[15]; this[16] = a2[16]; } else { this[11] = v10; this[13] = a2[13]; } this[12] = a2[12]; *((_BYTE *)a2 + 52) = 0; a2[11] = v22; a2[12] = 0; v11 = this[11]; if ( ((unsigned int)v24 & HIDWORD(v24)) != -1 ) { this[3] = v11 + v24; this[4] = v11 + v25; this[5] = v11 + v26; } if ( ((unsigned int)v27 & HIDWORD(v27)) != -1 ) { v12 = v11 + v29; v13 = v27 + v11; this[8] = v12; this[6] = v13; this[7] = v13 + v28; } v14 = (_DWORD *)a2[11]; v15 = a2[10] & 0x10; if ( v14 == v22 ) v16 = 15; else v16 = a2[13]; v17 = (int)v14 + v16; if ( (a2[10] & 8) != 0 ) { a2[3] = v14; a2[4] = v14; a2[5] = v14; if ( v15 ) { a2[7] = v14; a2[6] = v14; a2[8] = v17; } } else if ( v15 ) { a2[7] = v14; a2[6] = v14; a2[8] = v17; a2[3] = v14; a2[4] = v14; a2[5] = v14; } this[47] = lpuexcpt; } // 51BAD5: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) // 51B882: variable 'v18' is possibly undefined // 51BA09: variable 'v19' is possibly undefined // 55F928: using guessed type int (*off_55F928)(); // 55FBCC: using guessed type int (*off_55FBCC)(); // 55FBE0: using guessed type int (*off_55FBE0[2])(); //----- (0051BC50) -------------------------------------------------------- void __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2, int a3) { int v3; // eax _BYTE *v4; // edx unsigned int v5; // eax int v6; // [esp+20h] [ebp-48h] _DWORD *v7; // [esp+24h] [ebp-44h] v6 = (int)(this + 17); std::ios_base::ios_base(this + 17); this[45] = 0; *((_WORD *)this + 92) = 0; this[47] = 0; this[48] = 0; this[49] = 0; this[50] = 0; *this = &unk_55B320; this[17] = &unk_55B334; this[1] = 0; std::ios::init(v6, 0); *this = &off_55FBCC; this[17] = off_55FBE0; this[2] = &off_560424; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; v7 = this + 2; std::locale::locale(this + 9); v3 = *(_DWORD *)(a2 + 4); v4 = *(_BYTE **)a2; this[2] = &off_55F928; this[10] = 0; this[11] = this + 13; std::string::_M_construct(this + 11, v4, (int)&v4[v3]); v5 = 0; this[10] = a3 | 8; if ( (a3 & 3) != 0 ) v5 = this[12]; std::stringbuf::_M_sync(v7, (_DWORD *)this[11], 0, v5); std::ios::init(v6, (int)v7); } // 55F928: using guessed type int (*off_55F928)(); // 55FBCC: using guessed type int (*off_55FBCC)(); // 55FBE0: using guessed type int (*off_55FBE0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (0051BE70) -------------------------------------------------------- void __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2) { int v2; // [esp+24h] [ebp-44h] v2 = (int)(this + 17); std::ios_base::ios_base(this + 17); this[45] = 0; *((_WORD *)this + 92) = 0; this[47] = 0; this[48] = 0; this[49] = 0; this[50] = 0; *this = &unk_55B320; this[17] = &unk_55B334; this[1] = 0; std::ios::init(v2, 0); *this = &off_55FBCC; this[17] = off_55FBE0; this[2] = &off_560424; 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_55F928; this[10] = a2 | 8; this[11] = this + 13; this[12] = 0; *((_BYTE *)this + 52) = 0; std::ios::init(v2, (int)(this + 2)); } // 55F928: using guessed type int (*off_55F928)(); // 55FBCC: using guessed type int (*off_55FBCC)(); // 55FBE0: using guessed type int (*off_55FBE0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (0051C010) -------------------------------------------------------- void __fastcall std::istringstream::basic_istringstream(int a1) { int v1; // [esp+24h] [ebp-44h] v1 = a1 + 68; std::ios_base::ios_base((_DWORD *)(a1 + 68)); *(_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_55B320; *(_DWORD *)(a1 + 68) = &unk_55B334; *(_DWORD *)(a1 + 4) = 0; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_55FBCC; *(_DWORD *)(a1 + 68) = off_55FBE0; *(_DWORD *)(a1 + 8) = &off_560424; *(_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 + 8) = &off_55F928; *(_DWORD *)(a1 + 40) = 8; *(_DWORD *)(a1 + 44) = a1 + 52; *(_DWORD *)(a1 + 48) = 0; *(_BYTE *)(a1 + 52) = 0; std::ios::init(v1, a1 + 8); } // 55F928: using guessed type int (*off_55F928)(); // 55FBCC: using guessed type int (*off_55FBCC)(); // 55FBE0: using guessed type int (*off_55FBE0[2])(); // 560424: using guessed type int (*off_560424)(); //----- (0051C1A0) -------------------------------------------------------- void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax int v8; // edx int v9; // eax std::ios_base *v10; // [esp+4h] [ebp-54h] std::ios_base *v11; // [esp+10h] [ebp-48h] int v12; // [esp+14h] [ebp-44h] v4 = a2[1]; v5 = a2[2]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; 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); v7 = *((_DWORD *)v11 + 28); *(_DWORD *)(v12 + 120) = 0; *((_DWORD *)v11 + 28) = 0; v8 = a2[3]; *(_DWORD *)(v12 + 112) = v7; *(_WORD *)(v12 + 116) = *((_WORD *)v11 + 58); a3[1] = 0; v9 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; std::stringbuf::basic_stringbuf(this + 2, (std::locale *)(a3 + 2)); *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 2); } // 51C207: variable 'v10' is possibly undefined //----- (0051C2E0) -------------------------------------------------------- void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax int v9; // edx _BYTE *v10; // edx int v11; // eax unsigned int v12; // eax _DWORD *v13; // [esp+24h] [ebp-44h] v5 = a2[1]; v6 = a2[2]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = *a2; v9 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; v13 = this + 2; this[2] = (int)&off_560424; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; std::locale::locale(this + 9); v10 = *(_BYTE **)a3; v11 = *(_DWORD *)(a3 + 4); this[2] = (int)&off_55F928; this[10] = 0; this[11] = (int)(this + 13); std::string::_M_construct(this + 11, v10, (int)&v10[v11]); v12 = 0; this[10] = a4 | 8; if ( (a4 & 3) != 0 ) v12 = this[12]; std::stringbuf::_M_sync(v13, (_DWORD *)this[11], 0, v12); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)v13); } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (0051C4C0) -------------------------------------------------------- void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax int v8; // edx int v9; // eax v4 = a2[1]; v5 = a2[2]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); v7 = *a2; v8 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; this[2] = (int)&off_560424; 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[10] = a3 | 8; this[11] = (int)(this + 13); v9 = *this; *((_BYTE *)this + 52) = 0; this[2] = (int)&off_55F928; std::ios::init((int)this + *(_DWORD *)(v9 - 12), (int)(this + 2)); } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (0051C610) -------------------------------------------------------- void __thiscall std::istringstream::basic_istringstream(int *this, int *a2) { int v3; // eax int v4; // ecx int v5; // edx int v6; // eax int v7; // edx int v8; // eax int v9; // ecx v3 = a2[1]; v4 = a2[2]; v5 = *(_DWORD *)(v3 - 12); *this = v3; *(int *)((char *)this + v5) = v4; this[1] = 0; std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); v6 = *a2; v7 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; this[2] = (int)&off_560424; 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); v8 = *this; *((_BYTE *)this + 52) = 0; this[2] = (int)&off_55F928; v9 = *(_DWORD *)(v8 - 12); this[10] = 8; std::ios::init((int)this + v9, (int)(this + 2)); } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (0051C760) -------------------------------------------------------- void __fastcall std::istringstream::~istringstream(_DWORD *Block) { _DWORD *v2; // eax v2 = (_DWORD *)Block[11]; *Block = &off_55FBCC; Block[17] = off_55FBE0; Block[2] = &off_55F928; if ( v2 != Block + 13 ) operator delete(v2); Block[2] = &off_560424; std::locale::~locale((_DWORD **)Block + 9); *Block = &unk_55B320; Block[1] = 0; Block[17] = &off_560E20; std::ios_base::~ios_base((int)(Block + 17)); operator delete(Block); } // 55F928: using guessed type int (*off_55F928)(); // 55FBCC: using guessed type int (*off_55FBCC)(); // 55FBE0: using guessed type int (*off_55FBE0[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (0051C7D0) -------------------------------------------------------- void __fastcall std::istringstream::~istringstream(int a1) { void *Block; // eax Block = *(void **)(a1 + 44); *(_DWORD *)a1 = &off_55FBCC; *(_DWORD *)(a1 + 68) = off_55FBE0; *(_DWORD *)(a1 + 8) = &off_55F928; if ( Block != (void *)(a1 + 52) ) operator delete(Block); *(_DWORD *)(a1 + 8) = &off_560424; std::locale::~locale((_DWORD **)(a1 + 36)); *(_DWORD *)a1 = &unk_55B320; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 68) = &off_560E20; std::ios_base::~ios_base(a1 + 68); } // 55F928: using guessed type int (*off_55F928)(); // 55FBCC: using guessed type int (*off_55FBCC)(); // 55FBE0: using guessed type int (*off_55FBE0[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (0051C830) -------------------------------------------------------- int __thiscall std::istringstream::~istringstream(int *this, int *a2) { int v3; // eax char *Block; // eax int v5; // eax int result; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; Block = (char *)this[11]; this[2] = (int)&off_55F928; if ( Block != (char *)(this + 13) ) operator delete(Block); this[2] = (int)&off_560424; 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; } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (0051C890) -------------------------------------------------------- _DWORD *__thiscall std::istringstream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // cl char v7; // cl int v8; // eax std::ios_base *v10; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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::stringbuf::operator=((int)(this + 2), (int)(a2 + 2)); return this; } // 51C8D0: variable 'v10' is possibly undefined //----- (0051C970) -------------------------------------------------------- int __thiscall std::wistringstream::str(int this, int a2) { _DWORD *v2; // esi unsigned int v4; // eax v2 = (_DWORD *)(this + 8); std::wstring::_M_replace((unsigned int *)(this + 44), 0, *(_DWORD *)(this + 48), *(_WORD **)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); } //----- (0051C9E0) -------------------------------------------------------- void __thiscall std::wistringstream::swap(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // edi std::ios_base *v4; // esi int v5; // edx __int16 v6; // cx int v7; // edx std::ios_base *v8; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = 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::wstringbuf::swap(this + 2, (int)(a2 + 2)); } // 51CA20: variable 'v8' is possibly undefined //----- (0051CAC0) -------------------------------------------------------- void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, _DWORD *a2) { int v2; // eax int v3; // eax std::ios_base *v4; // edx int v5; // eax int v6; // edx unsigned int v7; // eax int v8; // ecx int v9; // eax _DWORD *v10; // esi _DWORD *v11; // eax int v12; // ecx int v13; // ebx char *v14; // ecx int v15; // edx std::ios_base *v16; // [esp+4h] [ebp-B4h] const std::locale *v17; // [esp+4h] [ebp-B4h] struct _Unwind_Exception *lpuexcpta; // [esp+20h] [ebp-98h] struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] _DWORD *v20; // [esp+24h] [ebp-94h] int v22; // [esp+70h] [ebp-48h] int v23; // [esp+74h] [ebp-44h] int v24; // [esp+78h] [ebp-40h] __int64 v25; // [esp+80h] [ebp-38h] int v26; // [esp+88h] [ebp-30h] int v27; // [esp+8Ch] [ebp-2Ch] int v28; // [esp+90h] [ebp-28h] int v29; // [esp+98h] [ebp-20h] v20 = this + 17; std::ios_base::ios_base(this + 17); v2 = a2[1]; this[45] = 0; this[1] = v2; *((_WORD *)this + 92) = 0; v3 = *a2; *this = &unk_55B348; *((_BYTE *)this + 186) = 0; v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); this[47] = 0; this[48] = 0; this[49] = 0; this[50] = 0; this[17] = &unk_55B35C; lpuexcpta = v4; std::ios_base::_M_move((int)v20, v4, v16); std::wios::_M_cache_locale(v20, (int)(this + 44)); v22 = -1; v23 = -1; v5 = *((_DWORD *)lpuexcpta + 28); *((_DWORD *)lpuexcpta + 28) = 0; this[47] = 0; this[45] = v5; v24 = -1; *((_WORD *)this + 92) = *((_WORD *)lpuexcpta + 58); v6 = a2[11]; *((_BYTE *)this + 186) = *((_BYTE *)lpuexcpta + 118); LODWORD(v25) = -1; a2[1] = 0; lpuexcpt = (struct _Unwind_Exception *)(this + 2); v7 = a2[3]; *this = &off_55FBF4; this[17] = off_55FC08; v26 = -1; v27 = -1; v28 = -1; v29 = -1; if ( !v7 ) { v8 = a2[6]; if ( !v8 ) goto LABEL_7; goto LABEL_3; } v22 = (int)(v7 - v6) >> 1; v23 = (int)(v7 - v6) >> 31; v24 = (a2[4] - v6) >> 1; v7 = a2[5]; v25 = (int)(v7 - v6) >> 1; v8 = a2[6]; if ( v8 ) { LABEL_3: v26 = (v8 - v6) >> 1; v27 = (v8 - v6) >> 31; v28 = (a2[7] - v8) >> 1; v29 = (a2[8] - v6) >> 1; if ( v7 < a2[7] ) v7 = a2[7]; } if ( v7 ) a2[12] = (int)(v7 - v6) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 2), v17); v9 = a2[10]; this[2] = &off_55F968; this[11] = this + 13; v10 = a2 + 13; this[10] = v9; v11 = (_DWORD *)a2[11]; if ( v11 == a2 + 13 ) { this[13] = a2[13]; this[14] = a2[14]; this[15] = a2[15]; this[16] = a2[16]; } else { this[11] = v11; this[13] = a2[13]; } this[12] = a2[12]; a2[11] = v10; *((_WORD *)a2 + 26) = 0; v12 = this[11]; a2[12] = 0; if ( (v22 & v23) != -1 ) { this[3] = v12 + 2 * v22; this[4] = v12 + 2 * v24; this[5] = v12 + 2 * v25; } if ( (v26 & v27) != -1 ) { v13 = v12 + 2 * v26; this[8] = v12 + 2 * v29; this[6] = v13; this[7] = v13 + 2 * v28; } v14 = (char *)a2 + 66; v15 = a2[10] & 0x10; if ( (a2[10] & 8) != 0 ) { a2[3] = v10; a2[4] = v10; a2[5] = v10; if ( v15 ) { a2[7] = v10; a2[6] = v10; a2[8] = v14; } } else if ( v15 ) { a2[7] = v10; a2[6] = v10; a2[8] = v14; a2[3] = v10; a2[4] = v10; a2[5] = v10; } this[47] = lpuexcpt; } // 51CDFD: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) // 51CB89: variable 'v16' is possibly undefined // 51CD28: variable 'v17' is possibly undefined // 55F968: using guessed type int (*off_55F968)(); // 55FBF4: using guessed type int (*off_55FBF4)(); // 55FC08: using guessed type int (*off_55FC08[2])(); //----- (0051CF50) -------------------------------------------------------- void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2, int a3) { int v3; // edx _WORD *v4; // eax unsigned int v5; // eax int v6; // [esp+20h] [ebp-48h] _DWORD *v7; // [esp+24h] [ebp-44h] v6 = (int)(this + 17); std::ios_base::ios_base(this + 17); this[45] = 0; *((_WORD *)this + 92) = 0; *((_BYTE *)this + 186) = 0; this[47] = 0; this[48] = 0; this[49] = 0; this[50] = 0; *this = &unk_55B348; this[17] = &unk_55B35C; this[1] = 0; std::wios::init(v6, 0); *this = &off_55FBF4; this[17] = off_55FC08; this[2] = &off_560464; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; v7 = this + 2; std::locale::locale(this + 9); v3 = *(_DWORD *)(a2 + 4); v4 = *(_WORD **)a2; this[2] = &off_55F968; this[10] = 0; this[11] = this + 13; std::wstring::_M_construct(this + 11, v4, (int)&v4[v3]); v5 = 0; this[10] = a3 | 8; if ( (a3 & 3) != 0 ) v5 = this[12]; std::wstringbuf::_M_sync(v7, (_DWORD *)this[11], 0, v5); std::wios::init(v6, (int)v7); } // 55F968: using guessed type int (*off_55F968)(); // 55FBF4: using guessed type int (*off_55FBF4)(); // 55FC08: using guessed type int (*off_55FC08[2])(); // 560464: using guessed type int (*off_560464)(); //----- (0051D170) -------------------------------------------------------- void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2) { int v2; // [esp+24h] [ebp-44h] v2 = (int)(this + 17); std::ios_base::ios_base(this + 17); this[45] = 0; *((_WORD *)this + 92) = 0; *((_BYTE *)this + 186) = 0; this[47] = 0; this[48] = 0; this[49] = 0; this[50] = 0; *this = &unk_55B348; this[17] = &unk_55B35C; this[1] = 0; std::wios::init(v2, 0); *this = &off_55FBF4; this[17] = off_55FC08; this[2] = &off_560464; 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_55F968; this[10] = a2 | 8; this[11] = this + 13; this[12] = 0; *((_WORD *)this + 26) = 0; std::wios::init(v2, (int)(this + 2)); } // 55F968: using guessed type int (*off_55F968)(); // 55FBF4: using guessed type int (*off_55FBF4)(); // 55FC08: using guessed type int (*off_55FC08[2])(); // 560464: using guessed type int (*off_560464)(); //----- (0051D310) -------------------------------------------------------- void __fastcall std::wistringstream::basic_istringstream(int a1) { int v1; // [esp+24h] [ebp-44h] v1 = a1 + 68; std::ios_base::ios_base((_DWORD *)(a1 + 68)); *(_DWORD *)(a1 + 180) = 0; *(_WORD *)(a1 + 184) = 0; *(_BYTE *)(a1 + 186) = 0; *(_DWORD *)(a1 + 188) = 0; *(_DWORD *)(a1 + 192) = 0; *(_DWORD *)(a1 + 196) = 0; *(_DWORD *)(a1 + 200) = 0; *(_DWORD *)a1 = &unk_55B348; *(_DWORD *)(a1 + 68) = &unk_55B35C; *(_DWORD *)(a1 + 4) = 0; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_55FBF4; *(_DWORD *)(a1 + 68) = off_55FC08; *(_DWORD *)(a1 + 8) = &off_560464; *(_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 + 8) = &off_55F968; *(_DWORD *)(a1 + 44) = a1 + 52; *(_DWORD *)(a1 + 40) = 8; *(_DWORD *)(a1 + 48) = 0; *(_WORD *)(a1 + 52) = 0; std::wios::init(v1, a1 + 8); } // 55F968: using guessed type int (*off_55F968)(); // 55FBF4: using guessed type int (*off_55FBF4)(); // 55FC08: using guessed type int (*off_55FC08[2])(); // 560464: using guessed type int (*off_560464)(); //----- (0051D4B0) -------------------------------------------------------- void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax int v8; // edx int v9; // eax int v10; // edx unsigned int v11; // eax int v12; // ecx int v13; // eax _DWORD *v14; // esi _DWORD *v15; // eax int v16; // ecx int v17; // ebx char *v18; // ecx int v19; // edx std::ios_base *v20; // [esp+4h] [ebp-A4h] const std::locale *v21; // [esp+4h] [ebp-A4h] std::ios_base *v22; // [esp+10h] [ebp-98h] _DWORD *v23; // [esp+10h] [ebp-98h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-94h] int v26; // [esp+60h] [ebp-48h] int v27; // [esp+64h] [ebp-44h] int v28; // [esp+68h] [ebp-40h] __int64 v29; // [esp+70h] [ebp-38h] int v30; // [esp+78h] [ebp-30h] int v31; // [esp+7Ch] [ebp-2Ch] int v32; // [esp+80h] [ebp-28h] int v33; // [esp+88h] [ebp-20h] v4 = a2[1]; v5 = a2[2]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; this[1] = a3[1]; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); v22 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move((int)lpuexcpt, v22, v20); std::wios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); v7 = *((_DWORD *)v22 + 28); *((_DWORD *)lpuexcpt + 30) = 0; *((_DWORD *)v22 + 28) = 0; *((_DWORD *)lpuexcpt + 28) = v7; *((_WORD *)lpuexcpt + 58) = *((_WORD *)v22 + 58); *((_BYTE *)lpuexcpt + 118) = *((_BYTE *)v22 + 118); a3[1] = 0; v8 = a2[3]; v9 = *a2; *this = *a2; v26 = -1; *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; v23 = this + 2; v27 = -1; v28 = -1; LODWORD(v29) = -1; v30 = -1; v31 = -1; v32 = -1; v33 = -1; v10 = a3[11]; v11 = a3[3]; if ( !v11 ) { v12 = a3[6]; if ( !v12 ) goto LABEL_7; goto LABEL_3; } v26 = (int)(v11 - v10) >> 1; v27 = (int)(v11 - v10) >> 31; v28 = (a3[4] - v10) >> 1; v11 = a3[5]; v29 = (int)(v11 - v10) >> 1; v12 = a3[6]; if ( v12 ) { LABEL_3: v30 = (v12 - v10) >> 1; v31 = (v12 - v10) >> 31; v32 = (a3[7] - v12) >> 1; v33 = (a3[8] - v10) >> 1; if ( v11 < a3[7] ) v11 = a3[7]; } if ( v11 ) a3[12] = (int)(v11 - v10) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(v23, (std::locale *)(a3 + 2), v21); v13 = a3[10]; this[2] = (int)&off_55F968; this[11] = (int)(this + 13); v14 = a3 + 13; this[10] = v13; v15 = (_DWORD *)a3[11]; if ( v15 == a3 + 13 ) { this[13] = a3[13]; this[14] = a3[14]; this[15] = a3[15]; this[16] = a3[16]; } else { this[11] = (int)v15; this[13] = a3[13]; } this[12] = a3[12]; a3[11] = v14; *((_WORD *)a3 + 26) = 0; v16 = this[11]; a3[12] = 0; if ( (v26 & v27) != -1 ) { this[3] = v16 + 2 * v26; this[4] = v16 + 2 * v28; this[5] = v16 + 2 * v29; } if ( (v30 & v31) != -1 ) { v17 = v16 + 2 * v30; this[8] = v16 + 2 * v33; this[6] = v17; this[7] = v17 + 2 * v32; } v18 = (char *)a3 + 66; v19 = a3[10] & 0x10; if ( (a3[10] & 8) != 0 ) { a3[3] = v14; a3[4] = v14; a3[5] = v14; if ( v19 ) { a3[7] = v14; a3[6] = v14; a3[8] = v18; } } else if ( v19 ) { a3[7] = v14; a3[6] = v14; a3[8] = v18; a3[3] = v14; a3[4] = v14; a3[5] = v14; } *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)v23; } // 51D79B: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) // 51D52B: variable 'v20' is possibly undefined // 51D6C6: variable 'v21' is possibly undefined // 55F968: using guessed type int (*off_55F968)(); //----- (0051D8D0) -------------------------------------------------------- void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3, int a4) { int v5; // eax int v6; // ecx int v7; // edx int v8; // eax int v9; // edx int v10; // edx _WORD *v11; // eax unsigned int v12; // eax _DWORD *v13; // [esp+24h] [ebp-44h] v5 = a2[1]; v6 = a2[2]; v7 = *(_DWORD *)(v5 - 12); *this = v5; *(int *)((char *)this + v7) = v6; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); v8 = *a2; v9 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; v13 = this + 2; this[2] = (int)&off_560464; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; this[8] = 0; std::locale::locale(this + 9); v10 = *(_DWORD *)(a3 + 4); v11 = *(_WORD **)a3; this[2] = (int)&off_55F968; this[10] = 0; this[11] = (int)(this + 13); std::wstring::_M_construct(this + 11, v11, (int)&v11[v10]); v12 = 0; this[10] = a4 | 8; if ( (a4 & 3) != 0 ) v12 = this[12]; std::wstringbuf::_M_sync(v13, (_DWORD *)this[11], 0, v12); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)v13); } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (0051DAA0) -------------------------------------------------------- void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3) { int v4; // eax int v5; // ecx int v6; // edx int v7; // eax int v8; // edx int v9; // eax v4 = a2[1]; v5 = a2[2]; v6 = *(_DWORD *)(v4 - 12); *this = v4; *(int *)((char *)this + v6) = v5; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); v7 = *a2; v8 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; this[2] = (int)&off_560464; 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[10] = a3 | 8; this[11] = (int)(this + 13); *((_WORD *)this + 26) = 0; v9 = *this; this[2] = (int)&off_55F968; std::wios::init((int)this + *(_DWORD *)(v9 - 12), (int)(this + 2)); } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (0051DC00) -------------------------------------------------------- void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2) { int v3; // eax int v4; // ecx int v5; // edx int v6; // eax int v7; // edx int v8; // eax int v9; // ecx v3 = a2[1]; v4 = a2[2]; v5 = *(_DWORD *)(v3 - 12); *this = v3; *(int *)((char *)this + v5) = v4; this[1] = 0; std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); v6 = *a2; v7 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; this[2] = (int)&off_560464; 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; v8 = *this; this[2] = (int)&off_55F968; v9 = *(_DWORD *)(v8 - 12); this[10] = 8; std::wios::init((int)this + v9, (int)(this + 2)); } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (0051DD50) -------------------------------------------------------- void __fastcall std::wistringstream::~wistringstream(_DWORD *Block) { _DWORD *v2; // eax v2 = (_DWORD *)Block[11]; *Block = &off_55FBF4; Block[17] = off_55FC08; Block[2] = &off_55F968; if ( v2 != Block + 13 ) operator delete(v2); Block[2] = &off_560464; std::locale::~locale((_DWORD **)Block + 9); *Block = &unk_55B348; Block[1] = 0; Block[17] = &off_560E30; std::ios_base::~ios_base((int)(Block + 17)); operator delete(Block); } // 55F968: using guessed type int (*off_55F968)(); // 55FBF4: using guessed type int (*off_55FBF4)(); // 55FC08: using guessed type int (*off_55FC08[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (0051DDC0) -------------------------------------------------------- void __fastcall std::wistringstream::~wistringstream(int a1) { void *Block; // eax Block = *(void **)(a1 + 44); *(_DWORD *)a1 = &off_55FBF4; *(_DWORD *)(a1 + 68) = off_55FC08; *(_DWORD *)(a1 + 8) = &off_55F968; if ( Block != (void *)(a1 + 52) ) operator delete(Block); *(_DWORD *)(a1 + 8) = &off_560464; std::locale::~locale((_DWORD **)(a1 + 36)); *(_DWORD *)a1 = &unk_55B348; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 68) = &off_560E30; std::ios_base::~ios_base(a1 + 68); } // 55F968: using guessed type int (*off_55F968)(); // 55FBF4: using guessed type int (*off_55FBF4)(); // 55FC08: using guessed type int (*off_55FC08[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (0051DE20) -------------------------------------------------------- int __thiscall std::wistringstream::~wistringstream(int *this, int *a2) { int v3; // eax char *Block; // eax int v5; // eax int result; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; Block = (char *)this[11]; this[2] = (int)&off_55F968; if ( Block != (char *)(this + 13) ) operator delete(Block); this[2] = (int)&off_560464; 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; } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (0051DE80) -------------------------------------------------------- _DWORD *__thiscall std::wistringstream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // cx int v7; // eax std::ios_base *v9; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = 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::wstringbuf::operator=((int)(this + 2), (int)(a2 + 2)); return this; } // 51DEC0: variable 'v9' is possibly undefined //----- (0051DF60) -------------------------------------------------------- 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); } //----- (0051DFD0) -------------------------------------------------------- void __thiscall std::ostringstream::swap(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // edx char v6; // cl char v7; // cl std::ios_base *v8; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v8); std::ios::_M_cache_locale(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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::stringbuf::swap(this + 1, (int)(a2 + 1)); } // 51E010: variable 'v8' is possibly undefined //----- (0051E0A0) -------------------------------------------------------- void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2) { int v2; // eax int v3; // edx unsigned int v4; // eax int v5; // ecx int v6; // eax _DWORD *v7; // eax int v8; // ebx int v9; // ecx int v10; // ebx _DWORD *v11; // eax int v12; // edx int v13; // ecx int v14; // ecx std::ios_base *v15; // [esp+4h] [ebp-B4h] const std::locale *v16; // [esp+4h] [ebp-B4h] struct _Unwind_Exception *lpuexcpta; // [esp+20h] [ebp-98h] struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] _DWORD *v19; // [esp+24h] [ebp-94h] _DWORD *v20; // [esp+24h] [ebp-94h] __int64 v22; // [esp+70h] [ebp-48h] int v23; // [esp+78h] [ebp-40h] __int64 v24; // [esp+80h] [ebp-38h] __int64 v25; // [esp+88h] [ebp-30h] int v26; // [esp+90h] [ebp-28h] int v27; // [esp+98h] [ebp-20h] v19 = this + 16; std::ios_base::ios_base(this + 16); this[44] = 0; *((_WORD *)this + 90) = 0; this[46] = 0; this[47] = 0; this[48] = 0; this[49] = 0; *this = &unk_55B370; this[16] = &unk_55B384; lpuexcpta = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_move((int)v19, lpuexcpta, v15); std::ios::_M_cache_locale(v19, (int)(this + 43)); v22 = -1LL; v2 = *((_DWORD *)lpuexcpta + 28); *this = &off_55FC1C; *((_DWORD *)lpuexcpta + 28) = 0; this[44] = v2; LOWORD(v2) = *((_WORD *)lpuexcpta + 58); this[46] = 0; *((_WORD *)this + 90) = v2; lpuexcpt = (struct _Unwind_Exception *)(this + 1); v3 = a2[10]; v4 = a2[2]; this[16] = off_55FC30; v23 = -1; LODWORD(v24) = -1; v25 = -1LL; v26 = -1; v27 = -1; if ( !v4 ) { v5 = a2[5]; if ( !v5 ) goto LABEL_7; goto LABEL_3; } v22 = (int)(v4 - v3); v23 = a2[3] - v3; v4 = a2[4]; v24 = (int)(v4 - v3); v5 = a2[5]; if ( v5 ) { LABEL_3: v25 = v5 - v3; v26 = a2[6] - v5; v27 = a2[7] - v3; if ( v4 < a2[6] ) v4 = a2[6]; } if ( v4 ) a2[11] = v4 - v3; LABEL_7: std::streambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 1), v16); v6 = a2[9]; this[1] = &off_55F928; this[10] = this + 12; this[9] = v6; v20 = a2 + 12; v7 = (_DWORD *)a2[10]; if ( v7 == a2 + 12 ) { this[12] = a2[12]; this[13] = a2[13]; this[14] = a2[14]; this[15] = a2[15]; } else { this[10] = v7; this[12] = a2[12]; } this[11] = a2[11]; *((_BYTE *)a2 + 48) = 0; a2[10] = v20; a2[11] = 0; v8 = this[10]; if ( ((unsigned int)v22 & HIDWORD(v22)) != -1 ) { this[2] = v8 + v22; this[3] = v8 + v23; this[4] = v8 + v24; } if ( ((unsigned int)v25 & HIDWORD(v25)) != -1 ) { v9 = v8 + v27; v10 = v25 + v8; this[7] = v9; this[5] = v10; this[6] = v10 + v26; } v11 = (_DWORD *)a2[10]; v12 = a2[9] & 0x10; if ( v11 == v20 ) v13 = 15; else v13 = a2[12]; v14 = (int)v11 + v13; if ( (a2[9] & 8) != 0 ) { a2[2] = v11; a2[3] = v11; a2[4] = v11; if ( v12 ) { a2[6] = v11; a2[5] = v11; a2[7] = v14; } } else if ( v12 ) { a2[6] = v11; a2[5] = v11; a2[7] = v14; a2[2] = v11; a2[3] = v11; a2[4] = v11; } this[46] = lpuexcpt; } // 51E39F: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) // 51E156: variable 'v15' is possibly undefined // 51E2D3: variable 'v16' is possibly undefined // 55F928: using guessed type int (*off_55F928)(); // 55FC1C: using guessed type int (*off_55FC1C)(); // 55FC30: using guessed type int (*off_55FC30[2])(); //----- (0051E520) -------------------------------------------------------- void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2, int a3) { int v3; // eax _BYTE *v4; // edx unsigned int v5; // eax int v6; // [esp+20h] [ebp-48h] _DWORD *v7; // [esp+24h] [ebp-44h] v6 = (int)(this + 16); std::ios_base::ios_base(this + 16); this[44] = 0; *((_WORD *)this + 90) = 0; this[46] = 0; this[47] = 0; this[48] = 0; this[49] = 0; *this = &unk_55B370; this[16] = &unk_55B384; std::ios::init(v6, 0); *this = &off_55FC1C; this[16] = off_55FC30; this[1] = &off_560424; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; v7 = this + 1; std::locale::locale(this + 8); v3 = *(_DWORD *)(a2 + 4); v4 = *(_BYTE **)a2; this[1] = &off_55F928; this[9] = 0; this[10] = this + 12; std::string::_M_construct(this + 10, v4, (int)&v4[v3]); v5 = 0; this[9] = a3 | 0x10; if ( (a3 & 3) != 0 ) v5 = this[11]; std::stringbuf::_M_sync(v7, (_DWORD *)this[10], 0, v5); std::ios::init(v6, (int)v7); } // 55F928: using guessed type int (*off_55F928)(); // 55FC1C: using guessed type int (*off_55FC1C)(); // 55FC30: using guessed type int (*off_55FC30[2])(); // 560424: using guessed type int (*off_560424)(); //----- (0051E730) -------------------------------------------------------- void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2) { int v2; // [esp+24h] [ebp-44h] v2 = (int)(this + 16); std::ios_base::ios_base(this + 16); this[44] = 0; *((_WORD *)this + 90) = 0; this[46] = 0; this[47] = 0; this[48] = 0; this[49] = 0; *this = &unk_55B370; this[16] = &unk_55B384; std::ios::init(v2, 0); *this = &off_55FC1C; this[16] = off_55FC30; this[1] = &off_560424; 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_55F928; this[9] = a2 | 0x10; this[10] = this + 12; this[11] = 0; *((_BYTE *)this + 48) = 0; std::ios::init(v2, (int)(this + 1)); } // 55F928: using guessed type int (*off_55F928)(); // 55FC1C: using guessed type int (*off_55FC1C)(); // 55FC30: using guessed type int (*off_55FC30[2])(); // 560424: using guessed type int (*off_560424)(); //----- (0051E8C0) -------------------------------------------------------- void __fastcall std::ostringstream::basic_ostringstream(int a1) { int v1; // [esp+24h] [ebp-44h] v1 = a1 + 64; std::ios_base::ios_base((_DWORD *)(a1 + 64)); *(_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_55B370; *(_DWORD *)(a1 + 64) = &unk_55B384; std::ios::init(v1, 0); *(_DWORD *)a1 = &off_55FC1C; *(_DWORD *)(a1 + 64) = off_55FC30; *(_DWORD *)(a1 + 4) = &off_560424; *(_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 + 4) = &off_55F928; *(_DWORD *)(a1 + 36) = 16; *(_DWORD *)(a1 + 40) = a1 + 48; *(_DWORD *)(a1 + 44) = 0; *(_BYTE *)(a1 + 48) = 0; std::ios::init(v1, a1 + 4); } // 55F928: using guessed type int (*off_55F928)(); // 55FC1C: using guessed type int (*off_55FC1C)(); // 55FC30: using guessed type int (*off_55FC30[2])(); // 560424: using guessed type int (*off_560424)(); //----- (0051EA50) -------------------------------------------------------- void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // eax int v6; // eax int v7; // edx int v8; // edx unsigned int v9; // eax int v10; // ecx int v11; // eax _DWORD *v12; // eax int v13; // ebx int v14; // ecx int v15; // ebx struct _Unwind_Exception *v16; // eax int v17; // edx int v18; // ecx char *v19; // ecx std::ios_base *v20; // [esp+4h] [ebp-A4h] const std::locale *v21; // [esp+4h] [ebp-A4h] std::ios_base *v22; // [esp+10h] [ebp-98h] _DWORD *v23; // [esp+10h] [ebp-98h] struct _Unwind_Exception *lpuexcpta; // [esp+14h] [ebp-94h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-94h] __int64 v27; // [esp+60h] [ebp-48h] int v28; // [esp+68h] [ebp-40h] __int64 v29; // [esp+70h] [ebp-38h] __int64 v30; // [esp+78h] [ebp-30h] int v31; // [esp+80h] [ebp-28h] int v32; // [esp+88h] [ebp-20h] v4 = a2[1]; *this = v4; lpuexcpta = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); *(_DWORD *)lpuexcpta = a2[2]; v22 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move((int)lpuexcpta, v22, v20); std::ios::_M_cache_locale(lpuexcpta, (int)lpuexcpta + 108); v5 = *((_DWORD *)v22 + 28); *((_DWORD *)lpuexcpta + 30) = 0; *((_DWORD *)v22 + 28) = 0; *((_DWORD *)lpuexcpta + 28) = v5; *((_WORD *)lpuexcpta + 58) = *((_WORD *)v22 + 58); v6 = *a2; v7 = a2[3]; *this = *a2; v27 = -1LL; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; v23 = this + 1; v28 = -1; LODWORD(v29) = -1; v30 = -1LL; v31 = -1; v32 = -1; v8 = a3[10]; v9 = a3[2]; if ( !v9 ) { v10 = a3[5]; if ( !v10 ) goto LABEL_7; goto LABEL_3; } v27 = (int)(v9 - v8); v28 = a3[3] - v8; v9 = a3[4]; v29 = (int)(v9 - v8); v10 = a3[5]; if ( v10 ) { LABEL_3: v30 = v10 - v8; v31 = a3[6] - v10; v32 = a3[7] - v8; if ( v9 < a3[6] ) v9 = a3[6]; } if ( v9 ) a3[11] = v9 - v8; LABEL_7: std::streambuf::basic_streambuf(v23, (std::locale *)(a3 + 1), v21); v11 = a3[9]; this[1] = (int)&off_55F928; this[10] = (int)(this + 12); this[9] = v11; lpuexcpt = (struct _Unwind_Exception *)(a3 + 12); v12 = (_DWORD *)a3[10]; if ( v12 == a3 + 12 ) { this[12] = a3[12]; this[13] = a3[13]; this[14] = a3[14]; this[15] = a3[15]; } else { this[10] = (int)v12; this[12] = a3[12]; } this[11] = a3[11]; a3[10] = lpuexcpt; *((_BYTE *)a3 + 48) = 0; v13 = this[10]; a3[11] = 0; if ( ((unsigned int)v27 & HIDWORD(v27)) != -1 ) { this[2] = v13 + v27; this[3] = v13 + v28; this[4] = v13 + v29; } if ( ((unsigned int)v30 & HIDWORD(v30)) != -1 ) { v14 = v13 + v32; v15 = v30 + v13; this[7] = v14; this[5] = v15; this[6] = v15 + v31; } v16 = (struct _Unwind_Exception *)a3[10]; v17 = a3[9] & 0x10; if ( v16 == lpuexcpt ) v18 = 15; else v18 = a3[12]; v19 = (char *)v16 + v18; if ( (a3[9] & 8) != 0 ) { a3[2] = v16; a3[3] = v16; a3[4] = v16; if ( v17 ) { a3[6] = v16; a3[5] = v16; a3[7] = v19; } } else if ( v17 ) { a3[6] = v16; a3[5] = v16; a3[7] = v19; a3[2] = v16; a3[3] = v16; a3[4] = v16; } *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)v23; } // 51ED0A: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) // 51EAC2: variable 'v20' is possibly undefined // 51EC3E: variable 'v21' is possibly undefined // 55F928: using guessed type int (*off_55F928)(); //----- (0051EE60) -------------------------------------------------------- void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3, int a4) { int v5; // eax _DWORD *v6; // ecx int v7; // eax int v8; // edx _BYTE *v9; // edx int v10; // eax unsigned int v11; // eax _DWORD *v12; // [esp+24h] [ebp-44h] 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; v12 = this + 1; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; this[1] = (int)&off_560424; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; std::locale::locale(this + 8); v9 = *(_BYTE **)a3; v10 = *(_DWORD *)(a3 + 4); this[1] = (int)&off_55F928; this[9] = 0; this[10] = (int)(this + 12); std::string::_M_construct(this + 10, v9, (int)&v9[v10]); v11 = 0; this[9] = a4 | 0x10; if ( (a4 & 3) != 0 ) v11 = this[11]; std::stringbuf::_M_sync(v12, (_DWORD *)this[10], 0, v11); std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)v12); } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (0051F020) -------------------------------------------------------- void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3) { int v3; // eax _DWORD *v4; // ecx int v5; // eax int v6; // edx int v7; // eax int v8; // ecx v3 = a2[1]; *this = v3; v4 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); *v4 = a2[2]; std::ios::init((int)v4, 0); v5 = *a2; v6 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; this[1] = (int)&off_560424; 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[9] = a3 | 0x10; this[10] = (int)(this + 12); v7 = *this; *((_BYTE *)this + 48) = 0; v8 = *(_DWORD *)(v7 - 12); this[1] = (int)&off_55F928; std::ios::init((int)this + v8, (int)(this + 1)); } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (0051F160) -------------------------------------------------------- void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2) { int v2; // eax _DWORD *v3; // ecx int v4; // eax int v5; // edx int v6; // eax v2 = a2[1]; *this = v2; v3 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); *v3 = a2[2]; std::ios::init((int)v3, 0); v4 = *a2; v5 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; this[1] = (int)&off_560424; 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] = (int)&off_55F928; this[10] = (int)(this + 12); v6 = *this; this[9] = 16; this[11] = 0; *((_BYTE *)this + 48) = 0; std::ios::init((int)this + *(_DWORD *)(v6 - 12), (int)(this + 1)); } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (0051F290) -------------------------------------------------------- void __fastcall std::ostringstream::~ostringstream(_DWORD *Block) { _DWORD *v2; // eax v2 = (_DWORD *)Block[10]; *Block = &off_55FC1C; Block[16] = off_55FC30; Block[1] = &off_55F928; if ( v2 != Block + 12 ) operator delete(v2); Block[1] = &off_560424; std::locale::~locale((_DWORD **)Block + 8); *Block = &unk_55B370; Block[16] = &off_560E20; std::ios_base::~ios_base((int)(Block + 16)); operator delete(Block); } // 55F928: using guessed type int (*off_55F928)(); // 55FC1C: using guessed type int (*off_55FC1C)(); // 55FC30: using guessed type int (*off_55FC30[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (0051F2F0) -------------------------------------------------------- void __fastcall std::ostringstream::~ostringstream(int a1) { void *Block; // eax Block = *(void **)(a1 + 40); *(_DWORD *)a1 = &off_55FC1C; *(_DWORD *)(a1 + 64) = off_55FC30; *(_DWORD *)(a1 + 4) = &off_55F928; if ( Block != (void *)(a1 + 48) ) operator delete(Block); *(_DWORD *)(a1 + 4) = &off_560424; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_55B370; *(_DWORD *)(a1 + 64) = &off_560E20; std::ios_base::~ios_base(a1 + 64); } // 55F928: using guessed type int (*off_55F928)(); // 55FC1C: using guessed type int (*off_55FC1C)(); // 55FC30: using guessed type int (*off_55FC30[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (0051F350) -------------------------------------------------------- int __thiscall std::ostringstream::~ostringstream(int *this, int *a2) { int v3; // eax char *Block; // eax int v5; // eax int result; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; Block = (char *)this[10]; this[1] = (int)&off_55F928; if ( Block != (char *)(this + 12) ) operator delete(Block); this[1] = (int)&off_560424; std::locale::~locale((_DWORD **)this + 8); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(int *)((char *)this + result) = a2[2]; return result; } // 55F928: using guessed type int (*off_55F928)(); // 560424: using guessed type int (*off_560424)(); //----- (0051F3B0) -------------------------------------------------------- _DWORD *__thiscall std::ostringstream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // eax char v6; // cl char v7; // cl std::ios_base *v9; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::ios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_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::stringbuf::operator=((int)(this + 1), (int)(a2 + 1)); return this; } // 51F3F0: variable 'v9' is possibly undefined //----- (0051F480) -------------------------------------------------------- int __thiscall std::wostringstream::str(int this, int a2) { _DWORD *v2; // esi unsigned int v4; // eax v2 = (_DWORD *)(this + 4); std::wstring::_M_replace((unsigned int *)(this + 40), 0, *(_DWORD *)(this + 44), *(_WORD **)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); } //----- (0051F4F0) -------------------------------------------------------- void __thiscall std::wostringstream::swap(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // edx __int16 v6; // cx std::ios_base *v7; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_swap(v3, v4, v7); std::wios::_M_cache_locale(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = v6; LOBYTE(v6) = *((_BYTE *)v3 + 118); *((_WORD *)v4 + 58) = v5; *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); *((_BYTE *)v4 + 118) = v6; std::wstringbuf::swap(this + 1, (int)(a2 + 1)); } // 51F530: variable 'v7' is possibly undefined //----- (0051F5C0) -------------------------------------------------------- void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2) { int v2; // eax int v3; // edx unsigned int v4; // eax int v5; // ecx int v6; // eax _DWORD *v7; // esi _DWORD *v8; // eax int v9; // ecx int v10; // ebx char *v11; // ecx int v12; // edx std::ios_base *v13; // [esp+4h] [ebp-B4h] const std::locale *v14; // [esp+4h] [ebp-B4h] struct _Unwind_Exception *lpuexcpta; // [esp+20h] [ebp-98h] struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] _DWORD *v17; // [esp+24h] [ebp-94h] int v19; // [esp+70h] [ebp-48h] int v20; // [esp+74h] [ebp-44h] int v21; // [esp+78h] [ebp-40h] __int64 v22; // [esp+80h] [ebp-38h] int v23; // [esp+88h] [ebp-30h] int v24; // [esp+8Ch] [ebp-2Ch] int v25; // [esp+90h] [ebp-28h] int v26; // [esp+98h] [ebp-20h] v17 = this + 16; std::ios_base::ios_base(this + 16); *((_WORD *)this + 90) = 0; this[44] = 0; *((_BYTE *)this + 182) = 0; this[46] = 0; this[47] = 0; this[48] = 0; this[49] = 0; *this = &unk_55B398; this[16] = &unk_55B3AC; lpuexcpta = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); std::ios_base::_M_move((int)v17, lpuexcpta, v13); std::wios::_M_cache_locale(v17, (int)(this + 43)); v19 = -1; v20 = -1; v2 = *((_DWORD *)lpuexcpta + 28); *this = &off_55FC44; *((_DWORD *)lpuexcpta + 28) = 0; this[44] = v2; LOWORD(v2) = *((_WORD *)lpuexcpta + 58); this[46] = 0; *((_WORD *)this + 90) = v2; LOBYTE(v2) = *((_BYTE *)lpuexcpta + 118); this[16] = off_55FC58; v3 = a2[10]; *((_BYTE *)this + 182) = v2; lpuexcpt = (struct _Unwind_Exception *)(this + 1); v4 = a2[2]; v21 = -1; LODWORD(v22) = -1; v23 = -1; v24 = -1; v25 = -1; v26 = -1; if ( !v4 ) { v5 = a2[5]; if ( !v5 ) goto LABEL_7; goto LABEL_3; } v19 = (int)(v4 - v3) >> 1; v20 = (int)(v4 - v3) >> 31; v21 = (a2[3] - v3) >> 1; v4 = a2[4]; v22 = (int)(v4 - v3) >> 1; v5 = a2[5]; if ( v5 ) { LABEL_3: v23 = (v5 - v3) >> 1; v24 = (v5 - v3) >> 31; v25 = (a2[6] - v5) >> 1; v26 = (a2[7] - v3) >> 1; if ( v4 < a2[6] ) v4 = a2[6]; } if ( v4 ) a2[11] = (int)(v4 - v3) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 1), v14); v6 = a2[9]; this[1] = &off_55F968; this[10] = this + 12; v7 = a2 + 12; this[9] = v6; v8 = (_DWORD *)a2[10]; if ( v8 == a2 + 12 ) { this[12] = a2[12]; this[13] = a2[13]; this[14] = a2[14]; this[15] = a2[15]; } else { this[10] = v8; this[12] = a2[12]; } this[11] = a2[11]; a2[10] = v7; *((_WORD *)a2 + 24) = 0; v9 = this[10]; a2[11] = 0; if ( (v19 & v20) != -1 ) { this[2] = v9 + 2 * v19; this[3] = v9 + 2 * v21; this[4] = v9 + 2 * v22; } if ( (v23 & v24) != -1 ) { v10 = v9 + 2 * v23; this[7] = v9 + 2 * v26; this[5] = v10; this[6] = v10 + 2 * v25; } v11 = (char *)a2 + 62; v12 = a2[9] & 0x10; if ( (a2[9] & 8) != 0 ) { a2[2] = v7; a2[3] = v7; a2[4] = v7; if ( v12 ) { a2[6] = v7; a2[5] = v7; a2[7] = v11; } } else if ( v12 ) { a2[6] = v7; a2[5] = v7; a2[7] = v11; a2[2] = v7; a2[3] = v7; a2[4] = v7; } this[46] = lpuexcpt; } // 51F8E9: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) // 51F67F: variable 'v13' is possibly undefined // 51F814: variable 'v14' is possibly undefined // 55F968: using guessed type int (*off_55F968)(); // 55FC44: using guessed type int (*off_55FC44)(); // 55FC58: using guessed type int (*off_55FC58[2])(); //----- (0051FA30) -------------------------------------------------------- void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2, int a3) { int v3; // edx _WORD *v4; // eax unsigned int v5; // eax int v6; // [esp+20h] [ebp-48h] _DWORD *v7; // [esp+24h] [ebp-44h] v6 = (int)(this + 16); std::ios_base::ios_base(this + 16); this[44] = 0; *((_WORD *)this + 90) = 0; *((_BYTE *)this + 182) = 0; this[46] = 0; this[47] = 0; this[48] = 0; this[49] = 0; *this = &unk_55B398; this[16] = &unk_55B3AC; std::wios::init(v6, 0); *this = &off_55FC44; this[16] = off_55FC58; this[1] = &off_560464; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; v7 = this + 1; std::locale::locale(this + 8); v3 = *(_DWORD *)(a2 + 4); v4 = *(_WORD **)a2; this[1] = &off_55F968; this[9] = 0; this[10] = this + 12; std::wstring::_M_construct(this + 10, v4, (int)&v4[v3]); v5 = 0; this[9] = a3 | 0x10; if ( (a3 & 3) != 0 ) v5 = this[11]; std::wstringbuf::_M_sync(v7, (_DWORD *)this[10], 0, v5); std::wios::init(v6, (int)v7); } // 55F968: using guessed type int (*off_55F968)(); // 55FC44: using guessed type int (*off_55FC44)(); // 55FC58: using guessed type int (*off_55FC58[2])(); // 560464: using guessed type int (*off_560464)(); //----- (0051FC40) -------------------------------------------------------- void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2) { int v2; // [esp+24h] [ebp-44h] v2 = (int)(this + 16); std::ios_base::ios_base(this + 16); this[44] = 0; *((_WORD *)this + 90) = 0; *((_BYTE *)this + 182) = 0; this[46] = 0; this[47] = 0; this[48] = 0; this[49] = 0; *this = &unk_55B398; this[16] = &unk_55B3AC; std::wios::init(v2, 0); *this = &off_55FC44; this[16] = off_55FC58; this[1] = &off_560464; 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_55F968; this[9] = a2 | 0x10; this[10] = this + 12; this[11] = 0; *((_WORD *)this + 24) = 0; std::wios::init(v2, (int)(this + 1)); } // 55F968: using guessed type int (*off_55F968)(); // 55FC44: using guessed type int (*off_55FC44)(); // 55FC58: using guessed type int (*off_55FC58[2])(); // 560464: using guessed type int (*off_560464)(); //----- (0051FDD0) -------------------------------------------------------- void __fastcall std::wostringstream::basic_ostringstream(int a1) { int v1; // [esp+24h] [ebp-44h] v1 = a1 + 64; std::ios_base::ios_base((_DWORD *)(a1 + 64)); *(_DWORD *)(a1 + 176) = 0; *(_WORD *)(a1 + 180) = 0; *(_BYTE *)(a1 + 182) = 0; *(_DWORD *)(a1 + 184) = 0; *(_DWORD *)(a1 + 188) = 0; *(_DWORD *)(a1 + 192) = 0; *(_DWORD *)(a1 + 196) = 0; *(_DWORD *)a1 = &unk_55B398; *(_DWORD *)(a1 + 64) = &unk_55B3AC; std::wios::init(v1, 0); *(_DWORD *)a1 = &off_55FC44; *(_DWORD *)(a1 + 64) = off_55FC58; *(_DWORD *)(a1 + 4) = &off_560464; *(_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 + 4) = &off_55F968; *(_DWORD *)(a1 + 40) = a1 + 48; *(_DWORD *)(a1 + 36) = 16; *(_DWORD *)(a1 + 44) = 0; *(_WORD *)(a1 + 48) = 0; std::wios::init(v1, a1 + 4); } // 55F968: using guessed type int (*off_55F968)(); // 55FC44: using guessed type int (*off_55FC44)(); // 55FC58: using guessed type int (*off_55FC58[2])(); // 560464: using guessed type int (*off_560464)(); //----- (0051FF60) -------------------------------------------------------- void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3) { int v4; // eax int v5; // eax int v6; // eax int v7; // edx unsigned int v8; // eax int v9; // edx int v10; // ecx int v11; // eax _DWORD *v12; // esi _DWORD *v13; // eax int v14; // ecx int v15; // ebx char *v16; // ecx int v17; // edx std::ios_base *v18; // [esp+4h] [ebp-A4h] const std::locale *v19; // [esp+4h] [ebp-A4h] std::ios_base *v20; // [esp+10h] [ebp-98h] _DWORD *v21; // [esp+10h] [ebp-98h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-94h] int v24; // [esp+60h] [ebp-48h] int v25; // [esp+64h] [ebp-44h] int v26; // [esp+68h] [ebp-40h] __int64 v27; // [esp+70h] [ebp-38h] int v28; // [esp+78h] [ebp-30h] int v29; // [esp+7Ch] [ebp-2Ch] int v30; // [esp+80h] [ebp-28h] int v31; // [esp+88h] [ebp-20h] v4 = a2[1]; *this = v4; lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); *(_DWORD *)lpuexcpt = a2[2]; v20 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); std::ios_base::_M_move((int)lpuexcpt, v20, v18); std::wios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); v5 = *((_DWORD *)v20 + 28); *((_DWORD *)lpuexcpt + 30) = 0; *((_DWORD *)v20 + 28) = 0; *((_DWORD *)lpuexcpt + 28) = v5; *((_WORD *)lpuexcpt + 58) = *((_WORD *)v20 + 58); *((_BYTE *)lpuexcpt + 118) = *((_BYTE *)v20 + 118); v6 = *a2; v7 = a2[3]; *this = *a2; v24 = -1; *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; v21 = this + 1; v25 = -1; v26 = -1; LODWORD(v27) = -1; v28 = -1; v29 = -1; v30 = -1; v31 = -1; v8 = a3[2]; v9 = a3[10]; if ( !v8 ) { v10 = a3[5]; if ( !v10 ) goto LABEL_7; goto LABEL_3; } v24 = (int)(v8 - v9) >> 1; v25 = (int)(v8 - v9) >> 31; v26 = (a3[3] - v9) >> 1; v8 = a3[4]; v27 = (int)(v8 - v9) >> 1; v10 = a3[5]; if ( v10 ) { LABEL_3: v28 = (v10 - v9) >> 1; v29 = (v10 - v9) >> 31; v30 = (a3[6] - v10) >> 1; v31 = (a3[7] - v9) >> 1; if ( v8 < a3[6] ) v8 = a3[6]; } if ( v8 ) a3[11] = (int)(v8 - v9) >> 1; LABEL_7: std::wstreambuf::basic_streambuf(v21, (std::locale *)(a3 + 1), v19); v11 = a3[9]; this[1] = (int)&off_55F968; v12 = a3 + 12; this[9] = v11; 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]; } this[11] = a3[11]; a3[10] = v12; *((_WORD *)a3 + 24) = 0; v14 = this[10]; a3[11] = 0; if ( (v24 & v25) != -1 ) { this[2] = v14 + 2 * v24; this[3] = v14 + 2 * v26; this[4] = v14 + 2 * v27; } if ( (v28 & v29) != -1 ) { v15 = v14 + 2 * v28; this[7] = v14 + 2 * v31; this[5] = v15; this[6] = v15 + 2 * v30; } v16 = (char *)a3 + 62; v17 = a3[9] & 0x10; if ( (a3[9] & 8) != 0 ) { a3[2] = v12; a3[3] = v12; a3[4] = v12; if ( v17 ) { a3[6] = v12; a3[5] = v12; a3[7] = v16; } } else if ( v17 ) { a3[6] = v12; a3[5] = v12; a3[7] = v16; a3[2] = v12; a3[3] = v12; a3[4] = v12; } *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)v21; } // 520237: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) // 51FFD2: variable 'v18' is possibly undefined // 520160: variable 'v19' is possibly undefined // 55F968: using guessed type int (*off_55F968)(); //----- (00520370) -------------------------------------------------------- void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3, int a4) { int v5; // eax _DWORD *v6; // ecx int v7; // eax int v8; // edx int v9; // edx _WORD *v10; // eax unsigned int v11; // eax _DWORD *v12; // [esp+24h] [ebp-44h] 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; v12 = this + 1; *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; this[1] = (int)&off_560464; this[2] = 0; this[3] = 0; this[4] = 0; this[5] = 0; this[6] = 0; this[7] = 0; std::locale::locale(this + 8); v9 = *(_DWORD *)(a3 + 4); v10 = *(_WORD **)a3; this[1] = (int)&off_55F968; this[9] = 0; this[10] = (int)(this + 12); std::wstring::_M_construct(this + 10, v10, (int)&v10[v9]); v11 = 0; this[9] = a4 | 0x10; if ( (a4 & 3) != 0 ) v11 = this[11]; std::wstringbuf::_M_sync(v12, (_DWORD *)this[10], 0, v11); std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)v12); } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (00520530) -------------------------------------------------------- void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3) { int v3; // eax _DWORD *v4; // ecx int v5; // eax int v6; // edx int v7; // eax v3 = a2[1]; *this = v3; v4 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); *v4 = a2[2]; std::wios::init((int)v4, 0); v5 = *a2; v6 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; this[1] = (int)&off_560464; 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[9] = a3 | 0x10; this[10] = (int)(this + 12); *((_WORD *)this + 24) = 0; v7 = *this; this[1] = (int)&off_55F968; std::wios::init((int)this + *(_DWORD *)(v7 - 12), (int)(this + 1)); } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (00520670) -------------------------------------------------------- void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2) { int v2; // eax _DWORD *v3; // ecx int v4; // eax int v5; // edx int v6; // eax v2 = a2[1]; *this = v2; v3 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); *v3 = a2[2]; std::wios::init((int)v3, 0); v4 = *a2; v5 = a2[3]; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; this[1] = (int)&off_560464; 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] = (int)&off_55F968; this[10] = (int)(this + 12); *((_WORD *)this + 24) = 0; v6 = *this; this[9] = 16; this[11] = 0; std::wios::init((int)this + *(_DWORD *)(v6 - 12), (int)(this + 1)); } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (005207B0) -------------------------------------------------------- void __fastcall std::wostringstream::~wostringstream(_DWORD *Block) { _DWORD *v2; // eax v2 = (_DWORD *)Block[10]; *Block = &off_55FC44; Block[16] = off_55FC58; Block[1] = &off_55F968; if ( v2 != Block + 12 ) operator delete(v2); Block[1] = &off_560464; std::locale::~locale((_DWORD **)Block + 8); *Block = &unk_55B398; Block[16] = &off_560E30; std::ios_base::~ios_base((int)(Block + 16)); operator delete(Block); } // 55F968: using guessed type int (*off_55F968)(); // 55FC44: using guessed type int (*off_55FC44)(); // 55FC58: using guessed type int (*off_55FC58[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00520810) -------------------------------------------------------- void __fastcall std::wostringstream::~wostringstream(int a1) { void *Block; // eax Block = *(void **)(a1 + 40); *(_DWORD *)a1 = &off_55FC44; *(_DWORD *)(a1 + 64) = off_55FC58; *(_DWORD *)(a1 + 4) = &off_55F968; if ( Block != (void *)(a1 + 48) ) operator delete(Block); *(_DWORD *)(a1 + 4) = &off_560464; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_55B398; *(_DWORD *)(a1 + 64) = &off_560E30; std::ios_base::~ios_base(a1 + 64); } // 55F968: using guessed type int (*off_55F968)(); // 55FC44: using guessed type int (*off_55FC44)(); // 55FC58: using guessed type int (*off_55FC58[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00520870) -------------------------------------------------------- int __thiscall std::wostringstream::~wostringstream(int *this, int *a2) { int v3; // eax char *Block; // eax int v5; // eax int result; // eax v3 = *a2; *this = *a2; *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; Block = (char *)this[10]; this[1] = (int)&off_55F968; if ( Block != (char *)(this + 12) ) operator delete(Block); this[1] = (int)&off_560464; std::locale::~locale((_DWORD **)this + 8); v5 = a2[1]; *this = v5; result = *(_DWORD *)(v5 - 12); *(int *)((char *)this + result) = a2[2]; return result; } // 55F968: using guessed type int (*off_55F968)(); // 560464: using guessed type int (*off_560464)(); //----- (005208D0) -------------------------------------------------------- _DWORD *__thiscall std::wostringstream::operator=(_DWORD *this, _DWORD *a2) { std::ios_base *v3; // esi std::ios_base *v4; // ebx int v5; // eax __int16 v6; // cx std::ios_base *v8; // [esp+4h] [ebp-68h] v3 = (std::ios_base *)((char *)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(v3, (int)v3 + 108); std::wios::_M_cache_locale(v4, (int)v4 + 108); v5 = *((_DWORD *)v3 + 28); *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); v6 = *((_WORD *)v4 + 58); *((_DWORD *)v4 + 28) = v5; LOWORD(v5) = *((_WORD *)v3 + 58); *((_WORD *)v3 + 58) = v6; LOBYTE(v6) = *((_BYTE *)v3 + 118); *((_WORD *)v4 + 58) = v5; *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); *((_BYTE *)v4 + 118) = v6; std::wstringbuf::operator=((int)(this + 1), (int)(a2 + 1)); return this; } // 520910: variable 'v8' is possibly undefined //----- (005209A0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_55FC68; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 55FC68: using guessed type int (*off_55FC68)(); //----- (005209D0) -------------------------------------------------------- void __thiscall std::collate::collate(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FC68; this[2] = std::locale::facet::_S_get_c_locale(); } // 55FC68: using guessed type int (*off_55FC68)(); //----- (00520A70) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_55FC68; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 55FC68: using guessed type int (*off_55FC68)(); //----- (00520AA0) -------------------------------------------------------- void __thiscall std::collate::collate(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FC68; this[2] = std::locale::facet::_S_get_c_locale(); } // 55FC68: using guessed type int (*off_55FC68)(); //----- (00520B40) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_55FC68; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 520B7E: variable 'lpfctx' is possibly undefined // 55FC68: using guessed type int (*off_55FC68)(); //----- (00520BA0) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FC68; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 520BDE: variable 'lpfctx' is possibly undefined // 55FC68: using guessed type int (*off_55FC68)(); //----- (00520C00) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FC68; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 520C3E: variable 'lpfctx' is possibly undefined // 55FC68: using guessed type int (*off_55FC68)(); //----- (00520C60) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_55FC84; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 55FC84: using guessed type int (*off_55FC84)(); //----- (00520C90) -------------------------------------------------------- void __thiscall std::collate::collate(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FC84; this[2] = std::locale::facet::_S_get_c_locale(); } // 55FC84: using guessed type int (*off_55FC84)(); //----- (00520D30) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_55FC84; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 55FC84: using guessed type int (*off_55FC84)(); //----- (00520D60) -------------------------------------------------------- void __thiscall std::collate::collate(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FC84; this[2] = std::locale::facet::_S_get_c_locale(); } // 55FC84: using guessed type int (*off_55FC84)(); //----- (00520E00) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_55FC84; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 520E3E: variable 'lpfctx' is possibly undefined // 55FC84: using guessed type int (*off_55FC84)(); //----- (00520E60) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FC84; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 520E9E: variable 'lpfctx' is possibly undefined // 55FC84: using guessed type int (*off_55FC84)(); //----- (00520EC0) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FC84; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 520EFE: variable 'lpfctx' is possibly undefined // 55FC84: using guessed type int (*off_55FC84)(); //----- (00520F20) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { this[1] = a4 != 0; *this = &off_55FCA0; this[2] = std::locale::facet::_S_get_c_locale(); } // 55FCA0: using guessed type int (*off_55FCA0)(); //----- (00520FC0) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FCA0; this[2] = std::locale::facet::_S_get_c_locale(); } // 55FCA0: using guessed type int (*off_55FCA0)(); //----- (00521060) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { this[1] = a4 != 0; *this = &off_55FCA0; this[2] = std::locale::facet::_S_get_c_locale(); } // 55FCA0: using guessed type int (*off_55FCA0)(); //----- (00521100) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FCA0; this[2] = std::locale::facet::_S_get_c_locale(); } // 55FCA0: using guessed type int (*off_55FCA0)(); //----- (005211A0) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_55FCA0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 5211DE: variable 'lpfctx' is possibly undefined // 55FCA0: using guessed type int (*off_55FCA0)(); //----- (00521200) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FCA0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 52123E: variable 'lpfctx' is possibly undefined // 55FCA0: using guessed type int (*off_55FCA0)(); //----- (00521260) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FCA0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 52129E: variable 'lpfctx' is possibly undefined // 55FCA0: using guessed type int (*off_55FCA0)(); //----- (005212C0) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { this[1] = a4 != 0; *this = &off_55FCBC; this[2] = std::locale::facet::_S_get_c_locale(); } // 55FCBC: using guessed type int (*off_55FCBC)(); //----- (00521360) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FCBC; this[2] = std::locale::facet::_S_get_c_locale(); } // 55FCBC: using guessed type int (*off_55FCBC)(); //----- (00521400) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { this[1] = a4 != 0; *this = &off_55FCBC; this[2] = std::locale::facet::_S_get_c_locale(); } // 55FCBC: using guessed type int (*off_55FCBC)(); //----- (005214A0) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FCBC; this[2] = std::locale::facet::_S_get_c_locale(); } // 55FCBC: using guessed type int (*off_55FCBC)(); //----- (00521540) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_55FCBC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 52157E: variable 'lpfctx' is possibly undefined // 55FCBC: using guessed type int (*off_55FCBC)(); //----- (005215A0) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FCBC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 5215DE: variable 'lpfctx' is possibly undefined // 55FCBC: using guessed type int (*off_55FCBC)(); //----- (00521600) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_55FCBC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 52163E: variable 'lpfctx' is possibly undefined // 55FCBC: using guessed type int (*off_55FCBC)(); //----- (00521660) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) { _DWORD *v2; // eax char *v3; // esi int i; // eax char *v5; // esi int j; // eax _DWORD *result; // eax _DWORD *v8; // [esp+1Ch] [ebp-10h] v2 = (_DWORD *)this[2]; if ( !v2 ) { v8 = this; v2 = operator new(0x68u); this = v8; v2[1] = 0; *v2 = &off_5605B0; v2[2] = 0; v2[3] = 0; *((_BYTE *)v2 + 16) = 0; v2[5] = 0; v2[6] = 0; v2[7] = 0; v2[8] = 0; *((_WORD *)v2 + 18) = 0; *((_BYTE *)v2 + 100) = 0; v8[2] = v2; } v2[2] = &unk_556C10; v3 = std::__num_base::_S_atoms_out[0]; v2[3] = 0; *((_BYTE *)v2 + 16) = 0; *((_BYTE *)v2 + 36) = 46; *(_BYTE *)(this[2] + 37) = 44; for ( i = 0; i != 36; ++i ) *(_BYTE *)(this[2] + i + 38) = v3[i]; v5 = std::__num_base::_S_atoms_in[0]; for ( j = 0; j != 26; ++j ) *(_BYTE *)(this[2] + j + 74) = v5[j]; result = (_DWORD *)this[2]; result[5] = "true"; result[6] = 4; result[7] = "false"; result[8] = 5; return result; } // 53F580: using guessed type char *std::__num_base::_S_atoms_in[3]; // 53F584: using guessed type char *std::__num_base::_S_atoms_out[2]; // 5605B0: using guessed type int (*off_5605B0)(); //----- (00521760) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FCD8; this[2] = a2; std::numpunct::_M_initialize_numpunct(this, 0); } // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00521800) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_55FCD8; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, a2); } // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00521890) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FCD8; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); } // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00521930) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FCD8; this[2] = a2; std::numpunct::_M_initialize_numpunct(this, 0); } // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (005219D0) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_55FCD8; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, a2); } // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00521A60) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FCD8; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); } // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00521B00) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(_DWORD *a1) { int v1; // ecx struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v1 = a1[2]; *a1 = &off_55FCD8; if ( v1 ) (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(a1); } // 521B60: variable 'lpfctx' is possibly undefined // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00521BD0) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(_DWORD *a1) { int v1; // ecx struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v1 = a1[2]; *a1 = &off_55FCD8; if ( v1 ) (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 521C30: variable 'lpfctx' is possibly undefined // 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00521C80) -------------------------------------------------------- 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 v2 = (_DWORD *)this[2]; if ( !v2 ) { v7 = operator new(0xA8u); v7[1] = 0; v2 = v7; *v7 = &off_5605C0; 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_556C10; 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_556C1C; v2[6] = 4; v2[7] = &off_556C26; v2[8] = 5; return result; } // 53F580: using guessed type char *std::__num_base::_S_atoms_in[3]; // 53F584: using guessed type char *std::__num_base::_S_atoms_out[2]; // 556C1C: using guessed type void *off_556C1C; // 556C26: using guessed type void *off_556C26; // 5605C0: using guessed type int (*off_5605C0)(); //----- (00521D70) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FCFC; this[2] = a2; std::numpunct::_M_initialize_numpunct(this, 0); } // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00521E10) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_55FCFC; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, a2); } // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00521EA0) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FCFC; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); } // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00521F40) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_55FCFC; this[2] = a2; std::numpunct::_M_initialize_numpunct(this, 0); } // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00521FE0) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_55FCFC; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, a2); } // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00522070) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_55FCFC; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); } // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00522110) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(_DWORD *a1) { int v1; // ecx struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v1 = a1[2]; *a1 = &off_55FCFC; if ( v1 ) (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(a1); } // 522170: variable 'lpfctx' is possibly undefined // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (005221E0) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(_DWORD *a1) { int v1; // ecx struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] v1 = a1[2]; *a1 = &off_55FCFC; if ( v1 ) (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 522240: variable 'lpfctx' is possibly undefined // 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00522290) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_55FD20; result = a2 != 0; this[1] = result; return result; } // 55FD20: using guessed type int (*off_55FD20)(); //----- (005222B0) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_55FD20; result = a2 != 0; this[1] = result; return result; } // 55FD20: using guessed type int (*off_55FD20)(); //----- (005222D0) -------------------------------------------------------- void __fastcall std::time_get>::~time_get(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_55FD20; std::locale::facet::~facet(Blocka); operator delete(Block); } // 5222DC: variable 'Blocka' is possibly undefined // 55FD20: using guessed type int (*off_55FD20)(); //----- (005222F0) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FD20; std::locale::facet::~facet(a1); } // 5222F0: variable 'v1' is possibly undefined // 55FD20: using guessed type int (*off_55FD20)(); //----- (00522300) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FD20; std::locale::facet::~facet(a1); } // 522300: variable 'v1' is possibly undefined // 55FD20: using guessed type int (*off_55FD20)(); //----- (00522310) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_55FD4C; result = a2 != 0; this[1] = result; return result; } // 55FD4C: using guessed type int (*off_55FD4C)(); //----- (00522330) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_55FD4C; result = a2 != 0; this[1] = result; return result; } // 55FD4C: using guessed type int (*off_55FD4C)(); //----- (00522350) -------------------------------------------------------- void __fastcall std::time_get>::~time_get(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_55FD4C; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52235C: variable 'Blocka' is possibly undefined // 55FD4C: using guessed type int (*off_55FD4C)(); //----- (00522370) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FD4C; std::locale::facet::~facet(a1); } // 522370: variable 'v1' is possibly undefined // 55FD4C: using guessed type int (*off_55FD4C)(); //----- (00522380) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FD4C; std::locale::facet::~facet(a1); } // 522380: variable 'v1' is possibly undefined // 55FD4C: using guessed type int (*off_55FD4C)(); //----- (00522390) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_55FD78; result = a2 != 0; this[1] = result; return result; } // 55FD78: using guessed type int (*off_55FD78)(); //----- (005223B0) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_55FD78; result = a2 != 0; this[1] = result; return result; } // 55FD78: using guessed type int (*off_55FD78)(); //----- (005223D0) -------------------------------------------------------- void __fastcall std::money_get>::~money_get(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_55FD78; std::locale::facet::~facet(Blocka); operator delete(Block); } // 5223DC: variable 'Blocka' is possibly undefined // 55FD78: using guessed type int (*off_55FD78)(); //----- (005223F0) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FD78; std::locale::facet::~facet(a1); } // 5223F0: variable 'v1' is possibly undefined // 55FD78: using guessed type int (*off_55FD78)(); //----- (00522400) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FD78; std::locale::facet::~facet(a1); } // 522400: variable 'v1' is possibly undefined // 55FD78: using guessed type int (*off_55FD78)(); //----- (00522410) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_55FD90; result = a2 != 0; this[1] = result; return result; } // 55FD90: using guessed type int (*off_55FD90)(); //----- (00522430) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_55FD90; result = a2 != 0; this[1] = result; return result; } // 55FD90: using guessed type int (*off_55FD90)(); //----- (00522450) -------------------------------------------------------- void __fastcall std::money_get>::~money_get(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_55FD90; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52245C: variable 'Blocka' is possibly undefined // 55FD90: using guessed type int (*off_55FD90)(); //----- (00522470) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FD90; std::locale::facet::~facet(a1); } // 522470: variable 'v1' is possibly undefined // 55FD90: using guessed type int (*off_55FD90)(); //----- (00522480) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FD90; std::locale::facet::~facet(a1); } // 522480: variable 'v1' is possibly undefined // 55FD90: using guessed type int (*off_55FD90)(); //----- (00522490) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_55FDA8; result = a2 != 0; this[1] = result; return result; } // 55FDA8: using guessed type int (*off_55FDA8)(); //----- (005224B0) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_55FDA8; result = a2 != 0; this[1] = result; return result; } // 55FDA8: using guessed type int (*off_55FDA8)(); //----- (005224D0) -------------------------------------------------------- void __fastcall std::money_put>::~money_put(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_55FDA8; std::locale::facet::~facet(Blocka); operator delete(Block); } // 5224DC: variable 'Blocka' is possibly undefined // 55FDA8: using guessed type int (*off_55FDA8)(); //----- (005224F0) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FDA8; std::locale::facet::~facet(a1); } // 5224F0: variable 'v1' is possibly undefined // 55FDA8: using guessed type int (*off_55FDA8)(); //----- (00522500) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FDA8; std::locale::facet::~facet(a1); } // 522500: variable 'v1' is possibly undefined // 55FDA8: using guessed type int (*off_55FDA8)(); //----- (00522510) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_55FDC0; result = a2 != 0; this[1] = result; return result; } // 55FDC0: using guessed type int (*off_55FDC0)(); //----- (00522530) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_55FDC0; result = a2 != 0; this[1] = result; return result; } // 55FDC0: using guessed type int (*off_55FDC0)(); //----- (00522550) -------------------------------------------------------- void __fastcall std::money_put>::~money_put(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_55FDC0; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52255C: variable 'Blocka' is possibly undefined // 55FDC0: using guessed type int (*off_55FDC0)(); //----- (00522570) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FDC0; std::locale::facet::~facet(a1); } // 522570: variable 'v1' is possibly undefined // 55FDC0: using guessed type int (*off_55FDC0)(); //----- (00522580) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_55FDC0; std::locale::facet::~facet(a1); } // 522580: variable 'v1' is possibly undefined // 55FDC0: using guessed type int (*off_55FDC0)(); //----- (00522590) -------------------------------------------------------- std::__cxx11 *__cdecl std::to_string(std::__cxx11 *this, unsigned int a2) { int v2; // esi unsigned int v3; // ebx unsigned int i; // eax _BYTE *v5; // ecx _BYTE *j; // esi unsigned int v7; // edx int v8; // ebx v2 = 1; v3 = abs32(a2); for ( i = v3; i > 9; i /= 0x2710u ) { if ( i <= 0x63 ) { ++v2; break; } if ( i <= 0x3E7 ) { v2 += 2; break; } if ( i <= 0x270F ) { v2 += 3; break; } v2 += 4; } *(_DWORD *)this = (char *)this + 8; std::string::_M_construct(this, (a2 >> 31) + v2, 45); v5 = (_BYTE *)(*(_DWORD *)this + ((a2 & 0x80000000) != 0)); for ( j = &v5[v2]; ; *j = std::__detail::__to_chars_10_impl(char *,unsigned int,unsigned int)::__digits[v7] ) { j -= 2; if ( v3 <= 0x63 ) break; v7 = 2 * (v3 % 0x64); v3 /= 0x64u; j[1] = byte_5610E1[v7]; } if ( v3 <= 9 ) { *v5 = v3 + 48; } else { v8 = 2 * v3; v5[1] = byte_5610E1[v8]; *v5 = std::__detail::__to_chars_10_impl(char *,unsigned int,unsigned int)::__digits[v8]; } return this; } //----- (00522668) -------------------------------------------------------- std::__cxx11 *__cdecl std::to_string(std::__cxx11 *this, unsigned int a2) { size_t v2; // ecx unsigned int v3; // ebx unsigned int i; // eax _BYTE *v5; // ecx _BYTE *j; // edi unsigned int v7; // edx int v8; // ebx v2 = 1; v3 = a2; for ( i = a2; i > 9; i /= 0x2710u ) { if ( i <= 0x63 ) { ++v2; break; } if ( i <= 0x3E7 ) { v2 += 2; break; } if ( i <= 0x270F ) { v2 += 3; break; } v2 += 4; } *(_DWORD *)this = (char *)this + 8; std::string::_M_construct(this, v2, 0); v5 = *(_BYTE **)this; for ( j = (_BYTE *)(*(_DWORD *)this + *((_DWORD *)this + 1)); ; *j = std::__detail::__to_chars_10_impl(char *,unsigned int,unsigned int)::__digits[v7] ) { j -= 2; if ( v3 <= 0x63 ) break; v7 = 2 * (v3 % 0x64); v3 /= 0x64u; j[1] = byte_5610E1[v7]; } if ( v3 <= 9 ) { *v5 = v3 + 48; } else { v8 = 2 * v3; v5[1] = byte_5610E1[v8]; *v5 = std::__detail::__to_chars_10_impl(char *,unsigned int,unsigned int)::__digits[v8]; } return this; } //----- (00522730) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &unk_5608DC; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52273C: variable 'Blocka' is possibly undefined //----- (00522750) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_5608DC; std::locale::facet::~facet(a1); } // 522750: variable 'v1' is possibly undefined //----- (00522760) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &unk_560908; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52276C: variable 'Blocka' is possibly undefined //----- (00522780) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_560908; std::locale::facet::~facet(a1); } // 522780: variable 'v1' is possibly undefined //----- (00522790) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &unk_560934; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52279C: variable 'Blocka' is possibly undefined //----- (005227B0) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_560934; std::locale::facet::~facet(a1); } // 5227B0: variable 'v1' is possibly undefined //----- (005227C0) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &unk_560960; std::locale::facet::~facet(Blocka); operator delete(Block); } // 5227CC: variable 'Blocka' is possibly undefined //----- (005227E0) -------------------------------------------------------- void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &unk_560960; std::locale::facet::~facet(a1); } // 5227E0: variable 'v1' is possibly undefined //----- (005227F0) -------------------------------------------------------- int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_560B88; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 560B88: using guessed type int (__cdecl *off_560B88)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00522820) -------------------------------------------------------- void __thiscall std::codecvt::codecvt(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560B88; this[2] = std::locale::facet::_S_get_c_locale(); } // 560B88: using guessed type int (__cdecl *off_560B88)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (005228D0) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560B88; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); *a1 = &unk_56098C; std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(a1); } // 522935: variable 'lpfctx' is possibly undefined // 560B88: using guessed type int (__cdecl *off_560B88)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (005229B0) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560B88; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); *a1 = &unk_56098C; std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 522A15: variable 'lpfctx' is possibly undefined // 560B88: using guessed type int (__cdecl *off_560B88)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00522A60) -------------------------------------------------------- int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_560BB4; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 560BB4: using guessed type int (__cdecl *off_560BB4)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00522A90) -------------------------------------------------------- void __thiscall std::codecvt::codecvt(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560BB4; this[2] = std::locale::facet::_S_get_c_locale(); } // 560BB4: using guessed type int (__cdecl *off_560BB4)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00522B40) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560BB4; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); *a1 = &unk_5609B8; std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(a1); } // 522BA5: variable 'lpfctx' is possibly undefined // 560BB4: using guessed type int (__cdecl *off_560BB4)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00522C20) -------------------------------------------------------- void __fastcall std::codecvt::~codecvt(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560BB4; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); *a1 = &unk_5609B8; std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 522C85: variable 'lpfctx' is possibly undefined // 560BB4: using guessed type int (__cdecl *off_560BB4)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); //----- (00522CD0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_560BE0; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 560BE0: using guessed type int (*off_560BE0)(); //----- (00522D00) -------------------------------------------------------- void __thiscall std::collate::collate(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560BE0; this[2] = std::locale::facet::_S_get_c_locale(); } // 560BE0: using guessed type int (*off_560BE0)(); //----- (00522DA0) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_560BE0; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 560BE0: using guessed type int (*off_560BE0)(); //----- (00522DD0) -------------------------------------------------------- void __thiscall std::collate::collate(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560BE0; this[2] = std::locale::facet::_S_get_c_locale(); } // 560BE0: using guessed type int (*off_560BE0)(); //----- (00522E70) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_560BE0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 522EAE: variable 'lpfctx' is possibly undefined // 560BE0: using guessed type int (*off_560BE0)(); //----- (00522ED0) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560BE0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 522F0E: variable 'lpfctx' is possibly undefined // 560BE0: using guessed type int (*off_560BE0)(); //----- (00522F30) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560BE0; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 522F6E: variable 'lpfctx' is possibly undefined // 560BE0: using guessed type int (*off_560BE0)(); //----- (00522F90) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_560BFC; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 560BFC: using guessed type int (*off_560BFC)(); //----- (00522FC0) -------------------------------------------------------- void __thiscall std::collate::collate(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560BFC; this[2] = std::locale::facet::_S_get_c_locale(); } // 560BFC: using guessed type int (*off_560BFC)(); //----- (00523060) -------------------------------------------------------- int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) { int result; // eax *this = &off_560BFC; this[1] = a3 != 0; result = std::locale::facet::_S_clone_c_locale(); this[2] = result; return result; } // 560BFC: using guessed type int (*off_560BFC)(); //----- (00523090) -------------------------------------------------------- void __thiscall std::collate::collate(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560BFC; this[2] = std::locale::facet::_S_get_c_locale(); } // 560BFC: using guessed type int (*off_560BFC)(); //----- (00523130) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_560BFC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 52316E: variable 'lpfctx' is possibly undefined // 560BFC: using guessed type int (*off_560BFC)(); //----- (00523190) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560BFC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 5231CE: variable 'lpfctx' is possibly undefined // 560BFC: using guessed type int (*off_560BFC)(); //----- (005231F0) -------------------------------------------------------- void __fastcall std::collate::~collate(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560BFC; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 52322E: variable 'lpfctx' is possibly undefined // 560BFC: using guessed type int (*off_560BFC)(); //----- (00523250) -------------------------------------------------------- BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560C18; result = a2 != 0; this[1] = result; return result; } // 560C18: using guessed type int (*off_560C18)(); //----- (00523270) -------------------------------------------------------- BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560C18; result = a2 != 0; this[1] = result; return result; } // 560C18: using guessed type int (*off_560C18)(); //----- (00523290) -------------------------------------------------------- void __fastcall std::num_get>::~num_get(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560C18; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52329C: variable 'Blocka' is possibly undefined // 560C18: using guessed type int (*off_560C18)(); //----- (005232B0) -------------------------------------------------------- void __cdecl std::num_get>::~num_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560C18; std::locale::facet::~facet(a1); } // 5232B0: variable 'v1' is possibly undefined // 560C18: using guessed type int (*off_560C18)(); //----- (005232C0) -------------------------------------------------------- void __cdecl std::num_get>::~num_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560C18; std::locale::facet::~facet(a1); } // 5232C0: variable 'v1' is possibly undefined // 560C18: using guessed type int (*off_560C18)(); //----- (005232D0) -------------------------------------------------------- BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560C54; result = a2 != 0; this[1] = result; return result; } // 560C54: using guessed type int (*off_560C54)(); //----- (005232F0) -------------------------------------------------------- BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560C54; result = a2 != 0; this[1] = result; return result; } // 560C54: using guessed type int (*off_560C54)(); //----- (00523310) -------------------------------------------------------- void __fastcall std::num_get>::~num_get(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560C54; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52331C: variable 'Blocka' is possibly undefined // 560C54: using guessed type int (*off_560C54)(); //----- (00523330) -------------------------------------------------------- void __cdecl std::num_get>::~num_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560C54; std::locale::facet::~facet(a1); } // 523330: variable 'v1' is possibly undefined // 560C54: using guessed type int (*off_560C54)(); //----- (00523340) -------------------------------------------------------- void __cdecl std::num_get>::~num_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560C54; std::locale::facet::~facet(a1); } // 523340: variable 'v1' is possibly undefined // 560C54: using guessed type int (*off_560C54)(); //----- (00523350) -------------------------------------------------------- BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560C90; result = a2 != 0; this[1] = result; return result; } // 560C90: using guessed type int (*off_560C90)(); //----- (00523370) -------------------------------------------------------- BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560C90; result = a2 != 0; this[1] = result; return result; } // 560C90: using guessed type int (*off_560C90)(); //----- (00523390) -------------------------------------------------------- void __fastcall std::num_put>::~num_put(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560C90; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52339C: variable 'Blocka' is possibly undefined // 560C90: using guessed type int (*off_560C90)(); //----- (005233B0) -------------------------------------------------------- void __cdecl std::num_put>::~num_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560C90; std::locale::facet::~facet(a1); } // 5233B0: variable 'v1' is possibly undefined // 560C90: using guessed type int (*off_560C90)(); //----- (005233C0) -------------------------------------------------------- void __cdecl std::num_put>::~num_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560C90; std::locale::facet::~facet(a1); } // 5233C0: variable 'v1' is possibly undefined // 560C90: using guessed type int (*off_560C90)(); //----- (005233D0) -------------------------------------------------------- BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560CC0; result = a2 != 0; this[1] = result; return result; } // 560CC0: using guessed type int (*off_560CC0)(); //----- (005233F0) -------------------------------------------------------- BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560CC0; result = a2 != 0; this[1] = result; return result; } // 560CC0: using guessed type int (*off_560CC0)(); //----- (00523410) -------------------------------------------------------- void __fastcall std::num_put>::~num_put(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560CC0; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52341C: variable 'Blocka' is possibly undefined // 560CC0: using guessed type int (*off_560CC0)(); //----- (00523430) -------------------------------------------------------- void __cdecl std::num_put>::~num_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560CC0; std::locale::facet::~facet(a1); } // 523430: variable 'v1' is possibly undefined // 560CC0: using guessed type int (*off_560CC0)(); //----- (00523440) -------------------------------------------------------- void __cdecl std::num_put>::~num_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560CC0; std::locale::facet::~facet(a1); } // 523440: variable 'v1' is possibly undefined // 560CC0: using guessed type int (*off_560CC0)(); //----- (00523450) -------------------------------------------------------- int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( _DWORD *this, _DWORD *a2) { int result; // eax _DWORD *v4; // edx _DWORD *v5; // edi _DWORD *v6; // ebx char v7; // [esp+1Fh] [ebp-19h] result = std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( this, (int)a2); if ( v4 ) { v7 = 1; v5 = v4; if ( !result && v4 != this + 1 ) v7 = std::operator<((int)a2, (int)(v4 + 4)); v6 = operator new(0x28u); std::string::basic_string(v6 + 4, a2); std::_Rb_tree_insert_and_rebalance(v7, v6, v5, this + 1); ++this[5]; return (int)v6; } return result; } // 523469: variable 'v4' is possibly undefined //----- (005234E4) -------------------------------------------------------- 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 result; // eax int v7; // esi bool v8; // zf _DWORD *v9; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v3 = i; v9 = this; v2 = std::operator<(a2, (int)(i + 4)); v5 = (_DWORD *)i[3]; this = v9; if ( v2 ) v5 = (_DWORD *)i[2]; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v7 = std::_Rb_tree_decrement(v3); } else { v7 = (int)v3; } v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; result = v7; if ( !v8 ) return 0; return result; } // 523555: conditional instruction was optimized away because zf.1==0 //----- (00523564) -------------------------------------------------------- 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; } //----- (00523660) -------------------------------------------------------- void __fastcall std::_Rb_tree,std::less,std::allocator>::~_Rb_tree( int a1) { std::_Rb_tree,std::less,std::allocator>::_M_erase(*(_DWORD *)(a1 + 8)); } //----- (00523668) -------------------------------------------------------- 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 result; // eax int v7; // esi bool v8; // zf _DWORD *v9; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v3 = i; v9 = this; v2 = std::operator<(a2, (int)(i + 4)); v5 = (_DWORD *)i[3]; this = v9; if ( v2 ) v5 = (_DWORD *)i[2]; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v7 = std::_Rb_tree_decrement(v3); } else { v7 = (int)v3; } v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; result = v7; if ( !v8 ) return 0; return result; } // 5236D9: conditional instruction was optimized away because zf.1==0 //----- (005236E8) -------------------------------------------------------- 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 _DWORD *v5; // edx int *v6; // eax int v7; // [esp+1Ch] [ebp-2Ch] int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF 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; v5 = (_DWORD *)this[4]; v8[0] = (int)a2; if ( v5 == a2 ) return 0; v6 = std::_Rb_tree_iterator>>::operator++(v8); if ( (unsigned __int8)std::operator<(a3, *v6 + 16) ) { if ( !a2[3] ) return 0; return v8[0]; } 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 = std::_Rb_tree_decrement(a2); if ( !(unsigned __int8)std::operator<(v7 + 16, a3) ) return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( this, a3); result = (int)a2; if ( !*(_DWORD *)(v7 + 12) ) return 0; return result; } // 5236E8: using guessed type int var_1C[7]; //----- (005237E0) -------------------------------------------------------- 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(*(_DWORD *)(a1 + 8)); } //----- (005237E8) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::lower_bound( _DWORD *this, int a2) { _DWORD *v2; // esi _DWORD *i; // ebx char v4; // al _DWORD *v5; // edx v2 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v4 = std::operator<((int)(i + 4), a2); v5 = (_DWORD *)i[3]; if ( !v4 ) v5 = (_DWORD *)i[2]; if ( !v4 ) v2 = i; } return v2; } //----- (00523828) -------------------------------------------------------- _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; } //----- (00523884) -------------------------------------------------------- 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 result; // eax int v7; // esi bool v8; // zf _DWORD *v9; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v3 = i; v9 = this; v2 = std::operator<(a2, (int)(i + 4)); v5 = (_DWORD *)i[3]; this = v9; if ( v2 ) v5 = (_DWORD *)i[2]; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v7 = std::_Rb_tree_decrement(v3); } else { v7 = (int)v3; } v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; result = v7; if ( !v8 ) return 0; return result; } // 5238F5: conditional instruction was optimized away because zf.1==0 //----- (00523904) -------------------------------------------------------- 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; } //----- (00523A00) -------------------------------------------------------- char *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( _DWORD *this, int a2) { int v2; // edx char v3; // al struct _Unwind_Exception *v4; // edx int v5; // eax char v6; // al struct _Unwind_Exception *v8; // [esp+14h] [ebp-54h] void **v10; // [esp+1Ch] [ebp-4Ch] char *Block; // [esp+20h] [ebp-48h] struct _Unwind_Exception *v12; // [esp+24h] [ebp-44h] int v13; // [esp+24h] [ebp-44h] struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-40h] Block = (char *)operator new(0x30u); v10 = (void **)(Block + 16); std::string::basic_string(Block + 16, a2); v2 = *(_DWORD *)(a2 + 28); *((_DWORD *)Block + 10) = *(_DWORD *)(a2 + 24); *((_DWORD *)Block + 11) = v2; v12 = (struct _Unwind_Exception *)this[2]; v8 = (struct _Unwind_Exception *)(this + 1); lpuexcpt = (struct _Unwind_Exception *)(this + 1); v3 = 1; while ( v12 ) { v3 = std::operator<((int)v10, (int)v12 + 16); v4 = (struct _Unwind_Exception *)*((_DWORD *)v12 + 3); if ( v3 ) v4 = (struct _Unwind_Exception *)*((_DWORD *)v12 + 2); lpuexcpt = v12; v12 = v4; } if ( v3 ) { if ( (struct _Unwind_Exception *)this[3] == lpuexcpt ) goto LABEL_12; v5 = std::_Rb_tree_decrement(lpuexcpt); } else { v5 = (int)lpuexcpt; } v13 = v5; if ( !(unsigned __int8)std::operator<(v5 + 16, (int)v10) ) { std::string::_M_dispose(v10); operator delete(Block); return (char *)v13; } LABEL_12: v6 = 1; if ( v8 != lpuexcpt ) v6 = std::operator<((int)v10, (int)lpuexcpt + 16); std::_Rb_tree_insert_and_rebalance(v6, Block, lpuexcpt, v8); ++this[5]; return Block; } //----- (00523BD0) -------------------------------------------------------- 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(*(_DWORD *)(a1 + 8)); } //----- (00523BD8) -------------------------------------------------------- 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 j; // ecx bool v7; // zf int v8; // eax int v10; // [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; } for ( j = *(_DWORD *)(i + 12); j; j = v8 ) { v10 = j; v7 = (unsigned __int8)std::operator<(a2, j + 16) == 0; v8 = *(_DWORD *)(v10 + 8); if ( v7 ) v8 = *(_DWORD *)(v10 + 12); } return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound( v4, i, a2); } //----- (00523C70) -------------------------------------------------------- _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; } //----- (00523CCC) -------------------------------------------------------- struct _Unwind_Exception *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( _DWORD *this, char **a2) { _DWORD *v2; // edx struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-44h] void **Block; // [esp+18h] [ebp-40h] Block = (void **)operator new(0x98u); std::string::basic_string(Block + 4, *a2); WXML::DOMLib::Token::Token(Block + 10, (int)(a2 + 1)); lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this, (int)(Block + 4)); if ( v2 ) return (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( this, (int)lpuexcpt, v2, Block); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node(Block); return lpuexcpt; } // 523D58: variable 'v2' is possibly undefined //----- (00523E00) -------------------------------------------------------- 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 result; // eax int v7; // esi bool v8; // zf _DWORD *v9; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v3 = i; v9 = this; v2 = std::operator<(a2, (int)(i + 4)); v5 = (_DWORD *)i[3]; this = v9; if ( v2 ) v5 = (_DWORD *)i[2]; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v7 = std::_Rb_tree_decrement(v3); } else { v7 = (int)v3; } v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; result = v7; if ( !v8 ) return 0; return result; } // 523E71: conditional instruction was optimized away because zf.1==0 //----- (00523E80) -------------------------------------------------------- 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; } //----- (00523F7C) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( _DWORD *this, int a2) { _DWORD *v2; // esi _DWORD *v3; // ebx _DWORD *i; // edi char v5; // al _DWORD *v6; // edx v2 = this + 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v6 ) { v5 = std::operator<((int)(i + 4), a2); v6 = (_DWORD *)i[3]; if ( !v5 ) v6 = (_DWORD *)i[2]; if ( !v5 ) v3 = i; } if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) return v2; return v3; } //----- (00523FDC) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::lower_bound( _DWORD *this, int a2) { _DWORD *v2; // esi _DWORD *i; // ebx char v4; // al _DWORD *v5; // edx v2 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v4 = std::operator<((int)(i + 4), a2); v5 = (_DWORD *)i[3]; if ( !v4 ) v5 = (_DWORD *)i[2]; if ( !v4 ) v2 = i; } return v2; } //----- (0052401C) -------------------------------------------------------- _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; } //----- (00524078) -------------------------------------------------------- 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 result; // eax int v7; // esi bool v8; // zf _DWORD *v9; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v3 = i; v9 = this; v2 = std::operator<(a2, (int)(i + 4)); v5 = (_DWORD *)i[3]; this = v9; if ( v2 ) v5 = (_DWORD *)i[2]; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v7 = std::_Rb_tree_decrement(v3); } else { v7 = (int)v3; } v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; result = v7; if ( !v8 ) return 0; return result; } // 5240E9: conditional instruction was optimized away because zf.1==0 //----- (005240F8) -------------------------------------------------------- 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; } //----- (005241F4) -------------------------------------------------------- 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(*(_DWORD *)(a1 + 8)); } //----- (005241FC) -------------------------------------------------------- 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 result; // eax int v7; // esi bool v8; // zf _DWORD *v9; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v3 = i; v9 = this; v2 = std::operator<(a2, (int)(i + 4)); v5 = (_DWORD *)i[3]; this = v9; if ( v2 ) v5 = (_DWORD *)i[2]; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v7 = std::_Rb_tree_decrement(v3); } else { v7 = (int)v3; } v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; result = v7; if ( !v8 ) return 0; return result; } // 52426D: conditional instruction was optimized away because zf.1==0 //----- (0052427C) -------------------------------------------------------- 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; } //----- (00524378) -------------------------------------------------------- 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(*(_DWORD *)(a1 + 8)); } //----- (00524380) -------------------------------------------------------- _DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::lower_bound( _DWORD *this, int a2) { _DWORD *v2; // esi _DWORD *i; // ebx char v4; // al _DWORD *v5; // edx v2 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v4 = std::operator<((int)(i + 4), a2); v5 = (_DWORD *)i[3]; if ( !v4 ) v5 = (_DWORD *)i[2]; if ( !v4 ) v2 = i; } return v2; } //----- (005243C0) -------------------------------------------------------- _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; } //----- (0052441C) -------------------------------------------------------- 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 result; // eax int v7; // esi bool v8; // zf _DWORD *v9; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v3 = i; v9 = this; v2 = std::operator<(a2, (int)(i + 4)); v5 = (_DWORD *)i[3]; this = v9; if ( v2 ) v5 = (_DWORD *)i[2]; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v7 = std::_Rb_tree_decrement(v3); } else { v7 = (int)v3; } v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; result = v7; if ( !v8 ) return 0; return result; } // 52448D: conditional instruction was optimized away because zf.1==0 //----- (0052449C) -------------------------------------------------------- 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; } //----- (00524598) -------------------------------------------------------- int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_Rb_tree( _DWORD *this, int a2) { int result; // eax int v4; // edx int v5; // ecx int v6; // edx int v7; // ecx int v8; // edx this[2] = 0; result = *(_DWORD *)(a2 + 8); this[1] = 0; this[3] = this + 1; this[4] = this + 1; this[5] = 0; if ( result ) { result = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( result, (int)(this + 1)); v4 = result; do { v5 = v4; v4 = *(_DWORD *)(v4 + 8); } while ( v4 ); this[3] = v5; v6 = result; do { v7 = v6; v6 = *(_DWORD *)(v6 + 12); } while ( v6 ); v8 = *(_DWORD *)(a2 + 20); this[4] = v7; this[2] = result; this[5] = v8; } return result; } //----- (005245F8) -------------------------------------------------------- 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(*(_DWORD *)(a1 + 8)); } //----- (00524600) -------------------------------------------------------- _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; } //----- (0052465C) -------------------------------------------------------- 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 result; // eax int v7; // esi bool v8; // zf _DWORD *v9; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v3 = i; v9 = this; v2 = std::operator<(a2, (int)(i + 4)); v5 = (_DWORD *)i[3]; this = v9; if ( v2 ) v5 = (_DWORD *)i[2]; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v7 = std::_Rb_tree_decrement(v3); } else { v7 = (int)v3; } v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; result = v7; if ( !v8 ) return 0; return result; } // 5246CD: conditional instruction was optimized away because zf.1==0 //----- (005246DC) -------------------------------------------------------- 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; } //----- (005247D8) -------------------------------------------------------- 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(*(_DWORD *)(a1 + 8)); } //----- (005247E0) -------------------------------------------------------- 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 result; // eax int v7; // esi bool v8; // zf _DWORD *v9; // [esp+1Ch] [ebp-1Ch] v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v5 ) { v3 = i; v9 = this; v2 = std::operator<(a2, (int)(i + 4)); v5 = (_DWORD *)i[3]; this = v9; if ( v2 ) v5 = (_DWORD *)i[2]; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; v7 = std::_Rb_tree_decrement(v3); } else { v7 = (int)v3; } v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; result = v7; if ( !v8 ) return 0; return result; } // 524851: conditional instruction was optimized away because zf.1==0 //----- (00524860) -------------------------------------------------------- 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; } //----- (0052495C) -------------------------------------------------------- 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(*(_DWORD *)(a1 + 8)); } //----- (00524964) -------------------------------------------------------- int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( _DWORD *this, _DWORD *a2) { bool 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 ) { v3 = i; v5 = (_DWORD *)i[3]; if ( i[4] > *a2 ) v5 = (_DWORD *)i[2]; v2 = i[4] > *a2; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; result = std::_Rb_tree_decrement(v3); } else { result = (int)v3; } if ( *(_DWORD *)(result + 16) < *a2 ) return 0; return result; } //----- (005249C4) -------------------------------------------------------- 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] && *a3 > *(_DWORD *)(this[4] + 16) ) return 0; return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( this, a3); } v3 = *a3; if ( a2[4] <= *a3 ) { if ( a2[4] >= *a3 ) 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 ( *(_DWORD *)(v5 + 16) >= v3 ) 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; } //----- (00524A64) -------------------------------------------------------- int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( _DWORD *this, unsigned int *a2) { bool v2; // dl _DWORD *v3; // ebx _DWORD *i; // eax unsigned int v5; // ebx _DWORD *v6; // edi bool v7; // cc int result; // eax v2 = 1; v3 = this + 1; for ( i = (_DWORD *)this[2]; i; i = v6 ) { v5 = i[4]; v6 = (_DWORD *)i[3]; v2 = *a2 < v5; v7 = v5 <= *a2; v3 = i; if ( !v7 ) v6 = (_DWORD *)i[2]; } if ( v2 ) { if ( (_DWORD *)this[3] == v3 ) return 0; result = std::_Rb_tree_decrement(v3); } else { result = (int)v3; } if ( *(_DWORD *)(result + 16) < *a2 ) return 0; return result; } //----- (00524AC8) -------------------------------------------------------- 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] && *a3 > *(_DWORD *)(this[4] + 16) ) return 0; return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( this, a3); } v3 = *a3; if ( a2[4] <= *a3 ) { if ( a2[4] >= *a3 ) 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 ( *(_DWORD *)(v5 + 16) >= v3 ) 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; } //----- (00524B68) -------------------------------------------------------- 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(*(_DWORD *)(a1 + 8)); } //----- (00524B70) -------------------------------------------------------- void __fastcall std::bad_cast::~bad_cast(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_560CF0; std::exception::~exception(Block); operator delete(a1); } // 524B7C: variable 'Block' is possibly undefined // 560CF0: using guessed type void (__cdecl *off_560CF0)(std::bad_cast *__hidden this); //----- (00524BA0) -------------------------------------------------------- void __cdecl std::bad_cast::~bad_cast(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_560CF0; std::exception::~exception(a1); } // 524BA0: variable 'v1' is possibly undefined // 560CF0: using guessed type void (__cdecl *off_560CF0)(std::bad_cast *__hidden this); //----- (00524BB0) -------------------------------------------------------- int *__userpurge std::ios_base::_M_grow_words@(_DWORD *a1@, int this, char a3, bool a4) { char *v4; // eax _DWORD *v5; // eax int v6; // edx int v7; // esi int *v8; // ebx int *v9; // eax int v10; // edi int v11; // ebp char *v12; // edx int v13; // eax int *v17; // [esp+1Ch] [ebp-60h] int v18; // [esp+20h] [ebp-5Ch] int v19; // [esp+24h] [ebp-58h] int v20; // [esp+28h] [ebp-54h] if ( (unsigned int)this > 0x7FFFFFFE ) { v12 = "ios_base::_M_grow_words is not valid"; } else { v17 = a1 + 9; if ( this <= 7 ) { v18 = 8; LABEL_21: a1[26] = v17; a1[25] = v18; return &v17[2 * this]; } v4 = (char *)(this + 1); v18 = this + 1; if ( this + 1 > 0xFFFFFFF ) __cxa_throw_bad_array_new_length(); v20 = 8 * (_DWORD)v4; v19 = operator new[](8 * (_DWORD)v4); if ( v19 ) { v5 = (_DWORD *)v19; v6 = v19; do { *v5 = 0; v5 += 2; *(v5 - 1) = 0; } while ( (_DWORD *)(v19 + v20) != v5 ); v7 = a1[25]; v8 = (int *)a1[26]; v9 = v8; if ( v7 > 0 ) { do { v10 = *v9; v11 = v9[1]; v9 += 2; v6 += 8; *(_DWORD *)(v6 - 8) = v10; *(_DWORD *)(v6 - 4) = v11; } while ( &v8[2 * v7] != v9 ); } if ( v17 != v8 && v8 ) operator delete[](v8); v17 = (int *)v19; goto LABEL_21; } v12 = "ios_base::_M_grow_words allocation failed"; } v13 = a1[5] | 1; a1[5] = v13; if ( (a1[4] & v13) != 0 ) std::__throw_ios_failure(v12); if ( a3 ) a1[8] = 0; else a1[7] = 0; return a1 + 7; } //----- (00524DB0) -------------------------------------------------------- int __cdecl std::ios_base::sync_with_stdio(std::ios_base *this) { FILE *v3; // eax FILE *v4; // eax FILE *v5; // eax FILE *v6; // eax FILE *v7; // eax FILE *v8; // eax FILE *(__cdecl *v9)(unsigned int); // [esp+14h] [ebp-54h] unsigned __int8 lpuexcpt; // [esp+18h] [ebp-50h] lpuexcpt = std::ios_base::Init::_S_synced_with_stdio; if ( (_BYTE)this != 1 && std::ios_base::Init::_S_synced_with_stdio ) { if ( _CRT_MT ) { if ( _InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 1u) ) goto LABEL_6; } else if ( std::ios_base::Init::_S_refcount++ ) { LABEL_6: std::ios_base::Init::_S_synced_with_stdio = 0; __gnu_internal::buf_cout_sync = &off_560424; std::locale::~locale((_DWORD **)&dword_53F17C); __gnu_internal::buf_cin_sync = &off_560424; std::locale::~locale((_DWORD **)&dword_53F0FC); __gnu_internal::buf_cerr_sync = &off_560424; std::locale::~locale((_DWORD **)&dword_53F13C); __gnu_internal::buf_wcout_sync = &off_560464; std::locale::~locale((_DWORD **)&dword_53F23C); __gnu_internal::buf_wcin_sync = &off_560464; std::locale::~locale((_DWORD **)&dword_53F1BC); __gnu_internal::buf_wcerr_sync = &off_560464; std::locale::~locale((_DWORD **)&dword_53F1FC); v9 = ___acrt_iob_func; v3 = ___acrt_iob_func(1u); __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cout, v3, 16, 512); v4 = v9(0); __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cin, v4, 8, 512); v5 = v9(2u); __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cerr, v5, 16, 512); std::ios::rdbuf(dword_53F9A4, (int)__gnu_internal::buf_cout); std::ios::rdbuf(dword_53F7C8, (int)__gnu_internal::buf_cin); std::ios::rdbuf(&dword_53F864, (int)__gnu_internal::buf_cerr); std::ios::rdbuf(dword_53F904, (int)__gnu_internal::buf_cerr); v6 = v9(1u); __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcout, v6, 16, 512); v7 = v9(0); __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcin, v7, 8, 512); v8 = v9(2u); __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcerr, v8, 16, 512); std::wios::rdbuf(dword_53FC24, (int)__gnu_internal::buf_wcout); std::wios::rdbuf(dword_53FA48, (int)__gnu_internal::buf_wcin); std::wios::rdbuf(&dword_53FAE4, (int)__gnu_internal::buf_wcerr); std::wios::rdbuf(dword_53FB84, (int)__gnu_internal::buf_wcerr); std::ios_base::Init::~Init(); return lpuexcpt; } std::ios_base::Init::Init(); goto LABEL_6; } return lpuexcpt; } // 53E1E4: using guessed type int _CRT_MT; // 53F0FC: using guessed type _DWORD dword_53F0FC; // 53F13C: using guessed type _DWORD dword_53F13C; // 53F17C: using guessed type _DWORD dword_53F17C; // 53F1BC: using guessed type _DWORD dword_53F1BC; // 53F1FC: using guessed type _DWORD dword_53F1FC; // 53F23C: using guessed type _DWORD dword_53F23C; // 53F778: using guessed type int std::ios_base::Init::_S_refcount; // 53F77C: using guessed type char std::ios_base::Init::_S_synced_with_stdio; // 53F7C8: using guessed type int dword_53F7C8[28]; // 53F864: using guessed type int dword_53F864; // 53F904: using guessed type int dword_53F904[28]; // 53F9A4: using guessed type int dword_53F9A4[28]; // 53FA48: using guessed type int dword_53FA48[28]; // 53FAE4: using guessed type int dword_53FAE4; // 53FB84: using guessed type int dword_53FB84[28]; // 53FC24: using guessed type int dword_53FC24[28]; // 560424: using guessed type int (*off_560424)(); // 560464: using guessed type int (*off_560464)(); //----- (005250D0) -------------------------------------------------------- void __thiscall std::ios_base::_M_call_callbacks(_DWORD *this, int a2) { int **i; // [esp+14h] [ebp-58h] for ( i = (int **)this[6]; i; i = (int **)*i ) ((void (__cdecl *)(int, _DWORD *, int *))i[1])(a2, this, i[2]); } //----- (005251C0) -------------------------------------------------------- _DWORD *__thiscall std::ios_base::register_callback(_DWORD *this, int a2, int a3) { _DWORD *result; // eax int v5; // edx result = operator new(0x10u); v5 = this[6]; result[3] = 0; *result = v5; this[6] = result; result[1] = a2; result[2] = a3; return result; } //----- (00525200) -------------------------------------------------------- void __fastcall std::ios_base::_M_dispose_callbacks(int a1) { volatile signed __int32 *Block; // eax int v3; // edx volatile signed __int32 *v4; // esi Block = *(volatile signed __int32 **)(a1 + 24); if ( Block ) { while ( 1 ) { if ( _CRT_MT ) { if ( _InterlockedExchangeAdd(Block + 3, 0xFFFFFFFF) ) break; } else { v3 = *((_DWORD *)Block + 3); *((_DWORD *)Block + 3) = v3 - 1; if ( v3 ) break; } v4 = (volatile signed __int32 *)*Block; operator delete((void *)Block); if ( !v4 ) break; Block = v4; } } *(_DWORD *)(a1 + 24) = 0; } // 53E1E4: using guessed type int _CRT_MT; //----- (00525260) -------------------------------------------------------- void std::ios_base::Init::Init() { if ( !_CRT_MT ) { if ( std::ios_base::Init::_S_refcount++ ) return; LABEL_5: std::ios_base::Init::Init(); return; } if ( !_InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 1u) ) goto LABEL_5; } // 53E1E4: using guessed type int _CRT_MT; // 53F778: using guessed type int std::ios_base::Init::_S_refcount; //----- (005252A0) -------------------------------------------------------- void std::ios_base::Init::Init() { FILE *v0; // eax int v1; // eax int v2; // eax int v3; // eax int v4; // eax int v5; // eax int v6; // [esp+14h] [ebp-44h] int v7; // [esp+14h] [ebp-44h] int v8; // [esp+14h] [ebp-44h] int v9; // [esp+14h] [ebp-44h] int v10; // [esp+14h] [ebp-44h] FILE *(__cdecl *lpuexcpt)(unsigned int); // [esp+18h] [ebp-40h] struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-40h] std::ios_base::Init::_S_synced_with_stdio = 1; lpuexcpt = ___acrt_iob_func; v0 = ___acrt_iob_func(1u); __gnu_internal::buf_cout_sync = &off_560424; v6 = (int)v0; dword_53F164 = 0; dword_53F168 = 0; dword_53F16C = 0; dword_53F170 = 0; dword_53F174 = 0; dword_53F178 = 0; std::locale::locale(&dword_53F17C); __gnu_internal::buf_cout_sync = &off_55F2B4; dword_53F180 = v6; dword_53F184 = -1; v1 = (int)lpuexcpt(0); __gnu_internal::buf_cin_sync = &off_560424; v7 = v1; dword_53F0E4 = 0; dword_53F0E8 = 0; dword_53F0EC = 0; dword_53F0F0 = 0; dword_53F0F4 = 0; dword_53F0F8 = 0; std::locale::locale(&dword_53F0FC); __gnu_internal::buf_cin_sync = &off_55F2B4; dword_53F100 = v7; dword_53F104 = -1; v2 = (int)lpuexcpt(2u); __gnu_internal::buf_cerr_sync = &off_560424; v8 = v2; dword_53F124 = 0; dword_53F128 = 0; dword_53F12C = 0; dword_53F130 = 0; dword_53F134 = 0; dword_53F138 = 0; std::locale::locale(&dword_53F13C); __gnu_internal::buf_cerr_sync = &off_55F2B4; dword_53F144 = -1; dword_53F140 = v8; std::ios_base::ios_base(dword_53F9A4); dword_53FA14 = 0; word_53FA18 = 0; dword_53FA1C = 0; dword_53FA20 = 0; dword_53FA24 = 0; dword_53FA28 = 0; std::cout = (int)&off_55FE68; dword_53F9A4[0] = (int)off_55FE7C; std::ios::init((int)dword_53F9A4, (int)&__gnu_internal::buf_cout_sync); std::ios_base::ios_base(dword_53F7C8); dword_53F838 = 0; word_53F83C = 0; dword_53F840 = 0; dword_53F844 = 0; dword_53F848 = 0; dword_53F84C = 0; std::cin = (int)&off_55FE40; dword_53F7C8[0] = (int)off_55FE54; dword_53F7C4 = 0; std::ios::init((int)dword_53F7C8, (int)&__gnu_internal::buf_cin_sync); std::ios_base::ios_base(&dword_53F864); word_53F8D8 = 0; dword_53F8D4 = 0; dword_53F8DC = 0; dword_53F8E0 = 0; dword_53F8E4 = 0; dword_53F8E8 = 0; std::cerr = (int)&off_55FE68; dword_53F864 = (int)off_55FE7C; std::ios::init((int)&dword_53F864, (int)&__gnu_internal::buf_cerr_sync); std::ios_base::ios_base(dword_53F904); dword_53F974 = 0; word_53F978 = 0; dword_53F97C = 0; dword_53F980 = 0; dword_53F984 = 0; dword_53F988 = 0; std::clog = (int)&off_55FE68; dword_53F904[0] = (int)off_55FE7C; std::ios::init((int)dword_53F904, (int)&__gnu_internal::buf_cerr_sync); dword_53F870 |= 0x2000u; dword_53F838 = (int)&std::cout; dword_53F8D4 = (int)&std::cout; v3 = (int)lpuexcpt(1u); __gnu_internal::buf_wcout_sync = &off_560464; v9 = v3; dword_53F224 = 0; dword_53F228 = 0; dword_53F22C = 0; dword_53F230 = 0; dword_53F234 = 0; dword_53F238 = 0; std::locale::locale(&dword_53F23C); __gnu_internal::buf_wcout_sync = &off_55F2F4; word_53F244 = -1; dword_53F240 = v9; v4 = (int)lpuexcpt(0); __gnu_internal::buf_wcin_sync = &off_560464; v10 = v4; dword_53F1A4 = 0; dword_53F1A8 = 0; dword_53F1AC = 0; dword_53F1B0 = 0; dword_53F1B4 = 0; dword_53F1B8 = 0; std::locale::locale(&dword_53F1BC); __gnu_internal::buf_wcin_sync = &off_55F2F4; word_53F1C4 = -1; dword_53F1C0 = v10; v5 = (int)lpuexcpt(2u); __gnu_internal::buf_wcerr_sync = &off_560464; lpuexcpta = (struct _Unwind_Exception *)v5; dword_53F1E4 = 0; dword_53F1E8 = 0; dword_53F1EC = 0; dword_53F1F0 = 0; dword_53F1F4 = 0; dword_53F1F8 = 0; std::locale::locale(&dword_53F1FC); __gnu_internal::buf_wcerr_sync = &off_55F2F4; dword_53F200 = (int)lpuexcpta; word_53F204 = -1; std::ios_base::ios_base(dword_53FC24); dword_53FC94 = 0; word_53FC98 = 0; byte_53FC9A = 0; dword_53FC9C = 0; dword_53FCA0 = 0; dword_53FCA4 = 0; dword_53FCA8 = 0; std::wcout = (int)&off_5601C4; dword_53FC24[0] = (int)off_5601D8; std::wios::init((int)dword_53FC24, (int)&__gnu_internal::buf_wcout_sync); std::ios_base::ios_base(dword_53FA48); dword_53FAB8 = 0; word_53FABC = 0; byte_53FABE = 0; dword_53FAC0 = 0; dword_53FAC4 = 0; dword_53FAC8 = 0; dword_53FACC = 0; std::wcin = (int)&off_56019C; dword_53FA48[0] = (int)off_5601B0; dword_53FA44 = 0; std::wios::init((int)dword_53FA48, (int)&__gnu_internal::buf_wcin_sync); std::ios_base::ios_base(&dword_53FAE4); word_53FB58 = 0; dword_53FB54 = 0; byte_53FB5A = 0; dword_53FB5C = 0; dword_53FB60 = 0; dword_53FB64 = 0; dword_53FB68 = 0; std::wcerr = (int)&off_5601C4; dword_53FAE4 = (int)off_5601D8; std::wios::init((int)&dword_53FAE4, (int)&__gnu_internal::buf_wcerr_sync); std::ios_base::ios_base(dword_53FB84); dword_53FBF4 = 0; word_53FBF8 = 0; byte_53FBFA = 0; dword_53FBFC = 0; dword_53FC00 = 0; dword_53FC04 = 0; dword_53FC08 = 0; std::wclog = (int)&off_5601C4; dword_53FB84[0] = (int)off_5601D8; std::wios::init((int)dword_53FB84, (int)&__gnu_internal::buf_wcerr_sync); dword_53FAF0 |= 0x2000u; dword_53FAB8 = (int)&std::wcout; dword_53FB54 = (int)&std::wcout; if ( _CRT_MT ) _InterlockedAdd(&std::ios_base::Init::_S_refcount, 1u); else ++std::ios_base::Init::_S_refcount; } // 53E1E4: using guessed type int _CRT_MT; // 53F0E4: using guessed type int dword_53F0E4; // 53F0E8: using guessed type int dword_53F0E8; // 53F0EC: using guessed type int dword_53F0EC; // 53F0F0: using guessed type int dword_53F0F0; // 53F0F4: using guessed type int dword_53F0F4; // 53F0F8: using guessed type int dword_53F0F8; // 53F0FC: using guessed type _DWORD dword_53F0FC; // 53F100: using guessed type int dword_53F100; // 53F104: using guessed type int dword_53F104; // 53F124: using guessed type int dword_53F124; // 53F128: using guessed type int dword_53F128; // 53F12C: using guessed type int dword_53F12C; // 53F130: using guessed type int dword_53F130; // 53F134: using guessed type int dword_53F134; // 53F138: using guessed type int dword_53F138; // 53F13C: using guessed type _DWORD dword_53F13C; // 53F140: using guessed type int dword_53F140; // 53F144: using guessed type int dword_53F144; // 53F164: using guessed type int dword_53F164; // 53F168: using guessed type int dword_53F168; // 53F16C: using guessed type int dword_53F16C; // 53F170: using guessed type int dword_53F170; // 53F174: using guessed type int dword_53F174; // 53F178: using guessed type int dword_53F178; // 53F17C: using guessed type _DWORD dword_53F17C; // 53F180: using guessed type int dword_53F180; // 53F184: using guessed type int dword_53F184; // 53F1A4: using guessed type int dword_53F1A4; // 53F1A8: using guessed type int dword_53F1A8; // 53F1AC: using guessed type int dword_53F1AC; // 53F1B0: using guessed type int dword_53F1B0; // 53F1B4: using guessed type int dword_53F1B4; // 53F1B8: using guessed type int dword_53F1B8; // 53F1BC: using guessed type _DWORD dword_53F1BC; // 53F1C0: using guessed type int dword_53F1C0; // 53F1C4: using guessed type __int16 word_53F1C4; // 53F1E4: using guessed type int dword_53F1E4; // 53F1E8: using guessed type int dword_53F1E8; // 53F1EC: using guessed type int dword_53F1EC; // 53F1F0: using guessed type int dword_53F1F0; // 53F1F4: using guessed type int dword_53F1F4; // 53F1F8: using guessed type int dword_53F1F8; // 53F1FC: using guessed type _DWORD dword_53F1FC; // 53F200: using guessed type int dword_53F200; // 53F204: using guessed type __int16 word_53F204; // 53F224: using guessed type int dword_53F224; // 53F228: using guessed type int dword_53F228; // 53F22C: using guessed type int dword_53F22C; // 53F230: using guessed type int dword_53F230; // 53F234: using guessed type int dword_53F234; // 53F238: using guessed type int dword_53F238; // 53F23C: using guessed type _DWORD dword_53F23C; // 53F240: using guessed type int dword_53F240; // 53F244: using guessed type __int16 word_53F244; // 53F778: using guessed type int std::ios_base::Init::_S_refcount; // 53F77C: using guessed type char std::ios_base::Init::_S_synced_with_stdio; // 53F7C0: using guessed type int std::cin; // 53F7C4: using guessed type int dword_53F7C4; // 53F7C8: using guessed type int dword_53F7C8[28]; // 53F838: using guessed type int dword_53F838; // 53F83C: using guessed type __int16 word_53F83C; // 53F840: using guessed type int dword_53F840; // 53F844: using guessed type int dword_53F844; // 53F848: using guessed type int dword_53F848; // 53F84C: using guessed type int dword_53F84C; // 53F860: using guessed type int std::cerr; // 53F864: using guessed type int dword_53F864; // 53F870: using guessed type int dword_53F870; // 53F8D4: using guessed type int dword_53F8D4; // 53F8D8: using guessed type __int16 word_53F8D8; // 53F8DC: using guessed type int dword_53F8DC; // 53F8E0: using guessed type int dword_53F8E0; // 53F8E4: using guessed type int dword_53F8E4; // 53F8E8: using guessed type int dword_53F8E8; // 53F900: using guessed type int std::clog; // 53F904: using guessed type int dword_53F904[28]; // 53F974: using guessed type int dword_53F974; // 53F978: using guessed type __int16 word_53F978; // 53F97C: using guessed type int dword_53F97C; // 53F980: using guessed type int dword_53F980; // 53F984: using guessed type int dword_53F984; // 53F988: using guessed type int dword_53F988; // 53F9A0: using guessed type int std::cout; // 53F9A4: using guessed type int dword_53F9A4[28]; // 53FA14: using guessed type int dword_53FA14; // 53FA18: using guessed type __int16 word_53FA18; // 53FA1C: using guessed type int dword_53FA1C; // 53FA20: using guessed type int dword_53FA20; // 53FA24: using guessed type int dword_53FA24; // 53FA28: using guessed type int dword_53FA28; // 53FA40: using guessed type int std::wcin; // 53FA44: using guessed type int dword_53FA44; // 53FA48: using guessed type int dword_53FA48[28]; // 53FAB8: using guessed type int dword_53FAB8; // 53FABC: using guessed type __int16 word_53FABC; // 53FABE: using guessed type char byte_53FABE; // 53FAC0: using guessed type int dword_53FAC0; // 53FAC4: using guessed type int dword_53FAC4; // 53FAC8: using guessed type int dword_53FAC8; // 53FACC: using guessed type int dword_53FACC; // 53FAE0: using guessed type int std::wcerr; // 53FAE4: using guessed type int dword_53FAE4; // 53FAF0: using guessed type int dword_53FAF0; // 53FB54: using guessed type int dword_53FB54; // 53FB58: using guessed type __int16 word_53FB58; // 53FB5A: using guessed type char byte_53FB5A; // 53FB5C: using guessed type int dword_53FB5C; // 53FB60: using guessed type int dword_53FB60; // 53FB64: using guessed type int dword_53FB64; // 53FB68: using guessed type int dword_53FB68; // 53FB80: using guessed type int std::wclog; // 53FB84: using guessed type int dword_53FB84[28]; // 53FBF4: using guessed type int dword_53FBF4; // 53FBF8: using guessed type __int16 word_53FBF8; // 53FBFA: using guessed type char byte_53FBFA; // 53FBFC: using guessed type int dword_53FBFC; // 53FC00: using guessed type int dword_53FC00; // 53FC04: using guessed type int dword_53FC04; // 53FC08: using guessed type int dword_53FC08; // 53FC20: using guessed type int std::wcout; // 53FC24: using guessed type int dword_53FC24[28]; // 53FC94: using guessed type int dword_53FC94; // 53FC98: using guessed type __int16 word_53FC98; // 53FC9A: using guessed type char byte_53FC9A; // 53FC9C: using guessed type int dword_53FC9C; // 53FCA0: using guessed type int dword_53FCA0; // 53FCA4: using guessed type int dword_53FCA4; // 53FCA8: using guessed type int dword_53FCA8; // 55F2B4: using guessed type int (*off_55F2B4)(); // 55F2F4: using guessed type int (*off_55F2F4)(); // 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); // 55FE54: using guessed type void (__cdecl *off_55FE54[2])(std::istream *__hidden this); // 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); // 55FE7C: using guessed type void (__cdecl *off_55FE7C[2])(std::ostream *__hidden this); // 56019C: using guessed type int (*off_56019C)(); // 5601B0: using guessed type int (*off_5601B0[2])(); // 5601C4: using guessed type int (*off_5601C4)(); // 5601D8: using guessed type int (*off_5601D8[2])(); // 560424: using guessed type int (*off_560424)(); // 560464: using guessed type int (*off_560464)(); //----- (00525B90) -------------------------------------------------------- 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; } // 53E1E4: using guessed type int _CRT_MT; // 53F778: using guessed type int std::ios_base::Init::_S_refcount; // 53F860: using guessed type int std::cerr; // 53F900: using guessed type int std::clog; // 53F9A0: using guessed type int std::cout; // 53FAE0: using guessed type int std::wcerr; // 53FB80: using guessed type int std::wclog; // 53FC20: using guessed type int std::wcout; //----- (00525C70) -------------------------------------------------------- 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; } // 525C82: variable 'v5' is possibly undefined //----- (00525CC0) -------------------------------------------------------- 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; } // 53E1E4: using guessed type int _CRT_MT; // 53FCFC: using guessed type int std::ios_base::xalloc(void)::_S_top; //----- (00525D00) -------------------------------------------------------- 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); } //----- (00525D50) -------------------------------------------------------- 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); } //----- (00525E20) -------------------------------------------------------- void __userpurge std::ios_base::_M_swap(std::ios_base *a1@, std::ios_base *this, std::ios_base *a3) { char *v3; // ebp std::ios_base *v4; // ebx int v5; // eax char *v6; // edi int v7; // edx int v8; // eax int v9; // edx int v10; // eax int v11; // edx int v12; // eax int v13; // edx int v14; // eax int v15; // edx int v16; // eax char *v17; // edx char *v18; // eax std::ios_base *v19; // edx int v20; // eax volatile signed __int32 **v21; // ebx int i; // ecx int v23; // ebp int v24; // edi int v25; // edx const std::locale *Src; // [esp+4h] [ebp-48h] std::ios_base *v27; // [esp+18h] [ebp-34h] std::ios_base *v28; // [esp+1Ch] [ebp-30h] _DWORD *v29[8]; // [esp+2Ch] [ebp-20h] BYREF v3 = (char *)a1 + 36; v4 = a1; v5 = *((_DWORD *)a1 + 1); v6 = (char *)*((_DWORD *)a1 + 26); *((_DWORD *)a1 + 1) = *((_DWORD *)this + 1); v7 = *((_DWORD *)this + 2); *((_DWORD *)this + 1) = v5; v8 = *((_DWORD *)a1 + 2); *((_DWORD *)a1 + 2) = v7; v9 = *((_DWORD *)this + 3); *((_DWORD *)this + 2) = v8; v10 = *((_DWORD *)a1 + 3); *((_DWORD *)a1 + 3) = v9; v11 = *((_DWORD *)this + 4); *((_DWORD *)this + 3) = v10; v12 = *((_DWORD *)a1 + 4); *((_DWORD *)a1 + 4) = v11; v13 = *((_DWORD *)this + 5); *((_DWORD *)this + 4) = v12; v14 = *((_DWORD *)a1 + 5); *((_DWORD *)a1 + 5) = v13; v15 = *((_DWORD *)this + 6); *((_DWORD *)this + 5) = v14; v16 = *((_DWORD *)a1 + 6); *((_DWORD *)a1 + 6) = v15; v17 = (char *)this + 36; *((_DWORD *)this + 6) = v16; v18 = (char *)*((_DWORD *)this + 26); if ( v6 != (char *)a1 + 36 ) { LABEL_6: if ( v18 != v17 ) { *((_DWORD *)a1 + 26) = v18; *((_DWORD *)this + 26) = v6; goto LABEL_8; } if ( v6 != v3 ) { v19 = a1; a1 = this; goto LABEL_5; } LABEL_4: v3 = (char *)this + 36; v6 = (char *)*((_DWORD *)this + 26); v19 = this; LABEL_5: v28 = a1; v27 = v19; memmove((char *)v19 + 36, (char *)a1 + 36, 0x40u); *((_DWORD *)v28 + 26) = v6; *((_DWORD *)v27 + 26) = v3; LABEL_8: v20 = *((_DWORD *)v4 + 25); *((_DWORD *)v4 + 25) = *((_DWORD *)this + 25); *((_DWORD *)this + 25) = v20; goto LABEL_9; } if ( v18 != v17 ) { if ( v6 == v3 ) goto LABEL_4; goto LABEL_6; } for ( i = 0; i != 8; ++i ) { v23 = *((_DWORD *)v4 + 2 * i + 9); v24 = *((_DWORD *)v4 + 2 * i + 10); v25 = *((_DWORD *)this + 2 * i + 10); *((_DWORD *)v4 + 2 * i + 9) = *((_DWORD *)this + 2 * i + 9); *((_DWORD *)v4 + 2 * i + 10) = v25; *((_DWORD *)this + 2 * i + 9) = v23; *((_DWORD *)this + 2 * i + 10) = v24; } LABEL_9: v21 = (volatile signed __int32 **)((char *)v4 + 108); std::locale::locale((volatile signed __int32 **)v29, v21, Src); std::locale::operator=(v21, (volatile signed __int32 **)this + 27); std::locale::operator=((volatile signed __int32 **)this + 27, (volatile signed __int32 **)v29); std::locale::~locale(v29); } // 525EF9: variable 'Src' is possibly undefined //----- (00525F80) -------------------------------------------------------- void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, char *a2, int *a3) { std::system_error::system_error(this, *a3, a3[1], a2); *this = &off_55FDD8; } // 55FDD8: using guessed type int (*off_55FDD8)(); //----- (00525FC0) -------------------------------------------------------- void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2) { if ( !(_BYTE)`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec && __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((_PVFV)__tcf_0_7); } std::system_error::system_error(this, 1, (int)&`anonymous namespace'::__io_category_instance(void)::__ec, a2); *this = &off_55FDD8; } // 53FCD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); // 55FDD8: using guessed type int (*off_55FDD8)(); //----- (00526030) -------------------------------------------------------- void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2, int *a3) { std::system_error::system_error(this, *a3, a3[1], a2); *this = &off_55FDD8; } // 55FDD8: using guessed type int (*off_55FDD8)(); //----- (00526070) -------------------------------------------------------- void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *Block) { std::exception *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_55FDD8; std::system_error::~system_error(Blocka); operator delete(Block); } // 52607C: variable 'Blocka' is possibly undefined // 55FDD8: using guessed type int (*off_55FDD8)(); //----- (00526090) -------------------------------------------------------- void __cdecl std::ios_base::failure[abi:cxx11]::~failure(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_55FDD8; std::system_error::~system_error(a1); } // 526090: variable 'v1' is possibly undefined // 55FDD8: using guessed type int (*off_55FDD8)(); //----- (005260A0) -------------------------------------------------------- void __userpurge std::ios_base::failure::failure(_DWORD *a1@, std::ios_base::failure *this, const std::string *a3) { const std::string *v3; // [esp+4h] [ebp-54h] *a1 = &off_55FDEC; std::string::string(a1 + 1, this, v3); } // 5260E8: variable 'v3' is possibly undefined // 55FDEC: using guessed type void (__cdecl *off_55FDEC)(std::ios_base::failure *__hidden this); //----- (00526130) -------------------------------------------------------- void __fastcall std::ios_base::failure::~failure(_DWORD *a1) { int v2; // eax int v3; // ecx int v4; // eax std::exception *Block; // [esp+0h] [ebp-2Ch] int v6[3]; // [esp+1Fh] [ebp-Dh] BYREF v2 = _CRT_MT; *a1 = &off_55FDEC; v3 = a1[1]; if ( v2 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; LABEL_5: std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v6); goto LABEL_3; } v4 = *(_DWORD *)(v3 - 4); *(_DWORD *)(v3 - 4) = v4 - 1; if ( v4 <= 0 ) goto LABEL_5; LABEL_3: std::exception::~exception(Block); operator delete(a1); } // 526157: variable 'Block' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55FDEC: using guessed type void (__cdecl *off_55FDEC)(std::ios_base::failure *__hidden this); // 526130: using guessed type int var_D[3]; //----- (005261A0) -------------------------------------------------------- void __cdecl std::ios_base::failure::~failure(std::ios_base::failure *this) { _DWORD *v1; // ecx int v2; // eax int v3; // ecx int v4; // eax int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v2 = _CRT_MT; *v1 = &off_55FDEC; v3 = v1[1]; if ( v2 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_3; } else { v4 = *(_DWORD *)(v3 - 4); *(_DWORD *)(v3 - 4) = v4 - 1; if ( v4 > 0 ) { LABEL_3: std::exception::~exception(this); return; } } std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); std::exception::~exception(this); } // 5261AB: variable 'v1' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; // 55FDEC: using guessed type void (__cdecl *off_55FDEC)(std::ios_base::failure *__hidden this); // 5261A0: using guessed type int var_D[3]; //----- (00526200) -------------------------------------------------------- void __fastcall std::ios_base::ios_base(_DWORD *a1) { _DWORD *v1; // ebx _DWORD *v2; // eax _DWORD *v3; // ecx v1 = a1 + 9; *a1 = &off_560D04; 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; std::locale::locale(v3); } // 560D04: using guessed type void (__cdecl *off_560D04)(std::ios_base *__hidden this); //----- (00526280) -------------------------------------------------------- void __fastcall std::ios_base::~ios_base(int a1) { void *Block; // eax *(_DWORD *)a1 = &off_560D04; std::ios_base::_M_call_callbacks((_DWORD *)a1, 0); std::ios_base::_M_dispose_callbacks(a1); Block = *(void **)(a1 + 104); if ( Block != (void *)(a1 + 36) ) { if ( Block ) operator delete[](Block); *(_DWORD *)(a1 + 104) = 0; } std::locale::~locale((_DWORD **)(a1 + 108)); operator delete((void *)a1); } // 560D04: using guessed type void (__cdecl *off_560D04)(std::ios_base *__hidden this); //----- (005262E0) -------------------------------------------------------- void __fastcall std::ios_base::~ios_base(int a1) { void *Block; // eax *(_DWORD *)a1 = &off_560D04; std::ios_base::_M_call_callbacks((_DWORD *)a1, 0); std::ios_base::_M_dispose_callbacks(a1); Block = *(void **)(a1 + 104); if ( Block != (void *)(a1 + 36) ) { if ( Block ) operator delete[](Block); *(_DWORD *)(a1 + 104) = 0; } std::locale::~locale((_DWORD **)(a1 + 108)); } // 560D04: using guessed type void (__cdecl *off_560D04)(std::ios_base *__hidden this); //----- (00526330) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { this[1] = a4 != 0; *this = &off_560D14; this[2] = std::locale::facet::_S_get_c_locale(); } // 560D14: using guessed type int (*off_560D14)(); //----- (005263D0) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560D14; this[2] = std::locale::facet::_S_get_c_locale(); } // 560D14: using guessed type int (*off_560D14)(); //----- (00526470) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { this[1] = a4 != 0; *this = &off_560D14; this[2] = std::locale::facet::_S_get_c_locale(); } // 560D14: using guessed type int (*off_560D14)(); //----- (00526510) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560D14; this[2] = std::locale::facet::_S_get_c_locale(); } // 560D14: using guessed type int (*off_560D14)(); //----- (005265B0) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_560D14; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 5265EE: variable 'lpfctx' is possibly undefined // 560D14: using guessed type int (*off_560D14)(); //----- (00526610) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560D14; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 52664E: variable 'lpfctx' is possibly undefined // 560D14: using guessed type int (*off_560D14)(); //----- (00526670) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560D14; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 5266AE: variable 'lpfctx' is possibly undefined // 560D14: using guessed type int (*off_560D14)(); //----- (005266D0) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { this[1] = a4 != 0; *this = &off_560D30; this[2] = std::locale::facet::_S_get_c_locale(); } // 560D30: using guessed type int (*off_560D30)(); //----- (00526770) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560D30; this[2] = std::locale::facet::_S_get_c_locale(); } // 560D30: using guessed type int (*off_560D30)(); //----- (00526810) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) { this[1] = a4 != 0; *this = &off_560D30; this[2] = std::locale::facet::_S_get_c_locale(); } // 560D30: using guessed type int (*off_560D30)(); //----- (005268B0) -------------------------------------------------------- void __thiscall std::messages::messages(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560D30; this[2] = std::locale::facet::_S_get_c_locale(); } // 560D30: using guessed type int (*off_560D30)(); //----- (00526950) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *Block) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *Block = &off_560D30; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); operator delete(Block); } // 52698E: variable 'lpfctx' is possibly undefined // 560D30: using guessed type int (*off_560D30)(); //----- (005269B0) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560D30; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 5269EE: variable 'lpfctx' is possibly undefined // 560D30: using guessed type int (*off_560D30)(); //----- (00526A10) -------------------------------------------------------- void __fastcall std::messages::~messages(_DWORD *a1) { struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] *a1 = &off_560D30; std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 526A4E: variable 'lpfctx' is possibly undefined // 560D30: using guessed type int (*off_560D30)(); //----- (00526A70) -------------------------------------------------------- _DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) { _DWORD *v2; // eax char *v3; // esi int i; // eax char *v5; // esi int j; // eax _DWORD *result; // eax _DWORD *v8; // [esp+1Ch] [ebp-10h] v2 = (_DWORD *)this[2]; if ( !v2 ) { v8 = this; v2 = operator new(0x68u); this = v8; v2[1] = 0; *v2 = &off_5605B0; v2[2] = 0; v2[3] = 0; *((_BYTE *)v2 + 16) = 0; v2[5] = 0; v2[6] = 0; v2[7] = 0; v2[8] = 0; *((_WORD *)v2 + 18) = 0; *((_BYTE *)v2 + 100) = 0; v8[2] = v2; } v2[2] = &unk_556C34; v3 = std::__num_base::_S_atoms_out[0]; v2[3] = 0; *((_BYTE *)v2 + 16) = 0; *((_BYTE *)v2 + 36) = 46; *(_BYTE *)(this[2] + 37) = 44; for ( i = 0; i != 36; ++i ) *(_BYTE *)(this[2] + i + 38) = v3[i]; v5 = std::__num_base::_S_atoms_in[0]; for ( j = 0; j != 26; ++j ) *(_BYTE *)(this[2] + j + 74) = v5[j]; result = (_DWORD *)this[2]; result[5] = "true"; result[6] = 4; result[7] = "false"; result[8] = 5; return result; } // 53F580: using guessed type char *std::__num_base::_S_atoms_in[3]; // 53F584: using guessed type char *std::__num_base::_S_atoms_out[2]; // 5605B0: using guessed type int (*off_5605B0)(); //----- (00526B70) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_560D4C; this[2] = a2; std::numpunct::_M_initialize_numpunct(this, 0); } // 560D4C: using guessed type int (*off_560D4C)(); //----- (00526C10) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_560D4C; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, a2); } // 560D4C: using guessed type int (*off_560D4C)(); //----- (00526CA0) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560D4C; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); } // 560D4C: using guessed type int (*off_560D4C)(); //----- (00526D40) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_560D4C; this[2] = a2; std::numpunct::_M_initialize_numpunct(this, 0); } // 560D4C: using guessed type int (*off_560D4C)(); //----- (00526DE0) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_560D4C; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, a2); } // 560D4C: using guessed type int (*off_560D4C)(); //----- (00526E70) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560D4C; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); } // 560D4C: using guessed type int (*off_560D4C)(); //----- (00526F10) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(_DWORD *a1) { std::numpunct::~numpunct(a1); operator delete(a1); } //----- (00526FA0) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(_DWORD *a1) { void *v1; // edx void (__fastcall *v2)(void *); // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] void *Block; // [esp+14h] [ebp-48h] v1 = (void *)a1[2]; *a1 = &off_560D4C; Block = v1; if ( v1 ) { v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); if ( v2 == std::__numpunct_cache::~__numpunct_cache ) { std::__numpunct_cache::~__numpunct_cache((std::locale::facet *)lpfctx); operator delete(Block); } else { v2(v1); } } std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 526FFF: variable 'lpfctx' is possibly undefined // 560D4C: using guessed type int (*off_560D4C)(); //----- (005270A0) -------------------------------------------------------- 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 v2 = (_DWORD *)this[2]; if ( !v2 ) { v7 = operator new(0xA8u); v7[1] = 0; v2 = v7; *v7 = &off_5605C0; 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_556C34; 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_556C40; v2[6] = 4; v2[7] = &off_556C4A; v2[8] = 5; return result; } // 53F580: using guessed type char *std::__num_base::_S_atoms_in[3]; // 53F584: using guessed type char *std::__num_base::_S_atoms_out[2]; // 556C40: using guessed type void *off_556C40; // 556C4A: using guessed type void *off_556C4A; // 5605C0: using guessed type int (*off_5605C0)(); //----- (00527190) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_560D70; this[2] = a2; std::numpunct::_M_initialize_numpunct(this, 0); } // 560D70: using guessed type int (*off_560D70)(); //----- (00527230) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_560D70; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, a2); } // 560D70: using guessed type int (*off_560D70)(); //----- (005272C0) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560D70; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); } // 560D70: using guessed type int (*off_560D70)(); //----- (00527360) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { this[1] = a3 != 0; *this = &off_560D70; this[2] = a2; std::numpunct::_M_initialize_numpunct(this, 0); } // 560D70: using guessed type int (*off_560D70)(); //----- (00527400) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) { *this = &off_560D70; this[2] = 0; this[1] = a3 != 0; std::numpunct::_M_initialize_numpunct(this, a2); } // 560D70: using guessed type int (*off_560D70)(); //----- (00527490) -------------------------------------------------------- void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) { this[1] = a2 != 0; *this = &off_560D70; this[2] = 0; std::numpunct::_M_initialize_numpunct(this, 0); } // 560D70: using guessed type int (*off_560D70)(); //----- (00527530) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(_DWORD *a1) { std::numpunct::~numpunct(a1); operator delete(a1); } //----- (005275C0) -------------------------------------------------------- void __fastcall std::numpunct::~numpunct(_DWORD *a1) { void *v1; // edx void (__fastcall *v2)(void *); // eax struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] void *Block; // [esp+14h] [ebp-48h] v1 = (void *)a1[2]; *a1 = &off_560D70; Block = v1; if ( v1 ) { v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); if ( v2 == std::__numpunct_cache::~__numpunct_cache ) { std::__numpunct_cache::~__numpunct_cache((std::locale::facet *)lpfctx); operator delete(Block); } else { v2(v1); } } std::locale::facet::~facet((std::locale::facet *)lpfctx); } // 52761F: variable 'lpfctx' is possibly undefined // 560D70: using guessed type int (*off_560D70)(); //----- (005276C0) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560D94; result = a2 != 0; this[1] = result; return result; } // 560D94: using guessed type int (*off_560D94)(); //----- (005276E0) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560D94; result = a2 != 0; this[1] = result; return result; } // 560D94: using guessed type int (*off_560D94)(); //----- (00527700) -------------------------------------------------------- void __fastcall std::time_get>::~time_get(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560D94; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52770C: variable 'Blocka' is possibly undefined // 560D94: using guessed type int (*off_560D94)(); //----- (00527720) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560D94; std::locale::facet::~facet(a1); } // 527720: variable 'v1' is possibly undefined // 560D94: using guessed type int (*off_560D94)(); //----- (00527730) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560D94; std::locale::facet::~facet(a1); } // 527730: variable 'v1' is possibly undefined // 560D94: using guessed type int (*off_560D94)(); //----- (00527740) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560DBC; result = a2 != 0; this[1] = result; return result; } // 560DBC: using guessed type int (*off_560DBC)(); //----- (00527760) -------------------------------------------------------- BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560DBC; result = a2 != 0; this[1] = result; return result; } // 560DBC: using guessed type int (*off_560DBC)(); //----- (00527780) -------------------------------------------------------- void __fastcall std::time_get>::~time_get(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560DBC; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52778C: variable 'Blocka' is possibly undefined // 560DBC: using guessed type int (*off_560DBC)(); //----- (005277A0) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560DBC; std::locale::facet::~facet(a1); } // 5277A0: variable 'v1' is possibly undefined // 560DBC: using guessed type int (*off_560DBC)(); //----- (005277B0) -------------------------------------------------------- void __cdecl std::time_get>::~time_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560DBC; std::locale::facet::~facet(a1); } // 5277B0: variable 'v1' is possibly undefined // 560DBC: using guessed type int (*off_560DBC)(); //----- (005277C0) -------------------------------------------------------- BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560DE4; result = a2 != 0; this[1] = result; return result; } // 560DE4: using guessed type int (*off_560DE4)(); //----- (005277E0) -------------------------------------------------------- BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560DE4; result = a2 != 0; this[1] = result; return result; } // 560DE4: using guessed type int (*off_560DE4)(); //----- (00527800) -------------------------------------------------------- void __fastcall std::time_put>::~time_put(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560DE4; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52780C: variable 'Blocka' is possibly undefined // 560DE4: using guessed type int (*off_560DE4)(); //----- (00527820) -------------------------------------------------------- void __cdecl std::time_put>::~time_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560DE4; std::locale::facet::~facet(a1); } // 527820: variable 'v1' is possibly undefined // 560DE4: using guessed type int (*off_560DE4)(); //----- (00527830) -------------------------------------------------------- void __cdecl std::time_put>::~time_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560DE4; std::locale::facet::~facet(a1); } // 527830: variable 'v1' is possibly undefined // 560DE4: using guessed type int (*off_560DE4)(); //----- (00527840) -------------------------------------------------------- BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560DF8; result = a2 != 0; this[1] = result; return result; } // 560DF8: using guessed type int (*off_560DF8)(); //----- (00527860) -------------------------------------------------------- BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560DF8; result = a2 != 0; this[1] = result; return result; } // 560DF8: using guessed type int (*off_560DF8)(); //----- (00527880) -------------------------------------------------------- void __fastcall std::time_put>::~time_put(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560DF8; std::locale::facet::~facet(Blocka); operator delete(Block); } // 52788C: variable 'Blocka' is possibly undefined // 560DF8: using guessed type int (*off_560DF8)(); //----- (005278A0) -------------------------------------------------------- void __cdecl std::time_put>::~time_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560DF8; std::locale::facet::~facet(a1); } // 5278A0: variable 'v1' is possibly undefined // 560DF8: using guessed type int (*off_560DF8)(); //----- (005278B0) -------------------------------------------------------- void __cdecl std::time_put>::~time_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560DF8; std::locale::facet::~facet(a1); } // 5278B0: variable 'v1' is possibly undefined // 560DF8: using guessed type int (*off_560DF8)(); //----- (005278C0) -------------------------------------------------------- void __fastcall std::bad_alloc::~bad_alloc(_DWORD *a1) { std::exception *Block; // [esp+0h] [ebp-1Ch] *a1 = &off_560E0C; std::exception::~exception(Block); operator delete(a1); } // 5278CC: variable 'Block' is possibly undefined // 560E0C: using guessed type void (__cdecl *off_560E0C)(std::bad_alloc *__hidden this); //----- (005278F0) -------------------------------------------------------- void __cdecl std::bad_alloc::~bad_alloc(std::exception *a1) { _DWORD *v1; // ecx *v1 = &off_560E0C; std::exception::~exception(a1); } // 5278F0: variable 'v1' is possibly undefined // 560E0C: using guessed type void (__cdecl *off_560E0C)(std::bad_alloc *__hidden this); //----- (00527900) -------------------------------------------------------- int __thiscall std::ios::exceptions(_DWORD *this, int a2) { bool v2; // zf int v3; // edx int result; // eax v2 = this[30] == 0; v3 = this[5]; result = a2; this[4] = a2; if ( v2 ) { v3 |= 1u; this[5] = v3; } if ( (v3 & a2) != 0 ) std::__throw_ios_failure("basic_ios::clear"); return result; } //----- (00527940) -------------------------------------------------------- int __thiscall std::ios::_M_setstate(_DWORD *this, int a2) { int result; // eax this[5] |= a2; result = this[4] & a2; if ( result ) __cxa_rethrow(); return result; } //----- (00527960) -------------------------------------------------------- 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; } //----- (00527A00) -------------------------------------------------------- int __thiscall std::ios::tie(_DWORD *this, int a2) { int result; // eax result = this[28]; this[28] = a2; return result; } //----- (00527A10) -------------------------------------------------------- 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; } //----- (00527A90) -------------------------------------------------------- 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; } //----- (00527AE0) -------------------------------------------------------- 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; } // 527AEE: variable 'v5' is possibly undefined //----- (00527B30) -------------------------------------------------------- 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; } // 527B3E: variable 'v5' is possibly undefined //----- (00527B80) -------------------------------------------------------- void __thiscall std::ios::swap(int this, std::ios_base *a2) { int v3; // eax char v4; // dl char v5; // dl std::ios_base *v6; // [esp+4h] [ebp-58h] std::ios_base::_M_swap((std::ios_base *)this, a2, v6); 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); *((_DWORD *)a2 + 28) = v3; v4 = *(_BYTE *)(this + 116); *(_BYTE *)(this + 116) = *((_BYTE *)a2 + 116); LOBYTE(v3) = *((_BYTE *)a2 + 117); *((_BYTE *)a2 + 116) = v4; v5 = *(_BYTE *)(this + 117); *(_BYTE *)(this + 117) = v3; *((_BYTE *)a2 + 117) = v5; } // 527BAD: variable 'v6' is possibly undefined //----- (00527C20) -------------------------------------------------------- int __thiscall std::ios::clear(_DWORD *this, int a2) { int v2; // eax int result; // eax v2 = a2; if ( !this[30] ) v2 = a2 | 1; this[5] = v2; result = this[4] & v2; if ( result ) std::__throw_ios_failure("basic_ios::clear"); return result; } //----- (00527C60) -------------------------------------------------------- volatile signed __int32 **__thiscall std::ios::imbue( volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3) { volatile signed __int32 *v3; // edx const std::locale *v5; // [esp+4h] [ebp-64h] const std::locale *v6; // [esp+4h] [ebp-64h] volatile signed __int32 **v7; // [esp+10h] [ebp-58h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] _DWORD *v10[3]; // [esp+5Ch] [ebp-Ch] BYREF std::locale::locale(this, a2 + 27, v5); std::ios_base::imbue((volatile signed __int32 **)v10, a2, a3); std::locale::~locale(v10); std::ios::_M_cache_locale(a2, (int)a3); v3 = a2[30]; if ( v3 ) { lpuexcpt = (struct _Unwind_Exception *)a2[30]; v7 = (volatile signed __int32 **)(v3 + 7); std::locale::locale((volatile signed __int32 **)v10, (volatile signed __int32 **)v3 + 7, v6); (*(void (__thiscall **)(struct _Unwind_Exception *, volatile signed __int32 **))(*(_DWORD *)lpuexcpt + 8))( lpuexcpt, a3); std::locale::operator=(v7, a3); std::locale::~locale(v10); } return this; } // 527C9B: variable 'v5' is possibly undefined // 527CF4: variable 'v6' is possibly undefined //----- (00527D80) -------------------------------------------------------- int __thiscall std::ios::rdbuf(_DWORD *this, int a2) { int v2; // edx v2 = this[30]; this[30] = a2; this[5] = a2 == 0; if ( (this[4] & (a2 == 0)) != 0 ) std::__throw_ios_failure("basic_ios::clear"); return v2; } //----- (00527DC0) -------------------------------------------------------- int __thiscall std::ios::copyfmt(int this, _DWORD *a2) { _DWORD *v3; // esi int v4; // eax _DWORD *v5; // edx void *v6; // ebp int v7; // edi void *Block; // eax _DWORD *v9; // edx int v10; // ebp int v11; // ecx int v12; // eax int v13; // esi int v14; // eax bool v15; // zf char v16; // dl int v17; // eax int v18; // ecx int v19; // edx _DWORD *v21; // eax int v22; // ecx _BYTE *v24; // edi _BYTE *v25; // edi int (__stdcall *v26)(unsigned __int8); // eax int (__stdcall *v27)(unsigned __int8); // eax const std::locale *v28; // [esp+4h] [ebp-48h] _DWORD *v29; // [esp+1Ch] [ebp-30h] _DWORD *v30; // [esp+1Ch] [ebp-30h] unsigned __int8 v31; // [esp+1Ch] [ebp-30h] _DWORD *v32[8]; // [esp+2Ch] [ebp-20h] BYREF v3 = a2; if ( (_DWORD *)this == a2 ) return this; v4 = a2[25]; if ( v4 > 8 ) { if ( v4 > 0xFFFFFFF ) __cxa_throw_bad_array_new_length(); v6 = (void *)(this + 36); v21 = (_DWORD *)operator new[](8 * v4); v5 = v21; v22 = a2[25] - 1; if ( v22 >= 0 ) { do { *v21 = 0; v21 += 2; *(v21 - 1) = 0; } while ( v22-- != 0 ); } } else { v5 = (_DWORD *)(this + 36); v6 = (void *)(this + 36); } v7 = a2[6]; if ( v7 ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)(v7 + 12), 1u); else ++*(_DWORD *)(v7 + 12); } v29 = v5; std::ios_base::_M_call_callbacks((_DWORD *)this, 0); Block = *(void **)(this + 104); v9 = v29; if ( Block != v6 ) { if ( Block ) { operator delete[](Block); v9 = v29; } *(_DWORD *)(this + 104) = 0; } v30 = 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); v30[v12] = *(_DWORD *)(v11 + v12 * 4); v30[v12 + 1] = v13; v12 += 2; } while ( v12 != 2 * v10 ); v3 = a2; } v14 = v3[3]; v15 = *((_BYTE *)v3 + 117) == 0; *(_DWORD *)(this + 104) = v30; *(_DWORD *)(this + 100) = v10; *(_DWORD *)(this + 12) = v14; *(_DWORD *)(this + 8) = v3[2]; *(_DWORD *)(this + 4) = v3[1]; *(_DWORD *)(this + 112) = v3[28]; if ( v15 ) { v24 = (_BYTE *)v3[31]; if ( !v24 ) goto LABEL_38; if ( v24[28] ) { v16 = v24[61]; } else { std::ctype::_M_widen_init(v3[31]); v16 = 32; v27 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v24 + 24); if ( v27 != std::ctype::do_widen ) v16 = ((int (__fastcall *)(_BYTE *, int, int))v27)(v24, 32, 32); } *((_BYTE *)v3 + 116) = v16; *((_BYTE *)v3 + 117) = 1; if ( *(_BYTE *)(this + 117) ) goto LABEL_17; LABEL_29: v25 = *(_BYTE **)(this + 124); if ( v25 ) { if ( !v25[28] ) { v31 = v16; std::ctype::_M_widen_init(*(_DWORD *)(this + 124)); v16 = v31; v26 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v25 + 24); if ( v26 != std::ctype::do_widen ) { ((void (__fastcall *)(_BYTE *, _DWORD, int))v26)(v25, v31, 32); v16 = v31; } } *(_BYTE *)(this + 117) = 1; goto LABEL_17; } LABEL_38: std::__throw_bad_cast(); } v16 = *((_BYTE *)v3 + 116); if ( !*(_BYTE *)(this + 117) ) goto LABEL_29; LABEL_17: *(_BYTE *)(this + 116) = v16; std::locale::locale((volatile signed __int32 **)v32, (volatile signed __int32 **)v3 + 27, v28); std::locale::operator=((volatile signed __int32 **)(this + 108), (volatile signed __int32 **)v32); std::locale::~locale(v32); std::ios::_M_cache_locale((_DWORD *)this, this + 108); std::ios_base::_M_call_callbacks((_DWORD *)this, 2); v17 = v3[4]; v18 = *(_DWORD *)(this + 120); v19 = *(_DWORD *)(this + 20); *(_DWORD *)(this + 16) = v17; if ( !v18 ) { v19 |= 1u; *(_DWORD *)(this + 20) = v19; } if ( (v17 & v19) != 0 ) std::__throw_ios_failure("basic_ios::clear"); return this; } // 527ECD: variable 'v28' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (00528060) -------------------------------------------------------- int __thiscall std::ios::setstate(_DWORD *this, int a2) { int v2; // eax int result; // eax v2 = this[5] | a2; if ( !this[30] ) v2 |= 1u; this[5] = v2; result = this[4] & v2; if ( result ) std::__throw_ios_failure("basic_ios::clear"); return result; } //----- (005280A0) -------------------------------------------------------- int __thiscall std::ios::set_rdbuf(_DWORD *this, int a2) { int result; // eax result = a2; this[30] = a2; return result; } //----- (005280B0) -------------------------------------------------------- void __thiscall std::ios::basic_ios(int this, int a2) { std::ios_base::ios_base((_DWORD *)this); *(_WORD *)(this + 116) = 0; *(_DWORD *)this = &off_560E20; *(_DWORD *)(this + 112) = 0; *(_DWORD *)(this + 120) = 0; *(_DWORD *)(this + 124) = 0; *(_DWORD *)(this + 128) = 0; *(_DWORD *)(this + 132) = 0; std::ios_base::_M_init(this); std::ios::_M_cache_locale((_DWORD *)this, this + 108); *(_WORD *)(this + 116) = 0; *(_DWORD *)(this + 112) = 0; *(_DWORD *)(this + 120) = a2; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = a2 == 0; } // 560E20: using guessed type int (*off_560E20)(); //----- (005281A0) -------------------------------------------------------- int __fastcall std::ios::basic_ios(int a1) { int result; // eax std::ios_base::ios_base((_DWORD *)a1); result = 0; *(_DWORD *)a1 = &off_560E20; *(_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; } // 560E20: using guessed type int (*off_560E20)(); //----- (005281F0) -------------------------------------------------------- void __thiscall std::ios::basic_ios(int this, int a2) { std::ios_base::ios_base((_DWORD *)this); *(_WORD *)(this + 116) = 0; *(_DWORD *)this = &off_560E20; *(_DWORD *)(this + 112) = 0; *(_DWORD *)(this + 120) = 0; *(_DWORD *)(this + 124) = 0; *(_DWORD *)(this + 128) = 0; *(_DWORD *)(this + 132) = 0; std::ios_base::_M_init(this); std::ios::_M_cache_locale((_DWORD *)this, this + 108); *(_WORD *)(this + 116) = 0; *(_DWORD *)(this + 112) = 0; *(_DWORD *)(this + 120) = a2; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = a2 == 0; } // 560E20: using guessed type int (*off_560E20)(); //----- (005282E0) -------------------------------------------------------- int __fastcall std::ios::basic_ios(int a1) { int result; // eax std::ios_base::ios_base((_DWORD *)a1); result = 0; *(_DWORD *)a1 = &off_560E20; *(_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; } // 560E20: using guessed type int (*off_560E20)(); //----- (00528330) -------------------------------------------------------- void __fastcall std::ios::~ios(_DWORD *Block) { *Block = &off_560E20; std::ios_base::~ios_base((int)Block); operator delete(Block); } // 560E20: using guessed type int (*off_560E20)(); //----- (00528350) -------------------------------------------------------- void __fastcall std::ios::~ios(int a1) { *(_DWORD *)a1 = &off_560E20; std::ios_base::~ios_base(a1); } // 560E20: using guessed type int (*off_560E20)(); //----- (00528360) -------------------------------------------------------- void __fastcall std::ios::~ios(int a1) { *(_DWORD *)a1 = &off_560E20; std::ios_base::~ios_base(a1); } // 560E20: using guessed type int (*off_560E20)(); //----- (00528370) -------------------------------------------------------- int __thiscall std::wios::exceptions(_DWORD *this, int a2) { bool v2; // zf int v3; // edx int result; // eax v2 = this[30] == 0; v3 = this[5]; result = a2; this[4] = a2; if ( v2 ) { v3 |= 1u; this[5] = v3; } if ( (v3 & a2) != 0 ) std::__throw_ios_failure("basic_ios::clear"); return result; } //----- (005283B0) -------------------------------------------------------- int __thiscall std::wios::_M_setstate(_DWORD *this, int a2) { int result; // eax this[5] |= a2; result = this[4] & a2; if ( result ) __cxa_rethrow(); return result; } //----- (005283D0) -------------------------------------------------------- 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; } //----- (00528470) -------------------------------------------------------- int __thiscall std::wios::tie(_DWORD *this, int a2) { int result; // eax result = this[28]; this[28] = a2; return result; } //----- (00528480) -------------------------------------------------------- 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; } //----- (005284E0) -------------------------------------------------------- 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; } //----- (00528530) -------------------------------------------------------- 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; } // 52853E: variable 'v5' is possibly undefined //----- (00528590) -------------------------------------------------------- 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; } // 52859E: variable 'v5' is possibly undefined //----- (005285F0) -------------------------------------------------------- void __thiscall std::wios::swap(int this, std::ios_base *a2) { int v3; // eax __int16 v4; // dx std::ios_base *v5; // [esp+4h] [ebp-58h] std::ios_base::_M_swap((std::ios_base *)this, a2, v5); 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 *)(this + 118); *((_WORD *)a2 + 58) = v3; *(_BYTE *)(this + 118) = *((_BYTE *)a2 + 118); *((_BYTE *)a2 + 118) = v4; } // 52861D: variable 'v5' is possibly undefined //----- (00528690) -------------------------------------------------------- int __thiscall std::wios::clear(_DWORD *this, int a2) { int v2; // eax int result; // eax v2 = a2; if ( !this[30] ) v2 = a2 | 1; this[5] = v2; result = this[4] & v2; if ( result ) std::__throw_ios_failure("basic_ios::clear"); return result; } //----- (005286D0) -------------------------------------------------------- volatile signed __int32 **__thiscall std::wios::imbue( volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3) { volatile signed __int32 *v3; // edx const std::locale *v5; // [esp+4h] [ebp-64h] const std::locale *v6; // [esp+4h] [ebp-64h] volatile signed __int32 **v7; // [esp+10h] [ebp-58h] struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] _DWORD *v10[3]; // [esp+5Ch] [ebp-Ch] BYREF std::locale::locale(this, a2 + 27, v5); std::ios_base::imbue((volatile signed __int32 **)v10, a2, a3); std::locale::~locale(v10); std::wios::_M_cache_locale(a2, (int)a3); v3 = a2[30]; if ( v3 ) { lpuexcpt = (struct _Unwind_Exception *)a2[30]; v7 = (volatile signed __int32 **)(v3 + 7); std::locale::locale((volatile signed __int32 **)v10, (volatile signed __int32 **)v3 + 7, v6); (*(void (__thiscall **)(struct _Unwind_Exception *, volatile signed __int32 **))(*(_DWORD *)lpuexcpt + 8))( lpuexcpt, a3); std::locale::operator=(v7, a3); std::locale::~locale(v10); } return this; } // 52870B: variable 'v5' is possibly undefined // 528764: variable 'v6' is possibly undefined //----- (005287F0) -------------------------------------------------------- int __thiscall std::wios::rdbuf(_DWORD *this, int a2) { int v2; // edx v2 = this[30]; this[30] = a2; this[5] = a2 == 0; if ( (this[4] & (a2 == 0)) != 0 ) std::__throw_ios_failure("basic_ios::clear"); return v2; } //----- (00528830) -------------------------------------------------------- int __thiscall std::wios::copyfmt(int this, _DWORD *a2) { _DWORD *v3; // esi int v4; // eax _DWORD *v5; // edx void *v6; // ebp int v7; // edi void *Block; // eax _DWORD *v9; // edx int v10; // ebp int v11; // ecx int v12; // eax int v13; // esi int v14; // eax bool v15; // zf __int16 v16; // di int v17; // eax int v18; // ecx int v19; // edx _DWORD *v21; // eax int v22; // ecx int v23; // ecx __int16 v24; // ax int v25; // ecx const std::locale *v26; // [esp+8h] [ebp-48h] _DWORD *v27; // [esp+20h] [ebp-30h] _DWORD *v28; // [esp+20h] [ebp-30h] _DWORD *v29[8]; // [esp+30h] [ebp-20h] BYREF v3 = a2; if ( (_DWORD *)this == a2 ) return this; v4 = a2[25]; if ( v4 > 8 ) { if ( v4 > 0xFFFFFFF ) __cxa_throw_bad_array_new_length(); v6 = (void *)(this + 36); v21 = (_DWORD *)operator new[](8 * v4); v5 = v21; v22 = a2[25] - 1; if ( v22 >= 0 ) { do { --v22; *v21 = 0; v21 += 2; *(v21 - 1) = 0; } while ( v22 != -1 ); } } else { v5 = (_DWORD *)(this + 36); v6 = (void *)(this + 36); } v7 = a2[6]; if ( v7 ) { if ( _CRT_MT ) _InterlockedAdd((volatile signed __int32 *)(v7 + 12), 1u); else ++*(_DWORD *)(v7 + 12); } v27 = v5; std::ios_base::_M_call_callbacks((_DWORD *)this, 0); Block = *(void **)(this + 104); v9 = v27; if ( Block != v6 ) { if ( Block ) { operator delete[](Block); v9 = v27; } *(_DWORD *)(this + 104) = 0; } v28 = 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); v28[v12] = *(_DWORD *)(v11 + v12 * 4); v28[v12 + 1] = v13; v12 += 2; } while ( v12 != 2 * v10 ); v3 = a2; } v14 = v3[3]; v15 = *((_BYTE *)v3 + 118) == 0; *(_DWORD *)(this + 104) = v28; *(_DWORD *)(this + 100) = v10; *(_DWORD *)(this + 12) = v14; *(_DWORD *)(this + 8) = v3[2]; *(_DWORD *)(this + 4) = v3[1]; *(_DWORD *)(this + 112) = v3[28]; if ( v15 ) { v23 = v3[31]; if ( !v23 ) goto LABEL_30; v24 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v23 + 40))(v23, 32); *((_BYTE *)v3 + 118) = 1; v15 = *(_BYTE *)(this + 118) == 0; *((_WORD *)v3 + 58) = v24; v16 = v24; if ( !v15 ) goto LABEL_17; LABEL_27: v25 = *(_DWORD *)(this + 124); if ( v25 ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v25 + 40))(v25, 32); *(_BYTE *)(this + 118) = 1; goto LABEL_17; } LABEL_30: std::__throw_bad_cast(); } v16 = *((_WORD *)v3 + 58); if ( !*(_BYTE *)(this + 118) ) goto LABEL_27; LABEL_17: *(_WORD *)(this + 116) = v16; std::locale::locale((volatile signed __int32 **)v29, (volatile signed __int32 **)v3 + 27, v26); std::locale::operator=((volatile signed __int32 **)(this + 108), (volatile signed __int32 **)v29); std::locale::~locale(v29); std::wios::_M_cache_locale((_DWORD *)this, this + 108); std::ios_base::_M_call_callbacks((_DWORD *)this, 2); v17 = v3[4]; v18 = *(_DWORD *)(this + 120); v19 = *(_DWORD *)(this + 20); *(_DWORD *)(this + 16) = v17; if ( !v18 ) { v19 |= 1u; *(_DWORD *)(this + 20) = v19; } if ( (v19 & v17) != 0 ) std::__throw_ios_failure("basic_ios::clear"); return this; } // 52893E: variable 'v26' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (00528A70) -------------------------------------------------------- int __thiscall std::wios::setstate(_DWORD *this, int a2) { int v2; // eax int result; // eax v2 = this[5] | a2; if ( !this[30] ) v2 |= 1u; this[5] = v2; result = this[4] & v2; if ( result ) std::__throw_ios_failure("basic_ios::clear"); return result; } //----- (00528AB0) -------------------------------------------------------- int __thiscall std::wios::set_rdbuf(_DWORD *this, int a2) { int result; // eax result = a2; this[30] = a2; return result; } //----- (00528AC0) -------------------------------------------------------- void __thiscall std::wios::basic_ios(int this, int a2) { std::ios_base::ios_base((_DWORD *)this); *(_WORD *)(this + 116) = 0; *(_DWORD *)this = &off_560E30; *(_DWORD *)(this + 112) = 0; *(_BYTE *)(this + 118) = 0; *(_DWORD *)(this + 120) = 0; *(_DWORD *)(this + 124) = 0; *(_DWORD *)(this + 128) = 0; *(_DWORD *)(this + 132) = 0; std::ios_base::_M_init(this); std::wios::_M_cache_locale((_DWORD *)this, this + 108); *(_WORD *)(this + 116) = 0; *(_BYTE *)(this + 118) = 0; *(_DWORD *)(this + 120) = a2; *(_DWORD *)(this + 112) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = a2 == 0; } // 560E30: using guessed type int (*off_560E30)(); //----- (00528BB0) -------------------------------------------------------- int __fastcall std::wios::basic_ios(int a1) { int result; // eax std::ios_base::ios_base((_DWORD *)a1); result = 0; *(_DWORD *)a1 = &off_560E30; *(_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; } // 560E30: using guessed type int (*off_560E30)(); //----- (00528C00) -------------------------------------------------------- void __thiscall std::wios::basic_ios(int this, int a2) { std::ios_base::ios_base((_DWORD *)this); *(_WORD *)(this + 116) = 0; *(_DWORD *)this = &off_560E30; *(_DWORD *)(this + 112) = 0; *(_BYTE *)(this + 118) = 0; *(_DWORD *)(this + 120) = 0; *(_DWORD *)(this + 124) = 0; *(_DWORD *)(this + 128) = 0; *(_DWORD *)(this + 132) = 0; std::ios_base::_M_init(this); std::wios::_M_cache_locale((_DWORD *)this, this + 108); *(_WORD *)(this + 116) = 0; *(_BYTE *)(this + 118) = 0; *(_DWORD *)(this + 120) = a2; *(_DWORD *)(this + 112) = 0; *(_DWORD *)(this + 16) = 0; *(_DWORD *)(this + 20) = a2 == 0; } // 560E30: using guessed type int (*off_560E30)(); //----- (00528CF0) -------------------------------------------------------- int __fastcall std::wios::basic_ios(int a1) { int result; // eax std::ios_base::ios_base((_DWORD *)a1); result = 0; *(_DWORD *)a1 = &off_560E30; *(_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; } // 560E30: using guessed type int (*off_560E30)(); //----- (00528D40) -------------------------------------------------------- void __fastcall std::wios::~wios(_DWORD *Block) { *Block = &off_560E30; std::ios_base::~ios_base((int)Block); operator delete(Block); } // 560E30: using guessed type int (*off_560E30)(); //----- (00528D60) -------------------------------------------------------- void __fastcall std::wios::~wios(int a1) { *(_DWORD *)a1 = &off_560E30; std::ios_base::~ios_base(a1); } // 560E30: using guessed type int (*off_560E30)(); //----- (00528D70) -------------------------------------------------------- void __fastcall std::wios::~wios(int a1) { *(_DWORD *)a1 = &off_560E30; std::ios_base::~ios_base(a1); } // 560E30: using guessed type int (*off_560E30)(); //----- (00528D80) -------------------------------------------------------- void __fastcall std::exception::~exception(void *Block) { operator delete(Block); } //----- (00528DB0) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560E54; result = a2 != 0; this[1] = result; return result; } // 560E54: using guessed type int (*off_560E54)(); //----- (00528DD0) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560E54; result = a2 != 0; this[1] = result; return result; } // 560E54: using guessed type int (*off_560E54)(); //----- (00528DF0) -------------------------------------------------------- void __fastcall std::money_get>::~money_get(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560E54; std::locale::facet::~facet(Blocka); operator delete(Block); } // 528DFC: variable 'Blocka' is possibly undefined // 560E54: using guessed type int (*off_560E54)(); //----- (00528E10) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560E54; std::locale::facet::~facet(a1); } // 528E10: variable 'v1' is possibly undefined // 560E54: using guessed type int (*off_560E54)(); //----- (00528E20) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560E54; std::locale::facet::~facet(a1); } // 528E20: variable 'v1' is possibly undefined // 560E54: using guessed type int (*off_560E54)(); //----- (00528E30) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560E6C; result = a2 != 0; this[1] = result; return result; } // 560E6C: using guessed type int (*off_560E6C)(); //----- (00528E50) -------------------------------------------------------- BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560E6C; result = a2 != 0; this[1] = result; return result; } // 560E6C: using guessed type int (*off_560E6C)(); //----- (00528E70) -------------------------------------------------------- void __fastcall std::money_get>::~money_get(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560E6C; std::locale::facet::~facet(Blocka); operator delete(Block); } // 528E7C: variable 'Blocka' is possibly undefined // 560E6C: using guessed type int (*off_560E6C)(); //----- (00528E90) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560E6C; std::locale::facet::~facet(a1); } // 528E90: variable 'v1' is possibly undefined // 560E6C: using guessed type int (*off_560E6C)(); //----- (00528EA0) -------------------------------------------------------- void __cdecl std::money_get>::~money_get(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560E6C; std::locale::facet::~facet(a1); } // 528EA0: variable 'v1' is possibly undefined // 560E6C: using guessed type int (*off_560E6C)(); //----- (00528EB0) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560E84; result = a2 != 0; this[1] = result; return result; } // 560E84: using guessed type int (*off_560E84)(); //----- (00528ED0) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560E84; result = a2 != 0; this[1] = result; return result; } // 560E84: using guessed type int (*off_560E84)(); //----- (00528EF0) -------------------------------------------------------- void __fastcall std::money_put>::~money_put(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560E84; std::locale::facet::~facet(Blocka); operator delete(Block); } // 528EFC: variable 'Blocka' is possibly undefined // 560E84: using guessed type int (*off_560E84)(); //----- (00528F10) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560E84; std::locale::facet::~facet(a1); } // 528F10: variable 'v1' is possibly undefined // 560E84: using guessed type int (*off_560E84)(); //----- (00528F20) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560E84; std::locale::facet::~facet(a1); } // 528F20: variable 'v1' is possibly undefined // 560E84: using guessed type int (*off_560E84)(); //----- (00528F30) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560E9C; result = a2 != 0; this[1] = result; return result; } // 560E9C: using guessed type int (*off_560E9C)(); //----- (00528F50) -------------------------------------------------------- BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) { BOOL result; // eax *this = &off_560E9C; result = a2 != 0; this[1] = result; return result; } // 560E9C: using guessed type int (*off_560E9C)(); //----- (00528F70) -------------------------------------------------------- void __fastcall std::money_put>::~money_put(_DWORD *Block) { std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] *Block = &off_560E9C; std::locale::facet::~facet(Blocka); operator delete(Block); } // 528F7C: variable 'Blocka' is possibly undefined // 560E9C: using guessed type int (*off_560E9C)(); //----- (00528F90) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560E9C; std::locale::facet::~facet(a1); } // 528F90: variable 'v1' is possibly undefined // 560E9C: using guessed type int (*off_560E9C)(); //----- (00528FA0) -------------------------------------------------------- void __cdecl std::money_put>::~money_put(std::locale::facet *a1) { _DWORD *v1; // ecx *v1 = &off_560E9C; std::locale::facet::~facet(a1); } // 528FA0: variable 'v1' is possibly undefined // 560E9C: using guessed type int (*off_560E9C)(); //----- (00528FB0) -------------------------------------------------------- void __fastcall std::type_info::~type_info(void *Block) { operator delete(Block); } //----- (00528FE0) -------------------------------------------------------- void __cdecl std::__pop_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( int a1, int a2, unsigned __int8 **a3, int (__cdecl **a4)(int, int)) { void *v4[34]; // [esp+60h] [ebp-118h] BYREF void *v5[36]; // [esp+E8h] [ebp-90h] 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&)>>( a1, 0, -252645135 * ((a2 - a1) >> 3), v5, *a4); std::pair::~pair(v5); std::pair::~pair(v4); } //----- (00529100) -------------------------------------------------------- void __noreturn std::unexpected(void) { __cxxabiv1::__unexpected(__cxxabiv1::__unexpected_handler); } //----- (00529110) -------------------------------------------------------- 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, int (__cdecl **a3)(int, int)) { int v3; // [esp+24h] [ebp-154h] int lpuexcpt; // [esp+28h] [ebp-150h] void *v5[34]; // [esp+60h] [ebp-118h] BYREF void *v6[36]; // [esp+E8h] [ebp-90h] BYREF if ( a2 - a1 > 136 ) { v3 = -252645135 * ((a2 - a1) >> 3); for ( lpuexcpt = (v3 - 2) / 2; ; --lpuexcpt ) { std::pair::pair(v5, (_DWORD *)(a1 + 136 * lpuexcpt)); 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, lpuexcpt, v3, v6, *a3); std::pair::~pair(v6); if ( !lpuexcpt ) break; std::pair::~pair(v5); } std::pair::~pair(v5); } } //----- (00529270) -------------------------------------------------------- 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, int (__cdecl *a5)(int, int)) { int i; // eax bool v6; // zf int v7; // eax int v8; // eax int v9; // [esp+24h] [ebp-D4h] int v10; // [esp+24h] [ebp-D4h] int v11; // [esp+24h] [ebp-D4h] int lpuexcpt; // [esp+28h] [ebp-D0h] void *v13[36]; // [esp+68h] [ebp-90h] BYREF for ( i = a2; ; i = v10 ) { lpuexcpt = i; if ( (a3 - 1) / 2 <= i ) break; v9 = 2 * (i + 1); v6 = (unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( a5, a1 + 272 * (i + 1), a1 + 136 * (v9 - 1)) == 0; v7 = v9 - 1; if ( v6 ) v7 = v9; v10 = v7; std::pair::operator=((unsigned __int8 **)(a1 + 136 * lpuexcpt), a1 + 136 * v7); } if ( (a3 & 1) == 0 && (a3 - 2) / 2 == i ) { std::pair::operator=((unsigned __int8 **)(a1 + 136 * i), a1 + 136 * (2 * i + 1)); lpuexcpt = 2 * lpuexcpt + 1; } std::pair::pair(v13, a4); v8 = lpuexcpt - 1; while ( 1 ) { v11 = v8 / 2; if ( a2 >= lpuexcpt || !((unsigned __int8 (__fastcall *)(int, int, int, void **))a5)(2, v8 % 2, a1 + 136 * v11, v13) ) break; std::pair::operator=((unsigned __int8 **)(a1 + 136 * lpuexcpt), a1 + 136 * v11); v8 = v11 - 1; lpuexcpt = v11; } std::pair::operator=((unsigned __int8 **)(a1 + 136 * lpuexcpt), (int)v13); std::pair::~pair(v13); } //----- (005294C0) -------------------------------------------------------- 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; } //----- (00529570) -------------------------------------------------------- int __cdecl std::__int_to_char( _BYTE *a1, unsigned int a2, unsigned int a3, int a4, __int16 a5, char a6) { unsigned __int64 v6; // rdi _BYTE *v7; // ebx unsigned __int64 v8; // kr00_8 char v10; // al char v11; // al unsigned __int64 v12; // [esp+18h] [ebp-24h] v6 = __PAIR64__(a2, a3); if ( a6 ) { v7 = a1; do { --v7; v12 = __PAIR64__(v6, HIDWORD(v6)); *v7 = *(_BYTE *)(a4 + __PAIR64__(v6, HIDWORD(v6)) % 0xA + 4); v8 = __PAIR64__(v6, HIDWORD(v6)) / 0xA; LODWORD(v6) = (__PAIR64__(v6, HIDWORD(v6)) / 0xA) >> 32; HIDWORD(v6) = v8; } while ( v12 > 9 ); } else if ( (a5 & 0x4A) == 64 ) { v7 = a1; do { v11 = BYTE4(v6); HIDWORD(v6) = __PAIR64__(v6, HIDWORD(v6)) >> 3; --v7; LODWORD(v6) = (unsigned int)v6 >> 3; *v7 = *(_BYTE *)(a4 + (v11 & 7) + 4); } while ( v6 ); } else { v7 = a1; do { v10 = BYTE4(v6); HIDWORD(v6) = __PAIR64__(v6, HIDWORD(v6)) >> 4; --v7; LODWORD(v6) = (unsigned int)v6 >> 4; *v7 = *(_BYTE *)(a4 + ((a5 & 0x4000) == 0 ? 0xFFFFFFF0 : 0) + 20 + (v10 & 0xF)); } while ( v6 ); } return a1 - v7; } //----- (00529670) -------------------------------------------------------- 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; } //----- (00529730) -------------------------------------------------------- int __cdecl std::__int_to_char( _WORD *a1, unsigned int a2, unsigned int a3, int a4, __int16 a5, char a6) { unsigned __int64 v6; // rdi _WORD *v7; // ebx unsigned __int64 v8; // kr00_8 char v10; // al char v11; // al unsigned __int64 v12; // [esp+18h] [ebp-24h] v6 = __PAIR64__(a2, a3); if ( a6 ) { v7 = a1; do { --v7; v12 = __PAIR64__(v6, HIDWORD(v6)); *v7 = *(_WORD *)(a4 + 2 * (__PAIR64__(v6, HIDWORD(v6)) % 0xA) + 8); v8 = __PAIR64__(v6, HIDWORD(v6)) / 0xA; LODWORD(v6) = (__PAIR64__(v6, HIDWORD(v6)) / 0xA) >> 32; HIDWORD(v6) = v8; } while ( v12 > 9 ); } else if ( (a5 & 0x4A) == 64 ) { v7 = a1; do { v11 = BYTE4(v6); HIDWORD(v6) = __PAIR64__(v6, HIDWORD(v6)) >> 3; --v7; LODWORD(v6) = (unsigned int)v6 >> 3; *v7 = *(_WORD *)(a4 + 2 * (v11 & 7) + 8); } while ( v6 ); } else { v7 = a1; do { v10 = BYTE4(v6); HIDWORD(v6) = __PAIR64__(v6, HIDWORD(v6)) >> 4; --v7; LODWORD(v6) = (unsigned int)v6 >> 4; *v7 = *(_WORD *)(a4 + 2 * (((a5 & 0x4000) == 0 ? 4 : 20) + (v10 & 0xF))); } while ( v6 ); } return a1 - v7; } //----- (00529840) -------------------------------------------------------- void (*std::get_terminate(void))(void) { return __cxxabiv1::__terminate_handler; } //----- (00529850) -------------------------------------------------------- __int32 __cdecl std::set_terminate(void (__noreturn *a1)(void)) { void (__noreturn *v1)(void); // eax v1 = a1; if ( !a1 ) v1 = __gnu_cxx::__verbose_terminate_handler; return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__terminate_handler, (__int32)v1); } //----- (00529870) -------------------------------------------------------- _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; // edx int v9; // ecx unsigned int v10; // ebx char *v11; // edi int v12; // ebx int v13; // ebp _BYTE *result; // eax _BYTE *v15; // edi int v16; // ecx _BYTE *v17; // esi bool v18; // cf _BYTE *v19; // edi int v20; // ecx _BYTE *v21; // esi char *v22; // [esp+0h] [ebp-20h] int v23; // [esp+8h] [ebp-18h] unsigned int v24; // [esp+Ch] [ebp-14h] _BYTE *v25; // [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; v12 = -1; v13 = -1; v23 = 0; v24 = 0; v22 = a3; goto LABEL_10; } v23 = 0; v10 = 0; do { v8 -= v9; if ( a4 - 1 > v10 ) ++v10; else ++v23; v11 = &a3[v10]; v9 = a3[v10]; } while ( v8 - a5 > v9 && (unsigned __int8)(v9 - 1) <= 0x7Du ); v24 = v10; v12 = v10 - 1; v22 = v11; v6 = a1; v13 = v23 - 1; if ( a5 != v8 ) { LABEL_10: result = &v6[v8 - a5]; do *v6++ = *v7++; while ( v6 != result ); goto LABEL_12; } result = a1; LABEL_12: if ( v23 ) { do { v15 = result + 1; *result = a2; v16 = (unsigned __int8)*v22; if ( (char)v16 <= 0 ) { ++result; } else { result += (unsigned __int8)(v16 + 1); v17 = v8; do *v15++ = *v17++; while ( v15 != result ); v8 += v16; } v18 = v13-- == 0; } while ( !v18 ); } if ( v24 ) { v25 = v8; do { v19 = result + 1; *result = a2; v20 = (unsigned __int8)a3[v12]; if ( (char)v20 <= 0 ) { ++result; } else { result += (unsigned __int8)(v20 + 1); v21 = v25; do *v19++ = *v21++; while ( v19 != result ); v25 += v20; } v18 = v12-- == 0; } while ( !v18 ); } return result; } //----- (00529A20) -------------------------------------------------------- _WORD *__cdecl std::__add_grouping(_WORD *a1, __int16 a2, char *a3, int a4, char *a5, char *a6) { char *v6; // edx char *v7; // esi _WORD *v8; // edi int v9; // eax unsigned int v10; // edi unsigned int v11; // eax int v12; // ebp int v13; // ebx _WORD *result; // eax _WORD *v15; // edi int v16; // ecx char *v17; // esi bool v18; // cf _WORD *v19; // edi int v20; // ecx char *v21; // esi char *v22; // [esp+0h] [ebp-20h] int v23; // [esp+8h] [ebp-18h] unsigned int v24; // [esp+Ch] [ebp-14h] char *v25; // [esp+38h] [ebp+18h] v6 = a6; v7 = a5; v8 = a1; v9 = *a3; if ( (a6 - a5) >> 1 <= v9 || (unsigned __int8)(v9 - 1) > 0x7Du ) { if ( a6 == a5 ) return a1; v13 = -1; v12 = -1; v23 = 0; v24 = 0; v22 = a3; goto LABEL_10; } v23 = 0; v10 = 0; do { v6 -= 2 * v9; if ( a4 - 1 > v10 ) ++v10; else ++v23; v9 = a3[v10]; } while ( (v6 - a5) >> 1 > v9 && (unsigned __int8)(v9 - 1) <= 0x7Du ); v11 = v10; v24 = v10; v22 = &a3[v10]; v8 = a1; v12 = v23 - 1; v13 = v11 - 1; if ( a5 != v6 ) { LABEL_10: result = (_WORD *)((char *)v8 + v6 - a5); do { *v8 = *(_WORD *)v7; v7 += 2; ++v8; } while ( v8 != result ); goto LABEL_12; } result = a1; LABEL_12: if ( v23 ) { do { v15 = result + 1; *result = a2; v16 = (unsigned __int8)*v22; if ( (char)v16 <= 0 ) { ++result; } else { result += (unsigned __int8)(v16 + 1); v17 = v6; do { *v15 = *(_WORD *)v17; v17 += 2; ++v15; } while ( v15 != result ); v6 += 2 * v16; } v18 = v12-- == 0; } while ( !v18 ); } if ( v24 ) { v25 = v6; do { v19 = result + 1; *result = a2; v20 = (unsigned __int8)a3[v13]; if ( (char)v20 <= 0 ) { ++result; } else { result += (unsigned __int8)(v20 + 1); v21 = v25; do { *v19 = *(_WORD *)v21; v21 += 2; ++v19; } while ( v19 != result ); v25 += 2 * v20; } v18 = v13-- == 0; } while ( !v18 ); } return result; } //----- (00529BE0) -------------------------------------------------------- void __cdecl std::__convert_to_v(unsigned __int8 *a1, double *a2, _DWORD *a3) { long double v3; // fst7 char *Locale; // [esp+10h] [ebp-5Ch] char *Src; // [esp+14h] [ebp-58h] unsigned int Size; // [esp+18h] [ebp-54h] unsigned __int8 *v7; // [esp+5Ch] [ebp-10h] BYREF Src = setlocale(0, 0); Size = strlen(Src) + 1; Locale = (char *)operator new[](Size); memcpy(Locale, Src, Size); setlocale(0, "C"); v3 = __mingw_strtod(a1, &v7); *a2 = v3; if ( v7 == a1 || *v7 ) { *a2 = 0.0; *a3 = 4; } else if ( v3 < -1.797693134862316e308 || v3 > 1.797693134862316e308 ) { if ( v3 <= 0.0 ) *a2 = -1.797693134862316e308; else *a2 = 1.797693134862316e308; *a3 = 4; } setlocale(0, Locale); operator delete[](Locale); } //----- (00529D90) -------------------------------------------------------- void __cdecl std::__convert_to_v(char *String, long double *a2, _DWORD *a3) { long double v3; // fst7 long double v4; // fst7 char *Locale; // [esp+10h] [ebp-5Ch] char *Src; // [esp+14h] [ebp-58h] unsigned int Size; // [esp+18h] [ebp-54h] char *EndPtr; // [esp+5Ch] [ebp-10h] BYREF Src = setlocale(0, 0); Size = strlen(Src) + 1; Locale = (char *)operator new[](Size); memcpy(Locale, Src, Size); setlocale(0, "C"); v3 = strtold(String, &EndPtr); *a2 = v3; if ( EndPtr == String || *EndPtr ) { *a2 = 0.0; *a3 = 4; } else if ( v3 < -1.189731495357231765e4932 || v3 > 1.189731495357231765e4932 ) { if ( v3 <= 0.0 ) v4 = -1.189731495357231765e4932; else v4 = 1.189731495357231765e4932; *a2 = v4; *a3 = 4; } setlocale(0, Locale); operator delete[](Locale); } //----- (00529F20) -------------------------------------------------------- void __cdecl std::__convert_to_v(unsigned __int8 *a1, float *a2, _DWORD *a3) { long double v3; // fst7 int v4; // eax char *Locale; // [esp+10h] [ebp-5Ch] char *Src; // [esp+14h] [ebp-58h] unsigned int Size; // [esp+18h] [ebp-54h] unsigned __int8 *v8; // [esp+5Ch] [ebp-10h] BYREF Src = setlocale(0, 0); Size = strlen(Src) + 1; Locale = (char *)operator new[](Size); memcpy(Locale, Src, Size); setlocale(0, "C"); v3 = __mingw_strtof(a1, &v8); *a2 = v3; if ( v8 == a1 || *v8 ) { *a2 = 0.0; *a3 = 4; } else if ( v3 < -3.4028235e38 || v3 > 3.4028235e38 ) { v4 = -8388609; if ( v3 > 0.0 ) v4 = 2139095039; *(_DWORD *)a2 = v4; *a3 = 4; } setlocale(0, Locale); operator delete[](Locale); } //----- (0052A0B0) -------------------------------------------------------- void (*std::get_unexpected(void))(void) { return __cxxabiv1::__unexpected_handler; } //----- (0052A0C0) -------------------------------------------------------- __int32 __cdecl std::set_unexpected(void (__noreturn *a1)(void)) { void (__noreturn *v1)(void); // eax v1 = a1; if ( !a1 ) v1 = std::terminate; return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__unexpected_handler, (__int32)v1); } //----- (0052A0E0) -------------------------------------------------------- int std::get_new_handler(void) { return `anonymous namespace'::__new_handler; } // 53E498: using guessed type int `anonymous namespace'::__new_handler; //----- (0052A0F0) -------------------------------------------------------- __int32 __cdecl std::set_new_handler(void (*a1)(void)) { return _InterlockedExchange(&`anonymous namespace'::__new_handler, (__int32)a1); } // 53E498: using guessed type int `anonymous namespace'::__new_handler; //----- (0052A100) -------------------------------------------------------- int std::__convert_from_v(int *const *a1, char *a2, int a3, char *a4, ...) { char *v4; // ebx unsigned int Size; // edi void *Locale; // esi int v8; // ebx va_list va; // [esp+30h] [ebp+14h] BYREF va_start(va, a4); v4 = setlocale(4, 0); if ( *v4 == 67 && !v4[1] ) return __mingw_vsnprintf((FILE *)a2, a3, a4, (int *)va); Size = strlen(v4) + 1; Locale = (void *)operator new[](Size); memcpy(Locale, v4, Size); setlocale(4, "C"); v8 = __mingw_vsnprintf((FILE *)a2, a3, a4, (int *)va); setlocale(4, (const char *)Locale); operator delete[](Locale); return v8; } //----- (0052A1E0) -------------------------------------------------------- void __cdecl std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( unsigned __int8 **a1, char *a2, int (__cdecl *a3)(void **, struct _Unwind_Exception *)) { char *i; // edi char *v4; // esi unsigned __int8 **v5; // eax int v6; // edi unsigned __int8 **v7; // [esp+1Ch] [ebp-ACh] void *v8[40]; // [esp+28h] [ebp-A0h] BYREF if ( a2 != (char *)a1 ) { for ( i = (char *)(a1 + 34); i != a2; i = v4 ) { v4 = i + 136; if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( (int (__cdecl *)(int, int))a3, (int)i, (int)a1) ) { std::pair::pair(v8, i); v5 = (unsigned __int8 **)(i + 136); v6 = -252645135 * ((i - (char *)a1) >> 3); while ( v6 > 0 ) { --v6; v7 = v5 - 34; std::pair::operator=(v5 - 34, (int)(v5 - 68)); v5 = v7; } std::pair::operator=(a1, (int)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, a3); } } } } //----- (0052A29C) -------------------------------------------------------- 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, int (__cdecl *a4)(int, int)) { int result; // eax unsigned __int8 **i; // ebx unsigned __int8 **v6; // eax _DWORD *v7; // ebx _DWORD *v8; // edi char v9; // al int v10; // ecx _DWORD *v11; // edi int v12; // ecx char v13; // al _DWORD *v14; // [esp+18h] [ebp-30h] int v15; // [esp+18h] [ebp-30h] int (__cdecl *v17)(int, int); // [esp+28h] [ebp-20h] BYREF int (__cdecl *v18)(int, int); // [esp+2Ch] [ebp-1Ch] BYREF while ( 1 ) { result = a2 - (_DWORD)a1; if ( a2 - (int)a1 <= 2176 ) return result; if ( !a3 ) { v17 = a4; v18 = a4; std::__make_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( (int)a1, a2, &v18); for ( i = (unsigned __int8 **)a2; ; std::__pop_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( (int)a1, (int)i, i, &v17) ) { v6 = i; i -= 34; result = (char *)v6 - (char *)a1; if ( result <= 136 ) break; } return result; } v7 = a1 + 34; --a3; v14 = &a1[34 * ((-252645135 * (result >> 3)) >> 1)]; v8 = (_DWORD *)(a2 - 136); v9 = __gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( a4, (int)(a1 + 34), (int)v14); v10 = a2 - 136; if ( v9 ) { if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( a4, (int)v14, v10) ) goto LABEL_14; if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( a4, (int)(a1 + 34), (int)v8) ) goto LABEL_13; } else if ( !(unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( a4, (int)(a1 + 34), v10) ) { if ( !(unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( a4, (int)v14, (int)v8) ) { LABEL_14: std::pair::swap(a1, v14); goto LABEL_15; } LABEL_13: std::pair::swap(a1, v8); goto LABEL_15; } std::pair::swap(a1, a1 + 34); LABEL_15: v11 = (_DWORD *)a2; while ( 1 ) { if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( a4, (int)v7, (int)a1) ) goto LABEL_17; v12 = (int)(v11 - 34); do { v15 = v12; v11 = (_DWORD *)v12; v13 = __gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( a4, (int)a1, v12); v12 = v15 - 136; } while ( v13 ); if ( v7 >= v11 ) break; std::pair::swap(v7, v11); LABEL_17: v7 += 34; } std::__introsort_loop<__gnu_cxx::__normal_iterator *,std::vector>>,int,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( v7, a2, a3, a4); a2 = (int)v7; } } //----- (0052A430) -------------------------------------------------------- std::ostream::sentry *__cdecl std::__ostream_insert>( std::ostream::sentry *a1, int a2, int a3) { int v3; // eax char *v4; // edi int v5; // ebx bool v6; // zf _DWORD *v7; // ecx unsigned __int8 *v8; // eax int v9; // ecx int v11; // eax int v12; // edx int v13; // eax _DWORD *v14; // ecx unsigned __int8 *v15; // eax int (__stdcall *v16)(unsigned __int8); // eax int (__stdcall *v17)(unsigned __int8); // eax int v18; // [esp+0h] [ebp-88h] std::ostream *v19; // [esp+4h] [ebp-84h] _BYTE *v20; // [esp+14h] [ebp-74h] int v21; // [esp+18h] [ebp-70h] _BYTE *v22; // [esp+1Ch] [ebp-6Ch] int v23; // [esp+20h] [ebp-68h] int v24; // [esp+20h] [ebp-68h] unsigned __int8 v25; // [esp+24h] [ebp-64h] unsigned __int8 v26; // [esp+24h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-60h] struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] char v29[4]; // [esp+68h] [ebp-20h] BYREF _DWORD *v30; // [esp+6Ch] [ebp-1Ch] std::ostream::sentry::sentry((int)v29, a1, v19); if ( v29[0] ) { v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); v4 = (char *)a1 + v3; v5 = *(_DWORD *)((char *)a1 + v3 + 8); lpuexcpt = (std::ostream::sentry *)((char *)a1 + v3); if ( a3 >= v5 ) { v11 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)lpuexcpt + 30) + 48))( *((_DWORD *)lpuexcpt + 30), a2, a3); lpuexcpt = (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); if ( a3 != v11 ) { std::ios::clear( (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; goto LABEL_12; } goto LABEL_11; } v21 = *((_DWORD *)v4 + 3) & 0xB0; if ( v21 == 32 ) { if ( *((_DWORD *)lpuexcpt + 5) ) { LABEL_11: *((_DWORD *)lpuexcpt + 2) = 0; goto LABEL_12; } } else { v23 = v5 - a3; if ( v4[117] ) { v25 = v4[116]; } else { v20 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); if ( !v20 ) std::__throw_bad_cast(); if ( v20[28] ) { v25 = v20[61]; } else { std::ctype::_M_widen_init((int)v20); v25 = 32; v16 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v20 + 24); if ( v16 != std::ctype::do_widen ) v25 = ((int (__thiscall *)(_BYTE *, int))v16)(v20, 32); } *((_BYTE *)lpuexcpt + 116) = v25; *((_BYTE *)lpuexcpt + 117) = 1; v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); } do { v7 = *(_DWORD **)((char *)a1 + v3 + 120); v8 = (unsigned __int8 *)v7[5]; if ( (unsigned int)v8 < v7[6] ) { *v8 = v25; ++v7[5]; } else if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v7 + 52))(v7, v25) == -1 ) { std::ios::clear( (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); lpuexcpt = (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); if ( !*((_DWORD *)lpuexcpt + 5) ) goto LABEL_21; goto LABEL_11; } v6 = v23-- == 1; v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); } while ( !v6 ); lpuexcpt = (std::ostream::sentry *)((char *)a1 + v3); if ( *(_DWORD *)((char *)a1 + v3 + 20) ) goto LABEL_11; } LABEL_21: v12 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)lpuexcpt + 30) + 48))( *((_DWORD *)lpuexcpt + 30), a2, a3); v13 = *(_DWORD *)(*(_DWORD *)a1 - 12); lpuexcpt = (std::ostream::sentry *)((char *)a1 + v13); if ( a3 != v12 ) { std::ios::clear((std::ostream::sentry *)((char *)a1 + v13), *(_DWORD *)((char *)a1 + v13 + 20) | 1); v13 = *(_DWORD *)(*(_DWORD *)a1 - 12); lpuexcpt = (std::ostream::sentry *)((char *)a1 + v13); } if ( v21 == 32 && !*((_DWORD *)lpuexcpt + 5) ) { v24 = v5 - a3; if ( *((_BYTE *)lpuexcpt + 117) ) { v26 = *((_BYTE *)lpuexcpt + 116); } else { v22 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); if ( !v22 ) std::__throw_bad_cast(); if ( v22[28] ) { v26 = v22[61]; } else { std::ctype::_M_widen_init((int)v22); v26 = 32; v17 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v22 + 24); if ( v17 != std::ctype::do_widen ) v26 = ((int (__thiscall *)(_BYTE *, int))v17)(v22, 32); } *((_BYTE *)lpuexcpt + 116) = v26; *((_BYTE *)lpuexcpt + 117) = 1; v13 = *(_DWORD *)(*(_DWORD *)a1 - 12); } do { v14 = *(_DWORD **)((char *)a1 + v13 + 120); v15 = (unsigned __int8 *)v14[5]; if ( (unsigned int)v15 < v14[6] ) { *v15 = v26; ++v14[5]; } else if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v14 + 52))(v14, v26) == -1 ) { std::ios::clear( (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); lpuexcpt = (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); goto LABEL_11; } v6 = v24-- == 1; v13 = *(_DWORD *)(*(_DWORD *)a1 - 12); } while ( !v6 ); lpuexcpt = (std::ostream::sentry *)((char *)a1 + v13); } goto LABEL_11; } LABEL_12: lpuexcpta = (struct _Unwind_Exception *)((char *)v30 + *(_DWORD *)(*v30 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v9 = *((_DWORD *)lpuexcpta + 30); if ( v9 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v9 + 24))(v9, v18) == -1 ) std::ios::clear( (_DWORD *)((char *)v30 + *(_DWORD *)(*v30 - 12)), *(_DWORD *)((char *)v30 + *(_DWORD *)(*v30 - 12) + 20) | 1); } } return a1; } // 52A46F: variable 'v19' is possibly undefined // 52A59A: variable 'v18' is possibly undefined // 52A430: using guessed type char var_20[4]; //----- (0052A970) -------------------------------------------------------- int *__cdecl std::__ostream_insert>(int *a1, int a2, int a3) { char *v3; // esi int v4; // edi struct _Unwind_Exception *v5; // edx unsigned int v6; // eax _DWORD *v7; // ecx unsigned int v8; // eax __int16 v9; // ax int v10; // ecx int v12; // eax int v13; // eax unsigned int v14; // eax unsigned __int16 v15; // ax _DWORD *v16; // ecx unsigned int v17; // eax int v18; // ecx int v19; // ecx int v20; // [esp+0h] [ebp-88h] int v21; // [esp+18h] [ebp-70h] int v22; // [esp+20h] [ebp-68h] int v23; // [esp+20h] [ebp-68h] unsigned __int16 v24; // [esp+24h] [ebp-64h] unsigned __int16 v25; // [esp+24h] [ebp-64h] struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-60h] struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-60h] int v29; // [esp+68h] [ebp-20h] BYREF _DWORD *v30; // [esp+6Ch] [ebp-1Ch] std::wostream::sentry::sentry(&v29, a1); if ( (_BYTE)v29 ) { v3 = (char *)a1 + *(_DWORD *)(*a1 - 12); v4 = *((_DWORD *)v3 + 2); lpuexcpt = (struct _Unwind_Exception *)v3; v5 = (struct _Unwind_Exception *)v3; if ( a3 >= v4 ) { v12 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)v3 + 30) + 48))(*((_DWORD *)v3 + 30), a2, a3); v5 = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); if ( a3 != v12 ) { std::wios::clear( (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); LABEL_20: *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; goto LABEL_12; } goto LABEL_11; } v21 = *((_DWORD *)v3 + 3) & 0xB0; if ( v21 == 32 ) { if ( *((_DWORD *)v3 + 5) ) { LABEL_11: *((_DWORD *)v5 + 2) = 0; goto LABEL_12; } } else { v22 = v4 - a3; if ( v3[118] ) { v24 = *((_WORD *)v3 + 58); } else { v18 = *((_DWORD *)v3 + 31); if ( !v18 ) std::__throw_bad_cast(); v24 = (*(int (__fastcall **)(int, char *, int))(*(_DWORD *)v18 + 40))(v18, v3, 32); *((_WORD *)v3 + 58) = v24; v3[118] = 1; lpuexcpt = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); } do { v7 = (_DWORD *)*((_DWORD *)lpuexcpt + 30); v5 = lpuexcpt; v8 = v7[5]; if ( v8 < v7[6] ) { v6 = v8 + 2; *(_WORD *)(v6 - 2) = v24; v7[5] = v6; if ( v24 == 0xFFFF ) goto LABEL_10; } else { v9 = (*(int (__fastcall **)(_DWORD *, struct _Unwind_Exception *, _DWORD))(*v7 + 52))(v7, lpuexcpt, v24); lpuexcpt = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v5 = lpuexcpt; if ( v9 == -1 ) { LABEL_10: std::wios::clear(lpuexcpt, *((_DWORD *)lpuexcpt + 5) | 1); v5 = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); if ( !*((_DWORD *)v5 + 5) ) goto LABEL_22; goto LABEL_11; } } --v22; } while ( v22 ); if ( *((_DWORD *)lpuexcpt + 5) ) goto LABEL_11; } LABEL_22: v13 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)v5 + 30) + 48))(*((_DWORD *)v5 + 30), a2, a3); lpuexcptb = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v5 = lpuexcptb; if ( a3 != v13 ) { std::wios::clear( (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); lpuexcptb = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v5 = lpuexcptb; } if ( v21 == 32 && !*((_DWORD *)lpuexcptb + 5) ) { v23 = v4 - a3; if ( *((_BYTE *)lpuexcptb + 118) ) { v25 = *((_WORD *)lpuexcptb + 58); } else { v19 = *((_DWORD *)lpuexcptb + 31); if ( !v19 ) std::__throw_bad_cast(); v25 = (*(int (__fastcall **)(int, struct _Unwind_Exception *, int))(*(_DWORD *)v19 + 40))(v19, v5, 32); *((_WORD *)lpuexcptb + 58) = v25; *((_BYTE *)lpuexcptb + 118) = 1; lpuexcptb = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); } while ( 1 ) { v16 = (_DWORD *)*((_DWORD *)lpuexcptb + 30); v5 = lpuexcptb; v17 = v16[5]; if ( v17 < v16[6] ) { v14 = v17 + 2; *(_WORD *)(v14 - 2) = v25; v16[5] = v14; v15 = v25; } else { v15 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v16 + 52))(v16, v25); lpuexcptb = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v5 = lpuexcptb; } if ( v15 == 0xFFFF ) break; if ( !--v23 ) goto LABEL_11; } std::wios::clear(lpuexcptb, *((_DWORD *)lpuexcptb + 5) | 1); goto LABEL_20; } goto LABEL_11; } LABEL_12: lpuexcpta = (struct _Unwind_Exception *)((char *)v30 + *(_DWORD *)(*v30 - 12)); if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) { v10 = *((_DWORD *)lpuexcpta + 30); if ( v10 ) { if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v10 + 24))(v10, v20) == -1 ) std::wios::clear( (_DWORD *)((char *)v30 + *(_DWORD *)(*v30 - 12)), *(_DWORD *)((char *)v30 + *(_DWORD *)(*v30 - 12) + 20) | 1); } } return a1; } // 52AAEF: variable 'v20' is possibly undefined //----- (0052AE50) -------------------------------------------------------- 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); } // 52AE50: using guessed type char var_D[13]; //----- (0052AE80) -------------------------------------------------------- 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); } // 52AE80: using guessed type char var_D[13]; //----- (0052AEB0) -------------------------------------------------------- int __cdecl std::__verify_grouping(char *a1, unsigned int a2, int a3) { return (unsigned __int8)std::__verify_grouping_impl(a1, a2, *(const char **)a3, *(_DWORD *)(a3 + 4)); } //----- (0052AF50) -------------------------------------------------------- int __cdecl std::__verify_grouping(char *a1, unsigned int a2, const char **a3) { return std::__verify_grouping_impl(a1, a2, *a3, *((_DWORD *)*a3 - 3)); } //----- (0052AF80) -------------------------------------------------------- void (__cdecl ***std::iostream_category(void))(_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((_PVFV)__tcf_0_7); } return &`anonymous namespace'::__io_category_instance(void)::__ec; } // 53FCD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); //----- (0052AFE0) -------------------------------------------------------- int __cdecl std::_Rb_tree_decrement(_DWORD *a1) { int v1; // eax int v2; // edx int v4; // eax if ( !*a1 && a1 == *(_DWORD **)(a1[1] + 4) ) return a1[3]; v1 = a1[2]; if ( v1 ) { do { v2 = v1; v1 = *(_DWORD *)(v1 + 12); } while ( v1 ); return v2; } v2 = a1[1]; if ( a1 != *(_DWORD **)(v2 + 8) ) return v2; do { v4 = v2; v2 = *(_DWORD *)(v2 + 4); } while ( v4 == *(_DWORD *)(v2 + 8) ); return v2; } //----- (0052B040) -------------------------------------------------------- int __cdecl std::_Rb_tree_decrement(_DWORD *a1) { int v1; // eax int v2; // edx int v4; // eax if ( !*a1 && a1 == *(_DWORD **)(a1[1] + 4) ) return a1[3]; v1 = a1[2]; if ( v1 ) { do { v2 = v1; v1 = *(_DWORD *)(v1 + 12); } while ( v1 ); return v2; } v2 = a1[1]; if ( a1 != *(_DWORD **)(v2 + 8) ) return v2; do { v4 = v2; v2 = *(_DWORD *)(v2 + 4); } while ( *(_DWORD *)(v2 + 8) == v4 ); return v2; } //----- (0052B0A0) -------------------------------------------------------- int __cdecl std::_Rb_tree_increment(int a1) { int v1; // eax int v2; // edx int v4; // eax int v5; // edx v1 = *(_DWORD *)(a1 + 12); if ( v1 ) { do { v2 = v1; v1 = *(_DWORD *)(v1 + 8); } while ( v1 ); return v2; } v4 = *(_DWORD *)(a1 + 4); if ( a1 != *(_DWORD *)(v4 + 12) ) return *(_DWORD *)(a1 + 4); do { v5 = v4; v4 = *(_DWORD *)(v4 + 4); } while ( *(_DWORD *)(v4 + 12) == v5 ); if ( v4 != *(_DWORD *)(v5 + 12) ) return v4; return v5; } //----- (0052B0F0) -------------------------------------------------------- int __cdecl std::_Rb_tree_increment(int a1) { int v1; // eax int v2; // edx int v4; // eax int v5; // edx v1 = *(_DWORD *)(a1 + 12); if ( v1 ) { do { v2 = v1; v1 = *(_DWORD *)(v1 + 8); } while ( v1 ); return v2; } v4 = *(_DWORD *)(a1 + 4); if ( a1 != *(_DWORD *)(v4 + 12) ) return *(_DWORD *)(a1 + 4); do { v5 = v4; v4 = *(_DWORD *)(v4 + 4); } while ( *(_DWORD *)(v4 + 12) == v5 ); if ( v4 != *(_DWORD *)(v5 + 12) ) return v4; return v5; } //----- (0052B140) -------------------------------------------------------- bool std::uncaught_exception(void) { return __cxa_get_globals()[1] != 0; } //----- (0052B160) -------------------------------------------------------- int std::uncaught_exceptions(void) { return __cxa_get_globals()[1]; } //----- (0052B170) -------------------------------------------------------- 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; } //----- (0052B1A0) -------------------------------------------------------- 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; } //----- (0052B200) -------------------------------------------------------- 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; } //----- (0052B260) -------------------------------------------------------- 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 ( (unsigned int)v3 >= v4 ) { 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_15; } 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 ( v4 > (unsigned int)v3 ) 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 ( v8 >= v7 ) goto LABEL_6; LABEL_15: *a3 = 0; return v6; } //----- (0052B360) -------------------------------------------------------- int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3) { unsigned __int16 *v3; // eax int v4; // ecx int v5; // edi int v6; // esi int v7; // eax unsigned int v8; // edx __int16 *v9; // eax _WORD *v10; // esi __int16 v11; // dx unsigned __int16 *v12; // eax *a3 = 1; v3 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v3 >= a1[3] ) v4 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); else v4 = *v3; v5 = 0; while ( (_WORD)v4 != 0xFFFF ) { v8 = a1[3]; v9 = (__int16 *)a1[2]; if ( (int)(v8 - (_DWORD)v9) > 2 ) { v6 = (int)(v8 - (_DWORD)v9) >> 1; v7 = (*(int (__thiscall **)(_DWORD *, _DWORD, int))(*a2 + 48))(a2, a1[2], v6); a1[2] += 2 * v7; v5 += v7; if ( v7 < v6 ) goto LABEL_15; goto LABEL_6; } v10 = (_WORD *)a2[5]; if ( (unsigned int)v10 >= a2[6] ) { if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v4) == 0xFFFF ) { LABEL_15: *a3 = 0; return v5; } v9 = (__int16 *)a1[2]; ++v5; if ( (unsigned int)v9 < a1[3] ) { LABEL_11: v11 = *v9; a1[2] = v9 + 1; goto LABEL_12; } } else { *v10 = v4; ++v5; a2[5] = v10 + 1; if ( (unsigned int)v9 < v8 ) goto LABEL_11; } v11 = (*(int (__fastcall **)(_DWORD *))(*a1 + 40))(a1); LABEL_12: if ( v11 == -1 ) return v5; v12 = (unsigned __int16 *)a1[2]; if ( (unsigned int)v12 < a1[3] ) { v4 = *v12; continue; } LABEL_6: v4 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); } return v5; } //----- (0052B470) -------------------------------------------------------- void __cdecl std::__destroy_ios_failure(std::exception *a1) { void (__cdecl *v1)(std::ios_base::failure *__hidden); // eax int v2; // eax int v3; // ecx int v4; // eax int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF v1 = **(void (__cdecl ***)(std::ios_base::failure *__hidden))a1; if ( v1 == std::ios_base::failure::~failure ) { v2 = _CRT_MT; v3 = *((_DWORD *)a1 + 1); *(_DWORD *)a1 = &off_55FDEC; if ( v2 ) { if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) goto LABEL_4; } else { v4 = *(_DWORD *)(v3 - 4); *(_DWORD *)(v3 - 4) = v4 - 1; if ( v4 > 0 ) { LABEL_4: std::exception::~exception(a1); return; } } std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); std::exception::~exception(a1); } else { ((void (__fastcall *)(std::exception *))v1)(a1); } } // 53E1E4: using guessed type int _CRT_MT; // 55FDEC: using guessed type void (__cdecl *off_55FDEC)(std::ios_base::failure *__hidden this); // 52B470: using guessed type int var_D[3]; //----- (0052B4F0) -------------------------------------------------------- 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; if ( v6 ) { v7 = 0; 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; } //----- (0052B5C0) -------------------------------------------------------- void __cdecl std::__construct_ios_failure(_DWORD *a1, char *a2) { int v2; // ecx int v3; // eax const std::string *v4; // [esp+4h] [ebp-28h] int v5; // [esp+1Ah] [ebp-12h] BYREF _DWORD v6[4]; // [esp+1Ch] [ebp-10h] BYREF std::string::string(v6, a2, (int)&v5); std::ios_base::failure::failure(a1, (std::ios_base::failure *)v6, v4); v2 = v6[0]; if ( !_CRT_MT ) { v3 = *(_DWORD *)(v6[0] - 4); *(_DWORD *)(v6[0] - 4) = v3 - 1; if ( v3 > 0 ) return; LABEL_5: std::string::_Rep::_M_destroy((void *)(v2 - 12), (int)&v5 + 1); return; } if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v6[0] - 4), 0xFFFFFFFF) <= 0 ) goto LABEL_5; } // 52B5E8: variable 'v4' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (0052B640) -------------------------------------------------------- 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); } // 55BD7C: using guessed type int *`typeinfo for'std::ios_base::failure; //----- (0052B660) -------------------------------------------------------- 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 std::out_of_range *exception; // eax std::out_of_range *v7; // ecx const char *v8; // [esp+4h] [ebp-54h] char v9[4]; // [esp+10h] [ebp-48h] BYREF std::out_of_range *v10; // [esp+18h] [ebp-40h] va_list va; // [esp+64h] [ebp+Ch] BYREF va_start(va, Str); v1 = strlen(Str); v2 = v1 + 512; v3 = 16 * ((v1 + 539) >> 4); v4 = alloca(v3); v5 = alloca(v3); v10 = (std::out_of_range *)v9; __gnu_cxx::__snprintf_lite(v9, v2, Str, va); exception = (std::out_of_range *)__cxa_allocate_exception(8u); v7 = v10; v10 = exception; std::out_of_range::out_of_range(exception, v7, v8); __cxa_throw( v10, (struct type_info *)&`typeinfo for'std::out_of_range, (void (__cdecl *)(void *))std::out_of_range::~out_of_range); } // 52B6FD: variable 'v8' is possibly undefined // 55BEE4: using guessed type int *`typeinfo for'std::out_of_range; // 52B660: using guessed type char anonymous_0[4]; //----- (0052B750) -------------------------------------------------------- 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 **, struct _Unwind_Exception *)) { char v2; // al int v3; // [esp+10h] [ebp-D8h] unsigned __int8 **v4; // [esp+14h] [ebp-D4h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-D0h] void *v6[36]; // [esp+58h] [ebp-90h] BYREF std::pair::pair(v6, a1); lpuexcpt = (struct _Unwind_Exception *)(a1 - 34); while ( 1 ) { v4 = (unsigned __int8 **)((char *)lpuexcpt + 136); v3 = (int)lpuexcpt; v2 = a2(v6, lpuexcpt); lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt - 136); if ( !v2 ) break; std::pair::operator=(v4, v3); } std::pair::operator=(v4, (int)v6); std::pair::~pair(v6); } //----- (0052B870) -------------------------------------------------------- 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 _DWORD *v12; // edi int *v13; // ecx int *v14; // ebp _DWORD *v15; // edi int *v16; // ebp int v17; // ecx int v18; // ecx int v20; // ecx int *v21; // ecx int *v22; // ebp int v23; // edi int *v24; // edi int v25; // edi int *v26; // edi int *v27; // ecx int *v28; // edi _DWORD *v29; // edi int v30; // edi int v31; // edi int *v32; // ebp _DWORD *v33; // edi int v34; // ecx int v35; // ecx _DWORD *v36; // edi int v37; // edi int v38; // edi _DWORD *v39; // edi _DWORD *v40; // [esp+0h] [ebp-14h] _DWORD *v41; // [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_44; } 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_45; } v2 = v3; LABEL_44: v2[1] = (int)v7; v6 = v2; LABEL_45: if ( (int *)a2[1] == a1 ) { a2[1] = v6; } else { v20 = a1[1]; if ( *(int **)(v20 + 8) == a1 ) *(_DWORD *)(v20 + 8) = v6; else *(_DWORD *)(v20 + 12) = v6; } if ( (int *)a2[2] == a1 ) { v27 = v6; if ( a1[3] ) { do { v28 = v27; v27 = (int *)v27[2]; } while ( v27 ); a2[2] = v28; } else { a2[2] = a1[1]; } } v10 = *a1; if ( (int *)a2[3] == a1 ) { v21 = v6; if ( a1[2] ) { do { v22 = v21; v21 = (int *)v21[3]; } while ( v21 ); a2[3] = v22; } 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_41: if ( v6 ) goto LABEL_67; return a1; } while ( 1 ) { if ( v6 && *v6 != 1 ) goto LABEL_67; v13 = (int *)v7[2]; if ( v13 != v6 ) break; v13 = (int *)v7[3]; v14 = (int *)v13[2]; if ( !*v13 ) { *v13 = 1; *v7 = 0; v7[3] = (int)v14; if ( v14 ) v14[1] = (int)v7; v25 = v7[1]; v13[1] = v25; if ( v7 == (int *)a2[1] ) { a2[1] = v13; v26 = (int *)v7[3]; } else if ( v7 == *(int **)(v25 + 8) ) { *(_DWORD *)(v25 + 8) = v13; v26 = v14; } else { *(_DWORD *)(v25 + 12) = v13; v26 = (int *)v7[3]; } v13[2] = (int)v7; v14 = (int *)v26[2]; v7[1] = (int)v13; v13 = v26; } if ( v14 && *v14 != 1 ) { v36 = (_DWORD *)v13[3]; v40 = v36; if ( !v36 || *v36 == 1 ) { v37 = v14[3]; *v14 = 1; *v13 = 0; v13[2] = v37; if ( v37 ) *(_DWORD *)(v37 + 4) = v13; v38 = v13[1]; v14[1] = v38; if ( v13 == (int *)a2[1] ) { a2[1] = v14; } else if ( v13 == *(int **)(v38 + 12) ) { *(_DWORD *)(v38 + 12) = v14; } else { *(_DWORD *)(v38 + 8) = v14; } v14[3] = (int)v13; v13[1] = (int)v14; v16 = (int *)v7[3]; v39 = (_DWORD *)v16[3]; *v16 = *v7; v40 = v39; *v7 = 1; if ( !v39 ) goto LABEL_35; goto LABEL_34; } LABEL_33: v16 = (int *)v7[3]; *v13 = *v7; *v7 = 1; LABEL_34: *v40 = 1; LABEL_35: v17 = v16[2]; v7[3] = v17; if ( v17 ) *(_DWORD *)(v17 + 4) = v7; v18 = v7[1]; v16[1] = v18; if ( v7 == (int *)a2[1] ) { a2[1] = v16; } else if ( v7 == *(int **)(v18 + 8) ) { *(_DWORD *)(v18 + 8) = v16; } else { *(_DWORD *)(v18 + 12) = v16; } v16[2] = (int)v7; v7[1] = (int)v16; goto LABEL_41; } v15 = (_DWORD *)v13[3]; if ( v15 && *v15 != 1 ) { v40 = (_DWORD *)v13[3]; goto LABEL_33; } LABEL_22: *v13 = 0; v6 = v7; if ( (int *)a2[1] == v7 ) goto LABEL_68; v7 = (int *)v7[1]; } v11 = (int *)v13[3]; if ( !*v13 ) { *v13 = 1; *v7 = 0; v7[2] = (int)v11; if ( v11 ) v11[1] = (int)v7; v23 = v7[1]; v13[1] = v23; if ( v7 == (int *)a2[1] ) { a2[1] = v13; v24 = (int *)v7[2]; } else if ( v7 == *(int **)(v23 + 12) ) { *(_DWORD *)(v23 + 12) = v13; v24 = v11; } else { *(_DWORD *)(v23 + 8) = v13; v24 = (int *)v7[2]; } v13[3] = (int)v7; v11 = (int *)v24[3]; v7[1] = (int)v13; v13 = v24; } if ( !v11 || *v11 == 1 ) { v12 = (_DWORD *)v13[2]; if ( !v12 || *v12 == 1 ) goto LABEL_22; v41 = (_DWORD *)v13[2]; LABEL_91: v32 = (int *)v7[2]; *v13 = *v7; *v7 = 1; goto LABEL_92; } v29 = (_DWORD *)v13[2]; v41 = v29; if ( v29 && *v29 != 1 ) goto LABEL_91; v30 = v11[2]; *v11 = 1; *v13 = 0; v13[3] = v30; if ( v30 ) *(_DWORD *)(v30 + 4) = v13; v31 = v13[1]; v11[1] = v31; if ( v13 == (int *)a2[1] ) { a2[1] = v11; } else if ( v13 == *(int **)(v31 + 8) ) { *(_DWORD *)(v31 + 8) = v11; } else { *(_DWORD *)(v31 + 12) = v11; } v11[2] = (int)v13; v13[1] = (int)v11; v32 = (int *)v7[2]; v33 = (_DWORD *)v32[2]; *v32 = *v7; v41 = v33; *v7 = 1; if ( v33 ) LABEL_92: *v41 = 1; v34 = v32[3]; v7[2] = v34; if ( v34 ) *(_DWORD *)(v34 + 4) = v7; v35 = v7[1]; v32[1] = v35; if ( v7 == (int *)a2[1] ) { a2[1] = v32; } else if ( v7 == *(int **)(v35 + 12) ) { *(_DWORD *)(v35 + 12) = v32; } else { *(_DWORD *)(v35 + 8) = v32; } v32[3] = (int)v7; v7[1] = (int)v32; if ( !v6 ) return a1; LABEL_67: v7 = v6; LABEL_68: *v7 = 1; return a1; } //----- (0052BD00) -------------------------------------------------------- _DWORD *__cdecl std::_Rb_tree_insert_and_rebalance(char a1, _DWORD *a2, _DWORD *a3, _DWORD *a4) { _DWORD *v4; // ecx _DWORD *v5; // esi _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; // esi int v17; // ebx _DWORD *v18; // ebx int v19; // ebx _DWORD *v20; // ebx _DWORD *v21; // esi 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_17: *result = 1; return result; } while ( 1 ) { while ( 1 ) { v7 = (_DWORD *)v4[1]; if ( *v7 ) goto LABEL_17; 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 ) goto LABEL_17; } if ( (_DWORD *)v7[3] == v4 ) break; LABEL_28: *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_28; } LABEL_52: v20[2] = v4; goto LABEL_48; } } else { v4[1] = v8; v20 = v8; if ( v7 != (_DWORD *)a4[1] ) goto LABEL_52; } 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; } //----- (0052BF60) -------------------------------------------------------- _DWORD *__cdecl std::ws>(_DWORD *a1) { _BYTE *v1; // eax unsigned int v2; // eax unsigned int v3; // edx const std::locale *v5; // [esp+4h] [ebp-68h] _DWORD *v6; // [esp+14h] [ebp-58h] _DWORD *v7; // [esp+18h] [ebp-54h] _DWORD *v8[4]; // [esp+5Ch] [ebp-10h] BYREF std::locale::locale( (volatile signed __int32 **)v8, (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 108), v5); v7 = std::use_facet>((int)v8); std::locale::~locale(v8); v6 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v1 = (_BYTE *)v6[2]; if ( (unsigned int)v1 < v6[3] ) goto LABEL_5; LABEL_11: v1 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); if ( v1 == (_BYTE *)-1 ) { LABEL_9: std::ios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); } else { while ( (*(_BYTE *)(v7[6] + 2 * (unsigned __int8)v1) & 0x20) != 0 ) { v2 = v6[2]; v3 = v6[3]; if ( v2 < v3 ) { v1 = (_BYTE *)(v2 + 1); v6[2] = v1; } else { if ( (*(int (__fastcall **)(_DWORD *))(*v6 + 40))(v6) == -1 ) goto LABEL_9; v1 = (_BYTE *)v6[2]; v3 = v6[3]; } if ( (unsigned int)v1 >= v3 ) goto LABEL_11; LABEL_5: LOBYTE(v1) = *v1; } } return a1; } // 52BFA9: variable 'v5' is possibly undefined //----- (0052C0E0) -------------------------------------------------------- _DWORD *__cdecl std::ws>(_DWORD *a1) { unsigned __int16 *v1; // eax __int16 v2; // dx unsigned __int16 i; // ax __int16 *v4; // eax const std::locale *v6; // [esp+Ch] [ebp-68h] _DWORD *v7; // [esp+1Ch] [ebp-58h] void *v8; // [esp+20h] [ebp-54h] _DWORD *v9[4]; // [esp+64h] [ebp-10h] BYREF std::locale::locale( (volatile signed __int32 **)v9, (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 108), v6); v8 = std::use_facet>((int)v9); std::locale::~locale(v9); v7 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v1 = (unsigned __int16 *)v7[2]; if ( (unsigned int)v1 < v7[3] ) goto LABEL_5; LABEL_12: for ( i = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); i != 0xFFFF; i = *v1 ) { if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v8 + 8))(v8, 32, i) ) return a1; v4 = (__int16 *)v7[2]; if ( (unsigned int)v4 < v7[3] ) { v2 = *v4; v7[2] = v4 + 1; if ( v2 == -1 ) break; } else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == 0xFFFF ) { break; } v1 = (unsigned __int16 *)v7[2]; if ( (unsigned int)v1 >= v7[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; } // 52C129: variable 'v6' is possibly undefined //----- (0052C270) -------------------------------------------------------- std::ios_base *__cdecl std::hex(std::ios_base *a1) { *((_DWORD *)a1 + 3) = *((_DWORD *)a1 + 3) & 0xFFFFFFB5 | 8; return a1; } //----- (0052C290) -------------------------------------------------------- _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); } // 52C2B5: variable 'v7' is possibly undefined //----- (0052C310) -------------------------------------------------------- _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); } //----- (0052C360) -------------------------------------------------------- std::ostream::sentry *__cdecl std::ends>(std::ostream::sentry *a1) { char v2; // [esp+4h] [ebp-18h] return std::ostream::put(a1, 0, v2); } // 52C36E: variable 'v2' is possibly undefined //----- (0052C380) -------------------------------------------------------- int *__cdecl std::ends>(int *a1) { return std::wostream::put(a1, 0); } //----- (0052C3A0) -------------------------------------------------------- int __cdecl std::find<__gnu_cxx::__normal_iterator>,std::string>( int a1, int a2, int a3) { int v3; // esi int i; // edi int v5; // ebx int v6; // eax v3 = a1; for ( i = (-1431655765 * ((a2 - a1) >> 3)) >> 2; ; --i ) { v5 = v3; if ( i <= 0 ) break; if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v3) ) return v5; v5 = v3 + 24; if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v3 + 24) ) return v5; v5 = v3 + 48; if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v3 + 48) ) return v5; v5 = v3 + 72; v3 += 96; if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v5) ) return v5; } v6 = a2 - v3; if ( a2 - v3 == 48 ) { LABEL_14: if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v5) ) return v5; v5 += 24; goto LABEL_16; } if ( v6 == 72 ) { if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v3) ) return v5; v5 = v3 + 24; goto LABEL_14; } if ( v6 != 24 ) return a2; LABEL_16: if ( !(unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v5) ) return a2; return v5; } //----- (0052C464) -------------------------------------------------------- int __cdecl std::find<__gnu_cxx::__normal_iterator>,char const*>( int a1, int a2, char **a3) { int v3; // esi int i; // edi int v5; // ebx int v6; // eax v3 = a1; for ( i = (-1431655765 * ((a2 - a1) >> 3)) >> 2; ; --i ) { v5 = v3; if ( i <= 0 ) break; if ( __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v3) ) { return v5; } v5 = v3 + 24; if ( __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v3 + 24) ) { return v5; } v5 = v3 + 48; if ( __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v3 + 48) ) { return v5; } v5 = v3 + 72; v3 += 96; if ( __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v5) ) { return v5; } } v6 = a2 - v3; if ( a2 - v3 == 48 ) { LABEL_14: if ( __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v5) ) { return v5; } v5 += 24; goto LABEL_16; } if ( v6 == 72 ) { if ( __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v3) ) { return v5; } v5 = v3 + 24; goto LABEL_14; } if ( v6 != 24 ) return a2; LABEL_16: if ( !__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( a3, v5) ) return a2; return v5; } //----- (0052C528) -------------------------------------------------------- int __cdecl std::find<__gnu_cxx::__normal_iterator>,std::string>( 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 v4; 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 ) { LABEL_14: if ( std::operator==(v4, a3) ) return v4; v4 += 24; goto LABEL_16; } if ( v5 == 72 ) { if ( std::operator==(v3, a3) ) return v4; v4 = v3 + 24; goto LABEL_14; } if ( v5 != 24 ) return a2; LABEL_16: if ( !std::operator==(v4, a3) ) return a2; return v4; } //----- (0052C604) -------------------------------------------------------- void __cdecl std::sort<__gnu_cxx::__normal_iterator *,std::vector>>,bool (*)(std::pair const&,std::pair const&)>( char *a1, char *a2, int (__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&)>>( (unsigned __int8 **)a1, a2, (int (__cdecl *)(void **, struct _Unwind_Exception *))a3); } else { v4 = a1 + 2176; std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( (unsigned __int8 **)a1, a1 + 2176, (int (__cdecl *)(void **, struct _Unwind_Exception *))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 **, struct _Unwind_Exception *))a3); } } } } //----- (0052C6B0) -------------------------------------------------------- _DWORD *__cdecl std::flush>(_DWORD *a1) { return std::ostream::flush(a1); } //----- (0052C6C0) -------------------------------------------------------- _DWORD *__cdecl std::flush>(_DWORD *a1) { return std::wostream::flush(a1); } //----- (0052C6D0) -------------------------------------------------------- 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); } //----- (0052C750) -------------------------------------------------------- std::istream::sentry *__cdecl std::getline,std::allocator>( std::istream::sentry *a1, _DWORD *a2, unsigned __int8 a3) { int v3; // eax unsigned __int8 *v5; // eax int v6; // edx _BYTE *v7; // eax size_t v8; // edx unsigned __int8 *v9; // eax unsigned int v10; // eax signed int v11; // eax _BYTE *v12; // eax unsigned int v13; // edx unsigned int v14; // eax unsigned int v15; // edx bool v16; // [esp+8h] [ebp-90h] _DWORD *v17; // [esp+28h] [ebp-70h] size_t v18; // [esp+2Ch] [ebp-6Ch] size_t MaxCount; // [esp+30h] [ebp-68h] size_t MaxCounta; // [esp+30h] [ebp-68h] char MaxCountb; // [esp+30h] [ebp-68h] unsigned int v22; // [esp+34h] [ebp-64h] unsigned int v23; // [esp+34h] [ebp-64h] char *Buf; // [esp+38h] [ebp-60h] void *Bufa; // [esp+38h] [ebp-60h] char v26[25]; // [esp+7Fh] [ebp-19h] BYREF std::istream::sentry::sentry(v26, a1, (std::istream *)1, v16); if ( !v26[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; } a2[1] = 0; *(_BYTE *)*a2 = 0; v17 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v5 = (unsigned __int8 *)v17[2]; if ( (unsigned int)v5 >= v17[3] ) v6 = (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17); else v6 = *v5; v22 = 0; do { while ( 1 ) { if ( v6 == -1 ) { if ( !v22 ) { v3 = 6; goto LABEL_3; } LABEL_34: v3 = 2; goto LABEL_3; } v10 = v17[3]; Buf = (char *)v17[2]; if ( a3 == v6 ) goto LABEL_29; v11 = v10 - v17[2]; if ( (int)(0x3FFFFFFF - v22) <= v11 ) v11 = 0x3FFFFFFF - v22; MaxCounta = v11; v18 = a2[1]; if ( v11 <= 1 ) break; v7 = memchr(Buf, (char)a3, v11); v8 = v7 - Buf; if ( !v7 ) v8 = MaxCounta; MaxCount = v8; if ( v8 > 0x3FFFFFFF - v18 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(a2, Buf, v8); v22 += MaxCount; v9 = (unsigned __int8 *)(MaxCount + v17[2]); v17[2] = v9; if ( (unsigned int)v9 >= v17[3] ) goto LABEL_25; LABEL_12: v6 = *v9; if ( v22 > 0x3FFFFFFE ) goto LABEL_26; } MaxCountb = v6; Bufa = (void *)(v18 + 1); v12 = (_BYTE *)*a2; if ( (_DWORD *)*a2 == a2 + 2 ) v13 = 15; else v13 = a2[2]; if ( (unsigned int)Bufa > v13 ) { std::string::_M_mutate((int)a2, v18, 0, 0, 1u); v12 = (_BYTE *)*a2; } v12[v18] = MaxCountb; ++v22; a2[1] = Bufa; *(_BYTE *)(*a2 + v18 + 1) = 0; v14 = v17[2]; v15 = v17[3]; if ( v14 >= v15 ) { if ( (*(int (__fastcall **)(_DWORD *))(*v17 + 40))(v17) == -1 ) goto LABEL_34; v9 = (unsigned __int8 *)v17[2]; v15 = v17[3]; } else { v9 = (unsigned __int8 *)(v14 + 1); v17[2] = v9; } if ( v15 > (unsigned int)v9 ) goto LABEL_12; LABEL_25: v6 = (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17); } while ( v22 <= 0x3FFFFFFE ); LABEL_26: if ( v6 == -1 ) goto LABEL_34; v3 = 4; if ( v6 != a3 ) goto LABEL_3; v10 = v17[3]; Buf = (char *)v17[2]; LABEL_29: v23 = v22 + 1; if ( v10 <= (unsigned int)Buf ) { (*(void (__fastcall **)(_DWORD *))(*v17 + 40))(v17); if ( v23 ) return a1; goto LABEL_2; } v17[2] = Buf + 1; if ( !v23 ) goto LABEL_2; return a1; } // 52C7A3: variable 'v16' is possibly undefined // 52C750: using guessed type char var_19[25]; //----- (0052CBA0) -------------------------------------------------------- _DWORD *__cdecl std::getline,std::allocator>( _DWORD *a1, _DWORD *a2, __int16 a3) { int v3; // eax __int16 *v5; // eax unsigned int v6; // ebx __int16 *v7; // ecx int v8; // eax int v9; // edx _WORD *v10; // eax __int16 *v11; // eax __int16 v12; // ax _WORD *v13; // eax unsigned int v14; // edx __int16 v15; // ax unsigned int v16; // [esp+24h] [ebp-74h] int v17; // [esp+2Ch] [ebp-6Ch] _DWORD *v18; // [esp+30h] [ebp-68h] unsigned int v19; // [esp+34h] [ebp-64h] unsigned int v20; // [esp+34h] [ebp-64h] __int16 lpuexcpt; // [esp+38h] [ebp-60h] unsigned int lpuexcpta; // [esp+38h] [ebp-60h] char v23[25]; // [esp+7Fh] [ebp-19h] BYREF std::wistream::sentry::sentry(v23, a1, 1); if ( !v23[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; } a2[1] = 0; *(_WORD *)*a2 = 0; v18 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v5 = (__int16 *)v18[2]; if ( (unsigned int)v5 >= v18[3] ) lpuexcpt = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); else lpuexcpt = *v5; v19 = 0; do { if ( lpuexcpt == -1 ) { if ( !v19 ) { v3 = 6; goto LABEL_3; } LABEL_39: v3 = 2; goto LABEL_3; } v6 = v18[3]; v7 = (__int16 *)v18[2]; if ( a3 == lpuexcpt ) goto LABEL_24; v8 = (int)(v6 - (_DWORD)v7) >> 1; if ( v8 > (int)(0x1FFFFFFF - v19) ) v8 = 0x1FFFFFFF - v19; v17 = a2[1]; if ( v8 <= 1 ) { v16 = v17 + 1; v13 = (_WORD *)*a2; if ( (_DWORD *)*a2 == a2 + 2 ) v14 = 7; else v14 = a2[2]; if ( v16 > v14 ) { std::wstring::_M_mutate((int)a2, v17, 0, 0, 1); v7 = (__int16 *)v18[2]; v13 = (_WORD *)*a2; v6 = v18[3]; } ++v19; v13[v17] = lpuexcpt; a2[1] = v16; v13[v17 + 1] = 0; if ( v6 <= (unsigned int)v7 ) { v15 = (*(int (__fastcall **)(_DWORD *))(*v18 + 40))(v18); } else { v15 = *v7; v18[2] = v7 + 1; } if ( v15 == -1 ) goto LABEL_39; v11 = (__int16 *)v18[2]; if ( (unsigned int)v11 < v18[3] ) { LABEL_19: v12 = *v11; goto LABEL_20; } } else { lpuexcpta = v8; v9 = v8; if ( v7 ) { v10 = (_WORD *)v18[2]; while ( *v10 != a3 ) { ++v10; if ( !--v9 ) goto LABEL_17; } lpuexcpta = v10 - v7; } LABEL_17: if ( lpuexcpta > 0x1FFFFFFF - v17 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append(a2, v7, lpuexcpta); v19 += lpuexcpta; v11 = (__int16 *)(v18[2] + 2 * lpuexcpta); v18[2] = v11; if ( (unsigned int)v11 < v18[3] ) goto LABEL_19; } v12 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); LABEL_20: lpuexcpt = v12; } while ( v19 <= 0x1FFFFFFE ); if ( v12 == -1 ) goto LABEL_39; v3 = 4; if ( lpuexcpt != a3 ) goto LABEL_3; v7 = (__int16 *)v18[2]; v6 = v18[3]; LABEL_24: v20 = v19 + 1; if ( (unsigned int)v7 >= v6 ) { (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); if ( v20 ) return a1; goto LABEL_2; } v18[2] = v7 + 1; if ( !v20 ) goto LABEL_2; return a1; } // 52CBA0: using guessed type char var_19[25]; //----- (0052CFE0) -------------------------------------------------------- int __cdecl std::setfill(unsigned __int8 a1) { return a1; } //----- (0052CFF0) -------------------------------------------------------- int __cdecl std::setfill(unsigned __int16 a1) { return a1; } //----- (0052D000) -------------------------------------------------------- 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; } // 52D049: variable 'v2' is possibly undefined // 53F708: using guessed type signed __int32 std::moneypunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BB18: using guessed type int *`typeinfo for'std::moneypunct; //----- (0052D050) -------------------------------------------------------- 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; } // 52D099: variable 'v2' is possibly undefined // 53F710: using guessed type signed __int32 std::moneypunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BB58: using guessed type int *`typeinfo for'std::moneypunct; //----- (0052D0A0) -------------------------------------------------------- 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; } // 52D0E9: variable 'v2' is possibly undefined // 53F718: using guessed type signed __int32 std::collate::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BC90: using guessed type int *`typeinfo for'std::collate; //----- (0052D0F0) -------------------------------------------------------- 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; } // 52D139: variable 'v2' is possibly undefined // 53F71C: using guessed type signed __int32 std::collate::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BC9C: using guessed type int *`typeinfo for'std::collate; //----- (0052D140) -------------------------------------------------------- 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; } // 52D189: variable 'v2' is possibly undefined // 53F720: using guessed type signed __int32 std::messages::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BCA8: using guessed type int *`typeinfo for'std::messages; //----- (0052D190) -------------------------------------------------------- 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; } // 52D1D9: variable 'v2' is possibly undefined // 53F724: using guessed type signed __int32 std::messages::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BCC8: using guessed type int *`typeinfo for'std::messages; //----- (0052D1E0) -------------------------------------------------------- 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; } // 52D229: variable 'v2' is possibly undefined // 53F728: using guessed type signed __int32 std::numpunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BCE8: using guessed type int *`typeinfo for'std::numpunct; //----- (0052D230) -------------------------------------------------------- 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; } // 52D279: variable 'v2' is possibly undefined // 53F72C: using guessed type signed __int32 std::numpunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BCF4: using guessed type int *`typeinfo for'std::numpunct; //----- (0052D280) -------------------------------------------------------- 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; } // 52D2C9: variable 'v2' is possibly undefined // 53F730: using guessed type signed __int32 std::time_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BD00: using guessed type int *`typeinfo for'std::time_get>; //----- (0052D2D0) -------------------------------------------------------- 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; } // 52D319: variable 'v2' is possibly undefined // 53F734: using guessed type signed __int32 std::time_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BD20: using guessed type int *`typeinfo for'std::time_get>; //----- (0052D320) -------------------------------------------------------- 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; } // 52D369: variable 'v2' is possibly undefined // 53F738: using guessed type signed __int32 std::money_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BD40: using guessed type int *`typeinfo for'std::money_get>; //----- (0052D370) -------------------------------------------------------- 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; } // 52D3B9: variable 'v2' is possibly undefined // 53F73C: using guessed type signed __int32 std::money_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BD4C: using guessed type int *`typeinfo for'std::money_get>; //----- (0052D3C0) -------------------------------------------------------- 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; } // 52D409: variable 'v2' is possibly undefined // 53F740: using guessed type signed __int32 std::money_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BD58: using guessed type int *`typeinfo for'std::money_put>; //----- (0052D410) -------------------------------------------------------- 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; } // 52D459: variable 'v2' is possibly undefined // 53F744: using guessed type signed __int32 std::money_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BD64: using guessed type int *`typeinfo for'std::money_put>; //----- (0052D460) -------------------------------------------------------- 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; } // 52D4A9: variable 'v2' is possibly undefined // 53F58C: using guessed type signed __int32 std::moneypunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BDF4: using guessed type int *`typeinfo for'std::moneypunct; //----- (0052D4B0) -------------------------------------------------------- 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; } // 52D4F9: variable 'v2' is possibly undefined // 53F594: using guessed type signed __int32 std::moneypunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BE34: using guessed type int *`typeinfo for'std::moneypunct; //----- (0052D500) -------------------------------------------------------- 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; } // 52D549: variable 'v2' is possibly undefined // 53F59C: using guessed type signed __int32 std::__timepunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BE7C: using guessed type int *`typeinfo for'std::__timepunct; //----- (0052D550) -------------------------------------------------------- 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; } // 52D599: variable 'v2' is possibly undefined // 53F5A0: using guessed type signed __int32 std::__timepunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BE88: using guessed type int *`typeinfo for'std::__timepunct; //----- (0052D5A0) -------------------------------------------------------- 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; } // 52D5E9: variable 'v2' is possibly undefined // 53F6E0: using guessed type signed __int32 std::ctype::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C310: using guessed type int *`typeinfo for'std::ctype; //----- (0052D5F0) -------------------------------------------------------- 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; } // 52D639: variable 'v2' is possibly undefined // 53F6E4: using guessed type signed __int32 std::ctype::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C330: using guessed type int *`typeinfo for'std::ctype; //----- (0052D640) -------------------------------------------------------- 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; } // 52D689: variable 'v2' is possibly undefined // 53F758: using guessed type signed __int32 std::codecvt::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C36C: using guessed type int *`typeinfo for'std::codecvt; //----- (0052D690) -------------------------------------------------------- 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; } // 52D6D9: variable 'v2' is possibly undefined // 53F75C: using guessed type signed __int32 std::codecvt::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C378: using guessed type int *`typeinfo for'std::codecvt; //----- (0052D6E0) -------------------------------------------------------- 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; } // 52D729: variable 'v2' is possibly undefined // 53F760: using guessed type signed __int32 std::collate::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C384: using guessed type int *`typeinfo for'std::collate; //----- (0052D730) -------------------------------------------------------- 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; } // 52D779: variable 'v2' is possibly undefined // 53F764: using guessed type signed __int32 std::collate::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C390: using guessed type int *`typeinfo for'std::collate; //----- (0052D780) -------------------------------------------------------- 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; } // 52D7C9: variable 'v2' is possibly undefined // 53F768: using guessed type signed __int32 std::num_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C39C: using guessed type int *`typeinfo for'std::num_get>; //----- (0052D7D0) -------------------------------------------------------- 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; } // 52D819: variable 'v2' is possibly undefined // 53F76C: using guessed type signed __int32 std::num_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C3A8: using guessed type int *`typeinfo for'std::num_get>; //----- (0052D820) -------------------------------------------------------- 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; } // 52D869: variable 'v2' is possibly undefined // 53F770: using guessed type signed __int32 std::num_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C3B4: using guessed type int *`typeinfo for'std::num_put>; //----- (0052D870) -------------------------------------------------------- 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; } // 52D8B9: variable 'v2' is possibly undefined // 53F774: using guessed type signed __int32 std::num_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C3C0: using guessed type int *`typeinfo for'std::num_put>; //----- (0052D8C0) -------------------------------------------------------- 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; } // 52D909: variable 'v2' is possibly undefined // 53F780: using guessed type signed __int32 std::messages::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C3E0: using guessed type int *`typeinfo for'std::messages; //----- (0052D910) -------------------------------------------------------- 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; } // 52D959: variable 'v2' is possibly undefined // 53F784: using guessed type signed __int32 std::messages::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C400: using guessed type int *`typeinfo for'std::messages; //----- (0052D960) -------------------------------------------------------- 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; } // 52D9A9: variable 'v2' is possibly undefined // 53F788: using guessed type signed __int32 std::numpunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C420: using guessed type int *`typeinfo for'std::numpunct; //----- (0052D9B0) -------------------------------------------------------- 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; } // 52D9F9: variable 'v2' is possibly undefined // 53F78C: using guessed type signed __int32 std::numpunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C42C: using guessed type int *`typeinfo for'std::numpunct; //----- (0052DA00) -------------------------------------------------------- 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; } // 52DA49: variable 'v2' is possibly undefined // 53F790: using guessed type signed __int32 std::time_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C438: using guessed type int *`typeinfo for'std::time_get>; //----- (0052DA50) -------------------------------------------------------- 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; } // 52DA99: variable 'v2' is possibly undefined // 53F794: using guessed type signed __int32 std::time_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C458: using guessed type int *`typeinfo for'std::time_get>; //----- (0052DAA0) -------------------------------------------------------- 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; } // 52DAE9: variable 'v2' is possibly undefined // 53F798: using guessed type signed __int32 std::time_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C478: using guessed type int *`typeinfo for'std::time_put>; //----- (0052DAF0) -------------------------------------------------------- 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; } // 52DB39: variable 'v2' is possibly undefined // 53F79C: using guessed type signed __int32 std::time_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C484: using guessed type int *`typeinfo for'std::time_put>; //----- (0052DB40) -------------------------------------------------------- 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; } // 52DB89: variable 'v2' is possibly undefined // 53F7A0: using guessed type signed __int32 std::money_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C4BC: using guessed type int *`typeinfo for'std::money_get>; //----- (0052DB90) -------------------------------------------------------- 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; } // 52DBD9: variable 'v2' is possibly undefined // 53F7A4: using guessed type signed __int32 std::money_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C4C8: using guessed type int *`typeinfo for'std::money_get>; //----- (0052DBE0) -------------------------------------------------------- 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; } // 52DC29: variable 'v2' is possibly undefined // 53F7A8: using guessed type signed __int32 std::money_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C4D4: using guessed type int *`typeinfo for'std::money_put>; //----- (0052DC30) -------------------------------------------------------- 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; } // 52DC79: variable 'v2' is possibly undefined // 53F7AC: using guessed type signed __int32 std::money_put>::id[5]; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C4E0: using guessed type int *`typeinfo for'std::money_put>; //----- (0052DC80) -------------------------------------------------------- void __noreturn std::terminate(void) { __cxxabiv1::__terminate(__cxxabiv1::__terminate_handler); } //----- (0052DC90) -------------------------------------------------------- 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; } // 53F708: using guessed type signed __int32 std::moneypunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BB18: using guessed type int *`typeinfo for'std::moneypunct; //----- (0052DCF0) -------------------------------------------------------- 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; } // 53F70C: using guessed type signed __int32 std::moneypunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BB38: using guessed type int *`typeinfo for'std::moneypunct; //----- (0052DD50) -------------------------------------------------------- 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; } // 53F710: using guessed type signed __int32 std::moneypunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BB58: using guessed type int *`typeinfo for'std::moneypunct; //----- (0052DDB0) -------------------------------------------------------- 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; } // 53F714: using guessed type signed __int32 std::moneypunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BB78: using guessed type int *`typeinfo for'std::moneypunct; //----- (0052DE10) -------------------------------------------------------- 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; } // 53F718: using guessed type signed __int32 std::collate::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BC90: using guessed type int *`typeinfo for'std::collate; //----- (0052DE70) -------------------------------------------------------- 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; } // 53F71C: using guessed type signed __int32 std::collate::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BC9C: using guessed type int *`typeinfo for'std::collate; //----- (0052DED0) -------------------------------------------------------- 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; } // 53F720: using guessed type signed __int32 std::messages::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BCA8: using guessed type int *`typeinfo for'std::messages; //----- (0052DF30) -------------------------------------------------------- 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; } // 53F724: using guessed type signed __int32 std::messages::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BCC8: using guessed type int *`typeinfo for'std::messages; //----- (0052DF90) -------------------------------------------------------- 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; } // 53F728: using guessed type signed __int32 std::numpunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BCE8: using guessed type int *`typeinfo for'std::numpunct; //----- (0052DFF0) -------------------------------------------------------- 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; } // 53F72C: using guessed type signed __int32 std::numpunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BCF4: using guessed type int *`typeinfo for'std::numpunct; //----- (0052E050) -------------------------------------------------------- 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; } // 53F730: using guessed type signed __int32 std::time_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BD00: using guessed type int *`typeinfo for'std::time_get>; //----- (0052E0B0) -------------------------------------------------------- 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; } // 53F734: using guessed type signed __int32 std::time_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BD20: using guessed type int *`typeinfo for'std::time_get>; //----- (0052E110) -------------------------------------------------------- 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; } // 53F738: using guessed type signed __int32 std::money_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BD40: using guessed type int *`typeinfo for'std::money_get>; //----- (0052E170) -------------------------------------------------------- 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; } // 53F73C: using guessed type signed __int32 std::money_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BD4C: using guessed type int *`typeinfo for'std::money_get>; //----- (0052E1D0) -------------------------------------------------------- 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; } // 53F740: using guessed type signed __int32 std::money_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BD58: using guessed type int *`typeinfo for'std::money_put>; //----- (0052E230) -------------------------------------------------------- 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; } // 53F744: using guessed type signed __int32 std::money_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BD64: using guessed type int *`typeinfo for'std::money_put>; //----- (0052E290) -------------------------------------------------------- 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; } // 53F58C: using guessed type signed __int32 std::moneypunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BDF4: using guessed type int *`typeinfo for'std::moneypunct; //----- (0052E2F0) -------------------------------------------------------- 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; } // 53F590: using guessed type signed __int32 std::moneypunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BE14: using guessed type int *`typeinfo for'std::moneypunct; //----- (0052E350) -------------------------------------------------------- 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; } // 53F594: using guessed type signed __int32 std::moneypunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BE34: using guessed type int *`typeinfo for'std::moneypunct; //----- (0052E3B0) -------------------------------------------------------- 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; } // 53F598: using guessed type signed __int32 std::moneypunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BE54: using guessed type int *`typeinfo for'std::moneypunct; //----- (0052E410) -------------------------------------------------------- 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; } // 53F59C: using guessed type signed __int32 std::__timepunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BE7C: using guessed type int *`typeinfo for'std::__timepunct; //----- (0052E470) -------------------------------------------------------- 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; } // 53F5A0: using guessed type signed __int32 std::__timepunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55BE88: using guessed type int *`typeinfo for'std::__timepunct; //----- (0052E4D0) -------------------------------------------------------- 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; } // 53F6E0: using guessed type signed __int32 std::ctype::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C310: using guessed type int *`typeinfo for'std::ctype; //----- (0052E530) -------------------------------------------------------- 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; } // 53F6E4: using guessed type signed __int32 std::ctype::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C330: using guessed type int *`typeinfo for'std::ctype; //----- (0052E590) -------------------------------------------------------- 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; } // 53F758: using guessed type signed __int32 std::codecvt::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C36C: using guessed type int *`typeinfo for'std::codecvt; //----- (0052E5F0) -------------------------------------------------------- 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; } // 53F75C: using guessed type signed __int32 std::codecvt::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C378: using guessed type int *`typeinfo for'std::codecvt; //----- (0052E650) -------------------------------------------------------- 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; } // 53F760: using guessed type signed __int32 std::collate::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C384: using guessed type int *`typeinfo for'std::collate; //----- (0052E6B0) -------------------------------------------------------- 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; } // 53F764: using guessed type signed __int32 std::collate::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C390: using guessed type int *`typeinfo for'std::collate; //----- (0052E710) -------------------------------------------------------- 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; } // 53F768: using guessed type signed __int32 std::num_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C39C: using guessed type int *`typeinfo for'std::num_get>; //----- (0052E770) -------------------------------------------------------- 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; } // 53F76C: using guessed type signed __int32 std::num_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C3A8: using guessed type int *`typeinfo for'std::num_get>; //----- (0052E7D0) -------------------------------------------------------- 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; } // 53F770: using guessed type signed __int32 std::num_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C3B4: using guessed type int *`typeinfo for'std::num_put>; //----- (0052E830) -------------------------------------------------------- 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; } // 53F774: using guessed type signed __int32 std::num_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C3C0: using guessed type int *`typeinfo for'std::num_put>; //----- (0052E890) -------------------------------------------------------- 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; } // 53F780: using guessed type signed __int32 std::messages::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C3E0: using guessed type int *`typeinfo for'std::messages; //----- (0052E8F0) -------------------------------------------------------- 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; } // 53F784: using guessed type signed __int32 std::messages::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C400: using guessed type int *`typeinfo for'std::messages; //----- (0052E950) -------------------------------------------------------- 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; } // 53F788: using guessed type signed __int32 std::numpunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C420: using guessed type int *`typeinfo for'std::numpunct; //----- (0052E9B0) -------------------------------------------------------- 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; } // 53F78C: using guessed type signed __int32 std::numpunct::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C42C: using guessed type int *`typeinfo for'std::numpunct; //----- (0052EA10) -------------------------------------------------------- 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; } // 53F790: using guessed type signed __int32 std::time_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C438: using guessed type int *`typeinfo for'std::time_get>; //----- (0052EA70) -------------------------------------------------------- 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; } // 53F794: using guessed type signed __int32 std::time_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C458: using guessed type int *`typeinfo for'std::time_get>; //----- (0052EAD0) -------------------------------------------------------- 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; } // 53F798: using guessed type signed __int32 std::time_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C478: using guessed type int *`typeinfo for'std::time_put>; //----- (0052EB30) -------------------------------------------------------- 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; } // 53F79C: using guessed type signed __int32 std::time_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C484: using guessed type int *`typeinfo for'std::time_put>; //----- (0052EB90) -------------------------------------------------------- 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; } // 53F7A0: using guessed type signed __int32 std::money_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C4BC: using guessed type int *`typeinfo for'std::money_get>; //----- (0052EBF0) -------------------------------------------------------- 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; } // 53F7A4: using guessed type signed __int32 std::money_get>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C4C8: using guessed type int *`typeinfo for'std::money_get>; //----- (0052EC50) -------------------------------------------------------- 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; } // 53F7A8: using guessed type signed __int32 std::money_put>::id; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C4D4: using guessed type int *`typeinfo for'std::money_put>; //----- (0052ECB0) -------------------------------------------------------- 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; } // 53F7AC: using guessed type signed __int32 std::money_put>::id[5]; // 55BB10: using guessed type int *`typeinfo for'std::locale::facet; // 55C4E0: using guessed type int *`typeinfo for'std::money_put>; //----- (0052ED10) -------------------------------------------------------- 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; } //----- (0052ED4C) -------------------------------------------------------- bool __cdecl std::operator==(char *a1, int a2) { return std::string::compare(a2, a1) == 0; } //----- (0052ED68) -------------------------------------------------------- bool __cdecl std::operator==(int a1, char *a2) { return std::string::compare(a1, a2) == 0; } //----- (0052ED90) -------------------------------------------------------- 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; } //----- (0052EDF0) -------------------------------------------------------- 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; } //----- (0052EE50) -------------------------------------------------------- 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; } //----- (0052EEB0) -------------------------------------------------------- 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); } // 52EEB0: using guessed type int var_D[3]; //----- (0052EEE0) -------------------------------------------------------- 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); } // 52EEE0: using guessed type int var_10[4]; //----- (0052EF10) -------------------------------------------------------- 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); } // 52EF10: using guessed type int var_D[3]; //----- (0052EF40) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; return result; } //----- (0052EF60) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; return result; } //----- (0052EF80) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; return result; } //----- (0052EFA0) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; return result; } //----- (0052EFC0) -------------------------------------------------------- _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; } //----- (0052F000) -------------------------------------------------------- _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; } //----- (0052F070) -------------------------------------------------------- std::ostream::sentry *__cdecl std::operator<<(std::ostream::sentry *a1, int *a2) { return std::__ostream_insert>(a1, *a2, a2[1]); } //----- (0052F0A0) -------------------------------------------------------- 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; } //----- (0052F100) -------------------------------------------------------- int *__cdecl std::operator<<>(int *a1, char *Str) { size_t v2; // eax int v3; // ecx __int16 v4; // ax int v6; // [esp+18h] [ebp-60h] _WORD *Block; // [esp+1Ch] [ebp-5Ch] _WORD *v8; // [esp+24h] [ebp-54h] char *lpuexcpt; // [esp+28h] [ebp-50h] if ( Str ) { v2 = strlen(Str); if ( v2 > 0x3FFFFFFE ) __cxa_throw_bad_array_new_length(); v6 = v2; Block = (_WORD *)operator new[](2 * v2); v8 = Block; lpuexcpt = Str; if ( v6 ) { do { v3 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); if ( !v3 ) std::__throw_bad_cast(); v4 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 40))(v3, *lpuexcpt++); *v8++ = v4; } while ( &Str[v6] != lpuexcpt ); } std::__ostream_insert>(a1, (int)Block, v6); operator delete[](Block); } else { std::wios::clear((int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); } return a1; } //----- (0052F330) -------------------------------------------------------- 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); } // 52F330: using guessed type __int16 var_10[8]; //----- (0052F360) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; return result; } //----- (0052F380) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; return result; } //----- (0052F3A0) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; return result; } //----- (0052F3C0) -------------------------------------------------------- _DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; return result; } //----- (0052F3E0) -------------------------------------------------------- _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; } //----- (0052F420) -------------------------------------------------------- _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; } //----- (0052F480) -------------------------------------------------------- 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); } // 52F480: using guessed type __int16 var_E[7]; //----- (0052F4D0) -------------------------------------------------------- unsigned int __cdecl std::operator<(int a1, int a2) { return (unsigned int)std::string::compare(a1, a2) >> 31; } //----- (0052F4EC) -------------------------------------------------------- int __cdecl std::operator!=(char *a1, int a2) { int v2; // eax LOBYTE(v2) = std::operator==(a1, a2); return v2 ^ 1; } // 52F505: variable 'v2' is possibly undefined //----- (0052F50C) -------------------------------------------------------- int __cdecl std::operator!=(int a1, char *a2) { int v2; // eax LOBYTE(v2) = std::operator==(a1, a2); return v2 ^ 1; } // 52F525: variable 'v2' is possibly undefined //----- (0052F52C) -------------------------------------------------------- int __cdecl std::operator!=(int a1, int a2) { int v2; // eax LOBYTE(v2) = std::operator==(a1, a2); return v2 ^ 1; } // 52F545: variable 'v2' is possibly undefined //----- (0052F54C) -------------------------------------------------------- _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; } //----- (0052F5BC) -------------------------------------------------------- _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; } //----- (0052F5EC) -------------------------------------------------------- int __cdecl std::operator+(int a1, char *Str, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-40h] lpuexcpt = (struct _Unwind_Exception *)strlen(Str); *(_DWORD *)(a1 + 4) = 0; *(_BYTE *)(a1 + 8) = 0; *(_DWORD *)a1 = a1 + 8; std::string::reserve((_DWORD *)a1, (unsigned int)lpuexcpt + *(_DWORD *)(a3 + 4)); if ( (unsigned int)lpuexcpt > 0x3FFFFFFF - *(_DWORD *)(a1 + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append((_DWORD *)a1, Str, (size_t)lpuexcpt); std::string::append((_DWORD *)a1, a3); return a1; } //----- (0052F6D4) -------------------------------------------------------- char *__cdecl std::operator+(char *a1, int a2, char *a3) { std::string::basic_string(a1, a2); std::string::append(a1, a3); return a1; } //----- (0052F75C) -------------------------------------------------------- char *__cdecl std::operator+(char *a1, int a2, int a3) { std::string::basic_string(a1, a2); std::string::append(a1, a3); return a1; } //----- (0052F7E4) -------------------------------------------------------- int __cdecl std::operator+(int a1, char a2, int a3) { *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_BYTE *)(a1 + 8) = 0; std::string::reserve((_DWORD *)a1, *(_DWORD *)(a3 + 4) + 1); std::string::_M_replace_aux((_DWORD *)a1, *(_DWORD *)(a1 + 4), 0, 1u, a2); std::string::append((_DWORD *)a1, a3); return a1; } //----- (0052F8C0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int *__cdecl std::operator+(int *a1, char *Str, std::string *a3) { _DWORD *v3; // eax unsigned int v5; // [esp+0h] [ebp-68h] const std::string *v6; // [esp+0h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] unsigned int v8; // [esp+5Fh] [ebp-9h] BYREF lpuexcpt = (struct _Unwind_Exception *)strlen(Str); v3 = std::string::_Rep::_S_create(0, 0); v3[2] = 0; v3 += 3; *(v3 - 3) = 0; *(_BYTE *)v3 = 0; *a1 = (int)v3; std::string::reserve(a1, (struct _Unwind_Exception *)((char *)lpuexcpt + *(_DWORD *)(*(_DWORD *)a3 - 12)), v5); std::string::append(a1, (std::string *)Str, (size_t)lpuexcpt, (unsigned int)&v8); std::string::append(a1, a3, v6); return a1; } // 52F9A7: positive sp value 4 has been found // 52F94D: variable 'v5' is possibly undefined // 52F976: variable 'v6' is possibly undefined //----- (0052F9C0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int *__cdecl std::operator+(int *a1, _DWORD *a2, std::string *a3) { _DWORD *v3; // eax const std::string *v5; // [esp+0h] [ebp-68h] int v6; // [esp+5Fh] [ebp-9h] BYREF v3 = (_DWORD *)*a2; if ( *(int *)(*a2 - 4) < 0 ) { v3 = std::string::_Rep::_M_clone((int)(v3 - 3), (int)&v6, 0); } else if ( _CRT_MT ) { _InterlockedAdd(v3 - 1, 1u); } else { ++*(v3 - 1); } *a1 = (int)v3; std::string::append(a1, a3, v5); return a1; } // 52FA8A: positive sp value 4 has been found // 52FA1B: variable 'v5' is possibly undefined // 53E1E4: using guessed type int _CRT_MT; //----- (0052FAA0) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int *__cdecl std::operator+(int *a1, char a2, std::string *a3) { _DWORD *v3; // eax unsigned int v5; // [esp+0h] [ebp-68h] const std::string *v6; // [esp+0h] [ebp-68h] char v7[4]; // [esp+5Fh] [ebp-9h] BYREF v3 = std::string::_Rep::_S_create(0, 0); v3[2] = 0; v3 += 3; *(v3 - 3) = 0; *(_BYTE *)v3 = 0; *a1 = (int)v3; std::string::reserve(a1, (std::string *)(*(_DWORD *)(*(_DWORD *)a3 - 12) + 1), v5); std::string::append(a1, 1u, a2, (char)v7); std::string::append(a1, a3, v6); return a1; } // 52FB7E: positive sp value 4 has been found // 52FB22: variable 'v5' is possibly undefined // 52FB4D: variable 'v6' is possibly undefined //----- (0052FBA0) -------------------------------------------------------- int __cdecl std::operator+(int a1, wchar_t *String, int a3) { struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-40h] lpuexcpt = (struct _Unwind_Exception *)wcslen(String); *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)a1 = a1 + 8; *(_WORD *)(a1 + 8) = 0; std::wstring::reserve(a1, (unsigned int)lpuexcpt + *(_DWORD *)(a3 + 4)); if ( (unsigned int)lpuexcpt > 0x1FFFFFFF - *(_DWORD *)(a1 + 4) ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::wstring::_M_append((_DWORD *)a1, String, (int)lpuexcpt); std::wstring::_M_append((_DWORD *)a1, *(_WORD **)a3, *(_DWORD *)(a3 + 4)); return a1; } //----- (0052FCA0) -------------------------------------------------------- _DWORD *__cdecl std::operator+(_DWORD *a1, int a2, int a3) { int v4; // [esp+8h] [ebp-50h] *a1 = a1 + 2; LOBYTE(v4) = 0; std::wstring::_M_construct(a1, *(_WORD **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v4); std::wstring::_M_append(a1, *(_WORD **)a3, *(_DWORD *)(a3 + 4)); return a1; } // 52FCFB: variable 'v4' is possibly undefined //----- (0052FD70) -------------------------------------------------------- int __cdecl std::operator+(int a1, __int16 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((_DWORD *)a1, *(_DWORD *)(a1 + 4), 0, 1u, a2); std::wstring::_M_append((_DWORD *)a1, *(_WORD **)a3, *(_DWORD *)(a3 + 4)); return a1; } //----- (0052FE60) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int *__cdecl std::operator+(int *a1, wchar_t *String, _DWORD *a3) { _DWORD *v3; // eax struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] lpuexcpt = (struct _Unwind_Exception *)wcslen(String); v3 = std::wstring::_Rep::_S_create(0, 0); *((_WORD *)v3 + 6) = 0; v3 += 3; *(v3 - 1) = 0; *(v3 - 3) = 0; *a1 = (int)v3; std::wstring::reserve(a1, (unsigned int)lpuexcpt + *(_DWORD *)(*a3 - 12)); std::wstring::append(a1, (char *)String, (unsigned int)lpuexcpt); std::wstring::append(a1, a3); return a1; } // 52FF4A: positive sp value 4 has been found //----- (0052FF60) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int *__cdecl std::operator+(int *a1, _DWORD *a2, _DWORD *a3) { _DWORD *v3; // eax int v5; // [esp+5Fh] [ebp-9h] BYREF v3 = (_DWORD *)*a2; if ( *(int *)(*a2 - 4) < 0 ) { v3 = std::wstring::_Rep::_M_clone(v3 - 3, (int)&v5, 0); } else if ( _CRT_MT ) { _InterlockedAdd(v3 - 1, 1u); } else { ++*(v3 - 1); } *a1 = (int)v3; std::wstring::append(a1, a3); return a1; } // 53002A: positive sp value 4 has been found // 53E1E4: using guessed type int _CRT_MT; //----- (00530040) -------------------------------------------------------- // positive sp value has been detected, the output may be wrong! int *__cdecl std::operator+(int *a1, __int16 a2, _DWORD *a3) { _DWORD *v3; // eax v3 = std::wstring::_Rep::_S_create(0, 0); *((_WORD *)v3 + 6) = 0; v3 += 3; *(v3 - 1) = 0; *(v3 - 3) = 0; *a1 = (int)v3; std::wstring::reserve(a1, *(_DWORD *)(*a3 - 12) + 1); std::wstring::append(a1, 1u, a2); std::wstring::append(a1, a3); return a1; } // 530121: positive sp value 4 has been found //----- (00530180) -------------------------------------------------------- std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, char *a2) { int v2; // edx char *v3; // eax _BYTE *v4; // eax int v5; // ecx unsigned int v6; // esi char *v7; // ebx int v8; // edx unsigned int v9; // edx int v11; // edx int v12; // eax unsigned int v13; // eax unsigned int v14; // edx const std::locale *v15; // [esp+4h] [ebp-84h] bool v16; // [esp+8h] [ebp-80h] int v17; // [esp+10h] [ebp-78h] _DWORD *v18; // [esp+14h] [ebp-74h] int v19; // [esp+18h] [ebp-70h] int v20; // [esp+1Ch] [ebp-6Ch] _BYTE *Sizea; // [esp+20h] [ebp-68h] size_t Size; // [esp+20h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] int v24; // [esp+28h] [ebp-60h] char v25; // [esp+6Bh] [ebp-1Dh] BYREF _DWORD *v26[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v25, a1, 0, v16); if ( !v25 ) { v11 = *(_DWORD *)a1; v12 = 4; goto LABEL_23; } v2 = 0x7FFFFFFF; v3 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); if ( *((int *)v3 + 2) > 0 ) v2 = *((_DWORD *)v3 + 2); v19 = v2; std::locale::locale((volatile signed __int32 **)v26, (volatile signed __int32 **)v3 + 27, v15); v18 = std::use_facet>((int)v26); std::locale::~locale(v26); lpuexcpt = *(struct _Unwind_Exception **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v4 = (_BYTE *)*((_DWORD *)lpuexcpt + 2); if ( (unsigned int)v4 >= *((_DWORD *)lpuexcpt + 3) ) { v4 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); v17 = v19 - 1; if ( v19 == 1 ) { if ( v4 != (_BYTE *)-1 ) goto LABEL_43; } 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_23; } LOBYTE(v4) = *v4; v17 = v19 - 1; if ( v19 == 1 ) { LABEL_43: *a2 = 0; v11 = *(_DWORD *)a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; v12 = 4; goto LABEL_23; } LABEL_6: v24 = 0; while ( 1 ) { v5 = v18[6]; if ( (*(_BYTE *)(v5 + 2 * (unsigned __int8)v4) & 0x20) != 0 ) break; v6 = *((_DWORD *)lpuexcpt + 3); v7 = (char *)*((_DWORD *)lpuexcpt + 2); v8 = v19 - v24 - 1; if ( v8 > (int)(v6 - (_DWORD)v7) ) v8 = *((_DWORD *)lpuexcpt + 3) - (_DWORD)v7; if ( v8 <= 1 ) { ++v24; *a2 = (char)v4; Sizea = a2 + 1; v13 = *((_DWORD *)lpuexcpt + 2); v14 = *((_DWORD *)lpuexcpt + 3); if ( v13 >= v14 ) { if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) goto LABEL_35; v4 = (_BYTE *)*((_DWORD *)lpuexcpt + 2); v14 = *((_DWORD *)lpuexcpt + 3); } else { v4 = (_BYTE *)(v13 + 1); *((_DWORD *)lpuexcpt + 2) = v4; } if ( (unsigned int)v4 < v14 ) { LOBYTE(v4) = *v4; ++a2; goto LABEL_19; } v4 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); ++a2; LABEL_31: if ( v24 >= v17 ) { if ( v4 != (_BYTE *)-1 ) { LABEL_20: *a2 = 0; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; return a1; } *a2 = 0; v11 = *(_DWORD *)a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; v12 = 2; goto LABEL_23; } if ( v4 == (_BYTE *)-1 ) { Sizea = a2; LABEL_35: *Sizea = 0; v11 = *(_DWORD *)a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; v12 = v24 == 0 ? 6 : 2; goto LABEL_23; } } else { v9 = (unsigned int)&v7[v8]; v4 = v7 + 1; if ( v9 <= (unsigned int)(v7 + 1) ) { v20 = 1; Size = 1; LABEL_28: memcpy(a2, v7, Size); v6 = *((_DWORD *)lpuexcpt + 3); v4 = (_BYTE *)(*((_DWORD *)lpuexcpt + 2) + Size); goto LABEL_17; } do { if ( (*(_BYTE *)(v5 + 2 * (unsigned __int8)*v4) & 0x20) != 0 ) { v20 = v4 - v7; Size = v4 - v7; goto LABEL_16; } ++v4; } while ( v9 > (unsigned int)v4 ); v20 = v4 - v7; Size = v4 - v7; LABEL_16: if ( v20 ) goto LABEL_28; LABEL_17: a2 += Size; *((_DWORD *)lpuexcpt + 2) = v4; v24 += v20; if ( (unsigned int)v4 >= v6 ) { v4 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); goto LABEL_31; } LOBYTE(v4) = *v4; LABEL_19: if ( v24 >= v17 ) goto LABEL_20; } } *a2 = 0; v11 = *(_DWORD *)a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; if ( v24 ) return a1; v12 = 4; LABEL_23: std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v11 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(v11 - 12) + 20) | v12); return a1; } // 5301C7: variable 'v16' is possibly undefined // 5301FF: variable 'v15' is possibly undefined //----- (00530650) -------------------------------------------------------- std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, _BYTE *a2) { _DWORD *v3; // ecx char *v4; // eax char v5; // dl int v6; // eax bool v7; // [esp+8h] [ebp-70h] char v8[25]; // [esp+5Fh] [ebp-19h] BYREF std::istream::sentry::sentry(v8, a1, 0, v7); if ( v8[0] ) { v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v4 = (char *)v3[2]; if ( (unsigned int)v4 >= v3[3] ) { v6 = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); if ( v6 == -1 ) { std::ios::clear( (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 6); return a1; } v5 = v6; } else { v5 = *v4; v3[2] = v4 + 1; } *a2 = v5; } return a1; } // 530697: variable 'v7' is possibly undefined // 530650: using guessed type char var_19[25]; //----- (005307F0) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; return result; } //----- (00530810) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; return result; } //----- (00530830) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; return result; } //----- (00530850) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; return result; } //----- (00530870) -------------------------------------------------------- _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; } //----- (005308B0) -------------------------------------------------------- _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; } //----- (00530920) -------------------------------------------------------- std::istream::sentry *__cdecl std::operator>>(std::istream::sentry *a1, _DWORD *a2) { int v2; // edx int v3; // eax int v5; // edx char *v6; // eax unsigned __int8 *v7; // eax int v8; // ebx _BYTE *v9; // esi int v10; // edx unsigned int v11; // edx unsigned __int8 *v12; // eax unsigned __int8 *v13; // eax int v14; // eax _BYTE *v15; // eax unsigned int v16; // edx unsigned int v17; // eax unsigned int v18; // edx const std::locale *v19; // [esp+4h] [ebp-94h] bool v20; // [esp+8h] [ebp-90h] _DWORD *v21; // [esp+20h] [ebp-78h] char *v22; // [esp+24h] [ebp-74h] unsigned int v23; // [esp+28h] [ebp-70h] _DWORD *v24; // [esp+2Ch] [ebp-6Ch] size_t v25; // [esp+30h] [ebp-68h] unsigned int v26; // [esp+30h] [ebp-68h] struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] unsigned int v28; // [esp+38h] [ebp-60h] char v29; // [esp+7Bh] [ebp-1Dh] BYREF _DWORD *v30[7]; // [esp+7Ch] [ebp-1Ch] BYREF std::istream::sentry::sentry(&v29, a1, 0, v20); if ( !v29 ) { v2 = *(_DWORD *)a1; v3 = 4; goto LABEL_3; } v5 = 0x3FFFFFFF; a2[1] = 0; *(_BYTE *)*a2 = 0; v6 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); if ( *((int *)v6 + 2) > 0 ) v5 = *((_DWORD *)v6 + 2); v23 = v5; std::locale::locale((volatile signed __int32 **)v30, (volatile signed __int32 **)v6 + 27, v19); v21 = std::use_facet>((int)v30); std::locale::~locale(v30); v24 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); v7 = (unsigned __int8 *)v24[2]; if ( (unsigned int)v7 >= v24[3] ) v25 = (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24); else v25 = *v7; v28 = 0; while ( 1 ) { if ( v25 == -1 ) { v2 = *(_DWORD *)a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; v3 = v28 == 0 ? 6 : 2; goto LABEL_3; } v8 = v21[6]; if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v25) & 0x20) != 0 ) break; v9 = (_BYTE *)v24[2]; v10 = v24[3] - (_DWORD)v9; if ( v10 > (int)(v23 - v28) ) v10 = v23 - v28; lpuexcpt = (struct _Unwind_Exception *)a2[1]; if ( v10 <= 1 ) { v22 = (char *)lpuexcpt + 1; v15 = (_BYTE *)*a2; if ( (_DWORD *)*a2 == a2 + 2 ) v16 = 15; else v16 = a2[2]; if ( (unsigned int)v22 > v16 ) { std::string::_M_mutate((int)a2, (size_t)lpuexcpt, 0, 0, 1u); v15 = (_BYTE *)*a2; } *((_BYTE *)lpuexcpt + (_DWORD)v15) = v25; ++v28; a2[1] = v22; *((_BYTE *)lpuexcpt + *a2 + 1) = 0; v17 = v24[2]; v18 = v24[3]; if ( v17 >= v18 ) { if ( (*(int (__fastcall **)(_DWORD *))(*v24 + 40))(v24) == -1 ) { v2 = *(_DWORD *)a1; LABEL_37: *(_DWORD *)((char *)a1 + *(_DWORD *)(v2 - 12) + 8) = 0; v3 = 2; goto LABEL_3; } v13 = (unsigned __int8 *)v24[2]; v18 = v24[3]; } else { v13 = (unsigned __int8 *)(v17 + 1); v24[2] = v13; } if ( (unsigned int)v13 >= v18 ) { LABEL_33: v14 = (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24); goto LABEL_23; } } else { v11 = (unsigned int)&v9[v10]; v12 = v9 + 1; if ( v11 > (unsigned int)(v9 + 1) ) { do { if ( (*(_BYTE *)(v8 + 2 * *v12) & 0x20) != 0 ) break; ++v12; } while ( v11 > (unsigned int)v12 ); v26 = v12 - v9; } else { v26 = 1; } if ( 0x3FFFFFFF - (int)lpuexcpt < v26 ) std::__throw_length_error((std::length_error *)"basic_string::append"); std::string::_M_append(a2, v9, v26); v28 += v26; v13 = (unsigned __int8 *)(v26 + v24[2]); v24[2] = v13; if ( (unsigned int)v13 >= v24[3] ) goto LABEL_33; } v14 = *v13; LABEL_23: v25 = v14; if ( v23 <= v28 ) { v2 = *(_DWORD *)a1; if ( v14 != -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 ( v28 ) 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; } // 53096A: variable 'v20' is possibly undefined // 5309ED: variable 'v19' is possibly undefined //----- (00530DC0) -------------------------------------------------------- int *__cdecl std::operator>>>(int *a1, _WORD *a2) { int v2; // eax int v3; // esi volatile signed __int32 **v4; // eax int v5; // edx unsigned __int16 *v6; // eax unsigned __int16 v7; // ax __int16 v8; // dx unsigned __int16 *v9; // eax __int16 *v10; // eax int v11; // edx char *v12; // edx char *v14; // edx char *v15; // edx const std::locale *v16; // [esp+4h] [ebp-84h] int v17; // [esp+18h] [ebp-70h] int v18; // [esp+18h] [ebp-70h] void *v19; // [esp+1Ch] [ebp-6Ch] int v20; // [esp+20h] [ebp-68h] _DWORD *v21; // [esp+24h] [ebp-64h] unsigned __int16 lpuexcpt; // [esp+28h] [ebp-60h] char v23; // [esp+6Bh] [ebp-1Dh] BYREF _DWORD *v24[7]; // [esp+6Ch] [ebp-1Ch] BYREF std::wistream::sentry::sentry(&v23, a1, 0); v2 = *a1; if ( !v23 ) { LABEL_18: v11 = 4; goto LABEL_19; } v3 = *(int *)((char *)a1 + *(_DWORD *)(v2 - 12) + 8); v4 = (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(v2 - 12)); v5 = 0x7FFFFFFF; if ( v3 > 0 ) v5 = v3; v17 = v5; std::locale::locale((volatile signed __int32 **)v24, v4 + 27, v16); v19 = std::use_facet>((int)v24); std::locale::~locale(v24); v21 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v6 = (unsigned __int16 *)v21[2]; if ( (unsigned int)v6 >= v21[3] ) v7 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); else v7 = *v6; lpuexcpt = v7; if ( v17 == 1 ) { v2 = *a1; v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); *a2 = 0; *((_DWORD *)v15 + 2) = 0; if ( lpuexcpt == 0xFFFF ) { v11 = 6; goto LABEL_19; } goto LABEL_18; } if ( v7 == 0xFFFF ) { *a2 = 0; v2 = *a1; *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; v11 = 6; goto LABEL_19; } v20 = 0; v18 = (int)&a2[v17 - 1]; while ( 1 ) { if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v19 + 8))(v19, 32, lpuexcpt) ) { v2 = *a1; v12 = (char *)a1 + *(_DWORD *)(*a1 - 12); *a2 = 0; *((_DWORD *)v12 + 2) = 0; if ( v20 ) return a1; goto LABEL_18; } ++a2; ++v20; *(a2 - 1) = lpuexcpt; v10 = (__int16 *)v21[2]; if ( (unsigned int)v10 < v21[3] ) { v8 = *v10; v21[2] = v10 + 1; if ( v8 == -1 ) goto LABEL_16; } else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v21 + 40))(v21) == 0xFFFF ) { LABEL_16: *a2 = 0; v2 = *a1; *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; v11 = 2; goto LABEL_19; } v9 = (unsigned __int16 *)v21[2]; if ( (unsigned int)v9 < v21[3] ) { lpuexcpt = *v9; if ( a2 == (_WORD *)v18 ) break; goto LABEL_12; } lpuexcpt = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); if ( a2 == (_WORD *)v18 ) break; LABEL_12: if ( lpuexcpt == 0xFFFF ) goto LABEL_16; } v2 = *a1; v14 = (char *)a1 + *(_DWORD *)(*a1 - 12); if ( lpuexcpt != 0xFFFF ) { *a2 = 0; *((_DWORD *)v14 + 2) = 0; return a1; } *a2 = 0; *((_DWORD *)v14 + 2) = 0; v11 = 2; LABEL_19: std::wios::clear((int *)((char *)a1 + *(_DWORD *)(v2 - 12)), *(int *)((char *)a1 + *(_DWORD *)(v2 - 12) + 20) | v11); return a1; } // 530E3F: variable 'v16' is possibly undefined //----- (005311C0) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, _WORD *a2) { _DWORD *v3; // ecx __int16 *v4; // eax __int16 v5; // dx char v6[25]; // [esp+5Fh] [ebp-19h] BYREF std::wistream::sentry::sentry(v6, a1, 0); if ( v6[0] ) { v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); v4 = (__int16 *)v3[2]; if ( (unsigned int)v4 >= v3[3] ) { v5 = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); } else { v5 = *v4; v3[2] = v4 + 1; } if ( v5 == -1 ) std::wios::clear( (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 6); else *a2 = v5; } return a1; } // 5311C0: using guessed type char var_19[25]; //----- (00531360) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; return result; } //----- (00531380) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; return result; } //----- (005313A0) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; return result; } //----- (005313C0) -------------------------------------------------------- _DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) { _DWORD *result; // eax result = a1; *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; return result; } //----- (005313E0) -------------------------------------------------------- _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; } //----- (00531420) -------------------------------------------------------- _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; } //----- (00531480) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::iostream::~iostream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 1) = &unk_55B3E8; *(v2 - 3) = &unk_55B3C0; *(v2 - 2) = 0; *v2 = &off_560E20; std::ios_base::~ios_base((int)v2); operator delete((void *)(a1 - 8)); } // 560E20: using guessed type int (*off_560E20)(); //----- (005314C0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::iostream::~iostream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &unk_55B3E8; v1 = a1 + 1; *(v1 - 3) = &unk_55B3C0; *(v1 - 2) = 0; *v1 = &off_560E20; std::ios_base::~ios_base((int)v1); } // 560E20: using guessed type int (*off_560E20)(); //----- (005314F0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1) { void *Block; // [esp+18h] [ebp-54h] *(_DWORD *)(a1 - 8) = off_560124; *(_DWORD *)(a1 + 112) = off_56014C; *(_DWORD *)a1 = off_560138; *(_DWORD *)(a1 + 4) = off_5600A0; Block = (void *)(a1 - 8); std::filebuf::close((struct _Unwind_Exception *)(a1 + 4)); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_560424; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_55B474; *(_DWORD *)(a1 - 8) = &unk_55B44C; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 112) = &off_560E20; std::ios_base::~ios_base(a1 + 112); operator delete(Block); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560124: using guessed type int (*off_560124[2])(); // 560138: using guessed type int (*off_560138[2])(); // 56014C: using guessed type int (*off_56014C[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (005315F0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1) { *(_DWORD *)(a1 - 8) = off_560124; *(_DWORD *)(a1 + 112) = off_56014C; *(_DWORD *)a1 = off_560138; *(_DWORD *)(a1 + 4) = off_5600A0; std::filebuf::close((struct _Unwind_Exception *)(a1 + 4)); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_560424; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_55B474; *(_DWORD *)(a1 - 8) = &unk_55B44C; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 112) = &off_560E20; std::ios_base::~ios_base(a1 + 112); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560124: using guessed type int (*off_560124[2])(); // 560138: using guessed type int (*off_560138[2])(); // 56014C: using guessed type int (*off_56014C[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (005316D0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1) { void *Block; // [esp+18h] [ebp-54h] *(_DWORD *)(a1 - 8) = off_560160; *(_DWORD *)(a1 + 116) = off_560188; *(_DWORD *)a1 = off_560174; *(_DWORD *)(a1 + 4) = off_5600E0; Block = (void *)(a1 - 8); std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 4)); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_560464; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_55B500; *(_DWORD *)(a1 - 8) = &unk_55B49C; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 116) = &off_560E30; std::ios_base::~ios_base(a1 + 116); operator delete(Block); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560160: using guessed type int (*off_560160[2])(); // 560174: using guessed type int (*off_560174[2])(); // 560188: using guessed type int (*off_560188[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (005317D0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1) { *(_DWORD *)(a1 - 8) = off_560160; *(_DWORD *)(a1 + 116) = off_560188; *(_DWORD *)a1 = off_560174; *(_DWORD *)(a1 + 4) = off_5600E0; std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 4)); std::__basic_file::~__basic_file(a1 + 44); *(_DWORD *)(a1 + 4) = &off_560464; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_55B500; *(_DWORD *)(a1 - 8) = &unk_55B49C; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 116) = &off_560E30; std::ios_base::~ios_base(a1 + 116); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560160: using guessed type int (*off_560160[2])(); // 560174: using guessed type int (*off_560174[2])(); // 560188: using guessed type int (*off_560188[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (005318B0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(int a1) { _DWORD *v2; // ecx v2 = (_DWORD *)(a1 + 4); *(v2 - 1) = &unk_55B5A0; *(v2 - 3) = &unk_55B578; *(v2 - 2) = 0; *v2 = &off_560E30; std::ios_base::~ios_base((int)v2); operator delete((void *)(a1 - 8)); } // 560E30: using guessed type int (*off_560E30)(); //----- (005318F0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) { _DWORD *v1; // ecx *a1 = &unk_55B5A0; v1 = a1 + 1; *(v1 - 3) = &unk_55B578; *(v1 - 2) = 0; *v1 = &off_560E30; std::ios_base::~ios_base((int)v1); } // 560E30: using guessed type int (*off_560E30)(); //----- (00531920) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( int a1) { void *v1; // esi void *Block; // eax v1 = (void *)(a1 - 8); Block = *(void **)(a1 + 40); *(_DWORD *)(a1 - 8) = &off_55FB54; *(_DWORD *)(a1 + 64) = off_55FB7C; *(_DWORD *)a1 = off_55FB68; *(_DWORD *)(a1 + 4) = &off_55F928; if ( Block != (void *)(a1 + 48) ) operator delete(Block); *(_DWORD *)(a1 + 4) = &off_560424; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_55B26C; *(_DWORD *)(a1 - 8) = &unk_55B244; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 64) = &off_560E20; std::ios_base::~ios_base(a1 + 64); operator delete(v1); } // 55F928: using guessed type int (*off_55F928)(); // 55FB54: using guessed type int (*off_55FB54)(); // 55FB68: using guessed type int (*off_55FB68[2])(); // 55FB7C: using guessed type int (*off_55FB7C[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (005319A0) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( int a1) { void *Block; // eax Block = *(void **)(a1 + 40); *(_DWORD *)(a1 - 8) = &off_55FB54; *(_DWORD *)(a1 + 64) = off_55FB7C; *(_DWORD *)a1 = off_55FB68; *(_DWORD *)(a1 + 4) = &off_55F928; if ( Block != (void *)(a1 + 48) ) operator delete(Block); *(_DWORD *)(a1 + 4) = &off_560424; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_55B26C; *(_DWORD *)(a1 - 8) = &unk_55B244; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 64) = &off_560E20; std::ios_base::~ios_base(a1 + 64); } // 55F928: using guessed type int (*off_55F928)(); // 55FB54: using guessed type int (*off_55FB54)(); // 55FB68: using guessed type int (*off_55FB68[2])(); // 55FB7C: using guessed type int (*off_55FB7C[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (00531A10) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( int a1) { void *v1; // esi void *Block; // eax v1 = (void *)(a1 - 8); Block = *(void **)(a1 + 40); *(_DWORD *)(a1 - 8) = &off_55FB90; *(_DWORD *)(a1 + 64) = off_55FBB8; *(_DWORD *)a1 = off_55FBA4; *(_DWORD *)(a1 + 4) = &off_55F968; if ( Block != (void *)(a1 + 48) ) operator delete(Block); *(_DWORD *)(a1 + 4) = &off_560464; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_55B2F8; *(_DWORD *)(a1 - 8) = &unk_55B294; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 64) = &off_560E30; std::ios_base::~ios_base(a1 + 64); operator delete(v1); } // 55F968: using guessed type int (*off_55F968)(); // 55FB90: using guessed type int (*off_55FB90)(); // 55FBA4: using guessed type int (*off_55FBA4[2])(); // 55FBB8: using guessed type int (*off_55FBB8[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00531A90) -------------------------------------------------------- void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( int a1) { void *Block; // eax Block = *(void **)(a1 + 40); *(_DWORD *)(a1 - 8) = &off_55FB90; *(_DWORD *)(a1 + 64) = off_55FBB8; *(_DWORD *)a1 = off_55FBA4; *(_DWORD *)(a1 + 4) = &off_55F968; if ( Block != (void *)(a1 + 48) ) operator delete(Block); *(_DWORD *)(a1 + 4) = &off_560464; std::locale::~locale((_DWORD **)(a1 + 32)); *(_DWORD *)a1 = &unk_55B2F8; *(_DWORD *)(a1 - 8) = &unk_55B294; *(_DWORD *)(a1 - 4) = 0; *(_DWORD *)(a1 + 64) = &off_560E30; std::ios_base::~ios_base(a1 + 64); } // 55F968: using guessed type int (*off_55F968)(); // 55FB90: using guessed type int (*off_55FB90)(); // 55FBA4: using guessed type int (*off_55FBA4[2])(); // 55FBB8: using guessed type int (*off_55FBB8[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00531B00) -------------------------------------------------------- void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) { _DWORD *Block; // ebx Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); Block[2] = &unk_55B3E8; *Block = &unk_55B3C0; Block[1] = 0; Block[3] = &off_560E20; std::ios_base::~ios_base((int)(Block + 3)); operator delete(Block); } // 560E20: using guessed type int (*off_560E20)(); //----- (00531B40) -------------------------------------------------------- void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v1[2] = &unk_55B3E8; v1 += 3; *(v1 - 3) = &unk_55B3C0; *(v1 - 2) = 0; *v1 = &off_560E20; std::ios_base::~ios_base((int)v1); } // 560E20: using guessed type int (*off_560E20)(); //----- (00531B70) -------------------------------------------------------- void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) { _DWORD *Block; // ebx Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *Block = &off_55FE40; Block[1] = 0; Block[2] = &off_560E20; std::ios_base::~ios_base((int)(Block + 2)); operator delete(Block); } // 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); // 560E20: using guessed type int (*off_560E20)(); //----- (00531BB0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_55FE40; v1 += 2; *(v1 - 1) = 0; *v1 = &off_560E20; std::ios_base::~ios_base((int)v1); } // 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); // 560E20: using guessed type int (*off_560E20)(); //----- (00531BD0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) { _DWORD *Block; // ebx Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *Block = &off_55FE68; Block[1] = &off_560E20; std::ios_base::~ios_base((int)(Block + 1)); operator delete(Block); } // 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); // 560E20: using guessed type int (*off_560E20)(); //----- (00531C00) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1++ = &off_55FE68; *v1 = &off_560E20; std::ios_base::~ios_base((int)v1); } // 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); // 560E20: using guessed type int (*off_560E20)(); //----- (00531C20) -------------------------------------------------------- void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) { _DWORD *v1; // edx _DWORD *Block; // [esp+18h] [ebp-54h] v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = off_560124; v1[30] = off_56014C; v1[2] = off_560138; v1[3] = off_5600A0; Block = v1; std::filebuf::close((struct _Unwind_Exception *)(v1 + 3)); std::__basic_file::~__basic_file((int)(Block + 13)); Block[3] = &off_560424; std::locale::~locale((_DWORD **)Block + 10); Block[2] = &unk_55B474; *Block = &unk_55B44C; Block[1] = 0; Block[30] = &off_560E20; std::ios_base::~ios_base((int)(Block + 30)); operator delete(Block); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560124: using guessed type int (*off_560124[2])(); // 560138: using guessed type int (*off_560138[2])(); // 56014C: using guessed type int (*off_56014C[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (00531D20) -------------------------------------------------------- void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) { _DWORD *v1; // edx _DWORD *v2; // [esp+18h] [ebp-54h] v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = off_560124; v1[30] = off_56014C; v1[2] = off_560138; v1[3] = off_5600A0; v2 = v1; std::filebuf::close((struct _Unwind_Exception *)(v1 + 3)); std::__basic_file::~__basic_file((int)(v2 + 13)); v2[3] = &off_560424; std::locale::~locale((_DWORD **)v2 + 10); v2[2] = &unk_55B474; *v2 = &unk_55B44C; v2[1] = 0; v2[30] = &off_560E20; std::ios_base::~ios_base((int)(v2 + 30)); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560124: using guessed type int (*off_560124[2])(); // 560138: using guessed type int (*off_560138[2])(); // 56014C: using guessed type int (*off_56014C[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (00531E10) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) { _DWORD *v1; // edx _DWORD *Block; // [esp+18h] [ebp-54h] v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = off_560160; v1[31] = off_560188; v1[2] = off_560174; v1[3] = off_5600E0; Block = v1; std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 3)); std::__basic_file::~__basic_file((int)(Block + 13)); Block[3] = &off_560464; std::locale::~locale((_DWORD **)Block + 10); Block[2] = &unk_55B500; *Block = &unk_55B49C; Block[1] = 0; Block[31] = &off_560E30; std::ios_base::~ios_base((int)(Block + 31)); operator delete(Block); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560160: using guessed type int (*off_560160[2])(); // 560174: using guessed type int (*off_560174[2])(); // 560188: using guessed type int (*off_560188[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00531F10) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) { _DWORD *v1; // edx _DWORD *v2; // [esp+18h] [ebp-54h] v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = off_560160; v1[31] = off_560188; v1[2] = off_560174; v1[3] = off_5600E0; v2 = v1; std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 3)); std::__basic_file::~__basic_file((int)(v2 + 13)); v2[3] = &off_560464; std::locale::~locale((_DWORD **)v2 + 10); v2[2] = &unk_55B500; *v2 = &unk_55B49C; v2[1] = 0; v2[31] = &off_560E30; std::ios_base::~ios_base((int)(v2 + 31)); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560160: using guessed type int (*off_560160[2])(); // 560174: using guessed type int (*off_560174[2])(); // 560188: using guessed type int (*off_560188[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532000) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) { _DWORD *Block; // ebx Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *Block = &off_56019C; Block[1] = 0; Block[2] = &off_560E30; std::ios_base::~ios_base((int)(Block + 2)); operator delete(Block); } // 56019C: using guessed type int (*off_56019C)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532040) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = &off_56019C; v1 += 2; *(v1 - 1) = 0; *v1 = &off_560E30; std::ios_base::~ios_base((int)v1); } // 56019C: using guessed type int (*off_56019C)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532060) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) { _DWORD *Block; // ebx Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *Block = &off_5601C4; Block[1] = &off_560E30; std::ios_base::~ios_base((int)(Block + 1)); operator delete(Block); } // 5601C4: using guessed type int (*off_5601C4)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532090) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1++ = &off_5601C4; *v1 = &off_560E30; std::ios_base::~ios_base((int)v1); } // 5601C4: using guessed type int (*off_5601C4)(); // 560E30: using guessed type int (*off_560E30)(); //----- (005320B0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) { _DWORD *v1; // edx _DWORD *Block; // [esp+18h] [ebp-54h] v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = off_560200; v1[29] = off_560214; v1[2] = off_5600A0; Block = v1; std::filebuf::close((struct _Unwind_Exception *)(v1 + 2)); std::__basic_file::~__basic_file((int)(Block + 12)); Block[2] = &off_560424; std::locale::~locale((_DWORD **)Block + 9); *Block = &unk_55B528; Block[1] = 0; Block[29] = &off_560E20; std::ios_base::~ios_base((int)(Block + 29)); operator delete(Block); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560200: using guessed type int (*off_560200[2])(); // 560214: using guessed type int (*off_560214[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (005321A0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) { _DWORD *v1; // edx _DWORD *v2; // [esp+18h] [ebp-54h] v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = off_560200; v1[29] = off_560214; v1[2] = off_5600A0; v2 = v1; std::filebuf::close((struct _Unwind_Exception *)(v1 + 2)); std::__basic_file::~__basic_file((int)(v2 + 12)); v2[2] = &off_560424; std::locale::~locale((_DWORD **)v2 + 9); *v2 = &unk_55B528; v2[1] = 0; v2[29] = &off_560E20; std::ios_base::~ios_base((int)(v2 + 29)); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 560200: using guessed type int (*off_560200[2])(); // 560214: using guessed type int (*off_560214[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (00532280) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) { _DWORD *v1; // edx _DWORD *Block; // [esp+18h] [ebp-54h] v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = off_560228; v1[30] = off_56023C; v1[2] = off_5600E0; Block = v1; std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 2)); std::__basic_file::~__basic_file((int)(Block + 12)); Block[2] = &off_560464; std::locale::~locale((_DWORD **)Block + 9); *Block = &unk_55B550; Block[1] = 0; Block[30] = &off_560E30; std::ios_base::~ios_base((int)(Block + 30)); operator delete(Block); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560228: using guessed type int (*off_560228[2])(); // 56023C: using guessed type int (*off_56023C[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532370) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) { _DWORD *v1; // edx _DWORD *v2; // [esp+18h] [ebp-54h] v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = off_560228; v1[30] = off_56023C; v1[2] = off_5600E0; v2 = v1; std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 2)); std::__basic_file::~__basic_file((int)(v2 + 12)); v2[2] = &off_560464; std::locale::~locale((_DWORD **)v2 + 9); *v2 = &unk_55B550; v2[1] = 0; v2[30] = &off_560E30; std::ios_base::~ios_base((int)(v2 + 30)); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 560228: using guessed type int (*off_560228[2])(); // 56023C: using guessed type int (*off_56023C[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532450) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) { _DWORD *Block; // ebx Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); Block[2] = &unk_55B5A0; *Block = &unk_55B578; Block[1] = 0; Block[3] = &off_560E30; std::ios_base::~ios_base((int)(Block + 3)); operator delete(Block); } // 560E30: using guessed type int (*off_560E30)(); //----- (00532490) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) { _DWORD *v1; // ecx v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); v1[2] = &unk_55B5A0; v1 += 3; *(v1 - 3) = &unk_55B578; *(v1 - 2) = 0; *v1 = &off_560E30; std::ios_base::~ios_base((int)v1); } // 560E30: using guessed type int (*off_560E30)(); //----- (005324C0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) { _DWORD *v1; // edx _DWORD *Block; // [esp+18h] [ebp-54h] v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = off_56028C; v1[28] = off_5602A0; v1[1] = off_5600A0; Block = v1; std::filebuf::close((struct _Unwind_Exception *)(v1 + 1)); std::__basic_file::~__basic_file((int)(Block + 11)); Block[1] = &off_560424; std::locale::~locale((_DWORD **)Block + 8); *Block = &unk_55B5C8; Block[28] = &off_560E20; std::ios_base::~ios_base((int)(Block + 28)); operator delete(Block); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 56028C: using guessed type int (*off_56028C[2])(); // 5602A0: using guessed type int (*off_5602A0[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (005325A0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) { _DWORD *v1; // edx _DWORD *v2; // [esp+18h] [ebp-54h] v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = off_56028C; v1[28] = off_5602A0; v1[1] = off_5600A0; v2 = v1; std::filebuf::close((struct _Unwind_Exception *)(v1 + 1)); std::__basic_file::~__basic_file((int)(v2 + 11)); v2[1] = &off_560424; std::locale::~locale((_DWORD **)v2 + 8); *v2 = &unk_55B5C8; v2[28] = &off_560E20; std::ios_base::~ios_base((int)(v2 + 28)); } // 5600A0: using guessed type int (*off_5600A0[2])(); // 56028C: using guessed type int (*off_56028C[2])(); // 5602A0: using guessed type int (*off_5602A0[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (00532670) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) { _DWORD *v1; // edx _DWORD *Block; // [esp+18h] [ebp-54h] v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = off_5602B4; v1[29] = off_5602C8; v1[1] = off_5600E0; Block = v1; std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 1)); std::__basic_file::~__basic_file((int)(Block + 11)); Block[1] = &off_560464; std::locale::~locale((_DWORD **)Block + 8); *Block = &unk_55B5F0; Block[29] = &off_560E30; std::ios_base::~ios_base((int)(Block + 29)); operator delete(Block); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 5602B4: using guessed type int (*off_5602B4[2])(); // 5602C8: using guessed type int (*off_5602C8[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532750) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) { _DWORD *v1; // edx _DWORD *v2; // [esp+18h] [ebp-54h] v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); *v1 = off_5602B4; v1[29] = off_5602C8; v1[1] = off_5600E0; v2 = v1; std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 1)); std::__basic_file::~__basic_file((int)(v2 + 11)); v2[1] = &off_560464; std::locale::~locale((_DWORD **)v2 + 8); *v2 = &unk_55B5F0; v2[29] = &off_560E30; std::ios_base::~ios_base((int)(v2 + 29)); } // 5600E0: using guessed type int (*off_5600E0[2])(); // 5602B4: using guessed type int (*off_5602B4[2])(); // 5602C8: using guessed type int (*off_5602C8[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532820) -------------------------------------------------------- void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *a1) { char *v1; // ebx char *Block; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); Block = (char *)*((_DWORD *)v1 + 12); *(_DWORD *)v1 = &off_55FB54; *((_DWORD *)v1 + 18) = off_55FB7C; *((_DWORD *)v1 + 2) = off_55FB68; *((_DWORD *)v1 + 3) = &off_55F928; if ( Block != v1 + 56 ) operator delete(Block); *((_DWORD *)v1 + 3) = &off_560424; std::locale::~locale((_DWORD **)v1 + 10); *((_DWORD *)v1 + 2) = &unk_55B26C; *(_DWORD *)v1 = &unk_55B244; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 18) = &off_560E20; std::ios_base::~ios_base((int)(v1 + 72)); operator delete(v1); } // 55F928: using guessed type int (*off_55F928)(); // 55FB54: using guessed type int (*off_55FB54)(); // 55FB68: using guessed type int (*off_55FB68[2])(); // 55FB7C: using guessed type int (*off_55FB7C[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (005328A0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *a1) { char *v1; // ebx char *Block; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); Block = (char *)*((_DWORD *)v1 + 12); *(_DWORD *)v1 = &off_55FB54; *((_DWORD *)v1 + 18) = off_55FB7C; *((_DWORD *)v1 + 2) = off_55FB68; *((_DWORD *)v1 + 3) = &off_55F928; if ( Block != v1 + 56 ) operator delete(Block); *((_DWORD *)v1 + 3) = &off_560424; std::locale::~locale((_DWORD **)v1 + 10); *((_DWORD *)v1 + 2) = &unk_55B26C; *(_DWORD *)v1 = &unk_55B244; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 18) = &off_560E20; std::ios_base::~ios_base((int)(v1 + 72)); } // 55F928: using guessed type int (*off_55F928)(); // 55FB54: using guessed type int (*off_55FB54)(); // 55FB68: using guessed type int (*off_55FB68[2])(); // 55FB7C: using guessed type int (*off_55FB7C[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (00532910) -------------------------------------------------------- void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *a1) { char *v1; // ebx char *Block; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); Block = (char *)*((_DWORD *)v1 + 12); *(_DWORD *)v1 = &off_55FB90; *((_DWORD *)v1 + 18) = off_55FBB8; *((_DWORD *)v1 + 2) = off_55FBA4; *((_DWORD *)v1 + 3) = &off_55F968; if ( Block != v1 + 56 ) operator delete(Block); *((_DWORD *)v1 + 3) = &off_560464; std::locale::~locale((_DWORD **)v1 + 10); *((_DWORD *)v1 + 2) = &unk_55B2F8; *(_DWORD *)v1 = &unk_55B294; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 18) = &off_560E30; std::ios_base::~ios_base((int)(v1 + 72)); operator delete(v1); } // 55F968: using guessed type int (*off_55F968)(); // 55FB90: using guessed type int (*off_55FB90)(); // 55FBA4: using guessed type int (*off_55FBA4[2])(); // 55FBB8: using guessed type int (*off_55FBB8[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532990) -------------------------------------------------------- void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( _DWORD *a1) { char *v1; // ebx char *Block; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); Block = (char *)*((_DWORD *)v1 + 12); *(_DWORD *)v1 = &off_55FB90; *((_DWORD *)v1 + 18) = off_55FBB8; *((_DWORD *)v1 + 2) = off_55FBA4; *((_DWORD *)v1 + 3) = &off_55F968; if ( Block != v1 + 56 ) operator delete(Block); *((_DWORD *)v1 + 3) = &off_560464; std::locale::~locale((_DWORD **)v1 + 10); *((_DWORD *)v1 + 2) = &unk_55B2F8; *(_DWORD *)v1 = &unk_55B294; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 18) = &off_560E30; std::ios_base::~ios_base((int)(v1 + 72)); } // 55F968: using guessed type int (*off_55F968)(); // 55FB90: using guessed type int (*off_55FB90)(); // 55FBA4: using guessed type int (*off_55FBA4[2])(); // 55FBB8: using guessed type int (*off_55FBB8[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532A00) -------------------------------------------------------- void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1) { char *v1; // ebx char *Block; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); Block = (char *)*((_DWORD *)v1 + 11); *(_DWORD *)v1 = &off_55FBCC; *((_DWORD *)v1 + 17) = off_55FBE0; *((_DWORD *)v1 + 2) = &off_55F928; if ( Block != v1 + 52 ) operator delete(Block); *((_DWORD *)v1 + 2) = &off_560424; std::locale::~locale((_DWORD **)v1 + 9); *(_DWORD *)v1 = &unk_55B320; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 17) = &off_560E20; std::ios_base::~ios_base((int)(v1 + 68)); operator delete(v1); } // 55F928: using guessed type int (*off_55F928)(); // 55FBCC: using guessed type int (*off_55FBCC)(); // 55FBE0: using guessed type int (*off_55FBE0[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (00532A70) -------------------------------------------------------- void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1) { char *v1; // ebx char *Block; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); Block = (char *)*((_DWORD *)v1 + 11); *(_DWORD *)v1 = &off_55FBCC; *((_DWORD *)v1 + 17) = off_55FBE0; *((_DWORD *)v1 + 2) = &off_55F928; if ( Block != v1 + 52 ) operator delete(Block); *((_DWORD *)v1 + 2) = &off_560424; std::locale::~locale((_DWORD **)v1 + 9); *(_DWORD *)v1 = &unk_55B320; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 17) = &off_560E20; std::ios_base::~ios_base((int)(v1 + 68)); } // 55F928: using guessed type int (*off_55F928)(); // 55FBCC: using guessed type int (*off_55FBCC)(); // 55FBE0: using guessed type int (*off_55FBE0[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (00532AD0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1) { char *v1; // ebx char *Block; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); Block = (char *)*((_DWORD *)v1 + 11); *(_DWORD *)v1 = &off_55FBF4; *((_DWORD *)v1 + 17) = off_55FC08; *((_DWORD *)v1 + 2) = &off_55F968; if ( Block != v1 + 52 ) operator delete(Block); *((_DWORD *)v1 + 2) = &off_560464; std::locale::~locale((_DWORD **)v1 + 9); *(_DWORD *)v1 = &unk_55B348; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 17) = &off_560E30; std::ios_base::~ios_base((int)(v1 + 68)); operator delete(v1); } // 55F968: using guessed type int (*off_55F968)(); // 55FBF4: using guessed type int (*off_55FBF4)(); // 55FC08: using guessed type int (*off_55FC08[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532B40) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1) { char *v1; // ebx char *Block; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); Block = (char *)*((_DWORD *)v1 + 11); *(_DWORD *)v1 = &off_55FBF4; *((_DWORD *)v1 + 17) = off_55FC08; *((_DWORD *)v1 + 2) = &off_55F968; if ( Block != v1 + 52 ) operator delete(Block); *((_DWORD *)v1 + 2) = &off_560464; std::locale::~locale((_DWORD **)v1 + 9); *(_DWORD *)v1 = &unk_55B348; *((_DWORD *)v1 + 1) = 0; *((_DWORD *)v1 + 17) = &off_560E30; std::ios_base::~ios_base((int)(v1 + 68)); } // 55F968: using guessed type int (*off_55F968)(); // 55FBF4: using guessed type int (*off_55FBF4)(); // 55FC08: using guessed type int (*off_55FC08[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532BA0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1) { char *v1; // ebx char *Block; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); Block = (char *)*((_DWORD *)v1 + 10); *(_DWORD *)v1 = &off_55FC1C; *((_DWORD *)v1 + 16) = off_55FC30; *((_DWORD *)v1 + 1) = &off_55F928; if ( Block != v1 + 48 ) operator delete(Block); *((_DWORD *)v1 + 1) = &off_560424; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_55B370; *((_DWORD *)v1 + 16) = &off_560E20; std::ios_base::~ios_base((int)(v1 + 64)); operator delete(v1); } // 55F928: using guessed type int (*off_55F928)(); // 55FC1C: using guessed type int (*off_55FC1C)(); // 55FC30: using guessed type int (*off_55FC30[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (00532C10) -------------------------------------------------------- void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1) { char *v1; // ebx char *Block; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); Block = (char *)*((_DWORD *)v1 + 10); *(_DWORD *)v1 = &off_55FC1C; *((_DWORD *)v1 + 16) = off_55FC30; *((_DWORD *)v1 + 1) = &off_55F928; if ( Block != v1 + 48 ) operator delete(Block); *((_DWORD *)v1 + 1) = &off_560424; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_55B370; *((_DWORD *)v1 + 16) = &off_560E20; std::ios_base::~ios_base((int)(v1 + 64)); } // 55F928: using guessed type int (*off_55F928)(); // 55FC1C: using guessed type int (*off_55FC1C)(); // 55FC30: using guessed type int (*off_55FC30[2])(); // 560424: using guessed type int (*off_560424)(); // 560E20: using guessed type int (*off_560E20)(); //----- (00532C70) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1) { char *v1; // ebx char *Block; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); Block = (char *)*((_DWORD *)v1 + 10); *(_DWORD *)v1 = &off_55FC44; *((_DWORD *)v1 + 16) = off_55FC58; *((_DWORD *)v1 + 1) = &off_55F968; if ( Block != v1 + 48 ) operator delete(Block); *((_DWORD *)v1 + 1) = &off_560464; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_55B398; *((_DWORD *)v1 + 16) = &off_560E30; std::ios_base::~ios_base((int)(v1 + 64)); operator delete(v1); } // 55F968: using guessed type int (*off_55F968)(); // 55FC44: using guessed type int (*off_55FC44)(); // 55FC58: using guessed type int (*off_55FC58[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532CE0) -------------------------------------------------------- void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1) { char *v1; // ebx char *Block; // eax v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); Block = (char *)*((_DWORD *)v1 + 10); *(_DWORD *)v1 = &off_55FC44; *((_DWORD *)v1 + 16) = off_55FC58; *((_DWORD *)v1 + 1) = &off_55F968; if ( Block != v1 + 48 ) operator delete(Block); *((_DWORD *)v1 + 1) = &off_560464; std::locale::~locale((_DWORD **)v1 + 8); *(_DWORD *)v1 = &unk_55B398; *((_DWORD *)v1 + 16) = &off_560E30; std::ios_base::~ios_base((int)(v1 + 64)); } // 55F968: using guessed type int (*off_55F968)(); // 55FC44: using guessed type int (*off_55FC44)(); // 55FC58: using guessed type int (*off_55FC58[2])(); // 560464: using guessed type int (*off_560464)(); // 560E30: using guessed type int (*off_560E30)(); //----- (00532D40) -------------------------------------------------------- int __fastcall std::filebuf::close(void)::__close_sentry::~__close_sentry(int *a1) { int v2; // ebx bool v3; // zf int result; // eax int v5; // edx int v6; // edx v2 = *a1; v3 = *(_BYTE *)(*a1 + 72) == 0; *(_DWORD *)(v2 + 48) = 0; *(_BYTE *)(v2 + 84) = 0; if ( !v3 ) { if ( *(_DWORD *)(v2 + 64) ) operator delete[](*(void **)(v2 + 64)); *(_DWORD *)(v2 + 64) = 0; *(_BYTE *)(v2 + 72) = 0; } if ( *(_DWORD *)(v2 + 92) ) operator delete[](*(void **)(v2 + 92)); result = *a1; *(_DWORD *)(v2 + 92) = 0; *(_DWORD *)(v2 + 96) = 0; *(_DWORD *)(v2 + 100) = 0; *(_DWORD *)(v2 + 104) = 0; *(_WORD *)(result + 73) = 0; v5 = *(_DWORD *)(result + 64); *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 4) = v5; *(_DWORD *)(result + 8) = v5; *(_DWORD *)(result + 12) = v5; v6 = *(_DWORD *)(result + 52); *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 24) = 0; *(_DWORD *)(result + 56) = v6; *(_DWORD *)(result + 60) = v6; return result; } //----- (00532DE0) -------------------------------------------------------- int __fastcall std::wfilebuf::close(void)::__close_sentry::~__close_sentry(int *a1) { int v2; // ebx bool v3; // zf int result; // eax int v5; // edx int v6; // edx v2 = *a1; v3 = *(_BYTE *)(*a1 + 72) == 0; *(_DWORD *)(v2 + 48) = 0; *(_BYTE *)(v2 + 88) = 0; if ( !v3 ) { if ( *(_DWORD *)(v2 + 64) ) operator delete[](*(void **)(v2 + 64)); *(_DWORD *)(v2 + 64) = 0; *(_BYTE *)(v2 + 72) = 0; } if ( *(_DWORD *)(v2 + 96) ) operator delete[](*(void **)(v2 + 96)); result = *a1; *(_DWORD *)(v2 + 96) = 0; *(_DWORD *)(v2 + 100) = 0; *(_DWORD *)(v2 + 104) = 0; *(_DWORD *)(v2 + 108) = 0; *(_WORD *)(result + 73) = 0; v5 = *(_DWORD *)(result + 64); *(_DWORD *)(result + 20) = 0; *(_DWORD *)(result + 4) = v5; *(_DWORD *)(result + 8) = v5; *(_DWORD *)(result + 12) = v5; v6 = *(_DWORD *)(result + 52); *(_DWORD *)(result + 16) = 0; *(_DWORD *)(result + 24) = 0; *(_DWORD *)(result + 56) = v6; *(_DWORD *)(result + 60) = v6; return result; } //----- (00532EC0) -------------------------------------------------------- int __cdecl operator new[](unsigned int a1) { return operator new[](a1); } //----- (00532F50) -------------------------------------------------------- void *__cdecl operator new(size_t a1) { size_t Size; // ebx void *result; // eax void (*new_handler)(void); // eax _DWORD *exception; // eax Size = 1; if ( a1 ) Size = a1; while ( 1 ) { result = malloc(Size); if ( result ) break; new_handler = (void (*)(void))std::get_new_handler(); if ( !new_handler ) { exception = __cxa_allocate_exception(4u); *exception = &off_560E0C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_alloc, (void (__cdecl *)(void *))std::bad_alloc::~bad_alloc); } new_handler(); } return result; } // 55C490: using guessed type int *`typeinfo for'std::bad_alloc; // 560E0C: using guessed type void (__cdecl *off_560E0C)(std::bad_alloc *__hidden this); //----- (00532FB0) -------------------------------------------------------- int __cxa_allocate_dependent_exception() { void *v0; // eax int v1; // ebx v0 = malloc(0x50u); if ( v0 ) { v1 = (int)v0; } else { `anonymous namespace'::pool::allocate(); v1 = 80; } *(_DWORD *)v1 = 0; *(_DWORD *)(v1 + 76) = 0; memset((void *)((v1 + 4) & 0xFFFFFFFC), 0, 4 * ((v1 - ((v1 + 4) & 0xFFFFFFFC) + 80) >> 2)); return v1; } //----- (00533040) -------------------------------------------------------- void *__cdecl __cxa_allocate_exception(size_t thrown_size) { _DWORD *v1; // eax _DWORD *v2; // edx v1 = malloc(thrown_size + 96); if ( v1 ) { v2 = v1; } else { `anonymous namespace'::pool::allocate(); v2 = (_DWORD *)(thrown_size + 96); if ( thrown_size == -96 ) 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; } //----- (005330D0) -------------------------------------------------------- void *__cdecl __cxa_begin_catch(void *a1) { char **globals; // eax char *v2; // edx char *v3; // ebp int v5; // ecx int v6; // edi globals = (char **)__cxa_get_globals(); v2 = *globals; v3 = (char *)a1 - 48; if ( (unsigned __int64)(*(_QWORD *)a1 - 0x474E5543432B2B00LL) <= 1 ) { v5 = *((_DWORD *)a1 - 7); v6 = 1 - v5; if ( v5 >= 0 ) v6 = v5 + 1; *((_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; } } //----- (00533160) -------------------------------------------------------- void __cdecl __noreturn __cxa_call_terminate(_Unwind_Exception *a1) { if ( a1 ) { __cxa_begin_catch(a1); if ( !(((unsigned int)(*(_DWORD *)a1 - 1126902528) > 1) + ((unsigned __int64)(*(_QWORD *)a1 - 0x474E5543432B2B00LL) >> 32)) ) __cxxabiv1::__terminate(*((void (**)(void))a1 - 9)); } std::terminate(); } //----- (005331B0) -------------------------------------------------------- void __cdecl __noreturn __cxa_call_unexpected(void *a1) { __cxa_begin_catch(a1); __cxxabiv1::__unexpected(*((void (**)(void))a1 - 10)); } //----- (00533350) -------------------------------------------------------- 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; } //----- (00533370) -------------------------------------------------------- void __noreturn __cxa_deleted_virtual(void) { write(2, "deleted virtual method called\n", 0x1Eu); std::terminate(); } //----- (005333A0) -------------------------------------------------------- void __cxa_end_catch(void) { _DWORD *globals_fast; // edx _DWORD *v1; // eax int v2; // ecx int v3; // ecx globals_fast = __cxa_get_globals_fast(); v1 = (_DWORD *)*globals_fast; if ( *globals_fast ) { if ( ((unsigned int)(v1[12] - 1126902528) > 1) + ((unsigned __int64)(*((_QWORD *)v1 + 6) - 0x474E5543432B2B00LL) >> 32) ) { *globals_fast = 0; _Unwind_DeleteException((struct _Unwind_Exception *)(v1 + 12)); return; } v2 = v1[5]; if ( v2 < 0 ) { v3 = v2 + 1; if ( !v3 ) *globals_fast = v1[4]; } else { v3 = v2 - 1; if ( !v3 ) { *globals_fast = v1[4]; _Unwind_DeleteException((struct _Unwind_Exception *)(v1 + 12)); return; } if ( v3 == -1 ) std::terminate(); } v1[5] = v3; } } //----- (00533440) -------------------------------------------------------- void __cdecl __cxa_free_dependent_exception(char *Block) { if ( Block > ::Block && Block < (char *)::Block + dword_53E500 ) `anonymous namespace'::pool::free((int)Block); else free(Block); } // 53E500: using guessed type int dword_53E500; //----- (005334B0) -------------------------------------------------------- void __cdecl __cxa_free_exception(void *a1) { char *v1; // eax v1 = (char *)a1 - 96; if ( (char *)a1 - 96 > Block && v1 < (char *)Block + dword_53E500 ) `anonymous namespace'::pool::free((int)v1); else free((char *)a1 - 96); } // 53E500: using guessed type int dword_53E500; //----- (00533520) -------------------------------------------------------- void *__cdecl __cxa_get_exception_ptr(void *a1) { return (void *)*((_DWORD *)a1 - 2); } //----- (00533530) -------------------------------------------------------- _DWORD *__cxa_get_globals() { return __emutls_get_address(__emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global); } // 53FD00: using guessed type size_t __emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global[4]; //----- (00533550) -------------------------------------------------------- _DWORD *__cxa_get_globals_fast() { return __emutls_get_address(__emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global); } // 53FD00: using guessed type size_t __emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global[4]; //----- (00533570) -------------------------------------------------------- void __cdecl __cxa_guard_abort(__guard *a1) { *((_BYTE *)a1 + 1) = 0; if ( _CRT_MT ) { if ( __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) __gnu_cxx::__throw_concurrence_unlock_error(); } } // 53E1E4: using guessed type int _CRT_MT; // 53F0C0: using guessed type int `anonymous namespace'::static_mutex; //----- (00533610) -------------------------------------------------------- int __cdecl __cxa_guard_acquire(__guard *a1) { _DWORD *exception; // eax int lpuexcpt; // [esp+18h] [ebp-44h] if ( *(_BYTE *)a1 ) return 0; lpuexcpt = _CRT_MT; if ( _CRT_MT ) { __gthr_win32_once( (int)&`anonymous namespace'::get_static_mutex(void)::once, (void (*)(void))`anonymous namespace'::init); if ( _CRT_MT ) { if ( __gthr_win32_recursive_mutex_lock(`anonymous namespace'::static_mutex) ) { exception = __cxa_allocate_exception(4u); *exception = &off_55F348; __cxa_throw( exception, (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); } 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 ) { if ( *((_BYTE *)a1 + 1) ) __cxxabiv1::throw_recursive_init_exception(); LABEL_5: lpuexcpt = 1; *((_BYTE *)a1 + 1) = 1; } return lpuexcpt; } // 53E1E4: using guessed type int _CRT_MT; // 53F0C0: using guessed type int `anonymous namespace'::static_mutex; // 55B6E8: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; // 55F348: using guessed type void (__cdecl *off_55F348)(__gnu_cxx::__concurrence_lock_error *__hidden this); //----- (005337B0) -------------------------------------------------------- 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) ) __gnu_cxx::__throw_concurrence_unlock_error(); } } // 53E1E4: using guessed type int _CRT_MT; // 53F0C0: using guessed type int `anonymous namespace'::static_mutex; //----- (00533850) -------------------------------------------------------- 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; } //----- (005338A0) -------------------------------------------------------- void __noreturn __cxa_pure_virtual(void) { write(2, "pure virtual method called\n", 0x1Bu); std::terminate(); } //----- (005338D0) -------------------------------------------------------- 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_SjLj_Resume_or_Rethrow((struct _Unwind_Exception *)(v1 + 48)); } std::terminate(); } //----- (00533930) -------------------------------------------------------- void __cdecl __noreturn __cxa_throw(void *a1, struct type_info *lptinfo, void (__cdecl *a3)(void *)) { _DWORD *globals; // eax _DWORD *inited; // eax void *v5; // ebx globals = __cxa_get_globals(); ++globals[1]; inited = (_DWORD *)__cxa_init_primary_exception((int)a1, (int)lptinfo, (int)a3); v5 = inited + 16; *inited = 1; _Unwind_SjLj_RaiseException((struct _Unwind_Exception *)(inited + 16)); __cxa_begin_catch(v5); std::terminate(); } //----- (00533980) -------------------------------------------------------- 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 void *result; // eax char *v9; // [esp+48h] [ebp-20h] BYREF int v10; // [esp+4Ch] [ebp-1Ch] int v11; // [esp+50h] [ebp-18h] int v12; // [esp+54h] [ebp-14h] int v13; // [esp+58h] [ebp-10h] v4 = *(_DWORD *)(*(_DWORD *)lpsrc - 8); v5 = *(_DWORD *)(*(_DWORD *)lpsrc - 4); v9 = 0; v10 = 0; v6 = (int *)((char *)lpsrc + v4); v11 = 0; v7 = *v6; v12 = 0; v13 = 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, &v9); result = v9; if ( !v9 ) return 0; if ( (v12 & 6) != 6 && ((unsigned __int8)v11 & (unsigned __int8)v10 & 6) != 6 ) { if ( (v11 & 5) != 4 && !v12 ) { 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, v9, lpstype, lpsrc) & 6) == 6 ) { return v9; } } else if ( lpsrc == &v9[s2d] ) { return v9; } } return 0; } return result; } //----- (00533AA0) -------------------------------------------------------- int __cdecl __gxx_personality_sj0(int a1, int a2, __int64 a3, _Unwind_Exception *v, struct _Unwind_Context *lpuctx) { int IPInfo; // eax int v7; // ebp char *v8; // eax int v9; // edi int v10; // ecx char v11; // bl int v12; // edx int v13; // esi int v14; // ecx char v15; // bl int v16; // edx int v17; // edx unsigned int v18; // ecx char *v19; // esi char v20; // bl int v21; // eax char *v22; // ebx int v23; // esi unsigned int v24; // ecx int v25; // edi char v26; // dl int v27; // eax int v28; // esi char *v29; // edx int v30; // ecx char v31; // bl int v32; // eax int v33; // edx unsigned __int8 v34; // al int v35; // ecx int *v36; // eax bool v37; // [esp+18h] [ebp-B4h] int v38; // [esp+18h] [ebp-B4h] int v39; // [esp+20h] [ebp-ACh] char *v40; // [esp+20h] [ebp-ACh] int v41; // [esp+24h] [ebp-A8h] char *v42; // [esp+24h] [ebp-A8h] int v43; // [esp+28h] [ebp-A4h] int v44; // [esp+2Ch] [ebp-A0h] unsigned __int64 v45; // [esp+30h] [ebp-9Ch] char v46; // [esp+3Bh] [ebp-91h] char *LanguageSpecificData; // [esp+3Ch] [ebp-90h] int **v48; // [esp+40h] [ebp-8Ch] int v49; // [esp+48h] [ebp-84h] int *v50; // [esp+8Ch] [ebp-40h] BYREF unsigned int v51; // [esp+90h] [ebp-3Ch] BYREF unsigned __int8 v52[4]; // [esp+94h] [ebp-38h] BYREF char v53[8]; // [esp+98h] [ebp-34h] BYREF int *v54; // [esp+A0h] [ebp-2Ch] int v55; // [esp+A4h] [ebp-28h] int v56; // [esp+A8h] [ebp-24h] char v57; // [esp+ACh] [ebp-20h] v50 = 0; v51 = 0; if ( a1 != 1 ) return 3; v45 = a3 - 0x474E5543432B2B00LL; v37 = (unsigned __int64)(a3 - 0x474E5543432B2B00LL) <= 1; v46 = v37 && a2 == 6; if ( v46 ) { v39 = *((_DWORD *)v - 3); if ( v39 ) { v41 = *((_DWORD *)v - 6); LanguageSpecificData = (char *)*((_DWORD *)v - 4); goto LABEL_5; } goto LABEL_44; } LanguageSpecificData = (char *)_Unwind_GetLanguageSpecificData((int)lpuctx); if ( !LanguageSpecificData ) return 8; v42 = parse_lsda_header((int)lpuctx, LanguageSpecificData, (int)v53); v54 = (int *)base_of_encoded_value(v57); IPInfo = _Unwind_GetIPInfo((int)lpuctx, &v51); v7 = (__PAIR64__(IPInfo, v51) - 1) >> 32; v39 = v7; if ( v7 < 0 ) return 8; if ( !v7 ) { v41 = 0; v33 = 1; v44 = 0; goto LABEL_49; } v8 = v42; do { v9 = 0; v10 = 0; do { v11 = *v8++; v12 = (v11 & 0x7F) << v10; v10 += 7; v9 |= v12; } while ( v11 < 0 ); v13 = 0; v14 = 0; do { v15 = *v8++; v16 = (v15 & 0x7F) << v14; v14 += 7; v13 |= v16; } while ( v15 < 0 ); --v7; } while ( v7 ); v49 = v9 + 1; if ( !v13 ) { if ( v9 == -1 ) return 8; goto LABEL_46; } if ( v9 == -1 ) return 8; v44 = v56 + v13 - 1; if ( v56 + v13 == 1 ) goto LABEL_46; v48 = &`typeinfo for'__cxxabiv1::__forced_unwind; if ( (a2 & 8) == 0 ) { v48 = &`typeinfo for'__cxxabiv1::__foreign_exception; if ( v45 <= 1 ) { v36 = (int *)((char *)v + 32); if ( (*(_BYTE *)v & 1) != 0 ) v36 = (int *)*((_DWORD *)v - 12); v50 = v36; v48 = (int **)*(v36 - 20); } } while ( 1 ) { v17 = 0; v18 = 0; v19 = (char *)v44; do { v20 = *v19++; v21 = (v20 & 0x7F) << v18; v18 += 7; v17 |= v21; } while ( v20 < 0 ); v40 = v19; if ( v18 <= 0x1F && (v20 & 0x40) != 0 ) v17 |= -(1 << v18); v41 = v17; v22 = v19; v23 = 0; v24 = 0; v25 = v17; do { v26 = *v22++; v27 = (v26 & 0x7F) << v24; v24 += 7; v23 |= v27; } while ( v26 < 0 ); v43 = v23; if ( v24 <= 0x1F && (v26 & 0x40) != 0 ) v43 = -(1 << v24) | v23; if ( !v25 ) { v46 = 1; goto LABEL_41; } if ( v25 > 0 ) break; if ( (a2 & 8) == 0 && v37 && v48 ) { if ( !(unsigned __int8)check_exception_spec((int)v53, (int)v48, v50, v25) ) { if ( (a2 & 1) != 0 ) { v39 = v49; goto LABEL_56; } v39 = v49; if ( (a2 & 8) == 0 ) { v33 = 3; LABEL_51: if ( v45 <= 1 ) { if ( v33 != 1 ) { LABEL_5: if ( v41 < 0 ) { parse_lsda_header((int)lpuctx, LanguageSpecificData, (int)v53); v54 = (int *)base_of_encoded_value(v57); *((_DWORD *)v - 3) = base_of_encoded_value(v57); } LABEL_7: _Unwind_SetGR(lpuctx, 0, (_Unwind_Word)v); _Unwind_SetGR(lpuctx, 1, v41); _Unwind_SetIP((int)lpuctx, v39); return 7; } LABEL_44: __cxa_call_terminate(v); } LABEL_52: if ( v33 == 1 ) std::terminate(); } if ( v41 < 0 ) std::unexpected(); goto LABEL_7; } } else { v28 = 0; v29 = (char *)(v55 + ~v25); v30 = 0; do { v31 = *v29++; v32 = (v31 & 0x7F) << v30; v30 += 7; v28 |= v32; } while ( v31 < 0 ); if ( !v28 ) goto LABEL_67; } LABEL_41: if ( !v43 ) { if ( !v46 ) return 8; LABEL_46: if ( (a2 & 1) == 0 ) { v41 = a2 & 8; v39 = v49; if ( (a2 & 8) != 0 ) v41 = 0; goto LABEL_7; } return 8; } v44 = (int)&v40[v43]; } if ( v57 == -1 ) { v35 = 0; goto LABEL_64; } v34 = v57 & 7; if ( (v57 & 7) == 2 ) { v35 = -2 * v25; goto LABEL_64; } if ( v34 <= 2u ) { if ( v34 ) LABEL_85: abort(); goto LABEL_69; } if ( v34 == 3 ) { LABEL_69: v35 = -4 * v25; goto LABEL_64; } if ( v34 != 4 ) goto LABEL_85; v35 = -8 * v25; LABEL_64: read_encoded_value_with_base(v57, v54, (int *)(v55 + v35), (int *)v52); if ( *(_DWORD *)v52 && (!v48 || !(unsigned __int8)get_adjusted_ptr(*(int *)v52, (int)v48, &v50)) ) goto LABEL_41; LABEL_67: v33 = 3; v39 = v49; LABEL_49: if ( (a2 & 1) == 0 ) { if ( (a2 & 8) == 0 ) goto LABEL_51; goto LABEL_52; } v38 = 6; if ( v45 <= 1 ) { LABEL_56: v38 = 6; *((_DWORD *)v - 6) = v41; *((_DWORD *)v - 5) = v44; *((_DWORD *)v - 4) = LanguageSpecificData; *((_DWORD *)v - 2) = v50; *((_DWORD *)v - 3) = v39; } return v38; } // 55B60C: using guessed type int *`typeinfo for'__cxxabiv1::__forced_unwind; // 55B620: using guessed type int *`typeinfo for'__cxxabiv1::__foreign_exception; //----- (005341E0) -------------------------------------------------------- void __tcf_0_4(void) { if ( _CRT_MT ) __gthr_win32_mutex_destroy((int)&`anonymous namespace'::emergency_pool); } // 53E1E4: using guessed type int _CRT_MT; //----- (00534250) -------------------------------------------------------- void __tcf_0_5(void) { if ( _CRT_MT ) __gthr_win32_mutex_destroy((int)&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); } // 53E1E4: using guessed type int _CRT_MT; //----- (00534280) -------------------------------------------------------- void __tcf_0_6(void) { if ( _CRT_MT ) __gthr_win32_mutex_destroy((int)&`anonymous namespace'::get_locale_mutex(void)::locale_mutex); } // 53E1E4: using guessed type int _CRT_MT; //----- (005342F0) -------------------------------------------------------- void __cdecl __tcf_0_7(std::_V2::error_category *a1) { `anonymous namespace'::__io_category_instance(void)::__ec = &off_55F16C; std::_V2::error_category::~error_category(a1); } // 53FCD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); // 55F16C: using guessed type void (__cdecl *off_55F16C)(_anonymous_namespace_::io_error_category *__hidden this); //----- (00534330) -------------------------------------------------------- int main(int argc, const char **argv, const char **envp) { int *v3; // edi _DWORD *v4; // eax _BYTE *v5; // edx char v6; // al char v7; // al FILE *v8; // eax int v9; // edx char *v10; // eax _DWORD *v11; // eax _DWORD *v12; // eax char v13; // al FILE *v14; // eax void **v15; // ebx char *v16; // ecx int v17; // edx int v18; // edx char *v19; // eax char *v20; // eax char *v21; // eax _DWORD *v22; // edx int v23; // edx _DWORD *v24; // eax int v25; // edx FILE *v26; // eax bool v27; // zf int *v28; // eax std::ostream::sentry *v29; // edx int *v30; // eax _DWORD *v31; // eax unsigned __int8 **v32; // eax unsigned __int8 **v33; // eax int *j; // eax std::ostream::sentry *v35; // eax std::ostream::sentry *v36; // eax _DWORD *v37; // eax FILE *v38; // eax int v39; // edx int v40; // edx int v41; // edx char v43; // [esp+1h] [ebp-38Bh] char v44; // [esp+2h] [ebp-38Ah] char v45; // [esp+3h] [ebp-389h] const char **v46; // [esp+4h] [ebp-388h] int v47; // [esp+8h] [ebp-384h] FILE *v48; // [esp+Ch] [ebp-380h] int v49; // [esp+Ch] [ebp-380h] int v50; // [esp+Ch] [ebp-380h] bool v51; // [esp+10h] [ebp-37Ch] int v52; // [esp+10h] [ebp-37Ch] char v53; // [esp+14h] [ebp-378h] int *flag; // [esp+14h] [ebp-378h] int v55; // [esp+18h] [ebp-374h] std::ostream::sentry *i; // [esp+18h] [ebp-374h] std::ostream::sentry *v57; // [esp+18h] [ebp-374h] _DWORD *Block; // [esp+1Ch] [ebp-370h] bool v59; // [esp+20h] [ebp-36Ch] int v60; // [esp+20h] [ebp-36Ch] std::ostream::sentry *v61; // [esp+20h] [ebp-36Ch] std::ostream::sentry *v62; // [esp+20h] [ebp-36Ch] int *k; // [esp+20h] [ebp-36Ch] char *FileName; // [esp+24h] [ebp-368h] char *FileNamea; // [esp+24h] [ebp-368h] int v66; // [esp+28h] [ebp-364h] int v67; // [esp+28h] [ebp-364h] int v68; // [esp+28h] [ebp-364h] int v69; // [esp+28h] [ebp-364h] int v70; // [esp+28h] [ebp-364h] int Stream; // [esp+2Ch] [ebp-360h] FILE *Streama; // [esp+2Ch] [ebp-360h] FILE *Streamk; // [esp+2Ch] [ebp-360h] FILE *Streamb; // [esp+2Ch] [ebp-360h] FILE *Streamc; // [esp+2Ch] [ebp-360h] FILE *Streamd; // [esp+2Ch] [ebp-360h] FILE *Streame; // [esp+2Ch] [ebp-360h] FILE *Streaml; // [esp+2Ch] [ebp-360h] FILE *Streamf; // [esp+2Ch] [ebp-360h] FILE *Streamg; // [esp+2Ch] [ebp-360h] int *Streamh; // [esp+2Ch] [ebp-360h] FILE *Streamm; // [esp+2Ch] [ebp-360h] FILE *Streami; // [esp+2Ch] [ebp-360h] FILE *Streamn; // [esp+2Ch] [ebp-360h] FILE *Streamj; // [esp+2Ch] [ebp-360h] void **v86; // [esp+68h] [ebp-324h] BYREF void **v87; // [esp+6Ch] [ebp-320h] int v88; // [esp+70h] [ebp-31Ch] _DWORD *v89; // [esp+74h] [ebp-318h] BYREF int v90; // [esp+78h] [ebp-314h] int v91; // [esp+7Ch] [ebp-310h] void **v92; // [esp+80h] [ebp-30Ch] BYREF int v93; // [esp+84h] [ebp-308h] int v94; // [esp+88h] [ebp-304h] char *v95; // [esp+8Ch] [ebp-300h] BYREF int v96; // [esp+90h] [ebp-2FCh] char v97; // [esp+94h] [ebp-2F8h] BYREF char *v98; // [esp+A4h] [ebp-2E8h] BYREF int v99; // [esp+A8h] [ebp-2E4h] char v100; // [esp+ACh] [ebp-2E0h] BYREF int v101; // [esp+BCh] [ebp-2D0h] BYREF int v102[5]; // [esp+C0h] [ebp-2CCh] BYREF void *v103[6]; // [esp+D4h] [ebp-2B8h] BYREF void *v104[6]; // [esp+ECh] [ebp-2A0h] BYREF int v105; // [esp+104h] [ebp-288h] BYREF int v106[5]; // [esp+108h] [ebp-284h] BYREF int v107; // [esp+11Ch] [ebp-270h] BYREF int v108[5]; // [esp+120h] [ebp-26Ch] BYREF int v109; // [esp+134h] [ebp-258h] BYREF int v110[5]; // [esp+138h] [ebp-254h] BYREF void *v111[2]; // [esp+14Ch] [ebp-240h] BYREF char v112; // [esp+154h] [ebp-238h] BYREF void *v113[2]; // [esp+164h] [ebp-228h] BYREF char v114; // [esp+16Ch] [ebp-220h] BYREF int v115; // [esp+17Ch] [ebp-210h] BYREF int v116; // [esp+180h] [ebp-20Ch] BYREF std::ostream::sentry *v117; // [esp+184h] [ebp-208h] int *v118; // [esp+188h] [ebp-204h] int *v119; // [esp+18Ch] [ebp-200h] int v120; // [esp+190h] [ebp-1FCh] int v121; // [esp+194h] [ebp-1F8h] BYREF int v122[2]; // [esp+198h] [ebp-1F4h] BYREF int *v123; // [esp+1A0h] [ebp-1ECh] int *v124; // [esp+1A4h] [ebp-1E8h] int v125; // [esp+1A8h] [ebp-1E4h] _DWORD v126[6]; // [esp+1ACh] [ebp-1E0h] BYREF void *v127[6]; // [esp+1C4h] [ebp-1C8h] BYREF void *v128[6]; // [esp+1DCh] [ebp-1B0h] BYREF void *v129[6]; // [esp+1F4h] [ebp-198h] BYREF void *v130[6]; // [esp+20Ch] [ebp-180h] BYREF int v131; // [esp+224h] [ebp-168h] BYREF int v132; // [esp+228h] [ebp-164h] int v133; // [esp+22Ch] [ebp-160h] char *String[6]; // [esp+23Ch] [ebp-150h] BYREF void *v135[6]; // [esp+254h] [ebp-138h] BYREF char *v136[6]; // [esp+26Ch] [ebp-120h] BYREF int v137; // [esp+284h] [ebp-108h] BYREF int v138; // [esp+288h] [ebp-104h] char v139; // [esp+28Ch] [ebp-100h] BYREF char *v140; // [esp+29Ch] [ebp-F0h] BYREF int v141; // [esp+2A0h] [ebp-ECh] int v142[4]; // [esp+2A4h] [ebp-E8h] BYREF int v143; // [esp+2B4h] [ebp-D8h] BYREF int v144; // [esp+2B8h] [ebp-D4h] char v145[4]; // [esp+2BCh] [ebp-D0h] BYREF char v146[196]; // [esp+2C0h] [ebp-CCh] BYREF int *p_argc; // [esp+384h] [ebp-8h] p_argc = &argc; v47 = argc; v46 = argv; __main(); v95 = &v97; v98 = &v100; v86 = 0; v87 = 0; v88 = 0; v96 = 0; v97 = 0; v99 = 0; v100 = 0; v89 = 0; v90 = 0; v91 = 0; v92 = 0; v93 = 0; v94 = 0; v102[0] = 0; v102[1] = 0; v102[2] = (int)v102; v102[3] = (int)v102; v102[4] = 0; std::string::basic_string(v103, "$gwx"); std::string::basic_string(v104, " "); v106[0] = 0; v106[1] = 0; v106[2] = (int)v106; v106[3] = (int)v106; v106[4] = 0; for ( Stream = 1; Stream < v47; ++Stream ) { std::string::basic_string((void **)&v143, "--config-path"); v66 = Stream; FileName = (char *)&v46[Stream]; v59 = 0; if ( !std::string::compare((int)&v143, *(char **)FileName) ) v59 = Stream + 1 < v47; std::string::_M_dispose((void **)&v143); if ( v59 ) { ++Stream; std::string::operator=((unsigned int *)&v98, (char *)v46[v66 + 1]); } else { std::string::basic_string((void **)&v143, *(char **)FileName); std::vector::emplace_back((void **)&v89, &v143); std::string::_M_dispose((void **)&v143); } } if ( v99 ) { v138 = 0; v137 = (int)&v139; v139 = 0; ReadFile(v98, (unsigned int *)&v137); while ( v138 ) { std::string::basic_string((void **)&v140, "\n"); GetNextArg((int)&v143, &v137, (int)&v140); std::vector::emplace_back((void **)&v89, &v143); std::string::_M_dispose((void **)&v143); std::string::_M_dispose((void **)&v140); } std::string::_M_dispose((void **)&v137); } Streama = 0; v43 = 0; v44 = 0; v60 = 0; v53 = 0; v55 = -1431655765 * ((v90 - (int)v89) >> 3); v45 = 0; FileNamea = 0; while ( (int)Streama < v55 ) { v67 = 6 * (_DWORD)Streama; v4 = &v89[6 * (_DWORD)Streama]; v5 = (_BYTE *)*v4; if ( *(_BYTE *)*v4 != 45 ) { std::vector::push_back((int)&v86, (int)v4); goto LABEL_84; } v6 = v5[1]; switch ( v6 ) { case 'd': v7 = v5[2]; if ( !v7 ) { v60 |= 2u; goto LABEL_84; } if ( v7 == 115 ) { v60 |= 4u; goto LABEL_84; } break; case 's': if ( v5[2] == 116 ) { v60 |= 8u; goto LABEL_84; } if ( (int)&Streama->_ptr + 1 < v55 ) { std::vector::push_back((int)&v86, (int)&v89[v67 + 6]); v45 = 1; goto LABEL_84; } break; case 'v': if ( v5[2] == 'b'/*98*/ ) v60 |= 0x10u; else v44 = 1; goto LABEL_84; case 'x': if ( v5[2] == 99 && (int)&Streama->_ptr + 1 < v55 ) { v53 = 1; if ( *(_BYTE *)v89[v67 + 6] != 45 ) { std::string::_M_assign((int)&v95, (int)&v89[v67 + 6]); v53 = 1; Streama = (FILE *)((char *)Streama + 1); } goto LABEL_84; } break; case 'c': if ( v5[2] == 99 && (int)&Streama->_ptr + 1 < v55 ) { v53 = 0; if ( *(_BYTE *)v89[v67 + 6] != 45 ) { std::string::_M_assign((int)&v95, (int)&v89[v67 + 6]); v53 = 0; Streama = (FILE *)((char *)Streama + 1); } goto LABEL_84; } break; case 'o': v8 = (FILE *)((char *)&Streama->_ptr + 1); if ( (int)&Streama->_ptr + 1 < v55 ) { FileNamea = (char *)v89[v67 + 6]; LABEL_72: Streama = v8; goto LABEL_84; } break; case 'g': if ( v5[2] == 110 && (int)&Streama->_ptr + 1 < v55 ) { std::string::_M_assign((int)v103, (int)&v89[v67 + 6]); v8 = (FILE *)((char *)&Streama->_ptr + 1); goto LABEL_72; } break; case 'p': v60 |= 0x20u; goto LABEL_84; case 't': v60 |= 1u; goto LABEL_84; case 'i': v60 |= 0x40u; goto LABEL_84; // continue; } std::string::basic_string((void **)&v143, "--split"); v51 = std::operator==((int)&v89[v67], (int)&v143); if ( v51 ) v51 = (int)&Streama->_ptr + 1 < v55; std::string::_M_dispose((void **)&v143); if ( v51 ) { Streama = (FILE *)((char *)Streama + 1); std::string::_M_assign((int)v104, (int)&v89[v67 + 6]); goto LABEL_84; } v9 = v89[6 * (_DWORD)Streama]; if ( *(_BYTE *)(v9 + 1) == 99 && *(_BYTE *)(v9 + 2) == 98 ) { LOBYTE(v142[0]) = 0; v140 = (char *)v142; v10 = (char *)v89[v67 + 6]; Streama = (FILE *)((char *)Streama + 1); v60 |= 0x80u; v141 = 0; ReadFile(v10, (unsigned int *)&v140); if ( v141 ) { std::string::basic_string((void **)&v143, "life_cycle_callback_content"); v11 = std::map::operator[](&v105, &v143); std::string::_M_assign((int)v11, (int)&v140); std::string::_M_dispose((void **)&v143); } std::string::_M_dispose((void **)&v140); } else { if ( !std::string::compare((int)&v89[v67], "--pm") ) { v48 = (FILE *)((char *)&Streama->_ptr + 1); if ( (int)&Streama->_ptr + 1 < v55 ) { Streamk = (FILE *)&v89[v67 + 6]; std::string::basic_string((void **)&v143, "plain_text_marker"); v12 = std::map::operator[](&v105, &v143); std::string::_M_assign((int)v12, (int)Streamk); std::string::_M_dispose((void **)&v143); v8 = v48; goto LABEL_72; } } v49 = v89[6 * (_DWORD)Streama]; if ( *(_BYTE *)(v49 + 1) == 108 && *(_BYTE *)(v49 + 2) == 108 ) { v13 = *(_BYTE *)(v49 + 3); if ( v13 != 119 ) { if ( v13 != 97 ) { v14 = ___acrt_iob_func(2u); fprintf(v14, "Error: expected -llw or -lla, but got %s", (const char *)v49); v68 = -1; goto LABEL_153; } v51 = 1; } if ( !std::string::compare((int)v104, " ") ) std::string::basic_string((void **)&v143, ","); else std::string::basic_string((char *)&v143, (int)v104); Streama = (FILE *)((char *)Streama + 1); Split((int)&v131, &v89[v67 + 6], (int)&v143); v15 = (void **)v131; v16 = (char *)v92; v131 = 0; v17 = v93; v92 = v15; v140 = v16; v93 = v132; v142[0] = v94; v141 = v17; v94 = v133; v132 = 0; v133 = 0; std::vector::~vector((void ***)&v140, v17); std::vector::~vector((void ***)&v131, v18); std::string::_M_dispose((void **)&v143); v43 = 1; v53 = v51; } } LABEL_84: Streama = (FILE *)((char *)Streama + 1); } if ( v44 ) { std::string::basic_string((void **)&v143, "global"); WXML::Compiler::GetVersionInfo((int)&v140, &v143); std::string::_M_dispose((void **)&v143); Streamb = ___acrt_iob_func(1u); if ( FileNamea && *FileNamea ) Streamb = fopen(FileNamea, "w"); fprintf(Streamb, "%s\n", v140); fclose(Streamb); std::string::_M_dispose((void **)&v140); } if ( v86 == v87 ) { v68 = Usage(v47, v46); } else { v108[0] = 0; v108[2] = (int)v108; v108[3] = (int)v108; v108[1] = 0; v108[4] = 0; v110[0] = 0; v110[1] = 0; v110[2] = (int)v110; v110[3] = (int)v110; v110[4] = 0; Streamc = 0; // isReadFromStdin if ( v45 ) { v143 = (int)v145; v144 = 0; v145[0] = 0; ReadFile(0, (unsigned int *)&v143); v19 = std::map::operator[](&v107, (int)v86); std::string::_M_assign((int)v19, (int)&v143); std::string::_M_dispose((void **)&v143); } else { while ( -1431655765 * (((char *)v87 - (char *)v86) >> 3) > (unsigned int)Streamc ) { v145[0] = 0; v143 = (int)v145; v20 = (char *)v86[6 * (_DWORD)Streamc]; v144 = 0; ReadFile(v20, (unsigned int *)&v143); v21 = std::map::operator[](&v107, (int)&v86[6 * (_DWORD)Streamc]); std::string::_M_assign((int)v21, (int)&v143); std::string::_M_dispose((void **)&v143); Streamc = (FILE *)((char *)Streamc + 1); } } if ( v96 ) //if (!xc_Or_completeCode_Param.empty()) { GetNextArg((int)String, (int *)&v95, (int)v104); v52 = strtoull(String[0], 0, 10); std::string::_M_dispose((void **)String); v131 = 0; v132 = 0; v133 = 0; for ( i = 0; (int)i < v52; i = (std::ostream::sentry *)((char *)i + 1) ) { v141 = 0; v140 = (char *)v142; LOBYTE(v142[0]) = 0; memset(String, 0, 12); GetNextArg((int)v135, (int *)&v95, (int)v104); // v95 xc_Or_completeCode_Param, v104 splitMarkStr // v135 = GetNextArg(v95, v104) std::string::operator=((unsigned __int8 **)&v140, (int)v135); // v140 = v135 = GetNextArg(v95, v104) std::string::_M_dispose(v135); GetNextArg((int)v136, (int *)&v95, (int)v104); v50 = strtoull(v136[0], 0, 10); std::string::_M_dispose((void **)v136); for ( Streamd = 0; (int)Streamd < v50; Streamd = (FILE *)((char *)Streamd + 1) ) { v144 = 0; v143 = (int)v145; v145[0] = 0; GetNextArg((int)&v137, (int *)&v95, (int)v104); // v137 = GetNextArg(v95, v104) std::string::operator=((unsigned __int8 **)&v143, (int)&v137); std::string::_M_dispose((void **)&v137); std::vector::push_back((int)String, (int)&v143); v69 = v132; if ( v69 == std::find<__gnu_cxx::__normal_iterator>,std::string>( v131, v132, (int)&v143) ) // v143 arg2 std::vector::push_back((int)&v131, (int)&v143); std::string::_M_dispose((void **)&v143); } Streame = (FILE *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>> ::lower_bound( &v109, (int)&v140); // Streame = v109.lower_bound(v140) // v109 vecFileContentMap if ( Streame == (FILE *)v110 || (unsigned __int8)std::operator<((int)&v140, (int)&Streame->_file) ) { Block = operator new(0x34u); // 34 -> 4 std::string::basic_string((char *)Block + 16, (int)&v140); Block[10] = 0; Block[11] = 0; Block[12] = 0; Streame = (FILE *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>> ::_M_get_insert_hint_unique_pos( &v109, Streame, (int)(Block + 4)); // v109._M_get_insert_hint_unique_pos() if ( v22 ) { Streame = (FILE *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>> ::_M_insert_node( &v109, (int)Streame, v22, Block); } else { std::vector::~vector((void ***)Block + 10, 0); std::string::_M_dispose((void **)Block + 4); operator delete(Block); } } std::vector::operator=((int)&Streame[1]._base, (int *)String); std::vector::~vector((void ***)String, v23); std::string::_M_dispose((void **)&v140); } std::string::basic_string((void **)&v143, "ALL"); v24 = std::map>::operator[](&v109, &v143); std::vector::operator=((int)v24, &v131); std::string::_M_dispose((void **)&v143); std::vector::~vector((void ***)&v131, v25); } v111[1] = 0; v111[0] = &v112; v113[0] = &v114; v112 = 0; v113[1] = 0; v114 = 0; v116 = 0; v117 = 0; v118 = &v116; v119 = &v116; v120 = 0; if ( v43 ) // hasLL { v70 = v93; for ( Streamg = (FILE *)v92; Streamg != (FILE *)v70; Streamg = (FILE *)((char *)Streamg + 24) ) { if ( *Streamg->_ptr == 46 && Streamg->_ptr[1] == 47 ) { std::string::substr(&v143, Streamg, 2u, 0xFFFFFFFF); std::string::operator=((unsigned __int8 **)Streamg, (int)&v143); std::string::_M_dispose((void **)&v143); } } v122[0] = 0; v122[1] = 0; v123 = v122; v124 = v122; v125 = 0; std::string::basic_string((void **)&v143, "l_"); std::string::basic_string((void **)&v140, "f_"); std::string::basic_string((void **)&v137, "$gdwx"); std::string::basic_string((void **)v136, "boxofchocolate"); std::string::basic_string(v135, (char *)&byte_5402D0); std::string::basic_string((void **)String, "p_"); std::string::basic_string((void **)&v131, "d_"); std::string::basic_string(v130, "e_"); std::string::basic_string(v129, "gg"); std::string::basic_string(v128, (char *)off_5403C3); std::string::basic_string(v127, (char *)&off_5403C3[2]); std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_Rb_tree( v126, (int)&v109); v68 = (int)WXML::Compiler::CompileLazy( &v107, // fileContent (int *)v111, // errorMessage &v115, // outputMap &v101, // dict &v121, v126, // vecFileContentMap (int *)&v92, // splitedData &v105, // mapData1 v53, // isLLA (int)v103,// gwxMark v60, // mark 10, // '\n' (int *)v127, // 'e' (int *)v128,// const char off_5403C3[] = {'s','\0','e','\0'} (int *)v129,// "gg" (int *)v130,// "e_" &v131, // "d_" (int *)String, // "p_" (int)v135, // '\0' (int)v136, // "boxofchocolate" (int)&v137, // "$gdwx" (int *)&v140); // "f_" std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)v126); std::string::_M_dispose(v127); std::string::_M_dispose(v128); std::string::_M_dispose(v129); std::string::_M_dispose(v130); std::string::_M_dispose((void **)&v131); std::string::_M_dispose((void **)String); std::string::_M_dispose(v135); std::string::_M_dispose((void **)v136); std::string::_M_dispose((void **)&v137); std::string::_M_dispose((void **)&v140); std::string::_M_dispose((void **)&v143); std::string::basic_string((void **)&v140, "__COMMON__"); v61 = v117; Streamh = &v116; while ( v61 ) { v27 = (unsigned __int8)std::operator<((int)v61 + 16, (int)&v140) == 0; v28 = Streamh; v29 = (std::ostream::sentry *)*((_DWORD *)v61 + 3); if ( v27 ) { v29 = (std::ostream::sentry *)*((_DWORD *)v61 + 2); if ( v27 ) v28 = (int *)v61; } v61 = v29; Streamh = v28; } if ( Streamh != &v116 ) { v27 = (unsigned __int8)std::operator<((int)&v140, (int)(Streamh + 4)) == 0; v30 = &v116; if ( v27 ) v30 = Streamh; Streamh = v30; } std::string::_M_dispose((void **)&v140); if ( Streamh == &v116 ) { WXML::Compiler::WXMLHelperCode[abi:cxx11]((void **)&v140); std::string::basic_string( (void **)&v137, "var __wxAppData=__wxAppData||{};var __wxAppCode__=__wxAppCode__||{};var global=global||{};var __WXML_GLOBAL__=" "__WXML_GLOBAL__||{entrys:{},defines:{},modules:{},ops:[],wxs_nf_init:undefined,total_ops:0};var Component=Comp" "onent||function(){};var definePlugin=definePlugin||function(){};var requirePlugin=requirePlugin||function(){};" "var Behavior=Behavior||function(){};var __vd_version_info__=__vd_version_info__||{};var __GWX_GLOBAL__=__GWX_G" "LOBAL__||{};var __globalThis=(typeof __vd_version_info__!=='undefined'&&typeof __vd_version_info__.globalThis!" "=='undefined')?__vd_version_info__.globalThis:(typeof window!=='undefined'?window:globalThis);"); std::operator+(&v143, &v137, (unsigned int *)&v140); std::string::basic_string((void **)v136, "__COMMON__"); v33 = (unsigned __int8 **)std::map::operator[](&v115, v136); std::string::operator=(v33, (int)&v143); std::string::_M_dispose((void **)v136); std::string::_M_dispose((void **)&v143); std::string::_M_dispose((void **)&v137); } else { std::string::basic_string((void **)&v140, "__COMMON__"); Streamm = (FILE *)std::map::operator[](&v115, &v140); WXML::Compiler::WXMLHelperCode[abi:cxx11]((void **)v136); std::string::basic_string( v135, "var __wxAppData=__wxAppData||{};var __wxAppCode__=__wxAppCode__||{};var global=global||{};var __WXML_GLOBAL__=" "__WXML_GLOBAL__||{entrys:{},defines:{},modules:{},ops:[],wxs_nf_init:undefined,total_ops:0};var Component=Comp" "onent||function(){};var definePlugin=definePlugin||function(){};var requirePlugin=requirePlugin||function(){};" "var Behavior=Behavior||function(){};var __vd_version_info__=__vd_version_info__||{};var __GWX_GLOBAL__=__GWX_G" "LOBAL__||{};var __globalThis=(typeof __vd_version_info__!=='undefined'&&typeof __vd_version_info__.globalThis!" "=='undefined')?__vd_version_info__.globalThis:(typeof window!=='undefined'?window:globalThis);"); std::operator+(&v137, v135, (unsigned int *)v136); v31 = std::string::append(&v137, (int)Streamm); std::string::basic_string(&v143, v31); std::string::basic_string((void **)String, "__COMMON__"); v32 = (unsigned __int8 **)std::map::operator[](&v115, String); std::string::operator=(v32, (int)&v143); std::string::_M_dispose((void **)String); std::string::_M_dispose((void **)&v143); std::string::_M_dispose((void **)&v137); std::string::_M_dispose(v135); std::string::_M_dispose((void **)v136); } std::string::_M_dispose((void **)&v140); std::basic_stringstream,std::allocator>::basic_stringstream((int)&v143); std::operator<<>((std::ostream::sentry *)v145, ";var __WXML_DEP__=__WXML_DEP__||{};"); for ( j = v123; ; j = (int *)std::_Rb_tree_increment((int)Streami) ) { Streami = (FILE *)j; if ( j == v122 ) break; if ( j[11] != j[10] ) { v62 = std::operator<<>((std::ostream::sentry *)v145, "__WXML_DEP__[\""); WXML::Rewrite::ToStringCode((int)&v140, &Streami->_file); v35 = std::operator<<(v62, (int *)&v140); std::operator<<>(v35, "\"]=["); std::string::_M_dispose((void **)&v140); flag = (int *)Streami[1]._flag; for ( k = (int *)Streami[1]._base; flag != k; k += 6 ) { v57 = std::operator<<>((std::ostream::sentry *)v145, "\""); WXML::Rewrite::ToStringCode((int)&v140, k); v36 = std::operator<<(v57, (int *)&v140); std::operator<<>(v36, "\","); std::string::_M_dispose((void **)&v140); } std::operator<<>((std::ostream::sentry *)v145, "];"); } } std::stringbuf::str((int)&v140, (int)v146); std::string::basic_string((void **)&v137, "__COMMON__"); v37 = std::map::operator[](&v115, &v137); std::string::append(v37, (int)&v140); std::string::_M_dispose((void **)&v137); std::string::_M_dispose((void **)&v140); if ( v68 ) { Streamn = (FILE *)v111[0]; v38 = ___acrt_iob_func(2u); fprintf(v38, "Error %d: %s\n", v68, (const char *)Streamn); } else { Streamj = ___acrt_iob_func(1u); if ( FileNamea && *FileNamea ) Streamj = fopen(FileNamea, "w"); DictToJsonString((int)v136, (int)&v115); DictToJsonString((int)&v137, (int)&v101); std::string::basic_string((void **)&v140, " {\"generateFunctionContent\":%s,\"generateFunctionName\":%s} "); fprintf(Streamj, v140, v136[0], v137); fclose(Streamj); std::string::_M_dispose((void **)&v140); std::string::_M_dispose((void **)&v137); std::string::_M_dispose((void **)v136); } std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v143); std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v121); } else { std::string::basic_string((void **)&v143, "l_"); std::string::basic_string((void **)&v140, "f_"); std::string::basic_string((void **)&v137, "$gdwx"); std::string::basic_string((void **)v136, "boxofchocolate"); std::string::basic_string(v135, (char *)&byte_5402D0); std::string::basic_string((void **)String, "p_"); std::string::basic_string((void **)&v131, "d_"); std::string::basic_string(v130, "e_"); std::string::basic_string(v129, "gg"); std::string::basic_string(v128, (char *)off_5403C3); std::string::basic_string(v127, (char *)&off_5403C3[2]); std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_Rb_tree( v126, (int)&v109); v68 = (int)WXML::Compiler::Compile( v3, &v107, (int *)v111, (unsigned __int8 **)v113, v126, &v105, v53, (int *)v103, // gwxMark v60, // mark 10, // '\n' (int *)v127, // off_5403C3[2] (int *)v128, // off_5403C3 (int *)v129, // "gg" (int *)v130, // "e_" &v131, // "d_" (int *)String, // "p_" (int)v135, // '\0' (int)v136, // "boxofchocolate" (int)&v137, // "$gdwx" (int *)&v140); // "f_" std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)v126); std::string::_M_dispose(v127); std::string::_M_dispose(v128); std::string::_M_dispose(v129); std::string::_M_dispose(v130); std::string::_M_dispose((void **)&v131); std::string::_M_dispose((void **)String); std::string::_M_dispose(v135); std::string::_M_dispose((void **)v136); std::string::_M_dispose((void **)&v137); std::string::_M_dispose((void **)&v140); std::string::_M_dispose((void **)&v143); if ( v68 ) { Streaml = (FILE *)v111[0]; v26 = ___acrt_iob_func(2u); fprintf(v26, "%s\n", (const char *)Streaml); } else { Streamf = ___acrt_iob_func(1u); if ( FileNamea && *FileNamea ) Streamf = fopen(FileNamea, "w"); fprintf(Streamf, "%s\n", (const char *)v113[0]); fclose(Streamf); } } std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v115); std::string::_M_dispose(v113); std::string::_M_dispose(v111); std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v109); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v107); } LABEL_153: std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v105); std::string::_M_dispose(v104); std::string::_M_dispose(v103); std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v101); std::vector::~vector(&v92, v39); std::vector::~vector((void ***)&v89, v40); std::string::_M_dispose((void **)&v98); std::string::_M_dispose((void **)&v95); std::vector::~vector(&v86, v41); return v68; } // 534D34: variable 'v18' is possibly undefined // 535379: variable 'v22' is possibly undefined // 5353F7: variable 'v23' is possibly undefined // 535470: variable 'v25' is possibly undefined // 535726: variable 'v3' is possibly undefined // 5366AE: variable 'v39' is possibly undefined // 5366B9: variable 'v40' is possibly undefined // 5366DA: variable 'v41' is possibly undefined // 534330: using guessed type char var_D0[4]; // 534330: using guessed type _DWORD var_1E0[6]; // 534330: using guessed type char var_CC[196]; //----- (005366FD) -------------------------------------------------------- int _GLOBAL__sub_I__Z5UsageiPPKc() { std::ios_base::Init::Init(); return atexit(__tcf_1); } //----- (0053671C) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXML8Compiler9GetFuncIdERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS7_ESaISt4pairIKS7_iEEERSB_() { std::ios_base::Init::Init(); atexit(__tcf_2); std::string::basic_string((void **)&night::nsv_, (char *)off_551C90); atexit(__tcf_3); std::string::basic_string((void **)&night::nst_, (char *)off_551C94); 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_551CA2); atexit(__tcf_7); std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)off_551CA6); atexit(__tcf_8); std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)off_551CAA); 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_551CE4); 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_551D24); 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 "); return atexit(__tcf_41); } //----- (00536BCC) -------------------------------------------------------- int _GLOBAL__sub_I__ZN5night8NSStreamC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_j() { std::string::basic_string(&night::nsv_, (char *)off_552FC0); atexit(__tcf_1_0); std::string::basic_string((void **)&night::nst_, (char *)off_552FC4); atexit(__tcf_2_0); std::string::basic_string((void **)&night::NS_TYPE_SKIP, "skip"); atexit(__tcf_3_0); std::string::basic_string((void **)&night::NS_TYPE_BOOL, "bool"); atexit(__tcf_4_0); std::string::basic_string((void **)&night::NS_TYPE_VAR, (char *)off_551FFE); atexit(__tcf_5_0); std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)off_552086); atexit(__tcf_6_0); std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)off_551FEA); atexit(__tcf_7_0); std::string::basic_string((void **)&night::NS_TYPE_B_TYPE, "builtin_type"); atexit(__tcf_8_0); std::string::basic_string((void **)&night::NS_TYPE_KW, "kw"); atexit(__tcf_9_0); std::string::basic_string((void **)&night::NS_TYPE_PUNC, "punc"); atexit(__tcf_10_0); std::string::basic_string((void **)&night::NS_TYPE_OP, "op"); atexit(__tcf_11_0); std::string::basic_string((void **)&night::NS_TYPE_OP_SELF, "op_self"); atexit(__tcf_12_0); std::string::basic_string((void **)&night::NS_TYPE_BINARY, "binary"); atexit(__tcf_13_0); std::string::basic_string((void **)&night::NS_TYPE_ASSIGN, "assign"); atexit(__tcf_14_0); std::string::basic_string((void **)&night::NS_TYPE_TERNARY, "ternary"); atexit(__tcf_15_0); std::string::basic_string((void **)&night::NS_TYPE_K_V, (char *)off_5520BF); atexit(__tcf_16_0); std::string::basic_string((void **)&night::NS_TYPE_OBJ_DOT, "obj_dot"); atexit(__tcf_17_0); std::string::basic_string((void **)&night::NS_TYPE_OBJ_PROPERTY, "obj_property"); atexit(__tcf_18_0); std::string::basic_string((void **)&night::NS_TYPE_OBJ_SELF_OP, "obj_self_op"); atexit(__tcf_19_0); std::string::basic_string((void **)&night::NS_TYPE_OBJ_BLOCK, "obj_block"); atexit(__tcf_20_0); std::string::basic_string((void **)&night::NS_TYPE_ARRAY, "array"); atexit(__tcf_21_0); std::string::basic_string((void **)&night::NS_TYPE_BRACKET, "bracket"); atexit(__tcf_22_0); std::string::basic_string((void **)&night::NS_TYPE_IF, "if"); atexit(__tcf_23_0); std::string::basic_string((void **)&night::NS_TYPE_FOR, (char *)off_552210); atexit(__tcf_24_0); std::string::basic_string((void **)&night::NS_TYPE_WHILE, "while"); atexit(__tcf_25_0); std::string::basic_string((void **)&night::NS_TYPE_DO_WHILE, "do_while"); atexit(__tcf_26_0); std::string::basic_string((void **)&night::NS_TYPE_SWITCH, "switch"); atexit(__tcf_27_0); std::string::basic_string((void **)&night::NS_TYPE_PROG, "prog"); atexit(__tcf_28_0); std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM, "prog_no_sem"); atexit(__tcf_29_0); std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, "prog_no_sem_require"); atexit(__tcf_30_0); std::string::basic_string((void **)&night::NS_TYPE_FUNC, "function"); atexit(__tcf_31_0); std::string::basic_string((void **)&night::NS_TYPE_CALL, "call"); atexit(__tcf_32_0); std::string::basic_string((void **)night::NS_BUILTIN_OP, "+-*/%=&^|<>~!?"); 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); } // 565A60: using guessed type int night::NS_BUILTIN_TYPE[6]; // 565A78: using guessed type int night::NS_BUILTIN_KW[6]; // 565A90: using guessed type int night::NS_BUILTIN_SPACE[6]; // 565AA8: using guessed type int night::NS_BUILTIN_PUNC[6]; // 565AC0: using guessed type int night::NS_BUILTIN_ALL_OP[6]; // 565AF0: using guessed type int night::NS_BUILTIN_OP[6]; // 565DF0: using guessed type void *night::nsv_; //----- (005370A4) -------------------------------------------------------- size_t __thiscall std::string::basic_string(void **this, char *Str) { char *v3; // edi size_t result; // eax _BYTE *v5; // edx size_t v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v6[0] = strlen(Str); v3 = &Str[v6[0]]; if ( v6[0] > 0xF ) { *this = std::string::_M_create(v6, 0); this[2] = (void *)v6[0]; } std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); result = v6[0]; v5 = *this; this[1] = (void *)v6[0]; v5[result] = 0; return result; } // 5370A4: using guessed type size_t var_1C[7]; //----- (00537121) -------------------------------------------------------- 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_55325C); atexit(__tcf_0); std::string::basic_string((void **)&night::nst_, (char *)off_553260); atexit(__tcf_1_1); 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_55326E); atexit(__tcf_4_1); std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)off_553272); atexit(__tcf_5_1); std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)off_553276); 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_5532B0); 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_5532F0); 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); } //----- (005375BC) -------------------------------------------------------- size_t __thiscall std::string::basic_string(void **this, char *Str) { char *v3; // edi size_t result; // eax _BYTE *v5; // edx size_t v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF *this = this + 2; if ( !Str ) std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); v6[0] = strlen(Str); v3 = &Str[v6[0]]; if ( v6[0] > 0xF ) { *this = std::string::_M_create(v6, 0); this[2] = (void *)v6[0]; } std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); result = v6[0]; v5 = *this; this[1] = (void *)v6[0]; v5[result] = 0; return result; } // 5375BC: using guessed type size_t var_1C[7]; //----- (00537639) -------------------------------------------------------- int _GLOBAL__sub_I__ZN5night3str12path_combineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_RS6_() { std::string::basic_string((void **)&night::nsv_, (char *)off_55350E); atexit(__tcf_1_2); std::string::basic_string((void **)&night::nst_, (char *)off_553512); 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_553520); atexit(__tcf_5_2); std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)off_553524); atexit(__tcf_6_2); std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)off_553528); 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_553562); 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_5535A2); 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); } //----- (00537AD4) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXML6DOMLib7WXMLDom12componentCntE() { std::ios_base::Init::Init(); return atexit(__tcf_1_3); } //----- (00537AF4) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXML6DOMLib7Machine5ResetEv() { std::ios_base::Init::Init(); return atexit(__tcf_0_0); } //----- (00537B14) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXML7EXPRLib7OPShort5CONSTE() { std::ios_base::Init::Init(); return atexit(__tcf_1_4); } //----- (00537B34) -------------------------------------------------------- int _GLOBAL__sub_I__ZNK4WXML7EXPRLib5Token12GetTokenNameEv() { std::ios_base::Init::Init(); return atexit(__tcf_0_2); } //----- (00537B54) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXML7EXPRLib12TransitTable13GetExprNTTypeEv() { std::ios_base::Init::Init(); return atexit(__tcf_1_5); } //----- (00537B74) -------------------------------------------------------- int _GLOBAL__sub_I__ZN4WXML16StringTemplating4DealEPKcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorINS0_5TokenESaISB_EERb() { std::ios_base::Init::Init(); return atexit(__tcf_0_3); } //----- (00537BA0) -------------------------------------------------------- int _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv() { _DWORD *v0; // eax if ( _CRT_MT ) __gthr_win32_mutex_init_function(`anonymous namespace'::emergency_pool); dword_53E500 = 18944; v0 = malloc(0x4A00u); Block = v0; if ( v0 ) { dword_53E4F8 = (int)v0; *v0 = 18944; v0[1] = 0; } else { dword_53E500 = 0; dword_53E4F8 = 0; } return atexit(__tcf_0_4); } // 53E1E4: using guessed type int _CRT_MT; // 53E4F0: using guessed type _DWORD `anonymous namespace'::emergency_pool[2]; // 53E4F8: using guessed type int dword_53E4F8; // 53E500: using guessed type int dword_53E500; //----- (00537C20) -------------------------------------------------------- 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); } // 55B6DC: using guessed type int *`typeinfo for'__gnu_cxx::recursive_init_error; //----- (00537C60) -------------------------------------------------------- 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; } // 53E2A0: using guessed type char `guard variable for'std::moneypunct::id; // 53E2A8: using guessed type char `guard variable for'std::moneypunct::id; // 53E2C0: using guessed type char `guard variable for'std::collate::id; // 53E2D0: using guessed type char `guard variable for'std::messages::id; // 53E2E0: using guessed type char `guard variable for'std::numpunct::id; // 53E2F0: using guessed type char `guard variable for'std::time_get>::id; // 53E300: using guessed type char `guard variable for'std::money_get>::id; // 53E310: using guessed type char `guard variable for'std::money_put>::id; //----- (00537CF0) -------------------------------------------------------- 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; } // 53E2B0: using guessed type char `guard variable for'std::moneypunct::id; // 53E2B8: using guessed type char `guard variable for'std::moneypunct::id; // 53E2C8: using guessed type char `guard variable for'std::collate::id; // 53E2D8: using guessed type char `guard variable for'std::messages::id; // 53E2E8: using guessed type char `guard variable for'std::numpunct::id; // 53E2F8: using guessed type char `guard variable for'std::time_get>::id; // 53E308: using guessed type char `guard variable for'std::money_get>::id; // 53E318: using guessed type char `guard variable for'std::money_put>::id; //----- (00537D80) -------------------------------------------------------- void __noreturn std::__throw_bad_exception(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_56008C; __cxa_throw(exception, (struct type_info *)&`typeinfo for'std::bad_exception, std::bad_exception::~bad_exception); } // 55BF08: using guessed type int *`typeinfo for'std::bad_exception; // 56008C: using guessed type void (__cdecl *off_56008C)(std::bad_exception *__hidden this); //----- (00537DB0) -------------------------------------------------------- void __noreturn std::__throw_bad_alloc(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_560E0C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_alloc, (void (__cdecl *)(void *))std::bad_alloc::~bad_alloc); } // 55C490: using guessed type int *`typeinfo for'std::bad_alloc; // 560E0C: using guessed type void (__cdecl *off_560E0C)(std::bad_alloc *__hidden this); //----- (00537DE0) -------------------------------------------------------- void __noreturn std::__throw_bad_cast(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_560CF0; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_cast, (void (__cdecl *)(void *))std::bad_cast::~bad_cast); } // 55C3CC: using guessed type int *`typeinfo for'std::bad_cast; // 560CF0: using guessed type void (__cdecl *off_560CF0)(std::bad_cast *__hidden this); //----- (00537E10) -------------------------------------------------------- void __noreturn std::__throw_bad_typeid(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_55FE8C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_typeid, (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); } // 55BDD8: using guessed type int `typeinfo for'std::bad_typeid; // 55FE8C: using guessed type void (__cdecl *off_55FE8C)(std::bad_typeid *__hidden this); //----- (00537E40) -------------------------------------------------------- void __cdecl __noreturn std::__throw_logic_error(std::logic_error *a1) { const char *v1; // [esp+4h] [ebp-54h] _DWORD *exception; // [esp+18h] [ebp-40h] exception = __cxa_allocate_exception(8u); std::logic_error::logic_error(exception, a1, v1); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::logic_error, (void (__cdecl *)(void *))std::logic_error::~logic_error); } // 537E8B: variable 'v1' is possibly undefined // 55BE94: using guessed type int *`typeinfo for'std::logic_error; //----- (00537ED8) -------------------------------------------------------- void __cdecl __noreturn std::__throw_domain_error(std::domain_error *a1) { const char *v1; // [esp+4h] [ebp-54h] _DWORD *exception; // [esp+18h] [ebp-40h] exception = __cxa_allocate_exception(8u); std::domain_error::domain_error(exception, a1, v1); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::domain_error, (void (__cdecl *)(void *))std::domain_error::~domain_error); } // 537F23: variable 'v1' is possibly undefined // 55BECC: using guessed type int *`typeinfo for'std::domain_error; //----- (00537F70) -------------------------------------------------------- void __cdecl __noreturn std::__throw_invalid_argument(std::invalid_argument *a1) { const char *v1; // [esp+4h] [ebp-54h] _DWORD *exception; // [esp+18h] [ebp-40h] exception = __cxa_allocate_exception(8u); std::invalid_argument::invalid_argument(exception, a1, v1); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::invalid_argument, (void (__cdecl *)(void *))std::invalid_argument::~invalid_argument); } // 537FBB: variable 'v1' is possibly undefined // 55C0FC: using guessed type int *`typeinfo for'std::invalid_argument; //----- (00538008) -------------------------------------------------------- void __cdecl __noreturn std::__throw_length_error(std::length_error *a1) { const char *v1; // [esp+4h] [ebp-54h] _DWORD *exception; // [esp+18h] [ebp-40h] exception = __cxa_allocate_exception(8u); std::length_error::length_error(exception, a1, v1); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::length_error, (void (__cdecl *)(void *))std::length_error::~length_error); } // 538053: variable 'v1' is possibly undefined // 55BED8: using guessed type int *`typeinfo for'std::length_error; //----- (005380A0) -------------------------------------------------------- void __cdecl __noreturn std::__throw_out_of_range(std::out_of_range *a1) { const char *v1; // [esp+4h] [ebp-54h] _DWORD *exception; // [esp+18h] [ebp-40h] exception = __cxa_allocate_exception(8u); std::out_of_range::out_of_range(exception, a1, v1); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::out_of_range, (void (__cdecl *)(void *))std::out_of_range::~out_of_range); } // 5380EB: variable 'v1' is possibly undefined // 55BEE4: using guessed type int *`typeinfo for'std::out_of_range; //----- (00538138) -------------------------------------------------------- void __cdecl __noreturn std::__throw_runtime_error(std::runtime_error *a1) { const char *v1; // [esp+4h] [ebp-54h] _DWORD *exception; // [esp+18h] [ebp-40h] exception = __cxa_allocate_exception(8u); std::runtime_error::runtime_error(exception, a1, v1); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::runtime_error, (void (__cdecl *)(void *))std::runtime_error::~runtime_error); } // 538183: variable 'v1' is possibly undefined // 55BF7C: using guessed type int *`typeinfo for'std::runtime_error; //----- (005381D0) -------------------------------------------------------- void __cdecl __noreturn std::__throw_range_error(std::range_error *a1) { const char *v1; // [esp+4h] [ebp-54h] _DWORD *exception; // [esp+18h] [ebp-40h] exception = __cxa_allocate_exception(8u); std::range_error::range_error(exception, a1, v1); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::range_error, (void (__cdecl *)(void *))std::range_error::~range_error); } // 53821B: variable 'v1' is possibly undefined // 55BEA0: using guessed type int *`typeinfo for'std::range_error; //----- (00538268) -------------------------------------------------------- void __cdecl __noreturn std::__throw_overflow_error(std::overflow_error *a1) { const char *v1; // [esp+4h] [ebp-54h] _DWORD *exception; // [esp+18h] [ebp-40h] exception = __cxa_allocate_exception(8u); std::overflow_error::overflow_error(exception, a1, v1); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::overflow_error, (void (__cdecl *)(void *))std::overflow_error::~overflow_error); } // 5382B3: variable 'v1' is possibly undefined // 55C008: using guessed type int *`typeinfo for'std::overflow_error; //----- (00538300) -------------------------------------------------------- void __cdecl __noreturn std::__throw_underflow_error(std::underflow_error *a1) { const char *v1; // [esp+4h] [ebp-54h] _DWORD *exception; // [esp+18h] [ebp-40h] exception = __cxa_allocate_exception(8u); std::underflow_error::underflow_error(exception, a1, v1); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::underflow_error, (void (__cdecl *)(void *))std::underflow_error::~underflow_error); } // 53834B: variable 'v1' is possibly undefined // 55C0CC: using guessed type int *`typeinfo for'std::underflow_error; //----- (005383A0) -------------------------------------------------------- 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; } // 53E270: using guessed type char `guard variable for'std::moneypunct::id; // 53E278: using guessed type char `guard variable for'std::moneypunct::id; // 53E290: using guessed type char `guard variable for'std::__timepunct::id; // 53E320: using guessed type char `guard variable for'std::collate::id; // 53E330: using guessed type char `guard variable for'std::num_get>::id; // 53E340: using guessed type char `guard variable for'std::num_put>::id; // 53E350: using guessed type char `guard variable for'std::messages::id; // 53E360: using guessed type char `guard variable for'std::numpunct::id; // 53E370: using guessed type char `guard variable for'std::time_get>::id; // 53E380: using guessed type char `guard variable for'std::time_put>::id; // 53E390: using guessed type char `guard variable for'std::money_get>::id; // 53E3A0: using guessed type char `guard variable for'std::money_put>::id; //----- (00538470) -------------------------------------------------------- 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; } // 53E280: using guessed type char `guard variable for'std::moneypunct::id; // 53E288: using guessed type char `guard variable for'std::moneypunct::id; // 53E298: using guessed type char `guard variable for'std::__timepunct::id; // 53E328: using guessed type char `guard variable for'std::collate::id; // 53E338: using guessed type char `guard variable for'std::num_get>::id; // 53E348: using guessed type char `guard variable for'std::num_put>::id; // 53E358: using guessed type char `guard variable for'std::messages::id; // 53E368: using guessed type char `guard variable for'std::numpunct::id; // 53E378: using guessed type char `guard variable for'std::time_get>::id; // 53E388: using guessed type char `guard variable for'std::time_put>::id; // 53E398: using guessed type char `guard variable for'std::money_get>::id; // 53E3A8: using guessed type char `guard variable for'std::money_put>::id; //----- (00538540) -------------------------------------------------------- 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(); } //----- (005385D4) -------------------------------------------------------- void __noreturn __cxa_bad_cast(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_560CF0; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_cast, (void (__cdecl *)(void *))std::bad_cast::~bad_cast); } // 55C3CC: using guessed type int *`typeinfo for'std::bad_cast; // 560CF0: using guessed type void (__cdecl *off_560CF0)(std::bad_cast *__hidden this); //----- (00538604) -------------------------------------------------------- void __noreturn __cxa_bad_typeid(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_55FE8C; __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::bad_typeid, (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); } // 55BDD8: using guessed type int `typeinfo for'std::bad_typeid; // 55FE8C: using guessed type void (__cdecl *off_55FE8C)(std::bad_typeid *__hidden this); //----- (00538634) -------------------------------------------------------- void __noreturn __cxa_throw_bad_array_new_length(void) { _DWORD *exception; // eax exception = __cxa_allocate_exception(4u); *exception = &off_560848; __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); } // 55C1E0: using guessed type int *`typeinfo for'std::bad_array_new_length; // 560848: using guessed type void (__cdecl *off_560848)(std::bad_array_new_length *__hidden this); //----- (00538664) -------------------------------------------------------- void __cdecl __noreturn std::__throw_ios_failure(char *a1) { char *v1; // eax _DWORD *exception; // [esp+18h] [ebp-40h] exception = __cxa_allocate_exception(0x18u); if ( !(_BYTE)`guard variable for'`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((_PVFV)__tcf_0_7); } } std::system_error::system_error(exception, 1, (int)&`anonymous namespace'::__io_category_instance(void)::__ec, a1); *exception = &off_560078; v1 = (char *)std::runtime_error::what((int)exception); std::__construct_ios_failure(exception + 4, v1); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::__ios_failure, (void (__cdecl *)(void *))std::__ios_failure::~__ios_failure); } // 53FCD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); // 55BEFC: using guessed type int *`typeinfo for'std::__ios_failure; // 560078: using guessed type void (__cdecl *off_560078)(std::__ios_failure *__hidden this); //----- (00538784) -------------------------------------------------------- void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1, std::runtime_error *a2) { int v2; // [esp+8h] [ebp-50h] _DWORD *exception; // [esp+18h] [ebp-40h] exception = __cxa_allocate_exception(0x18u); std::__ios_failure::__ios_failure(exception, a1, (int)a2, v2); __cxa_throw( exception, (struct type_info *)&`typeinfo for'std::__ios_failure, (void (__cdecl *)(void *))std::__ios_failure::~__ios_failure); } // 5387D6: variable 'v2' is possibly undefined // 55BEFC: using guessed type int *`typeinfo for'std::__ios_failure; //----- (00538824) -------------------------------------------------------- void __cdecl __noreturn std::__throw_system_error(int a1) { _DWORD *exception; // [esp+18h] [ebp-60h] void *Block[2]; // [esp+58h] [ebp-20h] BYREF char v3; // [esp+60h] [ebp-18h] BYREF exception = __cxa_allocate_exception(0x10u); `anonymous namespace'::system_error_category::message[abi:cxx11]( Block, (int)&`anonymous namespace'::generic_category_instance, a1); std::runtime_error::runtime_error(exception, (int)Block); if ( Block[0] != &v3 ) operator delete(Block[0]); *exception = &off_560064; 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); } // 53F0C8: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); // 55BEF0: using guessed type int *`typeinfo for'std::system_error; // 560064: using guessed type void (__cdecl *off_560064)(std::system_error *__hidden this); //----- (00538920) -------------------------------------------------------- int _GLOBAL__sub_I__ZSt20__throw_system_errori() { atexit(__tcf_0_8); return atexit(__tcf_1_6); } // nfuncs=4679 queued=4486 decompiled=4486 lumina nreq=0 worse=0 better=0 #error "There were 9 decompilation failure(s) on 4486 function(s)"