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

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x45d0d8
push eax
mov eax, dword [esp + 0x28]
mov dword fs:[0], esp
sub esp, 0x48
push ebx
push ebp
push esi
xor esi, esi
push edi
cmp eax, esi
je 0x40c7b4
push eax
call fcn.0043e143
add esp, 4
lea edi, [esi + 1]
jmp 0x40c7bf
mov edi, 1
cmp dword [esp + 0x7c], edi
jge 0x40c7c3
mov dword [esp + 0x7c], edi
mov eax, dword [esp + 0x88]
mov ebx, dword [esp + 0x68]
mov dword [eax], esi
mov dword [esp + 0x1c], esi
cmp dword [ebx + 4], esi
jne 0x40c7e6
xor ecx, ecx
cmp byte [ebx + 0x2c], cl
setne cl
inc ecx
mov dword [esp + 0x1c], ecx
cmp byte [ebx + 0x2c], 0
jne 0x40c92a
xor ebp, ebp
mov dword [esp + 0x34], ebp
mov dword [esp + 0x60], esi
cmp dword [ebx + 4], esi
mov dword [esp + 0x30], esi
jle 0x40c916
mov dword [esp + 0x18], esi
jmp 0x40c810
mov esi, dword [ebx]
add esi, dword [esp + 0x18]
cmp byte [esi + 0x1c], 0xff
jne 0x40c852
movzx edx, byte [esi + 0x1a]
mov cl, byte [esi + 0x18]
mov al, byte [esi + 0x19]
mov byte [esp + 0x14], dl
movzx edx, byte [esi + 0x1b]
mov byte [esp + 0x16], cl
mov ecx, esi
mov byte [esp + 0x15], al
mov byte [esp + 0x17], dl
call fcn.0042629d
mov ecx, dword [esp + 0x14]
mov dword [eax], ecx
mov dword [esi + 0x24], edi
mov dword [esi + 0x20], edi
jmp 0x40c8f7
mov edi, dword [esi + 0x18]
test ebp, ebp
jne 0x40c866
push ebp
call dword [sym.imp.USER32.dll_GetDC]
mov ebp, eax
mov dword [esp + 0x34], ebp
cmp byte [esi + 0x1c], 1
jne 0x40c8c9
lea edx, [esp + 0x38]
push edx
push edi
call dword [sym.imp.USER32.dll_GetIconInfo]
test eax, eax
je 0x40c9d9
lea eax, [esi + 0xc]
push eax
lea ecx, [esi + 0x1e]
push ecx
mov ecx, dword [esp + 0x4c]
lea edx, [esi + 0x24]
push edx
lea eax, [esi + 0x20]
push eax
push ebp
push ecx
call fcn.0040c68c
lea edx, [esp + 0x50]
push edx
push edi
call fcn.0040be45
mov edi, eax
mov eax, dword [esp + 0x68]
add esp, 0x20
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov ecx, dword [esp + 0x44]
push ecx
call dword [sym.imp.GDI32.dll_DeleteObject]
test edi, edi
je 0x40c9d9
push esi
lea edx, [esi + 0x1e]
push edx
lea eax, [esi + 0x24]
push eax
lea ecx, [esi + 0x20]
push ecx
push ebp
push edi
call fcn.0040c68c
add esp, 0x18
cmp byte [esi + 0x1c], 1
jne 0x40c8ed
push edi
call dword [sym.imp.GDI32.dll_DeleteObject]
cmp dword [esi + 4], 0
je 0x40c9d9
mov eax, dword [esp + 0x30]
add dword [esp + 0x18], 0x2c
mov edi, 1
add eax, edi
cmp eax, dword [ebx + 4]
mov dword [esp + 0x30], eax
jl 0x40c810
xor esi, esi
mov dword [esp + 0x60], 0xffffffff
cmp ebp, esi
je 0x40c92a
push ebp
push esi
call dword [sym.imp.USER32.dll_ReleaseDC]
mov edi, dword [esp + 0x6c]
mov edx, dword [edi]
mov ecx, dword [esp + 0x84]
mov eax, dword [edi + 4]
mov ebp, dword [esp + 0x78]
push ecx
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x74]
push edx
push edi
push ebp
mov dword [esp + 0x64], eax
call fcn.0040bc8f
add esp, 0x10
mov dword [esp + 0x4c], eax
test eax, eax
jne 0x40cf89
mov esi, dword [edi + 8]
mov edx, dword [edi + 0xc]
sub esi, dword [edi]
sub edx, dword [edi + 4]
mov dword [esp + 0x30], esi
mov dword [esp + 0x14], edx
cmp dword [esp + 0x1c], eax
jne 0x40ca06
cmp dword [ebx + 4], eax
mov dword [esp + 0x18], eax
jle 0x40c9ad
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
add eax, 0x24
cmp dword [eax - 4], esi
jg 0x40c9a1
cmp dword [eax], edx
jg 0x40c9a1
inc dword [esp + 0x18]
mov edx, dword [esp + 0x14]
add eax, 0x2c
sub ecx, 1
jne 0x40c990
mov eax, dword [esp + 0x18]
cmp eax, dword [ebx + 4]
jge 0x40ca06
test eax, eax
je 0x40c9c1
mov eax, dword [esp + 0x70]
test eax, 0x800
je 0x40ca0a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x48]
mov dword fs:[0], ecx
add esp, 0x54
ret
mov dword [esp + 0x60], 0xffffffff
test ebp, ebp
je 0x40c9ee
push ebp
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
pop edi
pop esi
pop ebp
mov eax, 0x23d
pop ebx
mov ecx, dword [esp + 0x48]
mov dword fs:[0], ecx
add esp, 0x54
ret
mov eax, dword [esp + 0x70]
mov ecx, dword [ebx + 0x1c]
test ecx, ecx
je 0x40ca1b
cmp esi, dword [ebx + 0x24]
jne 0x40ca1b
cmp edx, dword [ebx + 0x28]
je 0x40ca45
test eax, 0x200
je 0x40caf3
test ecx, ecx
jne 0x40c9ee
push ebp
lea ecx, [ebx + 0x18]
mov byte [ebx + 0x2d], 1
call fcn.00435ee9
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x70]
mov dword [ebx + 0x24], esi
mov dword [ebx + 0x28], ecx
test eax, 0x200
jne 0x40cbf7
mov edx, eax
and edx, 0x1100
cmp edx, 0x1100
jne 0x40ca85
mov ecx, 0x474128
call fcn.0042d032
movzx eax, al
neg eax
sbb eax, eax
and eax, 0xfffff100
add eax, 0x1000
not eax
and dword [esp + 0x70], eax
mov eax, dword [esp + 0x70]
cmp dword [esp + 0x84], 0
je 0x40cad3
test eax, 0x1100
je 0x40cad3
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
not eax
and eax, 0x10
push eax
lea eax, [esp + 0x3c]
push eax
push ebp
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], edx
call sym.qmmacro.exe_DpiClientToScreen
mov ecx, dword [edi]
sub ecx, dword [esp + 0x44]
mov edx, dword [edi + 4]
sub edx, dword [esp + 0x48]
add dword [esp + 0x5c], ecx
mov eax, dword [esp + 0x7c]
add esp, 0xc
add dword [esp + 0x54], edx
test eax, 0x100
je 0x40cb59
xor esi, esi
test al, 0x10
je 0x40cb2f
cmp dword [0x474128], 0x600
jb 0x40cb21
mov esi, 1
jmp 0x40cb2f
mov eax, dword [esp + 0x14]
push eax
push esi
lea ecx, [ebx + 0x18]
call fcn.00435e48
test al, al
jne 0x40ca37
pop edi
pop esi
pop ebp
mov eax, 0x242
pop ebx
mov ecx, dword [esp + 0x48]
mov dword fs:[0], ecx
add esp, 0x54
ret
lea eax, [esp + 0x50]
push eax
push ebp
call fcn.00434222
add esp, 8
mov eax, dword [esp + 0x54]
mov ecx, dword [ebx + 0x18]
push 0
neg eax
push eax
mov eax, dword [esp + 0x58]
neg eax
push eax
push ecx
call dword [sym.imp.GDI32.dll_SetViewportOrgEx]
mov eax, dword [ebx + 0x18]
push esi
push eax
push ebp
call dword [sym.imp.USER32.dll_PrintWindow]
mov edi, eax
jmp 0x40cbc3
test eax, 0x1000
je 0x40cb79
push ebp
test al, 0x10
je 0x40cb6f
call dword [sym.imp.USER32.dll_GetDC]
mov esi, eax
jmp 0x40cb91
call dword [sym.imp.USER32.dll_GetWindowDC]
mov esi, eax
jmp 0x40cb91
xor ebp, ebp
push ebp
call dword [sym.imp.USER32.dll_GetDC]
mov edx, dword [edi]
mov esi, eax
mov eax, dword [edi + 4]
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], eax
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
mov eax, dword [ebx + 0x18]
push 0xcc0020
push ecx
mov ecx, dword [esp + 0x1c]
push edx
mov edx, dword [esp + 0x3c]
push esi
push ecx
push edx
push 0
push 0
push eax
call dword [sym.imp.GDI32.dll_BitBlt]
push esi
push ebp
mov edi, eax
call dword [sym.imp.USER32.dll_ReleaseDC]
test edi, edi
jne 0x40cbf7
test ebp, ebp
je 0x40cbdf
push ebp
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
mov eax, 0x1fe
je 0x40cf89
pop edi
pop esi
pop ebp
mov eax, 0x23d
pop ebx
mov ecx, dword [esp + 0x48]
mov dword fs:[0], ecx
add esp, 0x54
ret
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x1c]
lea edi, [ebx + 0xc]
push edi
lea edx, [esp + 0x17]
push edx
lea edx, [esp + 0x40]
push edx
lea edx, [esp + 0x40]
push edx
push eax
push ecx
call fcn.0040c68c
add esp, 0x18
test eax, eax
je 0x40c9ee
cmp dword [esp + 0x1c], 1
mov bl, byte [esp + 0x13]
mov ebp, dword [esp + 0x68]
jne 0x40cc81
mov ecx, ebp
call fcn.0040c655
mov dword [eax + 0x18], 0
mov byte [eax + 0x1c], 0
mov byte [eax + 0x1d], 1
mov esi, dword [ebp]
push 0xc
lea eax, [esp + 0x3c]
push edi
push eax
call fcn.0044ea40
push 0xc
push esi
push edi
call fcn.0044ea40
push 0xc
lea ecx, [esp + 0x54]
push ecx
push esi
call fcn.0044ea40
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x38]
add esp, 0x24
mov dword [esi + 0x20], edx
mov dword [esi + 0x24], eax
mov byte [esi + 0x1e], bl
mov edx, dword [ebp + 4]
movzx eax, bl
neg eax
sbb eax, eax
and eax, 0xfff8f8f9
add eax, 0xffffff
mov dword [esp + 0x2c], eax
test edx, edx
jle 0x40ccba
mov eax, dword [ebp]
add eax, 0x1e
mov ecx, edx
cmp byte [eax], 0
je 0x40ccb2
mov dword [esp + 0x2c], 0xf8f8f8
add eax, 0x2c
sub ecx, 1
jne 0x40cca5
cmp byte [ebp + 0x2c], 0
jne 0x40ce56
mov ecx, dword [esp + 0x68]
mov byte [ecx + 0x2c], 1
mov dword [esp + 0x34], 0
test edx, edx
jle 0x40ce56
mov eax, dword [esp + 0x70]
and eax, 4
mov dword [esp + 0x38], eax
mov dword [esp + 0x28], 0
nop
mov edx, dword [esp + 0x68]
mov ebx, dword [edx]
add ebx, dword [esp + 0x28]
mov ebp, dword [ebx + 0x24]
mov edi, dword [ebx + 0xc]
imul ebp, dword [ebx + 0x20]
mov esi, dword [ebx]
mov dword [esp + 0x18], ebx
test edi, edi
je 0x40cd93
xor eax, eax
cmp ebp, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
jle 0x40cd52
mov edx, edi
mov ecx, esi
sub edx, esi
mov eax, ebp
cmp dword [edx + ecx], 0
jne 0x40cd4a
mov ebx, dword [ecx]
inc dword [esp + 0x20]
and ebx, 0xff000000
cmp ebx, 0xff000000
mov ebx, dword [esp + 0x18]
jne 0x40cd4a
inc dword [esp + 0x24]
add ecx, 4
sub eax, 1
jne 0x40cd28
mov eax, dword [esp + 0x20]
cdq
sub eax, edx
sar eax, 1
cmp dword [esp + 0x24], eax
jl 0x40cd93
test ebp, ebp
jle 0x40cd93
mov ecx, esi
mov eax, edi
sub ecx, edi
mov edx, ebp
lea ecx, [ecx]
mov ebx, dword [ecx + eax]
and ebx, 0xff000000
cmp ebx, 0xff000000
je 0x40cd87
mov dword [eax], 1
add eax, 4
sub edx, 1
jne 0x40cd70
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
push eax
push ebp
push esi
call fcn.0040bef0
add esp, 0xc
mov dword [esp + 0x24], 0xffffffff
test edi, edi
je 0x40cdcc
test ebp, ebp
jle 0x40cdcc
mov eax, esi
sub edi, esi
mov ecx, ebp
cmp dword [eax + edi], 0
je 0x40cdc4
mov dword [eax], 0xffffffff
add eax, 4
sub ecx, 1
jne 0x40cdb8
cmp dword [esp + 0x38], 0
je 0x40ce34
movzx eax, byte [esi + 2]
mov ecx, dword [esi]
movzx edx, byte [esi + 1]
mov dword [esp + 0x20], eax
xor eax, eax
mov dword [esp + 0x24], ecx
movzx ecx, cl
test ebp, ebp
jle 0x40ce34
mov edi, edi
movzx edi, byte [esi + eax*4]
mov ebx, ecx
sub ebx, edi
add ebx, 8
cmp ebx, 0x10
ja 0x40ce2b
movzx edi, byte [esi + eax*4 + 1]
mov ebx, edx
sub ebx, edi
add ebx, 8
cmp ebx, 0x10
ja 0x40ce2b
movzx edi, byte [esi + eax*4 + 2]
mov ebx, dword [esp + 0x20]
sub ebx, edi
add ebx, 8
cmp ebx, 0x10
ja 0x40ce2b
mov edi, dword [esp + 0x24]
mov dword [esi + eax*4], edi
inc eax
cmp eax, ebp
jl 0x40cdf0
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x68]
add dword [esp + 0x28], 0x2c
inc eax
mov dword [ebx + 0x28], ecx
cmp eax, dword [edx + 4]
mov dword [esp + 0x34], eax
jl 0x40ccf0
cmp dword [esp + 0x1c], 1
je 0x40cf87
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x68]
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0xc]
push eax
push ecx
push edx
call fcn.0040bef0
mov eax, dword [esp + 0x78]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x44], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x48], edx
mov edx, dword [eax + 0xc]
add esp, 0xc
cmp dword [esi + 4], 0
mov dword [esp + 0x40], ecx
mov dword [esp + 0x44], edx
mov dword [esp + 0x2c], 0
jle 0x40cf4d
mov ebx, dword [esp + 0x70]
mov edi, dword [esp + 0x68]
mov ebp, dword [esp + 0x80]
shr ebx, 0xb
xor esi, esi
nop
mov ecx, dword [esp + 0x6c]
mov eax, dword [edi]
push ecx
mov dl, bl
and dl, 1
movzx ecx, dl
mov edx, dword [esp + 0x80]
push ecx
mov ecx, dword [esp + 0x7c]
push ebp
push edx
push ecx
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0x4c]
push edx
mov edx, dword [esp + 0x48]
push ecx
push edx
lea ecx, [edi + 0xc]
add eax, esi
push ecx
push eax
call fcn.0040bfb0
add esp, 0x28
test eax, eax
je 0x40cf15
cmp eax, 1
jne 0x40cf89
test dword [esp + 0x70], 0x800
jne 0x40cf89
jmp 0x40cf36
test dword [esp + 0x70], 0x800
jne 0x40cf36
mov ecx, dword [esp + 0x88]
cmp dword [ecx], 0
jne 0x40cf32
mov edx, dword [esp + 0x2c]
inc edx
mov dword [ecx], edx
test ebp, ebp
je 0x40cf51
mov ecx, dword [esp + 0x2c]
inc ecx
add esi, 0x2c
cmp ecx, dword [edi + 4]
mov dword [esp + 0x2c], ecx
jl 0x40cec0
jmp 0x40cf51
mov eax, dword [esp + 0x4c]
test dword [esp + 0x70], 0x800
je 0x40cf7b
mov ecx, dword [esp + 0x88]
pop edi
pop esi
pop ebp
mov dword [ecx], 1
pop ebx
mov ecx, dword [esp + 0x48]
mov dword fs:[0], ecx
add esp, 0x54
ret
mov edx, dword [esp + 0x88]
cmp dword [edx], 0
je 0x40cf89
xor eax, eax
mov ecx, dword [esp + 0x58]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x54
ret