Function at 0x100abe10
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 8
mov ecx, dword [ebp + 8]
xor esi, esi
mov edi, dword [ecx + 8]
mov eax, dword [ecx + 4]
mov ecx, 0
cmp edi, 3
jb 0x100abe62
movzx edx, byte [edi + eax - 2]
xor esi, esi
mov ecx, edx
and cl, 0xf0
cmp cl, 0xa0
mov ecx, 0
jne 0x100abe62
xor esi, esi
cmp byte [edi + eax - 3], 0xed
jne 0x100abe62
movzx esi, byte [edi + eax - 1]
and edx, 0xf
mov cl, 1
shl edx, 0x10
and esi, 0x3f
shl esi, 0xa
or esi, edx
mov edx, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
cmp edx, 3
mov dword [ebp - 0x10], ebx
jb 0x100abf16
cmp byte [ebx], 0xed
jne 0x100abf1a
mov edx, dword [ebp + 0xc]
movzx ebx, byte [edx + 1]
mov edx, ebx
and dl, 0xf0
cmp dl, 0xb0
setne dl
xor cl, 1
or cl, dl
jne 0x100abf1a
mov eax, dword [ebp + 0xc]
mov ecx, ebx
cmp edi, 3
movzx eax, byte [eax + 2]
jb 0x100abeb1
mov ebx, dword [ebp + 8]
add edi, 0xfffffffd
mov dword [ebx + 8], edi
mov ebx, ecx
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0x10]
and eax, 0x3f
mov dword [ebp - 0x14], eax
shl ebx, 6
mov ecx, dword [ecx]
lea eax, [edx + 1]
sub ecx, edi
cmp ecx, eax
jb 0x100abfd4
or esi, dword [ebp - 0x14]
and ebx, 0x3c0
add dword [ebp - 0x10], 3
or esi, ebx
add esi, 0x10000
push esi
mov esi, dword [ebp + 8]
push esi
call sym.std::sys_common::wtf8::Wtf8Buf::push_code_point_unchecked::h0e08181596604cac
add esp, 8
mov edx, dword [ebp + 0x10]
mov eax, dword [esi]
mov edi, dword [esi + 8]
add edx, 0xfffffffd
sub eax, edi
cmp eax, edx
jb 0x100abfeb
mov eax, dword [esi + 4]
add eax, edi
push edx
push dword [ebp - 0x10]
jmp 0x100abf9e
test edx, edx
je 0x100abf8a
mov ecx, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
add ecx, esi
jmp 0x100abf36
add esi, 2
cmp edx, ecx
cmovne edx, esi
nop dword [eax]
cmp edx, ecx
mov esi, edx
je 0x100abf8a
movzx ebx, byte [esi]
lea edx, [esi + 1]
test bl, bl
jns 0x100abf30
cmp bl, 0xe0
jb 0x100abf24
cmp bl, 0xed
jne 0x100abf62
cmp edx, ecx
je 0x100abf8a
lea edx, [esi + 2]
cmp edx, ecx
je 0x100abf8a
cmp byte [esi + 1], 0x9f
ja 0x100abf83
add esi, 3
mov edx, esi
jmp 0x100abf30
add esi, 2
cmp edx, ecx
cmove esi, edx
xor edx, edx
cmp esi, ecx
setne dl
add edx, esi
cmp bl, 0xf0
jb 0x100abf30
xor ebx, ebx
cmp edx, ecx
setne bl
add edx, ebx
jmp 0x100abf30
mov ecx, dword [ebp + 8]
mov byte [ecx + 0xc], 0
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 0x10]
mov ecx, dword [esi]
sub ecx, edi
cmp ecx, edx
jb 0x100abfb6
add eax, edi
push edx
push dword [ebp + 0xc]
push eax
mov ebx, edx
call sub.msvcrt.dll_memcpy
add esp, 0xc
add edi, ebx
mov dword [esi + 8], edi
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, edi
mov ecx, esi
push 1
push 1
push dword [ebp + 0x10]
call sym.alloc::raw_vec::RawVecInner_LT_A_GT_::reserve::do_reserve_and_handle::h35901dc27c78f3f2
mov edx, dword [ebp + 0x10]
add esp, 0xc
mov eax, dword [esi + 4]
mov edi, dword [esi + 8]
jmp 0x100abf98
mov ecx, dword [ebp + 8]
mov edx, edi
push 1
push 1
push eax
call sym.alloc::raw_vec::RawVecInner_LT_A_GT_::reserve::do_reserve_and_handle::h35901dc27c78f3f2
add esp, 0xc
jmp 0x100abed1
mov ebx, edx
mov edx, edi
mov ecx, esi
push 1
push 1
push ebx
call sym.alloc::raw_vec::RawVecInner_LT_A_GT_::reserve::do_reserve_and_handle::h35901dc27c78f3f2
mov edx, ebx
add esp, 0xc
mov edi, dword [esi + 8]
jmp 0x100abf08