Function at 0x10021aa0
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x100ce016
mov eax, dword fs:[0]
push eax
sub esp, 0x2f0
mov eax, dword [0x101025ec]
xor eax, esp
mov dword [esp + 0x2e8], eax
push ebx
push esi
push edi
mov eax, dword [0x101025ec]
xor eax, esp
push eax
lea eax, [esp + 0x300]
mov dword fs:[0], eax
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
push ecx
mov dword [sym.SmUtils.dll_int_CSmUtils::m_bIsAd], eax
call sym.SmUtils.dll_public:_static_void___cdecl_CSmUtils::InitPath_struct_HINSTANCE____
add esp, 4
mov dword [esp + 0x10], 0
lea eax, [esp + 0x10]
push eax
push 1
push 0
push str.SOFTWAREEasyClip
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x10021bf1
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea eax, [esp + 0x14]
push eax
push 0x1010a8de
push 0
push 0
push 0x100f203c
push dword [esp + 0x24]
mov dword [esp + 0x2c], 0x80
call esi
lea eax, [esp + 0x14]
mov dword [esp + 0x14], 0x20
push eax
push 0x1010a8be
push 0
push 0
push str.channel
push dword [esp + 0x24]
call esi
push 0x1010a8be
call fcn.1002ff7a
add esp, 4
push eax
push 0x100f13a0
push 0x1010a8be
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
mov dword [esp + 0x14], 0x100
lea eax, [esp + 0x14]
push eax
push 0x1010a7be
push 0
push 0
push str.guser_id
push dword [esp + 0x24]
call esi
lea eax, [esp + 0x14]
mov dword [esp + 0x1c], 4
push eax
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], 0
push eax
lea eax, [esp + 0x24]
mov dword [esp + 0x1c], 4
push eax
push 0
push str.SetupType
push dword [esp + 0x24]
call esi
cmp dword [esp + 0x18], 0
push dword [esp + 0x10]
setne byte [0x1010a7bc]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [esp + 0x18]
xor ebx, ebx
push eax
mov dword [esp + 0x1c], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_IsWow64Process]
test eax, eax
je 0x10021c14
cmp dword [esp + 0x18], ebx
setne bl
test ebx, ebx
setne byte [0x1010a984]
call fcn.10004810
xor ebx, ebx
mov dword [0x1010a980], eax
xorps xmm0, xmm0
mov dword [esp + 0x40], ebx
movq qword [esp + 0x38], xmm0
mov dword [0x1010a998], 0
mov dword [esp + 0x294], 0xbe99e35f
mov dword [esp + 0x298], 1
mov dword [esp + 0x29c], 0x3db81558
mov dword [esp + 0x2a0], 2
mov dword [esp + 0x2a4], 0x8fab7d1e
mov dword [esp + 0x2a8], 4
mov dword [esp + 0x2ac], 0xd0fe2d9b
mov dword [esp + 0x2b0], 0x10
mov dword [esp + 0x2b4], 0x825c7411
mov dword [esp + 0x2b8], 0x20
mov dword [esp + 0x2bc], 0xd30bd88d
mov dword [esp + 0x2c0], 0x40
mov dword [esp + 0x2c4], 0xe9151866
mov dword [esp + 0x2c8], 0x80
mov dword [esp + 0x2cc], 0xa3660bb3
mov dword [esp + 0x2d0], 0x100
mov dword [esp + 0x2d4], 0x95efaec4
mov dword [esp + 0x2d8], 0x200
mov dword [esp + 0x2dc], 0xac0c07a9
mov dword [esp + 0x2e0], 0x400
mov dword [esp + 0x2e4], 0xa7086931
mov dword [esp + 0x2e8], 0x2000
mov dword [esp + 0x2ec], ebx
mov dword [esp + 0x2f0], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
lea ecx, [esp + 0x38]
mov dword [esp + 0x308], ebx
call fcn.100051c0
xor edi, edi
mov dword [esp + 0x18], eax
test eax, eax
jle 0x10021e51
mov ecx, dword [esp + 0x3c]
mov eax, 0x7e07e07f
mov esi, dword [esp + 0x38]
sub ecx, esi
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
add esi, 4
mov dword [esp + 0x14], eax
lea esp, [esp]
cmp edi, eax
jae 0x10021e51
sub esp, 0x18
xor eax, eax
mov edx, esp
mov dword [edx + 0x14], 7
mov dword [edx + 0x10], 0
mov word [edx], ax
cmp word [esi], ax
jne 0x10021db9
xor ecx, ecx
jmp 0x10021dd3
mov ecx, esi
lea eax, [ecx + 2]
mov dword [esp + 0x34], eax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10021dc2
sub ecx, dword [esp + 0x34]
sar ecx, 1
push ecx
push esi
mov ecx, edx
call fcn.10001b10
lea ecx, [esp + 0x38]
call fcn.10005400
cmp dword [esp + 0x4c], 8
lea edx, [esp + 0x38]
mov eax, dword [esp + 0x48]
cmovae edx, dword [esp + 0x38]
add eax, eax
push eax
call fcn.10006c60
add esp, 0x1c
mov edx, 0xbe99e35f
xor ecx, ecx
lea esp, [esp]
cmp eax, edx
je 0x10021e22
mov edx, dword [esp + ecx*8 + 0x29c]
inc ecx
test edx, edx
jne 0x10021e10
jmp 0x10021e29
or ebx, dword [esp + ecx*8 + 0x298]
cmp dword [esp + 0x34], 8
jb 0x10021e3c
push dword [esp + 0x20]
call fcn.1002f7b8
add esp, 4
mov eax, dword [esp + 0x14]
inc edi
add esi, 0x104
cmp edi, dword [esp + 0x18]
jl 0x10021d90
call fcn.100058d0
test eax, eax
je 0x10021e5d
or ebx, 8
xor eax, eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x34], 7
mov dword [esp + 0x30], 0
mov word [esp + 0x20], ax
lea eax, [esp + 0x18]
mov byte [esp + 0x308], 1
push eax
lea eax, [esp + 0x18]
mov edx, str.SOFTWAREiDesk
push eax
push 0
push str.InstPath
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
call fcn.10005740
add esp, 0x10
test eax, eax
jne 0x10021f54
mov edi, dword [esp + 0x14]
test edi, edi
je 0x10021f54
cmp word [edi], ax
jne 0x10021ecc
xor ecx, ecx
jmp 0x10021ee0
mov ecx, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10021ed1
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [esp + 0x28]
call fcn.10001b10
push 0xd
push str.iDeskApp.exe
lea ecx, [esp + 0x28]
call fcn.10003920
cmp dword [esp + 0x34], 8
lea eax, [esp + 0x48]
push 0x24c
push 0
lea esi, [esp + 0x28]
mov dword [esp + 0x4c], 0
cmovae esi, dword [esp + 0x28]
push eax
call fcn.10034ae0
add esp, 0xc
lea eax, [esp + 0x44]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
cmp eax, 0xffffffff
je 0x10021f43
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
or ebx, 0x800
push edi
call fcn.100300d6
add esp, 4
mov dword [esp + 0x14], 0
lea eax, [esp + 0x18]
mov edx, str.SOFTWAREiUninst
push eax
lea eax, [esp + 0x18]
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
push eax
push 0
push str.InstPath
call fcn.10005740
add esp, 0x10
test eax, eax
jne 0x10022023
mov edi, dword [esp + 0x14]
test edi, edi
je 0x10022023
cmp word [edi], ax
jne 0x10021f94
xor ecx, ecx
jmp 0x10021faf
mov ecx, edi
lea edx, [ecx + 2]
lea esp, [esp]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10021fa0
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [esp + 0x28]
call fcn.10001b10
push 0xf
push str.iUninstApp.exe
lea ecx, [esp + 0x28]
call fcn.10003920
cmp dword [esp + 0x34], 8
lea eax, [esp + 0x48]
push 0x24c
push 0
lea esi, [esp + 0x28]
mov dword [esp + 0x4c], 0
cmovae esi, dword [esp + 0x28]
push eax
call fcn.10034ae0
add esp, 0xc
lea eax, [esp + 0x44]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
cmp eax, 0xffffffff
je 0x10022012
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
or ebx, 0x1000
push edi
call fcn.100300d6
add esp, 4
mov dword [esp + 0x14], 0
lea eax, [esp + 0x18]
mov edx, str.SOFTWAREiTv
push eax
lea eax, [esp + 0x18]
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
push eax
push 0
push str.InstPath
call fcn.10005740
add esp, 0x10
test eax, eax
jne 0x100220eb
mov edi, dword [esp + 0x14]
test edi, edi
je 0x100220eb
cmp word [edi], ax
jne 0x10022063
xor ecx, ecx
jmp 0x1002207f
mov ecx, edi
lea edx, [ecx + 2]
jmp 0x10022070
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10022070
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [esp + 0x28]
call fcn.10001b10
push 0xb
push str.iTvApp.exe
lea ecx, [esp + 0x28]
call fcn.10003920
cmp dword [esp + 0x34], 8
lea eax, [esp + 0x48]
push 0x24c
push 0
lea esi, [esp + 0x28]
mov dword [esp + 0x4c], 0
cmovae esi, dword [esp + 0x28]
push eax
call fcn.10034ae0
add esp, 0xc
lea eax, [esp + 0x44]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
cmp eax, 0xffffffff
je 0x100220e2
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
or ebx, 0x4000
push edi
call fcn.100300d6
add esp, 4
cmp dword [esp + 0x34], 8
jb 0x100220fe
push dword [esp + 0x20]
call fcn.1002f7b8
add esp, 4
mov eax, dword [esp + 0x38]
mov dword [0x1010a994], ebx
test eax, eax
je 0x10022115
push eax
call fcn.1002f7b8
add esp, 4
mov ecx, dword [esp + 0x300]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2e8]
xor ecx, esp
call fcn.1002f7bd
mov esp, ebp
pop ebp
ret