Function at 0x55cf35
Capabilities:
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
mov eax, dword [0x602c60]
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 0x55cfa2
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x188]
test al, al
je 0x55cfa2
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x190]
test al, al
jne 0x55cf90
mov eax, dword [ebp + 8]
add eax, 0xfffffe00
cmp eax, 0xe
jbe 0x55cfa2
mov eax, dword [ebp + 8]
mov ebx, 0x20a
cmp eax, ebx
jne 0x55cfb5
test byte [ebp + 0xc], 8
jne 0x55d014
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004fb958
leave
ret 0x10
cmp eax, 0x10f
jne 0x55d014
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
mov ecx, eax
call fcn.0052c1d3
push eax
call sub.IMM32.dll_ImmGetContext
mov edi, eax
test edi, edi
je 0x55cfa2
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.0052c1d3
push eax
call sub.IMM32.dll_ImmReleaseContext
jmp 0x55cfa2
mov byte [ebp - 0x31], 1
cmp eax, 0x200
jb 0x55d026
cmp eax, 0x20e
jbe 0x55d02f
cmp eax, 0x20
jne 0x55d141
mov ecx, dword [edi + 8]
test dword [ecx + 0x14], 0x100
jne 0x55d07a
cmp eax, 0x201
jb 0x55d07a
cmp eax, 0x205
ja 0x55d07a
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.0052ded7
lea ecx, [edi - 0x290]
neg ecx
sbb ecx, ecx
and ecx, esi
cmp eax, ecx
jne 0x55cfa2
mov eax, dword [edi + 8]
mov ecx, dword [eax + 0x14]
and ecx, 0x100
neg ecx
sbb ecx, ecx
and ecx, 3
jne 0x55d10a
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 0x55d0d6
lea eax, [ebp - 0x44]
push eax
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
mov ecx, eax
call fcn.0052c1d3
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 0x55cfa2
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x18]
mov ecx, eax
call fcn.0052ca83
test al, al
jne 0x55cfa2
push 3
mov byte [ebp - 0x31], al
pop ecx
cmp ecx, 3
jne 0x55cfa2
cmp dword [ebp + 8], 0x201
je 0x55d132
cmp dword [ebp + 8], 0x203
je 0x55d132
cmp dword [ebp + 8], 0x204
jne 0x55d416
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x1a4]
jmp 0x55d416
lea ecx, [eax - 0x100]
cmp ecx, 9
ja 0x55d163
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x1a0]
test al, al
jne 0x55d416
jmp 0x55cfa2
cmp eax, 0x7b
jne 0x55d36d
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.0052c1d3
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.0052ded7
lea ecx, [edi - 0x290]
neg ecx
sbb ecx, ecx
and ecx, esi
cmp eax, ecx
jne 0x55cfa2
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 0x55d24d
push str.Undo
push 0x65
push ebx
push edi
call esi
push str.Redo
push 0x6b
push ebx
push edi
call esi
push 0x59a2c0
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 0x59a2c0
push 0
push ebx
push edi
call esi
push str.Select_All
jmp 0x55d2b2
push 0x5bf3d4
push 0x65
push ebx
push edi
call esi
push str.ZP_
push 0x6b
push ebx
push edi
call esi
push 0x59a2c0
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 0x5bf394
push 0x68
push 0
push edi
call esi
push 0x5bf384
push 0x69
push 0
push edi
call esi
push 0x59a2c0
push 0
push ebx
push edi
call esi
push 0x5bf374
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 + pe_nt_image_headers32]
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.0055bf06
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.0052c1d3
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 0x55d416
cmp eax, 0x111
jne 0x55d409
mov eax, dword [ebp - 0x38]
mov byte [eax], 0
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x1a0]
test al, al
je 0x55cfa2
mov eax, dword [ebp + 0xc]
sub eax, 0x65
je 0x55d3fc
dec eax
je 0x55d3ef
dec eax
je 0x55d3e2
dec eax
je 0x55d3d5
dec eax
je 0x55d3c8
dec eax
je 0x55d3b7
dec eax
jne 0x55d416
lea ecx, [edi - 0x290]
call fcn.0055c286
jmp 0x55d416
push 0xffffffffffffffff
push 0
lea ecx, [edi - 0x290]
call fcn.0055be05
jmp 0x55d416
lea ecx, [edi - 0x290]
call fcn.0055c2ea
jmp 0x55d416
lea ecx, [edi - 0x290]
call fcn.0055c323
jmp 0x55d416
lea ecx, [edi - 0x290]
call fcn.0055c2fd
jmp 0x55d416
lea ecx, [edi - 0x290]
call fcn.0055c310
jmp 0x55d416
lea ecx, [edi - 0x290]
call fcn.0055c2b8
jmp 0x55d416
cmp eax, 0x53
jne 0x55cfa2
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 0x55d470
mov ecx, dword [ebp + 8]
mov eax, 0x100
cmp ecx, eax
jb 0x55d44d
cmp ecx, 0x109
jbe 0x55d470
cmp ecx, 0x102
je 0x55d470
cmp ecx, 0x286
je 0x55d470
add ecx, 0xfffffe00
cmp ecx, 0xe
ja 0x55d478
mov ecx, dword [edi + 8]
test dword [ecx + 0x14], eax
je 0x55d478
mov ecx, dword [ebp - 0x38]
mov al, byte [ebp - 0x31]
mov byte [ecx], al
mov eax, dword [ebp - 0x4c]
jmp 0x55cfa4