Function at 0x10001aa0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
mov esi, ecx
mov dword [ebp - 4], edx
push edi
mov dword [ebp - 0x10], esi
mov eax, dword [esi]
dec eax
cmp eax, 3
ja case.default.0x10001abd
jmp dword [eax*4 + 0x10001d2c]
mov ecx, dword [esi + 0x38]
lea eax, [esi + 0x3c]
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0xc], eax
lea eax, [ecx + ebx]
mov dword [ebp - 8], eax
mov dword [edi], eax
cmp eax, 0x10
ja 0x10001b02
push ebx
lea eax, [esi + 0x28]
push edx
add eax, ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add dword [esi + 0x38], ebx
add esp, 0xc
mov dword [edi], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp edx, dword [ebp + 0xc]
je case.default.0x10001abd
mov edi, 0x10
lea eax, [esi + 0x28]
sub edi, ecx
add eax, ecx
push edi
push edx
push eax
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebp + 0xc]
add esp, 0xc
mov eax, dword [esi + 0x28]
mov edx, ecx
mov ebx, dword [ebp - 8]
add edi, dword [ebp - 4]
add ebx, 0xfffffff0
mov dword [ecx], eax
mov eax, dword [esi + 0x2c]
mov dword [ecx + 4], eax
mov eax, dword [esi + 0x30]
mov dword [ecx + 8], eax
mov eax, dword [esi + 0x34]
mov dword [ecx + 0xc], eax
lea ecx, [esi + 0x3c]
mov dword [ebp - 4], ebx
call fcn.100034f0
cmp ebx, 0x10
jbe 0x10001ba8
mov esi, dword [ebp - 4]
mov ebx, dword [ebp + 0xc]
add ebx, 0x18
lea eax, [esi - 0x11]
shr eax, 4
inc eax
mov dword [ebp - 4], eax
nop word [eax + eax]
mov eax, dword [edi]
lea edx, [ebx - 8]
mov ecx, dword [ebp - 0xc]
mov dword [edx], eax
mov eax, dword [edi + 4]
mov dword [ebx - 4], eax
mov eax, dword [edi + 8]
mov dword [ebx], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 4], eax
call fcn.100034f0
add edi, 0x10
lea ebx, [ebx + 0x10]
sub esi, 0x10
sub dword [ebp - 4], 1
jne 0x10001b70
mov dword [ebp - 4], esi
mov esi, dword [ebp - 0x10]
mov ebx, dword [ebp - 4]
push ebx
lea eax, [esi + 0x28]
push edi
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esi + 0x38]
add esp, 0xc
and eax, 0xf0000000
add eax, ebx
mov dword [esi + 0x38], eax
mov eax, dword [ebp + 0x10]
pop edi
pop esi
sub dword [eax], ebx
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
push dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
push eax
push dword [ebp + 8]
call fcn.10001760
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x38]
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
lea ecx, [eax + ebx]
mov dword [ebp - 0x10], ecx
mov dword [edi], ecx
cmp ecx, 0x10
ja 0x10001c22
push ebx
add eax, 0x28
push edx
add eax, esi
push eax
call sub.VCRUNTIME140.dll_memcpy
add dword [esi + 0x38], ebx
add esp, 0xc
mov dword [edi], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp + 0xc]
cmp ebx, edx
je case.default.0x10001abd
mov edi, 0x10
sub edi, eax
add eax, 0x28
push edi
push edx
add eax, esi
push eax
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebp - 0x10]
lea edx, [esi + 0x18]
add edi, dword [ebp - 4]
add ecx, 0xfffffff0
add esp, 0xc
mov dword [ebp - 4], ecx
lea ecx, [esi + 0x3c]
call fcn.100026c0
mov eax, dword [esi + 0x28]
lea ecx, [esi + 0x18]
xor eax, dword [ecx]
mov dword [ebx], eax
mov eax, dword [esi + 0x2c]
xor eax, dword [esi + 0x1c]
mov dword [ebx + 4], eax
mov eax, dword [esi + 0x30]
xor eax, dword [esi + 0x20]
mov dword [ebx + 8], eax
mov eax, dword [esi + 0x34]
xor eax, dword [esi + 0x24]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp - 4]
cmp eax, 0x10
jbe 0x10001cda
add eax, 0xffffffef
add ebx, 0x18
shr eax, 4
inc eax
mov dword [ebp - 8], eax
mov edx, ecx
lea ecx, [esi + 0x3c]
call fcn.100026c0
mov eax, dword [esi + 0x18]
lea ecx, [esi + 0x18]
xor eax, dword [edi]
lea ebx, [ebx + 0x10]
mov dword [ebx - 0x18], eax
mov eax, dword [edi + 4]
xor eax, dword [esi + 0x1c]
mov dword [ebx - 0x14], eax
mov eax, dword [edi + 8]
xor eax, dword [esi + 0x20]
mov dword [ebx - 0x10], eax
mov eax, dword [edi + 0xc]
add edi, 0x10
xor eax, dword [esi + 0x24]
mov dword [ebx - 0xc], eax
mov eax, dword [ebp - 4]
sub eax, 0x10
sub dword [ebp - 8], 1
mov dword [ebp - 4], eax
jne 0x10001c95
push eax
lea eax, [esi + 0x28]
push edi
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esi + 0x38]
add esp, 0xc
mov ecx, dword [ebp - 4]
and eax, 0xf0000000
add eax, ecx
mov dword [esi + 0x38], eax
mov eax, dword [ebp + 0x10]
pop edi
pop esi
pop ebx
sub dword [eax], ecx
xor eax, eax
mov esp, ebp
pop ebp
ret
push dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
push eax
push dword [ebp + 8]
call fcn.10001930
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, 0x1001
pop ebx
mov esp, ebp
pop ebp
ret