Function at 0x401380
Capabilities:
Check os version
Delete file
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x1a0
mov eax, dword [0x450014]
xor eax, ebp
mov dword [esp + 0x198], eax
lea esi, [esp + 0x7c]
push 0x118
push 0
push esi
call fcn.0040f7f0
add esp, 0xc
mov dword [esi - 4], 0x11c
lea esi, [esp + 0x78]
push esi
call dword [sym.imp.KERNEL32.DLL_GetVersionExW]
test eax, eax
je 0x4013e2
cmp dword [esp + 0x7c], 6
ja 0x4013e2
jne 0x401519
cmp dword [esp + 0x80], 0
je 0x401519
xor ebx, ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], ebx
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x30], xmm0
push 0xa
push 0x7d1
push ebx
call dword [sym.imp.KERNEL32.DLL_FindResourceW]
test eax, eax
je 0x4014ba
mov edi, eax
push eax
push 0
call dword [sym.imp.KERNEL32.DLL_LoadResource]
test eax, eax
je 0x401507
mov esi, eax
push edi
push 0
call dword [sym.imp.KERNEL32.DLL_SizeofResource]
test eax, eax
je 0x40154e
mov edi, eax
push esi
call dword [sym.imp.KERNEL32.DLL_LockResource]
pxor xmm0, xmm0
movdqa xmmword [esp + 0x60], xmm0
lea esi, [esp + 0x48]
lea ecx, [esp + 0x78]
xor edx, edx
push esi
mov dword [esp + 0xc], eax
push eax
push edi
call fcn.004020c0
add esp, 0xc
mov eax, dword [esp + 0x60]
test eax, eax
je 0x401471
push eax
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
lea esi, [esp + 0x64]
mov eax, dword [esp + 0x78]
mov dword [esi - 4], eax
mov dword [esp + 0x78], 0
cmp byte [esi + 0xb], 0
lea ebx, [esp + 0x7c]
js 0x4015ab
cmp byte [esp + 0x87], 0
jns 0x40159b
mov ecx, esi
push dword [esp + 0x80]
push dword [esp + 0x80]
call fcn.0040a0b0
jmp 0x4015cd
call dword [sym.imp.KERNEL32.DLL_GetLastError]
lea esi, [esp + 0x78]
mov dword [esi], 0x119
mov dword [esi + 4], eax
mov dword [esi + 0xc], ebx
mov dword [esi + 8], ebx
mov dword [esi + 0x10], ebx
lea ecx, [esp + 0x48]
mov edx, esi
call fcn.00401f20
cmp byte [esi + 0x13], 0
jns 0x4014f6
push dword [esp + 0x80]
call fcn.0040bae0
add esp, 4
pxor xmm0, xmm0
movdqa xmmword [esp + 0x30], xmm0
xor edi, edi
jmp 0x4018a9
call dword [sym.imp.KERNEL32.DLL_GetLastError]
lea esi, [esp + 0x78]
mov dword [esi], 0x11f
jmp 0x40155e
mov dword [esp + 0x78], 8
mov dword [esp + 0x7c], 0x4000
push esi
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
xor eax, eax
push eax
push str.Opera_installer_77.0.4054.298.0
push str.This_Opera_installer_works_only_on_Windows_7_or_higher._r_nVisit_____www.opera.com_____to_download_compatible_version.
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
mov esi, 3
jmp 0x401db3
call dword [sym.imp.KERNEL32.DLL_GetLastError]
lea esi, [esp + 0x78]
mov dword [esi], 0x125
mov dword [esi + 4], eax
xor edi, edi
mov dword [esi + 0xc], edi
mov dword [esi + 8], edi
mov dword [esi + 0x10], edi
lea ecx, [esp + 0x48]
mov edx, esi
call fcn.00401f20
cmp byte [esi + 0x13], 0
jns 0x40158c
push dword [esp + 0x80]
call fcn.0040bae0
add esp, 4
pxor xmm0, xmm0
movdqa xmmword [esp + 0x30], xmm0
jmp 0x4018a9
mov eax, dword [ebx + 8]
mov dword [esi + 8], eax
movq xmm0, qword [ebx]
movq qword [esi], xmm0
jmp 0x4015cd
movzx eax, byte [esp + 0x87]
mov edx, ebx
test al, al
jns 0x4015c4
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0x7c]
mov ecx, esi
push eax
push edx
call fcn.00409fa0
cmp byte [esp + 0x87], 0
js 0x4015e8
mov word [esp + 0x7c], 0
mov byte [esp + 0x87], 0
jmp 0x4015fc
mov eax, dword [esp + 0x7c]
mov word [eax], 0
mov dword [esp + 0x80], 0
mov eax, dword [esp + 0x78]
test eax, eax
je 0x40160b
push eax
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
mov dword [esp + 0x78], 0
movzx eax, byte [esp + 0x87]
mov ecx, eax
test al, al
jns 0x401628
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x40166a
test al, al
jns 0x401634
mov ebx, dword [esp + 0x7c]
push ebx
call dword [sym.imp.KERNEL32.DLL_DeleteFileW]
cmp byte [esp + 0x87], 0
js 0x40164f
mov byte [esp + 0x87], 0
jmp 0x40167a
mov eax, dword [esp + 0x7c]
mov word [eax], 0
mov dword [esp + 0x80], 0
mov al, byte [esp + 0x87]
test al, al
jns 0x40167a
push dword [esp + 0x7c]
call fcn.0040bae0
add esp, 4
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x401806
lea ebx, [esp + 0x78]
mov dword [ebx], 0x130
pxor xmm0, xmm0
movdqu xmmword [ebx + 4], xmm0
lea ecx, [esp + 0x48]
mov edx, ebx
call fcn.00401f20
cmp byte [ebx + 0x13], 0
jns 0x4016b9
push dword [esp + 0x80]
call fcn.0040bae0
add esp, 4
lea ecx, [esp + 0x78]
xor edx, edx
inc edx
lea eax, [esp + 0x48]
push eax
push dword [esp + 0xc]
push edi
call fcn.004020c0
add esp, 0xc
mov eax, dword [esp + 0x60]
test eax, eax
je 0x4016e1
push eax
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
lea edi, [esp + 0x7c]
mov eax, dword [edi - 4]
mov dword [esp + 0x60], eax
mov dword [edi - 4], 0
cmp byte [esp + 0x6f], 0
js 0x40172b
cmp byte [esp + 0x87], 0
jns 0x40171b
mov ecx, esi
push dword [esp + 0x80]
push dword [esp + 0x80]
call fcn.0040a0b0
jmp 0x40174d
mov eax, dword [edi + 8]
mov dword [esi + 8], eax
movq xmm0, qword [edi]
movq qword [esi], xmm0
jmp 0x40174d
movzx eax, byte [esp + 0x87]
mov edx, edi
test al, al
jns 0x401744
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0x7c]
mov ecx, esi
push eax
push edx
call fcn.00409fa0
cmp byte [esp + 0x87], 0
js 0x401768
mov word [esp + 0x7c], 0
mov byte [esp + 0x87], 0
jmp 0x40177c
mov eax, dword [esp + 0x7c]
mov word [eax], 0
mov dword [esp + 0x80], 0
mov eax, dword [esp + 0x78]
test eax, eax
je 0x40178b
push eax
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
mov dword [esp + 0x78], 0
movzx eax, byte [esp + 0x87]
mov ecx, eax
test al, al
jns 0x4017a8
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x4017ea
test al, al
jns 0x4017b4
mov edi, dword [esp + 0x7c]
push edi
call dword [sym.imp.KERNEL32.DLL_DeleteFileW]
cmp byte [esp + 0x87], 0
js 0x4017cf
mov byte [esp + 0x87], 0
jmp 0x4017fa
mov eax, dword [esp + 0x7c]
mov word [eax], 0
mov dword [esp + 0x80], 0
mov al, byte [esp + 0x87]
test al, al
jns 0x4017fa
push dword [esp + 0x7c]
call fcn.0040bae0
add esp, 4
mov eax, dword [esp + 0x60]
test eax, eax
je 0x401dcb
lea ecx, [esp + 0x34]
mov dword [ecx - 4], eax
cmp byte [esp + 0x6f], 0
js 0x401824
mov eax, dword [esi + 8]
mov dword [ecx + 8], eax
movq xmm0, qword [esi]
movq qword [ecx], xmm0
jmp 0x40183c
push dword [esp + 0x68]
push dword [esp + 0x68]
call fcn.0040b470
cmp byte [esp + 0x6f], 0
js 0x401e20
mov word [esp + 0x64], 0
mov byte [esp + 0x6f], 0
mov dword [esp + 0x60], 0
movzx eax, byte [esp + 0x6f]
mov ecx, eax
test al, al
jns 0x40185f
mov ecx, dword [esp + 0x68]
test ecx, ecx
je 0x401895
test al, al
jns 0x40186b
mov esi, dword [esp + 0x64]
push esi
call dword [sym.imp.KERNEL32.DLL_DeleteFileW]
cmp byte [esp + 0x6f], 0
js 0x401880
mov byte [esp + 0x6f], 0
jmp 0x4018a5
mov eax, dword [esp + 0x64]
mov word [eax], 0
mov dword [esp + 0x68], 0
mov al, byte [esp + 0x6f]
test al, al
jns 0x4018a5
push dword [esp + 0x64]
call fcn.0040bae0
add esp, 4
mov edi, dword [esp + 0x30]
push 0x44a4da
push edi
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
test eax, eax
je 0x4018c2
call eax
mov esi, eax
jmp 0x401d02
call dword [sym.imp.KERNEL32.DLL_GetLastError]
lea esi, [esp + 0x78]
mov dword [esi], 0xb2
mov dword [esi + 4], eax
xor eax, eax
mov dword [esi + 0xc], eax
mov dword [esi + 8], eax
mov dword [esi + 0x10], eax
lea ecx, [esp + 0x48]
mov edx, esi
call fcn.00401f20
cmp byte [esi + 0x13], 0
jns 0x401900
push dword [esp + 0x80]
call fcn.0040bae0
add esp, 4
push 0x70
call fcn.0040bab0
add esp, 4
mov edi, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], 0x80000038
mov dword [esp + 0x28], 0x30
push 0x60
push str.Fatal_error_upon_loading_installer_executable:_r_n
push eax
call fcn.0040ecf0
add esp, 0xc
mov word [edi + 0x60], 0
mov edi, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x14], eax
cmp edi, eax
je 0x401cc0
xor ebx, ebx
dec ebx
mov dword [esp + 0x72], ebx
mov dword [esp + 0x6e], ebx
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x60], xmm0
push 0xa
push 0xb
lea esi, [esp + 0x68]
push esi
push dword [edi]
call fcn.00419a3d
add esp, 0x10
lea ecx, [esp + 0x24]
push str.In_line
call fcn.0040a150
push esi
call fcn.0041cdd8
add esp, 4
cmp eax, 0x7ffffff0
jae 0x401e36
mov ebx, eax
cmp eax, 5
mov dword [esp + 8], edi
jae 0x4019c6
mov byte [esp + 0x5f], bl
cmp ebx, 3
jne 0x401cad
movzx eax, word [esp + 0x64]
mov word [esp + 0x58], ax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x54], eax
lea esi, [esp + 0x54]
mov edi, esi
jmp 0x401a03
lea esi, [ebx + 8]
and esi, 0xfffffff8
lea eax, [esi + esi]
push eax
call fcn.0040bab0
add esp, 4
mov edi, eax
mov dword [esp + 0x54], eax
or esi, 0x80000000
mov dword [esp + 0x5c], esi
mov dword [esp + 0x58], ebx
lea esi, [esp + 0x54]
mov eax, ebx
add eax, ebx
push eax
lea eax, [esp + 0x64]
push eax
push edi
call fcn.0040ecf0
add esp, 0xc
mov word [edi + ebx*2], 0
mov ecx, esi
push 0x44a39e
call fcn.0040a150
mov ecx, dword [eax + 8]
mov dword [esp + 0x80], ecx
movq xmm0, qword [eax]
movq qword [esp + 0x78], xmm0
xor ecx, ecx
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
movzx eax, byte [esp + 0x83]
test al, al
cmovs eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
lea edi, [esp + 0x78]
cmovns edx, edi
lea ecx, [esp + 0x24]
push eax
push edx
call fcn.0040b600
cmp byte [esp + 0x83], 0
jns 0x401a6e
push dword [esp + 0x78]
call fcn.0040bae0
add esp, 4
cmp byte [esp + 0x5f], 0
mov ebx, 0xffffffff
jns 0x401a86
push dword [esp + 0x54]
call fcn.0040bae0
add esp, 4
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
mov eax, dword [esp + 8]
mov esi, dword [eax + 4]
mov eax, 0x100
push eax
push 0xff
push edi
call fcn.0040f7f0
add esp, 0xc
xor eax, eax
push eax
mov ecx, 0x100
push ecx
push edi
push 0x409
push esi
push eax
push 0x1200
call dword [sym.imp.KERNEL32.DLL_FormatMessageA]
test eax, eax
jne 0x401ae2
lea edi, [esp + 0x18]
mov ecx, edi
push str._Error_cannot_be_retrieved_
call fcn.0042e930
jmp 0x401b65
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
lea esi, [esp + 0x54]
mov ecx, esi
push edi
call fcn.0042e930
movzx ecx, byte [esp + 0x5f]
test cl, cl
mov eax, dword [esp + 0x58]
mov edx, ecx
cmovs edx, eax
cmp edx, 2
jb 0x401b28
add edx, 0xfffffffe
lea edi, [esp + 0x18]
mov ecx, edi
lea eax, [esp + 0x60]
push eax
push edx
push 0
push esi
call fcn.00409e10
jmp 0x401b52
test cl, cl
lea edi, [esp + 0x18]
js 0x401b46
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x20], eax
movq xmm0, qword [esp + 0x54]
movq qword [esp + 0x18], xmm0
jmp 0x401b52
mov ecx, edi
push eax
push dword [esp + 0x58]
call fcn.0040ac90
cmp byte [esp + 0x5f], 0
jns 0x401b65
push dword [esp + 0x54]
call fcn.0040bae0
add esp, 4
movzx ebx, byte [esp + 0x23]
test bl, bl
jns 0x401b76
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov al, byte [esp + 0x2f]
test al, al
js 0x401b90
test ebx, ebx
je 0x401c1a
movzx esi, al
mov edx, 4
jmp 0x401ba8
test ebx, ebx
je 0x401c1a
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov ecx, 0x7fffffff
and edx, ecx
dec edx
mov ecx, edx
mov dword [esp + 0xc], esi
sub ecx, esi
cmp ecx, ebx
jae 0x401bdb
mov esi, dword [esp + 0xc]
lea eax, [esi + ebx]
sub eax, edx
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x24]
xor eax, eax
push eax
xor eax, eax
push eax
push esi
push esi
push dword [esp + 0x20]
push edx
call fcn.0040b350
mov al, byte [esp + 0x2f]
lea ecx, [esp + 0x24]
test al, al
jns 0x401be7
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0xc]
lea eax, [ecx + eax*2]
xor ecx, ecx
movsx edx, byte [edi + ecx]
mov word [eax + ecx*2], dx
inc ecx
cmp ebx, ecx
jne 0x401bf0
mov word [eax + ecx*2], 0
mov eax, dword [esp + 0xc]
add eax, ebx
cmp byte [esp + 0x2f], 0
js 0x401c16
mov byte [esp + 0x2f], al
jmp 0x401c1a
mov dword [esp + 0x28], eax
mov edi, dword [esp + 8]
movzx eax, byte [edi + 0x13]
test al, al
jns 0x401c29
mov eax, dword [edi + 0xc]
lea esi, [esp + 0x78]
xor ebx, ebx
dec ebx
test eax, eax
je 0x401c7d
lea eax, [edi + 8]
push eax
push 0x44a39e
push esi
call fcn.00401e40
add esp, 0xc
movzx eax, byte [esp + 0x83]
mov edx, esi
test al, al
jns 0x401c5c
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
lea ecx, [esp + 0x24]
push eax
push edx
call fcn.0040b600
cmp byte [esp + 0x83], 0
jns 0x401c7d
push dword [esp + 0x78]
call fcn.0040bae0
add esp, 4
lea ecx, [esp + 0x24]
push 0x44a3a2
call fcn.0040a150
cmp byte [esp + 0x23], 0
jns 0x401c9e
push dword [esp + 0x18]
call fcn.0040bae0
add esp, 4
add edi, 0x14
cmp edi, dword [esp + 0x14]
jne 0x40194d
jmp 0x401cc0
lea esi, [esp + 0x54]
mov edi, esi
test ebx, ebx
je 0x401a03
jmp 0x4019f0
lea esi, [esp + 0x24]
mov ecx, esi
push 0x44a3a8
call fcn.0040a150
cmp byte [esi + 0xb], 0
jns 0x401cda
mov esi, dword [esp + 0x24]
xor eax, eax
push eax
push str.Opera_installer_77.0.4054.298.0
push esi
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp byte [esp + 0x2f], 0
jns 0x401cfd
push dword [esp + 0x24]
call fcn.0040bae0
add esp, 4
mov esi, 2
mov eax, dword [esp + 0x30]
test eax, eax
je 0x401d11
push eax
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
mov dword [esp + 0x30], 0
movzx eax, byte [esp + 0x3f]
mov ecx, eax
test al, al
jns 0x401d28
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x401d64
test al, al
jns 0x401d36
mov eax, dword [esp + 0x34]
jmp 0x401d3a
lea eax, [esp + 0x34]
push eax
call dword [sym.imp.KERNEL32.DLL_DeleteFileW]
cmp byte [esp + 0x3f], 0
js 0x401d4f
mov byte [esp + 0x3f], 0
jmp 0x401d74
mov eax, dword [esp + 0x34]
mov word [eax], 0
mov dword [esp + 0x38], 0
mov al, byte [esp + 0x3f]
test al, al
jns 0x401d74
push dword [esp + 0x34]
call fcn.0040bae0
add esp, 4
mov edi, dword [esp + 0x48]
test edi, edi
je 0x401db3
mov eax, dword [esp + 0x4c]
cmp eax, edi
je 0x401da4
lea ebx, [eax - 0x14]
cmp byte [eax - 1], 0
jns 0x401d98
push dword [eax - 0xc]
call fcn.0040bae0
add esp, 4
mov eax, ebx
cmp edi, ebx
jne 0x401d84
mov eax, dword [esp + 0x48]
jmp 0x401da6
mov eax, edi
mov dword [esp + 0x4c], edi
push eax
call fcn.0040bae0
add esp, 4
mov ecx, dword [esp + 0x198]
xor ecx, ebp
call fcn.0040c5fb
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
lea edi, [esp + 0x78]
mov dword [edi], 0x134
pxor xmm0, xmm0
movdqu xmmword [edi + 4], xmm0
lea ecx, [esp + 0x48]
mov edx, edi
call fcn.00401f20
cmp byte [edi + 0x13], 0
jns 0x401dfe
push dword [esp + 0x80]
call fcn.0040bae0
add esp, 4
pxor xmm0, xmm0
movdqa xmmword [esp + 0x30], xmm0
mov eax, dword [esp + 0x60]
test eax, eax
je 0x401848
push eax
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
jmp 0x401848
mov eax, dword [esp + 0x64]
mov word [eax], 0
mov dword [esp + 0x68], 0
jmp 0x401848
lea ecx, [esp + 0x54]
call fcn.0043f9b0
int3