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

Disassembly:
sub esp, 0x428
mov eax, dword [0x4513e0]
xor eax, esp
mov dword [esp + 0x424], eax
mov eax, dword [esp + 0x42c]
test eax, eax
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x1c], 0
mov byte [esp + 0x16], 0
mov byte [esp + 0x17], 0
jne 0x420012
mov esi, dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
call esi
movzx eax, ax
push eax
push str.User_default_LangID:_0x_X
push 0x4524d8
xor eax, eax
call fcn.0041eee0
mov edi, dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
add esp, 0xc
call edi
movzx ecx, ax
push ecx
push str.User_default_UI_language:_0x_X
push 0x4524d8
xor eax, eax
call fcn.0041eee0
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetVersion]
movzx eax, ax
cmp ax, 0x105
je 0x42000e
cmp ax, 0x205
je 0x42000e
call edi
jmp 0x420022
call esi
jmp 0x420022
push 0x10
lea edx, [esp + 0x20]
push edx
push eax
call fcn.0042aa78
add esp, 0xc
mov esi, dword [0x453c3c]
cmp esi, dword [0x453c40]
movzx ebx, ax
mov dword [esp + 0x18], ebx
jbe 0x42003c
call fcn.00429e93
mov eax, 0x453c38
mov ebp, eax
jmp 0x420050
mov edi, dword [0x453c40]
cmp dword [0x453c3c], edi
jbe 0x420063
call fcn.00429e93
test ebp, ebp
je 0x42006f
cmp ebp, 0x453c38
je 0x420074
call fcn.00429e93
cmp esi, edi
je 0x4200e1
cmp byte [esp + 0x16], 0
jne 0x420421
test ebp, ebp
jne 0x42008c
call fcn.00429e93
cmp esi, dword [ebp + 8]
jb 0x420096
call fcn.00429e93
cmp word [esi + 0x1c], bx
jne 0x4200cf
cmp esi, dword [ebp + 8]
jb 0x4200a6
call fcn.00429e93
mov ax, word [esi + 0x1c]
mov word [0x453c48], ax
cmp esi, dword [ebp + 8]
jb 0x4200ba
call fcn.00429e93
push 0xffffffffffffffff
push 0
mov eax, esi
mov ecx, 0x453c54
call fcn.00403500
mov byte [esp + 0x16], 1
cmp esi, dword [ebp + 8]
jb 0x4200d9
call fcn.00429e93
add esi, 0x20
jmp 0x420050
cmp byte [esp + 0x16], 0
jne 0x420421
cmp bx, 0x403
je 0x420105
cmp bx, 0x42d
je 0x420105
cmp bx, 0x456
jne 0x4201cd
mov esi, dword [0x453c3c]
cmp esi, dword [0x453c40]
mov ebx, 0xc0a
mov dword [esp + 0x18], ebx
jbe 0x420121
call fcn.00429e93
mov eax, 0x453c38
mov edi, eax
jmp 0x420130
mov ebp, dword [0x453c40]
cmp dword [0x453c3c], ebp
jbe 0x420143
call fcn.00429e93
test edi, edi
je 0x42014f
cmp edi, 0x453c38
je 0x420154
call fcn.00429e93
cmp esi, ebp
je 0x4201c2
cmp byte [esp + 0x16], 0
jne 0x420421
test edi, edi
jne 0x42016c
call fcn.00429e93
cmp esi, dword [edi + 8]
jb 0x420176
call fcn.00429e93
cmp word [esi + 0x1c], bx
jne 0x4201b0
cmp esi, dword [edi + 8]
jb 0x420186
call fcn.00429e93
mov cx, word [esi + 0x1c]
mov word [0x453c48], cx
cmp esi, dword [edi + 8]
jb 0x42019b
call fcn.00429e93
push 0xffffffffffffffff
push 0
mov eax, esi
mov ecx, 0x453c54
call fcn.00403500
mov byte [esp + 0x16], 1
cmp esi, dword [edi + 8]
jb 0x4201ba
call fcn.00429e93
add esi, 0x20
jmp 0x420130
cmp byte [esp + 0x16], 0
jne 0x420421
mov esi, dword [0x453c3c]
cmp esi, dword [0x453c40]
jbe 0x4201e0
call fcn.00429e93
mov ebx, dword [sym.imp.KERNEL32.dll_ConvertDefaultLocale]
mov ebp, 0x453c38
jmp 0x4201f0
mov edi, dword [0x453c40]
cmp dword [0x453c3c], edi
jbe 0x420203
call fcn.00429e93
test ebp, ebp
je 0x42020f
cmp ebp, 0x453c38
je 0x420214
call fcn.00429e93
cmp esi, edi
je 0x4202f2
cmp byte [esp + 0x16], 0
jne 0x420421
test ebp, ebp
jne 0x420230
call fcn.00429e93
cmp esi, dword [ebp + 8]
jb 0x42023a
call fcn.00429e93
movzx edi, word [esp + 0x18]
mov edx, edi
and edx, 0x3ff
push edx
call ebx
movzx ecx, word [esi + 0x1c]
cmp ecx, eax
jne 0x4202e0
push 0x104
lea edx, [esp + 0x22c]
push edx
push 0x1004
push edi
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
cmp esi, dword [ebp + 8]
jb 0x420279
call fcn.00429e93
movzx ecx, word [esi + 0x1c]
push 0x104
lea eax, [esp + 0x24]
push eax
push 0x1004
push ecx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x22c]
push eax
call fcn.0042a42f
add esp, 8
test eax, eax
jne 0x4202e0
cmp esi, dword [ebp + 8]
jb 0x4202b6
call fcn.00429e93
mov cx, word [esi + 0x1c]
mov word [0x453c48], cx
cmp esi, dword [ebp + 8]
jb 0x4202cb
call fcn.00429e93
push 0xffffffffffffffff
push 0
mov eax, esi
mov ecx, 0x453c54
call fcn.00403500
mov byte [esp + 0x16], 1
cmp esi, dword [ebp + 8]
jb 0x4202ea
call fcn.00429e93
add esi, 0x20
jmp 0x4201f0
mov bl, byte [esp + 0x16]
test bl, bl
jne 0x420421
mov esi, dword [0x453c3c]
cmp esi, dword [0x453c40]
jbe 0x420311
call fcn.00429e93
mov eax, 0x453c38
mov edi, eax
jmp 0x420320
mov ebp, dword [0x453c40]
cmp dword [0x453c3c], ebp
jbe 0x420333
call fcn.00429e93
test edi, edi
je 0x42033f
cmp edi, 0x453c38
je 0x420344
call fcn.00429e93
cmp esi, ebp
je 0x42041d
test bl, bl
jne 0x420421
test edi, edi
jne 0x42035d
call fcn.00429e93
cmp esi, dword [edi + 8]
jb 0x420367
call fcn.00429e93
mov dx, word [esi + 0x1c]
xor dx, word [esp + 0x18]
test dx, 0x3ff
jne 0x42040b
movzx ecx, word [esp + 0x18]
mov ebp, dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
push 0x104
lea eax, [esp + 0x22c]
push eax
push 0x1004
push ecx
call ebp
cmp esi, dword [edi + 8]
jb 0x4203a5
call fcn.00429e93
movzx eax, word [esi + 0x1c]
push 0x104
lea edx, [esp + 0x24]
push edx
push 0x1004
push eax
call ebp
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x22c]
push edx
call fcn.0042a42f
add esp, 8
test eax, eax
jne 0x42040b
cmp esi, dword [edi + 8]
jb 0x4203de
call fcn.00429e93
mov ax, word [esi + 0x1c]
mov word [0x453c48], ax
cmp esi, dword [edi + 8]
jb 0x4203f2
call fcn.00429e93
push 0xffffffffffffffff
push 0
mov eax, esi
mov ecx, 0x453c54
call fcn.00403500
mov byte [esp + 0x16], 1
mov bl, byte [esp + 0x16]
cmp esi, dword [edi + 8]
jb 0x420415
call fcn.00429e93
add esi, 0x20
jmp 0x420320
test bl, bl
je 0x420447
cmp dword [0x453c6c], 8
mov eax, dword [0x453c58]
jae 0x420434
mov eax, 0x453c58
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [0x453c70], eax
mov bl, 1
jmp 0x42050f
mov esi, dword [0x453c3c]
cmp esi, dword [0x453c40]
mov word [0x453c48], 0x409
jbe 0x420463
call fcn.00429e93
mov ebx, dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov eax, 0x453c38
mov ebp, eax
mov edi, dword [0x453c40]
cmp dword [0x453c3c], edi
jbe 0x420483
call fcn.00429e93
test ebp, ebp
je 0x42048f
cmp ebp, 0x453c38
je 0x420494
call fcn.00429e93
cmp esi, edi
je 0x42050b
cmp byte [esp + 0x17], 0
jne 0x42050b
test ebp, ebp
jne 0x4204a8
call fcn.00429e93
cmp esi, dword [ebp + 8]
jb 0x4204b2
call fcn.00429e93
mov cx, word [0x453c48]
cmp word [esi + 0x1c], cx
jne 0x4204f9
cmp esi, dword [ebp + 8]
jb 0x4204c9
call fcn.00429e93
push 0xffffffffffffffff
push 0
mov eax, esi
mov ecx, 0x453c54
call fcn.00403500
cmp dword [0x453c6c], 8
mov eax, dword [0x453c58]
jae 0x4204ec
mov eax, 0x453c58
push eax
call ebx
mov dword [0x453c70], eax
mov byte [esp + 0x17], 1
cmp esi, dword [ebp + 8]
jb 0x420503
call fcn.00429e93
add esi, 0x20
jmp 0x420470
mov bl, byte [esp + 0x17]
movzx edx, word [0x453c48]
push 4
push 0x453c4a
push 3
push edx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
mov ecx, dword [esp + 0x434]
pop edi
pop esi
pop ebp
mov al, bl
pop ebx
xor ecx, esp
call fcn.004289ca
add esp, 0x428
ret 4