Function at 0x4104e0
Capabilities:
Capture screenshot

Disassembly:
push 0xffffffffffffffff
push 0x44c818
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x38
xor eax, eax
mov al, byte [ecx + 0xc8]
push ebx
push esi
push edi
mov edi, dword [esp + 0x60]
lea ecx, [esp + 0x60]
push eax
push ecx
mov ecx, edi
call fcn.004103c0
mov esi, dword [esp + 0x60]
mov eax, dword [esi - 0xc]
xor ebx, ebx
cmp eax, ebx
mov dword [esp + 0x4c], ebx
jne 0x41052d
lea eax, [esi - 0x10]
jmp 0x4108a1
push ebp
lea ecx, [esp + 0x20]
call fcn.0043908f
mov ebp, dword [esp + 0x58]
cmp ebp, ebx
mov byte [esp + 0x50], 1
jne 0x410548
xor eax, eax
jmp 0x41054b
mov eax, dword [ebp + 4]
push eax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push eax
lea ecx, [esp + 0x24]
call fcn.0043952b
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x18], vtable.CBitmap.0
mov byte [esp + 0x50], 2
call fcn.00445e31
mov eax, dword [eax + 0xc]
push esi
push eax
call dword [sym.imp.USER32.dll_LoadBitmapA]
push eax
lea ecx, [esp + 0x1c]
call fcn.00439828
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x30]
push eax
push 0x18
push ecx
call dword [sym.imp.GDI32.dll_GetObjectA]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
push edx
push eax
call fcn.004398b1
mov ebx, dword [edi + 0x5c]
mov dword [esp + 0x14], eax
mov eax, ebx
mov edx, ebx
mov esi, ebx
mov ecx, ebx
and esi, 0x2000000
and eax, 0x10000000
and ecx, 0x20000000
and edx, 0x1000000
test eax, eax
mov dword [esp + 0x58], esi
mov dword [esp + 0x10], ecx
je 0x41071b
test edx, edx
mov esi, dword [esp + 0x60]
mov ecx, dword [esp + 0x34]
je 0x410603
mov ebx, dword [edi + 0x60]
inc ebx
mov eax, ebx
cmp eax, ecx
mov dword [edi + 0x60], ebx
jle 0x4105fe
mov dword [edi + 0x60], 1
mov eax, dword [edi + 0x60]
sub dword [esi], eax
mov ebx, dword [esp + 0x58]
test ebx, ebx
mov eax, dword [esp + 0x38]
je 0x410624
inc dword [edi + 0x64]
cmp dword [edi + 0x64], eax
jle 0x41061e
mov dword [edi + 0x64], 1
mov edi, dword [edi + 0x64]
sub dword [esi + 4], edi
test edx, edx
je 0x410672
test ebx, ebx
jne 0x4106c0
mov edi, dword [esi]
cmp edi, dword [esi + 8]
jge 0x41085f
jmp 0x410641
mov eax, dword [esp + 0x38]
mov ebx, dword [esp + 0x24]
mov edx, dword [esi + 4]
push 0xcc0020
push 0
push 0
push ebx
push eax
push ecx
mov ecx, dword [ebp + 4]
push edx
push edi
push ecx
call dword [sym.imp.GDI32.dll_BitBlt]
mov ecx, dword [esp + 0x34]
mov eax, dword [esi + 8]
add edi, ecx
cmp edi, eax
jl 0x41063d
jmp 0x41085f
test ebx, ebx
je 0x4106c0
mov edi, dword [esi + 4]
cmp edi, dword [esi + 0xc]
jge 0x41085f
jmp 0x410690
mov ecx, dword [esp + 0x34]
jmp 0x410690
mov ebx, dword [esp + 0x24]
mov edx, dword [esi]
push 0xcc0020
push 0
push 0
push ebx
push eax
push ecx
push edi
push edx
mov edx, dword [ebp + 4]
push edx
call dword [sym.imp.GDI32.dll_BitBlt]
mov eax, dword [esp + 0x38]
mov ecx, dword [esi + 0xc]
add edi, eax
cmp edi, ecx
jl 0x410684
jmp 0x41085f
mov ebx, dword [esi]
cmp ebx, dword [esi + 8]
jge 0x41085f
jmp 0x4106d0
mov edi, dword [esi + 4]
cmp edi, dword [esi + 0xc]
jge 0x41070d
jmp 0x4106e0
mov edx, dword [esp + 0x24]
push 0xcc0020
push 0
push 0
push edx
push eax
mov eax, dword [ebp + 4]
push ecx
push edi
push ebx
push eax
call dword [sym.imp.GDI32.dll_BitBlt]
mov eax, dword [esp + 0x38]
mov ecx, dword [esi + 0xc]
add edi, eax
cmp edi, ecx
mov ecx, dword [esp + 0x34]
jl 0x4106e0
mov edx, dword [esi + 8]
add ebx, ecx
cmp ebx, edx
jl 0x4106d0
jmp 0x41085f
test edx, edx
mov ecx, dword [esp + 0x60]
je 0x410744
mov eax, dword [ecx]
sub eax, dword [ecx + 8]
mov dword [esp + 0x60], eax
inc dword [edi + 0x60]
mov eax, dword [esp + 0x34]
cmp dword [edi + 0x60], eax
jle 0x41073f
mov eax, dword [esp + 0x60]
mov dword [edi + 0x60], eax
mov eax, dword [edi + 0x60]
sub dword [ecx], eax
test esi, esi
je 0x41076c
mov eax, dword [ecx + 4]
sub eax, dword [ecx + 0xc]
mov dword [esp + 0x60], eax
mov eax, dword [edi + 0x64]
inc eax
cmp eax, dword [esp + 0x38]
mov dword [edi + 0x64], eax
jle 0x410766
mov eax, dword [esp + 0x60]
mov dword [edi + 0x64], eax
mov eax, dword [edi + 0x64]
sub dword [ecx + 4], eax
test edx, edx
jne 0x410836
test esi, esi
jne 0x410836
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4107bb
mov esi, dword [esp + 0x38]
mov eax, dword [ecx + 4]
mov edx, dword [ecx]
push 0xcc0020
push esi
mov esi, dword [esp + 0x3c]
push esi
push 0
push 0
lea esi, [esp + 0x34]
push esi
mov esi, dword [ecx + 0xc]
mov ecx, dword [ecx + 8]
sub esi, eax
push esi
sub ecx, edx
push ecx
push eax
push edx
mov ecx, ebp
call fcn.00407140
jmp 0x41085f
test bl, 2
je 0x4107c9
mov edx, dword [ecx + 8]
sub edx, dword [esp + 0x34]
mov dword [ecx], edx
test bl, 1
je 0x4107e2
mov edx, dword [esp + 0x34]
mov eax, dword [ecx + 8]
mov edi, dword [ecx]
sub eax, edx
add eax, edi
cdq
sub eax, edx
sar eax, 1
mov dword [ecx], eax
test bl, 8
je 0x4107f1
mov eax, dword [ecx + 0xc]
sub eax, dword [esp + 0x38]
mov dword [ecx + 4], eax
test bl, 4
je 0x41080c
mov eax, dword [ecx + 0xc]
mov ebx, dword [esp + 0x38]
mov edi, dword [ecx + 4]
sub eax, ebx
add eax, edi
cdq
sub eax, edx
sar eax, 1
mov dword [ecx + 4], eax
mov eax, dword [ecx + 4]
mov edx, dword [ecx]
push 0xcc0020
push 0
push 0
lea esi, [esp + 0x2c]
push esi
mov esi, dword [ecx + 0xc]
mov ecx, dword [ecx + 8]
sub esi, eax
push esi
sub ecx, edx
push ecx
push eax
push edx
mov ecx, ebp
call fcn.00407100
jmp 0x41085f
mov edx, dword [esp + 0x24]
mov eax, dword [ecx + 4]
mov ecx, dword [ecx]
push 0xcc0020
push 0
push 0
push edx
mov edx, dword [esp + 0x48]
push edx
mov edx, dword [esp + 0x48]
push edx
push eax
mov eax, dword [ebp + 4]
push ecx
push eax
call dword [sym.imp.GDI32.dll_BitBlt]
mov eax, dword [esp + 0x14]
test eax, eax
pop ebp
je 0x41086b
mov eax, dword [eax + 4]
mov ecx, dword [esp + 0x20]
push eax
push ecx
call fcn.004398b1
lea ecx, [esp + 0x14]
mov byte [esp + 0x4c], 1
mov dword [esp + 0x14], vtable.CGdiObject.0
call fcn.0043987f
lea ecx, [esp + 0x1c]
mov byte [esp + 0x4c], 0
call fcn.004395a9
mov eax, dword [esp + 0x60]
add eax, 0xfffffff0
mov dword [esp + 0x4c], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4108c0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov ecx, dword [esp + 0x44]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x44
ret 0x10