Function at 0x89fa18
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffebc
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov dword [ebp - 0x110], edx
mov dword [ebp - 4], eax
xor edx, edx
push ebp
push 0x89feff
push dword fs:[edx]
mov dword fs:[edx], esp
xor edx, edx
push ebp
push 0x89feee
push dword fs:[edx]
mov dword fs:[edx], esp
call sub.kernel32.dll_GetTickCount
xor edx, edx
mov dword [ebp - 0x128], eax
mov dword [ebp - 0x124], edx
mov eax, dword [ebp - 0x110]
mov edx, dword [eax]
call dword [edx + 0xc]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x110]
mov edx, dword [eax]
call dword [edx + 8]
mov dword [ebp - 0x118], eax
mov eax, 0x64
sub eax, dword [ebp + 0x10]
mov dword [ebp + 0x10], eax
mov edx, dword [ebp - 0x110]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x28]
mov eax, dword [ebp - 4]
mov byte [eax + 0x444], 0
push ebp
mov esi, dword [ebp - 0x118]
dec esi
push esi
push dword [ebp + 0x18]
push dword [ebp + 0x14]
mov eax, dword [ebp - 4]
push eax
push 0x89f8ec
xor ecx, ecx
mov edx, 2
mov eax, 1
call fcn.0089f8fc
pop ecx
mov ebx, eax
mov eax, dword [ebp - 4]
mov dword [eax + 0x43c], ebx
mov eax, ebx
call fcn.0042c4bc
mov eax, dword [ebp - 0x118]
push eax
push 3
mov ecx, dword [ebp - 0xc]
mov dl, 1
mov eax, dword [0x62a81c]
call fcn.00633058
mov dword [ebp - 0x114], eax
test esi, esi
jl 0x89fb78
inc esi
mov dword [ebp - 0x13c], esi
mov dword [ebp - 0x11c], 0
mov edx, dword [ebp - 0x11c]
mov eax, dword [ebp - 0x110]
mov ecx, dword [eax]
call dword [ecx]
mov edi, eax
mov edx, dword [ebp - 0x11c]
mov eax, dword [ebp - 0x114]
mov ecx, dword [eax]
call dword [ecx]
mov ebx, eax
mov esi, dword [ebp - 0xc]
dec esi
test esi, esi
jl 0x89fb6a
inc esi
xor eax, eax
mov al, byte [edi + 2]
imul eax, eax, 0x15
xor edx, edx
mov dl, byte [edi + 1]
imul edx, edx, 0x47
add eax, edx
xor edx, edx
mov dl, byte [edi]
shl edx, 3
add eax, edx
mov ecx, 0x64
xor edx, edx
div ecx
mov byte [ebx], al
add edi, 3
inc ebx
dec esi
jne 0x89fb3d
inc dword [ebp - 0x11c]
dec dword [ebp - 0x13c]
jne 0x89fb10
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x434], edx
mov eax, dword [ebp - 4]
mov dword [eax + 0x438], 0x14
push dword [ebp + 0xc]
push dword [ebp + 8]
xor edx, edx
mov eax, dword [ebp - 0x114]
call fcn.005f3df8
push ebp
push 0x3fe00000
push 0
call fcn.0089f9b4
pop ecx
mov eax, dword [ebp - 0x118]
dec eax
test eax, eax
jl 0x89fc21
inc eax
mov dword [ebp - 0x13c], eax
mov dword [ebp - 0x11c], 0
mov edx, dword [ebp - 0x11c]
mov eax, dword [ebp - 0x114]
mov ecx, dword [eax]
call dword [ecx]
mov ebx, eax
mov esi, dword [ebp - 0xc]
dec esi
test esi, esi
jl 0x89fc13
inc esi
xor eax, eax
mov al, byte [ebx]
mov edx, 0xff
sub edx, eax
xor eax, eax
mov al, byte [ebp + edx - 0x10c]
mov edx, 0xff
sub edx, eax
sub edx, dword [ebp + 0x10]
xor eax, eax
call fcn.00437fc0
mov byte [ebx], al
inc ebx
dec esi
jne 0x89fbe8
inc dword [ebp - 0x11c]
dec dword [ebp - 0x13c]
jne 0x89fbcd
mov eax, dword [ebp - 4]
mov dword [eax + 0x434], 0x14
mov eax, dword [ebp - 4]
mov dword [eax + 0x438], 0x32
push 0x40080000
push 0
push dword [ebp + 0xc]
push dword [ebp + 8]
xor edx, edx
mov eax, dword [ebp - 0x114]
call fcn.005eab80
push 0x32
call sub.kernel32.dll_Sleep_1
cmp word [ebp + 0xa], 0
je 0x89fc70
mov ecx, 0x64
xor edx, edx
mov eax, dword [ebp + 0xc]
call dword [ebp + 8]
mov eax, dword [ebp - 4]
cmp byte [eax + 0x444], 0
je 0x89fc55
mov eax, dword [ebp - 4]
mov dword [eax + 0x434], 0x32
mov eax, dword [ebp - 4]
mov dword [eax + 0x438], 0x46
mov eax, dword [ebp - 0x118]
dec eax
test eax, eax
jl 0x89fed0
inc eax
mov dword [ebp - 0x13c], eax
mov dword [ebp - 0x11c], 0
mov edx, dword [ebp - 0x11c]
mov eax, dword [ebp - 0x110]
mov ecx, dword [eax]
call dword [ecx]
mov dword [ebp - 0x12c], eax
mov edx, dword [ebp - 0x11c]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx]
mov edi, eax
mov edx, dword [ebp - 0x11c]
mov eax, dword [ebp - 0x114]
mov ecx, dword [eax]
call dword [ecx]
mov ebx, eax
mov esi, dword [ebp - 0xc]
dec esi
test esi, esi
jl 0x89fe87
inc esi
xor eax, eax
mov al, byte [ebx]
mov edx, pe_nt_image_headers32
sub edx, eax
mov dword [ebp - 0x140], edx
fild dword [ebp - 0x140]
fdiv dword [0x89ff14]
fstp qword [ebp - 0x138]
wait
push 0x3ffe
push 0x99999999
push 0x9999999a
fld qword [ebp - 0x138]
fmul qword [ebp - 0x138]
fmul qword [ebp - 0x138]
fmul qword [ebp - 0x138]
fmul qword [ebp - 0x138]
fmul qword [ebp - 0x138]
fmul qword [ebp - 0x138]
fmul qword [ebp - 0x138]
fmul qword [ebp - 0x138]
fmul qword [ebp - 0x138]
fmul qword [ebp - 0x138]
fmul qword [ebp - 0x138]
fmul qword [ebp - 0x138]
fmul qword [ebp - 0x138]
fmul qword [ebp - 0x138]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00437f78
fstp qword [ebp - 0x138]
wait
fld dword [0x89ff18]
fsub qword [ebp - 0x138]
mov eax, dword [ebp - 0x12c]
movzx eax, byte [eax + 2]
mov dword [ebp - 0x140], eax
fild dword [ebp - 0x140]
fmulp st(1)
xor eax, eax
mov al, byte [edi + 2]
mov dword [ebp - 0x144], eax
fild dword [ebp - 0x144]
fmul qword [ebp - 0x138]
faddp st(1)
call fcn.00402ffc
call fcn.005cf524
mov byte [edi + 2], al
fld dword [0x89ff18]
fsub qword [ebp - 0x138]
mov eax, dword [ebp - 0x12c]
movzx eax, byte [eax + 1]
mov dword [ebp - 0x140], eax
fild dword [ebp - 0x140]
fmulp st(1)
xor eax, eax
mov al, byte [edi + 1]
mov dword [ebp - 0x144], eax
fild dword [ebp - 0x144]
fmul qword [ebp - 0x138]
faddp st(1)
call fcn.00402ffc
call fcn.005cf524
mov byte [edi + 1], al
fld dword [0x89ff18]
fsub qword [ebp - 0x138]
mov eax, dword [ebp - 0x12c]
movzx eax, byte [eax]
mov dword [ebp - 0x140], eax
fild dword [ebp - 0x140]
fmulp st(1)
xor eax, eax
mov al, byte [edi]
mov dword [ebp - 0x144], eax
fild dword [ebp - 0x144]
fmul qword [ebp - 0x138]
faddp st(1)
call fcn.00402ffc
call fcn.005cf524
mov byte [edi], al
add dword [ebp - 0x12c], 3
add edi, 3
inc ebx
dec esi
jne 0x89fcfa
cmp word [ebp + 0xa], 0
je 0x89febe
mov eax, dword [ebp - 0x11c]
inc eax
mov dword [ebp - 0x140], eax
fild dword [ebp - 0x140]
fild dword [ebp - 0x118]
fdivp st(1)
fmul dword [0x89ff1c]
call fcn.00403008
mov ecx, eax
xor edx, edx
mov eax, dword [ebp + 0xc]
call dword [ebp + 8]
inc dword [ebp - 0x11c]
dec dword [ebp - 0x13c]
jne 0x89fcb6
call sub.kernel32.dll_GetTickCount
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x89fef5
lea eax, [ebp - 0x114]
call fcn.004120b8
ret