Function at 0x101f741
Capabilities:
Persist via run registry key
Query or enumerate registry value
Set registry value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x638
mov eax, dword [0x1027018]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
mov esi, ecx
xor ebx, ebx
mov dword [ebp - 0x62c], esi
mov dword [ebp - 0x634], edi
mov dword [ebp - 0x624], 0x80004005
mov dword [ebp - 0x620], ebx
mov dword [ebp - 0x628], ebx
call fcn.0101d394
test eax, eax
jne 0x101f795
mov esi, 0x8007000e
jmp 0x101f9b0
cmp dword [esi + 0x1c], 6
jge 0x101f7a5
mov esi, 0x8007139f
jmp 0x101f9b0
mov ecx, dword [ebp + 8]
cmp ecx, ebx
je 0x101f9ab
cmp edi, ebx
je 0x101f9ab
mov eax, dword [esi + 0x24]
mov dx, word [ecx]
cmp dx, word [eax]
jne 0x101f7e1
cmp dx, bx
je 0x101f7dd
mov dx, word [ecx + 2]
cmp dx, word [eax + 2]
jne 0x101f7e1
add ecx, 4
add eax, 4
cmp dx, bx
jne 0x101f7bb
xor eax, eax
jmp 0x101f7e6
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x101f7f4
mov esi, 0x80070005
jmp 0x101f9b0
push ebx
push edi
mov ecx, esi
call fcn.0101d48a
mov esi, eax
cmp esi, ebx
jl 0x101f9b0
cmp dword [ebp + 0x14], ebx
je 0x101f94c
xor eax, eax
push 0x206
mov word [ebp - 0x20c], ax
lea eax, [ebp - 0x20a]
push ebx
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebp - 0x630]
push eax
xor edi, edi
mov dword [ebp - 0x630], ebx
call fcn.01023c03
mov esi, eax
cmp esi, ebx
jne 0x101f9b0
lea eax, [ebp - 0x638]
push eax
lea eax, [ebp - 0x620]
push eax
push ebx
push 0x20006
push ebx
push ebx
push ebx
push 0x1001898
push dword [ebp - 0x630]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp eax, ebx
je 0x101f88b
jle 0x101f884
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
jmp 0x101f9b0
push edi
push 0x1001880
lea eax, [ebp - 0x20c]
push 0x104
push eax
call fcn.0101f430
add esp, 0x10
mov esi, eax
inc edi
cmp esi, ebx
jl 0x101f9b0
lea eax, [ebp - 0x638]
push eax
push ebx
push ebx
push ebx
lea eax, [ebp - 0x20c]
push eax
push dword [ebp - 0x620]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x101f8d7
cmp edi, ebx
jne 0x101f88b
jmp 0x101f8db
cmp edi, ebx
jne 0x101f8e5
mov esi, 0x800703f5
jmp 0x101f9b0
push dword [ebp - 0x634]
lea eax, [ebp - 0x61c]
push 0x1001830
push 0x207
push eax
call fcn.0101f430
mov esi, eax
add esp, 0x10
cmp esi, ebx
jl 0x101f9b0
lea eax, [ebp - 0x61c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [eax + eax + 2]
push eax
lea eax, [ebp - 0x61c]
push eax
push 1
push ebx
lea eax, [ebp - 0x20c]
push eax
push dword [ebp - 0x620]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
cmp eax, ebx
je 0x101f99c
jg 0x101f87a
jmp 0x101f884
push 8
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov dword [ebp - 0x628], eax
cmp eax, ebx
jne 0x101f96a
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, ebx
jmp 0x101f941
push 0x100181c
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
cmp esi, ebx
je 0x101f960
cmp dword [ebp + 0x10], ebx
je 0x101f994
call fcn.01023c5b
mov dword [ebp - 0x624], eax
cmp eax, ebx
jne 0x101f884
call esi
mov esi, eax
cmp esi, ebx
jl 0x101f9b0
mov eax, dword [ebp - 0x62c]
mov dword [eax + 0x1c], 8
jmp 0x101f9b0
mov esi, 0x80070057
cmp dword [ebp - 0x620], ebx
je 0x101f9c4
push dword [ebp - 0x620]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x628], ebx
je 0x101f9d8
push dword [ebp - 0x628]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [ebp + 0x10], ebx
je 0x101f9ea
cmp dword [ebp - 0x624], ebx
jne 0x101f9ea
call fcn.01023cfc
mov ecx, dword [ebp - 0x62c]
call fcn.0101d3ad
mov ecx, dword [ebp - 4]
pop edi
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.0102302f
leave
ret 0x10