Function at 0x40351c
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 - 0x24], eax
mov eax, dword [ebp - 0x24]
call fcn.00407a80
call sym.___main
mov dword [0x40d330], 0
mov dword [0x40d310], 0
mov dword [0x40d2e0], 0xffffffff
mov dword [0x40d2f0], 0xffffffff
mov dword [0x40d300], 0xffffffff
mov dword [0x40d290], 0xffffffff
mov dword [0x40d2b0], 0xffffffff
mov dword [0x40d260], 0xffffffff
mov dword [0x40d250], 0xffffffff
mov dword [0x40d310], 0
mov dword [0x40d330], 0x80
mov dword [0x40d320], 5
mov dword [0x40d280], 0x3920
mov dword [0x40d350], 0
mov dword [0x40d340], 0
mov dword [ebp - 4], 1
mov eax, dword [ebp - 4]
cmp eax, dword [ebp + 8]
jge 0x404c13
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
cmp byte [eax], 0x2d
je 0x403609
jmp 0x404c13
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 sym._strcmp
test eax, eax
je 0x403651
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x40c467
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
jne 0x4036a3
call sym._help
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x403697
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
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 sym._strcmp
test eax, eax
jne 0x40372c
mov dword [esp + 4], str.grubinst_version_:_1.1_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x403720
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
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 sym._strcmp
test eax, eax
je 0x403774
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x40c496
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
jne 0x403780
or dword [0x40d310], 1
jmp 0x404c09
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 sym._strcmp
test eax, eax
jne 0x4037b0
or dword [0x40d310], 2
jmp 0x404c09
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 sym._strcmp
test eax, eax
je 0x4037f8
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x40c4ad
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
jne 0x403804
or dword [0x40d310], 4
jmp 0x404c09
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 sym._strcmp
test eax, eax
jne 0x403834
or dword [0x40d310], 8
jmp 0x404c09
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 sym._strcmp
test eax, eax
jne 0x403864
and dword [0x40d310], 0xfffffff7
jmp 0x404c09
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 sym._strcmp
test eax, eax
jne 0x403894
and dword [0x40d330], 0xfffffffe
jmp 0x404c09
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 sym._strcmp
test eax, eax
jne 0x4038c4
or dword [0x40d330], 1
jmp 0x404c09
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 sym._strcmp
test eax, eax
jne 0x4038f4
and dword [0x40d330], 0xfffffffd
jmp 0x404c09
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 sym._strcmp
test eax, eax
jne 0x403924
or dword [0x40d330], 2
jmp 0x404c09
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 sym._strcmp
test eax, eax
jne 0x403954
or dword [0x40d330], 4
jmp 0x404c09
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 sym._strcmp
test eax, eax
jne 0x403987
and dword [0x40d330], 0xffffff7f
jmp 0x404c09
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 sym._strcmp
test eax, eax
jne 0x4039ba
or dword [0x40d330], 0x80
jmp 0x404c09
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 sym._strncmp
test eax, eax
jne 0x403aa1
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 sym._strtol
mov dword [0x40d260], eax
cmp dword [0x40d260], 0
js 0x403a34
cmp dword [0x40d260], 0xfe
jg 0x403a34
jmp 0x404c09
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x403a95
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
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 sym._strncmp
test eax, eax
jne 0x403b88
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 sym._strtol
mov dword [0x40d2b0], eax
cmp dword [0x40d2b0], 0
js 0x403b1b
cmp dword [0x40d2b0], 0xfe
jg 0x403b1b
jmp 0x404c09
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x403b7c
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
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 sym._strncmp
test eax, eax
je 0x403be4
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 3
mov dword [esp + 4], 0x40c5cb
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strncmp
test eax, eax
jne 0x403cd1
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 0x403c24
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 0x403c3a
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 sym._strtol
mov dword [0x40d320], eax
cmp dword [0x40d320], 0
js 0x403c64
cmp dword [0x40d320], 0xff
jg 0x403c64
jmp 0x404c09
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x403cc5
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
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 sym._strncmp
test eax, eax
je 0x403d2d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 3
mov dword [esp + 4], 0x40c5f0
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strncmp
test eax, eax
jne 0x403e46
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 0x403d5d
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 - 0x14], edx
jmp 0x403d73
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 - 0x14], edx
mov eax, dword [ebp - 0x14]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
mov dword [esp], eax
call sym._get_keycode
mov dword [0x40d280], eax
cmp dword [0x40d280], 0
jne 0x403dff
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x403df3
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
mov eax, dword [ebp - 8]
cmp byte [eax], 0x30
je 0x404c09
mov eax, dword [ebp - 8]
inc eax
cmp byte [eax], 0x78
je 0x404c09
cmp dword [0x40d270], 0
jne 0x404c09
mov eax, dword [ebp - 8]
mov dword [esp], eax
call sym._strlen
cmp eax, 0xb
ja 0x404c09
mov eax, dword [ebp - 8]
mov dword [0x40d270], eax
jmp 0x404c09
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 0xb
mov dword [esp + 4], str.__key_name
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strncmp
test eax, eax
jne 0x403f11
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 0xb
mov dword [0x40d270], eax
mov eax, dword [0x40d270]
mov dword [esp], eax
call sym._strlen
cmp eax, 0xd
jbe 0x404c09
mov dword [esp + 8], str.Key_name_too_long
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x403f05
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
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 sym._strcmp
test eax, eax
je 0x403f59
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x40c634
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
jne 0x403f65
or dword [0x40d310], 0x20
jmp 0x404c09
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 sym._strncmp
test eax, eax
je 0x403fc1
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 3
mov dword [esp + 4], 0x40c63f
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strncmp
test eax, eax
jne 0x40408a
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 0x403ff1
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 0x404007
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 [0x40d350], eax
mov eax, dword [0x40d350]
cmp byte [eax], 0
jne 0x404c09
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x40407e
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
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 sym._strncmp
test eax, eax
je 0x4040e6
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 3
mov dword [esp + 4], 0x40c65d
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strncmp
test eax, eax
jne 0x4041af
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 0x404116
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 0x40412c
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 [0x40d340], eax
mov eax, dword [0x40d340]
cmp byte [eax], 0
jne 0x404c09
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x4041a3
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
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 sym._strcmp
test eax, eax
je 0x4041f7
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x40c66d
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
jne 0x404203
or dword [0x40d310], 0x40
jmp 0x404c09
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x40c670
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
je 0x40424b
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x40c679
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
jne 0x40425a
or dword [0x40d310], 0x80
jmp 0x404c09
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 sym._strncmp
test eax, eax
je 0x4042e2
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 sym._strncmp
test eax, eax
je 0x4042e2
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 3
mov dword [esp + 4], 0x40c69b
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strncmp
test eax, eax
jne 0x4043fc
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 0x404312
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 0x404358
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 0x404342
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 0x404358
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 sym._strtoul
mov dword [0x40d250], eax
cmp dword [0x40d250], 0
js 0x40438f
cmp dword [0x40d250], 0x1d
jg 0x40438f
jmp 0x404c09
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x4043f0
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
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 sym._strcmp
test eax, eax
jne 0x40442f
or dword [0x40d310], 0x100
jmp 0x404c09
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 sym._strcmp
test eax, eax
jne 0x404462
or dword [0x40d310], 0x200
jmp 0x404c09
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 sym._strncmp
test eax, eax
jne 0x404546
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 sym._strtol
mov dword [0x40d290], eax
cmp dword [0x40d290], 0
jle 0x4044d9
cmp dword [0x40d290], 0x3f
jg 0x4044d9
jmp 0x404c09
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x40453a
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
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 sym._strncmp
test eax, eax
jne 0x40462d
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 sym._strtol
mov dword [0x40d300], eax
cmp dword [0x40d300], 0
jle 0x4045c0
cmp dword [0x40d300], 0xff
jg 0x4045c0
jmp 0x404c09
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x404621
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
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 sym._strncmp
test eax, eax
jne 0x404707
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 sym._strtol
mov dword [0x40d290], eax
cmp dword [0x40d2f0], 0
jns 0x404c09
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x4046fb
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
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 sym._strncmp
test eax, eax
jne 0x4047e1
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 sym._strtol
mov dword [0x40d2e0], eax
cmp dword [0x40d2e0], 0
jns 0x404c09
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x4047d5
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 0xc
mov dword [esp + 4], str.__boot_file
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strncmp
test eax, eax
je 0x40483d
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 3
mov dword [esp + 4], 0x40c76c
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strncmp
test eax, eax
jne 0x404903
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 0x40486d
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 - 0x20], eax
jmp 0x404883
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
add eax, 0xc
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call sym._SetBootFile
test eax, eax
je 0x404c09
mov dword [esp + 8], str.Invalid_boot_file_name
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x4048f7
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], 0xb
mov dword [esp + 4], str.__load_seg
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strncmp
test eax, eax
jne 0x4049e0
mov dword [esp + 8], 0x10
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, 0xb
mov dword [esp], eax
call sym._strtoul
mov word [0x40d2d0], ax
cmp word [0x40d2d0], 0xfff
ja 0x404c09
mov dword [esp + 8], str.Load_address_too_small
mov dword [esp + 4], str.grubinst:__s_n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x4049d4
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__grub2
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
je 0x404a28
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x40c7b2
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
jne 0x404a58
cmp dword [0x40d2a0], 0
jne 0x404c09
mov dword [0x40d2a0], str.g2ldr
mov dword [esp + 4], str.G2LDR
mov dword [esp], 0x40d2c0
call sym._strcpy
jmp 0x404c09
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__output
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
je 0x404aa0
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x40c7d0
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
jne 0x404aaf
or dword [0x40d310], 0x400
jmp 0x404c09
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__edit
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
je 0x404af7
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0x40c7da
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
jne 0x404b06
or dword [0x40d310], 0x800
jmp 0x404c09
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__skip_mbr_test
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
jne 0x404b39
or dword [0x40d310], 0x1000
jmp 0x404c09
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__skip_mbr_test
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
jne 0x404b6c
or dword [0x40d310], 0x1000
jmp 0x404c09
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], str.__copy_bpb
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._strcmp
test eax, eax
jne 0x404b9c
or dword [0x40d310], 0x2000
jmp 0x404c09
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x404bfd
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
lea eax, [ebp - 4]
inc dword [eax]
jmp 0x4035e3
mov eax, dword [ebp - 4]
cmp eax, dword [ebp + 8]
jl 0x404c88
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x404c7c
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
mov eax, dword [ebp + 8]
dec eax
cmp eax, dword [ebp - 4]
jle 0x404cfb
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 sym._fprintf
mov eax, dword [0x40d310]
and eax, 2
test eax, eax
je 0x404cf2
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 4], eax
mov dword [esp], str.Press__ENTER__to_continue_..._n
call sym._fputs
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sym._fflush
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp], eax
call sym._fgetc
mov dword [ebp - 0xc], 1
jmp 0x404d16
mov eax, dword [ebp - 4]
lea edx, [eax*4]
mov eax, dword [ebp + 0xc]
mov eax, dword [edx + eax]
mov dword [esp], eax
call sym._install
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
leave
ret