Function at 0x58c450
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0xa0
cmp byte [ebx + 0xc], 0
push esi
push edi
mov edi, ecx
mov dword [ebp - 0xc], edi
je 0x58c787
nop dword [eax]
call sub.KERNEL32.dll_GetCurrentProcessorNumber
mov dword [ebp - 0x2c], eax
xor esi, esi
nop word [eax + eax]
lea ecx, [esi + eax]
add edi, 0x50280
and ecx, 0xf
imul ecx, ecx, 0x51200
add ecx, edi
call fcn.0058dd80
mov edi, eax
test edi, edi
jne 0x58c4bd
mov eax, dword [ebp - 0x2c]
inc esi
mov edi, dword [ebp - 0xc]
cmp esi, 0x10
jb 0x58c490
jmp 0x58c480
push dword [ebx + 8]
mov ecx, edi
call fcn.0058f020
mov eax, edi
xorps xmm0, xmm0
mov edi, dword [ebx + 0x10]
cdq
movq qword [ebp - 0x48], xmm0
and edx, 0xffff
mov dword [ebp - 0x48], eax
add edi, 0x100
mov dword [ebp - 0x44], edx
movq xmm0, qword [ebp - 0x48]
movq qword [ebp - 0x48], xmm0
mov dword [ebp - 0xc], edi
xorps xmm0, xmm0
movq qword [ebp - 0x40], xmm0
movq xmm0, qword [edi]
movq qword [ebp - 8], xmm0
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
nop
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x74], ecx
movq xmm0, qword [ebp - 0x78]
movq qword [ebp - 0x40], xmm0
movq xmm0, qword [ebp - 0x40]
movq qword [ebp - 0x38], xmm0
xorps xmm0, xmm0
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
movq qword [ebp - 0x38], xmm0
mov dword [ebp - 0x9c], eax
movq xmm0, qword [ecx]
movq qword [ebp - 8], xmm0
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
nop
mov dword [ebp - 0x7c], ecx
mov dword [ebp - 0x80], eax
movq xmm0, qword [ebp - 0x80]
movq qword [ebp - 0x38], xmm0
movq xmm0, qword [ebp - 0x40]
movq qword [ebp - 0x30], xmm0
movq xmm0, qword [edi]
mov esi, dword [ebp - 0x2c]
movq qword [ebp - 8], xmm0
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 4]
nop
xor ecx, dword [ebp - 0x30]
mov eax, edx
xor eax, esi
and eax, 0xffff
or ecx, eax
jne 0x58c4f4
xor edx, esi
xor eax, eax
and edx, 0xffff0000
or eax, edx
jne 0x58c4f4
movq xmm0, qword [ebp - 0x38]
movq qword [ebp - 8], xmm0
cmp dword [ebp - 8], eax
je 0x58c65b
xorps xmm0, xmm0
movq qword [ebp - 0x60], xmm0
movq xmm0, qword [ebp - 0x38]
movq qword [ebp - 8], xmm0
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
nop
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], ecx
movq xmm0, qword [ebp - 0x88]
movq qword [ebp - 0x60], xmm0
xorps xmm0, xmm0
movq qword [ebp - 0x58], xmm0
movq xmm0, qword [ebp - 0x40]
movq qword [ebp - 8], xmm0
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
nop
mov esi, dword [ebp - 0x60]
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x8c], ecx
movq xmm0, qword [ebp - 0x90]
movq qword [ebp - 0x58], xmm0
mov eax, dword [ebp - 0x52]
mov edi, dword [ebp - 0x58]
inc eax
mov ecx, dword [ebp - 0x54]
mov edx, ecx
mov word [ebp - 0x5a], ax
mov eax, edi
mov dword [ebp - 0x2c], edi
mov edi, dword [ebp - 0xc]
mov dword [ebp - 4], ecx
mov ecx, dword [ebp - 0x5c]
push ebx
mov ebx, esi
lock cmpxchg8b qword [edi]
mov esi, ebx
pop ebx
cmp eax, dword [ebp - 0x2c]
jne 0x58c64d
cmp edx, dword [ebp - 4]
je 0x58c4f4
mov edi, dword [ebp - 0xc]
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], edx
jmp 0x58c4f4
movq xmm0, qword [ebp - 0x40]
movq qword [ebp - 0xa0], xmm0
xorps xmm0, xmm0
movq qword [ebp - 0x68], xmm0
movq xmm0, qword [ebp - 0x48]
movq qword [ebp - 8], xmm0
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
nop
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x94], ecx
movq xmm0, qword [ebp - 0x98]
movq qword [ebp - 0x68], xmm0
xorps xmm0, xmm0
movq qword [ebp - 0x28], xmm0
movq xmm0, qword [ebp - 0x38]
movq qword [ebp - 8], xmm0
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
nop
mov esi, dword [ebp - 0x68]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], ecx
movq xmm0, qword [ebp - 0x18]
movq qword [ebp - 0x28], xmm0
mov eax, dword [ebp - 0x22]
mov edi, dword [ebp - 0x28]
inc eax
mov ecx, dword [ebp - 0x24]
mov edx, ecx
mov word [ebp - 0x62], ax
mov eax, edi
mov dword [ebp - 4], edi
mov edi, dword [ebp - 0xa0]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x64]
push ebx
mov ebx, esi
lock cmpxchg8b qword [edi]
mov esi, ebx
pop ebx
cmp eax, dword [ebp - 4]
jne 0x58c6fb
cmp edx, dword [ebp - 0x2c]
je 0x58c709
mov edi, dword [ebp - 0xc]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], edx
jmp 0x58c4f4
xorps xmm0, xmm0
movq qword [ebp - 0x70], xmm0
movq xmm0, qword [ebp - 0x48]
movq qword [ebp - 0x18], xmm0
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
nop
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], ecx
movq xmm0, qword [ebp - 0x18]
movq qword [ebp - 0x70], xmm0
xorps xmm0, xmm0
movq qword [ebp - 0x28], xmm0
movq xmm0, qword [ebp - 0x40]
movq qword [ebp - 0x18], xmm0
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
nop
mov esi, dword [ebp - 0x70]
mov edi, dword [ebp - 0xc]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], ecx
movq xmm0, qword [ebp - 0x18]
movq qword [ebp - 0x28], xmm0
mov eax, dword [ebp - 0x22]
mov edx, dword [ebp - 0x24]
inc eax
mov word [ebp - 0x6a], ax
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x6c]
push ebx
mov ebx, esi
lock cmpxchg8b qword [edi]
mov esi, ebx
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0xc
mov ecx, dword [ebx + 0x10]
push dword [ebx + 8]
lea ecx, [ecx + 0x180]
call fcn.0058e040
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0xc