Function at 0x401e30
Capabilities:
Get file size
Read file on windows

Disassembly:
push ebp
lea ebp, [esp - 0x44f0]
mov eax, 0x4574
call fcn.00405820
mov eax, dword [0x40806c]
xor eax, ebp
mov dword [ebp + 0x44ec], eax
push ebx
push esi
push edi
push 0x104
mov esi, 0x40bdc0
xor ebx, ebx
push esi
push ebx
mov dword [ebp + 0x78], ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push ebx
push ebx
push 3
push ebx
push 1
push 0x80000000
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, dword [sym.imp.KERNEL32.dll_ReadFile]
push ebx
lea ecx, [ebp + 0x80]
push ecx
push 0x40
lea ecx, [ebp + 0x84]
push ecx
push eax
mov dword [0x40808c], eax
call esi
test eax, eax
je 0x401ec6
cmp dword [ebp + 0x80], 0x40
jne 0x401ec6
mov edi, dword [sym.imp.KERNEL32.dll_SetFilePointer]
push ebx
push ebx
push dword [ebp + 0xc0]
push dword [0x40808c]
call edi
mov dword [ebp + 0x7c], eax
cmp eax, 0xffffffff
jne 0x401ed0
push str.Could_not_read_the_source_SFX.
call fcn.00401038
push ebx
lea eax, [ebp + 0x80]
push eax
push 0xf8
lea eax, [ebp - 0x84]
push eax
push dword [0x40808c]
call esi
test eax, eax
je 0x401ec6
cmp dword [ebp + 0x80], 0xf8
jne 0x401ec6
cmp dword [ebp - 0x84], 0x4550
jne 0x401ec6
mov eax, pe_nt_image_headers32
cmp word [ebp - 0x70], ax
jne 0x401ec6
xor eax, eax
mov dword [ebp + 0x74], ebx
cmp ax, word [ebp - 0x7e]
jae 0x401f66
push ebx
lea eax, [ebp + 0x80]
push eax
push 0x28
lea eax, [ebp + 0xc4]
push eax
push dword [0x40808c]
call esi
test eax, eax
je 0x401ec6
cmp dword [ebp + 0x80], 0x28
jne 0x401ec6
mov eax, dword [ebp + 0xd4]
mov ecx, dword [ebp + 0xd8]
add eax, ecx
cmp dword [ebp + 0x7c], eax
jae 0x401f5a
mov dword [ebp + 0x7c], eax
movzx eax, word [ebp - 0x7e]
inc dword [ebp + 0x74]
cmp dword [ebp + 0x74], eax
jl 0x401f1e
push ebx
push ebx
push dword [ebp + 0x7c]
push dword [0x40808c]
call edi
mov dword [ebp + 0x7c], eax
cmp eax, 0xffffffff
je 0x401ec6
push ebx
lea eax, [ebp + 0x80]
push eax
push 0x3fff
lea eax, [ebp + 0xec]
push eax
push dword [0x40808c]
call esi
test eax, eax
je 0x401ec6
mov eax, dword [ebp + 0x80]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str.Unnamed_Archive
push 0x4084b8
mov byte [ebp + eax + 0xec], bl
call edi
cmp dword [ebp + 0x80], 4
jb 0x4021dd
mov esi, 0x406574
mov edi, dword [ebp + 0x78]
push 4
lea edi, [ebp + edi + 0xec]
push 0x40656c
push edi
call fcn.004016e6
add esp, 0xc
test eax, eax
je 0x4021d7
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [ebp + 0x78]
lea eax, [ecx + eax + 1]
mov dword [ebp + 0x78], eax
lea eax, [ebp + 0x40ec]
push eax
push ebx
push esi
push edi
call fcn.0040112c
add esp, 0x10
cmp byte [eax], bl
je 0x4021c5
push str.Delete
lea eax, [ebp + 0x40ec]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x402048
movsx eax, byte [edi + 7]
and eax, 0xf
mov dword [0x40b3d8], eax
jmp 0x4021c5
push str.NoGUI
lea eax, [ebp + 0x40ec]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x40206f
movsx eax, byte [edi + 6]
and eax, 0xf
mov dword [0x40b3c4], eax
jmp 0x4021c5
push str.Debug
lea eax, [ebp + 0x40ec]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x402096
movsx eax, byte [edi + 6]
and eax, 0xf
mov dword [0x40b3cc], eax
jmp 0x4021c5
push str.Name
lea eax, [ebp + 0x40ec]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x4020b6
push 0x4084b8
jmp 0x402179
push str.Exec
lea eax, [ebp + 0x40ec]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x4020d6
push 0x4085b8
jmp 0x402179
push str.DefaultPath
lea eax, [ebp + 0x40ec]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x4020f6
push 0x40bb40
jmp 0x402179
push str.Intro
lea eax, [ebp + 0x40ec]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x402113
push 0x40b720
jmp 0x402179
push str.AutoExtract
lea eax, [ebp + 0x40ec]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x40213a
movsx eax, byte [edi + 0xc]
and eax, 0xf
mov dword [0x4084b4], eax
jmp 0x4021c5
push str.OpenFolder
lea eax, [ebp + 0x40ec]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x40215e
movsx eax, byte [edi + 0xb]
and eax, 0xf
mov dword [0x4086bc], eax
jmp 0x4021c5
push 0x406514
lea eax, [ebp + 0x40ec]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x402187
push 0x4086c0
push 1
push esi
push edi
call fcn.0040112c
add esp, 0x10
jmp 0x4021c5
push str.Shortcut
lea eax, [ebp + 0x40ec]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x4021c5
lea eax, [ebp + 0x40ec]
push eax
push 1
push esi
push edi
call fcn.0040112c
add esp, 0x10
lea eax, [ebp + 0x40ec]
push eax
push ebx
push ebx
push dword [0x408088]
call dword [sym.imp.USER32.dll_AppendMenuA]
mov eax, dword [ebp + 0x78]
add eax, 4
cmp eax, dword [ebp + 0x80]
jbe 0x401fd4
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [ebp + 0x78]
lea ecx, [eax + 4]
cmp ecx, dword [ebp + 0x80]
jbe 0x4021f5
push str.Could_not_get_file_info._This_archive_is_likely_corrupted.
jmp 0x401ecb
mov ecx, dword [ebp + 0x7c]
push ebx
push dword [0x40808c]
add eax, ecx
mov dword [0x40b3d0], eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
sub eax, dword [0x40b3d0]
mov dword [0x40b3d4], eax
cmp byte [0x40bb40], bl
jne 0x402243
cmp dword [0x4084b4], 1
jne 0x402237
push str._temp_
mov esi, 0x40bb40
push esi
call edi
jmp 0x402248
push str._curdir_
push 0x40bb40
call edi
mov esi, 0x40bb40
call fcn.00401dd2
push 0x104
push esi
call fcn.004012bb
push esi
call fcn.00401712
add esp, 0xc
push esi
mov esi, 0x40bc60
push esi
call edi
cmp dword [0x4084b4], 1
jne 0x402290
push 0x406448
push esi
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push esi
call fcn.00401588
pop ecx
mov dword [section..data], 3
mov ecx, dword [ebp + 0x44ec]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040580c
add ebp, 0x44f0
leave
ret