Function at 0x597862
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x20
call fcn.004cfdb0
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x34]
mov cl, 0x38
mov eax, dword [edi]
mov edx, dword [edi + 4]
call fcn.005b2740
mov ebx, dword [edi + 0x24]
mov ebp, dword [edi + 0xc]
mov esi, dword [edi + 0x10]
mov ecx, dword [edi + 0x20]
mov dword [esp + 0x1c], 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 + 0x2c]
mov dword [esp + 0x14], edx
mov edx, dword [edi + 0x14]
mov dword [esp + 0x24], edx
mov dword [esp + 0x18], ebx
cmp dword [esp + 0x3c], eax
je 0x5977e5
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x20
ret
mov eax, dword [edi + 0x28]
dec eax
cmp eax, 6
ja case.default.0x5977f2
jmp dword [eax*4 + 0x597bf4]
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 + 0x1c]
cdq
shld edx, eax, 0x18
shl eax, 0x18
or ebx, eax
or dword [esp + 0x14], edx
jmp 0x597836
mov ebx, dword [esp + 0x1c]
movzx eax, byte [edi + 0x3a]
cdq
shld edx, eax, 0x10
shl eax, 0x10
or ebx, eax
or dword [esp + 0x14], edx
jmp 0x59784e
mov ebx, dword [esp + 0x1c]
movzx eax, byte [edi + 0x39]
cdq
shld edx, eax, 8
shl eax, 8
or ebx, eax
or dword [esp + 0x14], edx
jmp 0x597866
mov ebx, dword [esp + 0x1c]
movzx eax, byte [edi + 0x38]
cdq
or ebx, eax
or dword [esp + 0x14], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x1c], ebx
jmp 0x59787f
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
xor ecx, ebx
xor eax, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0x30]
test eax, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x18]
jle 0x597957
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 + 0x18], 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 + 0x3c], 1
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x28], ebx
jne 0x5978a0
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x24], edx
xor dword [esp + 0x14], ebp
xor ebp, ebp
xor dword [esp + 0x10], ebx
mov ebx, 0xee
cmp dword [edi + 0x2c], 0x10
je 0x597971
mov ebx, 0xff
mov eax, dword [edi + 0x34]
xor ebx, dword [esp + 0x20]
xor ebp, dword [esp + 0x28]
test eax, eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x3c], ebx
jle 0x597a49
mov dword [esp + 0x3c], ebx
jmp 0x59799a
mov eax, dword [esp + 0x18]
add dword [esp + 0x10], esi
mov ebx, edx
adc dword [esp + 0x14], edx
xor edi, edi
shld edx, esi, 0xd
shr ebx, 0x13
shl esi, 0xd
or edi, edx
xor edi, dword [esp + 0x14]
or ebx, esi
xor ebx, dword [esp + 0x10]
mov esi, eax
add dword [esp + 0x3c], ecx
adc ebp, eax
shr esi, 0x10
shld eax, ecx, 0x10
xor edx, edx
shl ecx, 0x10
or edx, eax
mov eax, dword [esp + 0x14]
or esi, ecx
xor esi, dword [esp + 0x3c]
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 + 0x14], ecx
mov ecx, edx
shld edx, esi, 0x15
shr ecx, 0xb
or eax, edx
shl esi, 0x15
xor eax, dword [esp + 0x14]
or ecx, esi
xor ecx, dword [esp + 0x10]
mov esi, edi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x3c]
add eax, ebx
mov dword [esp + 0x3c], 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 + 0x3c], ebx
xor esi, eax
or ebp, eax
sub dword [esp + 0x28], 1
jne 0x597996
mov eax, dword [esp + 0x38]
mov edx, ecx
mov edi, dword [esp + 0x38]
xor edx, ebx
mov ebx, dword [esp + 0x18]
xor edx, esi
xor edx, dword [esp + 0x10]
xor ebx, ebp
xor ebx, dword [esp + 0x24]
xor ebx, dword [esp + 0x14]
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 + 0x34]
shr edx, 0x18
mov dword [esp + 0x2c], 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 0x597be7
mov edx, dword [esp + 0x24]
xor esi, 0xdd
mov eax, dword [edi + 0x34]
xor edx, 0
mov dword [esp + 0x24], edx
mov dword [esp + 0x34], eax
test eax, eax
jle 0x597b8f
add dword [esp + 0x10], esi
mov ebx, edx
mov eax, dword [esp + 0x14]
adc eax, edx
shr ebx, 0x13
shld edx, esi, 0xd
xor edi, edi
mov dword [esp + 0x14], eax
shl esi, 0xd
or edi, edx
or ebx, esi
xor edi, eax
xor ebx, dword [esp + 0x10]
add dword [esp + 0x3c], ecx
mov eax, dword [esp + 0x18]
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 + 0x14]
or esi, ecx
xor esi, dword [esp + 0x3c]
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 + 0x14], ecx
mov ecx, edx
shld edx, esi, 0x15
shr ecx, 0xb
or eax, edx
shl esi, 0x15
xor eax, dword [esp + 0x14]
or ecx, esi
xor ecx, dword [esp + 0x10]
mov esi, edi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x3c]
add eax, ebx
mov dword [esp + 0x3c], 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 + 0x3c]
sub dword [esp + 0x34], 1
mov dword [esp + 0x3c], eax
jne 0x597ad4
mov dword [esp + 0x24], edx
jmp 0x597b93
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x38]
xor ecx, eax
mov edx, dword [esp + 0x18]
xor ecx, esi
xor ecx, dword [esp + 0x10]
xor edx, ebp
xor edx, dword [esp + 0x24]
mov eax, ecx
xor edx, dword [esp + 0x14]
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 + 0x2c], 0
mov byte [ebx + 0xe], al
mov byte [ebx + 0xf], dl
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x20
ret