Function at 0x100aeb00
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x20
push ebx
mov ebx, ecx
mov byte [esp + 5], 0
push ebp
push esi
mov esi, dword [esp + 0x38]
mov eax, dword [ebx + 0x8cd4]
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0x10]
push edi
mov dword [esp + 0x20], ebx
mov byte [esp + 0x12], 0
mov ecx, dword [eax]
mov dword [esp + 0x28], ecx
lea ecx, [ecx*8 + 8]
sub ecx, dword [eax + 4]
mov al, byte [eax + 8]
mov byte [esp + 0x13], al
xor eax, eax
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x14], eax
cmp esi, 1
jbe 0x100aebf8
cmp ecx, 0x400
jb 0x100aebf8
mov edx, dword [esp + 0x34]
mov edi, ecx
shr edi, 1
nop word [eax + eax]
mov al, byte [edx + edi - 1]
lea ebp, [edi + edx]
cmp byte [ebp], al
je 0x100aeb82
cmp al, byte [edx + edi - 2]
jne 0x100aeb89
cmp edi, ecx
jae 0x100aebf8
inc edi
jmp 0x100aeb70
cmp edi, ecx
jae 0x100aebf8
dec esi
mov ecx, ebx
push esi
push edi
push edx
call fcn.100aeb00
mov eax, dword [esp + 0x38]
mov ecx, ebx
push esi
sub eax, edi
push eax
push ebp
call fcn.100aeb00
mov ecx, dword [ebx + 0x10]
mov eax, dword [ecx]
mov dl, byte [ecx + 8]
mov byte [esp + 0x12], dl
lea eax, [eax*8 + 8]
sub eax, dword [ecx + 4]
mov edx, eax
mov dword [esp + 0x14], eax
and edx, 7
jbe 0x100aebd8
mov eax, 8
sub eax, edx
push eax
push 0
call fcn.100b0120
mov edx, dword [ebx + 0x10]
mov eax, 8
mov ecx, dword [esp + 0x18]
and ecx, 7
mov byte [esp + 0x11], 1
sub eax, ecx
mov dword [edx + 4], eax
mov al, byte [esp + 0x13]
mov byte [edx + 8], al
mov ecx, dword [ebx + 0x10]
push 8
push 0x31
mov eax, dword [ecx]
mov dword [esp + 0x44], eax
shl eax, 3
sub eax, dword [ecx + 4]
mov dword [esp + 0x2c], eax
call fcn.100b0120
mov ecx, dword [ebx + 0x10]
push 8
push 0x41
call fcn.100b0120
mov ecx, dword [ebx + 0x10]
push 8
push 0x59
call fcn.100b0120
mov ecx, dword [ebx + 0x10]
push 8
push 0x26
call fcn.100b0120
mov ecx, dword [ebx + 0x10]
push 8
push 0x53
call fcn.100b0120
mov ecx, dword [ebx + 0x10]
push 8
push 0x59
call fcn.100b0120
mov ebx, dword [esp + 0x34]
or esi, 0xffffffff
xor edi, edi
xor ebp, ebp
mov dh, byte [ebx]
nop dword [eax]
mov dl, byte [ebx + ebp]
cmp edi, 4
jne 0x100aec8a
test dl, dl
je 0x100aec86
movzx ecx, dh
nop
mov eax, esi
shl esi, 8
shr eax, 0x18
xor eax, ecx
xor esi, dword [eax*4 + 0x1013edc0]
add dl, 0xff
jne 0x100aec70
xor edi, edi
jmp 0x100aecb4
mov ecx, esi
movzx eax, dl
shr ecx, 0x18
inc edi
xor ecx, eax
shl esi, 8
mov eax, 1
xor esi, dword [ecx*4 + 0x1013edc0]
cmp dh, dl
movzx ecx, dh
cmovne edi, eax
movzx eax, dl
cmovne ecx, eax
mov dh, cl
inc ebp
cmp ebp, dword [esp + 0x38]
jb 0x100aec60
mov ebx, dword [esp + 0x20]
not esi
mov dword [esp + 0x2c], esi
xor edi, edi
mov ecx, 3
mov eax, esi
sub ecx, edi
shl ecx, 3
shr eax, cl
mov ecx, dword [ebx + 0x10]
push 8
movzx eax, al
push eax
call fcn.100b0120
inc edi
cmp edi, 4
jb 0x100aecc7
push dword [esp + 0x38]
mov ecx, ebx
push dword [esp + 0x38]
call fcn.100af030
mov edi, dword [ebx + 0x10]
mov edx, dword [edi]
lea ebp, [edx*8]
sub ebp, dword [edi + 4]
cmp byte [esp + 0x11], 0
je 0x100aed65
mov ecx, dword [esp + 0x14]
mov eax, ecx
sub ebp, dword [esp + 0x24]
sub eax, dword [esp + 0x18]
cmp ebp, eax
jae 0x100aed86
mov eax, dword [edi + 0xc]
sub edx, dword [esp + 0x3c]
je 0x100aed48
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x3c]
sub esi, edi
lea ecx, [eax + edi]
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
mov byte [ecx - 1], al
sub edx, 1
jne 0x100aed36
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x18]
mov ecx, dword [ebx + 0x10]
add edx, ebp
mov eax, edx
and edx, 7
shr eax, 3
mov dword [ecx], eax
mov eax, 8
sub eax, edx
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x1c]
mov dword [ebx + 0x8cd4], eax
pop edi
mov dword [ebx + eax*4 + 0x7cd4], esi
inc dword [ebx + 0x8cd4]
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
mov eax, ecx
and ecx, 7
mov dword [esp + 0x14], ecx
mov ecx, 8
shr eax, 3
sub ecx, dword [esp + 0x14]
mov dword [edi + 4], ecx
mov dword [edi], eax
mov eax, dword [ebx + 0x10]
pop edi
pop esi
pop ebp
mov dword [eax + 4], ecx
mov cl, byte [esp + 6]
mov byte [eax + 8], cl
pop ebx
add esp, 0x20
ret 0xc