Function at 0x4ad2f1
Capabilities:
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
mov eax, dword [0x502ae0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x14]
push ebx
push esi
push edi
mov edi, ecx
lea esi, [edi - 0x288]
mov dword [ebp - 0x38], eax
mov eax, dword [esi]
mov ecx, esi
mov dword [ebp - 0x3c], edi
call dword [eax + 0x17c]
test al, al
je 0x4ad35e
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x188]
test al, al
je 0x4ad35e
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x190]
test al, al
jne 0x4ad34c
mov eax, dword [ebp + 8]
add eax, 0xfffffe00
cmp eax, 0xe
jbe 0x4ad35e
mov eax, dword [ebp + 8]
mov ebx, 0x20a
cmp eax, ebx
jne 0x4ad371
test byte [ebp + 0xc], 8
jne 0x4ad3d0
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0044d74d
leave
ret 0x10
cmp eax, 0x10f
jne 0x4ad3d0
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
mov ecx, eax
call fcn.0047c543
push eax
call sub.IMM32.dll_ImmGetContext
mov edi, eax
test edi, edi
je 0x4ad35e
lea eax, [ebp - 0xc]
push eax
call dword [sym.imp.USER32.dll_GetCaretPos]
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x30]
push eax
push edi
mov dword [ebp - 0x30], 2
call sub.IMM32.dll_ImmSetCompositionWindow
mov eax, dword [esi]
push edi
mov ecx, esi
call dword [eax + 0x18]
mov ecx, eax
call fcn.0047c543
push eax
call sub.IMM32.dll_ImmReleaseContext
jmp 0x4ad35e
mov byte [ebp - 0x31], 1
cmp eax, 0x200
jb 0x4ad3e2
cmp eax, 0x20e
jbe 0x4ad3eb
cmp eax, 0x20
jne 0x4ad4fd
mov ecx, dword [edi + 8]
test dword [ecx + 0x14], 0x100
jne 0x4ad436
cmp eax, 0x201
jb 0x4ad436
cmp eax, 0x205
ja 0x4ad436
mov ecx, dword [ebp + 0x10]
movsx eax, word [ebp + 0x10]
shr ecx, 0x10
movsx ecx, cx
push ecx
push eax
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
mov ecx, eax
call fcn.0047e249
lea ecx, [edi - 0x290]
neg ecx
sbb ecx, ecx
and ecx, esi
cmp eax, ecx
jne 0x4ad35e
mov eax, dword [edi + 8]
mov ecx, dword [eax + 0x14]
and ecx, 0x100
neg ecx
sbb ecx, ecx
and ecx, 3
jne 0x4ad4c6
mov ecx, dword [eax + 0x30]
mov dword [ebp - 0x10], ecx
mov ecx, dword [eax + 0x38]
mov dword [ebp - 8], ecx
mov ecx, dword [eax + 0x2c]
mov dword [ebp - 0x14], ecx
mov eax, dword [eax + 0x34]
mov dword [ebp - 0xc], eax
movsx eax, word [ebp + 0x10]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp + 0x10]
shr eax, 0x10
cwde
mov dword [ebp - 0x40], eax
cmp dword [ebp + 8], ebx
jne 0x4ad492
lea eax, [ebp - 0x44]
push eax
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
mov ecx, eax
call fcn.0047c543
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
push dword [ebp - 0x40]
lea eax, [ebp - 0x14]
push dword [ebp - 0x44]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x4ad35e
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
mov ecx, eax
call fcn.0047cdf3
test al, al
jne 0x4ad35e
push 3
mov byte [ebp - 0x31], al
pop ecx
cmp ecx, 3
jne 0x4ad35e
cmp dword [ebp + 8], 0x201
je 0x4ad4ee
cmp dword [ebp + 8], 0x203
je 0x4ad4ee
cmp dword [ebp + 8], 0x204
jne 0x4ad7d2
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x1a4]
jmp 0x4ad7d2
lea ecx, [eax - 0x100]
cmp ecx, 9
ja 0x4ad51f
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x1a0]
test al, al
jne 0x4ad7d2
jmp 0x4ad35e
cmp eax, 0x7b
jne 0x4ad729
movsx eax, word [ebp + 0x10]
mov ecx, dword [ebp + 0x10]
shr ecx, 0x10
movsx ecx, cx
mov dword [ebp - 0x58], eax
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], ecx
mov dword [ebp - 8], ecx
push eax
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
mov ecx, eax
call fcn.0047c543
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
push dword [ebp - 0x54]
mov eax, dword [esi]
push dword [ebp - 0x58]
mov ecx, esi
call dword [eax + 0x18]
mov ecx, eax
call fcn.0047e249
lea ecx, [edi - 0x290]
neg ecx
sbb ecx, ecx
and ecx, esi
cmp eax, ecx
jne 0x4ad35e
call dword [sym.imp.USER32.dll_CreatePopupMenu]
mov edi, eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
mov esi, dword [sym.imp.USER32.dll_AppendMenuW]
mov ecx, 0x804
xor ebx, ebx
cmp cx, ax
je 0x4ad609
push str.Undo
push 0x65
push ebx
push edi
call esi
push str.Redo
push 0x6b
push ebx
push edi
call esi
push 0x4d02f4
push ebx
mov ebx, 0x800
push ebx
push edi
call esi
push str.Cut
push 0x66
push 0
push edi
call esi
push str.Copy
push 0x67
push 0
push edi
call esi
push str.Paste
push 0x68
push 0
push edi
call esi
push str.Clear
push 0x69
push 0
push edi
call esi
push 0x4d02f4
push 0
push ebx
push edi
call esi
push str.Select_All
jmp 0x4ad66e
push 0x4e5ab4
push 0x65
push ebx
push edi
call esi
push str.ZP_
push 0x6b
push ebx
push edi
call esi
push 0x4d02f4
push ebx
mov ebx, 0x800
push ebx
push edi
call esi
push str.jR_aR_
push 0x66
push 0
push edi
call esi
push str._rY6R_
push 0x67
push 0
push edi
call esi
push 0x4e5a74
push 0x68
push 0
push edi
call esi
push 0x4e5a64
push 0x69
push 0
push edi
call esi
push 0x4d02f4
push 0
push ebx
push edi
call esi
push 0x4e5a54
push 0x6a
push 0
push edi
call esi
mov ebx, dword [ebp - 0x3c]
add ebx, 0xfffffd70
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x110]
mov esi, dword [sym.imp.USER32.dll_EnableMenuItem]
xor ecx, ecx
test al, al
sete cl
push ecx
push 0x65
push edi
call esi
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x114]
xor ecx, ecx
test al, al
sete cl
push ecx
push 0x6b
push edi
call esi
mov ecx, ebx
call fcn.004ac2c2
mov ebx, dword [ebp - 0x3c]
xor ecx, ecx
test ax, ax
sete cl
xor eax, eax
cmp byte [ebx + 0x11], al
setne al
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x48], eax
or eax, ecx
push eax
push 0x66
push edi
mov dword [ebp - 0x40], eax
call esi
push dword [ebp - 0x50]
push 0x67
push edi
call esi
push dword [ebp - 0x40]
push 0x69
push edi
call esi
push dword [ebp - 0x48]
push 0x68
push edi
call esi
lea ecx, [ebx - 0x288]
mov eax, dword [ecx]
push 0
call dword [eax + 0x18]
mov ecx, eax
call fcn.0047c543
push eax
push 0
push dword [ebp - 8]
push dword [ebp - 0xc]
push 2
push edi
call dword [sym.imp.USER32.dll_TrackPopupMenu]
push edi
call dword [sym.imp.USER32.dll_DestroyMenu]
mov edi, ebx
jmp 0x4ad7d2
cmp eax, 0x111
jne 0x4ad7c5
mov eax, dword [ebp - 0x38]
mov byte [eax], 0
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x1a0]
test al, al
je 0x4ad35e
mov eax, dword [ebp + 0xc]
sub eax, 0x65
je 0x4ad7b8
dec eax
je 0x4ad7ab
dec eax
je 0x4ad79e
dec eax
je 0x4ad791
dec eax
je 0x4ad784
dec eax
je 0x4ad773
dec eax
jne 0x4ad7d2
lea ecx, [edi - 0x290]
call fcn.004ac642
jmp 0x4ad7d2
push 0xffffffffffffffff
push 0
lea ecx, [edi - 0x290]
call fcn.004ac1c1
jmp 0x4ad7d2
lea ecx, [edi - 0x290]
call fcn.004ac6a6
jmp 0x4ad7d2
lea ecx, [edi - 0x290]
call fcn.004ac6df
jmp 0x4ad7d2
lea ecx, [edi - 0x290]
call fcn.004ac6b9
jmp 0x4ad7d2
lea ecx, [edi - 0x290]
call fcn.004ac6cc
jmp 0x4ad7d2
lea ecx, [edi - 0x290]
call fcn.004ac674
jmp 0x4ad7d2
cmp eax, 0x53
jne 0x4ad35e
mov byte [ebp - 0x31], 0
and dword [ebp - 0x4c], 0
lea edx, [ebp - 0x4c]
push edx
push dword [ebp + 0x10]
lea ecx, [edi - 0x290]
push dword [ebp + 0xc]
mov eax, dword [ecx]
push dword [ebp + 8]
call dword [eax + 0x11c]
test eax, eax
je 0x4ad82c
mov ecx, dword [ebp + 8]
mov eax, pe_nt_image_headers32
cmp ecx, eax
jb 0x4ad809
cmp ecx, 0x109
jbe 0x4ad82c
cmp ecx, 0x102
je 0x4ad82c
cmp ecx, 0x286
je 0x4ad82c
add ecx, 0xfffffe00
cmp ecx, 0xe
ja 0x4ad834
mov ecx, dword [edi + 8]
test dword [ecx + 0x14], eax
je 0x4ad834
mov ecx, dword [ebp - 0x38]
mov al, byte [ebp - 0x31]
mov byte [ecx], al
mov eax, dword [ebp - 0x4c]
jmp 0x4ad360