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

Disassembly:
push 0xffffffffffffffff
push 0x427bd8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x80
push ebx
push ebp
push esi
mov esi, ecx
xor ebx, ebx
push edi
mov dword [esp + 0x38], esi
mov dword [esp + 0x40], ebx
mov dword [esp + 0x3c], vtable.CBrush.0
lea ecx, [esp + 0x5c]
mov dword [esp + 0x98], ebx
call fcn.00422356
lea ecx, [esp + 0x6c]
mov byte [esp + 0x98], 1
call fcn.00405030
mov dword [esp + 0x6c], 0x429a68
mov edi, dword [esp + 0xa0]
xor ecx, ecx
mov byte [esp + 0x98], 2
mov dword [esp + 0x5c], 0x4299f4
mov eax, dword [edi + 0xc]
mov dword [esp + 0x78], edi
cmp eax, ebx
mov dword [esp + 0x74], ebx
sete cl
cmp ecx, ebx
mov dword [esp + 0x8c], ecx
je 0x404917
mov eax, dword [edi]
lea ecx, [esp + 0x7c]
push ecx
mov ecx, edi
call dword [eax + 0x50]
cmp edi, ebx
jne 0x4048a8
xor eax, eax
jmp 0x4048ab
mov eax, dword [edi + 4]
push eax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push eax
lea ecx, [esp + 0x60]
call fcn.0042240d
mov edx, dword [esp + 0x88]
mov ebp, dword [esp + 0x80]
mov eax, dword [esp + 0x84]
sub edx, ebp
push edx
mov edx, dword [esp + 0x80]
sub eax, edx
lea ecx, [esp + 0x70]
push eax
push edi
call fcn.00405100
lea ecx, [esp + 0x6c]
push ecx
lea ecx, [esp + 0x60]
call fcn.00405130
mov edx, dword [esp + 0x80]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x7c]
push edx
lea ecx, [esp + 0x48]
push eax
push ecx
lea ecx, [esp + 0x68]
call fcn.004227c7
jmp 0x404929
mov edx, dword [edi + 4]
mov dword [esp + 0x68], eax
mov eax, dword [edi + 8]
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], eax
xor ecx, ecx
xor edx, edx
mov cl, byte [esi + 0x50]
mov dl, byte [esi + 0x4d]
xor eax, eax
mov edi, ecx
mov al, byte [esi + 0x4c]
mov ebp, edx
mov edx, dword [esi + 0x4c]
mov dword [esp + 0x10], eax
sub edi, eax
mov eax, dword [esi + 0x50]
xor ebx, ebx
mov ecx, edx
mov bl, byte [esi + 0x51]
and ebp, 0xff
shr ecx, 0x10
shr eax, 0x10
and ebx, 0xff
and ecx, 0xff
and eax, 0xff
sub ebx, ebp
sub eax, ecx
mov byte [esp + 0x98], 3
test edi, edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x1c], eax
jne 0x4049b2
test ebx, ebx
jne 0x4049b2
test eax, eax
jne 0x4049b2
mov edi, dword [esp + 0x10]
mov ebx, ebp
mov eax, ecx
mov dword [esp + 0x24], edi
test edx, edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x1c], eax
jne 0x4049b2
mov dword [esp + 0x14], 0xff
jmp 0x4049ef
cdq
mov esi, eax
mov eax, ebx
xor esi, edx
sub esi, edx
cdq
mov ebx, eax
xor ebx, edx
sub ebx, edx
cmp ebx, esi
mov dword [esp + 0x28], ebx
jg 0x4049ce
mov dword [esp + 0x28], esi
mov eax, edi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x28]
cmp eax, edx
jle 0x4049e3
mov dword [esp + 0x14], eax
jmp 0x4049ef
cmp ebx, esi
mov dword [esp + 0x14], ebx
jg 0x4049ef
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0xac]
mov esi, dword [esp + 0xa4]
fild dword [esp + 0x14]
cmp dword [eax], 0
je 0x404a0b
fild dword [esi + 0xc]
jmp 0x404a0e
fild dword [esi + 8]
fdiv st(1)
mov edx, dword [esp + 0x10]
xor eax, eax
mov dword [esp + 0x10], eax
fstp dword [esp + 0x18]
fild dword [esp + 0x24]
mov dword [esp + 0x24], edx
fdiv st(1)
fstp dword [esp + 0x34]
fild dword [esp + 0x20]
mov dword [esp + 0x20], ebp
fdiv st(1)
fstp dword [esp + 0x30]
fild dword [esp + 0x1c]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x14]
test ecx, ecx
fdiv st(1)
fstp dword [esp + 0x2c]
fstp st(0)
jle 0x404c11
mov edi, dword [sym.imp.USER32.dll_SetRect]
mov ebp, dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov ecx, dword [esp + 0xac]
cmp dword [ecx], 0
je 0x404b3b
fild dword [esp + 0x10]
inc eax
mov dword [esp + 0x28], eax
fstp dword [esp + 0x10]
fild dword [esp + 0x28]
fmul dword [esp + 0x18]
call fcn.0040e3b0
fld dword [esp + 0x10]
mov edx, dword [esi + 8]
push eax
fmul dword [esp + 0x1c]
inc edx
push edx
call fcn.0040e3b0
push eax
lea eax, [esp + 0x58]
push 0
push eax
call edi
fld dword [esp + 0x10]
fmul dword [esp + 0x2c]
fiadd dword [esp + 0x1c]
call fcn.0040e3b0
fld dword [esp + 0x10]
fmul dword [esp + 0x30]
xor ebx, ebx
mov bh, al
fiadd dword [esp + 0x20]
call fcn.0040e3b0
fld dword [esp + 0x10]
fmul dword [esp + 0x34]
mov bl, al
shl ebx, 8
fiadd dword [esp + 0x24]
call fcn.0040e3b0
and eax, 0xff
or ebx, eax
push ebx
call ebp
push eax
lea ecx, [esp + 0x40]
call fcn.00422c41
mov edx, dword [esp + 0x40]
lea eax, [esp + 0x3c]
neg eax
mov ebx, dword [sym.imp.USER32.dll_FillRect]
lea ecx, [esp + 0x4c]
sbb eax, eax
and eax, edx
mov edx, dword [esp + 0x60]
push eax
push ecx
push edx
call ebx
lea ecx, [esp + 0x3c]
call fcn.00422c98
mov ecx, dword [esp + 0xa8]
mov eax, dword [esp + 0x58]
cmp eax, dword [ecx]
jg 0x404c8d
jmp 0x404bfd
fild dword [esp + 0x10]
mov edx, dword [esi + 0xc]
inc eax
mov dword [esp + 0x28], eax
inc edx
fstp dword [esp + 0x10]
fild dword [esp + 0x28]
push edx
fmul dword [esp + 0x1c]
call fcn.0040e3b0
fld dword [esp + 0x14]
fmul dword [esp + 0x1c]
push eax
push 0
call fcn.0040e3b0
push eax
lea eax, [esp + 0x5c]
push eax
call edi
fld dword [esp + 0x10]
fmul dword [esp + 0x2c]
fiadd dword [esp + 0x1c]
call fcn.0040e3b0
fld dword [esp + 0x10]
fmul dword [esp + 0x30]
xor ebx, ebx
mov bh, al
fiadd dword [esp + 0x20]
call fcn.0040e3b0
fld dword [esp + 0x10]
fmul dword [esp + 0x34]
mov bl, al
shl ebx, 8
fiadd dword [esp + 0x24]
call fcn.0040e3b0
and eax, 0xff
or ebx, eax
push ebx
call ebp
push eax
lea ecx, [esp + 0x40]
call fcn.00422c41
mov edx, dword [esp + 0x40]
lea eax, [esp + 0x3c]
neg eax
sbb eax, eax
lea ecx, [esp + 0x4c]
and eax, edx
mov edx, dword [esp + 0x60]
push eax
push ecx
push edx
call dword [sym.imp.USER32.dll_FillRect]
lea ecx, [esp + 0x3c]
call fcn.00422c98
mov ecx, dword [esp + 0xa8]
mov eax, dword [esp + 0x54]
cmp eax, dword [ecx]
jg 0x404da4
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x14]
cmp eax, ecx
mov dword [esp + 0x10], eax
jl 0x404a62
mov dword [esp + 0x5c], method.CDC.virtual_0
mov ecx, dword [esp + 0x8c]
xor eax, eax
cmp ecx, eax
mov byte [esp + 0x98], 0xb
je 0x404ec3
mov ecx, dword [esp + 0x88]
mov esi, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
mov edi, dword [esp + 0x7c]
mov ebp, dword [esp + 0x60]
lea eax, [esp + 0x5c]
sub ecx, esi
sub edx, edi
neg eax
sbb eax, eax
push 0xcc0020
and eax, ebp
push esi
push edi
push eax
push ecx
mov ecx, dword [esp + 0x8c]
push edx
push esi
mov edx, dword [ecx + 4]
push edi
push edx
call dword [sym.imp.GDI32.dll_BitBlt]
mov eax, dword [esp + 0x74]
lea ecx, [esp + 0x5c]
push eax
call fcn.00405130
jmp 0x404ecb
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 8]
push edx
push ecx
xor esi, esi
push eax
lea edx, [esp + 0x58]
push esi
push edx
call edi
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 0x54]
push eax
call ebp
push eax
lea ecx, [esp + 0x40]
call fcn.00422c41
mov ebp, dword [esp + 0x40]
lea eax, [esp + 0x3c]
mov edx, dword [esp + 0x60]
lea ecx, [esp + 0x4c]
neg eax
sbb eax, eax
and eax, ebp
push eax
push ecx
push edx
call ebx
lea ecx, [esp + 0x3c]
call fcn.00422c98
mov dword [esp + 0x5c], 0x4299f4
mov eax, dword [esp + 0x8c]
mov byte [esp + 0x98], 5
cmp eax, esi
je 0x404d62
mov ecx, dword [esp + 0x88]
mov edi, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
mov ebx, dword [esp + 0x7c]
mov ebp, dword [esp + 0x60]
lea eax, [esp + 0x5c]
sub ecx, edi
sub edx, ebx
neg eax
sbb eax, eax
push 0xcc0020
and eax, ebp
push edi
push ebx
push eax
mov eax, dword [esp + 0x88]
push ecx
push edx
push edi
mov ecx, dword [eax + 4]
push ebx
push ecx
call dword [sym.imp.GDI32.dll_BitBlt]
mov eax, dword [esp + 0x74]
cmp eax, esi
jne 0x404d52
mov edx, dword [esp + 0x60]
xor eax, eax
push eax
push edx
call fcn.00422538
jmp 0x404d6a
mov eax, dword [eax + 4]
mov edx, dword [esp + 0x60]
push eax
push edx
call fcn.00422538
jmp 0x404d6a
mov dword [esp + 0x64], esi
mov dword [esp + 0x60], esi
lea ecx, [esp + 0x6c]
mov byte [esp + 0x98], 4
call fcn.004050c0
lea ecx, [esp + 0x5c]
mov byte [esp + 0x98], 0
call fcn.00422475
mov dword [esp + 0x3c], vtable.CGdiObject.0
mov dword [esp + 0x98], 6
jmp 0x404f00
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 8]
push ecx
xor ebx, ebx
push edx
push ebx
push eax
lea eax, [esp + 0x5c]
push eax
call edi
mov ecx, dword [esp + 0x38]
mov eax, dword [ecx + 0x54]
push eax
call ebp
push eax
lea ecx, [esp + 0x40]
call fcn.00422c41
mov ebp, dword [esp + 0x40]
lea eax, [esp + 0x3c]
neg eax
sbb eax, eax
lea edx, [esp + 0x4c]
and eax, ebp
push eax
mov eax, dword [esp + 0x64]
push edx
push eax
call dword [sym.imp.USER32.dll_FillRect]
lea ecx, [esp + 0x3c]
call fcn.00422c98
mov dword [esp + 0x5c], 0x4299f4
mov eax, dword [esp + 0x8c]
mov byte [esp + 0x98], 8
cmp eax, ebx
je 0x404e7d
mov ecx, dword [esp + 0x88]
mov esi, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
mov edi, dword [esp + 0x7c]
mov ebp, dword [esp + 0x60]
lea eax, [esp + 0x5c]
sub ecx, esi
sub edx, edi
neg eax
sbb eax, eax
push 0xcc0020
and eax, ebp
push esi
push edi
push eax
push ecx
mov ecx, dword [esp + 0x8c]
push edx
push esi
mov edx, dword [ecx + 4]
push edi
push edx
call dword [sym.imp.GDI32.dll_BitBlt]
mov eax, dword [esp + 0x74]
cmp eax, ebx
jne 0x404e6d
xor eax, eax
push eax
mov eax, dword [esp + 0x64]
push eax
call fcn.00422538
jmp 0x404e85
mov eax, dword [eax + 4]
push eax
mov eax, dword [esp + 0x64]
push eax
call fcn.00422538
jmp 0x404e85
mov dword [esp + 0x64], ebx
mov dword [esp + 0x60], ebx
lea ecx, [esp + 0x6c]
mov byte [esp + 0x98], 7
mov dword [esp + 0x6c], 0x429a68
call fcn.004011a0
lea ecx, [esp + 0x5c]
mov byte [esp + 0x98], bl
call fcn.00422475
mov dword [esp + 0x3c], vtable.CGdiObject.0
mov dword [esp + 0x98], 9
jmp 0x404f00
mov dword [esp + 0x64], eax
mov dword [esp + 0x60], eax
lea ecx, [esp + 0x6c]
mov byte [esp + 0x98], 0xa
call fcn.004050c0
lea ecx, [esp + 0x5c]
mov byte [esp + 0x98], 0
call fcn.00422475
mov dword [esp + 0x3c], vtable.CGdiObject.0
mov dword [esp + 0x98], 0xc
lea ecx, [esp + 0x3c]
call fcn.00422c98
mov ecx, dword [esp + 0x90]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x8c
ret 0x10