Function at 0x446e30
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x38]
mov ebp, dword [esp + 0x30]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x34]
mov ebx, dword [ecx]
mov dword [esp], ebp
test ebx, ebx
setne dl
test eax, eax
setne cl
and cl, dl
cmp dword [esp + 0x48], 0
je 0x446f2d
test cl, cl
je 0x446fff
nop
movzx ecx, byte [edi + ebx]
mov edx, dword [esp]
xor cl, byte [edx]
inc edx
mov dword [esp], edx
mov byte [edi + ebx], cl
inc ebx
mov byte [esi], cl
inc esi
lea ecx, [eax - 1]
and ebx, 0xf
je 0x446e93
cmp eax, 1
mov eax, ecx
jne 0x446e70
cmp ecx, 0x10
jb 0x44700a
mov ebp, dword [esp]
lea eax, [ecx - 0x10]
mov dword [esp + 0x10], eax
and eax, 0xfffffff0
lea edx, [eax + 0x10]
mov dword [esp + 0x14], eax
lea eax, [esi + eax + 0x10]
mov dword [esp + 0x18], edx
mov dword [esp + 0xc], eax
nop dword [eax]
mov dword [esp + 4], ecx
push dword [esp + 0x3c]
push edi
push edi
call dword [esp + 0x58]
add esp, 0xc
cmp ebx, 0xf
ja 0x446ef5
nop word cs:[eax + eax]
mov eax, dword [ebp + ebx]
xor eax, dword [edi + ebx]
mov dword [edi + ebx], eax
mov dword [esi + ebx], eax
add ebx, 4
cmp ebx, 0x10
jb 0x446ee0
mov ecx, dword [esp + 4]
add esi, 0x10
add ebp, 0x10
xor ebx, ebx
add ecx, 0xfffffff0
cmp ecx, 0xf
ja 0x446ec0
mov eax, dword [esp + 0x10]
mov esi, dword [esp]
xor ebx, ebx
sub eax, dword [esp + 0x14]
add esi, dword [esp + 0x18]
mov ecx, eax
mov eax, dword [esp + 0xc]
test ecx, ecx
jne 0x447017
jmp 0x4472d9
test cl, cl
je 0x447173
nop word cs:[eax + eax]
nop
mov edx, dword [esp]
mov ch, byte [edi + ebx]
mov cl, byte [edx]
inc edx
mov dword [esp], edx
xor ch, cl
mov byte [esi], ch
mov byte [edi + ebx], cl
inc ebx
inc esi
lea ecx, [eax - 1]
and ebx, 0xf
je 0x446f64
cmp eax, 1
mov eax, ecx
jne 0x446f40
cmp ecx, 0x10
jb 0x44717e
mov ebp, dword [esp]
lea eax, [ecx - 0x10]
mov dword [esp + 0x10], eax
and eax, 0xfffffff0
lea edx, [eax + 0x10]
mov dword [esp + 0x14], eax
lea eax, [esi + eax + 0x10]
mov dword [esp + 0x18], edx
mov dword [esp + 0xc], eax
nop dword [eax]
mov dword [esp + 4], ecx
push dword [esp + 0x3c]
push edi
push edi
call dword [esp + 0x58]
add esp, 0xc
cmp ebx, 0xf
ja 0x446fc7
nop word cs:[eax + eax]
mov eax, dword [ebp + ebx]
mov ecx, dword [edi + ebx]
xor ecx, eax
mov dword [esi + ebx], ecx
mov dword [edi + ebx], eax
add ebx, 4
cmp ebx, 0x10
jb 0x446fb0
mov ecx, dword [esp + 4]
add esi, 0x10
add ebp, 0x10
xor ebx, ebx
add ecx, 0xfffffff0
cmp ecx, 0xf
ja 0x446f90
mov eax, dword [esp + 0x10]
mov esi, dword [esp]
xor ebx, ebx
sub eax, dword [esp + 0x14]
add esi, dword [esp + 0x18]
mov ecx, eax
mov eax, dword [esp + 0xc]
test ecx, ecx
jne 0x44718b
jmp 0x4472d9
mov ecx, eax
cmp ecx, 0x10
jae 0x446e9c
mov eax, esi
mov esi, dword [esp]
test ecx, ecx
je 0x4472d9
push dword [esp + 0x3c]
push edi
push edi
mov dword [esp + 0x18], eax
mov ebp, ecx
call dword [esp + 0x58]
add esp, 0xc
cmp ebp, 0x20
mov dword [esp + 4], ebp
mov eax, ebp
mov ebp, dword [esp + 0xc]
mov ecx, ebx
jae 0x447068
add esi, ecx
add edi, ecx
add ebp, ecx
xor ecx, ecx
nop word cs:[eax + eax]
nop dword [eax]
movzx edx, byte [edi + ecx]
xor dl, byte [esi + ecx]
mov byte [edi + ecx], dl
mov byte [ebp + ecx], dl
inc ecx
cmp eax, ecx
jne 0x447050
jmp 0x4472d5
mov ecx, dword [esp + 4]
mov dword [esp], esi
lea eax, [edi + ebx]
lea esi, [ecx + ebx]
mov ecx, dword [esp + 0xc]
lea edx, [edi + esi]
lea ebp, [ecx + ebx]
mov ecx, dword [esp + 0xc]
lea ecx, [ecx + esi]
add esi, dword [esp]
cmp eax, ecx
setb byte [esp + 0x10]
cmp ebp, edx
setb byte [esp + 0x14]
cmp eax, esi
mov eax, dword [esp]
setb byte [esp + 0x18]
lea eax, [eax + ebx]
cmp eax, edx
setb dh
cmp ebp, esi
mov ebp, dword [esp + 0xc]
mov esi, dword [esp]
setb dl
cmp eax, ecx
mov al, byte [esp + 0x14]
mov ecx, ebx
setb byte [esp + 0xb]
test byte [esp + 0x10], al
mov eax, dword [esp + 4]
jne 0x44703b
and byte [esp + 0x18], dh
mov eax, dword [esp + 4]
mov ecx, ebx
jne 0x44703b
and dl, byte [esp + 0xb]
mov eax, dword [esp + 4]
mov ecx, ebx
jne 0x44703b
mov eax, dword [esp + 4]
xor edx, edx
mov ecx, eax
and ecx, 0xffffffe0
sub eax, ecx
mov dword [esp + 0x10], ecx
lea ecx, [ebx + ecx]
mov dword [esp + 0x14], ecx
mov ecx, esi
lea esi, [ebp + ebx + 0x10]
lea ebp, [edi + ebx + 0x10]
lea ecx, [ecx + ebx + 0x10]
nop word cs:[eax + eax]
movups xmm0, xmmword [ecx + edx - 0x10]
movups xmm2, xmmword [ebp + edx - 0x10]
movups xmm1, xmmword [ecx + edx]
movups xmm3, xmmword [ebp + edx]
xorps xmm2, xmm0
xorps xmm3, xmm1
movups xmmword [ebp + edx - 0x10], xmm2
movups xmmword [ebp + edx], xmm3
movups xmmword [esi + edx - 0x10], xmm2
movups xmmword [esi + edx], xmm3
add edx, 0x20
cmp dword [esp + 0x10], edx
jne 0x447120
mov ecx, dword [esp + 0x10]
mov esi, dword [esp]
mov ebp, dword [esp + 0xc]
cmp dword [esp + 4], ecx
mov ecx, dword [esp + 0x14]
jne 0x44703b
jmp 0x4472d5
mov ecx, eax
cmp ecx, 0x10
jae 0x446f6d
mov eax, esi
mov esi, dword [esp]
test ecx, ecx
je 0x4472d9
push dword [esp + 0x3c]
push edi
push edi
mov dword [esp + 0x18], eax
mov ebp, ecx
call dword [esp + 0x58]
add esp, 0xc
cmp ebp, 0x20
mov dword [esp + 4], ebp
mov eax, ebp
mov ebp, dword [esp + 0xc]
mov ecx, ebx
jb 0x4472a9
mov ecx, dword [esp + 4]
mov dword [esp], esi
lea eax, [ebp + ebx]
lea esi, [ecx + ebx]
lea edx, [ebp + esi]
lea ecx, [edi + esi]
add esi, dword [esp]
lea ebp, [edi + ebx]
cmp eax, ecx
setb byte [esp + 0x10]
cmp ebp, edx
setb byte [esp + 0x14]
cmp eax, esi
mov eax, dword [esp]
setb byte [esp + 0x18]
lea eax, [eax + ebx]
cmp eax, edx
setb dh
cmp ebp, esi
mov ebp, dword [esp + 0xc]
mov esi, dword [esp]
setb dl
cmp eax, ecx
mov al, byte [esp + 0x14]
mov ecx, ebx
setb byte [esp + 0xb]
test byte [esp + 0x10], al
mov eax, dword [esp + 4]
jne 0x4472a9
and byte [esp + 0x18], dh
mov eax, dword [esp + 4]
mov ecx, ebx
jne 0x4472a9
and dl, byte [esp + 0xb]
mov eax, dword [esp + 4]
mov ecx, ebx
jne 0x4472a9
mov eax, dword [esp + 4]
xor edx, edx
mov ecx, eax
and ecx, 0xffffffe0
sub eax, ecx
mov dword [esp + 0x10], ecx
lea ecx, [ebx + ecx]
mov dword [esp + 0x14], ecx
mov ecx, esi
lea esi, [ebp + ebx + 0x10]
lea ebp, [ecx + ebx + 0x10]
lea ecx, [edi + ebx + 0x10]
nop word [eax + eax]
movups xmm0, xmmword [ecx + edx - 0x10]
movups xmm2, xmmword [ebp + edx - 0x10]
movups xmm1, xmmword [ecx + edx]
movups xmm3, xmmword [ebp + edx]
xorps xmm0, xmm2
xorps xmm1, xmm3
movups xmmword [esi + edx - 0x10], xmm0
movups xmmword [esi + edx], xmm1
movups xmmword [ecx + edx - 0x10], xmm2
movups xmmword [ecx + edx], xmm3
add edx, 0x20
cmp dword [esp + 0x10], edx
jne 0x447260
mov ecx, dword [esp + 0x10]
mov esi, dword [esp]
mov ebp, dword [esp + 0xc]
cmp dword [esp + 4], ecx
mov ecx, dword [esp + 0x14]
je 0x4472d5
add edi, ecx
add esi, ecx
add ebp, ecx
xor ecx, ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx edx, byte [esi + ecx]
mov dh, byte [edi + ecx]
xor dh, dl
mov byte [ebp + ecx], dh
mov byte [edi + ecx], dl
inc ecx
cmp eax, ecx
jne 0x4472c0
add ebx, dword [esp + 4]
mov eax, dword [esp + 0x44]
mov dword [eax], ebx
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret