Function at 0x402a6c
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
and esp, 0xfffffff0
mov eax, 0
add eax, 0xf
add eax, 0xf
shr eax, 4
shl eax, 4
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
call fcn.00404950
call fcn.004045c0
mov dword [0x409350], 0
mov dword [0x409330], 0
mov dword [0x409300], 0xffffffff
mov dword [0x409310], 0xffffffff
mov dword [0x409320], 0xffffffff
mov dword [0x4092e0], 0xffffffff
mov dword [0x4092f0], 0xffffffff
mov dword [0x4092c0], 0xffffffff
mov dword [0x4092b0], 0xffffffff
mov dword [0x409330], 0
mov dword [0x409350], 0x80
mov dword [0x409340], 5
mov dword [0x4092d0], 0x3920
mov dword [0x409370], 0
mov dword [0x409360], 0
mov dword [ebp - 4], 1
mov eax, dword [ebp - 4]
cmp eax, dword [ebp + 8]
jge 0x403b35
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
cmp byte [eax], 0x2d
je 0x402b59
jmp 0x403b35
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__help
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x402ba1
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x408203
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402bdb
call fcn.004012f0
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x402bcf
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__version
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402c40
mov dword [esp], str.grubinst_version_:_1.1_beta4_n
call sub.msvcrt.dll_printf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x402c34
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__verbose
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x402c88
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x408238
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402c94
or dword [0x409330], 1
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__pause
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402cc4
or dword [0x409330], 2
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__read_only
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x402d0c
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x40824f
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402d18
or dword [0x409330], 4
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__no_backup_mbr
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402d48
or dword [0x409330], 8
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__force_backup_mbr
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402d78
and dword [0x409330], 0xfffffff7
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__mbr_enable_floppy
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402da8
and dword [0x409350], 0xfffffffe
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__mbr_disable_floppy
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402dd8
or dword [0x409350], 1
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__mbr_enable_osbr
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402e08
and dword [0x409350], 0xfffffffd
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__mbr_disable_osbr
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402e38
or dword [0x409350], 2
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__duce
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402e68
or dword [0x409350], 4
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__boot_prevmbr_first
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402e9b
and dword [0x409350], 0xffffff7f
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__boot_prevmbr_last
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x402ece
or dword [0x409350], 0x80
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 0x12
mov dword [esp + 4], str.__preferred_drive
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x402f9d
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 0x12
mov dword [esp], eax
call sub.msvcrt.dll_strtol
mov dword [0x4092c0], eax
cmp dword [0x4092c0], 0
js 0x402f48
cmp dword [0x4092c0], 0xfe
jg 0x402f48
jmp 0x403b2b
mov dword [esp + 8], str.Invalid_preferred_drive_number
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x402f91
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 0x16
mov dword [esp + 4], str.__preferred_partition
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40306c
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 0x16
mov dword [esp], eax
call sub.msvcrt.dll_strtol
mov dword [0x4092f0], eax
cmp dword [0x4092f0], 0
js 0x403017
cmp dword [0x4092f0], 0xfe
jg 0x403017
jmp 0x403b2b
mov dword [esp + 8], str.Invalid_preferred_partition_number
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x403060
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 0xb
mov dword [esp + 4], str.__time_out
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
je 0x4030c8
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 3
mov dword [esp + 4], 0x40836f
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40319d
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 2
cmp byte [eax], 0x3d
jne 0x403108
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 3
mov dword [ebp - 0x10], eax
jmp 0x40311e
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 0xb
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sub.msvcrt.dll_strtol
mov dword [0x409340], eax
cmp dword [0x409340], 0
js 0x403148
cmp dword [0x409340], 0xff
jg 0x403148
jmp 0x403b2b
mov dword [esp + 8], str.Invalid_timeout_value
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x403191
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 0xa
mov dword [esp + 4], str.__hot_key
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
je 0x4031f9
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 3
mov dword [esp + 4], 0x408394
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x4032b1
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 2
cmp byte [eax], 0x3d
jne 0x403229
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 3
mov dword [ebp - 0x14], eax
jmp 0x40323f
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 0xa
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
mov dword [esp], eax
call fcn.0040173e
mov dword [0x4092d0], eax
cmp dword [0x4092d0], 0
jne 0x403b2b
mov dword [esp + 8], str.Invalid_hot_key
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x4032a5
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__restore_prevmbr
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x4032f9
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x4083ba
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x403305
or dword [0x409330], 0x10
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 7
mov dword [esp + 4], str.__save
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
je 0x403361
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 3
mov dword [esp + 4], 0x4083c5
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x403412
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 2
cmp byte [eax], 0x3d
jne 0x403391
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov edx, dword [edx + eax]
add edx, 3
mov dword [ebp - 0x18], edx
jmp 0x4033a7
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov edx, dword [edx + eax]
add edx, 7
mov dword [ebp - 0x18], edx
mov eax, dword [ebp - 0x18]
mov dword [0x409370], eax
mov eax, dword [0x409370]
cmp byte [eax], 0
jne 0x403b2b
mov dword [esp + 8], str.Empty_filename
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x403406
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 0xa
mov dword [esp + 4], str.__restore
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
je 0x40346e
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 3
mov dword [esp + 4], 0x4083e3
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40351f
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 2
cmp byte [eax], 0x3d
jne 0x40349e
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov edx, dword [edx + eax]
add edx, 3
mov dword [ebp - 0x1c], edx
jmp 0x4034b4
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov edx, dword [edx + eax]
add edx, 0xa
mov dword [ebp - 0x1c], edx
mov eax, dword [ebp - 0x1c]
mov dword [0x409360], eax
mov eax, dword [0x409360]
cmp byte [eax], 0
jne 0x403b2b
mov dword [esp + 8], str.Empty_filename
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x403513
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__list_part
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x403567
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x4083f3
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x403573
or dword [0x409330], 0x20
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x4083f6
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x4035bb
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x4083ff
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x4035c7
or dword [0x409330], 0x40
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 9
mov dword [esp + 4], str.__floppy
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
je 0x40364f
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 0x14
mov dword [esp + 4], str.__install_partition
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
je 0x40364f
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 3
mov dword [esp + 4], 0x408421
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x403751
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 2
cmp byte [eax], 0x66
jne 0x40367f
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 9
mov dword [ebp - 8], eax
jmp 0x4036c5
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 2
cmp byte [eax], 0x69
jne 0x4036af
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 0x14
mov dword [ebp - 8], eax
jmp 0x4036c5
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 3
mov dword [ebp - 8], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 8]
mov dword [esp], eax
call sub.msvcrt.dll_strtoul
mov dword [0x4092b0], eax
cmp dword [0x4092b0], 0
js 0x4036fc
cmp dword [0x4092b0], 0x1d
jg 0x4036fc
jmp 0x403b2b
mov dword [esp + 8], str.Invalid_partition_number
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x403745
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__lba
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x403784
or dword [0x409330], 0x80
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__chs
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x4037b7
or dword [0x409330], 0x100
jmp 0x403b2b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 0x14
mov dword [esp + 4], str.__sectors_per_track
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x403883
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 0xa
mov dword [esp], eax
call sub.msvcrt.dll_strtol
mov dword [0x4092e0], eax
cmp dword [0x4092e0], 0
jle 0x40382e
cmp dword [0x4092e0], 0x3f
jg 0x40382e
jmp 0x403b2b
mov dword [esp + 8], str.Invalid_sector_per_track
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x403877
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 8
mov dword [esp + 4], str.__heads
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x403952
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 8
mov dword [esp], eax
call sub.msvcrt.dll_strtol
mov dword [0x409320], eax
cmp dword [0x409320], 0
jle 0x4038fd
cmp dword [0x409320], 0xff
jg 0x4038fd
jmp 0x403b2b
mov dword [esp + 8], str.Invalid_number_of_heads
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x403946
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 0xf
mov dword [esp + 4], str.__start_sector
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x403a14
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 0xf
mov dword [esp], eax
call sub.msvcrt.dll_strtol
mov dword [0x4092e0], eax
cmp dword [0x409310], 0
jns 0x403b2b
mov dword [esp + 8], str.Invalid_start_sector
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x403a08
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 0x10
mov dword [esp + 4], str.__total_sectors
mov eax, dword [edx + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x403ad6
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 0x10
mov dword [esp], eax
call sub.msvcrt.dll_strtol
mov dword [0x409300], eax
cmp dword [0x409300], 0
jns 0x403b2b
mov dword [esp + 8], str.Invalid_total_sectors
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x403aca
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov dword [esp + 8], str.Invalid_option__please_use___help_to_see_all_valid_options
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x403b1f
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
lea eax, [ebp - 4]
inc dword [eax]
jmp 0x402b33
mov eax, dword [ebp - 4]
cmp eax, dword [ebp + 8]
jl 0x403b8f
mov dword [esp + 8], str.No_filename_specified
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x403b86
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp + 8]
dec eax
cmp eax, dword [ebp - 4]
jle 0x403bea
mov dword [esp + 8], str.Extra_parameters
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov eax, dword [0x409330]
and eax, 2
test eax, eax
je 0x403be1
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press_any_key_to_continue_..._n
call sub.msvcrt.dll_fputs
call sub.msvcrt.dll__getch
mov dword [ebp - 0xc], 1
jmp 0x403c0d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
mov dword [esp], eax
call fcn.00401540
mov dword [esp], eax
call fcn.00401986
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
leave
ret