Function at 0x41da54
Capabilities:
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
push ecx
movsx eax, byte [0x438bec]
movsx ecx, byte [0x438bed]
push ebx
push esi
push edi
mov edx, eax
push eax
sub edx, ecx
push dword [0x438c18]
mov dword [0x438c14], edx
call fcn.004100f9
mov esi, dword [ebp + 0x18]
add dword [0x438c18], eax
xor edi, edi
pop ecx
mov eax, dword [esi]
pop ecx
cmp eax, edi
je 0x41da9a
push eax
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
movsx eax, byte [0x438bec]
push 1
pop ebx
push eax
mov dword [0x438c28], ebx
movsx eax, word [0x438bf4]
push eax
call fcn.00410130
cmp dword [ebp + 0x20], edi
mov word [0x438bf4], ax
movsx ax, byte [0x438bea]
pop ecx
mov word [0x438bf6], ax
pop ecx
jne 0x41dbb2
mov ax, word [0x438c10]
mov edi, dword [ebp + 0x14]
add word [0x438bfa], ax
mov eax, dword [0x438c28]
inc byte [0x438be8]
and eax, 0xff0bffff
push edi
mov dword [0x438c2c], eax
call dword [sym.imp.MSVCRT.dll_malloc]
mov dword [esi], eax
mov al, byte [0x438c1c]
push dword [0x438c10]
or al, byte [0x438bf0]
add byte [0x438bee], al
push 0x62cbffff
call fcn.004100c8
add esp, 0xc
mov byte [0x438bee], al
call dword [sym.imp.USER32.dll_GetActiveWindow]
mov dword [0x438c14], eax
cmp dword [esi], 0
je 0x41e1b4
mov eax, dword [ebp + 0x1c]
mov word [0x438bf4], bx
mov dword [eax], edi
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
mov dword [0x438c0c], eax
mov ax, word [0x438c10]
imul ax, word [0x438bfc]
mov word [0x438bf4], ax
push edi
movsx eax, word [0x438bfa]
imul eax, eax, 0x8391ffff
push dword [ebp + 8]
mov dword [0x438c20], eax
push dword [esi]
call sub.MSVCRT.dll_memcpy
movsx eax, byte [0x438bf0]
push 0x2155ffff
push eax
mov word [0x438c04], bx
call fcn.004100f9
add esp, 0x14
add word [0x438c00], ax
jmp 0x41dd88
movsx eax, byte [0x438bf1]
push eax
push 0x72bbffff
call fcn.00410285
add dword [0x438c18], eax
pop ecx
movsx ax, byte [0x438beb]
and ax, word [0x438bf4]
pop ecx
add word [0x438bfc], ax
cmp dword [ebp + 8], edi
jne 0x41dd8f
cmp word [0x438bf6], di
jne 0x41dc01
cmp byte [0x438bf0], 0
jne 0x41dc01
xor eax, eax
jmp 0x41dc03
mov eax, ebx
add dword [0x438c1c], eax
test byte [ebp + 0x20], 1
je 0x41dd14
mov eax, dword [0x438c14]
mov ecx, dword [0x438c28]
push dword [ebp + 0xc]
add ecx, eax
add word [0x438bf8], cx
mov word [0x438bfe], bx
call sub.MSVCRT.dll_strlen
push dword [ebp + 0x10]
mov edi, eax
call sub.MSVCRT.dll_strlen
lea edi, [edi + eax + 3]
push 0x2f13ffff
movsx eax, byte [0x438bef]
push eax
call fcn.00410167
add byte [0x438bea], al
push 0x86ffffff
push 0x3979ffff
call fcn.004100c8
push 0xd111ffff
push 0x59ebffff
mov word [0x438bf2], ax
call fcn.0041020b
push edi
mov dword [0x438c1c], eax
call dword [sym.imp.MSVCRT.dll_malloc]
push dword [ebp + 0xc]
mov dword [esi], eax
push eax
call sub.MSVCRT.dll_strcpy
push dword [ebp + 0x10]
push dword [esi]
call sub.MSVCRT.dll_strcat
mov edi, dword [0x432460]
add esp, 0x34
mov al, byte [edi]
add al, 0x66
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c950
mov ecx, esp
mov edx, edi
call fcn.00429cdb
push eax
push dword [esi]
call sub.MSVCRT.dll_strcat
push 0xa43fffff
push 0x2003ffff
call fcn.00410092
mov cl, byte [0x438bf2]
mov word [0x438c04], ax
mov ax, word [0x438bf8]
push 0x156bffff
and cl, al
add byte [0x438be9], cl
movsx eax, ax
push eax
call fcn.004100c8
mov word [0x438bf2], ax
mov eax, dword [ebp + 0x1c]
add esp, 0x18
or dword [eax], 0xffffffff
jmp 0x41dd88
push dword [0x438c20]
push dword [0x438c08]
call fcn.00410246
push dword [0x438c18]
add word [0x438bfe], ax
push 0xf88fffff
call fcn.00410092
mov byte [0x438beb], al
mov eax, dword [ebp + 0x1c]
mov dword [esi], edi
mov byte [0x438bee], 1
or dword [eax], 0xffffffff
xor eax, eax
cmp dword [0x438c18], edi
push 0x77b1ffff
setne al
mov dword [0x438c14], eax
movsx eax, word [0x438c00]
push eax
call fcn.00410246
mov word [0x438bf4], ax
or al, 0xff
add esp, 0x18
sub al, byte [0x438bf0]
mov byte [0x438bed], al
mov eax, ebx
jmp 0x41e241
mov eax, dword [ebp + 0x14]
cmp eax, 0xffffffff
jne 0x41dda0
push dword [ebp + 8]
call sub.MSVCRT.dll_strlen
pop ecx
mov dword [ebp + 0x18], eax
push 0x83c1ffff
movsx eax, byte [0x438be8]
push eax
call fcn.004100c8
mov word [0x438bf8], ax
movsx eax, word [0x438bfe]
push eax
push 0x61cdffff
call fcn.004100f9
add byte [0x438bf1], al
mov byte [0x438bec], 1
movsx eax, word [0x438bf2]
push eax
push 0xbcf3ffff
call fcn.00410246
add word [0x438c02], ax
mov eax, dword [ebp + 0x20]
add esp, 0x18
and eax, 8
mov dword [ebp - 4], eax
je 0x41de09
mov eax, dword [ebp + 0x18]
lea ebx, [eax + 1]
jmp 0x41de26
push dword [ebp + 0xc]
call sub.MSVCRT.dll_strlen
push dword [ebp + 0x10]
mov ebx, eax
call sub.MSVCRT.dll_strlen
pop ecx
pop ecx
mov ecx, dword [ebp + 0x18]
add ecx, ebx
lea ebx, [eax + ecx + 3]
mov al, byte [0x438c08]
push 0xce59ffff
imul byte [0x438c28]
add byte [0x438bec], al
movsx eax, byte [0x438be8]
push eax
call fcn.00410130
add byte [0x438beb], al
push ebx
mov byte [0x438bec], 1
call dword [sym.imp.MSVCRT.dll_malloc]
add esp, 0xc
mov dword [esi], eax
test eax, eax
je 0x41e1b4
call dword [sym.imp.USER32.dll_GetCapture]
add word [0x438bfe], ax
movsx eax, word [0x438bfc]
push eax
push 0xd051ffff
call fcn.00410285
mov dword [0x438c14], eax
mov eax, dword [esi]
and byte [ebp + 0x17], 0
and byte [eax], 0
push dword [0x438c08]
movsx ax, byte [0x438bef]
sub eax, dword [0x438c18]
add word [0x438c02], ax
movsx eax, word [0x438c02]
push eax
call fcn.0041003a
add dword [0x438c24], eax
movsx eax, word [0x438c02]
push eax
push 0xb171ffff
call fcn.00410246
add esp, 0x18
mov byte [0x438beb], al
test byte [ebp + 0x20], 0xe
je 0x41e14a
movsx ax, byte [0x438bef]
movsx cx, byte [0x438bf1]
sub dword [0x438c08], 0x641a0002
add eax, ecx
add word [0x438bf6], ax
call dword [sym.imp.USER32.dll_GetCursor]
cmp dword [ebp + 0x18], 0
mov dword [0x438c1c], eax
jbe 0x41e14a
push dword [0x438c18]
push 0x4bafffff
call fcn.0041020b
push dword [ebp + 0xc]
add dword [0x438c14], eax
call sub.MSVCRT.dll_strlen
mov ebx, dword [ebp + 8]
push eax
push dword [ebp + 0xc]
lea eax, [edi + ebx]
push eax
call dword [sym.imp.MSVCRT.dll__strnicmp]
add esp, 0x18
test eax, eax
je 0x41dfe9
push 0xb4a9ffff
push 0x7ffff
call fcn.0041020b
mov dword [0x438c14], eax
push 0x963bffff
movsx eax, word [0x438c02]
push eax
call fcn.004100c8
mov ecx, dword [ebp + 0x18]
add esp, 0x10
add word [0x438bfa], ax
cmp edi, ecx
jae 0x41dfa0
mov al, byte [edi + ebx]
cmp al, 0xa
je 0x41dfa0
cmp al, 0xd
je 0x41dfa0
inc edi
jmp 0x41df8e
xor eax, eax
cmp word [0x438bfc], ax
jne 0x41dfb3
cmp byte [0x438be9], al
je 0x41dfb6
push 1
pop eax
add word [0x438bf4], ax
cmp edi, ecx
mov byte [0x438bef], 1
jae 0x41e14d
mov al, byte [edi + ebx]
cmp al, 0xa
je 0x41dfd7
cmp al, 0xd
jne 0x41dfdc
inc edi
cmp edi, ecx
jb 0x41dfcc
cmp edi, ecx
jb 0x41df21
jmp 0x41e14d
push edi
push ebx
push dword [esi]
call dword [sym.imp.MSVCRT.dll_strncpy]
mov eax, dword [esi]
push 0x8811ffff
and byte [eax + edi], 0
push dword [0x438c28]
call fcn.00410285
push dword [ebp + 0xc]
add byte [0x438bf0], al
call sub.MSVCRT.dll_strlen
or byte [0x438bed], 0xff
add edi, eax
movsx eax, word [0x438bf2]
push eax
push 0x6163ffff
mov byte [0x438beb], 1
call fcn.004100f9
add byte [0x438bef], al
add esp, 0x20
test byte [ebp + 0x20], 0xa
je 0x41e0c0
test byte [ebp + 0x20], 2
je 0x41e065
push dword [ebp + 0xc]
push dword [esi]
call sub.MSVCRT.dll_strcat
push dword [ebp + 0x10]
push dword [esi]
call sub.MSVCRT.dll_strcat
add esp, 0x10
push 0x79f5ffff
push 0x2bdfffff
call fcn.00410092
add dword [0x438c18], eax
mov eax, dword [0x438c10]
pop ecx
inc word [0x438bf6]
pop ecx
mov ecx, dword [0x438c08]
lea eax, [eax + ecx + 0x3ad9ffff]
mov dword [0x438c10], eax
cmp edi, dword [ebp + 0x18]
jae 0x41e0ad
mov al, byte [edi + ebx]
cmp al, 0xa
je 0x41e0ad
cmp al, 0xd
je 0x41e0ad
inc edi
jmp 0x41e09a
xor eax, eax
cmp dword [0x438c24], eax
setne al
add byte [0x438bed], al
jmp 0x41e0f4
test byte [ebp + 0x20], 4
je 0x41e0f4
push dword [ebp + 0x10]
push dword [esi]
call sub.MSVCRT.dll_strcat
push dword [0x438c10]
push 0x4cf5ffff
call fcn.0041003a
add esp, 0x10
mov dword [0x438c24], eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
mov word [0x438bf2], ax
push 0xfca9ffff
push 0x6c9dffff
call fcn.0041003a
add dword [0x438c28], eax
push 0x5ac7ffff
movsx eax, byte [0x438be9]
push eax
call fcn.004100c8
mov byte [0x438bec], al
push 0xaaebffff
movsx eax, byte [0x438bed]
push eax
call fcn.004101be
add edi, ebx
mov byte [0x438be8], al
push edi
push dword [esi]
call sub.MSVCRT.dll_strcat
add esp, 0x20
mov byte [ebp + 0x17], 1
jmp 0x41e14d
mov ebx, dword [ebp + 8]
mov al, byte [0x438c00]
and al, byte [0x438bee]
add byte [0x438bed], al
cmp dword [ebp - 4], 0
je 0x41e1bb
cmp byte [ebp + 0x17], 0
jne 0x41e1bb
push dword [esi]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
call dword [sym.imp.USER32.dll_GetForegroundWindow]
add byte [0x438beb], al
and dword [esi], 0
mov al, byte [0x438c2c]
push 0xffffffffffffffff
or al, byte [0x438bf1]
add byte [0x438bea], al
call dword [sym.imp.USER32.dll_IsCharUpperA]
mov ecx, dword [0x438c10]
mov word [0x438c04], ax
mov eax, dword [0x438c14]
add ecx, eax
mov dword [0x438c0c], ecx
xor eax, eax
jmp 0x41e241
push dword [0x438c08]
push 0x5033ffff
call fcn.004100f9
test byte [ebp + 0x20], 1
pop ecx
mov byte [0x438bf0], al
pop ecx
je 0x41e228
cmp byte [ebp + 0x17], 0
jne 0x41e228
push dword [ebp + 0xc]
push dword [esi]
call sub.MSVCRT.dll_strcpy
push dword [ebp + 0x10]
push dword [esi]
call sub.MSVCRT.dll_strcat
mov edi, dword [0x432460]
add esp, 0x10
mov al, byte [edi]
add al, 0x66
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c950
mov ecx, esp
mov edx, edi
call fcn.00429cdb
push eax
push dword [esi]
call sub.MSVCRT.dll_strcat
push ebx
push dword [esi]
call sub.MSVCRT.dll_strcat
add esp, 0x10
mov al, byte [0x438bea]
push 1
sub al, byte [0x438c02]
mov byte [0x438bec], al
mov eax, dword [ebp + 0x1c]
or dword [eax], 0xffffffff
pop eax
lea esp, [ebp - 0x10]
pop edi
pop esi
pop ebx
leave
ret