Function at 0x809c00
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
push 0x2d6f
call sym.adb.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x80a158
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x2c]
mov edx, ebx
neg edx
and edx, 0xf
mov edi, eax
neg edi
and edi, 0x1f
lea ebp, [eax + edi]
add ebp, 0x15c0
lea esi, [ecx + 0x2bc]
mov dword [esp], esi
cmp ebp, esi
jae 0x809c5f
lea ebx, [eax + edi]
add ebx, 0x1b38
xor esi, esi
cmp ebx, ecx
mov ebx, dword [esp + 0x2c]
ja 0x809ce9
xor esi, esi
pxor xmm0, xmm0
movdqa xmm1, xmmword [0x93f550]
movdqa xmm2, xmmword [0x93f560]
pcmpeqd xmm3, xmm3
movdqa xmm4, xmmword [0x93f570]
nop word cs:[eax + eax]
movq xmm5, qword [ecx + esi]
punpcklbw xmm5, xmm0
movdqa xmm6, xmm5
pmulhw xmm6, xmm1
pmullw xmm6, xmm2
paddw xmm6, xmm5
movdqa xmm5, xmm6
psraw xmm5, 1
pand xmm5, xmm6
paddw xmm5, xmm3
pand xmm5, xmm6
movdqa xmm6, xmm5
psrlw xmm6, 1
pxor xmm6, xmm4
paddw xmm6, xmm3
por xmm6, xmm5
movdqu xmmword [ebp + esi*2], xmm6
add esi, 8
cmp esi, 0x2b8
jne 0x809c90
mov esi, 0x2b8
add ebx, edx
mov dword [esp + 0xc], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], edi
lea ebx, [eax + edi]
nop word [eax + eax]
movzx edx, byte [ecx + esi]
imul edi, edx, 0x5555
shr edi, 0x10
lea edi, [edi + edi*2]
sub edx, edi
movsx edi, dx
sar edi, 1
and edi, edx
dec edi
and edi, edx
movzx edx, di
mov edi, edx
shr edi, 1
xor edi, 1
dec edi
or edi, edx
mov word [ebp + esi*2], di
inc esi
cmp esi, 0x2bc
jne 0x809d00
mov eax, dword [esp + 4]
mov edx, dword [esp + 8]
mov dword [eax + edx + 0x1b3c], 0
mov dword [eax + edx + 0x1b38], 0
lea esi, [ebx + 0x1b40]
add ecx, 0x578
cmp esi, ecx
jae 0x809d78
add edx, eax
add edx, 0x20b8
xor ecx, ecx
cmp dword [esp], edx
jb 0x809df8
xor ecx, ecx
pxor xmm0, xmm0
movdqa xmm1, xmmword [0x93f550]
movdqa xmm2, xmmword [0x93f560]
pcmpeqd xmm3, xmm3
movdqa xmm4, xmmword [0x93f570]
mov eax, dword [esp]
nop dword [eax]
movq xmm5, qword [eax + ecx]
punpcklbw xmm5, xmm0
movdqa xmm6, xmm5
pmulhw xmm6, xmm1
pmullw xmm6, xmm2
paddw xmm6, xmm5
movdqa xmm5, xmm6
psraw xmm5, 1
pand xmm5, xmm6
paddw xmm5, xmm3
pand xmm5, xmm6
movdqa xmm6, xmm5
psrlw xmm6, 1
pxor xmm6, xmm4
paddw xmm6, xmm3
por xmm6, xmm5
movdqu xmmword [esi + ecx*2], xmm6
add ecx, 8
cmp ecx, 0x2b8
jne 0x809da0
mov ecx, 0x2b8
mov eax, dword [esp]
nop dword [eax + eax]
movzx edx, byte [eax + ecx]
imul edi, edx, 0x5555
shr edi, 0x10
lea edi, [edi + edi*2]
sub edx, edi
movsx edi, dx
sar edi, 1
and edi, edx
dec edi
and edi, edx
movzx edx, di
mov edi, edx
shr edi, 1
xor edi, 1
dec edi
or edi, edx
mov word [esi + ecx*2], di
inc ecx
cmp ecx, 0x2bc
jne 0x809e00
mov dword [ebx + 0x20bc], 0
mov dword [ebx + 0x20b8], 0
lea ecx, [ebx + 0x20c0]
mov edx, ebp
call fcn.0080a190
lea edi, [ebx + 0x2640]
lea edx, [ebx + 0xb00]
mov ecx, ebx
push 0x58
push dword [esp + 0x10]
push esi
call fcn.0080bc70
add esp, 0xc
movdqa xmm0, xmmword [ebx + 0x570]
xor eax, eax
nop
movdqa xmm1, xmmword [ebx + eax + 0x580]
movdqa xmm2, xmm1
pslldq xmm2, 6
psrldq xmm0, 0xa
por xmm0, xmm2
paddw xmm0, xmmword [ebx + eax]
movdqa xmmword [ebx + eax + 0x2640], xmm0
add eax, 0x10
movdqa xmm0, xmm1
cmp eax, 0x580
jne 0x809e80
mov word [edi + 0x57e], 0
mov dword [edi + 0x57a], 0
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
add eax, ecx
add eax, 0x2670
xor ecx, ecx
nop dword [eax + eax]
movdqu xmm0, xmmword [eax + ecx*2 - 0x5b0]
movdqu xmm1, xmmword [eax + ecx*2 - 0x5a0]
movdqu xmm2, xmmword [eax + ecx*2 - 0x30]
paddw xmm2, xmm0
movdqu xmm0, xmmword [eax + ecx*2 - 0x20]
paddw xmm0, xmm1
movdqu xmmword [eax + ecx*2 - 0x30], xmm2
movdqu xmmword [eax + ecx*2 - 0x20], xmm0
cmp ecx, 0x2a0
je 0x809f4f
movdqu xmm0, xmmword [eax + ecx*2 - 0x590]
movdqu xmm1, xmmword [eax + ecx*2 - 0x580]
movdqu xmm2, xmmword [eax + ecx*2 - 0x10]
paddw xmm2, xmm0
movdqu xmm0, xmmword [eax + ecx*2]
paddw xmm0, xmm1
movdqu xmmword [eax + ecx*2 - 0x10], xmm2
movdqu xmmword [eax + ecx*2], xmm0
add ecx, 0x20
jmp 0x809ee0
movzx eax, word [ebx + 0x2620]
movzx ecx, word [ebx + 0x2622]
add word [ebx + 0x2ba0], ax
add word [ebx + 0x2ba2], cx
movzx eax, word [ebx + 0x2624]
add word [ebx + 0x2ba4], ax
movzx eax, word [ebx + 0x2626]
add word [ebx + 0x2ba6], ax
movzx eax, word [ebx + 0x2628]
add word [ebx + 0x2ba8], ax
movzx eax, word [ebx + 0x262a]
add word [ebx + 0x2baa], ax
movzx eax, word [ebx + 0x262c]
add word [ebx + 0x2bac], ax
movzx eax, word [ebx + 0x262e]
add word [ebx + 0x2bae], ax
movzx eax, word [ebx + 0x2630]
add word [ebx + 0x2bb0], ax
movzx eax, word [ebx + 0x2632]
add word [ebx + 0x2bb2], ax
movzx eax, word [ebx + 0x2634]
add word [ebx + 0x2bb4], ax
movzx eax, word [ebx + 0x2636]
add word [ebx + 0x2bb6], ax
movzx eax, word [ebx + 0x2638]
add word [ebx + 0x2bb8], ax
mov ecx, dword [esp + 0x24]
mov edx, edi
call fcn.0080a800
lea edi, [ebx + 0x2c30]
mov eax, 0xffffff74
movdqa xmm0, xmmword [0x93f580]
movdqa xmm1, xmmword [0x93f590]
movdqa xmm2, xmmword [0x93f5a0]
pxor xmm3, xmm3
nop word [eax + eax]
movzx edx, word [ebp]
and edx, 3
mov ecx, edx
shr ecx, 1
xor ecx, edx
movq xmm4, qword [ebp + 2]
pand xmm4, xmm0
movdqa xmm5, xmm4
psrlw xmm5, 1
pxor xmm5, xmm4
pmullw xmm5, xmm1
pand xmm5, xmm2
packuswb xmm5, xmm5
punpckldq xmm5, xmm3
psadbw xmm5, xmm3
movd edx, xmm5
add dl, cl
mov byte [edi + eax + 0x8c], dl
add ebp, 0xa
inc eax
jne 0x80a040
lea ebp, [ebx + 0x2cbc]
mov eax, 0xffffff74
pxor xmm3, xmm3
nop dword [eax]
movzx edx, word [esi]
and edx, 3
mov ecx, edx
shr ecx, 1
xor ecx, edx
movq xmm4, qword [esi + 2]
pand xmm4, xmm0
movdqa xmm5, xmm4
psrlw xmm5, 1
pxor xmm5, xmm4
pmullw xmm5, xmm1
pand xmm5, xmm2
packuswb xmm5, xmm5
punpckldq xmm5, xmm3
psadbw xmm5, xmm3
movd edx, xmm5
add dl, cl
mov byte [ebp + eax + 0x8c], dl
add esi, 0xa
inc eax
jne 0x80a0a0
add ebx, 0x2bc0
push ebx
call sym.adb.exe_SHA256_Init
add esp, 4
push 0xb
push 0x93f670
push ebx
call sym.adb.exe_SHA256_Update
add esp, 0xc
push 0x8c
push edi
push ebx
call sym.adb.exe_SHA256_Update
add esp, 0xc
push 0x8c
push ebp
push ebx
call sym.adb.exe_SHA256_Update
add esp, 0xc
push 0x472
push dword [esp + 0x28]
push ebx
call sym.adb.exe_SHA256_Update
add esp, 0xc
push ebx
push dword [esp + 0x2c]
call sym.adb.exe_SHA256_Final
add esp, 8
push dword [esp + 4]
call sym.adb.exe_OPENSSL_free
add esp, 4
mov eax, 1
jmp 0x80a17b
push 0x472
push 0
push dword [esp + 0x2c]
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
push 0x20
push dword [esp + 0x2c]
call sym.adb.exe_RAND_bytes
add esp, 8
xor eax, eax
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret