Function at 0x42f038
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.00472450
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 0x42f093
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 0x42f0a4
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 0x42f0e7
mov dword [esp + eax*4 + 0x842c], 0x200
dec eax
cmp eax, edx
jge 0x42f0d7
test edx, edx
jl 0x42f139
mov eax, 0x200
fld qword [0x57ab58]
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 0x42f0f6
fstp st(0)
add esi, ecx
cmp ecx, esi
jg 0x42f14f
mov dword [esp + ecx*4 + 0x842c], 0x200
inc ecx
cmp ecx, esi
jle 0x42f13f
cmp esi, edi
jg 0x42f1a1
mov eax, 0x200
fld qword [0x57ab58]
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 0x42f15e
fstp st(0)
mov eax, dword [esp + 0x88a4]
imul eax, dword [esp + 0x8860]
push eax
call fcn.0046feec
pop ecx
mov dword [esp + 0x882c], eax
cmp dword [esp + 0x88b4], 0
jne 0x42f5ca
mov ecx, dword [esp + 0x8424]
sub ecx, ebx
mov eax, dword [esp + 0x8898]
lea edx, [ebx + eax + 1]
cmp ecx, edx
jg 0x42f224
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 0x42f20b
mov ebp, edi
cmp ebp, eax
jl 0x42f211
mov ebp, esi
mov dword [esp + ecx*4 + 0x40c], ebp
inc ecx
cmp ecx, edx
jle 0x42f203
mov ebp, dword [esp + 0x8420]
mov edx, ebp
mov eax, dword [esp + 0x889c]
lea ecx, [eax + 1]
cmp ebp, ecx
jge 0x42f3f2
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 0x42f3cd
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 0x42faa8
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 0x42f34f
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 0x42f2e4
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 0x42f28a
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 0x42f426
mov edi, dword [esp + 0x889c]
mov esi, eax
cmp eax, ebp
jge 0x42f414
mov esi, ebp
cmp esi, ecx
jl 0x42f41a
mov esi, edi
mov dword [esp + eax*4 + 0x40c], esi
inc eax
cmp eax, edx
jle 0x42f40c
cmp ebp, ecx
jge 0x42fa74
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 0x42f5af
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 0x42fa91
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 0x42f516
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 0x42f4cd
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 0x42f462
jmp 0x42fa74
mov ecx, dword [esp + 0x8424]
sub ecx, ebx
mov eax, dword [esp + 0x8898]
lea edx, [ebx + eax + 1]
cmp ecx, edx
jg 0x42f622
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 0x42f609
mov ebp, edi
cmp ebp, eax
jl 0x42f60f
mov ebp, esi
mov dword [esp + ecx*4 + 0x40c], ebp
inc ecx
cmp ecx, edx
jle 0x42f601
mov ebp, dword [esp + 0x8420]
mov edx, ebp
mov eax, dword [esp + 0x889c]
lea ecx, [eax + 1]
cmp ebp, ecx
jge 0x42f83e
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 0x42f819
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 0x42fadd
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 0x42f74a
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 0x42f6e9
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 0x42f688
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 0x42f872
mov edi, dword [esp + 0x889c]
mov esi, eax
cmp eax, ebp
jge 0x42f860
mov esi, ebp
cmp esi, ecx
jl 0x42f866
mov esi, edi
mov dword [esp + eax*4 + 0x40c], esi
inc eax
cmp eax, edx
jle 0x42f858
cmp ebp, ecx
jge 0x42fa74
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 0x42fa5e
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 0x42fab3
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 0x42f984
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 0x42f91c
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 0x42f8ae
mov eax, dword [esp + 0x882c]
test eax, eax
je 0x42fa86
push eax
call fcn.0047047e
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 0x42f53a
xor eax, eax
xor ebp, ebp
xor esi, esi
jmp 0x42f36e
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 0x42f9e3
xor eax, eax
xor ecx, ecx
xor ebx, ebx
xor ebp, ebp
xor esi, esi
jmp 0x42f79e