Function at 0x10018cc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x2034
call fcn.1015dc90
mov eax, dword [0x101ed004]
xor eax, esp
mov dword [esp + 0x2030], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x28], 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 + 0x1c], ecx
mov eax, edx
mov dword [esp + 0x20], ebx
xor ecx, ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], ecx
push edi
mov edi, dword [ebp + 8]
mov dword [esp + 0x14], edi
test eax, eax
jl 0x10018e31
jg 0x10018d22
test ebx, ebx
je 0x10018e31
test eax, eax
ja 0x10018d42
jb 0x10018d2e
cmp ebx, 0x2000
jae 0x10018d42
test eax, eax
jne 0x10018d3a
test ebx, ebx
jne 0x10018d3a
xor edi, edi
jmp 0x10018d4f
mov edi, ebx
mov dword [esp + 0x2c], eax
jmp 0x10018d4f
mov edi, 0x2000
mov dword [esp + 0x2c], 0
mov ecx, dword [esi + 0x3c2c]
lea edx, [esp + 0x38]
push edi
push edx
mov dword [esp + 0x20], edi
mov eax, dword [ecx]
call dword [eax + 0x18]
test eax, eax
je 0x10018f3d
cmp dword [esi + 0x3c40], 0
je 0x10018db6
lea ecx, [esp + 0x38]
test edi, edi
jle 0x10018db6
mov edx, dword [esi + 0x3c44]
mov ebx, dword [esi + 0x3c40]
mov dword [esp + 0x28], edi
nop dword [eax]
mov al, byte [ebx + edx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
lea eax, [edx + 1]
cdq
idiv dword [esi + 0x3c48]
mov dword [esi + 0x3c44], edx
sub edi, 1
jne 0x10018d90
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x38]
push 0x101f1fd0
push edi
not ecx
call fcn.100d5f20
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0x38]
not eax
mov dword [esp + 0x10], eax
push edi
mov eax, dword [ecx]
push edx
call dword [eax + 0x14]
mov ecx, dword [esp + 0x20]
test eax, eax
je 0x10018eaa
push ecx
push 0
push edi
sub ebx, edi
mov ecx, esi
push 0
sbb dword [esp + 0x2c], 0
push edi
mov dword [esp + 0x38], ebx
call fcn.1005c4d0
mov eax, dword [esi + 0x74c]
or eax, dword [esi + 0x748]
jne 0x10018e29
mov eax, dword [esp + 0x1c]
test eax, eax
jg 0x10018d22
jl 0x10018e29
test ebx, ebx
jne 0x10018d20
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
cmp dword [esi + 0x744], 0
jne 0x10018fa3
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x10018f87
cmp eax, ecx
je 0x10018f87
mov edx, dword [esi + 4]
mov dword [esi + 0x744], 0xa0000018
test edx, edx
je 0x10018e7b
mov ecx, dword [edx]
lea eax, [esi + 0x74c]
push eax
push 0
push edi
push 0xa0000018
push edx
call dword [ecx + 0x14]
xor eax, eax
cmp dword [esi + 0x73c], eax
je 0x10018fa5
mov dword [esi + 0x740], 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2030]
xor ecx, esp
call fcn.10142783
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [ecx]
call dword [eax + 0x40]
mov edx, dword [esi + 4]
mov edi, dword [esp + 0x14]
cmp eax, 0x70
jne 0x10018efe
mov dword [esi + 0x744], 0xa0000054
test edx, edx
je 0x10018ede
mov ecx, dword [edx]
lea eax, [esi + 0x74c]
push eax
push 0
push edi
push 0xa0000054
push edx
call dword [ecx + 0x14]
cmp dword [esi + 0x73c], 0
mov ecx, dword [esp + 0x10]
je 0x10018e31
mov dword [esi + 0x740], 1
jmp 0x10018e31
mov dword [esi + 0x744], 0xa0000030
test edx, edx
je 0x10018f21
mov ecx, dword [edx]
lea eax, [esi + 0x74c]
push eax
push 0
push edi
push 0xa0000030
push edx
call dword [ecx + 0x14]
cmp dword [esi + 0x73c], 0
je 0x10018e2d
mov dword [esi + 0x740], 1
jmp 0x10018e2d
mov edx, dword [esi + 4]
mov edi, dword [esp + 0x14]
mov dword [esi + 0x744], 0xa0000015
test edx, edx
je 0x10018f67
mov ecx, dword [edx]
lea eax, [esi + 0x74c]
push eax
push 0
push edi
push 0xa0000015
push edx
call dword [ecx + 0x14]
cmp dword [esi + 0x73c], 0
mov ecx, dword [esp + 0x10]
je 0x10018e31
mov dword [esi + 0x740], 1
jmp 0x10018e31
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2030]
xor ecx, esp
call fcn.10142783
mov esp, ebp
pop ebp
ret 0xc
xor eax, eax
mov ecx, dword [esp + 0x203c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.10142783
mov esp, ebp
pop ebp
ret 0xc