Function at 0x402cd2
Capabilities:
Encrypt data using rc4 prga

Disassembly:
call fcn.00406ed5
push rbp
mov rbp, rsp
sub rsp, 0xb0
mov qword [rbp + 0x10], rcx
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_GetSystemMetrics]
call rax
mov dword [rbp - 0x10], eax
mov ecx, 1
mov rax, qword [sym.imp.USER32.dll_GetSystemMetrics]
call rax
mov dword [rbp - 0x14], eax
mov eax, dword [rbp - 0x14]
add eax, 1
imul eax, dword [rbp - 0x10]
cdqe
shl rax, 2
mov r9d, 4
mov r8d, 0x3000
mov rdx, rax
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_VirtualAlloc]
call rax
mov qword [rbp - 0x20], rax
mov dword [rbp - 4], 0
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_GetDC]
call rax
mov qword [rbp - 0x28], rax
mov rax, qword [rbp - 0x28]
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_CreateCompatibleDC]
call rax
mov qword [rbp - 0x30], rax
mov edx, dword [rbp - 0x14]
mov eax, dword [rbp - 0x10]
mov rcx, qword [rbp - 0x20]
mov qword [rsp + 0x20], rcx
mov r9d, 0x20
mov r8d, 1
mov ecx, eax
mov rax, qword [sym.imp.GDI32.dll_CreateBitmap]
call rax
mov qword [rbp - 0x38], rax
mov rdx, qword [rbp - 0x38]
mov rax, qword [rbp - 0x30]
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_SelectObject]
call rax
add dword [rbp - 8], 5
mov r8d, dword [rbp - 0x10]
mov edx, dword [rbp - 8]
mov rax, qword [rbp - 0x30]
mov dword [rsp + 0x40], 0x330008
mov dword [rsp + 0x38], 0
mov dword [rsp + 0x30], 0
mov rcx, qword [rbp - 0x28]
mov qword [rsp + 0x28], rcx
mov ecx, dword [rbp - 0x14]
mov dword [rsp + 0x20], ecx
mov r9d, r8d
mov r8d, 0
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_BitBlt]
call rax
mov eax, dword [rbp - 0x10]
imul eax, dword [rbp - 0x14]
lea edx, [rax*4]
mov rcx, qword [rbp - 0x20]
mov rax, qword [rbp - 0x38]
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_GetBitmapBits]
call rax
mov dword [rbp - 0xc], 0
jmp 0x402f64
call sym.Xorshift32__
mov ecx, dword [rbp - 0x10]
mov edx, 0
div ecx
mov eax, edx
mov dword [rbp - 0x3c], eax
mov eax, dword [rbp - 0xc]
cdqe
lea rdx, [rax*4]
mov rax, qword [rbp - 0x20]
add rax, rdx
mov eax, dword [rax]
movzx eax, al
mov dword [rbp - 0x40], eax
mov eax, dword [rbp - 0xc]
cdqe
lea rdx, [rax*4]
mov rax, qword [rbp - 0x20]
add rax, rdx
mov eax, dword [rax]
shr ax, 8
movzx eax, al
mov dword [rbp - 0x44], eax
mov eax, dword [rbp - 0xc]
cdqe
lea rdx, [rax*4]
mov rax, qword [rbp - 0x20]
add rax, rdx
mov eax, dword [rax]
shr eax, 0x10
movzx eax, al
mov dword [rbp - 0x48], eax
mov eax, dword [rbp - 0x48]
movzx eax, al
mov edx, dword [rbp - 0x40]
movzx edx, dl
shl edx, 8
or eax, edx
mov edx, eax
mov eax, dword [rbp - 0x44]
movzx eax, al
shl eax, 0x10
or eax, edx
mov dword [rbp - 0x4c], eax
mov eax, dword [rbp - 0xc]
cdq
idiv dword [rbp - 0x10]
mov dword [rbp - 0x50], edx
mov eax, dword [rbp - 0xc]
cdq
idiv dword [rbp - 0x10]
mov dword [rbp - 0x54], eax
mov eax, dword [rbp - 0x50]
mov dword [rbp - 0x58], eax
mov eax, dword [rbp - 0x54]
mov dword [rbp - 0x5c], eax
mov eax, dword [rbp - 0xc]
cdqe
lea rdx, [rax*4]
mov rax, qword [rbp - 0x20]
add rax, rdx
mov edx, dword [rbp - 0x4c]
mov byte [rax], dl
mov eax, dword [rbp - 0xc]
cdqe
lea rdx, [rax*4]
mov rax, qword [rbp - 0x20]
add rax, rdx
mov edx, dword [rbp - 0x58]
mov ecx, edx
mov edx, dword [rbp - 0x5c]
add edx, ecx
mov byte [rax + 1], dl
mov eax, dword [rbp - 0xc]
cdqe
lea rdx, [rax*4]
mov rax, qword [rbp - 0x20]
add rax, rdx
mov edx, dword [rbp - 0x50]
mov ecx, edx
mov edx, dword [rbp - 0x54]
xor edx, ecx
mov byte [rax + 2], dl
mov eax, dword [rbp - 0x3c]
cdqe
lea rdx, [rax*4]
mov rax, qword [rbp - 0x20]
add rax, rdx
mov edx, dword [rbp - 0x40]
movzx edx, dl
mov ecx, dword [rbp - 0x48]
movzx ecx, cl
shl ecx, 8
or edx, ecx
mov ecx, edx
mov edx, dword [rbp - 0x44]
movzx edx, dl
shl edx, 0x10
or edx, ecx
mov dword [rax], edx
add dword [rbp - 0xc], 1
mov eax, dword [rbp - 0x10]
imul eax, dword [rbp - 0x14]
cmp eax, dword [rbp - 0xc]
jg 0x402e21
mov eax, dword [rbp - 0x10]
imul eax, dword [rbp - 0x14]
shl eax, 2
mov ecx, eax
mov rdx, qword [rbp - 0x20]
mov rax, qword [rbp - 0x38]
mov r8, rdx
mov edx, ecx
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_SetBitmapBits]
call rax
mov ecx, dword [rbp - 0x10]
mov rax, qword [rbp - 0x28]
mov dword [rsp + 0x40], 0x330008
mov dword [rsp + 0x38], 0
mov edx, dword [rbp - 8]
mov dword [rsp + 0x30], edx
mov rdx, qword [rbp - 0x30]
mov qword [rsp + 0x28], rdx
mov edx, dword [rbp - 0x14]
mov dword [rsp + 0x20], edx
mov r9d, ecx
mov r8d, 0
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_BitBlt]
call rax
mov eax, dword [rbp - 8]
sub eax, dword [rbp - 0x10]
lea edx, [rax + 0xa0]
mov ecx, dword [rbp - 0x10]
mov rax, qword [rbp - 0x28]
mov dword [rsp + 0x40], 0x330008
mov dword [rsp + 0x38], 0
mov dword [rsp + 0x30], edx
mov rdx, qword [rbp - 0x30]
mov qword [rsp + 0x28], rdx
mov edx, dword [rbp - 0x14]
mov dword [rsp + 0x20], edx
mov r9d, ecx
mov r8d, 0
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_BitBlt]
call rax
mov eax, dword [rbp - 8]
sub eax, dword [rbp - 0x10]
sub eax, dword [rbp - 0x10]
lea edx, [rax + 0xa0]
mov ecx, dword [rbp - 0x10]
mov rax, qword [rbp - 0x28]
mov dword [rsp + 0x40], 0x330008
mov dword [rsp + 0x38], 0
mov dword [rsp + 0x30], edx
mov rdx, qword [rbp - 0x30]
mov qword [rsp + 0x28], rdx
mov edx, dword [rbp - 0x14]
mov dword [rsp + 0x20], edx
mov r9d, ecx
mov r8d, 0
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_BitBlt]
call rax
mov rax, qword [rbp - 0x38]
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_DeleteObject]
call rax
mov rax, qword [rbp - 0x30]
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_DeleteObject]
call rax
mov rax, qword [rbp - 0x28]
mov rcx, rax
mov rax, qword [sym.imp.GDI32.dll_DeleteObject]
call rax
add dword [rbp - 4], 1
mov ecx, dword [rbp - 4]
mov edx, 0x55555556
mov eax, ecx
imul edx
mov eax, ecx
sar eax, 0x1f
sub edx, eax
mov eax, edx
add eax, eax
add eax, edx
sub ecx, eax
mov eax, ecx
mov dword [rbp - 4], eax
jmp 0x402d40