Function at 0x454700
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov dl, byte [edi + 3]
mov cl, byte [esi + 3]
mov al, dl
xor al, cl
test al, 0x3f
jne 0x4547bd
mov al, dl
shr cl, 6
shr al, 6
and cl, 1
and al, 1
cmp al, cl
jne 0x4547bd
test al, al
je 0x454877
cmp dword [esi + 0x10], 0
je case.0x454798.19
mov eax, dword [esi + 4]
test eax, eax
je case.0x454798.19
movzx ebx, word [esi + 0xc]
mov ecx, ebx
cmp eax, ecx
jbe 0x454775
xor edx, edx
div ecx
xor ecx, ecx
cmp ecx, edx
sbb ecx, ecx
neg ecx
add cx, ax
mov eax, ebx
movzx ecx, cx
imul ecx, eax
movzx edx, cx
jmp 0x454777
mov edx, ebx
mov ecx, edi
call fcn.00452170
movzx eax, byte [edi + 3]
and eax, 0x3f
add eax, 0xfffffffe
cmp eax, 0x28
ja case.0x454798.19
movzx eax, byte [eax + 0x454964]
jmp dword [eax*4 + 0x454950]
movzx eax, word [esi + 0xe]
imul eax, dword [esi + 4]
push 0
push eax
push dword [esi + 0x10]
call fcn.004530e0
add esp, 0xc
test eax, eax
jne case.0x454798.19
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
xor ebx, ebx
cmp dword [esi + 4], ebx
jbe case.0x454798.19
lea ecx, [ecx]
mov eax, dword [esi + 0x10]
mov ecx, edi
push 0
push 0
push dword [eax + ebx*4]
call fcn.004530e0
add esp, 0xc
test eax, eax
je 0x4547bd
inc ebx
cmp ebx, dword [esi + 4]
jb 0x4547d0
jmp case.0x454798.19
xor ebx, ebx
cmp dword [esi + 4], ebx
jbe case.0x454798.19
mov eax, dword [esi + 0x10]
mov ecx, edi
push 0
push 0
push dword [eax + ebx*4]
call fcn.004530e0
add esp, 0xc
test eax, eax
je 0x4547bd
inc ebx
cmp ebx, dword [esi + 4]
jb 0x4547f7
jmp case.0x454798.19
xor ebx, ebx
cmp dword [esi + 4], ebx
jbe case.0x454798.19
mov edi, edi
mov eax, dword [esi + 0x10]
lea ecx, [ebp - 4]
push ecx
mov ecx, edi
push dword [eax + ebx*8]
push dword [eax + ebx*8 + 4]
call fcn.004530e0
add esp, 0xc
cmp dword [ebp - 4], 0
je 0x4547bd
inc ebx
cmp ebx, dword [esi + 4]
jb 0x454820
mov al, byte [edi + 3]
test al, 0x40
je case.0x454890.19
and al, 0x3f
cmp al, 1
je case.0x454890.19
movzx eax, word [esi + 0xc]
test ax, ax
je case.0x454890.19
mov word [edi + 0xc], ax
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movzx eax, dl
and eax, 0x3f
add eax, 0xfffffffe
cmp eax, 0x28
ja case.0x454890.19
movzx eax, byte [eax + 0x4549b4]
jmp dword [eax*4 + 0x454990]
mov al, byte [esi + 4]
mov byte [edi + 4], al
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ax, word [esi + 4]
mov word [edi + 4], ax
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 8]
mov dword [edi + 8], eax
mov eax, dword [esi + 0xc]
mov dword [edi + 0xc], eax
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 8]
mov dword [edi + 8], eax
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 8]
mov dword [edi + 8], eax
mov eax, dword [esi + 0xc]
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0x10]
mov dword [edi + 0x10], eax
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esi + 4]
mov ecx, edi
push 0
push 0
call fcn.004522c0
add esp, 8
test eax, eax
jne case.0x454890.19
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esi + 8]
mov ecx, edi
push 0
push dword [esi + 4]
call fcn.004522c0
add esp, 8
test eax, eax
je 0x4547bd
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret