Function at 0x100093a0
Capabilities:
Query or enumerate registry value
Read .ini file

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x9a8
mov r12d, ecx
mov r13d, edx
mov rsi, r8
lea rbx, [rsp + 0x1a0]
test byte [0x1000f080], 8
jne 0x10009840
lea rdi, [rsi + 8]
mov rcx, rsi
xor eax, eax
mov qword [rsi], 0
and rdi, 0xfffffffffffffff8
mov r9d, 1
xor r8d, r8d
xor r14d, r14d
sub rcx, rdi
lea rdx, str.SoftwareMicrosoftWindows_NTCurrentVersionDrivers32
mov qword [rsi + 0x230], 0
add ecx, 0x238
shr ecx, 3
rep stosq qword [rdi], rax
lea rax, [rsp + 0x58]
mov dword [rsi], 0x238
mov rcx, 0xffffffff80000002
mov dword [rsi + 0x14], 0x104
mov qword [rsp + 0x20], rax
call qword [sym.imp.advapi32.dll_RegOpenKeyExA]
test eax, eax
jne 0x10009550
lea rax, [rsp + 0x6b]
mov dword [rsp + 0x40], r14d
xor edx, edx
lea r15, [rsp + 0x50]
mov qword [rsp + 0x48], rax
lea rbp, [rsp + 0x66]
lea rdi, [rsp + 0x54]
mov qword [rsp + 0xa00], rsi
nop word cs:[rax + rax]
mov qword [rsp + 0x38], rdi
mov rcx, qword [rsp + 0x58]
lea esi, [rdx + 1]
mov r9, r15
mov dword [rsp + 0x50], 0xa
mov r8, rbp
mov dword [rsp + 0x54], pe_nt_image_headers64
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call qword [sym.imp.advapi32.dll_RegEnumValueA]
cmp eax, 0x103
je 0x10009538
cmp dword [rsp + 0x50], 9
jne 0x100094c9
cmp byte [rsp + 0x6a], 0x2e
je 0x100094d0
mov edx, esi
jmp 0x10009470
xor edx, edx
mov rcx, rbp
call qword [sym.imp.winmm.dll_mmioStringToFOURCCA]
mov rcx, qword [rsp + 0x48]
xor edx, edx
mov dword [rsp + 0x44], eax
call qword [sym.imp.winmm.dll_mmioStringToFOURCCA]
mov r14d, eax
test r12d, r12d
je 0x10009504
mov edx, dword [rsp + 0x44]
mov ecx, r12d
call sym.compare_fourcc
test eax, eax
jne 0x100094c9
mov edx, r14d
mov ecx, r13d
call sym.compare_fourcc
test eax, eax
je 0x10009718
mov eax, dword [rsp + 0x40]
cmp eax, r13d
je 0x10009718
add eax, 1
mov edx, esi
mov dword [rsp + 0x40], eax
jmp 0x10009470
mov r14d, dword [rsp + 0x40]
mov rsi, qword [rsp + 0xa00]
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.advapi32.dll_RegCloseKey]
lea r9, str.system.ini
mov r8d, 0x800
mov rdx, rbx
lea rcx, [0x100132b3]
call qword [sym.imp.kernel32.dll_GetPrivateProfileSectionA]
test eax, eax
jne 0x10009620
mov rax, qword [0x1000f070]
lea rdi, [0x1000f070]
lea rbx, [rax - 0x10]
cmp rax, rdi
je 0x100095f0
nop dword [rax]
test r12d, r12d
je 0x100095a3
mov edx, dword [rbx]
mov ecx, r12d
call sym.compare_fourcc
test eax, eax
jne 0x100095e3
mov edx, dword [rbx + 4]
mov ecx, r13d
call sym.compare_fourcc
test eax, eax
je 0x100095be
lea eax, [r14 + 1]
cmp r13d, r14d
mov r14d, eax
jne 0x100095e3
xor edx, edx
xor ecx, ecx
mov r9, rsi
mov r8d, 0x5002
mov qword [rsp + 0x20], 0x238
call qword [rbx + 8]
cmp rax, 0x238
je 0x10009708
mov rax, qword [rbx + 0x10]
lea rbx, [rax - 0x10]
cmp rax, rdi
jne 0x10009590
mov dword [rsi + 4], r12d
mov dword [rsi + 8], r13d
test byte [0x1000f080], 4
jne 0x10009968
xor eax, eax
add rsp, 0x9a8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp byte [rsp + 0x1a0], 0
je 0x10009575
mov rdi, qword [sym.imp.ucrtbase.dll_strlen]
jmp 0x10009653
mov rcx, rbx
call rdi
lea rbx, [rbx + rax + 1]
cmp byte [rbx], 0
je 0x10009575
cmp byte [rbx + 4], 0x2e
jne 0x10009640
cmp byte [rbx + 9], 0x3d
jne 0x10009640
xor edx, edx
mov rcx, rbx
call qword [sym.imp.winmm.dll_mmioStringToFOURCCA]
lea rcx, [rbx + 5]
xor edx, edx
mov r15d, eax
call qword [sym.imp.winmm.dll_mmioStringToFOURCCA]
mov ebp, eax
test r12d, r12d
je 0x1000968f
mov edx, r15d
mov ecx, r12d
call sym.compare_fourcc
test eax, eax
jne 0x10009640
mov edx, ebp
mov ecx, r13d
call sym.compare_fourcc
test eax, eax
je 0x10009a90
cmp r13d, r14d
je 0x10009a90
add r14d, 1
jmp 0x10009640
mov byte [rdx], 0x22
test eax, eax
jle 0x10009e14
mov r14d, 0x2e2e
mov byte [rdx + 3], 0x2e
lea rax, [rdx + 4]
mov word [rdx + 1], r14w
mov byte [rax], 0
lea rcx, [rsp + 0x70]
call sym.__wine_dbg_strdup
mov qword [rsp + 0x28], rsi
lea r9, str.Returning_codec__s__driver__s._n
lea r8, [0x10013a80]
mov ecx, 3
mov qword [rsp + 0x20], rax
lea rdx, [0x1000f080]
call sym.wine_dbg_log.constprop.0_2
nop dword [rax]
mov eax, 1
jmp 0x10009607
mov rsi, qword [rsp + 0xa00]
mov eax, dword [rsp + 0x44]
xor edx, edx
xor ecx, ecx
mov r9d, 0xffffffff
mov r8, rbx
mov dword [rsi + 4], eax
add rsi, 0x138
mov dword [rsi - 0x130], r14d
mov dword [rsp + 0x28], pe_nt_image_headers64
mov qword [rsp + 0x20], rsi
call qword [sym.imp.kernel32.dll_MultiByteToWideChar]
test byte [0x1000f080], 8
je 0x10009708
mov rax, rbx
shr rax, 0x10
je 0x10009f6f
mov rdx, 0xffffffffffffffff
mov rcx, rbx
lea rsi, str._invalid_
call qword [sym.imp.kernel32.dll_IsBadStringPtrA]
test eax, eax
jne 0x10009bd4
cmp byte [rsp + 0x1a0], 0
je 0x10009ded
xor eax, eax
nop word [rax + rax]
mov ecx, eax
add rax, 1
cmp byte [rbx + rax], 0
jne 0x100097a0
mov byte [rsp + 0x70], 0x22
lea rdx, [rsp + 0x71]
lea r8, [rsp + 0x193]
lea r10, str.0123456789abcdefICInfo
jmp 0x10009806
cmp al, 9
je 0x10009cd8
cmp al, 0xa
jne 0x10009cf8
mov r13d, 0x6e5c
add rdx, 2
mov word [rdx - 2], r13w
nop
lea eax, [rcx - 1]
cmp rdx, r8
ja 0x10009ba8
test ecx, ecx
jle 0x10009ba8
mov ecx, eax
movzx eax, byte [rbx]
add rbx, 1
cmp al, 0xd
je 0x10009cc0
jle 0x100097d0
cmp al, 0x22
je 0x10009d30
cmp al, 0x5c
jne 0x10009cea
mov r11d, 0x5c5c
add rdx, 2
mov word [rdx - 2], r11w
jmp 0x100097f0
mov ebp, edx
mov r14d, edx
mov r15d, edx
mov dword [rsp + 0x1a0], edx
shr ebp, 8
shr r14d, 0x10
lea rdi, [0x1001321b]
shr r15d, 0x18
test edx, edx
je 0x100098aa
mov rdi, qword [sym.imp.ucrtbase.dll_isprint]
movsx ecx, dl
call rdi
test eax, eax
je 0x10009890
movsx ecx, bpl
call rdi
test eax, eax
je 0x10009890
movsx ecx, r14b
call rdi
test eax, eax
jne 0x10009dc8
nop dword [rax]
mov edx, r13d
lea rcx, str.0x_08x
lea rbx, [rsp + 0x1a0]
call sym.wine_dbg_sprintf_1
mov rdi, rax
mov eax, r12d
mov ebp, r12d
mov r15d, r12d
mov dword [rsp + 0x1a0], r12d
shr eax, 0x18
shr ebp, 8
mov dword [rsp + 0x40], eax
shr r15d, 0x10
lea rax, [0x1001321b]
test r12d, r12d
je 0x1000992f
mov r14, qword [sym.imp.ucrtbase.dll_isprint]
movsx ecx, r12b
call r14
test eax, eax
je 0x10009920
movsx ecx, bpl
call r14
test eax, eax
je 0x10009920
movsx ecx, r15b
call r14
test eax, eax
je 0x10009920
movsx ecx, byte [rsp + 0x40]
call r14
test eax, eax
je 0x10009920
mov rdx, rbx
lea rcx, str._.4s
call sym.wine_dbg_sprintf_1
jmp 0x1000992f
mov edx, r12d
lea rcx, str.0x_08x
call sym.wine_dbg_sprintf_1
mov qword [rsp + 0x30], rsi
lea r9, str.type__s__handler__s__info__p._n
lea r8, [0x10013a80]
mov ecx, 3
mov qword [rsp + 0x28], rdi
lea rdx, [0x1000f080]
mov qword [rsp + 0x20], rax
call sym.wine_dbg_log.constprop.0_2
jmp 0x100093d1
mov esi, r13d
mov edi, r13d
mov ebp, r13d
mov dword [rsp + 0x70], r13d
shr esi, 8
shr edi, 0x10
lea rbx, [0x1001321b]
shr ebp, 0x18
test r13d, r13d
je 0x100099e2
mov rbx, qword [sym.imp.ucrtbase.dll_isprint]
movsx ecx, r13b
call rbx
test eax, eax
je 0x100099d0
movsx ecx, sil
call rbx
test eax, eax
je 0x100099d0
movsx ecx, dil
call rbx
test eax, eax
je 0x100099d0
movsx ecx, bpl
call rbx
test eax, eax
je 0x100099d0
lea rdx, [rsp + 0x70]
lea rcx, str._.4s
call sym.wine_dbg_sprintf_1
mov rbx, rax
jmp 0x100099e2
mov edx, r13d
lea rcx, str.0x_08x
call sym.wine_dbg_sprintf_1
mov rbx, rax
mov esi, r12d
mov ebp, r12d
mov r13d, r12d
mov dword [rsp + 0x70], r12d
shr esi, 8
shr ebp, 0x10
lea rax, [0x1001321b]
shr r13d, 0x18
test r12d, r12d
je 0x10009a5f
mov rdi, qword [sym.imp.ucrtbase.dll_isprint]
movsx ecx, r12b
call rdi
test eax, eax
je 0x10009a50
movsx ecx, sil
call rdi
test eax, eax
je 0x10009a50
movsx ecx, bpl
call rdi
test eax, eax
je 0x10009a50
movsx ecx, r13b
call rdi
test eax, eax
je 0x10009a50
lea rdx, [rsp + 0x70]
lea rcx, str._.4s
call sym.wine_dbg_sprintf_1
jmp 0x10009a5f
mov edx, r12d
lea rcx, str.0x_08x
call sym.wine_dbg_sprintf_1
mov qword [rsp + 0x28], rbx
lea r9, str.No_driver_found_for_codec__s._s._n
lea r8, [0x10013a80]
mov ecx, 2
mov qword [rsp + 0x20], rax
lea rdx, [0x1000f080]
call sym.wine_dbg_log.constprop.0_2
jmp 0x10009605
mov dword [rsi + 4], r15d
lea rdi, [rbx + 0xa]
xor edx, edx
xor ecx, ecx
mov dword [rsi + 8], ebp
add rsi, 0x138
mov r9d, 0xffffffff
mov r8, rdi
mov dword [rsp + 0x28], pe_nt_image_headers64
mov qword [rsp + 0x20], rsi
call qword [sym.imp.kernel32.dll_MultiByteToWideChar]
test byte [0x1000f080], 8
je 0x10009708
mov rax, rdi
shr rax, 0x10
je 0x1000a0a1
mov rdx, 0xffffffffffffffff
mov rcx, rdi
lea rsi, str._invalid_
call qword [sym.imp.kernel32.dll_IsBadStringPtrA]
test eax, eax
jne 0x10009e49
cmp byte [rbx + 0xa], 0
je 0x1000a0ce
xor eax, eax
nop word [rax + rax]
mov edx, eax
add rax, 1
cmp byte [rbx + rax + 0xa], 0
jne 0x10009b10
mov byte [rsp + 0x70], 0x22
lea rcx, [rsp + 0x71]
lea r10, str.0123456789abcdefICInfo
lea r8, [rsp + 0x193]
jmp 0x10009b76
cmp al, 9
je 0x1000a07b
cmp al, 0xa
jne 0x1000a036
mov r13d, 0x6e5c
add rcx, 2
mov word [rcx - 2], r13w
nop
lea eax, [rdx - 1]
test edx, edx
jle 0x10009e1d
cmp rcx, r8
ja 0x10009e1d
mov edx, eax
movzx eax, byte [rdi]
add rdi, 1
cmp al, 0xd
je 0x10009fec
jle 0x10009b40
cmp al, 0x22
je 0x1000a069
cmp al, 0x5c
jne 0x1000a028
mov r11d, 0x5c5c
add rcx, 2
mov word [rcx - 2], r11w
jmp 0x10009b60
mov byte [rdx], 0x22
test eax, eax
jle 0x10009dfc
mov ecx, 0x2e2e
mov byte [rdx + 3], 0x2e
lea rax, [rdx + 4]
mov word [rdx + 1], cx
mov byte [rax], 0
lea rcx, [rsp + 0x70]
call sym.__wine_dbg_strdup
mov rsi, rax
mov rax, rbp
shr rax, 0x10
je 0x10009f86
mov rdx, 0xffffffffffffffff
mov rcx, rbp
call qword [sym.imp.kernel32.dll_IsBadStringPtrA]
mov r8d, eax
lea rax, str._invalid_
test r8d, r8d
jne 0x100096db
cmp byte [rsp + 0x66], 0
je 0x10009e05
xor eax, eax
nop dword [rax]
mov ecx, eax
add rax, 1
cmp byte [rbp + rax], 0
jne 0x10009c18
mov byte [rsp + 0x70], 0x22
lea rdx, [rsp + 0x71]
lea r10, str.0123456789abcdefICInfo
lea r8, [rsp + 0x193]
jmp 0x10009c76
cmp al, 9
je 0x10009d48
cmp al, 0xa
jne 0x10009d64
mov eax, 0x6e5c
add rdx, 2
mov word [rdx - 2], ax
nop dword [rax]
lea eax, [rcx - 1]
test ecx, ecx
jle 0x100096b0
cmp rdx, r8
ja 0x100096b0
mov ecx, eax
movzx eax, byte [rbp]
add rbp, 1
cmp al, 0xd
je 0x10009ca8
jle 0x10009c40
cmp al, 0x22
je 0x10009da0
cmp al, 0x5c
jne 0x10009d5a
mov eax, 0x5c5c
add rdx, 2
mov word [rdx - 2], ax
jmp 0x10009c60
mov eax, 0x725c
add rdx, 2
mov word [rdx - 2], ax
jmp 0x10009c60
mov r12d, 0x725c
add rdx, 2
mov word [rdx - 2], r12w
jmp 0x100097f0
mov edi, 0x745c
add rdx, 2
mov word [rdx - 2], di
jmp 0x100097f0
lea r9d, [rax - 0x20]
cmp r9b, 0x5e
jbe 0x10009dbd
mov r9d, 0x785c
add rdx, 4
mov word [rdx - 4], r9w
mov r9d, eax
and eax, 0xf
shr r9b, 4
movzx eax, byte [r10 + rax]
and r9d, 0xf
movzx r9d, byte [r10 + r9]
mov byte [rdx - 1], al
mov byte [rdx - 2], r9b
jmp 0x100097f0
mov esi, 0x225c
add rdx, 2
mov word [rdx - 2], si
jmp 0x100097f0
mov eax, 0x745c
add rdx, 2
mov word [rdx - 2], ax
jmp 0x10009c60
lea r9d, [rax - 0x20]
cmp r9b, 0x5e
jbe 0x10009db2
mov r9d, eax
and eax, 0xf
mov r15d, 0x785c
add rdx, 4
shr r9b, 4
movzx eax, byte [r10 + rax]
mov word [rdx - 4], r15w
and r9d, 0xf
movzx r9d, byte [r10 + r9]
mov byte [rdx - 1], al
mov byte [rdx - 2], r9b
jmp 0x10009c60
mov eax, 0x225c
add rdx, 2
mov word [rdx - 2], ax
jmp 0x10009c60
mov byte [rdx], al
add rdx, 1
jmp 0x10009c60
mov byte [rdx], al
add rdx, 1
jmp 0x100097f0
movsx ecx, r15b
call rdi
test eax, eax
je 0x10009890
mov rdx, rbx
lea rcx, str._.4s
call sym.wine_dbg_sprintf_1
mov rdi, rax
jmp 0x100098aa
mov eax, 0x2222
lea rdx, [rsp + 0x71]
mov word [rsp + 0x70], ax
lea rax, [rdx + 1]
jmp 0x10009bc4
mov edx, 0x2222
mov word [rsp + 0x70], dx
lea rdx, [rsp + 0x71]
lea rax, [rdx + 1]
jmp 0x100096ce
mov byte [rcx], 0x22
test eax, eax
jle 0x1000a0dd
mov edx, 0x2e2e
mov byte [rcx + 3], 0x2e
lea rax, [rcx + 4]
mov word [rcx + 1], dx
mov byte [rax], 0
lea rcx, [rsp + 0x70]
call sym.__wine_dbg_strdup
mov rsi, rax
mov rax, rbx
shr rax, 0x10
je 0x1000a08d
mov edx, 9
mov rcx, rbx
call qword [sym.imp.kernel32.dll_IsBadStringPtrA]
mov r8d, eax
lea rax, str._invalid_
test r8d, r8d
jne 0x10009f3c
mov byte [rsp + 0x70], 0x22
mov rdx, rbx
lea rcx, [rsp + 0x71]
lea rdi, str.0123456789abcdefICInfo
mov r10d, 8
mov r9d, 9
lea r11, [rsp + 0x193]
jmp 0x10009edf
cmp al, 9
je 0x1000a000
cmp al, 0xa
jne 0x10009fa8
mov eax, 0x6e5c
add rcx, 2
mov word [rcx - 2], ax
nop dword [rax]
mov eax, r10d
mov r8d, r9d
sub eax, edx
sub r8d, edx
add eax, ebx
add r8d, ebx
je 0x10009f11
cmp rcx, r11
ja 0x10009f11
movzx eax, byte [rdx]
add rdx, 1
cmp al, 0xd
je 0x1000a014
jle 0x10009ea8
cmp al, 0x22
je 0x10009fd8
cmp al, 0x5c
jne 0x10009f9a
mov r12d, 0x5c5c
add rcx, 2
mov word [rcx - 2], r12w
jmp 0x10009ec8
mov byte [rcx], 0x22
test eax, eax
jle 0x1000a0e6
mov r8d, 0x2e2e
mov byte [rcx + 3], 0x2e
lea rax, [rcx + 4]
mov word [rcx + 1], r8w
mov byte [rax], 0
lea rcx, [rsp + 0x70]
call sym.__wine_dbg_strdup
mov qword [rsp + 0x28], rsi
lea r9, str.Returning_codec__s__driver__s._n
lea r8, [0x10013a80]
mov ecx, 3
mov qword [rsp + 0x20], rax
lea rdx, [0x1000f080]
call sym.wine_dbg_log.constprop.0_2
mov eax, 1
jmp 0x10009607
movzx edx, bx
lea rcx, str._04x
call sym.wine_dbg_sprintf_1
mov rsi, rax
jmp 0x10009bd4
movzx edx, bp
lea rcx, str._04x
call sym.wine_dbg_sprintf_1
jmp 0x100096db
lea r8d, [rax - 0x20]
cmp r8b, 0x5e
jbe 0x1000a0b8
mov r8d, eax
and eax, 0xf
mov ebp, 0x785c
add rcx, 4
shr r8b, 4
movzx eax, byte [rdi + rax]
mov word [rcx - 4], bp
and r8d, 0xf
movzx r8d, byte [rdi + r8]
mov byte [rcx - 1], al
mov byte [rcx - 2], r8b
jmp 0x10009ec8
mov r13d, 0x225c
add rcx, 2
mov word [rcx - 2], r13w
jmp 0x10009ec8
mov r12d, 0x725c
add rcx, 2
mov word [rcx - 2], r12w
jmp 0x10009b60
mov r14d, 0x745c
add rcx, 2
mov word [rcx - 2], r14w
jmp 0x10009ec8
mov r15d, 0x725c
add rcx, 2
mov word [rcx - 2], r15w
jmp 0x10009ec8
lea r9d, [rax - 0x20]
cmp r9b, 0x5e
jbe 0x1000a0c3
mov r9d, 0x785c
add rcx, 4
mov word [rcx - 4], r9w
mov r9d, eax
and eax, 0xf
shr r9b, 4
movzx eax, byte [r10 + rax]
and r9d, 0xf
movzx r9d, byte [r10 + r9]
mov byte [rcx - 1], al
mov byte [rcx - 2], r9b
jmp 0x10009b60
mov esi, 0x225c
add rcx, 2
mov word [rcx - 2], si
jmp 0x10009b60
mov ebp, 0x745c
add rcx, 2
mov word [rcx - 2], bp
jmp 0x10009b60
movzx edx, bx
lea rcx, str._04x
call sym.wine_dbg_sprintf_1
jmp 0x10009f3c
movzx edx, di
lea rcx, str._04x
call sym.wine_dbg_sprintf_1
mov rsi, rax
jmp 0x10009e49
mov byte [rcx], al
add rcx, 1
jmp 0x10009ec8
mov byte [rcx], al
add rcx, 1
jmp 0x10009b60
mov ecx, 0x2222
mov word [rsp + 0x70], cx
lea rcx, [rsp + 0x71]
lea rax, [rcx + 1]
jmp 0x10009e39
lea rax, [rcx + 1]
jmp 0x10009f2f