Function at 0x100c9000
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x10
call fcn.100e0610
cmp dword [esp + 0x18], 0
push esi
mov dword [esp + 4], 0
jle 0x100c9290
mov esi, dword [esp + 0x24]
test esi, esi
jle 0x100c9290
push edi
mov edi, dword [esp + 0x2c]
cmp esi, edi
jg 0x100c9272
cmp edi, 0xb
jl 0x100c9272
push ebp
push 0
push 0x1010936d
push edi
call fcn.10052540
mov ebp, eax
add esp, 0xc
test ebp, ebp
jne 0x100c9071
push eax
push eax
push 0x41
push 0x71
push 4
call fcn.100559f0
add esp, 0x14
or eax, 0xffffffff
pop ebp
pop edi
pop esi
add esp, 0x10
ret
mov edx, dword [esp + 0x28]
add ebp, edi
add edx, esi
push ebx
test edi, edi
jle 0x100c90a6
mov ebx, edi
mov eax, esi
lea ecx, [esi - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
dec ebp
and ecx, eax
dec ecx
mov eax, ecx
and eax, 1
sub edx, eax
sub esi, eax
mov al, byte [edx]
and al, cl
mov byte [ebp], al
sub ebx, 1
jne 0x100c9080
movzx eax, byte [ebp + 1]
mov esi, 2
xor eax, 2
lea ebx, [eax - 1]
not eax
shr eax, 0x1f
shr ebx, 0x1f
and ebx, eax
movzx eax, byte [ebp]
dec eax
neg ebx
shr eax, 0x1f
neg eax
and ebx, eax
mov dword [esp + 0x14], ebx
cmp edi, esi
jle 0x100c9104
xor ebx, ebx
movzx edx, byte [esi + ebp]
mov ecx, ebx
dec edx
not ecx
shr edx, 0x1f
neg edx
and ecx, edx
or ebx, edx
mov eax, ecx
and ecx, esi
not eax
inc esi
and eax, dword [esp + 0x10]
or eax, ecx
mov dword [esp + 0x10], eax
cmp esi, edi
jl 0x100c90d7
mov ebx, dword [esp + 0x14]
jmp 0x100c9106
xor eax, eax
mov esi, dword [esp + 0x28]
mov edx, edi
sub edx, eax
mov ecx, esi
dec edx
sub ecx, edx
mov dword [esp + 0x18], edx
xor ecx, edx
mov eax, edx
mov edx, dword [esp + 0x10]
xor eax, esi
or ecx, eax
xor ecx, esi
shr ecx, 0x1f
lea eax, [edx - 0xa]
dec ecx
or eax, edx
xor eax, edx
shr eax, 0x1f
dec eax
and ecx, eax
and ebx, ecx
lea ecx, [edi - 0xb]
mov edx, ecx
mov dword [esp + 0x14], ebx
sub edx, esi
mov eax, ecx
xor edx, esi
xor eax, esi
or edx, eax
xor edx, ecx
lea ecx, [edi - 0xb]
shr edx, 0x1f
neg edx
mov dword [esp + 0x10], ecx
mov eax, edx
not eax
and eax, esi
mov esi, 1
mov dword [esp + 0x28], eax
mov eax, ecx
and eax, edx
mov edx, dword [esp + 0x28]
or edx, eax
mov dword [esp + 0x28], edx
cmp ecx, esi
jle 0x100c91e1
mov eax, edi
sub eax, dword [esp + 0x18]
add eax, 0xfffffff5
mov dword [esp + 0x1c], eax
and eax, esi
mov edx, edi
sub edx, esi
lea ebx, [eax - 1]
not eax
shr ebx, 0x1f
shr eax, 0x1f
and ebx, eax
dec ebx
cmp edx, 0xb
jle 0x100c91cf
mov ch, bl
lea eax, [ebp + 0xb]
not ch
lea edi, [edx - 0xb]
nop word [eax + eax]
mov dl, byte [esi + eax]
lea eax, [eax + 1]
mov cl, byte [eax - 1]
and dl, bl
and cl, ch
or dl, cl
mov byte [eax - 1], dl
sub edi, 1
jne 0x100c91b0
mov edi, dword [esp + 0x34]
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
add esi, esi
cmp esi, ecx
jl 0x100c9187
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x28]
xor esi, esi
test edx, edx
jle 0x100c9232
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x18]
shr eax, 0x1f
neg edi
mov dword [esp + 0x1c], eax
mov edx, edi
mov ecx, esi
shr edx, 0x1f
inc edi
xor dl, al
shr ecx, 0x1f
xor al, cl
or dl, al
mov al, byte [esi + ebp + 0xb]
xor dl, cl
mov ecx, dword [esp + 0x24]
neg dl
and dl, bl
and al, dl
not dl
and dl, byte [esi + ecx]
or al, dl
mov byte [esi + ecx], al
inc esi
mov eax, dword [esp + 0x1c]
cmp esi, dword [esp + 0x28]
jl 0x100c91f8
mov edi, dword [esp + 0x34]
push 0
push 0x1010936d
push edi
push ebp
call fcn.10052630
push 0
push 0
push 0x9f
push 0x71
push 4
call fcn.100559f0
mov eax, ebx
and eax, 1
push eax
call fcn.10055bd0
add esp, 0x28
mov eax, ebx
and eax, dword [esp + 0x18]
not ebx
or eax, ebx
pop ebx
pop ebp
pop edi
pop esi
add esp, 0x10
ret
push 0
push 0
push 0x9f
push 0x71
push 4
call fcn.100559f0
add esp, 0x14
or eax, 0xffffffff
pop edi
pop esi
add esp, 0x10
ret
or eax, 0xffffffff
pop esi
add esp, 0x10
ret