Function at 0x10021200
Capabilities:
Query or enumerate registry key

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x18c
cmp dword [ebp + 0x10], ecx
jae 0x10021220
mov esi, 1
lea esp, [ebp - 0xc]
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
mov edi, eax
lea eax, [ebp - 0x150]
mov ebx, edx
mov edx, dword [ebp + 0xc]
mov dword [esp], eax
mov esi, ecx
mov eax, ebx
mov ecx, 1
call sym._matches_domain_pattern
test eax, eax
je 0x10021211
lea eax, [ebp - 0x154]
mov dword [esp], edi
mov dword [esp + 8], eax
mov eax, dword [sym.imp.advapi32.dll_RegOpenKeyW]
mov dword [esp + 4], ebx
mov dword [ebp - 0x158], eax
call eax
sub esp, 0xc
mov edi, eax
test eax, eax
jne 0x10021888
mov eax, dword [ebp + 0xc]
cmp dword [ebp - 0x150], eax
je 0x10021398
lea eax, [ebp - 0x14c]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov dword [esp], ebx
call sym._find_domain_name
lea eax, [ebp - 0x144]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x148]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x154]
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 + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegQueryInfoKeyW]
sub esp, 0x30
mov esi, eax
test eax, eax
jne 0x10021340
mov eax, dword [ebp - 0x148]
test eax, eax
jne 0x100213c0
mov edx, dword [ebp - 0x14c]
test edx, edx
je 0x10021370
mov ebx, dword [sym.imp.advapi32.dll_RegCloseKey]
mov esi, 1
mov eax, dword [ebp - 0x154]
mov dword [esp], eax
call ebx
sub esp, 4
jmp 0x10021216
test byte [0x100563b0], 2
jne 0x10021548
mov eax, dword [ebp - 0x154]
mov esi, 0x8000ffff
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x10021216
mov eax, dword [ebp - 0x150]
sub eax, dword [ebp + 0xc]
sar eax, 1
sub eax, 1
movzx eax, ax
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcschr]
test eax, eax
jne 0x1002131e
lea esi, [esi]
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 0x154]
call sym._get_zone_for_scheme
mov ebx, dword [sym.imp.advapi32.dll_RegCloseKey]
test eax, eax
sete al
movzx eax, al
mov esi, eax
jmp 0x10021329
mov edx, dword [ebp - 0x144]
add edx, 1
lea eax, [edx + edx]
mov dword [ebp - 0x15c], edx
mov dword [esp], eax
mov eax, dword [sym.imp.ucrtbase.dll_malloc]
mov dword [ebp - 0x164], eax
call eax
mov ecx, dword [ebp - 0x154]
mov edx, dword [ebp - 0x15c]
test eax, eax
mov edi, eax
je 0x10021742
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x168], edx
test eax, eax
je 0x1002172d
mov eax, dword [ebp - 0x150]
sub eax, dword [ebp + 0xc]
mov dword [ebp - 0x15c], ecx
mov edx, dword [ebp - 0x164]
mov dword [ebp - 0x160], eax
mov dword [esp], eax
call edx
mov ecx, dword [ebp - 0x15c]
test eax, eax
mov edx, eax
je 0x1002172d
mov eax, dword [ebp - 0x160]
mov dword [ebp - 0x164], ecx
mov ecx, dword [ebp + 0xc]
mov dword [esp], edx
sub eax, 2
mov dword [ebp - 0x15c], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call sym._memcpy
mov ecx, dword [ebp - 0x160]
mov eax, dword [ebp - 0x15c]
xor edx, edx
mov dword [ebp - 0x160], ebx
mov word [eax + ecx - 2], dx
mov ebx, eax
mov ecx, dword [ebp - 0x164]
mov edx, dword [ebp - 0x168]
jmp 0x100214ca
lea eax, [ebp - 0x13c]
xor ecx, ecx
mov edx, ebx
mov dword [esp], eax
mov eax, edi
call sym._matches_domain_pattern
test eax, eax
jne 0x100216a9
add esi, 1
cmp dword [ebp - 0x148], esi
jbe 0x1002168e
mov eax, dword [ebp - 0x144]
mov ecx, dword [ebp - 0x154]
lea edx, [eax + 1]
lea eax, [ebp - 0x140]
mov dword [ebp - 0x140], edx
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], ecx
call dword [sym.imp.advapi32.dll_RegEnumKeyExW]
sub esp, 0x20
test eax, eax
je 0x10021490
mov eax, dword [ebp - 0x15c]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov esi, 0x8000ffff
mov dword [esp], eax
call ebx
mov dword [esp], edi
call ebx
mov eax, dword [ebp - 0x154]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x10021216
test ebx, ebx
je 0x10021860
mov eax, ebx
shr eax, 0x10
je 0x100217f1
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, 0x1005e22b
sub esp, 8
test eax, eax
jne 0x1002165d
cmp word [ebx], 0
je 0x1002186a
lea esi, [esi]
lea edi, [edi]
mov edx, eax
lea eax, [eax + 1]
cmp word [ebx + edx*2 + 2], 0
jne 0x10021590
mov eax, 0x224c
mov dword [ebp - 0x158], ebx
lea ecx, [ebp - 0x136]
mov word [ebp - 0x138], ax
jmp 0x100215f0
cmp ax, 9
je 0x10021770
cmp ax, 0xa
jne 0x1002178e
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea eax, [edx - 1]
test edx, edx
jle 0x1002162f
lea edi, [ebp - 0x16]
cmp ecx, edi
ja 0x1002162f
mov edx, eax
add dword [ebp - 0x158], 2
mov eax, dword [ebp - 0x158]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x10021758
jbe 0x100215c0
cmp ax, 0x22
je 0x100217e0
cmp ax, 0x5c
jne 0x10021781
mov ebx, 0x5c5c
add ecx, 2
mov word [ecx - 2], bx
jmp 0x100215e0
mov byte [ecx], 0x22
test eax, eax
jle 0x10021880
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x138]
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov edx, eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.Unable_to_query_info_for_key__s:__ld_n
mov dword [esp + 8], str.search_domain_for_zone
mov dword [esp + 4], 0x100563b0
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_14
jmp 0x1002134d
mov dword [esp], edi
mov ebx, dword [sym.imp.ucrtbase.dll_free]
call ebx
mov eax, dword [ebp - 0x15c]
mov dword [esp], eax
call ebx
jmp 0x10021314
lea eax, [ebp - 0x138]
mov dword [esp + 4], edi
mov ebx, dword [ebp - 0x160]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x154]
mov dword [esp], eax
mov eax, dword [ebp - 0x158]
call eax
sub esp, 0xc
mov esi, eax
test eax, eax
je 0x1002180b
test byte [0x100563b0], 2
je 0x10021516
mov eax, ebx
call sym._wine_dbgstr_wn.constprop.0_12
mov ebx, eax
mov eax, edi
call sym._wine_dbgstr_wn.constprop.0_12
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Unable_to_open_subdomain_key__s_of__s:__ld_n
mov dword [esp + 8], str.search_domain_for_zone
mov dword [esp + 4], 0x100563b0
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_14
jmp 0x10021516
mov dword [ebp - 0x158], ecx
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov ecx, dword [ebp - 0x158]
mov dword [esp], ecx
mov esi, 0x8007000e
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x10021216
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x100215e0
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x100215e0
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x10021856
mov edi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefget_zone_for_scheme]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefget_zone_for_scheme]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefget_zone_for_scheme]
and edi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefget_zone_for_scheme]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x100215e0
mov edi, 0x225c
add ecx, 2
mov word [ecx - 2], di
jmp 0x100215e0
movzx ebx, bx
mov dword [esp], 0x1005e235
mov dword [esp + 4], ebx
call sym._wine_dbg_sprintf_11
mov edx, eax
jmp 0x1002165d
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 0x138]
call sym._get_zone_for_scheme
mov ebx, dword [sym.imp.advapi32.dll_RegCloseKey]
mov esi, eax
mov eax, dword [ebp - 0x138]
mov dword [esp], eax
call ebx
sub esp, 4
mov dword [esp], edi
mov edi, dword [sym.imp.ucrtbase.dll_free]
call edi
mov eax, dword [ebp - 0x15c]
mov dword [esp], eax
call edi
xor eax, eax
test esi, esi
sete al
mov esi, eax
jmp 0x10021329
mov byte [ecx], al
add ecx, 1
jmp 0x100215e0
mov edx, 0x1005e1e0
jmp 0x1002165d
mov word [ebp - 0x138], 0x224c
lea ecx, [ebp - 0x136]
mov byte [ebp - 0x136], 0x22
lea eax, [ecx + 1]
jmp 0x1002164a
mov esi, 0x8000ffff
test byte [0x100563b0], 2
je 0x10021216
mov eax, ebx
call sym._wine_dbgstr_wn.constprop.0_12
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Failed_to_open_domain_key__s:__ld_n
mov dword [esp + 8], str.search_domain_for_zone
mov dword [esp + 4], 0x100563b0
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_14
jmp 0x10021216