Function at 0x4583f0
Capabilities:
Encode data using xor
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x55d23b
mov eax, dword fs:[0]
push eax
sub esp, 0x488
mov eax, dword [0x5b627c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 8]
mov eax, 0x5070
mov dword [ebp - 0x48c], ebx
xor esi, esi
mov word [ebp - 0x428], ax
mov eax, 0x5059
mov word [ebp - 0x426], ax
mov eax, 0x5045
mov word [ebp - 0x424], ax
mov eax, 0x504a
mov word [ebp - 0x422], ax
mov eax, 0x5052
mov word [ebp - 0x420], ax
mov eax, 0x5044
mov word [ebp - 0x41e], ax
mov eax, 0x5058
mov word [ebp - 0x41c], ax
mov eax, 0x5062
mov word [ebp - 0x41a], ax
mov eax, 0x505b
mov word [ebp - 0x418], ax
mov eax, 0x5051
mov word [ebp - 0x416], ax
mov eax, 0x505a
mov word [ebp - 0x414], ax
mov eax, 0x5036
mov dword [ebp - 0x490], ebx
mov ebx, 0xf
mov word [ebp - 0x412], ax
mov ax, word [ebp - 0x428]
nop dword [eax + eax]
mov ax, word [ebp + esi*2 - 0x428]
mov ecx, esi
and ecx, ebx
movzx edi, ax
cmp ecx, ebx
mov eax, 0x32ab5028
mov edx, 0x78305dda
cmovae ecx, ebx
shl ecx, 2
call fcn.00466140
mov cx, ax
lea eax, [esi + 0x5028]
and cx, bx
xor cx, ax
xor cx, di
mov word [ebp + esi*2 - 0x428], cx
inc esi
cmp esi, 0xc
jb 0x4584d0
mov eax, 0xd223
mov ecx, 0xd222
mov word [ebp - 0x484], ax
mov edx, 0xd2ed
mov eax, 0xd23f
mov esi, 0xd2e5
mov word [ebp - 0x482], ax
mov eax, 0xd23c
mov word [ebp - 0x480], ax
mov eax, 0xd220
mov word [ebp - 0x47e], ax
mov eax, 0xd23a
mov word [ebp - 0x47c], cx
mov word [ebp - 0x47a], ax
mov eax, 0xd236
mov word [ebp - 0x478], cx
mov ecx, 0xd2f4
mov word [ebp - 0x476], ax
mov eax, 0xd221
mov word [ebp - 0x474], ax
mov eax, 0xd23b
mov word [ebp - 0x472], ax
mov eax, 0xd2fc
mov word [ebp - 0x470], dx
mov word [ebp - 0x46e], si
mov word [ebp - 0x46c], ax
mov eax, 0xd2e0
mov word [ebp - 0x46a], ax
mov eax, 0xd2e6
mov word [ebp - 0x468], cx
mov word [ebp - 0x466], dx
mov edx, 0xd2ff
mov word [ebp - 0x464], ax
mov eax, 0xd2d6
mov word [ebp - 0x462], cx
mov ecx, 0xd2ec
mov word [ebp - 0x460], ax
mov eax, 0xd2d3
mov word [ebp - 0x45e], ax
mov eax, 0xd2e4
mov word [ebp - 0x45c], cx
mov word [ebp - 0x45a], si
mov esi, 0xd2f5
mov word [ebp - 0x458], ax
mov eax, 0xd2b4
mov word [ebp - 0x456], cx
mov ecx, 0xd2fa
mov word [ebp - 0x454], cx
mov word [ebp - 0x452], si
mov word [ebp - 0x450], ax
mov eax, 0xd2d8
mov word [ebp - 0x44e], ax
mov eax, 0xd2ca
mov word [ebp - 0x44c], ax
mov eax, 0xd2c3
mov word [ebp - 0x44a], ax
mov eax, 0xd2d4
mov word [ebp - 0x448], ax
mov eax, 0xd2e7
mov word [ebp - 0x446], ax
mov eax, 0xd2e2
mov word [ebp - 0x444], ax
mov word [ebp - 0x442], ax
mov eax, 0xd2cd
mov word [ebp - 0x440], dx
mov word [ebp - 0x43e], cx
mov ecx, 0xd2e1
mov word [ebp - 0x43c], cx
mov word [ebp - 0x43a], ax
mov eax, 0xd2ee
mov word [ebp - 0x438], si
mov word [ebp - 0x436], cx
mov word [ebp - 0x434], ax
mov eax, 0xd2cb
mov word [ebp - 0x432], dx
mov word [ebp - 0x430], ax
mov eax, 0xd2c8
mov word [ebp - 0x42e], ax
mov eax, 0xd2ae
mov word [ebp - 0x42c], ax
mov ax, word [ebp - 0x484]
mov ebx, dword [ebp - 0x490]
xor edi, edi
nop
mov ax, word [ebp + edi*2 - 0x484]
mov ecx, edi
and ecx, 0xf
movzx esi, ax
cmp ecx, 0xf
mov eax, 0xf
mov edx, 0x73cc7493
cmovae ecx, eax
mov eax, 0xec0fd276
shl ecx, 2
call fcn.00466140
mov cx, ax
lea eax, [edi - 0x2d8a]
and cx, 0xf
xor cx, ax
xor cx, si
mov word [ebp + edi*2 - 0x484], cx
inc edi
cmp edi, 0x2d
jb 0x458710
push 0x400
lea eax, [ebp - 0x410]
push 0
push eax
call fcn.0050fe00
add esp, 0xc
mov dword [ebp - 0x48c], 1
lea eax, [ebp - 0x494]
mov dword [ebp - 0x494], 0x400
push eax
lea eax, [ebp - 0x410]
push eax
lea eax, [ebp - 0x48c]
push eax
lea eax, [ebp - 0x428]
push eax
lea eax, [ebp - 0x484]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.SHLWAPI.dll_SHGetValueW]
lea ecx, [ebp - 0x488]
test eax, eax
jne 0x4587c9
lea eax, [ebp - 0x410]
push eax
jmp 0x4587ce
push 0x570d38
call fcn.00406260
xor eax, eax
mov dword [ebx + 0x10], 0
mov dword [ebx + 0x14], 7
mov word [ebx], ax
mov eax, dword [ebp - 0x488]
mov edx, eax
mov dword [ebp - 4], 0
lea esi, [edx + 2]
nop dword [eax + eax]
mov cx, word [edx]
add edx, 2
test cx, cx
jne 0x458800
sub edx, esi
mov ecx, ebx
sar edx, 1
push edx
push eax
call fcn.0041c630
mov eax, dword [ebp - 0x488]
or ecx, 0xffffffff
mov dword [ebp - 4], 0xffffffff
add eax, 0xfffffff0
lock xadd dword [eax + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x45883d
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00465d1b
mov esp, ebp
pop ebp
ret