Function at 0x10163423
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x24
call fcn.101a6170
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x38]
mov cl, 0x38
mov eax, dword [edi]
mov edx, dword [edi + 4]
call fcn.101a6550
mov ebx, dword [edi + 0x24]
mov ebp, dword [edi + 0xc]
mov esi, dword [edi + 0x10]
mov ecx, dword [edi + 0x20]
mov dword [esp + 0x18], eax
mov eax, dword [edi + 8]
mov dword [esp + 0x10], eax
mov eax, dword [edi + 0x18]
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x1c]
mov dword [esp + 0x28], eax
mov eax, dword [edi + 0x30]
mov dword [esp + 0x14], edx
mov edx, dword [edi + 0x14]
mov dword [esp + 0x24], edx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x2c], eax
test eax, eax
je 0x101637b0
mov eax, dword [esp + 0x40]
test eax, eax
je 0x101637b0
cmp eax, dword [edi + 0x2c]
jne 0x101637b0
mov eax, dword [edi + 0x28]
dec eax
cmp eax, 6
ja case.default.0x101633b3
jmp dword [eax*4 + 0x101637bc]
movzx eax, byte [edi + 0x3e]
cdq
shl eax, 0x10
or dword [esp + 0x14], eax
movzx eax, byte [edi + 0x3d]
cdq
shl eax, 8
or dword [esp + 0x14], eax
movzx eax, byte [edi + 0x3c]
cdq
or dword [esp + 0x14], eax
movzx eax, byte [edi + 0x3b]
mov ebx, dword [esp + 0x18]
cdq
shld edx, eax, 0x18
shl eax, 0x18
or ebx, eax
or dword [esp + 0x14], edx
jmp 0x101633f7
mov ebx, dword [esp + 0x18]
movzx eax, byte [edi + 0x3a]
cdq
shld edx, eax, 0x10
shl eax, 0x10
or ebx, eax
or dword [esp + 0x14], edx
jmp 0x1016340f
mov ebx, dword [esp + 0x18]
movzx eax, byte [edi + 0x39]
cdq
shld edx, eax, 8
shl eax, 8
or ebx, eax
or dword [esp + 0x14], edx
jmp 0x10163427
mov ebx, dword [esp + 0x18]
movzx eax, byte [edi + 0x38]
cdq
or ebx, eax
or dword [esp + 0x14], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x18], ebx
jmp 0x10163440
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
xor ecx, ebx
xor eax, dword [esp + 0x14]
cmp dword [edi + 0x30], 0
mov dword [esp + 0x1c], eax
jbe 0x1016350f
add dword [esp + 0x10], esi
mov ebx, edx
adc ebp, edx
shr ebx, 0x13
shld edx, esi, 0xd
xor edi, edi
shl esi, 0xd
or edi, edx
or ebx, esi
xor edi, ebp
xor ebx, dword [esp + 0x10]
mov esi, eax
add dword [esp + 0x20], ecx
adc dword [esp + 0x28], eax
xor edx, edx
shld eax, ecx, 0x10
shr esi, 0x10
or edx, eax
shl ecx, 0x10
xor edx, dword [esp + 0x28]
or esi, ecx
xor esi, dword [esp + 0x20]
mov eax, ebp
xor ebp, ebp
mov ecx, edx
or ebp, dword [esp + 0x10]
add eax, esi
mov dword [esp + 0x10], eax
adc ebp, edx
xor eax, eax
shld edx, esi, 0x15
shr ecx, 0xb
or eax, edx
shl esi, 0x15
or ecx, esi
xor eax, ebp
xor ecx, dword [esp + 0x10]
mov esi, edi
add dword [esp + 0x20], ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x28]
adc eax, edi
shr esi, 0xf
shld edi, ebx, 0x11
xor edx, edx
shl ebx, 0x11
or edx, edi
or esi, ebx
xor edx, eax
xor esi, dword [esp + 0x20]
xor ebx, ebx
or ebx, dword [esp + 0x20]
sub dword [esp + 0x2c], 1
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x28], ebx
jne 0x10163458
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x24], edx
xor ebp, dword [esp + 0x14]
xor dword [esp + 0x10], ebx
mov ebx, 0xee
mov dword [esp + 0x18], ebp
xor ebp, ebp
cmp dword [edi + 0x2c], 0x10
je 0x1016352d
mov ebx, 0xff
mov eax, dword [edi + 0x34]
xor ebx, dword [esp + 0x20]
xor ebp, dword [esp + 0x28]
test eax, eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], ebx
jbe 0x10163605
mov dword [esp + 0x14], ebx
jmp 0x10163556
mov eax, dword [esp + 0x1c]
add dword [esp + 0x10], esi
mov ebx, edx
adc dword [esp + 0x18], edx
xor edi, edi
shld edx, esi, 0xd
shr ebx, 0x13
shl esi, 0xd
or edi, edx
xor edi, dword [esp + 0x18]
or ebx, esi
xor ebx, dword [esp + 0x10]
mov esi, eax
add dword [esp + 0x14], ecx
adc ebp, eax
shr esi, 0x10
shld eax, ecx, 0x10
xor edx, edx
shl ecx, 0x10
or edx, eax
mov eax, dword [esp + 0x18]
or esi, ecx
xor esi, dword [esp + 0x14]
xor edx, ebp
xor ecx, ecx
or ecx, dword [esp + 0x10]
add eax, esi
mov dword [esp + 0x10], eax
adc ecx, edx
xor eax, eax
mov dword [esp + 0x18], ecx
mov ecx, edx
shld edx, esi, 0x15
shr ecx, 0xb
or eax, edx
shl esi, 0x15
xor eax, dword [esp + 0x18]
or ecx, esi
xor ecx, dword [esp + 0x10]
mov esi, edi
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
add eax, ebx
mov dword [esp + 0x14], eax
adc ebp, edi
xor edx, edx
shld edi, ebx, 0x11
shr esi, 0xf
shl ebx, 0x11
or edx, edi
or esi, ebx
xor edx, ebp
mov ebx, ebp
mov dword [esp + 0x24], edx
xor ebp, ebp
mov dword [esp + 0x14], ebx
xor esi, eax
or ebp, eax
sub dword [esp + 0x2c], 1
jne 0x10163552
mov eax, dword [esp + 0x3c]
mov edx, ecx
mov edi, dword [esp + 0x3c]
xor edx, ebx
mov ebx, dword [esp + 0x1c]
xor edx, esi
xor edx, dword [esp + 0x10]
xor ebx, ebp
xor ebx, dword [esp + 0x24]
xor ebx, dword [esp + 0x18]
mov byte [eax], dl
mov eax, edx
shr eax, 8
mov byte [edi + 1], al
mov eax, edx
shr eax, 0x10
mov byte [edi + 2], al
mov eax, edi
mov edi, dword [esp + 0x38]
shr edx, 0x18
mov dword [esp + 0x30], 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 [edi + 0x2c], 8
je 0x101637a3
mov edx, dword [esp + 0x24]
xor esi, 0xdd
mov eax, dword [edi + 0x34]
xor edx, 0
mov dword [esp + 0x24], edx
mov dword [esp + 0x38], eax
test eax, eax
je 0x1016374b
add dword [esp + 0x10], esi
mov ebx, edx
mov eax, dword [esp + 0x18]
adc eax, edx
shr ebx, 0x13
shld edx, esi, 0xd
xor edi, edi
mov dword [esp + 0x18], eax
shl esi, 0xd
or edi, edx
or ebx, esi
xor edi, eax
xor ebx, dword [esp + 0x10]
add dword [esp + 0x14], ecx
mov eax, dword [esp + 0x1c]
mov esi, eax
adc ebp, eax
shr esi, 0x10
shld eax, ecx, 0x10
xor edx, edx
shl ecx, 0x10
or edx, eax
mov eax, dword [esp + 0x18]
or esi, ecx
xor esi, dword [esp + 0x14]
xor edx, ebp
xor ecx, ecx
or ecx, dword [esp + 0x10]
add eax, esi
mov dword [esp + 0x10], eax
adc ecx, edx
xor eax, eax
mov dword [esp + 0x18], ecx
mov ecx, edx
shld edx, esi, 0x15
shr ecx, 0xb
or eax, edx
shl esi, 0x15
xor eax, dword [esp + 0x18]
or ecx, esi
xor ecx, dword [esp + 0x10]
mov esi, edi
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
add eax, ebx
mov dword [esp + 0x14], eax
adc ebp, edi
shr esi, 0xf
shld edi, ebx, 0x11
xor edx, edx
shl ebx, 0x11
or edx, edi
or esi, ebx
xor edx, ebp
xor esi, eax
mov eax, ebp
xor ebp, ebp
or ebp, dword [esp + 0x14]
sub dword [esp + 0x38], 1
mov dword [esp + 0x14], eax
jne 0x10163690
mov dword [esp + 0x24], edx
jmp 0x1016374f
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x3c]
xor ecx, eax
mov edx, dword [esp + 0x1c]
xor ecx, esi
xor ecx, dword [esp + 0x10]
xor edx, ebp
xor edx, dword [esp + 0x24]
mov eax, ecx
xor edx, dword [esp + 0x18]
shr eax, 8
mov byte [ebx + 9], al
mov eax, ecx
shr eax, 0x10
mov byte [ebx + 0xa], al
mov eax, edx
shr eax, 8
mov byte [ebx + 0xd], al
mov eax, edx
mov byte [ebx + 8], cl
shr ecx, 0x18
shr eax, 0x10
mov byte [ebx + 0xc], dl
shr edx, 0x18
mov byte [ebx + 0xb], cl
mov dword [esp + 0x30], 0
mov byte [ebx + 0xe], al
mov byte [ebx + 0xf], dl
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x24
ret
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x24
ret