Function at 0x40ab30
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x1c
mov edi, eax
test eax, eax
je 0x40ac49
mov dword [ebp - 0x10], eax
mov al, byte [eax]
cmp al, 0x2d
je 0x40ab54
cmp al, 0x2f
jbe 0x40ac41
xor eax, eax
call fcn.0040a8d0
mov dword [ebp - 0x24], eax
test eax, eax
je 0x40ac36
mov edx, dword [ebp - 0x10]
mov al, byte [edx]
cmp al, 0x2d
je 0x40ac91
sub eax, 0x30
cmp al, 9
jbe 0x40ad20
mov dword [ebp - 0x10], edi
mov dl, byte [edi]
lea eax, [edx - 0x30]
cmp al, 9
ja 0x40ac7a
mov dword [ebp - 0x20], 0
cmp dl, 0x2d
je 0x40ac7f
cmp al, 9
ja 0x40ac60
mov ecx, edi
xor esi, esi
lea esi, [esi]
mov ebx, dword [ebp - 0x24]
and edx, 0xff
inc ecx
inc esi
mov eax, dword [ebx + 8]
lea eax, [eax + eax*4]
lea ebx, [edx + eax*2 - 0x30]
mov eax, dword [ebp - 0x24]
mov dword [eax + 8], ebx
mov dl, byte [ecx]
lea eax, [edx - 0x30]
cmp al, 9
jbe 0x40abb0
cmp esi, 3
jle 0x40ac60
cmp esi, 4
je 0x40abe7
cmp byte [edi], 0x30
je 0x40ac60
mov edi, dword [ebp - 0x20]
test edi, edi
je 0x40abf6
mov edx, dword [ebp - 0x24]
neg ebx
mov dword [edx + 8], ebx
mov ebx, dword [ebp - 0x24]
mov esi, dword [ebx + 8]
test esi, esi
je 0x40ac60
mov dword [ebp - 0x10], ecx
mov al, byte [ecx]
test al, al
jne 0x40ad6d
mov ebx, dword [ebp - 0x24]
lea edx, [ebp - 0x10]
add ebx, 8
mov eax, ebx
call fcn.0040a080
test eax, eax
jne 0x40ae00
mov eax, dword [ebp - 0x10]
cmp byte [eax], 0
jne 0x40ac60
mov esi, dword [ebp - 0x24]
mov dword [esi], 8
mov eax, dword [ebp - 0x24]
add esp, 0x1c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp al, 0x39
jbe 0x40ab54
mov dword [ebp - 0x24], 0
mov eax, dword [ebp - 0x24]
add esp, 0x1c
pop ebx
pop esi
pop edi
pop ebp
ret
fstp st(0)
lea esi, [esi]
mov eax, dword [ebp - 0x24]
call fcn.0040a230
mov dword [ebp - 0x24], 0
mov eax, dword [ebp - 0x24]
add esp, 0x1c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dl, 0x2d
jne 0x40ac60
inc edi
mov dl, byte [edi]
mov dword [ebp - 0x20], 1
lea eax, [edx - 0x30]
jmp 0x40ab9e
cmp byte [edx + 1], 0x2d
jne 0x40ab7e
lea eax, [edx + 2]
mov dword [ebp - 0x10], eax
cmp byte [edx + 2], 0x2d
je 0x40ad9c
mov ebx, dword [ebp - 0x24]
lea edx, [ebp - 0x10]
add ebx, 8
mov eax, ebx
call fcn.00409d60
test eax, eax
jne 0x40ac60
mov edx, dword [ebp - 0x10]
cmp byte [edx], 0x2d
jne 0x40ac60
lea eax, [edx + 1]
mov dword [ebp - 0x10], eax
cmp byte [edx + 1], 0x2d
jne 0x40ae63
lea eax, [edx + 2]
mov dword [ebp - 0x10], eax
mov al, byte [edx + 2]
test al, al
je 0x40acf4
cmp al, 0x5a
je 0x40acf4
cmp al, 0x2b
je 0x40acf4
cmp al, 0x2d
jne 0x40ac60
lea edx, [ebp - 0x10]
mov eax, ebx
call fcn.0040a080
test eax, eax
jne 0x40ac60
mov eax, dword [ebp - 0x10]
cmp byte [eax], 0
jne 0x40ac60
mov edx, dword [ebp - 0x24]
mov dword [edx], 4
jmp 0x40ac36
mov ebx, dword [ebp - 0x24]
lea edx, [ebp - 0x10]
add ebx, 8
mov eax, ebx
call fcn.00409e60
test eax, eax
jne 0x40ab7e
mov eax, dword [ebp - 0x10]
mov al, byte [eax]
test al, al
jne 0x40ad8a
lea edx, [ebp - 0x10]
mov eax, ebx
call fcn.0040a080
test eax, eax
jne 0x40ab7e
mov eax, dword [ebp - 0x10]
cmp byte [eax], 0
jne 0x40ac60
mov esi, dword [ebp - 0x24]
mov dword [esi], 1
jmp 0x40ac36
cmp al, 0x5a
je 0x40ac0d
cmp al, 0x2b
je 0x40ac0d
cmp al, 0x2d
jne 0x40ac60
jmp 0x40ac0d
cmp al, 0x5a
je 0x40ad41
cmp al, 0x2b
je 0x40ad41
cmp al, 0x2d
jne 0x40ab7e
jmp 0x40ad41
mov ebx, dword [ebp - 0x24]
lea eax, [edx + 3]
add ebx, 8
mov dword [ebp - 0x10], eax
lea edx, [ebp - 0x10]
mov eax, ebx
call fcn.00409de0
test eax, eax
jne 0x40ac60
mov eax, dword [ebp - 0x10]
mov al, byte [eax]
test al, al
je 0x40add3
cmp al, 0x5a
je 0x40add3
cmp al, 0x2b
je 0x40add3
cmp al, 0x2d
jne 0x40ac60
lea edx, [ebp - 0x10]
mov eax, ebx
call fcn.0040a080
test eax, eax
jne 0x40ac60
mov eax, dword [ebp - 0x10]
cmp byte [eax], 0
jne 0x40ac60
mov eax, dword [ebp - 0x24]
mov dword [eax], 2
jmp 0x40ac36
mov eax, dword [ebp - 0x10]
cmp byte [eax], 0x2d
jne 0x40ac60
inc eax
lea edx, [ebp - 0x10]
mov dword [ebp - 0x10], eax
mov eax, ebx
call fcn.00409d60
test eax, eax
jne 0x40ac60
mov eax, dword [ebp - 0x10]
mov al, byte [eax]
test al, al
je 0x40ae3b
cmp al, 0x5a
je 0x40ae3b
cmp al, 0x2b
je 0x40ae3b
cmp al, 0x2d
jne 0x40ac60
lea edx, [ebp - 0x10]
mov eax, ebx
call fcn.0040a080
test eax, eax
jne 0x40aeba
mov eax, dword [ebp - 0x10]
cmp byte [eax], 0
jne 0x40ac60
mov edi, dword [ebp - 0x24]
mov dword [edi], 0xc
jmp 0x40ac36
lea edx, [ebp - 0x10]
mov eax, ebx
call fcn.00409de0
test eax, eax
jne 0x40ac60
mov eax, dword [ebp - 0x10]
mov al, byte [eax]
test al, al
je 0x40ae8e
cmp al, 0x5a
je 0x40ae8e
cmp al, 0x2b
je 0x40ae8e
cmp al, 0x2d
jne 0x40ac60
lea edx, [ebp - 0x10]
mov eax, ebx
call fcn.0040a080
test eax, eax
jne 0x40ac60
mov eax, dword [ebp - 0x10]
cmp byte [eax], 0
jne 0x40ac60
mov ebx, dword [ebp - 0x24]
mov dword [ebx], 6
jmp 0x40ac36
mov eax, dword [ebp - 0x10]
cmp byte [eax], 0x2d
jne 0x40ac60
inc eax
lea edx, [ebp - 0x10]
mov dword [ebp - 0x10], eax
mov eax, ebx
call fcn.00409de0
test eax, eax
jne 0x40ac60
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x40ac60
mov dl, byte [eax + 0xc]
and edx, 0xf
mov esi, edx
lea eax, [edx - 1]
and eax, 0xf
cmp al, 0xb
ja 0x40ac60
test cl, 3
jne 0x40af19
mov eax, 0x64
mov edx, ecx
sar edx, 0x1f
mov edi, eax
mov eax, ecx
idiv edi
test edx, edx
jne 0x40af31
mov eax, 0x190
mov edx, ecx
sar edx, 0x1f
mov edi, eax
mov eax, ecx
idiv edi
test edx, edx
jne 0x40b0c4
mov edx, dword [ebp - 0x24]
mov eax, dword [edx + 0xc]
mov edx, esi
shr ax, 4
and edx, 0xff
and eax, 0x1f
cmp eax, dword [edx*4 + 0x51e91c]
ja 0x40ac60
mov eax, dword [ebp - 0x10]
mov dl, byte [eax]
test dl, dl
je 0x40b0eb
cmp dl, 0x5a
je 0x40b0eb
cmp dl, 0x2b
je 0x40b0eb
cmp dl, 0x2d
je 0x40b0eb
cmp byte [eax], 0x54
jne 0x40ac60
inc eax
lea edx, [ebp - 0x10]
mov dword [ebp - 0x10], eax
mov eax, ebx
call fcn.00409e60
test eax, eax
jne 0x40ac60
lea edx, [ebp - 0x10]
mov eax, ebx
call fcn.0040a080
test eax, eax
jne 0x40ac60
mov eax, dword [ebp - 0x10]
cmp byte [eax], 0
jne 0x40ac60
mov edx, dword [ebp - 0x24]
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x40ac60
mov bl, byte [edx + 0xc]
and ebx, 0xf
lea eax, [ebx - 1]
and eax, 0xf
cmp al, 0xb
ja 0x40ac60
test cl, 3
jne 0x40aff3
mov eax, 0x64
mov edx, ecx
sar edx, 0x1f
mov esi, eax
mov eax, ecx
idiv esi
test edx, edx
jne 0x40b00b
mov eax, 0x190
mov edx, ecx
sar edx, 0x1f
mov edi, eax
mov eax, ecx
idiv edi
test edx, edx
jne 0x40b0a1
mov edx, dword [ebp - 0x24]
mov eax, dword [edx + 0xc]
xor edx, edx
shr ax, 4
mov dl, bl
and eax, 0x1f
cmp eax, dword [edx*4 + 0x51e91c]
ja 0x40ac60
mov edi, dword [ebp - 0x24]
mov al, byte [edi + 0xd]
shr al, 1
and eax, 0x1f
cmp eax, 0x17
jg 0x40ac60
mov eax, dword [edi + 0xc]
shr eax, 0xe
and eax, 0x3f
cmp eax, 0x3b
jg 0x40ac60
fld qword [edi + 0x10]
fldz
fxch st(1)
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 1
jne 0x40ac5b
fld dword [0x51ebc8]
fucompp
fnstsw ax
test ah, 0x45
jne 0x40ac60
mov eax, dword [edi + 0x18]
shl eax, 3
shr ax, 4
sub eax, 0xa61
and eax, 0xfff
cmp ax, 0xb3e
ja 0x40ac60
mov dword [edi], 0xf
jmp 0x40ac36
mov esi, dword [ebp - 0x24]
xor edx, edx
mov dl, bl
mov eax, dword [esi + 0xc]
shr ax, 4
and eax, 0x1f
cmp eax, dword [edx*4 + 0x51e95c]
ja 0x40ac60
jmp 0x40b029
mov edi, dword [ebp - 0x24]
mov edx, esi
and edx, 0xff
mov eax, dword [edi + 0xc]
shr ax, 4
and eax, 0x1f
cmp eax, dword [edx*4 + 0x51e95c]
ja 0x40ac60
jmp 0x40af53
lea edx, [ebp - 0x10]
mov eax, ebx
call fcn.0040a080
test eax, eax
jne 0x40b113
mov eax, dword [ebp - 0x10]
cmp byte [eax], 0
jne 0x40ac60
mov eax, dword [ebp - 0x24]
mov dword [eax], 0xe
jmp 0x40ac36
mov eax, dword [ebp - 0x10]
jmp 0x40af7b