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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x3c
mov ebx, dword [ebp + 0x14]
test byte [0x1001a0b8], 8
jne 0x100127f8
test ebx, ebx
je 0x100125ea
test byte [0x1001a0b8], 1
jne 0x10012780
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x100127b6
mov eax, dword [0x10021020]
test eax, eax
je 0x100127d0
mov eax, dword [ebp + 8]
call fcn.10003bc0
mov ebx, eax
test eax, eax
jne 0x10012728
mov eax, dword [ebp + 8]
test eax, eax
je 0x10012634
mov eax, dword [ebp + 8]
movzx eax, word [eax]
cmp ax, 0x5c
je 0x10012898
test ax, ax
je 0x10012b20
mov eax, dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov dword [esp], 0x1001a0a0
xor ebx, ebx
mov dword [ebp - 0x24], eax
call eax
mov esi, dword [0x10021004]
mov eax, dword [0x10021008]
sub esp, 4
test esi, esi
jne 0x1001266b
jmp 0x10012bee
add ebx, 1
cmp ebx, esi
je 0x100129c8
mov edi, dword [eax + ebx*4]
test edi, edi
jne 0x10012660
cmp ebx, esi
jb 0x100126b9
lea edi, [esi + 0x10]
mov dword [ebp - 0x28], edi
mov edi, dword [ebp - 0x28]
mov dword [esp], eax
lea edx, [edi*4]
mov dword [esp + 4], edx
call dword [sym.imp.ucrtbase.dll_realloc]
mov ecx, 0x10
lea esi, [eax + esi*4]
mov edx, eax
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
test edx, edx
je 0x10012c8e
mov eax, dword [ebp - 0x28]
mov dword [0x10021008], edx
mov dword [0x10021004], eax
mov dword [esp + 4], 8
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_calloc]
mov esi, eax
test eax, eax
je 0x10012c8e
mov eax, dword [ebp + 0x10]
mov dword [esp + 8], eax
lea eax, [esi + 4]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [0x10021020]
call dword [eax]
sub esp, 0xc
test eax, eax
jne 0x10012930
mov dword [esp], 0x1001a0a0
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, dword [esi]
sub esp, 4
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], eax
call ebx
mov dword [esp], esi
call ebx
jmp 0x1001274b
test byte [0x1001a0b8], 1
jne 0x10012ad8
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x709
mov eax, dword [ebp + 0xc]
xor ebx, ebx
xor edx, edx
mov dword [eax], ebx
xor eax, eax
lea esi, [esi]
lea esi, [esi]
test byte [0x1001a0b8], 8
jne 0x10012840
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
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 + 4], 0x1001a0b8
mov dword [esp], 0
mov dword [esp + 0x10], eax
call fcn.100032c0
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x100125f5
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 0x10
call fcn.100188a0
test eax, eax
je 0x1001274b
mov eax, dword [ebp + 8]
call fcn.10003bc0
mov ebx, eax
test eax, eax
je 0x10012614
jmp 0x10012728
mov eax, dword [ebp + 8]
call fcn.10002fe0
mov dword [esp + 0x1c], ebx
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.__s__p__p__p__n
mov dword [esp + 8], str.OpenPrinter2W
mov dword [esp + 0x14], ecx
mov dword [esp + 4], 0x1001a0b8
mov dword [esp], 3
call fcn.100032c0
jmp 0x100125d9
mov dword [esp + 0x18], edx
mov ecx, dword fs:[0x18]
mov edx, dword [ecx + 0x34]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.returning__d_with__lu_and__p_n
mov dword [esp + 8], str.OpenPrinter2W
mov dword [esp + 4], 0x1001a0b8
mov dword [esp + 0x14], edx
mov dword [esp], 3
call fcn.100032c0
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
test eax, eax
setne al
lea esp, [ebp - 0xc]
movzx eax, al
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0x5c
jne 0x10012634
add eax, 4
mov dword [esp + 4], 0x5c
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcschr]
mov esi, eax
test eax, eax
je 0x10012c0b
cmp word [eax + 2], 0
je 0x10012c0b
lea eax, [eax + 2]
cmp dword [ebp + 8], eax
je 0x10012634
test byte [0x1001a0b8], 8
je 0x10012634
call fcn.10002fe0
mov ebx, eax
mov eax, dword [ebp + 8]
call fcn.10002fe0
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], 0x1001a0b8
mov dword [esp], 3
call fcn.100032c0
movzx eax, word [esi + 2]
jmp 0x1001262b
mov eax, dword [ebp + 8]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wcsdup]
mov ecx, dword [ebp + 8]
mov dword [esi], eax
test ecx, ecx
je 0x1001294d
test eax, eax
je 0x100126fe
mov eax, dword [0x10021008]
lea edi, [ebx + 1]
mov dword [eax + ebx*4], esi
mov esi, dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov dword [esp], 0x1001a0a0
call esi
mov eax, dword [ebp + 0xc]
sub esp, 4
mov dword [eax], edi
mov dword [esp], 0x1001a0a0
mov eax, dword [ebp - 0x24]
call eax
sub esp, 4
cmp dword [0x10021004], edi
jb 0x10012b10
mov eax, dword [0x10021008]
mov ebx, dword [eax + ebx*4]
mov dword [esp], 0x1001a0a0
call esi
sub esp, 4
test ebx, ebx
je 0x100129b4
mov eax, dword [ebx]
test eax, eax
je 0x100129b4
lea edx, [ebp - 0x20]
call fcn.100027d0
test eax, eax
je 0x100129f8
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
xor eax, eax
test edx, edx
setne al
jmp 0x10012760
lea edi, [ebx + 0x10]
mov dword [ebp - 0x28], edi
test eax, eax
jne 0x1001267c
mov dword [esp + 4], 4
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_calloc]
mov edx, eax
jmp 0x100126a3
lea eax, [ebp - 0x18]
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 4
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x1c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x14]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov dword [esp + 4], str.WineMayDeleteMe
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegQueryValueExW]
sub esp, 0x18
mov dword [esp + 4], 0xffffffff
mov eax, dword [section..bss]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_WaitForSingleObject]
mov eax, dword [ebp - 0x20]
mov edx, str.Status
sub esp, 8
call fcn.10003830
mov ebx, eax
and eax, 0xfbffffff
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x10]
mov dword [esp + 0x14], 4
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 4
mov dword [esp + 8], 0
mov dword [esp + 4], str.Status
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegSetValueExW]
mov eax, dword [section..bss]
sub esp, 0x18
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReleaseMutex]
mov edx, dword [ebp - 0x1c]
sub esp, 4
test edx, edx
jne 0x10012ac0
and ebx, 0x4000000
jne 0x10012b32
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x100129b4
call fcn.10002fe0
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], 0x1001a0b8
mov dword [esp], 0
call fcn.100032c0
jmp 0x10012735
mov dword [esp], 0x1001a0a0
call esi
jmp 0x10012acc
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0x57
jmp 0x1001274b
mov eax, dword [ebp + 0xc]
mov ebx, dword [eax]
mov dword [esp], 0x1001a0a0
mov eax, dword [ebp - 0x24]
call eax
sub esp, 4
test ebx, ebx
je 0x10012bfa
cmp dword [0x10021004], ebx
jb 0x10012bfa
mov eax, dword [0x10021008]
mov edi, dword [eax + ebx*4 - 4]
mov dword [esp], 0x1001a0a0
call esi
sub esp, 4
test edi, edi
je 0x10012ac0
mov edi, dword [edi]
test edi, edi
je 0x10012ac0
call fcn.100036e0
mov esi, eax
test eax, eax
je 0x10012ac0
test byte [0x1001a0b8], 8
jne 0x10012c5a
mov edx, esi
mov eax, edi
call fcn.10012030
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_free]
mov eax, ebx
call fcn.1000fcd0
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 0x10012ac0
mov dword [ebp - 0x28], 0x10
jmp 0x100129ce
mov dword [esp], 0x1001a0a0
call esi
sub esp, 4
jmp 0x10012ac0
test byte [0x1001a0b8], 8
je 0x10012634
xor eax, eax
call fcn.10002fe0
mov ebx, eax
mov eax, dword [ebp + 8]
call fcn.10002fe0
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], 0x1001a0b8
mov dword [esp], 3
call fcn.100032c0
jmp 0x10012634
mov eax, edi
call fcn.10002fe0
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], 0x1001a0b8
mov dword [esp], 3
call fcn.100032c0
jmp 0x10012b9d
mov dword [esp], 0x1001a0a0
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
push esi
jmp 0x1001274b