Function at 0x404810
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x5c776b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x26c
push ebx
push ebp
push esi
push edi
mov edi, ecx
lea ecx, [esp + 0x50]
call fcn.00401000
mov eax, dword [edi + 0xb8]
xor ebx, ebx
cmp eax, ebx
mov dword [esp + 0x284], ebx
mov dword [edi + 0x1a38], 0xffffffff
je 0x4048bd
mov esi, dword [edi + 0xcc]
cmp esi, ebx
je 0x4048bd
dec esi
cmp esi, ebx
jl 0x404899
lea eax, [esi*8]
sub eax, esi
lea ebp, [edi + eax*4 + 0xd4]
mov ecx, dword [esp + 0x290]
mov edx, dword [esp + 0x28c]
push ecx
push edx
mov ecx, ebp
call fcn.00401530
test eax, eax
jne 0x404899
dec esi
sub ebp, 0x1c
cmp esi, ebx
jge 0x404876
cmp esi, ebx
mov dword [edi + 0x1a38], esi
jl 0x4048bd
lea eax, [esi*8]
sub eax, esi
lea ecx, [edi + eax*4 + 0xd4]
push ecx
lea ecx, [esp + 0x54]
call fcn.00401060
cmp dword [edi + 0x1a38], ebx
jge 0x405193
push ebx
lea ecx, [esp + 0x54]
call fcn.00401300
lea edx, [esp + 0x28c]
or eax, 0xffffffff
push edx
mov ecx, edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
call fcn.00401a00
mov eax, dword [esp + 0x290]
mov ecx, dword [esp + 0x28c]
push ebx
push eax
push ecx
mov ecx, edi
call fcn.004044e0
mov ebp, eax
xor esi, esi
push ebp
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x404977
mov edx, dword [esp + 0x290]
mov eax, dword [esp + 0x28c]
shl edx, 0x10
and eax, 0xffff
or edx, eax
push edx
push ebx
push 0x84
push ebp
call dword [sym.imp.USER32.dll_SendMessageA]
push ebx
push ebx
push ebx
push ebx
mov esi, eax
mov dword [edi + 0x19f8], ebp
call dword [sym.imp.GDI32.dll_CreateRectRgn]
push eax
push ebp
mov dword [esp + 0x6c], eax
call fcn.004046a0
add esp, 8
test eax, eax
jg 0x40497d
mov ecx, dword [esp + 0x64]
push ecx
call dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [esp + 0x64], ebx
jmp 0x40497d
mov dword [edi + 0x19f8], ebx
lea edx, [esp + 0x17c]
push 0xff
push edx
push ebp
mov byte [esp + 0x188], 0
call dword [sym.imp.USER32.dll_GetClassNameA]
cmp esi, 1
mov byte [esp + 0x27b], 0
je 0x404a1e
mov esi, str.OFormSub
lea eax, [esp + 0x17c]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x4049d6
test cl, cl
je 0x4049d2
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x4049d6
add eax, 2
add esi, 2
test cl, cl
jne 0x4049b2
xor eax, eax
jmp 0x4049db
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x404a1e
lea eax, [edi + 0xa8]
push 0x7f00
push ebx
mov ecx, dword [eax]
mov dword [esp + 0x18], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x1c], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x20], ecx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x24], edx
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
mov dword [edi + 0x19f4], ebx
jmp 0x40515c
lea eax, [esp + 0x10]
mov dword [edi + 0x19f0], ebx
push eax
push ebp
call dword [sym.imp.USER32.dll_GetClientRect]
lea ecx, [esp + 0x28c]
mov dword [esp + 0x290], ebx
push ecx
push ebp
mov dword [esp + 0x294], ebx
call dword [sym.imp.USER32.dll_ClientToScreen]
mov eax, dword [esp + 0x28c]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x290]
mov dword [esp + 0x10], eax
add edx, eax
mov eax, dword [esp + 0x1c]
add eax, ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], edx
mov esi, str.Internet_Explorer_Server
lea eax, [esp + 0x17c]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404aa7
test cl, cl
je 0x404aa3
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404aa7
add eax, 2
add esi, 2
test cl, cl
jne 0x404a83
xor eax, eax
jmp 0x404aac
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x404ac1
push 0xfffffffffffffffe
push 0xfffffffffffffffe
push 0xfffffffffffffffe
push 0xfffffffffffffffe
lea ecx, [esp + 0x20]
call fcn.005aa0de
mov eax, dword [esp + 0x64]
cmp eax, ebx
je 0x404b17
lea ecx, [esp + 0x6c]
push ecx
push eax
call dword [sym.imp.GDI32.dll_GetRgnBox]
lea edx, [esp + 0x6c]
lea eax, [esp + 0x10]
push edx
lea ecx, [esp + 0x14]
push eax
push ecx
call dword [sym.imp.USER32.dll_IntersectRect]
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
push 1
push edx
mov edx, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x1c]
push ecx
push edx
push eax
call dword [sym.imp.GDI32.dll_CreateRectRgn]
mov ecx, dword [esp + 0x6c]
push eax
push ecx
call dword [sym.imp.GDI32.dll_CombineRgn]
cmp dword [edi + 0x19fc], ebx
je 0x40515c
xor ebx, ebx
push 2
mov dword [esp + 0x2c], 1
mov dword [edi + 0x1a48], ebx
mov dword [edi + 0x1a44], ebx
call fcn.004ecb88
mov esi, eax
push 0xffffffffffffffec
push ebp
mov dword [esp + 0x28], esi
mov dword [esp + 0x34], ebx
call dword [sym.imp.USER32.dll_GetWindowLongA]
test ah, 0x70
mov eax, esi
cdq
je 0x404b7a
mov ecx, dword [esp + 0x10]
sub eax, edx
sar eax, 1
sub ecx, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28c], ecx
mov dword [esp + 0x2c], 1
jmp 0x404b90
sub eax, edx
mov edx, dword [esp + 0x18]
sar eax, 1
mov dword [esp + 0x24], eax
lea ecx, [eax + edx]
mov dword [esp + 0x28c], ecx
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
add eax, edx
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
cdq
sub eax, edx
and ecx, 0xffff
sar eax, 1
mov dword [esp + 0x290], eax
shl eax, 0x10
or eax, ecx
push eax
push 0
push 0x84
push ebp
call ebx
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x290]
mov esi, eax
mov eax, dword [esp + 0x28c]
sub eax, edx
and eax, 0xffff
shl ecx, 0x10
or eax, ecx
push eax
push 0
push 0x84
push ebp
call ebx
mov edx, dword [esp + 0x28c]
mov ecx, dword [esp + 0x290]
mov ebx, eax
mov eax, dword [esp + 0x20]
add eax, edx
and eax, 0xffff
shl ecx, 0x10
or eax, ecx
push eax
push 0
push 0x84
push ebp
call dword [sym.imp.USER32.dll_SendMessageA]
lea edx, [esp + 0x7c]
push 0xff
push edx
push ebp
mov dword [esp + 0x58], eax
call dword [sym.imp.USER32.dll_GetClassNameA]
lea eax, [esp + 0x7c]
mov byte [esp + 0x17b], 0
push eax
push str.class_name___s
mov dword [esp + 0x38], 0x1c
mov dword [esp + 0x3c], 0x17
call fcn.00436520
add esp, 8
cmp esi, 7
je 0x4050e9
cmp ebx, 7
je 0x4050e9
cmp dword [esp + 0x4c], 7
je 0x4050e9
mov esi, str.Internet_Explorer_Server
lea eax, [esp + 0x7c]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404ca9
test cl, cl
je 0x404ca5
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404ca9
add eax, 2
add esi, 2
test cl, cl
jne 0x404c81
xor eax, eax
jmp 0x404cae
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404d4c
mov eax, dword [esp + 0x2c]
mov dword [edi + 0x1a3c], 1
test eax, eax
je 0x404d03
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
sub edx, eax
lea ecx, [eax - 2]
mov eax, dword [esp + 0x20]
mov dword [edi + 0x1a44], ecx
mov ecx, dword [esp + 0x10]
sub edx, ebx
sub edx, 2
add ecx, eax
mov dword [edi + 0x1a48], edx
mov dword [esp + 0x10], ecx
lea eax, [edi + 0x1a44]
jmp 0x404e39
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x10]
mov edx, eax
sub edx, ecx
mov esi, dword [esp + 0x20]
sub edx, ebx
mov dword [edi + 0x1a44], edx
mov edx, dword [esp + 0x1c]
sub edx, ecx
mov ecx, dword [esp + 0x14]
sub edx, ecx
mov ecx, 0xfffffffe
sub ecx, esi
sub edx, 2
add eax, ecx
mov dword [edi + 0x1a48], edx
mov dword [esp + 0x18], eax
lea eax, [edi + 0x1a44]
jmp 0x404e39
mov esi, str.MozillaWindowClass
lea eax, [esp + 0x7c]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404d7d
test cl, cl
je 0x404d79
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404d7d
add eax, 2
add esi, 2
test cl, cl
jne 0x404d55
xor eax, eax
jmp 0x404d82
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404e03
mov esi, str.NS_AE_WindowClass
lea eax, [esp + 0x7c]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404db7
test cl, cl
je 0x404db3
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404db7
add eax, 2
add esi, 2
test cl, cl
jne 0x404d8f
xor eax, eax
jmp 0x404dbc
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404e03
mov esi, str.OperaWindowClass
lea eax, [esp + 0x7c]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404df1
test cl, cl
je 0x404ded
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404df1
add eax, 2
add esi, 2
test cl, cl
jne 0x404dc9
xor eax, eax
jmp 0x404df6
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404e57
push ebp
call dword [sym.imp.USER32.dll_GetParent]
mov ebp, eax
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov edx, ecx
sub edx, esi
mov esi, dword [esp + 0x14]
add edx, eax
lea eax, [edi + 0x1a44]
mov dword [edi + 0x1a3c], 6
mov dword [eax], edx
mov edx, dword [esp + 0x1c]
sub edx, ecx
sub edx, esi
mov dword [edi + 0x1a48], edx
push eax
push ebp
call dword [sym.imp.USER32.dll_ClientToScreen]
mov eax, 2
mov dword [esp + 0x44], 0
mov dword [esp + 0x3c], eax
jmp 0x40510d
mov esi, str.FRAMES2
lea eax, [esp + 0x7c]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404e88
test cl, cl
je 0x404e84
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404e88
add eax, 2
add esi, 2
test cl, cl
jne 0x404e60
xor eax, eax
jmp 0x404e8d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404f48
push ebp
call dword [sym.imp.USER32.dll_GetParent]
mov ebp, eax
lea eax, [esp + 0x7c]
push 0xff
push eax
push ebp
call dword [sym.imp.USER32.dll_GetClassNameA]
mov byte [esp + 0x17b], 0
mov esi, str.FRAMES2
lea eax, [esp + 0x7c]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404ee8
test cl, cl
je 0x404ee4
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404ee8
add eax, 2
add esi, 2
test cl, cl
jne 0x404ec0
xor eax, eax
jmp 0x404eed
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40513e
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov edx, ecx
sub edx, esi
mov esi, dword [esp + 0x14]
add edx, eax
lea eax, [edi + 0x1a44]
push eax
push ebp
mov dword [eax], edx
mov edx, dword [esp + 0x24]
sub edx, ecx
mov dword [edi + 0x1a3c], 6
sub edx, esi
mov dword [esp + 0x4c], 0
mov dword [edi + 0x1a48], edx
mov dword [esp + 0x44], 2
call dword [sym.imp.USER32.dll_ClientToScreen]
jmp 0x405109
mov eax, dword [esp + 0x290]
mov ecx, dword [esp + 0x28c]
push 1
push eax
push ecx
mov ecx, edi
call fcn.004044e0
test eax, eax
mov dword [edi + 0x19f0], eax
je 0x404fcc
cmp eax, ebp
je 0x404fcc
lea edx, [esp + 0x7c]
push 0xff
push edx
push eax
call dword [sym.imp.USER32.dll_GetClassNameA]
mov byte [esp + 0x17b], 0
mov esi, str.ScrollBar
lea eax, [esp + 0x7c]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404fb9
test cl, cl
je 0x404fb5
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404fb9
add eax, 2
add esi, 2
test cl, cl
jne 0x404f91
xor eax, eax
jmp 0x404fbe
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404fcc
mov dword [edi + 0x19f0], 0
mov eax, dword [edi + 0x19f0]
xor ebx, ebx
test eax, eax
jne 0x405009
mov eax, dword [esp + 0x28c]
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x290]
sub eax, ebx
push 1
push ecx
push eax
mov ecx, edi
mov dword [esp + 0x298], eax
call fcn.004044e0
mov dword [edi + 0x19f0], eax
mov ebx, 1
mov eax, dword [edi + 0x19f0]
test eax, eax
je 0x40513e
cmp eax, ebp
je 0x40513e
lea edx, [esp + 0x7c]
push 0xff
push edx
push eax
call dword [sym.imp.USER32.dll_GetClassNameA]
mov ecx, dword [edi + 0x19f0]
lea eax, [esp + 0x7c]
push eax
push ecx
push str.m_sb_hwnd__0x_X__class_name___s
mov byte [esp + 0x187], 0
call fcn.00436520
add esp, 0xc
mov esi, str.ScrollBar
lea eax, [esp + 0x7c]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x40507e
test cl, cl
je 0x40507a
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x40507e
add eax, 2
add esi, 2
test cl, cl
jne 0x40505a
xor eax, eax
jmp 0x405083
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40513e
mov ecx, dword [edi + 0x19f0]
lea eax, [esp + 0x30]
push eax
push 2
push ecx
call dword [sym.imp.USER32.dll_GetScrollInfo]
mov esi, eax
mov eax, dword [edi + 0x19f0]
lea edx, [esp + 0x6c]
push edx
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x78]
add ecx, 8
add edx, 0xfffffff8
test ebx, ebx
mov dword [edi + 0x1a44], ecx
mov dword [edi + 0x1a48], edx
je 0x4050df
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
sub ecx, eax
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x40]
test eax, eax
jbe 0x405105
jmp 0x405101
lea eax, [esp + 0x30]
push eax
push 1
push ebp
call dword [sym.imp.USER32.dll_GetScrollInfo]
mov esi, eax
mov eax, dword [esp + 0x40]
test eax, eax
jbe 0x405105
mov dword [esp + 0x28], eax
test esi, esi
je 0x40513e
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x44]
sub eax, edx
cmp ecx, eax
jge 0x40513e
call fcn.005b2355
mov eax, dword [eax + 0xc]
push str.SCROLLCUR
push eax
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
mov dword [edi + 0x19f4], ebp
jmp 0x40515c
push 0x7f00
push 0
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
mov dword [edi + 0x19f4], 0
lea ecx, [esp + 0x10]
push ecx
mov ecx, edi
call fcn.00401b00
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
sub esp, 0x10
mov edx, esp
mov dword [edx], eax
mov eax, dword [esp + 0x28]
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0x2c]
mov dword [edx + 8], eax
mov dword [edx + 0xc], ecx
lea ecx, [esp + 0x60]
call fcn.00401260
xor ebx, ebx
lea esi, [edi + 0x48]
lea edx, [esp + 0x50]
push edx
mov ecx, esi
call fcn.004010d0
test eax, eax
jne 0x4051e3
push 1
mov ecx, edi
call fcn.00405240
lea eax, [esp + 0x50]
mov ecx, esi
push eax
call fcn.00401060
push ebx
mov ecx, edi
call fcn.00405240
cmp dword [edi + 0x1a00], ebx
jne 0x4051e3
mov ecx, dword [edi + 0x1c]
push ebx
push 0x1f4
push 1
push ecx
call dword [sym.imp.USER32.dll_SetTimer]
mov dword [edi + 0x1a00], eax
lea ecx, [esp + 0x50]
mov dword [esp + 0x284], 0xffffffff
call fcn.00401030
mov ecx, dword [esp + 0x27c]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x278
ret 8