Function at 0x421100
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x488ac6
mov eax, dword fs:[0]
push eax
sub esp, 0x4a8
mov eax, dword [0x4c2010]
xor eax, ebp
mov dword [ebp - 0x10], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x44c], ecx
mov dword [ebp - 0x450], 0
lea ecx, [ebp - 0x444]
call dword [sym.imp.soui.dll_public:_void___thiscall_SOUI::SMenuEx::constructor_void_]
mov dword [ebp - 4], 0
push 0x49fc70
lea ecx, [ebp - 0x444]
call dword [sym.imp.soui.dll_public:_int___thiscall_SOUI::SMenuEx::LoadMenuW_wchar_t_const__]
cmp dword [0x4c6d40], 0
je 0x421174
mov dword [ebp - 0x454], 0x49fc98
jmp 0x42117e
mov dword [ebp - 0x454], 0x49fc9c
mov eax, dword [ebp - 0x454]
push eax
lea ecx, [ebp - 0x460]
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::constructor_wchar_t_const__]
mov byte [ebp - 4], 1
push 0x49fca0
lea ecx, [ebp - 0x45c]
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::constructor_wchar_t_const__]
mov byte [ebp - 4], 2
push 0xcc
lea ecx, [ebp - 0x444]
call dword [sym.imp.soui.dll_public:_class_SOUI::SMenuExItem____thiscall_SOUI::SMenuEx::GetMenuItem_int_]
mov dword [ebp - 0x458], eax
push 0
lea ecx, [ebp - 0x460]
push ecx
lea edx, [ebp - 0x45c]
push edx
mov eax, dword [ebp - 0x458]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x458]
mov eax, dword [edx + 0x10]
call eax
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x45c]
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::destructor_void_]
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x460]
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::destructor_void_]
push 8
lea ecx, [ebp - 0x2c]
call fcn.00401320
mov dword [ebp - 0x48c], 0
mov dword [ebp - 0x488], 2
mov dword [ebp - 0x484], 0xd
lea ecx, [ebp - 0x480]
push ecx
lea edx, [ebp - 0x48c]
push edx
lea ecx, [ebp - 0x49c]
call fcn.00401630
mov ecx, dword [eax + 4]
push ecx
mov edx, dword [eax]
push edx
lea ecx, [ebp - 0x2c]
call fcn.004280f0
mov byte [ebp - 4], 3
push 8
lea ecx, [ebp - 0x1c]
call fcn.00401320
lea eax, [ebp - 0x1c]
push eax
mov ecx, dword [ebp - 0x44c]
add ecx, 0x48c
call fcn.00401910
mov ecx, eax
call fcn.0040b4e0
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x490]
push ecx
lea ecx, [ebp - 0x2c]
call fcn.00427f20
push eax
lea ecx, [ebp - 0x1c]
call fcn.00401910
add eax, 0x3c
push eax
lea edx, [ebp - 0x494]
push edx
lea ecx, [ebp - 0x2c]
call fcn.00427fe0
mov ecx, eax
call fcn.00401660
movzx eax, al
test eax, eax
je 0x4212e4
push 0
lea ecx, [ebp - 0x1c]
call fcn.00401910
add eax, 0x1c
push eax
call fcn.0040df60
add esp, 8
movzx ecx, al
test ecx, ecx
je 0x4212e4
mov dword [ebp - 0x464], 1
jmp 0x4212ee
mov dword [ebp - 0x464], 0
mov edx, dword [ebp - 0x464]
mov dword [ebp - 0x474], edx
cmp dword [ebp - 0x474], 0
jne 0x42131c
push 0xcd
lea ecx, [ebp - 0x444]
call dword [sym.imp.soui.dll_public:_class_SOUI::SMenuExItem____thiscall_SOUI::SMenuEx::GetMenuItem_int_]
mov ecx, eax
call dword [sym.imp.soui.dll_public:_int___thiscall_SOUI::SWindow::DestroyWindow_void_]
lea ecx, [ebp - 0x1c]
call fcn.00401910
cmp dword [eax + 0x3c], 0xffffffff
je 0x421353
push 0
lea ecx, [ebp - 0x1c]
call fcn.00401910
add eax, 0x1c
push eax
call fcn.0040dff0
add esp, 8
movzx eax, al
test eax, eax
jne 0x421353
mov dword [ebp - 0x468], 0
jmp 0x42135d
mov dword [ebp - 0x468], 1
mov ecx, dword [ebp - 0x468]
mov dword [ebp - 0x478], ecx
push 4
lea ecx, [ebp - 0x14]
call fcn.00401320
lea ecx, [ebp - 0x1c]
call fcn.00401910
mov ecx, eax
call fcn.00411170
push eax
lea ecx, [ebp - 0x14]
call fcn.00401c80
mov byte [ebp - 4], 5
push 0x10
lea ecx, [ebp - 0x3c]
call fcn.00401320
lea ecx, [ebp - 0x3c]
call fcn.00452d60
mov byte [ebp - 4], 6
push 0
lea ecx, [ebp - 0x14]
call fcn.004022e0
push eax
lea ecx, [ebp - 0x4b4]
call fcn.00428920
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x450]
or edx, 1
mov dword [ebp - 0x450], edx
lea eax, [ebp - 0x4b4]
push eax
lea ecx, [ebp - 0x3c]
call fcn.00452e20
movzx ecx, al
test ecx, ecx
je 0x4213f9
cmp dword [ebp - 0x478], 0
jne 0x4213f9
mov dword [ebp - 0x46c], 0
jmp 0x421403
mov dword [ebp - 0x46c], 1
mov dl, byte [ebp - 0x46c]
mov byte [ebp - 0x445], dl
mov dword [ebp - 4], 6
mov eax, dword [ebp - 0x450]
and eax, 1
je 0x421433
and dword [ebp - 0x450], 0xfffffffe
lea ecx, [ebp - 0x4b4]
call fcn.004113b0
movzx ecx, byte [ebp - 0x445]
test ecx, ecx
je 0x421457
push 0x818
lea ecx, [ebp - 0x444]
call dword [sym.imp.soui.dll_public:_class_SOUI::SMenuExItem____thiscall_SOUI::SMenuEx::GetMenuItem_int_]
mov ecx, eax
call dword [sym.imp.soui.dll_public:_int___thiscall_SOUI::SWindow::DestroyWindow_void_]
push 8
lea ecx, [ebp - 0x24]
call fcn.00401320
lea edx, [ebp - 0x24]
push edx
mov ecx, dword [ebp - 0x44c]
add ecx, 0x48c
call fcn.00401910
mov ecx, eax
call fcn.0040b4e0
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x54]
call fcn.00428990
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x24]
call fcn.0040c390
movzx eax, al
test eax, eax
je 0x4214ad
lea ecx, [ebp - 0x24]
call fcn.00401910
push eax
lea ecx, [ebp - 0x54]
call fcn.004288b0
lea ecx, [ebp - 0x54]
call fcn.00411170
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x421561
lea ecx, [ebp - 0x24]
call fcn.00401910
mov ecx, dword [eax + 0x40]
push ecx
mov ecx, dword [ebp - 0x44c]
add ecx, 0x48c
call fcn.00401910
mov ecx, eax
call fcn.0040b970
mov dword [ebp - 0x470], eax
cmp dword [ebp - 0x470], 4
ja case.0x4214fd.1
mov edx, dword [ebp - 0x470]
jmp dword [edx*4 + 0x421654]
push 0
push 1
push 0xcb
lea ecx, [ebp - 0x444]
call dword [sym.imp.soui.dll_public:_class_SOUI::SMenuExItem____thiscall_SOUI::SMenuEx::GetMenuItem_int_]
mov ecx, eax
call dword [sym.imp.soui.dll_public:_void___thiscall_SOUI::SWindow::EnableWindow_int__int_]
jmp case.0x4214fd.1
push 0
push 1
push 0xcb
lea ecx, [ebp - 0x444]
call dword [sym.imp.soui.dll_public:_class_SOUI::SMenuExItem____thiscall_SOUI::SMenuEx::GetMenuItem_int_]
mov ecx, eax
call dword [sym.imp.soui.dll_public:_void___thiscall_SOUI::SWindow::EnableWindow_int__int_]
jmp case.0x4214fd.1
push 0
push 0
push 0xcb
lea ecx, [ebp - 0x444]
call dword [sym.imp.soui.dll_public:_class_SOUI::SMenuExItem____thiscall_SOUI::SMenuEx::GetMenuItem_int_]
mov ecx, eax
call dword [sym.imp.soui.dll_public:_void___thiscall_SOUI::SWindow::EnableWindow_int__int_]
jmp 0x42157a
push 0xcb
lea ecx, [ebp - 0x444]
call dword [sym.imp.soui.dll_public:_class_SOUI::SMenuExItem____thiscall_SOUI::SMenuEx::GetMenuItem_int_]
mov ecx, eax
call dword [sym.imp.soui.dll_public:_int___thiscall_SOUI::SWindow::DestroyWindow_void_]
lea eax, [ebp + 8]
push eax
mov ecx, dword [ebp - 0x44c]
mov edx, dword [ecx + 0x25c]
push edx
call dword [sym.imp.USER32.dll_ClientToScreen]
mov eax, dword [ebp - 0x44c]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x44c]
mov eax, dword [edx + 0x84]
call eax
push eax
mov ecx, dword [ebp - 0x44c]
mov edx, dword [ecx + 0x25c]
push edx
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
push 0
lea ecx, [ebp - 0x444]
call dword [sym.imp.soui.dll_public:_unsigned_int___thiscall_SOUI::SMenuEx::TrackPopupMenu_unsigned_int__int__int__struct_HWND_____int_]
mov dword [ebp - 0x47c], 1
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x54]
call fcn.004113b0
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x24]
call fcn.0040c400
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x3c]
call fcn.00452e00
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x14]
call fcn.00401c60
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x1c]
call fcn.0040c400
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call fcn.00421670
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x444]
call dword [sym.imp.soui.dll_public_virtual:_void___thiscall_SOUI::SMenuEx::destructor_void_]
mov eax, dword [ebp - 0x47c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00458fdd
mov esp, ebp
pop ebp
ret 8