Function at 0x5b6f62eb
Capabilities:
Delete registry value
Query or enumerate registry value
Resolve function by parsing pe exports
Set registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xa4
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xor ebx, ebx
push ebx
push ebx
push edi
call fcn.5b6f7c5d
push 8
lea eax, [esp + 0x74]
push eax
push edi
call fcn.5b6f76e7
cmp dword [esp + 0x70], 0x5367674f
jne 0x5b6f6330
call fcn.5b6f1314
mov dword [eax], 0x29
xor eax, eax
jmp 0x5b6f6aae
call fcn.5b6f5174
test al, al
je 0x5b6f631e
push 0xd0
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x14], ebx
call dword [sym.imp.msvcrt.dll_void____cdecl_operator_new_unsigned_int_]
mov esi, eax
pop ecx
cmp esi, ebx
je 0x5b6f635e
mov eax, edi
call fcn.5b6f527e
mov esi, eax
jmp 0x5b6f6360
xor esi, esi
mov eax, dword [edi]
mov dword [esp + 0x44], ebx
test al, 1
je 0x5b6f6392
push 1
lea eax, [esp + 0x48]
push eax
call dword [0x5b72559c]
cmp esi, ebx
je 0x5b6f6380
lea eax, [esi + 8]
jmp 0x5b6f6382
xor eax, eax
mov ecx, dword [esp + 0x44]
mov edx, dword [ecx]
push eax
push 0x5b720f9c
push ecx
call dword [edx + 0x6c]
cmp byte [0x5b72fe48], bl
jne 0x5b6f63d8
push ebx
push ebx
push ebx
push 0x5b7202a4
push 0x5b7202cc
push 0x80000001
call dword [sym.imp.shlwapi.dll_SHGetValueA]
test eax, eax
jne 0x5b6f63bf
mov byte [0x5b72fe48], 1
jmp 0x5b6f63d8
push ebx
push ebx
push 1
push 0x5b7202a4
push 0x5b7202cc
push 0x80000001
call dword [sym.imp.shlwapi.dll_SHSetValueA]
lea eax, [esp + 0x34]
push eax
push dword [esp + 0x48]
push esi
call dword [0x5b725460]
mov dword [esp + 0x14], eax
cmp byte [0x5b72fe48], bl
jne 0x5b6f6410
push 0x5b7202a4
push 0x5b7202cc
push 0x80000001
mov byte [0x5b72fe48], 1
call dword [sym.imp.shlwapi.dll_SHDeleteValueA]
mov eax, dword [esp + 0x44]
cmp eax, ebx
je 0x5b6f641e
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp dword [esp + 0x14], ebx
jne 0x5b6f65ba
mov eax, dword [esp + 0x34]
lea edx, [esp + 0x14]
push edx
mov dword [esi + 0x18], eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
push 0xfffffffffffffffd
push eax
call dword [ecx + 0xc]
test eax, eax
js 0x5b6f6a8b
cmp dword [0x5b72511c], ebx
jne 0x5b6f6469
mov eax, dword [esp + 0x34]
mov ecx, dword [eax]
lea edx, [esp + 0x14]
push edx
push 0xfffffffffffffffc
push eax
call dword [ecx + 0xc]
test eax, eax
jns 0x5b6f6a8b
mov eax, dword [edi]
and dword [ebp + 0xc], 0x3f24010c
and eax, 0x100000
or dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
push esi
mov dword [esi + 0x14], eax
call fcn.5b6f5400
test eax, eax
js 0x5b6f65ba
cmp dword [esp + 0x10], ebx
je 0x5b6f64dc
xor eax, eax
lea edi, [esp + 0x98]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
push 0x14
pop eax
mov word [esp + 0x98], ax
mov eax, dword [esp + 0x10]
cdq
mov dword [esp + 0xa4], edx
lea edx, [esp + 0x98]
push edx
mov dword [esp + 0xa4], eax
mov eax, dword [esi + 0x18]
mov ecx, dword [eax]
push 0x5b72137c
push eax
call dword [ecx + 0x20]
mov edi, dword [ebp + 8]
mov dword [esp + 0x14], eax
push 1
mov dword [esi + 0x1c], ebx
mov byte [esi + 0x24], bl
call fcn.5b6f54d5
cmp dword [esi + 0x1c], 0xffffffff
jne 0x5b6f650f
mov dword [esp + 0x38], ebx
cmp dword [esp + 0x38], 0x96
jge 0x5b6f650f
push 0x14
call dword [sym.imp.kernel32.dll_Sleep]
inc dword [esp + 0x38]
cmp dword [esi + 0x1c], 0xffffffff
je 0x5b6f64f3
cmp dword [esi + 0x50], ebx
jne 0x5b6f65d1
cmp dword [esi + 0x1c], 0xc00d6d60
jne 0x5b6f65c7
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 5
jge 0x5b6f65c7
cmp dword [esp + 0x74], 0x70797466
jne 0x5b6f6563
add dword [esp + 0x10], 0x71610
mov eax, dword [esi + 0x18]
cmp eax, ebx
je 0x5b6f6553
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push ebx
push ebx
push edi
mov dword [esi + 0x18], ebx
call fcn.5b6f7c5d
jmp 0x5b6f6360
push ebx
push ebx
push edi
call fcn.5b6f7c5d
push 6
lea eax, [esp + 0x24]
push eax
push edi
call fcn.5b6f76e7
cmp byte [esp + 0x20], 0xff
jne 0x5b6f65c7
mov al, byte [esp + 0x21]
and al, 0xf6
cmp al, 0xf0
jne 0x5b6f65c7
mov al, byte [esp + 0x22]
and al, 0x3c
cmp al, 0x2c
ja 0x5b6f65c7
movzx eax, byte [esp + 0x23]
movzx ecx, byte [esp + 0x24]
and eax, 3
shl eax, 8
or eax, ecx
movzx ecx, byte [esp + 0x25]
shl eax, 3
shr ecx, 5
or eax, ecx
add dword [edi + 0x20], eax
adc dword [edi + 0x24], ebx
jmp 0x5b6f6546
mov dword [esp + 0x14], 0x29
jmp 0x5b6f6a93
or dword [esp + 0x14], 0xffffffff
jmp 0x5b6f6a93
cmp dword [esp + 0x10], ebx
je 0x5b6f65f9
mov ecx, dword [esi + 0x74]
mov eax, dword [esi + 0x70]
cmp ecx, ebx
jg 0x5b6f65f2
jl 0x5b6f65e7
cmp eax, ebx
jae 0x5b6f65f2
mov eax, dword [esp + 0x10]
cdq
mov dword [esp + 0x3c], edx
jmp 0x5b6f65f6
mov dword [esp + 0x3c], ecx
mov dword [esi + 0x5c], eax
mov eax, dword [esi + 0x14]
test eax, 0x100
jne 0x5b6f6621
mov ecx, dword [esi + 0x50]
movzx ecx, word [ecx + 0xe]
cmp ecx, 8
jne 0x5b6f6617
or eax, 1
mov dword [esi + 0x14], eax
jmp 0x5b6f6621
cmp ecx, 0x10
je 0x5b6f6621
cmp ecx, 0x18
jne 0x5b6f65ba
mov eax, dword [esi + 0x50]
movzx ecx, word [eax + 2]
push 0x5b720b44
push esi
push fcn.5b6f61c0
push dword [esi + 0x14]
push ecx
push dword [eax + 4]
call dword [0x5b720b88]
mov dword [esp + 0x38], eax
cmp eax, ebx
jne 0x5b6f665b
mov eax, esi
call fcn.5b6f5329
push esi
call sub.msvcrt.dll_free
pop ecx
jmp 0x5b6f6329
mov eax, dword [esp + 0x38]
lea edx, [esp + 0x50]
push edx
push ebx
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax]
push 0xfffffffffffffffd
push eax
call dword [ecx + 0x14]
push ebx
lea ecx, [esp + 0xb0]
push ecx
lea eax, [esi + 0x54]
push eax
push dword [esp + 0x5c]
call dword [fcn.5b725474]
mov eax, dword [esp + 0x50]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x34]
mov ecx, dword [eax]
lea edx, [esp + 0x54]
push edx
push 0x5b72138c
push 0x5b720f8c
push 0xffffffffffffffff
push eax
call dword [ecx + 0x2c]
test eax, eax
js 0x5b6f6868
mov eax, dword [esp + 0x54]
mov ecx, dword [eax]
lea edx, [esp + 0x28]
push edx
push ebx
push ebx
push ebx
push eax
mov dword [esp + 0x24], ebx
call dword [ecx + 0xc]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
lea edx, [esp + 0x78]
push edx
push eax
call dword [ecx + 0x24]
mov dword [esp + 0x20], ebx
cmp dword [esp + 0x80], ebx
jbe 0x5b6f6846
mov edi, dword [sym.imp.kernel32.dll_WideCharToMultiByte]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
lea ecx, [esp + 0x60]
push ecx
mov ecx, dword [esp + 0x88]
push dword [ecx + edx*4]
push dword [esp + 0x30]
call dword [eax + 0x1c]
cmp word [esp + 0x60], 0x1f
jne 0x5b6f6725
mov eax, dword [esp + 0x68]
cmp word [eax], bx
jne 0x5b6f6731
cmp word [esp + 0x60], 0x13
jne 0x5b6f6826
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x20]
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push dword [eax + ecx*4]
push ebx
push 0xfde9
call edi
cmp word [esp + 0x60], 0x1f
mov dword [esp + 0x48], eax
jne 0x5b6f6771
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push dword [esp + 0x7c]
push ebx
push 0xfde9
call edi
mov dword [esp + 0x18], eax
jmp 0x5b6f6779
mov dword [esp + 0x18], 0xc
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x10]
lea eax, [eax + ecx + 1]
push eax
push dword [esi + 0x58]
call fcn.5b6f1011
cmp eax, ebx
je 0x5b6f6826
mov ecx, dword [esp + 0x20]
push ebx
push ebx
push dword [esp + 0x50]
mov dword [esi + 0x58], eax
add eax, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x94]
push 0xffffffffffffffff
push dword [eax + ecx*4]
push ebx
push 0xfde9
call edi
mov eax, dword [esi + 0x58]
add eax, dword [esp + 0x48]
add eax, dword [esp + 0x10]
cmp word [esp + 0x60], 0x1f
jne 0x5b6f67ea
push ebx
push ebx
push dword [esp + 0x20]
push eax
push 0xffffffffffffffff
push dword [esp + 0x7c]
push ebx
push 0xfde9
call edi
jmp 0x5b6f6802
push dword [esp + 0x68]
push 0x5b721074
push eax
call dword [sym.imp.msvcrt.dll_sprintf]
add esp, 0xc
inc eax
mov dword [esp + 0x18], eax
mov edx, dword [esi + 0x58]
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x10]
add edx, ecx
mov byte [edx + eax - 1], 0x3d
mov edx, dword [esp + 0x18]
add edx, ecx
mov ecx, dword [esi + 0x58]
add eax, edx
mov dword [esp + 0x10], eax
mov byte [eax + ecx], bl
lea eax, [esp + 0x60]
push eax
call dword [sym.imp.ole32.dll_PropVariantClear]
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x80]
jb 0x5b6f66f4
lea eax, [esp + 0x78]
push eax
call dword [sym.imp.ole32.dll_PropVariantClear]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x54]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov edi, dword [ebp + 8]
mov eax, dword [edi]
test al, 1
je 0x5b6f6912
mov eax, dword [esi + 0x54]
mov eax, dword [eax + 8]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x50]
cmp word [eax + 0xe], 0x18
mov eax, dword [eax + 8]
jne 0x5b6f6892
push 3
xor edx, edx
pop ecx
div ecx
add eax, eax
mov dword [esi + 0x94], eax
lea eax, [esi + 0x9c]
push eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov ecx, edi
call fcn.5b6f7c7c
mov ecx, dword [edi]
mov dword [esp + 0x48], eax
test ecx, 0x100000
je 0x5b6f68c0
mov dword [esi + 0x30], eax
mov dword [esi + 0x34], ebx
cmp dword [esp + 0x74], 0x70797466
jne 0x5b6f68d1
mov eax, 0x10000
jmp 0x5b6f68d3
xor eax, eax
mov edi, dword [ebp + 8]
push eax
mov eax, dword [esp + 0x1c]
push 0x4000
push dword [esi + 0x30]
call fcn.5b6f9771
mov eax, edi
mov eax, dword [eax]
test eax, 0x100000
jne 0x5b6f68fe
push ebx
push dword [esp + 0x4c]
push edi
call fcn.5b6f7c5d
lea eax, [esi + 0x9c]
push eax
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
push 1
call fcn.5b6f54d5
push dword [esp + 0x38]
push edi
call fcn.5b6f96f2
mov eax, dword [edi + 0x7c]
cmp eax, ebx
je 0x5b6f6a76
push 0x5b721078
call fcn.5b6f993e
cmp eax, ebx
je 0x5b6f6a76
lea ecx, [esp + 0x58]
push ecx
lea ecx, [esp + 0x98]
push ecx
lea ecx, [esp + 0x98]
push ecx
lea ecx, [esp + 0x98]
push ecx
push 0x5b721084
push eax
call dword [sym.imp.msvcrt.dll_sscanf]
add esp, 0x18
cmp eax, 4
jne 0x5b6f6a76
mov eax, dword [esi + 0x14]
test eax, 0x100
je 0x5b6f697d
push 4
pop eax
jmp 0x5b6f6986
test al, 1
push 0
pop eax
sete al
inc eax
mov ecx, dword [esi + 0x50]
movzx edi, word [ecx + 2]
push ebx
imul edi, eax
push esi
call fcn.5b6f5d6b
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x5c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ebx
fild qword [esp + 0x28]
push ecx
push ecx
mov dword [esp + 0x24], edx
fmul qword [0x5b722f60]
fstp qword [esp]
push dword [esi + 0x10]
call sym.bass.dll_BASS_ChannelSeconds2Bytes
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
and eax, dword [esp + 0x1c]
cmp eax, 0xffffffff
je 0x5b6f6a1a
push dword [esp + 0x5c]
push dword [esp + 0x5c]
push ebx
push edi
call fcn.5b71eff0
mov ecx, eax
mov eax, edx
shld eax, ecx, 1
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x28], edx
cdq
add ecx, ecx
add eax, dword [esp + 0x18]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x20], eax
mov eax, edx
adc eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x4c]
jb 0x5b6f6a1a
ja 0x5b6f6a18
cmp dword [esp + 0x20], ecx
jb 0x5b6f6a1a
add edi, edi
push dword [esp + 0x5c]
push dword [esp + 0x5c]
push ebx
push edi
call fcn.5b71eff0
mov ecx, eax
mov dword [esp + 0x2c], edx
cmp edx, dword [esp + 0x1c]
ja 0x5b6f6a5c
jb 0x5b6f6a3d
cmp ecx, dword [esp + 0x18]
ja 0x5b6f6a5c
mov eax, dword [esp + 0x10]
cdq
sub ecx, eax
mov eax, dword [esp + 0x2c]
sbb eax, edx
js 0x5b6f6a52
jg 0x5b6f6a56
cmp ecx, ebx
ja 0x5b6f6a56
xor ecx, ecx
xor eax, eax
mov dword [esi + 0x68], ecx
mov dword [esi + 0x6c], eax
mov eax, dword [esp + 0x90]
imul eax, edi
mov dword [esi + 0x60], eax
cmp eax, ebx
je 0x5b6f6a76
push esi
push eax
push ebx
push ebx
call fcn.5b6f61c0
push ebx
push dword [esp + 0x3c]
call sym.bass.dll_BASS_ChannelLock
call fcn.5b6f1354
mov eax, dword [esp + 0x38]
jmp 0x5b6f6aae
mov dword [esp + 0x14], 0x11
cmp esi, ebx
je 0x5b6f6aa5
mov eax, esi
call fcn.5b6f5329
push esi
call sub.msvcrt.dll_free
pop ecx
push dword [esp + 0x14]
call fcn.5b6f1341
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8