Function at 0x4465c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x40
mov edi, dword [esp + 0x54]
mov ecx, dword [esp + 0x68]
mov esi, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x58]
cmp edi, 0x20
jb 0x44669d
cmp edi, ebp
jb 0x4466a5
lea eax, [edi - 0x20]
cmp eax, ebp
jae 0x4466a5
cmp ebx, 0x10
jb 0x446737
lea eax, [ebx - 0x10]
mov dword [esp], eax
and eax, 0xfffffff0
lea ecx, [eax + 0x10]
mov dword [esp + 4], eax
lea eax, [edi + eax + 0x10]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
push edx
lea eax, [esp + 0x28]
push eax
push edi
call dword [esp + 0x74]
mov edx, dword [esp + 0x6c]
add esp, 0xc
mov ecx, dword [esi]
mov eax, dword [edi]
add ebx, 0xfffffff0
xor ecx, dword [esp + 0x24]
mov dword [ebp], ecx
mov dword [esi], eax
mov ecx, dword [esi + 4]
mov eax, dword [edi + 4]
xor ecx, dword [esp + 0x28]
mov dword [ebp + 4], ecx
mov dword [esi + 4], eax
mov ecx, dword [esi + 8]
mov eax, dword [edi + 8]
xor ecx, dword [esp + 0x2c]
mov dword [ebp + 8], ecx
mov dword [esi + 8], eax
mov ecx, dword [esi + 0xc]
mov eax, dword [edi + 0xc]
add edi, 0x10
xor ecx, dword [esp + 0x30]
mov dword [ebp + 0xc], ecx
mov ecx, dword [esp + 0x68]
add ebp, 0x10
cmp ebx, 0xf
mov dword [esi + 0xc], eax
ja 0x446620
mov ebx, dword [esp]
mov ebp, dword [esp + 0x58]
sub ebx, dword [esp + 4]
add ebp, dword [esp + 0x10]
test ebx, ebx
jne 0x446764
jmp 0x4469ac
cmp edi, ebp
jae 0x4465fb
cmp ebx, 0x10
jb 0x446744
lea eax, [ebx - 0x10]
mov ecx, eax
mov dword [esp], eax
and ecx, 0xfffffff0
lea eax, [ecx + 0x10]
mov dword [esp + 0x18], ecx
mov dword [esp + 4], eax
lea eax, [ebp + ecx + 0x10]
mov dword [esp + 0x10], eax
mov eax, edi
nop
mov edi, eax
sub esp, 0xc
mov dword [esp + 8], edx
mov dword [esp + 4], ebp
mov dword [esp], eax
call dword [esp + 0x74]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x74]
add esp, 0xc
mov eax, dword [esi]
add ebx, 0xfffffff0
xor dword [ebp], eax
mov eax, dword [esi + 4]
xor dword [ebp + 4], eax
mov eax, dword [esi + 8]
xor dword [ebp + 8], eax
mov eax, dword [esi + 0xc]
mov esi, edi
xor dword [ebp + 0xc], eax
add ebp, 0x10
lea eax, [edi + 0x10]
cmp ebx, 0xf
ja 0x4466d0
mov esi, dword [esp]
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x54]
mov edi, dword [esp + 4]
mov ebp, dword [esp + 0x10]
sub esi, ebx
add edi, eax
add eax, ebx
mov ebx, esi
mov esi, dword [esp + 0x64]
jmp 0x446746
mov dword [esp + 0x14], edi
test ebx, ebx
jne 0x446764
jmp 0x4469ac
mov eax, esi
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
mov dword [esp + 0x14], edi
movsd qword [esi + 8], xmm1
movsd qword [esi], xmm0
test ebx, ebx
je 0x4469ac
mov eax, dword [esp + 0x14]
mov esi, 0xfffffff0
mov dword [esp + 0x3c], ebx
mov edi, ebx
mov dword [esp + 0x34], ebp
sub esi, eax
mov ebx, eax
mov dword [esp + 0x20], esi
xor esi, esi
jmp 0x4467ab
mov esi, dword [esp + 0x10]
add dword [esp + 0x20], 0xfffffff0
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x60]
add edi, 0xfffffff0
add ebx, 0x10
add ebp, 0x10
inc esi
mov dword [esp + 0x10], esi
shl esi, 4
mov eax, 0xfffffff0
mov dword [esp], esi
sub esi, dword [esp + 0x3c]
cmp esi, 0xfffffff0
cmovbe esi, eax
mov eax, esi
neg eax
mov dword [esp + 4], eax
push edx
lea eax, [esp + 0x28]
push eax
push ebx
call ecx
add esp, 0xc
cmp dword [esp + 4], 0x20
mov edx, dword [esp + 0x64]
jb 0x4468da
mov eax, dword [esp + 0x34]
mov ecx, dword [esp]
lea eax, [eax + ecx]
mov ecx, edx
sub ecx, esi
mov dword [esp + 0x1c], eax
sub eax, esi
mov dword [esp + 0x38], ecx
mov ecx, dword [esp]
add ecx, dword [esp + 0x14]
mov dword [esp], ecx
sub ecx, esi
mov dword [esp + 0x18], ecx
lea ecx, [esp + 0x24]
sub ecx, esi
mov esi, dword [esp + 0x38]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x1c]
cmp ecx, esi
setb byte [esp + 0xf]
cmp eax, edx
seta byte [esp + 0xe]
cmp ecx, dword [esp + 0x18]
setb byte [esp + 0xd]
cmp dword [esp], eax
setb byte [esp + 0xc]
cmp ecx, dword [esp + 4]
lea ecx, [esp + 0x24]
setb byte [esp + 0x1c]
cmp eax, ecx
lea eax, [esp + 0x24]
seta byte [esp + 0xb]
cmp dword [esp + 0x18], edx
seta cl
cmp dword [esp], esi
setb byte [esp]
cmp dword [esp + 4], edx
seta ch
cmp esi, eax
mov ah, byte [esp + 0xe]
seta byte [esp + 4]
test byte [esp + 0xf], ah
jne 0x4468da
mov al, byte [esp + 0xc]
and byte [esp + 0xd], al
jne 0x4468da
mov al, byte [esp + 0xb]
and byte [esp + 0x1c], al
jne 0x4468da
and cl, byte [esp]
jne 0x4468da
and ch, byte [esp + 4]
jne 0x4468da
xor eax, eax
nop
movups xmm2, xmmword [esp + eax + 0x24]
movups xmm4, xmmword [edx + eax]
movups xmm3, xmmword [esp + eax + 0x34]
movups xmm5, xmmword [edx + eax + 0x10]
movups xmm0, xmmword [ebx + eax]
movups xmm1, xmmword [ebx + eax + 0x10]
xorps xmm4, xmm2
xorps xmm5, xmm3
movups xmmword [ebp + eax], xmm4
movups xmmword [ebp + eax + 0x10], xmm5
movups xmmword [edx + eax], xmm0
movups xmmword [edx + eax + 0x10], xmm1
add eax, 0x20
jne 0x4468a0
xor ecx, ecx
mov eax, 0x10
mov esi, edx
nop word cs:[eax + eax]
nop dword [eax]
mov dh, byte [esi + ecx]
mov dl, byte [ebx + ecx]
dec eax
xor dh, byte [esp + ecx + 0x24]
mov byte [ebp + ecx], dh
mov byte [esi + ecx], dl
inc ecx
cmp ecx, 0xf
ja 0x44690c
cmp ecx, edi
jb 0x4468f0
cmp edi, 0x10
ja 0x446790
cmp ecx, 0xf
ja 0x4469ac
mov edx, 0x10
sub edx, ecx
cmp edx, 0x20
jb 0x446994
mov esi, dword [esp + 0x64]
lea edi, [ebx + 0x10]
lea esi, [esi + ecx]
cmp esi, edi
mov esi, dword [esp + 0x64]
jae 0x44694e
mov esi, dword [esp + 0x64]
lea edi, [ebx + ecx]
lea esi, [esi + 0x10]
cmp edi, esi
mov esi, dword [esp + 0x64]
jb 0x446994
mov edi, ecx
and eax, 0xffffffe0
lea ebp, [esi + ecx + 0x10]
mov esi, 0x10
sub edi, dword [esp + 0x20]
sub esi, ecx
add eax, ecx
mov ecx, edx
and ecx, 0xffffffe0
and esi, 0xffffffe0
nop dword [eax]
movups xmm0, xmmword [edi - 0x10]
movups xmm1, xmmword [edi]
add edi, 0x20
movups xmmword [ebp - 0x10], xmm0
movups xmmword [ebp], xmm1
add ebp, 0x20
add esi, 0xffffffe0
jne 0x446970
mov esi, dword [esp + 0x64]
cmp edx, ecx
mov ecx, eax
je 0x4469ac
add ecx, 0xfffffff0
nop word [eax + eax]
movzx eax, byte [ebx + ecx + 0x10]
mov byte [esi + ecx + 0x10], al
inc ecx
jne 0x4469a0
add esp, 0x40
pop esi
pop edi
pop ebx
pop ebp
ret