Function at 0x454438
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffeb4
push ebx
push esi
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov byte [ebp - 1], al
mov byte [ebp - 0x11], 0x20
mov eax, dword [ebp + 0xc]
dec eax
xor edx, edx
mov dl, byte [ebp - 0x11]
mov ecx, edx
cdq
idiv ecx
inc eax
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
test eax, eax
jle 0x4549e2
mov dword [ebp - 0x1c], eax
mov edi, 1
cmp edi, dword [ebp - 0x10]
jne 0x45448f
mov eax, dword [ebp + 0xc]
dec eax
xor edx, edx
mov dl, byte [ebp - 0x11]
mov ecx, edx
cdq
idiv ecx
inc edx
mov byte [ebp - 0x13], dl
jmp 0x454495
mov al, byte [ebp - 0x11]
mov byte [ebp - 0x13], al
mov bl, byte [ebp - 0x13]
test bl, bl
jbe 0x4544c2
mov byte [ebp - 0x12], 1
mov eax, edi
dec eax
xor edx, edx
mov dl, byte [ebp - 0x11]
imul edx
xor edx, edx
mov dl, byte [ebp - 0x12]
add eax, edx
mov edx, dword [ebp - 0xc]
cmp byte [edx + eax - 1], 0xff
jne 0x4544c2
inc byte [ebp - 0x12]
dec bl
jne 0x4544a0
xor eax, eax
mov al, byte [ebp - 0x12]
xor edx, edx
mov dl, byte [ebp - 0x13]
inc edx
cmp eax, edx
je 0x4549d8
mov ebx, edi
dec ebx
xor eax, eax
mov al, byte [ebp - 0x11]
imul ebx, eax
add ebx, dword [ebp - 8]
cmp byte [ebp - 1], 0
jg 0x454795
cmp byte [ebp - 1], 0
jne 0x454562
mov eax, dword [ebp + 8]
mov eax, dword [eax]
add eax, 0xffff
cmp ebx, eax
jle 0x454562
mov edx, 0x4549f8
mov eax, 0x49bbfc
call fcn.00404918
mov esi, ebx
test esi, esi
jns 0x45451c
add esi, 0xffff
sar esi, 0x10
mov edx, dword [0x48d638]
mov dl, byte [edx + esi]
call fcn.00403198
mov edx, 0x454a0c
call fcn.00404918
mov edx, 0xf
sub edx, esi
mov ecx, dword [0x48d638]
mov dl, byte [ecx + edx]
call fcn.00403198
mov dl, 0x43
call fcn.00403198
call fcn.004032bc
mov eax, esi
shl eax, 0x10
mov edx, dword [ebp + 8]
mov dword [edx], eax
cmp byte [ebp - 1], 0xff
jne 0x4546a7
mov eax, dword [ebp + 8]
mov eax, dword [eax]
add eax, 0xffff
cmp ebx, eax
jle 0x4546a7
mov eax, ebx
test eax, eax
jns 0x454589
add eax, 0xffff
sar eax, 0x10
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 4
xor eax, eax
call fcn.0040fe88
mov edx, 0x454a18
mov eax, 0x49bbfc
call fcn.00404918
push eax
lea eax, [ebp - 0xe4]
mov edx, dword [0x48d590]
mov ecx, 0x19
call fcn.00403310
lea edx, [ebp - 0xe4]
pop eax
call fcn.0040321c
call fcn.00402c54
mov si, 6
mov eax, dword [0x48d590]
mov al, byte [eax]
call fcn.00411e9c
and eax, 0xff
shl eax, 4
push eax
mov eax, dword [0x48d590]
mov al, byte [eax + 1]
call fcn.00411e9c
and eax, 0xff
pop edx
add dx, ax
add si, dx
mov eax, dword [0x48d590]
mov al, byte [eax + 2]
call fcn.00411e9c
and eax, 0xff
shl eax, 4
push eax
mov eax, dword [0x48d590]
mov al, byte [eax + 3]
call fcn.00411e9c
and eax, 0xff
pop edx
add dx, ax
add si, dx
mov eax, esi
not al
inc eax
and eax, 0xff
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 2
xor eax, eax
call fcn.0040fe88
lea eax, [ebp - 0xe4]
mov edx, dword [0x48d590]
mov ecx, 0x19
call fcn.00403310
lea edx, [ebp - 0xe4]
mov eax, 0x49bbfc
call fcn.0040321c
call fcn.004032bc
mov eax, ebx
test eax, eax
jns 0x45469c
add eax, 0xffff
sar eax, 0x10
shl eax, 0x10
mov edx, dword [ebp + 8]
mov dword [edx], eax
mov edx, 0x454a24
lea eax, [ebp - 0x81]
call fcn.00405c48
xor eax, eax
mov al, byte [ebp - 0x13]
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 2
xor eax, eax
call fcn.0040fe88
mov eax, dword [0x48d590]
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
movzx eax, bx
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 4
xor eax, eax
call fcn.0040fe88
mov eax, dword [0x48d590]
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
push 0x454a28
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
mov eax, dword [0x48d590]
mov al, byte [eax]
call fcn.00411e9c
and eax, 0xff
mov ebx, eax
shl ebx, 4
xor eax, eax
mov al, byte [ebp - 0x13]
add bx, ax
mov eax, dword [0x48d590]
mov al, byte [eax + 1]
call fcn.00411e9c
and eax, 0xff
add bx, ax
mov eax, dword [0x48d590]
mov al, byte [eax + 2]
call fcn.00411e9c
and eax, 0xff
shl eax, 4
add bx, ax
mov eax, dword [0x48d590]
mov al, byte [eax + 3]
call fcn.00411e9c
and eax, 0xff
add bx, ax
mov word [ebp - 0x16], bx
jmp 0x4548a6
mov edx, 0x454a2c
lea eax, [ebp - 0x81]
call fcn.00405c48
movsx eax, byte [ebp - 1]
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
call fcn.004123c0
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
xor eax, eax
mov al, byte [ebp - 0x13]
movsx edx, byte [ebp - 1]
add eax, edx
inc eax
inc eax
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 2
xor eax, eax
call fcn.0040fe88
mov eax, dword [0x48d590]
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
mov eax, dword [0x48d590]
mov al, byte [eax]
call fcn.00411e9c
and eax, 0xff
mov esi, eax
shl esi, 4
mov eax, dword [0x48d590]
mov al, byte [eax + 1]
call fcn.00411e9c
and eax, 0xff
add si, ax
mov word [ebp - 0x16], si
mov dword [ebp - 0xc8], ebx
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov al, byte [ebp - 1]
inc eax
mov edx, eax
add edx, edx
xor eax, eax
call fcn.0040fe88
mov eax, dword [0x48d590]
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
mov bl, byte [ebp - 1]
test bl, bl
jb 0x4548a6
inc ebx
mov esi, dword [0x48d590]
mov al, byte [esi]
call fcn.00411e9c
and eax, 0xff
shl eax, 4
push eax
mov al, byte [esi + 1]
call fcn.00411e9c
and eax, 0xff
pop edx
add dx, ax
add word [ebp - 0x16], dx
add esi, 2
dec bl
jne 0x45487a
mov bl, byte [ebp - 0x13]
test bl, bl
jbe 0x454924
mov byte [ebp - 0x12], 1
lea esi, [ebp - 0xc2]
mov eax, edi
dec eax
xor edx, edx
mov dl, byte [ebp - 0x11]
imul edx
xor edx, edx
mov dl, byte [ebp - 0x12]
add eax, edx
mov edx, dword [ebp - 0xc]
movzx edx, byte [edx + eax - 1]
shr edx, 4
mov ecx, dword [0x48d638]
mov dl, byte [ecx + edx]
mov byte [esi], dl
mov edx, dword [ebp - 0xc]
movzx eax, byte [edx + eax - 1]
and eax, 0xf
mov edx, dword [0x48d638]
mov al, byte [edx + eax]
mov byte [esi + 1], al
mov al, byte [esi]
call fcn.00411e9c
and eax, 0xff
shl eax, 4
push eax
mov al, byte [esi + 1]
call fcn.00411e9c
and eax, 0xff
pop edx
add dx, ax
add word [ebp - 0x16], dx
inc byte [ebp - 0x12]
add esi, 2
dec bl
jne 0x4548b7
xor eax, eax
mov al, byte [ebp - 0x12]
add eax, eax
mov byte [ebp + eax - 0xc4], 0
lea eax, [ebp - 0xc2]
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
cmp byte [ebp - 1], 0
jg 0x454975
mov al, byte [ebp - 0x16]
not al
inc eax
and eax, 0xff
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 2
xor eax, eax
call fcn.0040fe88
jmp 0x45499b
mov al, byte [ebp - 0x16]
not al
and eax, 0xff
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 2
xor eax, eax
call fcn.0040fe88
mov eax, dword [0x48d590]
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
lea eax, [ebp - 0x14c]
lea edx, [ebp - 0x81]
mov ecx, 0x65
call fcn.00403310
lea edx, [ebp - 0x14c]
mov eax, 0x49bbfc
call fcn.0040321c
call fcn.004032bc
inc edi
dec dword [ebp - 0x1c]
jne 0x454476
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8