Function at 0x1400882b0
Capabilities:
Check if file exists
Query or enumerate registry value

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x4e8]
sub rsp, 0x5c0
mov qword [rbp - 0x70], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov rax, qword [0x1403b8c08]
xor rax, rsp
mov qword [rbp + 0x4b0], rax
xor r12d, r12d
mov dword [rsp + 0x34], r12d
mov dword [rsp + 0x64], 1
xor edx, edx
mov r8d, 0x208
lea rcx, [rbp + 0x2a0]
call fcn.140289490
mov dword [rsp + 0x60], 0x104
lea rax, [rsp + 0x60]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x2a0]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x64]
lea r8, str.SteamPath
lea rdx, str.SOFTWAREValveSteam
mov rcx, 0xffffffff80000001
call qword [sym.imp.SHLWAPI.dll_SHGetValueW]
cmp word [rbp + 0x2a0], r12w
je 0x140088e6a
call fcn.14000b190
mov rcx, rax
test rax, rax
je 0x140088eab
mov rax, qword [rax]
call qword [rax + SafeArrayCopy]
add rax, 0x18
mov qword [rsp + 0x38], rax
lea rdx, [rbp + 0x2a0]
lea rcx, [rsp + 0x38]
call fcn.14002e390
lea r15, [r12 - 1]
test al, al
jne 0x1400884e0
lea rax, [rbp + 0x2a0]
mov rdi, r15
nop word [rax + rax]
inc rdi
cmp word [rax + rdi*2], 0
jne 0x1400883b0
mov rbx, qword [rsp + 0x38]
test edi, edi
jne 0x14008841e
lea rdx, [rbx - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], 0
je 0x1400884e5
cmp dword [rdx + 0x10], 0
jge 0x1400883f1
cmp dword [rbx - 0xc], 0
jl 0x140088eb6
mov dword [rbx - 0x10], r12d
mov word [rbx], r12w
jmp 0x1400884e5
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140088407
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + SafeArrayCopy]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x38], rbx
jmp 0x1400884e5
mov r14d, dword [rbx - 0x10]
lea rsi, [rbp + 0x2a0]
sub rsi, rbx
sar rsi, 1
test edi, edi
js 0x140088ec1
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, ecx
jge 0x140088459
mov edx, edi
lea rcx, [rsp + 0x38]
call fcn.14000bdf0
mov rbx, qword [rsp + 0x38]
movsxd rax, edi
cmp rsi, r14
ja 0x1400884b0
lea rdx, [rbx + rsi*2]
lea rsi, [rax + rax]
test rsi, rsi
je 0x1400884cd
test rdx, rdx
jne 0x140088485
call fcn.14028c79c
mov dword [rax], reloc.WS2_32.dll_shutdown
call fcn.14028c64c
jmp 0x1400884cd
movsxd rax, dword [rbx - 0xc]
add rax, rax
cmp rax, rsi
jae 0x1400884a3
call fcn.14028c79c
mov dword [rax], 0x22
call fcn.14028c64c
jmp 0x1400884cd
mov r8, rsi
mov rcx, rbx
call fcn.140289020
jmp 0x1400884cd
lea rsi, [rax + rax]
movsxd rdx, dword [rbx - 0xc]
add rdx, rdx
mov r9, rsi
lea r8, [rbp + 0x2a0]
mov rcx, rbx
call fcn.140015050
cmp edi, dword [rbx - 0xc]
jg 0x140088ecc
mov dword [rbx - 0x10], edi
mov word [rsi + rbx], r12w
jmp 0x1400884e5
mov rbx, qword [rsp + 0x38]
mov rcx, qword [rbx - 0x18]
test rcx, rcx
je 0x1400884fc
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
test rax, rax
jne 0x14008850d
call fcn.14000b190
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x20]
mov rcx, rax
test rcx, rcx
je 0x140088ed7
mov rax, qword [rcx]
call qword [rax + SafeArrayCopy]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x40], rdi
mov dword [rsp + 0x34], 1
lea rax, str._steamappscommonwallpaper_engineconfig.json
mov r14, r15
nop word [rax + rax]
inc r14
cmp word [rax + r14*2], 0
jne 0x140088540
movsxd rsi, dword [rbx - 0x10]
lea r12d, [rsi + r14]
test r12d, r12d
js 0x140088ee2
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
sub eax, r12d
or eax, ecx
jge 0x140088580
mov edx, r12d
lea rcx, [rsp + 0x40]
call fcn.14000bdf0
mov rdi, qword [rsp + 0x40]
add rsi, rsi
mov r9, rsi
mov r8, rbx
mov rdx, rsi
mov rcx, rdi
call fcn.140015050
lea rcx, [rsi + rdi]
movsxd r8, r14d
add r8, r8
je 0x1400885c3
test rcx, rcx
jne 0x1400885b7
call fcn.14028c79c
mov dword [rax], reloc.WS2_32.dll_shutdown
call fcn.14028c64c
jmp 0x1400885c3
lea rdx, str._steamappscommonwallpaper_engineconfig.json
call fcn.140289020
cmp r12d, dword [rdi - 0xc]
jg 0x140088ea0
mov dword [rdi - 0x10], r12d
movsxd rax, r12d
xor ecx, ecx
mov word [rdi + rax*2], cx
mov eax, r15d
lock xadd dword [rbx - 8], eax
sub eax, 1
jg 0x1400885f5
mov rcx, qword [rbx - 0x18]
mov rax, qword [rcx]
lea rdx, [rbx - 0x18]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea r8, [0x1402fa70c]
lea rdx, [0x1402fd9e0]
lea rcx, [rsp + 0x40]
call fcn.14007f8c0
mov rbx, qword [rsp + 0x40]
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x140088e51
movdqa xmm0, xmmword [0x1402eb9c0]
movdqu xmmword [rbp + 0x270], xmm0
mov byte [rbp + 0x260], 0
mov rdx, rbx
lea rcx, [rbp - 0x80]
call fcn.14000d6b0
mov rdi, rax
mov rbx, qword [rax]
cmp dword [rbx - 8], 1
jle 0x140088660
mov edx, dword [rbx - 0x10]
mov rcx, rax
call fcn.14000fef0
mov rbx, qword [rdi]
lea rax, [0x140000000]
lea rax, [rax + 0x2f86a0]
mov qword [rbp - 0x50], rax
mov dword [rsp + 0x34], 3
lea rax, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rbp + 0x60], rax
mov dword [rbp + 0x5c], ILFree
xor r13d, r13d
mov qword [rbp - 0x48], r13
xor r8d, r8d
lea rdx, [rbp - 0x40]
lea rcx, [rbp + 0x60]
call fcn.14004e850
nop
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx - 0x50], rax
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rbp + rcx - 0x54], edx
xor edx, edx
lea rcx, [rbp - 0x40]
call fcn.140071270
nop
lea r9d, [r13 + 0x40]
lea r8d, [r13 + 1]
mov rdx, rbx
lea rcx, [rbp - 0x40]
call fcn.140098ba0
lea edx, [r13 + 2]
lea r12d, [r13 + 6]
test rax, rax
jne 0x140088721
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
mov eax, r12d
cmp qword [rbp + rcx - 8], r13
cmovne eax, edx
or eax, dword [rbp + rcx - 0x40]
and eax, 0x17
mov dword [rbp + rcx - 0x40], eax
mov edx, dword [rbp + rcx - 0x3c]
and edx, eax
jne 0x140088eed
mov rdx, qword [rbp - 0x80]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14008873f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov qword [rsp + 0x50], r13
mov word [rsp + 0x58], 1
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
mov rax, qword [rbp + rcx - 8]
mov qword [rsp + 0x70], rax
test rax, rax
sete byte [rsp + 0x78]
mov byte [rsp + 0x79], 0
movdqa xmm0, xmmword [0x1402eb9c0]
movdqu xmmword [rbp + 0x290], xmm0
mov byte [rbp + 0x280], 0
movaps xmm0, xmmword [rsp + 0x50]
movdqa xmmword [rbp - 0x60], xmm0
movaps xmm1, xmmword [rsp + 0x70]
movdqa xmmword [rsp + 0x70], xmm1
movzx r9d, byte [rsp + 0x30]
lea r8, [rbp - 0x60]
lea rdx, [rsp + 0x70]
lea rcx, [rbp + 0x280]
call fcn.140084720
lea rcx, [rbp + 0x260]
call fcn.14000a960
movups xmm0, xmmword [rbp + 0x280]
movups xmmword [rbp + 0x260], xmm0
movups xmm1, xmmword [rbp + 0x290]
movups xmmword [rbp + 0x270], xmm1
lea rcx, [rbp - 0x50]
call fcn.140071e80
lea rcx, [rbp + 0x260]
cmp qword [rbp + 0x278], 0x10
cmovae rcx, qword [rbp + 0x260]
call fcn.1400e0e20
mov rbx, rax
mov qword [rsp + 0x50], rax
test rax, rax
je 0x140088e01
mov rdi, qword [rax + 0x10]
test rdi, rdi
je 0x140088e01
cmp qword [rdi + 0x20], 0
jne 0x140088852
lea rdx, str.general
mov rcx, rdi
call fcn.1400e0d50
test rax, rax
je 0x140088e01
lea rdx, str.user
mov rcx, rax
call fcn.1400e0d50
mov rsi, rax
test rax, rax
jne 0x140088857
mov rdi, qword [rdi]
jmp 0x140088813
lea rdx, str.apprules
mov rcx, rsi
call fcn.1400e0d50
mov r14, rax
test rax, rax
je 0x140088b5e
cmp dword [rax + 0x18], 2
jne 0x14008887f
mov dword [rax + 0x18], 5
mov rcx, r14
call fcn.1400e0d30
mov esi, eax
mov edi, r13d
test eax, eax
jle 0x140088a20
mov edx, edi
mov rcx, r14
call fcn.1400e0d10
mov rbx, rax
test rax, rax
je 0x140088a11
call fcn.14000b190
test rax, rax
je 0x140088f4d
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + SafeArrayCopy]
add rax, 0x18
mov qword [rsp + 0x48], rax
lea rdx, [0x1402eb7f8]
lea rcx, [rsp + 0x48]
call fcn.14002e390
test al, al
jne 0x1400888f1
lea rdx, [0x1402eb7f8]
lea rcx, [rsp + 0x48]
call fcn.140086890
nop
mov qword [rbp + 0x250], r13
mov qword [rbp + 0x258], reloc.OLEAUT32.dll_SafeArrayDestroy
mov byte [rbp + 0x240], 0
mov r8d, 0xa
lea rdx, str.executable
lea rcx, [rbp + 0x240]
call fcn.14000c230
nop
mov dword [rsp + 0x20], 0xfde9
lea r9, [rsp + 0x48]
lea r8, [rbp + 0x240]
mov rdx, rbx
lea rcx, [rsp + 0x68]
call fcn.1400e2490
nop
mov rdx, qword [rbp + 0x258]
cmp rdx, 0x10
jb 0x140088987
inc rdx
mov rcx, qword [rbp + 0x240]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140088982
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140088f47
call fcn.140171af0
mov qword [rbp + 0x250], r13
mov qword [rbp + 0x258], reloc.OLEAUT32.dll_SafeArrayDestroy
mov byte [rbp + 0x240], 0
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400889bf
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rsp + 0x68]
mov ecx, dword [rax - 0x10]
test ecx, ecx
je 0x1400889f7
js 0x1400889f7
lea rdx, str.HaloDesktop
mov rcx, rax
call fcn.1402897b8
mov rcx, rax
test rax, rax
mov rax, qword [rsp + 0x68]
je 0x1400889f7
sub rcx, rax
sar rcx, 1
test ecx, ecx
jns 0x140088b3b
lea rdx, [rax - 0x18]
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140088a11
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
inc edi
cmp edi, esi
jl 0x140088894
mov rbx, qword [rsp + 0x50]
call fcn.1400e09e0
mov rdi, rax
test rax, rax
je 0x140088aa9
lea rcx, [0x1402fda28]
call fcn.1400e0a30
mov r8, rax
lea rdx, [0x1402fda2c]
mov rcx, rdi
call fcn.1400e0860
lea rcx, str.fullscreen
call fcn.1400e0a30
mov r8, rax
lea rdx, str.condition
mov rcx, rdi
call fcn.1400e0860
lea rcx, [0x1402fda58]
call fcn.1400e0a30
mov r8, rax
lea rdx, str.executable
mov rcx, rdi
call fcn.1400e0860
call fcn.1400e0930
mov r8, rax
lea rdx, [0x1402fda68]
mov rcx, rdi
call fcn.1400e0860
mov rdx, rdi
mov rcx, r14
call fcn.1400e0830
call fcn.1400e09e0
mov rdi, rax
test rax, rax
je 0x140088c93
lea rcx, [0x1402fda28]
call fcn.1400e0a30
mov r8, rax
lea rdx, [0x1402fda2c]
mov rcx, rdi
call fcn.1400e0860
lea rcx, str.fullscreen
call fcn.1400e0a30
mov r8, rax
lea rdx, str.condition
mov rcx, rdi
call fcn.1400e0860
lea rcx, str.HaloDesktop64.exe
call fcn.1400e0a30
mov r8, rax
lea rdx, str.executable
mov rcx, rdi
call fcn.1400e0860
call fcn.1400e0930
mov r8, rax
lea rdx, [0x1402fda68]
mov rcx, rdi
call fcn.1400e0860
mov rdx, rdi
mov rcx, r14
call fcn.1400e0830
jmp 0x140088c93
lea rdx, [rax - 0x18]
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140088dfc
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x140088dfc
call fcn.1400e08e0
mov rdi, rax
test rax, rax
je 0x140088e01
call fcn.1400e09e0
mov r14, rax
test rax, rax
je 0x140088bf8
lea rcx, [0x1402fda28]
call fcn.1400e0a30
mov r8, rax
lea rdx, [0x1402fda2c]
mov rcx, r14
call fcn.1400e0860
lea rcx, str.fullscreen
call fcn.1400e0a30
mov r8, rax
lea rdx, str.condition
mov rcx, r14
call fcn.1400e0860
lea rcx, [0x1402fda58]
call fcn.1400e0a30
mov r8, rax
lea rdx, str.executable
mov rcx, r14
call fcn.1400e0860
call fcn.1400e0930
mov r8, rax
lea rdx, [0x1402fda68]
mov rcx, r14
call fcn.1400e0860
mov rdx, r14
mov rcx, rdi
call fcn.1400e0830
call fcn.1400e09e0
mov r14, rax
test rax, rax
je 0x140088c81
lea rcx, [0x1402fda28]
call fcn.1400e0a30
mov r8, rax
lea rdx, [0x1402fda2c]
mov rcx, r14
call fcn.1400e0860
lea rcx, str.fullscreen
call fcn.1400e0a30
mov r8, rax
lea rdx, str.condition
mov rcx, r14
call fcn.1400e0860
lea rcx, str.HaloDesktop64.exe
call fcn.1400e0a30
mov r8, rax
lea rdx, str.executable
mov rcx, r14
call fcn.1400e0860
call fcn.1400e0930
mov r8, rax
lea rdx, [0x1402fda68]
mov rcx, r14
call fcn.1400e0860
mov rdx, r14
mov rcx, rdi
call fcn.1400e0830
mov r8, rdi
lea rdx, str.apprules
mov rcx, rsi
call fcn.1400e0860
mov rcx, rbx
call fcn.1400e0eb0
mov rdi, rax
test rax, rax
je 0x140088e01
mov rdx, qword [rsp + 0x40]
lea rcx, [rbp - 0x78]
call fcn.14000d6b0
mov rsi, rax
mov rbx, qword [rax]
cmp dword [rbx - 8], 1
jle 0x140088ccf
mov edx, dword [rbx - 0x10]
mov rcx, rax
call fcn.14000fef0
mov rbx, qword [rsi]
lea rax, [0x140000000]
lea rax, [rax + 0x2f86e0]
mov qword [rbp + 0xc0], rax
mov dword [rsp + 0x34], listen
lea rax, vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov qword [rbp + 0x168], rax
mov dword [rbp + 0x164], ILFree
xor r8d, r8d
lea rdx, [rbp + 0xc8]
lea rcx, [rbp + 0x168]
call fcn.14004e850
nop
mov rax, qword [rbp + 0xc0]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ofstream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0xc0], rax
mov rax, qword [rbp + 0xc0]
movsxd rcx, dword [rax + 4]
lea r8d, [rcx - 0xa8]
mov dword [rbp + rcx + 0xbc], r8d
xor edx, edx
lea rcx, [rbp + 0xc8]
call fcn.140071270
nop
mov esi, 2
lea r9d, [rsi + 0x3e]
mov r8d, esi
mov rdx, rbx
lea rcx, [rbp + 0xc8]
call fcn.140098ba0
test rax, rax
jne 0x140088dba
mov rax, qword [rbp + 0xc0]
movsxd rcx, dword [rax + 4]
cmp qword [rbp + rcx + 0x108], 0
cmovne r12d, esi
or r12d, dword [rbp + rcx + 0xd0]
and r12d, 0x17
mov dword [rbp + rcx + 0xd0], r12d
mov eax, dword [rbp + rcx + 0xd4]
and eax, r12d
jne 0x140088f58
mov rdx, qword [rbp - 0x78]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140088dd8
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, rdi
lea rcx, [rbp + 0xc0]
call fcn.140017d10
mov rcx, rdi
call fcn.14028fcf4
nop
lea rcx, [rbp + 0xc0]
call fcn.140071f20
mov rbx, qword [rsp + 0x50]
test rbx, rbx
je 0x140088e0f
mov rcx, rbx
call fcn.1400e0c40
nop
mov rdx, qword [rbp + 0x278]
cmp rdx, 0x10
jb 0x140088e4c
inc rdx
mov rcx, qword [rbp + 0x260]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140088e47
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140088e9a
call fcn.140171af0
mov rbx, qword [rsp + 0x40]
lea rdx, [rbx - 0x18]
lock xadd dword [rdx + 0x10], r15d
sub r15d, 1
jg 0x140088e6a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rcx, qword [rbp + 0x4b0]
xor rcx, rsp
call fcn.140172190
lea r11, [rsp + 0x5c0]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.14028c66c
nop
mov ecx, 0x80070057
call fcn.14000adf0
nop
mov ecx, 0x80004005
call fcn.14000adf0
nop
mov ecx, 0x80070057
call fcn.14000adf0
int3
mov ecx, 0x80070057
call fcn.14000adf0
int3
mov ecx, 0x80070057
call fcn.14000adf0
nop
mov ecx, 0x80004005
call fcn.14000adf0
int3
mov ecx, 0x80070057
call fcn.14000adf0
nop
test dl, 4
je 0x140088efb
lea rbx, str.ios_base::badbit_set
jmp 0x140088f10
test dl, 2
lea rbx, str.ios_base::failbit_set
lea rax, str.ios_base::eofbit_set
cmove rbx, rax
mov edx, 1
lea rcx, [rbp + 0x1d0]
call fcn.1400147b0
mov r8, rax
mov rdx, rbx
lea rcx, [rbp + 0x1f0]
call fcn.14000e8d0
lea rdx, [0x1403b2678]
lea rcx, [rbp + 0x1f0]
call fcn.140288938
nop
call fcn.14028c66c
nop
mov ecx, 0x80004005
call fcn.14000adf0
nop
test al, 4
je 0x140088f65
lea rbx, str.ios_base::badbit_set
jmp 0x140088f7a
test sil, al
lea rbx, str.ios_base::failbit_set
lea rax, str.ios_base::eofbit_set
cmove rbx, rax
mov edx, 1
lea rcx, [rbp + 0x1e0]
call fcn.1400147b0
mov r8, rax
mov rdx, rbx
lea rcx, [rbp + 0x218]
call fcn.14000e8d0
lea rdx, [0x1403b2678]
lea rcx, [rbp + 0x218]
call fcn.140288938
int3