Function at 0x41f3b4
Capabilities:
Get common file path
Persist via run registry key
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffb88
push ebx
push esi
push edi
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x5c], eax
mov eax, 0x53b0b4
call fcn.00524684
mov word [ebp - 0x48], 8
xor edx, edx
xor ecx, ecx
mov dword [ebp - 4], edx
lea edi, [ebp - 0x478]
inc dword [ebp - 0x3c]
mov esi, 0x53a9a0
mov word [ebp - 0x48], 0x14
mov word [ebp - 0x48], 0x20
mov dword [ebp - 8], ecx
mov ecx, 0x104
inc dword [ebp - 0x3c]
mov eax, str.SOFTWAREMicrosoftWindowsCurrentVersionExplorerShell_Folders
mov word [ebp - 0x48], 0x14
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x68], 0x410
mov word [ebp - 0x48], 0x2c
mov edx, dword [ebp - 0x5c]
lea ecx, [ebp - 0x64]
mov byte [edx], 1
push ecx
push eax
push SysReAllocStringLen
call sub.ADVAPI32.DLL_RegOpenKeyA
mov ebx, eax
test ebx, ebx
jl 0x41f651
lea eax, [ebp - 0x68]
push eax
lea edx, [ebp - 0x478]
push edx
lea ecx, [ebp - 0x60]
push ecx
push 0
push str.Desktop
mov eax, dword [ebp - 0x64]
push eax
call sub.ADVAPI32.DLL_RegQueryValueExA
mov ebx, eax
mov eax, dword [ebp - 0x64]
push eax
call sub.ADVAPI32.DLL_RegCloseKey
test ebx, ebx
jl 0x41f651
cmp dword [ebp - 0x60], 1
jne 0x41f4c1
mov word [ebp - 0x48], 0x38
lea edx, [ebp - 0x478]
lea eax, [ebp - 0xc]
call fcn.0052f020
mov edx, eax
inc dword [ebp - 0x3c]
lea eax, [ebp - 8]
call fcn.0052f364
dec dword [ebp - 0x3c]
lea eax, [ebp - 0xc]
mov edx, 2
call fcn.0052f334
mov ecx, dword [ebp - 8]
push ecx
call fcn.0041f124
pop ecx
test al, al
je 0x41f651
mov eax, dword [ebp - 0x5c]
mov byte [eax], 0
jmp 0x41f651
push 0x410
lea edx, [ebp - 0x478]
push edx
call sub.KERNEL32.DLL_GetWindowsDirectoryA
mov dword [ebp - 0x68], eax
mov word [ebp - 0x48], 0x44
lea edx, [ebp - 0x478]
lea eax, [ebp - 0x10]
mov ecx, dword [ebp - 0x68]
call fcn.0052f094
mov edx, eax
inc dword [ebp - 0x3c]
lea eax, [ebp - 4]
call fcn.0052f364
dec dword [ebp - 0x3c]
lea eax, [ebp - 0x10]
mov edx, 2
call fcn.0052f334
mov word [ebp - 0x48], 0x50
mov edx, str.DESKTOP
lea eax, [ebp - 0x14]
call fcn.0052f020
inc dword [ebp - 0x3c]
xor eax, eax
mov dword [ebp - 0x18], eax
lea eax, [ebp - 4]
inc dword [ebp - 0x3c]
lea edx, [ebp - 0x14]
lea ecx, [ebp - 0x18]
call fcn.0052f38c
lea edx, [ebp - 0x18]
lea eax, [ebp - 8]
call fcn.0052f364
dec dword [ebp - 0x3c]
lea eax, [ebp - 0x18]
mov edx, 2
call fcn.0052f334
dec dword [ebp - 0x3c]
lea eax, [ebp - 0x14]
mov edx, 2
call fcn.0052f334
mov ecx, dword [ebp - 8]
push ecx
call fcn.0041f124
pop ecx
test al, al
je 0x41f579
mov eax, dword [ebp - 0x5c]
mov byte [eax], 0
jmp 0x41f651
mov word [ebp - 0x48], 0x5c
mov edx, 0x53ae0a
lea eax, [ebp - 0x1c]
call fcn.0052f020
inc dword [ebp - 0x3c]
xor ecx, ecx
mov dword [ebp - 0x20], ecx
lea ecx, [ebp - 0x20]
inc dword [ebp - 0x3c]
lea edx, [ebp - 0x1c]
lea eax, [ebp - 4]
call fcn.0052f38c
lea edx, [ebp - 0x20]
lea eax, [ebp - 8]
call fcn.0052f364
dec dword [ebp - 0x3c]
lea eax, [ebp - 0x20]
mov edx, 2
call fcn.0052f334
dec dword [ebp - 0x3c]
lea eax, [ebp - 0x1c]
mov edx, 2
call fcn.0052f334
mov ecx, dword [ebp - 8]
push ecx
call fcn.0041f124
pop ecx
test al, al
je 0x41f5e6
mov eax, dword [ebp - 0x5c]
mov byte [eax], 0
jmp 0x41f651
mov word [ebp - 0x48], 0x68
mov edx, 0x53ae18
lea eax, [ebp - 0x24]
call fcn.0052f020
inc dword [ebp - 0x3c]
xor ecx, ecx
mov dword [ebp - 0x28], ecx
lea ecx, [ebp - 0x28]
inc dword [ebp - 0x3c]
lea edx, [ebp - 0x24]
lea eax, [ebp - 4]
call fcn.0052f38c
lea edx, [ebp - 0x28]
lea eax, [ebp - 8]
call fcn.0052f364
dec dword [ebp - 0x3c]
lea eax, [ebp - 0x28]
mov edx, 2
call fcn.0052f334
dec dword [ebp - 0x3c]
lea eax, [ebp - 0x24]
mov edx, 2
call fcn.0052f334
mov ecx, dword [ebp - 8]
push ecx
call fcn.0041f124
pop ecx
test al, al
je 0x41f651
mov eax, dword [ebp - 0x5c]
mov byte [eax], 0
mov word [ebp - 0x48], 0x14
jmp 0x41f69b
mov ecx, dword [ebp - 0x5c]
cmp byte [ecx], 0
jne 0x41f719
cmp dword [ebp - 8], 0
je 0x41f6b1
mov eax, dword [ebp - 8]
mov edx, dword [eax - 4]
jmp 0x41f6b3
xor edx, edx
test edx, edx
je 0x41f719
cmp dword [ebp - 8], 0
je 0x41f6c5
mov eax, dword [ebp - 8]
mov ebx, dword [eax - 4]
jmp 0x41f6c7
xor ebx, ebx
push ebx
lea eax, [ebp - 8]
push eax
call fcn.0052ef9c
add esp, 8
lea eax, [ebp - 8]
call fcn.0052f52c
add ebx, dword [ebp - 8]
dec ebx
movsx edx, byte [ebx]
cmp edx, 0x5c
je 0x41f719
mov word [ebp - 0x48], 0x80
mov edx, 0x53ae27
lea eax, [ebp - 0x30]
call fcn.0052f020
inc dword [ebp - 0x3c]
lea edx, [ebp - 0x30]
lea eax, [ebp - 8]
call fcn.0052f378
dec dword [ebp - 0x3c]
lea eax, [ebp - 0x30]
mov edx, 2
call fcn.0052f334
mov word [ebp - 0x48], 0x8c
lea edx, [ebp - 8]
mov eax, dword [ebp - 0x34]
call fcn.0052f364
mov eax, dword [ebp - 0x34]
mov edx, 2
mov word [ebp - 0x48], 0x98
push eax
lea eax, [ebp - 8]
dec dword [ebp - 0x3c]
call fcn.0052f334
dec dword [ebp - 0x3c]
lea eax, [ebp - 4]
mov edx, 2
call fcn.0052f334
pop eax
mov word [ebp - 0x48], 0x8c
inc dword [ebp - 0x3c]
mov edx, dword [ebp - 0x58]
mov dword fs:[0], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret