Function at 0x46ec70
Capabilities:
Check if file exists
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5b44e0
mov eax, dword fs:[0]
push eax
sub esp, 0x2d8
mov eax, dword [0x645300]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x2b0], ebx
mov eax, dword [ebp + 8]
push 0x208
mov dword [ebp - 0x2a8], eax
lea eax, [ebp - 0x21c]
push 0
push eax
mov dword [ebp - 0x298], 0
call fcn.00546d20
add esp, 0xc
lea eax, [ebp - 0x21c]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
lea eax, [ebp - 0x21c]
push eax
lea ecx, [ebp - 0x278]
call dword [sym.imp.utilities4.dll_public:_void___thiscall_SOUI::SStringW::constructor_wchar_t_const__]
mov dword [ebp - 4], 0
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebx + 0x364], eax
lea ecx, [ebp - 0x268]
mov byte [ebp - 4], 1
call dword [sym.imp.utilities4.dll_public:_void___thiscall_SOUI::SStringW::constructor_void_]
push str.dialConfig.ini
mov dword [ebp - 0x298], 8
call dword [sym.imp.utilities4.dll_protected:_static_int___cdecl_SOUI::SStringW::SafeStrlen_wchar_t_const__]
mov edi, dword [ebp - 0x270]
lea ecx, [ebp - 0x278]
add esp, 4
mov esi, eax
call dword [sym.imp.utilities4.dll_protected:_struct_SOUI::TStringData____thiscall_SOUI::SStringW::GetData_void_const]
push str.dialConfig.ini
push esi
push edi
mov ecx, dword [eax + 4]
push ecx
lea ecx, [ebp - 0x268]
call dword [sym.imp.utilities4.dll_protected:_bool___thiscall_SOUI::SStringW::ConcatCopy_int__wchar_t_const___int__wchar_t_const__]
lea eax, [ebp - 0x268]
push eax
lea ecx, [ebx + 0x378]
call dword [sym.imp.utilities4.dll_public:_class_SOUI::SStringW____thiscall_SOUI::SStringW::operator_class_SOUI::SStringW_const__]
lea ecx, [ebp - 0x268]
mov dword [ebp - 0x298], 0
call dword [sym.imp.utilities4.dll_public_virtual:_void___thiscall_SOUI::SStringW::destructor_void_]
lea esi, [ebx + 0x3a8]
mov dword [ebp - 0x2b8], esi
lea ecx, [ebp - 0x268]
mov byte [ebp - 4], 2
call dword [sym.imp.utilities4.dll_public:_void___thiscall_SOUI::SStringW::constructor_void_]
mov ebx, dword [esi + 8]
mov ecx, esi
mov dword [ebp - 0x298], 0x10
call dword [sym.imp.utilities4.dll_protected:_struct_SOUI::TStringData____thiscall_SOUI::SStringW::GetData_void_const]
mov edi, dword [ebp - 0x270]
lea ecx, [ebp - 0x278]
mov esi, dword [eax + 4]
call dword [sym.imp.utilities4.dll_protected:_struct_SOUI::TStringData____thiscall_SOUI::SStringW::GetData_void_const]
push ebx
push esi
push edi
mov eax, dword [eax + 4]
lea ecx, [ebp - 0x268]
push eax
call dword [sym.imp.utilities4.dll_protected:_bool___thiscall_SOUI::SStringW::ConcatCopy_int__wchar_t_const___int__wchar_t_const__]
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x2a4]
mov ebx, dword [sym.imp.utilities4.dll_public:_void___thiscall_SOUI::SStringW::constructor_void_]
call ebx
mov dword [ebp - 0x298], 0x30
push 0x5ec4d8
call dword [sym.imp.utilities4.dll_protected:_static_int___cdecl_SOUI::SStringW::SafeStrlen_wchar_t_const__]
mov edi, dword [ebp - 0x260]
lea ecx, [ebp - 0x268]
add esp, 4
mov esi, eax
call dword [sym.imp.utilities4.dll_protected:_struct_SOUI::TStringData____thiscall_SOUI::SStringW::GetData_void_const]
push 0x5ec4d8
push esi
push edi
mov ecx, dword [eax + 4]
push ecx
lea ecx, [ebp - 0x2a4]
call dword [sym.imp.utilities4.dll_protected:_bool___thiscall_SOUI::SStringW::ConcatCopy_int__wchar_t_const___int__wchar_t_const__]
mov esi, dword [ebp - 0x2b0]
lea eax, [ebp - 0x2a4]
add esi, 0x384
push eax
mov ecx, esi
mov dword [ebp - 0x2ac], esi
call dword [sym.imp.utilities4.dll_public:_class_SOUI::SStringW____thiscall_SOUI::SStringW::operator_class_SOUI::SStringW_const__]
mov edi, dword [sym.imp.utilities4.dll_public_virtual:_void___thiscall_SOUI::SStringW::destructor_void_]
lea ecx, [ebp - 0x2a4]
call edi
xor eax, eax
lea ecx, [ebp - 0x268]
mov dword [ebp - 0x298], eax
mov byte [ebp - 4], al
call edi
mov ecx, esi
call dword [sym.imp.utilities4.dll_public:_wchar_t_const____thiscall_SOUI::SStringW::operator_wchar_t_const__void_const]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x46eeba
mov ecx, dword [ebp - 0x2a8]
push str.xunyou.dat
call dword [sym.imp.utilities4.dll_public:_class_SOUI::SStringW____thiscall_SOUI::SStringW::operator_wchar_t_const__]
xor bl, bl
jmp 0x46f3ff
lea ecx, [ebp - 0x284]
call ebx
mov ecx, esi
mov byte [ebp - 4], 4
mov ebx, 0x400
call dword [sym.imp.utilities4.dll_public:_wchar_t_const____thiscall_SOUI::SStringW::operator_wchar_t_const__void_const]
mov esi, eax
lea eax, [ebp - 0x284]
push ebx
push eax
call dword [sym.imp.utilities4.dll_public_virtual:_wchar_t____stdcall_SOUI::SStringW::GetBuffer_int_]
push esi
push ebx
push eax
push str.UIComponents
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
add eax, 2
cmp eax, ebx
jb 0x46ef33
nop dword [eax + eax]
mov ecx, dword [ebp - 0x2ac]
add ebx, ebx
call dword [sym.imp.utilities4.dll_public:_wchar_t_const____thiscall_SOUI::SStringW::operator_wchar_t_const__void_const]
mov esi, eax
lea eax, [ebp - 0x284]
push ebx
push eax
call dword [sym.imp.utilities4.dll_public_virtual:_wchar_t____stdcall_SOUI::SStringW::GetBuffer_int_]
push esi
push ebx
push eax
push str.UIComponents
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
add eax, 2
cmp eax, ebx
jae 0x46ef00
push 0
lea eax, [ebp - 0x284]
push eax
call dword [sym.imp.utilities4.dll_public_virtual:_wchar_t____stdcall_SOUI::SStringW::GetBuffer_int_]
mov esi, eax
xor ecx, ecx
movzx eax, word [esi]
cmp cx, ax
mov dword [ebp - 0x2ac], esi
je 0x46f3f5
mov edx, 0x3b
mov ecx, eax
cmp dx, cx
je 0x46f194
lea ecx, [ebp - 0x290]
call dword [sym.imp.utilities4.dll_public:_void___thiscall_SOUI::SStringW::constructor_void_]
push dword [ebp - 0x2b8]
lea edx, [ebp - 0x278]
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x268]
call fcn.004796e0
push 0x3d
push esi
mov byte [ebp - 4], 6
call fcn.005460db
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x46efe7
mov ecx, ebx
sub ecx, esi
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x2c4]
call dword [sym.imp.utilities4.dll_public:_void___thiscall_SOUI::SStringW::constructor_wchar_t_const___int_]
push eax
lea ecx, [ebp - 0x268]
mov byte [ebp - 4], 7
call dword [sym.imp.utilities4.dll_public:_class_SOUI::SStringW_const____thiscall_SOUI::SStringW::operator_class_SOUI::SStringW_const__]
lea ecx, [ebp - 0x2c4]
mov byte [ebp - 4], 6
call edi
add ebx, 2
lea ecx, [ebp - 0x290]
push ebx
call dword [sym.imp.utilities4.dll_public:_class_SOUI::SStringW____thiscall_SOUI::SStringW::operator_wchar_t_const__]
jmp 0x46eff4
push esi
lea ecx, [ebp - 0x268]
call dword [sym.imp.utilities4.dll_public:_class_SOUI::SStringW_const____thiscall_SOUI::SStringW::operator_wchar_t_const__]
lea ecx, [ebp - 0x268]
call dword [sym.imp.utilities4.dll_public:_wchar_t_const____thiscall_SOUI::SStringW::operator_wchar_t_const__void_const]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 0x294], eax
test eax, eax
je 0x46f2d5
push str.XunYouUIComponentEntry
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ebx, eax
test ebx, ebx
je 0x46f28f
push 0x3c
lea eax, [ebp - 0x258]
mov dword [ebp - 0x25c], 0
push 0
push eax
call fcn.00546d20
add esp, 0xc
mov dword [ebp - 0x26c], 0x10
lea eax, [ebp - 0x26c]
push eax
lea eax, [ebp - 0x25c]
push eax
mov eax, dword [ebp - 0x2b0]
mov ecx, eax
add eax, 0x260
neg ecx
sbb ecx, ecx
and ecx, eax
push ecx
call ebx
add esp, 0xc
test eax, eax
js 0x46f249
xor ebx, ebx
cmp dword [ebp - 0x26c], ebx
jbe 0x46f180
nop
mov eax, dword [ebp + ebx*4 - 0x25c]
test eax, eax
je 0x46f1c1
mov edi, dword [ebp - 0x2b0]
lea ecx, [ebp - 0x2d0]
mov dword [ebp - 0x2d8], eax
add edi, 0x3b4
mov eax, dword [ebp - 0x294]
mov dword [ebp - 0x2d4], eax
lea eax, [ebp - 0x290]
push eax
call dword [sym.imp.utilities4.dll_public:_void___thiscall_SOUI::SStringW::constructor_class_SOUI::SStringW_const__]
or dword [ebp - 0x298], 0x80
mov byte [ebp - 4], 0xf
cmp dword [edi + 4], 0x9249249
mov eax, dword [edi]
mov dword [ebp - 0x2b4], eax
je 0x46f427
mov dword [ebp - 0x2a0], edi
mov byte [ebp - 4], 0x10
push 0x1c
mov dword [ebp - 0x29c], 0
call fcn.00543bf7
mov ecx, dword [ebp - 0x2d8]
mov esi, eax
add esp, 4
mov dword [ebp - 0x29c], esi
lea eax, [ebp - 0x2d0]
mov dword [esi + 8], ecx
mov ecx, dword [ebp - 0x2d4]
mov dword [esi + 0xc], ecx
lea ecx, [esi + 0x10]
push eax
call dword [sym.imp.utilities4.dll_public:_void___thiscall_SOUI::SStringW::constructor_class_SOUI::SStringW_const__]
inc dword [edi + 4]
mov ecx, dword [ebp - 0x2b4]
mov dword [ebp - 0x29c], 0
mov eax, dword [ecx + 4]
mov dword [esi], ecx
mov dword [esi + 4], eax
mov dword [ecx + 4], esi
lea ecx, [ebp - 0x2d0]
mov byte [ebp - 4], 6
mov edi, dword [sym.imp.utilities4.dll_public_virtual:_void___thiscall_SOUI::SStringW::destructor_void_]
mov dword [eax], esi
call edi
inc ebx
cmp ebx, dword [ebp - 0x26c]
jb 0x46f090
mov esi, dword [ebp - 0x2ac]
lea ecx, [ebp - 0x268]
call edi
lea ecx, [ebp - 0x290]
mov byte [ebp - 4], 4
call edi
mov eax, esi
lea edx, [eax + 2]
nop dword [eax]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x46f1a0
sub eax, edx
sar eax, 1
lea esi, [esi + eax*2]
movzx eax, word [esi + 2]
add esi, 2
test ax, ax
jmp 0x46ef4c
lea ecx, [ebp - 0x2a4]
mov byte [ebp - 4], 0xe
call dword [sym.imp.utilities4.dll_public:_void___thiscall_SOUI::SStringW::constructor_void_]
or dword [ebp - 0x298], 0x40
push 0x5ec57c
call dword [sym.imp.utilities4.dll_protected:_static_int___cdecl_SOUI::SStringW::SafeStrlen_wchar_t_const__]
mov edi, dword [ebp - 0x260]
lea ecx, [ebp - 0x268]
add esp, 4
mov esi, eax
call dword [sym.imp.utilities4.dll_protected:_struct_SOUI::TStringData____thiscall_SOUI::SStringW::GetData_void_const]
push 0x5ec57c
mov ecx, dword [eax + 4]
push esi
push edi
push ecx
lea ecx, [ebp - 0x2a4]
call dword [sym.imp.utilities4.dll_protected:_bool___thiscall_SOUI::SStringW::ConcatCopy_int__wchar_t_const___int__wchar_t_const__]
mov ecx, dword [ebp - 0x2a8]
lea eax, [ebp - 0x2a4]
push eax
call dword [sym.imp.utilities4.dll_public:_class_SOUI::SStringW____thiscall_SOUI::SStringW::operator_class_SOUI::SStringW_const__]
mov edi, dword [sym.imp.utilities4.dll_public_virtual:_void___thiscall_SOUI::SStringW::destructor_void_]
lea ecx, [ebp - 0x2a4]
call edi
lea ecx, [ebp - 0x268]
call edi
lea ecx, [ebp - 0x290]
call edi
xor bl, bl
jmp 0x46f3f7
lea ecx, [ebp - 0x2a4]
mov byte [ebp - 4], 0xd
call dword [sym.imp.utilities4.dll_public:_void___thiscall_SOUI::SStringW::constructor_void_]
or dword [ebp - 0x298], 0x200
push 0x5ec568
call dword [sym.imp.utilities4.dll_protected:_static_int___cdecl_SOUI::SStringW::SafeStrlen_wchar_t_const__]
mov edi, dword [ebp - 0x260]
lea ecx, [ebp - 0x268]
add esp, 4
mov esi, eax
call dword [sym.imp.utilities4.dll_protected:_struct_SOUI::TStringData____thiscall_SOUI::SStringW::GetData_void_const]
push 0x5ec568
jmp 0x46f1ff
lea ecx, [ebp - 0x2a4]
mov byte [ebp - 4], 0xc
call dword [sym.imp.utilities4.dll_public:_void___thiscall_SOUI::SStringW::constructor_void_]
or dword [ebp - 0x298], 0x100
push 0x5ec554
call dword [sym.imp.utilities4.dll_protected:_static_int___cdecl_SOUI::SStringW::SafeStrlen_wchar_t_const__]
mov edi, dword [ebp - 0x260]
lea ecx, [ebp - 0x268]
add esp, 4
mov esi, eax
call dword [sym.imp.utilities4.dll_protected:_struct_SOUI::TStringData____thiscall_SOUI::SStringW::GetData_void_const]
push 0x5ec554
jmp 0x46f1ff
mov edi, dword [sym.imp.utilities4.dll_public:_void___thiscall_SOUI::SStringW::constructor_void_]
lea ecx, [ebp - 0x2d0]
call edi
mov esi, eax
mov byte [ebp - 4], 8
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x5df2e0
lea eax, [ebp - 0x2e4]
push eax
push esi
call dword [sym.imp.utilities4.dll_public:_class_SOUI::SStringW___cdecl_SOUI::SStringW::Format_wchar_t_const__]
mov ebx, eax
add esp, 0x10
mov dword [ebp - 0x2b4], ebx
lea ecx, [ebp - 0x2a4]
mov byte [ebp - 4], 0xa
call edi
or dword [ebp - 0x298], 2
push 0x5ec52c
call dword [sym.imp.utilities4.dll_protected:_static_int___cdecl_SOUI::SStringW::SafeStrlen_wchar_t_const__]
mov edi, dword [ebp - 0x260]
lea ecx, [ebp - 0x268]
add esp, 4
mov esi, eax
call dword [sym.imp.utilities4.dll_protected:_struct_SOUI::TStringData____thiscall_SOUI::SStringW::GetData_void_const]
push 0x5ec52c
push esi
push edi
mov ecx, dword [eax + 4]
push ecx
lea ecx, [ebp - 0x2a4]
call dword [sym.imp.utilities4.dll_protected:_bool___thiscall_SOUI::SStringW::ConcatCopy_int__wchar_t_const___int__wchar_t_const__]
lea ecx, [ebp - 0x2c4]
mov byte [ebp - 4], 0xb
call dword [sym.imp.utilities4.dll_public:_void___thiscall_SOUI::SStringW::constructor_void_]
mov ecx, dword [ebp - 0x2b4]
or dword [ebp - 0x298], 4
mov ebx, dword [ebx + 8]
call dword [sym.imp.utilities4.dll_protected:_struct_SOUI::TStringData____thiscall_SOUI::SStringW::GetData_void_const]
mov edi, dword [ebp - 0x29c]
lea ecx, [ebp - 0x2a4]
mov esi, dword [eax + 4]
call dword [sym.imp.utilities4.dll_protected:_struct_SOUI::TStringData____thiscall_SOUI::SStringW::GetData_void_const]
push ebx
push esi
push edi
mov eax, dword [eax + 4]
lea ecx, [ebp - 0x2c4]
push eax
call dword [sym.imp.utilities4.dll_protected:_bool___thiscall_SOUI::SStringW::ConcatCopy_int__wchar_t_const___int__wchar_t_const__]
mov ecx, dword [ebp - 0x2a8]
lea eax, [ebp - 0x2c4]
push eax
call dword [sym.imp.utilities4.dll_public:_class_SOUI::SStringW____thiscall_SOUI::SStringW::operator_class_SOUI::SStringW_const__]
mov edi, dword [sym.imp.utilities4.dll_public_virtual:_void___thiscall_SOUI::SStringW::destructor_void_]
lea ecx, [ebp - 0x2c4]
call edi
lea ecx, [ebp - 0x2a4]
call edi
lea ecx, [ebp - 0x2e4]
call edi
lea ecx, [ebp - 0x2d0]
call edi
lea ecx, [ebp - 0x268]
call edi
lea ecx, [ebp - 0x290]
call edi
xor bl, bl
jmp 0x46f3f7
mov bl, 1
lea ecx, [ebp - 0x284]
call edi
lea ecx, [ebp - 0x278]
call edi
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00543bb1
mov esp, ebp
pop ebp
ret 4
push str.list_too_long
call fcn.0051f220
int3