Function at 0x5ba7c0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov eax, dword [ebp + 8]
mov esi, ecx
mov dl, 1
mov dword [eax], 2
mov ecx, dword [ecx]
mov edi, dword [esi + 8]
mov bl, byte [ecx + edi]
cmp bl, 0x2d
jne 0x5ba7f7
lea eax, [edi + 1]
xor edx, edx
mov dword [esi + 8], eax
mov bl, byte [ecx + edi + 1]
mov edi, eax
cmp bl, 0x30
jne 0x5ba80d
movzx eax, byte [edi + ecx + 1]
add eax, 0xffffffd0
cmp eax, 0xa
jb 0x5bab32
mov eax, dword [esi + 4]
mov dword [esp + 0x2c], edx
xor edx, edx
cmp edi, eax
mov dword [esp + 0x18], eax
jae 0x5bab9c
mov eax, ebx
add al, 0xd0
cmp al, 9
ja 0x5bab9c
mov dword [esp + 0x30], esi
mov dword [esp + 0x14], edi
lea esi, [edi + 1]
mov dword [esp + 0x24], 0
xor edi, edi
nop word cs:[eax + eax]
nop dword [eax]
mov eax, dword [esp + 0x24]
mov edx, 0xa
add edi, edi
movzx ebx, bl
lea edi, [edi + edi*4]
mul edx
add ebx, eax
mov eax, dword [esp + 0x30]
adc edi, edx
add ebx, 0xffffffd0
mov edx, esi
adc edi, 0xffffffff
cmp esi, dword [esp + 0x18]
mov dword [esp + 0x24], ebx
mov dword [eax + 8], esi
jae 0x5ba88f
movzx ebx, byte [ecx + edx]
lea esi, [edx + 1]
mov eax, ebx
add al, 0xd0
cmp al, 9
jbe 0x5ba850
cmp edx, dword [esp + 0x14]
jbe 0x5bab32
cmp edx, dword [esp + 0x18]
mov ebx, dword [ebp + 8]
xorpd xmm2, xmm2
jae 0x5ba94a
cmp byte [ecx + edx], 0x2e
mov esi, dword [esp + 0x30]
mov eax, edx
jne 0x5ba950
mov dword [ebx], 1
xor edx, edx
mov ecx, dword [esi + 8]
mov eax, dword [esi + 4]
inc ecx
mov dword [esp + 0x18], eax
cmp ecx, eax
mov dword [esi + 8], ecx
jae 0x5bab9c
mov eax, dword [esi]
movsd xmm0, qword [0x68e000]
xorpd xmm2, xmm2
mov esi, ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], eax
mov eax, 1
nop word cs:[eax + eax]
nop
mov ecx, edx
mov edx, dword [esp + 0x14]
movzx edx, byte [edx + esi]
mov ebx, edx
add bl, 0xd0
cmp bl, 9
ja 0x5baa0f
add edx, 0xffffffd0
lea ebx, [ecx + ecx*4]
inc esi
mulsd xmm2, xmm0
xorps xmm1, xmm1
cvtsi2sd xmm1, edx
mov edx, 0xa
mul edx
cmp esi, dword [esp + 0x18]
addsd xmm2, xmm1
lea edx, [edx + ebx*2]
mov ebx, dword [esp + 0x30]
mov dword [ebx + 8], esi
jb 0x5ba900
jmp 0x5baa15
mov esi, dword [esp + 0x30]
mov eax, edx
mov ecx, dword [esp + 0x18]
xor ebx, ebx
mov dl, 1
cmp eax, ecx
jae 0x5baa75
mov ecx, dword [esi]
mov dword [esp + 0x20], ecx
mov cl, byte [ecx + eax]
or cl, 0x20
cmp cl, 0x65
jne 0x5baa75
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x14], eax
inc eax
mov dl, 1
mov dword [esi + 8], eax
mov dword [esp + 0x28], eax
cmp eax, ecx
jae 0x5ba9ad
mov ebx, dword [esp + 0x20]
mov al, byte [ebx + eax]
cmp al, 0x2d
je 0x5ba99a
cmp al, 0x2b
jne 0x5ba9ad
mov ebx, dword [esp + 0x14]
cmp al, 0x2b
sete dl
add ebx, 2
mov dword [esi + 8], ebx
mov dword [esp + 0x28], ebx
mov eax, dword [esp + 0x28]
mov ebx, edx
xor edx, edx
cmp eax, ecx
jae 0x5bab9c
mov ecx, eax
xor eax, eax
mov dword [esp + 0x14], 0
mov byte [esp + 0x13], bl
mov esi, ecx
nop
mov ecx, dword [esp + 0x20]
movzx ecx, byte [ecx + esi]
mov edx, ecx
add dl, 0xd0
cmp dl, 9
ja 0x5baa5c
mov ebx, dword [esp + 0x14]
mov edx, 0xa
add ecx, 0xffffffd0
mul edx
add ebx, ebx
add ecx, eax
mov eax, dword [esp + 0x30]
lea ebx, [ebx + ebx*4]
adc ebx, edx
inc esi
cmp esi, dword [esp + 0x18]
mov dword [esp + 0x14], ebx
mov dword [eax + 8], esi
mov eax, ecx
jb 0x5ba9d0
jmp 0x5baa5e
mov ebx, dword [esp + 0x30]
mov edx, ecx
cmp esi, dword [esp + 0x20]
mov dword [esp + 0x14], esi
jbe 0x5bab32
movd xmm0, eax
movd xmm1, edx
mov eax, dword [esp + 0x14]
mov esi, ebx
mov ecx, ebx
punpckldq xmm0, xmm1
punpckldq xmm0, xmmword [0x658da0]
subpd xmm0, xmmword [0x658db0]
movapd xmm1, xmm0
unpckhpd xmm1, xmm0
addsd xmm1, xmm0
divsd xmm2, xmm1
jmp 0x5ba950
mov ecx, eax
mov dl, byte [esp + 0x13]
mov ebx, ecx
neg ebx
test dl, dl
cmovne ebx, ecx
cmp esi, dword [esp + 0x28]
jbe 0x5bab32
xorps xmm0, xmm0
cvtsi2sd xmm0, ebx
mov byte [esp + 0x13], dl
movapd xmmword [esp + 0x30], xmm2
mov dword [esp + 4], 0x40240000
mov dword [esp], 0
movsd qword [esp + 0x18], xmm0
movsd qword [esp + 8], xmm0
call fcn.0062e910
fstp qword [esp + 0x70]
movsd xmm0, qword [esp + 0x18]
cvttsd2si ebx, qword [esp + 0x70]
mov dword [esp + 4], 0x40240000
mov dword [esp], 0
movsd qword [esp + 8], xmm0
call fcn.0062e910
mov edx, dword [ebp + 8]
fstp qword [esp + 0x68]
movsd xmm0, qword [esp + 0x68]
cmp dword [edx], 1
jne 0x5bab36
movd xmm1, dword [esp + 0x24]
movd xmm2, edi
punpckldq xmm1, xmm2
movq qword [esp + 0x50], xmm1
fild qword [esp + 0x50]
fstp qword [esp + 0x48]
movapd xmm1, xmmword [esp + 0x30]
cmp byte [esp + 0x2c], 0
addsd xmm1, qword [esp + 0x48]
jne 0x5bab19
xorpd xmm1, xmmword [0x6590c0]
cmp byte [esp + 0x13], 0
je 0x5bab27
xorps xmm0, xmm0
cvtsi2sd xmm0, ebx
mulsd xmm1, xmm0
movsd qword [edx + 8], xmm1
jmp 0x5bab9a
xor edx, edx
jmp 0x5bab9c
mov esi, dword [esp + 0x24]
xor ecx, ecx
mov eax, esi
neg eax
sbb ecx, edi
cmp byte [esp + 0x2c], 0
cmovne eax, esi
cmovne ecx, edi
cmp byte [esp + 0x13], 0
jne 0x5bab81
movd xmm1, eax
movd xmm2, ecx
punpckldq xmm1, xmm2
movq qword [esp + 0x60], xmm1
fild qword [esp + 0x60]
fstp qword [esp + 0x58]
mulsd xmm0, qword [esp + 0x58]
mov dword [edx], 1
movsd qword [edx + 8], xmm0
jmp 0x5bab9a
mov esi, ebx
mov edi, edx
imul ecx, ebx
sar esi, 0x1f
imul esi, eax
mul ebx
add esi, edx
mov dword [edi + 8], eax
add ecx, esi
mov dword [edi + 0xc], ecx
mov dl, 1
mov eax, edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 4