Function at 0x402a80
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, 0xc8
mov rdi, qword [rcx]
mov rsi, rcx
mov rbx, rdx
mov r15d, r8d
cmp rcx, rdi
je 0x402cdc
mov rbp, qword [sym.imp.ucrtbase.dll__wcsicmp]
nop
mov rcx, qword [rdi + 0x28]
mov rdx, qword [rbx]
call rbp
mov r12d, eax
test eax, eax
jne 0x402cd0
mov rdx, qword [rbx + 0x10]
mov rcx, qword [rdi + 0x38]
call sym.compare_assembly_string
test eax, eax
je 0x402cd0
mov rdx, qword [rbx + 0x18]
mov rcx, qword [rdi + 0x40]
call sym.compare_assembly_string
test eax, eax
je 0x402cd0
mov rdx, qword [rbx + 0x20]
mov rcx, qword [rdi + 0x48]
call sym.compare_assembly_string
test eax, eax
je 0x402cd0
mov rdx, qword [rbx + 8]
mov rcx, qword [rdi + 0x30]
mov dword [rsp + 0x98], r12d
call sym.compare_assembly_string
test eax, eax
je 0x402d20
mov rax, qword [rdi + 0x28]
mov qword [rsp + 0x90], rax
mov eax, dword [rdi + 0x10]
cmp eax, 2
je 0x4038f0
cmp eax, 1
je 0x403a00
mov rbx, qword [rdi + 0x50]
lea rbp, [rdi + 0x50]
mov dword [rdi + 0x10], 1
cmp rbx, rbp
je 0x402b74
lea rdx, [rbx + 0x10]
mov r8d, r15d
mov rcx, rsi
call sym.install_assembly
test eax, eax
je 0x402ca0
mov rbx, qword [rbx]
cmp rbx, rbp
jne 0x402b55
test byte [section..data], 8
jne 0x403130
mov rcx, qword [rdi + 0x18]
call qword [sym.imp.ucrtbase.dll__wcsdup]
mov qword [rsp + 0x58], rax
test rax, rax
je 0x403b52
mov edx, 0x2e
mov rcx, rax
call qword [sym.imp.ucrtbase.dll_wcsrchr]
test rax, rax
je 0x402bb1
xor edx, edx
mov word [rax], dx
mov rbx, qword [rdi + 0x60]
lea rsi, [rdi + 0x60]
lea rbp, str.Copying__s_____s_n
cmp rsi, rbx
je 0x402de8
nop dword [rax]
mov rdx, qword [rbx + 0x18]
mov rcx, rdi
call sym.expand_expression
mov r14, rax
test rax, rax
je 0x402c81
mov rdx, qword [rbx + 0x10]
mov rcx, rax
test rdx, rdx
je 0x402c7b
call sym.path_combine.part.0
mov r12, rax
test rax, rax
je 0x403118
mov rdx, qword [rbx + 0x10]
test rdx, rdx
je 0x402d90
mov rcx, qword [rsp + 0x58]
call sym.path_combine.part.0
mov r13, rax
test rax, rax
je 0x402d90
test r15d, r15d
jne 0x402db0
lea r10, section..data
test byte [section..data], 8
jne 0x403948
mov rcx, r12
call sym.create_parent_directory
test eax, eax
jne 0x403090
test byte [section..data], 2
jne 0x403188
mov rcx, r14
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, qword [rsp + 0x58]
call qword [sym.imp.ucrtbase.dll_free]
test byte [section..data], 2
jne 0x403ae0
nop dword [rax]
mov dword [rsp + 0x98], 0
mov eax, dword [rsp + 0x98]
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rdi, qword [rdi]
cmp rsi, rdi
jne 0x402ab0
test byte [section..data], 1
je 0x402ca0
mov rcx, qword [rbx]
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
lea r9, str.Assembly__s_not_found_n
lea r8, str.install_assembly
xor ecx, ecx
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
mov dword [rsp + 0x98], 0
jmp 0x402cab
test byte [section..data], 4
je 0x402b20
mov rcx, qword [rdi + 0x30]
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
mov rcx, qword [rbx + 8]
mov edx, 0xffffffff
mov rbp, rax
call sym.wine_dbgstr_wn
mov rcx, qword [rbx]
mov edx, 0xffffffff
mov r12, rax
call sym.wine_dbgstr_wn
mov qword [rsp + 0x30], rbp
lea r9, str.Ignoring_version_difference_for__s__expected__s__found__s__n
lea r8, str.lookup_assembly
mov qword [rsp + 0x28], r12
lea rdx, section..data
mov ecx, 2
mov qword [rsp + 0x20], rax
call sym.wine_dbg_log.constprop.0
jmp 0x402b20
mov rcx, r14
call qword [sym.imp.ucrtbase.dll_free]
mov rcx, r12
call qword [sym.imp.ucrtbase.dll_free]
jmp 0x402c81
mov rcx, rax
call qword [sym.imp.shlwapi.dll_PathFileExistsW]
test eax, eax
je 0x4031c0
mov rcx, r14
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 0x402bd0
mov rcx, qword [rsp + 0x58]
lea rbx, [rdi + 0x70]
call qword [sym.imp.ucrtbase.dll_free]
mov rcx, qword [rdi + 0x38]
mov r14, qword [sym.imp.ucrtbase.dll_wcscmp]
lea rdx, [0x0040a01a]
call r14
mov qword [rsp + 0x88], rbx
cmp eax, 1
sbb eax, eax
and eax, 0x200
add eax, 0xf003f
mov dword [rsp + 0x9c], eax
mov rax, qword [rdi + 0x70]
mov qword [rsp + 0x58], rax
cmp rbx, rax
je 0x403270
mov qword [rsp + 0x60], rdi
mov r13, r14
nop dword [rax]
mov rax, qword [rsp + 0x58]
mov edx, 0x5c
mov rdi, qword [rax + 0x10]
mov rcx, rdi
call qword [sym.imp.ucrtbase.dll_wcschr]
mov rbx, rax
test rax, rax
je 0x40303c
mov rsi, rax
lea rax, str.HKEY_CLASSES_ROOT
sub rsi, rdi
sar rsi, 1
nop dword [rax + rax]
add rax, 2
cmp word [rax], 0
jne 0x402e80
lea rdx, str.HKEY_CLASSES_ROOT
mov r12d, esi
sub rax, rdx
sar rax, 1
cmp esi, eax
je 0x403830
lea rdx, str.HKEY_CURRENT_CONFIG
mov rax, rdx
nop dword [rax]
add rax, 2
cmp word [rax], 0
jne 0x402eb0
sub rax, rdx
sar rax, 1
cmp esi, eax
je 0x403860
lea rdx, str.HKEY_CURRENT_USER
mov rax, rdx
nop word [rax + rax]
add rax, 2
cmp word [rax], 0
jne 0x402ed8
sub rax, rdx
sar rax, 1
cmp esi, eax
je 0x403890
lea rdx, str.HKEY_LOCAL_MACHINE
mov rax, rdx
nop word [rax + rax]
add rax, 2
cmp word [rax], 0
jne 0x402f00
sub rax, rdx
sar rax, 1
cmp esi, eax
je 0x4038c0
lea rdx, str.HKEY_USERS
mov rax, rdx
nop word [rax + rax]
add rax, 2
cmp word [rax], 0
jne 0x402f28
sub rax, rdx
sar rax, 1
cmp esi, eax
jne 0x403550
mov r8d, esi
lea rdx, str.HKEY_USERS
mov rcx, rdi
call qword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
jne 0x403550
mov r12, 0xffffffff80000003
lea rax, section..data
mov qword [rsp + 0x68], rax
test byte [section..data], 8
jne 0x403700
test r15d, r15d
je 0x403680
mov rax, qword [rsp + 0x58]
mov rsi, qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x70], rax
cmp rsi, rax
je 0x403250
nop
mov rax, qword [rsp + 0x68]
mov r12, qword [rsp + 0xa8]
test byte [rax], 8
jne 0x4032b0
mov rcx, qword [rsi + 0x18]
lea rdx, str.REG_SZ
call r13
test eax, eax
je 0x403298
mov rcx, qword [rsi + 0x18]
lea rdx, str.REG_EXPAND_SZ
call r13
test eax, eax
je 0x403208
mov rcx, qword [rsi + 0x18]
lea rdx, str.REG_MULTI_SZ
call r13
test eax, eax
je 0x403300
mov rcx, qword [rsi + 0x18]
lea rdx, str.REG_DWORD
call r13
mov rcx, qword [rsi + 0x18]
test eax, eax
je 0x403438
lea rdx, str.REG_BINARY
call r13
mov ebx, eax
test eax, eax
je 0x4035a0
test byte [section..data], 1
jne 0x4034b8
test r15d, r15d
je 0x40349b
movzx eax, byte [section..data]
nop dword [rax + rax]
test al, 2
je 0x402ca0
mov rcx, qword [rsp + 0x90]
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
lea r9, str.Failed_to_install_registry_keys_for__s_n
mov ecx, 1
lea r8, str.install_assembly
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402cab
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 0x402dc1
test byte [section..data], 2
je 0x402c66
mov rcx, r12
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
mov rcx, r13
mov edx, 0xffffffff
mov rbx, rax
call sym.wine_dbgstr_wn
mov qword [rsp + 0x28], rbx
lea r9, str.Failed_to_copy__s_to__s_n
lea r8, str.install_files_copy
mov qword [rsp + 0x20], rax
lea rdx, section..data
mov ecx, 1
call sym.wine_dbg_log.constprop.0
jmp 0x402c66
mov rcx, r14
call qword [sym.imp.ucrtbase.dll_free]
jmp 0x402c81
mov rcx, qword [rsp + 0x90]
test r15d, r15d
lea rax, [0x0040a351]
lea rbx, str.__dryrun_
cmove rbx, rax
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
lea r9, str.Installing_assembly__s_s_n
mov ecx, 3
mov qword [rsp + 0x28], rbx
lea r8, str.install_assembly
lea rdx, section..data
mov qword [rsp + 0x20], rax
call sym.wine_dbg_log.constprop.0
jmp 0x402b81
mov rcx, r12
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
lea r9, str.Failed_to_create_parent_directory_for__s_n
mov ecx, 1
lea r8, str.install_files_copy
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402c66
test byte [section..data], 2
je 0x402c66
mov rcx, r13
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
lea r9, str.Required_file__s_not_found_n
mov ecx, 1
lea r8, str.install_files_copy
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402c66
mov dword [rsp + 0x28], r15d
mov dword [rsp + 0x20], 2
mov rcx, qword [rsp + 0x60]
lea r9, [rsi + 0x20]
lea r8, [rsi + 0x10]
mov rdx, r12
call sym.install_registry_string.isra.0
test eax, eax
je 0x403033
mov rsi, qword [rsi]
cmp rsi, qword [rsp + 0x70]
jne 0x402fa0
test r15d, r15d
je 0x4036e8
nop dword [rax]
mov rax, qword [rsp + 0x58]
mov rax, qword [rax]
mov qword [rsp + 0x58], rax
cmp rax, qword [rsp + 0x88]
jne 0x402e48
mov rdi, qword [rsp + 0x60]
test byte [section..data], 8
jne 0x403bc0
mov dword [rdi + 0x10], 2
mov dword [rsp + 0x98], 1
jmp 0x402cab
mov dword [rsp + 0x28], r15d
mov dword [rsp + 0x20], 1
jmp 0x403215
mov rcx, qword [rsi + 0x20]
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
mov rcx, qword [rsi + 0x10]
mov edx, 0xffffffff
mov rbx, rax
call sym.wine_dbgstr_wn
mov qword [rsp + 0x28], rbx
lea r9, str.Setting_registry_key__s___s_n
lea r8, str.install_registry_value
mov qword [rsp + 0x20], rax
lea rdx, section..data
mov ecx, 3
call sym.wine_dbg_log.constprop.0
jmp 0x402fb6
mov r14, qword [rsi + 0x20]
test r14, r14
je 0x40341c
cmp word [r14], 0
je 0x403417
movabs rax, 0x4000000000
mov ecx, pe_nt_image_headers64
mov qword [rsp + 0xb8], rax
call qword [sym.imp.ucrtbase.dll_malloc]
mov qword [rsp + 0xb0], rax
test rax, rax
je 0x403c4b
movzx eax, word [r14]
lea rbp, [0x0040a64a]
lea rbx, [rsp + 0xb0]
lea rdi, [0x0040a64e]
cmp ax, 0x22
jne 0x40374d
mov qword [rsp + 0x78], r12
mov qword [rsp + 0x80], rsi
jmp 0x4033d1
mov r8, rax
mov rdx, r12
mov rcx, rbx
mov r14, rbx
sub r8, r12
sar r8, 1
call sym.strbuf_append
mov r8d, 1
mov rdx, rdi
mov rcx, rbx
call sym.strbuf_append
movzx eax, word [rsi + 2]
test ax, ax
je 0x403790
cmp ax, 0x2c
jne 0x4037f0
movzx eax, word [rsi + 4]
lea r14, [rsi + 4]
cmp ax, 0x22
jne 0x403740
lea r12, [r14 + 2]
mov rdx, rbp
mov rcx, r12
call qword [sym.imp.ucrtbase.dll_wcsstr]
mov rsi, rax
test rax, rax
jne 0x403380
mov r12, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x80]
mov rcx, qword [rsp + 0xb0]
call qword [sym.imp.ucrtbase.dll_free]
mov rax, qword [rsi + 0x20]
test rax, rax
je 0x403417
cmp word [rax], 0
jne 0x403033
xor eax, eax
xor r14d, r14d
test r15d, r15d
je 0x4034f0
mov rcx, r14
call qword [sym.imp.ucrtbase.dll_free]
jmp 0x403232
test rcx, rcx
je 0x40344b
mov r8d, 0x10
xor edx, edx
call qword [sym.imp.ucrtbase.dll_wcstoul]
mov dword [rsp + 0xb0], eax
test r15d, r15d
jne 0x403232
mov rdx, qword [rsi + 0x10]
xor r8d, r8d
mov r9d, 4
mov rcx, r12
lea r14, [rsp + 0xb0]
mov dword [rsp + 0x28], 4
mov qword [rsp + 0x20], r14
call qword [sym.imp.advapi32.dll_RegSetValueExW]
test eax, eax
je 0x403232
test byte [section..data], 2
jne 0x403a90
mov rcx, qword [rsp + 0xa8]
call qword [sym.imp.advapi32.dll_RegCloseKey]
movzx eax, byte [section..data]
jmp 0x403048
mov rcx, qword [rsi + 0x18]
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
lea r9, str.Unsupported_registry_value_type__s_n
lea r8, str.install_registry_value
xor ecx, ecx
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x403033
mov rdx, qword [rsi + 0x10]
xor r8d, r8d
mov dword [rsp + 0x28], eax
mov rcx, r12
mov qword [rsp + 0x20], r14
mov r9d, 7
call qword [sym.imp.advapi32.dll_RegSetValueExW]
test eax, eax
je 0x403425
mov r13, r14
test byte [section..data], 2
jne 0x403a50
mov rcx, r13
call qword [sym.imp.ucrtbase.dll_free]
mov rcx, qword [rsp + 0xa8]
call qword [sym.imp.advapi32.dll_RegCloseKey]
movzx eax, byte [section..data]
jmp 0x403048
movzx eax, byte [section..data]
test al, 1
je 0x403048
mov edx, r12d
mov rcx, rdi
call sym.wine_dbgstr_wn
lea r9, str.Unknown_root_key__s_n
lea r8, str.split_registry_key
xor ecx, ecx
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
movzx eax, byte [section..data]
jmp 0x403048
mov rbp, qword [rsi + 0x20]
xor eax, eax
mov dword [rsp + 0xb0], 0
mov word [rsp + 0xb4], ax
test rbp, rbp
je 0x403ba8
movzx edx, word [rbp]
mov rax, rbp
test dx, dx
je 0x403b88
nop word [rax + rax]
add rax, 2
cmp word [rax], 0
jne 0x4035d8
sub rax, rbp
mov dword [rsp + 0x80], edx
mov rbx, rax
sar rbx, 1
test al, 2
jne 0x403033
sar ebx, 1
movsxd rcx, ebx
call qword [sym.imp.ucrtbase.dll_malloc]
mov qword [rsp + 0x78], rax
test rax, rax
je 0x403033
mov edx, dword [rsp + 0x80]
mov rdi, rax
lea r14, [rsp + 0xb0]
nop dword [rax]
mov word [rsp + 0xb0], dx
movzx eax, word [rbp + 2]
xor edx, edx
mov r8d, 0x10
mov rcx, r14
add rdi, 1
add rbp, 4
mov word [rsp + 0xb2], ax
call qword [sym.imp.ucrtbase.dll_wcstoul]
mov byte [rdi - 1], al
movzx edx, word [rbp]
test dx, dx
jne 0x403628
test r15d, r15d
je 0x4039a0
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.ucrtbase.dll_free]
jmp 0x403232
xor r9d, r9d
xor r8d, r8d
lea rdx, [rbx + 2]
mov rcx, r12
lea rax, [rsp + 0xa8]
mov dword [rsp + 0x20], 0
mov qword [rsp + 0x38], rax
mov eax, dword [rsp + 0x9c]
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 0x403bfb
mov rax, qword [rsp + 0x58]
mov rsi, qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x70], rax
cmp rsi, rax
jne 0x402fa0
mov rcx, qword [rsp + 0xa8]
call qword [sym.imp.advapi32.dll_RegCloseKey]
jmp 0x403250
mov rax, qword [rsp + 0x58]
mov edx, 0xffffffff
mov rcx, qword [rax + 0x10]
call sym.wine_dbgstr_wn
lea r9, str.Processing_registry_key__s_n
mov ecx, 3
lea r8, str.install_registry
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402f7b
mov r12, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x80]
lea r14, [rsp + 0xb0]
test ax, ax
je 0x40379d
mov rax, qword [rsp + 0x68]
test byte [rax], 1
je 0x4033f6
lea r9, str.Error_while_parsing_REG_MULTI_SZ_string:_Garbage_at_end_of_string_n
lea r8, str.parse_multisz
xor ecx, ecx
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x4033f6
mov r12, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x80]
lea rdx, [0x0040a64e]
mov rcx, r14
mov r8d, 1
call sym.strbuf_append
mov eax, dword [rsp + 0xb8]
mov rdx, qword [rsi + 0x20]
mov r14, qword [rsp + 0xb0]
add eax, eax
test rdx, rdx
je 0x40341c
cmp word [rdx], 0
je 0x40341c
test r14, r14
jne 0x40341c
jmp 0x403033
mov rdi, qword [rsp + 0x68]
mov r12, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x80]
test byte [rdi], 1
je 0x4033f6
mov dword [rsp + 0x20], eax
lea r9, str.Error_while_parsing_REG_MULTI_SZ_string:_Expected_comma_but_got__c_n
lea r8, str.parse_multisz
xor ecx, ecx
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x4033f6
mov r8d, esi
lea rdx, str.HKEY_CLASSES_ROOT
mov rcx, rdi
call qword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
jne 0x402ea2
mov r12, 0xffffffff80000000
jmp 0x402f62
mov r8d, esi
lea rdx, str.HKEY_CURRENT_CONFIG
mov rcx, rdi
call qword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
jne 0x402ec8
mov r12, 0xffffffff80000005
jmp 0x402f62
mov r8d, esi
lea rdx, str.HKEY_CURRENT_USER
mov rcx, rdi
call qword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
jne 0x402ef0
mov r12, 0xffffffff80000001
jmp 0x402f62
mov r8d, esi
lea rdx, str.HKEY_LOCAL_MACHINE
mov rcx, rdi
call qword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
jne 0x402f18
mov r12, 0xffffffff80000002
jmp 0x402f62
mov dword [rsp + 0x98], 1
test byte [section..data], 8
je 0x402cab
mov rcx, qword [rsp + 0x90]
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
lea r9, str.Assembly__s_already_installed_n
mov ecx, 3
lea r8, str.install_assembly
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402cab
mov rcx, r12
mov edx, 0xffffffff
mov qword [rsp + 0x68], r10
call sym.wine_dbgstr_wn
mov rcx, r13
mov edx, 0xffffffff
mov qword [rsp + 0x60], rax
call sym.wine_dbgstr_wn
mov r8, qword [rsp + 0x60]
mov r10, qword [rsp + 0x68]
mov r9, rbp
mov qword [rsp + 0x20], rax
mov ecx, 3
mov qword [rsp + 0x28], r8
mov rdx, r10
lea r8, str.install_files_copy
call sym.wine_dbg_log.constprop.0
jmp 0x402c49
mov rax, qword [rsp + 0x78]
mov rdx, qword [rsi + 0x10]
xor r8d, r8d
mov dword [rsp + 0x28], ebx
mov r9d, 3
mov rcx, r12
mov qword [rsp + 0x20], rax
call qword [sym.imp.advapi32.dll_RegSetValueExW]
test eax, eax
je 0x40366a
test byte [section..data], 2
jne 0x403b1b
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.ucrtbase.dll_free]
mov rcx, qword [rsp + 0xa8]
call qword [sym.imp.advapi32.dll_RegCloseKey]
movzx eax, byte [section..data]
jmp 0x403048
test byte [section..data], 2
je 0x402ca0
mov rcx, qword [rsp + 0x90]
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
lea r9, str.Assembly__s_caused_circular_dependency_n
mov ecx, 1
lea r8, str.install_assembly
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402cab
mov rcx, qword [rsi + 0x10]
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
lea r9, str.Failed_to_set_registry_key__s_n
mov ecx, 1
lea r8, str.install_registry_multisz
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x403527
mov rcx, qword [rsi + 0x10]
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
lea r9, str.Failed_to_set_registry_key__s_n
mov ecx, 1
lea r8, str.install_registry_dword
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
mov rcx, qword [rsp + 0xa8]
call qword [sym.imp.advapi32.dll_RegCloseKey]
movzx eax, byte [section..data]
jmp 0x403048
mov rcx, qword [rsp + 0x90]
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
lea r9, str.Failed_to_install_all_files_for__s_n
mov ecx, 1
lea r8, str.install_assembly
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x402cab
mov rcx, qword [rsi + 0x10]
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
lea r9, str.Failed_to_set_registry_key__s_n
mov ecx, 1
lea r8, str.install_registry_binary
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x4039d9
test byte [section..data], 2
je 0x402ca0
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 0x402c8c
xor ecx, ecx
call qword [sym.imp.ucrtbase.dll_malloc]
mov qword [rsp + 0x78], rax
test rax, rax
jne 0x403661
jmp 0x403033
mov qword [rsp + 0x78], 0
xor ebx, ebx
jmp 0x403661
mov rcx, qword [rsp + 0x90]
mov edx, 0xffffffff
call sym.wine_dbgstr_wn
lea r9, str.Installation_of__s_finished_n
mov ecx, 3
lea r8, str.install_assembly
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
jmp 0x40327d
test byte [section..data], 2
je 0x402ca0
mov rax, qword [rsp + 0x58]
mov edx, 0xffffffff
mov rcx, qword [rax + 0x10]
call sym.wine_dbgstr_wn
lea r9, str.Failed_to_open_registry_key__s_n
mov ecx, 1
lea r8, str.install_registry
mov qword [rsp + 0x20], rax
lea rdx, section..data
call sym.wine_dbg_log.constprop.0
movzx eax, byte [section..data]
jmp 0x403048
cmp word [r14], 0
jne 0x403033
jmp 0x403417