Function at 0x401410
Capabilities:
Create directory
Delete file
Read .ini file
Set file attributes

Disassembly:
sub esp, 0x608
push esi
push edi
push str._H_OFF
push 0x4052c4
call fcn.00402ad0
add esp, 8
call fcn.00401230
call fcn.00401970
call fcn.00402350
test eax, eax
jne 0x4015b4
push str.2003
call fcn.00401000
push str.BOOT_MBR
push 0x65
push 0x404cac
call fcn.00402390
add esp, 0x10
test eax, eax
je 0x401948
push str.BOOT_MBR
push 0x68
push 0x404db0
call fcn.00402390
add esp, 0xc
test eax, eax
je 0x401948
push ebp
push 0x404db0
push 0x404cac
push 0x404468
call fcn.00401000
mov esi, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
add esp, 0xc
push 0x80
push 0x404ba8
call esi
mov ebp, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x404ba8
push 0x404450
push 0x404cac
push str.operating_systems
call ebp
push 0x404ba8
push 0x40444c
push str.timeout
push str.boot_loader
call ebp
mov al, byte [0x4053c8]
test al, al
je 0x40158d
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0xd]
mov byte [esp + 0xc], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push 0x404ba8
lea eax, [esp + 0x10]
push 0x104
push eax
push 0x4057e8
push str.default
push str.boot_loader
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov esi, 0x404cac
lea eax, [esp + 0xc]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x401552
test cl, cl
je 0x40154e
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x401552
add eax, 2
add esi, 2
test cl, cl
jne 0x40152e
xor eax, eax
jmp 0x401557
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x401587
lea eax, [esp + 0xc]
push 0x404ba8
push eax
push str.DefaultBackup
push 0x404438
call ebp
push 0x404ba8
push 0x404cac
push str.default
push str.boot_loader
call ebp
mov esi, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push 7
push 0x404cac
call esi
push 7
push 0x404db0
call esi
push 7
push 0x404ba8
call esi
pop ebp
pop edi
xor eax, eax
pop esi
add esp, 0x608
ret
call fcn.00402610
test eax, eax
je 0x4016ef
push str.EFIGPT
call fcn.00401000
mov esi, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
add esp, 4
push 0x80
push 0x404eb4
call esi
push 0x80
push 0x404fb8
call esi
push 0
push 0x4049a0
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov al, byte [0x4053c8]
push str.BOOT_EFI
test al, al
jne 0x40167b
push 0x66
push 0x404eb4
call fcn.00402390
add esp, 0xc
test eax, eax
je 0x40165e
push str.BOOT_EFI
push 0x66
push 0x404fb8
call fcn.00402390
add esp, 0xc
test eax, eax
je 0x40165e
push 0x404eb4
push 0x4043e8
call fcn.00401000
push str._set_bootmgr_path_ORMORMLdr.efi
push 0x4050bc
call fcn.00402ad0
add esp, 0x10
xor eax, eax
pop edi
pop esi
add esp, 0x608
ret
push 0x404eb4
push 0x4043a4
call fcn.00401000
add esp, 8
xor eax, eax
pop edi
pop esi
add esp, 0x608
ret
push 0x67
push 0x404eb4
call fcn.00402390
add esp, 0xc
test eax, eax
je 0x4016d2
push str.BOOT_EFI
push 0x66
push 0x404fb8
call fcn.00402390
add esp, 0xc
test eax, eax
je 0x4016d2
push 0x404eb4
push 0x404388
call fcn.00401000
push str._set_bootmgr_path_ORMORMLdr.efi
push 0x4050bc
call fcn.00402ad0
add esp, 0x10
xor eax, eax
pop edi
pop esi
add esp, 0x608
ret
push 0x404eb4
push 0x40436c
call fcn.00401000
add esp, 8
xor eax, eax
pop edi
pop esi
add esp, 0x608
ret
push str.Vista
call fcn.00401000
push 0x4051c0
call fcn.00401200
mov esi, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
add esp, 8
test al, al
je 0x40173b
push 0x4051c0
push 0x404324
call fcn.00401000
add esp, 8
push 0x80
push 0x4051c0
call esi
push 0x4051c0
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
jmp 0x401756
mov al, byte [0x4053c8]
test al, al
je 0x401756
push 0x4051c0
push 0x404304
call fcn.00401000
add esp, 8
push str._default_current
push 0x4050bc
call fcn.00402ad0
add esp, 8
test eax, eax
je 0x401779
push 0x4042cc
call fcn.00401000
add esp, 4
push 0x80
push 0x404cac
call esi
push 0x80
push 0x404db0
call esi
push str.BOOT_MBR
push 0x65
push 0x404cac
call fcn.00402390
add esp, 0xc
test eax, eax
je 0x401948
push str.BOOT_MBR
push 0x68
push 0x404db0
call fcn.00402390
add esp, 0xc
test eax, eax
je 0x401948
push 0x404db0
push 0x404cac
push 0x4042b0
call fcn.00401000
add esp, 0xc
push 7
push 0x404cac
call esi
push 7
push 0x404db0
call esi
push str._create_3919457F_2759_4187_8912_C68B887E407D__d
push 0x4050bc
call fcn.00402ad0
push str._set_3919457F_2759_4187_8912_C68B887E407D_path_ORMLdr
push 0x4050bc
call fcn.00402ad0
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x19]
mov byte [esp + 0x18], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, 0x404aa4
or ecx, 0xffffffff
xor eax, eax
add esp, 0x10
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 8]
mov eax, ecx
mov esi, edi
mov edi, edx
mov byte [esp + 0x210], 0
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
lea edx, [esp + 0x210]
rep movsb byte es:[edi], byte [esi]
mov ecx, 0xff
lea edi, [esp + 0x211]
rep stosd dword es:[edi], eax
mov esi, dword [sym.imp.MSVCRT.dll_sprintf]
lea ecx, [esp + 8]
stosw word es:[edi], ax
push ecx
push str._set_3919457F_2759_4187_8912_C68B887E407D_device_partition_s
push edx
mov byte [esp + 0x16], 0
stosb byte es:[edi], al
call esi
lea eax, [esp + 0x21c]
push eax
push 0x4050bc
call fcn.00402ad0
push str._displayorder_3919457F_2759_4187_8912_C68B887E407D__addlast
push 0x4050bc
call fcn.00402ad0
push str._timeout_3
push 0x4050bc
call fcn.00402ad0
mov al, byte [0x4053c8]
add esp, 0x24
test al, al
je 0x40195f
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x10d]
mov byte [esp + 0x10c], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push 0x4051c0
lea ecx, [esp + 0x110]
push str._export__s
push ecx
stosb byte es:[edi], al
call esi
lea edx, [esp + 0x118]
push edx
push 0x4050bc
call fcn.00402ad0
add esp, 0x14
push 0
push 0x4049a0
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push str._default_3919457F_2759_4187_8912_C68B887E407D
push 0x4050bc
call fcn.00402ad0
add esp, 8
push 0x404cac
push 0x404130
call fcn.00401000
add esp, 8
xor eax, eax
pop edi
pop esi
add esp, 0x608
ret
push 0x404db0
push 0x404cac
push 0x404114
call fcn.00401000
add esp, 0xc
pop edi
xor eax, eax
pop esi
add esp, 0x608
ret