Function at 0x46ca90
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5c
push edi
mov edi, dword [ebp + 8]
lea ecx, [ebp - 0x18]
push edi
call fcn.00466f6f
push 2
push dword [ebp - 0x18]
call sub.gdiplus.dll_GdipSetSmoothingMode
mov ecx, dword [ebp - 0x14]
test eax, eax
cmovne ecx, eax
lea eax, [ebp + 0x10]
mov dword [ebp - 0x14], ecx
lea ecx, [ebp - 0x34]
push eax
call fcn.0046679e
and dword [ebp - 0x28], 0
mov ecx, edi
and dword [ebp - 0x24], 0
call fcn.00466c1b
mov ecx, edi
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x418480]
cvtpd2ps xmm0, xmm0
movss dword [ebp - 0x20], xmm0
call fcn.00466bf5
lea ecx, [ebp - 0x18]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x418480]
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x34]
push eax
cvtpd2ps xmm0, xmm0
movss dword [ebp - 0x1c], xmm0
call fcn.0046cc8c
lea eax, [ebp + 0xc]
push eax
lea ecx, [ebp - 0x24]
call fcn.0046679e
mov eax, dword [ebp + 0x18]
cmp dword [eax + 0x14], 8
mov ecx, dword [eax + 0x10]
jb 0x46cb3e
mov eax, dword [eax]
push ebx
push esi
lea edx, [ebp - 0x24]
push edx
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x14]
push ecx
push eax
lea ecx, [ebp - 0x18]
call fcn.00468688
mov ecx, dword [ebp + 0x10]
mov eax, ecx
shr eax, 0x10
mov edx, ecx
shr edx, 8
movzx eax, al
movzx edx, dl
add eax, edx
movzx ecx, cl
add eax, ecx
mov ecx, dword [ebp + 0xc]
cdq
push 3
pop esi
idiv esi
mov edx, ecx
mov ebx, eax
shr edx, 0x10
movzx eax, dl
mov edx, ecx
shr edx, 8
movzx edx, dl
add eax, edx
movzx ecx, cl
add eax, ecx
mov dword [ebp - 8], ebx
cdq
mov ecx, edi
idiv esi
sub eax, ebx
mov dword [ebp - 0xc], eax
call fcn.00466c1b
mov ebx, eax
mov ecx, edi
mov dword [ebp + 0x18], ebx
call fcn.00466bf5
and dword [ebp - 0x44], 0
mov esi, eax
and dword [ebp - 0x40], 0
lea eax, [ebp - 0x5c]
push eax
push 0x26200a
push 3
pop eax
push eax
lea eax, [ebp - 0x44]
mov dword [ebp - 0x10], esi
push eax
push dword [edi + 4]
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], esi
call sub.gdiplus.dll_GdipBitmapLockBits
test eax, eax
je 0x46cbe4
mov dword [edi + 8], eax
mov ecx, dword [ebp - 0x4c]
xor ebx, ebx
mov dword [ebp - 4], ecx
test esi, esi
jle 0x46cc5a
mov eax, dword [ebp + 0x18]
xor edi, edi
test eax, eax
jle 0x46cc52
mov esi, dword [ebp - 0x54]
imul esi, ebx
push 3
add esi, ecx
movzx ecx, byte [esi + edi*4 + 2]
movzx eax, byte [esi + edi*4 + 1]
add eax, ecx
movzx ecx, byte [esi + edi*4]
add eax, ecx
cdq
pop ecx
idiv ecx
mov ecx, dword [ebp - 4]
sub eax, dword [ebp - 8]
imul eax, eax, 0xff
cdq
idiv dword [ebp - 0xc]
mov byte [esi + edi*4 + 3], al
mov eax, dword [ebp + 0xc]
shr eax, 0x10
mov byte [esi + edi*4 + 2], al
mov eax, dword [ebp + 0xc]
shr eax, 8
mov byte [esi + edi*4 + 1], al
mov al, byte [ebp + 0xc]
mov byte [esi + edi*4], al
inc edi
mov eax, dword [ebp + 0x18]
cmp edi, eax
jl 0x46cbf9
mov esi, dword [ebp - 0x10]
inc ebx
cmp ebx, esi
jl 0x46cbf3
mov edi, dword [ebp + 8]
lea eax, [ebp - 0x5c]
push eax
push dword [edi + 4]
call sub.gdiplus.dll_GdipBitmapUnlockBits
pop esi
pop ebx
test eax, eax
je 0x46cc6f
mov dword [edi + 8], eax
push dword [ebp - 0x20]
call sub.gdiplus.dll_GdipDeleteBrush
push dword [ebp - 0x30]
call sub.gdiplus.dll_GdipDeleteBrush
push dword [ebp - 0x18]
call sub.gdiplus.dll_GdipDeleteGraphics
pop edi
mov esp, ebp
pop ebp
ret