Function at 0x6418e6b0
Capabilities:
Query or enumerate registry value
Set registry value

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0x58
mov eax, dword [ecx + 4]
mov esi, dword [ecx]
mov ebx, dword [ecx + 0xc]
mov dword [ebp - 0x3c], eax
mov eax, dword [ecx + 8]
mov dword [ebp - 0x40], eax
test byte [0x6419a04c], 8
jne 0x6418e8b0
test ebx, ebx
je 0x6418e6f3
test byte [0x6419a04c], 1
jne 0x6418e830
mov ebx, dword [ebp - 0x3c]
test ebx, ebx
je 0x6418e866
mov ecx, dword [0x6419a078]
test ecx, ecx
je 0x6418e888
mov eax, esi
call sym._get_servername_from_name
mov edi, eax
test eax, eax
jne 0x6418e7e0
test esi, esi
je 0x6418e737
movzx eax, word [esi]
cmp ax, 0x5c
je 0x6418e9f0
test ax, ax
je 0x6418ec20
mov eax, dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov dword [esp], 0x6419a328
mov dword [ebp - 0x44], eax
call eax
mov edi, dword [0x6419a304]
mov eax, dword [0x6419a324]
sub esp, 4
test edi, edi
je 0x6418ebf3
xor ebx, ebx
jmp 0x6418e771
inc ebx
cmp ebx, edi
je 0x6418ea88
mov edx, dword [eax + ebx*4]
test edx, edx
jne 0x6418e768
mov dword [esp + 4], 8
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_calloc]
mov edi, eax
test eax, eax
je 0x6418eda2
mov eax, dword [ebp - 0x40]
mov dword [esp], esi
mov dword [esp + 8], eax
lea eax, [edi + 4]
mov dword [esp + 4], eax
mov eax, dword [0x6419a078]
call dword [eax]
sub esp, 0xc
test eax, eax
jne 0x6418e958
mov dword [esp], 0x6419a328
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, dword [edi]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
sub esp, 4
mov dword [esp], eax
call ebx
mov dword [esp], edi
call ebx
jmp 0x6418e803
test byte [0x6419a04c], 1
jne 0x6418ebb0
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x709
mov eax, dword [ebp - 0x3c]
xor edi, edi
mov dword [eax], 0
xor eax, eax
test byte [0x6419a04c], 8
jne 0x6418e900
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x10
mov eax, dword [ebx + 4]
mov dword [esp + 0xc], str.flags__08lx_ignored_n
mov dword [esp + 8], str.OpenPrinter2W
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x6419a04c
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0
mov ebx, dword [ebp - 0x3c]
test ebx, ebx
jne 0x6418e6fe
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x57
lea esp, [ebp - 0x10]
xor eax, eax
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x10
call sym._load_backend
test eax, eax
je 0x6418e803
mov eax, esi
call sym._get_servername_from_name
mov edi, eax
test eax, eax
je 0x6418e71d
jmp 0x6418e7e0
mov eax, esi
call sym._wine_dbgstr_wn.constprop.0
mov edx, dword [ebp - 0x40]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], edx
mov edx, dword [ebp - 0x3c]
mov dword [esp + 0xc], str.__s__p__p__p__n
mov dword [esp + 0x14], edx
mov dword [esp + 8], str.OpenPrinter2W
mov dword [esp + 4], 0x6419a04c
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6418e6e2
mov dword [esp + 0x18], edi
mov edx, dword fs:[0x18]
mov edx, dword [edx + 0x34]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.returning__d_with__lu_and__p_n
mov dword [esp + 0x14], edx
mov dword [esp + 8], str.OpenPrinter2W
mov dword [esp + 4], 0x6419a04c
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov eax, dword [ebp - 0x3c]
mov edx, dword [eax]
xor eax, eax
test edx, edx
setne al
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x10
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll__wcsdup]
mov dword [edi], eax
test esi, esi
je 0x6418e96f
test eax, eax
je 0x6418e7ba
mov eax, dword [0x6419a324]
mov esi, dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov dword [eax + ebx*4], edi
lea edi, [ebx + 1]
mov dword [esp], 0x6419a328
call esi
mov eax, dword [ebp - 0x3c]
sub esp, 4
mov dword [eax], edi
mov eax, dword [ebp - 0x44]
mov dword [esp], 0x6419a328
call eax
sub esp, 4
cmp edi, dword [0x6419a304]
ja 0x6418ebe8
mov eax, dword [0x6419a324]
mov ebx, dword [eax + ebx*4]
mov dword [esp], 0x6419a328
call esi
sub esp, 4
test ebx, ebx
je 0x6418e9da
mov eax, dword [ebx]
test eax, eax
je 0x6418e9da
lea edx, [ebp - 0x2c]
call sym._open_printer_reg_key
test eax, eax
je 0x6418ead0
mov eax, dword [ebp - 0x3c]
mov edi, dword [eax]
xor eax, eax
test edi, edi
setne al
jmp 0x6418e810
cmp word [esi + 2], 0x5c
jne 0x6418e737
lea eax, [esi + 4]
mov dword [esp + 4], 0x5c
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcschr]
mov ebx, eax
test eax, eax
je 0x6418ed0a
cmp word [eax + 2], 0
je 0x6418ed0a
lea eax, [eax + 2]
cmp esi, eax
je 0x6418e737
test byte [0x6419a04c], 8
je 0x6418e737
call sym._wine_dbgstr_wn.constprop.0
mov dword [ebp - 0x44], eax
mov eax, esi
call sym._wine_dbgstr_wn.constprop.0
mov edx, dword [ebp - 0x44]
mov dword [esp + 0xc], str.converted__s_to__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov dword [esp + 8], str.get_opened_printer_entry
mov dword [esp + 4], 0x6419a04c
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
movzx eax, word [ebx + 2]
jmp 0x6418e72e
lea edx, [ebx + 0x10]
mov dword [ebp - 0x48], edx
mov edx, dword [ebp - 0x48]
mov dword [esp], eax
shl edx, 2
mov dword [esp + 4], edx
call dword [sym.imp.ucrtbase.dll_realloc]
mov ecx, 0x10
lea edi, [eax + edi*4]
mov edx, eax
xor eax, eax
rep stosd dword es:[edi], eax
test edx, edx
je 0x6418eda2
mov eax, dword [ebp - 0x48]
mov dword [0x6419a324], edx
mov dword [0x6419a304], eax
jmp 0x6418e778
lea eax, [ebp - 0x24]
mov dword [ebp - 0x28], 0
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x28]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x20]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x24], 4
mov dword [esp + 8], 0
mov dword [esp + 4], str.WineMayDeleteMe
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegQueryValueExW]
mov eax, dword [0x6419a114]
sub esp, 0x18
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_WaitForSingleObject]
mov eax, dword [ebp - 0x2c]
mov edx, str.Status
sub esp, 8
call sym._get_dword_from_reg
mov dword [esp + 0x14], 4
mov ebx, eax
and eax, 0xfbffffff
mov dword [esp + 0xc], 4
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x1c]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x2c]
mov dword [esp + 8], 0
mov dword [esp + 4], str.Status
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegSetValueExW]
mov eax, dword [0x6419a114]
sub esp, 0x18
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReleaseMutex]
mov ecx, dword [ebp - 0x28]
sub esp, 4
test ecx, ecx
jne 0x6418eb9c
and ebx, 0x4000000
jne 0x6418ec3d
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x6418e9da
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0xc], str.server__s_not_supported_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.get_opened_printer_entry
mov dword [esp + 4], 0x6419a04c
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0
jmp 0x6418e7ed
mov dword [esp], 0x6419a328
call esi
jmp 0x6418eba8
test eax, eax
jne 0x6418ed94
mov dword [esp + 4], 4
xor ebx, ebx
mov dword [esp], 0x10
call dword [sym.imp.ucrtbase.dll_calloc]
mov dword [ebp - 0x48], 0x10
mov edx, eax
jmp 0x6418eaaf
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x57
mov eax, dword [ebp - 0x3c]
mov dword [eax], 0
xor eax, eax
jmp 0x6418e810
mov eax, dword [ebp - 0x3c]
mov ebx, dword [eax]
mov eax, dword [ebp - 0x44]
mov dword [esp], 0x6419a328
call eax
sub esp, 4
test ebx, ebx
je 0x6418ecf9
cmp ebx, dword [0x6419a304]
ja 0x6418ecf9
mov eax, dword [0x6419a324]
mov edi, dword [eax + ebx*4 - 4]
mov dword [esp], 0x6419a328
call esi
sub esp, 4
test edi, edi
je 0x6418eb9c
mov edi, dword [edi]
test edi, edi
je 0x6418eb9c
call sym._get_ppd_dir
mov esi, eax
test eax, eax
je 0x6418eb9c
test byte [0x6419a04c], 8
jne 0x6418ed60
mov edx, esi
mov eax, edi
call sym._add_printer_driver
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_free]
mov eax, ebx
call sym._set_ppd_overrides
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], ebx
mov dword [esp], 0
call sym.winspool.drv_DocumentPropertiesW
sub esp, 0x18
jmp 0x6418eb9c
mov dword [esp], 0x6419a328
call esi
sub esp, 4
jmp 0x6418eb9c
test byte [0x6419a04c], 8
je 0x6418e737
xor eax, eax
call sym._wine_dbgstr_wn.constprop.0
mov ebx, eax
mov eax, esi
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.converted__s_to__s_n
mov dword [esp + 8], str.get_opened_printer_entry
mov dword [esp + 4], 0x6419a04c
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6418e737
mov eax, edi
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0xc], str.updating_driver__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.update_driver
mov dword [esp + 4], 0x6419a04c
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6418eca8
mov dword [ebp - 0x48], 0x10
xor ebx, ebx
jmp 0x6418ea8e
mov dword [esp], 0x6419a328
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
push eax
jmp 0x6418e803