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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
lea eax, [ebp - 0x80c]
push ebx
sub esp, 0x974
mov dword [ebp - 0x954], eax
test byte [0x1000f05c], 8
jne 0x10004ad0
mov edi, dword [ebp + 0x10]
xor eax, eax
mov ecx, 0x8e
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x10]
xor edi, edi
mov dword [eax], 0x238
mov dword [eax + 0x14], 0x104
lea eax, [ebp - 0x950]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], str.SoftwareMicrosoftWindows_NTCurrentVersionDrivers32
mov dword [esp], 0x80000002
call dword [sym.imp.advapi32.dll_RegOpenKeyExA]
sub esp, 0x14
test eax, eax
jne 0x10004898
mov dword [ebp - 0x95c], edi
mov edi, dword [ebp - 0x954]
lea esi, [ebp - 0x942]
nop
mov dword [esp + 4], eax
lea ecx, [ebp - 0x948]
lea ebx, [eax + 1]
mov eax, dword [ebp - 0x950]
mov dword [esp + 0x1c], ecx
lea ecx, [ebp - 0x94c]
mov dword [ebp - 0x94c], 0xa
mov dword [ebp - 0x948], pe_nt_image_headers32
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], ecx
mov dword [esp + 8], esi
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegEnumValueA]
sub esp, 0x20
cmp eax, 0x103
je 0x10004880
cmp dword [ebp - 0x94c], 9
jne 0x100047e6
cmp byte [ebp - 0x93e], 0x2e
je 0x100047f0
mov eax, ebx
jmp 0x10004770
mov dword [esp + 4], 0
mov dword [esp], esi
call dword [sym.imp.winmm.dll_mmioStringToFOURCCA]
sub esp, 8
mov dword [ebp - 0x960], eax
lea eax, [ebp - 0x93d]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.winmm.dll_mmioStringToFOURCCA]
mov dword [ebp - 0x958], eax
mov eax, dword [ebp + 8]
sub esp, 8
test eax, eax
je 0x10004843
mov edx, dword [ebp - 0x960]
mov eax, dword [ebp + 8]
call sym._compare_fourcc
test eax, eax
jne 0x100047e6
mov edx, dword [ebp - 0x958]
mov eax, dword [ebp + 0xc]
call sym._compare_fourcc
test eax, eax
je 0x10004a60
mov eax, dword [ebp - 0x95c]
cmp eax, dword [ebp + 0xc]
je 0x10004a60
inc eax
mov dword [ebp - 0x95c], eax
mov eax, ebx
jmp 0x10004770
mov eax, dword [ebp - 0x950]
mov edi, dword [ebp - 0x95c]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
mov esi, dword [ebp - 0x954]
mov dword [esp + 0xc], str.system.ini
mov dword [esp + 8], 0x800
mov dword [esp + 4], esi
mov dword [esp], 0x10012e67
call dword [sym.imp.kernel32.dll_GetPrivateProfileSectionA]
sub esp, 0x10
test eax, eax
jne 0x10004990
mov eax, dword [0x1000f140]
lea ebx, [eax - 0xc]
cmp eax, 0x1000f140
je 0x10004966
mov dword [ebp - 0x954], edi
mov esi, dword [ebp + 8]
mov edi, ebx
mov ebx, dword [ebp + 0xc]
lea esi, cs:[esi]
test esi, esi
je 0x10004901
mov edx, dword [edi]
mov eax, esi
call sym._compare_fourcc
test eax, eax
jne 0x10004959
mov edx, dword [edi + 4]
mov eax, ebx
call sym._compare_fourcc
test eax, eax
je 0x10004922
mov edx, dword [ebp - 0x954]
lea eax, [edx + 1]
mov dword [ebp - 0x954], eax
cmp ebx, edx
jne 0x10004959
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x10], 0x238
mov dword [esp + 8], 0x5002
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [edi + 8]
sub esp, 0x14
cmp eax, 0x238
je 0x10004ac0
mov eax, dword [edi + 0xc]
lea edi, [eax - 0xc]
cmp eax, 0x1000f140
jne 0x100048f0
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
mov dword [eax + 4], esi
mov esi, dword [ebp + 0xc]
mov dword [eax + 8], esi
test byte [0x1000f05c], 4
jne 0x10004d30
xor eax, eax
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0xc
cmp byte [ebp - 0x80c], 0
je 0x100048ca
mov eax, esi
mov ebx, dword [sym.imp.ucrtbase.dll_strlen]
mov esi, edi
mov edi, eax
jmp 0x100049c2
mov dword [esp], edi
call ebx
lea edi, [edi + eax + 1]
cmp byte [edi], 0
je 0x10004a50
cmp byte [edi + 4], 0x2e
jne 0x100049b0
cmp byte [edi + 9], 0x3d
jne 0x100049b0
mov dword [esp + 4], 0
mov dword [esp], edi
call dword [sym.imp.winmm.dll_mmioStringToFOURCCA]
sub esp, 8
mov dword [ebp - 0x958], eax
lea eax, [edi + 5]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.winmm.dll_mmioStringToFOURCCA]
mov dword [ebp - 0x954], eax
mov eax, dword [ebp + 8]
sub esp, 8
test eax, eax
je 0x10004a1e
mov edx, dword [ebp - 0x958]
mov eax, dword [ebp + 8]
call sym._compare_fourcc
test eax, eax
jne 0x100049b0
mov edx, dword [ebp - 0x954]
mov eax, dword [ebp + 0xc]
call sym._compare_fourcc
test eax, eax
je 0x10004ea8
cmp dword [ebp + 0xc], esi
je 0x10004ea8
mov dword [esp], edi
inc esi
call ebx
lea edi, [edi + eax + 1]
cmp byte [edi], 0
jne 0x100049c2
mov edi, esi
jmp 0x100048ca
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp - 0x960]
mov dword [eax + 4], ebx
mov ebx, dword [ebp - 0x958]
add eax, 0x138
mov dword [eax - 0x130], ebx
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x954]
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_MultiByteToWideChar]
sub esp, 0x18
test byte [0x1000f05c], 8
jne 0x10004c40
mov eax, 1
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0xc
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp + 0xc]
shr edx, 8
shr eax, 0x18
mov dword [ebp - 0x958], edx
mov edx, dword [ebp + 0xc]
shr edi, 0x10
mov dword [ebp - 0x80c], esi
mov esi, 0x10012dd3
mov dword [ebp - 0x95c], eax
test edx, edx
je 0x10004b61
movsx eax, byte [ebp + 0xc]
mov ebx, dword [sym.imp.ucrtbase.dll_isprint]
mov dword [esp], eax
call ebx
test eax, eax
je 0x10004b40
mov edx, dword [ebp - 0x958]
movsx edx, dl
mov dword [esp], edx
call ebx
test eax, eax
je 0x10004b40
mov eax, edi
movsx edi, al
mov dword [esp], edi
call ebx
test eax, eax
jne 0x10005261
lea esi, [esi]
mov eax, dword [ebp + 0xc]
mov dword [esp], str.0x_08x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf_1
mov esi, eax
lea eax, [ebp - 0x80c]
mov dword [ebp - 0x954], eax
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 8]
mov ebx, dword [ebp + 8]
shr eax, 0x18
shr edx, 8
mov dword [ebp - 0x95c], eax
shr edi, 0x10
mov eax, 0x10012dd3
mov dword [ebp - 0x958], edx
mov dword [ebp - 0x80c], ebx
test ebx, ebx
je 0x10004c03
movsx eax, byte [ebp + 8]
mov ebx, dword [sym.imp.ucrtbase.dll_isprint]
mov dword [esp], eax
call ebx
test eax, eax
je 0x10004bf0
mov edx, dword [ebp - 0x958]
movsx edx, dl
mov dword [esp], edx
call ebx
test eax, eax
je 0x10004bf0
mov eax, edi
movsx edi, al
mov dword [esp], edi
call ebx
test eax, eax
je 0x10004bf0
movsx eax, byte [ebp - 0x95c]
mov dword [esp], eax
call ebx
test eax, eax
je 0x10004bf0
mov eax, dword [ebp - 0x954]
mov dword [esp], str._.4s
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf_1
jmp 0x10004c03
mov eax, dword [ebp + 8]
mov dword [esp], str.0x_08x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf_1
mov ebx, dword [ebp + 0x10]
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0xc], str.type__s__handler__s__info__p._n
mov dword [esp + 8], str.ICInfo
mov dword [esp + 4], 0x1000f05c
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_2
jmp 0x10004705
mov eax, dword [ebp - 0x954]
shr eax, 0x10
je 0x10005345
mov ebx, dword [ebp - 0x954]
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrA]
mov dword [ebp - 0x958], str._invalid_
sub esp, 8
mov ecx, eax
test eax, eax
jne 0x1000500c
movzx eax, byte [ebp - 0x80c]
test al, al
je 0x100052ac
lea esi, [esi]
mov edx, ecx
lea ecx, [ecx + 1]
cmp byte [ebx + edx + 1], 0
jne 0x10004c90
mov byte [ebp - 0x938], 0x22
test ecx, ecx
jle 0x10004fd2
lea ecx, [ebp - 0x937]
jmp 0x10004cfc
cmp al, 9
je 0x100051d8
cmp al, 0xa
jne 0x100051f3
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea esi, [esi]
lea edi, [edx - 1]
test edx, edx
jle 0x10004fda
lea eax, [ebp - 0x815]
cmp ecx, eax
ja 0x10004fda
mov eax, dword [ebp - 0x954]
mov edx, edi
movzx eax, byte [eax]
inc dword [ebp - 0x954]
cmp al, 0xd
je 0x100051c0
jle 0x10004cb8
cmp al, 0x22
je 0x10005228
cmp al, 0x5c
jne 0x100051e9
mov edi, 0x5c5c
add ecx, 2
mov word [ecx - 2], di
jmp 0x10004cd8
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp + 0xc]
mov ebx, 0x10012dd3
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp + 0xc]
shr edx, 8
shr esi, 0x10
mov dword [ebp - 0x954], edx
shr edi, 0x18
mov dword [ebp - 0x938], eax
test eax, eax
je 0x10004dcd
movsx eax, byte [ebp + 0xc]
mov ebx, dword [sym.imp.ucrtbase.dll_isprint]
mov dword [esp], eax
call ebx
test eax, eax
je 0x10004db8
mov edx, dword [ebp - 0x954]
movsx edx, dl
mov dword [esp], edx
call ebx
test eax, eax
je 0x10004db8
mov eax, esi
movsx esi, al
mov dword [esp], esi
call ebx
test eax, eax
je 0x10004db8
mov eax, edi
movsx edi, al
mov dword [esp], edi
call ebx
test eax, eax
je 0x10004db8
lea eax, [ebp - 0x938]
mov dword [esp], str._.4s
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf_1
mov ebx, eax
jmp 0x10004dcd
mov eax, dword [ebp + 0xc]
mov dword [esp], str.0x_08x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf_1
mov ebx, eax
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 8]
shr eax, 0x18
shr edx, 8
mov dword [ebp - 0x958], eax
shr edi, 0x10
mov eax, 0x10012dd3
mov dword [ebp - 0x954], edx
mov dword [ebp - 0x938], esi
test esi, esi
je 0x10004e73
movsx eax, byte [ebp + 8]
mov esi, dword [sym.imp.ucrtbase.dll_isprint]
mov dword [esp], eax
call esi
test eax, eax
je 0x10004e60
mov edx, dword [ebp - 0x954]
movsx edx, dl
mov dword [esp], edx
call esi
test eax, eax
je 0x10004e60
mov eax, edi
movsx edi, al
mov dword [esp], edi
call esi
test eax, eax
je 0x10004e60
movsx eax, byte [ebp - 0x958]
mov dword [esp], eax
call esi
test eax, eax
je 0x10004e60
lea eax, [ebp - 0x938]
mov dword [esp], str._.4s
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf_1
jmp 0x10004e73
mov eax, dword [ebp + 8]
mov dword [esp], str.0x_08x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf_1
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.No_driver_found_for_codec__s._s._n
mov dword [esp + 8], str.ICInfo
mov dword [esp + 4], 0x1000f05c
mov dword [esp], 2
call sym._wine_dbg_log.constprop.0_2
jmp 0x10004982
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp - 0x958]
mov esi, edi
mov dword [eax + 4], ebx
mov ebx, dword [ebp - 0x954]
add eax, 0x138
mov dword [eax - 0x130], ebx
lea ebx, [edi + 0xa]
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_MultiByteToWideChar]
sub esp, 0x18
test byte [0x1000f05c], 8
je 0x10004ac0
mov edx, 0xffffffff
mov eax, ebx
call sym._wine_dbgstr_an_1
mov edi, eax
mov eax, esi
shr eax, 0x10
je 0x100053d4
mov dword [esp + 4], 9
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrA]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x100052f7
lea ebx, [ebp - 0x815]
mov dword [ebp - 0x958], edi
mov ecx, 8
lea edx, [ebp - 0x937]
mov byte [ebp - 0x938], 0x22
mov dword [ebp - 0x954], ebx
jmp 0x10004fa6
cmp al, 9
je 0x10005378
cmp al, 0xa
jne 0x10005393
mov eax, 0x6e5c
add edx, 2
mov word [edx - 2], ax
lea esi, [esi]
dec ecx
cmp edx, dword [ebp - 0x954]
ja 0x100052c6
cmp ecx, 0xffffffff
je 0x100052c6
movzx eax, byte [esi]
inc esi
cmp al, 0xd
je 0x10005367
jle 0x10004f70
cmp al, 0x22
je 0x100053c3
cmp al, 0x5c
jne 0x10005389
mov edi, 0x5c5c
add edx, 2
mov word [edx - 2], di
jmp 0x10004f90
mov edi, edx
lea ecx, [ebp - 0x937]
mov byte [ecx], 0x22
test edi, edi
jle 0x100052be
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x938]
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov dword [ebp - 0x958], eax
mov eax, esi
shr eax, 0x10
je 0x1000532d
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrA]
mov ecx, eax
sub esp, 8
mov eax, str._invalid_
test ecx, ecx
jne 0x1000510d
movzx eax, byte [ebp - 0x942]
test al, al
je 0x10005292
lea esi, [esi]
mov edx, ecx
lea ecx, [ecx + 1]
cmp byte [esi + edx + 1], 0
jne 0x10005050
mov byte [ebp - 0x938], 0x22
test ecx, ecx
jle 0x100050d9
lea ebx, [ebp - 0x815]
lea ecx, [ebp - 0x937]
mov dword [ebp - 0x954], ebx
jmp 0x100050b4
cmp al, 9
je 0x10005240
cmp al, 0xa
jne 0x10005157
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea esi, [esi]
lea edi, [edx - 1]
cmp ecx, dword [ebp - 0x954]
ja 0x100050e1
test edx, edx
jle 0x100050e1
movzx eax, byte [esi]
mov edx, edi
inc esi
cmp al, 0xd
je 0x100051a8
jle 0x10005080
cmp al, 0x22
je 0x10005190
cmp al, 0x5c
jne 0x10005149
mov edi, 0x5c5c
add ecx, 2
mov word [ecx - 2], di
jmp 0x100050a0
mov edi, edx
lea ecx, [ebp - 0x937]
mov byte [ecx], 0x22
test edi, edi
jle 0x100052a4
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x938]
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov esi, dword [ebp - 0x958]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Returning_codec__s__driver__s._n
mov dword [esp + 0x14], esi
mov dword [esp + 8], str.ICInfo
mov dword [esp + 4], 0x1000f05c
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_2
mov eax, 1
jmp 0x10004ac5
lea edi, [eax - 0x20]
mov ebx, edi
cmp bl, 0x5e
jbe 0x10005259
mov ebx, 0x785c
add ecx, 4
mov word [ecx - 4], bx
mov ebx, eax
and eax, 0xf
shr bl, 4
movzx eax, byte [eax + str.0123456789abcdef0123456789abcdef_]
movzx edi, bl
movzx ebx, byte [edi + str.0123456789abcdef0123456789abcdef_]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x100050a0
mov eax, 0x225c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x100050a0
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x100050a0
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x10004cd8
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x10004cd8
lea edi, [eax - 0x20]
mov ebx, edi
cmp bl, 0x5e
jbe 0x10005251
mov ebx, 0x785c
add ecx, 4
mov word [ecx - 4], bx
mov ebx, eax
and eax, 0xf
shr bl, 4
movzx eax, byte [eax + str.0123456789abcdef0123456789abcdef_]
movzx edi, bl
movzx ebx, byte [edi + str.0123456789abcdef0123456789abcdef_]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x10004cd8
mov eax, 0x225c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x10004cd8
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x100050a0
mov byte [ecx], al
inc ecx
jmp 0x10004cd8
mov byte [ecx], al
inc ecx
jmp 0x100050a0
movsx eax, byte [ebp - 0x95c]
mov dword [esp], eax
call ebx
test eax, eax
je 0x10004b40
mov eax, dword [ebp - 0x954]
mov dword [esp], str._.4s
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf_1
mov esi, eax
jmp 0x10004b61
mov edx, 0x2222
lea ecx, [ebp - 0x937]
mov word [ebp - 0x938], dx
lea eax, [ecx + 1]
jmp 0x100050fc
mov eax, 0x2222
lea ecx, [ebp - 0x937]
mov word [ebp - 0x938], ax
lea eax, [ecx + 1]
jmp 0x10004ff5
mov byte [edx], 0x22
mov edi, dword [ebp - 0x958]
lea eax, [edx + 1]
test ecx, ecx
jle 0x100052e6
mov ecx, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x938]
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Returning_codec__s__driver__s._n
mov dword [esp + 8], str.ICInfo
mov dword [esp + 4], 0x1000f05c
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_2
mov eax, 1
jmp 0x10004984
movzx esi, si
mov dword [esp], str._04x
mov dword [esp + 4], esi
call sym._wine_dbg_sprintf_1
jmp 0x1000510d
movzx eax, word [ebp - 0x954]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf_1
mov dword [ebp - 0x958], eax
jmp 0x1000500c
mov eax, 0x725c
add edx, 2
mov word [edx - 2], ax
jmp 0x10004f90
mov eax, 0x745c
add edx, 2
mov word [edx - 2], ax
jmp 0x10004f90
lea edi, [eax - 0x20]
mov ebx, edi
cmp bl, 0x5e
jbe 0x100053ec
mov ebx, 0x785c
add edx, 4
mov word [edx - 4], bx
mov ebx, eax
and eax, 0xf
shr bl, 4
movzx eax, byte [eax + str.0123456789abcdef0123456789abcdef_]
movzx edi, bl
movzx ebx, byte [edi + str.0123456789abcdef0123456789abcdef_]
mov byte [edx - 1], al
mov byte [edx - 2], bl
jmp 0x10004f90
mov eax, 0x225c
add edx, 2
mov word [edx - 2], ax
jmp 0x10004f90
movzx esi, si
mov dword [esp], str._04x
mov dword [esp + 4], esi
call sym._wine_dbg_sprintf_1
jmp 0x100052f7
mov byte [edx], al
inc edx
jmp 0x10004f90