Function at 0x6514e4c0
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x7c
mov ebx, dword [ebp + 8]
test byte [0x651531d8], 8
jne 0x6514e610
xor eax, eax
mov word [ebp - 0x38], ax
test ebx, ebx
je 0x6514e660
movzx eax, word [ebx]
cmp ax, 0x5c
je 0x6514e5f8
mov esi, ebx
test ax, ax
je 0x6514e740
mov eax, dword [ebp + 0xc]
mov dword [eax], 0
movzx eax, word [esi]
cmp ax, 0x2c
jne 0x6514e780
cmp word [esi + 2], 0x20
lea edi, [esi + 2]
jne 0x6514e529
nop
add edi, 2
cmp word [edi], 0x20
je 0x6514e520
mov edx, dword [sym.imp.ucrtbase.dll_wcsncmp]
mov dword [esp + 8], 0xb
mov dword [esp + 4], str.XcvMonitor
mov dword [ebp - 0x5c], edx
mov dword [esp], edi
call edx
mov edx, dword [ebp - 0x5c]
test eax, eax
jne 0x6514edbd
mov dword [esp + 4], 0xc
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_calloc]
test eax, eax
je 0x6514e76c
mov dword [eax], 2
lea ebx, [edi + 0x16]
xor edx, edx
mov dword [ebp - 0x5c], eax
mov eax, ebx
call sym._monitor_load
mov ecx, dword [ebp - 0x5c]
mov dword [ecx + 4], eax
test eax, eax
je 0x6514ef23
mov edx, dword [eax + 0x50]
test edx, edx
je 0x6514e5c7
xor esi, esi
cmp dword [ebp + 0x10], 0
lea edi, [ecx + 8]
je 0x6514e5aa
mov esi, dword [ebp + 0x10]
mov esi, dword [esi + 8]
mov dword [esp + 0xc], edi
mov dword [esp + 8], esi
mov dword [esp + 4], ebx
mov eax, dword [eax + 0x70]
mov dword [ebp - 0x5c], ecx
mov dword [esp], eax
call edx
mov ecx, dword [ebp - 0x5c]
sub esp, 0x10
mov eax, dword [ecx + 8]
test eax, eax
je 0x6514ef49
mov eax, dword [ebp + 0xc]
mov dword [eax], ecx
test byte [0x651531d8], 8
jne 0x6514e68f
xor eax, eax
test ecx, ecx
setne al
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0xc
cmp word [ebx + 2], 0x5c
je 0x6514e6c8
mov eax, 0x5c
jmp 0x6514e4f4
mov edx, 0xffffffff
mov eax, ebx
call sym._wine_dbgstr_wn
mov edx, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
mov dword [esp + 0xc], str.__s___p___p__n
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], esi
mov dword [esp + 8], str.fpOpenPrinter
mov dword [esp + 4], 0x651531d8
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_1
xor eax, eax
mov word [ebp - 0x38], ax
test ebx, ebx
jne 0x6514e4e7
mov dword [esp], 4
call dword [sym.imp.ucrtbase.dll_malloc]
mov ecx, eax
test eax, eax
je 0x6514e76c
mov dword [eax], 0
mov eax, dword [ebp + 0xc]
mov dword [eax], ecx
test byte [0x651531d8], 8
je 0x6514e5e4
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], str.___p_n
mov dword [esp + 8], str.fpOpenPrinter
mov dword [esp + 4], 0x651531d8
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_1
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
jmp 0x6514e5e4
lea edx, [ebp - 0x38]
mov eax, ebx
call sym._copy_servername_from_name.part.0
test eax, eax
je 0x6514efb6
test byte [0x651531d8], 1
jne 0x6514e700
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x709
lea esp, [ebp - 0xc]
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret 0xc
mov edx, 0xffffffff
lea eax, [ebp - 0x38]
call sym._wine_dbgstr_wn
mov dword [esp + 0xc], str.server__s_not_supported_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.fpOpenPrinter
mov dword [esp + 4], 0x651531d8
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_1
jmp 0x6514e6e3
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x57
lea esp, [ebp - 0xc]
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret 0xc
mov dword [esp], ebx
mov ebx, dword [sym.imp.ucrtbase.dll_free]
call ebx
mov ecx, dword [ebp - 0x5c]
mov dword [esp], ecx
call ebx
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov dword [eax], 0
jmp 0x6514e5d7
xor ecx, ecx
jmp 0x6514e79e
lea edx, [ecx + 1]
movzx eax, word [esi + edx*2]
lea edi, [edx + edx]
cmp ax, 0x2c
je 0x6514ea90
mov ecx, edx
test ax, ax
jne 0x6514e788
mov eax, dword [ebp + 0xc]
xor edi, edi
mov dword [eax], 0
movzx eax, word [esi]
cmp ax, 0x2c
jne 0x6514e7d1
jmp 0x6514e920
add edi, 1
movzx eax, word [esi + edi*2]
cmp ax, 0x2c
je 0x6514e920
test ax, ax
jne 0x6514e7c0
mov eax, dword [ebp + 0xc]
mov edi, dword [sym.imp.ucrtbase.dll_calloc]
mov dword [eax], 0
mov dword [esp + 4], 0x1c
mov dword [esp], 1
call edi
mov ecx, eax
test eax, eax
je 0x6514e5d2
mov dword [eax], 1
mov dword [ebp - 0x5c], eax
mov eax, dword [sym.imp.ucrtbase.dll__wcsdup]
mov dword [esp], ebx
mov dword [ebp - 0x60], eax
call eax
mov ecx, dword [ebp - 0x5c]
mov dword [ecx + 8], eax
test eax, eax
je 0x6514f0e0
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x48], 0
mov dword [esp], 0x65153180
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov edx, 0xffffffff
mov eax, esi
sub esp, 4
call sym._find_printer_info
mov ecx, dword [ebp - 0x5c]
test eax, eax
mov dword [ebp - 0x64], eax
je 0x6514ebc0
mov dword [esp], 0x65153180
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov ecx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x64]
sub esp, 4
mov edx, dword [ebp + 0x10]
mov dword [ecx + 4], eax
test edx, edx
je 0x6514e8aa
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
test eax, eax
je 0x6514e892
mov dword [ebp - 0x5c], ecx
mov dword [esp], eax
mov eax, dword [ebp - 0x60]
call eax
mov ecx, dword [ebp - 0x5c]
mov dword [ecx + 0x10], eax
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 4]
test eax, eax
je 0x6514e8aa
mov dword [ebp - 0x5c], ecx
call sym._dup_devmode
mov ecx, dword [ebp - 0x5c]
mov dword [ecx + 0x14], eax
mov eax, str.Windows_NT_x86
mov dword [ebp - 0x5c], ecx
call sym._open_driver_reg
mov ecx, dword [ebp - 0x5c]
test eax, eax
mov esi, eax
je 0x6514e8f2
lea eax, [ebp - 0x3c]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp], esi
call dword [sym.imp.advapi32.dll_RegOpenKeyW]
mov ebx, dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 0xc
mov edi, eax
mov dword [esp], esi
call ebx
mov ecx, dword [ebp - 0x5c]
sub esp, 4
test edi, edi
je 0x6514ee15
mov ebx, dword [ecx + 0xc]
test ebx, ebx
jne 0x6514e5d2
mov dword [ebp - 0x5c], ecx
mov eax, dword [ebp - 0x60]
mov dword [esp], str.winprint
call eax
mov ecx, dword [ebp - 0x5c]
mov dword [ecx + 0xc], eax
jmp 0x6514e5d2
lea edx, [edi + 1]
lea eax, [edx + edx]
lea ecx, [esi + eax]
mov dword [ebp - 0x5c], ecx
movzx ecx, word [ecx]
cmp cx, 0x20
jne 0x6514e957
mov dword [ebp - 0x60], edi
lea eax, [esi + eax + 2]
lea esi, [esi]
mov edi, eax
movzx ecx, word [eax]
add eax, 2
add edx, 1
cmp cx, 0x20
je 0x6514e940
mov dword [ebp - 0x5c], edi
mov edi, dword [ebp - 0x60]
mov dword [ebp - 0x60], edx
test cx, cx
je 0x6514e7d6
mov eax, dword [ebp - 0x5c]
mov dword [esp + 8], 4
mov dword [esp + 4], str.Job
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
jne 0x6514e7d6
mov edx, dword [ebp - 0x60]
mov dword [esp + 8], 0xa
mov dword [esp + 4], 0
lea eax, [esi + edx*2 + 8]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcstoul]
mov edx, edi
mov ebx, eax
mov eax, esi
call sym._find_printer_info
mov esi, eax
test eax, eax
je 0x6514eea0
lea eax, [eax + 0x20]
mov dword [ebp - 0x5c], eax
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov edi, dword [esi + 0x38]
lea eax, [esi + 0x38]
sub esp, 4
cmp eax, edi
jne 0x6514e9ea
jmp 0x6514ee8c
mov edi, dword [edi]
cmp edi, eax
je 0x6514ee8c
cmp ebx, dword [edi + 8]
jne 0x6514e9e0
mov dword [esp], 8
call dword [sym.imp.ucrtbase.dll_malloc]
mov ecx, eax
test eax, eax
je 0x6514ef8e
mov dword [ecx], 4
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 7
mov dword [esp + 4], 0x80000000
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x60], ecx
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CreateFileW]
mov ecx, dword [ebp - 0x60]
sub esp, 0x1c
mov dword [ecx + 4], eax
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, esi
sub esp, 4
call sym._release_printer_info
mov ecx, dword [ebp - 0x60]
cmp dword [ecx + 4], 0xffffffff
jne 0x6514e5d2
mov dword [esp], ecx
call dword [sym.imp.ucrtbase.dll_free]
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov dword [eax], 0
jmp 0x6514e5d7
add ecx, 2
lea edx, [ecx + ecx]
lea eax, [esi + edx]
cmp word [eax], 0x20
jne 0x6514eab4
lea ecx, [esi + ecx*2 + 2]
nop
lea esi, [esi]
mov eax, ecx
add ecx, 2
cmp word [ecx - 2], 0x20
je 0x6514eaa8
mov dword [ebp - 0x5c], edx
mov dword [esp + 4], str.Port
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcscmp]
test eax, eax
jne 0x6514e7a3
mov edx, dword [ebp - 0x5c]
mov dword [esp], edx
call dword [sym.imp.ucrtbase.dll_malloc]
mov ebx, eax
test eax, eax
je 0x6514e76c
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], eax
call sym._memcpy
xor eax, eax
mov word [ebx + edi], ax
mov dword [esp + 4], 0xc
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_calloc]
test eax, eax
je 0x6514ef71
mov dword [eax], 3
mov dword [ebp - 0x5c], eax
mov eax, ebx
call sym._monitor_load_by_port
mov ecx, dword [ebp - 0x5c]
mov dword [ecx + 4], eax
test eax, eax
je 0x6514e759
mov edx, dword [eax + 0x1c]
test edx, edx
je 0x6514ee3b
mov edi, dword [eax + 0x28]
test edi, edi
je 0x6514ee3b
mov edi, dword [eax + 0x34]
test edi, edi
je 0x6514ee3b
mov edi, dword [eax + 0x24]
test edi, edi
je 0x6514ee3b
mov edi, dword [eax + 0x30]
test edi, edi
je 0x6514ee3b
lea esi, [ecx + 8]
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov eax, dword [eax + 0x70]
mov dword [ebp - 0x5c], ecx
mov dword [esp], eax
call edx
sub esp, 0xc
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
mov ecx, dword [ebp - 0x5c]
mov eax, dword [ecx + 8]
test eax, eax
jne 0x6514e5d2
mov dword [esp], ecx
call sym._fpClosePrinter_4
mov eax, dword [ebp + 0xc]
xor ecx, ecx
sub esp, 4
mov dword [eax], 0
jmp 0x6514e5d7
lea eax, [ebp - 0x4c]
mov dword [ebp - 0x5c], ecx
mov dword [esp + 8], eax
mov dword [esp + 4], str.SystemCurrentControlSetControlPrintPrinters
mov dword [esp], 0x80000002
call dword [sym.imp.advapi32.dll_RegCreateKeyW]
mov ecx, dword [ebp - 0x5c]
sub esp, 0xc
test eax, eax
je 0x6514ec3a
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x5c], ecx
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov ecx, dword [ebp - 0x5c]
sub esp, 4
mov dword [ebp - 0x5c], ecx
mov dword [esp], 0x65153180
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov ecx, dword [ebp - 0x5c]
sub esp, 4
mov dword [ecx + 4], 0
mov dword [esp], ecx
call sym._fpClosePrinter_4
xor ecx, ecx
mov eax, dword fs:[0x18]
sub esp, 4
mov dword [eax + 0x34], 0x709
jmp 0x6514e5d2
lea eax, [ebp - 0x48]
mov dword [ebp - 0x68], ecx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x4c]
mov dword [esp + 4], esi
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegOpenKeyW]
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x4c]
sub esp, 0xc
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0x5c], eax
call eax
mov edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x68]
sub esp, 4
test edx, edx
jne 0x6514ebfe
mov dword [ebp - 0x64], ecx
mov dword [esp + 4], 0x40
mov dword [esp], 1
call edi
mov ecx, dword [ebp - 0x64]
test eax, eax
mov edi, eax
je 0x6514f0b4
mov dword [ebp - 0x64], ecx
mov eax, dword [ebp - 0x60]
mov dword [esp], esi
call eax
mov edx, 0x6515636c
mov dword [edi], eax
mov eax, dword [ebp - 0x48]
call sym._reg_query_value
mov edx, str.Print_Processor
mov dword [edi + 0x10], eax
mov eax, dword [ebp - 0x48]
call sym._reg_query_value
mov edx, str.Datatype
mov dword [edi + 0x14], eax
mov eax, dword [ebp - 0x48]
call sym._reg_query_value
mov dword [ebp - 0x3c], 4
mov dword [edi + 0x18], eax
lea eax, [ebp - 0x3c]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x40]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x44]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x48]
mov dword [esp + 8], 0
mov dword [esp + 4], str.Attributes
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegQueryValueExW]
mov ecx, dword [ebp - 0x64]
mov edx, eax
sub esp, 0x18
xor eax, eax
test edx, edx
jne 0x6514ed24
cmp dword [ebp - 0x44], 4
jne 0x6514ed24
mov eax, dword [ebp - 0x40]
mov dword [edi + 0x1c], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x64], ecx
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov eax, dword [edi]
mov ecx, dword [ebp - 0x64]
sub esp, 4
test eax, eax
je 0x6514ee5c
mov esi, dword [edi + 0x10]
test esi, esi
je 0x6514ee5c
mov edx, dword [edi + 0x14]
test edx, edx
je 0x6514ee5c
mov esi, dword [edi + 0x18]
test esi, esi
je 0x6514ee5c
mov edx, dword [0x6515314c]
lea eax, [edi + 4]
mov dword [ebp - 0x5c], ecx
mov dword [edi + 0xc], 1
mov dword [edi + 4], edx
mov dword [edi + 8], 0x6515314c
mov dword [0x6515314c], eax
mov dword [edx + 4], eax
lea eax, [edi + 0x20]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_InitializeCriticalSection]
lea eax, [edi + 0x38]
sub esp, 4
mov dword [edi + 0x3c], eax
mov dword [edi + 0x38], eax
mov dword [esp], 0x65153180
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov ecx, dword [ebp - 0x5c]
mov eax, edi
sub esp, 4
jmp 0x6514e86e
mov dword [esp + 8], 8
mov dword [esp + 4], str.XcvPort
mov dword [esp], edi
call edx
test eax, eax
jne 0x6514eebd
mov dword [esp + 4], 0xc
lea ebx, [edi + 0x10]
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_calloc]
test eax, eax
je 0x6514e76c
mov dword [eax], 2
mov dword [ebp - 0x5c], eax
mov eax, ebx
call sym._monitor_load_by_port
mov ecx, dword [ebp - 0x5c]
mov dword [ecx + 4], eax
jmp 0x6514e58a
mov eax, dword [ebp - 0x3c]
mov edx, str.Print_Processor
call sym._reg_query_value
mov ecx, dword [ebp - 0x5c]
mov dword [ecx + 0xc], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call ebx
mov ecx, dword [ebp - 0x5c]
sub esp, 4
jmp 0x6514e8f2
test byte [0x651531d8], 1
jne 0x6514eee4
mov dword [ebp - 0x5c], ecx
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
mov ecx, dword [ebp - 0x5c]
jmp 0x6514eb9e
mov dword [ebp - 0x5c], ecx
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], eax
call ebx
mov eax, dword [edi + 0x10]
mov dword [esp], eax
call ebx
mov eax, dword [edi + 0x14]
mov dword [esp], eax
call ebx
mov eax, dword [edi + 0x18]
mov dword [esp], eax
call ebx
mov dword [esp], edi
call ebx
jmp 0x6514ec01
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
push eax
mov eax, esi
call sym._release_printer_info
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x709
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov dword [eax], 0
jmp 0x6514e5d7
mov eax, dword [ebp + 0xc]
mov dword [eax], 0
movzx eax, word [esi]
cmp ax, 0x2c
jne 0x6514e780
mov edx, 2
mov ecx, 1
xor edi, edi
jmp 0x6514ea96
mov edx, 0xffffffff
mov eax, esi
mov dword [ebp - 0x5c], ecx
call sym._wine_dbgstr_wn
mov dword [esp + 0xc], str.port_not_supported:__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.port_alloc_handle
mov dword [esp + 4], 0x651531d8
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_1
mov ecx, dword [ebp - 0x5c]
jmp 0x6514ee48
mov dword [esp], ecx
call dword [sym.imp.ucrtbase.dll_free]
xor ecx, ecx
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x704
mov eax, dword [ebp + 0xc]
mov dword [eax], 0
jmp 0x6514e5d7
mov dword [esp], ecx
call sym._fpClosePrinter_4
xor ecx, ecx
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x57
mov eax, dword [ebp + 0xc]
sub esp, 4
mov dword [eax], 0
jmp 0x6514e5d7
mov dword [ebp - 0x5c], eax
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x5c]
mov dword [eax], 0
jmp 0x6514e5d7
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x60], ecx
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
push eax
mov eax, esi
call sym._release_printer_info
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x60]
mov dword [eax], 0
jmp 0x6514e5d7
movzx eax, word [ebx]
cmp ax, 0x5c
jne 0x6514e4f4
cmp word [ebx + 2], 0x5c
jne 0x6514e603
lea eax, [ebx + 4]
mov dword [esp + 4], 0x5c
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcschr]
mov edi, eax
test eax, eax
je 0x6514f060
cmp word [eax + 2], 0
je 0x6514f060
lea esi, [eax + 2]
cmp ebx, esi
je 0x6514e4ff
test byte [0x651531d8], 8
je 0x6514e4ff
or edx, 0xffffffff
mov eax, esi
call sym._wine_dbgstr_wn
or edx, 0xffffffff
mov dword [ebp - 0x5c], eax
mov eax, ebx
call sym._wine_dbgstr_wn
mov ecx, dword [ebp - 0x5c]
mov dword [esp + 0xc], str.converted__s_to__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 8], str.fpOpenPrinter
mov dword [esp + 4], 0x651531d8
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_1
movzx eax, word [edi + 2]
jmp 0x6514e4f6
test byte [0x651531d8], 8
je 0x6514e660
or edx, 0xffffffff
xor eax, eax
call sym._wine_dbgstr_wn
or edx, 0xffffffff
mov esi, eax
mov eax, ebx
call sym._wine_dbgstr_wn
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.converted__s_to__s_n
mov dword [esp + 8], str.fpOpenPrinter
mov dword [esp + 4], 0x651531d8
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_1
jmp 0x6514e660
mov dword [ebp - 0x60], ecx
mov dword [esp], 0x65153180
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x48]
push edi
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov ecx, dword [ebp - 0x60]
push eax
mov dword [ecx + 4], 0
jmp 0x6514ec1b
mov dword [esp], ecx
call sym._fpClosePrinter_4
xor ecx, ecx
push eax
jmp 0x6514e5d2