Function at 0x454050
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb8
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
mov eax, edx
mov dword [ebp - 0x9c], ecx
lea edx, [ebp - 0x38]
lea ecx, [ebp - 0x38]
sar esi, 1
push edi
mov dword [ebp - 0xb8], ecx
lea ecx, [ebp - 0x6c]
push esi
mov dword [ebp - 0xb4], ecx
push ecx
mov ecx, eax
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0x80], esi
call fcn.00453dc0
lea edi, [ebp - 0x38]
mov dword [ebp - 0x84], 0x2000
push esi
mov edx, 0x2000
mov dword [ebp - 0x74], edi
mov ecx, edi
call fcn.00453c70
mov ebx, eax
add esp, 0xc
mov dword [ebp - 0x78], ebx
test ebx, ebx
jns 0x4540f5
mov eax, dword [ebp - 0x9c]
lea edi, [ebp - 0x6c]
xor ecx, ecx
mov dword [ebp - 0x74], edi
push esi
mov edx, 0x2000
mov word [eax], cx
mov ecx, edi
call fcn.00453c70
mov ebx, eax
mov dword [ebp - 0x88], 1
add esp, 4
mov dword [ebp - 0x78], ebx
jmp 0x4540fd
xor eax, eax
mov dword [ebp - 0x88], eax
xor ecx, ecx
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0x98], ecx
mov eax, 1
mov dword [ebp - 0x8c], eax
nop word [eax + eax]
movsx ecx, word [eax*2 + 0x92acd0]
mov eax, dword [edi + esi*4]
mov edx, eax
mov dword [ebp - 0xac], eax
mov eax, ecx
shl eax, 4
mov dword [ebp - 0x94], ecx
mov dword [ebp - 0x70], edx
cmp esi, 8
jne 0x45425c
movsx esi, ax
sar eax, 0xf
inc eax
movzx ecx, dx
sar eax, 1
mov dword [ebp - 0x70], eax
mov eax, edx
sar eax, 0x10
imul eax, esi
imul ecx, esi
sar ecx, 0x10
add ecx, eax
mov eax, dword [ebp - 0x70]
imul eax, edx
add ecx, eax
add ecx, dword [edi + 0x1c]
movzx edx, cx
mov eax, ecx
sar eax, 0x10
imul eax, esi
imul edx, esi
sar edx, 0x10
add edx, eax
mov eax, dword [ebp - 0x70]
imul eax, ecx
add edx, eax
add edx, dword [edi + 0x18]
movzx ecx, dx
mov eax, edx
sar eax, 0x10
imul eax, esi
imul ecx, esi
sar ecx, 0x10
add ecx, eax
mov eax, dword [ebp - 0x70]
imul eax, edx
add ecx, eax
add ecx, dword [edi + 0x14]
movzx edx, cx
mov eax, ecx
sar eax, 0x10
imul eax, esi
imul edx, esi
sar edx, 0x10
add edx, eax
mov eax, dword [ebp - 0x70]
imul eax, ecx
add edx, eax
add edx, dword [edi + 0x10]
movzx ecx, dx
mov eax, edx
sar eax, 0x10
imul eax, esi
imul ecx, esi
sar ecx, 0x10
add ecx, eax
mov eax, dword [ebp - 0x70]
imul eax, edx
add ecx, eax
add ecx, dword [edi + 0xc]
movzx edx, cx
mov eax, ecx
sar eax, 0x10
imul eax, esi
imul edx, esi
sar edx, 0x10
add edx, eax
mov eax, dword [ebp - 0x70]
imul eax, ecx
add edx, eax
add edx, dword [edi + 8]
movzx ecx, dx
mov eax, edx
sar eax, 0x10
imul ecx, esi
imul eax, esi
sar ecx, 0x10
add ecx, eax
mov eax, dword [ebp - 0x70]
imul eax, edx
add ecx, eax
add ecx, dword [edi + 4]
movzx edx, cx
mov eax, ecx
imul edx, esi
sar eax, 0x10
imul eax, esi
mov esi, dword [ebp - 0x80]
sar edx, 0x10
add edx, eax
mov eax, dword [ebp - 0x70]
imul eax, ecx
mov ecx, dword [ebp - 0x94]
add edx, eax
lea eax, [esi - 1]
add edx, dword [edi]
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x90], eax
jmp 0x4542bd
add esi, 0xffffffff
mov dword [ebp - 0x90], esi
js 0x4542ba
movsx ecx, ax
sar eax, 0xf
inc eax
mov dword [ebp - 0x7c], ecx
sar eax, 1
mov dword [ebp - 0x70], eax
mov ebx, eax
nop dword [eax + eax]
movzx ecx, dx
mov eax, edx
imul ecx, dword [ebp - 0x7c]
sar eax, 0x10
imul eax, dword [ebp - 0x7c]
imul edx, ebx
sar ecx, 0x10
add ecx, dword [edi + esi*4]
add ecx, eax
add edx, ecx
sub esi, 1
jns 0x454280
mov eax, dword [ebp - 0x90]
mov ebx, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x94]
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x90], eax
mov esi, dword [ebp - 0x80]
mov eax, dword [ebp - 0x98]
test ebx, ebx
jg 0x4542cd
cmp edx, eax
jge 0x4542dd
test ebx, ebx
js 0x454578
neg eax
cmp edx, eax
jg 0x454578
xor eax, eax
mov dword [ebp - 0xa0], 0xffffff00
test edx, edx
mov dword [ebp - 0x7c], 0
sete al
mov dword [ebp - 0x98], eax
nop dword [eax + eax]
mov eax, dword [ebp - 0x84]
add eax, ecx
mov ecx, eax
and eax, 1
sar ecx, 1
add ecx, eax
mov eax, dword [ebp - 0xac]
mov edi, ecx
mov dword [ebp - 0xa4], ecx
shl edi, 4
cmp esi, 8
jne 0x454433
movzx edx, ax
mov ecx, eax
sar ecx, 0x10
movsx esi, di
imul edx, esi
imul ecx, esi
sar edi, 0xf
inc edi
sar edi, 1
sar edx, 0x10
add edx, ecx
mov ecx, edi
imul ecx, eax
mov eax, dword [ebp - 0x74]
add edx, ecx
add edx, dword [eax + 0x1c]
movzx ecx, dx
mov eax, edx
sar eax, 0x10
imul eax, esi
imul ecx, esi
sar ecx, 0x10
add ecx, eax
mov eax, edi
imul eax, edx
add ecx, eax
mov eax, dword [ebp - 0x74]
add ecx, dword [eax + 0x18]
movzx edx, cx
mov eax, ecx
sar eax, 0x10
imul eax, esi
imul edx, esi
sar edx, 0x10
add edx, eax
mov eax, edi
imul eax, ecx
add edx, eax
mov eax, dword [ebp - 0x74]
add edx, dword [eax + 0x14]
movzx ecx, dx
mov eax, edx
sar eax, 0x10
imul eax, esi
imul ecx, esi
sar ecx, 0x10
add ecx, eax
mov eax, edi
imul eax, edx
add ecx, eax
mov eax, dword [ebp - 0x74]
add ecx, dword [eax + 0x10]
movzx edx, cx
mov eax, ecx
sar eax, 0x10
imul eax, esi
imul edx, esi
sar edx, 0x10
add edx, eax
mov eax, edi
imul eax, ecx
add edx, eax
mov eax, dword [ebp - 0x74]
add edx, dword [eax + 0xc]
movzx ecx, dx
mov eax, edx
sar eax, 0x10
imul ecx, esi
imul eax, esi
sar ecx, 0x10
add ecx, eax
mov eax, edi
imul eax, edx
add ecx, eax
mov eax, dword [ebp - 0x74]
add ecx, dword [eax + 8]
movzx edx, cx
mov eax, ecx
imul edx, esi
sar edx, 0x10
sar eax, 0x10
imul eax, esi
add edx, eax
mov eax, edi
imul eax, ecx
add edx, eax
mov eax, dword [ebp - 0x74]
add edx, dword [eax + 4]
movzx eax, dx
mov ecx, edx
imul eax, esi
sar ecx, 0x10
imul ecx, esi
imul edi, edx
sar eax, 0x10
add eax, ecx
mov ecx, dword [ebp - 0x74]
add eax, edi
add eax, dword [ecx]
jmp 0x45446c
mov esi, dword [ebp - 0x90]
test esi, esi
js 0x454475
movsx ebx, di
sar edi, 0xf
inc edi
sar edi, 1
movzx edx, ax
mov ecx, eax
imul edx, ebx
sar ecx, 0x10
imul ecx, ebx
imul eax, edi
sar edx, 0x10
add edx, ecx
mov ecx, dword [ebp - 0x74]
add edx, dword [ecx + esi*4]
add eax, edx
sub esi, 1
jns 0x454446
mov ebx, dword [ebp - 0x78]
mov ecx, dword [ebp - 0xa4]
mov edx, dword [ebp - 0x70]
test ebx, ebx
jg 0x45447f
test eax, eax
jns 0x454485
test ebx, ebx
js 0x45449b
test eax, eax
jg 0x45449b
mov esi, dword [ebp - 0x7c]
mov edx, eax
mov edi, dword [ebp - 0xa0]
mov dword [ebp - 0x94], ecx
mov dword [ebp - 0x70], edx
jmp 0x4544c6
mov esi, dword [ebp - 0x7c]
mov ebx, eax
mov edi, dword [ebp - 0xa0]
mov eax, 0x80
mov dword [ebp - 0x84], ecx
mov ecx, esi
sar eax, cl
mov ecx, dword [ebp - 0x94]
add edi, eax
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0xa0], edi
inc esi
mov dword [ebp - 0x7c], esi
cmp esi, 3
mov esi, dword [ebp - 0x80]
jl 0x454300
mov ecx, ebx
mov eax, ebx
sub ecx, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x10000
jge 0x4544f7
test ecx, ecx
je 0x454501
mov eax, ecx
shl ebx, 5
sar eax, 1
add eax, ebx
jmp 0x4544fc
sar ecx, 5
mov eax, ebx
cdq
idiv ecx
add edi, eax
mov esi, dword [ebp - 0x8c]
mov ecx, 0x7fff
mov edx, esi
shl edx, 8
add edx, edi
cmp edx, ecx
movzx eax, dx
mov edx, dword [ebp - 0x88]
cmovl ecx, eax
mov eax, dword [ebp - 0x9c]
mov word [eax + edx*2], cx
inc edx
mov dword [ebp - 0x88], edx
cmp edx, dword [ebp + 8]
jge 0x454691
mov eax, edx
mov ebx, 0x1000
and eax, 1
mov edi, dword [ebp + eax*4 - 0xb8]
movsx eax, word [esi*2 + 0x92acce]
mov esi, dword [ebp - 0x80]
mov dword [ebp - 0x84], eax
mov eax, edx
and eax, 2
mov dword [ebp - 0x74], edi
shl eax, 0xc
sub ebx, eax
mov eax, dword [ebp - 0x8c]
mov dword [ebp - 0x78], ebx
jmp 0x454120
mov eax, dword [ebp - 0x8c]
mov ebx, edx
inc eax
mov dword [ebp - 0x84], ecx
xor ecx, ecx
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x98], ecx
cmp eax, 0x80
jle 0x454120
mov eax, dword [ebp - 0xa8]
inc eax
mov dword [ebp - 0xa8], eax
cmp eax, 0x10
jg 0x454656
mov ecx, eax
mov edx, 1
shl edx, cl
mov eax, 0x10000
mov ecx, dword [ebp - 0xb0]
sub eax, edx
mov edx, dword [ebp + 8]
push eax
call fcn.00454d80
mov ecx, dword [ebp - 0xb0]
lea eax, [ebp - 0x6c]
push esi
push eax
lea edx, [ebp - 0x38]
call fcn.00453dc0
lea edi, [ebp - 0x38]
mov dword [ebp - 0x84], 0x2000
push esi
mov edx, 0x2000
mov dword [ebp - 0x74], edi
mov ecx, edi
call fcn.00453c70
mov ebx, eax
add esp, 0x10
mov dword [ebp - 0x78], ebx
test ebx, ebx
jns 0x454649
mov eax, dword [ebp - 0x9c]
lea edi, [ebp - 0x6c]
xor ecx, ecx
mov dword [ebp - 0x74], edi
push esi
mov edx, 0x2000
mov word [eax], cx
mov ecx, edi
call fcn.00453c70
mov ebx, eax
mov dword [ebp - 0x88], 1
add esp, 4
mov dword [ebp - 0x78], ebx
jmp 0x45410f
xor eax, eax
mov dword [ebp - 0x88], eax
jmp 0x45410f
mov ebx, dword [ebp + 8]
mov eax, 0x8000
cdq
lea ecx, [ebx + 1]
idiv ecx
mov edx, dword [ebp - 0x9c]
mov ecx, 1
mov word [edx], ax
cmp ebx, ecx
jle 0x454691
nop word [eax + eax]
mov ax, word [edx + ecx*2 - 2]
add ax, word [edx]
mov word [edx + ecx*2], ax
inc ecx
cmp ecx, ebx
jl 0x454680
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004575d6
mov esp, ebp
pop ebp
ret