Function at 0x4016e0
Capabilities:
Delete file
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x188
mov eax, dword [0x454010]
xor eax, ebp
mov dword [ebp - 0x10], eax
lea edi, [ebp - 0x120]
push 0x110
push 0
push edi
call fcn.0040efe0
add esp, 0xc
mov dword [edi - 0xc], 0x11c
sub esp, 0x10
movdqa xmm0, xmmword [0x44df90]
movdqu xmmword [esp], xmm0
mov ebx, dword [sym.imp.KERNEL32.DLL_VerSetConditionMask]
call ebx
mov esi, 3
xor ecx, ecx
inc ecx
push esi
push ecx
push edx
push eax
call ebx
push esi
push 0x20
push edx
push eax
call ebx
mov dword [edi - 8], 6
xor ecx, ecx
inc ecx
mov dword [edi - 4], ecx
mov word [edi + 0x108], 0
lea esi, [ebp - 0x12c]
push edx
push eax
push 0x23
push esi
call dword [sym.imp.KERNEL32.DLL_VerifyVersionInfoW]
test eax, eax
je 0x4019fd
xor edi, edi
mov dword [ebp - 0x160], edi
mov dword [ebp - 0x15c], edi
mov dword [ebp - 0x158], edi
lea eax, [ebp - 0x16c]
pcmpeqd xmm0, xmm0
movdqu xmmword [eax - 4], xmm0
push 0xa
push 0x7d1
push edi
call dword [sym.imp.KERNEL32.DLL_FindResourceW]
test eax, eax
je 0x401890
mov esi, eax
push eax
push 0
call dword [sym.imp.KERNEL32.DLL_LoadResource]
test eax, eax
je 0x4018d9
mov edi, eax
push esi
push 0
call dword [sym.imp.KERNEL32.DLL_SizeofResource]
test eax, eax
je 0x40187c
mov esi, eax
push edi
call dword [sym.imp.KERNEL32.DLL_LockResource]
pxor xmm0, xmm0
movdqu xmmword [ebp - 0x144], xmm0
lea edi, [ebp - 0x160]
lea ecx, [ebp - 0x12c]
xor edx, edx
push edi
mov dword [ebp - 0x18c], eax
push eax
push esi
call fcn.00402660
add esp, 0xc
mov eax, dword [ebp - 0x144]
test eax, eax
je 0x401813
push eax
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
lea edi, [ebp - 0x140]
lea ebx, [ebp - 0x128]
mov eax, dword [ebx - 4]
mov dword [edi - 4], eax
mov dword [ebx - 4], 0
cmp byte [edi + 0xb], 0
movzx eax, byte [ebx + 0xb]
js 0x40216e
test al, al
jns 0x401a64
mov ecx, edi
push dword [ebp - 0x124]
push dword [ebp - 0x128]
call fcn.00409cc0
cmp byte [ebp - 0x11d], 0
jns 0x401a72
mov eax, dword [ebp - 0x128]
mov word [eax], 0
mov dword [ebp - 0x124], 0
jmp 0x401a82
call dword [sym.imp.KERNEL32.DLL_GetLastError]
lea esi, [ebp - 0x12c]
mov dword [esi], 0x11c
jmp 0x4018eb
call dword [sym.imp.KERNEL32.DLL_GetLastError]
mov dword [esi], 0x110
mov dword [esi + 4], eax
mov dword [esi + 0xc], edi
mov dword [esi + 8], edi
mov dword [esi + 0x10], edi
lea ecx, [ebp - 0x160]
mov edx, esi
call fcn.00402460
cmp byte [esi + 0x13], 0
jns 0x4018c9
push dword [ebp - 0x124]
call fcn.0040b480
add esp, 4
pxor xmm0, xmm0
movdqu xmmword [ebp - 0x170], xmm0
xor edi, edi
jmp 0x401926
call dword [sym.imp.KERNEL32.DLL_GetLastError]
lea esi, [ebp - 0x12c]
mov dword [esi], 0x116
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, [ebp - 0x160]
mov edx, esi
call fcn.00402460
cmp byte [esi + 0x13], 0
jns 0x40191a
push dword [ebp - 0x124]
call fcn.0040b480
add esp, 4
pxor xmm0, xmm0
movdqu xmmword [ebp - 0x170], xmm0
push 0x44e4c7
push edi
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
test eax, eax
je 0x401d93
mov ecx, eax
call dword [section..00cfg]
call ecx
mov esi, eax
mov eax, dword [ebp - 0x170]
test eax, eax
je 0x401957
push eax
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
mov dword [ebp - 0x170], 0
cmp byte [ebp - 0x161], 0
js 0x4019ca
lea eax, [ebp - 0x16c]
je 0x4019ae
push eax
call dword [sym.imp.KERNEL32.DLL_DeleteFileW]
cmp byte [ebp - 0x161], 0
jns 0x4019ae
mov eax, dword [ebp - 0x16c]
mov word [eax], 0
mov dword [ebp - 0x168], 0
cmp byte [ebp - 0x161], 0
jns 0x4019ae
push dword [ebp - 0x16c]
call fcn.0040b480
add esp, 4
mov edi, dword [ebp - 0x160]
test edi, edi
je 0x401a3c
mov eax, dword [ebp - 0x15c]
cmp eax, edi
je 0x401a33
mov ebx, eax
jmp 0x4019ec
cmp dword [ebp - 0x168], 0
je 0x4019a0
mov eax, dword [ebp - 0x16c]
jmp 0x401972
push dword [eax - 0xc]
call fcn.0040b480
add esp, 4
mov eax, ebx
cmp ebx, edi
je 0x401a33
add ebx, 0xffffffec
je 0x402153
cmp byte [eax - 1], 0
jns 0x4019e6
jmp 0x4019db
mov dword [ebp - 0x12c], 8
mov dword [ebp - 0x128], 0x4000
push esi
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
xor eax, eax
push eax
push 0x44df28
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 0x401a3c
push edi
call fcn.0040b480
add esp, 4
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0040bdb9
mov eax, esi
add esp, 0x188
pop esi
pop edi
pop ebx
pop ebp
ret
cmp dword [ebp - 0x124], 0
je 0x401ad6
mov ebx, dword [ebp - 0x128]
jmp 0x401aa8
mov eax, dword [ebx + 8]
mov dword [edi + 8], eax
movq xmm0, qword [ebx]
movq qword [edi], xmm0
mov word [ebp - 0x128], 0
mov byte [ebp - 0x11d], 0
mov eax, dword [ebp - 0x12c]
test eax, eax
je 0x401a93
push eax
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
mov dword [ebp - 0x12c], 0
cmp byte [ebp - 0x11d], 0
js 0x401a53
je 0x401ae4
push ebx
call dword [sym.imp.KERNEL32.DLL_DeleteFileW]
cmp byte [ebp - 0x11d], 0
jns 0x401ae4
mov eax, dword [ebp - 0x128]
mov word [eax], 0
mov dword [ebp - 0x124], 0
cmp byte [ebp - 0x11d], 0
jns 0x401ae4
push dword [ebp - 0x128]
call fcn.0040b480
add esp, 4
mov eax, dword [ebp - 0x144]
test eax, eax
je 0x401bd4
mov dword [ebp - 0x170], eax
cmp byte [ebp - 0x135], 0
js 0x401b96
mov eax, dword [edi + 8]
lea ecx, [ebp - 0x16c]
mov dword [ecx + 8], eax
movq xmm0, qword [edi]
movq qword [ecx], xmm0
mov word [ebp - 0x140], 0
mov byte [ebp - 0x135], 0
mov dword [ebp - 0x144], 0
cmp byte [ebp - 0x135], 0
js 0x401b85
je 0x401b7a
push edi
call dword [sym.imp.KERNEL32.DLL_DeleteFileW]
cmp byte [ebp - 0x135], 0
jns 0x401b7a
mov eax, dword [ebp - 0x140]
mov word [eax], 0
mov dword [ebp - 0x13c], 0
cmp byte [ebp - 0x135], 0
jns 0x401b7a
push dword [ebp - 0x140]
call fcn.0040b480
add esp, 4
mov edi, dword [ebp - 0x170]
jmp 0x401926
cmp dword [ebp - 0x13c], 0
je 0x401b6c
mov edi, dword [ebp - 0x140]
jmp 0x401b3e
lea ecx, [ebp - 0x16c]
push dword [ebp - 0x13c]
push dword [ebp - 0x140]
call fcn.004097c0
cmp byte [ebp - 0x135], 0
jns 0x401b19
mov eax, dword [ebp - 0x140]
mov word [eax], 0
mov dword [ebp - 0x13c], 0
jmp 0x401b29
lea ebx, [ebp - 0x12c]
mov dword [ebx], 0x127
pxor xmm0, xmm0
movdqu xmmword [ebx + 4], xmm0
lea ecx, [ebp - 0x160]
mov edx, ebx
call fcn.00402460
cmp byte [ebx + 0x13], 0
jns 0x401c0a
push dword [ebp - 0x124]
call fcn.0040b480
add esp, 4
lea ecx, [ebp - 0x12c]
xor edx, edx
inc edx
lea eax, [ebp - 0x160]
push eax
push dword [ebp - 0x18c]
push esi
call fcn.00402660
add esp, 0xc
mov eax, dword [ebp - 0x144]
test eax, eax
je 0x401c3a
push eax
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
lea esi, [ebp - 0x128]
mov eax, dword [esi - 4]
mov dword [ebp - 0x144], eax
mov dword [esi - 4], 0
cmp byte [ebp - 0x135], 0
movzx eax, byte [esi + 0xb]
js 0x402193
test al, al
jns 0x401ca9
mov ecx, edi
push dword [ebp - 0x124]
push dword [ebp - 0x128]
call fcn.00409cc0
cmp byte [ebp - 0x11d], 0
jns 0x401cb7
mov eax, dword [ebp - 0x128]
mov word [eax], 0
mov dword [ebp - 0x124], 0
jmp 0x401cc7
cmp dword [ebp - 0x124], 0
je 0x401d1b
mov esi, dword [ebp - 0x128]
jmp 0x401ced
mov eax, dword [esi + 8]
mov dword [edi + 8], eax
movq xmm0, qword [esi]
movq qword [edi], xmm0
mov word [ebp - 0x128], 0
mov byte [ebp - 0x11d], 0
mov eax, dword [ebp - 0x12c]
test eax, eax
je 0x401cd8
push eax
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
mov dword [ebp - 0x12c], 0
cmp byte [ebp - 0x11d], 0
js 0x401c98
je 0x401d29
push esi
call dword [sym.imp.KERNEL32.DLL_DeleteFileW]
cmp byte [ebp - 0x11d], 0
jns 0x401d29
mov eax, dword [ebp - 0x128]
mov word [eax], 0
mov dword [ebp - 0x124], 0
cmp byte [ebp - 0x11d], 0
jns 0x401d29
push dword [ebp - 0x128]
call fcn.0040b480
add esp, 4
mov eax, dword [ebp - 0x144]
test eax, eax
jne 0x401af2
lea esi, [ebp - 0x12c]
mov dword [esi], 0x12b
pxor xmm0, xmm0
movdqu xmmword [esi + 4], xmm0
lea ecx, [ebp - 0x160]
mov edx, esi
call fcn.00402460
cmp byte [esi + 0x13], 0
jns 0x401d6d
push dword [ebp - 0x124]
call fcn.0040b480
add esp, 4
pxor xmm0, xmm0
movdqu xmmword [ebp - 0x170], xmm0
mov eax, dword [ebp - 0x144]
test eax, eax
je 0x401b29
push eax
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
jmp 0x401b29
call dword [sym.imp.KERNEL32.DLL_GetLastError]
lea esi, [ebp - 0x12c]
mov dword [esi], 0xa9
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, [ebp - 0x160]
mov edx, esi
call fcn.00402460
cmp byte [esi + 0x13], 0
jns 0x401dd4
push dword [ebp - 0x124]
call fcn.0040b480
add esp, 4
xor eax, eax
dec eax
lea ecx, [ebp - 0x17c]
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ecx + 8], eax
push str.Fatal_error_upon_loading_installer_executable:_r_n
call fcn.004313c0
mov edi, dword [ebp - 0x160]
mov eax, dword [ebp - 0x15c]
mov dword [ebp - 0x194], eax
cmp edi, eax
je 0x401e13
add edi, 8
lea ebx, [ebp - 0x154]
jmp 0x401f9b
lea esi, [ebp - 0x17c]
mov ecx, esi
push 0x4e
push 0x44e118
call fcn.00409970
cmp byte [ebp - 0x171], 0
jns 0x401e36
mov esi, dword [ebp - 0x17c]
xor eax, eax
push eax
push 0x44df28
push esi
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp byte [ebp - 0x171], 0
jns 0x401e5d
push dword [ebp - 0x17c]
call fcn.0040b480
add esp, 4
mov esi, 2
jmp 0x401946
mov edx, ecx
and edx, 0x7f
test cl, cl
cmovs edx, eax
add edx, 0xfffffffe
lea ecx, [ebp - 0x188]
lea eax, [ebp - 0x145]
push eax
push edx
push 0
push ebx
call fcn.00409470
mov edi, dword [ebp - 0x190]
cmp byte [ebp - 0x149], 0
jns 0x401ec5
push dword [ebp - 0x154]
call fcn.0040b480
add esp, 4
jmp 0x401ec5
lea ecx, [ebp - 0x188]
push str._Error_cannot_be_retrieved_
call fcn.004314e0
mov edi, dword [ebp - 0x190]
lea ebx, [ebp - 0x154]
movzx eax, byte [ebp - 0x17d]
test al, al
js 0x401edb
and eax, 0x7f
lea edx, [ebp - 0x188]
jmp 0x401ee7
mov edx, dword [ebp - 0x188]
mov eax, dword [ebp - 0x184]
add eax, edx
lea ecx, [ebp - 0x17c]
push eax
push edx
call fcn.004021c0
mov eax, dword [ebp - 0x18c]
movzx eax, byte [eax + 0x13]
test al, al
jns 0x401f07
mov eax, dword [edi + 4]
test eax, eax
je 0x401f5a
push edi
push 0x44e10e
push esi
call fcn.00402320
add esp, 0xc
movzx eax, byte [ebp - 0x121]
test al, al
js 0x401f2a
and eax, 0x7f
jmp 0x401f36
mov eax, dword [ebp - 0x128]
mov esi, dword [ebp - 0x12c]
lea ecx, [ebp - 0x17c]
push eax
push esi
call fcn.00409970
cmp byte [ebp - 0x121], 0
jns 0x401f5a
push dword [ebp - 0x12c]
call fcn.0040b480
add esp, 4
lea ecx, [ebp - 0x17c]
push 2
push 0x44e112
call fcn.00409970
cmp byte [ebp - 0x17d], 0
jns 0x401f83
push dword [ebp - 0x188]
call fcn.0040b480
add esp, 4
add edi, 0x14
mov eax, dword [ebp - 0x18c]
add eax, 0x14
cmp eax, dword [ebp - 0x194]
je 0x401e13
xor eax, eax
dec eax
mov dword [ebp - 0x132], eax
mov dword [ebp - 0x136], eax
pcmpeqd xmm0, xmm0
movdqu xmmword [ebp - 0x144], xmm0
push 0xa
push 0xb
lea esi, [ebp - 0x144]
push esi
push dword [edi - 8]
call fcn.0041b94b
add esp, 0x10
lea ecx, [ebp - 0x17c]
push 8
push str.In_line
call fcn.00409970
mov ecx, ebx
push esi
call fcn.004313c0
mov ecx, ebx
push 1
push 0x44e10e
call fcn.00409970
movq xmm0, qword [eax]
movq qword [ebp - 0x12c], xmm0
mov ecx, dword [eax + 8]
mov dword [ebp - 0x124], ecx
xor ecx, ecx
mov dword [eax], ecx
mov dword [eax + 8], ecx
mov dword [eax + 4], ecx
movzx eax, byte [ebp - 0x121]
mov edx, eax
and edx, 0x7f
test al, al
cmovs edx, dword [ebp - 0x128]
mov eax, dword [ebp - 0x12c]
lea esi, [ebp - 0x12c]
cmovns eax, esi
lea ecx, [ebp - 0x17c]
push edx
push eax
call fcn.00409970
cmp byte [ebp - 0x121], 0
jns 0x40205b
push dword [ebp - 0x12c]
call fcn.0040b480
add esp, 4
cmp byte [ebp - 0x149], 0
jns 0x402072
push dword [ebp - 0x154]
call fcn.0040b480
add esp, 4
mov dword [ebp - 0x190], edi
lea ecx, [edi - 8]
xor edi, edi
dec edi
mov dword [ebp - 0x188], edi
mov dword [ebp - 0x184], edi
mov dword [ebp - 0x180], edi
mov dword [ebp - 0x18c], ecx
mov ebx, dword [ecx + 4]
mov eax, 0x100
push eax
push 0xff
push esi
call fcn.0040efe0
add esp, 0xc
xor eax, eax
push eax
mov ecx, 0x100
push ecx
push esi
push 0x409
push ebx
push eax
push 0x1200
call dword [sym.imp.KERNEL32.DLL_FormatMessageA]
test eax, eax
je 0x401ea9
mov dword [ebp - 0x154], edi
mov dword [ebp - 0x150], edi
mov dword [ebp - 0x14c], edi
lea ebx, [ebp - 0x154]
mov ecx, ebx
push esi
call fcn.004314e0
movzx ecx, byte [ebp - 0x149]
mov edx, ecx
and edx, 0x7e
test cl, cl
mov eax, dword [ebp - 0x150]
cmovs edx, eax
cmp edx, 2
jae 0x401e67
test cl, cl
mov edi, dword [ebp - 0x190]
js 0x40213c
mov eax, dword [ebp - 0x14c]
mov dword [ebp - 0x180], eax
movq xmm0, qword [ebp - 0x154]
movq qword [ebp - 0x188], xmm0
jmp 0x401e90
lea ecx, [ebp - 0x188]
push eax
push dword [ebp - 0x154]
call fcn.00409250
jmp 0x401e90
push 0x44e2cd
push 0x44e2ee
push 0x44
push 0x44e1ef
push 0x44e22c
call fcn.00444bd0
test al, al
js 0x402179
and eax, 0x7f
mov edx, ebx
jmp 0x402185
mov eax, dword [ebp - 0x124]
mov edx, dword [ebp - 0x128]
mov ecx, edi
push eax
push edx
call fcn.00409be0
jmp 0x401855
test al, al
jns 0x4021a5
mov eax, dword [ebp - 0x124]
mov edx, dword [ebp - 0x128]
jmp 0x4021aa
and eax, 0x7f
mov edx, esi
mov ecx, edi
push eax
push edx
call fcn.00409be0
jmp 0x401c78