/* 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 "defs.h" #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 return 2 void (__cdecl *off_55F20C)(WXML::EXPRLib::Action *__hidden this) = &WXML::EXPRLib::Action::~Action; // weak return 3 void (__cdecl *off_55F220)(WXML::EXPRLib::Terminal *__hidden this) = &WXML::EXPRLib::Terminal::~Terminal; // weak // return 1 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); // 48 -> '0' 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 // DealWxsTag - 0 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 ) { // int * v8 // v8 -> a2.offset_16 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::basic_string(v56, v11); v37 = v12; std::string::_M_dispose(v67); // DealWxsTag - 5 // a2[2] = a2.offset_8 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); } // a2[3] = a2.offset_12 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); // DealWxsTag - 10 if ( !lpuexcptb ) { WXML::DOMLib::Parser::GetParsed(&v48, (WXML::DOMLib::Parser *)v67); // a2[2] = a2.offset_8 *a6 = a2[2]; // a2[5] = a2.offset_20 size // a2[4] = a2.offset_16 pos 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; // a5 -> int // a5 + 4 => offset_4 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; } } // for end // v48 int // v48 -> p // v48 + 72 => v48.offset_72 v38 = (_DWORD *)(**(_DWORD **)(v48 + 72) + 48); std::string::basic_string(v60, (char *)off_547B7D); // src v39 = std::map::count(v38, (int)v60); std::string::_M_dispose(v60); if ( !v39 || (std::string::basic_string(v64, (char *)off_547B7D), // src 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 - '0'/*48*/) > 9u; while ( (_BYTE *)(*a3 + a3[1]) != v25 ) { v27 = (unsigned __int8)(*v25 - 'a'/*97*/) <= 0x19u || (unsigned __int8)(*v25 - '0'/*48*/) <= 9u; if ( !v27 ) v27 = *v25 == '_'/*95*/ || (unsigned __int8)(*v25 - 'A'/*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 ) { // 18 * 4 = 72 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 // ParseSource - 0 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 ) { // ParseSource - 5 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); } // ParseSource - 10 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); /* 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)*/ 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 "); // 引用文件(a2, a2引用v76) std::operator<<(v24, a2); std::stringbuf::str((int)v87, (int)v94); // errorMessage 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; // 返回值,非0 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_['"); // v81 -> ret (合并后的路径) 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); } // ParseSource - 15 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); } // end isWXML // ParseSource - 20 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); // v374 ii *(_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); // "src" 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); // a1.offset_12 lpuexcpt = (struct _Unwind_Exception *)a1[3]; // a1.offset_4 v249 = (WXML::DOMLib::Parser *)(a1 + 1); // mark - 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); } // mark - 5 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__"] = jj *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); // a7.offset_4 a7.end() 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_" */ // mark - 10 // splitedData 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::string, std::pair,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); } // for end // mark - 15 v238 = (WXML::EXPRLib::Parser *)a7[1]; // v238 - end? // a7 splitedData lpuexcptb = (struct _Unwind_Exception *)*a7; std::_Rb_tree_header::_Rb_tree_header(v314); // mark - 20 // 是否splitedData结尾 // a7.end() != a7.begin() 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); } // while end // mark - 25 // v304 for ( j = v306; j != v305; std::_Rb_tree_iterator>> ::operator++((int *)&j) ) { // j.offset_(16 * 4) -> j.offset_64 v260 = (char *)j + 16; // std::string::substr(&jj, (_DWORD *)j + 4/*j.offset_16*/, 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) = v307["__COMMON__"].push_back(v260) std::vector::push_back((int)v34, (int)v260); std::string::_M_dispose((void **)&v328); } std::string::_M_dispose((void **)&jj); } // mark - 30 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, " "); } // mark - 35 std::operator<<>((std::ostream::sentry *)v330, "];\n"); // _DWORD v308[5]; for ( m = (int *)v308[2]; ; m = (int *)std::_Rb_tree_increment((int)v277) ) { v277 = m; if ( m == v308 ) break; // key 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]; // 遍历value 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; // v261递增 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; } // splitedData中有没有 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; // 销毁数据,返回v258 } } std::operator<<>((std::ostream::sentry *)v330, "];\n"); } // mark - 40 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; // std::string 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; // std::vector 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; // v278.assign(n+4) std::string::_M_assign(v278, (int)(n + 4)); v278 += 24; // v278移到下一个元素 } lpuexcpti = std::map>::operator[](a5, (int)v262); // a5[v262] if ( lpuexcpti != (char *)&jj )// jj std::vector { 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 ) { // ii = v279.size() 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); } // mark - 45 std::_Rb_tree_header::_Rb_tree_header(v317); for ( jj = (int)v306; ; std::_Rb_tree_iterator>>::operator++(&jj) ) { lpuexcptj = (struct _Unwind_Exception *)jj; // end就退出循环 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); // "ALL" 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); // a6["ALL"] WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(lpuexcptp, v52); std::string::_M_dispose((void **)&v328); } } // mark - 50 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; // v301 ssDataMap v233 = v303; v209 = (a11 & 2) != 0; // mark - 55 // v233 会递增 while ( v233 != v302 ) { v243 = (WXML::EXPRLib::Parser *)v233[10]; v248 = (int)(v233 + 4); v225 = std::operator==((int)(v233 + 4), "__COMMON__"); if ( v225 ) { // a10 gwxMark std::string::basic_string((char *)v318, a10); } else { std::to_string((std::__cxx11 *)&jj, v224); std::operator+((char *)&j, a10, "_XC_"); // std::string j = a10 + "_XC_" std::operator+(v318, &j, (unsigned int *)&jj); // std::string v318 = j + jj = j + v224 std::string::_M_dispose(&j); std::string::_M_dispose((void **)&jj); ++v224; } // v56 = a4[v248] v56 = std::map::operator[](a4, v248); // a4[v248].assign(v318) 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); // a11 mark 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); // eMark 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); // fMark 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); // v307[v248] v253 = 0; v227 = *((_DWORD *)v97 + 1); // end 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); // ["get_page_z_name"].assign(j) 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); // a11 mark 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={"); // v311 for ( mm = (int *)v312[2]; ; mm = (int *)std::_Rb_tree_increment((int)v266) ) { v266 = mm; if ( mm == v312 ) // end 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); // v248 i->first v133 = std::map>::operator[](&v307, v248); // v307[v248] // v245 = v133.end() v245 = (WXML::NameAllocator *)*((_DWORD *)v133 + 1); // std::vector for ( i1 = *(WXML::NameAllocator **)v133; ; i1 = (WXML::NameAllocator *)((char *)i1 + 24) ) { v255 = (std::ostream::sentry *)v319; if ( i1 == v245 ) // end break; std::string::basic_string((char *)&jj, (int)i1); WXML::DOMLib::StrCache::Insert(v255, (int)&jj); std::string::_M_dispose((void **)&jj); // v304[i1] 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); // v248 i->first v136 = std::map>::operator[](&v307, v248); v228 = 0; // m用的递增 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);// "[x[" 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, // *ss &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); // "[x[" v230 = (_DWORD *)v319; std::string::basic_string((char *)&jj, (int)i2); v143 = WXML::DOMLib::StrCache::GetStrID(v230, (int)&jj); // v230.GetStrID(i2) -> v319.GetStrID(i2) 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); // v231 -> index 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); // "src" 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); // src 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); // item v213 = (_DWORD *)(v216 + 52); std::string::basic_string((void **)&jj, (char *)off_547B7D); // src 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); // item 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); } // mark - 60 // v301 ssDataMap for ( i5 = (struct _Unwind_Exception *)v303; ; i5 = (struct _Unwind_Exception *)std::_Rb_tree_increment((int)lpuexcptn) ) { lpuexcptn = i5; if ( i5 == (struct _Unwind_Exception *)v302 ) // end break; std::stringbuf::str((int)&jj, *((_DWORD *)i5 + 10) + 12); v203 = std::map::operator[](a3, (int)lpuexcptn + 16); // a3[(int)lpuexcptn + 16] std::string::operator=((unsigned __int8 **)v203, (int)&jj); // a3[(int)lpuexcptn + 16] = jj std::string::_M_dispose((void **)&jj); } // mark - 65 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; } // CompileLazy End // 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); // v12 dirList 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; // 'A' 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 = this + 2; // this->offset_0 this[1] = 0; *((_BYTE *)this + 8) = 0; v4 = (int)(this + 6); this[6] = this + 8; // this->offset_24 this[7] = 0; *((_BYTE *)this + 32) = 0; std::string::_M_assign((int)this, a2); std::string::_M_assign(v4, a3); this[12] = 0; // this->offset_48 this[14] = 1; // this->offset_56 this[13] = a4; // this->offset_52 } //----- (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[1] = v5; ecx0[2] = v6; } 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 // (_DWORD *)this + 12 -> this->offset_48 // (_DWORD *)this + 7 -> this->offset_28 if ( *((_DWORD *)this + 12) < *((_DWORD *)this + 7) ) { // this->offset_24 std::string, offset_28 std::string.length() // (_DWORD *)this + 6 -> this->offset_24 // (_DWORD *)this + 12 -> this->offset_48 v3 = (char *)std::string::at((_DWORD *)this + 6, *((_DWORD *)this + 12)); // (_DWORD *)this + 14 -> this->offset_56 v4 = *((_DWORD *)this + 14); v5 = *v3; // (_DWORD *)this + 13 -> this->offset_52 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 // this->offset_48 + 1 < this->offset_24.length() if ( (unsigned int)(*((_DWORD *)this + 12) + 1) < *((_DWORD *)this + 7) ) { // this->offset_24.at(this->offset_48 + 1) v3 = *(_BYTE *)std::string::at((_DWORD *)this + 6, *((_DWORD *)this + 12) + 1); v4 = *((_DWORD *)this + 13); // this->offset_52 v5 = *((_DWORD *)this + 14) + 1;// this->offset_56 + 1 if ( v3 == '\n'/*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) ) // "NaN" { 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 ) { // this->offset_0.size() result = (a1[1] - *a1) >> 2; if ( i >= result ) break; // v3 = this->offset_0[i] v3 = *(_DWORD *)(*a1 + 4 * i); std::string::basic_string((char *)v7, v3); // v3->offset_0 == night::std_v_n if ( std::operator==((int)v7, (int)&night::std_v_n) ) { // v3->offset_24 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); // 248 *v4 = v4 + 2; // std::string offset_0 v4[1] = 0; *((_BYTE *)v4 + 8) = 0; v4[6] = v4 + 8; // std::string offset_24 v4[7] = 0; *((_BYTE *)v4 + 32) = 0; v4[15] = v4 + 17; // std::string offset_60 v4[16] = 0; *((_BYTE *)v4 + 68) = 0; v4[21] = v4 + 23; // std::string offset_84 v4[22] = 0; *((_BYTE *)v4 + 92) = 0; v4[27] = v4 + 29; // std::string offset_108 v4[28] = 0; *((_BYTE *)v4 + 116) = 0; v4[33] = v4 + 35; // std::string offset_132 v4[34] = 0; *((_BYTE *)v4 + 140) = 0; v4[39] = v4 + 41; // std::string offset_156 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; // offset_224 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]); v10[0] = &v11; // std::string v10[1] = 0; v11 = 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]) == '\n'/*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); // 0x1C -> 28 night::NSGod::GodsSon *v3 = v3 + 2; // v3.offset_8 缓冲区 v3[1] = 0; // v3.offset_4 长度 *((_BYTE *)v3 + 8) = 0; // 缓冲区第一个字节是0 v9 = v3; // v3是一个std::string 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); // v9->offset_24 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; // STD::STRING 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]); // v7->offset_60 std::string::operator=(v7 + 15, (int)v15); std::string::_M_dispose((void **)v15); // v7->offset_84 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; // 销毁数据,返回lpt } 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); // offset_220 *((_DWORD *)lpuexcpt + 55) = v21; // offset_224 *((_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; // 销毁数据,返回lpt } 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); // lpuexcpt->offset_192 *((_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; // 销毁数据,返回lpt } 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; // 销毁数据,返回lpt } 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 // ast_dispatch - 0 std::string::basic_string(v82, (char *)asc_5527F4); // "(\000)\000{" 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; // 销毁v67, 返回v65 } 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); // for 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); // NaN 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); } // end arguments std::string::_M_dispose(v80); v22 = 1; v23 = 1; v24 = 1; v25 = 1; v26 = 1; v29 = 1; v32 = 1; v38 = 1; v53 = 1; goto LABEL_61; // LABEL_62 }// end this is_op_self = 1; } v38 = 1; } v53 = 1; } v26 = 1; } // return end v29 = 1; } v32 = 1; } v23 = 1; } v22 = 1; } v25 = 1; } v24 = 1; // 用于销毁字符串 } // end check for "true" v21 = 1; if ( !is_op_self )// true 与 false 都是执行 label_62 { 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); // var 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: // 销毁v67, 返回v65 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; }// end is_op_self LABEL_61: std::string::_M_dispose(v79); goto LABEL_62; } // ast_dispatch - 5 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); // ast_dispatch - 10 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]); // ")\000{" ? 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]); // ast_dispatch - 15 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); } } // ast_dispatch - 20 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); // '\0' 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); // v3->offset_60 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);// offset_156 std::string::operator=(v15 + 39, (char *)&byte_551F04); // v15.offset_192 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); // v10->offset_60 v13->offset_156 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[52] = (unsigned int)v3; v7[53] = 0; 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); // offset_232 v47[58] = v27; // offset_204 v47[51] = 0; // offset_236 v47[59] = v22; // offset_240 v47[60] = v20; std::string::basic_string(v55, (char *)asc_5527F4); // "(\000)\000{" 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]; // int v2 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); } } // v47->offset_232 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); } // v47->offset_236.push_back() 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 // this->offset_24 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); // this->offset_28 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]; // int v7 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 ) { // v2->offset_60 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]); } } // this->offset_24 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); // offset_228 *((_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 // this->offset_24 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); // this->offset_28 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); // this->offset_24 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); // "(\000)\000{" 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; // std::string 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); // v23 -> v3 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; // offset_108 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 // god lpuexcpta = (struct _Unwind_Exception *)a1[6]; std::string::basic_string((char *)v11, (int)&night::NS_TYPE_FUNC); // son 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); } // offset_56 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 v11.offset_0 char v12; // [esp+88h] [ebp-40h] BYREF int v13; // [esp+98h] [ebp-30h] v11.offset_24 int v14; // [esp+9Ch] [ebp-2Ch] v11.offset_28 int v15[2]; // [esp+A0h] [ebp-28h] BYREF v11.offset_32 char v16; // [esp+A8h] [ebp-20h] BYREF int v17; // [esp+B8h] [ebp-10h] v11.offset_56 int v18; // [esp+BCh] [ebp-Ch] v11.offset_60 std::string::basic_string(v9, (char *)&byte_551F04); // "\0" 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); } v11[0] = (int)&v12; v11[1] = 0; v12 = 0; v13 = 0; v14 = 0; v15[0] = (int)&v16; 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 v43.offset_0 int v44; // [esp+E4h] [ebp-44h] char v45; // [esp+E8h] [ebp-40h] BYREF int v46; // [esp+F8h] [ebp-30h] v43.offset_24 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] v43.offset_56 int v51; // [esp+11Ch] [ebp-Ch] // compile_function - 0 *this = this + 2; this[1] = 0; *((_BYTE *)this + 8) = 0; // a3->offset_136 v25 = a3[34]; if ( v25 ) { std::string::basic_string((void **)&v41, "function "); std::string::operator+=(&v41); *(_DWORD *)(a2 + 48) += v42; v43 = (int)&v45; v44 = 0; v45 = 0; v46 = 0; v47 = 0; v48[0] = (int)&v49; 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); // this->ofsset_36.push_back(v43) 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; } // compile_function - 5 std::string::_M_dispose((void **)v3); std::string::operator+=(asc_5527F4); // "(\000)\000{" lpuexcpt = 0; ++*(_DWORD *)(a2 + 48); v29 = 0; while ( 1 ) { // a3->offset_244 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; } } // compile_function - 10 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; // cur v11 = (int *)std::vector::at(v10, lpuexcpta); if ( std::operator==((int)&night::NS_TYPE_ASSIGN, *v11) ) { // cur 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; } } // compile_function - 15 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); // int a2 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; // 销毁v20 -> LABEL_31 } // compile_function - 20 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; } // compile_function - 25 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 v13.offset_0 std::string int v14; // [esp+84h] [ebp-44h] char v15[16]; // [esp+88h] [ebp-40h] BYREF int v16; // [esp+98h] [ebp-30h] v13.offset_24 int v17; // [esp+9Ch] [ebp-2Ch] v13.offset_28 char *v18; // [esp+A0h] [ebp-28h] BYREF v13.offset_32 std::string int v19; // [esp+A4h] [ebp-24h] char v20[16]; // [esp+A8h] [ebp-20h] BYREF int v21; // [esp+B8h] [ebp-10h] v13.offset_56 int v22; // [esp+BCh] [ebp-Ch] v13.offset_60 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); // '\0' LABEL_60: // 销毁数据,返回this 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) ) { v13 = v15; // v13.offset_0 v14 = 0; v15[0] = 0; v18 = v20; v16 = 0; v17 = 0; v19 = 0; v20[0] = 0; v21 = 0; v22 = 0; // a3 + 6 -> a3.offset_24 std::string::_M_assign((int)&v13, (int)(a3 + 6)); // v16 -> v13.offset_24 v16 = a3[12]; v17 = a3[13]; // a3 + 15 -> a3.offset_60 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; // 销毁数据,返回this } if ( std::operator==((int)&night::NS_TYPE_STR, (int)v9) ) { // a3.offset_108 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; // 销毁数据,返回this } 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; // a3 + 6 -> a3.offset_24 std::string::_M_assign((int)&v13, (int)(a3 + 6)); v16 = a3[12]; v17 = a3[13]; std::string::_M_assign((int)&v18, v7); // a3.offset_60 v21 = a3[12]; v22 = *(_DWORD *)(a2 + 48); // a2.offset_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; // 销毁数据,返回this } } // a3 + 15 -> a3.offset_60 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); // "\0" 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 *(_DWORD *)this = this + 8; *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 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 = this + 2; this[1] = 0; *((_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] ) // a3.offset_212 { 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 v12[0] = &v13; v12[1] = 0; v13 = 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 = this + 2; this[1] = 0; *((_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 = this + 2; this[1] = 0; *((_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 *(_DWORD *)this = this + 8; *((_DWORD *)this + 1) = 0; this[8] = 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); *(_DWORD *)this = this + 8; *((_DWORD *)this + 1) = 0; this[8] = 0; 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 = this + 2; this[1] = 0; *((_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 *(_DWORD *)this = this + 8; *((_DWORD *)this + 1) = 0; this[8] = 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 // a3.offset_180 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 *(_DWORD *)this = this + 8; // std::string *(_DWORD *)(this + 4) = 0; *(_BYTE *)(this + 8) = 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); // "(\000)\000{" v19 = 0; ++*(_DWORD *)(a2 + 48); while ( 1 ) { // v4 v11 = std::vector>>::at( *(_DWORD **)(a3 + 224), lpuexcpt); if ( v19 >= (*(_DWORD *)(*(_DWORD *)v11 + 4) - **(_DWORD **)v11) >> 2 ) break; // v4 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; // v4 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; } } // end while 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); // "(\000)\000{" 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; } } // end while 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 = this + 2; this[1] = 0; *((_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 = this + 2; this[1] = 0; *((_BYTE *)this + 8) = 0; if ( std::operator==((int)&night::NS_TYPE_OBJ_BLOCK, a3) ) { std::string::operator+=(asc_5527F4); // "(\000)\000{" ++*(_DWORD *)(a2 + 48); } for ( lpuexcpt = 0; ; ++lpuexcpt ) { // a3.offset_228 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 // a2.offset_28 *(_DWORD *)(a2 + 28) = a4; std::string::operator=(a3, (char *)&byte_551F04); // "\0" 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::ns_node *lpuexcpt 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 offset_0 char v30; // [esp+154h] [ebp-C4h] BYREF void **v31; // [esp+164h] [ebp-B4h] offset_24 int v32; // [esp+168h] [ebp-B0h] offset_28 int v33; // [esp+16Ch] [ebp-ACh] offset_32 int v34; // [esp+170h] [ebp-A8h] offset_36 int v35; // [esp+174h] [ebp-A4h] offset_40 int v36; // [esp+178h] [ebp-A0h] offset_44 int v37; // [esp+17Ch] [ebp-9Ch] offset_48 void *v38[15]; // [esp+180h] [ebp-98h] BYREF void *v39[23]; // [esp+1BCh] [ebp-5Ch] BYREF std::string::operator=(a5, (char *)&byte_551F04); // "\0" memset(v17, 0, sizeof(v17)); night::NSStream::NSStream(v38, a1, a3, a4); v27[0] = (int)v17; v27[1] = (int)v38; v28[0] = 0; v28[1] = 0; v28[2] = (int)v28; v28[3] = (int)v28; 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[0] = &v30; // v29.offset_0 std::string缓冲区 v29[1] = 0; // v29.offset_4 v30 = 0; // v29.offset_8 v31 = v39; // v29.offset_24 = v39 v32 = 0; // v29.offset_28 v33 = 0; // v29.offset_32 v34 = 0; // v29.offset_36 v35 = 0; // v29.offset_40 v36 = 0; // v29.offset_44 v37 = 1; // v29.offset_48 v19[0] = &v20; 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; // std::string 00(v11) 00 00 00, 00(v12) 00 00 00, 00(v13) 00 00 00 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使用缓冲区 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; // std::string *(_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) { // a1 + 80 -> a1->offset_24->offset_56 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; // 26 * 4 = 104 v2 = a1[22]; // offset_88 v3 = a1[25]; // offset_100 if ( v3 < -1227133513 * ((a1[23]/*offset_92*/ - v2) >> 4) ) return (_DWORD *)(v2 + 112 * v3); 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, ":"); // WXML::DOMLib::Token v6 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(a3 + 8)); std::operator<<>(v6, ":"); // WXML::DOMLib::Token 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); // '\0' 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) != '\n'/*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, ","); // 66 * 4 = 264; 67 * 4 = 268 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] /* v19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00, 00(v20) 00 00 00, 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00(v22) 00 00 00 */ 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); /* v21[24] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00, 00(v22) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 */ 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 // RewriteTree - 0 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), // cur->offset_48 (int)&v101); // "wx:for" v34 = v3; Block = v2; std::string::_M_dispose((void **)&v101); if ( Block != (void *)(v74 + 52) ) { v75 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str); // cur std::string::basic_string(v100, "wx:for"); v4 = std::map::operator[]( (_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str) + 48), // cur->offset_48 v100); // "wx:for" // cur->offset_48["wx:for"] v101 = "wx:for-items"; // v4 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); // "wx:for-items" WXML::DOMLib::Token::~Token((int)v102); std::string::_M_dispose(v100); v76 = (_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str) + 48); // cur->offset_48 std::string::basic_string((void **)&v101, "wx:for"); std::map::erase(v76, (int)&v101); v34 = v5; std::string::_M_dispose((void **)&v101); } } // RewriteTree - 5 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); // cur->offset_52 // char *Strg 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); // cur 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)]); // cur Blockc = operator new(0x128u); WXML::DOMLib::WXMLDom::WXMLDom((int)Blockc); zcc::shared_ptr::shared_ptr(Blockc); Blockd = v98; std::string::basic_string(v100, Stra); // v96 + 12 -> cur->offset_48[*v38] v11 = std::map::operator[](v96 + 12, v100); v101 = Stra; // *v38 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, // cur->offset_48 (char **)&v101); WXML::DOMLib::Token::~Token((int)v102); std::string::_M_dispose(v100); std::string::operator=(v98, "block"); // v96 -> cur 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); // *v38 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; } } } } // RewriteTree - 10 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); // cur std::string::basic_string(v100, "is"); // 13 * 4 = 52 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); // cur 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); } // RewriteTree - 15 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") ) { // int a1 std::string::operator=(*(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strc), "block"); v34 = v17; } } // RewriteTree - 20 for ( j = 0; ; ++j ) { v18 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v18) >> 3 <= j ) break; Strd = (char *)(8 * j); // cur->offset_0 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); // cur 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); // "wx:for-items" 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)]); // cur v55 = operator new(0x128u); WXML::DOMLib::WXMLDom::WXMLDom((int)v55); zcc::shared_ptr::shared_ptr(v55); std::string::operator=(v91, "wx-repeat"); // cur->offset_24 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"); // cur->offset_48["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; // v89 -> cur std::string::basic_string(v93, "wx:for-items"); std::map::erase(v57, (int)v93); std::string::_M_dispose(v93); v58 = v89; // cur Blockg = v89 + 13; // cur->offset_52 end 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"); // cur->offset_48["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); // "wx:for-item" WXML::DOMLib::Token::~Token((int)v102); std::string::_M_dispose(v100); v61 = v89 + 12; // cur->offset_48 std::string::basic_string(v95, "wx:for-item"); std::map::erase(v61, (int)v95); std::string::_M_dispose(v95); } //////////////////////////////////////"wx:for-index" v62 = v89; // cur Blockh = v89 + 13; // cur->offset_48.end() std::string::basic_string((void **)&v96, "wx:for-index"); v63 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> ::find( v62 + 12, // cur->offset_48 (int)&v96); // "wx:for-index" std::string::_M_dispose((void **)&v96); if ( v63 != Blockh ) { v64 = v91; std::string::basic_string(v100, "wx:for-index"); // cur->offset_48 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); } ////////////////////////////////////////"wx:key" v66 = v89; // cur 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, // v91->offset_48 (char **)&v101); // "wx:key" 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); } // Strd = (char *)(8 * j); v25 = (volatile signed __int32 **)&Strd[*(_DWORD *)(a1 + 72) + 4]; // cur->offset_16 *(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); } } } } } } // RewriteTree - 25 for ( Stre = 0; ; ++Stre ) { v27 = *(_DWORD *)(a1 + 72); if ( (*(_DWORD *)(a1 + 76) - v27) >> 3 <= (unsigned int)Stre ) break; v79 = 8 * (_DWORD)Stre; // index offset v70 = *(_DWORD **)(v27 + 8 * (_DWORD)Stre); // cur std::string::basic_string((void **)&v101, "wx:scope-data"); v28 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> ::find( v70 + 12, // cur->offset_48 (int)&v101); // "wx:scope-data" 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)); // cur v71 = operator new(0x128u); WXML::DOMLib::WXMLDom::WXMLDom((int)v71); zcc::shared_ptr::shared_ptr(v71); std::string::operator=(v98, "wx-scope"); // cur->offset_96 // int *v98 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)); // 18 * 4 = 72 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);// "wx:scope-data" 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); } } // RewriteTree - 30 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'} // v9 = "src" 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 = v4 v5 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v43); // offset_8 v6 = (char *)a1[8]; // offset_ v35 = a1 + 2; // offset_8 // v6 offset_8; a1[10] offset_8 if ( v6 == (char *)(a1[10] - 24) ) { // 重新分配空间,CPP内部方法 std::deque::_M_push_back_aux((int)v35, (int)v5); } else { // 把v5填进v6(offset_8) std::string::basic_string(v6, (int)v5); // v6(offset_8)指针后移 a1[8] += 24; } Blocka = operator new(0x128u); WXML::DOMLib::WXMLDom::WXMLDom((int)Blocka); // domPtr zcc::shared_ptr::shared_ptr(Blocka); // v4 v7 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v43); // tag std::string::_M_assign((int)v47, (int)v7); // 4 * 6 = 24 std::string::_M_assign((int)(v47 + 6), (int)v47); // 21 * 4 = 84 WXML::DOMLib::Token::operator=((int)(v47 + 21), (int)v43); Block = a1 + 12; // offset_48 v8 = std::deque>::back(a1 + 12); std::vector>::push_back((_DWORD *)(*(_DWORD *)v8 + 72), &v47); std::deque>::push_back((int)(a1 + 12), &v47); // a1.offset_48 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 // 清空deque 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)); // a1后偏移 100个字节 *(_DWORD *)(a1 + 100) = 0; // a1后偏移 88个字节 begin v10 = *(char **)(a1 + 88); // a1后偏移 92个字节 end v7 = *(char **)(a1 + 92); if ( v10 != v7 ) { Block = *(char **)(a1 + 88); do { // 销毁? WXML::DOMLib::Token::~Token((int)Block); Block += 112; } // v7 end != Block current while ( v7 != Block ); *(_DWORD *)(a1 + 92) = v10; } // a1后偏移128字节 *(_DWORD *)(a1 + 128) = 4; // a1后偏移328字节 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"); // a1 + 48 => a1.offset_48 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); // src // this->offset_48 v8 = std::map::count(a1 + 12, (int)v13); std::string::_M_dispose(v13); if ( v8 ) { v9 = (_DWORD *)a1[62]; // this->offset_248 std::string::basic_string(v12, (char *)off_5539C8); // src // this->offset_48["src"] 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) ) { // v9 = this->offset_248 v7 = v9[5]; // offset_20 // v7 = this->offset_248->offset_20 *(_DWORD *)std::map::operator[](v9, (int)v13) = v7; std::vector::push_back((int)(v9 + 6), (int)v13); // this->offset_248.offset_24 } 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); // this->offset_248 *(v4 - 1) = (volatile signed __int32 *)a1[62]; // a1[63] -> this->offset_252 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] // DealSingleTokenToOps - 0 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); // DealSingleTokenToOps - 5 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); // '\0' 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); } // DealSingleTokenToOps - 10 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); // 寻找key为plain_text_marker的元素 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; // void *v86[2] v86[0] = &v87; v86[1] = 0; v85 = 0; std::string::operator=((unsigned int *)v86, (char *)&byte_5537CA); // '\0' 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; // 当前下标 // int v23 v23 = 0; while ( -1227133513 * (((int)v78 - *(_DWORD *)&v77[1]) >> 2) > lpuexcptc ) { v61 = v23 + 28; v24 = (_DWORD *)(*(_DWORD *)&v77[1] + v23 + 28); // cur if ( *v24 == 1 ) { if ( !*(_DWORD *)(v23 + *(_DWORD *)&v77[1]) ) // pre 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); // cur 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); } } // end a8 // DealSingleTokenToOps - 15 if ( a7 ) { v25 = *(_DWORD **)&v77[1]; v26 = 0; while ( v78 != v25 ) { v26 -= (*v25 == 0) - 1; v25 += 7; } if ( v26 != a7 ) { // a5.offset_56 a5[14] = -3; std::string::operator=(a5 + 15, "the very attr must be an expression (surrouned by `{{..}}`)"); v48 = -1; goto LABEL_112; // 销毁数据,返回v48 } } // DealSingleTokenToOps - 20 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); } // DealSingleTokenToOps - 25 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]; } // DealSingleTokenToOps - 30 v27 = (const char *)&off_553AE9; // "nt_" v51 = 0; if ( a8 ) v27 = "t_"; v47 = (char *)v27; v28 = &byte_5537CA; // '\0' if ( a6 ) v28 = (const char *)&unk_553AED; // "_d" v46 = (char *)v28; while ( -1227133513 * (((int)v78 - *(_DWORD *)&v77[1]) >> 2) > v51 ) { // v51 下标,在递增 if ( v51 ) // a3 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); // v27 std::string::append(v83, (int)(v62 + 1)); std::string::append(v83, v46); // v28 v57 = (_DWORD *)a4[2]; v63 = a4 + 1; // find 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); // '\0' v66 = WXML::EXPRLib::Parser::Parse( (int)&Block, (char **)(*(_DWORD *)&v77[1] + v50 + 4), // v77[i].offset_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; // a9 WXML::DOMLib::RVMOpCodePositionRecorder * 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; // a9.offset_4++ 下个循环 } 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; } // DealSingleTokenToOps - 35 if ( v52 ) std::operator<<>(lpuexcptd, "]"); v35 = *a9; // a5->offset_56 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); // DealSingleTokenToOps - 40 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"); } // DealSingleTokenToOps - 45 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 { // this->offset_60 this->offset_52 for ( i = this[15]; (_DWORD *)i != this + 13; i = std::_Rb_tree_increment(i) ) { // i + 40 -> second 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); } } } // this[18] -> this->offset_72 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 /* 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) */ // RenderNonDefine - 0 // this int // this + 28 => this.offset_28 if ( a13 && *(_DWORD *)(this + 28) ) { // a6 + 8 => a6.offset_8 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, ":"); // this + 24 => this.offset_24 v17 = std::operator<<(v16, (int *)(this + 24)); std::operator<<>(v17, ":"); // this + 92 => this.offset_92 v18 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); std::operator<<>(v18, ":"); // this + 96 => this.offset_96 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 ) { // this int // this.offset_140 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; } // TEXTNODE end // RenderNonDefine - 5 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"); // target1 // this int 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), // this->offset_48 (int)v312) ) // "items" std::string::operator=((unsigned int *)v312, "wx:for-items"); std::string::basic_string(v313, "index"); // target2 if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> ::find( v295, // this->offset_48 (int)v313) ) // "index" std::string::operator=((unsigned int *)v313, "wx:for-index"); std::string::basic_string(v314, "item"); // target3 if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> ::find( v295, // this->offset_48 (int)v314) ) // "item" 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, // this + 48 (int)v312) ) // target1 { 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, // this + 48 (int)v313) ) // target2 { // target2_1 std::string::operator=((unsigned int *)&v318, "index"); } else { // this->offset_48[v313] 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, // this + 48 (int)v314) ) // target3 { // target3_1 std::string::operator=((unsigned int *)&v321, "item"); } else { // this->offset_48[v314] 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) //target2 // +14 -> offset_14 * 4 -> offset_56 && *((_DWORD *)std::map::operator[](v295, (int)v313) + 14) == -3 && (a14 & 1) == 0 ) { v250 = __cxa_allocate_exception(0x18u); // char * + 60 -> offset 60 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, // this->offset_48 (int)v315) // "wx:key" && *((_DWORD *)std::map::operator[](v295, (int)v315) + 14) == -3 && (a14 & 1) == 0 ) { v249 = __cxa_allocate_exception(0x18u); // char * + 60 -> offset 60 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"); // target2_1 if ( !v322 ) std::string::operator=((unsigned int *)&v321, "item"); // target3_1 v325 = 0; v324 = (int)&v326; // name1 LOBYTE(v326) = 0; WXML::NameAllocator::GetNextName(a7, (int)&v324); v327 = (int)v329; // name2 v328 = 0; v329[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v327); v330 = v332; // name3 v331 = 0; LOBYTE(v332[0]) = 0; WXML::NameAllocator::GetNextName(a7, (int)&v330); v333 = (int)v335; // name4 v334 = 0; v335[0] = 0; WXML::NameAllocator::GetNextName(a7, (int)&v333); std::string::basic_string((void **)v347, (char *)&byte_5537CA); // "\0" std::string::basic_string((void **)&Str, (char *)&byte_5537CA); // "\0" 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); //---------- // v295 -> this + 48 // v312 target1 // 14 * 4 = 56 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"); // this int 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, // this->offset_48 (int)v315) ) // "wx:key" { 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, // this->offset_48 (int)v315); // "wx:key" 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; } } } // else end if ( !WXML::DOMLib::Token::IsValidVariableName((char **)&v336) ) { if ( v337 ) { if ( std::operator==((int)&v336, "0") ) goto LABEL_56; if ( *(_BYTE *)v336 != '0'/*48*/ ) { for ( i = 0; v337 != i; ++i ) { if ( (unsigned __int8)(*(_BYTE *)(v336 + i) - 48) > 9u ) goto LABEL_189; } goto LABEL_56; } } /* 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) */ 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 } } LABEL_56: std::string::_M_dispose((void **)&v339); std::string::_M_dispose((void **)&v336); /* 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) */ 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); // name1 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); // target3_1 v66 = std::operator<<>(v65, "','"); v67 = std::operator<<(v66, &v318); // target2_1 v278 = std::operator<<>(v67, "','"); v68 = std::map::operator[](v295, (int)v315); // v315 wxKey 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; } // wx-repeat end // RenderNonDefine - 10 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; } // int this v296 = (std::ostream::sentry *)(this + 48); Str1a = (char *)(this + 52); if ( std::operator==(this, "include") ) { std::string::basic_string((void **)v347, (char *)off_5539C8); // "src" v279 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> ::find( v296, (int)v347); std::string::_M_dispose((void **)v347); // == end if ( v279 == (std::ostream::sentry *)Str1a ) goto LABEL_169; std::string::basic_string((void **)v347, (char *)off_5539C8); // "src" 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); // "src" // v296 this.offset_48 lpuexcptd = (int *)(std::map::operator[](v296, &Str) + 60); std::string::basic_string((void **)v347, (char *)off_5539C8); // "src" std::string::basic_string((void **)v342, (char *)off_5539C8); // "src" v73 = std::map::operator[](v296, v342); // v296["src"] 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; } // RenderNonDefine - 15 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; } // RenderNonDefine - 20 v324 = 0; v325 = 0; v326 = 0; // int j; for ( j = *(_DWORD *)(this + 60); ; j = std::_Rb_tree_increment((int)v298) ) { v298 = (int *)j; if ( (char *)j == Str1a ) break; // offset_96 v160 = *(_DWORD *)(j + 96); if ( v160 == -3 ) { if ( (a14 & 1) == 0 ) { v254 = __cxa_allocate_exception(0x18u); // v298 + 4 -> v298.offset_16; j->first // v298 + 10 -> v298.offset_40; j->second // v298 + 25 -> v298.offset_100; j->second.offset_60 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); } } // v298[15] -> v298.offset_60 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); } // v298[4] -> v298.offset_16; j->first v161 = v298[4]; if ( *(_BYTE *)v161 != 'w'/*119*/ || *(_BYTE *)(v161 + 1) != 'x'/*120*/ || (v162 = *(_BYTE *)(v161 + 2), v162 != ':'/*58*/) && v162 != '-'/*45*/ || !__stricmp((const char *)v161, "wx:scope-data") ) { // v298 + 4 -> v298.offset_16; j->first // v298 + 10 -> v298.offset_40; j->second // v298 + 25 -> v298.offset_100; j->second.offset_60 std::string::basic_string((char *)v347, (int)(v298 + 4)); // j->first WXML::DOMLib::Token::Token((int)v350, (WXML::DOMLib::Token *)(v298 + 10)/*j->second*/, v243); std::vector>::emplace_back>( &v324, v347); std::pair::~pair((void **)v347); } } // RenderNonDefine - 25 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); // cur pos 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; // find while ( v284 ) { // (int)v284 + 16 -> (int)v284 offset_16 v167 = (unsigned __int8)std::operator<((int)v284 + 16, (int)&v336) == 0; v168 = v303; // (_DWORD *)v284 + 3 -> v284 offset_12 v169 = (std::ostream::sentry *)*((_DWORD *)v284 + 3); if ( v167 ) { // (_DWORD *)v284 + 2 -> v284 offset_8 v169 = (std::ostream::sentry *)*((_DWORD *)v284 + 2); if ( v167 ) v168 = (int *)v284; } v284 = v169; v303 = v168; } // end while if ( v303 != &v331 ) { v167 = (unsigned __int8)std::operator<((int)&v336, (int)(v303 + 4)) == 0; v170 = &v331; if ( v167 ) v170 = v303; v303 = v170; } // find end std::string::_M_dispose((void **)&v336); if ( v303 == &v331 ) { std::string::substr(&v339, Str1b, 6u, 0xFFFFFFFF); // v258 + v324 -> cur data std::string::operator=((unsigned __int8 **)((char *)v258 + v324), (int)&v339); std::string::_M_dispose((void **)&v339); } else { v171 = (unsigned __int8 **)((char *)v258 + v324); // cur v172 = (char *)v258 + v324 + 136; // next // v325 end 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); } } } // RenderNonDefine - 30 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); // v324 std::vector> 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="); // (_DWORD *)ii + 11 -> ii.offset_44 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); } // ii->offset_44 -> ii->offset_24->offset_20 if ( *((_DWORD *)ii + 11) ) { // ii->offset_80 -> ii->offset_24->offset_56 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, "',"); // ii->offset_80 -> ii->offset_24->offset_56 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); } } // RenderNonDefine - 35 v339 = 0; v340 = 0; /* int v341[4]; // [esp+214h] [ebp-174h] BYREF int v342[2]; */ 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 ) // 34 * 4 = 136 = 24 + 112 { 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; // std::string缓冲区 // jj + 6 -> jj.offset_24 -> jj->second 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::pair - 136 WXML::DOMLib::Token - 112 std::string - (136 - 112 = 24) */ /* std::string: int v347[2]; // [esp+2B0h] [ebp-D8h] BYREF char v348[4]; // [esp+2B8h] [ebp-D0h] BYREF char v349[12]; // [esp+2BCh] [ebp-CCh] BYREF WXML::DOMLib::Token: _DWORD v350[47]; // [esp+2C8h] [ebp-C0h] BYREF */ 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, "',"); // jj->offset_44 -> jj->offset_24->offset_20 if ( jj[11] ) { // jj->offset_80 -> jj->offset_24->offset_56 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 = ","; } // a6 << "],["; 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, "',"); // cur->offset_44 if ( *(_DWORD *)(v339 + 136 * (_DWORD)v287 + 44) ) { // cur->offset_80 -> cur->offset_24->offset_56 -> cur->second->offset_56 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 = ","; } // RenderNonDefine - 40 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); } // RenderNonDefine - 45 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 ) { // this->offset_72 v15 = this[18]; if ( (this[19] - v15) >> 3 <= v137 ) // v137是下标,在递增 break; // v15 this->offset_72 // this->offset_72[i] if ( (std::operator==(*(_DWORD *)(v15 + 8 * v137), "import") || std::operator==(*(_DWORD *)(this[18] + 8 * v137), "wx-import")) && (v124 = *(_DWORD *)(this[18] + 8 * v137), // this->offset_72[i] v101 = (_DWORD *)(v124 + 52), std::string::basic_string((void **)&v155, (char *)off_5539C8), // "src" 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); // [x[ v130 = (_DWORD *)this[62]; // this.offset_248 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") ) { // this->offset_72[i] // int v131 v131 = *(_DWORD *)(this[18] + 8 * v137); v126 = (_DWORD *)(v131 + 52); // cur->offset_48.end() std::string::basic_string((void **)&v155, (char *)off_5539C8); // "src" v132 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> ::find( (_DWORD *)(v131 + 48), // cur->offset_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); // "[x[" 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; } // end while // RenderChildren - 5 v150 = 0; v149[0] = &v150; v149[1] = 0; v127 = 0; for ( i = 0; ; i = Stra ) { // this->offset_72 v28 = this[18]; if ( (this[19] - v28) >> 3 <= v127 ) break; Strc = *(char **)(v28 + 8 * v127); // cur 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, // Strc.offset_48 (int)v153); // "wx-if" Str = 1; if ( v102 == v29 ) { Strd = *(char **)(this[18] + 8 * v127); // cur 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,// Strd.offset_48 (int)&v155); // "wx:if" 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); // cur v103 = Stre + 52; // offset_52 std::string::basic_string((void **)v151, "wx:elif"); Strf = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> ::find( (_DWORD *)Stre + 12, //offset_48 (int)v151); std::string::_M_dispose((void **)v151); if ( v103 == Strf ) { Strg = *(char **)(this[18] + 8 * v127); // cur 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; }// end while // RenderChildren - 10 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); // this->offset_72[j].offset_244 if ( *(int *)(*(_DWORD *)(this[18] + 8 * j) + 244) <= 0 ) goto LABEL_56; // this->offset_72[j].offset_244 > 0 v154 = 0; v153[0] = (int)&v154; v153[1] = 0; v98 = WXML::DOMLib::szWXIFControlAttrs; while ( 1 ) { Strb = *v98; v96 = *(_DWORD *)(this[18] + 8 * j); // cur if ( !*v98 ) break; v95 = *(_DWORD *)(this[18] + 8 * j) + 52; // cur->offset_52 std::string::basic_string((void **)&v155, Strb); v97 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> ::find( (_DWORD *)(v96 + 48), // cur->offset_48 (int)&v155); // Strb v98 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), // cur->offset_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), // cur->offset_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); // end this->offset_72[j].offset_244 > 0 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); // cur v99 = Stri + 52; std::string::basic_string((void **)&v155, (char *)off_5539C8); // "src" Strj = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( (_DWORD *)Stri + 12, // cur->offset_48 (int)&v155); // src 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); // ",x[" v100 = (_DWORD *)this[62]; Strk = *(char **)(this[18] + 8 * j); std::string::basic_string((void **)v153, (char *)off_5539C8); // "src" v65 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> ::find( (_DWORD *)Strk + 12, // cur->offset_48 (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]; // 248 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); } } // RenderChildren - 15 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); } // RenderChildren - 20 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); } // RenderChildren - 25 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); } // RenderChildren - 30 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); // 4 * 62 = 248 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 // this.offset_4 a1[1] = 0; result = 0; // this.offset_0 *a1 = 0; // this.offset_8 a1[2] = 1; // this.offset_12 a1[3] = 0; // this.offset_16 a1[4] = 1; // this.offset_20 a1[5] = 1; // this.offset_24 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 == '\n'/*10*/ ) { v6 = lpuexcpt; // this->offset_8(lineCount) ++*((_DWORD *)lpuexcpt + 2); // this->offset_12(lineLength) *((_DWORD *)v6 + 3) = 0; } // v44 喂入的字符 v44 = (unsigned __int8)v46; do { // offset_24 v45 = *((_DWORD *)lpuexcpt + 6); // v44 喂入的字符 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)); // offset 4 * 6 = 24 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); // 文件路径,偏移:4 * 7 = 28 std::operator<<>(v9, ":"); // inc v10 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpt + 2)); // 行数,偏移:4 * 2 = 8 std::operator<<>(v10, ":"); // lineLength v11 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpt + 3)); // 行长度,偏移:4 * 3 = 12 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); // v46 从TT中取出的 // this->offset_24 *((_DWORD *)lpuexcpt + 6) = (unsigned __int16)v46; if ( v16 ) // if(_bittest(&v46, 0x15u)) { // v15 this 基址 // this->offset_4 v17 = *((_DWORD *)v15 + 1); // fileLength > (v17 offset_4) if ( *(_DWORD *)v15 > v17 ) { // this->offset_4存起来,有用;偏移 4 * 1 = 4 v53 = *((_DWORD *)v15 + 1); // v49.offset_16 v57 = v59; v61 = v63; v65 = v67; // v18 外面不会用;偏移 4 * 4 = 16 v18 = *((_DWORD *)v15 + 4); // this->offset_4++; v17是offset_4的值 *((_DWORD *)v15 + 1) = v17 + 1; // v18是offset_16的值 v51 = v18; // v49.offset_8 // this->offset_20 暂存,有用;偏移 4 * 5 = 20 v19 = *((_DWORD *)v15 + 5); v49 = 0; v52 = v19; // v49.offset_12 // this->offset_20++ *((_DWORD *)v15 + 5) = v19 + 1; v50 = 0; // v49.offset_4 v58 = 0; v59[0] = 0; v62 = 0; v63[0] = 0; v66 = 0; v67[0] = 0; v56 = 0; v64 = 0; v60 = -1; v54 = 1; // v49.offset_20 v55 = 0; // v49.offset_24 std::vector::push_back(a3, (WXML::DOMLib::Token *)&v49); // a3.push_back(); WXML::DOMLib::Token::~Token((int)&v49); } } // v46 从TT中取出的 if ( _bittest(&v46, 0x16u) ) { // int a5; a5+4 -> a5.offset_4 end WXML::DOMLib::Token::Token((int)&v49, (WXML::DOMLib::Token *)(*(_DWORD *)(a5 + 4) - 112), v43); // 4 a5.offset_4 v20 = *(_DWORD *)(a5 + 4) - 112; // 4 a5.offset_4 *(_DWORD *)(a5 + 4) = v20; WXML::DOMLib::Token::~Token(v20); v21 = lpuexcpt; // offset 4 * 4 = offset_16 *((_DWORD *)lpuexcpt + 4) = v51; // offset 4 * 5 = offset_20 *((_DWORD *)v21 + 5) = v52; // offset 4 * 1 = offset_4 *((_DWORD *)v21 + 1) = v53; WXML::DOMLib::Token::~Token((int)&v49); } } while ( _bittest(&v46, 0x14u) ); // v46 从TT中取出的 if ( _bittest(&v46, 0x11u) ) { v22 = *(_DWORD *)lpuexcpt; // this->offset_0 v23 = *((_DWORD *)lpuexcpt + 1); // this->offset_4 // offset_1 < offset_0 if ( v23 < *(_DWORD *)lpuexcpt ) { // lineLength this.offset_12 v24 = *((_DWORD *)lpuexcpt + 3); v49 = 0; // v49.offset_0 v57 = v59; v61 = v63; v65 = v67; v50 = 0; // v50 -> v49.offset_4 // this.offset_16 v25 = *((_DWORD *)lpuexcpt + 4); v67[0] = 0; v58 = 0; // v51 -> v49.offset_8 = this.offset_16 v51 = v25; v59[0] = 0; // this.offset_20 v26 = *((_DWORD *)lpuexcpt + 5); v63[0] = 0; v62 = 0; // v52 -> v49.offset_12 = this.offset_20 v52 = v26; v66 = 0; // v54 -> v49.offset_20 = this.offset_0(fileLength) - this.offset_4 v54 = v22 - v23; v27 = lpuexcpt; // v56 -> v49.offset_28 v56 = 0; // this.offset_4 = this.offset_0(fileLength) *((_DWORD *)lpuexcpt + 1) = v22; // this.offset_8 v28 = *((_DWORD *)v27 + 2); // this.offset_20 = this.offset_12(lineLength) *((_DWORD *)v27 + 5) = v24; // this.offset_16 = this.offset_8(lineCount) *((_DWORD *)v27 + 4) = v28; v64 = 0; // v45 offset_24 v29 = WXML::DOMLib::Machine::STT[v45]; // v53 -> v49.offset_16 = this->offset_4 修改之前的 v53 = v23; v60 = -1; // offset_56 /* v49 offset_0 v50 v60 offset_56 */ // v55 -> v49.offset_24 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; // offset_0 + 1 fileLength v32 = *(_DWORD *)lpuexcpt + 1; // offset_12 + 1 lineLength 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; // this->offset_16 v35 = *((_DWORD *)v31 + 4); // v49.offset_0 v49 = 0; // v49.offset_8 = this->offset_16 v51 = v35; // this->offset_20 v36 = *((_DWORD *)v31 + 5); // v49.offset_4 v50 = 0; // token.offset_12 = this->offset_20 v52 = v36; // v37 = this.offset_4 v37 = *((_DWORD *)v31 + 1); // this.offset_4 = this.offset_0 + 1 = this->fileLength 加一之后的值 *((_DWORD *)v31 + 1) = v32; // this.offset_8(lineCount) v38 = *((_DWORD *)v31 + 2); // this.offset_20 = this.offset_12(lineLength) 加一之后的值 *((_DWORD *)v31 + 5) = v33; // this.offset_16 = this.offset_8(lineCount) *((_DWORD *)v31 + 4) = v38; v58 = 0; v39 = WXML::DOMLib::Machine::STT[v45]; v59[0] = 0; v62 = 0; // token.offset_24 v55 = v39; v63[0] = 0; v66 = 0; v56 = 0; v64 = 0; v60 = -1; // token.offset_16 = this->offset_4 修改之前的值 v53 = v37; // v49.offset_20 = (this->offset_0 + 1)fileLength - this->offset_4 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; // v7在递增 while ( *(_DWORD *)(*this + 4) > v7 ) { // v6 Feed失败 if ( v6 ) return v6; v13 = v7; // v14 没用; v5 machine v14 = v5; v8 = WXML::DOMLib::Machine::Feed( v5, *(_BYTE *)(*(_DWORD *)*this + v7), (int)a2, (unsigned __int8 **)a3, (int)a4, 0); v5 = v14; // v8 中转 v6 = v8; v7 = v13 + 1; } if ( !v6 ) { // 上面Feed是成功的 v9 = 0; // 喂了一个0 v15 = WXML::DOMLib::Machine::Feed(v5, 0, (int)a2, (unsigned __int8 **)a3, (int)a4, 0); // std::vector a2 a4 // a2[1] - *a2 = a2[1] - a2[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 // RenderAsOps - 0 v36 = (std::ostream::sentry *)*this; v44 = (WXML::EXPRLib::Token *)(a2 + 8); std::operator<<>((std::ostream::sentry *)(a2 + 8), (char *)&off_5542FA[2]); // v36 this if ( *(_BYTE *)v36 == '$'/*36*/ ) { // this->offset_24 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, ",'"); // this[9] -> this->offset_24->offset_12 -> v6 // +4 -> length lpuexcpta = (struct _Unwind_Exception *)(*(_DWORD *)(this[9] + 4) - 2); v6 = WXML::EXPRLib::Token::GetLiteral(v37); /** * a2 stringstream */ 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; // << "]"; return } // RenderAsOps - 5 // v36 -> this if ( *(_BYTE *)v36 == 'O'/*79*/ && *((_BYTE *)v36 + 1) == 'P'/*80*/ && *((_BYTE *)v36 + 2) == '_'/*95*/ ) { if ( std::operator==((int)this, "OP_PATH") ) { if ( this[14] - this[13] != 8 ) goto LABEL_46; // << "]"; return 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; // << "]"; return } 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; // << "]"; return 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); } } } } // RenderAsOps - 10 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, ","); // 13 * 4 = 52 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); } } // RenderAsOps - 15 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 // WXML::EXPRLib::Parser::Parse - 0 // int this // 清空 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); // std::vector v74; v74 = 0; v75 = 0; v76 = 0; Tokens = WXML::EXPRLib::Tokenizer::GetTokens((int *)v77, &v74, a6); v43 = v7; if ( Tokens ) goto LABEL_78; // WXML::EXPRLib::Parser::Parse - 5 if ( v74 == (char *)v75 ) { // _DWORD *v8; WXML::EXPRLib::ExprSyntaxTree v8 = operator new(0x40u); memset(v8, 0, 0x40u); *v8 = v8 + 2; // std::string地址指向“向后偏移8位”的位置 WXML::EXPRLib::Token::Token(v8 + 6); // v8.offset_24 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::Parser::Parse - 10 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; } // WXML::EXPRLib::Parser::Parse - 15 // _DWORD *v11 v11 = operator new(0x38u); // 0x38 -> 56 *v11 = &off_55F220; // 函数? v11[1] = v11 + 3; // std::string v11[2] = 0; // v11.offset_12 *((_BYTE *)v11 + 12) = 0; // v11.offset_28 WXML::EXPRLib::Token::Token(v11 + 7); zcc::shared_ptr::shared_ptr(&v68, (int)v11); Blockh = v68; // Blockh - v68 - v11 WXML::EXPRLib::Base std::string::basic_string((void **)&v84, "$"); // Blockh -> v11 -> v68 std::string::_M_assign((int)Blockh + 4, (int)&v84); std::string::_M_dispose((void **)&v84); std::deque>::push_back(this, (int *)&v68); // WXML::EXPRLib::Base v12 = operator new(8u); *v12 = &off_55F1E4; // 函数? v12[1] = 0; zcc::shared_ptr::shared_ptr(&v70, (int)v12); // Block - v70 - 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; // WXML::EXPRLib::Parser::Parse - 20 while ( 1 ) { // int this v13 = *(_DWORD *)(this + 24); // this->offset_24 if ( *(_DWORD *)(this + 8) == v13 ) // this->offset_8 break; if ( v13 == *(_DWORD *)(this + 28) ) // this->offset_28 v13 = *(_DWORD *)(*(_DWORD *)(this + 36) - 4) + 512; // int v13 v42 = *(_DWORD *)(v13 - 4); // 00(v72) 00 00 00, 00(v42) 00 00 00(v13) shared_ptr v72 = *(_DWORD **)(v13 - 8); // WXML::EXPRLib::Base std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(&v73, v42); // v49在递增 WXML::EXPRLib::Token::Token((int *)&v84, (WXML::EXPRLib::Token *)&v74[28 * v49], v44); // v72.offset_8 v15 = (*(int (__thiscall **)(_DWORD *, int))(*v72 + 8))(v72, v14); Blocka = v72; // WXML::EXPRLib::Parser::Parse - 20-1 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; // offset_52 Blocki[14] = 0; // offset_56 Blocki[15] = 0; // offset_60 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); } } // WXML::EXPRLib::Parser::Parse - 20-2 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; // 销毁数据,return Tokens } v20 = (int *)std::deque>::back((_DWORD *)(this + 40)); // v78 - v20 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; // 销毁数据,return Tokens } v21 = (int *)std::deque>::back((_DWORD *)(this + 40)); std::__shared_ptr::__shared_ptr((int *)&v80, v21); // v80.offset_52 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); // OP_PATH... std::string::_M_assign((int)v78, (int)(v50 + 1)); // v50 -> v72 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; // 销毁数据,return Tokens } v23 = (int *)std::deque>::back((_DWORD *)(this + 40)); // v78.offset_52.push_back(v23) std::vector>::push_back(v78 + 13, v23); std::deque>::pop_back((_DWORD *)(this + 40)); } if ( !v47 ) { // v78->offset_56 v24 = v78[14]; if ( v78[13] != v24 ) { // v78->offset_52 v51 = v78[13]; // WXML::EXPRLib::ExprSyntaxTree 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; // v80 - v51 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; // 销毁v19 } // WXML::EXPRLib::Parser::Parse - 20-3 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> 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; // 找key是v78的value bengin 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; } // 找key是v78的value end // 是不是end 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::vector v32 = std::map>::operator[](v31, &v80); // begin == end 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: // 销毁数据,return Tokens std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v86); goto LABEL_76; // 销毁数据,return Tokens } 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::vector v53 = std::map>::operator[](v35, &v80); std::string::_M_dispose((void **)&v80); // >> 3 大小应该是8字节 for ( Blockg = ((*(_DWORD *)(*(_DWORD *)v53 + 4) - **(_DWORD **)v53) >> 3) - 1; Blockg >= 0; --Blockg ) { // v53[Blockg] WXML::EXPRLib::BNF 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); } // WXML::EXPRLib::Parser::Parse - 25 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); } // WXML::EXPRLib::Parser::Parse - 30 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 ) { // a1->offset_12 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; // std::string缓冲区 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 { // v25 -> *this 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] ) // begin == end { 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 临时存储,其它地方没用到 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); // v6 = Str[lpuexcpt] 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; // ++ next while } if ( v17 > 2 ) { if ( v6 == '\\'/*92*/ ) { LABEL_37: lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); goto LABEL_44; // ++ next while } v11 = v6 == '\''/*39*/; goto LABEL_39; } if ( v17 ) { if ( v6 != '}'/*125*/ || v7 != '}'/*125*/ ) { if ( v6 == '"'/*34*/ ) { v17 = 2; goto LABEL_44; // ++ next while } 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 != '\t'/*9*/ ) break; ++v5; } while ( v5 < (int)v8 ) { v10 = v8[(_DWORD)Str]; if ( v10 != ' '/*32*/ && v10 != '\t'/*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); } // end while 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; // *(_DWORD *)(a1 + 16) pos v6 = (_BYTE *)(**(_DWORD **)a1 + *(_DWORD *)(a1 + 16)); // size 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; // \n goto LABEL_20; case 't': Src[v3] = 9; // \t goto LABEL_20; case 'r': Src[v3] = 13; // \r 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]; // a1字符串长度 v3 = v10 - 1; // a1 std::string地址(内容,长度) // *a1 std::string内容的地址 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; // v1 字符串缓冲区第一个字符 if ( v1 == '_'/*95*/ || v1 == '$'/*36*/ || (v2 = (v1 & 0xDF) - 'A'/*65*/, result = 0, v2 <= 0x19u) ) // 0x19u 25 { for ( i = 1; ; ++i ) { // a1[1] a1字符长度 if ( (unsigned int)a1[1] <= i ) return 1; v5 = (*a1)[i]; if ( v5 <= '`'/*96*/ ) { if ( v5 > '@'/*64*/ ) { if ( v5 <= 'Z'/*90*/ ) continue; v7 = v5 == '_'/*95*/; goto LABEL_13; } if ( v5 <= '/'/*47*/ ) { v7 = v5 == '$'/*36*/; LABEL_13: if ( !v7 ) return 0; continue; } v6 = v5 <= '9'/*57*/; } else { v6 = v5 <= 'z'/*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 ) { // a1.offset_20 size v4 = *(_DWORD *)(a1 + 20); for ( i = 0; ; ++i ) { if ( v4 <= i ) return *((_BYTE *)this + v4) == 0; // a1.offset_16 pos 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 // offset 32 v1 = (unsigned __int8 **)(a1 + 32); // offset 28 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 // this[18] -> this->offset_72 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 ) { // _DWORD *this, // this[18] -> this.offset_(18 * 4) -> this->offset_72 // a2 是 int,那么8可能是单位数据的大小 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; // this->offset_72[a2] 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]; // this->offset_72 // (this[19] - v7) / 8 // 8 是单位大小,除以8就是单位的数量 // this[18]是起点,this[19]是终点 if ( (this[19] - v7) >> 3 <= i ) break; v10 = 8 * i; // this->offset_72[i].offset_48 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]; // a3.end() if ( v12 != std::find<__gnu_cxx::__normal_iterator>,std::string>( *a3, // start v12, // end // this->offset_(18 * 4) -> this->offset_72 // this->offset_72[i] *(_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 - 'a'/*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) { /* a2 std::vector const& */ 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) { // std::vector const& 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] // 19 * 4 = 76; 18 * 4 = 72 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) ) { // 把 v7 复制到 v6 v6 = (volatile signed __int32 **)(this[18] + v4); // 18 * 4 = 72 v7 = (volatile signed __int32 **)*((_DWORD *)*v6 + 18); v8 = *v7; v9 = v7[1]; *v6 = v8; // v6 + 1 -> v6.offset_4 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 ) { // this.offset_(19*4) -> offset_76 // this.offset_(18*4) -> offset_72 result = (this[19] - this[18]) >> 3; // size 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: "); // int this for ( j = *(_DWORD *)(this + 60); ; j = std::_Rb_tree_increment(v32) ) { v32 = j; if ( j == this + 52 ) break; // int j 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, "->"); // int v32 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; } /** * off_55F20C */ //----- (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 /** * off_55F220 * 0 */ //----- (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 + 44) = this + 52; *(_DWORD *)(this + 48) = 0; *(_BYTE *)(this + 52) = 0; *(_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); // "\0" } //----- (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); // 0x30的空间 v10 = (void **)(Block + 16); // Block.offset_64 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; // main - 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; // main - 5 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); } } // main - 10 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); } // main - 15 Streama = 0; v43 = 0; v44 = 0; v60 = 0; v53 = 0; v55 = -1431655765 * ((v90 - (int)v89) >> 3); v45 = 0; FileNamea = 0; // main - 20 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); } // main - 25 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); } // main - 30 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; // main - 35 // 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); } } // main - 40 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); } // main - 45 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, // fileContentMap (int *)v111, // errorMessage &v115, // outputContentMap &v101, // outputFuncMap &v121, // dependencyListMap v126, // componentListMap (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__"); // int v115 -> outputContentMap v61 = v117; // 根节点 Streamh = &v116; // 0 // 查找outputContentMap有没有名为__COMMON__的key 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__"); // v115["__COMMON__"] = v137 + v140 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__"); // int v115 -> outputContentMap Streamm = (FILE *)std::map::operator[](&v115, &v140); // v115["__COMMON__"] 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); // v137 = v135 + v136 v31 = std::string::append(&v137, (int)Streamm); // v137.append(Streamm) std::string::basic_string(&v143, v31); std::string::basic_string((void **)String, "__COMMON__"); v32 = (unsigned __int8 **)std::map::operator[](&v115, String); // v115["__COMMON__"] = v143 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__||{};"); // int *j for ( j = v123; ; j = (int *)std::_Rb_tree_increment((int)Streami) ) { Streami = (FILE *)j; if ( j == v122 ) // end break; if ( j[11] != j[10] ) { v62 = std::operator<<>((std::ostream::sentry *)v145, "__WXML_DEP__[\""); // key 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; // value - 引用列表 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__"); // int v115 -> outputContentMap v37 = std::map::operator[](&v115, &v137); // v37 = v115["__COMMON__"] 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); // stderr 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); } // main - 50 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); // stderr fprintf(v26, "%s\n", (const char *)Streaml); } else { Streamf = ___acrt_iob_func(1u); // stdout if ( FileNamea && *FileNamea ) Streamf = fopen(FileNamea, "w"); // specify file fprintf(Streamf, "%s\n", (const char *)v113[0]); fclose(Streamf); } } // main - 55 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)"