Function at 0x409250
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x27c
cmp byte [ecx], 0
mov esi, dword [ebp + 8]
mov dword [ebp - 0x260], eax
mov dword [ebp - 0x264], edx
mov dword [ebp - 0x25c], ecx
je 0x4095c2
mov ebx, dword [sym.imp.msvcrt.dll_strlen]
mov edi, ecx
mov dword [esp], edi
call ebx
lea edi, [edi + eax + 1]
cmp byte [edi], 0
jne 0x409282
lea eax, [ebp - 0x250]
lea edx, [edi + 1]
mov dword [esp + 8], 0
sub edx, dword [ebp - 0x25c]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x248]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x24c]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x264]
mov dword [ebp - 0x268], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x260]
mov dword [ebp - 0x250], 0x104
mov dword [esp], eax
mov byte [ebp - 0x248], 0
call sub.advapi32.dll_RegQueryValueExA
sub esp, 0x18
mov edi, eax
mov dword [esp + 4], esi
mov dword [esp], str..._wine_dlls_msi_tests_action.c
call fcn.0052ae70
xor eax, eax
test edi, edi
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], str.Failed_to_query_value__error__u_n
mov dword [esp], eax
call fcn.0052b0e0
mov dword [esp + 4], esi
mov dword [esp], str..._wine_dlls_msi_tests_action.c
call fcn.0052ae70
mov eax, dword [ebp - 0x24c]
mov dword [esp + 4], str.Got_wrong_type__u_n
cmp eax, 7
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0052b0e0
mov dword [esp + 4], esi
mov dword [esp], str..._wine_dlls_msi_tests_action.c
call fcn.0052ae70
mov eax, dword [ebp - 0x250]
mov edx, dword [ebp - 0x268]
mov dword [esp + 4], str.expected_size__u__got__u_n
cmp eax, edx
mov dword [esp + 0xc], eax
sete al
mov dword [esp + 8], edx
movzx eax, al
mov dword [esp], eax
call fcn.0052b0e0
mov dword [esp + 4], esi
mov dword [esp], str..._wine_dlls_msi_tests_action.c
call fcn.0052ae70
lea eax, [ebp - 0x248]
shr eax, 0x10
je 0x409563
mov edi, dword [ebp - 0x250]
lea eax, [ebp - 0x248]
mov esi, 0x52f0ef
mov dword [esp], eax
mov dword [esp + 4], edi
call dword [sym.imp.kernel32.dll_IsBadStringPtrA]
sub esp, 8
test eax, eax
jne 0x409474
mov eax, edi
cmp edi, 0xffffffff
je 0x4095a0
lea edx, [ebp - 0x143]
lea edi, [ebp - 0x21]
mov byte [ebp - 0x144], 0x22
lea ecx, [ebp - 0x248]
lea esi, [eax - 1]
cmp edx, edi
ja 0x409447
lea esi, [esi]
test eax, eax
jle 0x409447
add ecx, 1
movzx eax, byte [ecx - 1]
cmp al, 0xd
je 0x409550
jg 0x4094c0
cmp al, 9
je 0x409520
cmp al, 0xa
jne 0x4094e0
mov eax, 0x6e5c
add edx, 2
mov word [edx - 2], ax
mov eax, esi
lea esi, [esi]
nop
lea esi, [eax - 1]
cmp edx, edi
jbe 0x409400
mov byte [edx], 0x22
lea eax, [edx + 1]
test esi, esi
jle 0x409461
mov ecx, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x144]
mov dword [esp], eax
call fcn.0052c0c0
mov esi, eax
mov eax, dword [ebp - 0x250]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x25c]
mov dword [esp + 4], eax
lea eax, [ebp - 0x248]
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 8], esi
test eax, eax
mov dword [esp + 4], 0x52f113
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0052b0e0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
cmp al, 0x22
je 0x409533
cmp al, 0x5c
jne 0x4094e0
mov eax, 0x5c5c
add edx, 2
mov word [edx - 2], ax
mov eax, esi
jmp 0x409440
lea ebx, [eax - 0x20]
cmp bl, 0x5e
jbe 0x409590
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.0123456789abcdef_d_02d_02d]
movzx ebx, bl
movzx ebx, byte [ebx + str.0123456789abcdef_d_02d_02d]
mov byte [edx - 1], al
mov eax, esi
mov byte [edx - 2], bl
jmp 0x409440
mov eax, 0x745c
add edx, 2
mov word [edx - 2], ax
mov eax, esi
jmp 0x409440
mov eax, 0x225c
add edx, 2
mov word [edx - 2], ax
mov eax, esi
jmp 0x409440
mov eax, 0x725c
add edx, 2
mov word [edx - 2], ax
mov eax, esi
jmp 0x409440
lea eax, [ebp - 0x248]
mov dword [esp], 0x52f0e9
mov dword [ebp - 0x260], eax
movzx eax, word [ebp - 0x260]
mov dword [esp + 4], eax
call fcn.00409200
mov esi, eax
jmp 0x409474
mov byte [edx], al
add edx, 1
mov eax, esi
jmp 0x409440
xor eax, eax
cmp byte [ebp - 0x248], 0
je 0x4093e0
nop
add eax, 1
cmp byte [ebp + eax - 0x248], 0
jne 0x4095b0
jmp 0x4093e0
mov edi, dword [ebp - 0x25c]
jmp 0x409290