Function at 0x40a390
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x158
mov eax, dword [0x4811f4]
xor eax, ebp
mov dword [ebp - 4], eax
lea ecx, [ebp + 8]
call fcn.00401040
mov dword [ebp - 0x134], eax
lea ecx, [ebp + 8]
call fcn.004010e0
mov dword [ebp - 0x130], eax
lea eax, [ebp - 0x110]
mov dword [ebp - 0x118], eax
xor ecx, ecx
mov word [ebp - 0x11c], cx
jmp 0x40a3e8
mov dx, word [ebp - 0x11c]
add dx, 1
mov word [ebp - 0x11c], dx
movsx eax, word [ebp - 0x11c]
cmp eax, 0x100
jge 0x40a40e
movsx ecx, word [ebp - 0x11c]
mov edx, dword [ebp - 0x118]
mov al, byte [ebp - 0x11c]
mov byte [edx + ecx], al
jmp 0x40a3d6
mov byte [ebp - 0x10], 0
mov byte [ebp - 0xf], 0
mov byte [ebp - 0x111], 0
mov byte [ebp - 0x112], 0
xor ecx, ecx
mov word [ebp - 0x120], cx
jmp 0x40a441
mov dx, word [ebp - 0x120]
add dx, 1
mov word [ebp - 0x120], dx
movsx eax, word [ebp - 0x120]
cmp eax, 0x100
jge 0x40a502
movzx ecx, byte [ebp - 0x111]
mov edx, dword [ebp - 0x130]
movzx eax, byte [edx + ecx]
movsx ecx, word [ebp - 0x120]
mov edx, dword [ebp - 0x118]
movzx ecx, byte [edx + ecx]
add eax, ecx
movzx edx, byte [ebp - 0x112]
add eax, edx
and eax, 0x800000ff
jns 0x40a48e
dec eax
or eax, 0xffffff00
inc eax
mov byte [ebp - 0x112], al
movzx eax, byte [ebp - 0x112]
add eax, dword [ebp - 0x118]
mov dword [ebp - 0x12c], eax
movsx ecx, word [ebp - 0x120]
add ecx, dword [ebp - 0x118]
mov dword [ebp - 0x128], ecx
mov edx, dword [ebp - 0x128]
mov al, byte [edx]
mov byte [ebp - 0x121], al
mov ecx, dword [ebp - 0x128]
mov edx, dword [ebp - 0x12c]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 0x12c]
mov dl, byte [ebp - 0x121]
mov byte [ecx], dl
movzx eax, byte [ebp - 0x111]
add eax, 1
cdq
idiv dword [ebp - 0x134]
mov byte [ebp - 0x111], dl
jmp 0x40a42f
mov al, byte [ebp - 0x10]
mov byte [ebp - 0x136], al
mov cl, byte [ebp - 0xf]
mov byte [ebp - 0x135], cl
lea edx, [ebp - 0x110]
mov dword [ebp - 0x144], edx
mov dword [ebp - 0x13c], 0
jmp 0x40a53b
mov eax, dword [ebp - 0x13c]
add eax, 1
mov dword [ebp - 0x13c], eax
mov ecx, dword [ebp - 0x13c]
cmp ecx, dword [ebp + 0x28]
jge 0x40a653
movzx edx, byte [ebp - 0x136]
add edx, 1
and edx, 0x800000ff
jns 0x40a564
dec edx
or edx, 0xffffff00
inc edx
mov byte [ebp - 0x136], dl
movzx eax, byte [ebp - 0x136]
mov ecx, dword [ebp - 0x144]
movzx edx, byte [ecx + eax]
movzx eax, byte [ebp - 0x135]
add edx, eax
and edx, 0x800000ff
jns 0x40a594
dec edx
or edx, 0xffffff00
inc edx
mov byte [ebp - 0x135], dl
movzx ecx, byte [ebp - 0x135]
add ecx, dword [ebp - 0x144]
mov dword [ebp - 0x150], ecx
movzx edx, byte [ebp - 0x136]
add edx, dword [ebp - 0x144]
mov dword [ebp - 0x14c], edx
mov eax, dword [ebp - 0x14c]
mov cl, byte [eax]
mov byte [ebp - 0x145], cl
mov edx, dword [ebp - 0x14c]
mov eax, dword [ebp - 0x150]
mov cl, byte [eax]
mov byte [edx], cl
mov edx, dword [ebp - 0x150]
mov al, byte [ebp - 0x145]
mov byte [edx], al
movzx ecx, byte [ebp - 0x136]
mov edx, dword [ebp - 0x144]
movzx eax, byte [edx + ecx]
movzx ecx, byte [ebp - 0x135]
mov edx, dword [ebp - 0x144]
movzx ecx, byte [edx + ecx]
add eax, ecx
and eax, 0x800000ff
jns 0x40a61e
dec eax
or eax, 0xffffff00
inc eax
mov byte [ebp - 0x13d], al
movzx edx, byte [ebp - 0x13d]
mov eax, dword [ebp - 0x144]
movzx ecx, byte [eax + edx]
mov edx, dword [ebp + 0x24]
add edx, dword [ebp - 0x13c]
movzx eax, byte [edx]
xor eax, ecx
mov ecx, dword [ebp + 0x24]
add ecx, dword [ebp - 0x13c]
mov byte [ecx], al
jmp 0x40a52c
mov dl, byte [ebp - 0x136]
mov byte [ebp - 0x10], dl
mov al, byte [ebp - 0x135]
mov byte [ebp - 0xf], al
lea ecx, [ebp + 8]
call fcn.00401000
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00447258
mov esp, ebp
pop ebp
ret