Function at 0x429330
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [ebp + 0x18]
push ebx
mov dword [ebp - 4], ecx
push esi
lea ecx, [eax*4]
mov dword [ebp - 0x10], edx
mov eax, dword [ebp + 0x20]
push edi
mov edi, 1
mov dword [ebp - 0xc], ecx
cmp dword [ecx + eax], edi
cmovg edi, dword [ecx + eax]
mov eax, edi
cdq
xor eax, edx
sub eax, edx
test eax, 0xffff0000
je 0x429375
sar eax, 0x10
mov ecx, eax
call fcn.0041f280
jmp 0x42937f
mov ecx, eax
call fcn.0041f280
add eax, 0x10
lea ecx, [eax - 1]
mov dword [ebp + 0x20], eax
shl edi, cl
mov eax, 0x1fffffff
mov esi, edi
cdq
sar esi, 0x10
idiv esi
movzx edi, di
mov ebx, eax
movsx edx, bx
imul edi, edx
mov ecx, edx
imul ecx, esi
mov esi, ebx
sar esi, 0xf
inc esi
shl ebx, 0x10
sar esi, 1
sar edi, 0x10
add edi, ecx
mov ecx, 0x1d
neg edi
shl edi, 3
movzx eax, di
imul esi, edi
imul eax, edx
sar edi, 0x10
imul edi, edx
sar eax, 0x10
add esi, eax
mov eax, dword [ebp + 0x20]
dec eax
add esi, edi
sub ecx, eax
add esi, ebx
test ecx, ecx
jg 0x429418
neg ecx
mov eax, 0x80000000
mov edx, 0x7fffffff
sar eax, cl
sar edx, cl
cmp eax, edx
jle 0x429403
cmp esi, eax
jg 0x429414
cmp esi, edx
mov eax, esi
cmovl eax, edx
shl eax, cl
jmp 0x429425
cmp esi, edx
jle 0x42940d
mov eax, edx
shl eax, cl
jmp 0x429425
cmp esi, eax
cmovl esi, eax
mov eax, esi
shl eax, cl
jmp 0x429425
cmp ecx, 0x20
jge 0x429423
mov eax, esi
sar eax, cl
jmp 0x429425
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov esi, 0x7fff
mov ebx, dword [ebp - 4]
cmp eax, esi
cmovl esi, eax
mov eax, dword [ebp + 0x24]
mov dword [ebp + 0x20], esi
cmp dword [ebx + 0x1938], 0
mov ecx, dword [ecx + eax]
mov dword [ebp - 0x14], ecx
je 0x4294ab
mov edi, esi
shl edi, 0x10
cmp dword [ebp + 0x18], 0
jne 0x42945f
movsx eax, word [ebp + 0x1c]
sar edi, 0xe
imul edi, eax
mov eax, dword [ebx + 0x1928]
mov esi, eax
sub esi, ecx
sub esi, 2
cmp esi, eax
jge 0x4294a8
movzx eax, di
mov dword [ebp + 0x18], eax
sar edi, 0x10
nop dword [eax]
mov ecx, dword [ebp + 0x10]
mov edx, eax
mov eax, edi
movsx ecx, word [ecx + esi*2]
imul edx, ecx
imul eax, ecx
sar edx, 0x10
add edx, eax
mov eax, dword [ebp + 0x14]
mov dword [eax + esi*4], edx
inc esi
mov eax, dword [ebp + 0x18]
cmp esi, dword [ebx + 0x1928]
jl 0x429480
mov esi, dword [ebp + 0x20]
mov edx, dword [ebx + 0x1934]
cmp esi, edx
je 0x429645
push ecx
mov ecx, esi
call fcn.00427dd0
mov edx, dword [ebx + 0x192c]
mov esi, eax
mov ecx, dword [ebp + 0xc]
mov eax, edx
shl ecx, 2
mov edi, esi
sub eax, ecx
sar edi, 0x10
add esp, 4
mov dword [ebp + 0x24], eax
cmp eax, edx
mov dword [ebp - 0xc], esi
movzx eax, si
mov dword [ebp + 0x18], eax
jge 0x42953a
mov eax, dword [ebp + 0x24]
add eax, 0x1e0
lea eax, [ebx + eax*4]
mov dword [ebp - 8], eax
nop dword [eax]
mov edx, dword [eax]
movsx ecx, word [eax]
mov eax, dword [ebp + 0x18]
sar edx, 0xf
imul eax, ecx
inc edx
sar edx, 1
imul edx, esi
sar eax, 0x10
add edx, eax
mov eax, edi
imul eax, ecx
mov ecx, dword [ebp + 0x24]
inc ecx
mov dword [ebp + 0x24], ecx
add edx, eax
mov eax, dword [ebp - 8]
mov dword [eax], edx
add eax, 4
mov dword [ebp - 8], eax
cmp ecx, dword [ebx + 0x192c]
jl 0x429500
cmp dword [ebx + 0x1938], 0
jne 0x42959a
mov eax, dword [ebx + 0x1928]
mov ecx, eax
sub ecx, dword [ebp - 0x14]
sub ecx, 2
mov dword [ebp + 0x24], ecx
cmp ecx, eax
jge 0x42959a
nop dword [eax + eax]
mov eax, dword [ebp + 0x14]
movsx edx, word [eax + ecx*4]
mov ecx, dword [eax + ecx*4]
mov eax, edx
imul eax, dword [ebp + 0x18]
sar ecx, 0xf
inc ecx
imul edx, edi
sar ecx, 1
imul ecx, esi
sar eax, 0x10
add ecx, eax
mov eax, dword [ebp + 0x24]
add ecx, edx
mov edx, dword [ebp + 0x14]
mov dword [edx + eax*4], ecx
mov ecx, eax
inc ecx
mov dword [ebp + 0x24], ecx
cmp ecx, dword [ebx + 0x1928]
jl 0x429560
mov ecx, dword [ebx + 0x1920]
movsx edx, word [ebx + 0x1920]
sar ecx, 0xf
mov eax, edx
imul eax, dword [ebp + 0x18]
inc ecx
sar ecx, 1
imul ecx, esi
lea esi, [ebx + 0x1680]
imul edx, edi
mov dword [ebp + 0x24], 0x20
sar eax, 0x10
add ecx, eax
add ecx, edx
mov dword [ebx + 0x1920], ecx
mov ebx, dword [ebp - 0xc]
mov ecx, dword [esi]
lea esi, [esi + 4]
movsx edx, word [esi - 4]
sar ecx, 0xf
mov eax, edx
imul eax, dword [ebp + 0x18]
inc ecx
sar ecx, 1
imul ecx, ebx
imul edx, edi
sar eax, 0x10
add ecx, eax
add ecx, edx
sub dword [ebp + 0x24], 1
mov dword [esi - 4], ecx
jne 0x4295d6
mov esi, dword [ebp - 4]
mov ebx, dword [ebp - 0xc]
add esi, 0x18e0
mov dword [ebp + 0x24], 0x10
mov ecx, dword [esi]
lea esi, [esi + 4]
movsx edx, word [esi - 4]
sar ecx, 0xf
mov eax, edx
imul eax, dword [ebp + 0x18]
inc ecx
sar ecx, 1
imul ecx, ebx
imul edx, edi
sar eax, 0x10
add ecx, eax
add ecx, edx
sub dword [ebp + 0x24], 1
mov dword [esi - 4], ecx
jne 0x429614
mov ebx, dword [ebp - 4]
mov esi, dword [ebp + 0x20]
mov edi, dword [ebp + 0xc]
xor ecx, ecx
test edi, edi
jle 0x429718
cmp edi, 0x10
jb 0x4296f4
cmp dword [0x4b7294], 2
jl 0x4296f4
mov edx, dword [ebp - 0x10]
and edi, 0xfffffff0
movsx eax, si
movd xmm0, eax
mov eax, dword [ebp + 8]
punpcklwd xmm0, xmm0
add eax, 0x20
pshufd xmm0, xmm0, 0
add edx, 0x10
pmovsxwd xmm1, xmm0
nop dword [eax]
pmovsxwd xmm0, qword [edx - 0x10]
pmulld xmm0, xmm1
psrad xmm0, 6
lea edx, [edx + 0x20]
add ecx, 0x10
lea eax, [eax + 0x40]
movups xmmword [eax - 0x60], xmm0
pmovsxwd xmm0, qword [edx - 0x28]
pmulld xmm0, xmm1
psrad xmm0, 6
movups xmmword [eax - 0x50], xmm0
pmovsxwd xmm0, qword [edx - 0x20]
pmulld xmm0, xmm1
psrad xmm0, 6
movups xmmword [eax - 0x40], xmm0
pmovsxwd xmm0, qword [edx - 0x18]
pmulld xmm0, xmm1
psrad xmm0, 6
movups xmmword [eax - 0x30], xmm0
cmp ecx, edi
jl 0x429690
mov edi, dword [ebp + 0xc]
cmp ecx, edi
jge 0x429718
mov ebx, dword [ebp - 0x10]
movsx edx, si
mov esi, dword [ebp + 8]
nop dword [eax]
movsx eax, word [ebx + ecx*2]
imul eax, edx
sar eax, 6
mov dword [esi + ecx*4], eax
inc ecx
cmp ecx, edi
jl 0x429700
mov ebx, dword [ebp - 4]
mov esi, dword [ebp + 0x20]
pop edi
mov dword [ebx + 0x1934], esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret