Function at 0x402af0
Capabilities:
Check if file exists
Copy file
Set registry value

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb8
mov r14, qword [rcx]
mov dword [rsp + 0x110], r8d
mov rbx, rdx
cmp rcx, r14
je 0x402e51
mov qword [rsp + 0x100], rcx
mov r15, qword [sym.imp.ucrtbase.dll__wcsicmp]
lea rbp, [0x0040b072]
mov rdi, qword [sym.imp.ucrtbase.dll_wcscmp]
nop word [rax + rax]
mov rcx, qword [r14 + 0x28]
mov rdx, qword [rbx]
call r15
mov r12d, eax
test eax, eax
jne 0x402e40
mov rsi, qword [rbx + 0x10]
mov r13, qword [r14 + 0x38]
mov rdx, rsi
mov rcx, r13
call rdi
test eax, eax
jne 0x402e20
mov r8, qword [rbx + 0x18]
mov r13, qword [r14 + 0x40]
mov qword [rsp + 0x58], r8
mov rdx, r8
mov rcx, r13
call rdi
mov r8, qword [rsp + 0x58]
test eax, eax
jne 0x402ed8
mov r8, qword [rbx + 0x20]
mov r13, qword [r14 + 0x48]
mov qword [rsp + 0x58], r8
mov rdx, r8
mov rcx, r13
call rdi
mov r8, qword [rsp + 0x58]
test eax, eax
jne 0x402f20
mov dword [rsp + 0x88], r12d
mov r13, qword [rbx + 8]
mov r12, qword [r14 + 0x30]
mov rsi, qword [rsp + 0x100]
mov rdx, r13
mov rcx, r12
call rdi
test eax, eax
jne 0x403d00
mov rax, qword [r14 + 0x28]
mov qword [rsp + 0x80], rax
mov eax, dword [r14 + 0x10]
cmp eax, 2
je 0x403e40
cmp eax, 1
je 0x403fa8
mov rbx, qword [r14 + 0x50]
lea rbp, [r14 + 0x50]
mov dword [r14 + 0x10], 1
mov r12d, dword [rsp + 0x110]
cmp rbx, rbp
je 0x402c37
lea rdx, [rbx + 0x10]
mov r8d, r12d
mov rcx, rsi
call sym.install_assembly
test eax, eax
je 0x402df0
mov rbx, qword [rbx]
cmp rbx, rbp
jne 0x402c18
test byte [section..data], 8
je 0x402cda
mov esi, dword [rsp + 0x110]
lea rax, [0x0040b349]
lea rbx, str.__dryrun_
test esi, esi
mov rsi, qword [rsp + 0x80]
cmove rbx, rax
lea rax, [0x0040b00e]
test rsi, rsi
je 0x402cb1
shr rsi, 0x10
je 0x4042d0
mov rsi, qword [rsp + 0x80]
mov rdx, 0xffffffffffffffff
mov rcx, rsi
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x402cb1
mov edx, 0xffffffff
mov rcx, rsi
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x28], rbx
lea r9, str.Installing_assembly__s_s_n
lea r8, str.install_assembly
mov ecx, 3
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
mov rcx, qword [r14 + 0x18]
call qword [sym.imp.ucrtbase.dll__wcsdup]
mov r15, rax
test rax, rax
je 0x404251
mov edx, 0x2e
mov rcx, rax
call qword [sym.imp.ucrtbase.dll_wcsrchr]
test rax, rax
je 0x402d08
xor ebx, ebx
mov word [rax], bx
mov rbx, qword [r14 + 0x60]
lea rsi, [r14 + 0x60]
cmp rbx, rsi
je 0x402f88
nop dword [rax]
mov rdx, qword [rbx + 0x18]
mov rcx, r14
call sym.expand_expression
mov rbp, rax
test rax, rax
je 0x402dd0
mov rdx, qword [rbx + 0x10]
test rdx, rdx
je 0x402f10
mov rcx, rax
call sym.path_combine.part.0
mov r12, rax
test rax, rax
je 0x402f10
mov rdx, qword [rbx + 0x10]
test rdx, rdx
je 0x403340
mov rcx, r15
call sym.path_combine.part.0
mov r13, rax
test rax, rax
je 0x403340
mov r11d, dword [rsp + 0x110]
test r11d, r11d
jne 0x402f50
test byte [section..data], 8
jne 0x403ef8
mov rcx, r12
call sym.create_parent_directory
test eax, eax
jne 0x403268
test byte [section..data], 2
jne 0x4033c6
mov rcx, rbp
call qword [sym.imp.ucrtbase.dll_free]
mov rcx, r12
call qword [sym.imp.ucrtbase.dll_free]
mov rcx, r13
call qword [sym.imp.ucrtbase.dll_free]
mov rcx, r15
call qword [sym.imp.ucrtbase.dll_free]
test byte [section..data], 2
jne 0x40414e
nop word cs:[rax + rax]
mov dword [rsp + 0x88], 0
mov eax, dword [rsp + 0x88]
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rdx, rbp
mov rcx, r13
call rdi
test eax, eax
je 0x402b6d
mov rdx, rbp
mov rcx, rsi
call rdi
test eax, eax
je 0x402b6d
mov r14, qword [r14]
cmp qword [rsp + 0x100], r14
jne 0x402b40
test byte [section..data], 1
je 0x402df0
mov r12, qword [rbx]
lea rax, [0x0040b00e]
test r12, r12
je 0x402ea2
mov rax, r12
shr rax, 0x10
je 0x404379
mov rdx, 0xffffffffffffffff
mov rcx, r12
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x402ea2
mov edx, 0xffffffff
mov rcx, r12
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Assembly__s_not_found_n
lea r8, str.install_assembly
xor ecx, ecx
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
mov dword [rsp + 0x88], 0
jmp 0x402dfb
mov qword [rsp + 0x58], r8
mov rdx, rbp
mov rcx, r13
call rdi
mov r8, qword [rsp + 0x58]
test eax, eax
je 0x402b8f
mov rdx, rbp
mov rcx, r8
call rdi
test eax, eax
je 0x402b8f
jmp 0x402e40
mov rcx, rbp
call qword [sym.imp.ucrtbase.dll_free]
jmp 0x402dd0
mov qword [rsp + 0x58], r8
mov rdx, rbp
mov rcx, r13
call rdi
mov r8, qword [rsp + 0x58]
test eax, eax
je 0x402bb1
mov rdx, rbp
mov rcx, r8
call rdi
test eax, eax
je 0x402bb1
jmp 0x402e40
mov rcx, rax
call qword [sym.imp.shlwapi.dll_PathFileExistsW]
test eax, eax
je 0x403357
mov rcx, rbp
call qword [sym.imp.ucrtbase.dll_free]
mov rcx, r12
call qword [sym.imp.ucrtbase.dll_free]
mov rcx, r13
call qword [sym.imp.ucrtbase.dll_free]
mov rbx, qword [rbx]
cmp rbx, rsi
jne 0x402d20
mov rcx, r15
lea rbx, [r14 + 0x70]
call qword [sym.imp.ucrtbase.dll_free]
mov rcx, qword [r14 + 0x38]
lea rdx, [0x0040b102]
call rdi
mov qword [rsp + 0x78], rbx
cmp eax, 1
sbb eax, eax
and eax, 0x200
add eax, 0xf003f
mov dword [rsp + 0x8c], eax
mov rax, qword [r14 + 0x70]
mov qword [rsp + 0x68], rax
cmp rbx, rax
je 0x403495
mov qword [rsp + 0x60], r14
nop dword [rax]
mov rax, qword [rsp + 0x68]
mov edx, 0x5c
mov r13, qword [rax + 0x10]
mov rcx, r13
call qword [sym.imp.ucrtbase.dll_wcschr]
mov rbx, rax
test rax, rax
je 0x4031cf
mov rsi, rax
lea rax, str.HKEY_CLASSES_ROOT
sub rsi, r13
sar rsi, 1
nop dword [rax + rax]
add rax, 2
cmp word [rax], 0
jne 0x403010
lea rdx, str.HKEY_CLASSES_ROOT
mov r12d, esi
sub rax, rdx
sar rax, 1
cmp esi, eax
je 0x403c40
lea rdx, str.HKEY_CURRENT_CONFIG
mov rax, rdx
nop dword [rax]
add rax, 2
cmp word [rax], 0
jne 0x403040
sub rax, rdx
sar rax, 1
cmp esi, eax
je 0x403c70
lea rdx, str.HKEY_CURRENT_USER
mov rax, rdx
nop word [rax + rax]
add rax, 2
cmp word [rax], 0
jne 0x403068
sub rax, rdx
sar rax, 1
cmp esi, eax
je 0x403ca0
lea rdx, str.HKEY_LOCAL_MACHINE
mov rax, rdx
nop word [rax + rax]
add rax, 2
cmp word [rax], 0
jne 0x403090
sub rax, rdx
sar rax, 1
cmp esi, eax
je 0x403cd0
lea rdx, str.HKEY_USERS
mov rax, rdx
nop word [rax + rax]
add rax, 2
cmp word [rax], 0
jne 0x4030b8
sub rax, rdx
sar rax, 1
cmp esi, eax
jne 0x403870
mov r8d, esi
lea rdx, str.HKEY_USERS
mov rcx, r13
call qword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
jne 0x403870
mov r12, 0xffffffff80000003
test byte [section..data], 8
jne 0x403a70
mov r10d, dword [rsp + 0x110]
test r10d, r10d
je 0x403af3
mov rax, qword [rsp + 0x68]
mov rsi, qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x58], rax
cmp rsi, rax
je 0x403478
nop dword [rax + rax]
lea rax, section..data
mov r12, qword [rsp + 0x98]
test byte [rax], 8
jne 0x4034c0
mov rcx, qword [rsi + 0x18]
lea rdx, str.REG_SZ
call rdi
test eax, eax
je 0x403430
mov rcx, qword [rsi + 0x18]
lea rdx, str.REG_EXPAND_SZ
call rdi
test eax, eax
je 0x403580
mov rcx, qword [rsi + 0x18]
lea rdx, str.REG_MULTI_SZ
call rdi
test eax, eax
je 0x4035b0
mov rcx, qword [rsi + 0x18]
lea rdx, str.REG_DWORD
call rdi
mov rcx, qword [rsi + 0x18]
test eax, eax
je 0x4036e0
lea rdx, str.REG_BINARY
call rdi
mov ebx, eax
test eax, eax
je 0x4038f0
test byte [section..data], 1
jne 0x403798
mov eax, dword [rsp + 0x110]
test eax, eax
je 0x40374b
movzx eax, byte [section..data]
nop word cs:[rax + rax]
test al, 2
je 0x402df0
mov rdi, qword [rsp + 0x80]
lea rax, [0x0040b00e]
test rdi, rdi
je 0x40323a
shr rdi, 0x10
je 0x4044d4
mov rdi, qword [rsp + 0x80]
mov rdx, 0xffffffffffffffff
mov rcx, rdi
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x40323a
mov edx, 0xffffffff
mov rcx, rdi
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Failed_to_install_registry_keys_for__s_n
lea r8, str.install_assembly
mov ecx, 1
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402dfb
xor r9d, r9d
xor r8d, r8d
mov rdx, r12
mov rcx, r13
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call qword [sym.imp.kernel32.dll_CopyFileExW]
test eax, eax
jne 0x402f61
test byte [section..data], 2
je 0x402db5
mov rax, r12
shr rax, 0x10
je 0x4044a7
mov rdx, 0xffffffffffffffff
mov rcx, r12
lea rbx, [0x0040b015]
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
test eax, eax
jne 0x4032d8
mov edx, 0xffffffff
mov rcx, r12
call sym.wine_dbgstr_wn.part.0
mov rbx, rax
mov rax, r13
shr rax, 0x10
je 0x40447d
mov rdx, 0xffffffffffffffff
mov rcx, r13
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x403311
mov edx, 0xffffffff
mov rcx, r13
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x28], rbx
lea r9, str.Failed_to_copy__s_to__s_n
lea r8, str.install_files_copy
mov ecx, 1
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402db5
mov rcx, rbp
call qword [sym.imp.ucrtbase.dll_free]
mov rcx, r12
call qword [sym.imp.ucrtbase.dll_free]
jmp 0x402dd0
test byte [section..data], 2
je 0x402db5
mov rax, r13
shr rax, 0x10
je 0x404492
mov rdx, 0xffffffffffffffff
mov rcx, r13
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x40339d
mov edx, 0xffffffff
mov rcx, r13
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Required_file__s_not_found_n
lea r8, str.install_files_copy
mov ecx, 1
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402db5
mov rax, r12
shr rax, 0x10
je 0x4041c9
mov rdx, 0xffffffffffffffff
mov rcx, r12
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x4033ff
mov edx, 0xffffffff
mov rcx, r12
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Failed_to_create_parent_directory_for__s_n
lea r8, str.install_files_copy
mov ecx, 1
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402db5
mov eax, dword [rsp + 0x110]
mov rcx, qword [rsp + 0x60]
mov r8, rsi
mov rdx, r12
mov r9d, 1
mov dword [rsp + 0x20], eax
call sym.install_registry_string
test eax, eax
je 0x4031c0
mov rsi, qword [rsi]
cmp rsi, qword [rsp + 0x58]
jne 0x403130
cmp dword [rsp + 0x110], 0
je 0x403b5b
nop dword [rax]
mov rax, qword [rsp + 0x68]
mov rax, qword [rax]
mov qword [rsp + 0x68], rax
cmp qword [rsp + 0x78], rax
jne 0x402fd8
mov r14, qword [rsp + 0x60]
test byte [section..data], 8
jne 0x4042e9
mov dword [r14 + 0x10], 2
mov dword [rsp + 0x88], 1
jmp 0x402dfb
mov r13, qword [rsi + 0x20]
lea rbx, [0x0040b00e]
test r13, r13
je 0x403508
mov rax, r13
shr rax, 0x10
je 0x403768
mov rdx, 0xffffffffffffffff
mov rcx, r13
lea rbx, [0x0040b015]
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
test eax, eax
jne 0x403508
mov edx, 0xffffffff
mov rcx, r13
call sym.wine_dbgstr_wn.part.0
mov rbx, rax
mov r13, qword [rsi + 0x10]
lea rax, [0x0040b00e]
test r13, r13
je 0x403551
mov rax, r13
shr rax, 0x10
je 0x403780
mov rdx, 0xffffffffffffffff
mov rcx, r13
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x403551
mov edx, 0xffffffff
mov rcx, r13
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x28], rbx
lea r9, str.Setting_registry_key__s___s_n
lea r8, str.install_registry_value
mov ecx, 3
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x403148
mov eax, dword [rsp + 0x110]
mov rcx, qword [rsp + 0x60]
mov r8, rsi
mov rdx, r12
mov r9d, 2
mov dword [rsp + 0x20], eax
call sym.install_registry_string
jmp 0x403451
mov r13, qword [rsi + 0x20]
test r13, r13
je 0x4036bb
cmp word [r13], 0
je 0x4036b6
mov rax, qword [0x0040bcc8]
mov ecx, pe_nt_image_headers64
mov qword [rsp + 0xa8], rax
call qword [sym.imp.ucrtbase.dll_malloc]
mov qword [rsp + 0xa0], rax
test rax, rax
je 0x404502
movzx eax, word [r13]
lea rbp, [0x0040b642]
lea rbx, [rsp + 0xa0]
lea r14, [0x0040b646]
cmp ax, 0x22
jne 0x403b75
mov qword [rsp + 0x70], r12
mov r9, r13
jmp 0x403678
mov r8, rax
mov rdx, r12
mov rcx, rbx
sub r8, r12
sar r8, 1
call sym.strbuf_append.isra.0
mov rdx, r14
mov r8d, 1
mov rcx, rbx
call sym.strbuf_append.isra.0
movzx edx, word [r15 + 2]
test dx, dx
je 0x403bb0
cmp dx, 0x2c
jne 0x403c00
movzx eax, word [r15 + 4]
lea r9, [r15 + 4]
cmp ax, 0x22
jne 0x403b70
lea r12, [r9 + 2]
mov rdx, rbp
mov rcx, r12
call qword [sym.imp.ucrtbase.dll_wcsstr]
mov r15, rax
test rax, rax
jne 0x403628
mov r12, qword [rsp + 0x70]
mov rcx, qword [rsp + 0xa0]
call qword [sym.imp.ucrtbase.dll_free]
mov rax, qword [rsi + 0x20]
test rax, rax
je 0x4036b6
cmp word [rax], 0
jne 0x4031c0
xor eax, eax
xor r13d, r13d
mov r9d, dword [rsp + 0x110]
test r9d, r9d
je 0x403810
mov rcx, r13
call qword [sym.imp.ucrtbase.dll_free]
jmp 0x403459
test rcx, rcx
je 0x4036f3
mov r8d, 0x10
xor edx, edx
call qword [sym.imp.ucrtbase.dll_wcstoul]
mov r8d, dword [rsp + 0x110]
mov dword [rsp + 0xa0], eax
test r8d, r8d
jne 0x403459
mov rdx, qword [rsi + 0x10]
xor r8d, r8d
mov r9d, 4
mov rcx, r12
lea rax, [rsp + 0xa0]
mov dword [rsp + 0x28], 4
mov qword [rsp + 0x20], rax
call qword [sym.imp.advapi32.dll_RegSetValueExW]
test eax, eax
je 0x403459
test byte [section..data], 2
jne 0x4040c7
mov rcx, qword [rsp + 0x98]
call qword [sym.imp.advapi32.dll_RegCloseKey]
movzx eax, byte [section..data]
jmp 0x4031e0
movzx edx, r13w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
mov rbx, rax
jmp 0x403508
movzx edx, r13w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x403551
mov r12, qword [rsi + 0x18]
lea rax, [0x0040b00e]
test r12, r12
je 0x4037e1
mov rax, r12
shr rax, 0x10
je 0x403ee0
mov rdx, 0xffffffffffffffff
mov rcx, r12
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x4037e1
mov edx, 0xffffffff
mov rcx, r12
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Unsupported_registry_value_type__s_n
lea r8, str.install_registry_value
xor ecx, ecx
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x4031c0
mov rdx, qword [rsi + 0x10]
xor r8d, r8d
mov dword [rsp + 0x28], eax
mov rcx, r12
mov qword [rsp + 0x20], r13
mov r9d, 7
call qword [sym.imp.advapi32.dll_RegSetValueExW]
test eax, eax
je 0x4036cc
test byte [section..data], 2
jne 0x404055
mov rcx, r13
call qword [sym.imp.ucrtbase.dll_free]
mov rcx, qword [rsp + 0x98]
call qword [sym.imp.advapi32.dll_RegCloseKey]
movzx eax, byte [section..data]
jmp 0x4031e0
movzx eax, byte [section..data]
test al, 1
je 0x4031e0
lea rax, [0x0040b00e]
test r13, r13
je 0x4038be
mov rax, r13
shr rax, 0x10
je 0x4042b1
movsxd rdx, r12d
mov rcx, r13
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x4038be
mov edx, r12d
mov rcx, r13
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Unknown_root_key__s_n
lea r8, str.split_registry_key
xor ecx, ecx
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
movzx eax, byte [section..data]
jmp 0x4031e0
mov r15, qword [rsi + 0x20]
xor ecx, ecx
mov dword [rsp + 0xa0], 0
mov word [rsp + 0xa4], cx
test r15, r15
je 0x4042c6
movzx edx, word [r15]
mov rax, r15
test dx, dx
je 0x404238
nop word [rax + rax]
add rax, 2
cmp word [rax], 0
jne 0x403928
sub rax, r15
mov dword [rsp + 0x70], edx
mov rbx, rax
sar rbx, 1
test al, 2
jne 0x4031c0
sar ebx, 1
movsxd rcx, ebx
call qword [sym.imp.ucrtbase.dll_malloc]
mov r13, rax
test rax, rax
je 0x4031c0
lea rax, [rsp + 0xa0]
mov rbp, qword [sym.imp.ucrtbase.dll_wcstoul]
mov edx, dword [rsp + 0x70]
mov dword [rsp + 0x70], ebx
mov r14, rax
mov rbx, r13
nop dword [rax + rax]
mov word [rsp + 0xa0], dx
movzx eax, word [r15 + 2]
xor edx, edx
mov rcx, r14
mov r8d, 0x10
add rbx, 1
add r15, 4
mov word [rsp + 0xa2], ax
call rbp
mov byte [rbx - 1], al
movzx edx, word [r15]
test dx, dx
jne 0x403980
mov ebx, dword [rsp + 0x70]
mov edx, dword [rsp + 0x110]
test edx, edx
jne 0x4036cc
mov rdx, qword [rsi + 0x10]
xor r8d, r8d
mov dword [rsp + 0x28], ebx
mov rcx, r12
mov qword [rsp + 0x20], r13
mov r9d, 3
call qword [sym.imp.advapi32.dll_RegSetValueExW]
test eax, eax
je 0x4036cc
test byte [section..data], 2
je 0x403844
mov r12, qword [rsi + 0x10]
lea rax, [0x0040b00e]
test r12, r12
je 0x403a46
mov rax, r12
shr rax, 0x10
je 0x4044bf
mov rdx, 0xffffffffffffffff
mov rcx, r12
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x403a46
mov edx, 0xffffffff
mov rcx, r12
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Failed_to_set_registry_key__s_n
lea r8, str.install_registry_binary
mov ecx, 1
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x403844
mov rax, qword [rsp + 0x68]
mov r13, qword [rax + 0x10]
lea rax, [0x0040b00e]
test r13, r13
je 0x403abe
mov rax, r13
shr rax, 0x10
je 0x404030
mov rdx, 0xffffffffffffffff
mov rcx, r13
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x403abe
mov edx, 0xffffffff
mov rcx, r13
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Processing_registry_key__s_n
lea r8, str.install_registry
mov ecx, 3
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
mov r10d, dword [rsp + 0x110]
test r10d, r10d
jne 0x403110
xor r9d, r9d
xor r8d, r8d
lea rdx, [rbx + 2]
mov rcx, r12
lea rax, [rsp + 0x98]
mov dword [rsp + 0x20], 0
mov qword [rsp + 0x38], rax
mov eax, dword [rsp + 0x8c]
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], eax
call qword [sym.imp.advapi32.dll_RegCreateKeyExW]
test eax, eax
jne 0x4043c0
mov rax, qword [rsp + 0x68]
mov rsi, qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x58], rax
cmp rsi, rax
jne 0x403130
mov rcx, qword [rsp + 0x98]
call qword [sym.imp.advapi32.dll_RegCloseKey]
jmp 0x403478
mov r12, qword [rsp + 0x70]
test ax, ax
je 0x404045
lea rax, section..data
test byte [rax], 1
je 0x403695
lea r9, str.Error_while_parsing_REG_MULTI_SZ_string:_Garbage_at_end_of_string_n
lea r8, str.parse_multisz
mov rdx, rax
xor ecx, ecx
call sym.wine_dbg_log.constprop.0
jmp 0x403695
mov r12, qword [rsp + 0x70]
mov rcx, rbx
lea rdx, [0x0040b646]
mov r8d, 1
call sym.strbuf_append.isra.0
mov eax, dword [rsp + 0xa8]
mov rdx, qword [rsi + 0x20]
mov r13, qword [rsp + 0xa0]
add eax, eax
test rdx, rdx
je 0x4036bb
cmp word [rdx], 0
je 0x4036bb
test r13, r13
jne 0x4036bb
jmp 0x4031c0
lea rax, section..data
mov r12, qword [rsp + 0x70]
test byte [rax], 1
je 0x403695
mov dword [rsp + 0x20], edx
lea r9, str.Error_while_parsing_REG_MULTI_SZ_string:_Expected_comma_but_got__c_n
mov rdx, rax
xor ecx, ecx
lea r8, str.parse_multisz
call sym.wine_dbg_log.constprop.0
jmp 0x403695
mov r8d, esi
lea rdx, str.HKEY_CLASSES_ROOT
mov rcx, r13
call qword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
jne 0x403032
mov r12, 0xffffffff80000000
jmp 0x4030f2
mov r8d, esi
lea rdx, str.HKEY_CURRENT_CONFIG
mov rcx, r13
call qword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
jne 0x403058
mov r12, 0xffffffff80000005
jmp 0x4030f2
mov r8d, esi
lea rdx, str.HKEY_CURRENT_USER
mov rcx, r13
call qword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
jne 0x403080
mov r12, 0xffffffff80000001
jmp 0x4030f2
mov r8d, esi
lea rdx, str.HKEY_LOCAL_MACHINE
mov rcx, r13
call qword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
jne 0x4030a8
mov r12, 0xffffffff80000002
jmp 0x4030f2
lea rdx, [0x0040b072]
mov rcx, r12
call rdi
test eax, eax
je 0x402bd9
lea rdx, [0x0040b072]
mov rcx, r13
call rdi
test eax, eax
je 0x402bd9
test byte [section..data], 4
je 0x402bd9
mov r12, qword [r14 + 0x30]
lea r13, [0x0040b00e]
test r12, r12
je 0x403d7d
mov rax, r12
shr rax, 0x10
je 0x40420b
mov rdx, 0xffffffffffffffff
mov rcx, r12
lea r13, [0x0040b015]
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
test eax, eax
jne 0x403d7d
mov edx, 0xffffffff
mov rcx, r12
call sym.wine_dbgstr_wn.part.0
mov r13, rax
mov r12, qword [rbx + 8]
lea rbp, [0x0040b00e]
test r12, r12
je 0x403dc5
mov rax, r12
shr rax, 0x10
je 0x4041de
mov rdx, 0xffffffffffffffff
mov rcx, r12
lea rbp, [0x0040b015]
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
test eax, eax
jne 0x403dc5
mov edx, 0xffffffff
mov rcx, r12
call sym.wine_dbgstr_wn.part.0
mov rbp, rax
mov r12, qword [rbx]
lea rax, [0x0040b00e]
test r12, r12
je 0x403e0d
mov rax, r12
shr rax, 0x10
je 0x4041f6
mov rdx, 0xffffffffffffffff
mov rcx, r12
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x403e0d
mov edx, 0xffffffff
mov rcx, r12
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x30], r13
lea r9, str.Ignoring_version_difference_for__s__expected__s__found__s__n
lea r8, str.lookup_assembly
mov ecx, 2
mov qword [rsp + 0x28], rbp
lea rdx, section..data
mov qword [rsp + 0x20], rax
call sym.wine_dbg_log.constprop.0
jmp 0x402bd9
mov dword [rsp + 0x88], 1
test byte [section..data], 8
je 0x402dfb
mov rdi, qword [rsp + 0x80]
lea rax, [0x0040b00e]
test rdi, rdi
je 0x403eaa
shr rdi, 0x10
je 0x40438e
mov rdi, qword [rsp + 0x80]
mov rdx, 0xffffffffffffffff
mov rcx, rdi
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x403eaa
mov edx, 0xffffffff
mov rcx, rdi
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Assembly__s_already_installed_n
lea r8, str.install_assembly
mov ecx, 3
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
mov dword [rsp + 0x88], 1
jmp 0x402dfb
movzx edx, r12w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x4037e1
mov rax, r12
shr rax, 0x10
je 0x404282
mov rdx, 0xffffffffffffffff
mov rcx, r12
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
lea rdx, [0x0040b015]
mov qword [rsp + 0x58], rdx
test eax, eax
jne 0x403f37
mov edx, 0xffffffff
mov rcx, r12
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x58], rax
mov rax, r13
shr rax, 0x10
je 0x40429c
mov rdx, 0xffffffffffffffff
mov rcx, r13
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x403f70
mov edx, 0xffffffff
mov rcx, r13
call sym.wine_dbgstr_wn.part.0
mov rdx, qword [rsp + 0x58]
mov qword [rsp + 0x20], rax
lea r9, str.Copying__s_____s_n
lea r8, str.install_files_copy
mov ecx, 3
mov qword [rsp + 0x28], rdx
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402d98
test byte [section..data], 2
je 0x402df0
mov rdi, qword [rsp + 0x80]
lea rax, [0x0040b00e]
test rdi, rdi
je 0x404007
shr rdi, 0x10
je 0x40444b
mov rdi, qword [rsp + 0x80]
mov rdx, 0xffffffffffffffff
mov rcx, rdi
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x404007
mov edx, 0xffffffff
mov rcx, rdi
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Assembly__s_caused_circular_dependency_n
lea r8, str.install_assembly
mov ecx, 1
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402dfb
movzx edx, r13w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x403abe
lea rax, [rsp + 0xa0]
mov rcx, rax
jmp 0x403bb8
mov r12, qword [rsi + 0x10]
lea rax, [0x0040b00e]
test r12, r12
je 0x40409e
mov rax, r12
shr rax, 0x10
je 0x404364
mov rdx, 0xffffffffffffffff
mov rcx, r12
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x40409e
mov edx, 0xffffffff
mov rcx, r12
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Failed_to_set_registry_key__s_n
lea r8, str.install_registry_multisz
mov ecx, 1
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x403844
mov r12, qword [rsi + 0x10]
lea rax, [0x0040b00e]
test r12, r12
je 0x404110
mov rax, r12
shr rax, 0x10
je 0x404223
mov rdx, 0xffffffffffffffff
mov rcx, r12
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x404110
mov edx, 0xffffffff
mov rcx, r12
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Failed_to_set_registry_key__s_n
lea r8, str.install_registry_dword
mov ecx, 1
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
mov rcx, qword [rsp + 0x98]
call qword [sym.imp.advapi32.dll_RegCloseKey]
movzx eax, byte [section..data]
jmp 0x4031e0
mov rdi, qword [rsp + 0x80]
lea rax, [0x0040b00e]
test rdi, rdi
je 0x4041a0
shr rdi, 0x10
je 0x4043a7
mov rdi, qword [rsp + 0x80]
mov rdx, 0xffffffffffffffff
mov rcx, rdi
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x4041a0
mov edx, 0xffffffff
mov rcx, rdi
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Failed_to_install_all_files_for__s_n
lea r8, str.install_assembly
mov ecx, 1
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402dfb
movzx edx, r12w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x4033ff
movzx edx, r12w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
mov rbp, rax
jmp 0x403dc5
movzx edx, r12w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x403e0d
movzx edx, r12w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
mov r13, rax
jmp 0x403d7d
movzx edx, r12w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x404110
xor ecx, ecx
call qword [sym.imp.ucrtbase.dll_malloc]
mov r13, rax
test rax, rax
jne 0x4039ba
jmp 0x4031c0
test byte [section..data], 2
je 0x402df0
lea r9, str.Failed_to_get_assembly_source_directory_n
lea r8, str.install_files
mov ecx, 1
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402dd9
movzx edx, r12w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
mov qword [rsp + 0x58], rax
jmp 0x403f37
movzx edx, r13w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x403f70
movzx edx, r13w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x4038be
xor r13d, r13d
xor ebx, ebx
jmp 0x4039ba
movzx edx, word [rsp + 0x80]
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x402cb1
mov rdi, qword [rsp + 0x80]
lea rax, [0x0040b00e]
test rdi, rdi
je 0x40433b
shr rdi, 0x10
je 0x404464
mov rdi, qword [rsp + 0x80]
mov rdx, 0xffffffffffffffff
mov rcx, rdi
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x40433b
mov edx, 0xffffffff
mov rcx, rdi
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Installation_of__s_finished_n
lea r8, str.install_assembly
mov ecx, 3
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x4034a2
movzx edx, r12w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x40409e
movzx edx, r12w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x402ea2
movzx edx, word [rsp + 0x80]
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x403eaa
movzx edx, word [rsp + 0x80]
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x4041a0
test byte [section..data], 2
je 0x402df0
mov rax, qword [rsp + 0x68]
mov r12, qword [rax + 0x10]
lea rax, [0x0040b00e]
test r12, r12
je 0x40441b
mov rax, r12
shr rax, 0x10
je 0x4044ed
mov rdx, 0xffffffffffffffff
mov rcx, r12
call qword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov r8d, eax
lea rax, [0x0040b015]
test r8d, r8d
jne 0x40441b
mov edx, 0xffffffff
mov rcx, r12
call sym.wine_dbgstr_wn.part.0
mov qword [rsp + 0x20], rax
lea r9, str.Failed_to_open_registry_key__s_n
lea r8, str.install_registry
mov ecx, 1
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
movzx eax, byte [section..data]
jmp 0x4031e0
movzx edx, word [rsp + 0x80]
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x404007
movzx edx, word [rsp + 0x80]
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x40433b
movzx edx, r13w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x403311
movzx edx, r13w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x40339d
movzx edx, r12w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
mov rbx, rax
jmp 0x4032d8
movzx edx, r12w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x403a46
movzx edx, word [rsp + 0x80]
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x40323a
movzx edx, r12w
lea rcx, [0x0040b008]
call sym.wine_dbg_sprintf.constprop.0
jmp 0x40441b
cmp word [r13], 0
jne 0x4031c0
jmp 0x4036b6