Function at 0x10086510
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xffffffc0
sub esp, 0x140
mov eax, dword [ebp + 8]
mov edx, dword [eax + 8]
movzx ebx, byte [eax + 0xc]
mov ecx, dword [eax + 0x20]
movsd xmm0, qword [eax + 0x10]
movsd xmm1, qword [eax + 0x18]
mov esi, dword [eax + 0x30]
mov eax, dword [0x103564a0]
mov dword [esp + 0x38], edx
mov dword [esp + 0xc], ecx
movsd qword [esp + 0x18], xmm1
movsd qword [esp + 0x10], xmm0
mov dword [esp + 0x34], edx
mov byte [esp + 7], bl
mov byte [esp + 0x3c], bl
movzx eax, byte [eax]
mov eax, dword [0x1035648c]
mov eax, dword [eax]
test eax, eax
jne 0x10086581
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x100869c8
mov ecx, dword [0x1035648c]
mov dword [ecx], eax
push 0x2f8
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x100869c8
mov ecx, eax
mov eax, dword [ebp + 8]
mov dword [esp + 8], esi
add eax, 0x10
mov dword [esp + 0x2c], eax
push 0x2f8
push 0
mov dword [esp + 0x38], ecx
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, 0xe414a674
mov ecx, 0xf0de7325
movd xmm1, eax
movd xmm0, ecx
punpckldq xmm0, xmm1
movapd xmm1, xmmword [0x10247020]
nop dword [eax + eax]
mov edx, 1
mov ecx, 0
mov edi, 0x70656462
mov ebx, 0x70656462
lock xadd dword [0x1038a060], edx
mov dword [esp], edx
xor edx, 0x79746573
mov eax, edx
mov esi, edx
add eax, 0x6e657261
adc ecx, 0xdcdecbc7
shld esi, edi, 0x10
shld ebx, edx, 0x10
xor esi, eax
xor ebx, ecx
mov ecx, esi
mov edi, ebx
mov eax, esi
add ecx, 0xd7dedfc6
adc edi, 0xded7d4e2
shld eax, ebx, 0x15
shld ebx, esi, 0x15
add edx, 0xc19fead0
mov esi, 0
movd xmm2, ecx
movd xmm6, eax
movd xmm3, ebx
mov eax, dword [esp]
adc esi, 0x1671bdd1
punpckldq xmm6, xmm3
movd xmm3, edi
movd xmm5, esi
xor edi, 0x4000000
xor esi, 0xff
punpckldq xmm2, xmm3
movd xmm3, edx
punpcklqdq xmm6, xmm0
movd xmm4, esi
movdqa xmm7, xmm3
punpcklqdq xmm3, xmm4
punpckldq xmm7, xmm5
xor eax, ecx
movd xmm5, edi
punpcklqdq xmm2, xmm7
pxor xmm2, xmm6
movd xmm6, eax
punpcklqdq xmm5, xmm6
movdqa xmm7, xmm2
movdqa xmm4, xmm2
shufps xmm3, xmm2, 0xe2
shufps xmm7, xmm5, 0x24
movdqa xmm5, xmm2
psrlq xmm2, 0x30
psllq xmm4, 0x10
psllq xmm5, 0xd
shufpd xmm2, xmm1, 2
paddq xmm3, xmm7
movsd xmm5, xmm4
orpd xmm2, xmm5
xorpd xmm2, xmm3
pshufd xmm3, xmm3, 0x4b
movapd xmm4, xmm2
movapd xmm5, xmm2
paddq xmm3, xmm2
psrlq xmm4, 0x2b
psrlq xmm5, 0x2f
movsd xmm5, xmm4
movdqa xmm4, xmm2
psllq xmm2, 0x11
psllq xmm4, 0x15
movsd xmm2, xmm4
orpd xmm2, xmm5
xorpd xmm2, xmm3
pshufd xmm3, xmm3, 0x4b
movapd xmm4, xmm2
movapd xmm5, xmm2
paddq xmm3, xmm2
psrlq xmm4, 0x30
psrlq xmm5, 0x33
movsd xmm5, xmm4
movdqa xmm4, xmm2
psllq xmm2, 0xd
psllq xmm4, 0x10
movsd xmm2, xmm4
orpd xmm2, xmm5
xorpd xmm2, xmm3
pshufd xmm3, xmm3, 0x4b
movapd xmm4, xmm2
movapd xmm5, xmm2
paddq xmm3, xmm2
psrlq xmm4, 0x2b
psrlq xmm5, 0x2f
movsd xmm5, xmm4
movdqa xmm4, xmm2
psllq xmm2, 0x11
psllq xmm4, 0x15
movsd xmm2, xmm4
orpd xmm2, xmm5
xorpd xmm2, xmm3
pshufd xmm3, xmm3, 0x4b
movapd xmm4, xmm2
movapd xmm5, xmm2
paddq xmm3, xmm2
psrlq xmm4, 0x30
psrlq xmm5, 0x33
movsd xmm5, xmm4
movdqa xmm4, xmm2
psllq xmm2, 0xd
psllq xmm4, 0x10
movsd xmm2, xmm4
orpd xmm2, xmm5
xorpd xmm2, xmm3
pshufd xmm4, xmm2, 0xee
paddq xmm4, xmm3
pshufd xmm3, xmm4, 0x55
movd ecx, xmm4
movdqa xmm4, xmm2
movd eax, xmm3
movdqa xmm3, xmm2
psrlq xmm4, 0x2f
psrlq xmm3, 0x2b
xor ecx, eax
movsd xmm4, xmm3
movdqa xmm3, xmm2
psllq xmm2, 0x11
psllq xmm3, 0x15
movsd xmm2, xmm3
orpd xmm2, xmm4
pshufd xmm3, xmm2, 0xee
pxor xmm3, xmm2
movd edx, xmm3
pshufd xmm2, xmm3, 0x55
movd esi, xmm2
xor edx, ecx
xor esi, ecx
mov eax, edx
or eax, esi
je 0x100865e0
mov eax, dword [esp + 0x2c]
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
mov eax, dword [esp + 0x34]
movsd qword [esp + 0xd8], xmm1
movsd qword [esp + 0xd0], xmm0
mov dword [esp + 0xe0], eax
movzx eax, byte [esp + 7]
mov byte [esp + 0xe4], al
mov eax, dword [esp + 0x30]
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], eax
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], eax
mov eax, dword [esp + 8]
mov dword [esp + 0xc8], eax
mov dword [esp + 0xc4], esi
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc0], edx
mov dword [esp + 0xcc], eax
push 0
call fcn.10088750
add esp, 4
test eax, eax
je 0x100869dc
cmp dword [eax], 0
jne 0x100869ff
lea ecx, [esp + 0x40]
mov dword [eax], ecx
mov ebx, dword [esp + 0xcc]
mov eax, dword [ebx + 0xf8]
cmp eax, esi
jbe 0x10086998
mov eax, dword [ebx + 0xf0]
lea edi, [esi + esi*4]
lea ecx, [eax + edi*8 + 8]
call fcn.10086450
mov eax, dword [ebx + 0xc8]
test eax, eax
je 0x10086908
mov ecx, dword [ebx + 0xcc]
mov ecx, dword [ecx + 0x14]
push esi
push eax
call ecx
add esp, 8
mov eax, dword [ebx + 0xf8]
cmp eax, esi
jbe 0x100869ac
mov eax, dword [ebx + 0xf0]
mov ecx, dword [eax + edi*8]
cmp ecx, 3
je 0x10086935
lea eax, [eax + edi*8]
push eax
lea eax, [esp + 0x44]
push eax
call fcn.10087530
add esp, 8
mov eax, dword [ebx + 0xf8]
cmp eax, esi
jbe 0x100869b3
mov eax, dword [ebx + 0xf0]
lea ecx, [eax + edi*8 + 0x14]
call fcn.10086450
mov eax, dword [ebx + 0xd0]
test eax, eax
je 0x10086968
mov ecx, dword [ebx + 0xd4]
mov ecx, dword [ecx + 0x14]
push esi
push eax
call ecx
add esp, 8
lea ecx, [esp + 0x40]
call fcn.10085260
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x10086990
cmp dword [ecx + 0x28], 0
je 0x10086990
push eax
push 0
mov eax, dword [0x1035648c]
push dword [eax]
call sub.KERNEL32.dll_HeapFree
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x1024776c
push eax
push esi
call fcn.10026930
add esp, 0xc
jmp 0x10086b8f
mov ecx, 0x1024777c
jmp 0x100869b8
mov ecx, 0x1024778c
push ecx
push eax
push esi
call fcn.10026930
add esp, 0xc
jmp 0x10086b8f
push 0x2f8
push 4
call fcn.1001a7e0
add esp, 8
jmp 0x10086b8f
lea eax, [esp + 0x10]
push 0x102476d4
push 0x1024745c
push eax
push 0x46
push 0x1024763c
call fcn.10026bb0
add esp, 0x14
jmp 0x10086b8f
push 0x1024774c
push 0x23
push str.assertion_failed:_t.get__.is_null__
call fcn.10026890
add esp, 0xc
jmp 0x10086b8f
ud2