Function at 0x406a50
Capabilities:
Check if file exists
Copy file
Create directory
Delete file
Delete registry key
Get file attributes
Get graphical window text
Get installed programs
Hide graphical window
Move file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa4c
mov eax, dword [0x41f014]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xor ebx, ebx
test edi, edi
je 0x406a7d
push 0x3ee
push edi
call dword [sym.imp.USER32.dll_GetDlgItem]
mov ebx, eax
push str.Start_Install_Process...
call fcn.0040580b
cmp dword [0x4203c8], 0
mov eax, str.__x86_
mov ecx, str.__x64_
mov dword [esp], 0x4203a8
cmove ecx, eax
push ecx
call dword [sym.imp.KERNEL32.DLL_GetVersion]
push eax
push str.WinVer:__08X_s__LiuVer:__s
call fcn.0040580b
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
add esp, 0x10
test ebx, ebx
je 0x406ae8
push 0x50000
push 0
push 0x401
push ebx
call esi
push 0
push 1
push 0x404
push ebx
call esi
push 0
push 0
push 0x405
push ebx
call esi
cmp dword [0x41f93c], 0
je 0x406b28
push 0x14
lea eax, [ebp - 0x2c]
push eax
push edi
call dword [sym.imp.USER32.dll_GetWindowTextW]
push 0x30
lea eax, [ebp - 0x2c]
push eax
push 0x4176a8
push edi
call dword [sym.imp.USER32.dll_GetParent]
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
call fcn.00405712
push edi
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x40720e
mov esi, dword [sym.imp.USER32.dll_LoadStringW]
test edi, edi
je 0x406b57
push 0x64
lea eax, [ebp - 0x158]
push eax
push 0xa0
push 0
call esi
lea eax, [ebp - 0x158]
push eax
push 0x3f3
push edi
call dword [sym.imp.USER32.dll_SetDlgItemTextW]
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
push str.LiuPack
push 0x4205e8
mov dword [ebp - 0xa44], eax
call dword [sym.imp.KERNEL32.DLL_lstrcpyW]
call fcn.0040726a
test eax, eax
jne 0x406bbf
test edi, edi
je 0x406b8d
push 0x14
lea eax, [ebp - 0x2c]
push eax
push edi
call dword [sym.imp.USER32.dll_GetWindowTextW]
push 0x64
lea eax, [ebp - 0x158]
push eax
push 0xaa
push 0
call esi
push 0x30
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x158]
push eax
push edi
call dword [sym.imp.USER32.dll_GetParent]
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x40720e
push 0x4205e8
push 0x41ff98
lea eax, [ebp - 0xa40]
push 0x4172e8
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
mov eax, dword [ebp - 0xa44]
add eax, 0xc8
push eax
call fcn.0040721f
add esp, 0x14
test ebx, ebx
je 0x406c03
push 0
push 0
push 0x405
push ebx
call dword [sym.imp.USER32.dll_SendMessageW]
push 0x4201a0
lea eax, [ebp - 0x428]
push str._sBoshiamyTIPuninst.exe
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x428]
push eax
call dword [sym.imp.KERNEL32.DLL_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x406c50
lea eax, [ebp - 0x428]
push eax
call dword [sym.imp.KERNEL32.DLL_DeleteFileW]
test eax, eax
jne 0x406c50
push 4
push eax
lea eax, [ebp - 0x428]
push eax
call dword [sym.imp.KERNEL32.DLL_MoveFileExW]
lea eax, [ebp - 0xa44]
push eax
push 0x20206
push 0
push str.SoftwareMicrosoftWindowsCurrentVersionUninstall
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
push str.BoshiamyTIP
push dword [ebp - 0xa44]
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
push dword [ebp - 0xa44]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
je 0x406cb4
push 0x64
lea eax, [ebp - 0x158]
push eax
push 0xa1
push 0
call esi
lea eax, [ebp - 0x158]
push eax
push 0x3f3
push edi
call dword [sym.imp.USER32.dll_SetDlgItemTextW]
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
cmp dword [0x4203c8], 0
mov ecx, str.unliu.exe
mov dword [ebp - 0xa44], eax
mov eax, str.unliu64.exe
cmove eax, ecx
mov dword [ebp - 0x60], str.BoshiamyTIP.dll
push 0x64
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x158]
push eax
push 0xa2
push 0
mov dword [ebp - 0x5c], str.BoshiamyTIP_x64.dll
mov dword [ebp - 0x58], str.liu_uni.tab
mov dword [ebp - 0x54], str.liu_uni2.tab
mov dword [ebp - 0x50], str.liu_uni3.tab
mov dword [ebp - 0x4c], str.liu_uni4.tab
mov dword [ebp - 0x48], str.liuphon.tab
mov dword [ebp - 0x44], str.BoshiamyConfig.exe
mov dword [ebp - 0x40], str.LiuBoxEditor.exe
mov dword [ebp - 0x3c], str.manual_j.pdf
mov dword [ebp - 0x38], str.AssociatedPhrases.cin
mov dword [ebp - 0x34], str.LiuQuery.exe
call esi
push 0x4201a0
lea eax, [ebp - 0x630]
push str._sBoshiamyTIP
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x630]
push eax
call dword [sym.imp.KERNEL32.DLL_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x406dc5
push 0
lea eax, [ebp - 0x630]
push eax
call dword [sym.imp.KERNEL32.DLL_CreateDirectoryW]
test eax, eax
jne 0x406dc5
call dword [sym.imp.KERNEL32.DLL_GetLastError]
push eax
lea eax, [ebp - 0x630]
push eax
push str.Error:_CreateDirectory____s___ErrCode__X_
call fcn.0040580b
add esp, 0xc
test edi, edi
je 0x406da8
push 0x14
lea eax, [ebp - 0x2c]
push eax
push edi
call dword [sym.imp.USER32.dll_GetWindowTextW]
push 0x64
lea eax, [ebp - 0x158]
push eax
push 0xab
push 0
call esi
lea eax, [ebp - 0x60]
push dword [eax - 4]
jmp 0x4071d5
mov eax, dword [ebp - 0xa44]
add eax, 0xc8
push eax
call fcn.0040721f
and dword [ebp - 0xa48], 0
pop ecx
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov dword [ebp - 0xa4c], eax
test edi, edi
je 0x406e22
mov ecx, dword [ebp - 0xa48]
lea eax, [ebp - 0x158]
push dword [ebp + ecx*4 - 0x60]
push eax
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x220]
push eax
push 0x3f3
push edi
call dword [sym.imp.USER32.dll_SetDlgItemTextW]
mov eax, dword [ebp - 0xa48]
mov eax, dword [ebp + eax*4 - 0x60]
push eax
mov dword [ebp - 0xa44], eax
lea eax, [ebp - 0xa40]
push eax
lea eax, [ebp - 0x428]
push 0x4172e8
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
push dword [ebp - 0xa44]
lea eax, [ebp - 0x630]
push 0x4201a0
push str._sBoshiamyTIP_s
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x20
lea eax, [ebp - 0x630]
push eax
call dword [sym.imp.KERNEL32.DLL_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x406ee5
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
push eax
push dword [ebp - 0xa44]
lea eax, [ebp - 0x838]
push 0x4201a0
push str._sBoshiamyTIP_s._lu
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x14
lea eax, [ebp - 0x838]
push 0
push eax
lea eax, [ebp - 0x428]
push eax
call dword [sym.imp.KERNEL32.DLL_CopyFileW]
test eax, eax
je 0x407184
push 5
lea eax, [ebp - 0x630]
push eax
lea eax, [ebp - 0x838]
push eax
call dword [sym.imp.KERNEL32.DLL_MoveFileExW]
mov dword [0x4205e0], 1
jmp 0x406f03
push 0
lea eax, [ebp - 0x630]
push eax
lea eax, [ebp - 0x428]
push eax
call dword [sym.imp.KERNEL32.DLL_CopyFileW]
test eax, eax
je 0x407184
mov eax, dword [ebp - 0xa4c]
add eax, 0x42
push eax
call fcn.0040721f
mov eax, dword [ebp - 0xa48]
inc eax
mov dword [ebp - 0xa48], eax
pop ecx
cmp eax, 0xd
jb 0x406dde
test ebx, ebx
je 0x406f3d
push 0
push 0
push 0x405
push ebx
call dword [sym.imp.USER32.dll_SendMessageW]
test edi, edi
je 0x406f66
push 0x64
lea eax, [ebp - 0x158]
push eax
push 0xa3
push 0
call esi
lea eax, [ebp - 0x158]
push eax
push 0x3f3
push edi
call dword [sym.imp.USER32.dll_SetDlgItemTextW]
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
push 0x32
mov esi, eax
lea eax, [ebp - 0x1bc]
push eax
push 0x85
push 0
call dword [sym.imp.USER32.dll_LoadStringW]
push 0x41fb88
lea eax, [ebp - 0x428]
push str._s_regsvr32
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
push 0x4201a0
lea eax, [ebp - 0x838]
push str._sBoshiamyTIP
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
lea eax, [ebp - 0x90]
push str._s_BoshiamyTIP.dll
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
push 0
lea eax, [ebp - 0x838]
push eax
lea eax, [ebp - 0x90]
push eax
lea eax, [ebp - 0x428]
push eax
call fcn.0040579a
lea eax, [ebp - 0x90]
push str._s_BoshiamyTIP_x64.dll
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
push 0
lea eax, [ebp - 0x838]
push eax
lea eax, [ebp - 0x90]
push eax
lea eax, [ebp - 0x428]
push eax
call fcn.0040579a
add esp, 0x48
lea eax, [esi + 0xc8]
push eax
call fcn.0040721f
pop ecx
test ebx, ebx
je 0x407032
push 0
push 0
push 0x405
push ebx
call dword [sym.imp.USER32.dll_SendMessageW]
test edi, edi
je 0x40705f
push 0x64
lea eax, [ebp - 0x158]
push eax
push 0xa4
push 0
call dword [sym.imp.USER32.dll_LoadStringW]
lea eax, [ebp - 0x158]
push eax
push 0x3f3
push edi
call dword [sym.imp.USER32.dll_SetDlgItemTextW]
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov esi, eax
call fcn.0040677a
test eax, eax
jne 0x40709c
test edi, edi
je 0x407081
push 0x14
lea eax, [ebp - 0x2c]
push eax
push edi
call dword [sym.imp.USER32.dll_GetWindowTextW]
push 0x64
lea eax, [ebp - 0x158]
push eax
push 0xaf
push 0
call dword [sym.imp.USER32.dll_LoadStringW]
jmp 0x406b9f
lea eax, [esi + 0xc8]
push eax
call fcn.0040721f
pop ecx
test ebx, ebx
je 0x4070bd
push 0
push 0
push 0x405
push ebx
call dword [sym.imp.USER32.dll_SendMessageW]
test edi, edi
je 0x4070ea
push 0x64
lea eax, [ebp - 0x158]
push eax
push 0xa6
push 0
call dword [sym.imp.USER32.dll_LoadStringW]
lea eax, [ebp - 0x158]
push eax
push 0x3f3
push edi
call dword [sym.imp.USER32.dll_SetDlgItemTextW]
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov esi, eax
lea eax, [ebp - 0xa40]
push eax
call fcn.0040564e
lea eax, [esi + 0xc8]
push eax
call fcn.0040721f
push 0x80
push dword [0x41f97c]
call fcn.00407485
add esp, 0x10
test al, al
jne 0x407135
test ebx, ebx
je 0x407135
push 0
push 0
push 0x405
push ebx
call dword [sym.imp.USER32.dll_SendMessageW]
test edi, edi
je 0x407177
push 0x64
lea eax, [ebp - 0x158]
push eax
push 0xa7
push 0
call dword [sym.imp.USER32.dll_LoadStringW]
lea eax, [ebp - 0x158]
push eax
push 0x3f3
push edi
call dword [sym.imp.USER32.dll_SetDlgItemTextW]
push 5
push 0x3f4
push edi
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
call fcn.004056dd
xor eax, eax
inc eax
jmp 0x407210
call dword [sym.imp.KERNEL32.DLL_GetLastError]
push eax
lea eax, [ebp - 0x630]
push eax
lea eax, [ebp - 0x428]
push eax
push dword [ebp - 0xa48]
push str.Error:_CopyFile____02d____s____s___ErrCode__X_
call fcn.0040580b
add esp, 0x14
test edi, edi
je 0x4071bd
push 0x14
lea eax, [ebp - 0x2c]
push eax
push edi
call dword [sym.imp.USER32.dll_GetWindowTextW]
push 0x64
lea eax, [ebp - 0x158]
push eax
push 0xab
push 0
call esi
push dword [ebp - 0xa44]
lea eax, [ebp - 0x158]
push eax
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x2c]
push 0x30
push eax
lea eax, [ebp - 0x220]
push eax
push edi
call dword [sym.imp.USER32.dll_GetParent]
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
push edi
call fcn.004066bb
pop ecx
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004076f3
leave
ret