Function at 0x1000ae40
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov eax, dword [0x10027004]
xor eax, ebp
mov dword [ebp - 4], eax
cmp dword [0x100286a4], 0
push ebx
push esi
mov byte [ebp - 0x21], dl
mov ebx, ecx
je 0x1000ae7d
mov eax, dword [0x100283dc]
add eax, 0x100
call eax
sub eax, dword [0x100286a4]
cmp eax, 0x3e8
jbe 0x1000af2d
mov eax, dword [0x100283dc]
add eax, 0x100
call eax
mov dword [0x100286a4], eax
mov eax, dword [0x100283d8]
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
add ecx, dword [0x10028544]
mov esi, dword [eax + ecx*4]
mov eax, dword [0x100283dc]
add eax, 0x100
call eax
mov ecx, dword [esi + 0xc]
inc dword [esi + 4]
add ecx, 0xfffff988
mov dword [esi], eax
mov eax, dword [esi + 8]
add eax, ecx
call eax
mov dword [ebp - 0x10], eax
mov eax, dword [0x100283d8]
mov dword [ebp - 0xc], 0
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
add ecx, dword [0x10028548]
mov esi, dword [eax + ecx*4]
mov eax, dword [0x100283dc]
add eax, 0x100
call eax
mov ecx, dword [esi + 0xc]
inc dword [esi + 4]
add ecx, 0xfffff988
mov dword [esi], eax
mov eax, dword [esi + 8]
add eax, ecx
lea ecx, [ebp - 0x10]
push ecx
push 0x10004240
call eax
mov ecx, dword [ebp - 0xc]
test ecx, ecx
jne 0x1000af16
xor eax, eax
jmp 0x1000af28
lea edx, [ebp - 8]
mov dword [ebp - 8], 0
call fcn.10004390
mov eax, dword [ebp - 8]
mov dword [0x1002869c], eax
mov eax, dword [ebp + 0xc]
add eax, 0x18
mov dword [ebx + 0x130], 0
push edi
push eax
mov dword [ebx + 0x12c], eax
call fcn.10011cab
mov ecx, dword [ebx + 0x12c]
mov edi, eax
mov al, byte [ebp - 0x21]
add esp, 4
mov dword [ebx + 0x128], edi
mov dword [ebp - 8], edi
mov dword [edi], ecx
mov ecx, dword [0x100283dc]
add ecx, 0x100
mov byte [edi + 4], al
call ecx
mov dword [edi + 8], eax
xorps xmm0, xmm0
mov eax, dword [0x100283d8]
movq qword [ebp - 0x10], xmm0
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
add ecx, dword [0x10028558]
mov esi, dword [eax + ecx*4]
mov eax, dword [0x100283dc]
add eax, 0x100
call eax
mov ecx, dword [esi + 0xc]
inc dword [esi + 4]
add ecx, 0xfffff988
mov dword [esi], eax
mov eax, dword [esi + 8]
add eax, ecx
lea ecx, [ebp - 0x18]
push ecx
call eax
test eax, eax
je 0x1000b018
mov eax, dword [0x100283d8]
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
add ecx, dword [0x1002855c]
mov esi, dword [eax + ecx*4]
mov eax, dword [0x100283dc]
add eax, 0x100
call eax
mov ecx, dword [esi + 0xc]
inc dword [esi + 4]
add ecx, 0xfffff988
mov dword [esi], eax
mov eax, dword [esi + 8]
add eax, ecx
lea ecx, [ebp - 0x10]
push ecx
call eax
test eax, eax
je 0x1000b018
push 0
push 0xf4240
push dword [ebp - 0x14]
push dword [ebp - 0x18]
call fcn.1001d5c0
push edx
push eax
push dword [ebp - 0xc]
push dword [ebp - 0x10]
call fcn.1001d5c0
mov dword [edi + 0xc], eax
mov eax, dword [0x100283d8]
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
add ecx, dword [0x100284f0]
mov esi, dword [eax + ecx*4]
mov eax, dword [0x100283dc]
add eax, 0x100
call eax
mov ecx, dword [esi + 0xc]
inc dword [esi + 4]
add ecx, 0xfffff988
mov dword [esi], eax
lea eax, [ebp - 0x20]
push eax
mov eax, dword [esi + 8]
add eax, ecx
call eax
movzx eax, byte [ebp - 0x16]
mov byte [edi + 0x10], al
movzx eax, byte [ebp - 0x14]
mov byte [edi + 0x11], al
mov ax, word [ebp - 0x12]
mov word [edi + 0x12], ax
movzx eax, byte [0x1002869c]
mov byte [edi + 0x14], al
mov eax, dword [0x100283d8]
mov edi, dword [0x10028668]
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
add ecx, dword [0x1002864c]
mov esi, dword [eax + ecx*4]
mov eax, dword [0x100283dc]
add eax, 0x100
call eax
mov ecx, dword [esi + 0xc]
inc dword [esi + 4]
mov dword [esi], eax
mov eax, dword [esi + 8]
mov esi, dword [ebp - 8]
push 0x1388
inc dword [ecx + eax - 0x678]
movzx eax, byte [edi + 4]
mov byte [esi + 0x15], al
call fcn.10009040
mov ecx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov byte [esi + 0x16], al
movzx eax, byte [0x10027888]
mov byte [esi + 0x17], al
mov esi, dword [ebx + 0x128]
lea edx, [esi + 0x18]
test ecx, ecx
je 0x1000b0f6
mov al, byte [edi]
lea edx, [edx + 1]
mov byte [edx - 1], al
lea edi, [edi + 1]
sub ecx, 1
jne 0x1000b0e0
mov esi, dword [ebx + 0x128]
mov edx, dword [ebx + 0x12c]
xor ecx, ecx
mov dword [ebp - 0xc], edx
mov eax, edx
mov dword [ebp - 8], eax
pop edi
test edx, edx
jle 0x1000b146
nop dword [eax + eax]
movzx eax, byte [ebx + 0x137]
lea esi, [esi + 1]
add al, cl
xor edx, edx
movzx eax, al
inc ecx
div dword [ebx + 0x104]
movzx eax, byte [edx + ebx + 4]
xor byte [esi - 1], al
mov edx, dword [ebp - 0xc]
cmp ecx, edx
jl 0x1000b110
mov eax, dword [ebx + 0x12c]
mov esi, dword [ebx + 0x128]
mov dword [ebp - 8], eax
add byte [ebx + 0x137], dl
xor edx, edx
test eax, eax
jle 0x1000b178
mov al, byte [esi]
mov cl, al
shr al, 1
and cl, 1
je 0x1000b15f
or al, 0x80
add al, 0x68
mov byte [esi], al
mov cl, byte [ebx + 0x135]
add cl, dl
inc edx
xor cl, al
mov eax, dword [ebp - 8]
mov byte [esi], cl
inc esi
cmp edx, eax
jl 0x1000b152
mov ecx, dword [ebp - 4]
add byte [ebx + 0x135], al
xor ecx, ebp
pop esi
pop ebx
call fcn.10011c5f
mov esp, ebp
pop ebp
ret