Function at 0x10015fa0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x202c
call fcn.10178bb0
mov eax, dword [0x101e6040]
xor eax, esp
mov dword [esp + 0x2028], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x18], eax
push ebx
push esi
mov eax, dword [eax + 4]
mov esi, ecx
mov ecx, dword [ebp + 0x10]
cdq
mov ebx, eax
mov dword [esp + 0x18], ecx
mov eax, edx
mov dword [esp + 0x1c], ebx
xor ecx, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 8], ecx
push edi
mov edi, dword [ebp + 8]
mov dword [esp + 0x10], edi
test eax, eax
jl 0x10016114
jg 0x10016002
test ebx, ebx
je 0x10016114
test eax, eax
ja 0x1001601e
jb 0x1001600e
cmp ebx, 0x2000
jae 0x1001601e
test eax, eax
jne 0x1001601a
test ebx, ebx
jne 0x1001601a
xor edi, edi
jmp 0x1001602b
mov edi, ebx
jmp 0x1001602b
mov edi, 0x2000
mov dword [esp + 0x2c], 0
mov ecx, dword [esi + 0x3c34]
lea edx, [esp + 0x30]
push 0
push edi
push edx
mov eax, dword [ecx]
mov dword [esp + 0x20], edi
call dword [eax + 0x18]
test eax, eax
je 0x10016224
cmp dword [esi + 0x3c48], 0
je 0x10016096
lea ecx, [esp + 0x30]
test edi, edi
jle 0x10016096
mov edx, dword [esi + 0x3c4c]
mov ebx, edi
mov edi, dword [esi + 0x3c48]
nop dword [eax]
mov al, byte [edi + edx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
lea eax, [edx + 1]
cdq
idiv dword [esi + 0x3c50]
mov dword [esi + 0x3c4c], edx
sub ebx, 1
jne 0x10016070
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0xc]
lea edx, [esp + 0x30]
push 0x101eb0a8
push edi
not ecx
call fcn.10108970
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x30]
not eax
push 0
mov dword [esp + 0x10], eax
mov eax, dword [ecx]
push edi
push edx
call dword [eax + 0x18]
mov ecx, dword [esp + 0x1c]
test eax, eax
je 0x1001618d
push ecx
push 0
push edi
sub ebx, edi
lea ecx, [esi + 4]
push 0
sbb dword [esp + 0x28], 0
push edi
mov dword [esp + 0x34], ebx
call fcn.10057270
mov eax, dword [esi + 0x754]
or eax, dword [esi + 0x750]
jne 0x1001610c
mov eax, dword [esp + 0x18]
test eax, eax
jg 0x10016002
jl 0x1001610c
test ebx, ebx
jne 0x10016000
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
cmp dword [esi + 0x74c], 0
jne 0x10016286
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x1001626a
cmp eax, ecx
je 0x1001626a
mov edx, dword [esi + 8]
mov dword [esi + 0x74c], 0xa0000018
test edx, edx
je 0x1001615e
mov ecx, dword [edx]
lea eax, [esi + 0x754]
push eax
push 0
push edi
push 0xa0000018
push edx
call dword [ecx + 0x14]
xor eax, eax
cmp byte [esi + 0x734], al
je 0x10016288
mov dword [esi + 0x748], 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2028]
xor ecx, esp
call fcn.10151433
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [ecx]
call dword [eax + 0x44]
mov edx, dword [esi + 8]
mov edi, dword [esp + 0x10]
cmp eax, 0x70
jne 0x100161e1
mov dword [esi + 0x74c], 0xa0000054
test edx, edx
je 0x100161c1
mov ecx, dword [edx]
lea eax, [esi + 0x754]
push eax
push 0
push edi
push 0xa0000054
push edx
call dword [ecx + 0x14]
cmp byte [esi + 0x734], 0
mov ecx, dword [esp + 0xc]
je 0x10016114
mov dword [esi + 0x748], 1
jmp 0x10016114
mov dword [esi + 0x74c], 0xa0000030
test edx, edx
je 0x10016204
mov ecx, dword [edx]
lea eax, [esi + 0x754]
push eax
push 0
push edi
push 0xa0000030
push edx
call dword [ecx + 0x14]
cmp byte [esi + 0x734], 0
mov ecx, dword [esp + 0xc]
je 0x10016114
mov dword [esi + 0x748], 1
jmp 0x10016114
mov edx, dword [esi + 8]
mov edi, dword [esp + 0x10]
mov dword [esi + 0x74c], 0xa0000015
test edx, edx
je 0x1001624e
mov ecx, dword [edx]
lea eax, [esi + 0x754]
push eax
push 0
push edi
push 0xa0000015
push edx
call dword [ecx + 0x14]
cmp byte [esi + 0x734], 0
je 0x10016110
mov dword [esi + 0x748], 1
jmp 0x10016110
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2028]
xor ecx, esp
call fcn.10151433
mov esp, ebp
pop ebp
ret 0xc
xor eax, eax
mov ecx, dword [esp + 0x2034]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.10151433
mov esp, ebp
pop ebp
ret 0xc