Function at 0x693ec6d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov ebx, dword [esp + 0x40]
mov eax, ebx
neg eax
mov ecx, ebx
nop word cs:[eax + eax]
dec eax
cmp byte [ecx], 0
lea ecx, [ecx + 1]
jne 0x693ec6f0
mov edx, eax
not edx
mov ecx, ebx
not ecx
and ecx, edx
and eax, ebx
mov ebp, ecx
sub ebp, eax
mov edx, ebp
or edx, 3
mov edi, ebp
and edi, 3
imul edx, edi
mov esi, ebp
and esi, 0xfffffffc
xor edi, 3
imul edi, esi
add edi, edx
shr edi, 2
mov dword [esp + 4], ebp
movzx edx, byte [ebp + ebx - 1]
cmp edx, 0x3d
je 0x693ec739
cmp edx, 0x2e
jne 0x693ec73a
dec edi
mov edx, dword [esp + 4]
movzx edx, byte [edx + ebx - 2]
cmp edx, 0x3d
je 0x693ec74d
cmp edx, 0x2e
jne 0x693ec74e
dec edi
mov dword [esp + 8], edi
cmp ecx, eax
mov ecx, 0
mov ebp, dword [esp + 4]
jne 0x693ec8a9
mov eax, dword [esp + 8]
cmp ecx, eax
mov ebp, eax
mov eax, 0
jne 0x693ec8a1
mov eax, ebp
xor eax, 0xffffffdf
add ebp, ebp
and ebp, 0xffffffbe
add ebp, eax
lea edi, [esp + 0xc]
mov ebx, dword [esp + 0x44]
mov edx, ebx
mov ecx, 8
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov ecx, ebp
inc ecx
je 0x693ec89b
xor edi, edi
mov dword [esp], ecx
cmp ecx, 8
jb 0x693ec846
cmp ebp, 0x1f
mov ecx, dword [esp]
ja 0x693ec846
xor edi, edi
cmp ecx, 0x20
jb 0x693ec810
mov edi, ecx
and edi, 0xffffffe0
movups xmm0, xmmword [esp + 0xc]
movups xmm1, xmmword [esp + 0x1c]
xor edx, edx
nop word cs:[eax + eax]
movups xmm2, xmmword [ebx + edx + 0x20]
xorps xmm2, xmm0
movups xmm3, xmmword [ebx + edx + 0x30]
xorps xmm3, xmm1
movups xmmword [ebx + edx], xmm2
movups xmmword [ebx + edx + 0x10], xmm3
add edx, 0x20
cmp edi, edx
jne 0x693ec7e0
mov ecx, dword [esp]
cmp ecx, edi
je 0x693ec89b
test cl, 0x18
je 0x693ec846
mov edx, edi
mov edi, ecx
and edi, 0xfffffff8
nop word [eax + eax]
movsd xmm0, qword [ebx + edx + 0x20]
mov esi, edx
and esi, 0x18
movsd xmm1, qword [esp + esi + 0xc]
xorps xmm1, xmm0
movlps qword [ebx + edx], xmm1
add edx, 8
cmp edi, edx
jne 0x693ec820
mov ecx, dword [esp]
cmp ecx, edi
je 0x693ec89b
mov edx, edi
test al, 1
jne 0x693ec862
mov eax, edi
and eax, 0x18
movzx eax, byte [esp + eax + 0xc]
xor al, byte [ebx + edi + 0x20]
mov byte [ebx + edi], al
mov edx, edi
or edx, 1
cmp ebp, edi
mov ecx, dword [esp]
je 0x693ec89b
nop dword [eax]
mov eax, edx
and eax, 0x1f
movzx eax, byte [esp + eax + 0xc]
xor al, byte [ebx + edx + 0x20]
mov byte [ebx + edx], al
lea eax, [edx + 1]
and eax, 0x1f
movzx eax, byte [esp + eax + 0xc]
xor al, byte [ebx + edx + 0x21]
mov byte [ebx + edx + 1], al
add edx, 2
cmp ecx, edx
jne 0x693ec870
mov byte [ebx + ecx], 0
mov eax, ecx
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret
xor edi, edi
mov esi, 2
jmp 0x693ec8d6
mov edx, ebp
lea eax, [esi + 4]
add esi, 2
mov edi, ecx
cmp esi, edx
mov esi, eax
mov ebp, edx
jae 0x693ec763
mov dword [esp], edi
mov edi, dword [esp + 0x40]
movzx eax, byte [edi + esi - 2]
push eax
call fcn.693f6530
add esp, 4
mov bh, al
movzx eax, byte [edi + esi - 1]
mov edi, dword [esp]
push eax
call fcn.693f6530
add esp, 4
mov bl, al
movzx eax, bh
shl eax, 2
movzx ecx, bl
mov edx, ecx
not edx
or edx, 0x30
add ecx, edx
inc ecx
sar ecx, 4
mov edx, ecx
and edx, eax
xor ecx, eax
lea eax, [ecx + edx*2]
mov ecx, dword [esp + 0x44]
mov byte [ecx + edi], al
lea ecx, [edi + 1]
cmp esi, ebp
jae 0x693ec8c0
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + esi]
push eax
mov ebp, ecx
call fcn.693f6530
mov ecx, ebp
mov edx, dword [esp + 8]
add esp, 4
cmp al, 0x40
je 0x693ec8c2
mov bh, al
shl bl, 4
shr al, 2
and al, 0xf
or al, bl
lea ebp, [edi + 2]
mov ecx, dword [esp + 0x44]
mov byte [ecx + edi + 1], al
lea eax, [esi + 1]
cmp eax, edx
jae 0x693ec9a3
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + esi + 1]
push eax
call fcn.693f6530
mov edx, dword [esp + 8]
add esp, 4
cmp al, 0x40
mov ecx, ebp
je 0x693ec8c2
shl bh, 6
add al, bh
mov ecx, dword [esp + 0x44]
mov byte [ecx + edi + 2], al
add edi, 3
mov ecx, edi
jmp 0x693ec8c2
mov ecx, ebp
jmp 0x693ec8c2