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

Disassembly:
push 0xffffffffffffffff
push 0x40a9e2
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x68
mov al, byte [esp + 0x84]
push ebx
push ebp
push esi
push edi
mov edi, ecx
mov cl, byte [esp + 0x90]
or ebx, 0xffffffff
test al, al
mov dword [esp + 0x14], edi
mov dword [esp + 0x20], ebx
mov byte [esp + 0x13], 0
je 0x40746a
test cl, cl
je 0x407472
mov eax, dword [esp + 0x8c]
push eax
lea ecx, [esp + 0x3c]
push ecx
call dword [0x40b608]
mov esi, dword [esp + 0x88]
test esi, esi
jne 0x4071fe
xor edi, edi
jmp 0x407201
mov edi, dword [esi + 4]
mov ebx, dword [0x40b5f0]
push 0x15
call ebx
push eax
push edi
lea ecx, [esp + 0x60]
call fcn.00405ad0
test esi, esi
mov dword [esp + 0x80], 0
jne 0x407229
xor edi, edi
jmp 0x40722c
mov edi, dword [esi + 4]
push 0
push 0x14
push 0xf
call ebx
push eax
call fcn.00405640
add esp, 0xc
push eax
push edi
lea ecx, [esp + 0x50]
call fcn.00405b60
mov eax, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
push ebp
sub eax, 4
push eax
push edi
mov dword [0x40f3e0], ecx
mov dword [0x40f3e4], edi
mov dword [0x40f3e8], eax
mov dword [0x40f3ec], ebp
mov edx, dword [esi + 4]
push ecx
push edx
mov byte [esp + 0x94], 1
mov dword [esp + 0x54], eax
mov byte [esp + 0x27], 1
call dword [0x40b030]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x38], eax
add eax, 4
push 0xf
mov dword [esp + 0x44], eax
call ebx
push eax
lea eax, [esp + 0x3c]
push eax
mov ecx, esi
call sub.MFC71.DLL_CDC::FillSolidRect
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x98], 0
mov dword [esp + 0x18], 2
lea esp, [esp]
mov esi, dword [esp + 0x18]
xor edx, edx
test esi, esi
setle dl
mov ebx, eax
dec edx
and edx, esi
mov esi, dword [esp + 0x98]
mov edi, edx
xor edx, edx
test esi, esi
setle dl
inc edx
sub ebx, edx
sub ebx, ecx
sub ebx, esi
cmp edi, ebx
mov dword [esp + 0x1c], edx
jge 0x407407
test edi, edi
jne 0x40730b
xor eax, eax
jmp 0x407337
cmp edi, 1
jne 0x407321
mov edx, dword [esp + 0x98]
xor eax, eax
cmp edx, 2
setge al
jmp 0x407337
cmp edi, 2
jne 0x407330
mov eax, dword [esp + 0x18]
test eax, eax
mov eax, edi
jle 0x407337
mov eax, dword [esp + 0x98]
mov ebp, dword [esp + 0x98]
lea eax, [eax + eax*4]
mov esi, 0x5d
sub esi, eax
mov eax, dword [esp + 0x40]
lea ecx, [ecx + edi + 4]
push ecx
mov ecx, dword [esp + 0x8c]
mov edx, dword [ecx + 4]
sub eax, ebp
dec eax
push eax
push edx
call dword [0x40b038]
mov ecx, eax
shr eax, 0x10
movzx edx, al
imul edx, esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
movzx ebp, ch
mov eax, edx
imul ebp, esi
shr eax, 0x1f
add eax, edx
xor ebx, ebx
mov bh, al
mov eax, 0x51eb851f
imul ebp
movzx ebp, cl
sar edx, 5
imul ebp, esi
mov eax, edx
shr eax, 0x1f
add eax, edx
mov bl, al
mov esi, dword [esp + 0x98]
mov eax, 0x51eb851f
imul ebp
mov eax, dword [esp + 0x3c]
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
movzx edx, cl
shl ebx, 8
or ebx, edx
lea edx, [eax + edi + 4]
mov eax, dword [esp + 0x40]
mov ecx, ebx
push ecx
mov ecx, dword [esp + 0x8c]
sub eax, esi
push edx
mov edx, dword [ecx + 4]
dec eax
push eax
push edx
call dword [0x40b03c]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x1c]
mov edx, eax
sub edx, ecx
mov ecx, dword [esp + 0x3c]
sub edx, ecx
inc edi
sub edx, esi
cmp edi, edx
jl 0x407303
mov ebx, dword [esp + 0x98]
mov edx, dword [esp + 0x18]
inc ebx
dec edx
cmp edx, 0xfffffffe
mov dword [esp + 0x98], ebx
mov dword [esp + 0x18], edx
jg 0x4072d0
lea ecx, [esp + 0x48]
mov byte [esp + 0x80], 0
call fcn.00405b40
lea ecx, [esp + 0x58]
mov dword [esp + 0x80], 0xffffffff
call fcn.00405b40
mov esi, dword [esp + 0x88]
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x8c]
mov ebp, dword [0x40b5f0]
jmp 0x407648
test cl, cl
jne 0x40752e
mov cl, byte [esp + 0x98]
test cl, cl
je 0x40748c
mov cl, byte [esp + 0x9c]
test cl, cl
je 0x40752e
test al, al
jne 0x407508
mov edi, dword [esp + 0x8c]
push edi
lea eax, [esp + 0x3c]
push eax
call dword [0x40b608]
mov ebp, dword [0x40b5f0]
push 0
push 0x14
push 0xf
mov dword [esp + 0x4c], 0x16
call ebp
push eax
call fcn.00405640
mov esi, dword [esp + 0x94]
add esp, 0xc
push eax
lea ecx, [esp + 0x3c]
push ecx
mov ecx, esi
call sub.MFC71.DLL_CDC::FillSolidRect
mov edx, dword [esp + 0x40]
mov eax, dword [edi + 8]
push 0
push 0x4b
push 0xf
mov dword [esp + 0x44], edx
mov dword [esp + 0x4c], eax
call ebp
push eax
call fcn.00405640
add esp, 0xc
push eax
lea ecx, [esp + 0x3c]
push ecx
mov ecx, esi
call sub.MFC71.DLL_CDC::FillSolidRect
jmp 0x407648
mov ebp, dword [0x40b5f0]
push 0xf
call ebp
mov edi, dword [esp + 0x8c]
mov esi, dword [esp + 0x88]
push eax
push edi
mov ecx, esi
call sub.MFC71.DLL_CDC::FillSolidRect
jmp 0x407648
mov ebp, dword [0x40b5f0]
push 0xd
call ebp
mov esi, dword [esp + 0x88]
test esi, esi
mov ebx, eax
jne 0x407549
xor eax, eax
jmp 0x40754c
mov eax, dword [esi + 4]
push ebx
push eax
lea ecx, [esp + 0x50]
call fcn.00405ad0
mov edx, dword [edi + 0xc]
and edx, 3
cmp dl, 3
mov dword [esp + 0x80], 2
jne 0x407578
push 0
push 0x49
push 0xf
call ebp
push eax
jmp 0x40757d
push 0xffffffffffffffc7
push 0x46
push ebx
call fcn.00405640
add esp, 0xc
test esi, esi
mov ebx, eax
jne 0x40758f
xor eax, eax
jmp 0x407592
mov eax, dword [esi + 4]
push ebx
push eax
lea ecx, [esp + 0x60]
call fcn.00405b60
mov al, byte [esp + 0x94]
test al, al
mov edi, dword [esp + 0x8c]
mov byte [esp + 0x80], 3
je 0x40760a
push edi
lea eax, [esp + 0x3c]
push eax
call dword [0x40b608]
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x3c]
push ecx
mov ecx, dword [esi + 4]
sub eax, 4
push eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x40]
push edx
push eax
push ecx
call dword [0x40b030]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x38], eax
add eax, 4
push 0xf
mov dword [esp + 0x44], eax
call ebp
push eax
lea edx, [esp + 0x3c]
push edx
mov ecx, esi
call sub.MFC71.DLL_CDC::FillSolidRect
jmp 0x407623
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 8]
mov edx, dword [edi + 4]
push eax
mov eax, dword [edi]
push ecx
mov ecx, dword [esi + 4]
push edx
push eax
push ecx
call dword [0x40b030]
lea ecx, [esp + 0x58]
mov byte [esp + 0x80], 2
call fcn.00405b40
lea ecx, [esp + 0x48]
mov dword [esp + 0x80], 0xffffffff
call fcn.00405b40
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 8]
test ah, 8
je 0x4076db
test esi, esi
jne 0x407660
xor ebx, ebx
jmp 0x407663
mov ebx, dword [esi + 4]
push 0
push 0xffffffffffffffee
push 0xf
call ebp
push eax
call fcn.00405640
add esp, 0xc
push eax
push ebx
lea ecx, [esp + 0x60]
call fcn.00405ad0
mov eax, dword [edi + 0xc]
add eax, dword [edi + 4]
cdq
sub eax, edx
sar eax, 1
push eax
mov eax, dword [edi]
add eax, 0x1e
push eax
lea ecx, [esp + 0x28]
push ecx
mov ecx, esi
mov dword [esp + 0x8c], 4
call sub.MFC71.DLL_CDC::MoveTo
mov ecx, dword [edi + 4]
mov eax, dword [edi + 0xc]
add eax, ecx
cdq
sub eax, edx
mov edx, dword [edi + 8]
sar eax, 1
push eax
dec edx
push edx
mov ecx, esi
call sub.MFC71.DLL_CDC::LineTo
lea ecx, [esp + 0x58]
mov dword [esp + 0x80], 0xffffffff
call fcn.00405b40
jmp 0x407c2e
push edi
lea eax, [esp + 0x2c]
push eax
call dword [0x40b608]
lea ecx, [esp + 0x98]
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
lea ecx, [esp + 0x98]
push ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x84], 5
call fcn.00406940
test eax, eax
jle 0x407c21
mov al, byte [esp + 0x9c]
test al, al
je 0x407727
push 0x10
jmp 0x40774a
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0xc]
and eax, 3
cmp al, 3
jne 0x407748
push 0
push 0xffffffffffffffee
push 0xf
call ebp
push eax
call fcn.00405640
add esp, 0xc
jmp 0x40774c
push 7
call ebp
mov edx, dword [esi]
push eax
mov ecx, esi
call dword [edx + 0x38]
push 1
mov ecx, esi
call sub.MFC71.DLL_CDC::SetBkMode
push 0
lea eax, [esp + 0xa0]
push eax
push 0
push 0x100a
mov dword [esp + 0xac], 1
call dword [0x40b5f4]
mov al, byte [esp + 0xa0]
test al, al
je 0x40779c
mov eax, dword [esp + 0x9c]
test eax, eax
jne 0x40779c
mov ebp, 0x100000
jmp 0x40779e
xor ebp, ebp
mov al, byte [esp + 0x94]
test al, al
je 0x4077e5
mov edx, dword [esp + 0x30]
mov edi, dword [esi]
or ebp, 0x25
push ebp
lea ecx, [esp + 0x2c]
sub edx, 4
push ecx
lea ecx, [esp + 0xa0]
mov dword [esp + 0x38], edx
call dword [sym.imp.MFC71.DLL_ATL::CSimpleStringT::GetLength]
push eax
lea ecx, [esp + 0xa4]
call dword [sym.imp.MFC71.DLL_ATL::CSimpleStringT::operator_char_const_]
push eax
mov ecx, esi
call dword [edi + 0x70]
jmp 0x407c21
mov edx, dword [esp + 0x14]
mov ecx, dword [edx + 0xc]
mov eax, dword [esi + 4]
and ecx, 0x1000
cmp ecx, 0x1000
sete dl
lea ecx, [esp + 0x68]
push edx
push eax
call fcn.00405c50
mov eax, dword [esi]
or ebp, 0x24
push ebp
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0xa0]
mov byte [esp + 0x88], 6
mov dword [esp + 0x30], 0x1e
mov dword [esp + 0xa8], eax
call dword [sym.imp.MFC71.DLL_ATL::CSimpleStringT::GetLength]
push eax
lea ecx, [esp + 0xa4]
call dword [sym.imp.MFC71.DLL_ATL::CSimpleStringT::operator_char_const_]
push eax
mov eax, dword [esp + 0xb0]
mov ecx, esi
call dword [eax + 0x70]
lea ecx, [esp + 0x94]
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x94]
push edx
mov byte [esp + 0x84], 7
call fcn.004069e0
test eax, eax
jle 0x4078b2
mov ebp, dword [esp + 0x30]
sub ebp, 0xc
push 0x26
lea eax, [esp + 0x2c]
mov dword [esp + 0x34], ebp
mov ebp, dword [esi]
push eax
lea ecx, [esp + 0x9c]
call dword [sym.imp.MFC71.DLL_ATL::CSimpleStringT::GetLength]
push eax
lea ecx, [esp + 0xa0]
call dword [sym.imp.MFC71.DLL_ATL::CSimpleStringT::operator_char_const_]
push eax
mov ecx, esi
call dword [ebp + 0x70]
mov ebp, dword [esp + 0x14]
test byte [ebp + 0xc], 8
je 0x407962
push 0xd
call dword [0x40b5f0]
mov ebx, eax
mov eax, dword [esi + 4]
push ebx
push eax
lea ecx, [esp + 0x50]
call fcn.00405ad0
mov ecx, dword [ebp + 0xc]
and ecx, 3
cmp cl, 3
mov byte [esp + 0x80], 8
jne 0x4078fa
push 0
push 0x49
push 0xf
call dword [0x40b5f0]
push eax
jmp 0x407910
mov al, byte [esp + 0x90]
test al, al
je 0x40790b
push 0xffffffffffffffce
push 0x32
jmp 0x40790f
push 0xffffffffffffffc7
push 0x46
push ebx
call fcn.00405640
add esp, 0xc
mov ebx, eax
mov eax, dword [esi + 4]
push ebx
push eax
lea ecx, [esp + 0x60]
call fcn.00405b60
mov eax, dword [edi + 0xc]
mov edx, dword [edi]
mov ecx, dword [edi + 4]
dec eax
push eax
lea ebp, [edx + 0x14]
push ebp
inc ecx
inc edx
push ecx
push edx
mov edx, dword [esi + 4]
push edx
call dword [0x40b030]
lea ecx, [esp + 0x58]
call fcn.00405b40
lea ecx, [esp + 0x48]
mov byte [esp + 0x80], 7
call fcn.00405b40
mov ebp, dword [esp + 0x14]
mov eax, dword [ebp + 0x34]
test eax, eax
mov dword [esp + 0xa0], eax
je 0x407ad5
mov edx, dword [ebp + 0x38]
cmp edx, 0xffffffff
je 0x407ad5
mov ecx, dword [ebp + 0xc]
mov eax, ecx
and eax, 3
cmp eax, 3
je 0x40799c
mov bl, byte [esp + 0x90]
test bl, bl
je 0x40799c
mov bl, 1
jmp 0x40799e
xor bl, bl
cmp eax, 3
je 0x4079bb
mov al, byte [esp + 0x90]
test al, al
je 0x407a74
test cl, 8
jne 0x407a74
mov eax, dword [esp + 0xa0]
push 0
push edx
push eax
call dword [0x40b024]
test bl, bl
mov dword [esp + 0x88], eax
je 0x4079df
push 0xffffffffffffffbe
push 0x32
push 0xd
jmp 0x4079e5
push 0
push 0xffffffffffffffe5
push 0xf
call dword [0x40b5f0]
push eax
call fcn.00405640
add esp, 0xc
push eax
lea ecx, [esp + 0x24]
call sub.MFC71.DLL_CBrush::CBrush
test eax, eax
jne 0x407a0b
mov dword [esp + 0xa0], eax
jmp 0x407a15
mov ecx, dword [eax + 4]
mov dword [esp + 0xa0], ecx
mov eax, dword [esp + 0x2c]
xor ecx, ecx
test bl, bl
setne cl
mov edx, 0x10
mov ebp, edx
add ecx, 3
lea ebx, [eax + ecx]
mov eax, dword [edi]
add eax, ecx
mov ecx, dword [esp + 0xa0]
push ecx
mov ecx, dword [esp + 0x8c]
push 0x80
push ecx
push ebp
push edx
push ebx
push eax
mov ecx, esi
call fcn.00406e70
lea ecx, [esp + 0x20]
mov dword [esp + 0x20], 0x40bc0c
call sub.MFC71.DLL_CGdiObject::DeleteObject
mov edx, dword [esp + 0x88]
push edx
call dword [0x40b648]
mov ebp, dword [esp + 0x14]
mov eax, dword [ebp + 0xc]
mov ecx, eax
and ecx, 3
cmp cl, 3
je 0x407c03
mov dl, byte [esp + 0x90]
test dl, dl
je 0x407a99
test al, 8
mov ecx, 2
je 0x407a9e
mov ecx, 3
test dl, dl
je 0x407aab
test al, 8
mov eax, 2
je 0x407ab0
mov eax, 3
mov edx, dword [esp + 0x2c]
push 1
add ecx, edx
mov edx, dword [esi + 4]
push ecx
mov ecx, dword [edi]
add ecx, eax
mov eax, dword [ebp + 0x38]
push ecx
mov ecx, dword [ebp + 0x34]
push edx
push eax
push ecx
call dword [0x40b01c]
jmp 0x407c03
mov eax, dword [ebp + 0xc]
test al, 8
mov dword [esp + 0x90], eax
je 0x407c03
mov edi, dword [edi]
mov eax, dword [ebp + 8]
add edi, 5
mov dword [esp + 0x28], edi
add edi, 0xf
test ah, 2
mov dword [esp + 0x30], edi
je 0x407bbe
lea edx, [esp + 0x20]
push edx
lea ecx, [esp + 0x2c]
call fcn.00406e00
mov eax, dword [esp + 0x90]
and eax, 3
cmp al, 3
jne 0x407b36
push 0
push 0xffffffffffffffe5
push 0xf
call dword [0x40b5f0]
push eax
call fcn.00405640
add esp, 0xc
jmp 0x407b3e
push 7
call dword [0x40b5f0]
mov edi, eax
mov eax, dword [esi + 4]
push edi
push eax
lea ecx, [esp + 0x50]
call fcn.00405ad0
mov eax, dword [esi + 4]
push edi
push eax
lea ecx, [esp + 0x60]
mov byte [esp + 0x88], 9
call fcn.00405b60
mov edi, dword [esp + 0x24]
mov ebp, dword [esp + 0x20]
lea eax, [edi + 4]
lea edx, [ebp - 4]
lea ecx, [ebp + 3]
mov dword [esp + 0x44], eax
mov dword [esp + 0x38], edx
lea eax, [esp + 0x38]
lea edx, [edi - 3]
mov dword [esp + 0x40], ecx
push eax
mov ecx, esi
mov dword [esp + 0x40], edx
call fcn.00406eb0
push ebx
add edi, 2
push edi
inc ebp
push ebp
mov ecx, esi
call fcn.00406ed0
lea ecx, [esp + 0x58]
call fcn.00405b40
lea ecx, [esp + 0x48]
mov byte [esp + 0x80], 7
call fcn.00405b40
jmp 0x407c03
mov edx, dword [esi]
push ebx
mov ecx, esi
call dword [edx + 0x34]
push 0x7ff8
push 0
call dword [0x40b660]
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
push 0
push 0
mov edi, eax
mov eax, dword [esp + 0x3c]
push edi
sub eax, edx
push eax
sub ecx, ebx
push ecx
add edx, 3
push edx
push ebx
mov ecx, esi
call fcn.00406e30
push edi
call dword [0x40b074]
lea ecx, [esp + 0x94]
call dword [0x40b210]
lea ecx, [esp + 0x68]
mov byte [esp + 0x80], 5
call fcn.00405d30
lea ecx, [esp + 0x98]
call dword [0x40b210]
mov ecx, dword [esp + 0x78]
mov al, byte [esp + 0x13]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x74
ret 0x1c