Function at 0x140003680
Capabilities:
Change the wallpaper

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
lea r12, [rcx + rdx]
test rdx, rdx
je 0x1400036aa
mov rsi, rcx
movzx r15d, byte [rcx]
test r15b, r15b
js 0x1400036bb
inc rsi
jmp 0x14000371a
xor r14d, r14d
xor ebp, ebp
xor esi, esi
xor r15d, r15d
xor ecx, ecx
jmp 0x140003742
mov eax, r15d
and eax, 0x1f
movzx edx, byte [rsi + 1]
and edx, 0x3f
cmp r15b, 0xdf
jbe 0x14000370e
movzx ecx, byte [rsi + 2]
shl edx, 6
and ecx, 0x3f
or ecx, edx
cmp r15b, 0xf0
jb 0x1400039a6
movzx r15d, byte [rsi + 3]
add rsi, 4
and eax, 7
shl eax, 0x12
shl ecx, 6
and r15d, 0x3f
or r15d, ecx
or r15d, eax
cmp r15d, 0xffff
jbe 0x14000371a
jmp 0x1400039bf
add rsi, 2
shl eax, 6
or eax, edx
mov r15d, eax
mov eax, 1
xor r14d, r14d
mov rdx, r12
sub rdx, rsi
add rdx, 3
mov rcx, 0xffffffffffffffff
cmovae rcx, rdx
shr rcx, 2
add rcx, rax
mov bp, 1
cmp rcx, 4
mov r13d, 3
cmovae r13, rcx
movabs rax, 0x3ffffffffffffffe
cmp r13, rax
ja 0x1400039ed
lea rbx, [r13*2 + 2]
mov rax, qword [str.10_r_]
movzx eax, byte [rax]
mov edx, 2
mov rcx, rbx
call sym.__rust_alloc
test rax, rax
je 0x1400039f2
mov rdi, rax
inc r13
mov word [rax], r15w
mov qword [rsp + 0x20], r13
mov qword [rsp + 0x28], rax
mov ebx, 1
jmp 0x1400037bb
mov r14d, eax
mov word [rdi + rbx*2], r13w
inc rbx
mov qword [rsp + 0x30], rbx
test rsi, rsi
je 0x140003830
test r14w, r14w
je 0x140003810
xor eax, eax
mov r13d, r14d
cmp rbx, qword [rsp + 0x20]
jne 0x1400037b0
mov rcx, r12
sub rcx, rsi
add rcx, 3
mov rdx, 0xffffffffffffffff
cmovb rcx, rdx
shr rcx, 2
xor r8d, r8d
test ax, ax
setne r8b
cmp bp, 1
sbb r8, 0xffffffffffffffff
add r8, rcx
mov r14d, eax
jmp 0x14000385b
cmp rsi, r12
je 0x140003830
movzx r13d, byte [rsi]
test r13b, r13b
js 0x140003875
inc rsi
xor eax, eax
jmp 0x1400037d0
mov r15, qword [rsp + 0x20]
cmp bp, 1
jne 0x140003917
xor ebp, ebp
mov esi, 0
mov r13d, 0
mov r8d, 0
cmp rbx, r15
jne 0x1400037b3
inc r8
lea rcx, [rsp + 0x20]
mov rdx, rbx
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::hfe4024a632c51a19
mov rdi, qword [rsp + 0x28]
jmp 0x1400037b3
mov eax, r13d
and eax, 0x1f
movzx edx, byte [rsi + 1]
and edx, 0x3f
cmp r13b, 0xdf
jbe 0x1400038c6
movzx ecx, byte [rsi + 2]
shl edx, 6
and ecx, 0x3f
or ecx, edx
cmp r13b, 0xf0
jb 0x1400038d9
movzx r13d, byte [rsi + 3]
add rsi, 4
and eax, 7
shl eax, 0x12
shl ecx, 6
and r13d, 0x3f
or r13d, ecx
or r13d, eax
cmp r13d, 0xffff
ja 0x1400038ee
xor eax, eax
jmp 0x1400037d0
add rsi, 2
shl eax, 6
or eax, edx
mov r13d, eax
xor eax, eax
jmp 0x1400037d0
add rsi, 3
shl eax, 0xc
or ecx, eax
mov r13d, ecx
cmp r13d, 0xffff
jbe 0x1400038bf
lea ecx, [r13 + 0xff0000]
shr ecx, 0xa
or ecx, 0xd800
and r13d, 0x3ff
or r13d, 0xdc00
mov eax, r13d
mov r13d, ecx
jmp 0x1400037d0
mov ecx, 0x14
xor edx, edx
mov r8, rdi
mov r9d, 3
call sub.USER32.dll_SystemParametersInfoW
cmp eax, 1
jne 0x140003967
xor esi, esi
test r15, r15
je 0x14000394c
add r15, r15
mov r8d, 2
mov rcx, rdi
mov rdx, r15
call sym.__rust_dealloc
lea rdx, sym.core::ptr::drop_in_place_std::io::error::Error_::h3cd9eef525ae219d
mov rax, rsi
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
call sym.std::sys::pal::windows::os::errno::h4f90b44c4df7469f
mov ebx, eax
shl rbx, 0x20
or rbx, 2
mov qword [rsp + 0x20], rbx
mov rax, qword [str.10_r_]
movzx eax, byte [rax]
mov ecx, 8
mov edx, 8
call sym.__rust_alloc
test rax, rax
je 0x1400039ff
mov rsi, rax
mov qword [rax], rbx
test r15, r15
jne 0x140003938
jmp 0x14000394c
add rsi, 3
shl eax, 0xc
or ecx, eax
mov r15d, ecx
cmp r15d, 0xffff
jbe 0x14000371a
lea ecx, [r15 + 0xff0000]
shr ecx, 0xa
or ecx, 0xd800
and r15d, 0x3ff
or r15d, 0xdc00
mov eax, 2
mov r14d, r15d
mov r15d, ecx
jmp 0x140003722
call dbg.capacity_overflow
mov ecx, 2
mov rdx, rbx
call dbg.handle_alloc_error
mov ecx, 8
mov edx, 8
call dbg.handle_alloc_error
ud2