Function at 0x4040e1
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x42cf1f
call fcn.0042c5b0
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
movsx ax, byte [0x437bef]
push 1
dec eax
add word [0x437bfe], ax
pop edi
mov dword [ebp - 4], edi
mov dword [ebp - 0x10], ebx
mov byte [0x437bec], 0xfe
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x1c], ebx
push 0x986bffff
push 0xa065ffff
mov byte [ebp - 4], 3
call fcn.0040ff4b
pop ecx
mov dword [0x437c18], eax
pop ecx
push 0xffffffffffffffff
call dword [sym.imp.USER32.dll_IsCharAlphaNumericA]
add byte [0x437bf0], al
mov eax, dword [ebp + 0xc]
lea edx, [ebp - 0x1c]
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x24]
push 0x6211ffff
push 0x729ffff
mov esi, eax
call fcn.00410092
push 0xc9d9ffff
push 0xc81ffff
mov word [0x437bf4], ax
call fcn.00410092
add esp, 0x10
cmp esi, ebx
mov dword [0x437c18], eax
jl 0x4051d6
cmp dword [ebp - 0x1c], ebx
je 0x4051d6
push dword [0x437c10]
push 0xf611ffff
call fcn.0040ffe3
push 0x6169ffff
push 0xf7dbffff
mov word [0x437bfe], ax
mov byte [0x437bef], 0xfe
call fcn.00410016
mov dword [0x437c2c], eax
mov eax, dword [ebp - 0x1c]
add esp, 0x10
lea edx, [ebp - 0x30]
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x3c]
movsx eax, byte [0x437beb]
push eax
push 0x9c97ffff
call fcn.0040ffe3
push 0x24f5ffff
push 0x11f3ffff
mov word [0x437c00], ax
call fcn.0040ffc6
mov dword [0x437c28], eax
mov eax, dword [ebp - 0x30]
add esp, 0x10
cmp eax, ebx
je 0x4045e9
mov dword [0x437c10], edi
mov dword [ebp - 0x2c], ebx
mov ecx, dword [eax]
lea edx, [ebp - 0x10]
push edx
push eax
mov byte [ebp - 4], 4
call dword [ecx + 0x174]
push dword [ebp - 0x10]
lea ecx, [ebp - 0x2c]
call fcn.00407d6b
movsx eax, word [0x437bf4]
push eax
movsx eax, word [0x437bf8]
push eax
call fcn.0040fede
add word [0x437c00], ax
mov eax, dword [ebp - 0x10]
pop ecx
pop ecx
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
movsx eax, word [0x437c04]
push eax
mov dword [ebp - 0x10], ebx
push dword [0x437c10]
call fcn.0041004e
mov word [0x437c04], ax
mov ax, word [0x437c02]
imul ax, word [0x437bfe]
cmp dword [ebp - 0x2c], ebx
pop ecx
pop ecx
mov dword [0x437c20], edi
mov word [0x437bfe], ax
je 0x4045d8
mov dword [ebp - 0x24], ebx
push dword [0x437c14]
mov byte [ebp - 4], 5
movsx eax, byte [0x437beb]
push dword [0x437c18]
mov byte [0x437bec], 0xfe
mov word [ebp - 0x4c], 8
push eax
call dword [sym.imp.KERNEL32.dll_MulDiv]
add word [0x437bf4], ax
xor eax, eax
cmp byte [0x437bed], bl
push 0xffffffffffffffff
push str.base
setne al
add byte [0x437bea], al
mov eax, dword [0x437c18]
and eax, 0x22d9ffff
mov dword [0x437c14], eax
call fcn.00405229
pop ecx
lea edx, [ebp - 0x10]
pop ecx
lea esi, [ebp - 0x4c]
push edx
mov dword [ebp - 0x44], eax
sub esp, 0x10
mov eax, dword [ebp - 0x2c]
mov edi, esp
movsd dword es:[edi], dword [esi]
mov ecx, dword [eax]
push eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call dword [ecx + 0x30]
xor eax, eax
cmp dword [0x437c14], ebx
push dword [ebp - 0x44]
mov byte [0x437bed], 0xfe
setne al
mov dword [0x437c1c], eax
mov al, byte [0x437bea]
dec al
mov byte [0x437be9], al
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
push dword [ebp - 0x10]
lea ecx, [ebp - 0x24]
call fcn.00407d6b
movsx eax, word [0x437bf4]
push eax
push 0xc437ffff
mov dword [0x437c10], 0x5b760001
call fcn.0040ffe3
mov word [0x437bf4], ax
movsx eax, word [0x437bfe]
push eax
movsx eax, byte [0x437bec]
push eax
call fcn.00410016
add word [0x437bf8], ax
mov eax, dword [ebp - 0x10]
add esp, 0x10
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [0x437c10]
xor ecx, ecx
cmp word [0x437c04], bx
mov dword [ebp - 0x10], ebx
setne cl
add eax, ecx
mov dword [0x437c10], eax
sub al, byte [0x437c08]
mov byte [0x437bec], al
movsx eax, byte [0x437bef]
push eax
push 0xbf8fffff
call fcn.0040ffe3
pop ecx
add byte [0x437beb], al
mov eax, dword [ebp - 0x24]
cmp eax, ebx
pop ecx
je 0x4045c7
mov ecx, dword [eax]
lea edx, [ebp - 0x34]
push edx
push eax
call dword [ecx + 0x24]
or byte [0x437be8], 0xff
push 0xa70fffff
push dword [0x437c24]
call fcn.004100bc
cmp dword [ebp - 0x34], ebx
pop ecx
pop ecx
mov byte [0x437beb], al
jle 0x4045c7
mov dword [ebp - 0x14], ebx
push 0xd34dffff
push 0x1cafffff
mov byte [ebp - 4], 6
mov dword [ebp - 0x20], ebx
call fcn.0040fede
push dword [0x437c10]
mov word [0x437c04], ax
movsx eax, byte [0x437bed]
push eax
call fcn.004100bc
add esp, 0x10
cmp dword [ebp - 0x34], ebx
mov byte [0x437bed], al
jle 0x4045b6
mov word [ebp - 0x4c], 3
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x44], eax
movsx eax, word [0x437c00]
push eax
movsx eax, byte [0x437bf0]
push eax
call fcn.004100bc
add dword [0x437c1c], eax
pop ecx
pop ecx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea edx, [ebp - 0x10]
lea esi, [ebp - 0x4c]
push edx
add dword [0x437c2c], eax
sub esp, 0x10
mov eax, dword [ebp - 0x24]
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 ecx, dword [eax]
push eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call dword [ecx + 0x2c]
push dword [ebp - 0x10]
lea ecx, [ebp - 0x14]
call fcn.00407d98
cmp byte [0x437be8], bl
setne al
mov byte [0x437bea], al
movsx eax, word [0x437bfc]
push eax
push 0x5fffff
call fcn.0040ffc6
pop ecx
mov byte [0x437beb], al
mov eax, dword [ebp - 0x10]
pop ecx
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [0x437c18]
push 0xe84fffff
and eax, 0x504bffff
mov dword [ebp - 0x10], ebx
add dword [0x437c0c], eax
movsx eax, word [0x437c00]
push eax
call fcn.0040ff78
mov dword [0x437c0c], eax
mov ax, word [0x437bfe]
mov cl, al
dec cl
mov byte [0x437bed], cl
movsx ecx, word [0x437c00]
movsx eax, ax
push ecx
push eax
call fcn.00410016
mov byte [0x437bec], al
or ecx, 0xffffffff
movsx ax, al
sub ecx, eax
add esp, 0x10
add word [0x437bf2], cx
cmp dword [ebp - 0x14], ebx
je 0x4045a7
push 0x9b8fffff
push 0xc201ffff
call fcn.00410016
add byte [0x437bee], al
mov al, byte [0x437beb]
inc al
pop ecx
mov byte [0x437bed], al
mov eax, dword [ebp - 0x38]
pop ecx
cmp dword [eax + 0x24], 1
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
jne 0x40459e
push str._blank
jmp 0x4045a3
push str._self
push eax
call dword [ecx + 0x24]
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x34]
jl 0x40446f
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 5
cmp eax, ebx
je 0x4045c7
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x24]
mov byte [ebp - 4], 4
cmp eax, ebx
je 0x4045d8
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x2c]
mov byte [ebp - 4], 3
cmp eax, ebx
je 0x4045e9
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
movsx eax, word [0x437bf2]
push eax
push 0x53a9ffff
call fcn.0040ff1a
add byte [0x437bec], al
mov dword [ebp - 0x18], ebx
movsx eax, word [0x437bfe]
push eax
mov byte [ebp - 4], 7
movsx eax, byte [0x437bec]
push eax
call fcn.0040ffc6
mov byte [0x437beb], al
push 0x174fffff
movsx eax, word [0x437bf2]
push eax
call fcn.00410016
mov byte [0x437bee], al
mov eax, dword [ebp + 0x10]
add esp, 0x18
cmp eax, ebx
jne 0x404646
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.00407d6b
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 0x4047f1
mov ecx, dword [eax]
lea edx, [ebp - 0x34]
push edx
push eax
call dword [ecx + 0x24]
cmp dword [ebp - 0x34], ebx
jle 0x4047f1
mov dword [ebp + 0x10], ebx
mov byte [ebp - 4], 8
mov dword [ebp - 0x2c], ebx
mov word [ebp - 0x4c], 3
mov eax, dword [ebp - 0x2c]
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.00407c21
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 0x404715
lea ecx, [ebp - 0x28]
call fcn.00425a34
mov eax, dword [ebp + 0x10]
lea edx, [ebp - 0x28]
push edx
push eax
mov ecx, dword [eax]
mov byte [ebp - 4], 9
call dword [ecx + 0x34]
push 0x43712c
lea ecx, [ebp - 0x28]
call fcn.00425b3d
test eax, eax
jne 0x404729
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 8
call fcn.00425abe
inc dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
cmp eax, dword [ebp - 0x34]
jl 0x404698
jmp 0x4047e0
mov eax, dword [ebp + 0x10]
lea edx, [ebp - 0x10]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x174]
movsx eax, word [0x437bf4]
push eax
push 0x94fbffff
call fcn.0040ff78
mov dword [0x437c1c], eax
pop ecx
movsx eax, word [0x437bfc]
imul eax, eax, 0xacc7ffff
pop ecx
mov dword [0x437c0c], eax
push dword [ebp - 0x10]
lea ecx, [ebp - 0x18]
call fcn.00407d6b
movsx eax, word [0x437bfa]
push eax
push dword [0x437c28]
call fcn.0041004e
pop ecx
mov byte [0x437bee], al
movsx eax, byte [0x437bed]
pop ecx
mov ecx, 0xe689ffff
sub ecx, eax
mov eax, dword [ebp - 0x10]
add dword [0x437c10], ecx
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
movsx eax, byte [0x437bed]
push eax
push dword [0x437c14]
call fcn.0040fede
mov dword [0x437c0c], eax
mov al, byte [0x437bed]
sub al, byte [0x437bfa]
pop ecx
pop ecx
mov dword [ebp - 0x10], ebx
add byte [0x437bec], al
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 8
call fcn.00425abe
mov eax, dword [ebp + 0x10]
mov byte [ebp - 4], 7
cmp eax, ebx
je 0x4047f1
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov al, byte [0x437bec]
cmp al, bl
je 0x404808
cmp word [0x437bf4], bx
je 0x404808
push 1
pop ecx
jmp 0x40480a
xor ecx, ecx
add word [0x437bf6], cx
movsx ax, al
add word [0x437bfa], ax
cmp dword [ebp - 0x18], ebx
je 0x405197
movsx eax, word [0x437c02]
push eax
push 0x792bffff
call fcn.0040ff1a
mov byte [0x437be8], al
mov dword [ebp - 0x2c], ebx
or word [0x437bf2], 0xffff
or byte [0x437beb], 0xff
push 0xe22fffff
push 0xffffffffffffffff
mov byte [ebp - 4], 0xa
call fcn.0041004e
push 0xffffffffffffffff
push 0x437128
mov word [0x437c04], ax
mov word [ebp - 0x4c], 8
call fcn.00405229
movsx ecx, byte [0x437bea]
mov dword [ebp - 0x44], eax
inc word [0x437bf8]
movsx eax, byte [0x437be9]
add eax, ecx
mov dword [0x437c10], eax
movsx eax, word [0x437bfa]
push eax
push 0xa9e9ffff
call fcn.0040ffc6
add esp, 0x20
lea edx, [ebp - 0x10]
lea esi, [ebp - 0x4c]
add byte [0x437bf1], al
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 [0x437c04]
push eax
push 0xf965ffff
call fcn.00410016
pop ecx
mov byte [0x437be9], al
mov eax, dword [0x437c20]
pop ecx
movsx ecx, byte [0x437be8]
push dword [ebp - 0x10]
and dword [0x437c1c], eax
or ecx, eax
mov dword [0x437c10], ecx
lea ecx, [ebp - 0x2c]
call fcn.00407d6b
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov ax, word [0x437c20]
inc word [0x437bfa]
sub word [0x437c04], ax
mov dword [ebp - 0x10], ebx
call dword [sym.imp.USER32.dll_GetActiveWindow]
mov byte [0x437be8], al
mov eax, dword [ebp - 0x2c]
cmp eax, ebx
mov word [0x437bfc], bx
je 0x40516a
mov ecx, dword [eax]
lea edx, [ebp - 0x34]
push edx
push eax
call dword [ecx + 0x24]
call dword [sym.imp.USER32.dll_GetDesktopWindow]
add byte [0x437bef], al
mov al, byte [0x437bee]
movsx cx, al
or cx, word [0x437bfa]
add word [0x437bfe], cx
cmp dword [ebp - 0x34], ebx
jle 0x40516a
movsx cx, byte [0x437bea]
sub ecx, dword [0x437c0c]
movsx eax, al
push eax
push 0xacedffff
mov word [0x437bfe], cx
call fcn.0040ff78
push dword [0x437c1c]
add dword [0x437c24], eax
push 0x2663ffff
call fcn.00410092
push 0x381ffff
push 0x4cdffff
mov word [0x437bf6], ax
call fcn.0040ff1a
mov byte [0x437be8], al
or ecx, 0xffffffff
movsx ax, byte [0x437bef]
sub ecx, eax
add esp, 0x18
mov word [0x437c00], cx
call dword [sym.imp.KERNEL32.dll_GetLastError]
add dword [0x437c10], eax
cmp byte [0x437bea], bl
je 0x404a0f
cmp word [0x437bfa], bx
je 0x404a0f
push 1
pop eax
jmp 0x404a11
xor eax, eax
push dword [0x437c10]
add dword [0x437c28], eax
call dword [sym.imp.KERNEL32.dll_IsValidCodePage]
mov word [0x437bfa], ax
movsx eax, word [0x437bf8]
push eax
push 0x7dddffff
call fcn.0040fede
mov dword [0x437c20], eax
movsx eax, word [0x437bfe]
push eax
push eax
call fcn.0040ff4b
add byte [0x437bf0], al
mov al, byte [0x437bef]
neg al
mov byte [0x437bef], al
mov dword [ebp - 0x14], ebx
movsx eax, word [0x437bf8]
push eax
push 0x18c9ffff
mov byte [ebp - 4], 0xb
call fcn.0040ff4b
add word [0x437bf4], ax
push 0x58e7ffff
push 0x28c1ffff
mov dword [ebp - 0x20], ebx
call fcn.00410092
add byte [0x437bf0], al
add esp, 0x20
cmp dword [ebp - 0x34], ebx
jle 0x405119
mov word [ebp - 0x6c], 3
cmp byte [0x437bf0], bl
je 0x404ac1
cmp dword [0x437c08], ebx
mov byte [0x437be8], 1
jne 0x404ac7
mov byte [0x437be8], bl
movsx ecx, byte [0x437be8]
movsx eax, word [0x437bfc]
add ecx, dword [0x437c18]
push 0xffffffffffffffff
add ecx, eax
mov dword [0x437c18], ecx
call dword [sym.imp.USER32.dll_IsCharAlphaA]
mov dword [0x437c10], eax
mov al, byte [0x437c28]
and al, byte [0x437beb]
lea edx, [ebp - 0x10]
push edx
lea esi, [ebp - 0x6c]
add byte [0x437bed], al
mov eax, dword [ebp - 0x20]
sub esp, 0x10
mov dword [ebp - 0x64], 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 - 0x6c]
mov edi, esp
movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x2c]
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]
movsx eax, word [0x437bf8]
push eax
push 0x781dffff
call fcn.0040fede
pop ecx
mov byte [0x437be9], al
pop ecx
push dword [ebp - 0x10]
lea ecx, [ebp - 0x14]
call fcn.00407dc5
push 0xbf07ffff
push dword [0x437c28]
call fcn.00410016
add byte [0x437bed], al
movsx eax, word [0x437bf8]
push eax
push dword [0x437c0c]
call fcn.0040ff78
add dword [0x437c20], eax
movsx eax, byte [0x437be8]
push eax
push dword [0x437c2c]
call fcn.0040ff4b
add dword [0x437c14], eax
mov eax, dword [ebp - 0x10]
add esp, 0x18
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
call dword [sym.imp.USER32.dll_GetInputState]
mov dword [0x437c20], eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
push dword [0x437c24]
mov dword [ebp - 0x10], ebx
movzx eax, ax
push 0x2b19ffff
mov dword [0x437c2c], eax
mov byte [ebp + 0x13], bl
call fcn.0040ff4b
cmp dword [ebp - 0x14], ebx
pop ecx
pop ecx
mov dword [0x437c18], eax
je 0x40501b
push eax
push 0xd89fffff
call fcn.0040ffc6
pop ecx
mov byte [0x437bed], al
pop ecx
mov byte [ebp + 0x13], 1
lea ecx, [ebp - 0x28]
call fcn.00425a34
movsx eax, word [0x437bf6]
push 0xbd9fffff
push eax
mov byte [ebp - 4], 0xc
call fcn.0040ffc6
add byte [0x437bed], al
mov eax, dword [ebp - 0x14]
pop ecx
lea edx, [ebp - 0x28]
pop ecx
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x28]
test eax, eax
jl 0x404cd0
mov ax, word [0x437bf8]
shl ax, 1
add eax, dword [0x437c20]
mov word [0x437bf8], ax
mov eax, dword [0x437c2c]
add eax, 0xcb75ffff
mov dword [0x437c14], eax
mov eax, dword [ebp - 0x38]
cmp dword [eax + 0x24], 1
jne 0x404c6d
mov eax, dword [ebp - 0x14]
push str._blank
mov ecx, dword [eax]
jmp 0x404c97
cmp dword [ebp - 0x28], ebx
je 0x404c9b
push dword [ebp - 0x28]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
test eax, eax
jbe 0x404c9b
mov esi, str._self
lea ecx, [ebp - 0x28]
push esi
call fcn.00425b3d
test eax, eax
jne 0x404c9b
mov eax, dword [ebp - 0x14]
push esi
mov ecx, dword [eax]
push eax
call dword [ecx + 0x24]
movsx eax, word [0x437bfa]
push eax
push dword [0x437c14]
call fcn.00410016
add byte [0x437bec], al
push 0xc4ffffff
movsx eax, word [0x437bfa]
push eax
call fcn.0041004e
add esp, 0x10
add word [0x437bfe], ax
mov eax, dword [0x437c18]
push eax
push eax
call fcn.0040ff78
add byte [0x437beb], al
pop ecx
movsx ax, byte [0x437bee]
imul ax, word [0x437c02]
mov word [0x437bfc], ax
mov al, byte [0x437bf8]
dec al
pop ecx
add byte [0x437bec], al
mov eax, dword [ebp - 0x14]
lea edx, [ebp - 0x28]
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x20]
test eax, eax
jl 0x404fdf
mov al, byte [0x437be9]
dec word [0x437bf2]
sub byte [0x437bed], al
cmp byte [ebp + 0x14], bl
je 0x404d6a
mov esi, dword [0x430fac]
push 0xfffffffffffffffc
pop edi
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and eax, edi
call fcn.0042c5d0
mov ecx, esp
push ebx
mov edx, esi
call fcn.004298e5
push eax
lea ecx, [ebp - 0x28]
call fcn.00425f53
cmp eax, 0xffffffff
jne 0x404d6d
mov byte [ebp + 0x13], bl
jmp 0x404d6d
push 0xfffffffffffffffc
pop edi
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, dword [0x430fb0]
mov dword [0x437c24], eax
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and eax, edi
call fcn.0042c5d0
mov ecx, esp
push ebx
mov edx, esi
call fcn.004298e5
push eax
lea ecx, [ebp - 0x28]
call fcn.00425f53
cmp eax, 0xffffffff
je 0x404daa
mov byte [ebp + 0x13], bl
movsx eax, word [0x437bfe]
inc word [0x437bf8]
push 0xb533ffff
push dword [0x437c14]
and eax, 0xca23ffff
add dword [0x437c0c], eax
call fcn.0040ffc6
mov esi, dword [0x430fb4]
add byte [0x437bf1], al
pop ecx
mov al, byte [esi]
pop ecx
add al, 0x16
movzx eax, al
add eax, 3
and eax, edi
call fcn.0042c5d0
mov ecx, esp
push ebx
mov edx, esi
call fcn.004298e5
push eax
lea ecx, [ebp - 0x28]
call fcn.00425f53
cmp eax, 0xffffffff
je 0x404e0d
mov byte [ebp + 0x13], bl
mov al, byte [0x437c08]
sub al, byte [0x437c18]
add byte [0x437bf0], al
movsx eax, byte [0x437bf1]
push eax
push 0x1a6bffff
call fcn.00410016
mov dword [0x437c14], eax
push 0x43bdffff
movsx eax, byte [0x437bea]
push eax
call fcn.0040ff1a
mov esi, dword [0x430fb8]
add word [0x437bf2], ax
add esp, 0x10
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and eax, edi
call fcn.0042c5d0
mov ecx, esp
push ebx
mov edx, esi
call fcn.004298e5
push eax
lea ecx, [ebp - 0x28]
call fcn.00425f53
cmp eax, 0xffffffff
je 0x404e83
mov byte [ebp + 0x13], bl
movsx eax, word [0x437bf2]
push eax
push 0x72a3ffff
call fcn.0040fede
add byte [0x437bea], al
cmp word [0x437c00], bx
mov esi, dword [0x430fbc]
pop ecx
setne al
mov byte [0x437bf1], al
mov al, byte [esi]
add al, 0x16
pop ecx
movzx eax, al
add eax, 3
and eax, edi
call fcn.0042c5d0
mov ecx, esp
push ebx
mov edx, esi
call fcn.004298e5
push eax
lea ecx, [ebp - 0x28]
call fcn.00425f53
cmp eax, 0xffffffff
je 0x404ede
mov byte [ebp + 0x13], bl
mov esi, dword [0x430fc0]
xor eax, eax
cmp byte [0x437bee], bl
setne al
add byte [0x437bee], al
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and eax, edi
call fcn.0042c5d0
mov ecx, esp
push ebx
mov edx, esi
call fcn.004298e5
push eax
lea ecx, [ebp - 0x28]
call fcn.00425f53
cmp eax, 0xffffffff
je 0x404f21
mov byte [ebp + 0x13], bl
push 0x8e13ffff
call dword [sym.imp.USER32.dll_IsWindow]
mov esi, dword [0x430fc4]
add word [0x437bfe], ax
mov dword [0x437c08], 0x1da00001
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and eax, edi
call fcn.0042c5d0
mov ecx, esp
push ebx
mov edx, esi
call fcn.004298e5
push eax
lea ecx, [ebp - 0x28]
call fcn.00425f53
cmp eax, 0xffffffff
je 0x404f6f
mov byte [ebp + 0x13], bl
movsx ax, byte [0x437bee]
movsx cx, byte [0x437be9]
mov esi, dword [0x430fc8]
sub eax, ecx
add word [0x437bf2], ax
mov dword [0x437c28], 1
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and eax, edi
call fcn.0042c5d0
mov ecx, esp
push ebx
mov edx, esi
call fcn.004298e5
push eax
lea ecx, [ebp - 0x28]
call fcn.00425f53
cmp eax, 0xffffffff
je 0x404fc4
mov byte [ebp + 0x13], bl
movsx eax, byte [0x437bea]
push eax
push 0xdeb1ffff
call fcn.00410092
add word [0x437c04], ax
pop ecx
pop ecx
movsx eax, byte [0x437bf1]
push eax
push 0xdaf1ffff
call fcn.0041004e
add dword [0x437c24], eax
push 0x615ffff
push 0x38fdffff
call fcn.0040ffe3
add byte [0x437bf0], al
add esp, 0x10
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 0xb
call fcn.00425abe
push 0x32cbffff
push dword [0x437c28]
call fcn.0040fede
mov byte [0x437bee], al
push 0xe6bbffff
movsx eax, word [0x437bf8]
push eax
call fcn.0041004e
add esp, 0x10
mov word [0x437bfa], ax
call dword [sym.imp.KERNEL32.dll_GetLastError]
add word [0x437bf4], ax
cmp byte [ebp + 0x13], bl
je 0x4050dc
movsx eax, word [0x437bf2]
mov esi, dword [ebp + 0xc]
add eax, 0x21a5ffff
cmp esi, ebx
mov dword [0x437c14], eax
mov dword [0x437c20], 1
mov dword [ebp + 0x10], esi
je 0x405088
mov eax, dword [esi]
push esi
call dword [eax + 4]
cmp esi, ebx
mov byte [ebp - 4], 0xd
mov dword [ebp - 0x44], esi
je 0x405099
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.00407d5a
mov eax, dword [ebp - 0x44]
mov byte [ebp - 4], 0xd
cmp eax, ebx
je 0x4050c0
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp esi, ebx
mov byte [ebp - 4], 0xb
je 0x4050ce
mov eax, dword [esi]
push esi
call dword [eax + 8]
inc word [0x437bf8]
inc word [0x437c04]
inc word [0x437bfa]
or ax, 0xffff
sub ax, word [0x437bfa]
push 0x22a5ffff
push 0xd3e7ffff
mov word [0x437bfc], ax
call fcn.0041004e
inc dword [ebp - 0x20]
mov dword [0x437c10], eax
mov eax, dword [ebp - 0x20]
pop ecx
cmp eax, dword [ebp - 0x34]
pop ecx
jl 0x404aaa
movsx eax, word [0x437bf2]
push eax
push 0xfb81ffff
call fcn.0040ff1a
mov word [0x437bf4], ax
mov eax, dword [0x437c14]
and eax, 0x1219ffff
pop ecx
mov dword [0x437c28], eax
mov eax, dword [ebp - 0x14]
cmp eax, ebx
pop ecx
mov byte [ebp - 4], 0xa
je 0x405153
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push 0xffffffffffffffff
mov dword [0x437c1c], 0xdd060001
call dword [sym.imp.USER32.dll_IsCharAlphaA]
mov byte [0x437be9], al
movsx eax, word [0x437bf6]
push eax
push dword [0x437c28]
call fcn.004100bc
add word [0x437bfa], ax
mov eax, dword [ebp - 0x2c]
pop ecx
cmp eax, ebx
pop ecx
mov byte [ebp - 4], 7
je 0x405197
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push 0x6235ffff
push dword [0x437c0c]
call fcn.0040ff78
add word [0x437c02], ax
pop ecx
pop ecx
lea eax, [ebp - 0x5c]
mov ecx, dword [ebp + 8]
push eax
call fcn.00407c92
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x3c], 1
cmp eax, ebx
mov byte [ebp - 4], 3
je 0x4051e5
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x4051e5
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x5c]
push eax
call fcn.00407c92
mov dword [ebp - 0x3c], edi
mov eax, dword [ebp - 0x1c]
mov byte [ebp - 4], 2
cmp eax, ebx
je 0x4051f6
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 1
cmp eax, ebx
je 0x405207
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], bl
call fcn.00407cfa
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