Function at 0x1004e550
Capabilities:
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14c
push ebx
push esi
push edi
mov eax, 0x3320b
mov dword [ebp - 0x12c], 0x3e026
mov dword [ebp - 0x128], eax
mov ecx, dword [0x100c3098]
mov edx, dword [0x100c309c]
mov dword [ebp - 0xe0], edx
mov dword [ebp - 0x38], ecx
mov eax, dword [0x100c3110]
mov ecx, dword [0x100c3114]
mov dword [ebp - 0xe4], ecx
mov dword [ebp - 0x78], eax
xor edx, edx
mov dword [ebp - 0x34], 0xba2
mov dword [ebp - 0x30], edx
movsx eax, word [0x100c30fc]
mov dword [ebp - 0x5c], eax
mov ecx, 0xffffde69
mov word [ebp - 0xc], cx
movsx dx, byte [str.NDisablePerfBackoff]
mov word [ebp - 0x40], dx
mov al, byte [0x100c3090]
mov byte [ebp - 0x16], al
mov ecx, 0x6bf
mov word [ebp - 0x20], cx
mov edx, dword [0x100c3120]
mov eax, dword [0x100c3124]
mov dword [ebp - 0xe8], eax
mov byte [ebp - 3], dl
movzx cx, byte [0x100c3063]
mov word [ebp - 0x14], cx
mov edx, dword [0x100c310c]
mov byte [ebp - 0x45], dl
mov eax, dword [0x100c30f0]
mov dword [ebp - 0x98], eax
mov ecx, dword [0x100c30e8]
mov edx, dword [0x100c30ec]
mov dword [ebp - 0xec], edx
mov byte [ebp - 5], cl
mov byte [ebp - 4], 0x49
xor eax, eax
mov dword [ebp - 0x2c], 0x4f6f
mov dword [ebp - 0x28], eax
mov ecx, 0xe04f
mov word [ebp - 0x10], cx
mov edx, 0xd9f1
mov word [ebp - 0x24], dx
xor eax, eax
mov dword [ebp - 0x58], 0x7b8f8dff
mov dword [ebp - 0x54], eax
mov byte [ebp - 1], 0xb3
movsx ecx, word [0x100c30fc]
mov dword [ebp - 0x50], ecx
mov edx, dword [0x100c30d0]
mov eax, dword [0x100c30d4]
mov dword [ebp - 0xf0], eax
mov byte [ebp - 2], dl
mov cx, word [0x100c3090]
mov word [ebp - 0x1c], cx
mov dl, byte [0x100c3062]
mov byte [ebp - 0x46], dl
mov eax, 0x3015
mov word [ebp - 0x44], ax
mov cx, word [0x100c3118]
mov word [ebp - 0x94], cx
mov dx, word [0x100c30fc]
mov word [ebp - 0xcc], dx
mov eax, 0xffffa793
mov word [ebp - 0xc8], ax
mov ecx, dword [0x100c3108]
mov dword [ebp - 0xf4], ecx
mov edx, dword [0x100c3100]
mov eax, dword [0x100c3104]
mov dword [ebp - 0x134], edx
mov dword [ebp - 0x130], eax
movsx ecx, byte [0x100c3027]
mov dword [ebp - 0xf8], ecx
mov edx, dword [0x100c30d8]
mov dword [ebp - 0xfc], edx
mov eax, 0x4e037
mov dword [ebp - 0x13c], 0x7ffc41c
mov dword [ebp - 0x138], eax
mov ecx, 0x63fab
mov dword [ebp - 0x144], 0xc1b74059
mov dword [ebp - 0x140], ecx
mov dl, byte [0x100c30f8]
mov byte [ebp - 0x4b], dl
mov eax, 0x2a9ac
mov dword [ebp - 0x14c], 0xa4b1a6d7
mov dword [ebp - 0x148], eax
movsx ecx, word [0x100c30fc]
mov dword [ebp - 0x100], ecx
mov byte [ebp - 0x47], 0x3c
mov byte [ebp - 0x48], 9
mov dl, byte [0x100c3118]
mov byte [ebp - 0x49], dl
movzx ax, byte [0x100c303b]
mov word [ebp - 0xc4], ax
mov cl, byte [0x100c3075]
mov byte [ebp - 0x4a], cl
call dword [sym.imp.USER32.dll_GetFocus]
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 0
je 0x1004e78d
mov edx, dword [ebp - 0x60]
push edx
call dword [sym.imp.USER32.dll_GetWindowDC]
mov dword [ebp - 0x104], eax
mov eax, dword [0x100c30a8]
mov ecx, dword [0x100c30ac]
mov dword [ebp - 0x108], ecx
sub eax, 0x4e15
mov word [ebp - 0x10], ax
mov ecx, dword [0x100c3120]
mov edx, dword [0x100c3124]
mov dword [ebp - 0x10c], edx
not ecx
movzx eax, word [ebp - 0x24]
cdq
or ecx, eax
movsx eax, word [ebp - 0x20]
movsx edx, byte [ebp - 4]
sub eax, edx
cdq
add ecx, eax
mov word [ebp - 0x24], cx
movsx eax, word [0x100c3088]
sar eax, 6
mov word [ebp - 0x20], ax
xor ecx, ecx
mov dword [0x100c30f0], 0x16a
mov dword [0x100c30f4], ecx
movsx edx, word [0x100c30fc]
movzx eax, byte [0x100c303b]
sub edx, eax
mov word [0x100c30fc], dx
cmp dword [0x100c30f8], 0
je 0x1004e81d
mov cx, word [ebp - 0x40]
mov word [ebp - 0x3a], cx
jmp 0x1004e825
mov dx, word [ebp - 0xc]
mov word [ebp - 0x3a], dx
movsx eax, word [ebp - 0x3a]
cdq
mov dword [0x100c3100], eax
mov dword [0x100c3104], edx
mov eax, dword [ebp - 0x50]
shl eax, 6
mov byte [ebp - 1], al
mov ecx, dword [0x100c3100]
mov edx, dword [0x100c3104]
mov dword [ebp - 0xd4], ecx
mov dword [ebp - 0xd0], edx
mov eax, dword [ebp - 0xd4]
or eax, dword [ebp - 0xd0]
je 0x1004e86d
movsx ecx, word [ebp - 0xc]
mov dword [ebp - 0x64], ecx
jmp 0x1004e877
movzx edx, word [0x100c30a0]
mov dword [ebp - 0x64], edx
mov ax, word [ebp - 0x64]
mov word [ebp - 0x14], ax
mov ecx, dword [0x100c3b38]
xor edx, edx
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], edx
cmp dword [ebp - 0x5c], 0
je 0x1004e89d
mov ax, word [ebp - 0x1c]
mov word [ebp - 0x3c], ax
jmp 0x1004e8a8
mov cx, word [0x100c30b0]
mov word [ebp - 0x3c], cx
mov dx, word [ebp - 0x3c]
mov word [0x100c3118], dx
movzx eax, byte [ebp - 2]
cdq
mov ecx, eax
mov esi, edx
sub ecx, dword [ebp - 0x2c]
sbb esi, dword [ebp - 0x28]
movzx eax, byte [ebp - 2]
cdq
push esi
push ecx
push edx
push eax
call fcn.1008eb70
mov byte [ebp - 2], al
movzx edx, word [ebp - 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_IsValidCodePage]
mov word [0x100c30a0], ax
push 0
push 0x30
call fcn.10051570
add esp, 8
cwde
cdq
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], edx
mov eax, dword [ebp - 0x2c]
or eax, dword [ebp - 0x28]
je 0x1004e909
mov dword [ebp - 0x68], 1
jmp 0x1004e910
mov dword [ebp - 0x68], 0
cmp dword [ebp - 0x2c], 0x36
jne 0x1004e91c
cmp dword [ebp - 0x28], 0
je 0x1004e925
mov dword [ebp - 0x6c], 1
jmp 0x1004e92c
mov dword [ebp - 0x6c], 0
mov ecx, dword [ebp - 0x68]
cmp ecx, dword [ebp - 0x6c]
jne 0x1004ea16
movsx eax, word [0x100c3088]
cdq
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0xd8], edx
mov edx, dword [ebp - 0xd8]
cmp edx, dword [ebp - 0x28]
jb 0x1004e96d
ja 0x1004e964
mov eax, dword [ebp - 0xdc]
cmp eax, dword [ebp - 0x2c]
jbe 0x1004e96d
mov dword [ebp - 0x70], 1
jmp 0x1004e974
mov dword [ebp - 0x70], 0
movsx ecx, word [0x100c3088]
cmp ecx, 0x5b
jle 0x1004e989
mov dword [ebp - 0x74], 1
jmp 0x1004e990
mov dword [ebp - 0x74], 0
mov edx, dword [ebp - 0x70]
cmp edx, dword [ebp - 0x74]
jg 0x1004ea11
movzx eax, word [ebp - 0x10]
imul eax, dword [0x100c30f8]
not eax
mov ecx, dword [ebp - 0x78]
xor ecx, eax
movzx edx, word [0x100c30e0]
movsx eax, word [0x100c3088]
xor edx, eax
movsx eax, word [ebp - 0x14]
xor edx, eax
sub ecx, edx
not ecx
xor edx, edx
mov dword [0x100c30b8], ecx
mov dword [0x100c30bc], edx
mov al, byte [0x100c3b38]
mov byte [ebp - 1], al
movsx ecx, word [0x100c3090]
add ecx, 0x685b8686
xor edx, edx
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], edx
mov byte [ebp - 2], 0x7f
mov eax, dword [0x100c3b38]
xor ecx, ecx
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], ecx
mov edx, 2
imul eax, edx, 0x65
mov cl, byte [eax + 0x100c3b40]
mov byte [ebp - 3], cl
jmp 0x1004eaeb
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0xc0], edx
mov dword [ebp - 0xbc], eax
mov ecx, dword [ebp - 0xc0]
or ecx, dword [ebp - 0xbc]
je 0x1004eaeb
mov byte [ebp - 2], 0x4a
movsx eax, word [ebp - 0x40]
shl eax, 6
cdq
mov dword [0x100c30e8], eax
mov dword [0x100c30ec], edx
xor edx, edx
mov eax, 0x962cdc22
sub eax, dword [ebp - 0x38]
mov ecx, 0x741f0
sbb ecx, edx
not eax
not ecx
imul edx, dword [ebp - 0x38], 0x86
xor esi, esi
push esi
push edx
push ecx
push eax
call fcn.1008eb70
mov ecx, eax
mov esi, dword [0x100c3110]
mov edx, dword [0x100c3114]
mov dword [ebp - 0x110], edx
not esi
movzx eax, byte [0x100c303b]
cdq
sub esi, eax
movsx eax, byte [ebp - 0x16]
cdq
mov edx, dword [0x100c3110]
mov edi, dword [0x100c3114]
mov dword [ebp - 0x114], edi
sub eax, edx
xor esi, eax
or ecx, esi
mov byte [0x100c303b], cl
movsx eax, word [ebp - 0x20]
cdq
add eax, 0x12dd11cd
adc edx, 0x8b031
mov dword [0x100c30e8], eax
mov dword [0x100c30ec], edx
mov ax, word [ebp - 0xc]
sub ax, 1
mov word [ebp - 0xc], ax
mov ecx, 0xf4be
mov word [ebp - 0x24], cx
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultUILanguage]
movzx edx, ax
mov dword [ebp - 0x38], edx
cmp dword [ebp - 0x38], 0
jae 0x1004ecc3
mov eax, dword [ebp - 0x58]
or eax, dword [ebp - 0x54]
je 0x1004eb75
movsx ecx, byte [ebp - 4]
add ecx, 0x62fce9cd
mov word [0x100c308c], cx
mov edx, dword [0x100c30c0]
mov eax, dword [0x100c30c4]
add edx, 0xf5a934e
adc eax, 0xaa279
mov dword [0x100c30c0], edx
mov dword [0x100c30c4], eax
movzx ecx, word [0x100c30e0]
movsx edx, word [ebp - 0x44]
sub ecx, edx
mov word [0x100c30e0], cx
movzx eax, word [ebp - 0x10]
cdq
mov ecx, dword [0x100c30e8]
mov esi, dword [0x100c30ec]
add ecx, eax
adc esi, edx
mov dword [0x100c30e8], ecx
mov dword [0x100c30ec], esi
jmp 0x1004ecbe
mov edx, dword [0x100c30d8]
or edx, dword [0x100c30dc]
je 0x1004ecbe
mov eax, dword [0x100c3098]
mov ecx, dword [0x100c309c]
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x9c], ecx
mov edx, dword [ebp - 0xa0]
or edx, dword [ebp - 0x9c]
jne 0x1004ebba
xor eax, eax
mov dword [ebp - 0x80], 1
mov dword [ebp - 0x7c], eax
jmp 0x1004ebc2
xorps xmm0, xmm0
movlpd qword [ebp - 0x80], xmm0
mov ecx, dword [0x100c3120]
mov edx, dword [0x100c3124]
not ecx
not edx
mov esi, dword [ebp - 0x80]
sub esi, ecx
mov edi, dword [ebp - 0x7c]
sbb edi, edx
movzx eax, byte [0x100c3063]
cdq
mov ecx, dword [ebp - 0x54]
push ecx
mov ecx, dword [ebp - 0x58]
push ecx
push edx
push eax
call fcn.1008eb70
add esi, eax
adc edi, edx
mov edx, dword [0x100c310c]
not edx
xor eax, eax
push eax
push edx
mov ecx, dword [0x100c3084]
push ecx
mov edx, dword [0x100c3080]
push edx
call fcn.1008eb70
not eax
not edx
sub eax, dword [0x100c30b8]
sbb edx, dword [0x100c30bc]
sub esi, eax
sbb edi, edx
mov dword [ebp - 0xa8], esi
mov dword [ebp - 0xa4], edi
mov eax, dword [ebp - 0xa8]
or eax, dword [ebp - 0xa4]
jne 0x1004ec4a
mov byte [ebp - 0x15], 1
jmp 0x1004ec4e
mov byte [ebp - 0x15], 0
mov cl, byte [ebp - 0x15]
mov byte [ebp - 1], cl
mov eax, dword [0x100c3080]
mov edx, dword [0x100c3084]
mov cl, 8
call fcn.1008ebb0
mov dword [0x100c3108], eax
mov edx, dword [0x100c3098]
mov eax, dword [0x100c309c]
push 0x697bb
push 0x94b61def
push eax
push edx
call fcn.1008eb70
mov byte [ebp - 2], al
movsx ecx, word [ebp - 0xc]
imul edx, ecx, 0x4a532f9b
mov word [ebp - 0x24], dx
mov eax, dword [0x100c30f8]
shl eax, 6
mov word [0x100c30fc], ax
movsx eax, byte [0x100c3075]
add eax, 0x550d
cdq
mov dword [0x100c30a8], eax
mov dword [0x100c30ac], edx
jmp 0x1004edae
movzx ecx, word [ebp - 0x10]
movsx edx, word [ebp - 0x14]
imul ecx, edx
mov word [ebp - 0x10], cx
mov eax, dword [0x100c30f8]
cdq
add eax, dword [0x100c30d8]
adc edx, dword [0x100c30dc]
not eax
not edx
mov ecx, dword [0x100c30a8]
mov esi, dword [0x100c30ac]
push esi
push ecx
push edx
push eax
call fcn.1008eb70
mov byte [0x100c3075], al
mov edx, 0xd03e
mov word [0x100c30b0], dx
cmp dword [0x100c3108], 0
je 0x1004ed2a
movsx eax, word [ebp - 0x14]
cdq
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x8c], edx
jmp 0x1004ed41
mov eax, dword [0x100c30b8]
mov ecx, dword [0x100c30bc]
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x8c], ecx
mov dl, byte [ebp - 0x90]
mov byte [ebp - 5], dl
movsx eax, word [ebp - 0xc]
cdq
mov ecx, dword [0x100c30f0]
sub ecx, eax
mov eax, dword [0x100c30f4]
sbb eax, edx
mov dword [ebp - 0xb0], ecx
mov dword [ebp - 0xac], eax
mov ecx, dword [ebp - 0xb0]
or ecx, dword [ebp - 0xac]
jne 0x1004ed8c
xor edx, edx
mov dword [ebp - 0x88], 1
mov dword [ebp - 0x84], edx
jmp 0x1004ed97
xorps xmm0, xmm0
movlpd qword [ebp - 0x88], xmm0
mov eax, dword [ebp - 0x88]
mov ecx, dword [ebp - 0x84]
mov dword [0x100c30f0], eax
mov dword [0x100c30f4], ecx
movsx eax, word [0x100c30fc]
cdq
push 0x21fe
push 0xf1bffef8
push edx
push eax
call fcn.1008eb70
mov dword [0x100c3080], eax
mov dword [0x100c3084], edx
movzx edx, byte [0x100c3063]
sub edx, 0x7ba4
movzx eax, byte [ebp - 1]
and eax, edx
mov byte [ebp - 1], al
movsx ecx, byte [ebp - 4]
movzx edx, byte [0x100c303b]
lea eax, [ecx + edx - 0x3b]
cdq
mov ebx, eax
movzx eax, word [0x100c30a0]
cdq
mov ecx, eax
mov esi, edx
mov edx, dword [0x100c30d8]
not edx
mov eax, dword [0x100c30dc]
not eax
add ecx, edx
adc esi, eax
movzx eax, byte [ebp - 5]
or eax, 0x31
cdq
push edx
push eax
push esi
push ecx
call fcn.1008eb70
add ebx, eax
mov byte [ebp - 0x16], bl
mov eax, dword [0x100c30f8]
cdq
mov ecx, dword [0x100c30a8]
mov esi, dword [0x100c30ac]
add ecx, eax
adc esi, edx
mov edx, dword [0x100c30a8]
mov eax, dword [0x100c30ac]
add edx, ecx
adc eax, esi
mov dword [0x100c30a8], edx
mov dword [0x100c30ac], eax
movzx eax, byte [ebp - 3]
cdq
mov ecx, eax
mov edx, dword [0x100c30c8]
mov eax, dword [0x100c30cc]
mov dword [ebp - 0x118], eax
add ecx, edx
movzx eax, byte [ebp - 3]
cdq
add eax, ecx
mov byte [ebp - 3], al
movsx eax, word [0x100c3118]
cdq
push edx
push eax
mov ecx, dword [0x100c30bc]
push ecx
mov edx, dword [0x100c30b8]
push edx
call fcn.1008eb70
mov byte [0x100c3075], al
movsx eax, word [ebp - 0xc]
add eax, 0xb0
cdq
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], edx
movsx eax, word [ebp - 0x20]
movzx ecx, byte [0x100c303b]
imul eax, ecx
mov word [ebp - 0x20], ax
movzx edx, byte [ebp - 5]
sub edx, 0x5b
movzx eax, word [ebp - 0x1c]
sub eax, edx
mov word [ebp - 0x1c], ax
mov ecx, dword [ebp - 0x78]
cmp dword [ebp - 0x50], ecx
jne 0x1004ef89
mov edx, dword [0x100c3108]
mov dword [0x100c30f8], edx
movsx eax, word [ebp - 0x14]
add eax, dword [ebp - 0x98]
mov word [ebp - 0x14], ax
mov ecx, dword [0x100c30d0]
mov edx, dword [0x100c30d4]
mov dword [ebp - 0x120], edx
mov eax, dword [0x100c30a8]
mov edx, dword [0x100c30ac]
mov dword [ebp - 0x11c], edx
sub ecx, eax
movzx eax, byte [ebp - 3]
mov edx, dword [ebp - 0x5c]
add edx, eax
sub ecx, edx
mov dword [ebp - 0x50], ecx
cmp dword [ebp - 0x38], 0
jne 0x1004ef4b
xor eax, eax
mov dword [ebp - 0xb8], 1
mov dword [ebp - 0xb4], eax
jmp 0x1004ef56
xorps xmm0, xmm0
movlpd qword [ebp - 0xb8], xmm0
mov ecx, dword [0x100c3098]
mov edx, dword [0x100c309c]
mov dword [ebp - 0x124], edx
mov esi, dword [ebp - 0xb8]
sub esi, ecx
movzx eax, byte [0x100c3063]
cdq
add eax, dword [ebp - 0x2c]
or esi, eax
mov dword [ebp - 0x38], esi
mov byte [ebp - 1], 0x2c
jmp 0x1004f026
mov ecx, dword [0x100c30e8]
mov esi, dword [0x100c30ec]
add ecx, 0x3ad56fe2
adc esi, 0xe563a
movzx eax, word [ebp - 0x1c]
cdq
push esi
push ecx
push edx
push eax
call fcn.1008eb70
mov word [ebp - 0x1c], ax
mov edx, 1
imul eax, edx, 0x8c
movzx eax, byte [eax + 0x10118b50]
cdq
mov dword [0x100c30c0], eax
mov dword [0x100c30c4], edx
movzx ecx, word [0x100c30b0]
imul eax, ecx, 0x4dab8ae9
cdq
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], edx
movzx eax, word [0x100c30e0]
cdq
push 0xaf26e
push 0x63df38bb
push edx
push eax
call fcn.1008eb70
mov byte [ebp - 1], al
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x30]
add edx, 1
adc eax, 0
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x30], eax
movsx eax, word [ebp - 0x44]
sub eax, 0x33
cdq
mov dword [0x100c30d8], eax
mov dword [0x100c30dc], edx
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x30]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret