Function at 0x45e6c3
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
push 1
xor edi, edi
mov edx, dword [esi + 0xc0]
mov eax, dword [esi + 0xbc]
mov dword [ebp - 0x1c], edx
mov edx, dword [esi + 0xd0]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0x128]
xor ebx, ebx
cmp edx, dword [esi + 0xd8]
pop ecx
mov dword [ebp - 0x10], edi
mov dword [ebp - 0xc], ebx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x20], eax
jne 0x45e71b
cmp dword [esi + 0xf4], ebx
jne 0x45e71b
and dword [ebp - 0x14], ebx
mov dword [esi + 0x134], eax
jmp 0x45e71e
mov dword [ebp - 0x14], ecx
cmp dword [esi + 0xa98], 0
mov dword [ebp - 4], ecx
jne 0x45e73e
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov bx, ax
and ebx, 0x8000
mov dword [ebp - 0xc], ebx
push dword [esi + 0xc]
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.0x45e759
jmp dword [eax*4 + 0x45f7c5]
mov eax, dword [esi + 0x128]
or dword [esi + 0x130], 0xffffffff
cmp eax, dword [0x5c1d84]
jg 0x45f562
push dword [esi + 0xc0]
push esi
call fcn.0044ebd5
pop ecx
test eax, eax
pop ecx
je 0x45e7cd
push dword [esi + 0xc0]
push 1
push esi
call fcn.0044ea92
push eax
push esi
mov dword [esi + 0xc0], eax
call fcn.0044ed73
push esi
mov dword [esi + 0xd4], eax
call fcn.004516a2
add esp, 0x18
or dword [esi + 0x130], 0xffffffff
mov edi, dword [esi + 0xb4]
sub edi, dword [esi + 0xd4]
jmp 0x45eb6a
mov ecx, dword [esi + 0x124]
cmp ecx, dword [esi + 0xb8]
jl 0x45e8de
mov edx, dword [esi + 0x1c8]
mov eax, dword [esi + 0x118]
mov ebx, edx
sub ebx, eax
add dword [esi + 0x12c], ebx
mov eax, dword [esi + 0x12c]
xor ebx, ebx
cmp dword [esi + 0xe4], ebx
je 0x45e80d
cmp dword [esi + 0x570], ebx
je 0x45e84b
cmp dword [esi + 0x568], ebx
je 0x45e824
cmp dword [ebp - 0xc], 0
jne 0x45e824
cmp dword [esi + 0xe8], 0
je 0x45e83f
cmp dword [esi + 0xf8], 0
je 0x45e84b
cmp dword [esi + 0xec], 0
jne 0x45e83f
cmp dword [esi + 0xe8], 0
je 0x45e84b
inc ecx
mov dword [esi + 0x124], ecx
jmp 0x45e8d5
cmp eax, dword [esi + 0xdc]
jge 0x45e886
cmp dword [esi + 0x568], 0
je 0x45e86b
cmp dword [ebp - 0xc], 0
jne 0x45e86b
cmp dword [esi + 0xe8], 0
je 0x45e83f
cmp dword [esi + 0xf8], 0
je 0x45e886
cmp dword [esi + 0xec], 0
jne 0x45e83f
cmp dword [esi + 0xe8], 0
jne 0x45e83f
mov ebx, dword [esi + 0xc8]
mov ecx, dword [esi + 0xc0]
dec ebx
cmp ecx, ebx
jge 0x45e8c7
mov eax, dword [esi + 0xa5c]
and dword [esi + 0x124], 0
add eax, dword [esi + 0x548]
mov dword [esi + 0x12c], eax
lea eax, [ecx + 1]
push eax
push esi
mov dword [esi + 0xc0], eax
call fcn.0044ed73
pop ecx
pop ecx
jmp 0x45f0c0
sub eax, edx
add eax, dword [esi + 0x118]
mov dword [esi + 0x12c], eax
and dword [ebp - 4], 0
jmp 0x45f562
mov eax, dword [esi + 0xd4]
cmp eax, dword [esi + 0xac]
jge case.default.0x45e759
xor ecx, ecx
cmp ebx, ecx
je 0x45eb0d
cmp dword [esi + 0xa7c], ecx
mov dword [ebp + 0xc], eax
je 0x45e9fd
mov ebx, 0x107
mov eax, dword [esi + 0xd4]
mov ecx, dword [ebp + 8]
push ebx
mov ax, word [ecx + eax*2]
push eax
call fcn.005283d3
pop ecx
test eax, eax
pop ecx
jne 0x45e937
mov eax, dword [esi + 0xd4]
mov ecx, dword [ebp + 8]
cmp byte [ecx + eax*2], 0x80
jb 0x45e94b
inc dword [esi + 0xd4]
mov eax, dword [esi + 0xd4]
cmp eax, dword [esi + 0xac]
jl 0x45e90e
mov eax, dword [esi + 0xd4]
cmp dword [ebp + 0xc], eax
jne 0x45e987
cmp eax, dword [esi + 0xac]
jge 0x45e987
mov eax, dword [esi + 0xd4]
mov ecx, dword [ebp + 8]
push 0x10
mov ax, word [ecx + eax*2]
push eax
call fcn.005283d3
pop ecx
test eax, eax
pop ecx
je 0x45e987
inc dword [esi + 0xd4]
mov eax, dword [esi + 0xd4]
jmp 0x45e956
mov eax, dword [esi + 0xd4]
cmp eax, dword [esi + 0xac]
jge 0x45eade
mov eax, dword [esi + 0xd4]
mov ecx, dword [ebp + 8]
push ebx
mov ax, word [ecx + eax*2]
push eax
call fcn.005283d3
pop ecx
test eax, eax
pop ecx
jne 0x45eade
mov eax, dword [esi + 0xd4]
mov ecx, dword [ebp + 8]
push 0x10
mov ax, word [ecx + eax*2]
push eax
call fcn.005283d3
pop ecx
test eax, eax
pop ecx
jne 0x45eade
mov eax, dword [esi + 0xd4]
mov ecx, dword [ebp + 8]
cmp byte [eax + ecx], 0x80
jae 0x45eade
cmp word [ecx + eax*2], 0xd
je 0x45eade
inc eax
mov dword [esi + 0xd4], eax
jmp 0x45e98d
mov ebx, dword [ebp + 8]
mov eax, dword [esi + 0xd4]
movzx eax, byte [eax + ebx]
push eax
call fcn.00529127
test eax, eax
pop ecx
jne 0x45ea21
mov eax, dword [esi + 0xd4]
cmp byte [eax + ebx], 0x80
jb 0x45ea40
mov eax, dword [esi + 0xd4]
add eax, ebx
push eax
call fcn.00528f57
sub eax, ebx
pop ecx
cmp eax, dword [esi + 0xac]
mov dword [esi + 0xd4], eax
jl 0x45ea00
mov eax, dword [esi + 0xd4]
cmp dword [ebp + 0xc], eax
jne 0x45ea81
cmp eax, dword [esi + 0xac]
jge 0x45ea81
mov eax, dword [esi + 0xd4]
movzx eax, byte [eax + ebx]
push eax
call fcn.005290a4
test eax, eax
pop ecx
je 0x45ea81
mov eax, dword [esi + 0xd4]
add eax, ebx
push eax
call fcn.00528f57
sub eax, ebx
pop ecx
mov dword [esi + 0xd4], eax
jmp 0x45ea4b
mov eax, dword [esi + 0xd4]
cmp eax, dword [esi + 0xac]
jge 0x45eade
mov eax, dword [esi + 0xd4]
movzx eax, byte [eax + ebx]
push eax
call fcn.00529127
test eax, eax
pop ecx
jne 0x45eade
mov eax, dword [esi + 0xd4]
movzx eax, byte [eax + ebx]
push eax
call fcn.005290a4
test eax, eax
pop ecx
jne 0x45eade
mov eax, dword [esi + 0xd4]
add eax, ebx
mov cl, byte [eax]
cmp cl, 0x80
jae 0x45eade
cmp cl, 0xd
je 0x45eade
push eax
call fcn.00528f57
sub eax, ebx
pop ecx
mov dword [esi + 0xd4], eax
jmp 0x45ea87
push dword [esi + 0xd4]
push esi
call fcn.0044e9c3
push eax
push esi
mov dword [esi + 0xc0], eax
call fcn.0044ed73
mov ecx, dword [esi + 0xd4]
add esp, 0x10
sub ecx, eax
mov dword [esi + 0x124], ecx
jmp 0x45f562
cmp dword [esi + 0xf4], ecx
je 0x45eb76
mov edx, dword [esi + 0xd0]
cmp edx, dword [esi + 0xd8]
je 0x45eb76
cmp dword [esi + 0xa40], ecx
jne 0x45eb76
push 0xffffffffffffffff
push eax
push esi
call fcn.00450f67
mov ecx, dword [0x5c1d68]
add esp, 0xc
lea ecx, [ecx + ecx*2 + 0xb]
cmp eax, ecx
jg 0x45eb76
push 0xffffffffffffffff
push dword [esi + 0xd4]
push esi
call fcn.00450f67
mov ecx, dword [0x5c1d68]
add esp, 0xc
lea ecx, [ecx + ecx*2 + 0xa]
cmp eax, ecx
jne 0x45eb76
inc dword [esi + 0xc0]
and dword [esi + 0x124], 0
jmp 0x45f562
cmp dword [esi + 0xa7c], 0
je 0x45eb84
push 1
pop edi
jmp 0x45eb9f
mov eax, dword [esi + 0xd4]
add eax, dword [ebp + 8]
push eax
call fcn.00528f57
mov edi, eax
pop ecx
sub edi, dword [esi + 0xd4]
sub edi, dword [ebp + 8]
add dword [esi + 0x124], edi
jmp 0x45f562
or dword [esi + 0x130], 0xffffffff
and dword [ebp - 8], 0
test ebx, ebx
je 0x45ee5e
mov edi, dword [esi + 0xd4]
push edi
push esi
call fcn.0044e9c3
push eax
push esi
call fcn.0044ed73
mov ecx, dword [ebp + 8]
add esp, 0x10
cmp dword [esi + 0xa7c], 0
je 0x45ed0e
cmp dword [esi + 0xd4], 0
lea ebx, [ecx + eax*2]
lea edi, [ecx + edi*2]
je case.default.0x45e759
xor eax, eax
cmp edi, ebx
sete al
mov dword [ebp + 0xc], eax
cmp edi, dword [ebp + 8]
jbe 0x45ec64
cmp edi, ebx
ja 0x45ec28
mov ebx, dword [ebp + 8]
mov eax, edi
sub eax, ebx
sar eax, 1
dec eax
push eax
push esi
call fcn.0044e9c3
push eax
push esi
call fcn.0044ed73
add esp, 0x10
lea ebx, [ebx + eax*2]
dec edi
push 0x107
dec edi
mov ax, word [edi]
push eax
call fcn.005283d3
pop ecx
test eax, eax
pop ecx
jne 0x45ec64
mov ax, word [edi]
push 0x10
push eax
call fcn.005283d3
pop ecx
test eax, eax
pop ecx
jne 0x45ec64
mov ax, word [edi]
cmp ax, 0x80
jae 0x45ec64
cmp ax, 0xa
jne 0x45ec01
cmp dword [ebp + 0xc], 0
jne 0x45ec01
mov ax, word [edi]
push 0x10
push eax
call fcn.005283d3
pop ecx
test eax, eax
pop ecx
je 0x45ecbc
cmp edi, dword [ebp + 8]
jbe 0x45ed04
mov ax, word [edi]
push 0x10
push eax
call fcn.005283d3
pop ecx
test eax, eax
pop ecx
jne 0x45ec96
cmp word [edi], 0x80
jb 0x45ed02
cmp edi, ebx
ja 0x45ecb8
mov ebx, dword [ebp + 8]
mov eax, edi
sub eax, ebx
sar eax, 1
dec eax
push eax
push esi
call fcn.0044e9c3
push eax
push esi
call fcn.0044ed73
add esp, 0x10
lea ebx, [ebx + eax*2]
dec edi
dec edi
jmp 0x45ec75
cmp edi, dword [ebp + 8]
jbe 0x45ed04
cmp edi, ebx
ja 0x45ece3
mov ebx, dword [ebp + 8]
mov eax, edi
sub eax, ebx
sar eax, 1
dec eax
push eax
push esi
call fcn.0044e9c3
push eax
push esi
call fcn.0044ed73
add esp, 0x10
lea ebx, [ebx + eax*2]
mov ax, word [edi]
push 0x107
push eax
call fcn.005283d3
pop ecx
test eax, eax
pop ecx
jne 0x45ecfe
cmp word [edi], 0x80
jb 0x45ed02
dec edi
dec edi
jmp 0x45ecbc
inc edi
inc edi
sub edi, dword [ebp + 8]
sar edi, 1
jmp 0x45ee2e
add edi, ecx
cmp dword [esi + 0xd4], 0
lea ebx, [eax + ecx]
je case.default.0x45e759
xor eax, eax
cmp edi, ebx
sete al
mov dword [ebp + 0xc], eax
cmp edi, dword [ebp + 8]
jbe 0x45ed86
cmp edi, ebx
ja 0x45ed4f
mov eax, edi
sub eax, dword [ebp + 8]
dec eax
push eax
push esi
call fcn.0044e9c3
push eax
push esi
call fcn.0044ed73
mov ebx, eax
add esp, 0x10
add ebx, dword [ebp + 8]
push edi
push ebx
call fcn.00528500
mov edi, eax
movzx eax, byte [edi]
push eax
call fcn.00529127
add esp, 0xc
test eax, eax
jne 0x45ed86
movzx eax, byte [edi]
push eax
call fcn.005290a4
test eax, eax
pop ecx
jne 0x45ed86
mov al, byte [edi]
cmp al, 0x80
jae 0x45ed86
cmp al, 0xa
jne 0x45ed2a
cmp dword [ebp + 0xc], 0
jne 0x45ed2a
movzx eax, byte [edi]
push eax
call fcn.005290a4
test eax, eax
pop ecx
je 0x45eddd
cmp edi, dword [ebp + 8]
jbe 0x45ee2b
movzx eax, byte [edi]
push eax
call fcn.005290a4
test eax, eax
pop ecx
jne 0x45edb0
cmp byte [edi], 0x80
jb 0x45ee22
cmp edi, ebx
ja 0x45edd0
mov eax, edi
sub eax, dword [ebp + 8]
dec eax
push eax
push esi
call fcn.0044e9c3
push eax
push esi
call fcn.0044ed73
mov ebx, eax
add esp, 0x10
add ebx, dword [ebp + 8]
push edi
push ebx
call fcn.00528500
pop ecx
mov edi, eax
pop ecx
jmp 0x45ed94
cmp edi, dword [ebp + 8]
jbe 0x45ee2b
cmp edi, ebx
ja 0x45ee02
mov eax, edi
sub eax, dword [ebp + 8]
dec eax
push eax
push esi
call fcn.0044e9c3
push eax
push esi
call fcn.0044ed73
mov ebx, eax
add esp, 0x10
add ebx, dword [ebp + 8]
movzx eax, byte [edi]
push eax
call fcn.00529127
test eax, eax
pop ecx
jne 0x45ee15
cmp byte [edi], 0x80
jb 0x45ee22
push edi
push ebx
call fcn.00528500
pop ecx
mov edi, eax
pop ecx
jmp 0x45eddd
push edi
call fcn.00528f57
pop ecx
mov edi, eax
sub edi, dword [ebp + 8]
push edi
push esi
mov dword [esi + 0xd4], edi
call fcn.0044e9c3
push eax
push esi
mov dword [esi + 0xc0], eax
call fcn.0044ed73
mov ecx, dword [esi + 0xd4]
add esp, 0x10
sub ecx, eax
mov dword [esi + 0x124], ecx
jmp 0x45ef12
mov ecx, dword [esi + 0x124]
cmp ecx, dword [esi + 0xb8]
jle 0x45ee8e
mov eax, dword [esi + 0x118]
sub eax, dword [esi + 0x1c8]
add dword [esi + 0x12c], eax
dec ecx
and dword [ebp - 4], 0
mov dword [esi + 0x124], ecx
jmp 0x45ef12
mov eax, dword [esi + 0xd4]
test eax, eax
je case.default.0x45e759
test ecx, ecx
jle 0x45eed8
cmp dword [esi + 0xa7c], 0
je 0x45eeae
or eax, 0xffffffff
jmp 0x45eecd
mov edi, dword [ebp + 8]
lea ecx, [eax + edi]
mov eax, dword [esi + 0xb4]
add eax, edi
push ecx
push eax
call fcn.00528500
sub eax, dword [esi + 0xd4]
pop ecx
pop ecx
sub eax, edi
add dword [esi + 0x124], eax
mov dword [ebp - 0x10], eax
jmp 0x45ef12
cmp dword [0x628af4], 0
jne 0x45ef12
dec dword [esi + 0xc0]
push dword [esi + 0xc0]
push esi
call fcn.00450d50
push dword [esi + 0xc0]
mov edi, eax
push esi
call fcn.0044ed73
add esp, 0x10
add eax, edi
mov dword [esi + 0xd4], eax
mov dword [esi + 0x124], edi
push dword [esi + 0xc0]
push esi
call fcn.0044ebd5
pop ecx
test eax, eax
pop ecx
je case.default.0x45e759
push dword [esi + 0xc0]
xor edi, edi
push edi
push esi
call fcn.0044ea92
push eax
push esi
mov dword [esi + 0xc0], eax
call fcn.0044ed73
push esi
mov dword [esi + 0xd4], eax
call fcn.004516a2
push dword [esi + 0xc0]
or dword [esi + 0x130], 0xffffffff
push esi
call fcn.0044ebd5
add esp, 0x20
test eax, eax
je 0x45f1a8
mov dword [esi + 0x124], edi
jmp 0x45f562
mov eax, dword [esi + 0xc0]
and dword [ebp - 8], 0
test eax, eax
jle case.default.0x45e759
push eax
push 0
push esi
call fcn.0044ea92
push eax
push esi
mov dword [esi + 0xc0], eax
call fcn.0044ed73
mov dword [esi + 0xd4], eax
lea eax, [esi + 0x130]
add esp, 0x14
cmp dword [eax], 0xffffffff
jne 0x45efbd
mov ecx, dword [esi + 0x12c]
mov dword [eax], ecx
push dword [esi + 0x12c]
push esi
call fcn.00451161
push dword [esi + 0xc0]
mov ebx, dword [esi + 0x124]
push esi
call fcn.00450d50
add esp, 0x10
cmp ebx, eax
jge 0x45efe6
mov eax, ebx
jmp 0x45eff4
push dword [esi + 0xc0]
push esi
call fcn.00450d50
pop ecx
pop ecx
push dword [esi + 0xc0]
add dword [esi + 0xd4], eax
push esi
call fcn.00450dba
pop ecx
pop ecx
mov ecx, dword [esi + 0xb4]
sub ecx, eax
cmp dword [esi + 0xd4], ecx
jle 0x45e8d5
push dword [esi + 0xc0]
push esi
call fcn.00450dba
pop ecx
pop ecx
mov ecx, dword [esi + 0xb4]
sub ecx, eax
mov dword [esi + 0xd4], ecx
jmp 0x45e8d5
push dword [esi + 0xc0]
push esi
call fcn.00450dba
add eax, dword [esi + 0xb8]
pop ecx
pop ecx
add eax, dword [esi + 0xb4]
cmp eax, dword [esi + 0xac]
jg 0x45e8d5
push dword [esi + 0xc0]
push 1
push esi
call fcn.0044ea92
push eax
push esi
mov dword [esi + 0xc0], eax
call fcn.00450d50
mov ebx, eax
lea eax, [esi + 0x130]
add esp, 0x14
cmp dword [eax], 0xffffffff
jne 0x45f096
mov ecx, dword [esi + 0x12c]
mov dword [eax], ecx
push dword [esi + 0x12c]
push esi
call fcn.00451161
mov eax, dword [esi + 0x124]
pop ecx
cmp eax, ebx
pop ecx
jge 0x45f0b0
mov ebx, eax
push dword [esi + 0xc0]
push esi
call fcn.0044ed73
pop ecx
add eax, ebx
pop ecx
mov dword [esi + 0xd4], eax
jmp 0x45e8d5
xor eax, eax
cmp dword [0x628b18], eax
mov dword [ebp - 8], eax
je 0x45f0f6
mov edi, dword [esi + 0xb4]
or dword [esi + 0x130], 0xffffffff
sub edi, dword [esi + 0xd4]
mov dword [esi + 0x124], eax
jmp 0x45f562
or dword [esi + 0x130], 0xffffffff
xor ebx, ebx
cmp ebx, dword [esi + 0xb8]
jge 0x45e7bc
mov edi, dword [ebp + 8]
cmp dword [esi + 0xa7c], 0
je 0x45f134
mov eax, dword [esi + 0xb4]
push 8
add eax, ebx
mov ax, word [edi + eax*2]
push eax
call fcn.005283d3
pop ecx
test eax, eax
pop ecx
je 0x45f16e
inc ebx
jmp 0x45f166
mov eax, dword [esi + 0xb4]
add eax, ebx
movzx eax, byte [eax + edi]
push eax
call fcn.00529015
test eax, eax
pop ecx
je 0x45f16e
mov eax, dword [esi + 0xb4]
add eax, ebx
add eax, edi
push eax
call fcn.00528f57
sub eax, dword [esi + 0xb4]
pop ecx
sub eax, edi
mov ebx, eax
cmp ebx, dword [esi + 0xb8]
jl 0x45f10e
cmp ebx, dword [esi + 0xb8]
jge 0x45e7bc
mov eax, dword [esi + 0xd4]
mov edi, dword [esi + 0xb4]
mov ecx, eax
sub ecx, edi
cmp ebx, ecx
je 0x45e7bc
sub edi, eax
mov dword [esi + 0x124], ebx
add edi, ebx
jmp 0x45f562
or dword [esi + 0x130], 0xffffffff
mov edi, dword [esi + 0xb4]
mov eax, dword [esi + 0xb8]
sub edi, dword [esi + 0xd4]
add edi, eax
jmp 0x45f0eb
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov eax, dword [esi + 0xc0]
mov ecx, dword [esi + 0x104]
cmp eax, ecx
jle 0x45f1e8
push eax
push 0
push esi
call fcn.0044eb1d
add esp, 0xc
jmp 0x45f1ea
sub eax, ecx
push eax
push esi
mov dword [esi + 0xc0], eax
call fcn.0044ebd5
pop ecx
test eax, eax
pop ecx
je 0x45f214
push dword [esi + 0xc0]
push 0
push esi
call fcn.0044ea92
add esp, 0xc
mov dword [esi + 0xc0], eax
mov ebx, dword [esi + 0xc0]
push 1
pop eax
cmp ebx, eax
mov edx, eax
jl 0x45f225
mov edx, ebx
sub ebx, edx
mov dword [esi + 0xc0], edx
je 0x45f24c
mov ecx, dword [esi + 0xd0]
cmp ecx, dword [esi + 0xd8]
je 0x45f24c
cmp dword [esi + 0xf4], 0
jne 0x45f24c
mov dword [esi + 0xfc], eax
mov eax, dword [esi + 0xb8]
mov ecx, dword [esi + 0x124]
cmp eax, ecx
mov edi, eax
jl 0x45f260
mov edi, ecx
push edx
push esi
call fcn.0044ed73
add eax, edi
push esi
mov dword [esi + 0xd4], eax
call fcn.0044e2fc
push esi
call fcn.004516a2
add esp, 0x10
push 0
push 2
push 0x115
push dword [esi + 8]
call dword [sym.imp.USER32.dll_SendMessageA]
test ebx, ebx
je 0x45f2a8
mov eax, dword [esi + 0xc0]
add eax, ebx
test eax, eax
jge 0x45f2a2
xor eax, eax
mov dword [esi + 0xc0], eax
push dword [esi + 0xc0]
push esi
call fcn.0044ebd5
pop ecx
test eax, eax
pop ecx
je 0x45f2d1
push dword [esi + 0xc0]
push 0
push esi
call fcn.0044ea92
add esp, 0xc
mov dword [esi + 0xc0], eax
push esi
call fcn.004516a2
cmp dword [esi + 0x130], 0xffffffff
lea eax, [esi + 0x130]
pop ecx
jne 0x45f2ef
mov ecx, dword [esi + 0x12c]
mov dword [eax], ecx
push dword [esi + 0x12c]
push esi
call fcn.00451161
mov eax, dword [esi + 0xb8]
pop ecx
pop ecx
mov edi, eax
mov ecx, dword [esi + 0x124]
cmp eax, ecx
jl 0x45f311
mov edi, ecx
push dword [esi + 0xc0]
push esi
call fcn.0044ed73
add eax, edi
push esi
mov dword [esi + 0xd4], eax
call fcn.0044e2fc
push 0xffffffffffffffff
push 1
push dword [esi + 0xc0]
push dword [esi + 0xd4]
push dword [esi + 0x12c]
push esi
call fcn.00451c37
add esp, 0x24
cmp dword [esi + 0xf4], 0
je 0x45f35a
push esi
call fcn.0045e25f
pop ecx
test ebx, ebx
je 0x45f7c0
push 0
push 0
push dword [esi + 8]
call dword [sym.imp.USER32.dll_InvalidateRect]
jmp 0x45f7c0
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push dword [esi + 0xc0]
push 1
push esi
call fcn.0044eb1d
push eax
push esi
mov dword [esi + 0xc0], eax
call fcn.0044ebd5
add esp, 0x14
test eax, eax
je 0x45f3b6
push dword [esi + 0xc0]
push 1
push esi
call fcn.0044ea92
add esp, 0xc
mov dword [esi + 0xc0], eax
mov eax, dword [esi + 0xc8]
mov ebx, dword [esi + 0xc0]
add eax, 0xfffffffe
cmp eax, ebx
mov ecx, eax
jl 0x45f3cd
mov ecx, ebx
test ecx, ecx
jge 0x45f3d5
xor eax, eax
jmp 0x45f3db
cmp eax, ebx
jl 0x45f3db
mov eax, ebx
sub ebx, eax
mov dword [esi + 0xc0], eax
je 0x45f406
mov ecx, dword [esi + 0xd0]
cmp ecx, dword [esi + 0xd8]
je 0x45f406
cmp dword [esi + 0xf4], 0
jne 0x45f406
mov dword [esi + 0xfc], 1
push eax
push esi
call fcn.00450d50
pop ecx
mov dword [esi + 0xb8], eax
pop ecx
mov edi, eax
mov ecx, dword [esi + 0x124]
cmp eax, ecx
jl 0x45f423
mov edi, ecx
push dword [esi + 0xc0]
push esi
call fcn.0044ed73
add eax, edi
push esi
mov dword [esi + 0xd4], eax
call fcn.0044e2fc
push esi
call fcn.004516a2
add esp, 0x10
push 0
push 3
push 0x115
push dword [esi + 8]
call dword [sym.imp.USER32.dll_SendMessageA]
test ebx, ebx
je 0x45f478
mov eax, dword [esi + 0xc0]
lea ecx, [eax + ebx]
mov eax, dword [esi + 0xc8]
dec eax
cmp eax, ecx
jl 0x45f472
mov eax, ecx
mov dword [esi + 0xc0], eax
push dword [esi + 0xc0]
push esi
call fcn.0044ebd5
pop ecx
test eax, eax
pop ecx
je 0x45f4a1
push dword [esi + 0xc0]
push 1
push esi
call fcn.0044ea92
add esp, 0xc
mov dword [esi + 0xc0], eax
cmp dword [esi + 0x130], 0xffffffff
lea eax, [esi + 0x130]
jne 0x45f4b8
mov ecx, dword [esi + 0x12c]
mov dword [eax], ecx
push dword [esi + 0x12c]
push esi
call fcn.00451161
push esi
call fcn.004516a2
mov eax, dword [esi + 0xb8]
mov ecx, dword [esi + 0x124]
add esp, 0xc
cmp eax, ecx
mov edi, eax
jl 0x45f4e1
mov edi, ecx
push dword [esi + 0xc0]
push esi
call fcn.0044ed73
add eax, edi
push esi
mov dword [esi + 0xd4], eax
call fcn.0044e2fc
push 0xffffffffffffffff
push 1
push dword [esi + 0xc0]
push dword [esi + 0xd4]
push dword [esi + 0x12c]
push esi
call fcn.00451c37
add esp, 0x24
cmp dword [esi + 0xf4], 0
je 0x45f52a
push esi
call fcn.0045e25f
pop ecx
xor edi, edi
cmp ebx, edi
je 0x45f53b
push edi
push edi
push dword [esi + 8]
call dword [sym.imp.USER32.dll_InvalidateRect]
cmp dword [esi + 0xa9c], edi
je 0x45f7c0
push 1
push dword [esi + 0xbc]
push 1
push dword [esi + 8]
call dword [sym.imp.USER32.dll_SetScrollPos]
jmp 0x45f7c0
mov edi, dword [ebp - 0x10]
mov eax, dword [esi + 0x124]
mov ecx, dword [0x5c1d84]
cmp eax, ecx
jl 0x45f574
mov eax, ecx
mov dword [esi + 0x124], eax
mov eax, dword [esi + 0xc0]
test eax, eax
jge 0x45f586
xor eax, eax
add dword [esi + 0xd4], edi
mov dword [esi + 0xc0], eax
mov eax, dword [esi + 0xd4]
test eax, eax
jg 0x45f59e
xor eax, eax
mov ecx, dword [esi + 0xac]
mov dword [esi + 0xd4], eax
cmp eax, ecx
jl 0x45f5b0
mov eax, ecx
push esi
mov dword [esi + 0xd4], eax
call fcn.004516a2
mov eax, dword [esi + 0xc0]
pop ecx
cmp eax, dword [esi + 0xbc]
jge 0x45f5d1
mov dword [esi + 0xbc], eax
push esi
call fcn.0044ed0c
add eax, dword [esi + 0xbc]
pop ecx
cmp dword [esi + 0xc0], eax
jl 0x45f5fc
push esi
call fcn.0044ed0c
pop ecx
mov ecx, dword [esi + 0xc0]
sub ecx, eax
inc ecx
mov dword [esi + 0xbc], ecx
push dword [esi + 0xbc]
push esi
call fcn.0044ebd5
pop ecx
test eax, eax
pop ecx
je 0x45f626
push dword [esi + 0xbc]
push dword [ebp - 8]
push esi
call fcn.0044ea92
add esp, 0xc
mov dword [esi + 0xbc], eax
mov eax, dword [esi + 0xc8]
mov ecx, dword [esi + 0xbc]
dec eax
mov edx, ecx
cmp ecx, eax
jl 0x45f63b
mov edx, eax
test edx, edx
jge 0x45f643
xor eax, eax
jmp 0x45f649
cmp ecx, eax
jge 0x45f649
mov eax, ecx
cmp dword [ebp - 4], 0
mov dword [esi + 0xbc], eax
je 0x45f68f
push dword [esi + 0xc0]
push dword [esi + 0x124]
push esi
call fcn.00450f67
push 0xffffffffffffffff
push 1
pop ebx
mov dword [esi + 0x128], eax
push ebx
push dword [esi + 0xc0]
push dword [esi + 0xd4]
push 0x8000
push esi
call fcn.00451c37
add esp, 0x24
jmp 0x45f6ba
push 0xffffffffffffffff
push 1
pop ebx
lea edi, [esi + 0x12c]
push ebx
push dword [esi + 0xc0]
push dword [esi + 0xd4]
push dword [edi]
push esi
call fcn.00451c37
push dword [edi]
push esi
call fcn.00451161
add esp, 0x20
push esi
call fcn.0044e2fc
xor edi, edi
pop ecx
cmp dword [esi + 0xf4], edi
je 0x45f6d2
push esi
call fcn.0045e25f
pop ecx
cmp dword [esi + 0xa9c], edi
je 0x45f6eb
push ebx
push dword [esi + 0xbc]
push ebx
push dword [esi + 8]
call dword [sym.imp.USER32.dll_SetScrollPos]
mov eax, dword [ebp - 0x18]
cmp eax, dword [esi + 0xbc]
jne 0x45f789
mov ecx, dword [esi + 0xc0]
mov edi, dword [ebp - 0x1c]
cmp edi, ecx
jge 0x45f70d
mov eax, ecx
sub eax, edi
jmp 0x45f711
mov eax, edi
sub eax, ecx
mov edx, dword [esi + 0xd0]
inc eax
cmp edx, dword [esi + 0xd8]
jne 0x45f75a
cmp dword [ebp - 0x14], 0
jne 0x45f75a
cmp edi, ecx
je 0x45f794
push dword [ebp + 8]
push ebx
jge 0x45f73e
push ecx
push esi
call fcn.0045853b
push dword [ebp + 8]
push ebx
push edi
jmp 0x45f74f
push edi
push esi
call fcn.0045853b
push dword [ebp + 8]
push ebx
push dword [esi + 0xc0]
push esi
call fcn.0045853b
add esp, 0x20
jmp 0x45f794
xor edx, edx
cmp dword [esi + 0xf8], edx
je 0x45f773
mov ebx, dword [ebp - 0x20]
cmp ebx, dword [esi + 0x128]
je 0x45f773
push edx
push edx
jmp 0x45f78b
cmp edi, ecx
jge 0x45f779
mov ecx, edi
push dword [ebp + 8]
push eax
push ecx
push esi
call fcn.0045853b
add esp, 0x10
jmp 0x45f794
push edi
push edi
push dword [esi + 8]
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [esi + 0xd0]
cmp eax, dword [esi + 0xd8]
jne 0x45f7b7
cmp dword [esi + 0xf4], 0
jne 0x45f7b7
mov eax, dword [esi + 0x128]
mov dword [esi + 0x134], eax
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
pop edi
pop esi
pop ebx
leave
ret