Function at 0x5f8a34
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov ecx, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0x10]
push edi
mov edi, dword [ebp + 0x14]
lea eax, [ebx + ecx]
mov dword [ebp - 4], eax
cmp ecx, 0x20
jb 0x5f8b9b
add eax, 0xffffffe0
mov dword [ebp - 0x20], eax
mov eax, esi
add eax, 0xadc0b5d6
mov dword [ebp - 0x14], eax
mov eax, edi
adc eax, 0x60ea27ee
mov dword [ebp - 0x10], eax
mov eax, esi
add eax, 0x27d4eb4f
mov dword [ebp - 0xc], eax
mov eax, edi
adc eax, 0xc2b2ae3d
mov dword [ebp - 8], eax
mov eax, esi
add eax, 0x7a143579
mov dword [ebp - 0x18], eax
mov eax, edi
adc eax, 0x61c8864e
mov dword [ebp - 0x1c], eax
push ebx
call fcn.005fb018
push edx
push eax
push dword [ebp - 0x10]
push dword [ebp - 0x14]
call fcn.005f0170
add ebx, 8
mov dword [ebp - 0x14], eax
push ebx
mov dword [ebp - 0x10], edx
call fcn.005fb018
push edx
push eax
push dword [ebp - 8]
push dword [ebp - 0xc]
call fcn.005f0170
add ebx, 8
mov dword [ebp - 0xc], eax
push ebx
mov dword [ebp - 8], edx
call fcn.005fb018
push edx
push eax
push edi
push esi
call fcn.005f0170
add ebx, 8
mov esi, eax
push ebx
mov edi, edx
call fcn.005fb018
add esp, 0x40
push edx
push eax
push dword [ebp - 0x1c]
push dword [ebp - 0x18]
call fcn.005f0170
add ebx, 8
mov dword [ebp - 0x18], eax
add esp, 0x10
mov ecx, edx
mov dword [ebp - 0x1c], ecx
cmp ebx, dword [ebp - 0x20]
jbe 0x5f8a9a
push ecx
push eax
push edi
push esi
push dword [ebp - 8]
mov dword [ebp - 0x20], edi
push dword [ebp - 0xc]
mov dword [ebp - 0x1c], esi
push dword [ebp - 0x10]
push dword [ebp - 0x14]
push 0x12
push ecx
push eax
call fcn.005e8d8c
push 0xc
push dword [ebp - 0x20]
mov edi, eax
mov esi, edx
push dword [ebp - 0x1c]
call fcn.005e8d8c
push 7
push dword [ebp - 8]
add edi, eax
push dword [ebp - 0xc]
adc esi, edx
call fcn.005e8d8c
push 1
push dword [ebp - 0x10]
add edi, eax
push dword [ebp - 0x14]
adc esi, edx
call fcn.005e8d8c
add esp, 0x30
add edi, eax
adc esi, edx
push esi
push edi
call fcn.005184c0
add esp, 0x10
push edx
push eax
call fcn.005184c0
add esp, 0x10
push edx
push eax
call fcn.005184c0
add esp, 0x10
push edx
push eax
call fcn.005184c0
mov ecx, dword [ebp + 0xc]
add esp, 0x10
mov esi, eax
mov edi, edx
jmp 0x5f8ba7
add esi, 0x165667c5
adc edi, 0x27d4eb2f
add esi, ecx
lea eax, [ebx + 8]
mov dword [ebp - 0x1c], esi
adc edi, 0
cmp eax, dword [ebp - 4]
ja 0x5f8c0a
push 0x1b
push ebx
call fcn.005fb018
push edx
push eax
push 0
push 0
call fcn.005f0170
add esp, 0x14
xor edx, edi
xor eax, esi
push edx
push eax
call fcn.005e8d8c
add esp, 0xc
push 0x9e3779b1
push 0x85ebca87
push edx
push eax
call fcn.00513110
mov esi, eax
mov edi, edx
add esi, 0xc2b2ae63
adc edi, 0x85ebca77
add ebx, 8
lea eax, [ebx + 8]
cmp eax, dword [ebp - 4]
jbe 0x5f8bb7
mov dword [ebp - 0x1c], esi
mov eax, dword [ebp - 4]
lea ecx, [ebx + 4]
mov dword [ebp - 0x20], ecx
cmp ecx, eax
ja 0x5f8c6a
push 0x17
push ebx
call fcn.005e9cd0
pop ecx
mov ecx, eax
mov eax, 0x9e3779b1
mul ecx
mov esi, eax
mov eax, 0x85ebca87
mul ecx
xor eax, dword [ebp - 0x1c]
add esi, edx
xor esi, edi
push esi
push eax
call fcn.005e8d8c
add esp, 0xc
push 0xc2b2ae3d
push 0x27d4eb4f
push edx
push eax
call fcn.00513110
mov ebx, dword [ebp - 0x20]
mov esi, eax
mov eax, dword [ebp - 4]
add esi, 0x9e3779f9
mov edi, edx
adc edi, 0x165667b1
cmp ebx, eax
jae 0x5f8cae