Function at 0x10163990
Capabilities:
Encrypt data using rc4 prga
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xb8
mov eax, dword [0x10259b00]
xor eax, esp
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xbc]
lea ecx, [esp + 0x4c]
push ebx
push ebp
mov ebp, dword [esp + 0xcc]
push esi
push edi
mov dword [esp + 0x54], ecx
lea ecx, [esp + 0x90]
sar ebp, 1
push ebp
push ecx
mov dword [esp + 0x60], ecx
lea ecx, [esp + 0x64]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xd8]
push ecx
push eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x28], ebp
call fcn.10164110
movsx esi, word [0x1024e268]
lea edi, [esp + 0x6c]
push ebp
mov eax, edi
mov dword [esp + 0x24], edi
push esi
push eax
mov dword [esp + 0x3c], esi
call fcn.10163fc0
mov ebx, eax
add esp, 0x1c
mov dword [esp + 0x14], ebx
test ebx, ebx
jns 0x10163a46
mov eax, dword [esp + 0x3c]
lea edi, [esp + 0x90]
xor ecx, ecx
mov dword [esp + 0x10], edi
push ebp
push esi
mov word [eax], cx
mov eax, edi
push eax
call fcn.10163fc0
mov ebx, eax
mov dword [esp + 0x30], 1
add esp, 0xc
mov dword [esp + 0x14], ebx
jmp 0x10163a4c
xor eax, eax
mov dword [esp + 0x24], eax
xor ecx, ecx
mov dword [esp + 0x48], 0
mov dword [esp + 0x38], ecx
mov eax, 1
mov esi, ebp
mov dword [esp + 0x28], eax
nop word [eax + eax]
movsx ecx, word [eax*2 + 0x1024e268]
mov eax, dword [edi + esi*4]
mov edx, ecx
mov ebp, eax
shl edx, 4
mov dword [esp + 0x34], ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x30], ebp
cmp esi, 8
jne 0x10163ba2
movsx esi, dx
sar eax, 0x10
imul eax, esi
sar edx, 0xf
inc edx
movzx ecx, bp
imul ecx, esi
sar edx, 1
mov dword [esp + 0x1c], edx
imul edx, ebp
mov ebp, dword [esp + 0x1c]
sar ecx, 0x10
add ecx, eax
add ecx, edx
add ecx, dword [edi + 0x1c]
movzx edx, cx
mov eax, ecx
sar eax, 0x10
imul eax, esi
imul edx, esi
sar edx, 0x10
add edx, eax
mov eax, ebp
imul eax, ecx
add edx, eax
add edx, dword [edi + 0x18]
movzx ecx, dx
mov eax, edx
sar eax, 0x10
imul eax, esi
imul ecx, esi
sar ecx, 0x10
add ecx, eax
mov eax, ebp
imul eax, edx
add ecx, eax
add ecx, dword [edi + 0x14]
movzx edx, cx
mov eax, ecx
sar eax, 0x10
imul eax, esi
imul edx, esi
sar edx, 0x10
add edx, eax
mov eax, ebp
imul eax, ecx
add edx, eax
add edx, dword [edi + 0x10]
movzx ecx, dx
mov eax, edx
sar eax, 0x10
imul eax, esi
imul ecx, esi
sar ecx, 0x10
add ecx, eax
mov eax, ebp
imul eax, edx
add ecx, eax
add ecx, dword [edi + 0xc]
movzx edx, cx
mov eax, ecx
sar eax, 0x10
imul eax, esi
imul edx, esi
sar edx, 0x10
add edx, eax
mov eax, ebp
imul eax, ecx
add edx, eax
add edx, dword [edi + 8]
movzx ecx, dx
mov eax, edx
imul ecx, esi
sar eax, 0x10
imul eax, esi
sar ecx, 0x10
add ecx, eax
mov eax, ebp
imul eax, edx
add ecx, eax
add ecx, dword [edi + 4]
movzx ebp, cx
mov eax, ecx
imul ebp, esi
sar eax, 0x10
imul eax, esi
mov esi, dword [esp + 0x18]
sar ebp, 0x10
add ebp, eax
mov eax, dword [esp + 0x1c]
imul eax, ecx
mov ecx, dword [esp + 0x34]
add ebp, eax
lea eax, [esi - 1]
add ebp, dword [edi]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x2c], eax
jmp 0x10163bf0
lea eax, [esi - 1]
mov esi, eax
mov dword [esp + 0x2c], eax
test esi, esi
js 0x10163bec
movsx ebx, dx
sar edx, 0xf
inc edx
sar edx, 1
movzx ecx, bp
mov eax, ebp
imul ecx, ebx
sar eax, 0x10
imul eax, ebx
imul ebp, edx
sar ecx, 0x10
add ecx, dword [edi + esi*4]
add ecx, eax
add ebp, ecx
sub esi, 1
jns 0x10163bb8
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x2c], eax
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x38]
test ebx, ebx
jg 0x10163bfe
cmp ebp, eax
jge 0x10163c0e
test ebx, ebx
js 0x10163e8d
neg eax
cmp ebp, eax
jg 0x10163e8d
xor eax, eax
mov dword [esp + 0x40], 0xffffff00
test ebp, ebp
sete al
xor edx, edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x20]
add eax, ecx
mov ecx, eax
and eax, 1
sar ecx, 1
add ecx, eax
mov eax, dword [esp + 0x4c]
mov edi, ecx
mov dword [esp + 0x44], ecx
shl edi, 4
cmp dword [esp + 0x18], 8
jne 0x10163d5e
movzx edx, ax
mov ecx, eax
sar ecx, 0x10
movsx esi, di
imul edx, esi
imul ecx, esi
sar edi, 0xf
inc edi
sar edi, 1
sar edx, 0x10
add edx, ecx
mov ecx, edi
imul ecx, eax
mov eax, dword [esp + 0x10]
add edx, ecx
add edx, dword [eax + 0x1c]
movzx ecx, dx
mov eax, edx
sar eax, 0x10
imul eax, esi
imul ecx, esi
sar ecx, 0x10
add ecx, eax
mov eax, edi
imul eax, edx
add ecx, eax
mov eax, dword [esp + 0x10]
add ecx, dword [eax + 0x18]
movzx edx, cx
mov eax, ecx
sar eax, 0x10
imul eax, esi
imul edx, esi
sar edx, 0x10
add edx, eax
mov eax, edi
imul eax, ecx
add edx, eax
mov eax, dword [esp + 0x10]
add edx, dword [eax + 0x14]
movzx ecx, dx
mov eax, edx
sar eax, 0x10
imul eax, esi
imul ecx, esi
sar ecx, 0x10
add ecx, eax
mov eax, edi
imul eax, edx
add ecx, eax
mov eax, dword [esp + 0x10]
add ecx, dword [eax + 0x10]
movzx edx, cx
mov eax, ecx
sar eax, 0x10
imul eax, esi
imul edx, esi
sar edx, 0x10
add edx, eax
mov eax, edi
imul eax, ecx
add edx, eax
mov eax, dword [esp + 0x10]
add edx, dword [eax + 0xc]
movzx ecx, dx
mov eax, edx
sar eax, 0x10
imul ecx, esi
imul eax, esi
sar ecx, 0x10
add ecx, eax
mov eax, edi
imul eax, edx
add ecx, eax
mov eax, dword [esp + 0x10]
add ecx, dword [eax + 8]
movzx edx, cx
mov eax, ecx
imul edx, esi
sar edx, 0x10
sar eax, 0x10
imul eax, esi
add edx, eax
mov eax, edi
imul eax, ecx
add edx, eax
mov eax, dword [esp + 0x10]
add edx, dword [eax + 4]
movzx eax, dx
mov ecx, edx
imul eax, esi
sar ecx, 0x10
imul ecx, esi
imul edi, edx
sar eax, 0x10
add eax, ecx
mov ecx, dword [esp + 0x10]
add eax, edi
add eax, dword [ecx]
jmp 0x10163d9c
mov esi, dword [esp + 0x2c]
test esi, esi
js 0x10163da4
mov ebp, dword [esp + 0x10]
movsx ebx, di
sar edi, 0xf
inc edi
sar edi, 1
movzx edx, ax
mov ecx, eax
imul edx, ebx
sar ecx, 0x10
imul ecx, ebx
imul eax, edi
sar edx, 0x10
add edx, ecx
add edx, dword [ebp + esi*4]
add eax, edx
sub esi, 1
jns 0x10163d73
mov ebp, dword [esp + 0x30]
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x44]
test ebx, ebx
jg 0x10163dae
test eax, eax
jns 0x10163db4
test ebx, ebx
js 0x10163dc4
test eax, eax
jg 0x10163dc4
mov esi, dword [esp + 0x40]
mov ebp, eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], ebp
jmp 0x10163de5
mov esi, dword [esp + 0x40]
mov ebx, eax
mov dword [esp + 0x20], ecx
mov eax, 0x80
mov ecx, edx
mov dword [esp + 0x14], ebx
sar eax, cl
mov ecx, dword [esp + 0x34]
add esi, eax
mov dword [esp + 0x40], esi
inc edx
mov dword [esp + 0x1c], edx
cmp edx, 3
jl 0x10163c27
mov eax, ebx
mov ecx, ebx
cdq
sub ecx, ebp
xor eax, edx
sub eax, edx
cmp eax, 0x10000
jge 0x10163e14
test ecx, ecx
je 0x10163e1e
mov eax, ecx
shl ebx, 5
sar eax, 1
add eax, ebx
jmp 0x10163e19
sar ecx, 5
mov eax, ebx
cdq
idiv ecx
add esi, eax
mov ebx, dword [esp + 0x28]
mov ecx, 0x7fff
mov edx, ebx
shl edx, 8
add edx, esi
cmp edx, ecx
movzx eax, dx
mov edx, dword [esp + 0x24]
cmovl ecx, eax
mov eax, dword [esp + 0x3c]
mov word [eax + edx*2], cx
inc edx
mov dword [esp + 0x24], edx
cmp edx, dword [esp + 0xd4]
jge 0x10163fa1
movsx ecx, word [ebx*2 + 0x1024e266]
mov eax, edx
mov esi, dword [esp + 0x18]
and eax, 1
mov ebx, 0x1000
mov dword [esp + 0x20], ecx
mov edi, dword [esp + eax*4 + 0x54]
mov eax, edx
and eax, 2
mov dword [esp + 0x10], edi
shl eax, 0xc
sub ebx, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], ebx
jmp 0x10163a70
mov eax, dword [esp + 0x28]
mov ebx, ebp
inc eax
mov dword [esp + 0x20], ecx
xor ecx, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], ebx
mov dword [esp + 0x38], ecx
cmp eax, 0x80
jle 0x10163a70
mov eax, dword [esp + 0x48]
inc eax
mov dword [esp + 0x48], eax
cmp eax, 0x10
jg 0x10163f66
mov ebx, dword [esp + 0x50]
mov ecx, eax
mov edx, 1
mov eax, 0x10000
shl edx, cl
sub eax, edx
push eax
push dword [esp + 0xd8]
push ebx
call fcn.10160710
push esi
lea eax, [esp + 0xa0]
push eax
lea eax, [esp + 0x70]
push eax
push ebx
call fcn.10164110
movsx esi, word [0x1024e268]
lea edi, [esp + 0x78]
mov ebp, dword [esp + 0x34]
mov eax, edi
push ebp
push esi
push eax
mov dword [esp + 0x38], edi
mov dword [esp + 0x48], esi
call fcn.10163fc0
mov ebx, eax
add esp, 0x28
mov dword [esp + 0x14], ebx
test ebx, ebx
jns 0x10163f5b
mov eax, dword [esp + 0x3c]
lea edi, [esp + 0x90]
xor ecx, ecx
mov dword [esp + 0x10], edi
push ebp
push esi
mov word [eax], cx
mov eax, edi
push eax
call fcn.10163fc0
mov ebx, eax
mov dword [esp + 0x30], 1
add esp, 0xc
mov dword [esp + 0x14], ebx
jmp 0x10163a5a
xor eax, eax
mov dword [esp + 0x24], eax
jmp 0x10163a5a
mov ebx, dword [esp + 0xd4]
mov eax, 0x8000
cdq
lea ecx, [ebx + 1]
idiv ecx
mov edx, dword [esp + 0x3c]
mov ecx, 1
mov word [edx], ax
cmp ebx, ecx
jle 0x10163fa1
nop dword [eax + eax]
mov ax, word [edx + ecx*2 - 2]
add ax, word [edx]
mov word [edx + ecx*2], ax
inc ecx
cmp ecx, ebx
jl 0x10163f90
mov ecx, dword [esp + 0xc4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.1009fd88
add esp, 0xb8
ret