Function at 0x401e10
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5aa921
mov eax, dword fs:[0]
push eax
sub esp, 0xc
push ebx
push esi
push edi
mov eax, dword [0x6360c0]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov edi, dword [ebp + 8]
mov eax, dword [edi + 8]
lea ecx, [edi + 8]
call dword [eax + 0x20]
cmp eax, 0x2710
jne 0x402360
mov eax, dword [edi + 0x18]
test eax, eax
je 0x4023e4
mov edx, str.btn_close
mov ecx, eax
mov si, word [ecx]
cmp si, word [edx]
jne 0x401e89
test si, si
je 0x401e85
mov si, word [ecx + 2]
cmp si, word [edx + 2]
jne 0x401e89
add ecx, 4
add edx, 4
test si, si
jne 0x401e63
xor ecx, ecx
jmp 0x401e8e
sbb ecx, ecx
or ecx, 1
test ecx, ecx
jne 0x401eb9
mov ecx, ebx
mov byte [edi + 0xc], 0
call fcn.00402c90
xor eax, eax
cmp byte [edi + 0xc], al
sete al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, str.btn_min
mov ecx, eax
mov si, word [ecx]
cmp si, word [edx]
jne 0x401ee6
test si, si
je 0x401ee2
mov si, word [ecx + 2]
cmp si, word [edx + 2]
jne 0x401ee6
add ecx, 4
add edx, 4
test si, si
jne 0x401ec0
xor ecx, ecx
jmp 0x401eeb
sbb ecx, ecx
or ecx, 1
test ecx, ecx
jne 0x401f25
push ecx
push 0xf020
push 0x112
mov byte [edi + 0xc], cl
push dword [ebx + 0x248]
call dword [sym.imp.USER32.dll_SendMessageW]
xor eax, eax
cmp byte [edi + 0xc], al
sete al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, str.btn_uninstall_pre
mov ecx, eax
nop dword [eax]
mov si, word [ecx]
cmp si, word [edx]
jne 0x401f56
test si, si
je 0x401f52
mov si, word [ecx + 2]
cmp si, word [edx + 2]
jne 0x401f56
add ecx, 4
add edx, 4
test si, si
jne 0x401f30
xor ecx, ecx
jmp 0x401f5b
sbb ecx, ecx
or ecx, 1
test ecx, ecx
jne 0x401fef
push ecx
mov byte [edi + 0xc], cl
add ebx, 4
push str.wnd_msg_pre
mov ecx, ebx
call fcn.004045b0
mov esi, dword [sym.imp.soui.dll_public:_void___thiscall_SOUI::SWindow::SetVisible_int__int_]
test eax, eax
je 0x401f88
push 1
push 0
mov ecx, eax
call esi
push ecx
push str.btn_uninstall_pre
mov ecx, ebx
call fcn.00404720
test eax, eax
je 0x401fa1
push 1
push 0
mov ecx, eax
call esi
push ecx
push str.wnd_msg
mov ecx, ebx
call fcn.004045b0
test eax, eax
je 0x401fba
push 1
push 1
mov ecx, eax
call esi
push ecx
push str.btn_uninstall
mov ecx, ebx
call fcn.00404720
test eax, eax
je 0x401fd3
push 1
push 1
mov ecx, eax
call esi
xor eax, eax
cmp byte [edi + 0xc], al
sete al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, str.btn_uninstall_no
mov ecx, eax
mov si, word [ecx]
cmp si, word [edx]
jne 0x40201c
test si, si
je 0x402018
mov si, word [ecx + 2]
cmp si, word [edx + 2]
jne 0x40201c
add ecx, 4
add edx, 4
test si, si
jne 0x401ff6
xor ecx, ecx
jmp 0x402021
sbb ecx, ecx
or ecx, 1
test ecx, ecx
je 0x402327
mov edx, str.btn_uninstall
mov ecx, eax
mov si, word [ecx]
cmp si, word [edx]
jne 0x402056
test si, si
je 0x402052
mov si, word [ecx + 2]
cmp si, word [edx + 2]
jne 0x402056
add ecx, 4
add edx, 4
test si, si
jne 0x402030
xor ecx, ecx
jmp 0x40205b
sbb ecx, ecx
or ecx, 1
test ecx, ecx
jne 0x402085
mov byte [edi + 0xc], cl
mov ecx, ebx
call fcn.00402e10
xor eax, eax
cmp byte [edi + 0xc], al
sete al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, str.btn_update
mov ecx, eax
nop dword [eax]
mov si, word [ecx]
cmp si, word [edx]
jne 0x4020b6
test si, si
je 0x4020b2
mov si, word [ecx + 2]
cmp si, word [edx + 2]
jne 0x4020b6
add ecx, 4
add edx, 4
test si, si
jne 0x402090
xor ecx, ecx
jmp 0x4020bb
sbb ecx, ecx
or ecx, 1
test ecx, ecx
jne 0x402202
mov byte [edi + 0xc], cl
lea ecx, [ebp - 0x10]
push 0x62930c
mov byte [ebx + 0x3b0], 1
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::constructor_wchar_t_const__]
push 0x629300
lea ecx, [ebp + 8]
mov dword [ebp - 4], 0
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::constructor_wchar_t_const__]
push ecx
push str.wnd_msg_main
lea ecx, [ebx + 4]
mov byte [ebp - 4], 1
call fcn.004045b0
push 0
lea ecx, [ebp - 0x10]
push ecx
mov edx, dword [eax]
lea ecx, [ebp + 8]
push ecx
mov ecx, eax
call dword [edx + 0x10]
lea ecx, [ebp + 8]
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::destructor_void_]
lea ecx, [ebp - 0x10]
mov dword [ebp - 4], 0xffffffff
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::destructor_void_]
push 0x628e60
lea ecx, [ebp - 0x10]
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::constructor_wchar_t_const__]
push 0x629300
lea ecx, [ebp + 8]
mov dword [ebp - 4], 2
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::constructor_wchar_t_const__]
push ecx
push str.wnd_update
lea ecx, [ebx + 4]
mov byte [ebp - 4], 3
call fcn.004045b0
push 0
lea ecx, [ebp - 0x10]
push ecx
mov edx, dword [eax]
lea ecx, [ebp + 8]
push ecx
mov ecx, eax
call dword [edx + 0x10]
lea ecx, [ebp + 8]
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::destructor_void_]
lea ecx, [ebp - 0x10]
mov dword [ebp - 4], 0xffffffff
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::destructor_void_]
push 4
call fcn.0042d9ee
add esp, 4
mov dword [ebp + 8], eax
mov dword [eax], 0x406e10
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], 4
push ecx
push 0
push eax
push 0x405720
push 0
push 0
call fcn.0047fb7e
mov ecx, eax
add esp, 0x18
mov dword [ebp - 0x18], ecx
test ecx, ecx
je 0x4023ff
cmp dword [ebx + 0x3b8], 0
jne 0x4023fa
mov eax, dword [ebp - 0x14]
mov dword [ebx + 0x3b8], eax
xor eax, eax
mov dword [ebx + 0x3b4], ecx
cmp byte [edi + 0xc], al
sete al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, str.btn_finish
mov ecx, eax
nop dword [eax]
mov si, word [ecx]
cmp si, word [edx]
jne 0x402236
test si, si
je 0x402232
mov si, word [ecx + 2]
cmp si, word [edx + 2]
jne 0x402236
add ecx, 4
add edx, 4
test si, si
jne 0x402210
xor ecx, ecx
jmp 0x40223b
sbb ecx, ecx
or ecx, 1
test ecx, ecx
je 0x401e92
mov edx, str.btn_update_finish
mov ecx, eax
nop word [eax + eax]
mov si, word [ecx]
cmp si, word [edx]
jne 0x402276
test si, si
je 0x402272
mov si, word [ecx + 2]
cmp si, word [edx + 2]
jne 0x402276
add ecx, 4
add edx, 4
test si, si
jne 0x402250
xor ecx, ecx
jmp 0x40227b
sbb ecx, ecx
or ecx, 1
test ecx, ecx
jne 0x4022b5
push ecx
push ecx
mov byte [edi + 0xc], cl
push 0x10
push dword [ebx + 0x248]
mov byte [ebx + 0x3b2], 1
call dword [sym.imp.USER32.dll_PostMessageW]
xor eax, eax
cmp byte [edi + 0xc], al
sete al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, str.btn_uninstall_success
mov ecx, eax
nop dword [eax]
mov si, word [ecx]
cmp si, word [edx]
jne 0x4022e6
test si, si
je 0x4022e2
mov si, word [ecx + 2]
cmp si, word [edx + 2]
jne 0x4022e6
add ecx, 4
add edx, 4
test si, si
jne 0x4022c0
xor ecx, ecx
jmp 0x4022eb
sbb ecx, ecx
or ecx, 1
test ecx, ecx
je 0x402327
mov ecx, str.btn_uninstall_failed
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40231a
test dx, dx
je 0x402316
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40231a
add eax, 4
add ecx, 4
test dx, dx
jne 0x4022f4
xor eax, eax
jmp 0x40231f
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4023e4
push 0
push 0
mov byte [edi + 0xc], 0
push 0x10
push dword [ebx + 0x248]
mov byte [ebx + 0x3b2], 0
call dword [sym.imp.USER32.dll_PostMessageW]
xor eax, eax
cmp byte [edi + 0xc], al
sete al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 0x1fa4
jne 0x4023e4
mov eax, dword [edi + 0x18]
test eax, eax
je 0x4023e4
mov ecx, str.edt_msg
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x402399
test dx, dx
je 0x402395
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x402399
add eax, 4
add ecx, 4
test dx, dx
jne 0x402373
xor eax, eax
jmp 0x40239e
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4023e4
mov byte [edi + 0xc], al
cmp byte [ebx + 0x390], al
jne 0x401fd3
mov ecx, dword [ebx + 0x394]
mov byte [ebx + 0x390], 1
push 0x6294d4
mov eax, dword [ecx]
call dword [eax + 0x40]
xor eax, eax
cmp byte [edi + 0xc], al
sete al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
call fcn.0047a8c1
push 6
mov dword [ebp - 0x14], 0
call fcn.0042c35f
int3