Function at 0x1000b3d0
Capabilities:
Encode data using xor

Disassembly:
push ebx
push ebp
push esi
mov esi, dword [esp + 0x10]
xor ebx, ebx
push edi
cmp esi, ebx
jne 0x1000b3e6
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
cmp dword [0x1002c100], 3
jle 0x1000b407
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
push eax
push ecx
push esi
call fcn.1000b890
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
ret
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov dword [esi + 0x178], eax
mov eax, dword [esi + 0x90]
cmp eax, ebx
mov dword [esi + 0x174], edx
jne 0x1000b43e
push esi
mov dword [esi + 0x98], ebx
mov dword [esi + 0xb4], 2
call fcn.1000b760
add esp, 4
mov eax, dword [esi + 0xa4]
cmp eax, ebx
je 0x1000b6f8
cmp dword [esi + 0x178], 0xffffffff
je 0x1000b47d
mov edi, 0x106
cmp eax, edi
jae 0x1000b47d
cmp dword [esi + 0x178], ebx
je 0x1000b70f
push esi
call fcn.1000b760
mov eax, dword [esi + 0xa4]
add esp, 4
cmp eax, edi
jb 0x1000b45e
mov ecx, dword [esi + 0x198]
mov eax, 0xaaaaaaab
add ecx, 2
mov edi, dword [esi + 0x180]
mul ecx
mov eax, dword [esi + 0xa8]
mov ecx, edx
mov edx, dword [esi + 0x18]
mov ebp, dword [esi + 0x190]
shr ecx, 1
shl eax, cl
xor ecx, ecx
mov cl, byte [edx + edi + 2]
xor eax, ecx
mov ecx, dword [esi + 0x1a0]
and eax, ecx
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0xa8], eax
lea edx, [ecx + eax]
xor eax, eax
mov al, byte [edx + ebp]
mov ebp, dword [esi + 0x194]
and edi, ebp
mov dl, al
mov dword [esi + 0x94], eax
mov byte [edi + ecx], dl
mov eax, dword [esi + 0x190]
mov edx, dword [esi + 0xa8]
mov ecx, dword [esi + 0x1c]
add eax, edx
mov dl, byte [esi + 0x180]
mov byte [eax + ecx], dl
mov eax, dword [esi + 0x94]
cmp eax, ebx
je 0x1000b538
mov ecx, dword [esi + 0x180]
mov edx, dword [esi + 0x190]
sub ecx, eax
sub edx, 0x106
cmp ecx, edx
ja 0x1000b538
push eax
push esi
call fcn.1000b260
mov ecx, dword [esi + 0xa4]
add esp, 8
cmp eax, ecx
mov dword [esi + 0x98], eax
jbe 0x1000b538
mov dword [esi + 0x98], ecx
mov eax, dword [esi + 0x98]
cmp eax, 3
jb 0x1000b67c
mov edx, dword [esi + 0xb0]
add eax, 0xfffffffd
push eax
mov eax, dword [esi + 0x180]
sub eax, edx
push eax
push esi
call fcn.1000cc70
mov edx, dword [esi + 0xa4]
mov ebp, eax
mov eax, dword [esi + 0x98]
add esp, 0xc
sub edx, eax
mov dword [esi + 0xa4], edx
mov ecx, dword [0x1002c0fc]
cmp eax, ecx
ja 0x1000b626
dec eax
mov dword [esi + 0x98], eax
mov ecx, dword [esi + 0x198]
mov eax, 0xaaaaaaab
add ecx, 2
mov edi, dword [esi + 0x180]
mul ecx
mov eax, dword [esi + 0xa8]
mov ecx, edx
mov edx, dword [esi + 0x18]
inc edi
shr ecx, 1
shl eax, cl
xor ecx, ecx
mov dword [esi + 0x180], edi
mov cl, byte [edx + edi + 2]
mov edx, dword [esi + 0x190]
xor ebx, ebx
xor eax, ecx
mov ecx, dword [esi + 0x1a0]
and eax, ecx
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0xa8], eax
add eax, ecx
mov bl, byte [eax + edx]
mov dword [esi + 0x94], ebx
mov ebx, dword [esi + 0x194]
mov al, byte [esi + 0x94]
and edi, ebx
mov byte [edi + ecx], al
mov ecx, dword [esi + 0x190]
mov edx, dword [esi + 0xa8]
mov al, byte [esi + 0x180]
add ecx, edx
mov edx, dword [esi + 0x1c]
mov byte [ecx + edx], al
mov eax, dword [esi + 0x98]
dec eax
mov dword [esi + 0x98], eax
jne 0x1000b58e
jmp 0x1000b6a4
mov edi, dword [esi + 0x180]
mov ecx, dword [esi + 0x18]
add edi, eax
mov dword [esi + 0x98], ebx
mov edx, edi
xor eax, eax
mov dword [esi + 0x180], edi
mov al, byte [ecx + edx]
lea ebx, [ecx + edx]
mov ecx, dword [esi + 0x198]
mov edi, eax
add ecx, 2
mov eax, 0xaaaaaaab
mul ecx
mov ecx, edx
mov eax, dword [esi + 0x1a0]
shr ecx, 1
mov dword [esi + 0xa8], edi
xor edx, edx
mov dl, byte [ebx + 1]
shl edi, cl
xor edi, edx
and edi, eax
mov dword [esi + 0xa8], edi
jmp 0x1000b6aa
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x180]
xor edx, edx
mov dl, byte [eax + ecx]
push edx
push ebx
push esi
call fcn.1000cc70
mov ecx, dword [esi + 0xa4]
add esp, 0xc
dec ecx
mov ebp, eax
mov dword [esi + 0xa4], ecx
inc dword [esi + 0x180]
xor ebx, ebx
cmp ebp, ebx
je 0x1000b6ea
mov ecx, dword [esi + 0xac]
cmp ecx, ebx
jl 0x1000b6c3
mov edx, dword [esi + 0x18]
mov eax, ecx
add eax, edx
jmp 0x1000b6c5
xor eax, eax
mov edx, dword [esi + 0x180]
push ebx
sub edx, ecx
push edx
push eax
push esi
call fcn.1000c210
add esp, 0x10
cmp eax, 0xffffffff
je 0x1000b722
mov eax, dword [esi + 0x180]
mov dword [esi + 0xac], eax
mov eax, dword [esi + 0xa4]
cmp eax, ebx
jne 0x1000b44c
mov ecx, dword [esi + 0xac]
mov dword [esi + 0x90], ebx
cmp ecx, ebx
jl 0x1000b730
mov eax, dword [esi + 0x18]
add eax, ecx
jmp 0x1000b732
mov dword [esi + 0x90], 1
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
ret
mov dword [esi + 0x90], ebx
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
xor eax, eax
mov edx, dword [esi + 0x180]
push 1
sub edx, ecx
push edx
push eax
push esi
call fcn.1000c210
add esp, 0x10
cmp eax, 0xffffffff
jne 0x1000b719
pop edi
pop esi
pop ebp
or eax, eax
pop ebx
ret