Function at 0x4099cc
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x13c
mov eax, dword [0x410f18]
add eax, 0x37b627fe
mov dword [0x410ab8], eax
xor eax, eax
mov byte [ebp + eax - 0x118], al
inc eax
cmp eax, 0x100
jne 0x4099e9
mov edx, 0x4117c8
mov al, byte [edx]
sub eax, 0x30
cmp al, 9
ja 0x409a09
inc edx
jmp 0x4099fd
xor edi, edi
xor ebx, ebx
xor edx, edx
mov eax, ebx
mov cl, byte [ebp + ebx - 0x118]
div dword [ebp + 0xc]
mov eax, dword [ebp + 8]
movzx eax, byte [eax + edx]
movzx edx, cl
add eax, edx
add eax, edi
cmp byte [0x4117c8], 0
movzx edi, al
je 0x409a44
mov eax, dword [0x410ab8]
add eax, 0x3bd2f78
mov dword [0x410e5c], eax
mov esi, dword [0x410e5c]
mov byte [ebp - 0x125], cl
lea eax, [esi - 0x799e1b3d]
mov dword [ebp - 0x11c], eax
mov dword [0x410ab8], eax
call fcn.0040df70
mov al, byte [ebp + edi - 0x118]
mov edx, dword [ebp - 0x11c]
mov byte [ebp + ebx - 0x118], al
lea eax, [esi - 0x799e1b3d]
and edx, 0x41dabe97
inc ebx
xor eax, 0xbe00ec2d
mov dword [0x410f3c], edx
mov dword [ebp - 0x124], edx
mov dword [ebp - 0x120], eax
mov dword [0x410f18], eax
call fcn.0040df70
mov cl, byte [ebp - 0x125]
cmp ebx, 0x100
mov edx, dword [ebp - 0x124]
mov byte [ebp + edi - 0x118], cl
jne 0x409a0d
xor eax, eax
cmp byte [eax + str.count], 0
je 0x409afe
inc eax
cmp eax, 0x5a5
jne 0x409ac9
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.fr_FR
mov dword [esp + 8], str.HKEY_CURRENT_USER
mov dword [esp + 4], esi
mov dword [esp], str.HKEY_CURRENT_USER
call fcn.0040e5bc
mov eax, dword [ebp - 0x11c]
mov dword [esp], 0x411600
mov ebx, esi
mov dword [esp + 0xc], 0x4121fc
xor ebx, 0x3dd9c97c
or eax, 0x1ad7c0b6
mov dword [esp + 8], str.function_not_supported
mov dword [0x410f3c], eax
mov eax, dword [ebp - 0x120]
mov dword [0x410ab8], ebx
mov dword [esp + 4], eax
call fcn.0040ced0
cmp byte [0x411600], 0
je 0x409b5c
call fcn.0040df70
add esi, 0x30025bb7
mov dword [0x410f3c], esi
and ebx, 0xd1c342b0
mov dword [esp], str.count
xor edi, edi
mov dword [esp + 4], ebx
mov dword [esp + 0xc], str.count
mov dword [esp + 8], str.function_not_supported
mov dword [0x410f18], ebx
xor ebx, ebx
call fcn.0040ced0
mov esi, dword [ebp + 0x10]
mov eax, dword [ebp + 0x14]
add eax, esi
mov dword [ebp - 0x124], eax
mov eax, dword [ebp - 0x124]
cmp esi, eax
je 0x409c9e
inc ebx
mov edx, 0x4121fc
mov ecx, 0xbaa
movzx ebx, bl
movsx eax, byte [edx]
inc edx
test al, al
je 0x409bcd
add ecx, eax
cmp ecx, 0x17a3
jbe 0x409bb6
call fcn.0040df70
mov eax, dword [0x410ab8]
mov dword [ebp - 0x11c], eax
xor eax, 0xe5e9c908
mov dword [0x410f3c], eax
mov al, byte [ebp + ebx - 0x118]
mov byte [ebp - 0x120], al
add eax, edi
movzx edi, al
xor eax, eax
cmp byte [eax + 0x4121fc], 0
je 0x409c2f
inc eax
cmp eax, 0x111d
jne 0x409bf6
mov eax, dword [ebp - 0x11c]
mov dword [esp + 0xc], 0x411600
mov dword [esp + 8], str.HKEY_CURRENT_USER
mov dword [esp + 4], eax
mov dword [esp], str.count
call fcn.0040ced0
jmp 0x409c36
cmp eax, 0x10c8
jle 0x409c3b
call fcn.0040ddfc
mov eax, dword [ebp - 0x11c]
mov dl, byte [ebp + edi - 0x118]
xor eax, 0x7fc89727
mov byte [ebp + ebx - 0x118], dl
sub eax, 0x6c0d412f
mov dword [0x410ab8], eax
and eax, 0x63fb410f
mov dword [0x410f18], eax
mov al, byte [ebp - 0x120]
mov byte [ebp + edi - 0x118], al
add al, byte [ebp + ebx - 0x118]
movzx eax, al
mov dl, byte [ebp + eax - 0x118]
mov eax, dword [ebp - 0x11c]
xor byte [esi], dl
inc esi
xor eax, 0xb9b156f7
mov dword [0x410e5c], eax
jmp 0x409b9a
add esp, 0x13c
pop ebx
pop esi
pop edi
pop ebp
ret