Function at 0x10065940
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x50
mov esi, dword [esp + 0x64]
movzx edx, byte [esi]
cmp dl, 0x80
je 0x1006596c
mov ah, byte [esi + 9]
movsd xmm0, qword [esi + 1]
mov al, byte [esi + 0xa]
movzx ecx, byte [esi + 0xb]
mov byte [esp + 0x4c], ah
movsd qword [esp + 0x44], xmm0
mov dh, byte [esi + 0xc]
mov edi, dword [esi + 0x18]
mov ebp, dword [esi + 0x1c]
cmp dh, 0x80
je 0x10065993
mov ah, byte [esi + 0x15]
movsd xmm0, qword [esi + 0xd]
mov ch, byte [esi + 0x16]
movzx ebx, byte [esi + 0x17]
mov byte [esp + 0x10], ah
movsd qword [esp + 8], xmm0
mov ah, byte [esp + 0x4c]
movsd xmm0, qword [esp + 0x44]
movsd xmm1, qword [esp + 8]
cmp dl, 0x80
mov byte [esp + 6], ch
mov byte [esp + 5], bl
mov dword [esp], edi
mov byte [esp + 7], dh
mov byte [esp + 0x25], ah
mov ah, byte [esp + 0x10]
movsd qword [esp + 0x1d], xmm0
movsd qword [esp + 0x29], xmm1
mov byte [esp + 0x31], ah
mov byte [esp + 0x1c], dl
mov byte [esp + 0x26], al
mov byte [esp + 0x27], cl
mov byte [esp + 0x28], dh
mov byte [esp + 0x32], ch
mov byte [esp + 0x33], bl
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], ebp
jne 0x10065b9e
mov ebx, dword [esp]
mov dword [esp + 0x14], ebp
test ebx, ebx
je 0x10065b8c
mov eax, dword [esp + 0x68]
mov edi, dword [eax + 0x14]
mov ebp, dword [eax + 0x18]
jmp 0x10065a1c
cmp ebx, 9
mov ebx, dword [esp]
jbe 0x10065ca1
cmp ebx, dword [esp + 0x14]
je 0x10065b8c
lea ecx, [ebx + 1]
mov dword [esp + 0x34], ecx
movzx edx, byte [ebx]
movzx eax, dl
test dl, dl
jns 0x10065aa0
lea ecx, [ebx + 2]
and eax, 0x1f
mov dword [esp + 0x34], ecx
movzx esi, byte [ebx + 1]
and esi, 0x3f
cmp dl, 0xdf
jbe 0x10065a91
lea ecx, [ebx + 3]
shl esi, 6
mov dword [esp + 0x34], ecx
mov dword [esp], ecx
movzx ecx, byte [ebx + 2]
and ecx, 0x3f
or ecx, esi
cmp dl, 0xf0
jb 0x10065a98
lea edx, [ebx + 4]
and eax, 7
shl ecx, 6
mov dword [esp + 0x34], edx
shl eax, 0x12
movzx esi, byte [ebx + 3]
and esi, 0x3f
or esi, ecx
mov ecx, edx
or eax, esi
cmp eax, 0x110000
jne 0x10065aa0
jmp 0x10065b8c
shl eax, 6
or eax, esi
jmp 0x10065aa0
shl eax, 0xc
or eax, ecx
mov ecx, dword [esp]
mov dword [esp], ecx
mov ecx, eax
mov byte [esp + 0xa], 0
mov word [esp + 8], 0
mov byte [esp + 0x11], 0x7d
shr ecx, 0x14
movzx ecx, byte [ecx + 0x10085c67]
mov byte [esp + 0xb], cl
mov ecx, eax
shr ecx, 0x10
and ecx, 0xf
movzx ecx, byte [ecx + 0x10085c67]
mov byte [esp + 0xc], cl
mov ecx, eax
shr ecx, 0xc
and ecx, 0xf
movzx ecx, byte [ecx + 0x10085c67]
mov byte [esp + 0xd], cl
mov ecx, eax
shr ecx, 8
and ecx, 0xf
movzx ecx, byte [ecx + 0x10085c67]
mov byte [esp + 0xe], cl
mov ecx, eax
shr ecx, 4
and ecx, 0xf
movzx ecx, byte [ecx + 0x10085c67]
mov byte [esp + 0xf], cl
mov ecx, eax
or eax, 1
and ecx, 0xf
bsr eax, eax
movzx ecx, byte [ecx + 0x10085c67]
xor eax, 0x1c
shr eax, 2
lea esi, [eax - 2]
mov byte [esp + 0x10], cl
mov byte [esp + eax + 8], 0x7b
mov word [esp + eax + 6], 0x755c
movsd xmm0, qword [esp + 8]
movzx eax, word [esp + 0x10]
movsd qword [esp + 0x1c], xmm0
mov word [esp + 0x24], ax
mov byte [esp + 0x27], 0xa
nop word cs:[eax + eax]
mov ebx, esi
cmp esi, 0xa
je 0x10065a10
mov eax, ebx
lea esi, [ebx + 1]
inc al
mov byte [esp + 0x26], al
movzx eax, byte [esp + ebx + 0x1c]
push eax
push edi
call dword [ebp + 0x10]
add esp, 8
test al, al
je 0x10065b60
jmp 0x10065a10
cmp byte [esp + 7], 0x80
jne 0x10065c28
xor eax, eax
jmp 0x10065ca3
movzx ebx, al
mov eax, dword [esp + 0x68]
movzx edi, cl
mov esi, 0xa
cmp ebx, edi
mov dword [esp + 0x40], edi
cmova edi, ebx
cmp ebx, 0xb
cmovae esi, ebx
dec ebx
neg edi
mov ecx, dword [eax + 0x14]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x3c], esi
neg esi
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
nop word cs:[eax + eax]
nop dword [eax]
lea eax, [edi + ebx]
cmp eax, 0xffffffff
je 0x100659f3
mov ecx, ebx
lea eax, [esi + ebx]
add cl, 2
cmp eax, 0xffffffff
mov byte [esp + 0x26], cl
je 0x10065cab
movzx eax, byte [esp + ebx + 0x1d]
push eax
push dword [esp + 0x18]
mov eax, dword [esp + 0x20]
call dword [eax + 0x10]
add esp, 8
inc ebx
test al, al
je 0x10065be0
cmp ebx, dword [esp + 0x40]
mov al, 1
jae 0x100659f3
jmp 0x10065ca3
mov eax, dword [esp + 0x68]
movzx ebp, byte [esp + 5]
movzx ebx, byte [esp + 6]
mov esi, 0xa
mov ecx, dword [eax + 0x14]
cmp ebx, ebp
mov edi, dword [eax + 0x18]
mov dword [esp + 0x14], ebp
cmova ebp, ebx
cmp ebx, 0xb
cmovae esi, ebx
dec ebx
neg ebp
mov dword [esp + 0x18], esi
neg esi
mov dword [esp], ecx
nop dword [eax]
lea eax, [ebp + ebx]
cmp eax, 0xffffffff
je 0x10065b97
mov ecx, ebx
lea eax, [esi + ebx]
add cl, 2
cmp eax, 0xffffffff
mov byte [esp + 0x32], cl
je 0x10065cbb
movzx eax, byte [esp + ebx + 0x29]
push eax
push dword [esp + 4]
call dword [edi + 0x10]
add esp, 8
inc ebx
test al, al
je 0x10065c60
cmp ebx, dword [esp + 0x14]
mov al, 1
jae 0x10065b97
jmp 0x10065ca3
mov al, 1
add esp, 0x50
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x10087668
push 0xa
push dword [esp + 0x44]
call sym.kso.dll_core::panicking::panic_bounds_check::hda298f763923bd76
push 0x10087668
push 0xa
push dword [esp + 0x20]
call sym.kso.dll_core::panicking::panic_bounds_check::hda298f763923bd76
int3