Function at 0x401420
Capabilities:
Check if file exists
Extract resource via kernel32 functions
Get file attributes
Move file
Write file on windows

Disassembly:
sub esp, 0xc0c
mov eax, dword [0x40e004]
xor eax, esp
mov dword [esp + 0xc08], eax
push ebp
mov ebp, dword [esp + 0xc14]
xor eax, eax
push 0xfe
push eax
lea ecx, [esp + 0x16]
push ecx
mov word [esp + 0x18], ax
call fcn.00406250
xor edx, edx
push 0x1fe
push edx
lea eax, [esp + 0x222]
push eax
mov word [esp + 0x224], dx
call fcn.00406250
push 0x40c444
mov eax, 0x100
lea ecx, [esp + 0x228]
call fcn.00401000
xor ecx, ecx
push 0xfe
push ecx
lea edx, [esp + 0x132]
push edx
mov word [esp + 0x134], cx
call fcn.00406250
push str.Version
mov eax, 0x80
lea ecx, [esp + 0x138]
call fcn.00401000
lea eax, [esp + 0x238]
add esp, 0x2c
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4014c6
sub eax, edx
sar eax, 1
je 0x401712
lea eax, [esp + 0x10c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4014e5
sub eax, edx
sar eax, 1
je 0x401712
lea eax, [esp + 0x10c]
push str.7.4.1.5157
push eax
call fcn.0040197f
add esp, 8
test eax, eax
je 0x401522
lea ecx, [esp + 0x10c]
push ecx
push 0x16
jmp 0x40171c
xor eax, eax
push 0x3fe
push eax
lea ecx, [esp + 0x416]
push ecx
mov word [esp + 0x418], ax
call fcn.00406250
lea edx, [esp + 0x118]
push edx
lea eax, [esp + 0x21c]
push eax
push str._s_sUninstall.exe
lea edx, [esp + 0x424]
call fcn.00401780
add esp, 0x18
lea ecx, [esp + 0x40c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x401589
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x17
push str.et_de_d
jmp 0x401721
push ebx
push esi
push edi
xor eax, eax
push 0x3fe
push eax
lea ecx, [esp + 0x822]
push ecx
mov word [esp + 0x824], ax
call fcn.00406250
lea edx, [esp + 0x124]
push edx
lea eax, [esp + 0x228]
push eax
push str._s_sUninstall.exe.tmp
lea edx, [esp + 0x830]
call fcn.00401780
add esp, 0x18
push 0x40c58c
push 0x74
push ebp
xor edi, edi
xor ebx, ebx
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov esi, eax
test esi, esi
jne 0x4015f5
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
lea ebx, [esi + 1]
jmp 0x4016f0
push esi
push ebp
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
jne 0x401611
lea ebx, [eax + 2]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
jmp 0x4016f0
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [esp + 0x10], eax
test eax, eax
jne 0x401632
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
mov ebx, 3
jmp 0x4016f0
push esi
push ebp
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov ebp, eax
test ebp, ebp
ja 0x401652
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
mov ebx, 4
jmp 0x4016f0
push 0
push 0x80
push 1
push 0
push 0
push 0xc0000000
lea ecx, [esp + 0x830]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
jne 0x401688
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
mov ebx, 5
jmp 0x4016f0
mov eax, dword [esp + 0x10]
push 0
lea edx, [esp + 0x18]
push edx
push ebp
push eax
push esi
mov dword [esp + 0x28], ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x4016dc
cmp ebp, dword [esp + 0x14]
jne 0x4016dc
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 1
lea ecx, [esp + 0x41c]
push ecx
lea edx, [esp + 0x820]
push edx
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
jne 0x4016f0
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
mov ebx, 7
jmp 0x4016f0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
mov edi, eax
mov ebx, 6
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push edi
push ebx
push str.et_de_d
lea edx, [esp + 0x24]
call fcn.00401760
lea eax, [esp + 0x24]
push eax
call fcn.00401320
add esp, 0x10
pop edi
pop esi
pop ebx
jmp 0x401737
lea ecx, [esp + 0x10c]
push ecx
push 0x15
push str.et_de0v_s
lea edx, [esp + 0x18]
call fcn.00401760
lea edx, [esp + 0x18]
push edx
call fcn.00401320
add esp, 0x10
mov ecx, dword [esp + 0xc0c]
pop ebp
xor ecx, esp
xor eax, eax
call fcn.00401799
add esp, 0xc0c
ret 0x10