Function at 0x4047f0
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push edi
lea edi, [edx + 8]
push esi
lea esi, [edx + 0x10]
push ebx
mov ebx, eax
sub esp, 0x4fc
mov dword [edx + 0xc], edi
mov dword [edx + 8], edi
mov dword [ebp - 0x4bc], edi
lea edi, [edx + 0x18]
mov dword [edx + 0x14], esi
mov dword [edx + 0x10], esi
mov dword [edx + 0x1c], edi
mov dword [edx + 0x18], edi
mov dword [ebp - 0x4c4], edx
mov dword [ebp - 0x4cc], esi
mov dword [ebp - 0x4c8], edi
mov dword [esp], 0
call dword [sym.imp.ole32.dll_CoInitialize]
sub esp, 4
test byte [section..data], 8
jne 0x404c50
mov eax, dword [ebp - 0x4c4]
call fcn.00401080
mov dword [ebp - 0x4c0], 0
mov edi, eax
test eax, eax
je 0x404952
mov edx, eax
mov eax, ebx
call fcn.00401340
mov dword [ebp - 0x4c0], eax
test eax, eax
jne 0x404960
test byte [section..data], 2
jne 0x404e28
mov dword [ebp - 0x4c0], 0
mov eax, dword [ebp - 0x4c4]
mov esi, dword [sym.imp.ucrtbase.dll_free]
mov ebx, dword [eax + 8]
mov edi, dword [ebx]
cmp dword [ebp - 0x4bc], ebx
je 0x4048e3
lea esi, [esi]
mov eax, dword [ebx + 4]
mov dword [edi + 4], eax
mov ecx, dword [ebx]
mov dword [eax], ecx
mov eax, dword [ebx + 8]
call fcn.00402050
mov eax, dword [ebx + 8]
mov dword [esp], eax
call esi
mov dword [esp], ebx
mov ebx, edi
call esi
mov edi, dword [edi]
cmp dword [ebp - 0x4bc], ebx
jne 0x4048b8
mov eax, dword [ebp - 0x4c4]
mov esi, dword [ebp - 0x4cc]
mov eax, dword [eax + 0x10]
mov ebx, dword [eax]
cmp dword [ebp - 0x4cc], eax
je 0x40491a
lea esi, [esi]
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [esp], eax
call fcn.004085f0
mov eax, ebx
mov ebx, dword [ebx]
cmp esi, eax
jne 0x404900
mov eax, dword [ebp - 0x4c4]
mov esi, dword [ebp - 0x4c8]
mov eax, dword [eax + 0x18]
mov ebx, dword [eax]
cmp dword [ebp - 0x4c8], eax
je 0x404952
lea esi, [esi]
nop
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [esp], eax
call fcn.004085a0
mov eax, ebx
mov ebx, dword [ebx]
cmp esi, eax
jne 0x404938
mov eax, dword [ebp - 0x4c0]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, str..cab
mov eax, edi
call fcn.00401f40
mov ebx, eax
test eax, eax
je 0x404891
lea eax, [ebp - 0x4b8]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov eax, dword [sym.imp.kernel32.dll_FindFirstFileW]
mov dword [ebp - 0x4dc], eax
call eax
mov esi, dword [sym.imp.ucrtbase.dll_free]
sub esp, 8
mov dword [ebp - 0x4c0], eax
mov dword [esp], ebx
call esi
cmp dword [ebp - 0x4c0], 0xffffffff
je 0x404a8e
mov eax, dword [sym.imp.kernel32.dll_FindNextFileW]
mov dword [ebp - 0x4d4], esi
mov dword [ebp - 0x4d8], edi
mov edi, eax
lea esi, [esi]
test byte [ebp - 0x4b8], 0x10
jne 0x404a50
lea ebx, [ebp - 0x48c]
mov dword [esp + 4], str.WSUSSCAN.cab
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll__wcsicmp]
test eax, eax
je 0x404a50
mov eax, dword [ebp - 0x4d8]
mov edx, ebx
call fcn.00401f40
mov esi, eax
test eax, eax
je 0x404a50
test byte [section..data], 8
jne 0x4052e0
mov eax, dword [ebp - 0x4c4]
call fcn.00401080
mov ebx, eax
test eax, eax
je 0x4051d0
mov edx, eax
mov eax, esi
call fcn.00401340
test eax, eax
jne 0x404fb0
test byte [section..data], 2
jne 0x406031
mov dword [esp], esi
mov eax, dword [ebp - 0x4d4]
call eax
lea esi, [esi]
lea eax, [ebp - 0x4b8]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x4c0]
mov dword [esp], eax
call edi
sub esp, 8
test eax, eax
jne 0x4049c8
mov eax, dword [ebp - 0x4c0]
mov edi, dword [ebp - 0x4d8]
mov esi, dword [ebp - 0x4d4]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_FindClose]
sub esp, 4
mov edx, str..xml
mov eax, edi
call fcn.00401f40
mov ebx, eax
test eax, eax
je 0x404891
lea eax, [ebp - 0x4b8]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x4dc]
call eax
sub esp, 8
mov dword [ebp - 0x4c0], eax
mov dword [esp], ebx
call esi
cmp dword [ebp - 0x4c0], 0xffffffff
je 0x404b60
mov eax, dword [sym.imp.kernel32.dll_FindNextFileW]
mov dword [ebp - 0x4d4], esi
mov esi, eax
lea esi, [esi]
test byte [ebp - 0x4b8], 0x10
jne 0x404b32
lea edx, [ebp - 0x48c]
mov eax, edi
call fcn.00401f40
mov ebx, eax
test eax, eax
je 0x404b32
mov eax, dword [ebp - 0x4c8]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.004088c0
test eax, eax
jne 0x404b27
test byte [section..data], 2
jne 0x405682
mov dword [esp], ebx
mov eax, dword [ebp - 0x4d4]
call eax
lea eax, [ebp - 0x4b8]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x4c0]
mov dword [esp], eax
call esi
sub esp, 8
test eax, eax
jne 0x404ae8
mov eax, dword [ebp - 0x4c0]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_FindClose]
sub esp, 4
test byte [section..data], 8
jne 0x4053d4
mov eax, dword [ebp - 0x4c4]
mov ecx, dword [ebp - 0x4c8]
cmp ecx, dword [eax + 0x18]
je 0x405a98
mov eax, dword [ebp - 0x4c4]
mov edx, dword [ebp - 0x4cc]
mov eax, dword [eax + 0x10]
cmp dword [ebp - 0x4cc], eax
je 0x404bad
lea esi, [esi]
mov dword [eax + 8], 0
mov eax, dword [eax]
cmp edx, eax
jne 0x404ba0
mov eax, dword [ebp - 0x4c4]
mov edx, 1
call fcn.004046f0
mov dword [ebp - 0x4c0], eax
test eax, eax
je 0x4057d9
mov eax, dword [ebp - 0x4c4]
mov edx, dword [ebp - 0x4cc]
mov eax, dword [eax + 0x10]
cmp dword [ebp - 0x4cc], eax
je 0x404bf5
lea esi, [esi]
mov dword [eax + 8], 0
mov eax, dword [eax]
cmp edx, eax
jne 0x404be8
mov eax, dword [ebp - 0x4c4]
xor edx, edx
call fcn.004046f0
mov dword [ebp - 0x4c0], eax
test eax, eax
je 0x405a62
mov dword [ebp - 0x4c0], 1
test byte [section..data], 8
je 0x40489b
mov dword [esp + 0xc], str.Installation_finished_n
mov dword [esp + 8], str.install_msu
mov dword [esp + 4], 0x40a000
mov dword [esp], 3
call fcn.00401bf0
jmp 0x40489b
test ebx, ebx
je 0x4053ca
mov eax, ebx
shr eax, 0x10
je 0x404d40
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, 0x40b015
sub esp, 8
test eax, eax
jne 0x404d55
cmp word [ebx], 0
je 0x405661
nop
mov edx, eax
lea eax, [eax + 1]
cmp word [ebx + edx*2 + 2], 0
jne 0x404c90
mov ecx, 0x224c
lea eax, [ebp - 0x146]
mov dword [ebp - 0x4d0], ebx
mov esi, ebx
mov word [ebp - 0x268], cx
lea ecx, [ebp - 0x266]
mov dword [ebp - 0x4c0], eax
jmp 0x404d09
cmp ax, 9
je 0x404da0
cmp ax, 0xa
jne 0x404dbe
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea esi, [esi]
nop
lea eax, [edx - 1]
cmp ecx, dword [ebp - 0x4c0]
ja 0x404f70
test edx, edx
jle 0x404f70
mov edx, eax
movzx eax, word [esi]
add esi, 2
cmp ax, 0xd
je 0x404d88
jbe 0x404cc8
cmp ax, 0x22
je 0x404e10
cmp ax, 0x5c
jne 0x404db1
mov ebx, 0x5c5c
add ecx, 2
mov word [ecx - 2], bx
jmp 0x404cf0
movzx eax, bx
mov dword [esp], 0x40b008
mov dword [esp + 4], eax
call fcn.00401760
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.Processing_msu_file__s_n
mov dword [esp + 8], str.install_msu
mov dword [esp + 4], 0x40a000
mov dword [esp], 3
call fcn.00401bf0
jmp 0x40484e
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x404cf0
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x404cf0
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x4052d0
mov edi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefcabinet_copy_file]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefcabinet_copy_file]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefcabinet_copy_file]
and edi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefcabinet_copy_file]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x404cf0
mov edi, 0x225c
add ecx, 2
mov word [ecx - 2], di
jmp 0x404cf0
test ebx, ebx
je 0x4061a4
mov eax, ebx
shr eax, 0x10
je 0x4059a9
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, 0x40b015
sub esp, 8
test eax, eax
jne 0x404f3a
cmp word [ebx], 0
je 0x406207
lea esi, [esi]
lea esi, [esi]
mov edx, eax
lea eax, [eax + 1]
cmp word [ebx + edx*2 + 2], 0
jne 0x404e70
mov eax, 0x224c
mov dword [ebp - 0x4d0], ebx
lea ecx, [ebp - 0x266]
lea esi, [ebp - 0x146]
mov word [ebp - 0x268], ax
jmp 0x404ecd
cmp ax, 9
je 0x4055c8
cmp ax, 0xa
jne 0x4055f7
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea eax, [edx - 1]
cmp ecx, esi
ja 0x404f0c
test edx, edx
jle 0x404f0c
mov edx, eax
add dword [ebp - 0x4d0], 2
mov eax, dword [ebp - 0x4d0]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x4055d9
jbe 0x404ea0
cmp ax, 0x22
je 0x405650
cmp ax, 0x5c
jne 0x4055ea
mov ebx, 0x5c5c
add ecx, 2
mov word [ecx - 2], bx
jmp 0x404ec0
mov byte [ecx], 0x22
test eax, eax
jle 0x406220
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x268]
mov dword [esp], eax
call fcn.00409350
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.Failed_to_extract__s_n
mov dword [esp + 8], str.install_msu
mov dword [esp + 4], 0x40a000
mov dword [esp], 1
call fcn.00401bf0
jmp 0x40489b
mov byte [ecx], 0x22
mov ebx, dword [ebp - 0x4d0]
test eax, eax
jle 0x40567a
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x268]
mov dword [esp], eax
call fcn.00409350
mov edx, eax
jmp 0x404d55
mov edx, str._manifest_.cix.xml
mov eax, ebx
call fcn.00401f40
test eax, eax
je 0x4051d0
mov dword [esp], eax
mov dword [ebp - 0x4d0], eax
call dword [sym.imp.kernel32.dll_GetFileAttributesW]
mov edx, dword [ebp - 0x4d0]
sub esp, 4
cmp eax, 0xffffffff
je 0x405047
test byte [section..data], 1
je 0x405047
mov dword [esp + 0xc], str.Cabinet_uses_proprietary_msdelta_file_compression_which_is_not__yet__supported_n
mov dword [esp + 8], str.load_assemblies_from_cab
mov dword [esp + 4], 0x40a000
mov dword [esp], 0
call fcn.00401bf0
test byte [section..data], 1
mov edx, dword [ebp - 0x4d0]
je 0x405047
mov dword [esp + 0xc], str.Installation_of_msu_file_will_most_likely_fail_n
mov dword [esp + 8], str.load_assemblies_from_cab
mov dword [esp + 4], 0x40a000
mov dword [esp], 0
call fcn.00401bf0
mov edx, dword [ebp - 0x4d0]
mov dword [esp], edx
mov eax, dword [ebp - 0x4d4]
call eax
mov edx, 0x40b06e
mov eax, ebx
call fcn.00401f40
test eax, eax
je 0x4051d0
lea ecx, [ebp - 0x268]
mov edx, dword [ebp - 0x4dc]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [ebp - 0x4d0], eax
call edx
mov edx, dword [ebp - 0x4d0]
mov ecx, dword [ebp - 0x4d4]
sub esp, 8
mov dword [ebp - 0x4e0], eax
mov dword [esp], edx
call ecx
mov eax, dword [ebp - 0x4e0]
cmp eax, 0xffffffff
je 0x404a3f
mov dword [ebp - 0x4e4], esi
mov esi, eax
lea esi, [esi]
test byte [ebp - 0x268], 0x10
jne 0x40513c
mov edx, str..manifest
lea eax, [ebp - 0x23c]
call fcn.004014c0
test eax, eax
jne 0x4050e9
mov edx, str..mum
lea eax, [ebp - 0x23c]
call fcn.004014c0
test eax, eax
je 0x40513c
lea edx, [ebp - 0x23c]
mov eax, ebx
call fcn.00401f40
test eax, eax
je 0x40513c
mov dword [esp], eax
mov dword [ebp - 0x4d0], eax
call fcn.00408720
mov edx, dword [ebp - 0x4d0]
test eax, eax
je 0x405131
mov ecx, dword [ebp - 0x4cc]
mov dword [eax], ecx
mov ecx, dword [ebp - 0x4c4]
mov ecx, dword [ecx + 0x14]
mov dword [eax + 4], ecx
mov dword [ecx], eax
mov ecx, dword [ebp - 0x4c4]
mov dword [ecx + 0x14], eax
mov dword [esp], edx
mov eax, dword [ebp - 0x4d4]
call eax
lea eax, [ebp - 0x268]
mov dword [esp], esi
mov dword [esp + 4], eax
call edi
sub esp, 8
test eax, eax
jne 0x4050b8
mov eax, dword [ebp - 0x4e0]
mov esi, dword [ebp - 0x4e4]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_FindClose]
sub esp, 4
jmp 0x404a3f
mov byte [ebx], 0x22
mov esi, dword [ebp - 0x4e0]
test eax, eax
jle 0x4063f7
mov edx, 0x2e2e
mov byte [ebx + 3], 0x2e
lea eax, [ebx + 4]
mov word [ebx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x268]
mov dword [esp], eax
call fcn.00409350
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.Failed_to_extract__s_n
mov dword [esp + 8], str.load_assemblies_from_cab
mov dword [esp + 4], 0x40a000
mov dword [esp], 1
call fcn.00401bf0
nop
test byte [section..data], 2
je 0x404a3f
mov eax, esi
shr eax, 0x10
je 0x406312
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, 0x40b015
sub esp, 8
test eax, eax
jne 0x4058de
cmp word [esi], 0
je 0x4063bd
lea esi, [esi]
nop
mov edx, eax
lea eax, [eax + 1]
cmp word [esi + edx*2 + 2], 0
jne 0x405218
mov eax, 0x224c
mov dword [ebp - 0x4e0], esi
lea ecx, [ebp - 0x266]
mov word [ebp - 0x268], ax
mov dword [ebp - 0x4d0], esi
jmp 0x40528b
cmp ax, 9
je 0x406193
cmp ax, 0xa
jne 0x406127
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea esi, [esi]
nop
lea eax, [edx - 1]
test edx, edx
jle 0x4058aa
lea esi, [ebp - 0x146]
cmp ecx, esi
ja 0x4058aa
mov edx, eax
add dword [ebp - 0x4d0], 2
mov eax, dword [ebp - 0x4d0]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x4061ae
jbe 0x405248
cmp ax, 0x22
je 0x406178
cmp ax, 0x5c
jne 0x40611a
mov ebx, 0x5c5c
add ecx, 2
mov word [ecx - 2], bx
jmp 0x405270
mov byte [ecx], al
add ecx, 1
jmp 0x404cf0
shr eax, 0x10
je 0x40551a
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, 0x40b015
sub esp, 8
test eax, eax
jne 0x40552f
cmp word [esi], 0
je 0x4062dd
lea esi, [esi]
mov edx, eax
lea eax, [eax + 1]
cmp word [esi + edx*2 + 2], 0
jne 0x405318
mov ebx, 0x224c
mov dword [ebp - 0x4e0], esi
lea ecx, [ebp - 0x266]
mov word [ebp - 0x268], bx
mov dword [ebp - 0x4d0], esi
jmp 0x40538b
cmp ax, 9
je 0x405888
cmp ax, 0xa
jne 0x40581c
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea esi, [esi]
nop
lea esi, [ebp - 0x146]
lea eax, [edx - 1]
cmp ecx, esi
ja 0x405ad8
test edx, edx
jle 0x405ad8
mov edx, eax
add dword [ebp - 0x4d0], 2
mov eax, dword [ebp - 0x4d0]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x405899
jbe 0x405348
cmp ax, 0x22
je 0x405870
cmp ax, 0x5c
jne 0x40580f
mov ebx, 0x5c5c
add ecx, 2
mov word [ecx - 2], bx
jmp 0x405370
mov edx, 0x40b00e
jmp 0x404d55
mov dword [esp], section..data
call fcn.004093f0
test al, 8
je 0x404b6d
movzx eax, byte [section..data]
test al, 8
jne 0x405b11
mov ecx, dword [ebp - 0x4c4]
mov edi, dword [ecx + 0x18]
cmp dword [ebp - 0x4c8], edi
jne 0x40541e
jmp 0x405b7e
mov edi, dword [edi]
cmp dword [ebp - 0x4c8], edi
je 0x405b56
mov edx, eax
and edx, 8
je 0x405410
mov ebx, dword [edi + 8]
test ebx, ebx
je 0x4062fe
mov eax, ebx
shr eax, 0x10
je 0x4061bf
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, 0x40b015
sub esp, 8
test eax, eax
jne 0x40558a
cmp word [ebx], 0
je 0x406357
lea esi, [esi]
lea esi, [esi]
mov edx, eax
lea eax, [eax + 1]
cmp word [ebx + edx*2 + 2], 0
jne 0x405470
mov esi, 0x224c
mov dword [ebp - 0x4c0], ebx
lea ecx, [ebp - 0x266]
mov word [ebp - 0x268], si
jmp 0x4054db
cmp ax, 9
je 0x405998
cmp ax, 0xa
jne 0x405929
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea eax, [edx - 1]
test edx, edx
jle 0x40555c
lea esi, [ebp - 0x146]
cmp ecx, esi
ja 0x40555c
mov edx, eax
add dword [ebp - 0x4c0], 2
mov eax, dword [ebp - 0x4c0]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x40590b
jbe 0x4054a0
cmp ax, 0x22
je 0x405980
cmp ax, 0x5c
jne 0x40591c
mov ebx, 0x5c5c
add ecx, 2
mov word [ecx - 2], bx
jmp 0x4054c0
movzx eax, si
mov dword [esp], 0x40b008
mov dword [esp + 4], eax
call fcn.00401760
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.Processing_cab_file__s_n
mov dword [esp + 8], str.load_assemblies_from_cab
mov dword [esp + 4], 0x40a000
mov dword [esp], 3
call fcn.00401bf0
jmp 0x404a0c
mov byte [ecx], 0x22
test eax, eax
jle 0x406370
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x268]
mov dword [esp], eax
call fcn.00409350
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.___s_n
mov dword [esp + 8], str.install_msu
mov dword [esp + 4], 0x40a000
mov dword [esp], 3
call fcn.00401bf0
movzx eax, byte [section..data]
mov edx, eax
and edx, 8
jmp 0x405410
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x404ec0
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x404ec0
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x405ace
mov edi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefcabinet_copy_file]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefcabinet_copy_file]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefcabinet_copy_file]
and edi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefcabinet_copy_file]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x404ec0
mov edi, 0x225c
add ecx, 2
mov word [ecx - 2], di
jmp 0x404ec0
mov eax, 0x224c
mov byte [ebp - 0x266], 0x22
lea ecx, [ebp - 0x266]
mov word [ebp - 0x268], ax
lea eax, [ecx + 1]
jmp 0x404f91
mov eax, ebx
shr eax, 0x10
je 0x406228
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, 0x40b015
sub esp, 8
test eax, eax
jne 0x4057ac
cmp word [ebx], 0
je 0x406378
lea esi, [esi]
nop
mov edx, eax
lea eax, [eax + 1]
cmp word [ebx + edx*2 + 2], 0
jne 0x4056c0
mov ecx, 0x224c
mov dword [ebp - 0x4d8], edi
mov word [ebp - 0x268], cx
lea ecx, [ebp - 0x266]
mov dword [ebp - 0x4dc], ebx
mov dword [ebp - 0x4d0], ebx
jmp 0x405733
cmp ax, 9
je 0x405a40
cmp ax, 0xa
jne 0x4059d0
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea esi, [esi]
nop
lea eax, [edx - 1]
test edx, edx
jle 0x405772
lea edi, [ebp - 0x146]
cmp ecx, edi
ja 0x405772
mov edx, eax
add dword [ebp - 0x4d0], 2
mov eax, dword [ebp - 0x4d0]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x405a51
jbe 0x4056f8
cmp ax, 0x22
je 0x405a28
cmp ax, 0x5c
jne 0x4059c3
mov ebx, 0x5c5c
add ecx, 2
mov word [ecx - 2], bx
jmp 0x405720
mov edi, dword [ebp - 0x4d8]
mov ebx, dword [ebp - 0x4dc]
mov byte [ecx], 0x22
test eax, eax
jle 0x406391
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x268]
mov dword [esp], eax
call fcn.00409350
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.Failed_to_load_all_updates_from__s__ignoring_n
mov dword [esp + 8], str.install_msu
mov dword [esp + 4], 0x40a000
mov dword [esp], 1
call fcn.00401bf0
jmp 0x404b27
test byte [section..data], 2
je 0x404891
mov dword [esp + 0xc], str.Dry_run_failed__aborting_installation_n
mov dword [esp + 8], str.install_msu
mov dword [esp + 4], 0x40a000
mov dword [esp], 1
call fcn.00401bf0
jmp 0x40489b
lea esi, [eax - 0x20]
cmp si, 0x5e
jbe 0x406189
mov esi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr si, 0xc
movzx esi, si
movzx ebx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov esi, eax
shr si, 8
and esi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov esi, eax
and eax, 0xf
shr si, 4
movzx eax, byte [eax + str.0123456789abcdefcabinet_copy_file]
and esi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x405370
mov esi, 0x225c
add ecx, 2
mov word [ecx - 2], si
jmp 0x405370
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x405370
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x405370
mov byte [ecx], 0x22
mov esi, dword [ebp - 0x4e0]
test eax, eax
jle 0x4063d6
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x268]
mov dword [esp], eax
call fcn.00409350
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.Failed_to_load_all_manifests_from__s__ignoring_n
mov dword [esp + 8], str.install_msu
mov dword [esp + 4], 0x40a000
mov dword [esp], 1
call fcn.00401bf0
jmp 0x404a3f
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x4054c0
lea esi, [eax - 0x20]
cmp si, 0x5e
jbe 0x4061f3
mov esi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr si, 0xc
movzx esi, si
movzx ebx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov esi, eax
shr si, 8
and esi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov esi, eax
and eax, 0xf
shr si, 4
movzx eax, byte [eax + str.0123456789abcdefcabinet_copy_file]
and esi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x4054c0
mov esi, 0x225c
add ecx, 2
mov word [ecx - 2], si
jmp 0x4054c0
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x4054c0
movzx ebx, bx
mov dword [esp], 0x40b008
mov dword [esp + 4], ebx
call fcn.00401760
mov edx, eax
jmp 0x404f3a
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x4062d3
mov edi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefcabinet_copy_file]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefcabinet_copy_file]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefcabinet_copy_file]
and edi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefcabinet_copy_file]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x405720
mov edi, 0x225c
add ecx, 2
mov word [ecx - 2], di
jmp 0x405720
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x405720
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x405720
test byte [section..data], 2
je 0x404891
mov dword [esp + 0xc], str.Installation_failed_n
mov dword [esp + 8], str.install_msu
mov dword [esp + 4], 0x40a000
mov dword [esp], 1
call fcn.00401bf0
jmp 0x40489b
test byte [section..data], 2
je 0x404891
mov dword [esp + 0xc], str.No_updates_found__probably_incompatible_MSU_file_format__n
mov dword [esp + 8], str.install_msu
mov dword [esp + 4], 0x40a000
mov dword [esp], 1
call fcn.00401bf0
jmp 0x404891
mov byte [ecx], al
add ecx, 1
jmp 0x404ec0
mov byte [ecx], 0x22
mov esi, dword [ebp - 0x4e0]
test eax, eax
jle 0x4062f6
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x268]
mov dword [esp], eax
call fcn.00409350
mov edx, eax
jmp 0x40552f
mov dword [esp + 0xc], str.List_of_updates:_n
mov dword [esp + 8], str.install_msu
mov dword [esp + 4], 0x40a000
mov dword [esp], 3
call fcn.00401bf0
movzx eax, byte [section..data]
mov ecx, dword [ebp - 0x4c4]
mov edx, eax
mov edi, dword [ecx + 0x18]
and edx, 8
cmp dword [ebp - 0x4c8], edi
jne 0x40541e
test dl, dl
je 0x405b7e
mov dword [esp + 0xc], str.List_of_manifests__with_dependencies_:_n
mov dword [esp + 8], str.install_msu
mov dword [esp + 4], 0x40a000
mov dword [esp], 3
call fcn.00401bf0
mov eax, dword [ebp - 0x4c4]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x4d4], eax
cmp dword [ebp - 0x4cc], eax
je 0x404b6d
lea esi, [esi]
test byte [section..data], 8
jne 0x405e68
mov eax, dword [ebp - 0x4d4]
mov esi, dword [eax + 0x28]
add eax, 0x28
mov dword [ebp - 0x4d0], eax
cmp eax, esi
jne 0x405bde
jmp 0x405d3c
mov esi, dword [esi]
cmp esi, dword [ebp - 0x4d0]
je 0x405d3c
test byte [section..data], 8
je 0x405bd0
mov ebx, dword [esi + 8]
test ebx, ebx
je 0x405e38
mov eax, ebx
shr eax, 0x10
je 0x405e08
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, 0x40b015
sub esp, 8
test eax, eax
jne 0x405d06
cmp word [ebx], 0
je 0x405e42
lea esi, [esi]
nop
mov edx, eax
lea eax, [eax + 1]
cmp word [ebx + edx*2 + 2], 0
jne 0x405c30
mov eax, 0x224c
mov dword [ebp - 0x4c0], ebx
lea ecx, [ebp - 0x266]
mov word [ebp - 0x268], ax
jmp 0x405c93
cmp ax, 9
je 0x405d78
cmp ax, 0xa
jne 0x405d96
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea edi, [ebp - 0x146]
lea eax, [edx - 1]
cmp ecx, edi
ja 0x405cd8
test edx, edx
jle 0x405cd8
mov edx, eax
add dword [ebp - 0x4c0], 2
mov eax, dword [ebp - 0x4c0]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x405d60
jbe 0x405c60
cmp ax, 0x22
je 0x405df0
cmp ax, 0x5c
jne 0x405d89
mov ebx, 0x5c5c
add ecx, 2
mov word [ecx - 2], bx
jmp 0x405c80
mov byte [ecx], 0x22
test eax, eax
jle 0x405e5b
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x268]
mov dword [esp], eax
call fcn.00409350
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str._______s_n
mov dword [esp + 8], str.install_msu
mov dword [esp + 4], 0x40a000
mov dword [esp], 3
call fcn.00401bf0
mov esi, dword [esi]
cmp esi, dword [ebp - 0x4d0]
jne 0x405bde
mov eax, dword [ebp - 0x4d4]
mov eax, dword [eax]
mov dword [ebp - 0x4d4], eax
cmp dword [ebp - 0x4cc], eax
jne 0x405ba0
jmp 0x404b6d
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x405c80
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x405c80
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x405e28
mov edi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefcabinet_copy_file]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefcabinet_copy_file]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefcabinet_copy_file]
and edi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefcabinet_copy_file]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x405c80
mov edi, 0x225c
add ecx, 2
mov word [ecx - 2], di
jmp 0x405c80
movzx ebx, bx
mov dword [esp], 0x40b008
mov dword [esp + 4], ebx
call fcn.00401760
mov edx, eax
jmp 0x405d06
mov byte [ecx], al
add ecx, 1
jmp 0x405c80
mov edx, 0x40b00e
jmp 0x405d06
mov eax, 0x224c
mov byte [ebp - 0x266], 0x22
lea ecx, [ebp - 0x266]
mov word [ebp - 0x268], ax
lea eax, [ecx + 1]
jmp 0x405cf3
mov eax, dword [ebp - 0x4d4]
mov ebx, dword [eax + 0x14]
test ebx, ebx
je 0x406308
mov eax, ebx
shr eax, 0x10
je 0x4061d9
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, 0x40b015
sub esp, 8
test eax, eax
jne 0x405f71
cmp word [ebx], 0
je 0x406336
nop
mov edx, eax
lea eax, [eax + 1]
cmp word [ebx + edx*2 + 2], 0
jne 0x405eb0
mov eax, 0x224c
lea ecx, [ebp - 0x266]
mov edi, ebx
mov word [ebp - 0x268], ax
jmp 0x405f13
cmp ax, 9
je 0x405fb0
cmp ax, 0xa
jne 0x405fce
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea esi, [esi]
nop
lea eax, [edx - 1]
test edx, edx
jle 0x405f43
lea esi, [ebp - 0x146]
cmp ecx, esi
ja 0x405f43
mov edx, eax
movzx eax, word [edi]
add edi, 2
cmp ax, 0xd
je 0x405f9e
jbe 0x405ed8
cmp ax, 0x22
je 0x406020
cmp ax, 0x5c
jne 0x405fc1
mov ebx, 0x5c5c
add ecx, 2
mov word [ecx - 2], bx
jmp 0x405f00
mov byte [ecx], 0x22
test eax, eax
jle 0x40634f
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x268]
mov dword [esp], eax
call fcn.00409350
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.___s_n
mov dword [esp + 8], str.install_msu
mov dword [esp + 4], 0x40a000
mov dword [esp], 3
call fcn.00401bf0
jmp 0x405bad
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x405f00
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x405f00
lea esi, [eax - 0x20]
cmp si, 0x5e
jbe 0x4061fd
mov esi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr si, 0xc
movzx esi, si
movzx ebx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov esi, eax
shr si, 8
and esi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov esi, eax
and eax, 0xf
shr si, 4
movzx eax, byte [eax + str.0123456789abcdefcabinet_copy_file]
and esi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x405f00
mov esi, 0x225c
add ecx, 2
mov word [ecx - 2], si
jmp 0x405f00
mov eax, esi
shr eax, 0x10
je 0x406399
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, 0x40b015
sub esp, 8
test eax, eax
jne 0x4051a7
cmp word [esi], 0
je 0x4063de
lea esi, [esi]
nop
mov edx, eax
lea eax, [eax + 1]
cmp word [esi + edx*2 + 2], 0
jne 0x406070
mov eax, 0x224c
mov dword [ebp - 0x4e0], esi
lea ebx, [ebp - 0x266]
mov word [ebp - 0x268], ax
mov dword [ebp - 0x4d0], esi
jmp 0x4060db
cmp ax, 9
je 0x4062c2
cmp ax, 0xa
jne 0x406260
mov eax, 0x6e5c
add ebx, 2
mov word [ebx - 2], ax
lea esi, [esi]
lea ecx, [ebp - 0x146]
lea eax, [edx - 1]
cmp ebx, ecx
ja 0x405173
test edx, edx
jle 0x405173
mov edx, eax
add dword [ebp - 0x4d0], 2
mov eax, dword [ebp - 0x4d0]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x406242
jbe 0x40609d
cmp ax, 0x22
je 0x4062b1
cmp ax, 0x5c
jne 0x406253
mov ecx, 0x5c5c
add ebx, 2
mov word [ebx - 2], cx
jmp 0x4060c0
lea esi, [eax - 0x20]
cmp si, 0x5e
jbe 0x40632c
mov esi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr si, 0xc
movzx esi, si
movzx ebx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov esi, eax
shr si, 8
and esi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov esi, eax
and eax, 0xf
shr si, 4
movzx eax, byte [eax + str.0123456789abcdefcabinet_copy_file]
and esi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x405270
mov esi, 0x225c
add ecx, 2
mov word [ecx - 2], si
jmp 0x405270
mov byte [ecx], al
add ecx, 1
jmp 0x405370
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x405270
mov edx, 0x40b00e
jmp 0x404f3a
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x405270
movzx ebx, bx
mov dword [esp], 0x40b008
mov dword [esp + 4], ebx
call fcn.00401760
mov edx, eax
jmp 0x40558a
movzx ebx, bx
mov dword [esp], 0x40b008
mov dword [esp + 4], ebx
call fcn.00401760
mov edx, eax
jmp 0x405f71
mov byte [ecx], al
add ecx, 1
jmp 0x4054c0
mov byte [ecx], al
add ecx, 1
jmp 0x405f00
mov eax, 0x224c
mov byte [ebp - 0x266], 0x22
lea ecx, [ebp - 0x266]
mov word [ebp - 0x268], ax
lea eax, [ecx + 1]
jmp 0x404f27
movzx eax, bx
mov dword [esp], 0x40b008
mov dword [esp + 4], eax
call fcn.00401760
mov edx, eax
jmp 0x4057ac
mov eax, 0x725c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x4060c0
lea esi, [eax - 0x20]
cmp si, 0x5e
jbe 0x4063b3
mov esi, eax
mov byte [ebx], 0x5c
add ebx, 5
shr si, 0xc
movzx esi, si
movzx ecx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov esi, eax
shr si, 8
and esi, 0xf
mov byte [ebx - 4], cl
movzx ecx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov esi, eax
and eax, 0xf
shr si, 4
movzx eax, byte [eax + str.0123456789abcdefcabinet_copy_file]
and esi, 0xf
mov byte [ebx - 3], cl
movzx ecx, byte [esi + str.0123456789abcdefcabinet_copy_file]
mov byte [ebx - 1], al
mov byte [ebx - 2], cl
jmp 0x4060c0
mov esi, 0x225c
add ebx, 2
mov word [ebx - 2], si
jmp 0x4060c0
mov eax, 0x745c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x4060c0
mov byte [ecx], al
add ecx, 1
jmp 0x405720
mov eax, 0x224c
mov byte [ebp - 0x266], 0x22
lea ecx, [ebp - 0x266]
mov word [ebp - 0x268], ax
lea eax, [ecx + 1]
jmp 0x405af9
mov edx, 0x40b00e
jmp 0x40558a
mov edx, 0x40b00e
jmp 0x405f71
movzx eax, si
mov dword [esp], 0x40b008
mov dword [esp + 4], eax
call fcn.00401760
mov edx, eax
jmp 0x4058de
mov byte [ecx], al
add ecx, 1
jmp 0x405270
mov edi, 0x224c
mov byte [ebp - 0x266], 0x22
lea ecx, [ebp - 0x266]
mov word [ebp - 0x268], di
lea eax, [ecx + 1]
jmp 0x405f5e
mov ebx, 0x224c
mov byte [ebp - 0x266], 0x22
lea ecx, [ebp - 0x266]
mov word [ebp - 0x268], bx
lea eax, [ecx + 1]
jmp 0x405577
mov edx, 0x224c
mov byte [ebp - 0x266], 0x22
lea ecx, [ebp - 0x266]
mov word [ebp - 0x268], dx
lea eax, [ecx + 1]
jmp 0x405799
movzx eax, si
mov dword [esp], 0x40b008
mov dword [esp + 4], eax
call fcn.00401760
mov edx, eax
jmp 0x4051a7
mov byte [ebx], al
add ebx, 1
jmp 0x4060c0
mov eax, 0x224c
mov byte [ebp - 0x266], 0x22
lea ecx, [ebp - 0x266]
mov word [ebp - 0x268], ax
lea eax, [ecx + 1]
jmp 0x4058cb
mov eax, 0x224c
mov byte [ebp - 0x266], 0x22
lea ebx, [ebp - 0x266]
mov word [ebp - 0x268], ax
lea eax, [ebx + 1]
jmp 0x405194