Function at 0x100ad690
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xf0
mov eax, dword [0x101c3584]
xor eax, esp
mov dword [esp + 0xec], eax
push ebx
mov ebx, dword [esp + 0x100]
push ebp
push esi
mov esi, dword [esp + 0x100]
lea eax, [esp + 0x18]
push edi
push eax
mov dword [esp + 0x1c], ebx
call fcn.10143bb5
call fcn.10145422
mov dword [esp + 0x24], eax
call fcn.10142907
mov dword [esp + 0x28], eax
call fcn.10142907
push 0x80
lea ecx, [esp + 0x34]
push 0x101bc4d4
push ecx
mov dword [esp + 0x38], eax
call fcn.100b5180
mov eax, dword [esp + 0x118]
mov edi, eax
shr edi, 3
lea edx, [edi*8]
add esp, 0x10
sub eax, edx
je 0x100ad70e
inc edi
push edi
push 0
push ebx
call fcn.1013f910
mov eax, edi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov ecx, eax
shl ecx, 4
sub edi, ecx
mov dword [esp + 0x1c], edi
add esp, 0xc
xor edi, edi
test eax, eax
jle 0x100ad858
mov edi, esi
lea edx, [esp + 0xdc]
mov ebp, ebx
sub edi, edx
mov ebx, eax
mov dword [esp + 0x14], ecx
lea ecx, [ecx]
lea eax, [esp + 0xdc]
push eax
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x34]
push 0xa
push edx
call fcn.100b64b0
add esp, 0x10
xor ecx, ecx
mov edi, edi
lea eax, [esp + ecx + 0xdc]
movzx edx, byte [eax + edi]
xor byte [eax], dl
movzx edx, byte [esi + ecx + 1]
xor byte [eax + 1], dl
movzx edx, byte [esi + ecx + 2]
xor byte [eax + 2], dl
movzx edx, byte [esi + ecx + 3]
xor byte [eax + 3], dl
add ecx, 4
cmp ecx, 0x10
jl 0x100ad770
lea eax, [esp + 0xec]
push eax
lea ecx, [esp + 0xe0]
push ecx
lea edx, [esp + 0x34]
push 0xa
push edx
call fcn.100b64b0
add esp, 0x10
xor eax, eax
mov edi, edi
movzx ecx, byte [esp + eax + 0xec]
movzx edx, byte [esp + eax + 0xed]
xor byte [esp + eax + 0xdc], cl
xor byte [esp + eax + 0xdd], dl
movzx ecx, byte [esp + eax + 0xee]
movzx edx, byte [esp + eax + 0xef]
xor byte [esp + eax + 0xde], cl
xor byte [esp + eax + 0xdf], dl
add eax, 4
cmp eax, 0x10
jl 0x100ad7c0
push esi
lea eax, [esp + 0xe0]
push eax
lea ecx, [esp + 0x34]
push 0xa
push ecx
call fcn.100b64b0
mov edx, dword [esp + 0xfc]
mov eax, dword [esp + 0x100]
mov ecx, dword [esp + 0x104]
mov dword [ebp], edx
mov edx, dword [esp + 0x108]
mov dword [ebp + 4], eax
mov dword [ebp + 8], ecx
mov dword [ebp + 0xc], edx
add esp, 0x10
add ebp, 0x10
sub ebx, 1
jne 0x100ad750
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
cmp dword [esp + 0x10], 0
je 0x100ad951
lea eax, [esp + 0xdc]
push eax
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x34]
push 0xa
push edx
call fcn.100b64b0
mov ebp, esi
lea eax, [esp + 0xec]
add esp, 0x10
xor ecx, ecx
sub ebp, eax
lea esp, [esp]
lea eax, [esp + ecx + 0xdc]
movzx edx, byte [eax + ebp]
xor byte [eax], dl
movzx edx, byte [esi + ecx + 1]
xor byte [eax + 1], dl
movzx edx, byte [esi + ecx + 2]
xor byte [eax + 2], dl
movzx edx, byte [esi + ecx + 3]
xor byte [eax + 3], dl
add ecx, 4
cmp ecx, 0x10
jl 0x100ad890
lea eax, [esp + 0xec]
push eax
lea ecx, [esp + 0xe0]
push ecx
lea edx, [esp + 0x34]
push 0xa
push edx
call fcn.100b64b0
add esp, 0x10
xor eax, eax
mov edi, edi
movzx ecx, byte [esp + eax + 0xec]
movzx edx, byte [esp + eax + 0xed]
xor byte [esp + eax + 0xdc], cl
xor byte [esp + eax + 0xdd], dl
movzx ecx, byte [esp + eax + 0xee]
movzx edx, byte [esp + eax + 0xef]
xor byte [esp + eax + 0xde], cl
xor byte [esp + eax + 0xdf], dl
add eax, 4
cmp eax, 0x10
jl 0x100ad8e0
push esi
lea eax, [esp + 0xe0]
push eax
lea ecx, [esp + 0x34]
push 0xa
push ecx
call fcn.100b64b0
mov edx, dword [esp + 0x20]
push edx
lea eax, [esp + 0x100]
push eax
add ebx, edi
push ebx
call fcn.1013fc90
add esp, 0x1c
lea ecx, [esp + 0xdc]
lea edi, [esp + 0xdd]
lea ebp, [esp + 0xde]
sub ecx, esi
sub edi, esi
sub ebp, esi
lea edx, [esp + 0xdf]
mov eax, esi
sub edx, esi
mov esi, 4
lea esp, [esp]
movzx ebx, byte [ecx + eax]
xor byte [eax], bl
movzx ebx, byte [edi + eax]
xor byte [eax + 1], bl
movzx ebx, byte [eax + ebp]
xor byte [eax + 2], bl
movzx ebx, byte [edx + eax]
xor byte [eax + 3], bl
add eax, 4
sub esi, 1
jne 0x100ad980
mov ecx, dword [esp + 0xfc]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
xor eax, eax
call fcn.1013d581
add esp, 0xf0
ret