Function at 0x45835c
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe5c
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
test edi, edi
je 0x458375
cmp dword [ebp + 0xc], 0
jne 0x45837c
xor eax, eax
jmp 0x45a2c7
test byte [edi + 0x235], 0x80
jne 0x458398
mov edx, dword [edi + 0x12c]
push edx
lea ecx, [edi + 4]
push ecx
call sym.ollydbg.exe__Sortsorteddata
add esp, 8
lea eax, [edi + 0x13c]
lea edx, [ebp - 0x1a4]
mov dword [ebp - 0x38], eax
push edx
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_GetClientRect
push edi
lea esi, [ebp - 0x1a4]
lea edi, [ebp - 0x194]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop edi
cmp dword [edi + 0x22d], 1
jne 0x4583ed
mov eax, dword [ebp - 0x38]
mov edx, dword [eax + 4]
mov ecx, dword [edx*4 + 0x4d4920]
add ecx, 4
mov dword [ebp - 0x1a0], ecx
mov dword [ebp - 0x188], ecx
jmp 0x4583f9
mov eax, dword [ebp - 0x190]
mov dword [ebp - 0x188], eax
mov edx, dword [edi + 0x239]
mov eax, dword [ebp - 0x198]
sub eax, dword [ebp - 0x1a0]
mov ecx, dword [edx*4 + 0x4d4920]
cdq
idiv ecx
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jg 0x458425
mov dword [ebp - 4], 1
test byte [edi + 0x235], 1
jne 0x458435
mov ebx, 1
jmp 0x458438
or ebx, 0xffffffff
cmp dword [ebp + 0x10], 0x200
je 0x458485
cmp dword [ebp + 0x10], 0x201
je 0x458485
cmp dword [ebp + 0x10], 0x203
je 0x458485
cmp dword [ebp + 0x10], 0x202
je 0x458485
cmp dword [ebp + 0x10], 0x204
je 0x458485
cmp dword [ebp + 0x10], 0x206
je 0x458485
cmp dword [ebp + 0x10], 0x113
jne 0x458d88
cmp dword [ebp + 0x14], 1
jne 0x458d88
cmp dword [ebp + 0x10], 0x113
jne 0x4584a0
mov eax, dword [ebp - 0x38]
mov esi, dword [eax + 0xed]
mov dword [ebp - 0x14], 0xffffffff
jmp 0x4584b8
mov si, word [ebp + 0x18]
mov eax, dword [ebp + 0x18]
and si, 0xffff
movsx esi, si
shr eax, 0x10
movsx edx, ax
mov dword [ebp - 0x14], edx
mov ecx, dword [ebp - 0x14]
cmp ecx, dword [ebp - 0x190]
jl 0x4584ce
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x188]
jl 0x4584d2
xor edx, edx
jmp 0x4584d7
mov edx, 1
mov dword [ebp - 0x18], edx
test ebx, ebx
jge 0x4584f1
mov ecx, dword [ebp - 0x1a0]
add ecx, dword [ebp - 0x198]
sub ecx, dword [ebp - 0x14]
dec ecx
mov dword [ebp - 0x14], ecx
mov eax, dword [edi + 0x245]
xor edx, edx
neg eax
dec eax
xor ebx, ebx
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x1c], 0xffffffff
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x24], 0xffffffff
mov eax, dword [ebp - 0x38]
lea edx, [eax + 0xd4]
mov dword [ebp - 0x74], edx
mov ecx, dword [ebp - 0x38]
lea eax, [ecx + 8]
mov dword [ebp - 0x70], eax
jmp 0x458598
mov edx, dword [ebp - 0x70]
mov ecx, dword [edx]
add ecx, dword [ebp - 0xc]
mov eax, esi
sub eax, ecx
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x6c]
cdq
xor eax, edx
sub eax, edx
dec eax
jg 0x45854e
mov eax, dword [ebp - 0x74]
test byte [eax], 8
jne 0x45854e
mov dword [ebp - 0x24], ebx
cmp esi, dword [ebp - 0xc]
jl 0x45858d
cmp ecx, esi
jle 0x45858d
mov dword [ebp - 0x1c], ebx
mov edx, esi
sub edx, dword [ebp - 0xc]
dec edx
mov dword [ebp - 0x20], edx
mov eax, dword [ebp - 0x74]
test byte [eax], 0x20
jne 0x458582
mov edx, dword [edi + 0x239]
mov eax, dword [edx*4 + 0x4d48f4]
sar eax, 1
jns 0x45857f
adc eax, 0
sub dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
jge 0x45858d
xor edx, edx
mov dword [ebp - 0x20], edx
mov dword [ebp - 0xc], ecx
inc ebx
inc dword [ebp - 0x74]
add dword [ebp - 0x70], 4
mov ecx, dword [ebp - 0x38]
cmp ebx, dword [ecx]
jge 0x4585a4
cmp ebx, 0x11
jl 0x458529
mov eax, dword [ebp + 0x10]
cmp eax, 0x202
jg 0x4585d2
je 0x458b34
sub eax, 0x113
je 0x458cc4
sub eax, 0xed
je 0x4585f2
dec eax
je 0x4589be
jmp 0x45a2c5
sub eax, 0x203
je 0x45895e
dec eax
je 0x458c3f
sub eax, 2
je 0x458c3f
jmp 0x45a2c5
mov edx, dword [ebp - 0x38]
cmp dword [edx + 0xe5], 0
je 0x45892a
call sub.USER32.DLL_GetCapture
cmp eax, dword [ebp + 0xc]
jne 0x45892a
mov ecx, dword [ebp - 0x38]
cmp dword [ecx + 0xe5], 1
jne 0x4586a5
push 0x7f84
push 0
call sub.USER32.DLL_LoadCursorA
push eax
call sub.USER32.DLL_SetCursor
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x38]
mov edx, dword [eax + 0xe9]
mov eax, dword [ecx + edx*4 + 8]
mov edx, dword [ebp - 0x38]
add eax, esi
sub eax, dword [edx + 0xed]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 3
jge 0x458667
mov ecx, 3
sub ecx, dword [ebp - 0x10]
mov dword [ebp - 0x10], 3
add esi, ecx
mov eax, dword [ebp - 0x38]
mov edx, dword [eax + 0xe9]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ecx + edx*4 + 8]
cmp eax, dword [ebp - 0x10]
je 0x45891c
mov edx, dword [ebp - 0x38]
mov ecx, dword [edx + 0xe9]
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x10]
mov dword [eax + ecx*4 + 8], edx
push 0
push 0
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_InvalidateRect
jmp 0x45891c
mov eax, dword [ebp - 0x38]
cmp dword [eax + 0xe5], 2
jne 0x458779
push 0x7f00
push 0
call sub.USER32.DLL_LoadCursorA
push eax
call sub.USER32.DLL_SetCursor
cmp dword [ebp - 0x18], 0
je 0x45871c
mov edx, dword [ebp - 0x38]
mov ecx, dword [edx + 0xe9]
cmp ecx, dword [ebp - 0x1c]
jne 0x45871c
mov eax, dword [ebp - 0x38]
mov edx, dword [eax + 0xe9]
mov ecx, dword [ebp - 0x38]
test byte [ecx + edx + 0xd4], 1
jne 0x45871c
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x38]
mov edx, dword [eax + 0xe9]
lea eax, [ebp - 0x194]
or byte [ecx + edx + 0xd4], 1
push 0
push eax
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_InvalidateRect
jmp 0x45891c
cmp dword [ebp - 0x18], 0
je 0x458734
mov ecx, dword [ebp - 0x38]
mov eax, dword [ecx + 0xe9]
cmp eax, dword [ebp - 0x1c]
je 0x45891c
mov edx, dword [ebp - 0x38]
mov ecx, dword [edx + 0xe9]
mov eax, dword [ebp - 0x38]
test byte [eax + ecx + 0xd4], 1
je 0x45891c
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov ecx, dword [edx + 0xe9]
lea edx, [ebp - 0x194]
and byte [eax + ecx + 0xd4], 0xfe
push 0
push edx
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_InvalidateRect
jmp 0x45891c
mov eax, dword [ebp - 0x38]
cmp dword [eax + 0xe5], 3
jne 0x45891c
push 0x7f00
push 0
call sub.USER32.DLL_LoadCursorA
push eax
call sub.USER32.DLL_SetCursor
mov edx, dword [ebp - 0x14]
cmp edx, dword [ebp - 0x1a0]
jl 0x458856
mov ecx, dword [ebp - 0x14]
cmp ecx, dword [ebp - 0x198]
jge 0x458856
push 1
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_KillTimer
mov edx, dword [ebp - 0x38]
xor ecx, ecx
mov dword [edx + 0xe9], ecx
mov edx, dword [edi + 0x239]
mov eax, dword [ebp - 0x14]
sub eax, dword [ebp - 0x1a0]
mov ecx, dword [edx*4 + 0x4d4920]
cdq
idiv ecx
push eax
mov eax, dword [edi + 0x239]
push dword [eax*4 + 0x4d48f4]
pop edx
mov eax, dword [ebp - 0x20]
mov ecx, edx
cdq
idiv ecx
movzx edx, word [ebp - 0x1c]
movzx eax, ax
shl edx, 0x10
or eax, edx
push eax
push 0x46c
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_SendMessageA
mov ebx, eax
test ebx, ebx
je 0x45891c
test byte [edi + 0x236], 8
je 0x458844
push 0x101
push 0
push 0
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_RedrawWindow
jmp 0x45891c
push 0
push 0
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_InvalidateRect
jmp 0x45891c
mov ecx, dword [ebp - 0x14]
cmp ecx, dword [ebp - 0x1a0]
jge 0x4588bc
mov eax, dword [ebp - 0x38]
cmp dword [eax + 0xe9], 0
jl 0x45887c
push 0
push 0x32
push 1
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_SetTimer
mov ecx, dword [ebp - 0x38]
mov dword [ecx + 0xe9], 0xffffffff
mov eax, dword [ebp - 0x1a0]
add eax, 0xffffffd0
cmp eax, dword [ebp - 0x14]
jle 0x45891c
mov edx, dword [ebp - 0x1a0]
add edx, 0xffffffd0
sub edx, dword [ebp - 0x14]
test edx, edx
jns 0x4588ae
add edx, 0xf
sar edx, 4
mov ecx, dword [ebp - 0x38]
sub dword [ecx + 0xe9], edx
jmp 0x45891c
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x198]
jl 0x45891c
mov edx, dword [ebp - 0x38]
cmp dword [edx + 0xe9], 0
jg 0x4588e2
push 0
push 0x32
push 1
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SetTimer
mov eax, dword [ebp - 0x38]
mov dword [eax + 0xe9], 1
mov edx, dword [ebp - 0x198]
add edx, 0x30
cmp edx, dword [ebp - 0x14]
jg 0x45891c
mov ecx, dword [ebp - 0x14]
sub ecx, dword [ebp - 0x198]
add ecx, 0xffffffd0
test ecx, ecx
jns 0x458910
add ecx, 0xf
sar ecx, 4
mov eax, dword [ebp - 0x38]
add dword [eax + 0xe9], ecx
mov edx, dword [ebp - 0x38]
mov dword [edx + 0xed], esi
jmp 0x45a2c5
cmp dword [ebp - 0x24], 0
jl 0x458947
push 0x7f84
push 0
call sub.USER32.DLL_LoadCursorA
push eax
call sub.USER32.DLL_SetCursor
jmp 0x45a2c5
push 0x7f00
push 0
call sub.USER32.DLL_LoadCursorA
push eax
call sub.USER32.DLL_SetCursor
jmp 0x45a2c5
cmp dword [ebp - 0x18], 0
jne 0x4589be
cmp dword [ebp - 0x24], 0
jge 0x4589be
mov edx, dword [edi + 0x239]
mov eax, dword [ebp - 0x14]
sub eax, dword [ebp - 0x1a0]
mov ecx, dword [edx*4 + 0x4d4920]
cdq
idiv ecx
push eax
mov eax, dword [edi + 0x239]
push dword [eax*4 + 0x4d48f4]
pop edx
mov eax, dword [ebp - 0x20]
mov ecx, edx
cdq
idiv ecx
movzx edx, word [ebp - 0x1c]
movzx eax, ax
shl edx, 0x10
or eax, edx
push eax
push 0x46f
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_SendMessageA
mov ebx, eax
dec ebx
je 0x45a2c5
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_SetFocus
cmp dword [ebp - 0x24], 0
jl 0x4589fd
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_SetCapture
mov ecx, dword [ebp - 0x38]
mov dword [ecx + 0xe5], 1
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x24]
mov dword [eax + 0xe9], edx
mov ecx, dword [ebp - 0x38]
mov dword [ecx + 0xed], esi
jmp 0x45a2c5
cmp dword [ebp - 0x18], 0
je 0x458a60
cmp dword [ebp - 0x1c], 0
jl 0x458a60
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x1c]
test byte [eax + edx + 0xd4], 6
jne 0x458a60
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SetCapture
mov eax, dword [ebp - 0x38]
mov dword [eax + 0xe5], 2
mov edx, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x1c]
or byte [edx + ecx + 0xd4], 1
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x1c]
lea ecx, [ebp - 0x194]
mov dword [eax + 0xe9], edx
push 0
push ecx
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_InvalidateRect
jmp 0x45a2c5
cmp dword [ebp - 0x18], 0
je 0x458a70
cmp dword [ebp - 0x1c], 0
jge 0x45a2c5
push 0x10
call sub.USER32.DLL_GetKeyState
movsx edx, ax
and edx, 0x8000
mov dword [ebp - 0x2c], edx
mov edx, dword [edi + 0x239]
mov eax, dword [ebp - 0x14]
sub eax, dword [ebp - 0x1a0]
mov ecx, dword [edx*4 + 0x4d4920]
cdq
idiv ecx
push eax
mov eax, dword [edi + 0x239]
push dword [eax*4 + 0x4d48f4]
pop edx
mov eax, dword [ebp - 0x20]
mov ecx, edx
cdq
idiv ecx
movzx edx, word [ebp - 0x1c]
movzx eax, ax
shl edx, 0x10
or eax, edx
push eax
mov eax, 0x46c
cmp dword [ebp - 0x2c], 0
jne 0x458acc
dec eax
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
test ebx, ebx
jle 0x458b06
test byte [edi + 0x236], 8
je 0x458af9
push 0x101
push 0
push 0
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_RedrawWindow
jmp 0x458b06
push 0
push 0
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_InvalidateRect
test ebx, ebx
jl 0x45a2c5
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SetCapture
mov eax, dword [ebp - 0x38]
mov dword [eax + 0xe5], 3
mov edx, dword [ebp - 0x38]
xor ecx, ecx
mov dword [edx + 0xe9], ecx
jmp 0x45a2c5
call sub.USER32.DLL_GetCapture
cmp eax, dword [ebp + 0xc]
jne 0x45a2c5
call sub.USER32.DLL_ReleaseCapture
mov eax, dword [ebp - 0x38]
cmp dword [eax + 0xe5], 2
jne 0x458c18
mov edx, dword [ebp - 0x38]
mov ecx, dword [edx + 0xe9]
mov eax, dword [ebp - 0x38]
test byte [eax + ecx + 0xd4], 1
je 0x458c2f
mov edx, dword [ebp - 0x38]
mov ecx, dword [edx + 0xe9]
mov eax, dword [ebp - 0x38]
and byte [eax + ecx + 0xd4], 0xfe
mov edx, dword [ebp - 0x38]
mov ecx, dword [edx + 0xe9]
mov eax, dword [ebp - 0x38]
test byte [eax + ecx + 0xd4], 0x10
je 0x458bc9
push 0
lea edx, [ebp - 0x194]
push edx
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_InvalidateRect
push 0
mov eax, dword [ebp - 0x38]
mov edx, dword [eax + 0xe9]
push edx
push 0x46e
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SendMessageA
jmp 0x458c2f
mov eax, dword [ebp - 0x38]
mov edx, dword [eax + 0xe9]
push edx
lea ecx, [edi + 4]
push ecx
call sym.ollydbg.exe__Sortsorteddata
add esp, 8
test eax, eax
jne 0x458bf7
push 0
lea eax, [ebp - 0x194]
push eax
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_InvalidateRect
jmp 0x458c2f
push 1
mov ecx, dword [edi + 0x110]
push ecx
push edi
call sym.ollydbg.exe__Selectandscroll
add esp, 0xc
push 0
push 0
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_InvalidateRect
jmp 0x458c2f
mov edx, dword [ebp - 0x38]
cmp dword [edx + 0xe5], 3
jne 0x458c2f
push 1
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_KillTimer
mov eax, dword [ebp - 0x38]
xor edx, edx
mov dword [eax + 0xe5], edx
jmp 0x45a2c5
cmp dword [ebp - 0x18], 0
je 0x458c60
push 0
push 0
push 0x465
mov ecx, dword [ebp + 0xc]
push ecx
push edi
call sym.ollydbg.exe__Tablefunction
add esp, 0x14
jmp 0x45a2c5
push 0
xor eax, eax
mov edx, dword [ebp - 4]
mov dword [0x4bb40c], eax
push edx
push 0x46d
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
test ebx, ebx
jl 0x458cab
test byte [edi + 0x236], 8
je 0x458c9e
push 0x101
push 0
push 0
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_RedrawWindow
jmp 0x458cab
push 0
push 0
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_InvalidateRect
push 0
mov ecx, dword [ebp - 0x1c]
push ecx
push 0x465
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_SendMessageA
jmp 0x45a2c5
mov edx, dword [ebp - 0x38]
cmp dword [edx + 0xe9], 0
je 0x458d78
mov ecx, dword [ebp - 0x38]
mov eax, dword [ecx + 0xe9]
push eax
mov edx, dword [ebp - 4]
push edx
push 0x468
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
mov eax, dword [ebp - 0x38]
cmp dword [eax + 0xe9], 0
jge 0x458d02
xor edx, edx
jmp 0x458d06
mov edx, dword [ebp - 4]
dec edx
push edx
mov eax, dword [edi + 0x239]
push dword [eax*4 + 0x4d48f4]
mov eax, dword [ebp - 0x20]
pop edx
mov ecx, edx
cdq
idiv ecx
movzx eax, ax
movzx edx, word [ebp - 0x1c]
shl edx, 0x10
or eax, edx
push eax
push 0x46c
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_SendMessageA
mov esi, eax
test ebx, ebx
jge 0x458d46
test esi, esi
je 0x45a2c5
test byte [edi + 0x236], 8
je 0x458d66
push 0x101
push 0
push 0
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_RedrawWindow
jmp 0x45a2c5
push 0
push 0
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_InvalidateRect
jmp 0x45a2c5
push 1
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_KillTimer
jmp 0x45a2c5
cmp dword [ebp + 0x10], 0x46b
je 0x458d9e
cmp dword [ebp + 0x10], 0x46c
jne 0x458e3e
test byte [edi + 0x235], 0x80
jne 0x45a2c5
mov ebx, dword [edi + 0x241]
add ebx, dword [ebp + 0x18]
cmp ebx, dword [edi + 0x108]
jl 0x458dc3
mov ebx, dword [edi + 0x108]
dec ebx
cmp ebx, dword [edi + 0x110]
jne 0x458df0
test byte [edi + 0x236], 0x10
je 0x45a2c5
mov eax, dword [ebp + 0x14]
shr eax, 0x10
movzx edx, ax
movsx ecx, word [edi + 0x233]
cmp edx, ecx
je 0x45a2c5
push ebx
lea eax, [edi + 4]
push eax
call sym.ollydbg.exe__Getsortedbyselection
add esp, 8
test eax, eax
je 0x45a2c5
mov dword [edi + 0x110], ebx
test byte [edi + 0x236], 0x10
je 0x458e23
mov edx, dword [ebp + 0x14]
shr edx, 0x10
mov word [edi + 0x233], dx
jmp 0x458e2c
mov word [edi + 0x233], 0
mov ecx, dword [eax]
mov eax, 1
mov dword [edi + 0x114], ecx
jmp 0x45a2c7
cmp dword [ebp + 0x10], 0x100
je 0x458e54
cmp dword [ebp + 0x10], 0x47a
jne 0x4592f2
lea edx, [ebp - 0x30]
lea ecx, [ebp - 0x2c]
push edx
push ecx
mov eax, dword [ebp + 0x18]
push eax
mov edx, dword [ebp + 0x10]
push edx
call fcn.004582f0
add esp, 0x10
mov edx, dword [ebp + 0x18]
and edx, 0x7fff
test edx, edx
jg 0x458e80
mov edx, 1
jmp 0x458e8a
cmp edx, 0x10
jle 0x458e8a
mov edx, 0x10
xor eax, eax
mov al, byte [ebp + 0x14]
cmp eax, 0x25
jne 0x458f9b
movsx eax, word [edi + 0x233]
cmp dword [ebp - 0x30], 0
je 0x458edd
mov edx, dword [ebp - 0x38]
xor ebx, ebx
xor esi, esi
lea ecx, [edx + 8]
mov dword [ebp - 0x74], ecx
jmp 0x458ed1
mov edx, dword [ebp - 0x74]
mov ecx, dword [edx]
add ecx, ebx
cmp ecx, dword [edi + 0x245]
jge 0x458f5e
mov edx, dword [ebp - 0x74]
add ebx, dword [edx]
inc esi
add dword [ebp - 0x74], 4
mov ecx, dword [ebp - 0x38]
cmp esi, dword [ecx]
jl 0x458eb4
jmp 0x458f5e
test byte [edi + 0x236], 0x10
je 0x458f46
mov edx, dword [ebp - 0x38]
dec eax
mov ebx, dword [edi + 0x245]
lea ecx, [edx + eax*4 + 8]
mov dword [ebp - 0x74], ecx
jmp 0x458efe
dec eax
add dword [ebp - 0x74], 0xfffffffc
test eax, eax
jl 0x458f0a
mov edx, dword [ebp - 0x74]
cmp dword [edx], 3
jle 0x458ef9
test eax, eax
jl 0x458f3d
mov edx, dword [ebp - 0x38]
xor ebx, ebx
xor esi, esi
cmp eax, esi
lea ecx, [edx + 8]
mov dword [ebp - 0x74], ecx
jle 0x458f2d
mov edx, dword [ebp - 0x74]
add ebx, dword [edx]
inc esi
add dword [ebp - 0x74], 4
cmp eax, esi
jg 0x458f1f
cmp ebx, dword [edi + 0x245]
jle 0x458f5e
mov ebx, dword [edi + 0x245]
jmp 0x458f5e
movsx eax, word [edi + 0x233]
jmp 0x458f5e
mov ebx, dword [edi + 0x245]
mov ecx, dword [edi + 0x239]
mov ecx, dword [ecx*4 + 0x4d48f4]
imul ecx, edx
sub ebx, ecx
test ebx, ebx
jge 0x458f64
xor ebx, ebx
cmp ebx, dword [edi + 0x245]
jne 0x458f77
movsx edx, word [edi + 0x233]
cmp eax, edx
je 0x458f91
mov dword [edi + 0x245], ebx
mov word [edi + 0x233], ax
push 0
push 0
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_InvalidateRect
mov eax, 1
jmp 0x45a2c7
xor ecx, ecx
mov cl, byte [ebp + 0x14]
cmp ecx, 0x27
jne 0x459116
movsx eax, word [edi + 0x233]
xor ecx, ecx
mov dword [ebp - 0x10], ecx
cmp dword [ebp - 0x30], 0
je 0x458ffd
mov edx, dword [ebp - 0x38]
xor ebx, ebx
xor esi, esi
lea ecx, [edx + 8]
mov dword [ebp - 0x74], ecx
jmp 0x458ff1
mov edx, dword [edi + 0x245]
cmp edx, dword [ebp - 0x10]
jl 0x458fe4
mov ecx, dword [ebp - 0x38]
mov edx, dword [ecx]
dec edx
cmp esi, edx
jge 0x458fe4
mov ecx, dword [ebp - 0x74]
add ebx, dword [ecx]
mov edx, dword [ebp - 0x74]
mov ecx, dword [edx]
add dword [ebp - 0x10], ecx
inc esi
add dword [ebp - 0x74], 4
mov edx, dword [ebp - 0x38]
cmp esi, dword [edx]
jl 0x458fca
jmp 0x4590c8
test byte [edi + 0x236], 0x10
je 0x45908f
inc eax
mov ecx, dword [ebp - 0x38]
lea edx, [ecx + eax*4 + 8]
mov dword [ebp - 0x74], edx
jmp 0x45901c
inc eax
add dword [ebp - 0x74], 4
mov ecx, dword [ebp - 0x38]
cmp eax, dword [ecx]
jge 0x45902b
mov edx, dword [ebp - 0x74]
cmp dword [edx], 3
jle 0x459017
mov ecx, dword [ebp - 0x38]
cmp eax, dword [ecx]
jge 0x45905f
mov edx, dword [ebp - 0x38]
xor ebx, ebx
xor esi, esi
cmp eax, esi
lea ecx, [edx + 8]
mov dword [ebp - 0x74], ecx
jle 0x459051
mov edx, dword [ebp - 0x74]
add ebx, dword [edx]
inc esi
add dword [ebp - 0x74], 4
cmp eax, esi
jg 0x459043
mov ecx, dword [ebp - 0x38]
mov edx, dword [ecx + eax*4 + 8]
add edx, ebx
mov dword [ebp - 0x10], edx
jmp 0x4590c8
xor esi, esi
mov eax, dword [ebp - 0x38]
lea edx, [eax + 8]
mov dword [ebp - 0x74], edx
jmp 0x459079
mov ecx, dword [ebp - 0x74]
mov eax, dword [ecx]
add dword [ebp - 0x10], eax
inc esi
add dword [ebp - 0x74], 4
mov edx, dword [ebp - 0x38]
cmp esi, dword [edx]
jl 0x45906c
movsx eax, word [edi + 0x233]
mov ebx, dword [edi + 0x245]
jmp 0x4590c8
xor esi, esi
mov ecx, dword [ebp - 0x38]
add ecx, 8
mov dword [ebp - 0x74], ecx
jmp 0x4590a9
mov ecx, dword [ebp - 0x74]
mov ecx, dword [ecx]
add dword [ebp - 0x10], ecx
inc esi
add dword [ebp - 0x74], 4
mov ecx, dword [ebp - 0x38]
cmp esi, dword [ecx]
jl 0x45909c
mov ebx, dword [edi + 0x245]
mov ecx, dword [edi + 0x239]
mov ecx, dword [ecx*4 + 0x4d48f4]
imul ecx, edx
add ebx, ecx
mov edx, dword [ebp - 0x19c]
sub dword [ebp - 0x10], edx
cmp ebx, dword [ebp - 0x10]
jle 0x4590d9
mov ebx, dword [ebp - 0x10]
test ebx, ebx
jge 0x4590df
xor ebx, ebx
cmp ebx, dword [edi + 0x245]
jne 0x4590f2
movsx edx, word [edi + 0x233]
cmp eax, edx
je 0x45910c
mov dword [edi + 0x245], ebx
mov word [edi + 0x233], ax
push 0
push 0
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_InvalidateRect
mov eax, 1
jmp 0x45a2c7
imul ebx, edx
xor ecx, ecx
xor edx, edx
mov cl, byte [ebp + 0x14]
mov dword [0x4bb40c], edx
add ecx, 0xffffffdf
cmp ecx, 7
ja case.0x459132.37
jmp dword [ecx*4 + 0x459139]
cmp dword [ebp - 0x30], 0
je 0x459184
test byte [edi + 0x235], 0x80
je 0x459184
neg ebx
push ebx
mov eax, dword [ebp - 4]
push eax
push 0x46a
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4592ba
neg ebx
push ebx
mov ecx, dword [ebp - 4]
push ecx
push 0x46d
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4592ba
cmp dword [ebp - 0x30], 0
je 0x4591c9
test byte [edi + 0x235], 0x80
je 0x4591c9
push ebx
mov edx, dword [ebp - 4]
push edx
push 0x46a
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4592ba
push ebx
mov eax, dword [ebp - 4]
push eax
push 0x46d
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4592ba
mov esi, dword [ebp - 4]
dec esi
test esi, esi
jg 0x4591f0
mov esi, 1
mov eax, esi
neg eax
imul ebx
cmp dword [ebp - 0x30], 0
mov dword [0x4bb40c], eax
je 0x459208
mov edx, 0x7fffffff
jmp 0x45920f
mov edx, esi
neg edx
imul edx, ebx
push edx
mov eax, dword [ebp - 4]
push eax
push 0x46d
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4592ba
mov esi, dword [ebp - 4]
dec esi
test esi, esi
jg 0x459236
mov esi, 1
mov eax, esi
imul ebx
cmp dword [ebp - 0x30], 0
mov dword [0x4bb40c], eax
je 0x45924c
mov edx, 0x7ffffffe
jmp 0x459251
mov edx, esi
imul edx, ebx
push edx
mov eax, dword [ebp - 4]
push eax
push 0x46d
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4592ba
push 0x7fffffff
mov eax, dword [ebp - 4]
push eax
push 0x46d
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4592ba
push 0x7ffffffe
mov eax, dword [ebp - 4]
push eax
push 0x46d
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4592ba
mov eax, dword [ebp + 0x18]
push eax
mov edx, dword [ebp + 0x14]
push edx
mov ecx, dword [ebp + 0x10]
push ecx
mov eax, dword [0x4d3b7c]
push eax
call sub.USER32.DLL_SendMessageA
jmp 0x45a2c7
test ebx, ebx
jl 0x4592e8
test byte [edi + 0x236], 8
je 0x4592db
push 0x101
push 0
push 0
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_RedrawWindow
jmp 0x4592e8
push 0
push 0
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_InvalidateRect
mov eax, 1
jmp 0x45a2c7
cmp dword [ebp + 0x10], 0x104
je 0x459304
cmp dword [ebp + 0x10], 0x47a
jne 0x459355
cmp dword [ebp + 0x14], 0x79
jne 0x459338
mov dword [0x4bb408], 1
push 0
push 0
push 0x465
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_SendMessageA
xor ecx, ecx
mov eax, 1
mov dword [0x4bb408], ecx
jmp 0x45a2c7
mov edx, dword [ebp + 0x18]
push edx
mov ecx, dword [ebp + 0x14]
push ecx
mov eax, dword [ebp + 0x10]
push eax
mov edx, dword [0x4d3b7c]
push edx
call sub.USER32.DLL_SendMessageA
jmp 0x45a2c7
cmp dword [ebp + 0x10], 0x114
jne 0x45944f
mov ecx, dword [ebp - 0x19c]
neg ecx
mov dword [ebp - 0x10], ecx
xor esi, esi
mov eax, dword [ebp - 0x38]
lea edx, [eax + 8]
mov dword [ebp - 0x74], edx
jmp 0x459387
mov ecx, dword [ebp - 0x74]
mov eax, dword [ecx]
add dword [ebp - 0x10], eax
inc esi
add dword [ebp - 0x74], 4
mov edx, dword [ebp - 0x38]
cmp esi, dword [edx]
jl 0x45937a
mov ebx, dword [edi + 0x245]
mov eax, dword [edi + 0x239]
mov edx, dword [eax*4 + 0x4d48f4]
mov dword [ebp - 8], edx
mov cx, word [ebp + 0x14]
and cx, 0xffff
movzx eax, cx
cmp eax, 7
ja case.0x4593b5.4
jmp dword [eax*4 + 0x4593bc]
sub ebx, dword [ebp - 8]
jmp case.0x4593b5.4
add ebx, dword [ebp - 8]
jmp case.0x4593b5.4
mov edx, dword [ebp - 8]
shl edx, 3
sub ebx, edx
jmp case.0x4593b5.4
mov ecx, dword [ebp - 8]
shl ecx, 3
add ebx, ecx
jmp case.0x4593b5.4
xor ebx, ebx
jmp case.0x4593b5.4
mov ebx, dword [ebp - 0x10]
jmp case.0x4593b5.4
push 0x4000
mov eax, dword [ebp - 0x10]
push eax
mov edx, dword [ebp + 0x14]
shr edx, 0x10
movzx ecx, dx
push ecx
call sub.KERNEL32.DLL_MulDiv
mov ebx, eax
cmp ebx, dword [ebp - 0x10]
jle 0x459425
mov ebx, dword [ebp - 0x10]
test ebx, ebx
jge 0x45942b
xor ebx, ebx
cmp ebx, dword [edi + 0x245]
je 0x45a2c5
mov dword [edi + 0x245], ebx
push 0
push 0
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_InvalidateRect
jmp 0x45a2c5
cmp dword [ebp + 0x10], 0x115
jne 0x4595e7
push 0x10
call sub.USER32.DLL_GetKeyState
movsx edx, ax
and edx, 0x8000
mov dword [ebp - 0x2c], edx
mov cx, word [ebp + 0x14]
and cx, 0xffff
movzx eax, cx
cmp eax, 5
ja case.0x459484.4
jmp dword [eax*4 + 0x45948b]
cmp dword [ebp - 0x2c], 0
je 0x4594cc
test byte [edi + 0x235], 0x80
je 0x4594cc
push ebx
mov edx, dword [ebp - 4]
push edx
push 0x46a
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4595ad
push ebx
mov eax, dword [ebp - 4]
push eax
push 0x468
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4595ad
cmp dword [ebp - 0x2c], 0
je 0x459511
test byte [edi + 0x235], 0x80
je 0x459511
neg ebx
push ebx
mov ecx, dword [ebp - 4]
push ecx
push 0x46a
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4595ad
neg ebx
push ebx
mov edx, dword [ebp - 4]
push edx
push 0x468
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4595ad
mov esi, dword [ebp - 4]
dec esi
test esi, esi
jg 0x45953a
mov esi, 1
neg esi
imul esi, ebx
push esi
mov eax, dword [ebp - 4]
push eax
push 0x468
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4595ad
mov esi, dword [ebp - 4]
dec esi
test esi, esi
jg 0x459563
mov esi, 1
imul esi, ebx
push esi
mov eax, dword [ebp - 4]
push eax
push 0x468
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4595ad
mov esi, dword [ebp + 0x14]
shr esi, 0x10
movzx esi, si
test ebx, ebx
jge 0x459593
mov eax, 0x3fff
sub eax, esi
mov esi, eax
push esi
mov edx, dword [ebp - 4]
push edx
push 0x469
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SendMessageA
mov ebx, eax
jmp 0x4595ad
or ebx, 0xffffffff
test ebx, ebx
jl 0x45a2c5
test byte [edi + 0x236], 8
je 0x4595d5
push 0x101
push 0
push 0
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_RedrawWindow
jmp 0x45a2c5
push 0
push 0
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_InvalidateRect
jmp 0x45a2c5
cmp dword [ebp + 0x10], 0x466
jne 0x4596ce
push 0xfffffffffffffff0
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_GetWindowLongA
mov dword [ebp - 0x34], eax
test byte [ebp - 0x32], 0x20
je 0x45965c
push 0
push 0x4000
push 0
push 1
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_SetScrollRange
push 0
mov edx, dword [ebp - 4]
push edx
push 0x468
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SendMessageA
mov esi, eax
test ebx, ebx
jge 0x45963f
mov eax, 0x4000
sub eax, esi
mov esi, eax
push 1
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_GetScrollPos
cmp esi, eax
je 0x45965c
push 1
push esi
push 1
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_SetScrollPos
test byte [ebp - 0x32], 0x10
je 0x45a2c5
push 0
push 0x4000
push 0
push 0
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_SetScrollRange
mov edx, dword [ebp - 0x19c]
neg edx
mov dword [ebp - 0x10], edx
xor esi, esi
mov eax, dword [ebp - 0x38]
lea edx, [eax + 8]
mov dword [ebp - 0x74], edx
jmp 0x45969f
mov ecx, dword [ebp - 0x74]
mov eax, dword [ecx]
add dword [ebp - 0x10], eax
inc esi
add dword [ebp - 0x74], 4
mov edx, dword [ebp - 0x38]
cmp esi, dword [edx]
jl 0x459692
push 1
mov ecx, dword [ebp - 0x10]
push ecx
push 0x4000
mov eax, dword [edi + 0x245]
push eax
call sub.KERNEL32.DLL_MulDiv
push eax
push 0
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_SetScrollPos
jmp 0x45a2c5
cmp dword [ebp + 0x10], 0x468
je 0x4596f6
cmp dword [ebp + 0x10], 0x469
je 0x4596f6
cmp dword [ebp + 0x10], 0x46a
je 0x4596f6
cmp dword [ebp + 0x10], 0x46d
jne 0x459864
cmp dword [ebp + 0x10], 0x46d
jne 0x4597af
cmp dword [ebp + 0x18], 0x7fffffff
jne 0x45971d
test ebx, ebx
jle 0x459714
xor esi, esi
jmp 0x459740
mov esi, dword [edi + 0x108]
dec esi
jmp 0x459740
cmp dword [ebp + 0x18], 0x7ffffffe
jne 0x459737
test ebx, ebx
jle 0x459733
mov esi, dword [edi + 0x108]
dec esi
jmp 0x459740
xor esi, esi
jmp 0x459740
mov esi, dword [edi + 0x110]
add esi, dword [ebp + 0x18]
cmp esi, dword [edi + 0x108]
jl 0x45974f
mov esi, dword [edi + 0x108]
dec esi
test esi, esi
jge 0x459755
xor esi, esi
cmp esi, dword [edi + 0x110]
jne 0x459765
or eax, 0xffffffff
jmp 0x45a2c7
push esi
lea edx, [edi + 4]
push edx
call sym.ollydbg.exe__Getsortedbyselection
add esp, 8
test eax, eax
jne 0x45977e
or eax, 0xffffffff
jmp 0x45a2c7
mov dword [edi + 0x110], esi
mov edx, dword [eax]
mov dword [edi + 0x114], edx
mov ebx, dword [edi + 0x241]
add ebx, dword [0x4bb40c]
mov eax, dword [ebp + 0x14]
add eax, ebx
cmp esi, eax
jl 0x4597a7
mov ebx, esi
sub ebx, dword [ebp + 0x14]
inc ebx
cmp esi, ebx
jge 0x4597f5
mov ebx, esi
jmp 0x4597f5
cmp dword [ebp + 0x10], 0x468
je 0x4597c1
cmp dword [ebp + 0x10], 0x46a
jne 0x4597cc
mov ebx, dword [edi + 0x241]
add ebx, dword [ebp + 0x18]
jmp 0x4597f5
mov eax, dword [edi + 0x108]
cmp eax, dword [ebp + 0x14]
ja 0x4597db
xor ebx, ebx
jmp 0x4597f5
push 0x4000
mov eax, dword [ebp + 0x18]
push eax
mov edx, dword [edi + 0x108]
sub edx, dword [ebp + 0x14]
push edx
call sub.KERNEL32.DLL_MulDiv
mov ebx, eax
mov eax, dword [edi + 0x108]
sub eax, dword [ebp + 0x14]
cmp ebx, eax
jle 0x45980b
mov ebx, dword [edi + 0x108]
sub ebx, dword [ebp + 0x14]
test ebx, ebx
jge 0x459811
xor ebx, ebx
cmp dword [ebp + 0x10], 0x469
je 0x459820
cmp dword [ebp + 0x18], 0
je 0x459839
cmp ebx, dword [edi + 0x241]
jne 0x459839
cmp dword [ebp + 0x10], 0x46d
je 0x459839
or eax, 0xffffffff
jmp 0x45a2c7
mov dword [edi + 0x241], ebx
test ebx, ebx
jne 0x45984a
xor eax, eax
jmp 0x45a2c7
mov edx, dword [edi + 0x108]
sub edx, dword [ebp + 0x14]
push edx
push 0x4000
push ebx
call sub.KERNEL32.DLL_MulDiv
jmp 0x45a2c7
cmp dword [ebp + 0x10], 0x465
jne 0x45a22f
mov ecx, dword [edi + 0x235]
and ecx, 0xc076
mov dword [ebp - 0x28], ecx
cmp dword [ebp + 0x18], 0
jne 0x459893
cmp dword [ebp - 0x28], 0
jne 0x459893
xor eax, eax
jmp 0x45a2c7
cmp dword [ebp + 0x18], 0
je 0x4598cc
mov edx, dword [ebp + 0x18]
mov dword [ebp - 0x44], edx
mov ecx, dword [ebp - 0x44]
push ecx
call sub.USER32.DLL_GetMenuItemCount
test eax, eax
je 0x4598e1
test dword [ebp - 0x28], 0xc056
je 0x4598e1
push 0x4bb415
push 0
push 0x800
mov eax, dword [ebp - 0x44]
push eax
call sub.USER32.DLL_AppendMenuA
jmp 0x4598e1
call sub.USER32.DLL_CreatePopupMenu
mov dword [ebp - 0x44], eax
cmp dword [ebp - 0x44], 0
jne 0x4598e1
xor eax, eax
jmp 0x45a2c7
xor edx, edx
mov dword [ebp - 0x64], edx
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x5c], edx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x50], edx
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x48], edx
test byte [ebp - 0x28], 2
je 0x459a3a
cmp dword [edi + 0x108], 0
jle 0x459a3a
cmp dword [edi + 0x110], 0
jl 0x459a3a
mov eax, dword [edi + 0x110]
cmp eax, dword [edi + 0x108]
jge 0x459a3a
mov ecx, dword [ebp - 0x38]
cmp dword [ecx], 1
jle 0x459a25
call sub.USER32.DLL_CreatePopupMenu
mov dword [ebp - 0x48], eax
test eax, eax
je 0x459a25
push str.Whole_line
push 0x29e
push 0
mov edx, dword [ebp - 0x48]
push edx
call sub.USER32.DLL_AppendMenuA
test byte [edi + 0x235], 0x80
jne 0x459980
push str.Whole_table
push 0x29f
push 0
mov ecx, dword [ebp - 0x48]
push ecx
call sub.USER32.DLL_AppendMenuA
push 0x4bb415
push 0
push 0x800
mov eax, dword [ebp - 0x48]
push eax
call sub.USER32.DLL_AppendMenuA
xor ebx, ebx
mov eax, dword [ebp - 0x38]
lea edx, [eax + 0x90]
mov dword [ebp - 0x74], edx
jmp 0x459a08
xor esi, esi
lea eax, [ebp - 0x184]
mov dword [ebp - 0x7c], eax
mov edx, dword [ebp - 0x74]
mov ecx, edx
mov dword [ebp - 0x78], ecx
mov eax, dword [ebp - 0x78]
mov edx, dword [eax]
mov al, byte [edx + esi]
test al, al
je 0x4599de
xor edx, edx
mov dl, al
cmp edx, 0x24
je 0x4599de
mov ecx, dword [ebp - 0x7c]
mov byte [ecx], al
inc esi
inc dword [ebp - 0x7c]
cmp esi, 0x100
jl 0x4599b8
mov byte [ebp + esi - 0x184], 0
test esi, esi
jle 0x459a03
lea eax, [ebp - 0x184]
push eax
lea edx, [ebx + 0x2c8]
push edx
push 0
mov ecx, dword [ebp - 0x48]
push ecx
call sub.USER32.DLL_AppendMenuA
inc ebx
add dword [ebp - 0x74], 4
mov eax, dword [ebp - 0x38]
cmp ebx, dword [eax]
jl 0x4599a5
push str.Copy_to_clipboard
mov edx, dword [ebp - 0x48]
push edx
push 0x10
mov ecx, dword [ebp - 0x44]
push ecx
call sub.USER32.DLL_AppendMenuA
jmp 0x459a3a
push str.Copy_to_clipboard
push 0x2c8
push 0
mov eax, dword [ebp - 0x44]
push eax
call sub.USER32.DLL_AppendMenuA
test byte [ebp - 0x28], 4
je 0x459a51
cmp dword [edi + 0x108], 0
jle 0x459a51
call sub.USER32.DLL_CreatePopupMenu
mov dword [ebp - 0x4c], eax
cmp dword [ebp - 0x4c], 0
je 0x459b22
xor ebx, ebx
mov eax, dword [ebp - 0x38]
lea edx, [eax + 0x90]
mov dword [ebp - 0x70], edx
mov ecx, dword [ebp - 0x38]
lea eax, [ecx + 0xd4]
mov dword [ebp - 0x74], eax
jmp 0x459b03
mov edx, dword [ebp - 0x74]
test byte [edx], 0x16
jne 0x459afb
xor esi, esi
lea eax, [ebp - 0x184]
mov dword [ebp - 0x84], eax
mov edx, dword [ebp - 0x70]
mov ecx, edx
mov dword [ebp - 0x80], ecx
mov eax, dword [ebp - 0x80]
mov edx, dword [eax]
mov al, byte [edx + esi]
test al, al
je 0x459ac4
xor edx, edx
mov dl, al
cmp edx, 0x24
je 0x459ac4
mov ecx, dword [ebp - 0x84]
mov byte [ecx], al
inc esi
inc dword [ebp - 0x84]
cmp esi, 0x100
jl 0x459a98
mov byte [ebp + esi - 0x184], 0
test esi, esi
jle 0x459afb
lea eax, [ebp - 0x184]
push eax
lea edx, [ebx + 0x280]
push edx
mov ecx, 8
cmp ebx, dword [edi + 0x12c]
je 0x459aee
add ecx, 0xfffffff8
or ecx, 0
push ecx
mov eax, dword [ebp - 0x4c]
push eax
call sub.USER32.DLL_AppendMenuA
inc ebx
add dword [ebp - 0x70], 4
inc dword [ebp - 0x74]
mov edx, dword [ebp - 0x38]
cmp ebx, dword [edx]
jl 0x459a7a
push str.Sort_by
mov ecx, dword [ebp - 0x4c]
push ecx
push 0x10
mov eax, dword [ebp - 0x44]
push eax
call sub.USER32.DLL_AppendMenuA
test dword [ebp - 0x28], 0x4050
je 0x459b33
call sub.USER32.DLL_CreatePopupMenu
mov dword [ebp - 0x50], eax
cmp dword [ebp - 0x50], 0
je 0x459e54
test byte [ebp - 0x27], 0x80
je 0x459b94
mov edx, dword [ebp + 0xc]
cmp edx, dword [0x4d3b84]
je 0x459b68
test byte [edi + 0x236], 4
je 0x459b7f
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_GetParent
cmp eax, dword [0x4d3b84]
jne 0x459b7f
push str.Always_on_top
push 0x2c0
push 8
mov eax, dword [ebp - 0x50]
push eax
call sub.USER32.DLL_AppendMenuA
jmp 0x459b94
push str.Always_on_top
push 0x2c0
push 0
mov edx, dword [ebp - 0x50]
push edx
call sub.USER32.DLL_AppendMenuA
cmp dword [edi + 0x22d], 1
jne 0x459bb4
push str.Hide_bar
push 0x299
push 0
mov ecx, dword [ebp - 0x50]
push ecx
call sub.USER32.DLL_AppendMenuA
jmp 0x459bd2
cmp dword [edi + 0x22d], 0
jne 0x459bd2
push str.Show_bar
push 0x298
push 0
mov eax, dword [ebp - 0x50]
push eax
call sub.USER32.DLL_AppendMenuA
cmp word [edi + 0x231], 1
jne 0x459bfc
test byte [edi + 0x236], 1
jne 0x459bfc
push str.Hide_horizontal_scroll
push 0x29b
push 0
mov edx, dword [ebp - 0x50]
push edx
call sub.USER32.DLL_AppendMenuA
jmp 0x459c24
cmp word [edi + 0x231], 0
jne 0x459c24
test byte [edi + 0x236], 1
jne 0x459c24
push str.Show_horizontal_scroll
push 0x29a
push 0
mov ecx, dword [ebp - 0x50]
push ecx
call sub.USER32.DLL_AppendMenuA
mov eax, dword [ebp - 0x38]
cmp dword [eax], 1
jle 0x459c41
push str.Default_columns
push 0x29c
push 0
mov edx, dword [ebp - 0x50]
push edx
call sub.USER32.DLL_AppendMenuA
test byte [ebp - 0x28], 0x20
je 0x459c5c
push str.Wide_columns
push 0x29d
push 0
mov ecx, dword [ebp - 0x50]
push ecx
call sub.USER32.DLL_AppendMenuA
test byte [ebp - 0x28], 0x10
je 0x459d3e
call sub.USER32.DLL_CreatePopupMenu
mov dword [ebp - 0x54], eax
cmp dword [ebp - 0x54], 0
je 0x459cce
xor ebx, ebx
mov eax, ebx
lea edx, [ebx + 0x2a0]
shl eax, 8
mov ecx, 8
add eax, 0x4d40c8
push eax
push edx
cmp ebx, dword [edi + 0x239]
je 0x459c99
add ecx, 0xfffffff8
or ecx, 0
push ecx
mov eax, dword [ebp - 0x54]
push eax
call sub.USER32.DLL_AppendMenuA
inc ebx
cmp ebx, 8
jl 0x459c76
test byte [ebp - 0x28], 0x40
je 0x459cb9
mov edx, str.Font__this_
jmp 0x459cbe
mov edx, 0x4bb5ec
push edx
mov eax, dword [ebp - 0x54]
push eax
push 0x10
mov ecx, dword [ebp - 0x50]
push ecx
call sub.USER32.DLL_AppendMenuA
call sub.USER32.DLL_CreatePopupMenu
mov dword [ebp - 0x58], eax
cmp dword [ebp - 0x58], 0
je 0x459d3e
mov dword [ebp - 0x70], 0x4d4a74
xor ebx, ebx
mov eax, dword [ebp - 0x70]
lea ecx, [ebx + 0x2b0]
mov edx, dword [eax]
mov eax, 8
push edx
push ecx
movsx edx, word [edi + 0x23d]
cmp ebx, edx
je 0x459d05
add eax, 0xfffffff8
or eax, 0
push eax
mov ecx, dword [ebp - 0x58]
push ecx
call sub.USER32.DLL_AppendMenuA
inc ebx
add dword [ebp - 0x70], 0x24
cmp ebx, 8
jl 0x459ce5
test byte [ebp - 0x28], 0x40
je 0x459d29
mov eax, str.Colors__this_
jmp 0x459d2e
mov eax, str.Colors
push eax
mov edx, dword [ebp - 0x58]
push edx
push 0x10
mov ecx, dword [ebp - 0x50]
push ecx
call sub.USER32.DLL_AppendMenuA
test byte [ebp - 0x28], 0x40
je 0x459ddd
call sub.USER32.DLL_CreatePopupMenu
mov dword [ebp - 0x5c], eax
cmp dword [ebp - 0x5c], 0
je 0x459d90
xor ebx, ebx
mov eax, ebx
shl eax, 8
add eax, 0x4d40c8
push eax
lea edx, [ebx + 0x2e0]
push edx
push 0
mov ecx, dword [ebp - 0x5c]
push ecx
call sub.USER32.DLL_AppendMenuA
inc ebx
cmp ebx, 8
jl 0x459d58
push str.Font__all_
mov eax, dword [ebp - 0x5c]
push eax
push 0x10
mov edx, dword [ebp - 0x50]
push edx
call sub.USER32.DLL_AppendMenuA
call sub.USER32.DLL_CreatePopupMenu
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 0
je 0x459ddd
mov dword [ebp - 0x70], 0x4d4a74
xor ebx, ebx
mov eax, dword [ebp - 0x70]
mov edx, dword [eax]
push edx
lea ecx, [ebx + 0x2f0]
push ecx
push 0
mov eax, dword [ebp - 0x60]
push eax
call sub.USER32.DLL_AppendMenuA
inc ebx
add dword [ebp - 0x70], 0x24
cmp ebx, 8
jl 0x459da7
push str.Colors__all_
mov edx, dword [ebp - 0x60]
push edx
push 0x10
mov ecx, dword [ebp - 0x50]
push ecx
call sub.USER32.DLL_AppendMenuA
test byte [ebp - 0x27], 0x40
je 0x459e40
call sub.USER32.DLL_CreatePopupMenu
mov dword [ebp - 0x64], eax
cmp dword [ebp - 0x64], 0
je 0x459e40
xor ebx, ebx
mov eax, ebx
lea edx, [ebx + 0x2b8]
shl eax, 8
mov ecx, 8
add eax, 0x4d96ac
push eax
push edx
movsx eax, word [edi + 0x23f]
cmp ebx, eax
je 0x459e19
add ecx, 0xfffffff8
or ecx, 0
push ecx
mov edx, dword [ebp - 0x64]
push edx
call sub.USER32.DLL_AppendMenuA
inc ebx
cmp ebx, 5
jl 0x459df3
push 0x4bb61e
mov ecx, dword [ebp - 0x64]
push ecx
push 0x10
mov eax, dword [ebp - 0x50]
push eax
call sub.USER32.DLL_AppendMenuA
push 0x4bb43d
mov edx, dword [ebp - 0x50]
push edx
push 0x10
mov ecx, dword [ebp - 0x44]
push ecx
call sub.USER32.DLL_AppendMenuA
cmp dword [0x4bb408], 0
je 0x459e9e
mov eax, dword [ebp - 0x1a4]
add eax, eax
add eax, dword [ebp - 0x19c]
mov ecx, 3
cdq
idiv ecx
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x1a0]
add eax, eax
add eax, dword [ebp - 0x198]
mov ecx, 3
cdq
idiv ecx
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x40]
push eax
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_ClientToScreen
jmp 0x459ea7
lea ecx, [ebp - 0x40]
push ecx
call sub.USER32.DLL_GetCursorPos
push 0
mov eax, dword [ebp + 0xc]
push eax
push 0
mov edx, dword [ebp - 0x3c]
push edx
mov ecx, dword [ebp - 0x40]
push ecx
push 0x102
mov eax, dword [ebp - 0x44]
push eax
call sub.USER32.DLL_TrackPopupMenu
cmp dword [ebp - 0x48], 0
mov ebx, eax
je 0x459ed6
mov eax, dword [ebp - 0x48]
push eax
call sub.USER32.DLL_DestroyMenu
cmp dword [ebp - 0x4c], 0
je 0x459ee5
mov edx, dword [ebp - 0x4c]
push edx
call sub.USER32.DLL_DestroyMenu
cmp dword [ebp - 0x50], 0
je 0x459ef4
mov ecx, dword [ebp - 0x50]
push ecx
call sub.USER32.DLL_DestroyMenu
cmp dword [ebp - 0x54], 0
je 0x459f03
mov eax, dword [ebp - 0x54]
push eax
call sub.USER32.DLL_DestroyMenu
cmp dword [ebp - 0x58], 0
je 0x459f12
mov edx, dword [ebp - 0x58]
push edx
call sub.USER32.DLL_DestroyMenu
cmp dword [ebp - 0x5c], 0
je 0x459f21
mov ecx, dword [ebp - 0x5c]
push ecx
call sub.USER32.DLL_DestroyMenu
cmp dword [ebp - 0x60], 0
je 0x459f30
mov eax, dword [ebp - 0x60]
push eax
call sub.USER32.DLL_DestroyMenu
cmp dword [ebp - 0x64], 0
je 0x459f3f
mov edx, dword [ebp - 0x64]
push edx
call sub.USER32.DLL_DestroyMenu
cmp dword [ebp + 0x18], 0
jne 0x459f4e
mov ecx, dword [ebp - 0x44]
push ecx
call sub.USER32.DLL_DestroyMenu
test byte [ebp - 0x28], 2
je 0x459f72
cmp ebx, 0x29e
jne 0x459f72
push 0xffffffffffffffff
push edi
mov eax, dword [ebp + 0xc]
push eax
call fcn.00453dd8
add esp, 0xc
xor ebx, ebx
jmp 0x45a228
test byte [ebp - 0x28], 2
je 0x459f96
cmp ebx, 0x29f
jne 0x459f96
push 0xfffffffffffffffe
push edi
mov eax, dword [ebp + 0xc]
push eax
call fcn.00453dd8
add esp, 0xc
xor ebx, ebx
jmp 0x45a228
test byte [ebp - 0x28], 2
je 0x459fc7
cmp ebx, 0x2c8
jl 0x459fc7
cmp ebx, 0x2d9
jge 0x459fc7
add ebx, 0xfffffd38
push ebx
push edi
mov eax, dword [ebp + 0xc]
push eax
call fcn.00453dd8
add esp, 0xc
xor ebx, ebx
jmp 0x45a228
test byte [ebp - 0x28], 4
je 0x45a01a
cmp ebx, 0x280
jl 0x45a01a
cmp ebx, 0x291
jge 0x45a01a
add ebx, 0xfffffd80
push ebx
lea eax, [edi + 4]
push eax
call sym.ollydbg.exe__Sortsorteddata
add esp, 8
test eax, eax
je 0x45a006
push 1
mov edx, dword [edi + 0x110]
push edx
push edi
call sym.ollydbg.exe__Selectandscroll
add esp, 0xc
push 0
push 0
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_InvalidateRect
xor ebx, ebx
jmp 0x45a228
test byte [ebp - 0x28], 0x10
je 0x45a228
cmp ebx, 0x298
jl 0x45a228
cmp ebx, 0x2df
jg 0x45a228
cmp ebx, 0x2c0
jne 0x45a09b
test byte [edi + 0x236], 4
je 0x45a05b
mov eax, dword [ebp + 0xc]
push eax
call sub.USER32.DLL_GetParent
mov dword [ebp - 0x68], eax
jmp 0x45a061
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x68], edx
mov ecx, dword [ebp - 0x68]
cmp ecx, dword [0x4d3b84]
jne 0x45a078
xor eax, eax
mov dword [0x4d3b84], eax
jmp 0x45a203
mov edx, dword [ebp - 0x68]
push 0x13
push 0
push 0
push 0
push 0
push 0
mov dword [0x4d3b84], edx
mov ecx, dword [ebp - 0x68]
push ecx
call sub.USER32.DLL_SetWindowPos
jmp 0x45a203
cmp ebx, 0x299
jne 0x45a0b0
xor eax, eax
mov dword [edi + 0x22d], eax
jmp 0x45a203
cmp ebx, 0x298
jne 0x45a0c7
mov dword [edi + 0x22d], 1
jmp 0x45a203
cmp ebx, 0x29b
jne 0x45a0ef
xor edx, edx
mov word [edi + 0x231], dx
movsx ecx, word [edi + 0x231]
push ecx
push 0
mov eax, dword [edi]
push eax
call sub.USER32.DLL_ShowScrollBar
jmp 0x45a203
cmp ebx, 0x29a
jne 0x45a119
mov dx, 1
mov word [edi + 0x231], dx
movsx ecx, word [edi + 0x231]
push ecx
push 0
mov eax, dword [edi]
push eax
call sub.USER32.DLL_ShowScrollBar
jmp 0x45a203
cmp ebx, 0x29c
jne 0x45a138
xor edx, edx
mov dword [edi + 0x245], edx
mov ecx, dword [ebp - 0x38]
push ecx
call sym.ollydbg.exe__Defaultbar
pop ecx
jmp 0x45a203
cmp ebx, 0x29d
jne 0x45a19b
mov eax, dword [ebp - 0x38]
mov esi, 1
mov edx, dword [eax + 4]
mov ecx, dword [edx*4 + 0x4d48f4]
mov dword [ebp - 8], ecx
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x38]
mov edx, dword [eax + 0x4c]
imul edx, dword [ebp - 8]
mov dword [ecx + 8], edx
mov eax, dword [ebp - 0x38]
lea edx, [eax + 0x50]
mov dword [ebp - 0x70], edx
jmp 0x45a185
mov ecx, dword [ebp - 0x70]
mov eax, dword [ecx]
imul dword [ebp - 8]
add eax, eax
mov edx, dword [ebp - 0x70]
mov dword [edx - 0x44], eax
inc esi
add dword [ebp - 0x70], 4
mov ecx, dword [ebp - 0x38]
cmp esi, dword [ecx]
jge 0x45a191
cmp esi, 0x11
jl 0x45a170
xor eax, eax
mov dword [edi + 0x245], eax
jmp 0x45a203
cmp ebx, 0x2a0
jl 0x45a1c9
cmp ebx, 0x2ab
jge 0x45a1c9
add ebx, 0xfffffd60
mov dword [edi + 0x239], ebx
mov eax, dword [ebp - 0x38]
mov dword [eax + 4], ebx
mov edx, dword [ebp - 0x38]
push edx
call sym.ollydbg.exe__Defaultbar
pop ecx
jmp 0x45a203
cmp ebx, 0x2b0
jl 0x45a1e7
cmp ebx, 0x2b8
jge 0x45a1e7
add bx, 0xfd50
mov word [edi + 0x23d], bx
jmp 0x45a203
cmp ebx, 0x2b8
jl 0x45a203
cmp ebx, 0x2bd
jge 0x45a203
add bx, 0xfd48
mov word [edi + 0x23f], bx
push 0
push 0
mov ecx, dword [ebp + 0xc]
push ecx
call sub.USER32.DLL_InvalidateRect
test byte [edi + 0x236], 0x20
je 0x45a226
mov eax, dword [ebp + 0xc]
push eax
push edi
call fcn.00453e40
add esp, 8
xor ebx, ebx
mov eax, ebx
jmp 0x45a2c7
cmp dword [ebp + 0x10], 0x474
jne 0x45a249
push 0
push 0
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_InvalidateRect
xor eax, eax
jmp 0x45a2c7
cmp dword [ebp + 0x10], 0x47
jne 0x45a293
mov edx, dword [ebp + 0x18]
mov ecx, dword [edx]
cmp ecx, dword [0x4d3b84]
je 0x45a27c
cmp dword [0x4d3b84], 0
je 0x45a27c
push 0x13
push 0
push 0
push 0
push 0
push 0
mov eax, dword [0x4d3b84]
push eax
call sub.USER32.DLL_SetWindowPos
mov edx, dword [ebp + 0x18]
push edx
mov ecx, dword [ebp + 0x14]
push ecx
mov eax, dword [ebp + 0x10]
push eax
mov edx, dword [ebp + 0xc]
push edx
call sub.USER32.DLL_DefMDIChildProcA
jmp 0x45a2c7
cmp dword [ebp + 0x10], 2
jne 0x45a2c5
mov ecx, dword [ebp + 0xc]
cmp ecx, dword [0x4d3b84]
jne 0x45a2ab
xor eax, eax
mov dword [0x4d3b84], eax
test byte [edi + 0x236], 2
je 0x45a2c1
mov edx, dword [ebp + 0xc]
push edx
push edi
call fcn.00453e40
add esp, 8
xor ecx, ecx
mov dword [edi], ecx
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret