Function at 0x10020a31
Capabilities:
Encode data using xor

Disassembly:
push 0x5c
mov eax, 0x10077607
call fcn.1004605f
mov esi, ecx
mov al, byte [esi + 0x20]
xor ecx, ecx
push 7
pop ebx
test al, al
je 0x10020bfc
mov eax, dword [esi + 0x24]
test eax, eax
jle 0x10020a5a
dec eax
mov dword [esi + 0x24], eax
mov edi, dword [esi + 0x24]
test edi, edi
js 0x10020bf0
mov eax, edi
mov dword [ebp - 0x14], 0xf
cdq
mov ecx, 0xe10
idiv ecx
push 0x3c
mov eax, edx
cdq
pop ecx
idiv ecx
push 0x3c
mov ecx, eax
mov eax, edi
cdq
pop edi
idiv edi
xor eax, eax
mov dword [ebp - 0x18], eax
mov byte [ebp - 0x28], al
push 0xa
pop edi
mov dword [ebp - 4], eax
push edx
push ecx
cmp ecx, edi
jae 0x10020af8
cmp edx, edi
jae 0x10020ad3
mov cl, 0x63
mov word [ebp - 0x34], 0x5363
mov byte [ebp - 0x32], 0x46
mov byte [ebp - 0x31], bl
mov word [ebp - 0x30], 0x5359
mov byte [ebp - 0x2e], 0x46
mov byte [ebp - 0x2d], bl
mov byte [ebp - 0x2c], al
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, ebx
jae 0x10020acd
mov cl, byte [ebp - 0x34]
jmp 0x10020abf
mov byte [ebp - 0x2c], 0
jmp 0x10020b46
mov cl, 0x33
mov dword [ebp - 0x34], 0x57160333
mov dword [ebp - 0x30], 0x571609
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10020af2
mov cl, byte [ebp - 0x34]
jmp 0x10020ae3
mov byte [ebp - 0x2d], 0
jmp 0x10020b46
cmp edx, edi
jae 0x10020b21
push 0x3c
pop ecx
mov byte [ebp - 0x34], cl
mov dword [ebp - 0x33], 0xc065819
mov word [ebp - 0x2f], 0x5819
mov byte [ebp - 0x2d], al
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10020af2
mov cl, byte [ebp - 0x34]
jmp 0x10020b12
mov cl, 0x18
mov dword [ebp - 0x34], 0x227c3d18
mov word [ebp - 0x30], 0x7c3d
mov byte [ebp - 0x2e], al
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10020b42
mov cl, byte [ebp - 0x34]
jmp 0x10020b33
mov byte [ebp - 0x2e], 0
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10001f6a
lea eax, [ebp - 0x50]
push eax
call fcn.10007414
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10003ac6
push 0
push 1
lea ecx, [ebp - 0x50]
call fcn.10001e1f
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [str.8kLYVQV_]
cmovae eax, dword [ebp - 0x28]
xor ecx, ecx
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x654b1d63
mov byte [ebp - 0x3c], 0
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x13
jb 0x10020b99
sub esp, 0x18
mov byte [ebp - 0x3c], 0
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10001f6a
lea eax, [ebp - 0x68]
push eax
call fcn.10007414
add esp, 0x20
mov byte [ebp - 4], 1
mov edx, eax
mov ecx, dword [esi + 8]
call fcn.10010c45
push 0
push 1
lea ecx, [ebp - 0x68]
call fcn.10001e1f
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
push 0
push 1
call fcn.10001e1f
xor ecx, ecx
cmp dword [esi + 0x24], 0
jg 0x10020bfc
mov byte [esi + 0x20], cl
mov dword [esi + 0x24], ecx
mov al, byte [esi + 0x21]
test al, al
je 0x10020dc0
movzx eax, word [esi + 0x28]
test ax, ax
jle 0x10020c15
dec eax
mov word [esi + 0x28], ax
movzx edi, word [esi + 0x28]
mov eax, edi
test ax, ax
js 0x10020daf
cwde
mov ecx, 0xe10
cdq
idiv ecx
push 0x3c
mov eax, edx
mov dword [ebp - 0x14], 0xf
cdq
pop ecx
idiv ecx
push 0x3c
movzx ecx, ax
mov eax, edi
cwde
cdq
pop edi
idiv edi
movzx eax, dx
xor edx, edx
mov dword [ebp - 0x18], edx
mov byte [ebp - 0x28], dl
push 0xa
pop edi
mov dword [ebp - 4], 2
push eax
push ecx
cmp cx, di
jae 0x10020cb9
cmp ax, di
mov eax, edx
jae 0x10020c92
push 0x13
pop ecx
mov byte [ebp - 0x34], cl
mov dword [ebp - 0x33], 0x29773623
mov dword [ebp - 0x2f], 0x773623
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, ebx
jae 0x10020c8d
mov cl, byte [ebp - 0x34]
jmp 0x10020c7f
mov byte [ebp - 0x2c], dl
jmp 0x10020d09
mov byte [ebp - 0x34], bl
mov dword [ebp - 0x33], 0x3d632237
mov word [ebp - 0x2f], 0x6322
mov byte [ebp - 0x2d], dl
xor byte [ebp + eax - 0x33], bl
inc eax
cmp eax, 6
jae 0x10020cb4
mov bl, byte [ebp - 0x34]
jmp 0x10020ca5
mov byte [ebp - 0x2d], dl
jmp 0x10020d09
cmp ax, di
mov eax, edx
jae 0x10020ce5
push 0x4b
pop ecx
mov byte [ebp - 0x34], cl
mov dword [ebp - 0x33], 0x7b712f6e
mov word [ebp - 0x2f], 0x2f6e
mov byte [ebp - 0x2d], dl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10020cb4
mov cl, byte [ebp - 0x34]
jmp 0x10020cd6
mov cl, 0x20
mov dword [ebp - 0x34], 0x1a440520
mov word [ebp - 0x30], 0x4405
mov byte [ebp - 0x2e], dl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10020d06
mov cl, byte [ebp - 0x34]
jmp 0x10020cf7
mov byte [ebp - 0x2e], dl
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10001f6a
lea eax, [ebp - 0x68]
push eax
call fcn.10007414
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10003ac6
xor ebx, ebx
lea ecx, [ebp - 0x68]
push ebx
push 1
call fcn.10001e1f
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [0x1008f2f0]
mov ecx, ebx
cmovae eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x26700e75
mov word [ebp - 0x3c], 8
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x14
jb 0x10020d5f
sub esp, 0x18
mov byte [ebp - 0x3b], bl
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10001f6a
lea eax, [ebp - 0x68]
push eax
call fcn.10007414
add esp, 0x20
mov byte [ebp - 4], 3
mov edx, eax
mov ecx, dword [esi + 0xc]
call fcn.10010c45
push ebx
push 1
lea ecx, [ebp - 0x68]
call fcn.10001e1f
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.10001e1f
jmp 0x10020db1
xor ebx, ebx
cmp word [esi + 0x28], bx
jg 0x10020dc0
xor eax, eax
mov byte [esi + 0x21], bl
mov word [esi + 0x28], ax
call fcn.10046009
ret