Function at 0x10011750
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
mov ebx, dword [ebp + 8]
push edi
push 0x38
xor edi, edi
push edi
push esi
call fcn.10007ec0
mov ecx, dword [ebx + 4]
add esp, 0xc
xor eax, eax
test ecx, ecx
jle 0x10011781
mov edx, dword [ebx + 8]
cmp byte [edx + eax], 0
jle 0x1001177c
inc edi
inc eax
cmp eax, ecx
jl 0x10011775
mov dword [esi + 4], ecx
mov dword [esi + 8], edi
mov eax, dword [ebx]
mov dword [esi], eax
test edi, edi
jle 0x10011c9d
mov ecx, dword [ebx + 4]
mov edx, dword [ebx + 8]
push edi
push ecx
push edx
call fcn.10010fb0
mov dword [ebp - 8], eax
lea eax, [edi*4]
add esp, 0xc
mov dword [ebp - 0xc], eax
call fcn.10008a70
mov edx, dword [ebp - 8]
mov eax, esp
mov dword [ebp - 0x10], eax
test edx, edx
jne 0x1001182b
mov eax, dword [esi + 0x10]
test eax, eax
je 0x100117d2
push eax
call fcn.100031c1
add esp, 4
mov eax, dword [esi + 0x14]
test eax, eax
je 0x100117e2
push eax
call fcn.100031c1
add esp, 4
mov eax, dword [esi + 0x18]
test eax, eax
je 0x100117f2
push eax
call fcn.100031c1
add esp, 4
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x10011802
push eax
call fcn.100031c1
add esp, 4
mov eax, dword [esi + 0x20]
test eax, eax
je 0x10011812
push eax
call fcn.100031c1
add esp, 4
push 0x38
push 0
push esi
call fcn.10007ec0
add esp, 0xc
or eax, 0xffffffff
lea esp, [ebp - 0x24]
pop edi
pop ebx
mov esp, ebp
pop ebp
ret
test edi, edi
jle 0x100118ab
sub eax, edx
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], edi
mov ecx, dword [edx]
rol ecx, 0x10
mov eax, ecx
mov ebx, ecx
shr eax, 8
shl ecx, 8
shl ebx, 8
xor eax, ebx
and eax, 0xff00ff
xor eax, ecx
mov ecx, eax
shr ecx, 4
mov ebx, eax
shl ebx, 4
xor ecx, ebx
and ecx, 0xf0f0f0f
shl eax, 4
xor ecx, eax
mov eax, ecx
lea ebx, [ecx*4]
add ecx, ecx
shr eax, 2
add ecx, ecx
xor eax, ebx
and eax, 0x33333333
xor eax, ecx
mov ecx, eax
shr ecx, 1
lea ebx, [eax + eax]
xor ecx, ebx
and ecx, 0x55555555
add eax, eax
xor ecx, eax
mov dword [edx], ecx
mov ecx, dword [ebp - 0x14]
mov dword [ecx + edx], edx
add edx, 4
dec dword [ebp - 4]
jne 0x10011837
mov ebx, dword [ebp + 8]
mov eax, dword [ebp - 0x10]
push 0x10010df0
push 4
push edi
push eax
call fcn.10003410
mov eax, dword [ebp - 0xc]
add esp, 0x10
call fcn.10008a70
mov edx, dword [ebp - 0xc]
mov dword [ebp - 4], esp
push edx
call fcn.1000323b
mov dword [esi + 0x14], eax
add esp, 4
xor eax, eax
test edi, edi
jle 0x10011929
lea esp, [esp]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ecx + eax*4]
sub edx, dword [ebp - 8]
mov ecx, dword [ebp - 4]
sar edx, 2
mov dword [ecx + edx*4], eax
inc eax
cmp eax, edi
jl 0x100118e0
test edi, edi
jle 0x10011929
mov eax, ecx
mov ecx, dword [ebp - 8]
sub ecx, eax
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], edi
jmp 0x10011913
mov ecx, dword [ebp - 0x14]
mov edx, dword [eax]
mov ecx, dword [ecx + eax]
mov ebx, dword [esi + 0x14]
add eax, 4
dec dword [ebp - 0x10]
mov dword [ebx + edx*4], ecx
jne 0x10011910
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 8]
push edx
call fcn.100031c1
mov eax, dword [ebp - 4]
add esp, 4
push eax
push edi
push ebx
call fcn.100112c0
mov ecx, dword [ebp - 0xc]
add esp, 0xc
push ecx
mov dword [esi + 0x10], eax
call fcn.1000323b
mov dword [esi + 0x18], eax
xor eax, eax
add esp, 4
xor ecx, ecx
cmp dword [ebx + 4], eax
jle 0x1001197c
mov edi, edi
mov edx, dword [ebx + 8]
cmp byte [eax + edx], 0
jle 0x10011976
mov edx, dword [ebp - 4]
mov edx, dword [edx + ecx*4]
mov edi, dword [esi + 0x18]
mov dword [edi + edx*4], eax
inc ecx
inc eax
cmp eax, dword [ebx + 4]
jl 0x10011960
push ecx
call fcn.1000323b
mov dword [esi + 0x1c], eax
xor eax, eax
add esp, 4
mov dword [esi + 0x28], eax
mov dword [ebp + 8], eax
cmp dword [ebx + 4], eax
jle 0x10011a00
mov ecx, dword [ebx + 8]
cmp byte [eax + ecx], 0
jle 0x100119c6
mov dl, byte [eax + ecx]
mov edi, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov ecx, dword [ecx + edi*4]
mov edi, dword [esi + 0x1c]
inc dword [ebp + 8]
mov byte [ecx + edi], dl
mov ecx, dword [ebx + 8]
movsx edx, byte [eax + ecx]
cmp edx, dword [esi + 0x28]
jle 0x100119c6
movsx edx, byte [eax + ecx]
mov dword [esi + 0x28], edx
inc eax
cmp eax, dword [ebx + 4]
jl 0x10011995
mov ebx, 1
cmp dword [ebp + 8], ebx
jne 0x10011a05
cmp dword [esi + 0x28], ebx
jne 0x10011a05
push 4
push 2
mov dword [esi + 0x24], ebx
call fcn.100031fb
mov dword [esi + 0x20], eax
mov dword [eax + 4], ebx
mov eax, dword [esi + 0x20]
add esp, 8
mov dword [eax], ebx
xor eax, eax
lea esp, [ebp - 0x24]
pop edi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, 1
mov eax, dword [esi + 8]
xor ecx, ecx
test eax, eax
je 0x10011a16
mov edi, edi
add ecx, ebx
shr eax, 1
jne 0x10011a10
lea eax, [ecx - 4]
mov dword [esi + 0x24], eax
cmp eax, 5
jge 0x10011a28
mov dword [esi + 0x24], 5
mov eax, 8
cmp dword [esi + 0x24], eax
jle 0x10011a35
mov dword [esi + 0x24], eax
mov ecx, dword [esi + 0x24]
shl ebx, cl
push 4
push ebx
mov dword [ebp - 0x14], ebx
call fcn.100031fb
xor edi, edi
add esp, 8
mov dword [esi + 0x20], eax
cmp dword [ebp + 8], edi
jle 0x10011b20
mov ecx, dword [esi + 0x1c]
movsx ebx, byte [ecx + edi]
cmp ebx, dword [esi + 0x24]
jg 0x10011b13
mov edx, dword [esi + 0x14]
mov edx, dword [edx + edi*4]
rol edx, 0x10
mov eax, edx
mov ecx, edx
shr eax, 8
shl edx, 8
shl ecx, 8
xor eax, ecx
and eax, 0xff00ff
xor eax, edx
mov edx, eax
shr edx, 4
mov ecx, eax
shl ecx, 4
xor edx, ecx
and edx, 0xf0f0f0f
shl eax, 4
xor edx, eax
mov eax, edx
lea ecx, [edx*4]
shr eax, 2
xor eax, ecx
add edx, edx
add edx, edx
and eax, 0x33333333
xor eax, edx
mov edx, eax
shr edx, 1
lea ecx, [eax + eax]
xor edx, ecx
mov ecx, dword [esi + 0x24]
sub ecx, ebx
mov ebx, 1
add eax, eax
and edx, 0x55555555
shl ebx, cl
xor edx, eax
xor eax, eax
mov dword [ebp - 0x10], eax
test ebx, ebx
jle 0x10011b13
lea ecx, [ecx]
mov ecx, dword [esi + 0x1c]
mov cl, byte [edi + ecx]
mov ebx, eax
shl ebx, cl
mov ecx, dword [esi + 0x20]
lea eax, [edi + 1]
or ebx, edx
mov dword [ecx + ebx*4], eax
mov ecx, dword [esi + 0x1c]
movsx ebx, byte [ecx + edi]
mov ecx, dword [esi + 0x24]
mov eax, dword [ebp - 0x10]
sub ecx, ebx
mov ebx, 1
shl ebx, cl
inc eax
mov dword [ebp - 0x10], eax
cmp eax, ebx
jl 0x10011ae0
inc edi
cmp edi, dword [ebp + 8]
jl 0x10011a56
mov ebx, dword [ebp - 0x14]
mov ecx, 0x1f
sub ecx, dword [esi + 0x24]
mov eax, 0xfffffffe
shl eax, cl
xor edi, edi
mov dword [ebp - 4], edi
mov dword [ebp - 8], edi
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x10], edi
cmp ebx, edi
jle 0x10011c9d
mov ecx, 0x20
sub ecx, dword [esi + 0x24]
shl edi, cl
mov ecx, edi
rol ecx, 0x10
mov eax, ecx
mov edx, ecx
shl edx, 8
shl ecx, 8
shr eax, 8
xor eax, edx
and eax, 0xff00ff
xor eax, ecx
mov ecx, eax
shr ecx, 4
mov edx, eax
shl edx, 4
xor ecx, edx
and ecx, 0xf0f0f0f
mov edx, eax
shl edx, 4
xor ecx, edx
mov edx, ecx
lea ebx, [ecx*4]
shr edx, 2
xor edx, ebx
add ecx, ecx
add ecx, ecx
and edx, 0x33333333
xor edx, ecx
mov ebx, edx
shr ebx, 1
lea ecx, [edx + edx]
xor ebx, ecx
mov ecx, dword [esi + 0x20]
and ebx, 0x55555555
add edx, edx
xor ebx, edx
cmp dword [ecx + ebx*4], 0
jne 0x10011c8d
mov edx, dword [ebp - 4]
mov ebx, dword [ebp + 8]
lea ecx, [edx + 1]
cmp ecx, ebx
jge 0x10011bed
mov ebx, dword [esi + 0x14]
lea edx, [ebx + edx*4 + 4]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0xc], edx
mov edx, dword [ebp - 0xc]
cmp dword [edx], edi
ja 0x10011bea
inc dword [ebp - 4]
add dword [ebp - 0xc], 4
inc ecx
cmp ecx, ebx
jl 0x10011bd7
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
cmp ecx, ebx
jge 0x10011c1b
mov edx, dword [esi + 0x14]
lea edx, [edx + ecx*4]
mov dword [ebp - 0xc], edx
lea ecx, [ecx]
mov edx, dword [ebp - 0xc]
mov edx, dword [edx]
and edx, dword [ebp - 0x18]
cmp edi, edx
jb 0x10011c15
add dword [ebp - 0xc], 4
inc ecx
cmp ecx, ebx
jl 0x10011c00
mov edx, dword [ebp - 4]
mov dword [ebp - 8], ecx
mov edi, ebx
sub edi, ecx
cmp edx, 0x7fff
jbe 0x10011c2c
mov edx, 0x7fff
cmp edi, 0x7fff
jbe 0x10011c39
mov edi, 0x7fff
mov ecx, eax
mov ebx, eax
shr ecx, 4
shl eax, 4
shl ebx, 4
xor ecx, ebx
and ecx, 0xf0f0f0f
xor ecx, eax
mov eax, ecx
lea ebx, [ecx*4]
shr eax, 2
add ecx, ecx
xor eax, ebx
add ecx, ecx
and eax, 0x33333333
xor eax, ecx
or edx, 0xffff0000
shl edx, 0xf
mov ecx, eax
or edx, edi
shr ecx, 1
lea edi, [eax + eax]
xor ecx, edi
add eax, eax
and ecx, 0x55555555
xor ecx, eax
mov eax, dword [esi + 0x20]
mov dword [eax + ecx*4], edx
mov edi, dword [ebp - 0x10]
inc edi
mov dword [ebp - 0x10], edi
cmp edi, dword [ebp - 0x14]
jl 0x10011b45
xor eax, eax
lea esp, [ebp - 0x24]
pop edi
pop ebx
mov esp, ebp
pop ebp
ret