Function at 0x51e12135
Capabilities:
Identify system language via api

Disassembly:
mov dword [ebp + 0x18], ecx
mov ecx, dword [ebp - 0x38]
jmp 0x51e122ef
mov esi, dword [ebp + 0xc]
push dword [esi]
call fcn.51e095bd
cmp eax, 0xffffffff
pop ecx
je 0x51e29f3c
mov eax, dword [0x51e8c348]
mov ecx, dword [esi]
mov edx, dword [ebp + 0x10]
sub ecx, dword [edx]
add dword [eax + 0x28], ecx
mov ecx, dword [ebp + 8]
mov dword [eax + 0x5c], ecx
mov ecx, dword [ebp + 8]
mov dword [eax + 0x58], ecx
xor ecx, ecx
inc ecx
mov dword [eax + 0x50], ecx
or dword [eax + 0xf0], 0xffffffff
or dword [eax + 0x48], 0xffffffff
mov eax, ecx
jmp 0x51e123bf
mov eax, 0x51e7e600
call fcn.51e038b0
sub esp, 0x4c
and dword [ebp - 0x1c], 0
cmp dword [ebp + 0x18], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
jne 0x51e095dd
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebx]
add eax, dword [ebp + 8]
and dword [ebp - 4], 0
mov dword [ebp - 0x14], eax
mov dword [ebp + 0x18], eax
mov eax, dword [0x51e8b69c]
mov eax, dword [eax + 0x4aec]
mov dword [ebp - 0x24], eax
mov eax, dword [0x51e8c344]
push dword [eax]
call fcn.51e1637c
mov esi, dword [ebx]
mov edi, pe_nt_image_headers32
cmp esi, edi
pop ecx
mov dword [ebp - 0x20], eax
ja 0x51e29f43
mov eax, 0x200
call fcn.51e038cf
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x18], esp
cmp dword [ebp + 0x14], 0
je 0x51e121d0
cmp esi, 1
jne 0x51e121d0
mov eax, dword [0x51e8c348]
push 0
push esi
push dword [ebp + 0x14]
push 0
push dword [eax + 4]
call fcn.51e115a0
add esp, 0x14
test eax, eax
jne 0x51e29f4c
mov eax, dword [0x51e8c348]
mov byte [eax + 0x152], 0x63
mov eax, dword [0x51e8c348]
mov eax, dword [eax + 8]
shr eax, 0xe
and al, 3
mov byte [ebp - 0x34], al
mov eax, dword [ebx]
cmp eax, edi
mov dword [ebp - 0x30], 1
ja 0x51e29f69
mov edx, dword [ebp - 0x18]
mov esi, dword [ebp + 0x14]
mov ecx, eax
mov edi, edx
rep movsw word es:[edi], word [esi]
mov dword [ebp - 0x4c], edx
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x58], ecx
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x54], ecx
mov ecx, dword [0x51e8c348]
mov ecx, dword [ecx + 0x28]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov dword [ebp - 0x40], eax
push 0xfffffffffffffffe
pop eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x38], eax
mov eax, dword [0x51e8b69c]
test eax, eax
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x48], 0xff
je 0x51e29f78
cmp dword [eax + 0x53bc], 0
jne 0x51e29fa2
test byte [eax + 0x53b6], 0x3c
jne 0x51e29fa2
mov edi, dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
lea eax, [ebp - 0x58]
push eax
mov eax, dword [0x51e8c348]
xor esi, esi
push esi
push 0xaa4
push dword [eax]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call dword [0x51e8bba0]
cmp eax, esi
jne 0x51e2a00e
mov eax, dword [0x51e8c348]
cmp dword [eax + 0x15c], esi
mov esi, dword [ebp + 0x10]
jne 0x51e2a0b6
mov ecx, dword [ebp - 0x44]
mov dword [ebx], ecx
mov ecx, dword [ebp - 0x40]
mov dword [esi], ecx
mov ecx, dword [ebp - 0x3c]
cmp ecx, 0xfffffffe
jne 0x51e05def
mov ecx, dword [0x51e8b69c]
test ecx, ecx
je 0x51e2a0d4
cmp dword [ecx + 0x53bc], 0
jne 0x51e2a11d
test byte [ecx + 0x53b6], 0x3c
jne 0x51e2a11d
mov ecx, dword [ebx]
add ecx, dword [ebp + 8]
mov dword [ebp + 0x18], ecx
mov dword [ebp - 0x14], ecx
mov eax, dword [eax + 8]
shr eax, 4
and eax, 1
push eax
push dword [esi]
push dword [ebx]
push dword [ebp + 8]
call fcn.51e12091
add esp, 0x10
cmp eax, 0xffffffff
je 0x51e123ad
push dword [esi]
push dword [ebx]
push dword [ebp + 8]
push dword [0x51e8c344]
call fcn.51e039e6
mov edx, dword [ebx]
add esp, 0x10
test edx, edx
je 0x51e12342
mov esi, dword [ebp - 0x18]
mov ecx, edx
mov edi, eax
rep movsw word es:[edi], word [esi]
mov esi, dword [ebp + 0x10]
mov edi, dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
sub edx, dword [esi]
mov ecx, dword [0x51e8c348]
add dword [ecx + 0x28], edx
cmp dword [ecx + 0x15c], 0
mov dword [ebp - 0x1c], 1
jne 0x51e2a0fe
mov eax, dword [ebp + 0x18]
mov dword [ecx + 0x58], eax
mov eax, dword [ecx + 0x28]
cmp dword [ebp - 0x14], eax
jb 0x51e2a15b
mov dword [ecx + 0x5c], eax
mov eax, dword [ebp - 0x30]
mov dword [ecx + 0x50], eax
mov eax, dword [0x51e8b69c]
test eax, eax
je 0x51e2a163
xor edx, edx
cmp dword [eax + 0x53ac], 0x804
sete dl
mov eax, edx
test eax, eax
jne 0x51e2a17a
or dword [ecx + 0xf0], 0xffffffff
or dword [ecx + 0x48], 0xffffffff
mov eax, dword [ebp - 0x24]
mov ecx, dword [0x51e8b69c]
mov dword [ecx + 0x4aec], eax
mov eax, dword [ebp - 0x1c]
lea esp, [ebp - 0x64]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret
xor eax, eax
jmp 0x51e123bf
and dword [ebp - 0x18], 0
jmp 0x51e121a5
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp + 0x18]
push eax
push dword [ebp + 0x14]
lea eax, [ebp + 8]
push ebx
push eax
call fcn.51e6a3f9
add esp, 0x14
jmp 0x51e121dc
mov ecx, dword [ebp + 0x14]
and dword [ebp - 0x4c], 0
mov dword [ebp - 0x18], ecx
jmp 0x51e1220d
mov edi, dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
call edi
cmp ax, 0x411
je 0x51e29fa2
call edi
cmp ax, 0x404
je 0x51e29fa2
call edi
cmp ax, 0x412
je 0x51e29fa2
call edi
cmp ax, 0x804
jne 0x51e1226d
cmp dword [0x51eb3c5c], 0
je 0x51e29ff1
mov eax, dword [0x51e8b69c]
test eax, eax
jne 0x51e29fc6
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
sub ax, 0x412
neg ax
sbb eax, eax
inc eax
jmp 0x51e29fd7
xor ecx, ecx
cmp dword [eax + 0x53ac], 0x412
sete cl
mov eax, ecx
test eax, eax
jne 0x51e29ff1
mov eax, dword [0x51e8c348]
mov eax, dword [eax + 0x11c]
shl eax, 0x1b
sar eax, 0x1f
mov dword [ebp - 0x2c], eax
jmp 0x51e29ff5
and dword [ebp - 0x2c], 0
mov eax, dword [0x51e8c348]
mov eax, dword [eax + 0x11c]
shl eax, 0x1e
sar eax, 0x1f
mov dword [ebp - 0x28], eax
jmp 0x51e12267
test ah, ah
jns 0x51e2a019
push esi
call dword [sym.imp.USER32.dll_MessageBeep]
mov eax, dword [0x51e8b69c]
cmp eax, esi
jne 0x51e2a047
call edi
cmp ax, 0x411
je 0x51e2a05c
call edi
cmp ax, 0x404
je 0x51e2a05c
call edi
cmp ax, 0x412
je 0x51e2a05c
call edi
cmp ax, 0x804
je 0x51e2a05c
jmp 0x51e123ad
cmp dword [eax + 0x53bc], esi
jne 0x51e2a05c
test byte [eax + 0x53b6], 0x3c
je 0x51e123ad
mov eax, dword [0x51e8c348]
mov ecx, dword [eax + 0x11c]
test cl, 1
je 0x51e123ad
test cl, 0x40
je 0x51e123ad
lea edx, [eax + 0x120]
mov ecx, dword [edx]
cmp ecx, dword [eax + 0x28]
jbe 0x51e123ad
mov ecx, dword [eax + 0x28]
mov dword [edx], ecx
mov dword [eax + 0x124], ecx
lea ecx, [eax + 0x128]
mov edx, dword [ecx]
cmp edx, dword [eax + 0x28]
jbe 0x51e123ad
mov edx, dword [eax + 0x28]
mov dword [eax + 0x12c], edx
mov dword [ecx], edx
jmp 0x51e123ad
mov ecx, dword [ebx]
cmp ecx, dword [ebp - 0x44]
jne 0x51e2a0c8
mov ecx, dword [esi]
cmp ecx, dword [ebp - 0x40]
je 0x51e122a9
or dword [eax + 0x140], 0xffffffff
jmp 0x51e122a9
call edi
cmp ax, 0x411
je 0x51e2a118
call edi
cmp ax, 0x404
je 0x51e2a118
call edi
cmp ax, 0x412
je 0x51e2a118
call edi
cmp ax, 0x804
mov eax, dword [0x51e8c348]
je 0x51e2a11d
jmp 0x51e122e7
mov eax, dword [ecx + 0x28]
cmp dword [ebp + 0x18], eax
jae 0x51e2a109
mov eax, dword [ebp + 0x18]
mov dword [ecx + 0x58], eax
or dword [ecx + 0x140], 0xffffffff
jmp 0x51e12367
mov eax, dword [0x51e8c348]
mov ecx, dword [eax + 0x11c]
test cl, 8
je 0x51e2a146
mov edx, dword [ebp + 8]
mov ecx, dword [ebx]
add ecx, edx
mov edx, dword [eax + 0x12c]
cmp ecx, edx
jae 0x51e2a13b
mov edx, ecx
mov dword [ebp - 0x14], edx
mov dword [ebp + 0x18], edx
jmp 0x51e122f2
test cl, 2
je 0x51e2a14f
xor ecx, ecx
jmp 0x51e2a151
mov ecx, dword [ebx]
mov edx, dword [ebp + 8]
add ecx, edx
jmp 0x51e122ec
mov eax, dword [ebp - 0x14]
jmp 0x51e12373
call edi
mov ecx, dword [0x51e8c348]
sub ax, 0x804
neg ax
sbb eax, eax
inc eax
jmp 0x51e1239a
test byte [ecx + 0x11c], 1
je 0x51e123a2
mov eax, dword [ecx + 0x128]
cmp eax, dword [ecx + 0x12c]
je 0x51e123a2
mov edx, dword [ecx + 0x28]
cmp eax, edx
jb 0x51e2a1a2
mov eax, edx
mov dword [ecx + 0x5c], eax
mov dword [ecx + 0x58], eax
jmp 0x51e123a2