Function at 0x45dfa0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x42c
mov eax, dword [0x4ea160]
xor eax, esp
mov dword [esp + 0x428], eax
cmp byte [ebp + 0x14], 0
push ebx
mov ebx, ecx
push esi
mov esi, dword [ebp + 8]
push edi
mov eax, dword [ebx + 8]
mov dword [esp + 0x2c], ebx
je 0x45e0f0
mov edi, dword [eax + 0x20]
mov dword [esp + 0x18], edi
test edi, edi
je 0x45dff0
cmp edi, 0x100
jg 0x45dff0
test edi, edi
jle 0x45e228
jmp 0x45dff9
mov edi, 0x100
mov dword [esp + 0x18], edi
cmp dword [ebp + 0xc], 0
lea ecx, [eax + 0x28]
jl 0x45e0cd
mov edx, dword [ebp + 0x10]
cmp dword [ebp + 0xc], edx
jge 0x45e0cd
test edx, edx
jle 0x45e0cd
test edi, edi
je 0x45e0c2
lea ecx, [esi + 2]
mov dword [esp + 0x28], edi
add eax, 0x2a
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], eax
lea edi, [esp + 0x32]
mov esi, edx
nop word [eax + eax]
mov bl, byte [eax - 2]
lea edi, [edi + 4]
mov bh, byte [eax - 1]
mov al, byte [eax]
mov byte [esp + 0x13], al
movzx eax, byte [ecx - 2]
movzx ecx, bl
sub eax, ecx
mov byte [edi - 3], 0
imul eax, dword [ebp + 0xc]
movzx ecx, bh
cdq
idiv esi
add al, bl
mov byte [edi - 6], al
mov eax, dword [esp + 0x14]
movzx eax, byte [eax - 1]
sub eax, ecx
movzx ecx, byte [esp + 0x13]
imul eax, dword [ebp + 0xc]
cdq
idiv esi
add al, bh
mov byte [edi - 5], al
mov eax, dword [esp + 0x14]
movzx eax, byte [eax]
sub eax, ecx
mov ecx, dword [esp + 0x14]
imul eax, dword [ebp + 0xc]
add ecx, 4
mov dword [esp + 0x14], ecx
cdq
idiv esi
add al, byte [esp + 0x13]
mov byte [edi - 4], al
mov eax, dword [esp + 0x24]
add eax, 4
sub dword [esp + 0x28], 1
mov dword [esp + 0x24], eax
jne 0x45e040
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x2c]
lea eax, [esp + 0x30]
push eax
push edi
jmp 0x45e20e
test edi, edi
je 0x45e0e6
mov edx, edi
mov eax, dword [esi]
lea ecx, [ecx + 4]
mov dword [ecx - 4], eax
lea esi, [esi + 4]
sub edx, 1
jne 0x45e0d3
mov eax, dword [ebx + 8]
add eax, 0x28
push eax
push edi
jmp 0x45e20e
mov ecx, dword [ebp + 0xc]
lea edi, [eax + 0x28]
test ecx, ecx
js 0x45e1ed
mov eax, dword [ebp + 0x10]
cmp ecx, eax
jge 0x45e1ed
test eax, eax
jle 0x45e1ed
add eax, eax
sub eax, ecx
imul eax, ecx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movd xmm1, dword [ebp + 0x10]
movaps xmm2, xmm0
cvtdq2pd xmm1, xmm1
xor ebx, ebx
add esi, 2
divsd xmm2, xmm1
movsd qword [esp + 0x18], xmm2
movzx ecx, byte [edi]
movzx eax, byte [esi - 2]
sub eax, ecx
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, xmm1
call fcn.004b66b5
movzx ecx, byte [edi + 1]
mov byte [esp + ebx*4 + 0x30], al
movzx eax, byte [esi - 1]
sub eax, ecx
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [esp + 0x18]
addsd xmm0, xmm1
call fcn.004b66b5
movzx ecx, byte [edi + 2]
mov byte [esp + ebx*4 + 0x31], al
movzx eax, byte [esi]
sub eax, ecx
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [esp + 0x18]
addsd xmm0, xmm1
call fcn.004b66b5
movsd xmm2, qword [esp + 0x18]
add esi, 4
mov byte [esp + ebx*4 + 0x32], al
mov al, byte [edi + 3]
add edi, 4
mov byte [esp + ebx*4 + 0x33], al
inc ebx
cmp ebx, 0x100
jl 0x45e140
mov ebx, dword [esp + 0x2c]
lea eax, [esp + 0x30]
jmp 0x45e208
mov ecx, 0x100
mov eax, dword [esi]
lea edi, [edi + 4]
mov dword [edi - 4], eax
lea esi, [esi + 4]
sub ecx, 1
jne 0x45e1f2
mov eax, dword [ebx + 8]
add eax, 0x28
push eax
push 0x100
push 0
mov ecx, ebx
call fcn.00463ff0
mov eax, dword [eax + 8]
push eax
call dword [sym.imp.GDI32.dll_SetDIBColorTable]
mov ecx, ebx
call fcn.00465420
mov ecx, dword [esp + 0x434]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0044f18f
mov esp, ebp
pop ebp
ret 0x10