Function at 0x404054
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x42d29f
call fcn.0042c930
sub esp, 0x60
mov al, byte [ebp + 0x17]
push ebx
xor ebx, ebx
push esi
push edi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x5c], al
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x50], ebx
push 1
mov dword [ebp - 0x10], ebx
pop esi
push 0xb911ffff
push 0x57ffffff
mov dword [ebp - 4], esi
call fcn.004101be
push 0x4fb3ffff
push 0xd637ffff
mov dword [0x438c28], eax
call fcn.00410285
add word [0x438bf2], ax
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x1c], ebx
push 0x2779ffff
push 0xb4c5ffff
mov byte [ebp - 4], 3
call fcn.00410246
mov dword [0x438c10], eax
movsx eax, word [0x438bf6]
imul eax, eax, 0x27fdffff
mov dword [0x438c14], eax
movsx eax, word [0x438bfe]
push eax
push 0xceffffff
call fcn.004100c8
add word [0x438bf4], ax
mov eax, dword [ebp + 0xc]
add esp, 0x20
lea edx, [ebp - 0x1c]
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x24]
push 0xffffffffffffffff
mov edi, eax
call dword [sym.imp.USER32.dll_IsCharAlphaNumericA]
add dword [0x438c24], eax
cmp edi, ebx
jl 0x405169
cmp dword [ebp - 0x1c], ebx
je 0x405169
push 0x247dffff
push 0x5da5ffff
call fcn.00410246
add word [0x438bf8], ax
cmp byte [0x438be8], bl
pop ecx
lea edx, [ebp - 0x24]
setne al
mov byte [0x438bed], al
mov eax, dword [ebp - 0x1c]
pop ecx
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x3c]
push dword [0x438c18]
push 0x6d7bffff
call fcn.00410167
cmp dword [ebp - 0x24], ebx
pop ecx
pop ecx
mov word [0x438c02], ax
je 0x4044bb
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
mov byte [0x438bf1], al
push 0x7345ffff
movsx eax, byte [0x438bef]
push eax
call fcn.00410246
pop ecx
mov dword [0x438c2c], eax
pop ecx
mov dword [ebp - 0x30], ebx
mov eax, dword [ebp - 0x24]
lea edx, [ebp - 0x10]
push edx
push eax
mov ecx, dword [eax]
mov byte [ebp - 4], 4
call dword [ecx + 0x174]
push dword [ebp - 0x10]
lea ecx, [ebp - 0x30]
call fcn.00407c4b
mov al, byte [0x438c10]
add word [0x438bfa], 0xfffe
neg al
mov byte [0x438be8], al
movsx eax, byte [0x438bf0]
push eax
push dword [0x438c18]
call fcn.004100c8
pop ecx
mov word [0x438bf6], ax
mov eax, dword [ebp - 0x10]
pop ecx
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov ax, word [0x438c00]
mov dword [ebp - 0x10], ebx
inc ax
cmp dword [ebp - 0x30], ebx
mov word [0x438bfc], ax
je 0x4044aa
mov dword [ebp - 0x20], ebx
movsx eax, byte [0x438be9]
push dword [0x438c2c]
mov byte [ebp - 4], 5
push eax
call fcn.00410130
add word [0x438bfe], ax
push 0xffffffffffffffff
movsx eax, byte [0x438be9]
imul eax, eax, 0x2913ffff
add dword [0x438c1c], eax
xor eax, eax
cmp byte [0x438bec], bl
push str.base
mov word [ebp - 0x4c], 8
setne al
add dword [0x438c2c], eax
mov al, byte [0x438bf6]
add byte [0x438bed], al
call fcn.004051bc
add esp, 0x10
lea edx, [ebp - 0x10]
lea esi, [ebp - 0x4c]
mov dword [ebp - 0x44], eax
push edx
mov eax, dword [ebp - 0x30]
sub esp, 0x10
mov edi, esp
mov ecx, dword [eax]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push eax
movsd dword es:[edi], dword [esi]
call dword [ecx + 0x30]
movsx eax, word [0x438bf2]
push eax
push 0x150dffff
call fcn.0041020b
mov esi, dword [sym.imp.USER32.dll_GetFocus]
add word [0x438bfc], ax
pop ecx
pop ecx
call esi
push dword [ebp - 0x44]
add byte [0x438bed], al
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
push dword [ebp - 0x10]
lea ecx, [ebp - 0x20]
call fcn.00407c4b
push 0x4b77ffff
push 0xbca1ffff
call fcn.00410285
add dword [0x438c08], eax
mov eax, dword [ebp - 0x10]
pop ecx
pop ecx
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
movsx eax, word [0x438c04]
push eax
push 0x2c99ffff
mov dword [ebp - 0x10], ebx
call fcn.00410130
mov dword [0x438c2c], eax
mov eax, dword [ebp - 0x20]
pop ecx
cmp eax, ebx
pop ecx
je 0x40449c
mov ecx, dword [eax]
lea edx, [ebp - 0x34]
push edx
push eax
call dword [ecx + 0x24]
movsx eax, word [0x438bf8]
push eax
push dword [0x438c1c]
call fcn.00410246
add dword [0x438c08], eax
mov ax, word [0x438c14]
sub word [0x438bfc], ax
cmp dword [ebp - 0x34], ebx
pop ecx
pop ecx
jle 0x404499
mov dword [ebp - 0x14], ebx
or al, 0xff
mov byte [ebp - 4], 6
sub al, byte [0x438bf2]
mov dword [ebp - 0x28], ebx
add byte [0x438bee], al
mov eax, dword [0x438c28]
dec eax
add word [0x438bfa], ax
call esi
cmp dword [ebp - 0x34], ebx
mov dword [0x438c2c], eax
jle 0x404488
mov word [ebp - 0x4c], 3
mov eax, dword [ebp - 0x28]
lea edx, [ebp - 0x10]
push edx
lea esi, [ebp - 0x4c]
sub esp, 0x10
mov dword [ebp - 0x44], eax
mov edi, esp
sub esp, 0x10
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea esi, [ebp - 0x4c]
mov edi, esp
mov al, byte [0x438c2c]
mov dword [0x438c10], 1
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov byte [0x438bec], al
mov eax, dword [ebp - 0x20]
movsd dword es:[edi], dword [esi]
mov ecx, dword [eax]
push eax
movsd dword es:[edi], dword [esi]
call dword [ecx + 0x2c]
push dword [ebp - 0x10]
lea ecx, [ebp - 0x14]
call fcn.00407c78
movsx eax, byte [0x438beb]
movsx ecx, word [0x438bfe]
imul eax, ecx
mov dword [0x438c2c], eax
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
movsx eax, word [0x438bfe]
push eax
push 0x3359ffff
mov dword [ebp - 0x10], ebx
mov dword [0x438c14], 0xa2bfffe
call fcn.0041003a
add dword [0x438c1c], eax
movsx eax, word [0x438bfe]
push eax
push 0x88c7ffff
call fcn.00410092
add byte [0x438bf0], al
add esp, 0x10
cmp dword [ebp - 0x14], ebx
je 0x404479
inc dword [0x438c1c]
push 0x2a5bffff
push dword [0x438c2c]
call fcn.00410092
add byte [0x438bed], al
mov eax, dword [ebp - 0x38]
pop ecx
cmp dword [eax + 0x24], 1
mov eax, dword [ebp - 0x14]
pop ecx
mov ecx, dword [eax]
jne 0x404470
push str._blank
jmp 0x404475
push str._self
push eax
call dword [ecx + 0x24]
inc dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
cmp eax, dword [ebp - 0x34]
jl 0x40438f
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 5
cmp eax, ebx
je 0x404499
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x20]
cmp eax, ebx
mov byte [ebp - 4], 4
je 0x4044aa
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 3
cmp eax, ebx
je 0x4044bb
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push 0xe7f3ffff
push 0x8f3bffff
call fcn.00410246
pop ecx
mov word [0x438bf6], ax
pop ecx
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
mov word [0x438bf4], ax
push 0xcb8dffff
movsx eax, word [0x438bfe]
push eax
call fcn.0041003a
add word [0x438c00], ax
pop ecx
pop ecx
mov dword [ebp - 0x18], ebx
mov byte [ebp - 4], 7
call dword [sym.imp.USER32.dll_GetCursor]
push 0x65d1ffff
push 0xa117ffff
mov byte [0x438be8], al
call fcn.0041003a
add word [0x438c02], ax
mov eax, dword [ebp + 0x10]
pop ecx
cmp eax, ebx
pop ecx
jne 0x40452d
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax]
lea edx, [ebp - 0x10]
push edx
push eax
call dword [ecx + 0x174]
push dword [ebp - 0x10]
lea ecx, [ebp - 0x18]
call fcn.00407c4b
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x10], ebx
cmp eax, ebx
je 0x4046a5
mov ecx, dword [eax]
lea edx, [ebp - 0x34]
push edx
push eax
call dword [ecx + 0x24]
cmp dword [ebp - 0x34], ebx
jle 0x4046a5
mov dword [ebp + 0x10], ebx
mov byte [ebp - 4], 8
mov dword [ebp - 0x30], ebx
mov word [ebp - 0x4c], 3
mov eax, dword [ebp - 0x30]
lea edx, [ebp - 0x10]
push edx
lea esi, [ebp - 0x4c]
sub esp, 0x10
mov dword [ebp - 0x44], eax
mov edi, esp
sub esp, 0x10
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea esi, [ebp - 0x4c]
mov edi, esp
movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x18]
movsd dword es:[edi], dword [esi]
mov ecx, dword [eax]
push eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call dword [ecx + 0x2c]
push dword [ebp - 0x10]
lea ecx, [ebp + 0x10]
call fcn.00407b01
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
cmp dword [ebp + 0x10], ebx
mov dword [ebp - 0x10], ebx
je 0x4045fc
lea ecx, [ebp - 0x2c]
call fcn.00425cdf
mov eax, dword [ebp + 0x10]
lea edx, [ebp - 0x2c]
push edx
push eax
mov ecx, dword [eax]
mov byte [ebp - 4], 9
call dword [ecx + 0x34]
push 0x43812c
lea ecx, [ebp - 0x2c]
call fcn.00425dab
test eax, eax
jne 0x404610
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 8
call fcn.00425d5d
inc dword [ebp - 0x30]
mov eax, dword [ebp - 0x30]
cmp eax, dword [ebp - 0x34]
jl 0x40457f
jmp 0x404694
mov eax, dword [ebp + 0x10]
lea edx, [ebp - 0x10]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x174]
push dword [ebp - 0x10]
dec byte [0x438beb]
add dword [0x438c08], 0x158bfffe
lea ecx, [ebp - 0x18]
call fcn.00407c4b
push 0xdde7ffff
push 0x8111ffff
call fcn.00410130
add byte [0x438beb], al
or eax, 0xffffffff
sub eax, dword [0x438c14]
pop ecx
pop ecx
mov word [0x438c04], ax
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
movsx eax, byte [0x438be8]
push eax
push dword [0x438c28]
call fcn.00410246
add byte [0x438bf1], al
pop ecx
pop ecx
mov dword [ebp - 0x10], ebx
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 8
call fcn.00425d5d
mov eax, dword [ebp + 0x10]
mov byte [ebp - 4], 7
cmp eax, ebx
je 0x4046a5
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov al, byte [0x438be8]
xor ecx, ecx
cmp al, bl
mov word [0x438bf2], 1
setne cl
cmp dword [ebp - 0x18], ebx
mov word [0x438bf6], cx
je 0x40511c
movsx ecx, cx
movsx eax, al
push ecx
push eax
call fcn.00410285
add byte [0x438bee], al
mov dword [ebp - 0x30], ebx
movsx eax, byte [0x438beb]
and eax, 0x3ba5ffff
add dword [0x438c08], eax
movsx eax, byte [0x438be8]
push 0x51b5ffff
push eax
mov byte [ebp - 4], 0xa
call fcn.004101be
mov dword [0x438c1c], eax
push 0xffffffffffffffff
movsx ax, byte [0x438bf1]
add eax, dword [0x438c2c]
push 0x438128
mov word [ebp - 0x4c], 8
mov word [0x438c04], ax
call fcn.004051bc
mov dword [ebp - 0x44], eax
mov ax, word [0x438bfa]
or cl, 0xff
sub cl, al
movsx eax, ax
push eax
push 0xdc63ffff
mov byte [0x438be8], cl
call fcn.00410167
add esp, 0x20
lea edx, [ebp - 0x10]
lea esi, [ebp - 0x4c]
add word [0x438bfa], ax
push edx
mov eax, dword [ebp - 0x18]
sub esp, 0x10
mov edi, esp
mov ecx, dword [eax]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push eax
movsd dword es:[edi], dword [esi]
call dword [ecx + 0x30]
push dword [ebp - 0x44]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
movsx eax, word [0x438bfe]
push eax
push 0xa981ffff
call fcn.00410246
add dword [0x438c20], eax
pop ecx
pop ecx
push dword [ebp - 0x10]
lea ecx, [ebp - 0x30]
call fcn.00407c4b
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
cmp word [0x438bf4], bx
jne 0x4047c8
cmp word [0x438c02], bx
mov word [0x438c04], bx
je 0x4047d1
mov word [0x438c04], 1
movsx eax, byte [0x438bf1]
push 0x20ebffff
push eax
call fcn.004100c8
add word [0x438bf4], ax
push 0xceffffff
push dword [0x438c14]
call fcn.004100f9
mov word [0x438c00], ax
mov dword [ebp - 0x10], ebx
movsx eax, byte [0x438be8]
push eax
push 0x7a4dffff
call fcn.0041003a
add byte [0x438bec], al
add esp, 0x18
movsx eax, word [0x438c00]
movsx ecx, word [0x438bf6]
or eax, ecx
add dword [0x438c2c], eax
mov eax, dword [ebp - 0x30]
cmp eax, ebx
je 0x4050e3
mov ecx, dword [eax]
lea edx, [ebp - 0x34]
push edx
push eax
call dword [ecx + 0x24]
mov al, byte [0x438be9]
mov byte [0x438be8], al
movsx eax, word [0x438bfa]
push eax
movsx eax, word [0x438bf2]
push eax
call fcn.00410167
add word [0x438c00], ax
mov ax, word [0x438c02]
and word [0x438bfe], ax
cmp dword [ebp - 0x34], ebx
pop ecx
pop ecx
jle 0x4050e3
push 0xb595ffff
push 0x1c45ffff
call fcn.0041003a
add word [0x438bf4], ax
movsx eax, byte [0x438bed]
push eax
push 0xbe95ffff
call fcn.004100f9
mov dword [0x438c18], eax
mov al, byte [0x438c0c]
add al, byte [0x438bef]
add byte [0x438beb], al
movsx eax, word [0x438bfe]
push eax
movsx eax, byte [0x438bf0]
push eax
call fcn.0041003a
mov word [0x438bfe], ax
mov al, byte [0x438bea]
push 0x8479ffff
push 0xc2c9ffff
mov byte [0x438bef], al
call fcn.00410285
push 0x59d7ffff
mov dword [0x438c14], eax
push dword [0x438c08]
call fcn.00410246
add esp, 0x28
cmp word [0x438bf4], bx
jne 0x404926
cmp byte [0x438bed], bl
jne 0x404926
xor ecx, ecx
jmp 0x404929
push 1
pop ecx
push dword [0x438c2c]
add eax, ecx
mov dword [0x438c0c], eax
push 0x5f6bffff
call fcn.00410285
add byte [0x438bee], al
cmp word [0x438c02], bx
pop ecx
pop ecx
je 0x40495e
cmp byte [0x438bed], bl
je 0x40495e
push 1
pop eax
jmp 0x404960
xor eax, eax
add word [0x438bfc], ax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
movsx ecx, byte [0x438bec]
mov byte [0x438bed], al
push ecx
movsx eax, al
push eax
call fcn.00410167
pop ecx
mov word [0x438bfa], ax
pop ecx
mov dword [ebp - 0x14], ebx
mov cx, word [0x438c04]
dec cx
add word [0x438c02], cx
movsx eax, ax
imul eax, eax, 0xb213ffff
add dword [0x438c18], eax
inc byte [0x438bea]
cmp dword [ebp - 0x34], ebx
mov byte [ebp - 4], 0xb
mov dword [0x438c2c], 0x4021ffff
mov dword [ebp - 0x20], ebx
jle 0x40508a
mov word [ebp - 0x6c], 3
movsx eax, word [0x438bf2]
push 0xef1bffff
push eax
call fcn.00410130
add word [0x438c02], ax
push 0xa6bffff
movsx eax, word [0x438bf6]
push eax
call fcn.00410092
add esp, 0x10
mov dword [0x438c28], eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov byte [0x438bee], al
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x64], eax
movsx eax, byte [0x438bf1]
push eax
movsx eax, word [0x438bf2]
push eax
call fcn.004100f9
pop ecx
lea edx, [ebp - 0x10]
pop ecx
lea esi, [ebp - 0x6c]
push edx
add byte [0x438bf0], al
sub esp, 0x10
mov eax, dword [0x438c28]
mov edi, esp
mov ecx, dword [0x438c1c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
sub esp, 0x10
lea esi, [ebp - 0x6c]
mov edi, esp
add ecx, eax
mov ax, word [0x438bfc]
mov word [0x438c02], cx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov word [0x438bf4], ax
mov eax, dword [ebp - 0x30]
movsd dword es:[edi], dword [esi]
mov ecx, dword [eax]
push eax
movsd dword es:[edi], dword [esi]
call dword [ecx + 0x2c]
push 0xcd65ffff
push 0xc45ffff
call fcn.0041003a
add word [0x438bfe], ax
pop ecx
pop ecx
push dword [ebp - 0x10]
lea ecx, [ebp - 0x14]
call fcn.00407ca5
movsx eax, byte [0x438bef]
and eax, 0x581ffff
add dword [0x438c24], eax
call dword [sym.imp.USER32.dll_GetActiveWindow]
mov word [0x438bfc], ax
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
call dword [sym.imp.USER32.dll_GetDesktopWindow]
add byte [0x438bea], al
mov dword [ebp - 0x10], ebx
movsx eax, byte [0x438be8]
push eax
push 0x6d4dffff
mov byte [ebp + 0x13], bl
call fcn.004100c8
cmp dword [ebp - 0x14], ebx
pop ecx
pop ecx
mov word [0x438c00], ax
je 0x404f2f
movsx eax, word [0x438bfa]
push dword [0x438c08]
push eax
call fcn.004100f9
pop ecx
mov byte [0x438bf1], al
pop ecx
mov byte [ebp + 0x13], 1
lea ecx, [ebp - 0x2c]
call fcn.00425cdf
movsx eax, byte [0x438bed]
push 0x45e1ffff
and eax, 0xa9dfffff
push dword [0x438c2c]
add dword [0x438c1c], eax
mov byte [ebp - 4], 0xc
call fcn.00410130
add word [0x438bf4], ax
mov eax, dword [ebp - 0x14]
pop ecx
lea edx, [ebp - 0x2c]
pop ecx
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x28]
test eax, eax
jl 0x404c11
mov ax, word [0x438bf6]
push 0x179fffff
dec ax
push 0x8b61ffff
add word [0x438bf2], ax
call fcn.00410130
mov word [0x438c04], ax
mov eax, dword [ebp - 0x38]
pop ecx
cmp dword [eax + 0x24], 1
pop ecx
jne 0x404b9d
mov eax, dword [ebp - 0x14]
push str._blank
mov ecx, dword [eax]
jmp 0x404bc7
cmp dword [ebp - 0x2c], ebx
je 0x404bcb
push dword [ebp - 0x2c]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
test eax, eax
jbe 0x404bcb
mov esi, str._self
lea ecx, [ebp - 0x2c]
push esi
call fcn.00425dab
test eax, eax
jne 0x404bcb
mov eax, dword [ebp - 0x14]
push esi
mov ecx, dword [eax]
push eax
call dword [ecx + 0x24]
movsx ax, byte [0x438bf1]
or edi, 0xffffffff
push 0x8e93ffff
push dword [0x438c28]
mov ecx, edi
sub ecx, eax
add word [0x438bf8], cx
call fcn.00410130
add dword [0x438c24], eax
push dword [0x438c24]
push 0xbf11ffff
call fcn.00410167
add esp, 0x10
mov byte [0x438bed], al
jmp 0x404c14
or edi, 0xffffffff
push 0x983fffff
push 0x4b39ffff
call fcn.00410285
add word [0x438bf6], ax
cmp word [0x438bfa], bx
pop ecx
pop ecx
jne 0x404c43
cmp byte [0x438bea], bl
mov byte [0x438beb], bl
je 0x404c4a
mov byte [0x438beb], 1
mov eax, dword [ebp - 0x14]
lea edx, [ebp - 0x2c]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x20]
test eax, eax
jl 0x404ef1
cmp byte [ebp + 0x14], bl
mov word [0x438bfa], 1
je 0x404c9e
mov esi, dword [0x431fb0]
mov al, byte [esi]
add al, 0x66
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c950
mov ecx, esp
push ebx
mov edx, esi
call fcn.00429cdb
push eax
lea ecx, [ebp - 0x2c]
call fcn.00426163
cmp eax, edi
jne 0x404c9e
mov byte [ebp + 0x13], bl
push edi
call dword [sym.imp.USER32.dll_IsCharAlphaA]
mov esi, dword [0x431fb4]
mov byte [0x438bec], al
mov al, byte [esi]
add al, 0x66
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c950
mov ecx, esp
push ebx
mov edx, esi
call fcn.00429cdb
push eax
lea ecx, [ebp - 0x2c]
call fcn.00426163
cmp eax, edi
je 0x404cdb
mov byte [ebp + 0x13], bl
movsx eax, byte [0x438bed]
inc byte [0x438bec]
push 0xab37ffff
push eax
call fcn.00410246
add word [0x438bfe], ax
push 0x1521ffff
movsx eax, word [0x438bf2]
push eax
call fcn.004100f9
mov esi, dword [0x431fb8]
mov dword [0x438c0c], eax
add esp, 0x10
mov al, byte [esi]
add al, 0x66
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c950
mov ecx, esp
push ebx
mov edx, esi
call fcn.00429cdb
push eax
lea ecx, [ebp - 0x2c]
call fcn.00426163
cmp eax, edi
je 0x404d45
mov byte [ebp + 0x13], bl
movsx eax, byte [0x438bee]
push 0x123dffff
push eax
call fcn.00410130
add byte [0x438bef], al
mov esi, dword [0x431fbc]
movsx ax, byte [0x438bea]
inc eax
pop ecx
add word [0x438bf8], ax
mov al, byte [esi]
add al, 0x66
pop ecx
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c950
mov ecx, esp
push ebx
mov edx, esi
call fcn.00429cdb
push eax
lea ecx, [ebp - 0x2c]
call fcn.00426163
cmp eax, edi
je 0x404da0
mov byte [ebp + 0x13], bl
movsx eax, word [0x438bfa]
push eax
push 0xead5ffff
call fcn.00410285
mov esi, dword [0x431fc0]
add byte [0x438bf1], al
pop ecx
mov al, byte [esi]
pop ecx
add al, 0x66
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c950
mov ecx, esp
push ebx
mov edx, esi
call fcn.00429cdb
push eax
lea ecx, [ebp - 0x2c]
call fcn.00426163
cmp eax, edi
je 0x404deb
mov byte [ebp + 0x13], bl
movsx ax, byte [0x438bea]
or ax, word [0x438bfe]
mov esi, dword [0x431fc4]
add word [0x438bf4], ax
mov al, byte [0x438c28]
sub byte [0x438bef], al
mov al, byte [esi]
add al, 0x66
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c950
mov ecx, esp
push ebx
mov edx, esi
call fcn.00429cdb
push eax
lea ecx, [ebp - 0x2c]
call fcn.00426163
cmp eax, edi
je 0x404e3d
mov byte [ebp + 0x13], bl
movsx eax, byte [0x438beb]
push eax
call dword [sym.imp.USER32.dll_IsMenu]
mov esi, dword [0x431fc8]
add word [0x438c02], ax
add dword [0x438c18], 0x6fefffff
mov al, byte [esi]
add al, 0x66
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c950
mov ecx, esp
push ebx
mov edx, esi
call fcn.00429cdb
push eax
lea ecx, [ebp - 0x2c]
call fcn.00426163
cmp eax, edi
je 0x404e8d
mov byte [ebp + 0x13], bl
mov eax, edi
mov esi, dword [0x431fcc]
sub eax, dword [0x438c08]
add word [0x438c02], ax
mov eax, dword [0x438c1c]
neg eax
mov word [0x438c00], ax
mov al, byte [esi]
add al, 0x66
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c950
mov ecx, esp
push ebx
mov edx, esi
call fcn.00429cdb
push eax
lea ecx, [ebp - 0x2c]
call fcn.00426163
cmp eax, edi
je 0x404eda
mov byte [ebp + 0x13], bl
push 0xe299ffff
push dword [0x438c28]
call fcn.0041020b
pop ecx
mov byte [0x438bf1], al
pop ecx
movsx eax, byte [0x438be8]
push dword [0x438c08]
push eax
call fcn.00410092
add word [0x438bf4], ax
push 0x176fffff
push 0xf573ffff
call fcn.004101be
add dword [0x438c18], eax
add esp, 0x10
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 0xb
call fcn.00425d5d
mov eax, dword [0x438c10]
movsx ecx, byte [0x438bee]
add ecx, dword [0x438c14]
inc eax
add word [0x438c00], ax
movsx eax, byte [0x438beb]
add ecx, eax
cmp byte [ebp + 0x13], bl
mov dword [0x438c14], ecx
je 0x40503b
movsx eax, byte [0x438bef]
push eax
push 0x9be3ffff
call fcn.00410285
push 0x51abffff
push 0xe527ffff
mov dword [0x438c08], eax
call fcn.004100c8
add dword [0x438c24], eax
add esp, 0x10
call dword [sym.imp.USER32.dll_GetCapture]
mov esi, dword [ebp + 0xc]
mov byte [0x438bed], al
cmp esi, ebx
mov dword [ebp + 0x10], esi
je 0x404fab
mov eax, dword [esi]
push esi
call dword [eax + 4]
cmp esi, ebx
mov byte [ebp - 4], 0xd
mov dword [ebp - 0x44], esi
je 0x404fbc
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x40], eax
lea eax, [ebp - 0x44]
lea ecx, [ebp - 0x5c]
push eax
mov byte [ebp - 4], 0xe
call fcn.00407c3a
mov eax, dword [ebp - 0x44]
mov byte [ebp - 4], 0xd
cmp eax, ebx
je 0x404fe3
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp esi, ebx
mov byte [ebp - 4], 0xb
je 0x404ff1
mov eax, dword [esi]
push esi
call dword [eax + 8]
movsx eax, byte [0x438bee]
push dword [0x438c28]
or eax, 0x6807ffff
add dword [0x438c14], eax
push dword [0x438c08]
call fcn.00410246
add word [0x438c04], ax
cmp word [0x438bf2], bx
pop ecx
pop ecx
je 0x405033
cmp dword [0x438c24], ebx
je 0x405033
push 1
pop eax
jmp 0x405035
xor eax, eax
add byte [0x438bed], al
push 0x6475ffff
push 0x5cd3ffff
call fcn.004101be
mov dword [0x438c1c], eax
mov al, byte [0x438bf1]
sub al, byte [0x438bed]
mov byte [0x438be8], al
movsx eax, word [0x438bf2]
push eax
push dword [0x438c28]
call fcn.004101be
add dword [0x438c0c], eax
add esp, 0x10
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x34]
jl 0x4049d3
push dword [0x438c24]
push 0xeaf1ffff
call fcn.00410130
add word [0x438c02], ax
mov eax, dword [ebp - 0x14]
pop ecx
cmp eax, ebx
pop ecx
mov byte [ebp - 4], 0xa
je 0x4050b4
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [0x438c20]
push 0x8d63ffff
call fcn.00410130
push dword [0x438c2c]
mov word [0x438bfe], ax
push 0xca63ffff
call fcn.004100c8
add esp, 0x10
add dword [0x438c1c], eax
dec word [0x438c00]
push 0x23b9ffff
push 0x6d2dffff
call fcn.004100c8
mov word [0x438bf8], ax
mov eax, dword [ebp - 0x30]
pop ecx
cmp eax, ebx
pop ecx
mov dword [0x438c08], 0xf9a40000
mov byte [ebp - 4], 7
je 0x40511c
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
movsx eax, word [0x438c02]
push eax
push 0x2fc3ffff
call fcn.00410246
add dword [0x438c20], eax
mov eax, dword [0x438c1c]
inc eax
pop ecx
add word [0x438bfe], ax
pop ecx
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x5c]
push eax
call fcn.00407b72
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x3c], 1
cmp eax, ebx
mov byte [ebp - 4], 3
je 0x405178
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x405178
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x5c]
push eax
call fcn.00407b72
mov dword [ebp - 0x3c], esi
mov eax, dword [ebp - 0x1c]
mov byte [ebp - 4], 2
cmp eax, ebx
je 0x405189
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x24]
mov byte [ebp - 4], 1
cmp eax, ebx
je 0x40519a
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], bl
call fcn.00407bda
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp + 8]
lea esp, [ebp - 0x78]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret 0x10