Function at 0x412aaa
Capabilities:
Capture screenshot
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x160
nop
mov eax, 0x7d0
push eax
call sub.kernel32.dll_Sleep
mov eax, 0
push eax
call sub.user32.dll_GetDC
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
cmp eax, 0
jne 0x412afb
mov eax, 0x10
push eax
mov eax, 0x56ffb4
push eax
mov eax, str.Failed_to_get_desktop_device_context_
push eax
mov eax, 0
push eax
call sub.user32.dll_MessageBoxA
jmp 0x412f24
mov eax, dword [ebp - 4]
push eax
call sub.gdi32.dll_CreateCompatibleDC
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
cmp eax, 0
jne 0x412b44
mov eax, 0x10
push eax
mov eax, 0x56ffe6
push eax
mov eax, str.Failed_to_create_compatible_device_context_
push eax
mov eax, 0
push eax
call sub.user32.dll_MessageBoxA
mov eax, dword [ebp - 4]
push eax
mov eax, 0
push eax
call sub.user32.dll_ReleaseDC
jmp 0x412f24
mov eax, 0
push eax
call sub.user32.dll_GetSystemMetrics
mov dword [ebp - 0xc], eax
mov eax, 1
push eax
call sub.user32.dll_GetSystemMetrics
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 4]
push eax
call sub.gdi32.dll_CreateCompatibleBitmap
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
cmp eax, 0
jne 0x412bba
mov eax, 0x10
push eax
mov eax, 0x570010
push eax
mov eax, str.Failed_to_create_compatible_bitmap_
push eax
mov eax, 0
push eax
call sub.user32.dll_MessageBoxA
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_DeleteDC
mov eax, dword [ebp - 4]
push eax
mov eax, 0
push eax
call sub.user32.dll_ReleaseDC
jmp 0x412f24
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_SelectObject
mov eax, 0xcc0020
push eax
mov eax, 0
push eax
mov eax, 0
push eax
mov eax, dword [ebp - 4]
push eax
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, 0
push eax
mov eax, 0
push eax
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_BitBlt
test eax, eax
je 0x412c07
jmp 0x412c4a
mov eax, 0x10
push eax
mov eax, 0x570031
push eax
mov eax, str.Failed_to_capture_desktop_
push eax
mov eax, 0
push eax
call sub.user32.dll_MessageBoxA
mov eax, dword [ebp - 0x14]
push eax
call sub.gdi32.dll_DeleteObject
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_DeleteDC
mov eax, dword [ebp - 4]
push eax
mov eax, 0
push eax
call sub.user32.dll_ReleaseDC
jmp 0x412f24
mov eax, 0x2c
push eax
mov eax, 0
push eax
lea eax, [ebp - 0x40]
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, 0x28
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x3c], eax
mov eax, 0
mov ecx, dword [ebp - 0x10]
sub eax, ecx
mov dword [ebp - 0x38], eax
mov eax, 1
mov word [ebp - 0x34], ax
mov eax, 0x18
mov word [ebp - 0x32], ax
mov eax, 0
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0xc]
mov ecx, 0x18
imul eax, ecx
add eax, 0x1f
mov ecx, 0x20
cdq
idiv ecx
shl eax, 2
mov ecx, dword [ebp - 0x10]
imul eax, ecx
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x44]
push eax
mov eax, 1
push eax
call sub.msvcrt.dll_calloc
add esp, 8
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x48]
cmp eax, 0
jne 0x412d1d
mov eax, 0x10
push eax
mov eax, 0x570062
push eax
mov eax, str.Failed_to_allocate_memory_for_bitmap_data_
push eax
mov eax, 0
push eax
call sub.user32.dll_MessageBoxA
mov eax, dword [ebp - 0x14]
push eax
call sub.gdi32.dll_DeleteObject
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_DeleteDC
mov eax, dword [ebp - 4]
push eax
mov eax, 0
push eax
call sub.user32.dll_ReleaseDC
jmp 0x412f24
mov eax, 0
push eax
lea eax, [ebp - 0x40]
push eax
mov eax, dword [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x10]
push eax
mov eax, 0
push eax
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_GetDIBits
test eax, eax
je 0x412d4f
jmp 0x412d9e
mov eax, 0x10
push eax
mov eax, 0x570083
push eax
mov eax, str.Failed_to_get_bitmap_data_
push eax
mov eax, 0
push eax
call sub.user32.dll_MessageBoxA
mov eax, dword [ebp - 0x48]
push eax
call sub.msvcrt.dll_free
add esp, 4
mov eax, dword [ebp - 0x14]
push eax
call sub.gdi32.dll_DeleteObject
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_DeleteDC
mov eax, dword [ebp - 4]
push eax
mov eax, 0
push eax
call sub.user32.dll_ReleaseDC
jmp 0x412f24
mov eax, 0
push eax
call sub.msvcrt.dll_time
add esp, 4
push eax
call sub.msvcrt.dll_srand
add esp, 4
call sub.msvcrt.dll_rand
push eax
mov eax, str.screenshot_by_shahid_mughdho_keyboard__d.bmp
push eax
mov eax, 0x104
push eax
lea eax, [ebp - 0x14c]
push eax
call sub.msvcrt.dll__snprintf
add esp, 0x10
mov eax, 0x5700b6
push eax
lea eax, [ebp - 0x14c]
push eax
call sub.msvcrt.dll_fopen
add esp, 8
mov dword [ebp - 0x150], eax
mov eax, dword [ebp - 0x150]
cmp eax, 0
jne 0x412e4f
mov eax, 0x10
push eax
mov eax, 0x5700d0
push eax
mov eax, 0x5700b9
push eax
mov eax, 0
push eax
call sub.user32.dll_MessageBoxA
mov eax, dword [ebp - 0x48]
push eax
call sub.msvcrt.dll_free
add esp, 4
mov eax, dword [ebp - 0x14]
push eax
call sub.gdi32.dll_DeleteObject
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_DeleteDC
mov eax, dword [ebp - 4]
push eax
mov eax, 0
push eax
call sub.user32.dll_ReleaseDC
jmp 0x412f24
mov eax, 0x4d42
mov word [ebp - 0x15e], ax
mov eax, dword [ebp - 0x44]
add eax, 0x36
mov dword [ebp - 0x15c], eax
mov eax, 0
mov word [ebp - 0x158], ax
mov eax, 0
mov word [ebp - 0x156], ax
mov eax, 0x36
mov dword [ebp - 0x154], eax
mov eax, dword [ebp - 0x150]
push eax
mov eax, 1
push eax
mov eax, 0xe
push eax
lea eax, [ebp - 0x15e]
push eax
call sub.msvcrt.dll_fwrite
add esp, 0x10
mov eax, dword [ebp - 0x150]
push eax
mov eax, 1
push eax
mov eax, 0x28
push eax
lea eax, [ebp - 0x40]
push eax
call sub.msvcrt.dll_fwrite
add esp, 0x10
mov eax, dword [ebp - 0x150]
push eax
mov eax, 1
push eax
mov eax, dword [ebp - 0x44]
push eax
mov eax, dword [ebp - 0x48]
push eax
call sub.msvcrt.dll_fwrite
add esp, 0x10
mov eax, dword [ebp - 0x150]
push eax
call sub.msvcrt.dll_fclose
add esp, 4
mov eax, dword [ebp - 0x48]
push eax
call sub.msvcrt.dll_free
add esp, 4
mov eax, dword [ebp - 0x14]
push eax
call sub.gdi32.dll_DeleteObject
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_DeleteDC
mov eax, dword [ebp - 4]
push eax
mov eax, 0
push eax
call sub.user32.dll_ReleaseDC
leave
ret