Function at 0x100ec3da
Capabilities:
Encode data using xor

Disassembly:
push 0x30
mov eax, 0x101cbd48
call fcn.10186cc3
mov ebx, edx
mov dword [ebp - 0x30], ebx
mov edi, ecx
mov dword [ebp - 0x38], edi
mov eax, dword [ebx]
mov esi, dword [eax + 0x44]
mov ecx, esi
call dword [0x101d3368]
mov ecx, ebx
call esi
and dword [ebp - 0x34], 0
mov esi, eax
cmp dword [edi + 0x1c], 3
push edi
mov dword [ebp - 0x2c], esi
mov eax, dword [esi]
mov dword [ebp - 0x3c], eax
push ebx
jne 0x100ec42e
mov ecx, dword [eax + 0x14]
call dword [0x101d3368]
mov eax, dword [ebp - 0x3c]
mov ecx, esi
call dword [eax + 0x14]
mov edi, eax
xor ecx, ecx
jmp 0x100ec44d
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
mov esi, dword [ebp - 0x2c]
xor edx, edx
xor ecx, ecx
inc edx
test al, al
mov edi, ecx
cmovne edi, edx
mov edx, dword [ebp - 0x38]
mov ebx, ecx
mov dword [ebp - 0x3c], edi
mov eax, dword [edx + 0x18]
dec eax
cmp eax, 0x11
ja case.default.0x100ec462
jmp dword [eax*4 + 0x100ec93a]
cmp dword [edx + 0x1c], 3
jne 0x100ec4bc
test edi, edi
jle case.default.0x100ec462
lfence
mov eax, dword [esi]
push ecx
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0x9c]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
test eax, eax
jns 0x100ec49d
push 0xa
pop eax
jmp 0x100ec4a4
mov ecx, eax
call fcn.1003cf2b
mov ecx, dword [ebp - 0x34]
add ebx, eax
mov edx, dword [ebp - 0x38]
inc ecx
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x34], ecx
cmp ecx, edi
jl 0x100ec47a
jmp case.default.0x100ec462
mov eax, dword [esi]
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0x40]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
test eax, eax
jns 0x100ec4de
push 0xa
pop ebx
jmp case.default.0x100ec462
mov ecx, eax
call fcn.1003cf2b
mov ebx, eax
jmp case.default.0x100ec462
cmp dword [edx + 0x1c], 3
jne 0x100ec538
test edi, edi
jle case.default.0x100ec462
lfence
mov eax, dword [esi]
push ecx
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0xa0]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
push edx
push eax
call fcn.100e9f8a
mov edx, dword [ebp - 0x38]
add ebx, eax
mov esi, dword [ebp - 0x2c]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x34]
inc ecx
mov dword [ebp - 0x34], ecx
cmp ecx, edi
jl 0x100ec4fd
jmp case.default.0x100ec462
mov eax, dword [esi]
mov esi, dword [eax + 0x44]
push edx
push dword [ebp - 0x30]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
push edx
push eax
call fcn.100e9f8a
pop ecx
pop ecx
jmp 0x100ec4e5
cmp dword [edx + 0x1c], 3
jne 0x100ec5aa
test edi, edi
jle case.default.0x100ec462
lfence
mov eax, dword [esi]
push ecx
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0x9c]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
mov ecx, eax
add eax, eax
sar ecx, 0x1f
xor ecx, eax
call fcn.1003cf2b
mov ecx, dword [ebp - 0x34]
add ebx, eax
mov edx, dword [ebp - 0x38]
inc ecx
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x34], ecx
cmp ecx, edi
jl 0x100ec56a
jmp case.default.0x100ec462
mov eax, dword [esi]
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0x40]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
mov ecx, eax
add eax, eax
sar ecx, 0x1f
xor ecx, eax
jmp 0x100ec4e0
cmp dword [edx + 0x1c], 3
jne 0x100ec62e
test edi, edi
jle case.default.0x100ec462
lfence
mov eax, dword [esi]
push ecx
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0xa0]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
mov esi, edx
mov ecx, edx
shld edx, eax, 1
sar ecx, 0x1f
add eax, eax
sar esi, 0x1f
xor ecx, edx
xor esi, eax
push ecx
push esi
call fcn.100e9f8a
mov edx, dword [ebp - 0x38]
add ebx, eax
mov esi, dword [ebp - 0x2c]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x34]
inc ecx
mov dword [ebp - 0x34], ecx
cmp ecx, edi
jl 0x100ec5df
jmp case.default.0x100ec462
mov eax, dword [esi]
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0x44]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
mov esi, edx
mov ecx, edx
shld edx, eax, 1
sar esi, 0x1f
add eax, eax
sar ecx, 0x1f
xor esi, eax
xor ecx, edx
push ecx
push esi
jmp 0x100ec550
cmp dword [edx + 0x1c], 3
jne 0x100ec6a9
test edi, edi
jle case.default.0x100ec462
lfence
mov eax, dword [esi]
push ecx
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0xa4]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
mov ecx, eax
call fcn.1003cf2b
mov ecx, dword [ebp - 0x34]
add ebx, eax
mov edx, dword [ebp - 0x38]
inc ecx
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x34], ecx
cmp ecx, edi
jl 0x100ec670
jmp case.default.0x100ec462
mov eax, dword [esi]
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0x48]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
jmp 0x100ec4de
cmp dword [edx + 0x1c], 3
jne 0x100ec710
test edi, edi
jle case.default.0x100ec462
lfence
mov eax, dword [esi]
push ecx
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0xa8]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
push edx
push eax
call fcn.100e9f8a
mov edx, dword [ebp - 0x38]
add ebx, eax
mov esi, dword [ebp - 0x2c]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x34]
inc ecx
mov dword [ebp - 0x34], ecx
cmp ecx, edi
jl 0x100ec6d5
jmp case.default.0x100ec462
mov eax, dword [esi]
mov esi, dword [eax + 0x4c]
jmp 0x100ec53d
mov ebx, edi
shl ebx, 2
jmp case.default.0x100ec462
mov ebx, edi
shl ebx, 3
jmp case.default.0x100ec462
mov ebx, edi
jmp case.default.0x100ec462
cmp dword [edx + 0x1c], 3
jne 0x100ec78c
test edi, edi
jle case.default.0x100ec462
lfence
mov eax, dword [esi]
push ecx
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0xc0]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
mov edi, eax
mov ecx, dword [edi]
mov esi, dword [ecx + 0x20]
mov ecx, esi
call dword [0x101d3368]
mov ecx, edi
call esi
mov ecx, dword [ebp - 0x34]
add ebx, eax
mov edx, dword [ebp - 0x38]
inc ecx
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x34], ecx
cmp ecx, dword [ebp - 0x3c]
jl 0x100ec746
jmp case.default.0x100ec462
mov eax, dword [esi]
push ecx
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0x64]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
mov edi, eax
mov ecx, dword [edi]
mov esi, dword [ecx + 0x20]
mov ecx, esi
call dword [0x101d3368]
mov ecx, edi
call esi
jmp 0x100ec4e5
cmp dword [edx + 0x1c], 3
jne 0x100ec805
test edi, edi
jle case.default.0x100ec462
lfence
mov eax, dword [esi]
push ecx
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0xc0]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
mov ecx, eax
call fcn.100ea3c3
mov ecx, dword [ebp - 0x34]
add ebx, eax
mov edx, dword [ebp - 0x38]
inc ecx
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x34], ecx
cmp ecx, edi
jl 0x100ec7cc
jmp case.default.0x100ec462
mov eax, dword [esi]
push ecx
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0x64]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
mov ecx, eax
call fcn.100ea3c3
jmp 0x100ec4e5
cmp dword [edx + 0x1c], 3
jne 0x100ec87c
test edi, edi
jle case.default.0x100ec462
lfence
mov eax, dword [esi]
push ecx
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0xbc]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
mov ecx, dword [eax + 8]
test ecx, ecx
jns 0x100ec85f
push 0xa
pop eax
jmp 0x100ec864
call fcn.1003cf2b
mov ecx, dword [ebp - 0x34]
add ebx, eax
mov edx, dword [ebp - 0x38]
inc ecx
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x34], ecx
cmp ecx, edi
jl 0x100ec839
jmp case.default.0x100ec462
mov eax, dword [esi]
push edx
push dword [ebp - 0x30]
mov esi, dword [eax + 0x60]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
mov ecx, dword [eax + 8]
test ecx, ecx
jns 0x100ec4e0
jmp 0x100ec4d6
mov eax, ecx
mov dword [ebp - 0x3c], eax
test edi, edi
jle case.default.0x100ec462
lfence
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], cl
mov dword [ebp - 4], ecx
cmp dword [edx + 0x1c], 3
mov ecx, dword [esi]
mov dword [ebp - 0x34], ecx
jne 0x100ec8ee
mov esi, dword [ecx + 0xc4]
lea ecx, [ebp - 0x28]
push ecx
push eax
push edx
push dword [ebp - 0x30]
mov ecx, esi
call dword [0x101d3368]
mov ecx, dword [ebp - 0x2c]
call esi
mov esi, dword [ebp - 0x2c]
jmp 0x100ec907
mov ecx, dword [ecx + 0x68]
lea eax, [ebp - 0x28]
push eax
push edx
push dword [ebp - 0x30]
call dword [0x101d3368]
mov eax, dword [ebp - 0x34]
mov ecx, esi
call dword [eax + 0x68]
mov ecx, dword [eax + 0x10]
call fcn.1003cf2b
or dword [ebp - 4], 0xffffffff
add eax, ecx
lea ecx, [ebp - 0x28]
add ebx, eax
call fcn.10004080
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x38]
inc eax
mov dword [ebp - 0x3c], eax
push 0
pop ecx
cmp eax, edi
jl 0x100ec8b2
mov eax, ebx
call fcn.10186c6d
ret