Function at 0x4643e0
Capabilities:
Capture screenshot

Disassembly:
sub esp, 0x64
push ebx
push ebp
push esi
push edi
push dword [0x4b09c4]
call dword [sym.imp.USER32.dll_GetDC]
mov ebp, dword [sym.imp.USER32.dll_GetClientRect]
mov esi, eax
lea eax, [esp + 0x18]
push eax
push dword [0x4b09c4]
call ebp
mov edi, dword [esp + 0x7c]
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x80]
sub ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x24]
sub eax, dword [esp + 0x1c]
mov dword [edi], ecx
mov dword [ebx], eax
mov eax, dword [0x4b1654]
test eax, eax
je 0x46444b
lea ecx, [esp + 0x28]
push ecx
push eax
call ebp
cmp dword [0x4b1654], 0
je 0x46444b
mov ebp, dword [esp + 0x34]
sub ebp, dword [esp + 0x2c]
jmp 0x46444d
xor ebp, ebp
mov eax, dword [0x4b09c0]
test eax, eax
je 0x464475
lea ecx, [esp + 0x38]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetClientRect]
cmp dword [0x4b09c0], 0
je 0x464475
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x3c]
jmp 0x464477
xor eax, eax
add eax, ebp
sub dword [ebx], eax
mov eax, dword [ebx]
and dword [edi], 0xfffffffc
mov dword [esp + 0x10], eax
and eax, 0xfffffffc
push esi
mov dword [ebx], eax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push dword [ebx]
mov edi, eax
mov eax, dword [esp + 0x80]
push dword [eax]
push esi
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov ebx, eax
push ebx
push edi
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x14], eax
test edi, edi
je 0x4644e8
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x10]
push 0xcc0020
mov ecx, dword [ecx]
sub eax, ecx
add eax, ebp
mov ebp, dword [esp + 0x80]
push eax
push 0
push esi
push ecx
push dword [ebp]
push 0
push 0
push edi
call dword [sym.imp.GDI32.dll_BitBlt]
jmp 0x4644ec
mov ebp, dword [esp + 0x7c]
cmp dword [0x27924b4], 0
je 0x4645d8
test edi, edi
je 0x4645d8
test ebx, ebx
je 0x4645d8
mov ecx, dword [0x27925ec]
test ecx, ecx
je 0x464538
mov eax, dword [ebp]
mov ebp, dword [esp + 0x80]
imul eax, dword [ebp]
lea eax, [eax + eax*2]
inc eax
cmp dword [0x27925e8], eax
jae 0x464563
push ecx
call fcn.0046b2fc
add esp, 4
jmp 0x46453f
mov ebp, dword [esp + 0x80]
mov eax, dword [esp + 0x7c]
mov eax, dword [eax]
imul eax, dword [ebp]
lea eax, [eax + eax*2]
inc eax
push eax
mov dword [0x27925e8], eax
call fcn.0046b317
mov ecx, eax
add esp, 4
mov dword [0x27925ec], ecx
test ecx, ecx
jne 0x464576
mov eax, dword [esp + 0x78]
push ebx
mov dword [eax], ecx
call dword [sym.imp.GDI32.dll_DeleteObject]
jmp 0x4645f1
push dword [esp + 0x14]
push edi
call dword [sym.imp.GDI32.dll_SelectObject]
movups xmm0, xmmword [0x27924b8]
push 0
lea eax, [esp + 0x4c]
push eax
push dword [0x27925ec]
movups xmmword [esp + 0x54], xmm0
push dword [ebp]
movups xmm0, xmmword [0x27924c8]
push 0
push ebx
movups xmmword [esp + 0x70], xmm0
push edi
movq xmm0, qword [0x27924d8]
movq qword [esp + 0x84], xmm0
call dword [sym.imp.GDI32.dll_GetDIBits]
mov ecx, dword [esp + 0x78]
mov eax, dword [0x27925ec]
push ebx
mov dword [ecx], eax
call dword [sym.imp.GDI32.dll_DeleteObject]
jmp 0x4645f1
mov eax, dword [esp + 0x78]
mov dword [eax], 0
test ebx, ebx
je 0x4645ed
push ebx
call dword [sym.imp.GDI32.dll_DeleteObject]
test edi, edi
je 0x4645f8
push edi
call dword [sym.imp.GDI32.dll_DeleteDC]
test esi, esi
je 0x464609
push esi
push dword [0x4b09c4]
call dword [sym.imp.USER32.dll_ReleaseDC]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64
ret