Function at 0x10099df0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x88
mov edi, dword [ebp + 8]
mov esi, edx
mov eax, dword [edi + 0x1c]
test al, 0x10
jne 0x10099eba
test al, 0x20
jne 0x10099f27
cmp ecx, 0x2710
mov eax, esi
mov ebx, 0x27
sbb eax, 0
jb 0x10099f91
nop word [eax + eax]
mov dword [ebp - 0x14], ebx
mov edi, ecx
push 0
push 0x2710
push esi
push ecx
call fcn.100a0350
add esp, 0x10
mov ecx, eax
imul eax, eax, 0x2710
mov ebx, edi
mov dword [ebp - 0x10], edx
sub ebx, eax
movzx eax, bx
shr eax, 2
imul edx, eax, 0x147b
shr edx, 0x11
imul eax, edx, 0x64
sub ebx, eax
mov eax, 0x5f5e0ff
cmp eax, edi
mov eax, 0
sbb eax, esi
movzx eax, word [edx + edx + 0x100d4b82]
mov edx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x10]
mov word [ebp + edx - 0x98], ax
movzx eax, bx
lea ebx, [edx - 4]
movzx eax, word [eax + eax + 0x100d4b82]
mov word [ebp + edx - 0x96], ax
jb 0x10099e30
mov edi, dword [ebp + 8]
mov eax, ecx
mov edx, ecx
cmp edx, 0x63
ja 0x10099f9a
jmp 0x10099fc6
xor ebx, ebx
lea eax, [ebp - 0x14]
mov edi, esi
nop word cs:[eax + eax]
nop dword [eax + eax]
mov edx, esi
mov dword [ebp - 0x10], eax
shr edi, 4
shld edx, ecx, 0x1c
mov dword [ebp - 0x14], edx
mov edx, ecx
and dl, 0xf
mov dh, dl
mov eax, edx
add al, 0x57
or dh, 0x30
cmp dl, 0xa
movzx edx, dh
movzx eax, al
cmovb eax, edx
mov edx, dword [ebp - 0x10]
inc ebx
cmp ecx, 0x10
mov ecx, dword [ebp - 0x14]
sbb esi, 0
mov esi, edi
mov byte [edx - 1], al
lea eax, [edx - 1]
jae 0x10099ed0
mov edx, pe_nt_image_headers32
sub edx, ebx
cmp edx, 0x81
jae 0x1009a015
push ebx
push eax
jmp 0x10099f83
xor ebx, ebx
lea edx, [ebp - 0x14]
mov edi, esi
nop
mov eax, esi
mov dword [ebp - 0x10], ecx
shr edi, 4
shld eax, ecx, 0x1c
mov dword [ebp - 0x14], eax
mov eax, ecx
mov ecx, edx
and al, 0xf
mov ah, al
mov edx, eax
add dl, 0x37
or ah, 0x30
cmp al, 0xa
movzx eax, ah
movzx edx, dl
cmovb edx, eax
inc ebx
cmp dword [ebp - 0x10], 0x10
mov byte [ecx - 1], dl
lea edx, [ecx - 1]
mov ecx, dword [ebp - 0x14]
sbb esi, 0
mov esi, edi
jae 0x10099f30
mov eax, pe_nt_image_headers32
sub eax, ebx
cmp eax, 0x81
jae 0x1009a025
push ebx
push edx
push 2
push str.0x0b0o00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899assertion_failed:_curr___19
push 1
push dword [ebp + 8]
jmp 0x1009a002
mov eax, ecx
mov edx, ecx
cmp edx, 0x63
jbe 0x10099fc6
mov ecx, eax
movzx eax, cx
shr eax, 2
imul edx, eax, 0x147b
shr edx, 0x11
imul eax, edx, 0x64
sub ecx, eax
movzx eax, cx
movzx eax, word [eax + eax + 0x100d4b82]
mov word [ebp + ebx - 0x96], ax
add ebx, 0xfffffffe
cmp edx, 0xa
jae 0x10099fd8
or dl, 0x30
mov byte [ebp + ebx - 0x95], dl
dec ebx
jmp 0x10099feb
movzx eax, word [edx + edx + 0x100d4b82]
mov word [ebp + ebx - 0x96], ax
add ebx, 0xfffffffe
mov edx, 0x27
lea eax, [ebp + ebx - 0x94]
sub edx, ebx
push edx
push eax
push 0
push 1
push 1
push edi
call fcn.1008d4d0
add esp, 0x18
add esp, 0x88
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x100d4b6c
push pe_nt_image_headers32
push edx
call fcn.1008f790
push 0x100d4b6c
push pe_nt_image_headers32
push eax
call fcn.1008f790
nop word cs:[eax + eax]
nop
push ebp
mov ebp, esp
push edi
push esi
sub esp, 0x28
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
movzx ecx, byte [ecx]
mov ch, cl
mov edx, ecx
sar ch, 7
xor dl, ch
sub dl, ch
cmp dl, 0x64
jb 0x1009a07d
add dl, dl
mov esi, 0x24
add dl, 0x38
movzx edx, dl
movzx edx, word [edx + 0x100d4b82]
mov word [ebp - 0xa], dx
mov dl, 1
jmp 0x1009a087
mov esi, 0x26
cmp dl, 0xa
jae 0x1009a090
or dl, 0x30
mov byte [ebp + esi - 0x2f], dl
jmp 0x1009a0a4
movzx edx, dl
mov esi, 0x25
movzx edx, word [edx + edx + 0x100d4b82]
mov word [ebp - 0xa], dx
xor edx, edx
test cl, cl
mov edi, 0x27
lea ecx, [ebp + esi - 0x2f]
setns dl
sub edi, esi
push edi
push ecx
push 0
push 1
push edx
push eax
call fcn.1008d4d0
add esp, 0x40
pop esi
pop edi
pop ebp
ret