Function at 0x402370
Capabilities:
Set current directory

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x1050
call sub.ntdll.dll__chkstk
push 0xffffffffffffffeb
push dword [ebp + 8]
call dword [sym.imp.user32.dll_GetWindowLongW]
test eax, eax
je 0x403269
mov esi, eax
mov edx, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
mov edi, dword [ebp + 0xc]
cmp edi, 0x81
jg 0x402403
lea eax, [edi - 1]
cmp eax, 0x4d
ja case.default.0x4023b5
jmp dword [eax*4 + 0x40910c]
lea edx, [esi + 4]
mov ecx, dword [esi]
sub esp, 0x10
movdqa xmm0, xmmword [0x4096c0]
movdqu xmmword [esp], xmm0
call sym._create_tree_window
add esp, 0x10
lea eax, [esi + 0x36c]
mov edx, esi
add edx, 0x98
mov ecx, dword [esi]
push dword [esi + 0x574]
push eax
push 5
push 6
call sym._create_tree_window
add esp, 0x10
xor ecx, ecx
jmp 0x4031f8
cmp edi, 0x1ff
jg 0x402495
lea eax, [edi - 0x100]
cmp eax, 0x20
ja case.default.0x40241e
jmp dword [eax*4 + 0x409244]
xor ecx, ecx
cmp ebx, 0x1b
jne 0x4031f8
call dword [sym.imp.user32.dll_GetCapture]
mov ecx, dword [ebp + 8]
cmp eax, ecx
jne 0x4031f6
mov eax, dword [0x414ba0]
mov dword [esi + 0x15c], eax
lea eax, [esp + 0x40]
push eax
push ecx
call dword [sym.imp.user32.dll_GetClientRect]
mov edx, dword [esp + 0x48]
mov ecx, esi
push dword [esp + 0x4c]
call sym._resize_tree
add esp, 4
mov dword [0x414ba0], 0xffffffff
call dword [sym.imp.user32.dll_ReleaseCapture]
push 0x7f00
push 0
call dword [sym.imp.user32.dll_LoadCursorW]
push eax
call dword [sym.imp.user32.dll_SetCursor]
xor ecx, ecx
jmp 0x4031f8
cmp edi, 0x201
jg 0x4024f4
cmp edi, 0x200
je 0x402a96
cmp edi, 0x201
jne case.0x40241e.257
movsx edi, dx
lea eax, [esp + 0x40]
push eax
mov ebx, dword [ebp + 8]
push ebx
call dword [sym.imp.user32.dll_GetClientRect]
mov eax, dword [esi + 0x15c]
lea ecx, [eax - 2]
cmp edi, ecx
jl 0x4031f6
lea ecx, [eax + 3]
cmp edi, ecx
jge 0x4031f6
mov dword [0x414ba0], eax
push ebx
call dword [sym.imp.user32.dll_SetCapture]
jmp 0x4031f6
cmp edi, 0x202
je 0x402b25
cmp edi, 0xbf80
jne case.0x40241e.257
call dword [sym.imp.user32.dll_GetFocus]
lea ecx, [esi + 4]
lea edx, [esi + 0x98]
cmp eax, dword [esi + 4]
cmove edx, ecx
movsx eax, bx
cmp eax, 0x193
jle 0x402b43
lea eax, [ebx - 0x194]
cmp ax, 0xa
ja case.default.0x402542
movzx eax, ax
jmp dword [eax*4 + 0x4092e8]
mov ecx, 1
cmp dword [esi + 0xe38], 0
je 0x4031f8
mov dword [esi + 0xe38], 0
jmp 0x402f4c
cmp edi, 0x7b
jne case.0x40241e.257
movsx eax, dx
mov dword [esp + 4], eax
mov dword [esp + 0x40], eax
sar edx, 0x10
mov dword [esp + 8], edx
mov dword [esp + 0x44], edx
lea eax, [esp + 0x40]
push eax
push ebx
call dword [sym.imp.user32.dll_ScreenToClient]
movzx eax, word [esp + 0x40]
mov ecx, dword [esp + 0x44]
shl ecx, 0x10
or ecx, eax
mov edi, dword [sym.imp.user32.dll_SendMessageW]
push ecx
push 0
push 0x201
push ebx
call edi
movzx eax, word [esp + 0x40]
mov ecx, dword [esp + 0x44]
shl ecx, 0x10
or ecx, eax
push ecx
push 0
push 0x202
push ebx
call edi
call dword [sym.imp.user32.dll_GetFocus]
lea ecx, [esi + 4]
mov ebx, esi
add ebx, 0x98
cmp eax, dword [esi + 4]
cmove ebx, ecx
push 0
push 0
push 0x188
push dword [ebx]
call edi
cmp eax, 0xffffffff
je 0x4031f6
push 0
push eax
push 0x199
push dword [ebx]
call dword [sym.imp.user32.dll_SendMessageW]
mov ecx, eax
mov edx, dword [ebp + 8]
call sym._get_to_absolute_pidl
test eax, eax
je 0x4031f6
mov edi, eax
lea ebx, [esp + 0x10]
lea eax, [esp + 0x84c]
push ebx
push eax
push 0x40b0b8
push edi
call dword [sym.imp.shell32.dll_SHBindToParent]
test eax, eax
js 0x40266e
mov ecx, dword [esp + 0x84c]
mov edx, dword [ebp + 8]
push dword [esp + 8]
push dword [esp + 8]
push ebx
call sym._ShellFolderContextMenu
add esp, 0xc
test eax, eax
jne 0x402661
mov ecx, esi
call sym._refresh_child
mov eax, dword [esp + 0x84c]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [0x414854]
mov ecx, dword [eax]
push edi
push eax
call dword [ecx + 0x14]
jmp 0x4031f6
cmp edi, 0x82
jne case.0x40241e.257
mov ecx, esi
add ecx, 0x578
call sym._free_entries
mov eax, dword fs:[0x18]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x30]
push esi
push 0
push dword [eax + 0x18]
call dword [sym.imp.kernel32.dll_HeapFree]
push 0
push 0xffffffffffffffeb
push dword [ebp + 8]
call dword [sym.imp.user32.dll_SetWindowLongW]
xor ecx, ecx
jmp 0x4031f8
call dword [sym.imp.user32.dll_GetFocus]
lea ecx, [esi + 4]
mov edx, dword [esi + 4]
mov edi, esi
add edi, 0x98
cmp eax, edx
cmove edi, ecx
shr ebx, 0x10
xor ecx, ecx
cmp bx, 2
je 0x402b71
cmp bx, 1
jne 0x4031f8
push 0
push 0
push 0x188
push dword [edi]
mov dword [esp + 0x18], eax
mov ebx, edx
call dword [sym.imp.user32.dll_SendMessageW]
push 0
mov dword [esp + 8], eax
push eax
push 0x199
push dword [edi]
call dword [sym.imp.user32.dll_SendMessageW]
cmp dword [esp + 8], ebx
je 0x402cc6
mov dword [edi + 0x90], eax
xor ecx, ecx
jmp 0x4031f8
mov eax, dword [0x414ba4]
test eax, eax
je 0x402761
mov ecx, dword [eax]
push edx
push ebx
push 0x117
push eax
mov edi, edx
call dword [ecx + 0x18]
mov edx, edi
xor ecx, ecx
test eax, eax
jns 0x4031f8
mov eax, dword [0x414bb8]
test eax, eax
je 0x402781
mov ecx, dword [eax]
push edx
push ebx
push 0x117
push eax
call dword [ecx + 0x18]
xor ecx, ecx
test eax, eax
jns 0x4031f8
mov ecx, esi
call sym._update_view_menu
xor ecx, ecx
jmp 0x4031f8
mov eax, dword [0x414ba4]
test eax, eax
je 0x4031f6
mov dword [esp + 0x40], 0
mov ecx, dword [eax]
mov esi, edx
lea edx, [esp + 0x40]
push edx
push esi
push ebx
push 0x120
push eax
call dword [ecx + 0x1c]
mov ecx, dword [esp + 0x40]
jmp 0x4031f8
cmp ebx, 1
je case.0x40241e.257
mov eax, edx
shr eax, 0x10
mov ecx, dword [ebp + 0x14]
movzx edx, cx
mov ecx, esi
push eax
call sym._resize_tree
mov edx, dword [ebp + 0x14]
add esp, 4
jmp case.0x40241e.257
lea eax, [esi + 0x164]
push eax
call dword [sym.imp.kernel32.dll_SetCurrentDirectoryW]
test eax, eax
je 0x4027fe
call sym._set_space_status
lea eax, [esi + 0x98]
mov ecx, esi
add ecx, 4
cmp dword [esi + 0x12c], 0
cmovne ecx, eax
push dword [ecx]
call dword [sym.imp.user32.dll_SetFocus]
xor ecx, ecx
jmp 0x4031f8
lea eax, [esp + 0x84c]
push eax
mov edi, dword [ebp + 8]
push edi
call dword [sym.imp.user32.dll_GetClientRect]
lea eax, [esp + 0x40]
push eax
push edi
call dword [sym.imp.user32.dll_BeginPaint]
mov eax, dword [esi + 0x15c]
lea ecx, [eax - 2]
mov dword [esp + 0x84c], ecx
add eax, 3
mov dword [esp + 0x854], eax
push 1
call dword [sym.imp.gdi32.dll_GetStockObject]
mov ebx, dword [sym.imp.gdi32.dll_SelectObject]
push eax
push dword [esp + 0x44]
call ebx
mov esi, eax
mov eax, dword [esp + 0x858]
add eax, 1
mov ecx, dword [esp + 0x850]
add ecx, 0xffffffff
push eax
push dword [esp + 0x858]
push ecx
push dword [esp + 0x858]
push dword [esp + 0x50]
call dword [sym.imp.gdi32.dll_Rectangle]
push esi
push dword [esp + 0x44]
call ebx
lea eax, [esp + 0x40]
push eax
push edi
call dword [sym.imp.user32.dll_EndPaint]
xor ecx, ecx
jmp 0x4031f8
cmp dx, 1
jne case.0x40241e.257
lea eax, [esp + 0x40]
push eax
call dword [sym.imp.user32.dll_GetCursorPos]
lea eax, [esp + 0x40]
push eax
push dword [ebp + 8]
call dword [sym.imp.user32.dll_ScreenToClient]
mov eax, dword [esp + 0x40]
mov ecx, dword [esi + 0x15c]
lea edx, [ecx - 2]
cmp eax, edx
jl 0x402c7e
add ecx, 3
cmp eax, ecx
jge 0x402c7e
push 0x7f84
push 0
call dword [sym.imp.user32.dll_LoadCursorW]
push eax
call dword [sym.imp.user32.dll_SetCursor]
mov ecx, 1
jmp 0x4031f8
push edx
push ebx
push 0x24
push dword [ebp + 8]
mov esi, edx
call dword [sym.imp.user32.dll_DefMDIChildProcW]
shl dword [esi + 0x20], 1
shl dword [esi + 0x24], 1
xor ecx, ecx
jmp 0x4031f8
mov ecx, dword [edx + 4]
mov eax, dword [edx + 0x2c]
cmp ecx, 6
je 0x402b87
cmp ecx, 3
jne case.0x4023b5.44
add esi, 4
jmp 0x402b8d
xor ecx, ecx
test ebx, ebx
jne 0x4031f8
mov eax, dword [0x414ba4]
test eax, eax
je 0x40297d
mov ecx, dword [eax]
push edx
push 0
push edi
push eax
mov esi, edx
call dword [ecx + 0x18]
xor ecx, ecx
mov edx, esi
test eax, eax
jns 0x402fdc
mov eax, dword [0x414bb8]
test eax, eax
je 0x4031f8
mov ecx, dword [eax]
push edx
push 0
push edi
push eax
call dword [ecx + 0x18]
xor ecx, ecx
test eax, eax
jns 0x402fdc
jmp 0x4031f8
lea ecx, [esi + 0x98]
add esi, 4
cmp dword [edx + 4], 2
mov eax, dword [edx + 8]
cmovne esi, ecx
cmp eax, 0xfffffebb
je 0x402ba4
xor ecx, ecx
cmp eax, 0xfffffebf
jne 0x4031f8
mov edi, dword [edx + 0xc]
mov eax, dword [edx + 0x14]
mov ebx, dword [eax + 4]
sub ebx, dword [esi + edi*4 + 0x30]
lea eax, [esp + 0x84c]
push eax
push dword [esi]
call dword [sym.imp.user32.dll_GetClientRect]
add dword [esi + edi*4 + 8], ebx
add dword [esi + edi*4 + 0x30], ebx
cmp edi, 9
mov dword [esp + 8], edi
jg 0x40311c
mov ecx, 0xa
sub ecx, edi
mov eax, edi
cmp ecx, 8
jb 0x403110
mov dword [esp + 4], ecx
mov eax, ecx
and eax, 0xfffffff8
movd xmm0, ebx
pshufd xmm0, xmm0, 0
lea ecx, [eax - 8]
mov edx, ecx
shr edx, 3
add edx, 1
test ecx, ecx
mov dword [esp + 0xc], edx
je 0x4030d5
mov ecx, edx
and ecx, 0xfffffffe
lea edi, [esi + edi*4]
add edi, 0x8c
xor edx, edx
movdqu xmm1, xmmword [edi + edx*4 - 0x30]
movdqu xmm2, xmmword [edi + edx*4 - 0x20]
paddd xmm1, xmm0
paddd xmm2, xmm0
movdqu xmmword [edi + edx*4 - 0x30], xmm1
movdqu xmmword [edi + edx*4 - 0x20], xmm2
movdqu xmm1, xmmword [edi + edx*4 - 0x10]
movdqu xmm2, xmmword [edi + edx*4]
paddd xmm1, xmm0
paddd xmm2, xmm0
movdqu xmmword [edi + edx*4 - 0x10], xmm1
movdqu xmmword [edi + edx*4], xmm2
add edx, 0x10
add ecx, 0xfffffffe
jne 0x402a4b
jmp 0x4030d7
mov edi, edx
call dword [sym.imp.user32.dll_GetCapture]
xor ecx, ecx
mov edx, dword [ebp + 8]
cmp eax, edx
jne 0x4031f8
mov ebx, edi
shl ebx, 0x10
lea eax, [esp + 0x40]
push eax
push edx
call dword [sym.imp.user32.dll_GetClientRect]
cmp ebx, 0xffff0001
jl 0x4031f6
movsx ebx, di
mov edx, dword [esp + 0x48]
cmp ebx, edx
jge 0x4031f6
mov dword [esi + 0x15c], ebx
mov ecx, esi
push dword [esp + 0x4c]
call sym._resize_tree
add esp, 4
lea eax, [ebx - 2]
mov dword [esp + 0x40], eax
add ebx, 3
mov dword [esp + 0x48], ebx
push 0
lea eax, [esp + 0x44]
push eax
mov ebx, dword [ebp + 8]
push ebx
call dword [sym.imp.user32.dll_InvalidateRect]
mov edi, dword [sym.imp.user32.dll_UpdateWindow]
push dword [esi + 4]
call edi
push ebx
call edi
push dword [esi + 0x98]
call edi
jmp 0x4031f6
call dword [sym.imp.user32.dll_GetCapture]
xor ecx, ecx
cmp eax, dword [ebp + 8]
jne 0x4031f8
call dword [sym.imp.user32.dll_ReleaseCapture]
xor ecx, ecx
jmp 0x4031f8
lea eax, [ebx - 0x65]
cmp ax, 7
ja case.default.0x402b53
movzx eax, ax
jmp dword [eax*4 + 0x4092c8]
mov ecx, esi
push dword [ebp + 8]
call sym._activate_entry
add esp, 4
mov ecx, 1
jmp 0x4031f8
mov ecx, esi
mov edx, edi
push dword [ebp + 8]
call sym._activate_entry
xor ecx, ecx
add esp, 4
jmp 0x4031f8
add esi, 0x98
mov ecx, esi
push 0xffffffffffffffff
push eax
call sym._draw_item
add esp, 8
mov ecx, 1
jmp 0x4031f8
mov edi, dword [edx + 0xc]
push 0
push 0
push 0x18b
push dword [esi]
call dword [sym.imp.user32.dll_SendMessageW]
mov ebx, eax
mov dword [esp + 8], edi
mov dword [esi + edi*4 + 8], 0
push dword [esi]
call dword [sym.imp.user32.dll_GetDC]
push dword [0x414034]
mov dword [esp + 8], eax
push eax
call dword [sym.imp.gdi32.dll_SelectObject]
mov dword [esp + 0xc], eax
test ebx, ebx
jle 0x402c42
xor edi, edi
nop dword [eax]
push 0
push edi
push 0x199
push dword [esi]
call dword [sym.imp.user32.dll_SendMessageW]
pxor xmm0, xmm0
movdqa xmmword [esp + 0x40], xmm0
mov dword [esp + 0x50], 0
mov ecx, dword [esi]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 4]
mov dword [esp + 0x58], ecx
lea ecx, [esp + 0x5c]
movdqu xmmword [ecx], xmm0
mov ecx, esi
lea edx, [esp + 0x40]
push dword [esp + 8]
push eax
call sym._draw_item
add esp, 8
add edi, 1
cmp ebx, edi
jne 0x402bf0
push dword [esp + 0xc]
mov edi, dword [esp + 8]
push edi
call dword [sym.imp.gdi32.dll_SelectObject]
push edi
push dword [esi]
call dword [sym.imp.user32.dll_ReleaseDC]
mov ebx, dword [esp + 8]
mov eax, dword [esi + ebx*4 + 8]
test eax, eax
je 0x402ce0
mov ecx, dword [0x41403c]
lea ecx, [ecx + ecx*2]
add ecx, eax
cmp ecx, 0x11
mov eax, 0x10
cmovge eax, ecx
jmp 0x402ce2
mov edx, dword [ebp + 0x14]
push edx
push ebx
push edi
push dword [ebp + 8]
call dword [sym.imp.user32.dll_DefMDIChildProcW]
mov ecx, eax
jmp 0x4031f8
movzx eax, bx
cmp eax, 0xe130
je 0x403004
cmp eax, 0xe138
jne case.0x402b53.1
mov eax, dword [esi]
mov ecx, dword [edx + 0x90]
mov edx, eax
call sym._show_properties_dlg
mov ecx, 1
jmp 0x4031f8
mov ecx, esi
mov edx, eax
push dword [ebp + 8]
push dword [esp + 8]
call sym._set_curdir
add esp, 8
xor ecx, ecx
jmp 0x4031f8
xor eax, eax
mov dword [esi + ebx*4 + 8], eax
add eax, dword [esi + ebx*4 + 0x58]
cmp ebx, 8
jg 0x40308a
mov edx, 1
sub edx, ebx
and edx, 3
je 0x403056
mov edi, ebx
lea ecx, [edi + 1]
mov dword [esi + edi*4 + 0x5c], eax
add eax, dword [esi + edi*4 + 0xc]
mov edi, ecx
add edx, 0xffffffff
jne 0x402d05
jmp 0x403058
movzx eax, bx
cmp eax, 0x6a8
jne case.0x402b53.1
call sym._refresh_drives
jmp 0x402f4c
movzx eax, bx
mov ecx, edx
mov edx, eax
call sym._pane_command
jmp 0x4031fa
lea ebx, [esp + 0x84c]
lea edi, [esp + 0x40]
mov ecx, edx
mov edx, edi
push ebx
call sym._prompt_target
add esp, 4
test eax, eax
je 0x402fdc
mov eax, dword [ebp + 8]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 1
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x2a], 0
mov dword [esp + 0x26], 0
mov eax, 0xfffffffe
cmp word [esp + eax + 0x42], 0
lea eax, [eax + 2]
jne 0x402d9d
mov word [eax + edi + 2], 0
mov eax, 0xfffffffe
cmp word [esp + eax + 0x84e], 0
lea eax, [eax + 2]
jne 0x402db4
jmp 0x402e48
lea ebx, [esp + 0x84c]
lea edi, [esp + 0x40]
mov ecx, edx
mov edx, edi
push ebx
call sym._prompt_target
add esp, 4
test eax, eax
je 0x402fdc
mov eax, dword [ebp + 8]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 2
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x2a], 0
mov dword [esp + 0x26], 0
mov eax, 0xfffffffe
cmp word [esp + eax + 0x42], 0
lea eax, [eax + 2]
jne 0x402e23
mov word [eax + edi + 2], 0
mov eax, 0xfffffffe
cmp word [esp + eax + 0x84e], 0
lea eax, [eax + 2]
jne 0x402e3a
mov word [eax + ebx + 2], 0
lea eax, [esp + 0x10]
jmp 0x402ed9
mov eax, dword [ebp + 8]
mov dword [esp + 0x84c], eax
mov dword [esp + 0x850], 3
lea edi, [esp + 0x40]
mov dword [esp + 0x854], edi
mov dword [esp + 0x858], 0
mov word [esp + 0x85c], 0x40
mov dword [esp + 0x85e], 0
mov dword [esp + 0x862], 0
mov dword [esp + 0x866], 0
mov ecx, dword [edx + 0x90]
mov edx, edi
call sym._get_path
mov eax, 0xfffffffe
cmp word [esp + eax + 0x42], 0
lea eax, [eax + 2]
jne 0x402ec0
mov word [eax + edi + 2], 0
lea eax, [esp + 0x84c]
push eax
call dword [sym.imp.shell32.dll_SHFileOperationW]
test eax, eax
jne 0x402fdc
mov ecx, esi
call sym._refresh_child
jmp 0x402fdc
mov ecx, 1
cmp dword [esi + 0xe38], 1
je 0x4031f8
mov dword [esi + 0xe38], 1
jmp 0x402f4c
mov ecx, 1
cmp dword [esi + 0xe38], 2
je 0x4031f8
mov dword [esi + 0xe38], 2
jmp 0x402f4c
mov ecx, 1
cmp dword [esi + 0xe38], 3
je 0x4031f8
mov dword [esi + 0xe38], 3
mov ecx, esi
call sym._refresh_child
mov ecx, 1
jmp 0x4031f8
lea edi, [esp + 0x40]
push 0x208
push 0
push edi
call sub.ucrtbase.dll_memset
add esp, 0xc
xor eax, eax
movzx ecx, word [esi + eax + 0x36c]
mov word [esp + eax + 0x40], cx
add eax, 2
test cx, cx
jne 0x402f73
mov eax, dword [esi + 0x574]
mov dword [esp + 0x248], eax
push edi
push sym._FilterDialogDlgProc_16
push dword [ebp + 8]
push 0x69
push dword [section..data]
call dword [sym.imp.user32.dll_DialogBoxParamW]
cmp eax, 1
jne 0x402fdc
xor eax, eax
movzx ecx, word [esp + eax + 0x40]
mov word [esi + eax + 0x36c], cx
add eax, 2
test cx, cx
jne 0x402fb3
mov eax, dword [esp + 0x248]
mov dword [esi + 0x574], eax
mov ecx, esi
call sym._refresh_right_pane
mov ecx, 1
jmp 0x4031f8
mov eax, dword [esi + 0x15c]
mov dword [0x414ba0], eax
push dword [ebp + 8]
call dword [sym.imp.user32.dll_SetCapture]
mov ecx, 1
jmp 0x4031f8
add esi, 0x164
mov ecx, esi
xor edx, edx
push dword [ebp + 8]
call sym._alloc_child_window
add esp, 4
mov esi, eax
mov ecx, eax
call sym._create_child_window
mov ecx, 1
test eax, eax
jne 0x4031f8
mov eax, dword fs:[0x18]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x30]
push esi
push 0
push dword [eax + 0x18]
call dword [sym.imp.kernel32.dll_HeapFree]
mov ecx, 1
jmp 0x4031f8
mov ecx, ebx
add ebx, 0xfffffffa
cmp ebx, 3
jb 0x40308a
mov dword [esi + ecx*4 + 0x5c], eax
add eax, dword [esi + ecx*4 + 0xc]
mov dword [esi + ecx*4 + 0x60], eax
add eax, dword [esi + ecx*4 + 0x10]
mov dword [esi + ecx*4 + 0x64], eax
add eax, dword [esi + ecx*4 + 0x14]
mov dword [esi + ecx*4 + 0x68], eax
add eax, dword [esi + ecx*4 + 0x18]
lea edx, [ecx + 4]
mov ecx, edx
cmp edx, 9
jne 0x403060
mov edi, dword [sym.imp.user32.dll_SendMessageW]
push 0
push eax
push 0x194
push dword [esi]
call edi
mov dword [esp + 0x40], 1
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
mov ecx, dword [esi + eax*4 + 8]
mov dword [esp + 0x44], ecx
lea ecx, [esp + 0x40]
push ecx
push eax
push 0x120c
push dword [esi + 4]
call edi
push 1
push 0
push dword [esi]
call dword [sym.imp.user32.dll_InvalidateRect]
xor ecx, ecx
jmp 0x4031f8
xor edx, edx
test byte [esp + 0xc], 1
mov edi, dword [esp + 8]
je 0x403104
add edx, edi
movdqu xmm1, xmmword [esi + edx*4 + 0x5c]
movdqu xmm2, xmmword [esi + edx*4 + 0x6c]
paddd xmm1, xmm0
paddd xmm2, xmm0
movdqu xmmword [esi + edx*4 + 0x5c], xmm1
movdqu xmmword [esi + edx*4 + 0x6c], xmm2
cmp dword [esp + 4], eax
je 0x40311c
add eax, edi
nop dword [eax]
add dword [esi + eax*4 + 0x5c], ebx
add eax, 1
cmp eax, 0xa
jne 0x403110
push 0
push dword [esi]
call dword [sym.imp.user32.dll_GetScrollPos]
mov ecx, eax
mov eax, dword [esi + edi*4 + 0x5c]
mov dword [esp + 4], eax
sub eax, ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 0
mov edx, dword [esp + 0x854]
mov eax, edi
mov edi, dword [esp + 0x858]
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], edi
mov eax, dword [esi + eax*4 + 0x58]
sub eax, ecx
mov dword [esp + 0xc], ecx
cmp dword [esp + 4], ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], edi
jns 0x403182
mov dword [esp + 0x10], 0
test eax, eax
jns 0x40318e
mov dword [esp + 0x30], 0
lea edi, [esp + 0x30]
lea eax, [esp + 0x10]
push 2
push 0
push 0
push edi
push eax
push 0
push ebx
push dword [esi]
call dword [sym.imp.user32.dll_ScrollWindowEx]
mov eax, dword [esp + 8]
mov eax, dword [esi + eax*4 + 0x5c]
mov dword [esp + 0x38], eax
push 0x101
push 0
push edi
push dword [esi]
call dword [sym.imp.user32.dll_RedrawWindow]
mov eax, dword [ebp + 0x14]
cmp dword [eax + 8], 0xfffffeb9
jne 0x4031f6
push 0
push dword [esi + 0x80]
push 0x194
push dword [esi]
call dword [sym.imp.user32.dll_SendMessageW]
push 0
push dword [esi]
call dword [sym.imp.user32.dll_GetScrollPos]
cmp eax, dword [esp + 0xc]
jne 0x403204
xor ecx, ecx
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
push 0
push dword [esi]
call dword [sym.imp.user32.dll_GetScrollPos]
mov edi, eax
mov dword [esp + 0x40], 1
xor eax, eax
jmp 0x403246
mov ecx, dword [esi + eax*4 + 8]
mov dword [esp + 0x44], ecx
lea ebx, [eax + 1]
mov dword [esi + eax*4 + 0x30], ecx
lea ecx, [esp + 0x40]
push ecx
push eax
push 0x120c
push dword [esi + 4]
call dword [sym.imp.user32.dll_SendMessageW]
mov eax, ebx
cmp ebx, 0xa
je 0x4031f6
cmp dword [esi + eax*4 + 0x58], edi
jge 0x40321c
lea ebx, [eax + 1]
mov ecx, dword [esi + eax*4 + 0x5c]
sub ecx, edi
jle 0x40325d
mov dword [esp + 0x44], ecx
jmp 0x403227
mov dword [esp + 0x44], 0
xor ecx, ecx
jmp 0x403227
push 0xdb6
push str.programs_winefile_winefile.c
push str.child
call dword [sym.imp.ucrtbase.dll__assert]
nop