Function at 0x4151cc
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffffec
mov esi, eax
mov dword [esp], 7
mov dword [esp + 4], 0x20
mov dword [esp + 8], 0x80
mov eax, dword [esi + 0x990]
mov dword [esp + 0xc], eax
jmp 0x41551f
mov edx, dword [esi + 0x24]
and dword [esi + 0x149c], edx
xor ecx, ecx
mov dword [esi + 0x54], ecx
mov edx, dword [esi]
mov eax, dword [esi + 0x149c]
mov bl, byte [edx + eax]
dec eax
and eax, dword [esi + 0x24]
mov edx, dword [esi]
cmp bl, byte [edx + eax]
jne 0x415254
mov dword [esi + 0x58], 1
jmp 0x41522b
inc dword [esi + 0x58]
mov ecx, dword [esi + 0x149c]
mov eax, dword [esi + 0x58]
add ecx, eax
and ecx, dword [esi + 0x24]
mov edx, dword [esi]
cmp bl, byte [edx + ecx]
jne 0x415247
cmp eax, 0x100
jl 0x415228
cmp dword [esi + 0x58], 7
jl 0x415254
mov dword [esi + 0x54], 1
mov eax, dword [esi + 0x149c]
mov ecx, dword [esi]
xor edx, edx
mov dl, byte [ecx + eax + 2]
mov ecx, dword [esi]
movzx ecx, byte [ecx + eax + 1]
mov edx, dword [edx*4 + 0x4a8944]
shl edx, 0xa
mov ecx, dword [ecx*4 + 0x4a8944]
shl ecx, 4
add edx, ecx
mov ecx, dword [esi]
movzx ecx, byte [ecx + eax]
add edx, ecx
mov ecx, edx
mov edx, dword [esi]
and ecx, 0x3ffff
movzx edx, byte [edx + eax + 3]
mov edx, dword [edx*4 + 0x4a8944]
shl edx, 6
add ecx, edx
and ecx, 0x3ffff
mov dword [esp + 0x10], ecx
mov ecx, dword [esi]
mov edx, dword [esi + 0x10]
mov edi, dword [esi + 0x149c]
movzx eax, byte [ecx + eax + 4]
mov ecx, dword [esi + 0x10]
mov eax, dword [eax*4 + 0x4a8944]
shl eax, 8
add eax, dword [esp + 0x10]
and eax, dword [esi + 0x1c]
mov edx, dword [edx + eax*4]
and edx, dword [esi + 0x24]
mov dword [ecx + eax*4], edi
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x149c]
mov dword [eax + ecx*4], edx
test byte [esi + 0x149c], 0xf
jne 0x415317
cmp dword [esi + 0x54], 0
jne 0x415317
mov dword [esi + 0x58], 0x1f
mov ecx, edx
mov eax, esi
mov edx, 1
call fcn.00413c98
cmp dword [esi + 0x58], 0x80
jge 0x415317
xor eax, eax
mov dword [esi + 0x54], eax
cmp dword [esi + 0x54], 0
je 0x4154e4
mov edx, dword [esp + 0xc]
sub edx, dword [esi + 0x149c]
and edx, dword [esi + 0x24]
cmp edx, dword [esi + 0x58]
jbe 0x4154e4
cmp byte [esi + 0x14a1], 0
jne 0x41534f
mov ecx, dword [esi + 0x54]
cmp ecx, dword [esi + 0x149c]
ja 0x4154e4
mov eax, dword [esi + 0x149c]
inc eax
and eax, dword [esi + 0x24]
mov dword [esi + 0x149c], eax
xor ecx, ecx
jmp 0x415456
mov eax, dword [esi + 0x149c]
mov edx, dword [esi]
mov ebx, dword [esi]
movzx edx, byte [edx + eax]
inc eax
and eax, dword [esi + 0x24]
movzx eax, byte [ebx + eax]
shl eax, 8
mov bl, byte [esi + 0x149c]
add edx, eax
mov eax, edx
mov edx, dword [esi + 4]
and eax, 0x3fff
mov byte [edx + eax], bl
mov eax, dword [esi + 0x149c]
mov edx, dword [esi]
mov ebx, dword [esi]
movzx edx, byte [edx + eax + 2]
movzx ebx, byte [ebx + eax + 1]
mov edx, dword [edx*4 + 0x4a8944]
shl edx, 0xa
mov ebx, dword [ebx*4 + 0x4a8944]
shl ebx, 4
add edx, ebx
mov ebx, dword [esi]
movzx eax, byte [ebx + eax]
add edx, eax
mov bx, word [esi + 0x149c]
and edx, 0x3ffff
mov eax, edx
mov edx, dword [esi + 8]
mov word [edx + eax*2], bx
mov edx, dword [esi + 0x149c]
mov ebx, dword [esi]
movzx ebx, byte [ebx + edx + 3]
mov ebx, dword [ebx*4 + 0x4a8944]
shl ebx, 6
add eax, ebx
mov ebx, dword [esi + 0xc]
and eax, 0x3ffff
mov dword [ebx + eax*4], edx
mov edx, dword [esi]
mov ebx, dword [esi + 0x149c]
mov edi, dword [esi + 0x10]
movzx edx, byte [edx + ebx + 4]
mov edx, dword [edx*4 + 0x4a8944]
shl edx, 8
add eax, edx
mov edx, dword [esi + 0x10]
and eax, dword [esi + 0x1c]
mov edx, dword [edx + eax*4]
and edx, dword [esi + 0x24]
mov dword [edi + eax*4], ebx
mov ebx, dword [esi]
movzx ebx, byte [ebx + edx]
xor eax, ebx
test al, 0xf
je 0x415439
xor edx, edx
mov eax, dword [esi + 0x14]
mov ebx, dword [esi + 0x149c]
mov dword [eax + ebx*4], edx
mov eax, dword [esi + 0x149c]
inc eax
and eax, dword [esi + 0x24]
mov dword [esi + 0x149c], eax
inc ecx
mov edx, dword [esi + 0x58]
dec edx
cmp ecx, edx
jl 0x415366
lea ebx, [esi + 0x14b0]
mov edx, dword [esi + 0x60a4]
mov eax, ebx
call fcn.00431f64
cmp dword [esi + 0x54], 1
jne 0x415499
mov eax, ebx
mov edx, 5
call fcn.00431f64
mov edx, dword [esi + 0x58]
mov eax, ebx
add edx, 0xfffffffc
call fcn.00431f64
jmp 0x41551f
mov eax, ebx
mov edx, 4
call fcn.00431f64
sub dword [esi + 0x54], 2
mov edx, dword [esi + 0x54]
mov eax, ebx
shr edx, 0x10
call fcn.00431f64
mov edx, dword [esi + 0x54]
mov eax, ebx
shr edx, 8
and edx, 0xff
call fcn.00431f64
xor edx, edx
mov eax, ebx
mov dl, byte [esi + 0x54]
call fcn.00431f64
mov edx, dword [esi + 0x58]
mov eax, ebx
add edx, 0xffffffe0
call fcn.00431f64
jmp 0x41551f
mov edi, ebx
lea ebp, [esi + 0x14b0]
and edi, 0xff
mov eax, ebp
mov edx, edi
call fcn.00431f64
cmp edi, dword [esi + 0x60a4]
jne 0x41550f
mov eax, ebp
mov edx, 1
call fcn.00431f64
mov ecx, dword [esi + 0x149c]
inc ecx
and ecx, dword [esi + 0x24]
mov dword [esi + 0x149c], ecx
lea ebx, [esi + 0x990]
mov edi, dword [esi + 0x149c]
cmp edi, dword [ebx]
jne 0x41553a
mov eax, ebx
call fcn.00417728
mov dl, 1
jmp 0x41553c
xor edx, edx
test dl, dl
je 0x4151fb
add esp, 0x14
pop ebp
pop edi
pop esi
pop ebx
ret