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

Disassembly:
push ebp
push edi
push esi
push ebx
mov ebx, edx
sub esp, 0x7c
mov dword [esp + 0x30], ecx
mov ebp, dword [eax]
cmp eax, ebp
je 0x402e65
mov edi, dword [sym.imp.ucrtbase.dll__wcsicmp]
mov ebx, eax
mov esi, edx
lea esi, [esi]
lea esi, [esi]
nop
mov eax, dword [esi]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
call edi
mov dword [esp + 0x3c], eax
test eax, eax
jne 0x402e58
mov edx, dword [esi + 8]
mov eax, dword [ebp + 0x1c]
call sym._compare_assembly_string
test eax, eax
je 0x402e58
mov edx, dword [esi + 0xc]
mov eax, dword [ebp + 0x20]
call sym._compare_assembly_string
test eax, eax
je 0x402e58
mov edx, dword [esi + 0x10]
mov eax, dword [ebp + 0x24]
call sym._compare_assembly_string
test eax, eax
je 0x402e58
mov eax, esi
mov esi, ebx
mov edx, dword [eax + 4]
mov ebx, eax
mov eax, dword [ebp + 0x18]
call sym._compare_assembly_string
test eax, eax
je 0x402e88
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x48], eax
mov eax, dword [ebp + 8]
cmp eax, 2
je 0x402f80
dec eax
je 0x402f00
mov eax, str.amd64
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
mov eax, dword [sym.imp.ucrtbase.dll_wcscmp]
mov dword [esp + 0x40], eax
call eax
test eax, eax
je 0x402fd8
mov dword [ebp + 8], 1
mov ebx, dword [ebp + 0x28]
lea edi, [ebp + 0x28]
cmp ebx, edi
je 0x402caf
mov dword [esp + 0x34], ebp
mov ebp, dword [esp + 0x30]
lea edx, [ebx + 8]
mov ecx, ebp
mov eax, esi
call sym._install_assembly
test eax, eax
je 0x402e72
mov ebx, dword [ebx]
cmp ebx, edi
jne 0x402c91
mov ebp, dword [esp + 0x34]
test byte [section..data], 8
je 0x402d08
mov ecx, dword [esp + 0x30]
mov eax, 0x40a2c1
mov ebx, str.__dryrun_
mov edx, 0xffffffff
mov esi, str.install_assembly
mov edi, section..data
test ecx, ecx
cmove ebx, eax
mov eax, dword [esp + 0x48]
call sym._wine_dbgstr_wn
mov dword [esp + 0x14], ebx
mov ebx, str.Installing_assembly__s_s_n
mov dword [esp + 0xc], ebx
mov dword [esp + 8], esi
mov dword [esp + 4], edi
mov dword [esp], 3
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wcsdup]
mov dword [esp + 0x38], eax
test eax, eax
je 0x403cc5
mov dword [esp], eax
mov edx, 0x2e
mov dword [esp + 4], edx
call dword [sym.imp.ucrtbase.dll_wcsrchr]
test eax, eax
je 0x402d3b
mov word [eax], 0
mov esi, dword [ebp + 0x30]
lea eax, [ebp + 0x30]
mov dword [esp + 0x34], eax
cmp eax, esi
je 0x403057
mov dword [esp + 0x4c], ebp
lea esi, [esi]
lea esi, [esi]
nop
mov eax, dword [esi + 0xc]
call sym._expand_expression.isra.0
test eax, eax
mov ebx, eax
je 0x402e00
mov edx, dword [esi + 8]
test edx, edx
je 0x402f50
call sym._path_combine.part.0
test eax, eax
mov edi, eax
je 0x402f50
mov edx, dword [esi + 8]
test edx, edx
je 0x402f60
mov eax, dword [esp + 0x38]
call sym._path_combine.part.0
test eax, eax
mov ebp, eax
je 0x402f60
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x403018
test byte [section..data], 8
jne 0x403a50
mov eax, edi
call sym._create_parent_directory
test eax, eax
jne 0x403920
test byte [section..data], 2
jne 0x403be0
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], ebp
call dword [sym.imp.ucrtbase.dll_free]
lea esi, [esi]
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_free]
test byte [section..data], 2
je 0x402e72
mov eax, dword [esp + 0x48]
mov edx, 0xffffffff
mov ebx, section..data
call sym._wine_dbgstr_wn
mov edx, str.Failed_to_install_all_files_for__s_n
mov ecx, str.install_assembly
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp + 4], ebx
mov dword [esp], 1
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0
jmp 0x402e78
mov ebp, dword [ebp]
cmp ebx, ebp
jne 0x402bd0
mov ebx, esi
test byte [section..data], 1
jne 0x403b28
xor ebp, ebp
mov dword [esp + 0x3c], ebp
mov eax, dword [esp + 0x3c]
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
test byte [section..data], 4
je 0x402c3c
mov eax, dword [ebp + 0x18]
mov edx, 0xffffffff
call sym._wine_dbgstr_wn
mov edx, 0xffffffff
mov dword [esp + 0x34], eax
mov eax, dword [ebx + 4]
call sym._wine_dbgstr_wn
mov edx, 0xffffffff
mov edi, eax
mov eax, dword [ebx]
call sym._wine_dbgstr_wn
mov ecx, dword [esp + 0x34]
mov edx, str.lookup_assembly
mov dword [esp + 0x14], edi
mov dword [esp + 8], edx
mov dword [esp], 2
mov dword [esp + 0x18], ecx
mov ecx, section..data
mov dword [esp + 4], ecx
mov dword [esp + 0x10], eax
mov eax, str.Ignoring_version_difference_for__s__expected__s__found__s__n
mov dword [esp + 0xc], eax
call sym._wine_dbg_log.constprop.0
jmp 0x402c3c
test byte [section..data], 2
je 0x402e72
mov eax, dword [esp + 0x48]
mov edx, 0xffffffff
call sym._wine_dbgstr_wn
mov edx, str.install_assembly
mov ecx, section..data
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
mov dword [esp], 1
mov dword [esp + 0x10], eax
mov eax, str.Assembly__s_caused_circular_dependency_n
mov dword [esp + 0xc], eax
call sym._wine_dbg_log.constprop.0
jmp 0x402e78
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
jmp 0x402e00
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
jmp 0x402e00
test byte [section..data], 8
mov ebp, 1
mov dword [esp + 0x3c], ebp
je 0x402e78
mov eax, dword [esp + 0x48]
mov edx, 0xffffffff
mov ebx, str.Assembly__s_already_installed_n
mov esi, str.install_assembly
mov edi, section..data
call sym._wine_dbgstr_wn
mov dword [esp + 0xc], ebx
mov dword [esp + 8], esi
mov dword [esp + 4], edi
mov dword [esp], 3
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0
jmp 0x402e78
test byte [section..data], 2
je 0x402e72
mov dword [esp], 1
mov eax, str.Cannot_install_amd64_assembly_in_32_bit_prefix_n
mov dword [esp + 0xc], eax
mov eax, str.install_assembly
mov dword [esp + 8], eax
mov eax, section..data
mov dword [esp + 4], eax
call sym._wine_dbg_log.constprop.0
jmp 0x402e72
mov dword [esp], ebp
call dword [sym.imp.shlwapi.dll_PathFileExistsW]
sub esp, 4
test eax, eax
je 0x403c20
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], ebp
call dword [sym.imp.ucrtbase.dll_free]
mov esi, dword [esi]
cmp esi, dword [esp + 0x34]
jne 0x402d60
mov ebp, dword [esp + 0x4c]
mov eax, dword [esp + 0x38]
lea edi, [esp + 0x64]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_free]
mov eax, dword [ebp + 0x38]
lea ecx, [ebp + 0x38]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x38], eax
cmp ecx, eax
je 0x403315
mov dword [esp + 0x5c], ebp
mov ebp, dword [esp + 0x40]
lea esi, [esi]
lea esi, [esi]
mov eax, dword [esp + 0x38]
mov ebx, dword [eax + 8]
mov eax, 0x5c
mov dword [esp + 4], eax
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcschr]
test eax, eax
mov esi, eax
je 0x40325b
mov ecx, eax
mov eax, str.HKEY_CLASSES_ROOT
sub ecx, ebx
mov edx, ecx
sar edx, 1
add eax, 2
cmp word [eax], 0
jne 0x4030c0
sub eax, str.HKEY_CLASSES_ROOT
cmp ecx, eax
je 0x4038b0
mov eax, str.HKEY_CURRENT_CONFIG
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x4030e0
sub eax, str.HKEY_CURRENT_CONFIG
cmp ecx, eax
je 0x4038e8
mov eax, str.HKEY_CURRENT_USER
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x403100
sub eax, str.HKEY_CURRENT_USER
cmp ecx, eax
je 0x4039e0
mov eax, str.HKEY_LOCAL_MACHINE
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x403120
sub eax, str.HKEY_LOCAL_MACHINE
cmp ecx, eax
je 0x403a18
mov eax, str.HKEY_USERS
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x403140
sub eax, str.HKEY_USERS
cmp ecx, eax
jne 0x4035f0
mov dword [esp + 8], edx
mov ecx, str.HKEY_USERS
mov dword [esp + 4], ecx
mov dword [esp], ebx
mov dword [esp + 0x34], edx
call dword [sym.imp.ucrtbase.dll_wcsncmp]
mov edx, dword [esp + 0x34]
test eax, eax
jne 0x4035f0
mov ebx, 0x80000003
test byte [section..data], 8
jne 0x4037a0
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x403710
mov eax, dword [esp + 0x38]
mov esi, dword [eax + 0xc]
add eax, 0xc
mov dword [esp + 0x44], eax
cmp esi, eax
je 0x4032fd
mov eax, dword [esp + 0x60]
test byte [section..data], 8
mov dword [esp + 0x34], eax
jne 0x403368
mov eax, str.REG_SZ
mov dword [esp + 4], eax
mov eax, dword [esi + 0xc]
mov dword [esp], eax
call ebp
test eax, eax
je 0x403340
mov eax, str.REG_EXPAND_SZ
mov dword [esp + 4], eax
mov eax, dword [esi + 0xc]
mov dword [esp], eax
call ebp
test eax, eax
je 0x4032c0
mov ebx, str.REG_MULTI_SZ
mov dword [esp + 4], ebx
mov eax, dword [esi + 0xc]
mov dword [esp], eax
call ebp
test eax, eax
je 0x4033c0
mov eax, str.REG_DWORD
mov dword [esp + 4], eax
mov eax, dword [esi + 0xc]
mov dword [esp], eax
call ebp
test eax, eax
je 0x4034c0
mov eax, str.REG_BINARY
mov dword [esp + 4], eax
mov eax, dword [esi + 0xc]
mov dword [esp], eax
call ebp
test eax, eax
je 0x403640
test byte [section..data], 1
jne 0x403558
mov edx, dword [esp + 0x30]
test edx, edx
je 0x403537
movzx eax, byte [section..data]
lea esi, [esi]
lea esi, [esi]
and al, 2
je 0x402e72
mov eax, dword [esp + 0x48]
mov edx, 0xffffffff
mov ebp, str.Failed_to_install_registry_keys_for__s_n
call sym._wine_dbgstr_wn
mov dword [esp + 0xc], ebp
mov dword [esp], 1
mov dword [esp + 0x10], eax
mov eax, str.install_assembly
mov dword [esp + 8], eax
mov eax, section..data
mov dword [esp + 4], eax
call sym._wine_dbg_log.constprop.0
jmp 0x402e78
mov eax, dword [esp + 0x30]
lea ecx, [esi + 0x10]
mov dword [esp], 2
lea edx, [esi + 8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x34]
call sym._install_registry_string.isra.0
test eax, eax
je 0x40324f
mov esi, dword [esi]
cmp esi, dword [esp + 0x44]
jne 0x4031b0
cmp dword [esp + 0x30], 0
je 0x403770
mov eax, dword [esp + 0x38]
mov eax, dword [eax]
cmp eax, dword [esp + 0x4c]
mov dword [esp + 0x38], eax
jne 0x403090
mov ebp, dword [esp + 0x5c]
test byte [section..data], 8
jne 0x403d40
mov dword [ebp + 8], 2
mov ecx, 1
mov dword [esp + 0x3c], ecx
jmp 0x402e78
mov eax, dword [esp + 0x30]
lea ecx, [esi + 0x10]
mov dword [esp], 1
lea edx, [esi + 8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x34]
call sym._install_registry_string.isra.0
jmp 0x4032de
mov eax, dword [esi + 0x10]
mov edx, 0xffffffff
call sym._wine_dbgstr_wn
mov edx, 0xffffffff
mov ebx, eax
mov eax, dword [esi + 8]
call sym._wine_dbgstr_wn
mov dword [esp + 0x14], ebx
mov dword [esp], 3
mov dword [esp + 0x10], eax
mov eax, str.Setting_registry_key__s___s_n
mov dword [esp + 0xc], eax
mov eax, str.install_registry_value
mov dword [esp + 8], eax
mov eax, section..data
mov dword [esp + 4], eax
call sym._wine_dbg_log.constprop.0
jmp 0x4031c5
mov edx, dword [esi + 0x10]
test edx, edx
je 0x403498
mov dword [esp + 0x40], edx
movzx ebx, word [edx]
test ebx, ebx
je 0x403498
mov dword [esp], pe_nt_image_headers32
xor edx, edx
mov ecx, 0x40
mov dword [esp + 0x68], edx
mov dword [esp + 0x6c], ecx
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [esp + 0x64], eax
test eax, eax
je 0x40324f
cmp ebx, 0x22
mov edx, dword [esp + 0x40]
je 0x403457
jmp 0x403870
mov edx, dword [esp + 0x40]
mov ecx, eax
mov eax, edi
sub ecx, edx
sar ecx, 1
call sym._strbuf_append
mov ecx, 1
mov edx, 0x40a5de
mov eax, edi
call sym._strbuf_append
movzx eax, word [ebx + 2]
test eax, eax
je 0x4037e8
cmp eax, 0x2c
jne 0x403828
movzx eax, word [ebx + 4]
lea edx, [ebx + 4]
cmp eax, 0x22
jne 0x403868
add edx, 2
mov eax, 0x40a5da
mov dword [esp + 4], eax
mov dword [esp], edx
mov dword [esp + 0x40], edx
call dword [sym.imp.ucrtbase.dll_wcsstr]
test eax, eax
mov ebx, eax
jne 0x403410
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_free]
mov ebx, dword [esi + 0x10]
test ebx, ebx
je 0x4039d0
cmp word [ebx], 0
jne 0x40324f
xor eax, eax
xor ebx, ebx
mov edx, dword [esp + 0x30]
test edx, edx
je 0x403598
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
jmp 0x4032e6
mov edx, dword [esi + 0xc]
test edx, edx
je 0x4034df
mov dword [esp], edx
mov eax, 0x10
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
call dword [sym.imp.ucrtbase.dll_wcstoul]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x4032e6
mov edx, 4
mov ecx, 4
mov dword [esp + 0x14], edx
xor ebx, ebx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], ecx
mov dword [esp + 8], ebx
mov eax, dword [esi + 8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegSetValueExW]
sub esp, 0x18
test eax, eax
je 0x4032e6
test byte [section..data], 2
jne 0x403c88
mov eax, dword [esp + 0x60]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
movzx eax, byte [section..data]
sub esp, 4
jmp 0x403270
mov eax, dword [esi + 0xc]
mov edx, 0xffffffff
call sym._wine_dbgstr_wn
mov dword [esp], 0
mov dword [esp + 0x10], eax
mov eax, str.Unsupported_registry_value_type__s_n
mov dword [esp + 0xc], eax
mov eax, str.install_registry_value
mov dword [esp + 8], eax
mov eax, section..data
mov dword [esp + 4], eax
call sym._wine_dbg_log.constprop.0
jmp 0x40324f
mov dword [esp + 0x14], eax
mov eax, 7
mov dword [esp + 0xc], eax
xor eax, eax
mov dword [esp + 0x10], ebx
mov dword [esp + 8], eax
mov eax, dword [esi + 8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegSetValueExW]
sub esp, 0x18
test eax, eax
je 0x4034a8
test byte [section..data], 2
jne 0x403b90
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
jmp 0x403537
movzx eax, byte [section..data]
test al, 1
je 0x403270
mov eax, ebx
call sym._wine_dbgstr_wn
mov edx, section..data
mov dword [esp + 4], edx
mov dword [esp], 0
mov dword [esp + 0x10], eax
mov eax, str.Unknown_root_key__s_n
mov dword [esp + 0xc], eax
mov eax, str.split_registry_key
mov dword [esp + 8], eax
call sym._wine_dbg_log.constprop.0
movzx eax, byte [section..data]
jmp 0x403270
mov ebx, dword [esi + 0x10]
xor eax, eax
mov dword [esp + 0x64], eax
mov word [esp + 0x68], 0
test ebx, ebx
je 0x403d28
movzx edx, word [ebx]
mov eax, ebx
test edx, edx
je 0x403d00
lea esi, [esi]
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x403670
mov dword [esp + 0x50], edx
sub eax, ebx
test al, 2
jne 0x40324f
sar eax, 2
mov dword [esp], eax
mov dword [esp + 0x58], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [esp + 0x40], eax
test eax, eax
je 0x40324f
mov dword [esp + 0x54], esi
mov edx, dword [esp + 0x50]
mov esi, eax
lea esi, [esi]
mov word [esp + 0x64], dx
inc esi
add ebx, 4
movzx eax, word [ebx - 2]
mov dword [esp], edi
mov word [esp + 0x66], ax
mov eax, 0x10
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
call dword [sym.imp.ucrtbase.dll_wcstoul]
mov byte [esi - 1], al
movzx edx, word [ebx]
test edx, edx
jne 0x4036b0
mov esi, dword [esp + 0x54]
mov eax, dword [esp + 0x30]
test eax, eax
je 0x403aa8
mov eax, dword [esp + 0x40]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_free]
jmp 0x4032e6
xor eax, eax
xor edx, edx
mov dword [esp + 0x20], eax
lea eax, [esp + 0x60]
add esi, 2
mov dword [esp + 0x1c], eax
xor eax, eax
mov dword [esp + 0x18], eax
mov eax, 0xf003f
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x10], eax
xor eax, eax
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCreateKeyExW]
sub esp, 0x24
test eax, eax
jne 0x403dc8
mov eax, dword [esp + 0x38]
mov esi, dword [eax + 0xc]
add eax, 0xc
mov dword [esp + 0x44], eax
cmp esi, eax
jne 0x4031b0
mov eax, dword [esp + 0x60]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
mov eax, dword [esp + 0x38]
mov eax, dword [eax]
cmp eax, dword [esp + 0x4c]
mov dword [esp + 0x38], eax
jne 0x403090
jmp 0x403311
mov eax, dword [esp + 0x38]
mov edx, 0xffffffff
mov eax, dword [eax + 8]
call sym._wine_dbgstr_wn
mov dword [esp], 3
mov dword [esp + 0x10], eax
mov eax, str.Processing_registry_key__s_n
mov dword [esp + 0xc], eax
mov eax, str.install_registry
mov dword [esp + 8], eax
mov eax, section..data
mov dword [esp + 4], eax
call sym._wine_dbg_log.constprop.0
jmp 0x40318e
mov edx, 0x40a5de
mov ecx, 1
mov eax, edi
call sym._strbuf_append
mov eax, dword [esp + 0x68]
mov edx, dword [esi + 0x10]
mov ebx, dword [esp + 0x64]
add eax, eax
test edx, edx
je 0x40349c
cmp word [edx], 0
je 0x40349c
test ebx, ebx
jne 0x40349c
jmp 0x40324f
test byte [section..data], 1
je 0x403476
mov dword [esp + 0x10], eax
mov eax, str.Error_while_parsing_REG_MULTI_SZ_string:_Expected_comma_but_got__c_n
mov dword [esp + 0xc], eax
mov eax, str.parse_multisz
mov dword [esp + 8], eax
mov eax, section..data
mov dword [esp + 4], eax
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0
jmp 0x403476
test eax, eax
je 0x4037e8
test byte [section..data], 1
je 0x403476
mov ecx, str.Error_while_parsing_REG_MULTI_SZ_string:_Garbage_at_end_of_string_n
mov ebx, str.parse_multisz
mov dword [esp + 0xc], ecx
mov eax, section..data
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0
jmp 0x403476
mov dword [esp + 8], edx
mov eax, str.HKEY_CLASSES_ROOT
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x34], edx
call dword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
je 0x403b08
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x40]
jmp 0x4030d6
mov dword [esp + 8], edx
mov eax, str.HKEY_CURRENT_CONFIG
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x34], edx
call dword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
je 0x403b18
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x40]
jmp 0x4030f6
mov dword [esp + 4], edi
xor eax, eax
xor edx, edx
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x10], eax
xor eax, eax
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov dword [esp], ebp
call dword [sym.imp.kernel32.dll_CopyFileExW]
sub esp, 0x18
test eax, eax
jne 0x40302c
test byte [section..data], 2
je 0x402ddf
mov edx, 0xffffffff
mov eax, edi
call sym._wine_dbgstr_wn
mov edx, 0xffffffff
mov esi, eax
mov eax, ebp
call sym._wine_dbgstr_wn
mov dword [esp + 0x14], esi
mov esi, str.Failed_to_copy__s_to__s_n
mov dword [esp + 0xc], esi
mov dword [esp], 1
mov dword [esp + 0x10], eax
mov eax, str.install_files_copy
mov dword [esp + 8], eax
mov eax, section..data
mov dword [esp + 4], eax
call sym._wine_dbg_log.constprop.0
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], ebp
call dword [sym.imp.ucrtbase.dll_free]
jmp 0x402e00
xor eax, eax
jmp 0x40349c
mov dword [esp + 8], edx
mov eax, str.HKEY_CURRENT_USER
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x34], edx
call dword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
je 0x403b70
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x40]
jmp 0x403116
mov dword [esp + 8], edx
mov eax, str.HKEY_LOCAL_MACHINE
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x34], edx
call dword [sym.imp.ucrtbase.dll_wcsncmp]
test eax, eax
je 0x403b80
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x40]
jmp 0x403136
mov edx, 0xffffffff
mov eax, edi
call sym._wine_dbgstr_wn
mov edx, 0xffffffff
mov dword [esp + 0x44], eax
mov eax, ebp
call sym._wine_dbgstr_wn
mov ecx, dword [esp + 0x44]
mov dword [esp], 3
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
mov eax, str.Copying__s_____s_n
mov dword [esp + 0xc], eax
mov eax, str.install_files_copy
mov dword [esp + 8], eax
mov eax, section..data
mov dword [esp + 4], eax
call sym._wine_dbg_log.constprop.0
jmp 0x402dc3
mov eax, dword [esp + 0x58]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x10], eax
mov eax, 3
mov dword [esp + 0xc], eax
xor eax, eax
mov dword [esp + 8], eax
mov eax, dword [esi + 8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegSetValueExW]
sub esp, 0x18
test eax, eax
je 0x4036f4
test byte [section..data], 2
jne 0x403d7e
mov eax, dword [esp + 0x40]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_free]
jmp 0x403537
mov ebx, 0x80000000
jmp 0x403181
mov ebx, 0x80000005
jmp 0x403181
mov eax, dword [ebx]
mov edx, 0xffffffff
call sym._wine_dbgstr_wn
mov dword [esp], 0
mov dword [esp + 0x10], eax
mov eax, str.Assembly__s_not_found_n
mov dword [esp + 0xc], eax
mov eax, str.install_assembly
mov dword [esp + 8], eax
mov eax, section..data
mov dword [esp + 4], eax
call sym._wine_dbg_log.constprop.0
xor eax, eax
mov dword [esp + 0x3c], eax
jmp 0x402e78
mov ebx, 0x80000001
jmp 0x403181
mov ebx, 0x80000002
jmp 0x403181
mov eax, dword [esi + 8]
mov edx, 0xffffffff
call sym._wine_dbgstr_wn
mov edx, str.install_registry_multisz
mov ecx, section..data
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
mov dword [esp], 1
mov dword [esp + 0x10], eax
mov eax, str.Failed_to_set_registry_key__s_n
mov dword [esp + 0xc], eax
call sym._wine_dbg_log.constprop.0
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
jmp 0x403537
mov edx, 0xffffffff
mov eax, edi
call sym._wine_dbgstr_wn
mov esi, str.install_files_copy
mov ecx, str.Failed_to_create_parent_directory_for__s_n
mov dword [esp + 0xc], ecx
mov dword [esp + 8], esi
mov dword [esp], 1
mov dword [esp + 0x10], eax
mov eax, section..data
mov dword [esp + 4], eax
call sym._wine_dbg_log.constprop.0
jmp 0x4039a6
test byte [section..data], 2
je 0x402ddf
mov edx, 0xffffffff
mov eax, ebp
call sym._wine_dbgstr_wn
mov edx, str.install_files_copy
mov ecx, section..data
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
mov dword [esp], 1
mov dword [esp + 0x10], eax
mov eax, str.Required_file__s_not_found_n
mov dword [esp + 0xc], eax
call sym._wine_dbg_log.constprop.0
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], ebp
call dword [sym.imp.ucrtbase.dll_free]
jmp 0x402e00
mov eax, dword [esi + 8]
mov edx, 0xffffffff
call sym._wine_dbgstr_wn
mov dword [esp], 1
mov dword [esp + 0x10], eax
mov eax, str.Failed_to_set_registry_key__s_n
mov dword [esp + 0xc], eax
mov eax, str.install_registry_dword
mov dword [esp + 8], eax
mov eax, section..data
mov dword [esp + 4], eax
call sym._wine_dbg_log.constprop.0
jmp 0x403537
test byte [section..data], 2
je 0x402e72
mov dword [esp], 1
mov eax, str.Failed_to_get_assembly_source_directory_n
mov dword [esp + 0xc], eax
mov eax, str.install_files
mov dword [esp + 8], eax
mov eax, section..data
mov dword [esp + 4], eax
call sym._wine_dbg_log.constprop.0
jmp 0x402e0d
mov dword [esp], 0
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [esp + 0x40], eax
test eax, eax
je 0x40324f
xor eax, eax
mov dword [esp + 0x58], eax
jmp 0x4036e8
xor edx, edx
xor ecx, ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x58], ecx
jmp 0x4036e8
mov eax, dword [esp + 0x48]
mov edx, 0xffffffff
mov ebx, str.Installation_of__s_finished_n
mov esi, str.install_assembly
mov edi, section..data
call sym._wine_dbgstr_wn
mov dword [esp + 0xc], ebx
mov dword [esp + 8], esi
mov dword [esp + 4], edi
mov dword [esp], 3
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0
jmp 0x403322
mov eax, dword [esi + 8]
mov edx, 0xffffffff
mov ebx, section..data
call sym._wine_dbgstr_wn
mov edx, str.Failed_to_set_registry_key__s_n
mov ecx, str.install_registry_binary
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp + 4], ebx
mov dword [esp], 1
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0
mov eax, dword [esp + 0x40]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_free]
jmp 0x403537
test byte [section..data], 2
je 0x402e72
mov eax, dword [esp + 0x38]
mov edx, 0xffffffff
mov ebx, section..data
mov eax, dword [eax + 8]
call sym._wine_dbgstr_wn
mov edx, str.Failed_to_open_registry_key__s_n
mov ecx, str.install_registry
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp + 4], ebx
mov dword [esp], 1
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0
movzx eax, byte [section..data]
jmp 0x403270