Function at 0x10001ed0
Capabilities:
Check if process is running under wine
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
lea esi, [ebp - 0x450]
push ebx
sub esp, 0x59c
mov dword [ebp - 0x588], 0x208
mov dword [esp + 8], 0x104
mov dword [esp + 4], esi
mov dword [esp], eax
call sym._HidD_GetProductString_12
sub esp, 0xc
test al, al
jne 0x10001f18
xor ebx, ebx
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
lea eax, [ebp - 0x584]
mov dword [esp + 4], str.SoftwareWineDirectInputJoysticks
mov edi, dword [sym.imp.advapi32.dll_RegOpenKeyW]
mov dword [ebp - 0x580], 0
mov dword [esp + 8], eax
mov dword [esp], 0x80000001
call edi
sub esp, 0xc
test eax, eax
je 0x10001f54
mov dword [ebp - 0x584], 0
lea ebx, [ebp - 0x248]
mov dword [esp + 8], 0x104
mov dword [esp + 4], ebx
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_GetModuleFileNameW]
sub eax, 1
sub esp, 0xc
cmp eax, 0x102
jbe 0x100021a0
mov eax, dword [ebp - 0x584]
mov ecx, dword [ebp - 0x580]
test eax, eax
je 0x10001fe8
mov edi, dword [sym.imp.advapi32.dll_RegQueryValueExW]
lea edx, [ebp - 0x588]
test ecx, ecx
jne 0x10001ff0
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], esi
mov dword [esp], eax
call edi
sub esp, 0x18
test eax, eax
je 0x10002034
xor ebx, ebx
mov eax, dword [ebp - 0x580]
test eax, eax
jne 0x10002166
jmp 0x10002172
test ecx, ecx
je 0x10001f07
lea edx, [ebp - 0x588]
mov dword [esp + 0x10], ebx
mov edi, dword [sym.imp.advapi32.dll_RegQueryValueExW]
mov dword [esp + 0x14], edx
mov dword [ebp - 0x58c], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], esi
mov dword [esp], ecx
call edi
mov edx, dword [ebp - 0x58c]
sub esp, 0x18
test eax, eax
jne 0x10002148
mov dword [esp + 4], str.override
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcscmp]
test eax, eax
jne 0x10001fcc
mov ebx, 1
test byte [0x100074c0], 8
je 0x10001fce
mov eax, esi
shr eax, 0x10
je 0x10002370
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x1000229e
cmp word [ebp - 0x450], 0
je 0x1000239a
lea esi, [esi]
mov ecx, eax
lea eax, [eax + 1]
cmp word [esi + ecx*2 + 2], 0
jne 0x10002098
mov edx, 0x224c
mov dword [ebp - 0x58c], esi
lea ebx, [ebp - 0x57a]
lea esi, [ebp - 0x45a]
mov word [ebp - 0x57c], dx
jmp 0x10002105
cmp dx, 9
je 0x10002340
cmp dx, 0xa
jne 0x100022ee
mov eax, 0x6e5c
add ebx, 2
mov word [ebx - 2], ax
nop
lea esi, [esi]
lea edx, [ecx - 1]
test ecx, ecx
jle 0x10002270
cmp ebx, esi
ja 0x10002270
mov ecx, edx
add dword [ebp - 0x58c], 2
mov eax, dword [ebp - 0x58c]
movzx edx, word [eax - 2]
cmp dx, 0xd
je 0x100022d0
jbe 0x100020c8
cmp dx, 0x22
je 0x10002358
cmp dx, 0x5c
jne 0x100022e1
mov edi, 0x5c5c
add ebx, 2
mov word [ebx - 2], di
jmp 0x100020f0
mov eax, dword [ebp - 0x584]
test eax, eax
jne 0x10001fa4
mov eax, dword [ebp - 0x580]
xor ebx, ebx
test eax, eax
je 0x10001f07
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
mov eax, dword [ebp - 0x584]
test eax, eax
je 0x10001f09
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov eax, ebx
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
lea eax, [ebp - 0x57c]
mov dword [esp + 4], str.SoftwareWineAppDefaults
mov dword [esp + 8], eax
mov dword [esp], 0x80000001
call edi
sub esp, 0xc
test eax, eax
jne 0x10001f84
mov ecx, dword [sym.imp.ucrtbase.dll_wcsrchr]
mov dword [esp + 4], 0x2f
mov dword [esp], ebx
mov dword [ebp - 0x590], ecx
call ecx
mov dword [esp + 4], 0x5c
mov ecx, dword [ebp - 0x590]
test eax, eax
lea edx, [eax + 2]
cmove edx, ebx
mov dword [esp], edx
mov dword [ebp - 0x58c], edx
call ecx
mov edx, dword [ebp - 0x58c]
mov dword [esp + 4], str.DirectInputJoysticks
test eax, eax
lea ecx, [eax + 2]
cmovne edx, ecx
mov dword [esp], edx
mov dword [ebp - 0x58c], edx
call dword [sym.imp.ucrtbase.dll_wcscat]
lea eax, [ebp - 0x580]
mov edx, dword [ebp - 0x58c]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x57c]
mov dword [esp + 4], edx
mov dword [esp], eax
call edi
sub esp, 0xc
test eax, eax
je 0x10002255
mov dword [ebp - 0x580], 0
mov eax, dword [ebp - 0x57c]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x10001f84
mov byte [ebx], 0x22
test edx, edx
jle 0x100023b3
mov ecx, 0x2e2e
mov byte [ebx + 3], 0x2e
lea eax, [ebx + 4]
mov word [ebx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x57c]
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov edx, eax
mov dword [esp + 0x10], edx
mov ebx, 1
mov dword [esp + 0xc], str.Disabling_gamepad__s_based_on_registry_key._n
mov dword [esp + 8], 0x10009ccc
mov dword [esp + 4], 0x100074c0
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x10001fce
mov eax, 0x725c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x100020f0
lea edi, [edx - 0x20]
cmp di, 0x5e
jbe 0x10002390
mov edi, edx
mov byte [ebx], 0x5c
add ebx, 5
shr di, 0xc
movzx edi, di
movzx eax, byte [edi + str.0123456789abcdefdevice_is_overridden]
mov edi, edx
shr di, 8
and edi, 0xf
mov byte [ebx - 4], al
movzx eax, byte [edi + str.0123456789abcdefdevice_is_overridden]
mov edi, edx
and edx, 0xf
shr di, 4
movzx edx, byte [edx + str.0123456789abcdefdevice_is_overridden]
and edi, 0xf
mov byte [ebx - 3], al
movzx eax, byte [edi + str.0123456789abcdefdevice_is_overridden]
mov byte [ebx - 1], dl
mov byte [ebx - 2], al
jmp 0x100020f0
mov eax, 0x745c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x100020f0
mov eax, 0x225c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x100020f0
movzx eax, si
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf
mov edx, eax
jmp 0x1000229e
mov byte [ebx], dl
add ebx, 1
jmp 0x100020f0
mov eax, 0x224c
mov byte [ebp - 0x57a], 0x22
lea ebx, [ebp - 0x57a]
mov word [ebp - 0x57c], ax
lea eax, [ebx + 1]
jmp 0x1000228b