Function at 0x4151bc
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x42fd38
call fcn.0042e9c0
sub esp, 0xc
push ebx
push esi
mov ebx, 0x4390f8
push edi
push ebx
push 0x3d
mov dword [ebp - 0x18], ebx
call fcn.0040ebd2
pop ecx
call eax
movsx eax, byte [0x438c21]
xor edi, edi
push eax
push 0x748fffff
mov dword [ebp - 4], edi
call fcn.0040aa18
mov dword [0x438c5c], eax
mov al, byte [0x438c18]
shl al, 1
mov byte [0x438c18], al
mov dword [ebp - 0x10], edi
movsx eax, word [0x438c26]
push eax
push 0x206bffff
call fcn.0040aa18
mov esi, dword [0x4390d4]
push 0xb59fffff
push 0x59dffff
mov dword [0x438c50], eax
mov byte [0x438c19], 1
call fcn.0040a96f
mov byte [0x438c1e], al
or al, 0xff
sub al, byte [0x438c22]
add esp, 0x18
add byte [0x438c1b], al
mov eax, dword [0x4390d8]
cmp esi, eax
je 0x4109ce
push 0xf53dffff
push dword [0x438c3c]
call fcn.0040a933
add byte [0x438c1d], al
push 0xb021ffff
push 0xbfa9ffff
call fcn.0040aa4f
add word [0x438c30], ax
movsx eax, byte [0x438c21]
push eax
movsx eax, word [0x438c2c]
push eax
call fcn.0040aa83
add dword [0x438c54], eax
mov ecx, dword [esi]
add esp, 0x18
push 0x12
call fcn.004101ff
movsx eax, word [0x438c2a]
push eax
movsx eax, byte [0x438c20]
push eax
call fcn.0040ab0e
pop ecx
mov byte [0x438c18], al
pop ecx
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
add word [0x438c28], ax
mov eax, dword [esi]
cmp dword [eax + 0x28], edi
je 0x410976
movsx eax, byte [0x438c1c]
push 0x3eedffff
push eax
call fcn.0040a96f
add dword [0x438c48], eax
push 0xcf5fffff
push dword [0x438c38]
call fcn.0040a9a5
add dword [0x438c50], eax
add esp, 0x10
cmp dword [ebp - 0x10], edi
jne 0x410949
mov al, byte [0x438c22]
mov cl, byte [0x438c20]
imul cl
cmp byte [0x438c1a], 0
mov byte [0x438c1c], al
je 0x4108cf
test cl, cl
mov dword [0x438c3c], 1
jne 0x4108d5
mov dword [0x438c3c], edi
mov eax, dword [0x438c44]
lea edx, [ebp - 0x10]
and eax, 0x6275ffff
push edx
add dword [0x438c5c], eax
mov eax, dword [esi]
mov eax, dword [eax + 0x28]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x94]
movsx eax, word [0x438c30]
push dword [0x438c3c]
push eax
call fcn.0040a9de
mov byte [0x438c1a], al
pop ecx
movsx eax, word [0x438c2a]
pop ecx
push eax
push 0x56cfffff
push 0x5357ffff
call dword [sym.imp.KERNEL32.dll_MulDiv]
add dword [0x438c48], eax
push 0x826bffff
movsx eax, word [0x438c32]
push eax
call fcn.0040a8f9
add byte [0x438c19], al
pop ecx
pop ecx
call dword [sym.imp.KERNEL32.dll_GetLastError]
add byte [0x438c1c], al
dec byte [0x438c1f]
mov eax, dword [esi]
mov eax, dword [eax + 0x28]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x80]
inc dword [0x438c5c]
dec word [0x438c22]
mov al, byte [0x438c28]
add esi, 4
cmp dword [0x438c40], edi
mov byte [0x438c1c], al
jne 0x41099d
cmp byte [0x438c1b], 0
jne 0x41099d
and byte [0x438c18], 0
jmp 0x4109a4
mov byte [0x438c18], 1
inc byte [0x438c1b]
push 0xbbb9ffff
push dword [0x438c44]
call fcn.0040a8f9
add dword [0x438c50], eax
cmp esi, dword [0x4390d8]
pop ecx
pop ecx
jne 0x4107e5
mov ax, word [0x438c32]
push 0x3e8
add word [0x438c2c], ax
push 0x56
call fcn.0040ebd2
pop ecx
call eax
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov word [0x438c2e], 1
call esi
add word [0x438c32], ax
mov edi, dword [0x4390d4]
movsx eax, byte [0x438c18]
push eax
movsx eax, word [0x438c34]
push eax
call fcn.0040a8f9
inc word [0x438c32]
pop ecx
pop ecx
mov word [0x438c30], ax
call esi
add dword [0x438c3c], eax
cmp edi, dword [0x4390d8]
je 0x410af3
push dword [0x438c40]
xor eax, eax
cmp word [0x438c32], ax
push 0x4a3fffff
setne al
add byte [0x438c1f], al
call fcn.0040aac5
mov byte [0x438c1c], al
mov esi, dword [edi]
pop ecx
test esi, esi
pop ecx
je 0x410a7d
mov ecx, esi
call fcn.00410c3a
push esi
call fcn.0042e920
pop ecx
mov al, byte [0x438c2e]
push 0x38c1ffff
mov byte [0x438c1a], al
mov ax, word [0x438c24]
movsx ecx, ax
add ax, word [0x438c4c]
or ecx, 0xa1cbffff
add dword [0x438c48], ecx
push 0x7d97ffff
mov word [0x438c24], ax
add edi, 4
call fcn.0040a933
mov word [0x438c30], ax
movsx eax, word [0x438c22]
push eax
push dword [0x438c40]
call fcn.0040a8f9
add word [0x438c34], ax
mov al, byte [0x438c22]
add esp, 0x10
add al, byte [0x438c20]
mov byte [0x438c1c], al
jmp 0x410a34
movsx eax, byte [0x438c1f]
push eax
push 0x50d9ffff
call fcn.0040aac5
add word [0x438c32], ax
mov al, byte [0x438c54]
xor esi, esi
dec al
push 0x1849ffff
push 0x2a99ffff
mov dword [0x438c44], 1
mov dword [ebp - 0x14], esi
mov byte [0x438c1c], al
call fcn.0040aa18
add dword [0x438c5c], eax
add esp, 0x10
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 0x10]
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
movsx eax, byte [0x438c1f]
or byte [0x438c1e], 0xff
push eax
push 0x7e67ffff
call fcn.0040ab0e
cmp dword [ebp - 0x14], esi
pop ecx
pop ecx
mov word [0x438c22], ax
je 0x410be6
movsx eax, byte [0x438c21]
push eax
movsx eax, word [0x438c28]
push eax
movsx eax, byte [0x438c20]
push eax
call dword [sym.imp.KERNEL32.dll_MulDiv]
push dword [0x438c54]
add dword [0x438c38], eax
push 0xcb8fffff
call fcn.0040aa83
add byte [0x438c1f], al
pop ecx
movsx eax, byte [0x438c1a]
pop ecx
add eax, 0x6a2c0001
push esi
mov dword [0x438c5c], eax
push dword [ebp - 0x14]
push 0x58
call fcn.0040ebd2
pop ecx
call eax
movsx eax, word [0x438c22]
push eax
push 0x2d57ffff
call fcn.0040ab0e
pop ecx
mov dword [0x438c50], eax
pop ecx
push dword [0x438c5c]
push 0x94d7ffff
call fcn.0040ab0e
add dword [0x438c48], eax
dec byte [0x438c19]
movsx eax, byte [0x438c1f]
push eax
push 0xe3d5ffff
call fcn.0040a9a5
or dword [ebp - 4], 0xffffffff
add esp, 0x10
mov byte [0x438c1d], al
push ebx
push 0x4f
call fcn.0040ebd2
pop ecx
call eax
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret
jmp 0x410741