Function at 0x109e590
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x50
mov ebp, dword [esp + 0x68]
mov ebx, dword [ebp + 4]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x109e5b0
mov eax, dword [esp + 0x6c]
mov edi, dword [eax + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x109e5d0
sar ecx, 1
sar eax, 1
lea edx, [ecx + eax]
mov dword [esp + 0x48], eax
add eax, ecx
add eax, 0x1b
test eax, eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x44], edx
jns 0x109e5fe
mov eax, 0xffffffff
jmp 0x109e605
lea eax, [edx*2 + 0x36]
push eax
call fcn.01088730
add esp, 4
mov dword [esp + 4], eax
mov dword [esp + 0xc], 0x235e214c
mov dword [esp + 0x10], 0x274525bb
mov dword [esp + 0x14], 0x5bc65939
mov dword [esp + 0x18], 0x5f1b5d7c
mov dword [esp + 0x1c], 0x53c651d8
mov dword [esp + 0x20], 0x57c85531
mov dword [esp + 0x24], 0x4bd349db
mov dword [esp + 0x28], 0x4fd04dd3
mov dword [esp + 0x2c], 0x43314160
mov dword [esp + 0x30], 0x47d24521
mov dword [esp + 0x34], 0x7be379ec
mov dword [esp + 0x38], 0x7f197de2
mov dword [esp + 0x3c], 0x731e71e3
mov dword [esp + 0x40], 0x7574
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0xc]
mov esi, eax
and esi, 0x38
mov ecx, eax
or ecx, 0x7eb06838
add ecx, esi
mov esi, ecx
add ecx, edx
not edx
or esi, edx
sub edx, esi
lea ecx, [ecx + edx*2]
add cl, 0xe8
mov byte [esp + eax + 0xc], cl
inc eax
cmp eax, 0x38
jne 0x109e690
movzx ecx, word [ebx]
mov eax, dword [esp + 4]
test cx, cx
je 0x109e6f1
add ebx, 2
mov eax, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x109e6e0
mov word [eax], 0
movzx ecx, word [esp + 0xc]
test cx, cx
je 0x109e721
lea edx, [esp + 0xe]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x109e710
mov word [eax], 0
movzx ecx, word [edi]
test cx, cx
je 0x109e751
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x109e740
mov word [eax], 0
mov esi, dword [ebp]
mov eax, 0xfffffffe
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x109e760
mov ebp, dword [ebp + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x109e780
mov edx, dword [esp + 0x6c]
mov ebx, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + edx + 2], 0
lea edx, [edx + 2]
jne 0x109e7a0
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
jns 0x109e7c4
mov eax, 0xffffffff
jmp 0x109e7cd
add ecx, edx
lea eax, [ecx*2 + 0x26]
push eax
call fcn.01088730
add esp, 4
mov edi, eax
movzx eax, word [esi]
mov dword [esp + 8], edi
test ax, ax
je 0x109e801
add esi, 2
mov edi, dword [esp + 8]
nop
nop
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [esi]
add esi, 2
test ax, ax
jne 0x109e7f0
mov word [edi], 0x2f
mov dword [esp + 0xc], 0x21792755
mov dword [esp + 0x10], 0x3dae23a8
mov dword [esp + 0x14], 0x39883f83
mov dword [esp + 0x18], 0x35813bb5
mov dword [esp + 0x1c], 0x31803785
mov dword [esp + 0x20], 0xd4333bd
mov word [esp + 0x24], 0xf0c
mov dword [esp + 0x26], 0
mov byte [esp + 0x2a], 0
xor eax, eax
nop
nop
nop
nop
mov ecx, eax
add cl, 0x89
xor cl, byte [esp + eax + 0xc]
add cl, 0x53
mov byte [esp + eax + 0xc], cl
inc eax
cmp eax, 0x1f
jne 0x109e850
add edi, 2
movzx eax, word [ebp]
test ax, ax
je 0x109e892
add ebp, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x109e880
mov word [edi], 0
movzx eax, word [esp + 0xc]
test ax, ax
je 0x109e8c3
lea ecx, [esp + 0xe]
mov esi, dword [esp + 0x68]
nop
nop
nop
nop
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x109e8b0
jmp 0x109e8c7
mov esi, dword [esp + 0x68]
mov word [edi], 0
movzx eax, word [ebx]
test ax, ax
je 0x109e8f1
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ebx]
add ebx, 2
test ax, ax
jne 0x109e8e0
mov word [edi], 0
mov dword [esp + 0xc], 0x212627fe
mov word [esp + 0x10], 0
mov byte [esp + 0x12], 0
mov edx, 0x15579bf9
nop
movzx eax, byte [esp + edx - 0x15579bed]
mov ebx, eax
mov ebp, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xfd
mul cl
mov ecx, eax
mov eax, ebp
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0x23
mov byte [esp + edx - 0x15579bed], al
inc edx
cmp edx, 0x15579c00
jne 0x109e910
lea eax, [esp + 0xc]
push 0
push 0
push 0xc00000
push eax
mov ebx, dword [esp + 0x14]
push ebx
push dword [esp + 0x1c]
push dword [esp + 0x7c]
call fcn.010a2900
add esp, 0x1c
mov byte [esp + 3], al
jmp dword [0x10c6e2c]