Function at 0x51e14288
Capabilities:
Identify system language via api

Disassembly:
push ebp
lea ebp, [esp - 0x208]
sub esp, 0x288
mov eax, dword [0x51e8c240]
push ebx
push esi
mov dword [ebp + 0x204], eax
mov eax, dword [ebp + 0x210]
mov esi, dword [eax + 0x10]
mov ebx, dword [eax + 0x54]
push edi
mov edi, dword [eax + 0xc]
xor ecx, ecx
cmp dword [edi + 0xc], ecx
mov dword [ebp - 0x5c], edi
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x60], ecx
jne 0x51e22c2b
mov ecx, dword [ebp + 0x204]
mov eax, dword [ebp - 0x60]
pop edi
pop esi
pop ebx
call fcn.51e03d50
add ebp, 0x208
leave
ret
cmp byte [esi + 0x19], cl
jne 0x51e142c7
cmp byte [esi + 0x9a], cl
je 0x51e142c7
cmp byte [esi + 0x18], cl
jne 0x51e142c7
mov eax, dword [0x51e8b69c]
cmp eax, ecx
jne 0x51e22c84
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
cmp ax, 0x411
je 0x51e22c95
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
cmp ax, 0x404
je 0x51e22c95
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
cmp ax, 0x412
je 0x51e22c95
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
cmp ax, 0x804
jne 0x51e22c9f
jmp 0x51e22c95
cmp dword [eax + 0x53bc], ecx
jne 0x51e22c95
test byte [eax + 0x53b6], 0x3c
je 0x51e22c9f
cmp dword [ebx + 0x2c], 0
jne 0x51e142c7
push dword [edi + 0xc]
call fcn.51e64210
test eax, eax
pop ecx
je 0x51e23104
mov edi, dword [ebx + 8]
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x14]
mov edx, edi
sub edx, eax
add edx, ecx
cmp edx, 0x100
ja 0x51e23104
xor ecx, ecx
mov eax, 0xff
cmp edi, eax
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x48], 1
jae 0x51e22ceb
mov eax, edi
xor edx, edx
cmp edi, ecx
sete dl
mov dword [ebp - 0x68], ecx
cmp edx, ecx
mov dword [ebp - 0x4c], edx
je 0x51e22cff
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebx + 4]
mov edx, dword [ebx]
sub eax, ecx
lea edx, [edx + ecx*2]
mov dword [ebp - 0x20], ecx
add esi, 0x1c
mov dword [ebp - 0x64], eax
push 8
lea eax, [ebp - 0x1c]
pop ecx
lea edi, [ebp + 0x1e4]
mov dword [ebp - 0x6c], esi
mov dword [ebp - 0x34], eax
mov eax, dword [ebx + 0x18]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebx + 0x14]
cmp ecx, eax
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x50], ecx
jg 0x51e22d3c
mov dword [ebp - 0x50], eax
mov eax, dword [ebx + 0xc]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x54], edx
cmp dword [ebp - 0x50], 0
jg 0x51e22d53
test ecx, ecx
jle 0x51e22f6d
lea eax, [ebp + 0x1e2]
cmp dword [ebp - 0x34], eax
jae 0x51e22f6d
cmp dword [ebp - 0x64], 0
jle 0x51e22f6d
test ecx, ecx
mov edi, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x40]
jle 0x51e22e3b
lea eax, [esi + 0x5c]
push eax
lea eax, [ebp - 0x44]
push eax
push dword [ebp - 0x28]
push dword [ebp - 0x20]
push dword [edi + 0xc]
call fcn.51e64299
add esp, 0x14
test eax, eax
je 0x51e22dd2
mov edi, dword [ebp - 0x34]
add dword [ebp - 0x28], 2
lea esi, [ebp - 0x44]
movsw word es:[edi], word [esi]
mov edi, dword [ebp - 0x20]
mov eax, edi
shr eax, 3
lea esi, [ebp + eax + 0x1e4]
mov ecx, edi
and ecx, 7
mov al, 1
shl al, cl
mov dword [ebp - 0x24], 1
mov dword [ebp - 0x2c], edi
or byte [esi], al
inc dword [ebp - 0x30]
dec dword [ebp - 0x3c]
jmp 0x51e22efa
mov ecx, dword [esi + 0x94]
cmp ecx, 0xffffffff
mov dword [ebp - 0x58], ecx
je 0x51e22e3b
cmp dword [ebp - 0x20], ecx
je 0x51e22e3b
mov eax, dword [ebx + 0x1c]
cmp eax, dword [ebx + 0x20]
jne 0x51e22e3b
lea eax, [esi + 0x5c]
push eax
push ecx
push dword [edi + 0xc]
call fcn.51e64110
add esp, 0xc
test eax, eax
jne 0x51e22e3b
lea eax, [esi + 0x5c]
push eax
lea eax, [ebp - 0x44]
push eax
push dword [ebp - 0x28]
push dword [ebp - 0x58]
push dword [edi + 0xc]
call fcn.51e64299
add esp, 0x14
test eax, eax
je 0x51e22e3b
inc dword [esi + 0x94]
and dword [ebp - 0x24], 0
and dword [ebp - 0x48], 0
add dword [ebp - 0x28], 2
dec dword [ebp - 0x3c]
dec dword [ebp - 0x20]
jmp 0x51e22eeb
lea eax, [esi + 0x5c]
push eax
push dword [ebp - 0x20]
push dword [edi + 0xc]
call fcn.51e64110
add esp, 0xc
test eax, eax
je 0x51e22ee5
mov eax, dword [0x51e8b69c]
test eax, eax
jne 0x51e22e90
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
cmp ax, 0x411
je 0x51e22e99
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
cmp ax, 0x404
je 0x51e22e99
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
cmp ax, 0x412
je 0x51e22e99
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
cmp ax, 0x804
jne 0x51e22e9f
jmp 0x51e22e99
cmp dword [eax + 0x53b8], 0
je 0x51e22e9f
cmp dword [ebx + 0x14], 1
ja 0x51e22eba
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
shr eax, 3
and ecx, 7
mov cl, byte [ecx + 0x51e23110]
lea eax, [ebp + eax + 0x1e4]
and byte [eax], cl
cmp dword [ebp - 0x3c], 0
jg 0x51e22f19
mov ax, word [esi + 0x98]
mov ecx, dword [ebp - 0x34]
inc dword [ebp - 0x38]
cmp dword [ebp - 0x24], 0
mov word [ecx], ax
jne 0x51e22efa
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], 1
mov dword [ebp - 0x2c], eax
jmp 0x51e22efa
cmp dword [ebp - 0x4c], 0
jne 0x51e22f04
mov eax, dword [ebp - 0x54]
mov ax, word [eax]
mov ecx, dword [ebp - 0x34]
inc dword [ebp - 0x38]
mov word [ecx], ax
cmp dword [ebp - 0x4c], 0
jne 0x51e22f04
add dword [ebp - 0x54], 2
dec dword [ebp - 0x50]
inc dword [ebp - 0x20]
dec dword [ebp - 0x64]
add dword [ebp - 0x34], 2
mov ecx, dword [ebp - 0x3c]
jmp 0x51e22d45
mov eax, dword [ebx + 0x1c]
cmp eax, dword [ebx + 0x20]
jne 0x51e22f59
push dword [ebp - 0x28]
lea eax, [ebp + 0x1e4]
push eax
add esi, 0x5c
push esi
lea eax, [ebp - 0x20]
push eax
push dword [edi + 0xc]
call fcn.51e63f5d
add esp, 0x14
test eax, eax
je 0x51e22f59
mov eax, dword [ebp - 0x20]
and dword [ebp - 0x38], 0
and dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x68], 1
jmp 0x51e22f77
cmp dword [ebp - 0x24], 0
je 0x51e230ed
cmp dword [ebp - 0x30], 0
jne 0x51e22f6d
and dword [ebp - 0x24], 0
cmp dword [ebp - 0x24], 0
je 0x51e230ed
mov ecx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x38]
mov edi, dword [ebx + 0xc]
add eax, ecx
mov dword [ebp - 0x44], eax
add eax, eax
sar eax, 1
lea ecx, [eax + eax]
mov edx, ecx
shr ecx, 2
lea esi, [ebp - 0x1c]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebx + 8]
mov dword [ebp - 0x48], ecx
mov dword [ebx + 8], ecx
xor ecx, ecx
cmp dword [ebp - 0x4c], ecx
mov dword [ebx + 0x14], eax
jne 0x51e22fca
cmp dword [ebp - 0x30], ecx
mov dword [ebx + 0x18], eax
ja 0x51e22ff5
cmp dword [ebp - 0x68], ecx
jne 0x51e22ff5
mov eax, dword [ebp - 0x2c]
add eax, eax
sar eax, 1
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x1c], eax
cmp dword [ebp - 0x44], 0
je 0x51e142c7
mov edi, dword [ebp - 0x40]
mov esi, dword [ebp - 0x6c]
push 8
pop ecx
add edi, 0x3c
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x6c]
push 8
pop ecx
lea esi, [ebp + 0x1e4]
rep movsd dword es:[edi], dword [esi]
jmp 0x51e142c7
mov ecx, dword [ebx + 4]
mov esi, dword [ebx]
add ecx, ecx
mov dword [ebp - 0x58], ecx
mov edx, ecx
shr ecx, 2
lea edi, [ebp - 0x1c]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebx + 0xc]
lea ecx, [eax + eax]
mov edi, edx
mov edx, ecx
shr ecx, 2
lea edi, [ebp + edi - 0x1c]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [ebx + 4]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 0x48]
mov esi, dword [ebp - 0x70]
sub ecx, edx
sub ecx, eax
shl ecx, 1
lea esi, [esi + eax*2]
lea edi, [edx + eax]
mov eax, ecx
shr ecx, 2
lea edi, [ebp + edi*2 - 0x1c]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x80], eax
mov eax, dword [0x51e8b69c]
and ecx, 3
test eax, eax
rep movsb byte es:[edi], byte [esi]
jne 0x51e230d7
mov esi, dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
call esi
cmp ax, 0x411
je 0x51e230e0
call esi
cmp ax, 0x404
je 0x51e230e0
call esi
cmp ax, 0x412
je 0x51e230e0
call esi
cmp ax, 0x804
je 0x51e230e0
mov eax, dword [ebp - 0x2c]
inc eax
mov dword [ebp - 0x7c], eax
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x78], eax
lea eax, [ebp - 0x80]
push eax
push dword [ebp + 0x210]
mov dword [ebp - 0x74], 1
call fcn.51e47878
cmp eax, dword [ebx + 8]
pop ecx
pop ecx
jb 0x51e22fc4
mov ecx, dword [ebp - 0x5c]
cmp byte [ecx + 0x10], 0
je 0x51e22fc4
cmp byte [ebx + 0x24], 1
jne 0x51e22fc4
mov eax, dword [ebp - 0x40]
mov byte [eax + 0x1a], 1
jmp 0x51e22fca
cmp dword [eax + 0x53b8], 0
je 0x51e23086
xor eax, eax
cmp dword [ebx + 0x30], eax
sete al
add eax, dword [ebp - 0x2c]
jmp 0x51e2308a
mov eax, dword [ebp - 0x48]
neg eax
sbb eax, eax
and eax, 0x8000
or eax, 1
mov dword [ebp - 0x60], eax
jmp 0x51e142c7
mov dword [ebp - 0x60], 0x8001
jmp 0x51e142c7