Function at 0x100d5f20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
mov esi, dword [ebp + 8]
xor ebx, ebx
push edi
mov edi, dword [esi + 4]
mov edx, dword [esi + 0x1c]
mov dword [ebp - 4], edx
mov dword [ebp - 0xc], edi
mov dword [esi + 0xc], 0
test edi, edi
jle 0x100d5fd6
lea esp, [esp]
mov eax, ebx
and eax, 3
push 0x9e3779b9
push 0x7f4a7bb9
mov ecx, dword [esi + eax*8 + 0x50]
mov eax, dword [esi + eax*8 + 0x54]
xor eax, dword [edx + ebx*8 + 4]
xor ecx, dword [edx + ebx*8]
push eax
push ecx
call fcn.101c8330
add eax, 0xb3bcdef7
push 0x9e3779b9
adc edx, 0x5e2d58d8
xor ecx, ecx
mov edi, edx
shld edx, eax, 0x1b
push 0x7f4a7bb9
shl eax, 0x1b
xor ecx, edx
shr edi, 5
xor edi, eax
push ecx
push edi
call fcn.101c8330
add eax, 0xb3bcdef7
adc edx, 0x5e2d58d8
xor ecx, ecx
mov edi, edx
shld edx, eax, 0x1b
shr edi, 5
xor ecx, edx
shl eax, 0x1b
mov edx, dword [ebp - 4]
xor edi, eax
mov dword [edx + ebx*8], edi
mov edi, dword [ebp - 0xc]
mov dword [edx + ebx*8 + 4], ecx
inc ebx
cmp ebx, edi
jl 0x100d5f50
push 0
lea eax, [esi + 0x50]
push 1
push eax
call fcn.100d6390
mov eax, dword [esi + 8]
add esp, 0xc
test eax, eax
jle 0x100d616d
mov ebx, dword [esi + 0x10]
add eax, ebx
cmp ebx, eax
jge 0x100d60b9
mov edi, edi
xor eax, eax
mov dword [ebp - 8], eax
test edi, edi
jle 0x100d60a9
lea ecx, [ecx]
add eax, ebx
mov edi, dword [ebp - 8]
cdq
idiv dword [esi + 8]
mov eax, dword [esi + 0x20]
mov esi, dword [ebp - 4]
push 0x9e3779b9
push 0x7f4a7bb9
mov ecx, dword [eax + edx*8]
mov eax, dword [eax + edx*8 + 4]
mov edx, esi
xor ecx, dword [esi + edi*8]
xor eax, dword [edx + edi*8 + 4]
push eax
push ecx
call fcn.101c8330
add eax, 0xb3bcdef7
push 0x9e3779b9
adc edx, 0x5e2d58d8
xor ecx, ecx
mov edi, edx
shld edx, eax, 0x1b
push 0x7f4a7bb9
shl eax, 0x1b
xor ecx, edx
shr edi, 5
xor edi, eax
push ecx
push edi
call fcn.101c8330
add eax, 0xb3bcdef7
adc edx, 0x5e2d58d8
xor ecx, ecx
mov edi, edx
shld edx, eax, 0x1b
shr edi, 5
shl eax, 0x1b
xor ecx, edx
xor edi, eax
mov edx, esi
mov eax, dword [ebp - 8]
mov esi, dword [ebp + 8]
mov dword [edx + eax*8], edi
mov edi, dword [ebp - 0xc]
mov dword [edx + eax*8 + 4], ecx
inc eax
mov dword [ebp - 8], eax
cmp eax, edi
jl 0x100d6010
mov eax, dword [esi + 0x10]
add ebx, edi
add eax, dword [esi + 8]
cmp ebx, eax
jl 0x100d6000
mov eax, dword [esi + 0x10]
xor ecx, ecx
inc eax
mov dword [ebp + 8], ecx
cdq
idiv dword [esi + 8]
mov dword [esi + 0x10], edx
test edi, edi
jle 0x100d616d
mov eax, dword [esi + 0x1c]
push 0x1010101
push 0x1010101
lea ebx, [eax + ecx*8]
mov eax, ecx
cdq
push edx
push eax
call fcn.101c8330
mov edi, eax
mov ecx, edx
mov eax, dword [esi + 8]
cdq
push 0x9e3779b9
xor ecx, edx
xor edi, eax
xor ecx, dword [ebx + 4]
xor edi, dword [ebx]
push 0x7f4a7bb9
push ecx
push edi
call fcn.101c8330
add eax, 0xb3bcdef7
push 0x9e3779b9
adc edx, 0x5e2d58d8
xor ecx, ecx
mov edi, edx
shld edx, eax, 0x1b
push 0x7f4a7bb9
shl eax, 0x1b
xor ecx, edx
shr edi, 5
xor edi, eax
push ecx
push edi
call fcn.101c8330
add eax, 0xb3bcdef7
adc edx, 0x5e2d58d8
xor ecx, ecx
mov edi, edx
shld edx, eax, 0x1b
shr edi, 5
xor ecx, edx
shl eax, 0x1b
mov dword [ebx + 4], ecx
xor edi, eax
mov ecx, dword [ebp + 8]
inc ecx
mov dword [ebx], edi
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jl 0x100d60d1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret