Function at 0x42ef50
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push edi
push esi
push ebp
push ebx
push ecx
push edx
push eax
mov eax, 0x8868
call fcn.00471770
mov ecx, dword [esp + 0x8870]
mov edx, dword [esp + 0x886c]
mov eax, dword [esp + 0x8868]
mov dword [esp + 0x8424], ecx
mov dword [esp + 0x8864], edx
mov dword [esp + 0x8834], eax
mov ebp, dword [esp + 0x8894]
mov edx, dword [esp + 0x88a0]
mov eax, dword [esp + 0x88b0]
test eax, eax
mov ebx, 1
jle 0x42efab
mov ebx, eax
lea eax, [edx + edx]
add eax, eax
mov dword [esp + 0x8860], eax
lea edi, [ebx + ebx]
xor eax, eax
mov dword [esp + eax*4 + 0x842c], 1
inc eax
cmp eax, 0x100
jl 0x42efbc
mov ecx, edi
shr ecx, 0x1f
add ecx, edi
sar ecx, 1
mov eax, ecx
mov esi, edi
sar esi, 2
shr esi, 0x1d
add esi, edi
sar esi, 3
mov edx, ecx
sub edx, esi
cmp ecx, edx
jl 0x42efff
mov dword [esp + eax*4 + 0x842c], 0x200
dec eax
cmp eax, edx
jge 0x42efef
test edx, edx
jl 0x42f051
mov eax, 0x200
fld qword [0x579b78]
mov dword [esp + edx*4 + 0x842c], eax
mov dword [esp + 0x8418], eax
fild dword [esp + 0x8418]
fmul st(1)
fnstcw word [esp]
movzx eax, word [esp]
or eax, 0xc00
mov dword [esp + 8], eax
fldcw word [esp + 8]
fistp dword [esp + 0x8410]
fldcw word [esp]
mov eax, dword [esp + 0x8410]
dec edx
test edx, edx
jge 0x42f00e
fstp st(0)
add esi, ecx
cmp ecx, esi
jg 0x42f067
mov dword [esp + ecx*4 + 0x842c], 0x200
inc ecx
cmp ecx, esi
jle 0x42f057
cmp esi, edi
jg 0x42f0b9
mov eax, 0x200
fld qword [0x579b78]
mov dword [esp + esi*4 + 0x842c], eax
mov dword [esp + 0x8418], eax
fild dword [esp + 0x8418]
fmul st(1)
fnstcw word [esp]
movzx eax, word [esp]
or eax, 0xc00
mov dword [esp + 8], eax
fldcw word [esp + 8]
fistp dword [esp + 0x8410]
fldcw word [esp]
mov eax, dword [esp + 0x8410]
inc esi
cmp esi, edi
jle 0x42f076
fstp st(0)
mov eax, dword [esp + 0x88a4]
imul eax, dword [esp + 0x8860]
push eax
call fcn.0046f20c
pop ecx
mov dword [esp + 0x882c], eax
cmp dword [esp + 0x88b4], 0
jne 0x42f4e2
mov ecx, dword [esp + 0x8424]
sub ecx, ebx
mov eax, dword [esp + 0x8898]
lea edx, [ebx + eax + 1]
cmp ecx, edx
jg 0x42f13c
mov eax, dword [esp + 0x8898]
lea eax, [eax + 1]
mov dword [esp + 0x8420], ebp
mov esi, dword [esp + 0x8898]
mov edi, dword [esp + 0x8424]
mov ebp, ecx
cmp ecx, edi
jge 0x42f123
mov ebp, edi
cmp ebp, eax
jl 0x42f129
mov ebp, esi
mov dword [esp + ecx*4 + 0x40c], ebp
inc ecx
cmp ecx, edx
jle 0x42f11b
mov ebp, dword [esp + 0x8420]
mov edx, ebp
mov eax, dword [esp + 0x889c]
lea ecx, [eax + 1]
cmp ebp, ecx
jge 0x42f30a
mov edi, ebx
neg edi
add edi, edi
add edi, edi
lea esi, [ebx + ebx]
add esi, esi
mov eax, dword [esp + 0x8898]
lea eax, [eax + 1]
mov dword [esp + 0x8870], eax
mov eax, edx
imul eax, dword [esp + 0x8860]
mov dword [esp + 0x8858], esi
mov dword [esp + 0x8428], edi
mov dword [esp + 0x8830], ecx
mov dword [esp + 0x886c], ebx
mov dword [esp + 0x8420], ebp
mov ebp, dword [esp + 0x8424]
mov ebx, ebp
mov ecx, dword [esp + 0x8870]
cmp ebp, ecx
jge 0x42f2e5
lea edi, [ebx + ebx]
add edi, edi
add edi, dword [esp + 0x8858]
lea esi, [ebx + ebx]
add esi, esi
add esi, dword [esp + 0x8428]
lea ecx, [ebx + ebx]
add ecx, ecx
add ecx, eax
add ecx, dword [esp + 0x882c]
mov dword [esp + 0x8840], esi
mov dword [esp + 0x8854], edi
mov dword [esp + 0x8844], eax
mov dword [esp + 0x8848], ebx
mov dword [esp + 0x885c], edx
mov ebx, dword [esp + 0x8840]
mov eax, dword [esp + ebx + 0x40c]
mov esi, dword [esp + 0x8854]
mov ebx, dword [esp + esi + 0x40c]
lea esi, [eax + eax]
add esi, esi
add esi, dword [esp + 0x8844]
sub ebx, eax
test ebx, ebx
jl 0x42f9c0
xor eax, eax
xor ebp, ebp
xor edi, edi
mov dword [esp + 0x883c], edi
mov edi, dword [esp + 0x8864]
lea edx, [esi + edi]
lea esi, [esi + edi]
mov dword [esp + 0x884c], esi
lea edi, [edx + ebx*4]
mov esi, dword [esp + 0x883c]
mov dword [esp + 0x8850], ecx
mov edx, dword [esp + 0x884c]
movzx ecx, byte [edx]
add eax, ecx
movzx ecx, byte [edx + 1]
add ebp, ecx
movzx ecx, byte [edx + 2]
add esi, ecx
add edx, 4
cmp edx, edi
jbe 0x42f267
mov ecx, dword [esp + 0x8850]
inc ebx
xor edx, edx
div ebx
mov byte [ecx], al
mov eax, ebp
xor edx, edx
div ebx
mov byte [ecx + 1], al
mov eax, esi
xor edx, edx
div ebx
mov byte [ecx + 2], al
add dword [esp + 0x8854], 4
add dword [esp + 0x8840], 4
add ecx, 4
mov ebx, dword [esp + 0x8848]
inc ebx
mov dword [esp + 0x8848], ebx
mov ebp, dword [esp + 0x8870]
cmp ebx, ebp
jl 0x42f1fc
mov eax, dword [esp + 0x8844]
mov edx, dword [esp + 0x885c]
mov ebp, dword [esp + 0x8424]
add eax, dword [esp + 0x8860]
inc edx
mov ecx, dword [esp + 0x8830]
cmp edx, ecx
jl 0x42f1a2
mov ebx, dword [esp + 0x886c]
mov ebp, dword [esp + 0x8420]
mov eax, ebp
sub eax, ebx
mov edx, dword [esp + 0x889c]
lea edx, [ebx + edx + 1]
cmp eax, edx
jg 0x42f33e
mov edi, dword [esp + 0x889c]
mov esi, eax
cmp eax, ebp
jge 0x42f32c
mov esi, ebp
cmp esi, ecx
jl 0x42f332
mov esi, edi
mov dword [esp + eax*4 + 0x40c], esi
inc eax
cmp eax, edx
jle 0x42f324
cmp ebp, ecx
jge 0x42f98c
mov esi, ebx
neg esi
add esi, esi
add esi, esi
add ebx, ebx
add ebx, ebx
mov eax, dword [esp + 0x8898]
lea edi, [eax + 1]
lea edx, [ebp + ebp]
add edx, edx
add edx, ebx
lea eax, [ebp + ebp]
add eax, eax
add eax, esi
mov dword [esp + 0x8868], edi
mov dword [esp + 0x8830], ecx
mov esi, dword [esp + eax + 0x40c]
mov ebx, dword [esp + edx + 0x40c]
mov ecx, dword [esp + 0x8424]
mov edi, dword [esp + 0x8868]
cmp ecx, edi
jge 0x42f4c7
mov edi, dword [esp + 0x8860]
imul edi, ebp
mov dword [esp + 0x8838], edi
mov edi, ebx
sub edi, esi
inc edi
mov dword [esp + 0x8840], edi
mov dword [esp + 0x8844], ecx
mov dword [esp + 0x8854], ebx
mov dword [esp + 0x8850], esi
mov dword [esp + 0x884c], eax
mov dword [esp + 0x883c], edx
mov dword [esp + 0x8420], ebp
mov edi, dword [esp + 0x8850]
mov eax, dword [esp + 0x8854]
cmp edi, eax
jg 0x42f9a9
xor eax, eax
xor ebx, ebx
xor ebp, ebp
mov edx, dword [esp + 0x8844]
lea ecx, [edx + edx]
add ecx, ecx
mov esi, edi
imul esi, dword [esp + 0x8860]
add esi, ecx
add esi, dword [esp + 0x882c]
mov dword [esp + 0x8848], ecx
mov edx, dword [esp + 0x8854]
movzx ecx, byte [esi]
add eax, ecx
movzx ecx, byte [esi + 1]
add ebx, ecx
movzx ecx, byte [esi + 2]
add ebp, ecx
add esi, dword [esp + 0x8860]
inc edi
cmp edi, edx
jle 0x42f42e
mov ecx, dword [esp + 0x8848]
add ecx, dword [esp + 0x8838]
xor edx, edx
mov edi, dword [esp + 0x8840]
div edi
mov esi, dword [esp + 0x8834]
mov byte [ecx + esi], al
mov eax, ebx
xor edx, edx
div edi
mov byte [ecx + esi + 1], al
mov eax, ebp
xor edx, edx
mov ebx, edi
div ebx
mov byte [ecx + esi + 2], al
mov ebp, dword [esp + 0x8864]
movzx eax, byte [ebp + ecx + 3]
mov byte [ecx + esi + 3], al
mov ecx, dword [esp + 0x8844]
inc ecx
mov dword [esp + 0x8844], ecx
mov eax, dword [esp + 0x8868]
cmp ecx, eax
jl 0x42f3e5
mov eax, dword [esp + 0x884c]
mov edx, dword [esp + 0x883c]
mov ebp, dword [esp + 0x8420]
add edx, 4
add eax, 4
inc ebp
mov ecx, dword [esp + 0x8830]
cmp ebp, ecx
jl 0x42f37a
jmp 0x42f98c
mov ecx, dword [esp + 0x8424]
sub ecx, ebx
mov eax, dword [esp + 0x8898]
lea edx, [ebx + eax + 1]
cmp ecx, edx
jg 0x42f53a
mov eax, dword [esp + 0x8898]
lea eax, [eax + 1]
mov dword [esp + 0x8420], ebp
mov esi, dword [esp + 0x8898]
mov edi, dword [esp + 0x8424]
mov ebp, ecx
cmp ecx, edi
jge 0x42f521
mov ebp, edi
cmp ebp, eax
jl 0x42f527
mov ebp, esi
mov dword [esp + ecx*4 + 0x40c], ebp
inc ecx
cmp ecx, edx
jle 0x42f519
mov ebp, dword [esp + 0x8420]
mov edx, ebp
mov eax, dword [esp + 0x889c]
lea ecx, [eax + 1]
cmp ebp, ecx
jge 0x42f756
mov edi, ebx
neg edi
add edi, edi
add edi, edi
lea esi, [ebx + ebx]
add esi, esi
mov eax, dword [esp + 0x8898]
lea eax, [eax + 1]
mov dword [esp + 0x8870], eax
mov eax, edx
imul eax, dword [esp + 0x8860]
mov dword [esp + 0x8840], esi
mov dword [esp + 0x8854], edi
mov dword [esp + 0x8844], ecx
mov dword [esp + 0x886c], ebx
mov dword [esp + 0x8420], ebp
mov ebx, dword [esp + 0x8424]
mov ecx, ebx
mov ebp, dword [esp + 0x8870]
cmp ebx, ebp
jge 0x42f731
lea esi, [ecx + ecx]
add esi, esi
add esi, dword [esp + 0x8840]
lea ebp, [ecx + ecx]
add ebp, ebp
add ebp, dword [esp + 0x8854]
lea edi, [ecx + ecx]
add edi, edi
add edi, eax
add edi, dword [esp + 0x882c]
mov dword [esp + 0x8830], edi
mov dword [esp + 0x8838], ebp
mov dword [esp + 0x883c], esi
mov dword [esp + 0x884c], eax
mov dword [esp + 0x8850], ecx
mov dword [esp + 0x8848], edx
mov edi, dword [esp + 0x8838]
mov edx, dword [esp + edi + 0x40c]
mov eax, dword [esp + 0x883c]
mov ecx, dword [esp + eax + 0x40c]
lea edi, [edx + edx]
add edi, edi
add edi, dword [esp + 0x884c]
sub ecx, edx
mov dword [esp + 0x885c], ecx
test ecx, ecx
jl 0x42f9f5
xor eax, eax
xor ecx, ecx
xor ebx, ebx
xor ebp, ebp
xor esi, esi
xor edx, edx
mov dword [esp + 0x8428], edx
add edi, dword [esp + 0x8864]
mov dword [esp + 0x8868], eax
mov dword [esp + 0x8858], esi
mov esi, dword [esp + edx*4 + 0x842c]
movzx eax, byte [edi + edx*4]
imul eax, esi
add dword [esp + 0x8868], eax
movzx eax, byte [edi + edx*4 + 1]
imul eax, esi
add ecx, eax
movzx eax, byte [edi + edx*4 + 2]
imul eax, esi
add ebx, eax
movzx eax, byte [edi + edx*4 + 3]
imul eax, esi
add ebp, eax
add dword [esp + 0x8858], esi
inc edx
mov esi, dword [esp + 0x885c]
cmp edx, esi
jle 0x42f662
mov eax, dword [esp + 0x8868]
mov esi, dword [esp + 0x8858]
xor edx, edx
div esi
mov edi, dword [esp + 0x8830]
mov byte [edi], al
mov eax, ecx
xor edx, edx
div esi
mov edx, edi
mov byte [edx + 1], al
mov eax, ebx
xor edx, edx
div esi
mov ecx, edi
mov byte [ecx + 2], al
mov eax, ebp
xor edx, edx
div esi
mov ebx, ecx
mov byte [ebx + 3], al
add dword [esp + 0x883c], 4
add dword [esp + 0x8838], 4
add ebx, 4
mov dword [esp + 0x8830], ebx
mov ebp, dword [esp + 0x8850]
inc ebp
mov dword [esp + 0x8850], ebp
mov esi, dword [esp + 0x8870]
cmp ebp, esi
jl 0x42f601
mov eax, dword [esp + 0x884c]
mov edx, dword [esp + 0x8848]
mov ebx, dword [esp + 0x8424]
add eax, dword [esp + 0x8860]
inc edx
mov ecx, dword [esp + 0x8844]
cmp edx, ecx
jl 0x42f5a0
mov ebx, dword [esp + 0x886c]
mov ebp, dword [esp + 0x8420]
mov eax, ebp
sub eax, ebx
mov edx, dword [esp + 0x889c]
lea edx, [ebx + edx + 1]
cmp eax, edx
jg 0x42f78a
mov edi, dword [esp + 0x889c]
mov esi, eax
cmp eax, ebp
jge 0x42f778
mov esi, ebp
cmp esi, ecx
jl 0x42f77e
mov esi, edi
mov dword [esp + eax*4 + 0x40c], esi
inc eax
cmp eax, edx
jle 0x42f770
cmp ebp, ecx
jge 0x42f98c
mov esi, ebx
neg esi
add esi, esi
add esi, esi
add ebx, ebx
add ebx, ebx
mov eax, dword [esp + 0x8898]
lea edi, [eax + 1]
lea edx, [ebp + ebp]
add edx, edx
add edx, ebx
lea eax, [ebp + ebp]
add eax, eax
add eax, esi
mov dword [esp + 0x8848], edi
mov dword [esp + 0x8844], ecx
mov esi, dword [esp + eax + 0x40c]
mov ebx, dword [esp + edx + 0x40c]
mov ecx, dword [esp + 0x8424]
mov edi, dword [esp + 0x8848]
cmp ecx, edi
jge 0x42f976
mov edi, dword [esp + 0x8860]
imul edi, ebp
mov dword [esp + 0x8854], edi
mov edi, esi
neg edi
add edi, edi
add edi, edi
mov dword [esp + 0x8838], edi
mov dword [esp + 0x883c], ecx
mov dword [esp + 0x8868], ebx
mov dword [esp + 0x884c], esi
mov dword [esp + 0x8850], eax
mov dword [esp + 0x8840], edx
mov dword [esp + 0x8420], ebp
mov edi, dword [esp + 0x884c]
mov eax, dword [esp + 0x8868]
cmp edi, eax
jg 0x42f9cb
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x8870], ecx
xor ecx, ecx
xor ebx, ebx
xor edx, edx
mov dword [esp + 0x886c], edx
mov ebp, dword [esp + 0x883c]
lea ebp, [ebp + ebp]
add ebp, ebp
mov esi, edi
imul esi, dword [esp + 0x8860]
add esi, ebp
add esi, dword [esp + 0x882c]
lea edx, [edi + edi]
add edx, edx
add edx, dword [esp + 0x8838]
mov dword [esp + 0x8830], ebp
mov dword [esp + 0x8864], eax
mov ebp, dword [esp + edx + 0x842c]
movzx eax, byte [esi]
imul eax, ebp
add dword [esp + 0x8864], eax
movzx eax, byte [esi + 1]
imul eax, ebp
add dword [esp + 0x8870], eax
movzx eax, byte [esi + 2]
imul eax, ebp
add ecx, eax
movzx eax, byte [esi + 3]
imul eax, ebp
add ebx, eax
add dword [esp + 0x886c], ebp
add esi, dword [esp + 0x8860]
add edx, 4
inc edi
mov ebp, dword [esp + 0x8868]
cmp edi, ebp
jle 0x42f89c
mov ebp, dword [esp + 0x8830]
mov eax, dword [esp + 0x8864]
add ebp, dword [esp + 0x8854]
xor edx, edx
mov esi, dword [esp + 0x886c]
div esi
mov edi, dword [esp + 0x8834]
mov byte [ebp + edi], al
mov eax, dword [esp + 0x8870]
xor edx, edx
div esi
mov edx, edi
mov byte [ebp + edx + 1], al
mov eax, ecx
xor edx, edx
div esi
mov edx, edi
mov byte [ebp + edx + 2], al
mov eax, ebx
xor edx, edx
mov ecx, esi
div ecx
mov edx, edi
mov byte [ebp + edx + 3], al
mov ebx, dword [esp + 0x883c]
inc ebx
mov dword [esp + 0x883c], ebx
mov ebp, dword [esp + 0x8848]
cmp ebx, ebp
jl 0x42f834
mov eax, dword [esp + 0x8850]
mov edx, dword [esp + 0x8840]
mov ebp, dword [esp + 0x8420]
add edx, 4
add eax, 4
inc ebp
mov ecx, dword [esp + 0x8844]
cmp ebp, ecx
jl 0x42f7c6
mov eax, dword [esp + 0x882c]
test eax, eax
je 0x42f99e
push eax
call fcn.0046f79e
pop ecx
add esp, 0x8874
pop ebx
pop ebp
pop esi
pop edi
ret
xor eax, eax
xor ebx, ebx
xor ebp, ebp
mov edx, dword [esp + 0x8844]
lea ecx, [edx + edx]
add ecx, ecx
jmp 0x42f452
xor eax, eax
xor ebp, ebp
xor esi, esi
jmp 0x42f286
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x8870], ecx
xor ecx, ecx
xor ebx, ebx
xor edx, edx
mov dword [esp + 0x886c], edx
mov ebp, dword [esp + 0x883c]
lea ebp, [ebp + ebp]
add ebp, ebp
jmp 0x42f8fb
xor eax, eax
xor ecx, ecx
xor ebx, ebx
xor ebp, ebp
xor esi, esi
jmp 0x42f6b6