Function at 0x10003090
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, 0x964
mov dword [ebp - 0x928], 0
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0x18]
mov dword [ebp - 0x938], ecx
test byte [0x10005cf8], 8
mov dword [ebp - 0x93c], edx
mov edi, eax
jne 0x100034c0
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]
lea ebx, [ebp - 0x80c]
sub esp, 0x14
test eax, eax
jne 0x10003230
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 eax, dword [ebp - 0x928]
sub esp, 0x30
lea ebx, [ebp - 0x80c]
test eax, eax
je 0x1000321a
xor esi, esi
lea ebx, [ebp - 0x80c]
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 [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov dword [esp], eax
mov dword [ebp - 0x924], 0x800
call dword [sym.imp.advapi32.dll_RegEnumKeyExA]
sub esp, 0x20
test eax, eax
jne 0x1000320d
mov dword [esp + 8], 3
mov dword [esp + 4], 0x10007363
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll__strnicmp]
test eax, eax
jne 0x1000320d
test di, di
je 0x10003300
dec edi
inc esi
cmp dword [ebp - 0x928], esi
ja 0x10003192
mov eax, dword [ebp - 0x91c]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
push ecx
lea esi, [esi]
mov eax, dword [sym.imp.kernel32.dll_GetPrivateProfileStringA]
mov dword [esp + 0x14], str.system.ini
mov dword [esp + 0x10], 0x800
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], str.drivers32
mov dword [ebp - 0x940], eax
call eax
sub esp, 0x18
test eax, eax
je 0x100032b8
cmp byte [ebp - 0x80c], 0
je 0x100032b8
mov esi, dword [sym.imp.ucrtbase.dll__strnicmp]
mov dword [esp + 8], 3
mov dword [esp + 4], 0x10007363
mov dword [esp], ebx
call esi
test eax, eax
jne 0x100032a1
test di, di
je 0x10003520
dec edi
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_strlen]
lea ebx, [ebx + eax + 1]
cmp byte [ebx], 0
jne 0x1000327e
lea esi, [esi]
nop
test byte [0x10005cf8], 8
mov ebx, 0x14
je 0x100034ae
and edi, 0xffff
mov dword [esp + 0xc], str.No_more_VID_entries_found_nr_d_n
mov dword [esp + 0x10], edi
mov dword [esp + 8], str.VideoCapDriverDescAndVer16
mov dword [esp + 4], 0x10005cf8
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x100034ae
lea eax, [ebp - 0x920]
lea esi, [ebp - 0x910]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x91c]
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], ebx
mov dword [esp], eax
mov dword [ebp - 0x920], 0x104
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
sub esp, 0x18
test eax, eax
mov eax, dword [ebp - 0x91c]
mov dword [esp], eax
jne 0x100035a8
call dword [sym.imp.advapi32.dll_RegCloseKey]
push ebx
lea eax, [ebp - 0x934]
mov dword [esp], esi
mov dword [esp + 4], eax
call dword [sym.imp.version.dll_GetFileVersionInfoSizeA]
mov edi, eax
test eax, eax
push edx
push edx
je 0x10003568
mov dword [esp + 8], edi
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_HeapAlloc]
sub esp, 0xc
mov ebx, eax
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x934]
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov dword [esp], esi
xor edi, edi
call dword [sym.imp.version.dll_GetFileVersionInfoA]
mov di, word [ebp - 0x93c]
sub esp, 0x10
test eax, eax
jne 0x100035d8
test byte [0x10005cf8], 8
jne 0x100036d0
cmp edi, 1
jbe 0x100035c8
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp + 0x14]
lea ecx, [eax + edi - 1]
mov edi, esi
jmp 0x10003401
inc edx
inc edi
mov byte [edx - 1], al
cmp edx, ecx
je 0x10003407
mov al, byte [edi]
test al, al
jne 0x100033f8
mov dword [ebp + 0x14], edx
mov eax, dword [ebp + 0x14]
mov byte [eax], 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], ebx
call dword [sym.imp.version.dll_VerQueryValueA]
sub esp, 0x10
test eax, eax
jne 0x10003658
test byte [0x10005cf8], 8
jne 0x10003700
mov ecx, dword [ebp - 0x938]
xor eax, eax
cmp cx, 1
mov ax, cx
jbe 0x100035b7
mov ecx, dword [ebp + 0xc]
lea edx, [ecx + eax - 1]
mov eax, ecx
jmp 0x10003479
inc eax
inc esi
mov byte [eax - 1], cl
cmp eax, edx
je 0x1000347f
mov cl, byte [esi]
test cl, cl
jne 0x10003470
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
mov byte [eax], 0
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
xor ebx, ebx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret 0x14
xor edx, edx
mov ecx, dword [ebp + 0x14]
mov dx, word [ebp - 0x93c]
and eax, 0xffff
mov dword [esp + 0x20], edx
xor edx, edx
mov dx, word [ebp - 0x938]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], edx
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
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 0x100030ca
lea esi, [ebp - 0x910]
mov dword [esp + 0x14], str.system.ini
mov dword [esp + 0x10], 0x104
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp + 4], ebx
mov dword [esp], str.drivers32
mov eax, dword [ebp - 0x940]
call eax
or edi, 0xffffffff
sub esp, 0x18
test eax, eax
je 0x100032b8
jmp 0x1000335c
test byte [0x10005cf8], 8
mov ebx, 0x12
je 0x100034ae
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], str._s_has_no_fileversioninfo._n
mov dword [esp + 8], str.VideoCapDriverDescAndVer16
mov dword [esp + 4], 0x10005cf8
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x100034ae
call dword [sym.imp.advapi32.dll_RegCloseKey]
or edi, 0xffffffff
push esi
jmp 0x10003230
test eax, eax
je 0x10003488
jmp 0x10003482
test edi, edi
je 0x10003410
jmp 0x1000340a
xor eax, eax
mov ax, word [ebx + 0x20]
mov dword [esp + 0x18], eax
xor eax, eax
mov ax, word [ebx + 0x22]
mov dword [esp + 0x14], eax
xor eax, eax
mov ax, word [ebx + 0x1c]
mov dword [esp + 0x10], eax
xor eax, eax
mov ax, word [ebx + 0x1e]
mov dword [esp + 8], str.Version:___d._d._d._d_n
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 4], edi
mov dword [esp], eax
call sym._snprintf.constprop.0
test byte [0x10005cf8], 8
je 0x10003410
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.version_of__s_is__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 0x10003410
xor edx, edx
mov eax, dword [ebp - 0x930]
mov dx, word [ebp - 0x938]
lea esi, [edx - 1]
cmp esi, eax
jbe 0x10003670
mov esi, eax
mov edi, dword [ebp - 0x92c]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], esi
mov dword [esp + 4], edi
mov dword [esp], eax
call sym._memcpy
mov eax, dword [ebp + 0xc]
mov byte [eax + esi], 0
test byte [0x10005cf8], 8
je 0x10003488
mov dword [esp + 0x10], edi
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 0x10003488
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], str.GetFileVersionInfoA_failed_for__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 0x100033dd
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 0x1000344d