Function at 0x45eaa0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 8
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx + 0x11c]
mov ecx, dword [esp + 0x18]
push ebx
push ebp
mov ebp, dword [esp + 0x1c]
push esi
movzx esi, byte [ebp]
sub eax, esi
push edi
movzx edi, byte [ecx + ebp]
mov ebx, eax
mov eax, 1
cmp dword [esp + 0x20], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x24], esi
mov dword [esp + 0x10], edi
jne 0x45eae2
add dword [esp + 0x24], ebx
xor ebx, ebx
cmp dword [esp + 0x2c], 0
jle 0x45ecf6
mov edx, dword [esp + 0x30]
lea eax, [edx + edx]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fmul dword [0x4a88ec]
fidiv dword [esp + 0x2c]
fadd dword [0x489614]
call fcn.0046d390
cmp eax, esi
jg 0x45eb1b
mov dword [esp + 0x2c], esi
jmp 0x45eb44
cmp eax, edi
jl 0x45eb25
mov dword [esp + 0x2c], edi
jmp 0x45eb44
xor ecx, ecx
cmp esi, eax
jge 0x45eb3c
jmp 0x45eb30
movzx edx, byte [ecx + ebp + 1]
add ecx, 1
cmp edx, eax
jl 0x45eb30
movzx eax, byte [ecx + ebp]
mov dword [esp + 0x2c], eax
mov edi, dword [esp + 0x1c]
mov esi, dword [edi + 0x120]
mov edx, dword [esp + 0x24]
add esi, ebx
lea ecx, [ebx + edx]
xor ebx, ebx
cmp ecx, dword [esp + 0x10]
mov dword [esp + 0x20], ebx
jge 0x45ec3e
add edi, 0x8c
jmp 0x45eb74
mov edx, dword [esp + 0x24]
cmp ebx, 6
jge 0x45ecfe
mov eax, dword [esp + 0x2c]
mov dword [edi + 8], ecx
add ecx, dword [esp + 0x14]
mov ebx, edx
sub eax, ecx
sub ebx, esi
cmp eax, ebx
mov dword [edi + 0xc], ecx
jl 0x45ebd6
mov eax, ecx
sub eax, esi
and eax, 0xfffffffe
add eax, edx
movzx edx, byte [ebp]
cmp eax, edx
jg 0x45ebaa
mov eax, edx
jmp 0x45ebd0
mov edx, dword [esp + 0x28]
movzx esi, byte [edx + ebp]
cmp esi, eax
jg 0x45ebc0
mov eax, esi
jmp 0x45ebd0
movzx esi, byte [edx + ebp - 1]
sub edx, 1
cmp esi, eax
jg 0x45ebc0
movzx eax, byte [edx + ebp]
mov edx, dword [esp + 0x24]
sub eax, ecx
mov ebx, dword [esp + 0x20]
mov esi, ecx
sub esi, edx
lea edx, [esi + eax + 1]
and edx, 0xfffffffe
test eax, eax
jg 0x45ebf1
sub ebx, 1
sub edi, 0x18
jmp 0x45ec04
mov esi, ecx
sub esi, edx
mov dword [edi], esi
add esi, eax
mov dword [edi + 0x10], edx
mov dword [edi + 0x14], eax
mov dword [edi + 4], esi
add ecx, eax
mov edx, dword [esp + 0x1c]
mov esi, dword [edx + 0x120]
mov eax, ecx
sub eax, dword [esp + 0x2c]
cdq
xor eax, edx
sub eax, edx
cmp eax, 3
jge 0x45ec26
mov eax, dword [esp + 0x10]
mov dword [esp + 0x2c], eax
add ebx, 1
add edi, 0x18
cmp ecx, dword [esp + 0x10]
mov dword [esp + 0x20], ebx
jl 0x45eb70
mov edi, dword [esp + 0x1c]
sub ebx, 1
lea ecx, [ebx + ebx*2]
cmp dword [edi + ecx*8 + 0xa0], 3
lea eax, [edi + 0x8c]
jge 0x45ec5b
test ebx, ebx
jle 0x45ec5b
sub ebx, 1
add ebx, 1
xor eax, eax
cmp dword [edi + 0x94], eax
mov dword [edi + 0x124], ebx
jle 0x45ec7f
mov edi, edi
mov byte [edi + eax + 0x4c], al
add eax, 1
cmp eax, dword [edi + 0x94]
jl 0x45ec70
cmp dword [edi + 0x124], 0
mov dword [esp + 0x2c], 0
jle 0x45ecf4
lea esi, [edi + 0x98]
mov ebx, dword [esi]
mov ecx, dword [esi - 4]
mov edx, dword [esi - 0xc]
mov edi, dword [esi + 8]
mov ebp, dword [esp + 0x1c]
mov eax, ebx
sub eax, ecx
test eax, eax
mov dword [esp + 0x28], edx
jle 0x45ecc5
push eax
lea ecx, [ecx + ebp + 0x4c]
push 0xffffffffffffffff
push ecx
call fcn.0046efc0
mov edx, dword [esp + 0x34]
add esp, 0xc
xor eax, eax
test edi, edi
jle 0x45ecde
lea ecx, [ebx + ebp + 0x4c]
nop
mov bl, dl
add bl, al
mov byte [ecx + eax], bl
add eax, 1
cmp eax, edi
jl 0x45ecd0
mov eax, dword [esp + 0x2c]
add eax, 1
add esi, 0x18
cmp eax, dword [ebp + 0x124]
mov dword [esp + 0x2c], eax
jl 0x45ec96
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 8
ret