Function at 0x1000b890
Capabilities:
Encode data using xor

Disassembly:
push ebx
push ebp
push esi
mov esi, dword [esp + 0x10]
xor ebp, ebp
push edi
cmp esi, ebp
jne 0x1000b8a6
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esi + 0x174], eax
mov eax, dword [esi + 0x90]
cmp eax, ebp
mov dword [esi + 0x178], ecx
jne 0x1000b8d4
mov dword [esi + 0xa0], ebp
mov dword [esi + 0x98], 2
mov eax, dword [esi + 0xa4]
mov edi, 0x106
cmp eax, edi
jae 0x1000b902
cmp dword [esi + 0x178], ebp
je 0x1000bbfa
push esi
call fcn.1000b760
mov eax, dword [esi + 0xa4]
add esp, 4
cmp eax, edi
jb 0x1000b8e3
mov edx, dword [esi + 0x198]
mov eax, 0xaaaaaaab
add edx, 2
mov edi, dword [esi + 0x180]
mul edx
mov eax, dword [esi + 0xa8]
mov ecx, edx
shr ecx, 1
shl eax, cl
mov ecx, dword [esi + 0x18]
xor edx, edx
xor ebx, ebx
mov dl, byte [ecx + edi + 2]
mov ecx, dword [esi + 0x1a0]
xor eax, edx
mov edx, dword [esi + 0x190]
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 edi, 2
mov byte [ecx + edx], al
mov eax, dword [esi + 0x94]
mov ecx, dword [esi + 0x98]
mov edx, dword [esi + 0xb0]
cmp eax, ebp
mov dword [esi + 0xb4], ecx
mov dword [esi + 0x9c], edx
mov dword [esi + 0x98], edi
je 0x1000ba10
cmp ecx, dword [0x1002c0fc]
jae 0x1000ba10
mov edx, dword [esi + 0x180]
mov ecx, dword [esi + 0x190]
sub edx, eax
sub ecx, 0x106
cmp edx, ecx
ja 0x1000ba10
push eax
push esi
call fcn.1000b260
mov ecx, dword [esi + 0xa4]
add esp, 8
cmp eax, ecx
mov dword [esi + 0x98], eax
jbe 0x1000b9eb
mov dword [esi + 0x98], ecx
cmp dword [esi + 0x98], 3
jne 0x1000ba10
mov edx, dword [esi + 0x180]
mov ecx, dword [esi + 0xb0]
sub edx, ecx
cmp edx, 0x1000
jbe 0x1000ba10
mov dword [esi + 0x98], edi
mov eax, dword [esi + 0xb4]
cmp eax, 3
jb 0x1000bb67
cmp dword [esi + 0x98], eax
ja 0x1000bb67
mov edi, dword [esi + 0x9c]
add eax, 0xfffffffd
push eax
mov eax, dword [esi + 0x180]
sub eax, edi
dec eax
push eax
push esi
call fcn.1000cc70
mov edx, dword [esi + 0xa4]
mov ebx, eax
mov eax, dword [esi + 0xb4]
mov ecx, 1
sub ecx, eax
add esp, 0xc
add edx, ecx
add eax, 0xfffffffe
mov dword [esi + 0xa4], edx
mov dword [esi + 0xb4], eax
mov edx, dword [esi + 0x198]
mov eax, 0xaaaaaaab
add edx, 2
mov ecx, dword [esi + 0x180]
mul edx
mov eax, dword [esi + 0xa8]
inc ecx
mov dword [esi + 0x180], ecx
mov edi, ecx
mov ecx, edx
xor edx, edx
shr ecx, 1
shl eax, cl
mov ecx, dword [esi + 0x18]
mov dl, byte [edi + ecx + 2]
mov ecx, dword [esi + 0x1a0]
xor eax, edx
mov edx, dword [esi + 0x190]
and eax, ecx
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0xa8], eax
lea ebp, [eax + ecx]
xor eax, eax
mov al, byte [edx + ebp]
mov ebp, dword [esi + 0x194]
and edi, ebp
mov dword [esi + 0x94], eax
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 + 0xb4]
dec eax
mov dword [esi + 0xb4], eax
jne 0x1000ba6e
mov edx, dword [esi + 0x180]
xor ebp, ebp
inc edx
cmp ebx, ebp
mov dword [esi + 0xa0], ebp
mov dword [esi + 0x98], 2
mov dword [esi + 0x180], edx
mov eax, edx
je 0x1000bbed
mov edx, dword [esi + 0xac]
cmp edx, ebp
jl 0x1000bb3d
mov edi, dword [esi + 0x18]
mov ecx, edx
add ecx, edi
jmp 0x1000bb3f
xor ecx, ecx
sub eax, edx
push ebp
push eax
push ecx
push esi
call fcn.1000c210
add esp, 0x10
cmp eax, 0xffffffff
je 0x1000bc0d
mov ecx, dword [esi + 0x180]
mov dword [esi + 0xac], ecx
jmp 0x1000bbed
cmp dword [esi + 0xa0], ebp
je 0x1000bbc9
mov edx, dword [esi + 0x18]
mov eax, dword [esi + 0x180]
xor ecx, ecx
mov cl, byte [edx + eax - 1]
push ecx
push ebp
push esi
call fcn.1000cc70
add esp, 0xc
test eax, eax
je 0x1000bbd3
mov ecx, dword [esi + 0xac]
cmp ecx, ebp
jl 0x1000bba0
mov edx, dword [esi + 0x18]
mov eax, ecx
add eax, edx
jmp 0x1000bba2
xor eax, eax
mov edx, dword [esi + 0x180]
push ebp
sub edx, ecx
push edx
push eax
push esi
call fcn.1000c210
add esp, 0x10
cmp eax, 0xffffffff
je 0x1000bc0d
mov eax, dword [esi + 0x180]
mov dword [esi + 0xac], eax
jmp 0x1000bbd3
mov dword [esi + 0xa0], 1
mov ecx, dword [esi + 0x180]
mov eax, dword [esi + 0xa4]
inc ecx
dec eax
mov dword [esi + 0x180], ecx
mov dword [esi + 0xa4], eax
cmp dword [esi + 0xa4], ebp
je 0x1000bc1b
jmp 0x1000b8d4
mov dword [esi + 0x90], 1
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
ret
mov dword [esi + 0x90], ebp
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
cmp dword [esi + 0xa0], ebp
je 0x1000bc3d
mov ecx, dword [esi + 0x180]
mov edx, dword [esi + 0x18]
xor eax, eax
mov al, byte [ecx + edx - 1]
push eax
push ebp
push esi
call fcn.1000cc70
add esp, 0xc
mov ecx, dword [esi + 0xac]
mov dword [esi + 0x90], ebp
cmp ecx, ebp
jl 0x1000bc54
mov eax, dword [esi + 0x18]
add eax, ecx
jmp 0x1000bc56
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 0x1000bc04
pop edi
pop esi
pop ebp
or eax, eax
pop ebx
ret