Function at 0x14009fdd0
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 r14, [rcx + rdx]
test rdx, rdx
je 0x14009fdfe
mov rsi, rcx
movzx ecx, byte [rcx]
movzx ebx, cl
test bl, bl
js 0x14009fe0f
inc rsi
jmp 0x14009fe9a
xor r13d, r13d
xor r15d, r15d
xor ebx, ebx
xor esi, esi
xor ecx, ecx
jmp 0x14009fec3
mov eax, ebx
and eax, 0x1f
movzx edx, byte [rsi + 1]
and edx, 0x3f
cmp bl, 0xdf
jbe 0x14009fe55
movzx ebx, byte [rsi + 2]
shl edx, 6
and ebx, 0x3f
or ebx, edx
cmp cl, 0xf0
jb 0x14009fe62
movzx ecx, byte [rsi + 3]
add rsi, 4
and eax, 7
shl eax, 0x12
shl ebx, 6
and ecx, 0x3f
or ecx, ebx
or ecx, eax
mov ebx, ecx
cmp ebx, 0xffff
ja 0x14009fe73
jmp 0x14009fe9a
add rsi, 2
shl eax, 6
or eax, edx
mov ebx, eax
jmp 0x14009fe9a
add rsi, 3
shl eax, 0xc
or ebx, eax
cmp ebx, 0xffff
jbe 0x14009fe9a
lea ecx, [rbx + 0xff0000]
shr ecx, 0xa
or ecx, 0xd800
and ebx, 0x3ff
or ebx, 0xdc00
mov eax, 2
mov r13d, ebx
mov ebx, ecx
jmp 0x14009fea2
mov eax, 1
xor r13d, r13d
mov rdx, r14
sub rdx, rsi
add rdx, 3
mov rcx, 0xffffffffffffffff
cmovae rcx, rdx
shr rcx, 2
add rcx, rax
mov r15w, 1
cmp rcx, 4
mov r12d, 3
cmovae r12, rcx
movabs rax, 0x3fffffffffffffff
cmp r12, rax
jae 0x1400a015c
lea rdi, [r12*2 + 2]
movzx eax, byte [0x1400f02c0]
mov rcx, qword [0x1400f0220]
test rcx, rcx
jne 0x14009ff18
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a014d
mov rcx, rax
mov qword [0x1400f0220], rax
xor edx, edx
mov r8, rdi
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400a014d
inc r12
mov word [rax], bx
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x30], 1
mov edi, 1
lea rbx, [rsp + 0x20]
mov r12, 0xffffffffffffffff
jmp 0x14009ff7f
xor ecx, ecx
mov ebp, r13d
cmp rdi, qword [rsp + 0x28]
je 0x1400a0027
mov r13d, ecx
mov word [rax + rdi*2], bp
inc rdi
mov qword [rsp + 0x30], rdi
test rsi, rsi
je 0x14009ffb0
test r13w, r13w
jne 0x14009ff60
cmp rsi, r14
je 0x14009ffb0
movzx edx, byte [rsi]
movzx ebp, dl
test bpl, bpl
js 0x14009ffd7
inc rsi
xor ecx, ecx
jmp 0x14009ff65
cmp r15w, 1
jne 0x1400a00ab
xor r15d, r15d
mov esi, 0
mov ebp, 0
mov r8d, 0
cmp rdi, qword [rsp + 0x28]
jne 0x14009ff73
jmp 0x1400a004b
mov ecx, ebp
and ecx, 0x1f
movzx r8d, byte [rsi + 1]
and r8d, 0x3f
cmp bpl, 0xdf
jbe 0x1400a0063
movzx ebp, byte [rsi + 2]
shl r8d, 6
and ebp, 0x3f
or ebp, r8d
cmp dl, 0xf0
jb 0x1400a0076
movzx edx, byte [rsi + 3]
add rsi, 4
and ecx, 7
shl ecx, 0x12
shl ebp, 6
and edx, 0x3f
or edx, ebp
or edx, ecx
mov ebp, edx
cmp ebp, 0xffff
ja 0x1400a0087
xor ecx, ecx
jmp 0x14009ff65
mov r8, r14
sub r8, rsi
add r8, 3
cmovb r8, r12
shr r8, 2
movzx eax, r15w
cmp cx, 1
sbb r8, 0xffffffffffffffff
add r8, rax
mov r13d, ecx
inc r8
mov rcx, rbx
mov rdx, rdi
call fcn.1400a3250
mov rax, qword [rsp + 0x20]
jmp 0x14009ff73
add rsi, 2
shl ecx, 6
or ecx, r8d
mov ebp, ecx
xor ecx, ecx
jmp 0x14009ff65
add rsi, 3
shl ecx, 0xc
or ebp, ecx
cmp ebp, 0xffff
jbe 0x1400a0020
lea edx, [rbp + 0xff0000]
shr edx, 0xa
or edx, 0xd800
and ebp, 0x3ff
or ebp, 0xdc00
mov ecx, ebp
mov ebp, edx
jmp 0x14009ff65
mov rsi, qword [rsp + 0x20]
mov r14, qword [rsp + 0x28]
xor ebx, ebx
mov ecx, 0x14
xor edx, edx
mov r8, rsi
mov r9d, 3
call sub.user32.dll_SystemParametersInfoW
cmp eax, 1
je 0x1400a0122
call qword [sym.imp.kernel32.dll_GetLastError]
mov edi, eax
movzx eax, byte [0x1400f02c0]
mov rcx, qword [0x1400f0220]
test rcx, rcx
jne 0x1400a0101
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a0163
mov rcx, rax
mov qword [0x1400f0220], rax
mov r8d, 8
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400a0163
mov rbx, rax
shl rdi, 0x20
or rdi, 2
mov qword [rax], rdi
test r14, r14
je 0x1400a0139
mov rcx, qword [0x1400f0220]
xor edx, edx
mov r8, rsi
call qword [sym.imp.kernel32.dll_HeapFree]
mov rax, rbx
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov ecx, 2
mov rdx, rdi
call fcn.1400a42a0
ud2
call fcn.14003bdd0
ud2
mov ecx, 8
mov edx, 8
call fcn.1400a42a0
ud2