Function at 0x449900
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
mov ebp, dword [eax]
mov eax, dword [eax + 4]
add dword [edi + 0x38], 8
mov dword [esp + 8], eax
mov eax, dword [edi + 0x3c]
mov dword [esp + 4], ebp
test eax, eax
je 0x4499de
mov esi, 8
mov edx, 8
mov dword [esp], eax
sub esi, eax
cmp esi, 8
cmovb edx, esi
xor ebx, ebx
xor eax, eax
cmp edx, 4
setae al
cmovb ebp, ebx
lea ecx, [eax*4 + 1]
shl eax, 2
cmp ecx, edx
jae 0x449981
movzx edi, word [esp + eax + 4]
lea ecx, [eax*8]
xor ebx, ebx
shld ebx, edi, cl
shl edi, cl
test cl, 0x20
mov ecx, 0
cmovne ebx, edi
cmovne edi, ecx
or eax, 2
or ebp, edi
cmp eax, edx
jae 0x4499a7
movzx edx, byte [esp + eax + 4]
shl eax, 3
xor edi, edi
mov ecx, eax
shld edi, edx, cl
shl edx, cl
test al, 0x20
mov eax, 0
cmovne edi, edx
cmovne edx, eax
or ebx, edi
or ebp, edx
mov edx, dword [esp]
mov edi, dword [esp + 0x24]
xor eax, eax
lea ecx, [edx*8]
shld ebx, ebp, cl
shl ebp, cl
test cl, 0x20
cmovne ebx, ebp
cmove eax, ebp
or ebx, dword [edi + 0x34]
or eax, dword [edi + 0x30]
cmp edx, 8
mov dword [edi + 0x30], eax
mov dword [edi + 0x34], ebx
jbe 0x4499e5
add edx, 8
jmp 0x449c46
xor esi, esi
jmp 0x449aa2
mov ecx, dword [edi + 0x1c]
mov edx, dword [edi + 0x18]
movdqu xmm5, xmmword [edi + 0x10]
movdqu xmm1, xmmword [edi]
xor ecx, ebx
xor edx, eax
movdqa xmm3, xmm5
movdqa xmm4, xmm5
psllq xmm5, 0xd
movd xmm0, edx
movd xmm2, ecx
psrlq xmm4, 0x33
punpcklqdq xmm2, xmm0
shufps xmm3, xmm2, 0x24
movaps xmm2, xmm3
paddq xmm1, xmm3
psllq xmm3, 0x10
psrlq xmm2, 0x30
shufps xmm5, xmm3, 0xe4
shufps xmm4, xmm2, 0xe4
orps xmm5, xmm4
pxor xmm5, xmm1
pshufd xmm1, xmm1, 0x1e
movdqa xmm2, xmm5
movdqa xmm3, xmm5
paddq xmm1, xmm5
psrlq xmm2, 0x2f
psrlq xmm3, 0x2b
movsd xmm3, xmm2
movdqa xmm2, xmm5
psllq xmm5, 0x15
psllq xmm2, 0x11
movsd xmm5, xmm2
pshufd xmm2, xmm1, 0xff
orpd xmm5, xmm3
pshufd xmm3, xmm1, 0x55
movd ecx, xmm2
xorpd xmm5, xmm1
xor ecx, ebx
movupd xmmword [edi + 0x10], xmm5
movd dword [edi + 0xc], xmm1
pshufd xmm1, xmm1, 0xee
movd dword [edi + 8], xmm3
mov dword [edi + 4], ecx
movd edx, xmm1
xor edx, eax
mov dword [edi], edx
mov eax, 8
sub eax, esi
mov edx, eax
and eax, 0xfffffff8
and edx, 7
cmp esi, eax
mov dword [esp], edx
jae 0x449bbe
movdqu xmm1, xmmword [edi]
movdqu xmm0, xmmword [edi + 0x10]
nop word cs:[eax + eax]
nop
mov ebx, dword [esp + esi + 4]
mov ecx, dword [esp + esi + 8]
pshufd xmm2, xmm0, 0xee
movdqa xmm4, xmm0
add esi, 8
movd edx, xmm2
pshufd xmm2, xmm0, 0xff
psrlq xmm4, 0x33
movd edi, xmm2
xor edi, ecx
xor edx, ebx
movd xmm2, edx
movd xmm3, edi
punpcklqdq xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0xd
shufps xmm2, xmm3, 0x24
movaps xmm3, xmm2
paddq xmm1, xmm2
psllq xmm2, 0x10
psrlq xmm3, 0x30
shufps xmm0, xmm2, 0xe4
pshufd xmm2, xmm1, 0x1e
shufps xmm4, xmm3, 0xe4
orps xmm0, xmm4
pxor xmm0, xmm1
movdqa xmm1, xmm0
movdqa xmm3, xmm0
paddq xmm2, xmm0
psrlq xmm1, 0x2f
psrlq xmm3, 0x2b
movsd xmm3, xmm1
movdqa xmm1, xmm0
psllq xmm0, 0x15
psllq xmm1, 0x11
movsd xmm0, xmm1
pshufd xmm1, xmm2, 0xff
movd edx, xmm1
pshufd xmm1, xmm2, 0xee
orpd xmm0, xmm3
movd ebp, xmm1
xor edx, ecx
xorpd xmm0, xmm2
xor ebp, ebx
movd xmm1, edx
cmp esi, eax
movd xmm3, ebp
punpcklqdq xmm1, xmm3
shufps xmm1, xmm2, 0x12
jb 0x449ad0
mov edi, dword [esp + 0x24]
pshufd xmm1, xmm2, 0x55
movd eax, xmm2
movd ecx, xmm1
movdqu xmmword [edi + 0x10], xmm0
mov dword [edi + 8], ecx
mov dword [edi + 0xc], eax
mov dword [edi + 4], edx
mov edx, dword [esp]
mov dword [edi], ebp
xor ebx, ebx
cmp edx, 3
jbe 0x449bd9
mov ebp, dword [esp + esi + 4]
mov eax, 4
mov ecx, eax
or ecx, 1
cmp ecx, edx
jb 0x449be6
jmp 0x449c14
xor eax, eax
xor ebp, ebp
mov ecx, eax
or ecx, 1
cmp ecx, edx
jae 0x449c14
lea ecx, [eax + esi]
xor edi, edi
movzx edx, word [esp + ecx + 4]
lea ecx, [eax*8]
shld edi, edx, cl
shl edx, cl
test cl, 0x20
mov ecx, 0
cmovne edi, edx
cmovne edx, ecx
or eax, 2
or ebp, edx
mov edx, dword [esp]
or ebx, edi
cmp eax, edx
jae 0x449c3c
add esi, eax
shl eax, 3
xor edi, edi
movzx edx, byte [esp + esi + 4]
mov ecx, eax
xor esi, esi
shld edi, edx, cl
shl edx, cl
test al, 0x20
cmovne edi, edx
cmovne edx, esi
or ebp, edx
mov edx, dword [esp]
or ebx, edi
mov edi, dword [esp + 0x24]
mov dword [edi + 0x30], ebp
mov dword [edi + 0x34], ebx
mov dword [edi + 0x3c], edx
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret