Function at 0x101c290e
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
push ebx
push esi
mov esi, dword [ebp + 8]
mov cl, 0x38
push edi
mov eax, dword [esi]
mov edx, dword [esi + 4]
call fcn.101c6b50
mov edi, dword [esi + 0x14]
mov ecx, dword [esi + 0x10]
mov ebx, dword [esi + 0x20]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 8]
mov dword [ebp - 8], eax
mov eax, dword [esi + 0xc]
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 0x18]
mov dword [ebp - 4], eax
mov eax, dword [esi + 0x24]
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 0x30]
mov dword [ebp - 0x1c], edx
mov edx, dword [esi + 0x1c]
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x28], eax
test eax, eax
je 0x101c2c99
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x101c2c99
cmp eax, dword [esi + 0x2c]
jne 0x101c2c99
mov eax, dword [esi + 0x28]
dec eax
cmp eax, 6
ja case.default.0x101c28b3
jmp dword [eax*4 + 0x101c2ca4]
movzx eax, byte [esi + 0x3e]
cdq
shl eax, 0x10
or dword [ebp - 0x1c], eax
movzx eax, byte [esi + 0x3d]
cdq
shl eax, 8
or dword [ebp - 0x1c], eax
movzx eax, byte [esi + 0x3c]
cdq
or dword [ebp - 0x1c], eax
movzx eax, byte [esi + 0x3b]
cdq
shld edx, eax, 0x18
shl eax, 0x18
or dword [ebp - 0x18], eax
or dword [ebp - 0x1c], edx
movzx eax, byte [esi + 0x3a]
cdq
shld edx, eax, 0x10
shl eax, 0x10
or dword [ebp - 0x18], eax
or dword [ebp - 0x1c], edx
movzx eax, byte [esi + 0x39]
cdq
shld edx, eax, 8
shl eax, 8
or dword [ebp - 0x18], eax
or dword [ebp - 0x1c], edx
movzx eax, byte [esi + 0x38]
cdq
or dword [ebp - 0x18], eax
or dword [ebp - 0x1c], edx
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
xor ebx, eax
xor dword [ebp - 0x10], edx
cmp dword [esi + 0x30], 0
mov edx, dword [ebp - 0x14]
mov dword [ebp - 0x24], ebx
jbe 0x101c29e3
add dword [ebp - 8], ecx
mov eax, dword [ebp - 0x20]
adc dword [ebp - 0xc], edi
xor esi, esi
shld eax, ecx, 0xd
shr edi, 0x13
shl ecx, 0xd
or esi, eax
mov eax, dword [ebp - 0xc]
or edi, ecx
xor edi, dword [ebp - 8]
xor esi, eax
add dword [ebp - 4], ebx
adc edx, dword [ebp - 0x10]
xor ecx, ecx
mov dword [ebp - 0x14], edx
mov edx, dword [ebp - 0x10]
shld dword [ebp - 0x10], ebx, 0x10
or ecx, dword [ebp - 0x10]
xor ecx, dword [ebp - 0x14]
shl ebx, 0x10
shr edx, 0x10
or edx, ebx
xor ebx, ebx
xor edx, dword [ebp - 4]
or ebx, dword [ebp - 8]
add eax, edx
mov dword [ebp - 8], eax
adc ebx, ecx
xor eax, eax
mov dword [ebp - 0xc], ebx
mov ebx, ecx
shld ecx, edx, 0x15
shr ebx, 0xb
or eax, ecx
shl edx, 0x15
xor eax, dword [ebp - 0xc]
or ebx, edx
mov edx, dword [ebp - 4]
mov ecx, esi
xor ebx, dword [ebp - 8]
add edx, edi
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x14]
adc eax, esi
mov dword [ebp - 4], edx
shld esi, edi, 0x11
shr ecx, 0xf
shl edi, 0x11
or ecx, edi
xor edi, edi
xor ecx, edx
or edi, esi
xor edx, edx
xor edi, eax
or edx, dword [ebp - 4]
dec dword [ebp - 0x28]
mov dword [ebp - 0x20], edi
mov dword [ebp - 4], eax
jne 0x101c2934
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x24], ebx
xor dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
xor eax, dword [ebp - 0x1c]
cmp dword [esi + 0x2c], 0x10
mov dword [ebp - 0xc], eax
jne 0x101c29fe
xor dword [ebp - 4], 0xee
jmp 0x101c2a05
xor dword [ebp - 4], 0xff
mov eax, dword [esi + 0x34]
xor edx, 0
mov dword [ebp - 0x28], eax
test eax, eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x14], edx
ja 0x101c2be6
mov eax, dword [ebp - 4]
mov esi, dword [ebp + 0xc]
mov edx, ebx
mov ebx, dword [ebp - 0x10]
xor edx, eax
mov eax, dword [ebp + 0xc]
xor edx, ecx
xor edx, dword [ebp - 8]
mov edi, dword [ebp - 0x14]
xor ebx, edi
xor ebx, dword [ebp - 0x20]
xor ebx, dword [ebp - 0xc]
mov byte [eax], dl
mov eax, edx
shr eax, 8
mov byte [esi + 1], al
mov eax, edx
shr eax, 0x10
mov byte [esi + 2], al
mov eax, esi
mov esi, dword [ebp + 8]
shr edx, 0x18
mov dword [ebp - 0x28], 0
mov byte [eax + 3], dl
mov edx, eax
mov eax, ebx
shr eax, 8
mov byte [edx + 5], al
mov eax, ebx
mov byte [edx + 4], bl
shr eax, 0x10
shr ebx, 0x18
mov byte [edx + 6], al
mov byte [edx + 7], bl
cmp dword [esi + 0x2c], 8
je 0x101c2bd7
mov eax, dword [ebp - 0x20]
xor ecx, 0xdd
mov edx, dword [esi + 0x34]
xor eax, 0
mov ebx, dword [ebp - 0x24]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x28], edx
test edx, edx
je 0x101c2b53
mov edx, edi
add dword [ebp - 8], ecx
mov edi, eax
adc dword [ebp - 0xc], eax
xor esi, esi
shld eax, ecx, 0xd
shr edi, 0x13
shl ecx, 0xd
or esi, eax
mov eax, dword [ebp - 0xc]
or edi, ecx
xor edi, dword [ebp - 8]
xor esi, eax
add dword [ebp - 4], ebx
adc edx, dword [ebp - 0x10]
xor ecx, ecx
mov dword [ebp - 0x14], edx
mov edx, dword [ebp - 0x10]
shld dword [ebp - 0x10], ebx, 0x10
or ecx, dword [ebp - 0x10]
xor ecx, dword [ebp - 0x14]
shr edx, 0x10
shl ebx, 0x10
or edx, ebx
xor ebx, ebx
xor edx, dword [ebp - 4]
or ebx, dword [ebp - 8]
add eax, edx
mov dword [ebp - 8], eax
adc ebx, ecx
xor eax, eax
mov dword [ebp - 0xc], ebx
mov ebx, ecx
shld ecx, edx, 0x15
shr ebx, 0xb
or eax, ecx
shl edx, 0x15
xor eax, dword [ebp - 0xc]
or ebx, edx
xor ebx, dword [ebp - 8]
mov ecx, esi
add dword [ebp - 4], edi
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x14]
adc eax, esi
xor edx, edx
shld esi, edi, 0x11
shr ecx, 0xf
or edx, esi
shl edi, 0x11
xor edx, eax
or ecx, edi
xor ecx, dword [ebp - 4]
mov dword [ebp - 0x20], edx
xor edx, edx
or edx, dword [ebp - 4]
dec dword [ebp - 0x28]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x14], edx
jne 0x101c2aa7
mov dword [ebp - 0x24], ebx
mov edi, edx
mov esi, dword [ebp + 0xc]
mov edx, ebx
xor edx, dword [ebp - 4]
mov ebx, dword [ebp - 0x10]
xor edx, ecx
xor edx, dword [ebp - 8]
xor ebx, edi
xor ebx, eax
mov dword [ebp - 0x28], 0
mov eax, dword [ebp + 0xc]
xor ebx, dword [ebp - 0xc]
mov byte [eax + 8], dl
mov eax, edx
shr eax, 8
mov byte [esi + 9], al
mov eax, edx
shr eax, 0x10
mov byte [esi + 0xa], al
mov eax, esi
mov esi, dword [ebp + 8]
shr edx, 0x18
mov byte [eax + 0xb], dl
mov edx, eax
mov eax, ebx
shr eax, 8
mov byte [edx + 0xd], al
mov eax, ebx
mov byte [edx + 0xc], bl
shr eax, 0x10
mov byte [edx + 0xe], al
mov eax, dword [ebp - 8]
shr ebx, 0x18
mov byte [edx + 0xf], bl
mov dword [esi + 8], eax
mov eax, dword [ebp - 0xc]
mov dword [esi + 0xc], eax
mov eax, dword [ebp - 0x20]
mov dword [esi + 0x14], eax
mov eax, dword [ebp - 4]
mov dword [esi + 0x18], eax
mov eax, dword [ebp - 0x24]
mov dword [esi + 0x20], eax
mov eax, dword [ebp - 0x10]
mov dword [esi + 0x10], ecx
mov dword [esi + 0x1c], edi
mov dword [esi + 0x24], eax
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0xc]
add dword [ebp - 8], ecx
adc eax, edi
shr edi, 0x13
mov dword [ebp - 0xc], eax
xor esi, esi
mov eax, dword [ebp - 0x20]
shld eax, ecx, 0xd
shl ecx, 0xd
or esi, eax
mov eax, dword [ebp - 0xc]
or edi, ecx
xor edi, dword [ebp - 8]
xor esi, eax
add dword [ebp - 4], ebx
adc edx, dword [ebp - 0x10]
xor ecx, ecx
mov dword [ebp - 0x14], edx
mov edx, dword [ebp - 0x10]
shld dword [ebp - 0x10], ebx, 0x10
or ecx, dword [ebp - 0x10]
xor ecx, dword [ebp - 0x14]
shl ebx, 0x10
shr edx, 0x10
or edx, ebx
xor ebx, ebx
xor edx, dword [ebp - 4]
or ebx, dword [ebp - 8]
add eax, edx
mov dword [ebp - 8], eax
adc ebx, ecx
xor eax, eax
mov dword [ebp - 0xc], ebx
mov ebx, ecx
shld ecx, edx, 0x15
shr ebx, 0xb
or eax, ecx
shl edx, 0x15
xor eax, dword [ebp - 0xc]
or ebx, edx
mov edx, dword [ebp - 4]
mov ecx, esi
xor ebx, dword [ebp - 8]
add edx, edi
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x14]
adc eax, esi
mov dword [ebp - 4], edx
shld esi, edi, 0x11
shr ecx, 0xf
shl edi, 0x11
or ecx, edi
xor edi, edi
xor ecx, edx
or edi, esi
xor edx, edx
xor edi, eax
or edx, dword [ebp - 4]
dec dword [ebp - 0x28]
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x14], edx
mov dword [ebp - 4], eax
jne 0x101c2be3
mov dword [ebp - 0x24], ebx
jmp 0x101c2a1f
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret