Function at 0x51e68377
Capabilities:
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
and dword [ebp - 0x20], 0
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov eax, dword [edi]
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x14]
movzx eax, byte [eax + 0xc]
mov dword [ebp - 0xc], eax
mov eax, dword [0x51e8b69c]
test eax, eax
jne 0x51e683b1
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
sub ax, 0x404
neg ax
sbb eax, eax
inc eax
jmp 0x51e683c2
xor ecx, ecx
cmp dword [eax + 0x53a8], 0x404
sete cl
mov eax, ecx
test eax, eax
mov esi, dword [ebp + 0x18]
mov ebx, dword [ebp + 0xc]
je 0x51e683f8
mov eax, dword [0x51e8a120]
test eax, eax
je 0x51e683f8
mov eax, dword [eax + 0xf8]
test eax, eax
je 0x51e683f8
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push esi
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push ebx
push edi
call eax
test eax, eax
je 0x51e68bea
mov eax, dword [ebp - 4]
sub eax, dword [edi]
and eax, 0xfffffffe
cmp eax, 0x456
jg 0x51e68bdb
mov eax, dword [ebp + 0x10]
movsx edi, byte [eax]
inc eax
movsx ecx, byte [eax]
inc eax
mov dword [ebp + 0x10], eax
mov eax, dword [0x51e8b69c]
test eax, eax
mov dword [ebp - 8], ecx
jne 0x51e6843a
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov ecx, dword [ebp - 8]
sub ax, 0x404
neg ax
sbb eax, eax
inc eax
jmp 0x51e6844b
xor edx, edx
cmp dword [eax + 0x53a8], 0x404
sete dl
mov eax, edx
test eax, eax
je 0x51e68486
mov eax, dword [0x51e8a120]
test eax, eax
je 0x51e68486
mov eax, dword [eax + 0xf4]
test eax, eax
je 0x51e68486
lea edx, [ebp - 4]
push edx
push edi
push ecx
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push esi
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push ebx
push dword [ebp + 8]
call eax
test eax, eax
jne case.0x51e68605.13
mov ecx, dword [ebp - 8]
mov eax, edi
sub eax, 0
je 0x51e68be2
sub eax, 6
je 0x51e68b81
dec eax
je 0x51e685fc
dec eax
je 0x51e684d4
dec eax
je 0x51e684c2
dec eax
dec eax
jne case.0x51e68605.13
mov ax, word [esi + ecx*2]
mov ecx, dword [ebp - 4]
mov word [ecx], ax
add dword [ebp - 4], 2
jmp case.0x51e68605.13
mov eax, dword [ecx*4 + 0x51e35698]
mov ecx, dword [ebp + 0x14]
mov dword [ecx + 0x10], eax
jmp case.0x51e68605.13
cmp ecx, 0xe
movsx eax, word [ebx + 8]
ja case.0x51e68605.13
movzx edx, byte [ecx + 0x51e68c0f]
jmp dword [edx*4 + 0x51e68bef]
cmp eax, 0xc
jle 0x51e684f9
sub eax, 0xc
jmp 0x51e68500
test eax, eax
jne 0x51e68500
push 0xc
pop eax
dec ecx
dec ecx
xor edx, edx
inc edx
cmp ecx, edx
jne 0x51e6851c
mov ecx, dword [esi + 0x84]
cmp word [ecx + 0x136], 0
je 0x51e6851c
push 2
pop edx
push edx
push 2
jmp 0x51e68b30
xor eax, eax
cmp ecx, 5
sete al
inc eax
push eax
movsx eax, word [ebx + 0xa]
push 2
jmp 0x51e68b30
xor eax, eax
cmp ecx, 7
sete al
inc eax
push eax
movsx eax, word [ebx + 0xc]
push 2
jmp 0x51e68b30
cmp ecx, 8
je 0x51e68569
cmp ecx, 0xa
je 0x51e68569
cmp eax, 0xc
jge 0x51e68563
mov ax, word [esi + 0x16]
jmp 0x51e68578
mov ax, word [esi + 0x1a]
jmp 0x51e68578
cmp eax, 0xc
jge 0x51e68574
mov ax, word [esi + 0x18]
jmp 0x51e68578
mov ax, word [esi + 0x1c]
mov edx, dword [ebp - 4]
movzx eax, ax
mov word [edx], ax
mov eax, dword [ebp - 4]
inc eax
inc eax
cmp ecx, 8
mov dword [ebp - 4], eax
jne 0x51e68594
mov cx, word [esi + 0x20]
jmp 0x51e685a1
cmp ecx, 9
jne case.0x51e68605.13
mov cx, word [esi + 0x1e]
mov word [eax], cx
jmp 0x51e684b9
mov edx, dword [esi + 0x84]
cmp word [edx + 0x132], 0
je case.0x51e68605.13
cmp ecx, 0xd
jne 0x51e685d4
cmp eax, 0xc
jge 0x51e685d4
mov eax, dword [esi + 0x84]
add eax, 0x112
jmp 0x51e685ef
mov eax, dword [esi + 0x84]
add eax, 0x122
jmp 0x51e685ef
mov edx, dword [ebp - 4]
mov word [edx], cx
add dword [ebp - 4], 2
inc eax
inc eax
xor ecx, ecx
mov cx, word [eax]
test cx, cx
jne 0x51e685e1
jmp case.0x51e68605.13
cmp ecx, 0x1d
ja case.0x51e68605.13
jmp dword [ecx*4 + 0x51e68c1e]
cmp word [ebx + 2], 0xc
jne 0x51e68621
cmp word [ebx + 6], 0x1e
jne 0x51e68621
cmp word [ebx], 0x76b
je 0x51e6866c
push dword [ebp + 0x20]
mov edi, dword [ebp + 0x14]
push dword [ebp + 0x1c]
mov eax, dword [esi + 0x64]
push esi
push edi
add eax, 6
push eax
lea eax, [ebp - 4]
push ebx
push eax
mov byte [edi + 0xc], 1
call fcn.51e68377
mov al, byte [ebp - 0xc]
mov byte [edi + 0xc], al
xor eax, eax
add esp, 0x1c
cmp word [ebx + 8], ax
jne 0x51e6865e
cmp word [ebx + 0xa], ax
jne 0x51e6865e
cmp word [ebx + 0xc], ax
je 0x51e6866e
mov ecx, dword [ebp - 4]
mov word [ecx], 0x20
add dword [ebp - 4], 2
jmp 0x51e6866e
xor eax, eax
cmp word [ebx + 8], ax
jne case.0x51e684e8.12
cmp word [ebx + 0xa], ax
jne case.0x51e684e8.12
cmp word [ebx + 0xc], ax
jne case.0x51e684e8.12
cmp word [ebx + 2], 0xc
jne case.0x51e68605.13
cmp word [ebx + 6], 0x1e
jne case.0x51e68605.13
cmp word [ebx], 0x76b
jne case.0x51e68605.13
mov eax, dword [esi + 0x70]
push dword [ebp + 0x20]
add eax, 6
push dword [ebp + 0x1c]
push esi
push dword [ebp + 0x14]
push eax
lea eax, [ebp - 4]
push ebx
push eax
call fcn.51e68377
add esp, 0x1c
jmp case.0x51e68605.13
xor eax, eax
cmp ecx, 1
sete al
inc eax
push eax
movsx eax, word [ebx + 2]
push 2
jmp 0x51e68b30
mov eax, dword [0x51e8b69c]
mov dx, word [eax + 0x537c]
test dl, 1
je 0x51e6870c
cmp dword [eax + 0x5378], 1
jne 0x51e6870c
movsx eax, word [ebx + 2]
mov ecx, dword [esi + 0x84]
shl eax, 6
lea edi, [eax + ecx + 0x9ee]
jmp 0x51e68a5d
lea eax, [esi + 0x84]
mov ecx, dword [eax]
lea edi, [ecx + 0x43e]
test edi, edi
jne 0x51e6873b
mov eax, ecx
movsx ecx, word [eax + 0x13a]
push ecx
movsx ecx, word [ebx + 2]
shl ecx, 6
lea eax, [ecx + eax + 0xfe]
jmp 0x51e68a27
test dx, dx
je 0x51e68771
mov ax, word [0x51e8b552]
cmp ax, 0xa
je 0x51e6875e
cmp ax, 0xb
je 0x51e6875e
cmp ax, 0xc
je 0x51e6875e
cmp ax, 8
jne 0x51e68771
movsx eax, word [ebx + 2]
shl eax, 6
lea edi, [eax + ecx + 0xfe]
jmp 0x51e68a5d
movsx eax, word [ebx + 2]
shl eax, 4
lea edi, [eax + ecx + 0x42e]
jmp 0x51e68a5d
mov eax, dword [0x51e8b69c]
test byte [eax + 0x537c], 1
je 0x51e6879f
cmp dword [eax + 0x5378], 1
je 0x51e686f3
cmp dword [ebp - 0x20], 0
je 0x51e687c8
mov eax, dword [esi + 0x84]
cmp word [eax + 0x13c], 0
je 0x51e687c8
movsx ecx, word [ebx + 2]
shl ecx, 6
lea edi, [ecx + eax + 0x4be]
jmp 0x51e68a5d
mov ecx, dword [esi + 0x84]
jmp 0x51e6875e
movsx eax, word [ebx + 4]
mov ecx, dword [esi + 0x84]
shl eax, 4
lea edi, [eax + ecx + 0x12ae]
jmp 0x51e68a5d
movsx eax, word [ebx + 4]
mov ecx, dword [esi + 0x84]
shl eax, 6
lea edi, [eax + ecx + 0x10ee]
jmp 0x51e68a5d
movsx eax, word [ebx + 2]
mov ecx, dword [esi + 0x84]
shl eax, 4
lea edi, [eax + ecx + 0x101e]
jmp 0x51e68a5d
movsx eax, word [ebx + 2]
mov ecx, dword [esi + 0x84]
shl eax, 6
lea edi, [eax + ecx + 0xcee]
jmp 0x51e68a5d
mov edi, dword [0x51e8b69c]
test edi, edi
mov dword [ebp - 0x10], 0x51e8a11c
jne 0x51e6885a
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov ecx, dword [ebp - 8]
sub ax, 0x411
neg ax
sbb eax, eax
inc eax
jmp 0x51e68869
xor eax, eax
cmp dword [edi + 0x53a8], 0x411
sete al
test eax, eax
jne 0x51e688c8
mov edi, dword [0x51e8b69c]
test edi, edi
jne 0x51e6888c
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov ecx, dword [ebp - 8]
sub ax, 0x412
neg ax
sbb eax, eax
inc eax
jmp 0x51e6889b
xor eax, eax
cmp dword [edi + 0x53a8], 0x412
sete al
test eax, eax
je 0x51e688c8
cmp ecx, 0x18
jle 0x51e688c8
cmp dword [ebp - 0xc], 0
jne 0x51e688c8
mov eax, dword [esi + 0x84]
cmp word [eax + 0x1322], 5
mov dword [ebp - 0x10], 0x51e68ca4
je 0x51e688c8
mov dword [ebp - 0x10], 0x51e68c98
push dword [ebp - 0x10]
call fcn.51e03933
push eax
push dword [ebp - 0x10]
jmp 0x51e68a28
mov edi, dword [0x51e8b69c]
test edi, edi
jne 0x51e688f8
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov ecx, dword [ebp - 8]
sub ax, 0x411
neg ax
sbb eax, eax
inc eax
jmp 0x51e68907
xor eax, eax
cmp dword [edi + 0x53a8], 0x411
sete al
test eax, eax
jne 0x51e689c0
mov edi, dword [0x51e8b69c]
test edi, edi
jne 0x51e6892e
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov ecx, dword [ebp - 8]
sub ax, 0x412
neg ax
sbb eax, eax
inc eax
jmp 0x51e6893d
xor eax, eax
cmp dword [edi + 0x53a8], 0x412
sete al
test eax, eax
je 0x51e689c0
sub ecx, 0x1a
movsx edx, word [ebx]
mov dword [ebp - 0x18], edx
je 0x51e6896e
dec ecx
jne 0x51e689b5
cmp dword [ebp - 0xc], 0
mov dword [ebp - 0x1c], 1
jne 0x51e689ae
add edx, 0x91d
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x14], 5
jmp 0x51e689b5
cmp dword [ebp - 0xc], 0
push 2
pop ecx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x1c], ecx
jne 0x51e68991
lea eax, [edx + 0x91d]
push 0x64
cdq
pop edi
idiv edi
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x18], edx
jmp 0x51e689b5
cmp edx, 0x78a
jl 0x51e6894f
cmp edx, 0x7ed
jg 0x51e6894f
mov eax, edx
push 0x64
cdq
pop ecx
idiv ecx
mov dword [ebp - 0x18], edx
jmp 0x51e689b5
mov dword [ebp - 0x14], 4
push dword [ebp - 0x1c]
push dword [ebp - 0x14]
jmp 0x51e68b7e
xor eax, eax
cmp ecx, 0x1b
sete al
inc eax
push eax
push 4
push dword [ebp - 0x18]
jmp 0x51e68b31
xor eax, eax
cmp ecx, 5
sete al
inc eax
push eax
movsx eax, word [ebx + 6]
push 2
push eax
lea eax, [ebp - 4]
push eax
call fcn.51e68099
add esp, 0x10
mov dword [ebp - 0x20], 1
jmp case.0x51e68605.13
lea eax, [esi + 0x84]
mov ecx, dword [eax]
lea edx, [ecx + 0x43e]
test edx, edx
jne 0x51e68a39
mov eax, ecx
movsx ecx, word [eax + 0x13a]
push ecx
movsx ecx, word [ebx + 4]
shl ecx, 6
lea eax, [ecx + eax + 0x7fe]
push eax
lea eax, [ebp - 4]
push eax
call fcn.51e68120
add esp, 0xc
jmp case.0x51e68605.13
movsx eax, word [ebx + 4]
shl eax, 4
lea edi, [eax + ecx + 0x9be]
jmp 0x51e68a5d
movsx eax, word [ebx + 4]
mov ecx, dword [esi + 0x84]
shl eax, 6
lea edi, [eax + ecx + 0x7fe]
push edi
call fcn.51e03933
push eax
push edi
jmp 0x51e68a28
mov eax, dword [esi + 0x64]
jmp 0x51e686a4
mov eax, dword [esi + 0x68]
jmp 0x51e686a4
mov eax, dword [esi + 0x6c]
jmp 0x51e686a4
movsx eax, word [ebx]
add eax, 0xfffff83c
jns 0x51e68a8b
xor eax, eax
push 1
jmp 0x51e6851d
mov eax, dword [esi + 0x88]
jmp 0x51e686a4
movsx eax, word [ebx + 0x10]
push 1
push 3
jmp 0x51e68b30
cmp dword [ebp - 0xc], 0
je 0x51e68abf
mov ax, word [ebx]
cmp ax, 0x78a
jl 0x51e68af4
cmp ax, 0x7ed
jg 0x51e68af4
mov eax, dword [0x51e8b69c]
cmp dword [eax + 0x5378], 0
jne 0x51e68af4
mov eax, dword [esi + 0x84]
cmp word [eax + 0x1322], 7
movsx eax, word [ebx]
push 2
push 2
push 0x64
pop ecx
jne 0x51e68aec
add eax, 0x21f
cdq
idiv ecx
jmp 0x51e68b7e
mov eax, dword [ebp + 0x14]
mov byte [eax + 0x18], 1
mov eax, dword [esi + 0x84]
cmp word [eax + 0x1322], 7
jne 0x51e68b42
mov eax, dword [0x51e8b69c]
cmp dword [eax + 0x5378], 0
jne 0x51e68b42
movsx eax, word [ebx]
add eax, 0x21f
cmp eax, 0x2710
push 1
jge 0x51e68b2e
push 4
jmp 0x51e68b30
push 5
push eax
lea eax, [ebp - 4]
push eax
call fcn.51e68099
add esp, 0x10
jmp case.0x51e68605.13
movsx eax, word [ebx]
push 1
push 4
jmp 0x51e68b30
movsx eax, word [ebx + 2]
push 1
inc eax
push 1
inc eax
push 3
cdq
pop ecx
idiv ecx
jmp 0x51e68b30
mov eax, dword [esi + 0x84]
movsx ecx, word [eax + 0x131e]
movsx eax, word [ebx + 4]
sub eax, ecx
push 1
push 1
add eax, 8
push 7
cdq
pop ecx
idiv ecx
inc edx
push edx
jmp 0x51e68b31
movsx eax, cl
test eax, eax
jne 0x51e68ba2
mov eax, dword [ebp + 0x10]
mov ax, word [eax]
mov ecx, dword [ebp + 0x20]
add dword [ebp + 0x10], 2
mov word [ecx], ax
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp - 4]
mov dword [eax], ecx
jmp case.0x51e68605.13
mov edi, dword [ebp - 4]
mov esi, dword [ebp + 0x10]
add eax, eax
add dword [ebp + 0x10], eax
mov ecx, eax
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
add dword [ebp - 4], eax
mov esi, dword [ebp + 0x18]
mov eax, dword [ebp - 4]
mov ecx, dword [ebp + 8]
sub eax, dword [ecx]
and eax, 0xfffffffe
cmp eax, 0x456
jle 0x51e6840b
mov edi, ecx
mov eax, dword [ebp - 4]
mov dword [edi], eax
jmp 0x51e68bea
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov dword [eax], ecx
pop edi
pop esi
pop ebx
leave
ret