Function at 0x409580
Capabilities:
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
push ebx
xor ebx, ebx
cmp byte [0x43b9b9], bl
push esi
push edi
jne 0x4095ca
mov esi, dword [0x43b8f0]
mov al, byte [esi]
add al, 0x5f
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042f700
mov ecx, esp
push 0x80
mov edx, esi
call fcn.0042b9bf
push eax
push 0x43b8f4
call sub.MSVCRT.dll_memcpy
add esp, 0xc
mov byte [0x43b9b9], 1
movsx eax, word [0x43bbde]
movsx ecx, byte [0x43bbcc]
mov esi, dword [ebp + 8]
or eax, ecx
mov dword [0x43bbf4], eax
mov byte [0x43bbd1], 1
mov word [0x43bbd6], bx
cmp byte [esi + 3], 0x3d
jne 0x4097b2
movsx eax, byte [0x43bbcb]
push eax
push eax
call fcn.004117d2
add byte [0x43bbca], al
mov eax, dword [0x43bbe8]
or eax, 0x3ea5ffff
pop ecx
add dword [0x43bbf0], eax
cmp byte [esi + 2], 0x3d
pop ecx
jne 0x409701
mov al, byte [0x43bbcc]
movsx ecx, al
or ecx, 0x351dffff
add dword [0x43bbf0], ecx
inc dword [0x43bbfc]
movsx ecx, byte [esi]
movzx edi, byte [ecx + 0x43b8f4]
movsx ecx, byte [esi + 1]
shl edi, 6
movzx ecx, byte [ecx + 0x43b8f4]
or edi, ecx
mov ecx, dword [0x43bbec]
imul ecx, ecx, 0x685ffff
shl edi, 6
cmp byte [0x43bbc9], bl
mov dword [0x43bc04], ecx
je 0x409684
cmp al, bl
je 0x409684
push 1
pop eax
jmp 0x409686
xor eax, eax
add dword [0x43bbe8], eax
push 0x30abffff
movsx eax, byte [0x43bbca]
push eax
call fcn.004117d2
shl edi, 0xe
push 0xcc69ffff
push 0x7a01ffff
mov dword [0x43bc08], eax
mov dword [ebp + 8], edi
call fcn.00411820
mov dword [0x43bbf8], eax
push 0xa737ffff
movsx eax, word [0x43bbe0]
push eax
call fcn.004118e8
add byte [0x43bbcf], al
push dword [0x43bbf0]
movsx eax, word [0x43bbe0]
push eax
call fcn.004117aa
mov cl, byte [ebp + 0xb]
add esp, 0x20
add word [0x43bbdc], ax
mov eax, dword [ebp + 0xc]
push 1
mov byte [eax], cl
jmp 0x409947
or word [0x43bbde], 0xffff
movsx eax, byte [esi]
movzx edi, byte [eax + 0x43b8f4]
movsx eax, byte [esi + 1]
shl edi, 6
movzx eax, byte [eax + 0x43b8f4]
or edi, eax
movsx eax, byte [0x43bbcd]
push eax
shl edi, 6
call dword [sym.imp.KERNEL32.dll_IsValidCodePage]
inc dword [0x43bc04]
mov byte [0x43bbcb], al
movsx eax, byte [esi + 2]
movzx eax, byte [eax + 0x43b8f4]
or eax, edi
shl eax, 0xe
mov dword [ebp + 8], eax
movsx eax, byte [0x43bbd1]
push eax
push 0x4c75ffff
call fcn.00411762
add word [0x43bbe4], ax
movsx eax, byte [0x43bbca]
push eax
movsx eax, word [0x43bbdc]
push eax
call fcn.004118a0
mov ecx, dword [ebp + 0xc]
mov word [0x43bbdc], ax
mov ax, word [ebp + 0xa]
push 0x5263ffff
push 0x4c19ffff
mov byte [ecx], ah
mov byte [ecx + 1], al
call fcn.004118e8
add esp, 0x18
add word [0x43bbda], ax
push 2
jmp 0x409947
movsx eax, word [0x43bbe2]
push eax
push 0x26c3ffff
call fcn.0041172e
mov word [0x43bbd6], ax
push 0xc38fffff
movsx eax, byte [0x43bbcd]
push eax
call fcn.004117d2
add word [0x43bbd4], ax
push 0x3d41ffff
push 0x53dbffff
call fcn.004117aa
mov dword [0x43bc0c], eax
push 0xe9c1ffff
movsx eax, byte [esi]
push dword [0x43bbf0]
movzx edi, byte [eax + 0x43b8f4]
movsx eax, byte [esi + 1]
shl edi, 6
movzx eax, byte [eax + 0x43b8f4]
or edi, eax
shl edi, 6
call fcn.0041172e
add word [0x43bbdc], ax
dec byte [0x43bbc8]
movsx eax, byte [esi + 2]
push 0xd42fffff
push 0x8dfbffff
movzx ebx, byte [eax + 0x43b8f4]
movsx eax, byte [esi + 3]
or ebx, edi
movzx eax, byte [eax + 0x43b8f4]
shl ebx, 6
or ebx, eax
shl ebx, 6
call fcn.00411820
mov byte [0x43bbcf], al
movsx eax, byte [0x43bbd1]
shl ebx, 2
push eax
push 0xaa3fffff
mov dword [ebp + 8], ebx
call fcn.0041172e
add dword [0x43bc00], eax
movsx eax, byte [0x43bbca]
push eax
push 0x19e1ffff
call fcn.0041172e
add dword [0x43bc0c], eax
add esp, 0x38
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
mov esi, dword [ebp + 0xc]
push 0xddf1ffff
movzx eax, ax
mov dword [0x43bc0c], eax
mov ax, word [ebp + 0xa]
mov byte [esi], ah
mov byte [esi + 1], al
movsx eax, word [0x43bbde]
push eax
call fcn.004117aa
add dword [0x43bbec], eax
push dword [0x43bbf8]
movsx eax, word [0x43bbe4]
sub eax, 0x75180001
mov dword [0x43bbf4], eax
movsx eax, byte [0x43bbcc]
push eax
call fcn.004116ab
push 0x5d17ffff
mov word [0x43bbd6], ax
push 0x117ffff
mov byte [esi + 2], bh
call fcn.00411820
add dword [0x43bc04], eax
push 0xaa51ffff
push 0xc411ffff
call fcn.004118a0
mov word [0x43bbd8], ax
movsx eax, word [0x43bbe2]
push eax
movsx eax, byte [0x43bbcf]
push eax
call fcn.00411762
add esp, 0x28
add dword [0x43bc0c], eax
push 3
pop eax
lea esp, [ebp - 0xc]
pop edi
pop esi
pop ebx
pop ebp
ret 8