Function at 0x4a0d10
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5593a1
mov eax, dword fs:[0]
push eax
sub esp, 0x54
mov eax, dword [0x5d0074]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x28], ebx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x20]
push eax
mov dword [ebp - 0x54], 0
call dword [sym.imp.ole32.dll_CoCreateGuid]
call fcn.00413cd0
mov ecx, eax
test ecx, ecx
je 0x4a150d
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x38], eax
mov dword [ebp - 4], 2
movzx eax, byte [ebp - 0x11]
push eax
movzx eax, byte [ebp - 0x12]
push eax
movzx eax, byte [ebp - 0x13]
push eax
movzx eax, byte [ebp - 0x14]
push eax
movzx eax, byte [ebp - 0x15]
push eax
movzx eax, byte [ebp - 0x16]
push eax
movzx eax, byte [ebp - 0x17]
push eax
movzx eax, byte [ebp - 0x18]
push eax
movzx eax, word [ebp - 0x1a]
push eax
movzx eax, word [ebp - 0x1c]
push eax
push dword [ebp - 0x20]
lea eax, [ebp - 0x38]
push str._0.8X__0.4X__0.4X__0.2X_0.2X__0.2X_0.2X_0.2X_0.2X_0.2X_0.2X
push eax
call fcn.00419120
add esp, 0x34
call fcn.00413cd0
mov ecx, eax
test ecx, ecx
je 0x4a1517
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x30], edi
mov byte [ebp - 4], 4
call fcn.00413cd0
mov ecx, eax
test ecx, ecx
je 0x4a1521
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x44], eax
mov byte [ebp - 4], 6
call fcn.00413cd0
mov ecx, eax
test ecx, ecx
je 0x4a152b
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x50], eax
mov byte [ebp - 4], 8
lea eax, [ebp - 0x50]
mov ecx, dword [ebx + 0x20]
push eax
lea eax, [ebp - 0x44]
push eax
call fcn.004af2a0
mov esi, dword [ebp - 0x50]
lea ecx, [edi - 0x10]
or ebx, 0xffffffff
mov dword [ebp - 0x2c], ecx
lea edx, [esi - 0x10]
mov dword [ebp - 0x58], edx
cmp edx, ecx
je 0x4a0e8e
cmp dword [ecx + 0xc], 0
lea edi, [ecx + 0xc]
jl 0x4a0e7f
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x4a0e7f
mov ecx, edx
call fcn.0040be70
mov dword [ebp - 0x24], eax
mov ecx, ebx
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x4a0e77
mov eax, dword [ebp - 0x2c]
push eax
mov edi, dword [eax]
mov ecx, dword [edi]
mov edx, dword [ecx + 4]
mov ecx, edi
call edx
mov eax, dword [ebp - 0x24]
lea edi, [eax + 0x10]
mov dword [ebp - 0x30], edi
jmp 0x4a0e8e
push dword [esi - 0xc]
lea ecx, [ebp - 0x30]
push esi
call fcn.004143c0
mov edi, dword [ebp - 0x30]
cmp dword [esi - 0xc], 0
jl 0x4a0edc
push 0x58ae84
push esi
call fcn.005223f0
add esp, 8
test eax, eax
je 0x4a0edc
sub eax, esi
sar eax, 1
jne 0x4a0edc
add esi, 8
jne 0x4a0eb5
xor ecx, ecx
jmp 0x4a0ecf
mov ecx, esi
lea edx, [ecx + 2]
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4a0ec0
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x30]
call fcn.004143c0
mov edi, dword [ebp - 0x30]
lea eax, [ebp - 0x38]
push eax
lea edx, [ebp - 0x30]
lea ecx, [ebp - 0x2c]
call fcn.00490c60
mov byte [ebp - 4], 9
mov edx, eax
push 0x584d0c
lea ecx, [ebp - 0x34]
call fcn.0047b450
add esp, 8
mov byte [ebp - 4], 0xb
mov eax, ebx
mov edx, dword [ebp - 0x2c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a0f1f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0
mov dl, 1
lea ecx, [ebp - 0x34]
call fcn.00494c60
push str.instname_target.msi
lea edx, [ebp - 0x34]
lea ecx, [ebp - 0x40]
call fcn.0047b450
add esp, 8
mov byte [ebp - 4], 0xd
mov ecx, dword [ebp - 0x28]
mov edx, dword [eax]
add ecx, 0x24
mov esi, dword [ecx]
lea eax, [edx - 0x10]
sub esi, 0x10
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x3c], esi
cmp eax, esi
je 0x4a0fa6
cmp dword [esi + 0xc], 0
jl 0x4a0f9d
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x4a0f9d
mov ecx, dword [ebp - 0x24]
call fcn.0040be70
mov dword [ebp - 0x24], eax
mov ecx, ebx
lea eax, [esi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4a0f8f
mov esi, dword [esi]
push dword [ebp - 0x3c]
mov ecx, dword [esi]
mov edx, dword [ecx + 4]
mov ecx, esi
call edx
mov esi, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
add eax, 0x10
mov dword [esi + 0x24], eax
jmp 0x4a0fa9
push dword [edx - 0xc]
push edx
call fcn.004143c0
mov esi, dword [ebp - 0x28]
mov byte [ebp - 4], 0xb
mov eax, ebx
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a0fc7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.instname_custom.mst
lea edx, [ebp - 0x34]
lea ecx, [ebp - 0x24]
call fcn.0047b450
add esp, 4
mov byte [ebp - 4], 0xf
mov ecx, dword [eax]
mov esi, dword [esi + 0x28]
sub esi, 0x10
mov dword [ebp - 0x40], esi
lea edx, [ecx - 0x10]
cmp edx, esi
je 0x4a1041
cmp dword [esi + 0xc], 0
jl 0x4a1030
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x4a1030
mov ecx, edx
call fcn.0040be70
mov dword [ebp - 0x3c], eax
lea edx, [esi + 0xc]
mov ecx, ebx
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4a1025
mov esi, dword [esi]
push dword [ebp - 0x40]
mov ecx, dword [esi]
mov edx, dword [ecx + 4]
mov ecx, esi
call edx
mov eax, dword [ebp - 0x3c]
mov esi, dword [ebp - 0x28]
add eax, 0x10
mov dword [esi + 0x28], eax
jmp 0x4a1044
push dword [ecx - 0xc]
mov esi, dword [ebp - 0x28]
push ecx
lea ecx, [esi + 0x28]
call fcn.004143c0
jmp 0x4a1044
mov esi, dword [ebp - 0x28]
mov byte [ebp - 4], 0xb
mov eax, ebx
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a1062
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0
push dword [esi + 0x24]
mov esi, dword [ebp - 0x44]
push esi
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x4a1137
call fcn.00413cd0
mov ecx, eax
test ecx, ecx
je 0x4a1535
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [ebp - 0x48]
add eax, 0x10
mov dword [ecx], eax
mov byte [ebp - 4], 0xb
mov dword [ebp - 0x54], 1
mov byte [ebp - 4], 8
mov eax, ebx
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a10be
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
mov eax, ebx
mov edx, dword [ebp - 0x58]
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a10d9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4a10f4
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x4a110f
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0
mov eax, dword [ebp - 0x38]
add eax, 0xfffffff0
lock xadd dword [eax + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x4a14ec
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
jmp 0x4a14ec
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax + 0x1c]
sub ecx, 0x10
call fcn.0040be70
add eax, 0x10
mov dword [ebp - 0x2c], eax
mov byte [ebp - 4], 0x18
mov ecx, dword [ebp - 0x28]
mov eax, dword [ecx + 0x1c]
cmp dword [eax - 0xc], 0
jne 0x4a1203
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.004a1a10
mov byte [ebp - 4], 0x19
mov eax, dword [eax]
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x5c], eax
lea ecx, [eax - 0x10]
mov dword [ebp - 0x24], ecx
mov ecx, dword [edx + 0x1c]
sub ecx, 0x10
mov dword [ebp - 0x3c], ecx
cmp dword [ebp - 0x24], ecx
je 0x4a11e5
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
mov dword [ebp - 0x40], esi
mov esi, dword [ebp - 0x44]
jl 0x4a11d9
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x4a11d6
mov ecx, dword [ebp - 0x24]
call fcn.0040be70
mov dword [ebp - 0x24], eax
mov ecx, ebx
mov eax, dword [ebp - 0x40]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4a11c8
mov eax, dword [ebp - 0x3c]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
add eax, 0x10
mov dword [ecx + 0x1c], eax
jmp 0x4a11e5
mov eax, dword [ebp - 0x5c]
push dword [eax - 0xc]
lea ecx, [edx + 0x1c]
push eax
call fcn.004143c0
mov byte [ebp - 4], 0x18
mov eax, ebx
mov edx, dword [ebp - 0x4c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a1203
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.00413cd0
mov ecx, eax
test ecx, ecx
je 0x4a153f
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x24], eax
mov byte [ebp - 4], 0x1b
mov eax, 0x5833f0
lea ecx, [ebp - 0x24]
test eax, 0xffff0000
jne 0x4a123b
movzx eax, ax
push eax
call fcn.00414050
jmp 0x4a1247
push 0xb
push 0x5833f0
call fcn.004143c0
mov byte [ebp - 4], 0x1c
mov ecx, dword [ebp - 0x28]
lea eax, [ecx + 0x1c]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ecx + 0x24]
push eax
call fcn.004a17e0
mov byte [ebp - 4], 0x18
mov eax, ebx
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a127d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.00413cd0
mov ecx, eax
test ecx, ecx
je 0x4a1549
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x24], eax
mov byte [ebp - 4], 0x1e
mov eax, str.AI_PRODUCTNAME_ARP
lea ecx, [ebp - 0x24]
test eax, 0xffff0000
jne 0x4a12b5
movzx eax, ax
push eax
call fcn.00414050
jmp 0x4a12c1
push 0x12
push str.AI_PRODUCTNAME_ARP
call fcn.004143c0
mov byte [ebp - 4], 0x1f
mov ecx, dword [ebp - 0x28]
lea eax, [ecx + 0x1c]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ecx + 0x24]
push eax
call fcn.004a17e0
mov byte [ebp - 4], 0x18
mov eax, ebx
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a12f7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.00413cd0
mov ecx, eax
test ecx, ecx
je 0x4a1553
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x24], eax
mov byte [ebp - 4], 0x21
mov eax, str.ProductCode
lea ecx, [ebp - 0x24]
test eax, 0xffff0000
jne 0x4a132f
movzx eax, ax
push eax
call fcn.00414050
jmp 0x4a133b
push 0xb
push str.ProductCode
call fcn.004143c0
mov byte [ebp - 4], 0x22
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x24]
push eax
mov eax, dword [ebp - 0x28]
add eax, 0x24
push eax
call fcn.004a17e0
mov byte [ebp - 4], 0x18
mov eax, ebx
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a1371
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.00413cd0
mov ecx, eax
test ecx, ecx
je 0x4a155d
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x24], eax
mov byte [ebp - 4], 0x24
mov eax, str.InstanceId
lea ecx, [ebp - 0x24]
test eax, 0xffff0000
jne 0x4a13a9
movzx eax, ax
push eax
call fcn.00414050
jmp 0x4a13b3
push str.InstanceId
call fcn.00495610
mov byte [ebp - 4], 0x25
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x24]
push eax
mov eax, dword [ebp - 0x28]
add eax, 0x24
push eax
call fcn.004a17e0
mov byte [ebp - 4], 0x18
mov eax, ebx
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a13e9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x28]
lea eax, [ecx + 0x28]
push eax
lea eax, [ecx + 0x24]
push eax
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.004a1570
mov byte [ebp - 4], 0x18
mov eax, ebx
mov edx, dword [ebp - 0x4c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a141f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x28]
mov ecx, dword [ecx + 0x28]
sub ecx, 0x10
call fcn.0040be70
mov ecx, dword [ebp - 0x48]
add eax, 0x10
mov dword [ecx], eax
mov byte [ebp - 4], 0x18
mov dword [ebp - 0x54], 1
mov byte [ebp - 4], 0xb
mov eax, ebx
mov edx, dword [ebp - 0x2c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a145e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 8
mov eax, ebx
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a147c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
mov eax, ebx
mov edx, dword [ebp - 0x58]
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4a1497
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4a14b2
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x4a14cd
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0
mov edx, dword [ebp - 0x38]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x4a14ec
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00520c02
mov esp, ebp
pop ebp
ret 4
push 0x80004005
call fcn.004143a0
push 0x80004005
call fcn.004143a0
push 0x80004005
call fcn.004143a0
push 0x80004005
call fcn.004143a0
push 0x80004005
call fcn.004143a0
push 0x80004005
call fcn.004143a0
push 0x80004005
call fcn.004143a0
push 0x80004005
call fcn.004143a0
push 0x80004005
call fcn.004143a0
int3