Function at 0x1018ee00
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xd8
call fcn.10043ea0
mov eax, dword [0x10271304]
xor eax, esp
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0xdc]
push ebx
mov ebx, dword [esp + 0xf0]
push ebp
mov ebp, dword [esp + 0xf0]
push esi
mov esi, dword [esp + 0x10c]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x100]
push edi
mov edi, dword [esp + 0xf4]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x108]
shr edi, 3
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x48], ebx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x1c], esi
mov dword [esp + 0x44], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x40], 2
cmp edi, 0x14
je 0x1018eea1
cmp edi, 0x1c
je 0x1018eea1
cmp edi, 0x20
je 0x1018eea1
xor eax, eax
jmp 0x1018f595
test ebp, ebp
jne 0x1018eed6
cmp edi, 0x14
jne 0x1018eeb7
call fcn.101296b0
mov ebp, eax
mov dword [esp + 0x20], ebp
jmp 0x1018eee1
cmp edi, 0x1c
jne 0x1018eec9
call fcn.101296c0
mov ebp, eax
mov dword [esp + 0x20], ebp
jmp 0x1018eee1
call fcn.101296d0
mov ebp, eax
mov dword [esp + 0x20], ebp
jmp 0x1018eee1
push ebp
call fcn.1013bbc0
add esp, 4
mov edi, eax
mov eax, 0x200
cmp dword [esp + 0xf0], eax
cmovae eax, dword [esp + 0xf0]
add eax, 0x3f
and eax, 0xffffffc0
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x100]
test eax, eax
je 0x1018ef15
xor ecx, ecx
cmp eax, edi
cmovb ebx, ecx
mov dword [esp + 0x48], ebx
cmp eax, edi
cmova eax, edi
mov dword [esp + 0x100], eax
test ebx, ebx
je 0x1018ef37
push eax
lea eax, [esp + 0xa8]
push ebx
push eax
call fcn.100ae520
add esp, 0xc
call fcn.10176390
mov dword [esp + 0x2c], eax
test eax, eax
je 0x1018f591
call fcn.10140d40
mov ebx, eax
mov dword [esp + 0x10], ebx
test ebx, ebx
je 0x1018f585
push ebx
call fcn.10140dc0
push ebx
call fcn.10140ce0
push dword [esp + 0x18]
mov ebx, eax
call fcn.10140ce0
push dword [esp + 0x1c]
mov dword [esp + 0x38], eax
call fcn.10140ce0
push dword [esp + 0x20]
mov dword [esp + 0x4c], eax
call fcn.10140ce0
push dword [esp + 0x24]
mov dword [esp + 0x3c], eax
call fcn.10140ce0
push dword [esp + 0x28]
mov dword [esp + 0x6c], eax
call fcn.10140ce0
push dword [esp + 0x2c]
mov dword [esp + 0x6c], eax
call fcn.10140ce0
push dword [esp + 0x30]
mov dword [esp + 0x3c], eax
call fcn.10140ce0
add esp, 0x24
mov dword [esp + 0x14], eax
test eax, eax
je 0x1018f572
mov eax, dword [esp + 0x34]
dec eax
push eax
call fcn.101256e0
push eax
push dword [esp + 0x1c]
call fcn.10165470
add esp, 0xc
test eax, eax
je 0x1018f572
nop
push dword [esp + 0x30]
push 0
push esi
call fcn.101a7180
inc dword [esp + 0x3c]
add esp, 0xc
test eax, eax
je 0x1018f572
cmp dword [esp + 0x100], 0
je 0x1018f027
cmp dword [esp + 0x48], 0
je 0x1018f027
xor esi, esi
mov dword [esp + 0x100], esi
jmp 0x1018f045
lea eax, [esp + 0xa4]
push edi
push eax
call fcn.1012d100
add esp, 8
test eax, eax
jle 0x1018f572
mov esi, 1
push edi
lea eax, [esp + 0xa8]
push eax
lea eax, [esp + 0x8c]
push eax
call fcn.100ae520
push edi
lea eax, [esp + 0xb4]
push eax
lea eax, [esp + 0xd8]
push eax
call fcn.100ae520
lea eax, [edi - 1]
add esp, 0x18
test eax, eax
js 0x1018f08f
nop dword [eax + eax]
add byte [esp + eax + 0x84], 1
jne 0x1018f08f
sub eax, 1
jns 0x1018f080
push 0
push ebp
push 0
lea eax, [esp + 0x70]
push eax
lea eax, [esp + 0xb4]
push edi
push eax
call fcn.10128fd0
add esp, 0x18
test eax, eax
je 0x1018f572
push 0
push ebp
push 0
lea eax, [esp + 0xd0]
push eax
lea eax, [esp + 0x94]
push edi
push eax
call fcn.10128fd0
add esp, 0x18
test eax, eax
je 0x1018f572
xor ecx, ecx
test edi, edi
jle 0x1018f150
cmp edi, 0x20
jb 0x1018f133
mov eax, edi
and eax, 0x8000001f
jns 0x1018f0f1
dec eax
or eax, 0xffffffe0
inc eax
mov edx, edi
sub edx, eax
nop word [eax + eax]
movups xmm0, xmmword [esp + ecx + 0x64]
movups xmm1, xmmword [esp + ecx + 0xc4]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x64], xmm1
movups xmm0, xmmword [esp + ecx + 0x74]
movups xmm1, xmmword [esp + ecx + 0xd4]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x74], xmm1
add ecx, 0x20
cmp ecx, edx
jl 0x1018f100
cmp ecx, edi
jge 0x1018f150
nop word [eax + eax]
mov al, byte [esp + ecx + 0xc4]
xor byte [esp + ecx + 0x64], al
inc ecx
cmp ecx, edi
jl 0x1018f140
push dword [esp + 0x24]
or byte [esp + 0x68], 0x80
lea eax, [esp + 0x68]
or byte [esp + edi + 0x67], 1
push edi
push eax
call fcn.10124cd0
add esp, 0xc
test eax, eax
je 0x1018f572
push dword [esp + 0x1c]
push esi
push dword [esp + 0x18]
push 0x40
push dword [esp + 0x34]
call fcn.101a7400
add esp, 0x14
test eax, eax
jg 0x1018f19e
jne 0x1018f572
mov esi, dword [esp + 0x1c]
jmp 0x1018eff0
mov ebp, dword [esp + 0x1c]
push 0
push 2
push ebp
call fcn.101a7180
add esp, 0xc
test eax, eax
je 0x1018f572
push 0
push 3
push ebp
call fcn.101a7180
add esp, 0xc
test eax, eax
je 0x1018f572
mov ecx, dword [esp + 0x34]
mov eax, 0xcccccccd
xor esi, esi
mov dword [esp + 0x3c], esi
lea ecx, [ecx - 1]
mul ecx
mov ebp, edx
shr ebp, 7
test esi, esi
je 0x1018f200
push esi
push 0
push dword [esp + 0x24]
call fcn.101a7180
add esp, 0xc
test eax, eax
je 0x1018f572
push 0
push dword [esp + 0x3c]
call fcn.10125630
add esp, 8
xor esi, esi
test ebp, ebp
js 0x1018f2a9
lea eax, [edi - 1]
test eax, eax
js 0x1018f22f
nop
add byte [esp + eax + 0x84], 1
jne 0x1018f22f
sub eax, 1
jns 0x1018f220
push 0
push dword [esp + 0x24]
lea eax, [esp + 0x6c]
push 0
push eax
lea eax, [esp + 0x94]
push edi
push eax
call fcn.10128fd0
add esp, 0x18
test eax, eax
je 0x1018f572
push ebx
lea eax, [esp + 0x68]
push edi
push eax
call fcn.10124cd0
add esp, 0xc
test eax, eax
je 0x1018f572
lea eax, [edi*8]
imul eax, esi
push eax
push ebx
push ebx
call fcn.10165470
add esp, 0xc
test eax, eax
je 0x1018f572
mov eax, dword [esp + 0x38]
push ebx
push eax
push eax
call fcn.10140ff0
add esp, 0xc
test eax, eax
je 0x1018f572
inc esi
cmp esi, ebp
jle 0x1018f218
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
dec eax
push eax
push esi
call fcn.101253c0
add esp, 8
test eax, eax
je 0x1018f572
push esi
mov esi, dword [esp + 0x54]
push esi
call fcn.10125210
add esp, 8
test eax, eax
je 0x1018f572
push dword [esp + 0x14]
push esi
push esi
call fcn.10140ff0
add esp, 0xc
test eax, eax
je 0x1018f572
push dword [esp + 0x24]
push ebx
call fcn.101655f0
add esp, 8
test eax, eax
je 0x1018f572
push dword [esp + 0x10]
push ebx
push esi
push dword [esp + 0x58]
push 0
call fcn.10176c30
add esp, 0x14
test eax, eax
je 0x1018f572
call fcn.101256e0
push eax
push dword [esp + 0x50]
push ebx
call fcn.10141080
add esp, 0xc
test eax, eax
je 0x1018f572
push ebx
push esi
mov esi, dword [esp + 0x20]
push esi
call fcn.10141080
add esp, 0xc
test eax, eax
je 0x1018f572
push dword [esp + 0x14]
push esi
call fcn.10124ea0
add esp, 8
test eax, eax
js 0x1018f387
mov esi, dword [esp + 0x1c]
push esi
push 1
push dword [esp + 0x18]
push 0x40
push dword [esp + 0x28]
call fcn.101a7400
add esp, 0x14
test eax, eax
jg 0x1018f3a9
jne 0x1018f572
mov esi, dword [esp + 0x3c]
inc esi
mov dword [esp + 0x3c], esi
cmp esi, 0x1000
jl 0x1018f1e5
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
jmp 0x1018eff0
push 1
push 2
push esi
call fcn.101a7180
add esp, 0xc
test eax, eax
je 0x1018f572
call fcn.101256e0
push eax
push dword [esp + 0x1c]
push dword [esp + 0x1c]
call fcn.10141080
add esp, 0xc
test eax, eax
je 0x1018f572
mov ebp, dword [esp + 0x10]
push ebp
push dword [esp + 0x28]
push dword [esp + 0x1c]
push 0
push ebx
call fcn.10176c30
add esp, 0x14
test eax, eax
je 0x1018f572
push 2
push dword [esp + 0x18]
call fcn.10125630
add esp, 8
test eax, eax
je 0x1018f572
push ebp
push dword [esp + 0x1c]
push dword [esp + 0x34]
call fcn.101763f0
add esp, 0xc
test eax, eax
je 0x1018f572
push dword [esp + 0x2c]
push ebp
push dword [esp + 0x20]
push ebx
push dword [esp + 0x24]
push dword [esp + 0x3c]
call fcn.10174d90
add esp, 0x18
test eax, eax
je 0x1018f572
nop dword [eax]
mov ecx, dword [esp + 0x28]
cmp dword [ecx + 4], 1
jne 0x1018f4aa
mov eax, dword [ecx]
cmp dword [eax], 1
jne 0x1018f4aa
cmp dword [ecx + 0xc], 0
jne 0x1018f4aa
call fcn.101256e0
push eax
mov eax, dword [esp + 0x18]
push eax
push eax
call fcn.10140ff0
add esp, 0xc
test eax, eax
je 0x1018f572
push dword [esp + 0x2c]
inc dword [esp + 0x44]
push ebp
push dword [esp + 0x20]
push ebx
push dword [esp + 0x24]
push dword [esp + 0x3c]
call fcn.10174d90
add esp, 0x18
test eax, eax
jne 0x1018f450
jmp 0x1018f572
push 1
push 3
push esi
call fcn.101a7180
add esp, 0xc
test eax, eax
je 0x1018f572
mov dword [esp + 0x44], 1
mov ebx, dword [esp + 0x54]
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x1018f4db
push eax
call fcn.10125320
add esp, 4
mov eax, dword [ebx + 0x10]
test eax, eax
je 0x1018f4eb
push eax
call fcn.10125320
add esp, 4
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x1018f4fb
push eax
call fcn.10125320
add esp, 4
push dword [esp + 0x18]
call fcn.101252e0
push dword [esp + 0x28]
mov dword [ebx + 0xc], eax
call fcn.101252e0
push dword [esp + 0x30]
mov dword [ebx + 0x10], eax
call fcn.101252e0
add esp, 0xc
mov dword [ebx + 0x14], eax
cmp dword [ebx + 0xc], 0
je 0x1018f56a
cmp dword [ebx + 0x10], 0
je 0x1018f56a
test eax, eax
je 0x1018f56a
mov ecx, dword [esp + 0x58]
test ecx, ecx
je 0x1018f540
mov eax, dword [esp + 0x3c]
mov dword [ecx], eax
mov ecx, dword [esp + 0x5c]
test ecx, ecx
je 0x1018f54e
mov eax, dword [esp + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + 0x60]
test eax, eax
je 0x1018f572
push edi
lea ecx, [esp + 0xa8]
push ecx
push eax
call fcn.100ae520
add esp, 0xc
jmp 0x1018f572
mov dword [esp + 0x44], 0
mov ebx, dword [esp + 0x10]
push ebx
call fcn.10140c70
push ebx
call fcn.10140cb0
add esp, 8
push dword [esp + 0x2c]
call fcn.10176350
add esp, 4
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0xe4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.1004338a
add esp, 0xd8
ret