Function at 0x693e7640
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
mov eax, 0x15b8
call fcn.693e8180
mov esi, ecx
mov ebx, dword [esp + 0x15cc]
pxor xmm0, xmm0
movdqu xmmword [esp + 0x34], xmm0
movdqu xmmword [esp + 0x44], xmm0
movdqu xmmword [esp + 0x54], xmm0
movdqu xmmword [esp + 0x64], xmm0
movdqu xmmword [esp + 0x74], xmm0
movdqu xmmword [esp + 0x84], xmm0
movdqu xmmword [esp + 0x94], xmm0
movdqu xmmword [esp + 0xa4], xmm0
mov dword [esp + 0xb4], 0
cmp dword [esp + 0x15d4], 0
mov dword [esp + 0x1c], edx
je 0x693e76f0
test ebx, ebx
jle 0x693e806d
xor eax, eax
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + ecx*8]
shl ecx, 5
add ecx, esi
nop word cs:[eax + eax]
movzx edx, byte [eax + ecx + 0x8f12]
inc dword [esp + edx*4 + 0x34]
mov edx, eax
and edx, 1
xor eax, 1
lea eax, [eax + edx*2]
cmp eax, ebx
jl 0x693e76d0
jmp 0x693e806d
lea edi, [edx + edx*8]
mov eax, edi
shl eax, 6
mov dword [esp + 0x10], eax
test ebx, ebx
mov dword [esp + 0x18], esi
mov dword [esp + 0xc], edi
jle 0x693e77eb
cmp ebx, 1
jne 0x693e7a5d
mov edi, esi
xor eax, eax
xor ebp, ebp
test bl, 1
je 0x693e7746
mov ecx, dword [esp + 0x10]
add ecx, edi
add ecx, 0x8192
movzx ecx, word [ecx + eax*2]
test cx, cx
je 0x693e7746
mov word [esp + ebp*4 + 0x4b8], cx
mov word [esp + ebp*4 + 0x4ba], ax
inc ebp
lea eax, [esp + 0x938]
push 0x800
push 0
push eax
call fcn.693e84f0
add esp, 0xc
test ebp, ebp
sete byte [esp + 8]
je 0x693e7802
mov ecx, ebp
xor eax, eax
cmp ebp, 1
je 0x693e77bf
mov ecx, ebp
and ecx, 0xfffffffe
xor eax, eax
nop word [eax + eax]
movzx edx, word [esp + eax*4 + 0x4b8]
movzx esi, dl
inc dword [esp + esi*4 + 0x938]
shr edx, 8
inc dword [esp + edx*4 + 0xd38]
movzx edx, word [esp + eax*4 + 0x4bc]
movzx esi, dl
inc dword [esp + esi*4 + 0x938]
shr edx, 8
inc dword [esp + edx*4 + 0xd38]
add eax, 2
cmp ecx, eax
jne 0x693e7780
mov ecx, ebp
test cl, 1
je 0x693e77e2
movzx eax, word [esp + eax*4 + 0x4b8]
movzx ecx, al
inc dword [esp + ecx*4 + 0x938]
shr eax, 8
inc dword [esp + eax*4 + 0xd38]
mov eax, dword [esp + 0xd38]
jmp 0x693e780b
lea eax, [esp + 0x938]
push 0x800
push 0
push eax
call fcn.693e84f0
add esp, 0xc
xor ebp, ebp
mov byte [esp + 8], 1
xor eax, eax
xor ecx, ecx
cmp eax, ebp
sete cl
mov eax, 2
sub eax, ecx
mov dword [esp + 0x20], eax
lea eax, [ebp - 1]
mov dword [esp + 0x14], eax
mov dword [esp + 4], ebp
and ebp, 0xfffffffe
mov dword [esp + 0x24], ebp
lea ebp, [esp + 0x4b8]
lea eax, [esp + 0x1138]
xor ecx, ecx
xor edx, edx
jmp 0x693e786a
mov eax, edx
and eax, 1
xor edx, 1
lea edx, [edx + eax*2]
add ecx, 8
mov eax, esi
cmp edx, dword [esp + 0x20]
jae 0x693e7976
mov esi, ebp
mov dword [esp], eax
mov eax, edx
shl eax, 0xa
add eax, esp
add eax, 0x938
mov ebp, 3
xor edi, edi
nop word cs:[eax + eax]
mov dword [esp + ebp*4 + 0xac], edi
add edi, dword [eax + ebp*4 - 0xc]
mov dword [esp + ebp*4 + 0xb0], edi
add edi, dword [eax + ebp*4 - 8]
mov dword [esp + ebp*4 + 0xb4], edi
add edi, dword [eax + ebp*4 - 4]
mov dword [esp + ebp*4 + 0xb8], edi
add edi, dword [eax + ebp*4]
add ebp, 4
cmp ebp, 0x103
jne 0x693e7890
cmp byte [esp + 8], 0
mov ebp, dword [esp]
jne 0x693e7850
cmp dword [esp + 0x14], 0
je 0x693e7940
xor eax, eax
nop dword [eax]
movzx ebx, word [esi + eax*4]
shr ebx, cl
movzx edi, bl
mov ebx, dword [esp + edi*4 + 0xb8]
lea ebp, [ebx + 1]
mov dword [esp + edi*4 + 0xb8], ebp
mov edi, dword [esi + eax*4]
mov ebp, dword [esp]
mov dword [ebp + ebx*4], edi
movzx ebx, word [esi + eax*4 + 4]
shr ebx, cl
movzx edi, bl
mov ebx, dword [esp + edi*4 + 0xb8]
lea ebp, [ebx + 1]
mov dword [esp + edi*4 + 0xb8], ebp
mov ebp, dword [esp]
mov edi, dword [esi + eax*4 + 4]
mov dword [ebp + ebx*4], edi
add eax, 2
cmp dword [esp + 0x24], eax
jne 0x693e78e0
test byte [esp + 4], 1
je 0x693e7850
jmp 0x693e794d
xor eax, eax
test byte [esp + 4], 1
je 0x693e7850
movzx ebx, word [esi + eax*4]
shr ebx, cl
movzx edi, bl
mov ebx, dword [esp + edi*4 + 0xb8]
lea ebp, [ebx + 1]
mov dword [esp + edi*4 + 0xb8], ebp
mov ebp, dword [esp]
mov eax, dword [esi + eax*4]
mov dword [ebp + ebx*4], eax
jmp 0x693e7850
cmp dword [esp + 4], 0
je 0x693e7f29
mov ecx, dword [esp + 4]
cmp ecx, 1
jne 0x693e7997
mov eax, dword [esp]
mov word [eax], 1
jmp 0x693e7c6e
mov ebp, dword [esp]
movzx eax, word [ebp + 4]
add word [ebp], ax
cmp ecx, 3
jl 0x693e7ac5
mov eax, 2
mov edx, ecx
mov ecx, 2
sub ecx, edx
xor esi, esi
mov edx, 1
jmp 0x693e79f8
movzx ebx, word [ebp + esi*4]
add word [ebp + edx*4], bx
mov edi, esi
mov word [ebp + esi*4], dx
and esi, 1
xor edi, 1
lea esi, [edi + esi*2]
lea edi, [ecx + edx]
inc edi
inc edx
cmp edi, 1
je 0x693e7ad1
movzx edi, word [ebp + esi*4]
cmp eax, dword [esp + 4]
jge 0x693e7a0d
movzx ebx, word [ebp + eax*4]
cmp di, bx
jae 0x693e7a20
mov word [ebp + edx*4], di
mov word [ebp + esi*4], dx
inc esi
cmp eax, dword [esp + 4]
jge 0x693e79d0
jmp 0x693e7a2c
inc eax
mov word [ebp + edx*4], bx
cmp eax, dword [esp + 4]
jge 0x693e79d0
cmp esi, edx
jge 0x693e7a50
movzx ebx, word [ebp + esi*4]
movzx edi, word [ebp + eax*4]
cmp bx, di
jb 0x693e79d5
jmp 0x693e7a55
movzx edi, word [ebp + eax*4]
inc eax
add word [ebp + edx*4], di
jmp 0x693e79ea
mov ecx, ebx
and ecx, 0xfffffffe
mov eax, dword [esp + 0x10]
mov edi, esi
lea edx, [eax + esi]
add edx, 0x8194
xor eax, eax
xor ebp, ebp
jmp 0x693e7a8b
add eax, 2
cmp ecx, eax
je 0x693e771b
movzx esi, word [edx + eax*2 - 2]
test si, si
je 0x693e7aa6
mov word [esp + ebp*4 + 0x4b8], si
mov word [esp + ebp*4 + 0x4ba], ax
inc ebp
movzx esi, word [edx + eax*2]
test si, si
je 0x693e7a80
mov word [esp + ebp*4 + 0x4b8], si
lea esi, [eax + 1]
mov word [esp + ebp*4 + 0x4ba], si
inc ebp
jmp 0x693e7a80
mov word [ebp + ecx*4 - 8], 0
jmp 0x693e7b55
mov eax, dword [esp + 4]
lea edx, [eax - 2]
mov word [ebp + eax*4 - 8], 0
lea ecx, [eax - 3]
mov eax, ecx
and edx, 3
je 0x693e7b04
mov eax, ecx
nop dword [eax + eax]
movzx esi, word [ebp + eax*4]
movzx esi, word [ebp + esi*4]
inc esi
mov word [ebp + eax*4], si
dec eax
dec edx
jne 0x693e7af0
cmp ecx, 3
jb 0x693e7b55
inc eax
nop word [eax + eax]
movzx ecx, word [ebp + eax*4 - 4]
movzx ecx, word [ebp + ecx*4]
inc ecx
mov word [ebp + eax*4 - 4], cx
movzx ecx, word [ebp + eax*4 - 8]
movzx ecx, word [ebp + ecx*4]
inc ecx
mov word [ebp + eax*4 - 8], cx
movzx ecx, word [ebp + eax*4 - 0xc]
movzx ecx, word [ebp + ecx*4]
inc ecx
mov word [ebp + eax*4 - 0xc], cx
movzx ecx, word [ebp + eax*4 - 0x10]
movzx ecx, word [ebp + ecx*4]
inc ecx
mov word [ebp + eax*4 - 0x10], cx
add eax, 0xfffffffc
jne 0x693e7b10
mov ecx, dword [esp + 4]
mov eax, ecx
or eax, 0xfffffffd
and ecx, 0xfffffffd
add ecx, eax
inc ecx
mov esi, 1
xor edx, edx
mov eax, dword [esp + 0x14]
jmp 0x693e7ba4
mov edi, ebx
or edi, 2
mov esi, ebx
and esi, 2
imul edi, esi
and ebx, 0x7ffffffd
xor esi, 2
imul esi, ebx
add esi, edi
inc edx
test esi, esi
jle 0x693e7c63
test ecx, ecx
js 0x693e7bd0
lea ebx, [ecx + 1]
xor edi, edi
nop dword [eax]
mov ebp, ebx
mov ebx, dword [esp]
movzx ebx, word [ebx + ecx*4]
cmp edx, ebx
jne 0x693e7be0
inc edi
dec ecx
mov ebx, ebp
cmp ebp, edi
jne 0x693e7bb0
mov ecx, 0xffffffff
jmp 0x693e7be2
xor ebx, ebx
jmp 0x693e7be2
mov ebx, edi
mov ebp, esi
sub ebp, ebx
jle 0x693e7b80
mov edi, ebx
not edi
add edi, esi
and ebp, 3
je 0x693e7c34
mov dword [esp + 8], edi
mov dword [esp + 0x24], ebx
mov edi, dword [esp]
lea ebx, [edi + eax*4]
xor edi, edi
nop word cs:[eax + eax]
mov word [ebx], dx
inc edi
add ebx, 0xfffffffc
cmp ebp, edi
jne 0x693e7c10
sub esi, edi
sub eax, edi
mov ebp, dword [esp]
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 8]
cmp edi, 3
jae 0x693e7c40
jmp 0x693e7b80
mov ebp, dword [esp]
cmp edi, 3
jb 0x693e7b80
mov word [ebp + eax*4], dx
mov word [ebp + eax*4 - 4], dx
mov word [ebp + eax*4 - 8], dx
mov word [ebp + eax*4 - 0xc], dx
add eax, 0xfffffffc
add esi, 0xfffffffc
cmp esi, ebx
jg 0x693e7c40
jmp 0x693e7b80
cmp dword [esp + 4], 0
jle 0x693e7f29
mov eax, dword [esp + 4]
and eax, 3
xor ecx, ecx
cmp dword [esp + 0x14], 3
mov edi, dword [esp]
jb 0x693e7cba
mov edx, dword [esp + 4]
and edx, 0xfffffffc
xor ecx, ecx
nop word [eax + eax]
movzx esi, word [edi + ecx*4]
inc dword [esp + esi*4 + 0x34]
movzx esi, word [edi + ecx*4 + 4]
inc dword [esp + esi*4 + 0x34]
movzx esi, word [edi + ecx*4 + 8]
inc dword [esp + esi*4 + 0x34]
movzx esi, word [edi + ecx*4 + 0xc]
inc dword [esp + esi*4 + 0x34]
add ecx, 4
cmp edx, ecx
jne 0x693e7c90
test eax, eax
je 0x693e7cdd
lea ecx, [edi + ecx*4]
xor edx, edx
nop word cs:[eax + eax]
movzx esi, word [ecx + edx*4]
inc dword [esp + esi*4 + 0x34]
inc edx
cmp eax, edx
jne 0x693e7cd0
cmp dword [esp + 4], 2
jl 0x693e7f29
mov ebx, dword [esp + 0x15d0]
mov edx, ebx
xor edx, 1
lea eax, [ebx + ebx]
mov esi, eax
and esi, 2
lea ecx, [esi + edx]
cmp ecx, 0x20
jg 0x693e7d1e
mov ecx, dword [esp + ebx*4 + 0x34]
add edx, esi
dec edx
nop dword [eax + eax]
add ecx, dword [esp + edx*4 + 0x38]
mov dword [esp + ebx*4 + 0x34], ecx
inc edx
cmp edx, 0x20
jl 0x693e7d10
test ebx, ebx
jle 0x693e7eda
xor esi, esi
mov ebp, ebx
cmp ebx, 8
jb 0x693e7e4b
mov ecx, ebx
and ecx, 0xfffffff8
mov ebp, ebx
and ebp, 7
movd xmm0, ebx
pshufd xmm0, xmm0, 0
movdqa xmm1, xmmword [0x69434890]
movdqu xmmword [esp + 0x24], xmm0
paddd xmm1, xmm0
mov edx, ecx
neg edx
lea esi, [esp + ebx*4]
add esi, 0x28
pxor xmm2, xmm2
xor ebx, ebx
movdqa xmm5, xmmword [0x694348b0]
pxor xmm3, xmm3
nop word cs:[eax + eax]
movdqu xmm6, xmmword [esi + ebx*4]
pshufd xmm4, xmm6, 0x1b
movdqu xmm0, xmmword [esp + 0x24]
psubd xmm0, xmm1
movdqa xmm7, xmm0
pslld xmm0, 0x17
paddd xmm0, xmm5
cvttps2dq xmm0, xmm0
pmuludq xmm4, xmm0
pshufd xmm6, xmm6, 0x4e
pshufd xmm0, xmm0, 0xf5
pmuludq xmm0, xmm6
pshufd xmm4, xmm4, 0xe8
pshufd xmm0, xmm0, 0xe8
punpckldq xmm4, xmm0
movdqu xmm0, xmmword [esi + ebx*4 - 0x10]
paddd xmm2, xmm4
pshufd xmm4, xmm0, 0x1b
psubd xmm7, xmmword [0x694348a0]
pslld xmm7, 0x17
paddd xmm7, xmm5
cvttps2dq xmm6, xmm7
pmuludq xmm4, xmm6
pshufd xmm0, xmm0, 0x4e
pshufd xmm6, xmm6, 0xf5
pmuludq xmm6, xmm0
pshufd xmm0, xmm4, 0xe8
pshufd xmm4, xmm6, 0xe8
punpckldq xmm0, xmm4
paddd xmm3, xmm0
paddd xmm1, xmmword [0x694348c0]
add ebx, 0xfffffff8
cmp edx, ebx
jne 0x693e7d80
paddd xmm3, xmm2
pshufd xmm0, xmm3, 0xee
paddd xmm0, xmm3
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd edx, xmm1
mov esi, edx
mov ebx, dword [esp + 0x15d0]
cmp ecx, ebx
je 0x693e7ecf
mov edx, dword [esp + ebp*4 + 0x34]
mov ecx, ebx
sub ecx, ebp
shl edx, cl
add edx, esi
cmp ebp, 2
jb 0x693e7ecf
lea esi, [ebp - 1]
mov edi, dword [esp + ebp*4 + 0x30]
mov ecx, ebx
sub ecx, esi
shl edi, cl
add edx, edi
cmp esi, 2
jb 0x693e7ecf
lea esi, [ebp - 2]
mov edi, dword [esp + ebp*4 + 0x2c]
mov ecx, ebx
sub ecx, esi
shl edi, cl
add edx, edi
cmp esi, 2
jb 0x693e7ecf
lea esi, [ebp - 3]
mov edi, dword [esp + ebp*4 + 0x28]
mov ecx, ebx
sub ecx, esi
shl edi, cl
add edx, edi
cmp esi, 2
jb 0x693e7ecf
lea esi, [ebp - 4]
mov edi, dword [esp + ebp*4 + 0x24]
mov ecx, ebx
sub ecx, esi
shl edi, cl
add edx, edi
cmp esi, 2
jb 0x693e7ecf
lea esi, [ebp - 5]
mov edi, dword [esp + ebp*4 + 0x20]
mov ecx, ebx
sub ecx, esi
shl edi, cl
add edx, edi
cmp esi, 2
jb 0x693e7ecf
mov esi, dword [esp + ebp*4 + 0x1c]
add ebp, 0xfffffffa
mov ecx, ebx
sub ecx, ebp
shl esi, cl
add edx, esi
mov esi, 1
mov ecx, ebx
shl esi, cl
jmp 0x693e7ee7
mov esi, 1
mov ecx, ebx
shl esi, cl
xor edx, edx
jmp 0x693e7eeb
cmp edx, esi
je 0x693e7f29
mov ebx, dword [esp + 0x15d0]
dec dword [esp + ebx*4 + 0x34]
mov ecx, eax
nop dword [eax + eax]
lea edi, [ebx - 1]
test edi, edi
jle 0x693e7f26
mov ebp, dword [esp + ebx*4 + 0x30]
add ecx, 0xfffffffe
mov ebx, edi
test ebp, ebp
je 0x693e7f00
dec ebp
mov dword [esp + edi*4 + 0x34], ebp
xor edi, 1
and ecx, 2
add ecx, edi
add dword [esp + ecx*4 + 0x34], 2
dec edx
jmp 0x693e7ee7
mov eax, dword [esp + 0xc]
shl eax, 5
mov edi, dword [esp + 0x18]
mov ebp, eax
add eax, edi
add eax, 0x8f12
push 0x120
push 0
push eax
call fcn.693e84f0
add esp, 0xc
mov eax, dword [esp + 0x10]
adc byte [ecx + 0x5f801fe], cl
push edx
mov byte [eax], al
add byte [eax + 0x40], ch
add al, byte [eax]
add byte [edx], ch