Function at 0x14002ceb0
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x258
lea rbp, [rsp + 0x80]
movaps xmmword [rbp + 0x1c0], xmm6
mov qword [rbp + 0x1b8], 0xfffffffffffffffe
mov ebx, r9d
mov esi, r8d
mov rdi, rcx
mov dword [rbp + 0x198], edx
mov dword [rbp + 0xc8], edx
movzx eax, byte [0x1400a31c1]
mov ecx, 0x18
mov edx, 8
call fcn.140007930
test rax, rax
je 0x14002d872
mov r14, rax
mov qword [rax], 4
xorps xmm6, xmm6
movups xmmword [rax + 8], xmm6
call fcn.14002bf50
lea r8, [0x14002cd00]
mov rcx, rax
xor edx, edx
mov r9, r14
call qword [sym.imp.USER32.dll_EnumDisplayMonitors]
test eax, eax
je 0x14002d834
mov dword [rbp + 0x18c], ebx
mov dword [rbp + 0x188], esi
mov qword [rbp + 0x148], rdi
mov rax, r14
add rax, 8
mov qword [rbp + 0x190], rax
mov rax, qword [r14]
mov qword [rbp + 0x1b0], r14
imul r14, qword [r14 + 0x10], 0x68
add r14, rax
lea r13, [rbp + 0x168]
jmp 0x14002cf91
lea rax, [r12 + 0x68]
cmp edi, dword [rbp + 0x198]
je 0x14002d33a
cmp rax, r14
je 0x14002d299
mov r12, rax
mov rax, qword [rax + 0x60]
mov qword [rbp + 0x50], rax
movups xmm0, xmmword [r12 + 0x50]
movaps xmmword [rbp + 0x40], xmm0
movups xmm0, xmmword [r12 + 0x40]
movaps xmmword [rbp + 0x30], xmm0
movups xmm0, xmmword [r12]
movups xmm1, xmmword [r12 + 0x10]
movups xmm2, xmmword [r12 + 0x20]
movups xmm3, xmmword [r12 + 0x30]
movaps xmmword [rbp + 0x20], xmm3
movaps xmmword [rbp + 0x10], xmm2
movaps xmmword [rbp], xmm1
movaps xmmword [rbp - 0x10], xmm0
lea rcx, [rbp + 0x18]
call fcn.140042c40
mov r15, rax
mov rbx, rdx
mov esi, 2
test rdx, rdx
je 0x14002d030
mov rax, rbx
shr rax, 0x3e
jne 0x14002d85c
mov rdi, rbx
add rdi, rbx
je 0x14002d030
movzx eax, byte [0x1400a31c1]
mov edx, 2
mov rcx, rdi
call fcn.140007930
test rax, rax
je 0x14002d863
mov rsi, rax
jmp 0x14002d032
xor edi, edi
mov rcx, rsi
mov rdx, r15
mov r8, rdi
call sub.VCRUNTIME140.dll_memcpy
mov qword [rbp + 0x168], rsi
mov qword [rbp + 0x170], rbx
mov qword [rbp + 0x178], rbx
mov rcx, r13
call fcn.14002dba0
mov qword [rbp + 0x1a8], rax
mov rcx, rax
mov qword [rbp + 0x1a0], rdx
call fcn.1400241a0
mov rbx, rdx
sub rbx, 1
jb 0x14002d849
mov rsi, rax
mov qword [rbp + 0x150], 1
lea rax, [rbp + 0x158]
movups xmmword [rax], xmm6
mov rax, rbx
shr rax, 1
mov r8d, ebx
and r8d, 1
add r8, rax
je 0x14002d0b8
lea rcx, [rbp + 0x150]
xor edx, edx
call fcn.140072340
lea rax, [rsi + rbx*2]
mov qword [rbp + 0x168], rsi
mov qword [rbp + 0x170], rax
mov word [rbp + 0x178], 0
mov rcx, r13
lea rdx, [rbp + 0x150]
call fcn.14002c1d0
mov r15, qword [rbp + 0x150]
mov rbx, qword [rbp + 0x158]
mov rsi, qword [rbp + 0x160]
mov rcx, qword [rbp + 0x1a8]
mov word [rcx], 0
mov rdx, qword [rbp + 0x1a0]
test rdx, rdx
je 0x14002d11d
add rdx, rdx
mov r8d, 2
call fcn.140007940
imul eax, esi, 0x27220a95
mov rcx, rsi
rol eax, 5
shr rcx, 0x20
xor eax, ecx
imul edi, eax, 0x27220a95
cmp rsi, 4
jb 0x14002d190
lea rcx, [rsi - 4]
mov eax, ecx
shr eax, 2
inc eax
and eax, 3
je 0x14002d195
shl rax, 2
xor edx, edx
nop word cs:[rax + rax]
rol edi, 5
xor edi, dword [r15 + rdx]
imul edi, edi, 0x27220a95
add rdx, 4
cmp rax, rdx
jne 0x14002d160
lea rax, [r15 + rdx]
sub rsi, rdx
cmp rcx, 0xc
jae 0x14002d1a0
jmp 0x14002d1dd
mov rax, r15
jmp 0x14002d1dd
mov rax, r15
cmp rcx, 0xc
jb 0x14002d1dd
nop
rol edi, 5
xor edi, dword [rax]
imul ecx, edi, 0x27220a95
rol ecx, 5
xor ecx, dword [rax + 4]
imul ecx, ecx, 0x27220a95
rol ecx, 5
xor ecx, dword [rax + 8]
imul ecx, ecx, 0x27220a95
rol ecx, 5
xor ecx, dword [rax + 0xc]
imul edi, ecx, 0x27220a95
add rax, 0x10
add rsi, 0xfffffffffffffff0
cmp rsi, 3
ja 0x14002d1a0
test rsi, rsi
je 0x14002d27a
mov rdx, rsi
mov rcx, rax
and rdx, 3
je 0x14002d218
nop word cs:[rax + rax]
movzx r8d, byte [rcx]
rol edi, 5
inc rcx
xor edi, r8d
imul edi, edi, 0x27220a95
dec rdx
jne 0x14002d200
cmp rsi, 4
jb 0x14002d27a
add rax, rsi
nop word cs:[rax + rax]
rol edi, 5
movzx edx, byte [rcx]
xor edi, edx
imul edx, edi, 0x27220a95
movzx r8d, byte [rcx + 1]
rol edx, 5
xor edx, r8d
imul edx, edx, 0x27220a95
movzx r8d, byte [rcx + 2]
rol edx, 5
xor edx, r8d
imul edx, edx, 0x27220a95
movzx r8d, byte [rcx + 3]
rol edx, 5
xor edx, r8d
imul edi, edx, 0x27220a95
add rcx, 4
cmp rcx, rax
jne 0x14002d230
test rbx, rbx
je 0x14002cf80
mov r8d, 1
mov rcx, r15
mov rdx, rbx
call fcn.140007940
jmp 0x14002cf80
lea rax, [rbp + 0xc8]
mov qword [rbp + 0x168], rax
lea rax, [0x140070bf0]
mov qword [rbp + 0x170], rax
lea rax, str.Cant_find_a_display_by_id
mov qword [rbp - 0x10], rax
mov qword [rbp - 8], 1
mov qword [rbp + 0x10], 0
mov qword [rbp], r13
mov qword [rbp + 8], 1
lea rcx, [rbp - 0x10]
call fcn.1400764c0
mov rsi, rax
mov rax, qword [rbp + 0x190]
mov rax, qword [rax]
test rax, rax
mov rdi, qword [rbp + 0x1b0]
je 0x14002d310
mov rcx, qword [rdi]
imul rdx, rax, 0x68
mov r8d, 4
call fcn.140007940
mov edx, 0x18
mov r8d, 8
mov rcx, rdi
call fcn.140007940
mov rdi, qword [rbp + 0x148]
mov qword [rdi + 8], rsi
mov qword [rdi], 0
jmp 0x14002d819
movups xmm0, xmmword [r12 + 0x58]
movups xmmword [rbp + 0x12c], xmm0
movups xmm0, xmmword [r12 + 0x4c]
movaps xmmword [rbp + 0x120], xmm0
movups xmm0, xmmword [r12 + 0xc]
movups xmm1, xmmword [r12 + 0x1c]
movups xmm2, xmmword [r12 + 0x2c]
movups xmm3, xmmword [r12 + 0x3c]
movaps xmmword [rbp + 0x110], xmm3
movaps xmmword [rbp + 0x100], xmm2
movaps xmmword [rbp + 0xf0], xmm1
movaps xmmword [rbp + 0xe0], xmm0
mov rax, qword [rbp + 0x190]
mov rax, qword [rax]
test rax, rax
mov rsi, qword [rbp + 0x1b0]
je 0x14002d3b0
mov rcx, qword [rsi]
imul rdx, rax, 0x68
mov r8d, 4
call fcn.140007940
mov edx, 0x18
mov r8d, 8
mov rcx, rsi
call fcn.140007940
movaps xmm0, xmmword [rbp + 0xe0]
movaps xmm1, xmmword [rbp + 0xf0]
movaps xmm2, xmmword [rbp + 0x100]
movaps xmm3, xmmword [rbp + 0x110]
movaps xmmword [rbp + 0x80], xmm2
movaps xmmword [rbp + 0x70], xmm1
movups xmm1, xmmword [rbp + 0x12c]
movups xmmword [rbp + 0xac], xmm1
movaps xmm1, xmmword [rbp + 0x120]
movaps xmmword [rbp + 0xa0], xmm1
movaps xmmword [rbp + 0x90], xmm3
movaps xmmword [rbp + 0x60], xmm0
movups xmm0, xmmword [rbp + 0xac]
movaps xmmword [rbp + 0x20], xmm0
movups xmm0, xmmword [rbp + 0x9c]
movaps xmmword [rbp + 0x10], xmm0
movups xmm0, xmmword [rbp + 0x8c]
movaps xmmword [rbp], xmm0
movups xmm0, xmmword [rbp + 0x7c]
movaps xmmword [rbp - 0x10], xmm0
lea rcx, [rbp - 0x10]
mov rdx, rcx
xor r8d, r8d
xor r9d, r9d
call qword [sym.imp.GDI32.dll_CreateDCW]
mov qword [rbp + 0x1a0], rax
mov rcx, rax
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov qword [rbp + 0x1a8], rax
mov r14, qword [rbp + 0x148]
mov edi, dword [rbp + 0x240]
mov ebx, dword [rbp + 0x248]
mov rcx, qword [rbp + 0x1a0]
mov edx, edi
mov r8d, ebx
call qword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov rcx, qword [rbp + 0x1a8]
mov qword [rbp + 0x198], rax
mov rdx, rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, qword [rbp + 0x1a0]
mov edx, 4
call qword [sym.imp.GDI32.dll_SetStretchBltMode]
mov dword [rsp + 0x48], ebx
mov dword [rsp + 0x40], edi
mov eax, dword [rbp + 0x18c]
mov dword [rsp + 0x38], eax
mov eax, dword [rbp + 0x188]
mov dword [rsp + 0x30], eax
mov rax, qword [rbp + 0x1a0]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], ebx
mov dword [rsp + 0x50], 0xcc0020
mov rcx, qword [rbp + 0x1a8]
xor edx, edx
xor r8d, r8d
mov r9d, edi
call qword [sym.imp.GDI32.dll_StretchBlt]
test eax, eax
je 0x14002d576
call fcn.14002bf50
mov dword [rbp + 0x60], 0x28
mov dword [rbp + 0x64], edi
mov dword [rbp + 0x68], ebx
mov dword [rbp + 0x6c], 0x200001
xorps xmm0, xmm0
movups xmmword [rbp + 0x70], xmm0
mov qword [rbp + 0x80], 0
mov dword [rbp + 0x88], eax
mov esi, ebx
imul esi, edi
movsxd rax, esi
lea rcx, [rax*4]
test eax, eax
mov qword [rbp + 0x1b0], rcx
je 0x14002d593
js 0x14002d883
mov edx, 1
call fcn.140007960
test rax, rax
jne 0x14002d598
mov ecx, 1
mov rdx, qword [rbp + 0x1b0]
call fcn.140077aa0
jmp 0x14002d8ce
call fcn.140041c10
mov rcx, rax
call fcn.1400763a0
mov qword [r14 + 8], rax
mov qword [r14], 0
jmp 0x14002d7f2
mov eax, 1
lea rcx, [rbp + 0x60]
mov qword [rsp + 0x28], rcx
mov qword [rbp + 0x190], rax
mov qword [rsp + 0x20], rax
mov dword [rsp + 0x30], 0
mov rcx, qword [rbp + 0x1a8]
mov rdx, qword [rbp + 0x198]
xor r8d, r8d
mov r9d, ebx
call qword [sym.imp.GDI32.dll_GetDIBits]
test eax, eax
je 0x14002d78d
lea rcx, [rbp + 0x168]
call fcn.1400428d0
lea r8, [rbp + 0x168]
mov rcx, qword [rbp + 0x198]
mov edx, 0x20
call qword [sym.imp.GDI32.dll_GetObjectW]
test edi, edi
je 0x14002d88a
movsxd rax, edi
shl rax, 2
mov rcx, qword [rbp + 0x190]
mov qword [rbp - 0x28], rcx
mov rcx, qword [rbp + 0x1b0]
mov qword [rbp - 0x20], rcx
mov qword [rbp - 0x18], rax
lea rcx, [rbp + 0xc8]
lea rdx, [rbp - 0x28]
call fcn.140030b00
mov rdi, qword [rbp + 0xc8]
mov rbx, qword [rbp + 0xd8]
cmp rbx, 2
jb 0x14002d6a5
mov rax, rbx
shr rax, 1
lea rcx, [rbx + rbx*2]
lea rcx, [rdi + rcx*8]
add rcx, 0xffffffffffffffe8
mov rdx, rdi
nop
mov r8, qword [rdx + 0x10]
mov qword [rbp + 0xf0], r8
movups xmm0, xmmword [rdx]
movaps xmmword [rbp + 0xe0], xmm0
mov r8, qword [rcx + 0x10]
mov qword [rdx + 0x10], r8
movups xmm0, xmmword [rcx]
movups xmmword [rdx], xmm0
mov r8, qword [rbp + 0xf0]
mov qword [rcx + 0x10], r8
movaps xmm0, xmmword [rbp + 0xe0]
movups xmmword [rcx], xmm0
add rdx, 0x18
add rcx, 0xffffffffffffffe8
dec rax
jne 0x14002d660
lea rcx, [rbp + 0x150]
mov rdx, rdi
mov r8, rbx
call fcn.140030880
mov r8d, dword [rbp + 0x16c]
mov r9d, dword [rbp + 0x170]
movsxd rax, dword [rbp + 0x174]
mov qword [rsp + 0x20], rax
lea rcx, [rbp + 0xe0]
lea rdx, [rbp + 0x150]
call fcn.14002c550
movups xmm0, xmmword [rbp + 0xe0]
movups xmm1, xmmword [rbp + 0xf0]
movups xmmword [r14 + 0x10], xmm1
movups xmmword [r14], xmm0
test rbx, rbx
je 0x14002d732
lea r14, [rdi + 8]
jmp 0x14002d719
add r14, 0x18
dec rbx
je 0x14002d732
mov rdx, qword [r14]
test rdx, rdx
je 0x14002d710
mov rcx, qword [r14 - 8]
mov r8d, 1
call fcn.140007940
jmp 0x14002d710
mov rax, qword [rbp + 0xd0]
test rax, rax
je 0x14002d754
shl rax, 3
lea rdx, [rax + rax*2]
mov r8d, 8
mov rcx, rdi
call fcn.140007940
test esi, esi
je 0x14002d771
mov r8d, 1
mov rcx, qword [rbp + 0x190]
mov rdx, qword [rbp + 0x1b0]
call fcn.140007940
mov rcx, qword [rbp + 0x198]
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, qword [rbp + 0x1a8]
call qword [sym.imp.GDI32.dll_DeleteDC]
jmp 0x14002d80c
lea rax, str.Get_RGBA_data_failed
mov qword [rbp + 0xe0], rax
mov qword [rbp + 0xe8], 1
lea rax, [0x14007cf60]
mov qword [rbp + 0xf0], rax
xorps xmm0, xmm0
movups xmmword [rbp + 0xf8], xmm0
lea rcx, [rbp + 0xe0]
call fcn.1400764c0
mov qword [r14 + 8], rax
mov qword [r14], 0
test esi, esi
je 0x14002d7f2
mov r8d, 1
mov rcx, qword [rbp + 0x190]
mov rdx, qword [rbp + 0x1b0]
call fcn.140007940
mov rcx, qword [rbp + 0x198]
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, qword [rbp + 0x1a8]
call qword [sym.imp.GDI32.dll_DeleteDC]
mov rcx, qword [rbp + 0x1a0]
call qword [sym.imp.GDI32.dll_DeleteDC]
movaps xmm6, xmmword [rbp + 0x1c0]
add rsp, 0x258
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
call fcn.140041c10
mov rcx, rax
call fcn.1400763a0
mov rsi, rax
jmp 0x14002d32a
lea r8, [0x14007cf48]
mov rcx, rbx
xor edx, edx
call fcn.140078080
jmp 0x14002d8ce
call fcn.14006a190
jmp 0x14002d8ce
mov ecx, 2
mov rdx, rdi
call fcn.140077aa0
jmp 0x14002d8ce
mov ecx, 8
mov edx, 0x18
call fcn.140077aa0
jmp 0x14002d8ce
call fcn.14006a190
jmp 0x14002d8ce
lea rax, [0x14007cf80]
mov qword [rbp + 0xe0], rax
mov qword [rbp + 0xe8], 1
lea rax, [0x14007cf60]
mov qword [rbp + 0xf0], rax
xorps xmm0, xmm0
movups xmmword [rbp + 0xf8], xmm0
lea rdx, str.C:UsersJohnny.cargo_registry_srcindex.crates.io_6f17d22bba15001f_screenshots_0.6.0_srcwin32.rs
lea rcx, [rbp + 0xe0]
call fcn.140077b80
ud2