Function at 0x10003080
Capabilities:
Access peb ldr_data
Get file version info
Get kernel32 base address
Get process heap flags
Get process heap force flags
Query or enumerate registry key
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x968
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x928], 0
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x14]
mov dword [ebp - 0x940], ecx
mov ecx, dword [ebp + 0x18]
mov word [ebp - 0x938], ax
mov dword [ebp - 0x944], ecx
test byte [0x10005cf8], 8
jne 0x10003528
lea eax, [ebp - 0x91c]
mov dword [esp + 0xc], 1
mov dword [esp + 0x10], eax
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
je 0x10003200
lea eax, [ebp - 0x80c]
mov dword [ebp - 0x93c], eax
mov edi, dword [ebp - 0x93c]
mov eax, dword [sym.imp.kernel32.dll_GetPrivateProfileStringA]
mov dword [esp + 0x14], str.system.ini
mov dword [esp + 0x10], 0x800
mov dword [esp + 0xc], edi
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], str.drivers32
mov dword [ebp - 0x93c], eax
call eax
sub esp, 0x18
test eax, eax
je 0x100031b0
cmp byte [ebp - 0x80c], 0
je 0x100031b0
mov dword [ebp + 0x14], esi
mov esi, edi
mov edi, dword [ebp + 0x14]
mov dword [ebp + 0xc], ebx
movzx ebx, word [ebp - 0x938]
mov dword [esp + 8], 3
mov dword [esp + 4], 0x10007363
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll__strnicmp]
test eax, eax
jne 0x10003194
test bx, bx
je 0x10003580
sub ebx, 1
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_strlen]
lea esi, [esi + eax + 1]
cmp byte [esi], 0
jne 0x1000316b
mov word [ebp - 0x938], bx
lea esi, [esi]
mov ebx, 0x14
test byte [0x10005cf8], 8
je 0x100031ed
movzx eax, word [ebp - 0x938]
mov dword [esp + 0xc], str.No_more_VID_entries_found_nr_d_n
mov dword [esp + 8], str.VideoCapDriverDescAndVer16
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x10005cf8
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret 0x14
lea eax, [ebp - 0x928]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x91c]
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegQueryInfoKeyA]
mov ecx, dword [ebp - 0x928]
sub esp, 0x30
test ecx, ecx
je 0x100037cf
lea eax, [ebp - 0x80c]
xor edi, edi
mov dword [ebp + 0xc], ebx
mov dword [ebp - 0x93c], eax
mov ebx, edi
mov edi, eax
lea eax, [ebp - 0x918]
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], eax
lea eax, [ebp - 0x924]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x91c]
mov dword [ebp - 0x924], 0x800
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 8], edi
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegEnumKeyExA]
sub esp, 0x20
test eax, eax
jne 0x10003316
mov dword [esp + 8], 3
mov dword [esp + 4], 0x10007363
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll__strnicmp]
test eax, eax
jne 0x10003316
movzx eax, word [ebp - 0x938]
test ax, ax
je 0x10003340
sub eax, 1
mov word [ebp - 0x938], ax
add ebx, 1
cmp dword [ebp - 0x928], ebx
ja 0x1000328f
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x91c]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x1000310b
lea eax, [ebp - 0x920]
mov dword [esp + 0xc], 0
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x910]
mov dword [ebp - 0x938], eax
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x93c]
mov dword [ebp - 0x920], 0x104
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x91c]
mov dword [esp + 8], 0
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
sub esp, 0x18
test eax, eax
mov eax, dword [ebp - 0x91c]
mov dword [esp], eax
jne 0x10003630
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
lea eax, [ebp - 0x934]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x938]
mov dword [esp], eax
call dword [sym.imp.version.dll_GetFileVersionInfoSizeA]
sub esp, 8
mov edx, eax
test eax, eax
je 0x100035e8
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x93c], edx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
mov edx, dword [ebp - 0x93c]
sub esp, 0xc
mov edi, eax
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x934]
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x938]
mov dword [esp], eax
call dword [sym.imp.version.dll_GetFileVersionInfoA]
movzx edx, word [ebp - 0x944]
sub esp, 0x10
test eax, eax
jne 0x100036e8
test byte [0x10005cf8], 8
jne 0x10003790
cmp edx, 1
jbe 0x10003660
mov eax, dword [ebp - 0x938]
lea ecx, [esi + edx - 1]
jmp 0x1000346d
add esi, 1
add eax, 1
mov byte [esi - 1], dl
cmp esi, ecx
je 0x10003474
movzx edx, byte [eax]
test dl, dl
jne 0x10003460
mov byte [esi], 0
lea eax, [ebp - 0x930]
mov dword [esp + 4], str.StringFileInfo040904E4FileDescription
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x92c]
mov dword [esp + 8], eax
mov dword [esp], edi
call dword [sym.imp.version.dll_VerQueryValueA]
sub esp, 0x10
test eax, eax
jne 0x10003670
test byte [0x10005cf8], 8
jne 0x10003760
mov ecx, dword [ebp - 0x940]
movzx eax, cx
cmp cx, 1
jbe 0x1000364a
mov esi, dword [ebp - 0x938]
lea edx, [ebx + eax - 1]
jmp 0x100034e5
add ebx, 1
add esi, 1
mov byte [ebx - 1], al
cmp ebx, edx
je 0x100034ec
movzx eax, byte [esi]
test al, al
jne 0x100034d8
mov byte [ebx], 0
mov dword [esp + 8], edi
xor ebx, ebx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, ebx
sub esp, 0xc
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x14
movzx edx, word [ebp - 0x944]
movzx eax, ax
mov dword [esp + 0x1c], esi
mov dword [esp + 0x14], ebx
mov dword [esp + 0x20], edx
movzx edx, word [ebp - 0x940]
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0xc], str.__d__p__d__p__d__n
mov dword [esp + 8], str.VideoCapDriverDescAndVer16
mov dword [esp + 4], 0x10005cf8
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x100030c5
mov dword [ebp + 0x14], edi
lea eax, [ebp - 0x910]
mov edi, esi
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 0x938], eax
mov esi, dword [ebp + 0x14]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x93c]
mov dword [esp + 0x14], str.system.ini
mov dword [esp + 0x10], 0x104
mov dword [esp + 8], 0
mov dword [esp + 4], edi
mov dword [esp], str.drivers32
call eax
sub esp, 0x18
test eax, eax
jne 0x100033ad
mov eax, 0xffffffff
mov word [ebp - 0x938], ax
jmp 0x100031b0
mov ebx, 0x12
test byte [0x10005cf8], 8
je 0x100031ed
mov eax, dword [ebp - 0x938]
mov dword [esp + 0xc], str._s_has_no_fileversioninfo._n
mov dword [esp + 8], str.VideoCapDriverDescAndVer16
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x10005cf8
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x100031ed
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov edx, 0xffffffff
mov word [ebp - 0x938], dx
sub esp, 4
jmp 0x1000310b
test eax, eax
je 0x100034ef
jmp 0x100034ec
test edx, edx
je 0x10003477
jmp 0x10003474
movzx esi, word [ebp - 0x940]
mov eax, dword [ebp - 0x930]
mov dword [esp], ebx
mov edx, dword [ebp - 0x92c]
sub esi, 1
cmp esi, eax
mov dword [esp + 4], edx
cmova esi, eax
mov dword [ebp - 0x938], edx
mov dword [esp + 8], esi
call sym._memcpy
mov byte [ebx + esi], 0
mov edx, dword [ebp - 0x938]
test byte [0x10005cf8], 8
je 0x100034ef
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.VQA_returned__s_n
mov dword [esp + 8], str.VideoCapDriverDescAndVer16
mov dword [esp + 4], 0x10005cf8
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x100034ef
movzx eax, word [edi + 0x20]
mov dword [esp + 0x18], eax
movzx eax, word [edi + 0x22]
mov dword [esp + 0x14], eax
movzx eax, word [edi + 0x1c]
mov dword [esp + 0x10], eax
movzx eax, word [edi + 0x1e]
mov dword [esp + 8], str.Version:___d._d._d._d_n
mov dword [esp + 0xc], eax
mov dword [esp + 4], edx
mov dword [esp], esi
call sym._snprintf.constprop.0
test byte [0x10005cf8], 8
je 0x10003477
mov eax, dword [ebp - 0x938]
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], str.version_of__s_is__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.VideoCapDriverDescAndVer16
mov dword [esp + 4], 0x10005cf8
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x10003477
mov dword [esp + 0xc], str.VQA_did_not_return_on_query_StringFileInfo040904E4FileDescription__n
mov dword [esp + 8], str.VideoCapDriverDescAndVer16
mov dword [esp + 4], 0x10005cf8
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x100034b4
mov eax, dword [ebp - 0x938]
mov dword [esp + 0xc], str.GetFileVersionInfoA_failed_for__s._n
mov dword [esp + 8], str.VideoCapDriverDescAndVer16
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x10005cf8
mov dword [esp], 3
mov dword [ebp - 0x93c], edx
call sym._wine_dbg_log.constprop.0
mov edx, dword [ebp - 0x93c]
jmp 0x10003445
lea eax, [ebp - 0x80c]
mov dword [ebp - 0x93c], eax
jmp 0x10003328