Function at 0x837a60
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffff7bc
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov esi, edx
mov dword [ebp - 4], eax
cmp esi, 0xff
je 0x837d78
cmp dword [ebp - 8], 0
je 0x837d78
cmp esi, dword [ebp - 8]
jge 0x837d78
cmp dword [ebp + 0x24], 0
je 0x837d78
mov ebx, dword [ebp - 8]
sub ebx, esi
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
dec eax
jle 0x837d78
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0xc]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 8]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x840], esi
fild dword [ebp - 0x840]
mov dword [ebp - 0x844], ebx
fild dword [ebp - 0x844]
fdiv dword [0x837d84]
faddp st(1)
call fcn.00404894
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
sub eax, esi
mov dword [ebp - 0x840], eax
fild dword [ebp - 0x840]
fstp qword [ebp - 0x18]
wait
fild dword [ebp + 0x24]
fdiv qword [ebp - 0x18]
fstp qword [ebp - 0x20]
wait
xor eax, eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
xor eax, eax
lea edx, [ebp - 0x43c]
lea ecx, [ebp - 0x83c]
mov dword [edx], eax
xor ebx, ebx
mov dword [ecx], ebx
inc eax
add ecx, 4
add edx, 4
cmp eax, 0x100
jne 0x837b23
mov eax, esi
mov edx, dword [ebp - 0xc]
sub edx, eax
jl 0x837b7d
inc edx
mov dword [ebp - 0x3c], edx
lea ebx, [ebp + eax*4 - 0x43c]
lea esi, [ebp + eax*4 - 0x83c]
fld qword [ebp - 0x28]
fadd qword [ebp - 0x20]
fstp qword [ebp - 0x28]
wait
fild dword [ebx]
fadd qword [ebp - 0x28]
call fcn.00404894
mov dword [ebx], eax
fld qword [ebp - 0x28]
call fcn.00404894
mov dword [esi], eax
add esi, 4
add ebx, 4
dec dword [ebp - 0x3c]
jne 0x837b52
mov eax, dword [ebp - 0xc]
inc eax
mov edx, dword [ebp - 8]
sub edx, eax
jl 0x837bc5
inc edx
mov dword [ebp - 0x3c], edx
lea esi, [ebp + eax*4 - 0x43c]
lea ebx, [ebp + eax*4 - 0x83c]
fld qword [ebp - 0x28]
fsub qword [ebp - 0x20]
fstp qword [ebp - 0x28]
wait
fild dword [esi]
fadd qword [ebp - 0x28]
call fcn.00404894
mov dword [esi], eax
fld qword [ebp - 0x28]
call fcn.00404894
mov dword [ebx], eax
add ebx, 4
add esi, 4
dec dword [ebp - 0x3c]
jne 0x837b9a
mov eax, pe_nt_image_headers32
lea ebx, [ebp - 0x43c]
cmp dword [ebp + 0x24], 0
jge 0x837be1
cmp dword [ebx], 0
jge 0x837bef
xor edx, edx
mov dword [ebx], edx
jmp 0x837bef
cmp dword [ebx], 0xff
jle 0x837bef
mov dword [ebx], 0xff
add ebx, 4
dec eax
jne 0x837bd0
cmp byte [ebp + 0x20], 0
je 0x837cd6
mov eax, dword [ebp - 0x34]
dec eax
test eax, eax
jl 0x837d78
inc eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x2c], 0
mov edx, dword [ebp - 0x2c]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov edi, dword [ebp - 0x30]
dec edi
test edi, edi
jl 0x837ca0
inc edi
mov ebx, esi
movzx eax, byte [ebx + 2]
movzx edx, byte [ebx + 1]
add eax, edx
movzx edx, byte [ebx]
add eax, edx
mov ecx, 3
xor edx, edx
div ecx
mov dword [ebp - 0x38], eax
cmp byte [ebp + 0x1c], 0
je 0x837c64
movzx eax, byte [ebx + 2]
mov edx, dword [ebp - 0x38]
add eax, dword [ebp + edx*4 - 0x83c]
call fcn.00805a34
mov byte [ebx + 2], al
cmp byte [ebp + 0x18], 0
je 0x837c80
movzx eax, byte [ebx + 1]
mov edx, dword [ebp - 0x38]
add eax, dword [ebp + edx*4 - 0x83c]
call fcn.00805a34
mov byte [ebx + 1], al
cmp byte [ebp + 0x14], 0
je 0x837c9a
movzx eax, byte [ebx]
mov edx, dword [ebp - 0x38]
add eax, dword [ebp + edx*4 - 0x83c]
call fcn.00805a34
mov byte [ebx], al
add esi, 3
dec edi
jne 0x837c2b
cmp word [ebp + 0xe], 0
je 0x837cc5
fild dword [ebp - 0x2c]
fild dword [ebp - 0x34]
fdivp st(1)
fmul dword [0x837d88]
call fcn.00404894
mov ecx, eax
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0x10]
call dword [ebp + 0xc]
inc dword [ebp - 0x2c]
dec dword [ebp - 0x3c]
jne 0x837c16
jmp 0x837d78
mov eax, dword [ebp - 0x34]
dec eax
test eax, eax
jl 0x837d78
inc eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x2c], 0
mov edx, dword [ebp - 0x2c]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov edi, dword [ebp - 0x30]
dec edi
test edi, edi
jl 0x837d47
inc edi
mov eax, esi
cmp byte [ebp + 0x1c], 0
je 0x837d19
movzx edx, byte [eax + 2]
movzx edx, byte [ebp + edx*4 - 0x43c]
mov byte [eax + 2], dl
cmp byte [ebp + 0x18], 0
je 0x837d2e
movzx edx, byte [eax + 1]
movzx edx, byte [ebp + edx*4 - 0x43c]
mov byte [eax + 1], dl
cmp byte [ebp + 0x14], 0
je 0x837d41
movzx edx, byte [eax]
movzx edx, byte [ebp + edx*4 - 0x43c]
mov byte [eax], dl
add esi, 3
dec edi
jne 0x837d02
cmp word [ebp + 0xe], 0
je 0x837d6c
fild dword [ebp - 0x2c]
fild dword [ebp - 0x34]
fdivp st(1)
fmul dword [0x837d88]
call fcn.00404894
mov ecx, eax
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0x10]
call dword [ebp + 0xc]
inc dword [ebp - 0x2c]
dec dword [ebp - 0x3c]
jne 0x837ced
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20