Function at 0x403630
Capabilities:
Check for time delay via gettickcount
Check if file exists
Get file attributes
Get file size
Hide graphical window
Read file on windows

Disassembly:
sub esp, 0x2c
push ebx
push ebp
push esi
xor esi, esi
mov ebx, eax
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], esi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push 0x400
push 0x44ac00
add eax, 0x3e8
push esi
mov dword [0x441600], eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x44ac00
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov ecx, eax
inc ecx
push esi
neg ecx
sbb ecx, ecx
and ecx, eax
push ecx
push 3
push esi
push 1
push 0x80000000
push 0x44ac00
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebp, eax
mov dword [esp + 0x18], ebp
mov dword [0x4255bc], ebp
cmp ebp, 0xffffffff
jne 0x4036ab
pop esi
pop ebp
mov eax, str.Error_launching_installer
pop ebx
add esp, 0x2c
ret
mov esi, dword [sym.imp.KERNEL32.dll_lstrcpynA]
push edi
push 0x400
push 0x44ac00
push 0x449c00
call esi
push 0x449c00
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, dword [sym.imp.USER32.dll_CharPrevA]
add eax, 0x449c00
lea esp, [esp]
cmp byte [eax], 0x5c
je 0x4036f4
push eax
push 0x449c00
call edi
cmp eax, 0x449c00
ja 0x4036e0
mov byte [eax], 0
push 0x400
inc eax
push eax
push 0x44b000
call esi
push 0
push ebp
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, dword [0x44160c]
mov dword [0x43b9d4], eax
mov edi, eax
test eax, eax
jle 0x403889
neg esi
sbb esi, esi
and esi, 0x7e00
add esi, 0x200
cmp edi, esi
mov ebp, edi
jl 0x40373b
mov ebp, esi
mov eax, dword [0x4255bc]
push 0
lea edx, [esp + 0x1c]
push edx
push ebp
push 0x433948
push eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x403995
cmp ebp, dword [esp + 0x18]
jne 0x403995
mov esi, dword [0x44160c]
test esi, esi
jne 0x403811
push 0x1c
lea ecx, [esp + 0x24]
push 0x433948
push ecx
call fcn.004160c0
mov eax, dword [esp + 0x2c]
add esp, 0xc
test eax, 0xfffffff0
jne 0x403861
cmp dword [esp + 0x24], 0xdeadbeef
jne 0x403861
cmp dword [esp + 0x30], 0x74736e49
jne 0x403861
cmp dword [esp + 0x2c], 0x74666f73
jne 0x403861
cmp dword [esp + 0x28], 0x6c6c754e
jne 0x403861
mov esi, dword [0x43b9d0]
or ebx, eax
mov eax, dword [esp + 0x38]
mov edx, ebx
and edx, 2
or dword [0x4436c0], edx
cmp eax, edi
mov dword [0x44160c], esi
jg 0x4039af
test bl, 8
jne 0x403802
test bl, 4
jne 0x403889
inc dword [esp + 0x10]
lea edi, [eax - 4]
cmp ebp, edi
jbe 0x403861
mov ebp, edi
jmp 0x403861
test bl, 2
jne 0x403861
cmp dword [0x427944], 0
je 0x403828
xor esi, esi
call fcn.00408720
jmp 0x40385b
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, dword [0x441600]
jbe 0x40385b
mov eax, dword [0x4415a8]
push 0
push 0x403590
push 0
push 0x6f
push eax
call dword [sym.imp.USER32.dll_CreateDialogParamA]
push 5
push eax
mov dword [0x427944], eax
call dword [sym.imp.USER32.dll_ShowWindow]
mov esi, dword [0x44160c]
cmp edi, dword [0x43b9d4]
jge 0x403879
mov ecx, dword [esp + 0x14]
push ecx
mov eax, ebp
call fcn.00401400
mov dword [esp + 0x14], eax
add dword [0x43b9d0], ebp
sub edi, ebp
test edi, edi
jg 0x403723
mov eax, dword [0x427944]
test eax, eax
je 0x40389f
push eax
call dword [sym.imp.USER32.dll_DestroyWindow]
mov esi, dword [0x44160c]
mov dword [0x427944], 0
test esi, esi
je 0x4039af
cmp dword [esp + 0x10], 0
mov ebp, dword [sym.imp.KERNEL32.dll_SetFilePointer]
je 0x4038f5
mov edx, dword [0x43b9d0]
mov eax, dword [0x4255bc]
push 0
push 0
push edx
push eax
call ebp
mov esi, 4
lea ecx, [esp + 0x10]
call fcn.00403d00
test eax, eax
je 0x4039af
mov ecx, dword [esp + 0x14]
cmp ecx, dword [esp + 0x10]
jne 0x4039af
mov edi, dword [esp + 0x34]
push edi
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov edx, dword [0x44160c]
push 0
push 0
add edx, 0x1c
mov esi, eax
mov eax, dword [0x4255bc]
push edx
push eax
call ebp
push esi
push 0xffffffffffffffff
mov edx, edi
xor ecx, ecx
call fcn.004039c0
cmp eax, edi
jne 0x4039af
test byte [esp + 0x20], 1
mov ecx, dword [esi]
mov dword [0x4415ac], esi
mov dword [0x441608], ecx
je 0x403949
inc dword [0x441604]
mov ecx, 8
lea eax, [esi + 0x44]
add dword [eax - 8], esi
sub eax, 8
dec ecx
test ecx, ecx
jne 0x403951
mov edx, dword [esp + 0x1c]
push 1
push ecx
push ecx
push edx
call ebp
mov dword [esi + 0x3c], eax
mov eax, 0x4415c0
sub esi, eax
mov ecx, 0x40
add esi, 4
lea esp, [esp]
mov dl, byte [esi + eax]
dec ecx
mov byte [eax], dl
inc eax
test ecx, ecx
ja 0x403980
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x2c
ret
mov eax, dword [0x427944]
test eax, eax
je 0x4039a5
push eax
call dword [sym.imp.USER32.dll_DestroyWindow]
mov dword [0x427944], 0
pop edi
pop esi
pop ebp
mov eax, str.Installer_integrity_check_has_failed._Common_causes_include_nincomplete_download_and_damaged_media._Contact_the_ninstallers_author_to_obtain_a_new_copy._n_nMore_information_at:_nhttp:__nsis.sf.net_NSIS_Error
pop ebx
add esp, 0x2c
ret