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

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x45c418
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 0x40c6d4
push eax
call fcn.0043d741
add esp, 4
lea edi, [esi + 1]
jmp 0x40c6df
mov edi, 1
cmp dword [esp + 0x7c], edi
jge 0x40c6e3
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 0x40c706
xor ecx, ecx
cmp byte [ebx + 0x2c], cl
setne cl
inc ecx
mov dword [esp + 0x1c], ecx
cmp byte [ebx + 0x2c], 0
jne 0x40c84a
xor ebp, ebp
mov dword [esp + 0x34], ebp
mov dword [esp + 0x60], esi
cmp dword [ebx + 4], esi
mov dword [esp + 0x30], esi
jle 0x40c836
mov dword [esp + 0x18], esi
jmp 0x40c730
mov esi, dword [ebx]
add esi, dword [esp + 0x18]
cmp byte [esi + 0x1c], 0xff
jne 0x40c772
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.0040c58f
mov ecx, dword [esp + 0x14]
mov dword [eax], ecx
mov dword [esi + 0x24], edi
mov dword [esi + 0x20], edi
jmp 0x40c817
mov edi, dword [esi + 0x18]
test ebp, ebp
jne 0x40c786
push ebp
call dword [sym.imp.USER32.dll_GetDC]
mov ebp, eax
mov dword [esp + 0x34], ebp
cmp byte [esi + 0x1c], 1
jne 0x40c7e9
lea edx, [esp + 0x38]
push edx
push edi
call dword [sym.imp.USER32.dll_GetIconInfo]
test eax, eax
je 0x40c8f9
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.0040c5af
lea edx, [esp + 0x50]
push edx
push edi
call fcn.0040bdcb
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 0x40c8f9
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.0040c5af
add esp, 0x18
cmp byte [esi + 0x1c], 1
jne 0x40c80d
push edi
call dword [sym.imp.GDI32.dll_DeleteObject]
cmp dword [esi + 4], 0
je 0x40c8f9
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 0x40c730
xor esi, esi
mov dword [esp + 0x60], 0xffffffff
cmp ebp, esi
je 0x40c84a
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.0040bc15
add esp, 0x10
mov dword [esp + 0x4c], eax
test eax, eax
jne 0x40cea9
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 0x40c926
cmp dword [ebx + 4], eax
mov dword [esp + 0x18], eax
jle 0x40c8cd
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
add eax, 0x24
cmp dword [eax - 4], esi
jg 0x40c8c1
cmp dword [eax], edx
jg 0x40c8c1
inc dword [esp + 0x18]
mov edx, dword [esp + 0x14]
add eax, 0x2c
sub ecx, 1
jne 0x40c8b0
mov eax, dword [esp + 0x18]
cmp eax, dword [ebx + 4]
jge 0x40c926
test eax, eax
je 0x40c8e1
mov eax, dword [esp + 0x70]
test eax, 0x800
je 0x40c92a
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 0x40c90e
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 0x40c93b
cmp esi, dword [ebx + 0x24]
jne 0x40c93b
cmp edx, dword [ebx + 0x28]
je 0x40c965
test eax, 0x200
je 0x40ca13
test ecx, ecx
jne 0x40c90e
push ebp
lea ecx, [ebx + 0x18]
mov byte [ebx + 0x2d], 1
call fcn.004356dd
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x70]
mov dword [ebx + 0x24], esi
mov dword [ebx + 0x28], ecx
test eax, 0x200
jne 0x40cb17
mov edx, eax
and edx, 0x1100
cmp edx, 0x1100
jne 0x40c9a5
mov ecx, 0x473108
call fcn.0042cfec
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 0x40c9f3
test eax, 0x1100
je 0x40c9f3
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 0x40ca79
xor esi, esi
test al, 0x10
je 0x40ca4f
cmp dword [0x473108], 0x600
jb 0x40ca41
mov esi, 1
jmp 0x40ca4f
mov eax, dword [esp + 0x14]
push eax
push esi
lea ecx, [ebx + 0x18]
call fcn.0043563c
test al, al
jne 0x40c957
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.0042e573
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 0x40cae3
test eax, 0x1000
je 0x40ca99
push ebp
test al, 0x10
je 0x40ca8f
call dword [sym.imp.USER32.dll_GetDC]
mov esi, eax
jmp 0x40cab1
call dword [sym.imp.USER32.dll_GetWindowDC]
mov esi, eax
jmp 0x40cab1
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 0x40cb17
test ebp, ebp
je 0x40caff
push ebp
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
mov eax, 0x1fe
je 0x40cea9
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.0040c5af
add esp, 0x18
test eax, eax
je 0x40c90e
cmp dword [esp + 0x1c], 1
mov bl, byte [esp + 0x13]
mov ebp, dword [esp + 0x68]
jne 0x40cba1
mov ecx, ebp
call fcn.00418cbe
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.0044de20
push 0xc
push esi
push edi
call fcn.0044de20
push 0xc
lea ecx, [esp + 0x54]
push ecx
push esi
call fcn.0044de20
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 0x40cbda
mov eax, dword [ebp]
add eax, 0x1e
mov ecx, edx
cmp byte [eax], 0
je 0x40cbd2
mov dword [esp + 0x2c], 0xf8f8f8
add eax, 0x2c
sub ecx, 1
jne 0x40cbc5
cmp byte [ebp + 0x2c], 0
jne 0x40cd76
mov ecx, dword [esp + 0x68]
mov byte [ecx + 0x2c], 1
mov dword [esp + 0x34], 0
test edx, edx
jle 0x40cd76
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 0x40ccb3
xor eax, eax
cmp ebp, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
jle 0x40cc72
mov edx, edi
mov ecx, esi
sub edx, esi
mov eax, ebp
cmp dword [edx + ecx], 0
jne 0x40cc6a
mov ebx, dword [ecx]
inc dword [esp + 0x20]
and ebx, 0xff000000
cmp ebx, 0xff000000
mov ebx, dword [esp + 0x18]
jne 0x40cc6a
inc dword [esp + 0x24]
add ecx, 4
sub eax, 1
jne 0x40cc48
mov eax, dword [esp + 0x20]
cdq
sub eax, edx
sar eax, 1
cmp dword [esp + 0x24], eax
jl 0x40ccb3
test ebp, ebp
jle 0x40ccb3
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 0x40cca7
mov dword [eax], 1
add eax, 4
sub edx, 1
jne 0x40cc90
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
push eax
push ebp
push esi
call fcn.0040be80
add esp, 0xc
mov dword [esp + 0x24], 0xffffffff
test edi, edi
je 0x40ccec
test ebp, ebp
jle 0x40ccec
mov eax, esi
sub edi, esi
mov ecx, ebp
cmp dword [eax + edi], 0
je 0x40cce4
mov dword [eax], 0xffffffff
add eax, 4
sub ecx, 1
jne 0x40ccd8
cmp dword [esp + 0x38], 0
je 0x40cd54
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 0x40cd54
mov edi, edi
movzx edi, byte [esi + eax*4]
mov ebx, ecx
sub ebx, edi
add ebx, 8
cmp ebx, 0x10
ja 0x40cd4b
movzx edi, byte [esi + eax*4 + 1]
mov ebx, edx
sub ebx, edi
add ebx, 8
cmp ebx, 0x10
ja 0x40cd4b
movzx edi, byte [esi + eax*4 + 2]
mov ebx, dword [esp + 0x20]
sub ebx, edi
add ebx, 8
cmp ebx, 0x10
ja 0x40cd4b
mov edi, dword [esp + 0x24]
mov dword [esi + eax*4], edi
inc eax
cmp eax, ebp
jl 0x40cd10
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 0x40cc10
cmp dword [esp + 0x1c], 1
je 0x40cea7
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.0040be80
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 0x40ce6d
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.0040bf40
add esp, 0x28
test eax, eax
je 0x40ce35
cmp eax, 1
jne 0x40cea9
test dword [esp + 0x70], 0x800
jne 0x40cea9
jmp 0x40ce56
test dword [esp + 0x70], 0x800
jne 0x40ce56
mov ecx, dword [esp + 0x88]
cmp dword [ecx], 0
jne 0x40ce52
mov edx, dword [esp + 0x2c]
inc edx
mov dword [ecx], edx
test ebp, ebp
je 0x40ce71
mov ecx, dword [esp + 0x2c]
inc ecx
add esi, 0x2c
cmp ecx, dword [edi + 4]
mov dword [esp + 0x2c], ecx
jl 0x40cde0
jmp 0x40ce71
mov eax, dword [esp + 0x4c]
test dword [esp + 0x70], 0x800
je 0x40ce9b
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 0x40cea9
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