Function at 0x401811
Capabilities:
Delete file
Get disk information
Move file
Read file on windows
Set file attributes
Write file on windows

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0x68
mov esi, dword [ecx]
mov ebx, dword [ecx + 4]
call fcn.004036f0
call fcn.00401438
test eax, eax
jne 0x401850
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], str.You_need_to_be_running_at_least_Windows_NT__use_syslinux.com_instead._n
add eax, 0x40
mov dword [esp + 4], eax
jmp 0x401920
mov eax, dword [ebx]
mov dword [0x412c00], eax
mov dword [esp + 8], 2
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.00402096
mov eax, dword [0x4091f4]
test eax, eax
je 0x4018ba
mov edx, dword [sym.imp.msvcrt.dll___mb_cur_max]
movsx eax, byte [eax]
cmp dword [edx], 1
jne 0x401895
mov edx, dword [sym.imp.msvcrt.dll__pctype]
mov edx, dword [edx]
movzx eax, word [edx + eax*2]
and eax, 0x103
jmp 0x4018a5
mov dword [esp + 4], 0x103
mov dword [esp], eax
call sub.msvcrt.dll__isctype
test eax, eax
je 0x4018ba
mov eax, dword [0x4091f4]
cmp byte [eax + 1], 0x3a
jne 0x4018ba
cmp byte [eax + 2], 0
je 0x4018ce
mov dword [esp + 4], 2
mov dword [esp], 0x40
call fcn.00401fac
cmp dword [0x4091d4], 0
jne 0x40190d
cmp dword [0x4091d8], 0
jne 0x40190d
cmp dword [0x4091e4], 0
jne 0x40190d
cmp dword [0x4091e8], 0
jne 0x40190d
cmp dword [0x4091ec], 0
jg 0x40190d
cmp dword [0x4091fc], 0
jne 0x40190d
cmp dword [0x4091f8], 0
je 0x401931
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], str.At_least_one_specified_option_not_yet_implemented_for_this_installer._n
add eax, 0x40
mov dword [esp + 4], eax
call sub.msvcrt.dll_fputs
mov dword [esp], 1
call sub.msvcrt.dll_exit
call sub.KERNEL32.dll_GetLogicalDrives
mov ebx, dword [0x4091f4]
mov edi, 1
mov dword [ebp - 0x3c], eax
mov dl, byte [ebx]
movsx esi, dl
mov dword [esp], esi
mov byte [ebp - 0x4c], dl
call sub.msvcrt.dll_tolower
mov dl, byte [ebp - 0x4c]
lea ecx, [eax - 0x61]
shl edi, cl
test dword [ebp - 0x3c], edi
jne 0x401972
mov dword [esp + 8], esi
mov dword [esp + 4], str.No_such_drive__c:_n
jmp 0x401aa4
mov byte [0x409018], dl
mov al, byte [ebx]
mov byte [str._:ldlinux.sys], al
mov al, byte [ebx]
mov byte [0x409010], al
mov dword [esp], 0x409010
call sub.KERNEL32.dll_GetDriveTypeA
cmp eax, 3
push esi
jne 0x4019b9
cmp dword [0x409200], 0
jne 0x4019b9
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], str.Not_a_removable_drive__use__f_to_override___n
add eax, 0x40
mov dword [esp + 4], eax
jmp 0x401920
sub eax, 2
cmp eax, 1
jbe 0x4019d9
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], str.Unsupported_media_n
add eax, 0x40
mov dword [esp + 4], eax
jmp 0x401920
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 3
mov dword [esp + 4], 0xc0000000
mov dword [esp], str.._:
call sub.KERNEL32.dll_CreateFileA
sub esp, 0x1c
mov dword [ebp - 0x3c], eax
inc eax
jne 0x401a2a
mov dword [esp], str.Could_not_open_drive
jmp 0x401f07
lea eax, [ebp - 0x1c]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x200
mov dword [esp + 4], 0x412008
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call sub.KERNEL32.dll_ReadFile
sub esp, 0x14
test eax, eax
jne 0x401a67
mov dword [esp], str.Reading_boot_sector
jmp 0x401f07
cmp dword [ebp - 0x1c], 0x200
je 0x401a88
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], str.Could_not_read_the_whole_boot_sector_n
add eax, 0x40
mov dword [esp + 4], eax
jmp 0x401920
mov dword [esp], 0x412008
call fcn.00402749
test eax, eax
je 0x401ab9
mov dword [esp + 8], eax
mov dword [esp + 4], 0x411118
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
jmp 0x401925
mov dword [esp + 4], pe_nt_image_headers32
mov dword [esp], str._:ldlinux.sys
call sub.KERNEL32.dll_SetFileAttributesA
push ebx
push ebx
mov dword [esp], str._:ldlinux.sys
call sub.KERNEL32.dll_DeleteFileA
push ecx
mov dword [esp], 0x412c04
call fcn.004026b2
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 7
mov dword [esp + 0x10], 2
mov dword [esp + 0xc], 0
mov dword [esp + 8], 3
mov dword [esp + 4], 0xc0000000
mov dword [esp], str._:ldlinux.sys
call sub.KERNEL32.dll_CreateFileA
sub esp, 0x1c
cmp eax, 0xffffffff
mov ebx, eax
jne 0x401b3a
mov dword [esp], str.Unable_to_create_ldlinux.sys
jmp 0x401f07
mov edi, dword [0x41197c]
lea esi, [ebp - 0x20]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], esi
mov dword [esp + 4], str._r_nSYSLINUX_4.04
mov dword [esp + 8], edi
mov dword [esp], eax
call sub.KERNEL32.dll_WriteFile
sub esp, 0x14
test eax, eax
je 0x401cf7
mov ecx, dword [ebp - 0x20]
cmp ecx, edi
mov dword [ebp - 0x40], ecx
jne 0x401cf7
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0x412c04
mov dword [esp], ebx
call sub.KERNEL32.dll_WriteFile
sub esp, 0x14
test eax, eax
je 0x401bb0
cmp dword [ebp - 0x20], 0x400
je 0x401bbc
mov dword [esp], str.Could_not_write_ADV_to_ldlinux.sys
jmp 0x401f07
mov dword [esp], ebx
call sub.KERNEL32.dll_FlushFileBuffers
test eax, eax
push edx
jne 0x401bd5
mov dword [esp], str.FlushFileBuffers_failed
jmp 0x401f07
mov eax, dword [ebp - 0x40]
xor esi, esi
add eax, 0x5ff
shr eax, 9
mov dword [ebp - 0x44], eax
mov dword [esp + 4], 8
mov dword [esp], eax
call sub.msvcrt.dll_calloc
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x48], eax
mov dword [esp + 4], ecx
mov dword [esp], 0x401310
call fcn.004029e0
mov dword [esp + 0xc], 0
mov dword [esp + 8], str.LDLINUX_SYS
mov dword [esp + 4], 0
mov dword [esp], eax
mov edi, eax
call fcn.00402bf4
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00402cf8
jmp 0x401c56
mov ecx, dword [ebp - 0x48]
mov dword [ecx + esi*8], eax
mov dword [ecx + esi*8 + 4], edx
inc esi
mov dword [esp + 4], eax
mov dword [esp + 8], edx
mov dword [esp], edi
call fcn.00402d40
cmp esi, dword [ebp - 0x44]
jge 0x401c61
mov ecx, eax
or ecx, edx
jne 0x401c3b
mov dword [esp], edi
call fcn.00402bd4
mov dword [esp + 0x14], 0
mov eax, dword [0x4091f0]
mov dword [esp + 0x10], eax
mov eax, dword [0x4091dc]
mov dword [esp + 0xc], eax
mov eax, dword [0x4091e0]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call fcn.00402f53
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], ebx
call sub.KERNEL32.dll_SetFilePointer
sub esp, 0x10
test eax, eax
jne 0x401cf7
lea eax, [ebp - 0x20]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov ecx, dword [ebp - 0x40]
mov dword [esp + 4], str._r_nSYSLINUX_4.04
mov dword [esp], ebx
mov dword [esp + 8], ecx
call sub.KERNEL32.dll_WriteFile
sub esp, 0x14
test eax, eax
je 0x401cf7
mov eax, dword [ebp - 0x40]
cmp dword [ebp - 0x20], eax
je 0x401d03
mov dword [esp], str.Could_not_write_ldlinux.sys
jmp 0x401f07
cmp dword [0x409204], 0
jne 0x401d15
cmp dword [0x409208], 0
je 0x401d80
lea eax, [ebp - 0x2c]
mov dword [esp + 4], eax
mov ecx, dword [ebp - 0x3c]
mov dword [esp], ecx
call fcn.004017aa
test eax, eax
je 0x401d68
mov eax, dword [0x409208]
mov dword [esp + 0xc], eax
mov eax, dword [0x409204]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call fcn.004014f6
test eax, eax
jne 0x401d80
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], str.Did_not_successfully_update_the_MBR__continuing..._n
add eax, 0x40
mov dword [esp + 4], eax
jmp 0x401d7b
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], str.Could_not_find_device_number_for_updating_MBR__continuing..._n
add eax, 0x40
mov dword [esp + 4], eax
call sub.msvcrt.dll_fputs
mov dword [esp], ebx
call sub.KERNEL32.dll_CloseHandle
push edi
cmp dword [0x4091f0], 0
je 0x401e6e
mov edi, dword [0x4091f0]
xor eax, eax
or ecx, 0xffffffff
mov dword [ebp - 0x40], esp
repne scasb al, byte es:[edi]
not ecx
lea eax, [ecx + 0x2d]
and eax, 0xfffffff0
call fcn.00403720
mov eax, dword [0x4091f4]
mov ecx, 1
mov al, byte [eax]
lea ebx, [esp + 0x2b]
and ebx, 0xfffffff0
lea edi, [ebx + 3]
mov byte [ebx], al
mov eax, edi
mov byte [ebx + 1], 0x3a
mov byte [ebx + 2], 0x5c
mov esi, dword [0x4091f0]
jmp 0x401df7
cmp dl, 0x5c
je 0x401de7
cmp dl, 0x2f
jne 0x401df1
test ecx, ecx
jne 0x401df6
mov dl, 0x5c
mov cl, 1
jmp 0x401df3
xor ecx, ecx
mov byte [eax], dl
inc eax
inc esi
mov dl, byte [esi]
test dl, dl
jne 0x401ddd
cmp eax, edi
jbe 0x401e6b
test ecx, ecx
jne 0x401e09
mov byte [eax], 0x5c
inc eax
mov edi, eax
mov esi, str.ldlinux.sys
mov ecx, 3
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 4], pe_nt_image_headers32
mov dword [esp], ebx
call sub.KERNEL32.dll_SetFileAttributesA
push esi
push esi
mov dword [esp], ebx
call sub.KERNEL32.dll_DeleteFileA
push ecx
mov dword [esp + 4], ebx
mov dword [esp], str._:ldlinux.sys
call sub.KERNEL32.dll_MoveFileA
test eax, eax
push edx
push edx
jne 0x401e59
mov dword [esp + 4], 7
mov dword [esp], str._:ldlinux.sys
jmp 0x401e64
mov dword [esp + 4], 7
mov dword [esp], ebx
call sub.KERNEL32.dll_SetFileAttributesA
push edi
push edi
mov esp, dword [ebp - 0x40]
mov dword [esp], 0x412008
call fcn.00402724
mov eax, dword [0x40920c]
test eax, eax
je 0x401f1c
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0x20
mov dword [esp + 0x10], 2
mov dword [esp + 0xc], 0
mov dword [esp + 8], 3
mov dword [esp + 4], 0xc0000000
mov dword [esp], eax
call sub.KERNEL32.dll_CreateFileA
sub esp, 0x1c
cmp eax, 0xffffffff
mov ebx, eax
jne 0x401ed2
mov dword [esp], str.Unable_to_create_bootsector_file
jmp 0x401f07
lea eax, [ebp - 0x20]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x200
mov dword [esp + 4], 0x412008
mov dword [esp], ebx
call sub.KERNEL32.dll_WriteFile
sub esp, 0x14
test eax, eax
jne 0x401f11
mov dword [esp], str.Could_not_write_boot_sector_file
call fcn.0040147a
jmp 0x401925
mov dword [esp], ebx
call sub.KERNEL32.dll_CloseHandle
push esi
jmp 0x401f6f
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call sub.KERNEL32.dll_SetFilePointer
lea eax, [ebp - 0x20]
sub esp, 0x10
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x200
mov dword [esp + 4], 0x412008
mov ecx, dword [ebp - 0x3c]
mov dword [esp], ecx
call sub.KERNEL32.dll_WriteFile
sub esp, 0x14
cmp dword [ebp - 0x20], 0x200
je 0x401f90
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], str.Could_not_write_the_whole_boot_sector_n
add eax, 0x40
mov dword [esp + 4], eax
jmp 0x401920
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call sub.KERNEL32.dll_CloseHandle
xor eax, eax
push ebx
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret