Function at 0x100d2210
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x1c
mov edi, dword [ebp + 0x10]
test edi, edi
mov dword [ebp - 0x1c], edi
js 0x100d24b5
mov esi, dword [ebp + 0xc]
xor ebx, ebx
test edi, edi
je 0x100d23a9
mov eax, dword [0x1017b554]
movzx eax, byte [eax]
push 1
push edi
call sym.___rust_alloc
add esp, 8
test eax, eax
je 0x100d24c0
cmp edi, 8
jb 0x100d23ae
movdqa xmm2, xmmword [0x1016cf00]
movdqa xmm3, xmmword [0x1016cf10]
movdqa xmm4, xmmword [0x1016cf20]
movdqa xmm5, xmmword [0x1016cf30]
movdqa xmm1, xmmword [0x1016cf60]
xor ebx, ebx
nop word cs:[eax + eax]
nop dword [eax]
movq xmm6, qword [esi + ebx]
movdqa xmm0, xmm6
pand xmm0, xmmword [0x1016cee0]
movd ecx, xmm0
pshufd xmm0, xmm0, 0x55
movd edx, xmm0
or edx, ecx
jne 0x100d23ae
movd ecx, xmm6
movdqa xmm7, xmm6
mov edx, ecx
mov edi, ecx
shr ecx, 8
shufps xmm7, xmm6, 0x55
movd xmm0, ecx
shr edi, 0x10
shr edx, 0x18
movd ecx, xmm7
punpcklqdq xmm0, xmm6
movd xmm6, edx
movd xmm7, edi
mov edx, ecx
punpcklqdq xmm6, xmm7
shr edx, 8
shufps xmm0, xmm6, 0x22
movd xmm6, ecx
andps xmm0, xmmword [0x1016cef0]
pshufd xmm7, xmm6, 0x50
movdqa xmm6, xmm2
pandn xmm6, xmm7
movd xmm7, edx
mov edx, ecx
shr ecx, 0x18
shr edx, 0x10
psllq xmm7, 0x28
packuswb xmm0, xmm0
packuswb xmm0, xmm0
pand xmm0, xmm2
por xmm6, xmm0
movdqa xmm0, xmm3
pandn xmm0, xmm7
movd xmm7, edx
pand xmm6, xmm3
por xmm0, xmm6
psllq xmm7, 0x30
movdqa xmm6, xmm4
pandn xmm6, xmm7
pand xmm0, xmm4
movdqa xmm7, xmm5
por xmm6, xmm0
movd xmm0, ecx
lea ecx, [ebx + 8]
psllq xmm0, 0x38
pand xmm6, xmm5
pandn xmm7, xmm0
por xmm7, xmm6
movdqa xmm0, xmm7
paddb xmm0, xmmword [0x1016cf40]
movdqa xmm6, xmm0
pmaxub xmm6, xmmword [0x1016cf50]
pcmpeqb xmm6, xmm0
pandn xmm6, xmm1
pxor xmm6, xmm7
movq qword [eax + ebx], xmm6
add ebx, 0x10
cmp ebx, dword [ebp + 0x10]
mov ebx, ecx
jbe 0x100d2290
mov ebx, ecx
jmp 0x100d23ae
mov eax, 1
mov ecx, dword [ebp + 0x10]
cmp ebx, ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], ebx
je 0x100d249b
add dword [ebp - 0x1c], esi
add ebx, esi
nop word [eax + eax]
movzx ecx, byte [ebx]
test cl, cl
js 0x100d23e0
inc ebx
mov eax, ecx
jmp 0x100d2430
movzx esi, byte [ebx + 1]
mov eax, ecx
and eax, 0x1f
and esi, 0x3f
cmp cl, 0xdf
jbe 0x100d241b
movzx edx, byte [ebx + 2]
shl esi, 6
and edx, 0x3f
or edx, esi
cmp cl, 0xf0
jb 0x100d2425
movzx ecx, byte [ebx + 3]
and eax, 7
shl edx, 6
add ebx, 4
shl eax, 0x12
and ecx, 0x3f
or ecx, edx
or eax, ecx
jmp 0x100d2430
shl eax, 6
add ebx, 2
or eax, esi
jmp 0x100d2430
shl eax, 0xc
add ebx, 3
or eax, edx
nop dword [eax]
push eax
lea eax, [ebp - 0x28]
push eax
call sym.core::unicode::unicode_data::conversions::to_upper::h95297eaf18fa8bca
add esp, 8
mov edi, dword [ebp - 0x24]
test edi, edi
je 0x100d2470
mov esi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x28]
test esi, esi
je 0x100d2480
lea ecx, [ebp - 0x18]
call sym.alloc::string::String::push::h7d5d178fe98702d6
lea ecx, [ebp - 0x18]
mov edx, edi
call sym.alloc::string::String::push::h7d5d178fe98702d6
mov edi, esi
jmp 0x100d2488
mov edi, dword [ebp - 0x28]
jmp 0x100d2488
lea ecx, [ebp - 0x18]
call sym.alloc::string::String::push::h7d5d178fe98702d6
lea ecx, [ebp - 0x18]
mov edx, edi
call sym.alloc::string::String::push::h7d5d178fe98702d6
cmp ebx, dword [ebp - 0x1c]
jne 0x100d23d0
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x10]
movsd xmm0, qword [ebp - 0x18]
mov dword [eax + 8], ecx
movsd qword [eax], xmm0
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
push dword [ebp + 0x10]
push eax
call sym.alloc::raw_vec::handle_error::he63c9115d026ec98
mov eax, 1
push dword [ebp + 0x10]
push eax
call sym.alloc::raw_vec::handle_error::he63c9115d026ec98
mov esi, eax
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x100d24e5
push 1
push eax
push dword [ebp - 0x14]
call sym.___rust_dealloc
add esp, 0xc
push esi
call sym.__Unwind_Resume
nop dword [eax + eax]