Function at 0x402b25
Capabilities:
Get geographical location
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x124
mov eax, dword [0x4d8300]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, edx
mov ebx, ecx
push edi
mov dword [ebp - 0x10c], esi
call fcn.00401fd9
mov dword [ebp - 0x11c], eax
mov edi, eax
mov ecx, edi
test esi, esi
je 0x402b5f
call fcn.00401ede
jmp 0x402b64
call fcn.00401e6e
mov dword [ebp - 0x114], eax
test eax, eax
jns 0x402ba0
push edi
push str.Keyboard_id__s_is_not_supported___falling_back_to_us_n
call fcn.0042ed57
mov eax, 0x4b2550
mov edi, eax
mov dword [ebp - 0x11c], edi
pop ecx
pop ecx
mov ecx, eax
test esi, esi
je 0x402b95
call fcn.00401ede
jmp 0x402b9a
call fcn.00401e6e
mov dword [ebp - 0x114], eax
mov ecx, edi
call fcn.00401f4e
push eax
push edi
push str.Will_use_DOS_keyboard__s___s__n
call fcn.0042ed57
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetOEMCP]
mov esi, eax
mov dword [ebp - 0x110], eax
cmp esi, 0xfde9
jne 0x402bf9
push 4
lea eax, [ebp - 0x124]
push eax
push 0x2000000b
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
movzx ecx, ax
push ecx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
test eax, eax
cmovne esi, dword [ebp - 0x124]
mov dword [ebp - 0x110], esi
mov edx, dword [ebp - 0x10c]
mov ecx, esi
test edx, edx
je 0x402c0c
call fcn.004027e2
jmp 0x402c11
call fcn.0040277a
mov dword [ebp - 0x118], eax
test eax, eax
jne 0x402c5a
mov ecx, esi
call fcn.00401fa6
push eax
push esi
push str.Unable_to_find_an_EGA_file_with_codepage__d___s__n
call fcn.0042ed57
mov esi, dword [ebp - 0x114]
add esp, 0xc
cmp dword [ebp - 0x10c], 0
mov eax, str.ega.cpx
mov ecx, str.ega.cpi
cmove eax, ecx
mov esi, dword [esi*8 + 0x4da458]
mov dword [ebp - 0x118], eax
jmp 0x402c6e
test edx, edx
je 0x402c74
cmp esi, 0x352
mov eax, 0x35a
cmovne eax, esi
mov esi, eax
mov dword [ebp - 0x110], esi
mov ecx, esi
call fcn.00401fa6
push eax
push esi
push str.Will_use_codepage__d___s__n
call fcn.0042ed57
add esp, 0xc
cmp esi, 0x1b5
jne 0x402de2
push 0x4b2550
push edi
call fcn.00481660
pop ecx
pop ecx
test eax, eax
jne 0x402de2
mov esi, 0x104
test ebx, ebx
je 0x402ccd
push ebx
call fcn.004816f0
inc eax
pop ecx
cmp eax, esi
jae 0x402cc9
push ebx
call fcn.004816f0
pop ecx
jmp 0x402ccf
mov eax, esi
jmp 0x402cd0
xor eax, eax
inc eax
push eax
lea eax, [ebp - 0x108]
push ebx
push eax
call fcn.00476fc0
add esp, 0xc
test ebx, ebx
je 0x402cfa
push ebx
call fcn.004816f0
inc eax
pop ecx
cmp eax, esi
jae 0x402cff
push ebx
call fcn.004816f0
pop ecx
jmp 0x402cfc
xor eax, eax
lea esi, [eax + 1]
mov edi, str.AUTOEXEC.BAT
mov byte [ebp + esi - 0x109], 0
push edi
call fcn.004816f0
mov esi, eax
lea eax, [ebp - 0x108]
push eax
call fcn.004816f0
pop ecx
pop ecx
mov ebx, 0x103
mov ecx, ebx
sub ecx, eax
lea eax, [esi + 1]
cmp eax, ecx
jae 0x402d3d
push edi
call fcn.004816f0
lea ebx, [eax + 1]
jmp 0x402d4b
lea eax, [ebp - 0x108]
push eax
call fcn.004816f0
sub ebx, eax
pop ecx
push ebx
lea eax, [ebp - 0x108]
push edi
push eax
call fcn.00481780
lea eax, [ebp - 0x108]
push 0x4b31c0
push eax
call fcn.004814b7
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x402d8c
call fcn.0042fc51
push eax
push str.Unable_to_create_AUTOEXEC.BAT:__s._n
call fcn.0042ed57
pop ecx
xor eax, eax
jmp 0x403126
push str._echo_off_n
push esi
call fcn.00401029
push str.set_PATH.__LOCALE_n
push esi
call fcn.00401029
add esp, 0x10
mov ecx, 0x1b5
push ecx
call fcn.00401fa6
push eax
mov ecx, 0x4b2550
call fcn.00401f4e
push eax
push str.echo_Using__s_keyboard_with__s_codepage___d__n
push esi
call fcn.00401029
push esi
call fcn.00481623
push str.Successfully_wrote_AUTOEXEC.BAT_n
call fcn.0042ed57
xor eax, eax
add esp, 0x1c
inc eax
jmp 0x403127
mov esi, 0x104
test ebx, ebx
je 0x402e04
push ebx
call fcn.004816f0
inc eax
pop ecx
cmp eax, esi
jae 0x402e00
push ebx
call fcn.004816f0
pop ecx
jmp 0x402e06
mov eax, esi
jmp 0x402e07
xor eax, eax
inc eax
push eax
lea eax, [ebp - 0x108]
push ebx
push eax
call fcn.00476fc0
add esp, 0xc
test ebx, ebx
je 0x402e31
push ebx
call fcn.004816f0
inc eax
pop ecx
cmp eax, esi
jae 0x402e36
push ebx
call fcn.004816f0
pop ecx
jmp 0x402e33
xor eax, eax
lea esi, [eax + 1]
push str.CONFIG.SYS
mov byte [ebp + esi - 0x109], 0
call fcn.004816f0
mov esi, eax
lea eax, [ebp - 0x108]
push eax
call fcn.004816f0
pop ecx
pop ecx
mov edi, 0x103
mov ecx, edi
sub ecx, eax
lea eax, [esi + 1]
cmp eax, ecx
jae 0x402e77
push str.CONFIG.SYS
call fcn.004816f0
lea edi, [eax + 1]
jmp 0x402e85
lea eax, [ebp - 0x108]
push eax
call fcn.004816f0
sub edi, eax
pop ecx
push edi
lea eax, [ebp - 0x108]
push str.CONFIG.SYS
push eax
call fcn.00481780
lea eax, [ebp - 0x108]
push 0x4b31c0
push eax
call fcn.004814b7
mov esi, eax
add esp, 0x14
mov dword [ebp - 0x120], esi
test esi, esi
jne 0x402ec8
call fcn.0042fc51
push eax
push str.Unable_to_create_CONFIG.SYS:__s._n
jmp 0x402d7f
cmp dword [ebp - 0x10c], 0
je 0x402ee5
push str._MENUCOLOR7_0_nMENU_nMENU___FreeDOS_Language_Selection_Menu_n
push esi
call fcn.00401029
pop ecx
pop ecx
mov eax, 0x4b32d0
jmp 0x402eea
mov eax, str._MENU__n
push eax
push esi
call fcn.00401029
push str.MENUDEFAULT1_5_n
push esi
call fcn.00401029
mov eax, dword [ebp - 0x10c]
add esp, 0x10
test eax, eax
mov esi, str.MENU
mov eax, dword [ebp - 0x110]
push 0x2c
pop edi
push 0x29
pop ecx
cmovne edi, ecx
mov ecx, str.MENUITEM
cmove esi, ecx
mov ecx, eax
push eax
call fcn.00401fa6
mov ecx, dword [ebp - 0x11c]
push eax
call fcn.00401f4e
push eax
push edi
push esi
push str._s1_c_Use__s_keyboard_with__s_codepage___d__n
push dword [ebp - 0x120]
call fcn.00401029
add esp, 0x1c
mov ecx, 0x1b5
push ecx
call fcn.00401fa6
push eax
mov ecx, 0x4b2550
call fcn.00401f4e
push eax
push edi
push esi
mov esi, dword [ebp - 0x120]
push str._s2_c_Use__s_keyboard_with__s_codepage___d__n
push esi
call fcn.00401029
cmp dword [ebp - 0x10c], 0
mov ecx, str._1__ndevicelocaledisplay.sys_con_ega__1__n_2__n
mov eax, str.MENU_n12__n
cmove eax, ecx
push eax
push 0x4b04c8
push esi
call fcn.00401029
push esi
call fcn.00481623
push str.Successfully_wrote_CONFIG.SYS_n
call fcn.0042ed57
add esp, 0x30
test ebx, ebx
je 0x402fcc
push ebx
call fcn.004816f0
inc eax
mov esi, 0x104
pop ecx
cmp eax, esi
jae 0x402fc8
push ebx
call fcn.004816f0
pop ecx
jmp 0x402fd3
mov eax, esi
jmp 0x402fd4
xor eax, eax
mov esi, 0x104
inc eax
push eax
lea eax, [ebp - 0x108]
push ebx
push eax
call fcn.00476fc0
add esp, 0xc
test ebx, ebx
je 0x402ffe
push ebx
call fcn.004816f0
inc eax
pop ecx
cmp eax, esi
jae 0x403003
push ebx
call fcn.004816f0
pop ecx
jmp 0x403000
xor eax, eax
lea esi, [eax + 1]
mov edi, str.AUTOEXEC.BAT
mov byte [ebp + esi - 0x109], 0
push edi
call fcn.004816f0
mov esi, eax
lea eax, [ebp - 0x108]
push eax
call fcn.004816f0
pop ecx
pop ecx
mov ebx, 0x103
mov ecx, ebx
sub ecx, eax
lea eax, [esi + 1]
cmp eax, ecx
jae 0x403041
push edi
call fcn.004816f0
lea ebx, [eax + 1]
jmp 0x40304f
lea eax, [ebp - 0x108]
push eax
call fcn.004816f0
sub ebx, eax
pop ecx
push ebx
lea eax, [ebp - 0x108]
push edi
push eax
call fcn.00481780
lea eax, [ebp - 0x108]
push 0x4b31c0
push eax
call fcn.004814b7
mov edi, eax
add esp, 0x14
test edi, edi
je 0x402d74
push str._echo_off_n
push edi
call fcn.00401029
push str.set_PATH.__LOCALE_n
push edi
call fcn.00401029
add esp, 0x10
cmp dword [ebp - 0x10c], 0
je 0x4030ab
push str.display_con_ega__1__n
push edi
call fcn.00401029
pop ecx
pop ecx
push str.GOTO___CONFIG___n
push edi
call fcn.00401029
push 0x4b3420
push edi
call fcn.00401029
push dword [ebp - 0x118]
mov esi, dword [ebp - 0x110]
push esi
push str.mode_con_codepage_prepare___d__locale_s____NUL_n
push edi
call fcn.00401029
push esi
push str.mode_con_codepage_select_d___NUL_n
push edi
call fcn.00401029
mov eax, dword [ebp - 0x114]
push dword [eax*8 + 0x4da454]
push dword [ebp - 0x11c]
push str.keyb__s__locale_s_n
push edi
call fcn.00401029
push 0x4b3494
push edi
call fcn.00401029
add esp, 0x44
push edi
call fcn.00481623
mov dword [esp], str.Successfully_wrote_AUTOEXEC.BAT_n
call fcn.0042ed57
xor eax, eax
inc eax
pop ecx
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00475c80
leave
ret