Function at 0x40a114
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
je 0x40a114
jne 0x40a114
push 0x9d3870
push 0xb00784
mov dword [0x4443b4], 0x410bba
xchg edx, eax
sub al, 0x69
or dword [edi], 0x881846b6
inc edi
adc ecx, dword [edi]
mov dh, 0x4e
pop ds
mov byte [edi + 0x14], cl
movzx edx, byte [esi + 0x1e]
mov byte [edi + 0x15], dl
mov eax, dword [esi + 0x1c]
shr eax, 8
mov byte [edi + 0x16], al
movzx ecx, byte [esi + 0x1c]
mov byte [edi + 0x17], cl
push 0x40a2d7
ret
mov ebp, esp
sub esp, 0xc
mov eax, dword [0x471a1c]
je 0x40a308
jne 0x40a308
mov esi, dword [ebp - 0x818]
insd dword es:[edi], dx
shr ecx, 8
mov byte [edi + 2], cl
movzx edx, byte [esi + 8]
mov byte [edi + 3], dl
je 0x40a470
jne 0x40a470
mov eax, 0x697bf9d8
push ss
lodsb al, byte [esi]
lodsd eax, dword [esi]
mov byte [ebp - 9], al
lea edx, [ecx*8]
mov byte [ebp - 0xb], bl
mov ebx, eax
mov eax, edx
shr eax, 0x18
mov byte [ebp - 8], al
mov eax, edx
shr eax, 0x10
mov byte [ebp - 7], al
mov eax, edx
shr eax, 8
shr ebx, 8
push 0x40a505
ret
movzx eax, byte [esi + 0xa]
je 0x40a396
jne 0x40a396
push 0x102258c8
mov dword [0x111dc784], eax
pmullw mm5, qword [edx + 0x50]
push es
cli
dec eax
iretd
shr edx, 8
mov byte [edi + 6], dl
je 0x40a432
jne 0x40a432
push 0x100416c4
push 0xb19968
push 0x9dec34
mov edx, 0x67dc933f
pop ebx
call fcn.004306b1
push 0x40a1de
ret
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov esi, dword [ebp + 8]
je 0x40a533
jne 0x40a533
mov dword [0x112ae308], eax
call dword [0x100bd410]
cmp edi, 0x884
mov ecx, 0xcbdbefcc
push esi
call fcn.00409f60
movzx edx, byte [esi + 0xb]
je 0x40a48b
jne 0x40a48b
fst dword [edi + 0x11e8]
mov dword [0x699d3608], eax
mov eax, dword [0x1153c9bc]
mov edx, dword [ecx + ebx + 0x930]
invalid
mov byte [edi + 1], al
mov ecx, dword [esi + 8]
push 0x40a131
ret
shr ecx, 8
mov byte [edi + 0xe], cl
movzx edx, byte [esi + 0x14]
mov byte [edi + 0xf], dl
push 0x40a365
ret
mov eax, dword [esi + 0x10]
shr eax, 8
mov byte [edi + 0xa], al
movzx ecx, byte [esi + 0x10]
mov byte [edi + 0xb], cl
movzx edx, byte [esi + 0x17]
mov byte [edi + 0xc], dl
movzx eax, byte [esi + 0x16]
mov byte [edi + 0xd], al
mov ecx, dword [esi + 0x14]
jmp 0x40a3c4
movzx eax, byte [esi + 0xc]
mov byte [edi + 7], al
movzx ecx, byte [esi + 0x13]
mov byte [edi + 8], cl
movzx edx, byte [esi + 0x12]
mov byte [edi + 9], dl
je 0x40a3f3
jne 0x40a3f3
push 0xa52bcc
call dword [fcn.0040c110]
mov dword [ebp - 0x80], edi
mov dword [esi + 0x118], 0x102f4868
cmc
sti
imul ecx, dword [edi - 3], 0xf46b60f
movzx eax, byte [esi + 0xf]
mov byte [edi + 4], al
je 0x40a4d4
jne 0x40a4d4
mov dword [0x69a22b88], eax
mov ebx, 0x1788ccef
mov byte [edi], dl
je 0x40a1bb
jne 0x40a1bb
mov ecx, dword [0xd11a50]
jmp dword [ecx*4 + 0x413df0]
mov edx, dword [esi + 0xc]
jmp 0x40a218
movzx ecx, byte [esi + 0xe]
mov byte [edi + 5], cl
je 0x40a4b6
jne 0x40a4b6
mov dword [esi + 0x1c], 0x79ea30
mov esi, dword [0x432270]
movdqa xmm1, xmmword [edx + 0x60]
or esi, dword [ebp - 0xa0]
push 0x451960
push ds
and ecx, 0x3f
mov edi, dword [ebp + 0xc]
push 0x40a283
ret
mov ecx, dword [esi]
mov eax, dword [esi + 4]
add eax, eax
add eax, eax
add eax, eax
mov edx, ecx
shr edx, 0x1d
or eax, edx
mov ebx, eax
shr ebx, 0x18
mov byte [ebp - 0xc], bl
mov ebx, eax
shr ebx, 0x10
push 0x40a152
ret