Function at 0x42ed28
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.004714c0
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 0x42ed83
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 0x42ed94
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 0x42edd7
mov dword [esp + eax*4 + 0x842c], 0x200
dec eax
cmp eax, edx
jge 0x42edc7
test edx, edx
jl 0x42ee29
mov eax, 0x200
fld qword [0x579b58]
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 0x42ede6
fstp st(0)
add esi, ecx
cmp ecx, esi
jg 0x42ee3f
mov dword [esp + ecx*4 + 0x842c], 0x200
inc ecx
cmp ecx, esi
jle 0x42ee2f
cmp esi, edi
jg 0x42ee91
mov eax, 0x200
fld qword [0x579b58]
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 0x42ee4e
fstp st(0)
mov eax, dword [esp + 0x88a4]
imul eax, dword [esp + 0x8860]
push eax
call fcn.0046ef5c
pop ecx
mov dword [esp + 0x882c], eax
cmp dword [esp + 0x88b4], 0
jne 0x42f2ba
mov ecx, dword [esp + 0x8424]
sub ecx, ebx
mov eax, dword [esp + 0x8898]
lea edx, [ebx + eax + 1]
cmp ecx, edx
jg 0x42ef14
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 0x42eefb
mov ebp, edi
cmp ebp, eax
jl 0x42ef01
mov ebp, esi
mov dword [esp + ecx*4 + 0x40c], ebp
inc ecx
cmp ecx, edx
jle 0x42eef3
mov ebp, dword [esp + 0x8420]
mov edx, ebp
mov eax, dword [esp + 0x889c]
lea ecx, [eax + 1]
cmp ebp, ecx
jge 0x42f0e2
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 0x42f0bd
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 0x42f798
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 0x42f03f
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 0x42efd4
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 0x42ef7a
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 0x42f116
mov edi, dword [esp + 0x889c]
mov esi, eax
cmp eax, ebp
jge 0x42f104
mov esi, ebp
cmp esi, ecx
jl 0x42f10a
mov esi, edi
mov dword [esp + eax*4 + 0x40c], esi
inc eax
cmp eax, edx
jle 0x42f0fc
cmp ebp, ecx
jge 0x42f764
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 0x42f29f
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 0x42f781
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 0x42f206
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 0x42f1bd
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 0x42f152
jmp 0x42f764
mov ecx, dword [esp + 0x8424]
sub ecx, ebx
mov eax, dword [esp + 0x8898]
lea edx, [ebx + eax + 1]
cmp ecx, edx
jg 0x42f312
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 0x42f2f9
mov ebp, edi
cmp ebp, eax
jl 0x42f2ff
mov ebp, esi
mov dword [esp + ecx*4 + 0x40c], ebp
inc ecx
cmp ecx, edx
jle 0x42f2f1
mov ebp, dword [esp + 0x8420]
mov edx, ebp
mov eax, dword [esp + 0x889c]
lea ecx, [eax + 1]
cmp ebp, ecx
jge 0x42f52e
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 0x42f509
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 0x42f7cd
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 0x42f43a
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 0x42f3d9
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 0x42f378
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 0x42f562
mov edi, dword [esp + 0x889c]
mov esi, eax
cmp eax, ebp
jge 0x42f550
mov esi, ebp
cmp esi, ecx
jl 0x42f556
mov esi, edi
mov dword [esp + eax*4 + 0x40c], esi
inc eax
cmp eax, edx
jle 0x42f548
cmp ebp, ecx
jge 0x42f764
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 0x42f74e
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 0x42f7a3
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 0x42f674
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 0x42f60c
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 0x42f59e
mov eax, dword [esp + 0x882c]
test eax, eax
je 0x42f776
push eax
call fcn.0046f4ee
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 0x42f22a
xor eax, eax
xor ebp, ebp
xor esi, esi
jmp 0x42f05e
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 0x42f6d3
xor eax, eax
xor ecx, ecx
xor ebx, ebx
xor ebp, ebp
xor esi, esi
jmp 0x42f48e