Function at 0x407469
Capabilities:
Check mutex on windows
Check os version
Copy file
Create process on windows
Delete file

Disassembly:
mov eax, 0x41942b
call fcn.0040fbd0
sub esp, 0xb40
mov eax, dword [0x4220b8]
push ebx
push esi
push edi
mov dword [ebp - 0x10], eax
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp al, 5
jae 0x4074d0
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLangID]
movzx eax, ax
cmp eax, 0x404
je 0x4074bb
cmp eax, 0x804
je 0x4074b0
xor eax, eax
push eax
push eax
push str.You_need_Windows_2000_XP_or_higher_version_to_run_Lava_Lava.
jmp 0x4074c4
xor eax, eax
push eax
push eax
push 0x41e2c8
jmp 0x4074c4
xor eax, eax
push eax
push eax
push 0x41e268
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x407ca1
push str.Riched20.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov eax, dword [ebp + 8]
mov dword [0x4236c8], eax
call fcn.00408f82
mov ebx, dword [ebp + 0x10]
push ebx
push str._n_n_t_tLava_Lava_Version2007_3_27_nlpCmdLine_s_n
call fcn.00408fb4
push 0x6f
lea ecx, [ebp - 0xb04]
call fcn.00406f51
add esp, 0xc
test eax, eax
je 0x407517
push dword [ebp - 0xb04]
call fcn.00409326
jmp 0x40751e
push 0
call fcn.004096c6
call fcn.0040a558
push str.LVLV_221.EXE
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push 0x72
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
je 0x40754b
push ebx
call fcn.00407021
xor eax, eax
pop ecx
inc eax
jmp 0x407dab
push dword [0x422ccc]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcpyW]
lea eax, [ebp - 0x218]
push eax
call esi
mov edi, dword [sym.imp.KERNEL32.dll_lstrcatW]
push 0x423860
lea eax, [ebp - 0x218]
push eax
call edi
lea eax, [ebp - 0x218]
push eax
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4075a4
test ebx, ebx
je 0x4075a4
mov dword [ebp - 0xb04], 1
jmp 0x4075ab
and dword [ebp - 0xb04], 0
push dword [ebp - 0xb04]
push str.bExistMutex_d_n
call fcn.00408fb4
cmp dword [ebp - 0xb04], 0
pop ecx
pop ecx
je 0x407613
call fcn.00407297
test al, al
jne 0x407613
mov esi, dword [ebp + 0x10]
test esi, esi
je 0x407608
cmp word [esi], 0
je 0x407608
push 0x71
xor ecx, ecx
mov ebx, esi
call fcn.00406f51
test eax, eax
pop ecx
jne 0x4075fe
push 0x72
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
je 0x407ca1
call fcn.0040a576
jmp 0x407ca1
push esi
call fcn.00407f94
jmp 0x407ca1
mov ebx, dword [ebp + 0x10]
push 0x71
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
je 0x407658
xor esi, esi
lea eax, [ebp + 0x10]
push esi
push eax
call fcn.00404b1e
mov eax, dword [ebp + 0x10]
cmp dword [eax - 0xc], esi
pop ecx
pop ecx
je 0x407646
push esi
call fcn.0040ab12
cmp eax, 2
je 0x407646
inc esi
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
call fcn.0040252d
mov eax, esi
jmp 0x407dab
mov ebx, dword [ebp + 0x10]
push 0x67
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
je 0x4076e1
push 0x20
push ebx
call fcn.0040e0c8
pop ecx
pop ecx
mov ebx, eax
jmp 0x407679
inc ebx
inc ebx
cmp word [ebx], 0x20
je 0x407677
lea eax, [ebp + 0x10]
push eax
lea eax, [ebp - 0xb4c]
mov ecx, ebx
call fcn.004034aa
mov dword [ebp + 0x10], eax
push ebx
lea eax, [ebp - 0x218]
push eax
call esi
push str..CRC
lea eax, [ebp - 0x218]
push eax
call edi
lea eax, [ebp - 0x218]
push 0x41e138
push eax
call fcn.0040e789
push dword [ebp - 0xb38]
mov esi, eax
push dword [ebp + 0x10]
push ebx
push str._s_u_u60000000
push esi
call fcn.0040e79c
push esi
call fcn.0040e846
add esp, 0x20
jmp 0x407ca1
mov ebx, dword [ebp + 0x10]
push 0x6a
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
je 0x407706
push 0
push dword [ebp + 8]
push 2
pop ecx
call fcn.0040be54
pop ecx
pop ecx
jmp 0x407dab
push 0x104
lea eax, [ebp - 0x218]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x218]
push eax
push str._______Self_Program_s_n
call fcn.00408fb4
pop ecx
pop ecx
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x6f0]
push eax
call esi
push str..DEL
lea eax, [ebp - 0x6f0]
push eax
call edi
lea eax, [ebp - 0x6f0]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
call fcn.0040b647
mov ebx, dword [ebp + 0x10]
push 0x69
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
je 0x407849
lea eax, [ebp - 0x218]
push eax
push str.CheckAndRun_SetRegister_:_s_n
call fcn.00408fb4
pop ecx
pop ecx
call fcn.0040b6f6
lea eax, [ebp - 0x218]
push 0x5c
push eax
call fcn.0040e14e
xor ebx, ebx
cmp eax, ebx
pop ecx
pop ecx
je 0x4077a4
mov word [eax + 2], bx
lea esi, [ebp - 0x218]
call fcn.00409f43
lea eax, [ebp - 0xb08]
push 1
push eax
call fcn.00404b1e
pop ecx
pop ecx
mov dword [ebp - 4], ebx
push dword [0x422cec]
lea eax, [ebp - 0xb08]
push eax
call fcn.0040479d
push dword [ebp - 0xb08]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea eax, [ebp - 0xb0c]
push ebx
push eax
call fcn.00404b1e
pop ecx
pop ecx
lea edi, [ebp - 0xb08]
mov byte [ebp - 4], 1
call fcn.0040469b
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0xb0c]
add eax, 0xfffffff0
call fcn.0040252d
push dword [0x422cec]
mov eax, edi
push eax
call fcn.0040479d
push dword [ebp - 0xb08]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push ebx
push dword [0x422cd4]
call dword [sym.imp.KERNEL32.dll_WinExec]
or dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0xb08]
add eax, 0xfffffff0
call fcn.0040252d
mov ebx, dword [ebp + 0x10]
test ebx, ebx
je 0x407864
cmp word [ebx], 0
je 0x407864
push 0x73
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
je 0x407869
call fcn.00409f6c
push 1
mov edi, 0x423ce0
push edi
call fcn.004042f4
movzx esi, al
push esi
push str.nExistInstall_d_n
call fcn.00408fb4
test esi, esi
pop ecx
pop ecx
jne 0x407894
push esi
push edi
call fcn.004042f4
movzx esi, al
push esi
push str.nExistLocalUpdateFile_d_n
call fcn.00408fb4
cmp esi, 1
pop ecx
pop ecx
je 0x407add
mov esi, dword [ebp + 0x10]
push 0x63
xor ecx, ecx
mov ebx, esi
call fcn.00406f51
test eax, eax
pop ecx
jne 0x407947
push 0x61
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
jne 0x407947
push 0x71
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
jne 0x407947
push 0x4c
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
je 0x4079d6
mov esi, 0x41e03c
lea edi, [ebp - 0x2e0]
movsd dword es:[edi], dword [esi]
push 0x30
pop ecx
movsw word es:[edi], word [esi]
xor eax, eax
push 0x20
lea edi, [ebp - 0x2da]
rep stosd dword es:[edi], eax
pop ebx
push ebx
push dword [ebp + 0x10]
stosw word es:[edi], ax
call fcn.0040e0c8
mov esi, eax
test esi, esi
pop ecx
pop ecx
jne 0x407976
mov edi, 0x423ce0
call fcn.00409ca0
push eax
push str.GetLastCheckDiff_d_n
call fcn.00408fb4
pop ecx
pop ecx
call fcn.00409ca0
test eax, eax
jle 0x407ca1
mov esi, dword [ebp + 0x10]
push 0x63
xor ecx, ecx
mov ebx, esi
call fcn.00406f51
test eax, eax
pop ecx
je 0x407a2b
push 0x14
pop eax
cmp dword [0x422c70], eax
jle 0x407a2b
mov dword [0x422c70], eax
jmp 0x407a30
inc esi
inc esi
cmp word [esi], bx
je 0x407974
push ebx
push esi
call fcn.0040e0c8
mov edi, eax
mov ax, word [esi]
cmp ax, 0x2f
pop ecx
pop ecx
je 0x4079cb
cmp ax, 0x2d
je 0x4079cb
test edi, edi
jne 0x4079a9
push esi
lea eax, [ebp - 0x2dc]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
jmp 0x4079bf
mov eax, edi
sub eax, esi
sar eax, 1
inc eax
push eax
push esi
lea eax, [ebp - 0x2dc]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynW]
lea eax, [ebp - 0x2e0]
push eax
call fcn.00407f94
test edi, edi
mov esi, edi
jne 0x407976
jmp 0x407920
push esi
call fcn.00407f94
test eax, eax
je 0x4079f4
push 0x64
xor ecx, ecx
mov ebx, esi
call fcn.00406f51
test eax, eax
pop ecx
je 0x407925
cmp dword [ebp - 0xb04], 0
jne 0x407ca1
push 0x104
lea eax, [ebp - 0x8f8]
push eax
call fcn.00409b4e
test eax, eax
je 0x407b8a
call fcn.004072ff
lea eax, [ebp - 0x8f8]
push eax
jmp 0x407b8c
call fcn.00409f6c
push 0
mov ebx, 0x423ce0
push ebx
call fcn.00404c82
test eax, eax
jge 0x407a7f
push 0x63
xor ecx, ecx
mov ebx, esi
call fcn.00406f51
test eax, eax
pop ecx
je 0x407a5c
push 0
push 0x6a
push 0
call fcn.0040921f
push str.Network_is_disconnect._n
call fcn.00408fb4
pop ecx
push 0
push edi
call fcn.004042f4
movzx esi, al
test esi, esi
jne 0x407894
jmp 0x407ca1
je 0x407b94
push eax
push str.nUpdateFiles_d_n
call fcn.00408fb4
pop ecx
pop ecx
push 0
push edi
call fcn.004042f4
movzx esi, al
test esi, esi
jne 0x407894
mov eax, dword [ebp + 8]
call fcn.0040826c
sub esp, 0x21c
mov eax, ebx
mov ebx, esp
mov dword [ebp - 0xb0c], esp
call fcn.00407dc4
mov ebx, dword [ebp + 8]
call fcn.00408090
mov esi, dword [sym.imp.USER32.dll_GetMessageW]
add esp, 0x21c
xor ebx, ebx
jmp 0x407bda
call fcn.00409f6c
call fcn.00409ca0
test eax, eax
jg 0x407b13
mov ebx, dword [ebp + 0x10]
push 0x63
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
jne 0x407b13
push 0x61
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
jne 0x407b13
call fcn.00407297
test al, al
je 0x407b70
call fcn.004072ff
push 0x104
lea eax, [ebp - 0xb00]
push eax
call fcn.00409b4e
test eax, eax
je 0x407b76
lea eax, [ebp - 0xb00]
push eax
push dword [ebp + 8]
push 3
pop ecx
call fcn.0040be54
test eax, eax
pop ecx
pop ecx
jg 0x407ca1
mov ebx, dword [ebp + 0x10]
push 0x63
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
jne 0x407ca1
push 0x61
xor ecx, ecx
call fcn.00406f51
test eax, eax
pop ecx
jne 0x407ca1
push ebx
jmp 0x407609
push 0
push dword [ebp + 8]
push 2
pop ecx
call fcn.0040be54
pop ecx
pop ecx
jmp 0x407ca1
push 0
push dword [ebp + 8]
xor ecx, ecx
inc ecx
jmp 0x407b7e
push 0x63
xor ecx, ecx
mov ebx, esi
call fcn.00406f51
test eax, eax
pop ecx
je 0x407baf
push 0
push 0x74
push 0
call fcn.0040921f
call fcn.00409f6c
push str.Need_not_update._n
call fcn.00408fb4
jmp 0x407b84
lea eax, [ebp - 0xb28]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [ebp - 0xb28]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
push ebx
push ebx
lea eax, [ebp - 0xb28]
push ebx
push eax
call esi
test eax, eax
jne 0x407bc0
push edi
call fcn.00403ab9
cmp eax, 0x64
jne 0x407ca1
push ebx
mov ecx, edi
call fcn.00404193
push 0x104
lea eax, [ebp - 0x4e8]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x4e8]
push 0x5c
push eax
call fcn.0040e14e
mov esi, eax
movzx eax, byte [0x423cf0]
push eax
inc esi
push str.g_FileList.m_bExitLava_is__d_._n
inc esi
call fcn.00408fb4
add esp, 0x10
cmp byte [0x423cf0], bl
jne 0x407ca8
mov word [esi], bx
xor esi, esi
mov eax, dword [0x423ce4]
cmp eax, ebx
je 0x407c98
mov ecx, dword [0x423ce8]
sub ecx, eax
sar ecx, 2
cmp esi, ecx
jae 0x407c98
lea eax, [eax + esi*4]
mov eax, dword [eax]
lea ecx, [ebp - 0x4e8]
push ecx
push dword [eax + 0x38]
push str.ExecuteUpdate__RunSfxSetup__s_at__s._n
call fcn.00408fb4
mov eax, dword [0x423ce4]
add esp, 0xc
lea eax, [eax + esi*4]
mov eax, dword [eax]
lea ecx, [ebp - 0x4e8]
push ecx
push dword [eax + 0x38]
call fcn.0040af0d
inc esi
jmp 0x407c48
push 1
mov ecx, edi
call fcn.00404193
xor eax, eax
jmp 0x407dab
xor edi, edi
push dword [edi + 0x422cf8]
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
lea eax, [ebp - 0x4e8]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
add edi, 4
cmp edi, 0xc
jb 0x407caa
mov word [esi], bx
mov eax, dword [0x423ce4]
cmp eax, ebx
jne 0x407cdd
mov dword [ebp + 0x10], ebx
jmp 0x407ceb
mov ecx, dword [0x423ce8]
sub ecx, eax
sar ecx, 2
mov dword [ebp + 0x10], ecx
xor edi, edi
cmp dword [ebp + 0x10], ebx
jle 0x407d90
mov esi, str.whatsnew.exe
jmp 0x407d02
mov eax, dword [0x423ce4]
lea eax, [eax + edi*4]
mov eax, dword [eax]
lea ecx, [ebp - 0x4e8]
push ecx
push dword [eax + 0x38]
push str.Find_whatsnew.exe__RunSfxSetup__s_at__s._n
call fcn.00408fb4
mov eax, dword [0x423ce4]
lea eax, [eax + edi*4]
mov eax, dword [eax]
mov eax, dword [eax + 0x38]
push esi
push eax
call fcn.0040e17e
add esp, 0x14
test eax, eax
je 0x407d86
lea eax, [ebp - 0x4e8]
push eax
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push esi
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatW]
mov eax, dword [0x423ce4]
push ebx
lea eax, [eax + edi*4]
mov eax, dword [eax]
lea ecx, [ebp - 0x218]
push ecx
push dword [eax + 0x38]
call dword [sym.imp.KERNEL32.dll_CopyFileW]
lea eax, [ebp - 0x4e8]
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.0040af0d
inc edi
cmp edi, dword [ebp + 0x10]
jl 0x407cfd
push 0x41de50
call fcn.00408fb4
pop ecx
call fcn.00409f6c
call fcn.004072ff
mov eax, dword [ebp - 0xb20]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x10]
call fcn.0040f3d9
pop edi
pop esi
pop ebx
leave
ret 0x10