Function at 0x4201fb
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
mov esi, dword [ebp + 8]
xor ebx, ebx
push edi
mov dword [ebp - 8], ebx
mov ecx, dword [esi + 0x64]
mov eax, dword [esi + 0x60]
mov dword [ebp - 0x14], ecx
mov ecx, dword [esi + 0x74]
cmp ecx, dword [esi + 0x7c]
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 0xcc]
mov dword [ebp - 0x18], eax
jne 0x42023c
cmp dword [esi + 0x98], ebx
jne 0x42023c
mov dword [ebp - 0xc], ebx
mov dword [esi + 0xd8], eax
jmp 0x420243
mov dword [ebp - 0xc], 1
push 0x11
mov dword [ebp - 4], 1
call dword [sym.imp.USER32.dll_GetKeyState]
push dword [esi + 0xc]
mov di, ax
and edi, 0x8000
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov dword [ebp + 8], eax
mov eax, dword [ebp + 0xc]
add eax, 0xffffffdf
cmp eax, 7
ja case.default.0x420276
jmp dword [eax*4 + 0x420e64]
mov eax, dword [esi + 0xcc]
or dword [esi + 0xd4], 0xffffffff
cmp eax, dword [0x4ea834]
jge 0x42084b
mov eax, dword [esi + 0xc8]
cmp eax, dword [esi + 0x5c]
jl 0x420380
mov edx, dword [esi + 0x16c]
mov eax, dword [esi + 0xbc]
mov ecx, edx
sub ecx, eax
add dword [esi + 0xd0], ecx
mov eax, dword [esi + 0xd0]
xor ecx, ecx
cmp dword [esi + 0x88], ecx
je 0x4202d3
cmp dword [esi + 0x510], ecx
je 0x420309
cmp dword [esi + 0x508], ecx
je 0x4202df
cmp edi, ecx
je 0x4202f7
cmp dword [esi + 0x9c], ecx
je 0x420309
cmp dword [esi + 0x90], ecx
jne 0x4202f7
cmp dword [esi + 0x8c], ecx
je 0x420309
mov eax, dword [esi + 0xc8]
inc eax
mov dword [esi + 0xc8], eax
jmp 0x420912
cmp eax, dword [esi + 0x80]
jge 0x420335
cmp dword [esi + 0x508], ecx
je 0x42031d
cmp edi, ecx
je 0x4202f7
cmp dword [esi + 0x9c], ecx
je 0x420335
cmp dword [esi + 0x90], ecx
jne 0x4202f7
cmp dword [esi + 0x8c], ecx
jne 0x4202f7
mov edi, dword [esi + 0x6c]
mov ecx, dword [esi + 0x64]
dec edi
cmp ecx, edi
jge 0x42036d
mov eax, dword [esi + 0x598]
and dword [esi + 0xc8], 0
add eax, dword [esi + 0x4ec]
mov dword [esi + 0xd0], eax
lea eax, [ecx + 1]
push eax
push esi
mov dword [esi + 0x64], eax
call fcn.004163fa
pop ecx
pop ecx
jmp 0x4209f9
sub eax, edx
add eax, dword [esi + 0xbc]
mov dword [esi + 0xd0], eax
jmp 0x420912
mov eax, dword [esi + 0x78]
cmp eax, dword [esi + 0x50]
jge 0x42084b
xor ecx, ecx
cmp edi, ecx
je 0x420527
cmp dword [esi + 0x5a4], ecx
mov edi, dword [ebp + 8]
mov dword [ebp + 0xc], eax
je 0x420453
mov eax, dword [esi + 0x78]
push 0x107
mov ax, word [edi + eax*2]
push eax
call fcn.00486153
pop ecx
test eax, eax
pop ecx
je 0x4203cb
inc dword [esi + 0x78]
mov eax, dword [esi + 0x78]
cmp eax, dword [esi + 0x50]
jl 0x4203a8
mov eax, dword [esi + 0x78]
cmp dword [ebp + 0xc], eax
jne 0x4203f5
cmp eax, dword [esi + 0x50]
jge 0x4203f5
mov eax, dword [esi + 0x78]
push 0x10
mov ax, word [edi + eax*2]
push eax
call fcn.00486153
pop ecx
test eax, eax
pop ecx
je 0x4203f5
inc dword [esi + 0x78]
mov eax, dword [esi + 0x78]
jmp 0x4203d3
mov eax, dword [esi + 0x78]
cmp eax, dword [esi + 0x50]
jge 0x420501
mov eax, dword [esi + 0x78]
mov ecx, dword [ebp + 8]
push 0x107
mov ax, word [ecx + eax*2]
push eax
call fcn.00486153
pop ecx
test eax, eax
pop ecx
jne 0x420501
mov eax, dword [esi + 0x78]
mov ecx, dword [ebp + 8]
push 0x10
mov ax, word [ecx + eax*2]
push eax
call fcn.00486153
pop ecx
test eax, eax
pop ecx
jne 0x420501
mov eax, dword [esi + 0x78]
mov ecx, dword [ebp + 8]
cmp word [ecx + eax*2], 0xd
je 0x420501
inc eax
mov dword [esi + 0x78], eax
jmp 0x4203f8
mov eax, dword [esi + 0x78]
movzx eax, byte [eax + edi]
push eax
call fcn.0048645f
test eax, eax
pop ecx
jne 0x42046e
mov eax, dword [esi + 0x78]
cmp byte [eax + edi], 0x80
jb 0x420484
mov eax, dword [esi + 0x78]
add eax, edi
push eax
call fcn.0048613c
sub eax, edi
pop ecx
cmp eax, dword [esi + 0x50]
mov dword [esi + 0x78], eax
jl 0x420453
mov eax, dword [esi + 0x78]
cmp dword [ebp + 0xc], eax
jne 0x4204b6
cmp eax, dword [esi + 0x50]
jge 0x4204b6
mov eax, dword [esi + 0x78]
movzx eax, byte [eax + edi]
push eax
call fcn.004863dc
test eax, eax
pop ecx
je 0x4204b6
mov eax, dword [esi + 0x78]
add eax, edi
push eax
call fcn.0048613c
sub eax, edi
pop ecx
mov dword [esi + 0x78], eax
jmp 0x42048c
mov eax, dword [esi + 0x78]
cmp eax, dword [esi + 0x50]
jge 0x420501
mov eax, dword [esi + 0x78]
movzx eax, byte [eax + edi]
push eax
call fcn.0048645f
test eax, eax
pop ecx
jne 0x420501
mov eax, dword [esi + 0x78]
movzx eax, byte [eax + edi]
push eax
call fcn.004863dc
test eax, eax
pop ecx
jne 0x420501
mov eax, dword [esi + 0x78]
add eax, edi
mov cl, byte [eax]
cmp cl, 0x80
jae 0x420501
cmp cl, 0xd
je 0x420501
push eax
call fcn.0048613c
sub eax, edi
pop ecx
mov dword [esi + 0x78], eax
jmp 0x4204b9
push dword [esi + 0x78]
push esi
call fcn.004163ac
push eax
push esi
mov dword [esi + 0x64], eax
call fcn.004163fa
mov ecx, dword [esi + 0x78]
add esp, 0x10
sub ecx, eax
mov dword [esi + 0xc8], ecx
jmp 0x42084b
cmp dword [esi + 0x98], ecx
je 0x420584
mov edx, dword [esi + 0x74]
cmp edx, dword [esi + 0x7c]
je 0x420584
cmp dword [esi + 0x57c], ecx
jne 0x420584
push 0xffffffffffffffff
push eax
push esi
call fcn.0041759c
mov ecx, dword [0x4ea824]
add esp, 0xc
lea ecx, [ecx + ecx*2 + 0xb]
cmp eax, ecx
jg 0x420584
push 0xffffffffffffffff
push dword [esi + 0x78]
push esi
call fcn.0041759c
mov ecx, dword [0x4ea824]
add esp, 0xc
lea ecx, [ecx + ecx*2 + 0xa]
cmp eax, ecx
jne 0x420584
inc dword [esi + 0x64]
and dword [esi + 0xc8], 0
jmp 0x42084b
cmp dword [esi + 0x5a4], 0
je 0x420595
push 1
pop ebx
jmp 0x420953
mov eax, dword [esi + 0x78]
add eax, dword [ebp + 8]
push eax
call fcn.0048613c
mov ebx, eax
pop ecx
sub ebx, dword [esi + 0x78]
sub ebx, dword [ebp + 8]
jmp 0x420953
or dword [esi + 0xd4], 0xffffffff
test edi, edi
je 0x4208ee
mov edi, dword [esi + 0x78]
push edi
push esi
call fcn.004163ac
push eax
push esi
call fcn.004163fa
mov ecx, dword [ebp + 8]
add esp, 0x10
cmp dword [esi + 0x5a4], 0
je 0x420709
cmp dword [esi + 0x78], 0
lea ebx, [ecx + eax*2]
lea edi, [ecx + edi*2]
je case.default.0x420276
xor eax, eax
cmp edi, ebx
sete al
mov dword [ebp + 0xc], eax
cmp edi, dword [ebp + 8]
jbe 0x42065f
cmp edi, ebx
ja 0x420623
mov ebx, dword [ebp + 8]
mov eax, edi
sub eax, ebx
sar eax, 1
dec eax
push eax
push esi
call fcn.004163ac
push eax
push esi
call fcn.004163fa
add esp, 0x10
lea ebx, [ebx + eax*2]
dec edi
push 0x107
dec edi
mov ax, word [edi]
push eax
call fcn.00486153
pop ecx
test eax, eax
pop ecx
jne 0x42065f
mov ax, word [edi]
push 0x10
push eax
call fcn.00486153
pop ecx
test eax, eax
pop ecx
jne 0x42065f
mov ax, word [edi]
cmp ax, 0x80
jae 0x42065f
cmp ax, 0xa
jne 0x4205fc
cmp dword [ebp + 0xc], 0
jne 0x4205fc
mov ax, word [edi]
push 0x10
push eax
call fcn.00486153
pop ecx
test eax, eax
pop ecx
je 0x4206b7
cmp edi, dword [ebp + 8]
jbe 0x4206ff
mov ax, word [edi]
push 0x10
push eax
call fcn.00486153
pop ecx
test eax, eax
pop ecx
jne 0x420691
cmp word [edi], 0x80
jb 0x4206fd
cmp edi, ebx
ja 0x4206b3
mov ebx, dword [ebp + 8]
mov eax, edi
sub eax, ebx
sar eax, 1
dec eax
push eax
push esi
call fcn.004163ac
push eax
push esi
call fcn.004163fa
add esp, 0x10
lea ebx, [ebx + eax*2]
dec edi
dec edi
jmp 0x420670
cmp edi, dword [ebp + 8]
jbe 0x4206ff
cmp edi, ebx
ja 0x4206de
mov ebx, dword [ebp + 8]
mov eax, edi
sub eax, ebx
sar eax, 1
dec eax
push eax
push esi
call fcn.004163ac
push eax
push esi
call fcn.004163fa
add esp, 0x10
lea ebx, [ebx + eax*2]
mov ax, word [edi]
push 0x107
push eax
call fcn.00486153
pop ecx
test eax, eax
pop ecx
jne 0x4206f9
cmp word [edi], 0x80
jb 0x4206fd
dec edi
dec edi
jmp 0x4206b7
inc edi
inc edi
sub edi, dword [ebp + 8]
sar edi, 1
jmp 0x420826
add edi, ecx
cmp dword [esi + 0x78], 0
lea ebx, [eax + ecx]
je case.default.0x420276
xor eax, eax
cmp edi, ebx
sete al
mov dword [ebp + 0xc], eax
cmp edi, dword [ebp + 8]
jbe 0x42077e
cmp edi, ebx
ja 0x420747
mov eax, edi
sub eax, dword [ebp + 8]
dec eax
push eax
push esi
call fcn.004163ac
push eax
push esi
call fcn.004163fa
mov ebx, eax
add esp, 0x10
add ebx, dword [ebp + 8]
push edi
push ebx
call fcn.00485320
mov edi, eax
movzx eax, byte [edi]
push eax
call fcn.0048645f
add esp, 0xc
test eax, eax
jne 0x42077e
movzx eax, byte [edi]
push eax
call fcn.004863dc
test eax, eax
pop ecx
jne 0x42077e
mov al, byte [edi]
cmp al, 0x80
jae 0x42077e
cmp al, 0xa
jne 0x420722
cmp dword [ebp + 0xc], 0
jne 0x420722
movzx eax, byte [edi]
push eax
call fcn.004863dc
test eax, eax
pop ecx
je 0x4207d5
cmp edi, dword [ebp + 8]
jbe 0x420823
movzx eax, byte [edi]
push eax
call fcn.004863dc
test eax, eax
pop ecx
jne 0x4207a8
cmp byte [edi], 0x80
jb 0x42081a
cmp edi, ebx
ja 0x4207c8
mov eax, edi
sub eax, dword [ebp + 8]
dec eax
push eax
push esi
call fcn.004163ac
push eax
push esi
call fcn.004163fa
mov ebx, eax
add esp, 0x10
add ebx, dword [ebp + 8]
push edi
push ebx
call fcn.00485320
pop ecx
mov edi, eax
pop ecx
jmp 0x42078c
cmp edi, dword [ebp + 8]
jbe 0x420823
cmp edi, ebx
ja 0x4207fa
mov eax, edi
sub eax, dword [ebp + 8]
dec eax
push eax
push esi
call fcn.004163ac
push eax
push esi
call fcn.004163fa
mov ebx, eax
add esp, 0x10
add ebx, dword [ebp + 8]
movzx eax, byte [edi]
push eax
call fcn.0048645f
test eax, eax
pop ecx
jne 0x42080d
cmp byte [edi], 0x80
jb 0x42081a
push edi
push ebx
call fcn.00485320
pop ecx
mov edi, eax
pop ecx
jmp 0x4207d5
push edi
call fcn.0048613c
pop ecx
mov edi, eax
sub edi, dword [ebp + 8]
push edi
push esi
mov dword [esi + 0x78], edi
call fcn.004163ac
push eax
push esi
mov dword [esi + 0x64], eax
call fcn.004163fa
mov ecx, dword [esi + 0x78]
add esp, 0x10
sub ecx, eax
mov dword [esi + 0xc8], ecx
mov ebx, dword [ebp - 8]
mov eax, dword [esi + 0xc8]
mov ecx, dword [0x4ea834]
cmp eax, ecx
jl 0x42085d
mov eax, ecx
mov dword [esi + 0xc8], eax
mov eax, dword [esi + 0x64]
test eax, eax
jge 0x42086c
xor eax, eax
add dword [esi + 0x78], ebx
mov dword [esi + 0x64], eax
mov eax, dword [esi + 0x78]
test eax, eax
jg 0x42087b
xor eax, eax
mov ecx, dword [esi + 0x50]
mov dword [esi + 0x78], eax
cmp eax, ecx
jl 0x420887
mov eax, ecx
push esi
mov dword [esi + 0x78], eax
call fcn.00417b38
mov eax, dword [esi + 0x64]
pop ecx
cmp eax, dword [esi + 0x60]
jge 0x42089c
mov dword [esi + 0x60], eax
mov ecx, dword [esi + 0xa8]
mov edx, ecx
add edx, dword [esi + 0x60]
cmp eax, edx
jl 0x4208b3
mov edx, eax
sub edx, ecx
inc edx
mov dword [esi + 0x60], edx
xor ebx, ebx
cmp dword [ebp - 4], ebx
je 0x420d71
push eax
push dword [esi + 0xc8]
push esi
call fcn.0041759c
push 0xffffffffffffffff
push 1
push dword [esi + 0x64]
mov dword [esi + 0xcc], eax
push dword [esi + 0x78]
push 0x8000
push esi
call fcn.00417b5a
add esp, 0x24
jmp 0x420d92
mov ecx, dword [esi + 0xc8]
cmp ecx, dword [esi + 0x5c]
jle 0x42091b
mov eax, dword [esi + 0xbc]
sub eax, dword [esi + 0x16c]
add dword [esi + 0xd0], eax
dec ecx
mov dword [esi + 0xc8], ecx
and dword [ebp - 4], 0
jmp 0x42084b
mov eax, dword [esi + 0x78]
test eax, eax
je case.default.0x420276
test ecx, ecx
jle 0x42095e
cmp dword [esi + 0x5a4], 0
je 0x420938
or ebx, 0xffffffff
jmp 0x420953
mov edi, dword [ebp + 8]
lea ecx, [eax + edi]
mov eax, dword [esi + 0x58]
add eax, edi
push ecx
push eax
call fcn.00485320
mov ebx, eax
pop ecx
sub ebx, dword [esi + 0x78]
pop ecx
sub ebx, edi
add dword [esi + 0xc8], ebx
jmp 0x42084b
dec dword [esi + 0x64]
push dword [esi + 0x64]
push esi
call fcn.004174a8
push dword [esi + 0x64]
mov edi, eax
push esi
call fcn.004163fa
add esp, 0x10
add eax, edi
mov dword [esi + 0x78], eax
jmp 0x420afb
mov eax, dword [esi + 0x64]
test eax, eax
jle case.default.0x420276
dec eax
push eax
push esi
mov dword [esi + 0x64], eax
call fcn.004163fa
cmp dword [esi + 0xd4], 0xffffffff
mov dword [esi + 0x78], eax
lea eax, [esi + 0xd4]
pop ecx
pop ecx
jne 0x4209b4
mov ecx, dword [esi + 0xd0]
mov dword [eax], ecx
push dword [esi + 0xd0]
push esi
call fcn.004176eb
push dword [esi + 0x64]
mov edi, dword [esi + 0xc8]
push esi
call fcn.004174a8
add esp, 0x10
cmp edi, eax
jge 0x4209da
mov eax, edi
jmp 0x4209e5
push dword [esi + 0x64]
push esi
call fcn.004174a8
pop ecx
pop ecx
add dword [esi + 0x78], eax
mov eax, dword [esi + 0x58]
mov ecx, dword [esi + 0x78]
add eax, 0xfffffffe
cmp ecx, eax
jle 0x420912
mov dword [esi + 0x78], eax
jmp 0x420912
mov eax, dword [esi + 0x5c]
mov ecx, dword [esi + 0x58]
lea eax, [eax + ecx + 2]
cmp eax, dword [esi + 0x50]
jg 0x420912
inc dword [esi + 0x64]
push dword [esi + 0x64]
push esi
call fcn.004174a8
cmp dword [esi + 0xd4], 0xffffffff
mov edi, eax
lea eax, [esi + 0xd4]
pop ecx
pop ecx
jne 0x420a3b
mov ecx, dword [esi + 0xd0]
mov dword [eax], ecx
push dword [esi + 0xd0]
push esi
call fcn.004176eb
mov eax, dword [esi + 0xc8]
pop ecx
cmp eax, edi
pop ecx
jge 0x420a55
mov edi, eax
push dword [esi + 0x64]
push esi
call fcn.004163fa
pop ecx
add eax, edi
pop ecx
jmp 0x4209f9
xor edi, edi
cmp dword [0x4f4b20], edi
je 0x420a7d
mov ebx, dword [esi + 0x58]
or dword [esi + 0xd4], 0xffffffff
sub ebx, dword [esi + 0x78]
jmp 0x420afb
or dword [esi + 0xd4], 0xffffffff
cmp edi, dword [esi + 0x5c]
jge 0x420b06
cmp dword [esi + 0x5a4], 0
je 0x420aaf
mov eax, dword [esi + 0x58]
mov ecx, dword [ebp + 8]
add eax, edi
push 8
mov ax, word [ecx + eax*2]
push eax
call fcn.00486153
pop ecx
test eax, eax
pop ecx
je 0x420ae2
inc edi
jmp 0x420add
mov eax, dword [esi + 0x58]
mov ecx, dword [ebp + 8]
add eax, edi
movzx eax, byte [eax + ecx]
push eax
call fcn.0048634d
test eax, eax
pop ecx
je 0x420ae2
mov eax, dword [esi + 0x58]
add eax, edi
add eax, dword [ebp + 8]
push eax
call fcn.0048613c
sub eax, dword [esi + 0x58]
pop ecx
sub eax, dword [ebp + 8]
mov edi, eax
cmp edi, dword [esi + 0x5c]
jl 0x420a89
cmp edi, dword [esi + 0x5c]
jge 0x420b06
mov ecx, dword [esi + 0x78]
mov eax, dword [esi + 0x58]
mov edx, ecx
sub edx, eax
cmp edi, edx
je 0x420b06
sub eax, ecx
add eax, edi
mov ebx, eax
mov dword [esi + 0xc8], edi
jmp 0x42084b
mov ebx, dword [esi + 0x58]
sub ebx, dword [esi + 0x78]
jmp 0x420578
mov ebx, dword [esi + 0x58]
mov eax, dword [esi + 0x5c]
sub ebx, dword [esi + 0x78]
or dword [esi + 0xd4], 0xffffffff
mov dword [esi + 0xc8], eax
add ebx, eax
jmp 0x42084b
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov eax, dword [esi + 0xa8]
push 1
sub dword [esi + 0x64], eax
mov ebx, dword [esi + 0x64]
pop eax
cmp ebx, eax
mov edx, eax
jl 0x420b4e
mov edx, ebx
sub ebx, edx
mov dword [esi + 0x64], edx
je 0x420b6c
mov ecx, dword [esi + 0x74]
cmp ecx, dword [esi + 0x7c]
je 0x420b6c
cmp dword [esi + 0x98], 0
jne 0x420b6c
mov dword [esi + 0xa0], eax
mov eax, dword [esi + 0x5c]
mov ecx, dword [esi + 0xc8]
cmp eax, ecx
mov edi, eax
jl 0x420b7d
mov edi, ecx
push edx
push esi
call fcn.004163fa
add eax, edi
push esi
mov dword [esi + 0x78], eax
call fcn.00415fc4
push esi
call fcn.00417b38
add esp, 0x10
push 0
push 2
push 0x115
push dword [esi + 8]
call dword [sym.imp.USER32.dll_SendMessageA]
test ebx, ebx
je 0x420bbc
mov eax, dword [esi + 0x64]
add eax, ebx
test eax, eax
jge 0x420bb9
xor eax, eax
mov dword [esi + 0x64], eax
cmp dword [esi + 0xd4], 0xffffffff
lea eax, [esi + 0xd4]
jne 0x420bd3
mov ecx, dword [esi + 0xd0]
mov dword [eax], ecx
push dword [esi + 0xd0]
push esi
call fcn.004176eb
mov eax, dword [esi + 0x5c]
pop ecx
pop ecx
mov edi, eax
mov ecx, dword [esi + 0xc8]
cmp eax, ecx
jl 0x420bf2
mov edi, ecx
push dword [esi + 0x64]
push esi
call fcn.004163fa
add eax, edi
push esi
mov dword [esi + 0x78], eax
call fcn.00415fc4
push 0xffffffffffffffff
push 1
push dword [esi + 0x64]
push dword [esi + 0x78]
push dword [esi + 0xd0]
push esi
call fcn.00417b5a
push esi
call fcn.00417b38
add esp, 0x28
jmp 0x420d47
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov eax, dword [esi + 0xa8]
add dword [esi + 0x64], eax
mov eax, dword [esi + 0x6c]
mov ebx, dword [esi + 0x64]
add eax, 0xfffffffe
cmp eax, ebx
mov ecx, eax
jl 0x420c4d
mov ecx, ebx
test ecx, ecx
jge 0x420c55
xor eax, eax
jmp 0x420c5b
cmp eax, ebx
jl 0x420c5b
mov eax, ebx
sub ebx, eax
mov dword [esi + 0x64], eax
je 0x420c7d
mov ecx, dword [esi + 0x74]
cmp ecx, dword [esi + 0x7c]
je 0x420c7d
cmp dword [esi + 0x98], 0
jne 0x420c7d
mov dword [esi + 0xa0], 1
push eax
push esi
call fcn.004174a8
pop ecx
mov dword [esi + 0x5c], eax
pop ecx
mov edi, eax
mov ecx, dword [esi + 0xc8]
cmp eax, ecx
jl 0x420c97
mov edi, ecx
push dword [esi + 0x64]
push esi
call fcn.004163fa
add eax, edi
push esi
mov dword [esi + 0x78], eax
call fcn.00415fc4
push esi
call fcn.00417b38
add esp, 0x10
push 0
push 3
push 0x115
push dword [esi + 8]
call dword [sym.imp.USER32.dll_SendMessageA]
test ebx, ebx
je 0x420cdd
mov eax, dword [esi + 0x64]
lea ecx, [eax + ebx]
mov eax, dword [esi + 0x6c]
dec eax
cmp eax, ecx
jl 0x420cda
mov eax, ecx
mov dword [esi + 0x64], eax
cmp dword [esi + 0xd4], 0xffffffff
lea eax, [esi + 0xd4]
jne 0x420cf4
mov ecx, dword [esi + 0xd0]
mov dword [eax], ecx
push dword [esi + 0xd0]
push esi
call fcn.004176eb
push esi
call fcn.00417b38
mov eax, dword [esi + 0x5c]
mov ecx, dword [esi + 0xc8]
add esp, 0xc
cmp eax, ecx
mov edi, eax
jl 0x420d1a
mov edi, ecx
push dword [esi + 0x64]
push esi
call fcn.004163fa
add eax, edi
push esi
mov dword [esi + 0x78], eax
call fcn.00415fc4
push 0xffffffffffffffff
push 1
push dword [esi + 0x64]
push dword [esi + 0x78]
push dword [esi + 0xd0]
push esi
call fcn.00417b5a
add esp, 0x24
cmp dword [esi + 0x98], 0
je 0x420d57
push esi
call fcn.0041ff39
pop ecx
test ebx, ebx
je 0x420e5f
push 0
push 0
push dword [esi + 8]
call dword [sym.imp.USER32.dll_InvalidateRect]
jmp 0x420e5f
push 0xffffffffffffffff
push 1
push eax
lea edi, [esi + 0xd0]
push dword [esi + 0x78]
push dword [edi]
push esi
call fcn.00417b5a
push dword [edi]
push esi
call fcn.004176eb
add esp, 0x20
push esi
call fcn.00415fc4
cmp dword [esi + 0x98], ebx
pop ecx
je 0x420da8
push esi
call fcn.0041ff39
pop ecx
mov eax, dword [ebp - 0x10]
cmp eax, dword [esi + 0x60]
jne 0x420e2f
mov ecx, dword [esi + 0x64]
mov edi, dword [ebp - 0x14]
cmp edi, ecx
jge 0x420dc0
mov eax, ecx
sub eax, edi
jmp 0x420dc4
mov eax, edi
sub eax, ecx
mov edx, dword [esi + 0x74]
inc eax
cmp edx, dword [esi + 0x7c]
jne 0x420e06
cmp dword [ebp - 0xc], ebx
jne 0x420e06
cmp edi, ecx
je 0x420e3a
push dword [ebp + 8]
push 1
jge 0x420dec
push ecx
push esi
call fcn.0041cac6
push dword [ebp + 8]
push 1
push edi
jmp 0x420dfb
push edi
push esi
call fcn.0041cac6
push dword [ebp + 8]
push 1
push dword [esi + 0x64]
push esi
call fcn.0041cac6
add esp, 0x20
jmp 0x420e3a
cmp dword [esi + 0x9c], ebx
je 0x420e19
mov edx, dword [ebp - 0x18]
cmp edx, dword [esi + 0xcc]
jne 0x420e2f
cmp edi, ecx
jge 0x420e1f
mov ecx, edi
push dword [ebp + 8]
push eax
push ecx
push esi
call fcn.0041cac6
add esp, 0x10
jmp 0x420e3a
push ebx
push ebx
push dword [esi + 8]
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [esi + 0x74]
cmp eax, dword [esi + 0x7c]
jne 0x420e56
cmp dword [esi + 0x98], ebx
jne 0x420e56
mov eax, dword [esi + 0xcc]
mov dword [esi + 0xd8], eax
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
pop edi
pop esi
pop ebx
leave
ret