Function at 0x425220
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x18
mov edi, dword [ebp + 8]
mov dword [ebp - 0x14], ecx
add dword [ecx + 0x38], edi
mov eax, dword [ecx + 0x3c]
test eax, eax
je 0x425277
mov esi, 8
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x20], edx
sub esi, eax
cmp edi, esi
mov eax, esi
cmovb eax, edi
xor ecx, ecx
mov edi, eax
cmp eax, 3
jbe 0x42527e
mov eax, dword [edx]
mov edx, 4
mov dword [ebp - 0x10], eax
mov eax, edx
or eax, 1
cmp eax, edi
jb 0x425290
mov eax, dword [ebp - 0x10]
cmp edx, edi
jb 0x4252cd
mov ebx, ecx
jmp 0x4252fb
xor esi, esi
jmp 0x425419
xor edx, edx
mov dword [ebp - 0x10], 0
mov eax, edx
or eax, 1
cmp eax, edi
jae 0x425269
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], ecx
lea ecx, [edx*8]
xor ebx, ebx
movzx eax, word [eax + edx]
shld ebx, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, dword [ebp - 0x1c]
cmovne ebx, eax
mov dword [ebp - 0x24], ebx
mov ebx, 0
cmovne eax, ebx
mov ebx, dword [ebp - 0x10]
or edx, 2
or ecx, dword [ebp - 0x24]
or ebx, eax
mov eax, ebx
cmp edx, edi
jae 0x425270
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x20]
xor edi, edi
mov ebx, ecx
movzx eax, byte [eax + edx]
shl edx, 3
mov ecx, edx
shld edi, eax, cl
shl eax, cl
test dl, 0x20
mov ecx, 0
cmovne edi, eax
cmovne eax, ecx
or dword [ebp - 0x10], eax
or ebx, edi
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
xor edi, edi
lea ecx, [edx*8]
shld ebx, eax, cl
shl eax, cl
test cl, 0x20
cmovne ebx, eax
cmove edi, eax
mov eax, dword [ebp - 0x14]
or edi, dword [eax + 0x30]
or ebx, dword [eax + 0x34]
mov dword [ebp - 0x10], edi
mov dword [eax + 0x30], edi
mov edi, dword [ebp + 8]
mov dword [eax + 0x34], ebx
cmp esi, edi
jbe 0x425337
add edx, edi
mov edi, edx
jmp 0x4255d6
mov eax, dword [eax + 0x2c]
mov ecx, dword [ebp - 0x14]
mov edx, ebx
xor eax, ebx
mov ecx, dword [ecx + 0x28]
mov ebx, dword [ebp - 0x10]
movd xmm2, eax
mov eax, dword [ebp - 0x14]
xor ecx, ebx
movdqu xmm1, xmmword [eax + 0x10]
mov eax, dword [ebp - 0x14]
movd xmm0, ecx
punpcklqdq xmm2, xmm0
movdqu xmm0, xmmword [eax + 0x20]
mov eax, dword [ebp - 0x14]
movdqa xmm3, xmm0
movdqa xmm4, xmm0
psllq xmm0, 0xd
shufps xmm3, xmm2, 0x24
psrlq xmm4, 0x33
movaps xmm2, xmm3
paddq xmm1, xmm3
psllq xmm3, 0x10
psrlq xmm2, 0x30
shufps xmm0, xmm3, 0xe4
shufps xmm4, xmm2, 0xe4
orps xmm0, xmm4
pxor xmm0, xmm1
pshufd xmm1, xmm1, 0x1e
movdqa xmm2, xmm0
movdqa xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x2f
psrlq xmm3, 0x2b
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x15
psllq xmm2, 0x11
movsd xmm0, xmm2
pshufd xmm2, xmm1, 0xff
orpd xmm0, xmm3
xorpd xmm0, xmm1
movupd xmmword [eax + 0x20], xmm0
mov eax, dword [ebp - 0x14]
pshufd xmm0, xmm1, 0x55
movd dword [eax + 0x1c], xmm1
mov eax, dword [ebp - 0x14]
pshufd xmm1, xmm1, 0xee
movd ecx, xmm1
xor ecx, ebx
movd dword [eax + 0x18], xmm0
movd eax, xmm2
xor eax, edx
mov edx, dword [ebp - 0x14]
mov dword [edx + 0x14], eax
mov edx, dword [ebp - 0x14]
mov dword [edx + 0x10], ecx
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x20]
sub edi, esi
mov eax, edi
and edi, 0xfffffff8
and eax, 7
cmp esi, edi
mov dword [ebp - 0x18], eax
jae 0x42552e
movdqu xmm1, xmmword [ecx + 0x10]
movdqu xmm0, xmmword [ecx + 0x20]
nop dword [eax + eax]
mov ecx, dword [edx + esi]
mov eax, dword [edx + esi + 4]
pshufd xmm2, xmm0, 0xee
movdqa xmm4, xmm0
add esi, 8
movd ebx, xmm2
pshufd xmm2, xmm0, 0xff
psrlq xmm4, 0x33
xor ebx, ecx
movd xmm3, ebx
movd ebx, xmm2
xor ebx, eax
movd xmm2, ebx
punpcklqdq xmm2, xmm3
movdqa xmm3, xmm0
psllq xmm0, 0xd
shufps xmm3, xmm2, 0x24
movaps xmm2, xmm3
paddq xmm1, xmm3
psllq xmm3, 0x10
psrlq xmm2, 0x30
shufps xmm0, xmm3, 0xe4
shufps xmm4, xmm2, 0xe4
pshufd xmm2, xmm1, 0x1e
orps xmm0, xmm4
pxor xmm0, xmm1
paddq xmm2, xmm0
pshufd xmm3, xmm2, 0xee
pshufd xmm1, xmm2, 0xff
movd ebx, xmm3
movdqa xmm3, xmm0
xor ebx, ecx
movd ecx, xmm1
movdqa xmm1, xmm0
psrlq xmm3, 0x2b
psrlq xmm1, 0x2f
xor ecx, eax
cmp esi, edi
movsd xmm3, xmm1
movdqa xmm1, xmm0
psllq xmm0, 0x15
psllq xmm1, 0x11
movsd xmm0, xmm1
movd xmm1, ecx
orpd xmm0, xmm3
movd xmm3, ebx
punpcklqdq xmm1, xmm3
xorpd xmm0, xmm2
shufps xmm1, xmm2, 0x12
jb 0x425440
mov eax, dword [ebp - 0x14]
pshufd xmm1, xmm2, 0x55
movd dword [ebp - 0x10], xmm2
movd edi, xmm1
mov dword [eax + 0x10], ebx
mov dword [eax + 0x14], ecx
movdqu xmmword [eax + 0x20], xmm0
mov dword [eax + 0x18], edi
mov edi, dword [ebp - 0x10]
mov dword [eax + 0x1c], edi
mov edi, dword [ebp - 0x18]
xor ecx, ecx
cmp edi, 3
jbe 0x42554e
mov eax, dword [edx + esi]
mov ebx, 4
mov dword [ebp - 0x10], eax
mov eax, ebx
or eax, 1
cmp eax, edi
jb 0x425560
jmp 0x425594
xor ebx, ebx
mov dword [ebp - 0x10], 0
mov eax, ebx
or eax, 1
cmp eax, edi
jae 0x425594
lea eax, [ebx + esi]
mov dword [ebp - 0x1c], ecx
lea ecx, [ebx*8]
xor edi, edi
movzx eax, word [edx + eax]
shld edi, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, 0
cmovne edi, eax
cmovne eax, ecx
mov ecx, dword [ebp - 0x1c]
or ebx, 2
or dword [ebp - 0x10], eax
or ecx, edi
mov edi, dword [ebp - 0x18]
cmp ebx, edi
jae 0x4255ca
add esi, ebx
shl ebx, 3
mov eax, ecx
movzx edx, byte [edx + esi]
xor esi, esi
mov ecx, ebx
shld esi, edx, cl
shl edx, cl
test bl, 0x20
mov ecx, 0
cmovne esi, edx
cmovne edx, ecx
or eax, esi
mov ecx, eax
mov eax, dword [ebp - 0x10]
or eax, edx
mov edx, eax
mov eax, dword [ebp - 0x14]
jmp 0x4255d0
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov dword [eax + 0x30], edx
mov dword [eax + 0x34], ecx
mov dword [eax + 0x3c], edi
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret