Function at 0x40bed6
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
push ebx
push esi
push edi
push dword [0x50e684]
mov ebx, ecx
call fcn.0042b7e3
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
xor edi, edi
push edi
push edi
push 0x111c
push dword [0x50e684]
mov dword [ebp - 8], eax
call esi
cmp dword [ebp + 8], edi
mov dword [ebp - 0xc], eax
mov eax, dword [ebx + 8]
mov dword [ebp - 4], eax
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x1c]
push eax
push 1
mov edi, 0x1104
push edi
push dword [0x50e684]
je 0x40c0a1
call esi
test eax, eax
jne 0x40bf46
push str.not_expanded____no_need_at_all
push 4
call fcn.0044fe2e
pop ecx
pop ecx
jmp 0x40c170
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x10]
test eax, eax
jl 0x40bf5c
cmp ecx, dword [ebp - 8]
jg 0x40bf5c
push str.already_in_visible_range____no_need_to_move
jmp 0x40bf38
mov edx, dword [ebp - 0xc]
add ecx, edx
cmp ecx, dword [ebp - 8]
jle 0x40bf6d
push dword [ebp - 4]
push 6
jmp 0x40bf7f
sub eax, edx
jns 0x40bf8f
mov eax, dword [ebp - 4]
cmp eax, dword [0x50efe0]
je 0x40bf8f
push eax
push 7
push 0x110a
push dword [0x50e684]
call esi
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x1c]
push eax
push 1
push edi
push dword [0x50e684]
call esi
mov eax, dword [ebp - 0x10]
xor ebx, ebx
cmp eax, dword [ebp - 8]
jle 0x40bfb5
mov ebx, dword [ebp - 8]
sub ebx, eax
jmp 0x40bfc0
mov eax, dword [ebp - 0x18]
test eax, eax
jge 0x40bfc0
neg eax
mov ebx, eax
push ebx
push str.NeededMove_is__i
push 4
call fcn.0044fe2e
add esp, 0xc
test ebx, ebx
je 0x40c170
push dword [0x50e720]
push dword [0x4a5b0c]
push str.g_FirstHighlightedItemTop_i_g_LastHighlightedItemBottom_i
push 4
call fcn.0044fe2e
mov eax, dword [0x4a5b0c]
add esp, 0x10
cmp eax, 0x7d00
je 0x40c023
add eax, ebx
jns 0x40c00d
push str.move_would_bring_first_hl_item_below_zero____nope
jmp 0x40bf38
mov eax, dword [0x50e720]
add eax, ebx
cmp eax, dword [ebp - 8]
jle 0x40c023
push str.move_would_bring_last_hl_item_below_height____nope
jmp 0x40bf38
push dword [0x50efe8]
call fcn.0043577c
mov dword [ebp + 8], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [ebp + 8]
sub eax, dword [ecx + 0x1184]
cmp eax, 0x2710
jb 0x40c061
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [ebp + 8]
sub eax, dword [ecx + 0x1180]
cmp eax, 0x2710
jae 0x40c154
mov eax, dword [0x50efe8]
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x1c]
push eax
push 1
push edi
push dword [0x50e684]
call esi
mov eax, dword [ebp - 0x18]
add eax, ebx
jns 0x40c089
push str.move_would_bring_first_selected_item_below_zero____nope
jmp 0x40bf38
mov eax, dword [ebp - 0x10]
add ebx, eax
cmp ebx, dword [ebp - 8]
jle 0x40c154
push str.move_would_bring_first_selected_item_below_height____nope
jmp 0x40bf38
call esi
test eax, eax
jne 0x40c0dc
mov eax, dword [ebx + 0xde0]
jmp 0x40c0c0
mov ecx, dword [ebp + 8]
call fcn.00407cac
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xde0]
mov dword [ebp + 8], eax
test eax, eax
jne 0x40c0af
mov eax, dword [ebx + 8]
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x1c]
push eax
push 1
push edi
push dword [0x50e684]
call esi
cmp dword [ebp - 0x18], 0
push dword [ebx + 8]
jge 0x40c13a
push 7
push 0x110a
push dword [0x50e684]
call esi
test eax, eax
je 0x40c154
mov dword [ebp - 4], eax
jmp 0x40c154
lea eax, [ebp - 0x2c]
push eax
push 1
push edi
push dword [0x50e684]
mov dword [ebp - 0x2c], ebx
call esi
mov eax, dword [ebp - 0x2c]
cmp eax, dword [ebp - 0x1c]
jle 0x40c151
lea eax, [ebp - 0x3c]
push eax
push 1
push edi
push dword [0x50e684]
mov dword [ebp - 0x3c], ebx
call esi
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 8]
add eax, ecx
cmp dword [ebp - 0x30], eax
jg 0x40c154
mov dword [ebp - 4], ebx
push ebx
push 6
push 0x110a
push dword [0x50e684]
call esi
mov ebx, eax
test ebx, ebx
jne 0x40c0fd
jmp 0x40c154
mov dword [ebp - 4], ebx
push dword [ebp - 4]
push dword [0x50e684]
call fcn.0042f6b9
push dword [ebp - 4]
push dword [0x50e684]
call fcn.0042f8ac
pop edi
pop esi
pop ebx
leave
ret 4