Function at 0x10179170
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x38
call fcn.101b79b0
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
mov ecx, dword [eax + 8]
mov dword [esp + 0x20], edx
mov edx, dword [eax + 0x24]
push ebx
mov ebx, dword [eax + 0xc]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x48]
add dword [eax], edx
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 0x20]
adc dword [eax + 4], 0
push ebp
mov ebp, dword [eax + 0x14]
push esi
mov esi, dword [eax + 0x18]
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 0x28]
test ecx, ecx
push edi
mov edi, dword [eax + 0x1c]
mov dword [esp + 0x34], ebp
je 0x101793b3
mov ebp, 8
sub ebp, ecx
cmp edx, ebp
lea eax, [ecx + eax + 0x38]
jae 0x101791f4
push edx
mov edx, dword [esp + 0x54]
push edx
push eax
call fcn.101b4f90
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x58]
add esp, 0xc
add dword [eax + 0x28], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov edx, dword [esp + 0x50]
push ebp
push edx
push eax
call fcn.101b4f90
sub dword [esp + 0x60], ebp
add dword [esp + 0x5c], ebp
mov ecx, dword [esp + 0x58]
movzx eax, byte [ecx + 0x3f]
cdq
shld edx, eax, 8
shl eax, 8
mov ebp, eax
mov eax, edx
mov dword [esp + 0x20], eax
movzx eax, byte [ecx + 0x3e]
cdq
or ebp, eax
mov eax, dword [esp + 0x20]
or eax, edx
shld eax, ebp, 8
mov edx, dword [esp + 0x58]
mov ecx, eax
movzx eax, byte [edx + 0x3d]
cdq
shl ebp, 8
or ebp, eax
mov eax, dword [esp + 0x58]
movzx eax, byte [eax + 0x3c]
or ecx, edx
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
or ecx, edx
mov edx, dword [esp + 0x58]
movzx eax, byte [edx + 0x3b]
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
mov eax, dword [esp + 0x58]
movzx eax, byte [eax + 0x3a]
or ecx, edx
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
or ecx, edx
mov edx, dword [esp + 0x58]
movzx eax, byte [edx + 0x39]
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
or ecx, edx
mov edx, dword [esp + 0x58]
mov eax, ebp
mov ebp, ecx
shld ebp, eax, 8
shl eax, 8
mov ecx, eax
movzx eax, byte [edx + 0x38]
cdq
or ecx, eax
mov eax, dword [esp + 0x58]
xor dword [esp + 0x2c], ecx
or ebp, edx
xor dword [esp + 0x30], ebp
add esp, 0xc
cmp dword [eax + 0x30], 0
mov dword [esp + 0x3c], ebp
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x38], ecx
jle 0x101793a3
mov eax, dword [eax + 0x30]
mov dword [esp + 0x10], eax
lea esp, [esp]
mov edx, dword [esp + 0x30]
add dword [esp + 0x28], edx
mov eax, ebp
adc ebx, ebp
shld ebp, edx, 0xd
shl edx, 0xd
shr eax, 0x13
or eax, edx
xor eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
xor ecx, ecx
or ecx, ebp
mov ebp, dword [esp + 0x20]
xor ecx, ebx
add esi, ebp
adc edi, edx
mov dword [esp + 0x30], eax
mov eax, edx
shld edx, ebp, 0x10
shr eax, 0x10
shl ebp, 0x10
or eax, ebp
mov dword [esp + 0x34], ecx
xor ecx, ecx
or ecx, edx
xor edx, edx
or edx, dword [esp + 0x28]
xor ecx, edi
xor ebp, ebp
xor eax, esi
or ebx, ebp
add ebx, eax
adc edx, ecx
mov dword [esp + 0x28], ebx
mov ebx, edx
mov edx, ecx
shld ecx, eax, 0x15
shr edx, 0xb
shl eax, 0x15
or edx, eax
xor edx, dword [esp + 0x28]
mov eax, dword [esp + 0x30]
or ebp, ecx
mov ecx, dword [esp + 0x34]
xor ebp, ebx
add esi, eax
adc edi, ecx
mov dword [esp + 0x20], edx
mov edx, ecx
shld ecx, eax, 0x11
mov dword [esp + 0x24], ebp
xor ebp, ebp
shl eax, 0x11
shr edx, 0xf
or edx, eax
or ebp, ecx
xor ebp, edi
xor ecx, ecx
xor eax, eax
or edi, ecx
xor edx, esi
or eax, esi
sub dword [esp + 0x10], 1
mov esi, edi
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], ebp
mov edi, eax
jne 0x101792e0
mov ecx, dword [esp + 0x38]
xor dword [esp + 0x28], ecx
xor ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x54]
mov ecx, edx
mov edx, dword [esp + 0x50]
and ecx, 7
sub edx, ecx
add edx, dword [esp + 0x54]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x50]
cmp ecx, edx
mov dword [esp + 0x10], edx
je 0x101795ac
mov edx, dword [eax + 0x30]
mov dword [esp + 0x18], edx
jmp 0x101793e4
mov ecx, dword [esp + 0x50]
movzx eax, byte [ecx + 7]
cdq
shld edx, eax, 8
shl eax, 8
mov ebp, eax
mov eax, edx
mov dword [esp + 0x54], eax
movzx eax, byte [ecx + 6]
cdq
or ebp, eax
mov eax, dword [esp + 0x54]
or eax, edx
shld eax, ebp, 8
mov edx, dword [esp + 0x50]
mov ecx, eax
movzx eax, byte [edx + 5]
shl ebp, 8
cdq
or ebp, eax
mov eax, dword [esp + 0x50]
movzx eax, byte [eax + 4]
or ecx, edx
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
or ecx, edx
mov edx, dword [esp + 0x50]
movzx eax, byte [edx + 3]
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
mov eax, dword [esp + 0x50]
movzx eax, byte [eax + 2]
or ecx, edx
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
or ecx, edx
mov edx, dword [esp + 0x50]
movzx eax, byte [edx + 1]
shld ecx, ebp, 8
cdq
shl ebp, 8
or ebp, eax
or ecx, edx
mov edx, dword [esp + 0x50]
mov eax, ebp
mov ebp, ecx
shld ebp, eax, 8
shl eax, 8
mov ecx, eax
movzx eax, byte [edx]
cdq
or ebp, edx
xor dword [esp + 0x24], ebp
or ecx, eax
xor dword [esp + 0x20], ecx
cmp dword [esp + 0x18], 0
mov dword [esp + 0x3c], ebp
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x38], ecx
jle 0x10179589
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + 0x30]
mov dword [esp + 0x54], ecx
mov edi, edi
mov edx, dword [esp + 0x30]
add dword [esp + 0x28], edx
mov eax, ebp
mov dword [esp + 0x44], 0
adc ebx, ebp
shld ebp, edx, 0xd
shl edx, 0xd
xor ecx, ecx
or ecx, ebp
mov ebp, dword [esp + 0x20]
xor ecx, ebx
shr eax, 0x13
or eax, edx
xor eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
add esi, ebp
adc edi, edx
mov dword [esp + 0x34], ecx
mov ecx, edx
shld edx, ebp, 0x10
shl ebp, 0x10
shr ecx, 0x10
or ecx, ebp
mov ebp, edx
mov edx, dword [esp + 0x44]
or edx, ebp
xor edx, edi
xor ebp, ebp
or ebp, dword [esp + 0x28]
xor ecx, esi
mov dword [esp + 0x24], edx
xor edx, edx
or ebx, edx
mov edx, dword [esp + 0x24]
add ebx, ecx
adc ebp, edx
mov dword [esp + 0x2c], ebp
mov ebp, edx
shld edx, ecx, 0x15
mov dword [esp + 0x28], ebx
shl ecx, 0x15
shr ebp, 0xb
or ebp, ecx
xor ebp, dword [esp + 0x28]
xor ebx, ebx
or ebx, edx
mov ecx, ebx
mov ebx, dword [esp + 0x2c]
xor ecx, ebx
add esi, eax
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x34]
adc edi, ecx
mov edx, ecx
shld ecx, eax, 0x11
mov dword [esp + 0x20], ebp
xor ebp, ebp
shl eax, 0x11
shr edx, 0xf
or edx, eax
or ebp, ecx
xor ebp, edi
xor ecx, ecx
xor eax, eax
or edi, ecx
xor edx, esi
or eax, esi
sub dword [esp + 0x54], 1
mov esi, edi
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], ebp
mov edi, eax
jne 0x101794b0
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x10]
xor dword [esp + 0x28], ecx
xor ebx, dword [esp + 0x3c]
add eax, 8
cmp eax, edx
mov dword [esp + 0x50], eax
jne 0x101793e0
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x101795c6
push ecx
push edx
add eax, 0x38
push eax
call fcn.101b4f90
mov eax, dword [esp + 0x58]
add esp, 0xc
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
mov dword [eax + 0x28], edx
mov edx, dword [esp + 0x30]
mov dword [eax + 0x1c], edi
pop edi
mov dword [eax + 0x18], esi
pop esi
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x18]
mov dword [eax + 0x10], edx
mov edx, dword [esp + 0x1c]
mov dword [eax + 0x14], ebp
pop ebp
mov dword [eax + 0xc], ebx
mov dword [eax + 0x20], ecx
mov dword [eax + 0x24], edx
pop ebx
add esp, 0x38
ret