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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
push ebx
push esi
push edi
push dword [0x5106a4]
mov ebx, ecx
call fcn.0042c062
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
xor edi, edi
push edi
push edi
push 0x111c
push dword [0x5106a4]
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 [0x5106a4]
je 0x40c423
call esi
test eax, eax
jne 0x40c2c8
push str.not_expanded____no_need_at_all
push 4
call fcn.00451479
pop ecx
pop ecx
jmp 0x40c4f2
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x10]
test eax, eax
jl 0x40c2de
cmp ecx, dword [ebp - 8]
jg 0x40c2de
push str.already_in_visible_range____no_need_to_move
jmp 0x40c2ba
mov edx, dword [ebp - 0xc]
add ecx, edx
cmp ecx, dword [ebp - 8]
jle 0x40c2ef
push dword [ebp - 4]
push 6
jmp 0x40c301
sub eax, edx
jns 0x40c311
mov eax, dword [ebp - 4]
cmp eax, dword [0x511000]
je 0x40c311
push eax
push 7
push 0x110a
push dword [0x5106a4]
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 [0x5106a4]
call esi
mov eax, dword [ebp - 0x10]
xor ebx, ebx
cmp eax, dword [ebp - 8]
jle 0x40c337
mov ebx, dword [ebp - 8]
sub ebx, eax
jmp 0x40c342
mov eax, dword [ebp - 0x18]
test eax, eax
jge 0x40c342
neg eax
mov ebx, eax
push ebx
push str.NeededMove_is__i
push 4
call fcn.00451479
add esp, 0xc
test ebx, ebx
je 0x40c4f2
push dword [0x510740]
push dword [0x4a7b14]
push str.g_FirstHighlightedItemTop_i_g_LastHighlightedItemBottom_i
push 4
call fcn.00451479
mov eax, dword [0x4a7b14]
add esp, 0x10
cmp eax, 0x7d00
je 0x40c3a5
add eax, ebx
jns 0x40c38f
push str.move_would_bring_first_hl_item_below_zero____nope
jmp 0x40c2ba
mov eax, dword [0x510740]
add eax, ebx
cmp eax, dword [ebp - 8]
jle 0x40c3a5
push str.move_would_bring_last_hl_item_below_height____nope
jmp 0x40c2ba
push dword [0x511008]
call fcn.00436535
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 0x40c3e3
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [ebp + 8]
sub eax, dword [ecx + 0x1180]
cmp eax, 0x2710
jae 0x40c4d6
mov eax, dword [0x511008]
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x1c]
push eax
push 1
push edi
push dword [0x5106a4]
call esi
mov eax, dword [ebp - 0x18]
add eax, ebx
jns 0x40c40b
push str.move_would_bring_first_selected_item_below_zero____nope
jmp 0x40c2ba
mov eax, dword [ebp - 0x10]
add ebx, eax
cmp ebx, dword [ebp - 8]
jle 0x40c4d6
push str.move_would_bring_first_selected_item_below_height____nope
jmp 0x40c2ba
call esi
test eax, eax
jne 0x40c45e
mov eax, dword [ebx + 0xde0]
jmp 0x40c442
mov ecx, dword [ebp + 8]
call fcn.00407e1a
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xde0]
mov dword [ebp + 8], eax
test eax, eax
jne 0x40c431
mov eax, dword [ebx + 8]
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x1c]
push eax
push 1
push edi
push dword [0x5106a4]
call esi
cmp dword [ebp - 0x18], 0
push dword [ebx + 8]
jge 0x40c4bc
push 7
push 0x110a
push dword [0x5106a4]
call esi
test eax, eax
je 0x40c4d6
mov dword [ebp - 4], eax
jmp 0x40c4d6
lea eax, [ebp - 0x2c]
push eax
push 1
push edi
push dword [0x5106a4]
mov dword [ebp - 0x2c], ebx
call esi
mov eax, dword [ebp - 0x2c]
cmp eax, dword [ebp - 0x1c]
jle 0x40c4d3
lea eax, [ebp - 0x3c]
push eax
push 1
push edi
push dword [0x5106a4]
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 0x40c4d6
mov dword [ebp - 4], ebx
push ebx
push 6
push 0x110a
push dword [0x5106a4]
call esi
mov ebx, eax
test ebx, ebx
jne 0x40c47f
jmp 0x40c4d6
mov dword [ebp - 4], ebx
push dword [ebp - 4]
push dword [0x5106a4]
call fcn.004305da
push dword [ebp - 4]
push dword [0x5106a4]
call fcn.004307cd
pop edi
pop esi
pop ebx
leave
ret 4