Function at 0x406a50
Capabilities:
Delete registry key
Delete registry value
Query or enumerate registry value
Read file on windows
Set registry value
Terminate process
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x18
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
cmp edx, 1
je 0x406bd0
mov esi, dword [ecx + 4]
movzx ebx, word [esi]
test bx, bx
je 0x406d10
mov eax, esi
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x406a80
sub eax, esi
cmp eax, 4
jg 0x406b98
mov eax, ebx
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x406b98
movzx edi, word [esi + 2]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], edx
cmp di, 0x3f
je 0x406bb0
mov dword [esp], 0x3f
call dword [sym.imp.ucrtbase.dll_towupper]
cmp di, ax
je 0x406bb0
mov eax, esi
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
add eax, 2
cmp word [eax], 0
jne 0x406ba0
lea esi, [esi]
sub eax, esi
cmp eax, 4
jg 0x406d10
and ebx, 0xfffffffd
cmp bx, 0x2d
jne 0x406d10
movzx edi, word [esi + 2]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], edx
cmp di, 0x68
je 0x406bb0
mov dword [esp], 0x68
mov ebx, 0x40a680
call dword [sym.imp.ucrtbase.dll_towupper]
mov ecx, dword [ebp - 0x14]
mov edx, eax
mov eax, 0x40a624
cmp di, dx
mov edx, dword [ebp - 0x10]
je 0x406bb0
lea esi, cs:[esi]
mov dword [ebp - 0x14], edx
mov edi, dword [sym.imp.kernel32.dll_lstrcmpiW]
mov dword [ebp - 0x10], ecx
lea esi, [esi]
mov dword [esp + 4], eax
mov dword [esp], esi
call edi
sub esp, 8
test eax, eax
je 0x406bf0
mov eax, dword [ebx + 0xc]
add ebx, 0xc
test eax, eax
jne 0x406b50
mov ecx, dword [ebp - 0x10]
mov eax, dword [ecx + 4]
mov dword [esp], 0xa8
mov dword [esp + 4], eax
call sym._output_message
mov dword [esp], 0x96
call sym._output_message
jmp 0x406be8
mov eax, esi
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x406ba0
jmp 0x406ae8
mov dword [esp], 0x97
call sym._output_message
xor eax, eax
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], 0x69
call sym._output_message
mov dword [esp], 0x96
call sym._output_message
mov eax, 1
jmp 0x406bbe
mov eax, dword [ebx + 8]
mov esi, dword [ebx + 4]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x14]
mov dword [ebp - 0x10], eax
cmp esi, 6
je 0x406b71
cmp edx, 2
je 0x406cd9
mov ebx, dword [ecx + 8]
movzx edi, word [ebx]
test di, di
je 0x406cb8
mov eax, ebx
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x406c28
sub eax, ebx
cmp eax, 4
jg 0x406c70
mov eax, edi
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x406c70
movzx eax, word [ebx + 2]
mov word [ebp - 0x14], ax
cmp ax, 0x3f
je 0x406cd0
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], edx
mov dword [esp], 0x3f
call dword [sym.imp.ucrtbase.dll_towupper]
cmp word [ebp - 0x14], ax
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x1c]
je 0x406cd0
mov eax, ebx
add eax, 2
cmp word [eax], 0
jne 0x406c72
sub eax, ebx
cmp eax, 4
jg 0x406cb8
mov eax, edi
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x406cb8
movzx ebx, word [ebx + 2]
cmp bx, 0x68
je 0x406cd0
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], edx
mov dword [esp], 0x68
call dword [sym.imp.ucrtbase.dll_towupper]
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
cmp bx, ax
je 0x406cd0
lea esi, [esi]
mov dword [ebp + 0xc], ecx
mov dword [ebp + 8], edx
cmp esi, 4
ja case.default.0x406cc7
jmp dword [esi*4 + 0x40a62c]
cmp edx, 3
jle 0x406d60
mov dword [ebp - 0x10], ecx
mov dword [esp], 0x69
call sym._output_message
mov ecx, dword [ebp - 0x10]
mov eax, dword [ecx + 4]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wcsupr]
mov dword [esp], 0x6a
mov dword [esp + 4], eax
call sym._output_message
jmp 0x406be8
mov ebx, 0x40a680
mov eax, 0x40a624
jmp 0x406b40
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00401000
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp sym._reg_import
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp sym._reg_export
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp sym._reg_delete
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp sym._reg_copy
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sym._output_message
mov dword [esp], 0xa4
call sym._output_message
xor eax, eax
jmp 0x406bbe
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp sym._reg_query