Function at 0x10002393
Capabilities:
Capture screenshot

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x70
mov esi, esp
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
test cl, 1
sete cl
cmp dword [0x1002d274], 0xa
setl al
or al, cl
mov byte [esi + 0x24], al
push eax
mov eax, esp
sub esp, 0x48
mov edi, esp
and edi, 0xfffffff8
mov esp, edi
push eax
push eax
mov edx, esp
and edx, 0xfffffff8
mov esp, edx
push eax
push eax
mov ecx, esp
and ecx, 0xfffffff8
mov esp, ecx
push eax
mov ebx, esp
cmp byte [esi + 0x24], 0
je 0x100023c1
mov dword [esi + 0x20], eax
mov dword [esi + 0x28], edi
mov dword [esi + 0x38], edx
mov dword [esi + 0x30], ecx
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov dword [esi + 0x24], eax
push eax
call dword [sym.imp.USER32.dll_GetDC]
mov edi, eax
cmp dword [0x1002d274], 0xa
jl 0x1000243e
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x1000243e
mov eax, dword [sym.imp.USER32.dll_GetDesktopWindow]
call eax
push eax
mov edi, dword [sym.imp.USER32.dll_GetDC]
call edi
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov dword [esi + 0x24], eax
push eax
call edi
jmp 0x10002405
test edi, edi
je 0x10002690
mov dword [esi + 0x3c], ebx
push edi
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov ecx, dword [0x1002d270]
mov ebx, dword [0x1002d274]
cmp ebx, 0xa
jl 0x1000247a
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
je 0x1000247a
push edi
mov ebx, dword [sym.imp.GDI32.dll_CreateCompatibleDC]
call ebx
push edi
call ebx
jmp 0x10002450
test eax, eax
mov dword [esi + 0x18], edi
je 0x10002697
mov dword [esi + 0xc], eax
lea edi, [esi + 0x40]
push 0x10
push edi
call sub.NTDLL.dll_RtlZeroMemory
push edi
push dword [esi + 0x24]
call dword [sym.imp.USER32.dll_GetWindowRect]
cmp dword [0x1002d274], 0xa
jl 0x100024fd
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x100024fd
mov edi, dword [esi + 0x24]
mov eax, 0x10
push eax
lea ebx, [esi + 0x40]
push ebx
call sub.NTDLL.dll_RtlZeroMemory
push ebx
push edi
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, 0x10
push eax
push ebx
call sub.NTDLL.dll_RtlZeroMemory
push ebx
push edi
call dword [sym.imp.USER32.dll_GetWindowRect]
cmp dword [0x1002d274], 0xa
jl 0x100024fd
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
jne 0x100024b9
movq xmm3, qword [esi + 0x48]
movd edx, xmm3
cmp edx, 0x640
jg 0x10002525
pshufd xmm0, xmm3, 0x55
movd eax, xmm0
mov cl, 1
mov dword [esi + 8], ecx
mov ecx, edx
cmp eax, 0x641
jl 0x10002560
cvtdq2pd xmm0, xmm3
movapd xmm1, xmmword [0x100243c0]
divpd xmm1, xmm0
movapd xmm2, xmm1
unpckhpd xmm2, xmm1
minsd xmm2, xmm1
movapd xmm1, xmm0
unpckhpd xmm1, xmm0
mulsd xmm1, xmm2
cvttsd2si eax, xmm1
mulsd xmm2, xmm0
cvttsd2si ecx, xmm2
mov dword [esi + 8], 0
movdqa xmmword [esi + 0x50], xmm3
mov dword [esi + 0x34], edx
mov dword [esi + 0x1c], eax
push eax
mov dword [esi + 0x10], ecx
push ecx
push dword [esi + 0x18]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov dword [esi + 0x2c], eax
cmp dword [0x1002d274], 0xa
jl 0x100025cd
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x100025cd
mov edi, dword [esi + 0x1c]
mov ebx, dword [esi + 0x10]
push edi
push ebx
push dword [esi + 0x18]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
push edi
push ebx
push dword [esi + 0x18]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov dword [esi + 0x2c], eax
cmp dword [0x1002d274], 0xa
jl 0x100025cd
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
jne 0x1000259b
mov eax, dword [esi + 0x2c]
mov ecx, dword [esi + 0x20]
mov dword [ecx], eax
test eax, eax
je 0x100026a9
push eax
mov eax, dword [esi + 0xc]
push eax
call dword [sym.imp.GDI32.dll_SelectObject]
cmp dword [0x1002d274], 0xa
jl 0x10002632
mov ecx, dword [0x1002d270]
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
je 0x10002632
mov ebx, dword [esi + 0x2c]
mov edi, dword [esi + 0xc]
push ebx
push edi
call dword [sym.imp.GDI32.dll_SelectObject]
push ebx
push edi
call dword [sym.imp.GDI32.dll_SelectObject]
cmp dword [0x1002d274], 0xa
jl 0x10002632
mov ecx, dword [0x1002d270]
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
jne 0x10002608
inc eax
cmp eax, 2
jae 0x100026e5
mov dword [esi + 0x14], 0
mov ebx, dword [esi + 0xc]
mov edi, dword [esi + 0x2c]
push edi
call dword [sym.imp.GDI32.dll_DeleteObject]
cmp dword [0x1002d274], 0xa
jl 0x100026b3
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x100026b3
mov ebx, dword [sym.imp.GDI32.dll_DeleteObject]
push edi
call ebx
push edi
call ebx
cmp dword [0x1002d274], 0xa
jl 0x100026b0
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
jne 0x1000266f
jmp 0x100026b0
xor eax, eax
jmp 0x10002ceb
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
mov dword [esi + 0x14], 0
jmp 0x100026cf
mov dword [esi + 0x14], 0
mov ebx, dword [esi + 0xc]
push ebx
call dword [sym.imp.GDI32.dll_DeleteDC]
mov ecx, dword [0x1002d270]
mov ebx, dword [0x1002d274]
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
cmp ebx, 0xa
jl 0x10002cf3
test edx, edx
jne 0x10002d18
jmp 0x10002cf3
cmp byte [esi + 8], 0
mov edi, dword [esi + 0xc]
je 0x10002777
mov dword [esi + 0x14], 0
mov eax, dword [esi + 0x40]
mov dword [esi + 8], eax
mov ecx, dword [esi + 0x44]
mov edx, dword [sym.imp.GDI32.dll_BitBlt]
xor ebx, ebx
mov eax, dword [esi + 0x18]
mov dword [esi + 0x34], ecx
push 0x40cc0020
push ebx
push ebx
push eax
mov eax, dword [esi + 0x1c]
mov edi, eax
push eax
push dword [esi + 0x10]
push ecx
push dword [esi + 8]
push dword [esi + 0xc]
call edx
cmp dword [0x1002d274], 0xa
jl 0x10002825
mov ecx, dword [0x1002d270]
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
je 0x10002825
push 0x40cc0020
push ebx
push ebx
push dword [esi + 0x18]
push edi
push dword [esi + 0x10]
mov ebx, dword [esi + 0x34]
push ebx
push dword [esi + 8]
push dword [esi + 0xc]
mov edi, dword [sym.imp.GDI32.dll_BitBlt]
call edi
mov edx, edi
mov ecx, ebx
xor ebx, ebx
mov eax, dword [esi + 0x18]
jmp 0x10002710
mov dword [esi + 0x14], 0
push 4
push edi
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
cmp dword [0x1002d274], 0xa
jl 0x100027d1
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x100027d1
mov ebx, dword [sym.imp.GDI32.dll_SetStretchBltMode]
mov eax, 4
push eax
push edi
call ebx
mov eax, 4
push eax
push edi
call ebx
cmp dword [0x1002d274], 0xa
jl 0x100027d1
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
jne 0x100027a6
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x44]
pshufd xmm0, xmmword [esi + 0x50], 0x55
sub esp, 0x2c
mov edx, dword [esi + 0x34]
mov dword [esp + 0x20], edx
xor edx, edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], edx
mov dword [esp + 8], ecx
movd dword [esp + 0x24], xmm0
mov ecx, dword [esi + 0x18]
mov dword [esp + 0x14], ecx
mov ecx, dword [esi + 0x1c]
mov dword [esp + 0x10], ecx
mov ecx, dword [esi + 0x10]
mov dword [esp + 0xc], ecx
mov dword [esp + 4], eax
mov dword [esp], edi
mov dword [esp + 0x28], 0x40cc0020
call dword [sym.imp.GDI32.dll_StretchBlt]
test eax, eax
mov ebx, dword [esi + 0xc]
je 0x10002646
xor eax, eax
push eax
mov dword [esi + 0x14], 0
push eax
call dword [sym.imp.SHLWAPI.dll_SHCreateMemStream]
mov dword [esi + 8], eax
cmp dword [0x1002d274], 0xa
jl 0x10002889
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x10002889
xor edi, edi
mov ebx, dword [sym.imp.SHLWAPI.dll_SHCreateMemStream]
push edi
push edi
call ebx
push edi
push edi
call ebx
mov dword [esi + 8], eax
cmp dword [0x1002d274], 0xa
jl 0x10002889
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
jne 0x10002865
cmp dword [esi + 8], 0
mov ebx, dword [esi + 0xc]
je 0x10002646
push dword [esi + 8]
push dword [esi + 0x1c]
push dword [esi + 0x10]
push dword [esi + 0x20]
call fcn.10010189
add esp, 0x10
cmp dword [0x1002d274], 0xa
jl 0x10002904
mov ecx, dword [0x1002d270]
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
je 0x10002904
mov ebx, dword [esi + 0x1c]
mov edi, dword [esi + 0x20]
push dword [esi + 8]
push ebx
push dword [esi + 0x10]
push edi
call fcn.10010189
add esp, 0x10
push dword [esi + 8]
push ebx
push dword [esi + 0x10]
push edi
call fcn.10010189
add esp, 0x10
cmp dword [0x1002d274], 0xa
jl 0x10002904
mov ecx, dword [0x1002d270]
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
jne 0x100028ca
test eax, eax
je 0x10002c06
push 0x48
mov ebx, dword [esi + 0x28]
push ebx
call sub.NTDLL.dll_RtlZeroMemory
cmp dword [0x1002d274], 0xa
jl 0x1000296a
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x1000296a
lea ecx, [eax + 1]
imul ecx, eax
test cl, 1
jne 0x1000295c
push 0x48
push ebx
call sub.NTDLL.dll_RtlZeroMemory
cmp dword [0x1002d274], 0xa
jl 0x10002966
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x10002966
push 0x48
push ebx
call sub.NTDLL.dll_RtlZeroMemory
jmp 0x1000293b
push 0x48
jmp 0x10002911
mov ecx, dword [esi + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
push 1
push ebx
push ecx
mov dword [esi + 0x10], eax
call eax
cmp dword [0x1002d274], 0xa
jl 0x100029cb
mov ecx, dword [0x1002d270]
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
je 0x100029cb
mov ebx, dword [esi + 8]
mov edi, dword [esi + 0x10]
xor eax, eax
inc eax
push eax
push dword [esi + 0x28]
push ebx
call edi
xor eax, eax
inc eax
push eax
push dword [esi + 0x28]
push ebx
call edi
cmp dword [0x1002d274], 0xa
jl 0x100029cb
mov ecx, dword [0x1002d270]
lea edx, [ecx + 1]
imul edx, ecx
xor ecx, ecx
inc ecx
and edx, ecx
jne 0x1000299b
test eax, eax
js 0x10002c06
mov dword [esi + 0x14], 0
mov eax, dword [esi + 0x28]
mov eax, dword [eax + 8]
test eax, eax
je 0x10002c0d
push 4
push 0x1000
mov dword [esi + 0x1c], eax
push eax
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [esi + 0x10], eax
cmp dword [0x1002d274], 0xa
jl 0x10002a60
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x10002a60
mov ebx, dword [esi + 0x1c]
mov edi, dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov eax, 4
push eax
mov eax, 0x1000
push eax
push ebx
xor eax, eax
push eax
call edi
mov eax, 4
push eax
mov eax, 0x1000
push eax
push ebx
xor eax, eax
push eax
call edi
mov dword [esi + 0x10], eax
cmp dword [0x1002d274], 0xa
jl 0x10002a60
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
jne 0x10002a20
cmp dword [esi + 0x10], 0
mov ebx, dword [esi + 0xc]
je 0x10002c10
push 8
mov edi, dword [esi + 0x38]
push edi
call sub.NTDLL.dll_RtlZeroMemory
xor eax, eax
mov dword [edi + 4], eax
mov dword [edi], eax
cmp dword [0x1002d274], 0xa
jl 0x10002ad8
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x10002ad8
mov edi, dword [esi + 0x38]
xor ebx, ebx
mov eax, 8
push eax
push edi
call sub.NTDLL.dll_RtlZeroMemory
mov dword [edi + 4], ebx
mov dword [edi], ebx
mov eax, 8
push eax
push edi
call sub.NTDLL.dll_RtlZeroMemory
mov dword [edi + 4], ebx
mov dword [edi], ebx
cmp dword [0x1002d274], 0xa
jl 0x10002ad8
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
jne 0x10002a9d
mov eax, dword [esi + 0x30]
xor ecx, ecx
mov dword [eax + 4], ecx
mov dword [eax], ecx
mov edx, dword [esi + 8]
xor ecx, ecx
mov edi, dword [edx]
sub esp, 0x14
movq xmm0, qword [eax]
movq qword [esp + 4], xmm0
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], ecx
mov dword [esi + 8], edx
mov dword [esp], edx
mov dword [esi + 0x20], edi
call dword [edi + 0x14]
cmp dword [0x1002d274], 0xa
jl 0x10002b84
mov ecx, dword [0x1002d270]
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
je 0x10002b84
mov edi, dword [esi + 8]
mov ebx, dword [esi + 0x20]
sub esp, 0x14
mov eax, dword [esi + 0x30]
movsd xmm0, qword [eax]
movsd qword [esp + 4], xmm0
xor eax, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], eax
mov dword [esp], edi
call dword [ebx + 0x14]
sub esp, 0x14
mov eax, dword [esi + 0x30]
movq xmm0, qword [eax]
movq qword [esp + 4], xmm0
xor eax, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], eax
mov dword [esp], edi
call dword [ebx + 0x14]
cmp dword [0x1002d274], 0xa
jl 0x10002b84
mov ecx, dword [0x1002d270]
lea edx, [ecx + 1]
imul edx, ecx
and edx, 1
jne 0x10002b2a
test eax, eax
js 0x10002c6d
xor ebx, ebx
mov edi, dword [esi + 0x3c]
mov edx, dword [esi + 0x1c]
cmp ebx, edx
jae 0x10002bd0
xor eax, eax
mov ecx, dword [esi + 8]
mov dword [edi], eax
mov eax, edx
sub eax, ebx
mov edx, dword [esi + 0x10]
add edx, ebx
mov dword [esi + 0x28], edx
mov edx, dword [ecx]
mov dword [esi + 0x20], edx
push edi
push eax
push dword [esi + 0x28]
push ecx
mov eax, dword [esi + 0x20]
call dword [eax + 0xc]
mov ecx, dword [edi]
mov edx, ecx
test eax, eax
jns 0x10002bc6
xor edx, edx
add ebx, edx
test eax, eax
js 0x10002bd0
test ecx, ecx
jne 0x10002b91
test ebx, ebx
je 0x10002bfa
mov eax, dword [ebp + 0xc]
mov dword [eax], ebx
cmp dword [0x1002d274], 0xa
jl 0x10002bf2
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
jne 0x10002bd4
mov eax, dword [ebp + 8]
mov ecx, dword [esi + 0x10]
mov dword [eax], ecx
test ebx, ebx
je 0x10002c6d
xor eax, eax
inc eax
mov dword [esi + 0x14], eax
jmp 0x10002c0d
mov dword [esi + 0x14], 0
mov ebx, dword [esi + 0xc]
mov eax, dword [esi + 8]
mov ecx, dword [eax]
push eax
mov dword [esi + 0x10], ecx
call dword [ecx + 8]
cmp dword [0x1002d274], 0xa
jl 0x10002646
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x10002646
mov edi, dword [esi + 8]
mov ebx, dword [esi + 0x10]
push edi
call dword [ebx + 8]
push edi
call dword [ebx + 8]
cmp dword [0x1002d274], 0xa
jl 0x10002643
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
jne 0x10002c43
jmp 0x10002643
push 0x8000
push 0
push dword [esi + 0x10]
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov dword [esi + 0x14], 0
cmp dword [0x1002d274], 0xa
jl 0x10002c0d
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x10002c0d
mov ebx, dword [esi + 0x10]
mov edi, dword [sym.imp.KERNEL32.dll_VirtualFree]
xor eax, eax
mov ecx, 0x8000
push ecx
push eax
push ebx
call edi
mov eax, 0x8000
push eax
mov dword [esi + 0x14], 0
xor eax, eax
push eax
push ebx
call edi
cmp dword [0x1002d274], 0xa
jl 0x10002c0d
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
jne 0x10002caa
jmp 0x10002c0d
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push dword [esi + 0x18]
push dword [esi + 0x24]
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp dword [0x1002d274], 0xa
jl 0x10002d49
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x10002d49
mov edi, dword [esi + 0x18]
push edi
mov ebx, dword [esi + 0x24]
push ebx
call dword [sym.imp.USER32.dll_ReleaseDC]
push edi
push ebx
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp dword [0x1002d274], 0xa
jl 0x10002cf3
mov eax, dword [0x1002d270]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
jne 0x10002d18
jmp 0x10002cf3
mov eax, dword [esi + 0x14]
jmp 0x10002ceb