Function at 0x447120
Capabilities:
Check if file exists
Copy file
Delete file
Delete registry value
Get common file path
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x534c89
mov eax, dword fs:[0]
push eax
mov eax, 0x21a0
call fcn.004b8600
mov eax, dword [0x589644]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
push 0x208
mov dword [ebp - 0x21a0], eax
lea eax, [ebp - 0x420]
push 0
push eax
mov dword [ebp - 0x2194], 0
call fcn.004d7bd0
mov eax, dword [0x58e0f8]
add esp, 0xc
mov dword [ebp - 0x21ac], 1
mov dword [ebp - 0x21a8], 0x104
test al, 1
jne 0x4471a9
or eax, 1
mov dword [0x58e0f4], 0
mov dword [0x58e0f8], eax
mov byte [ebp - 0x2161], 0
lea eax, [ebp - 0x216c]
mov dword [ebp - 4], 0
push eax
call fcn.00478ed3
lea eax, [ebp - 0x216c]
mov dword [ebp - 4], 1
mov dword [ebp - 0x2184], eax
lea eax, [ebp - 0x2161]
mov dword [ebp - 0x2180], eax
lea eax, [ebp - 0x2184]
push eax
push 0x4449e0
push 0x58e0f4
call fcn.004798cc
add esp, 0x10
test eax, eax
je 0x448564
lea eax, [ebp - 0x216c]
mov dword [ebp - 4], 2
push eax
call fcn.00478f0d
add esp, 4
mov dword [ebp - 4], 0xffffffff
lea eax, [ebp - 0x21a8]
push eax
lea eax, [ebp - 0x420]
push eax
lea eax, [ebp - 0x21ac]
push eax
push str.path
push 0x58e100
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.SHLWAPI.dll_SHGetValueW]
mov edi, dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
je 0x44744f
push 0x208
lea eax, [ebp - 0x628]
push 0
push eax
call fcn.004d7bd0
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x628]
add esp, 0xc
push 0x104
push eax
push 0
call esi
lea eax, [ebp - 0x628]
push eax
call edi
push str.birdwp.exe
lea eax, [ebp - 0x628]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x628]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x44846c
push 0x208
lea eax, [ebp - 0x420]
push 0
push eax
call fcn.004d7bd0
add esp, 0xc
lea eax, [ebp - 0x420]
push 0x104
push eax
push 0
call esi
lea eax, [ebp - 0x420]
push eax
call edi
mov eax, dword [0x58e188]
test al, 1
jne 0x4472fe
or eax, 1
mov dword [0x58e184], 0
mov dword [0x58e188], eax
mov byte [ebp - 0x2161], 0
lea eax, [ebp - 0x216c]
mov dword [ebp - 4], 5
push eax
call fcn.00478ed3
lea eax, [ebp - 0x216c]
mov dword [ebp - 4], 6
mov dword [ebp - 0x2184], eax
lea eax, [ebp - 0x2161]
mov dword [ebp - 0x2180], eax
lea eax, [ebp - 0x2184]
push eax
push 0x444750
push 0x58e184
call fcn.004798cc
add esp, 0x10
test eax, eax
je 0x447484
lea eax, [ebp - 0x216c]
mov dword [ebp - 4], 7
push eax
call fcn.00478f0d
add esp, 4
push str.path
push 0x58e190
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.SHLWAPI.dll_SHDeleteValueW]
lea esi, [ebp - 0x420]
lea ecx, [esi + 2]
nop dword [eax]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x447390
mov eax, dword [0x58e218]
sub esi, ecx
sar esi, 1
test al, 1
jne 0x4473ba
or eax, 1
mov dword [0x58e214], 0
mov dword [0x58e218], eax
mov byte [ebp - 0x2161], 0
lea eax, [ebp - 0x216c]
mov dword [ebp - 4], 0xa
push eax
call fcn.00478ed3
lea eax, [ebp - 0x216c]
mov dword [ebp - 4], 0xb
mov dword [ebp - 0x2184], eax
lea eax, [ebp - 0x2161]
mov dword [ebp - 0x2180], eax
lea eax, [ebp - 0x2184]
push eax
push 0x444d50
push 0x58e214
call fcn.004798cc
add esp, 0x10
test eax, eax
je 0x447460
lea eax, [ebp - 0x216c]
mov dword [ebp - 4], 0xc
push eax
call fcn.00478f0d
add esp, 4
mov dword [ebp - 4], 0xffffffff
lea eax, [esi + esi]
push eax
lea eax, [ebp - 0x420]
push eax
push 1
push str.path
push 0x58e220
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.SHLWAPI.dll_SHSetValueW]
call fcn.004214f0
mov ecx, eax
test ecx, ecx
je 0x448580
jmp 0x44749d
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0xd
push eax
call fcn.00478f4f
add esp, 4
mov byte [ebp - 4], 0xb
test al, al
je 0x4485a0
jmp 0x44858a
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 8
push eax
call fcn.00478f4f
add esp, 4
mov byte [ebp - 4], 6
jmp 0x447477
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [ebp - 0x21a4], esi
push 0x800
lea eax, [ebp - 0x2150]
mov dword [ebp - 4], 0xf
push 0
push eax
call fcn.004d7bd0
push 0x800
lea eax, [ebp - 0x1950]
push 0
push eax
call fcn.004d7bd0
add esp, 0x18
lea eax, [ebp - 0x2150]
push eax
push 0x400
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
push 0xfe
lea eax, [ebp - 0x726]
push 0
push eax
call fcn.004d7bd0
add esp, 0xc
xor edi, edi
nop word [eax + eax]
xor eax, eax
xorps xmm0, xmm0
mov word [ebp - 0x728], ax
lea eax, [ebp - 0x2160]
push eax
movups xmmword [ebp - 0x2160], xmm0
call dword [sym.imp.ole32.dll_CoCreateGuid]
push 0x200
lea eax, [ebp - 0x620]
push 0
push eax
call fcn.004d7bd0
movzx eax, byte [ebp - 0x2151]
push eax
movzx eax, byte [ebp - 0x2152]
push eax
movzx eax, byte [ebp - 0x2153]
push eax
movzx eax, byte [ebp - 0x2154]
push eax
movzx eax, byte [ebp - 0x2155]
push eax
movzx eax, byte [ebp - 0x2156]
push eax
movzx eax, byte [ebp - 0x2157]
push eax
movzx eax, byte [ebp - 0x2158]
push eax
movzx eax, word [ebp - 0x215a]
push eax
movzx eax, word [ebp - 0x215c]
push eax
push dword [ebp - 0x2160]
lea eax, [ebp - 0x620]
push str._08X__04X__04x__02X_02X__02X_02X_02X_02X_02X_02X
push eax
call fcn.004450c0
lea ecx, [ebp - 0x620]
add esp, 0x40
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4475b6
sub ecx, edx
lea eax, [ebp - 0x620]
sar ecx, 1
push ecx
push eax
lea eax, [ebp - 0x728]
push 0x80
push eax
call fcn.00502586
add esp, 0x10
lea eax, [ebp - 0x728]
push eax
lea eax, [ebp - 0x2150]
push eax
lea eax, [ebp - 0x1950]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
push str._TemporaryCache
lea eax, [ebp - 0x1950]
push 0x400
push eax
call fcn.00506ae1
add esp, 0xc
lea eax, [ebp - 0x1950]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x447632
inc edi
cmp edi, 0xa
jl 0x447510
jmp 0x447668
lea ecx, [ebp - 0x1950]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x447640
sub ecx, edx
lea eax, [ebp - 0x1950]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x21a4]
call fcn.00412460
mov esi, dword [ebp - 0x21a4]
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push esi
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4476a6
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x44846c
mov ecx, dword [esi]
push esi
jmp 0x448467
push 0x208
lea eax, [ebp - 0x930]
push 0
push eax
call fcn.004d7bd0
mov edi, dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [ebp - 0x420]
add esp, 0xc
push 0x549ce4
push eax
lea eax, [ebp - 0x930]
push eax
call edi
lea eax, [ebp - 0x930]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x447789
lea eax, [ebp - 0x930]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
mov eax, dword [0x58e2a8]
test al, 1
jne 0x447714
or eax, 1
mov dword [0x58e2a4], 0
mov dword [0x58e2a8], eax
mov byte [ebp - 0x2161], 0
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x10
push eax
call fcn.00478ed3
lea eax, [ebp - 0x216c]
mov dword [ebp - 0x217c], eax
lea eax, [ebp - 0x2161]
mov dword [ebp - 0x2178], eax
lea eax, [ebp - 0x217c]
push eax
push 0x444da0
push 0x58e2a4
call fcn.004798cc
add esp, 0x10
test eax, eax
je 0x447afb
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x12
push eax
call fcn.00478f0d
add esp, 4
lea eax, [ebp - 0x930]
push 0x58e2ac
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.004d7bd0
mov eax, dword [0x58e2cc]
add esp, 0xc
test al, 1
jne 0x4477ba
or eax, 1
mov dword [0x58e2c8], 0
mov dword [0x58e2cc], eax
mov byte [ebp - 0x2161], 0
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x15
push eax
call fcn.00478ed3
lea eax, [ebp - 0x216c]
mov dword [ebp - 0x217c], eax
lea eax, [ebp - 0x2161]
mov dword [ebp - 0x2178], eax
lea eax, [ebp - 0x217c]
push eax
push 0x444e60
push 0x58e2c8
call fcn.004798cc
add esp, 0x10
test eax, eax
je 0x448548
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x17
push eax
call fcn.00478f0d
add esp, 4
lea eax, [ebp - 0x218]
push 0x58e2d0
push esi
push eax
call edi
push 0
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x930]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x447683
push 0x208
lea eax, [ebp - 0xb38]
push 0
push eax
call fcn.004d7bd0
mov eax, dword [0x58e2f4]
add esp, 0xc
test al, 1
jne 0x44787b
or eax, 1
mov dword [0x58e2f0], 0
mov dword [0x58e2f4], eax
mov byte [ebp - 0x2161], 0
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x1a
push eax
call fcn.00478ed3
lea eax, [ebp - 0x216c]
mov dword [ebp - 0x217c], eax
lea eax, [ebp - 0x2161]
mov dword [ebp - 0x2178], eax
lea eax, [ebp - 0x217c]
push eax
push 0x444b00
push 0x58e2f0
call fcn.004798cc
add esp, 0x10
test eax, eax
je 0x44852c
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x1c
push eax
call fcn.00478f0d
add esp, 4
lea eax, [ebp - 0x420]
push 0x58e2f8
push eax
lea eax, [ebp - 0xb38]
push eax
call edi
lea eax, [ebp - 0xb38]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4479a8
lea eax, [ebp - 0xb38]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
mov eax, dword [0x58e334]
test al, 1
jne 0x447930
or eax, 1
mov dword [0x58e330], 0
mov dword [0x58e334], eax
mov byte [ebp - 0x2161], 0
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x1f
push eax
call fcn.00478ed3
lea eax, [ebp - 0x216c]
mov dword [ebp - 0x217c], eax
lea eax, [ebp - 0x2161]
mov dword [ebp - 0x2178], eax
lea eax, [ebp - 0x217c]
push eax
push 0x444f20
push 0x58e330
call fcn.004798cc
add esp, 0x10
test eax, eax
je 0x447b17
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x21
push eax
call fcn.00478f0d
add esp, 4
lea eax, [ebp - 0x420]
push 0x58e338
push eax
lea eax, [ebp - 0xb38]
push eax
call edi
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
mov eax, dword [0x58e358]
test al, 1
jne 0x4479d0
or eax, 1
mov dword [0x58e354], 0
mov dword [0x58e358], eax
mov byte [ebp - 0x2161], 0
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x24
push eax
call fcn.00478ed3
lea eax, [ebp - 0x216c]
mov dword [ebp - 0x217c], eax
lea eax, [ebp - 0x2161]
mov dword [ebp - 0x2178], eax
lea eax, [ebp - 0x217c]
push eax
push 0x444bf0
push 0x58e354
call fcn.004798cc
add esp, 0x10
test eax, eax
je 0x448510
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x26
push eax
call fcn.00478f0d
add esp, 4
mov byte [ebp - 4], 0xf
lea eax, [ebp - 0x218]
push 0x58e35c
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
push 0
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0xb38]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
push 0x208
lea eax, [ebp - 0xf48]
push 0
push eax
call fcn.004d7bd0
add esp, 0xc
lea eax, [ebp - 0x420]
push str.Utils7z.dll
push eax
lea eax, [ebp - 0xf48]
push eax
call edi
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
push str.7z.dll
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
push 0
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0xf48]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x447683
lea eax, [ebp - 0x2170]
push eax
call fcn.0042f1b0
push dword [ebp - 0x2170]
mov byte [ebp - 4], 0x29
push str.parent_process_path__s
call fcn.0045cb30
add esp, 0xc
call fcn.004214f0
mov ecx, eax
test ecx, ecx
je 0x4485a5
jmp 0x447b33
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x13
push eax
call fcn.00478f4f
add esp, 4
mov byte [ebp - 4], 0x11
jmp 0x447477
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x22
push eax
call fcn.00478f4f
add esp, 4
mov byte [ebp - 4], 0x20
jmp 0x447477
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0x218c], edi
mov eax, dword [ebp - 0x2170]
mov byte [ebp - 4], 0x2a
cmp dword [eax - 0xc], 0
je 0x447d42
push 0x5c
push eax
call fcn.004d8d68
mov edx, eax
add esp, 8
test edx, edx
je 0x447d42
mov eax, dword [ebp - 0x2170]
sub edx, eax
sar edx, 1
cmp edx, 0xffffffff
je 0x447d42
mov esi, dword [eax - 0xc]
mov ecx, esi
sub ecx, edx
xor edx, edx
add ecx, 0xffffffff
cmovns edx, ecx
mov dword [ebp - 0x2180], edx
cmp edx, esi
jl 0x447baf
add eax, 0xfffffff0
push eax
call fcn.0040c860
add esp, 4
lea esi, [eax + 0x10]
mov dword [ebp - 0x2190], esi
jmp 0x447bf4
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x447bc1
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
test eax, eax
jne 0x447bcf
call fcn.004214f0
mov ecx, eax
mov edx, dword [eax]
mov eax, dword [edx + 0x10]
call eax
push eax
mov eax, dword [ebp - 0x2180]
lea ecx, [ebp - 0x2190]
push eax
sub esi, eax
mov eax, dword [ebp - 0x2170]
lea eax, [eax + esi*2]
push eax
call fcn.00418d10
mov esi, dword [ebp - 0x2190]
push 0x2e
push esi
mov byte [ebp - 4], 0x2b
call fcn.004d8d68
add esp, 8
test eax, eax
je 0x447d26
sub eax, esi
sar eax, 1
cmp eax, 0xffffffff
je 0x447d26
xor ecx, ecx
test eax, eax
cmovns ecx, eax
lea eax, [esi - 0x10]
mov dword [ebp - 0x2198], ecx
mov dword [ebp - 0x2180], eax
cmp ecx, dword [esi - 0xc]
jl 0x447c47
push eax
call fcn.0040c860
add esp, 4
add eax, 0x10
mov dword [ebp - 0x2198], eax
jmp 0x447c7f
mov ecx, dword [eax]
test ecx, ecx
je 0x447c58
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
test eax, eax
jne 0x447c66
call fcn.004214f0
mov ecx, eax
mov edx, dword [eax]
mov eax, dword [edx + 0x10]
call eax
push eax
push dword [ebp - 0x2198]
lea ecx, [ebp - 0x2198]
push esi
call fcn.00418d10
mov eax, dword [ebp - 0x2198]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x2c
lea esi, [eax - 0x10]
mov dword [ebp - 0x2168], edx
cmp esi, edx
je 0x447cf1
cmp dword [edx + 0xc], 0
lea edi, [edx + 0xc]
jl 0x447cdc
mov ecx, dword [esi]
cmp ecx, dword [edx]
jne 0x447cdc
push esi
call fcn.0040c860
add esp, 4
mov dword [ebp - 0x2174], eax
or ecx, 0xffffffff
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x447cd1
mov edi, dword [ebp - 0x2168]
push edi
mov ecx, dword [edi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x2174]
lea edi, [eax + 0x10]
mov dword [ebp - 0x218c], edi
jmp 0x447cf1
push dword [eax - 0xc]
lea ecx, [ebp - 0x218c]
push eax
call fcn.00412460
mov edi, dword [ebp - 0x218c]
mov byte [ebp - 4], 0x2b
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x447d0a
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x2180]
or eax, 0xffffffff
mov byte [ebp - 4], 0x2a
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x447d42
mov ecx, dword [edx]
push edx
jmp 0x447d3d
mov byte [ebp - 4], 0x2a
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x447d42
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 0x2178], 0
mov dword [ebp - 0x2194], 0
mov dword [ebp - 0x2188], 0
call fcn.004214f0
mov ecx, eax
test ecx, ecx
je 0x4485af
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [ebp - 0x2190], esi
push str.ntdll.dll
mov byte [ebp - 4], 0x2d
mov dword [ebp - 0x2180], 0
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 0x2174], eax
test eax, eax
je 0x447e1b
push str.RtlGetNtVersionNumbers
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x447de0
lea ecx, [ebp - 0x2188]
push ecx
lea ecx, [ebp - 0x2194]
push ecx
lea ecx, [ebp - 0x2178]
push ecx
call eax
movzx eax, word [ebp - 0x2188]
mov dword [ebp - 0x2188], eax
mov dword [ebp - 0x2180], 1
push dword [ebp - 0x2174]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [ebp - 0x2180], 0
je 0x447e1b
push dword [ebp - 0x2194]
lea eax, [ebp - 0x2190]
push dword [ebp - 0x2178]
push str._d._d
push eax
call fcn.00413040
mov esi, dword [ebp - 0x2190]
add esp, 0x10
call fcn.004214f0
mov ecx, eax
test ecx, ecx
je 0x4485b9
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x2180], eax
push esi
push edi
lea eax, [ebp - 0x2180]
mov byte [ebp - 4], 0x2e
push str.ex1_sex2_s
push eax
call fcn.00413040
sub esp, 0x18
mov eax, esp
mov dword [ebp - 0x2174], esp
mov dword [eax + 0x24], 0
mov byte [ebp - 0x2161], 0
lea eax, [ebp - 0x219c]
mov byte [ebp - 4], 0x30
push eax
call fcn.00478ed3
lea eax, [ebp - 0x219c]
mov dword [ebp - 0x2158], eax
lea eax, [ebp - 0x2161]
mov dword [ebp - 0x2154], eax
lea eax, [ebp - 0x2158]
push eax
push 0x416420
push 0x58cdd8
call fcn.004798cc
add esp, 0x10
test eax, eax
je 0x4484e1
lea eax, [ebp - 0x219c]
mov byte [ebp - 4], 0x32
push eax
call fcn.00478f0d
mov esi, dword [ebp - 0x2180]
add esp, 4
mov ecx, dword [0x58cdd4]
mov byte [ebp - 4], 0x2f
mov byte [ebp - 4], 0x2e
push 1
push esi
push str.uninstall_from
call fcn.00411f00
lea edx, [esi - 0x10]
mov byte [ebp - 4], 0x2d
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x447f05
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x2190]
mov eax, esi
mov byte [ebp - 4], 0x2a
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x447f26
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x29
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x447f44
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x2170]
mov eax, edi
mov byte [ebp - 4], 0xf
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x447f65
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0x208
lea eax, [ebp - 0x1150]
push 0
push eax
call fcn.004d7bd0
mov eax, dword [0x58e378]
add esp, 0xc
test al, 1
jne 0x447f96
or eax, 1
mov dword [0x58e374], 0
mov dword [0x58e378], eax
mov byte [ebp - 0x2161], 0
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x35
push eax
call fcn.00478ed3
lea eax, [ebp - 0x216c]
mov dword [ebp - 0x2158], eax
lea eax, [ebp - 0x2161]
mov dword [ebp - 0x2154], eax
lea eax, [ebp - 0x2158]
push eax
push 0x444a30
push 0x58e374
call fcn.004798cc
add esp, 0x10
test eax, eax
je 0x4484c5
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x37
push eax
call fcn.00478f0d
add esp, 4
lea eax, [ebp - 0x420]
push 0x58e37c
push eax
lea eax, [ebp - 0x1150]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
mov esi, dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
lea eax, [ebp - 0x218]
push eax
call esi
push str.Utils
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x448053
lea eax, [ebp - 0x218]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
mov eax, dword [0x58e3a8]
test al, 1
jne 0x44806e
or eax, 1
mov dword [0x58e3a4], 0
mov dword [0x58e3a8], eax
mov byte [ebp - 0x2161], 0
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x3a
push eax
call fcn.00478ed3
lea eax, [ebp - 0x216c]
mov dword [ebp - 0x2158], eax
lea eax, [ebp - 0x2161]
mov dword [ebp - 0x2154], eax
lea eax, [ebp - 0x2158]
push eax
push 0x4447a0
push 0x58e3a4
call fcn.004798cc
add esp, 0x10
test eax, eax
je 0x4484a9
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x3c
push eax
call fcn.00478f0d
add esp, 4
mov byte [ebp - 4], 0xf
lea eax, [ebp - 0x218]
push 0x58e3ac
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
push 0
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x1150]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
call fcn.004214f0
mov ecx, eax
test ecx, ecx
je 0x4485c3
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x2170], eax
push dword [ebp - 0x21a0]
lea ecx, [ebp - 0x2170]
mov byte [ebp - 4], 0x3f
call fcn.00411390
test al, al
jne 0x448172
mov eax, dword [ebp - 0x21a0]
test eax, eax
jne 0x448143
xor ecx, ecx
jmp 0x448165
mov ecx, eax
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x448150
mov eax, dword [ebp - 0x21a0]
sub ecx, edx
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2170]
call fcn.00412460
push 2
push 0x54c908
lea ecx, [ebp - 0x2170]
mov byte [ebp - 4], 0x40
call fcn.00446870
mov ecx, str._READYUNINSTALL
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x448190
sub ecx, edx
sar ecx, 1
push ecx
push str._READYUNINSTALL
lea ecx, [ebp - 0x2170]
call fcn.00446870
mov byte [ebp - 0x2161], 0
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x41
push eax
call fcn.00478ed3
lea eax, [ebp - 0x216c]
mov dword [ebp - 0x2158], eax
lea eax, [ebp - 0x2161]
mov dword [ebp - 0x2154], eax
lea eax, [ebp - 0x2158]
push eax
push 0x42fc60
push 0x58d040
call fcn.004798cc
add esp, 0x10
test eax, eax
je 0x44848d
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x43
push eax
call fcn.00478f0d
mov ecx, dword [0x58d03c]
add esp, 4
mov byte [ebp - 4], 0x40
call fcn.004195d0
test eax, eax
je 0x4483e8
push 0x208
lea eax, [ebp - 0xd40]
push 0
push eax
call fcn.004d7bd0
add esp, 0xc
lea eax, [ebp - 0xd40]
push 0x104
push eax
call fcn.004c1300
call fcn.004214f0
mov ecx, eax
test ecx, ecx
je 0x4485cd
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x218c], eax
lea eax, [ebp - 0xd40]
mov byte [ebp - 4], 0x46
push eax
lea ecx, [ebp - 0x218c]
call fcn.00411390
test al, al
jne 0x4482b5
lea ecx, [ebp - 0xd40]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x448293
sub ecx, edx
lea eax, [ebp - 0xd40]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x218c]
call fcn.00412460
mov byte [ebp - 4], 0x47
call fcn.004214f0
mov ecx, eax
test ecx, ecx
je 0x4485d7
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x2188], eax
push str.silence
lea ecx, [ebp - 0x2188]
mov byte [ebp - 4], 0x48
call fcn.00411390
test al, al
jne 0x448302
push 7
push str.silence
lea ecx, [ebp - 0x2188]
call fcn.00412460
lea eax, [ebp - 0x218c]
mov byte [ebp - 4], 0x49
push eax
lea eax, [ebp - 0x2188]
push eax
lea eax, [ebp - 0x2178]
push eax
call fcn.0049a390
add esp, 0xc
mov edx, dword [ebp - 0x2188]
mov eax, edi
mov byte [ebp - 4], 0x4b
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x448344
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x218c]
mov eax, edi
mov byte [ebp - 4], 0x4c
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x448365
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 2
push 0x54c908
lea ecx, [ebp - 0x2170]
call fcn.00446870
mov ecx, str._CHK
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x448380
sub ecx, edx
sar ecx, 1
push ecx
push str._CHK
lea ecx, [ebp - 0x2170]
call fcn.00446870
push 1
push 0x547e3c
lea ecx, [ebp - 0x2170]
call fcn.00446870
mov eax, dword [ebp - 0x2178]
lea ecx, [ebp - 0x2170]
push dword [eax - 0xc]
push eax
call fcn.00446870
mov edx, dword [ebp - 0x2178]
mov eax, edi
mov byte [ebp - 4], 0x40
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4483e8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x218]
push eax
call esi
lea eax, [ebp - 0x218]
push eax
call esi
push 0x549ce4
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
mov esi, dword [ebp - 0x2170]
lea eax, [ebp - 0x218]
push 0xffffffffffffffff
push 0
push 0
push 1
push 1
push esi
push eax
call fcn.0044f030
mov dword [ebp - 0x2194], eax
add esi, 0xfffffff0
mov byte [ebp - 4], 0xf
mov ecx, edi
lock xadd dword [esi + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x44844a
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x21a4]
mov dword [ebp - 4], 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], edi
dec edi
test edi, edi
jg 0x44846c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x2194]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004b85ea
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x44
push eax
call fcn.00478f4f
add esp, 4
mov byte [ebp - 4], 0x42
jmp 0x447477
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x3d
push eax
call fcn.00478f4f
add esp, 4
mov byte [ebp - 4], 0x3b
jmp 0x447477
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x38
push eax
call fcn.00478f4f
add esp, 4
mov byte [ebp - 4], 0x36
jmp 0x447477
lea eax, [ebp - 0x219c]
mov byte [ebp - 4], 0x33
push eax
call fcn.00478f4f
add esp, 4
mov byte [ebp - 4], 0x31
test al, al
je 0x4485a0
sub esp, 8
lea eax, [ebp - 0x219c]
mov ecx, esp
jmp 0x448595
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x27
push eax
call fcn.00478f4f
add esp, 4
mov byte [ebp - 4], 0x25
jmp 0x447477
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x1d
push eax
call fcn.00478f4f
add esp, 4
mov byte [ebp - 4], 0x1b
jmp 0x447477
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 0x18
push eax
call fcn.00478f4f
add esp, 4
mov byte [ebp - 4], 0x16
jmp 0x447477
lea eax, [ebp - 0x216c]
mov byte [ebp - 4], 3
push eax
call fcn.00478f4f
add esp, 4
mov byte [ebp - 4], 1
jmp 0x447477
push 0x80004005
call fcn.00408f30
sub esp, 8
lea eax, [ebp - 0x216c]
mov ecx, esp
push eax
call fcn.0040aa30
call fcn.0040b760
call fcn.0047999d
push 0x80004005
call fcn.00408f30
push 0x80004005
call fcn.00408f30
push 0x80004005
call fcn.00408f30
push 0x80004005
call fcn.00408f30
push 0x80004005
call fcn.00408f30
push 0x80004005
call fcn.00408f30
int3