Function at 0x100f1f60
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x58
mov edi, dword [ebp + 8]
movzx edx, byte [edi]
cmp dl, 0x80
je 0x100f1f8b
mov ah, byte [edi + 9]
movsd xmm0, qword [edi + 1]
mov al, byte [edi + 0xa]
movzx ecx, byte [edi + 0xb]
mov byte [ebp - 0x50], ah
movsd qword [ebp - 0x58], xmm0
mov ah, byte [edi + 0xc]
mov ebx, dword [edi + 0x1c]
mov esi, dword [edi + 0x18]
cmp ah, 0x80
mov dword [ebp - 0x28], ebx
je 0x100f1fb6
mov bl, ah
mov ah, byte [edi + 0x15]
movsd xmm0, qword [edi + 0xd]
mov ch, byte [edi + 0x16]
mov dh, byte [edi + 0x17]
mov byte [ebp - 0x5c], ah
mov ah, bl
movsd qword [ebp - 0x64], xmm0
movsd xmm0, qword [ebp - 0x58]
movzx ebx, byte [ebp - 0x50]
mov byte [ebp - 0x48], dl
mov byte [ebp - 0x13], ah
mov dword [ebp - 0x10], esi
cmp dl, 0x80
mov byte [ebp - 0x12], ch
mov byte [ebp - 0x11], dh
movsd qword [ebp - 0x47], xmm0
mov byte [ebp - 0x3f], bl
mov byte [ebp - 0x3e], al
mov byte [ebp - 0x3d], cl
mov byte [ebp - 0x3c], ah
mov ah, byte [ebp - 0x5c]
movsd xmm0, qword [ebp - 0x64]
mov byte [ebp - 0x33], ah
movsd qword [ebp - 0x3b], xmm0
mov byte [ebp - 0x32], ch
mov byte [ebp - 0x31], dh
mov dword [ebp - 0x30], esi
mov esi, dword [ebp - 0x28]
mov dword [ebp - 0x2c], esi
je 0x100f2054
movzx ebx, cl
movzx edi, al
cmp edi, ebx
mov dword [ebp - 0x4c], ebx
cmova ebx, edi
cmp al, cl
jae 0x100f2054
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 0x14]
mov eax, dword [eax + 0x18]
mov esi, dword [eax + 0x10]
mov dword [ebp - 0x18], ecx
nop word cs:[eax + eax]
nop
movzx eax, byte [ebp + edi - 0x48]
push eax
push dword [ebp - 0x18]
call esi
add esp, 8
test al, al
jne 0x100f2049
inc edi
cmp ebx, edi
jne 0x100f2030
jmp 0x100f2054
cmp edi, dword [ebp - 0x4c]
mov al, 1
jb 0x100f2216
mov ebx, dword [ebp - 0x10]
test ebx, ebx
je 0x100f21c2
cmp ebx, dword [ebp - 0x28]
je 0x100f21c2
mov eax, dword [ebp + 0xc]
mov edi, dword [eax + 0x14]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x18], eax
movzx eax, byte [ebx]
test al, al
js 0x100f2090
inc ebx
mov dword [ebp - 0x10], ebx
jmp 0x100f20f0
movzx esi, byte [ebx + 1]
mov ecx, eax
and ecx, 0x1f
and esi, 0x3f
cmp al, 0xdf
jbe 0x100f20d4
movzx edx, byte [ebx + 2]
shl esi, 6
and edx, 0x3f
or edx, esi
cmp al, 0xf0
jb 0x100f20e3
movzx eax, byte [ebx + 3]
and ecx, 7
shl edx, 6
shl ecx, 0x12
and eax, 0x3f
or eax, edx
or eax, ecx
cmp eax, 0x110000
je 0x100f21c2
add ebx, 4
jmp 0x100f207c
shl ecx, 6
add ebx, 2
or ecx, esi
mov dword [ebp - 0x10], ebx
mov eax, ecx
jmp 0x100f20f0
shl ecx, 0xc
add ebx, 3
or edx, ecx
mov dword [ebp - 0x10], ebx
mov eax, edx
mov edx, eax
mov byte [ebp - 0x20], 0
mov word [ebp - 0x22], 0
mov ecx, eax
shr edx, 0x14
or ecx, 1
movzx edx, byte [edx + str.0123456789abcdefEscapeDefaultBorrowErroralready_mutably_borrowedBorrowMutErroralready_borrowedalready_borrowed:_]
bsr ecx, ecx
xor ecx, 0x1c
shr ecx, 2
lea ebx, [ecx - 2]
mov byte [ebp - 0x1f], dl
mov edx, eax
shr edx, 0x10
and edx, 0xf
movzx edx, byte [edx + str.0123456789abcdefEscapeDefaultBorrowErroralready_mutably_borrowedBorrowMutErroralready_borrowedalready_borrowed:_]
mov byte [ebp - 0x1e], dl
mov edx, eax
shr edx, 0xc
and edx, 0xf
movzx edx, byte [edx + str.0123456789abcdefEscapeDefaultBorrowErroralready_mutably_borrowedBorrowMutErroralready_borrowedalready_borrowed:_]
mov byte [ebp - 0x1d], dl
mov edx, eax
shr edx, 8
and edx, 0xf
movzx edx, byte [edx + str.0123456789abcdefEscapeDefaultBorrowErroralready_mutably_borrowedBorrowMutErroralready_borrowedalready_borrowed:_]
mov byte [ebp - 0x1c], dl
mov edx, eax
and eax, 0xf
shr edx, 4
movzx eax, byte [eax + str.0123456789abcdefEscapeDefaultBorrowErroralready_mutably_borrowedBorrowMutErroralready_borrowedalready_borrowed:_]
and edx, 0xf
movzx edx, byte [edx + str.0123456789abcdefEscapeDefaultBorrowErroralready_mutably_borrowedBorrowMutErroralready_borrowedalready_borrowed:_]
mov byte [ebp - 0x1b], dl
mov byte [ebp - 0x1a], al
mov byte [ebp - 0x19], 0x7d
mov word [ebp + ecx - 0x24], 0x755c
mov byte [ebp + ecx - 0x22], 0x7b
mov ecx, dword [ebp - 0x18]
movsd xmm0, qword [ebp - 0x22]
movzx eax, word [ebp - 0x1a]
movsd qword [ebp - 0x48], xmm0
mov word [ebp - 0x40], ax
mov esi, dword [ecx + 0x10]
nop word [eax + eax]
movzx eax, byte [ebp + ebx - 0x48]
push eax
push edi
call esi
add esp, 8
test al, al
jne 0x100f2209
inc ebx
cmp ebx, 0xa
jne 0x100f21a0
mov ebx, dword [ebp - 0x10]
cmp ebx, dword [ebp - 0x28]
jne 0x100f2074
neg byte [ebp - 0x13]
jo 0x100f2214
movzx eax, byte [ebp - 0x12]
movzx ecx, byte [ebp - 0x11]
movzx ebx, cl
movzx esi, al
cmp esi, ebx
mov dword [ebp - 0x10], ebx
cmova ebx, esi
cmp al, cl
jae 0x100f2214
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 0x14]
mov eax, dword [eax + 0x18]
mov edi, dword [eax + 0x10]
mov dword [ebp - 0x18], ecx
movzx eax, byte [ebp + esi - 0x3c]
push eax
push dword [ebp - 0x18]
call edi
add esp, 8
test al, al
jne 0x100f220d
inc esi
cmp ebx, esi
jne 0x100f21f0
jmp 0x100f2214
mov al, 1
jmp 0x100f2216
cmp esi, dword [ebp - 0x10]
mov al, 1
jb 0x100f2216
xor eax, eax
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret