Function at 0x63f4ba80
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push edi
mov edi, edx
push esi
push ebx
sub esp, 0x13c
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x150]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x30], edx
cmp eax, edi
jae 0x63f4bdc8
mov edi, 1
lea esi, [esi]
movzx ebx, byte [eax]
lea ebp, [eax + 1]
lea ecx, [ebx - 3]
mov edx, ebx
cmp cl, 0xee
ja case.0x63f4bac7.1
movzx ecx, cl
jmp dword [ecx*4 + 0x6402c6d4]
xor esi, esi
xor ecx, ecx
movzx edx, byte [ebp]
add ebp, 1
mov eax, edx
and eax, 0x7f
shl eax, cl
add ecx, 7
or esi, eax
test dl, dl
js 0x63f4bad4
cmp ecx, 0x1f
ja 0x63f4bb00
and edx, 0x40
je 0x63f4bb00
mov eax, 1
shl eax, cl
neg eax
or esi, eax
sub ebx, 0x70
cmp ebx, 0x11
jg 0x6401ff87
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + ebx*4]
test byte [ecx + 0x63], 0x40
je 0x63f4bdb0
cmp byte [ecx + ebx + 0x6c], 0
je 0x63f4bdb0
mov ebx, eax
add ebx, esi
mov eax, ebp
mov esi, edi
jmp 0x63f4bb40
mov ebx, dword [eax + 1]
mov esi, edi
add eax, 5
cmp esi, 0x3f
jg 0x6401ff87
mov dword [esp + esi*4 + 0x30], ebx
lea edi, [esi + 1]
cmp dword [esp + 0x14], eax
ja 0x63f4bab0
test edi, edi
je 0x6401ff87
mov eax, dword [esp + edi*4 + 0x2c]
add esp, 0x13c
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebx, dword [eax + 1]
mov esi, edi
add eax, 9
jmp 0x63f4bb40
lea edx, [ebx - 0x50]
cmp edx, 0x11
jg 0x6401ff87
mov eax, dword [esp + 0x18]
mov ebx, dword [eax + edx*4]
test byte [eax + 0x63], 0x40
je 0x63f4bba0
cmp byte [eax + edx + 0x6c], 0
jne 0x63f4bbaf
cmp byte [edx + 0x6406e090], 4
jne 0x6401ff87
mov ebx, dword [ebx]
mov esi, edi
mov eax, ebp
jmp 0x63f4bb40
sub ebx, 0x30
mov esi, edi
mov eax, ebp
jmp 0x63f4bb40
cmp edi, 1
jle 0x6401ff87
lea esi, [edi - 2]
sub edx, 0x1a
mov ecx, dword [esp + edi*4 + 0x2c]
mov ebx, dword [esp + esi*4 + 0x30]
cmp dl, 0x14
ja case.0x63f4bac7.1
movzx edx, dl
jmp dword [edx*4 + 0x6402ca90]
test edi, edi
je 0x6401ff87
lea esi, [edi - 1]
mov ebx, dword [esp + esi*4 + 0x30]
cmp dl, 0x23
ja 0x63f4bd6f
sub edx, 6
cmp dl, 0x1d
ja case.0x63f4bac7.1
movzx edx, dl
jmp dword [edx*4 + 0x6402cae4]
movsx edx, word [eax + 1]
lea eax, [eax + edx + 3]
jmp 0x63f4bb50
test edi, edi
je 0x6401ff87
sub edi, 1
lea edx, [eax + 3]
mov ecx, dword [esp + edi*4 + 0x30]
test ecx, ecx
je 0x63f4bda0
movsx eax, word [eax + 1]
add eax, edx
jmp 0x63f4bb50
cmp edi, 1
jle 0x6401ff87
lea eax, [edi - 2]
lea edx, [edi - 1]
mov ebx, dword [esp + eax*4 + 0x30]
mov ecx, dword [esp + edx*4 + 0x30]
mov dword [esp + edx*4 + 0x30], ebx
mov dword [esp + eax*4 + 0x30], ecx
mov eax, ebp
jmp 0x63f4bb50
movzx ecx, byte [eax + 1]
lea edx, [eax + 2]
lea eax, [edi - 1]
cmp ecx, eax
jge 0x6401ff87
sub eax, ecx
mov esi, edi
mov ebx, dword [esp + eax*4 + 0x30]
mov eax, edx
jmp 0x63f4bb40
cmp edi, 1
jle 0x6401ff87
mov ebx, dword [esp + edi*4 + 0x28]
mov esi, edi
mov eax, ebp
jmp 0x63f4bb40
test edi, edi
je 0x6401ff87
sub edi, 1
mov eax, ebp
jmp 0x63f4bb50
test edi, edi
je 0x6401ff87
mov ebx, dword [esp + edi*4 + 0x2c]
mov esi, edi
mov eax, ebp
jmp 0x63f4bb40
movsx ebx, word [eax + 1]
mov esi, edi
add eax, 3
jmp 0x63f4bb40
movzx ebx, word [eax + 1]
mov esi, edi
add eax, 3
jmp 0x63f4bb40
movsx ebx, byte [eax + 1]
mov esi, edi
add eax, 2
jmp 0x63f4bb40
cmp edi, 2
jle 0x6401ff87
lea ecx, [edi - 1]
lea edx, [edi - 2]
mov ebx, dword [esp + ecx*4 + 0x30]
lea eax, [edi - 3]
mov esi, dword [esp + eax*4 + 0x30]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + edx*4 + 0x30]
mov dword [esp + ecx*4 + 0x30], ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + edx*4 + 0x30], esi
mov dword [esp + eax*4 + 0x30], ebx
mov eax, ebp
jmp 0x63f4bb50
movzx edx, byte [eax + 1]
lea ecx, [eax + 2]
lea eax, [esp + 0x2c]
mov esi, edi
mov dword [esp], eax
mov eax, dword [esp + 0x18]
call fcn.63f4b8e0
mov ebx, dword [esp + 0x2c]
jmp 0x63f4bb40
movzx ebx, byte [eax + 1]
mov esi, edi
add eax, 2
jmp 0x63f4bb40
cmp dl, 0x94
jne 0x63f4c066
lea edx, [eax + 2]
movzx eax, byte [eax + 1]
cmp al, 4
je 0x63f4bff2
ja 0x63f4c05d
cmp al, 1
jne 0x63f4c04f
movzx ebx, byte [ebx]
mov eax, edx
jmp 0x63f4bb40
mov eax, edx
jmp 0x63f4bb50
cmp byte [ebx + 0x6406e090], 4
jne 0x6401ff87
mov ebx, dword [eax]
jmp 0x63f4bb2a
add esp, 0x13c
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret
xor ebx, ebx
mov eax, ebp
xor ecx, ecx
mov esi, ebx
lea esi, [esi]
movzx ebx, byte [eax]
add eax, 1
mov edx, ebx
and edx, 0x7f
shl edx, cl
add ecx, 7
or esi, edx
test bl, bl
js 0x63f4bde0
mov ebx, esi
mov esi, edi
jmp 0x63f4bb40
mov eax, ebp
xor esi, esi
xor ecx, ecx
lea esi, [esi]
movzx ebx, byte [eax]
add eax, 1
mov edx, ebx
and edx, 0x7f
shl edx, cl
add ecx, 7
or esi, edx
test bl, bl
js 0x63f4be08
xor ebp, ebp
xor ecx, ecx
lea esi, [esi]
movzx ebx, byte [eax]
add eax, 1
mov edx, ebx
and edx, 0x7f
shl edx, cl
add ecx, 7
or ebp, edx
test bl, bl
js 0x63f4be28
cmp ecx, 0x1f
ja 0x63f4be53
and ebx, 0x40
je 0x63f4be53
mov edx, 1
shl edx, cl
neg edx
or ebp, edx
cmp esi, 0x11
jg 0x6401ff87
mov ecx, dword [esp + 0x18]
mov ebx, dword [ecx + esi*4]
test byte [ecx + 0x63], 0x40
je 0x63f4be70
cmp byte [ecx + esi + 0x6c], 0
jne 0x63f4be7f
cmp byte [esi + 0x6406e090], 4
jne 0x6401ff87
mov ebx, dword [ebx]
add ebx, ebp
mov esi, edi
jmp 0x63f4bb40
mov eax, ebp
jmp 0x63f4bb50
mov eax, ebp
xor ebx, ebx
xor ecx, ecx
lea esi, [esi]
movzx edx, byte [eax]
add eax, 1
mov esi, edx
and esi, 0x7f
shl esi, cl
add ecx, 7
or ebx, esi
test dl, dl
js 0x63f4be98
mov esi, edi
cmp ecx, 0x1f
ja 0x63f4bb40
and edx, 0x40
je 0x63f4bb40
mov edx, 1
shl edx, cl
neg edx
or ebx, edx
jmp 0x63f4bb40
mov eax, ebp
xor esi, esi
xor ecx, ecx
lea esi, [esi]
nop
movzx ebx, byte [eax]
add eax, 1
mov edx, ebx
and edx, 0x7f
shl edx, cl
add ecx, 7
or esi, edx
test bl, bl
js 0x63f4bee0
cmp esi, 0x11
jg 0x6401ff87
mov ecx, dword [esp + 0x18]
mov ebx, dword [ecx + esi*4]
test byte [ecx + 0x63], 0x40
je 0x63f4bf13
cmp byte [ecx + esi + 0x6c], 0
jne 0x63f4bf22
cmp byte [esi + 0x6406e090], 4
jne 0x6401ff87
mov ebx, dword [ebx]
mov esi, edi
jmp 0x63f4bb40
cmp ebx, ecx
mov eax, ebp
setle bl
movzx ebx, bl
jmp 0x63f4bb40
cmp ebx, ecx
mov eax, ebp
setl bl
movzx ebx, bl
jmp 0x63f4bb40
add ebx, ecx
mov eax, ebp
jmp 0x63f4bb40
shl ebx, cl
mov eax, ebp
jmp 0x63f4bb40
shr ebx, cl
mov eax, ebp
jmp 0x63f4bb40
sar ebx, cl
mov eax, ebp
jmp 0x63f4bb40
xor ebx, ecx
mov eax, ebp
jmp 0x63f4bb40
cmp ebx, ecx
mov eax, ebp
sete bl
movzx ebx, bl
jmp 0x63f4bb40
cmp ebx, ecx
mov eax, ebp
setge bl
movzx ebx, bl
jmp 0x63f4bb40
cmp ebx, ecx
mov eax, ebp
setg bl
movzx ebx, bl
jmp 0x63f4bb40
and ebx, ecx
mov eax, ebp
jmp 0x63f4bb40
mov eax, ebx
cdq
idiv ecx
mov ebx, eax
mov eax, ebp
jmp 0x63f4bb40
sub ebx, ecx
mov eax, ebp
jmp 0x63f4bb40
mov eax, ebx
xor edx, edx
div ecx
mov eax, ebp
mov ebx, edx
jmp 0x63f4bb40
imul ebx, ecx
mov eax, ebp
jmp 0x63f4bb40
or ebx, ecx
mov eax, ebp
jmp 0x63f4bb40
cmp ebx, ecx
mov eax, ebp
setne bl
movzx ebx, bl
jmp 0x63f4bb40
mov ebx, dword [ebx]
mov eax, edx
jmp 0x63f4bb40
not ebx
mov eax, ebp
jmp 0x63f4bb40
neg ebx
mov eax, ebp
jmp 0x63f4bb40
mov edx, ebx
mov eax, ebp
sar edx, 0x1f
xor ebx, edx
sub ebx, edx
jmp 0x63f4bb40
mov ebx, dword [ebx]
mov eax, ebp
jmp 0x63f4bb40
mov eax, ebp
xor ecx, ecx
xor ebp, ebp
mov edi, ebx
nop
movzx ebx, byte [eax]
add eax, 1
mov edx, ebx
and edx, 0x7f
shl edx, cl
add ecx, 7
or ebp, edx
test bl, bl
js 0x63f4c030
mov ebx, edi
add ebx, ebp
jmp 0x63f4bb40
cmp al, 2
jne 0x63f4c06b
movzx ebx, word [ebx]
mov eax, edx
jmp 0x63f4bb40
cmp al, 8
je 0x63f4bff2
jmp case.0x63f4bac7.1
jmp case.0x63f4bac7.1
jmp case.0x63f4bac7.1