Function at 0x406580
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x82c
mov eax, dword [0x41507c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov ecx, 0x15
mov esi, str.SoftwareMicrosoftCTFDirectSwitchHotkeys
lea edi, [ebp - 0x414]
rep movsd dword es:[edi], dword [esi]
xor ebx, ebx
push 0x1b2
lea eax, [ebp - 0x3be]
push ebx
push eax
mov dword [ebp - 0x828], ebx
mov dword [ebp - 0x82c], ebx
movsw word es:[edi], word [esi]
call fcn.0040ca90
mov eax, dword [0x415ce8]
add esp, 0xc
cmp dword [0x415cfc], 8
jae 0x4065e0
mov eax, 0x415ce8
push eax
lea ecx, [ebp - 0x414]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea edx, [ebp - 0x82c]
push edx
lea eax, [ebp - 0x828]
push eax
push ebx
push 0xf003f
push ebx
push ebx
push ebx
lea ecx, [ebp - 0x414]
push ecx
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x40685a
push 0x206
lea eax, [ebp - 0x61a]
xor edx, edx
push ebx
push eax
mov word [ebp - 0x61c], dx
call fcn.0040ca90
mov edx, dword [0x415c90]
add esp, 0xc
lea ecx, [ebp - 0x61c]
push ecx
mov ecx, dword [0x415c94]
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [0x415c98]
mov dword [eax + 4], ecx
mov ecx, dword [0x415c9c]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
call fcn.00401040
push 0x206
lea eax, [ebp - 0x822]
xor edx, edx
push ebx
push eax
mov word [ebp - 0x824], dx
call fcn.0040ca90
mov edx, dword [0x415ca0]
add esp, 0x20
lea ecx, [ebp - 0x824]
push ecx
mov ecx, dword [0x415ca4]
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [0x415ca8]
mov dword [eax + 4], ecx
mov ecx, dword [0x415cac]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
call fcn.00401040
push 0x206
lea eax, [ebp - 0x20a]
xor edx, edx
push ebx
push eax
mov word [ebp - 0x20c], dx
call fcn.0040ca90
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyW]
add esp, 0x20
lea ecx, [ebp - 0x61c]
push ecx
lea edx, [ebp - 0x20c]
push edx
call ebx
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [ebp - 0x20c]
push eax
call esi
mov edi, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
lea ecx, [eax + eax + 2]
mov eax, dword [ebp - 0x828]
push ecx
lea edx, [ebp - 0x20c]
push edx
push 1
push 0
push str.CLSID
push eax
call edi
lea ecx, [ebp - 0x824]
push ecx
lea edx, [ebp - 0x20c]
push edx
call ebx
lea eax, [ebp - 0x20c]
push eax
call esi
lea ecx, [eax + eax + 2]
push ecx
mov eax, dword [ebp - 0x828]
lea edx, [ebp - 0x20c]
push edx
push 1
push 0
push str.Profile
push eax
call edi
push str.E6299A56_7778_11E9_AE31_C85B763978EB
lea ecx, [ebp - 0x20c]
push ecx
call ebx
lea edx, [ebp - 0x20c]
push edx
call esi
mov edx, dword [ebp - 0x828]
lea eax, [eax + eax + 2]
push eax
lea ecx, [ebp - 0x20c]
push ecx
push 1
push 0
push str.PreservedKeyId
push edx
call edi
mov ebx, dword [sym.imp.USER32.dll_wsprintfW]
push 0x804
lea eax, [ebp - 0x20c]
push str._08X
push eax
call ebx
add esp, 0xc
lea ecx, [ebp - 0x20c]
push ecx
call esi
mov ecx, dword [ebp - 0x828]
lea edx, [eax + eax + 2]
push edx
lea eax, [ebp - 0x20c]
push eax
push 1
push 0
push str.LangId
push ecx
call edi
push 2
lea edx, [ebp - 0x20c]
push str.0000C_03X
push edx
call ebx
add esp, 0xc
lea eax, [ebp - 0x20c]
push eax
call esi
lea ecx, [eax + eax + 2]
mov eax, dword [ebp - 0x828]
push ecx
lea edx, [ebp - 0x20c]
push edx
push 1
push 0
push str.Modifiers
push eax
call edi
push 0x39
lea ecx, [ebp - 0x20c]
push str._08X
push ecx
call ebx
add esp, 0xc
lea edx, [ebp - 0x20c]
push edx
call esi
mov edx, dword [ebp - 0x828]
lea eax, [eax + eax + 2]
push eax
lea ecx, [ebp - 0x20c]
push ecx
push 1
push 0
push str.VirtualKey
push edx
call edi
mov eax, dword [ebp - 0x828]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00408d89
mov esp, ebp
pop ebp
ret