Function at 0x403a40
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x328
movups xmmword [rsp + 0x2e0], xmm6
movups xmmword [rsp + 0x2f0], xmm7
movups xmmword [rsp + 0x300], xmm8
movups xmmword [rsp + 0x310], xmm9
mov eax, 0
movsxd r15, dword [rdx]
test r15, r15
cmovns rax, r15
mov qword [rsp + 0x378], rdx
mov rbx, rcx
mov r14, rax
not rax
mov dword [rsp + 0x60], r15d
mov qword [rsp + 0x380], r8
mov qword [rsp + 0x388], r9
mov qword [rsp + 0xb0], rax
mov dword [r9], 0
mov dword [rsp + 0xc8], 1
cmp r15d, 1
jle 0x4041e1
lea rax, [r15 - 1]
lea r9, [rcx + 8]
mov rdi, qword [rsp + 0xb0]
mov qword [rsp + 0x38], 1
mov qword [rsp + 0xb8], rax
lea r13, [rcx - 8]
movq xmm3, qword [0x0048bc40]
mov qword [rsp + 0x40], rax
lea rax, [r14 + 1]
lea rdi, [rdi + r14*2 + 2]
movsd xmm7, qword [0x0048bc88]
mov qword [rsp + 0x90], rax
shl rax, 3
movsd xmm4, qword [0x0048bc80]
mov qword [rsp + 0x98], rax
sub rax, 8
movsd xmm8, qword [0x0048bc58]
mov qword [rsp + 0x28], rax
lea eax, [r15 - 2]
movq xmm5, qword [0x0048bc70]
add rax, 2
mov qword [rsp + 0x70], rdi
movupd xmm6, xmmword [0x0048bc90]
lea rdi, [r15 - 2]
mov qword [rsp + 0xa0], rax
lea rax, [r15 + r14 + 1]
shl rax, 3
mov qword [rsp + 0x48], rdi
xor edi, edi
mov qword [rsp + 0xa8], rax
lea eax, [r15 + 1]
mov qword [rsp + 0x78], 2
mov qword [rsp + 0x68], 0xffffffffffffffff
mov qword [rsp + 0x30], 0xffffffffffffffff
mov qword [rsp + 0x20], 1
mov dword [rsp + 0x58], eax
nop dword [rax]
mov rax, qword [rsp + 0x20]
mov r8d, eax
mov edx, eax
cmp r15, rax
jge 0x403bd5
jmp 0x403f82
add rax, 1
cmp r15, rax
jl 0x403f82
movsd xmm0, qword [r13 + rax*8]
andpd xmm0, xmm3
comisd xmm0, xmm4
jb 0x403bc8
mov r11d, 1
sub r11, qword [rsp + 0x20]
lea r10, [r11 + rax]
cmp r15, rax
jl 0x403c40
add rax, 1
cmp r15, rax
jge 0x403c14
jmp 0x403c40
lea rcx, [rax + 1]
cmp rax, r15
je 0x403c40
mov rax, rcx
movsd xmm1, qword [r13 + rax*8]
andpd xmm1, xmm3
comisd xmm1, xmm0
jbe 0x403c08
lea r10, [rax + r11]
movupd xmm0, xmm1
lea rcx, [rax + 1]
cmp rax, r15
jne 0x403c11
nop word cs:[rax + rax]
mov rsi, qword [rsp + 0x380]
mov rcx, qword [rsp + 0x20]
lea eax, [r8 + r10 - 1]
mov dword [rsp + 0x64], eax
mov dword [rsi + rcx*4 - 4], eax
movsxd rcx, eax
mov rax, qword [rsp + 0x30]
lea rsi, [rcx + rax]
movsd xmm0, qword [rbx + rsi*8]
andpd xmm0, xmm3
comisd xmm7, xmm0
ja 0x403fa6
mov edi, dword [rsp + 0x20]
cmp dword [rsp + 0x64], edi
jne 0x403f41
lea eax, [r8 + 1]
movupd xmm0, xmm8
divsd xmm0, qword [r9 - 8]
mov dword [rsp + 0x5c], eax
cmp dword [rsp + 0x60], eax
jl 0x403e8d
mov edx, dword [rsp + 0x60]
sub edx, r8d
cmp edx, 1
je 0x403cf8
mov ecx, edx
movupd xmm2, xmm0
mov rax, r9
shr ecx, 1
unpcklpd xmm2, xmm2
shl rcx, 4
add rcx, r9
nop word cs:[rax + rax]
movupd xmm1, xmmword [rax]
add rax, 0x10
mulpd xmm1, xmm2
xorpd xmm1, xmm6
movups xmmword [rax - 0x10], xmm1
cmp rax, rcx
jne 0x403cd0
mov eax, dword [rsp + 0x5c]
mov ecx, edx
and ecx, 0xfffffffe
add eax, ecx
cmp edx, ecx
je 0x403d0f
cdqe
add rax, qword [rsp + 0x30]
lea rax, [rbx + rax*8]
mulsd xmm0, qword [rax]
xorpd xmm0, xmm5
movsd qword [rax], xmm0
add qword [rsp + 0x20], 1
mov rax, qword [rsp + 0x20]
cmp r15, rax
jl 0x403f93
mov rax, qword [rsp + 0xa8]
mov r11, qword [rsp + 0x20]
mov qword [rsp + 0x80], r15
mov rbp, r14
mov r8, qword [rsp + 0x70]
mov r12d, dword [rsp + 0x5c]
neg rbp
mov qword [rsp + 0x88], r13
lea rdi, [rax + r13]
mov rax, qword [rsp + 0x40]
mov r15, qword [rsp + 0x78]
mov r10, rax
and rax, 0xfffffffffffffffe
add r11, rax
mov qword [rsp + 0x50], rax
mov rax, qword [rsp + 0x30]
shr r10, 1
shl r10, 4
lea rsi, [r11 + rax]
mov rax, qword [rsp + 0x68]
sub rax, 1
mov qword [rsp + 0x68], rax
mov r13, rax
nop
lea rax, [r8 + 1]
cmp rax, qword [rsp + 0x38]
movsd xmm1, qword [rbx + r8*8 - 8]
lea rdx, [r13 + r8]
setl cl
cmp r8, r15
setg al
or cl, al
je 0x403f18
cmp qword [rsp + 0x48], 1
jbe 0x403f18
movupd xmm2, xmm1
lea rcx, [rbx + r8*8]
xor eax, eax
unpcklpd xmm2, xmm2
movupd xmm0, xmmword [r9 + rax]
movupd xmm9, xmmword [rcx + rax]
mulpd xmm0, xmm2
addpd xmm0, xmm9
movups xmmword [rcx + rax], xmm0
add rax, 0x10
cmp r10, rax
jne 0x403dd0
mov rcx, qword [rsp + 0x40]
cmp qword [rsp + 0x50], rcx
je 0x403e16
mulsd xmm1, qword [rbx + rsi*8]
add rdx, r11
lea rax, [rbx + rdx*8]
movsd xmm0, qword [rax]
addsd xmm0, xmm1
movsd qword [rax], xmm0
add r12d, 1
add r8, r14
sub rbp, r14
add rdi, qword [rsp + 0x28]
cmp r12d, dword [rsp + 0x58]
jne 0x403d90
mov r15, qword [rsp + 0x80]
mov r13, qword [rsp + 0x88]
add qword [rsp + 0x30], r14
mov rsi, qword [rsp + 0x20]
mov edi, 1
mov rax, qword [rsp + 0x90]
sub qword [rsp + 0x40], 1
add qword [rsp + 0x70], rax
add r9, qword [rsp + 0x98]
sub qword [rsp + 0x48], 1
add r13, qword [rsp + 0x28]
add qword [rsp + 0x78], rax
add qword [rsp + 0x38], rax
cmp qword [rsp + 0xa0], rsi
jne 0x403bb0
mov eax, dword [rsp + 0x64]
mov dword [rsp + 0xcc], eax
mov eax, dword [rsp + 0x5c]
mov dword [rsp + 0xc8], eax
mov esi, dword [rsp + 0x60]
mov rax, qword [rsp + 0x380]
mov rdi, qword [rsp + 0xb8]
mov dword [rax + rdi*4], esi
mov rsi, r14
imul rsi, r15
add rsi, qword [rsp + 0xb0]
add rsi, r15
movsd xmm0, qword [rbx + rsi*8]
andpd xmm3, xmm0
comisd xmm7, xmm3
ja 0x4040cd
movups xmm6, xmmword [rsp + 0x2e0]
movups xmm7, xmmword [rsp + 0x2f0]
movups xmm8, xmmword [rsp + 0x300]
movups xmm9, xmmword [rsp + 0x310]
add rsp, 0x328
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea rax, [rbx + r8*8]
nop dword [rax]
movsd xmm0, qword [rax + rbp*8]
add rax, 8
mulsd xmm0, xmm1
addsd xmm0, qword [rax - 8]
movsd qword [rax - 8], xmm0
cmp rdi, rax
jne 0x403f20
jmp 0x403e16
mov rdi, qword [rsp + 0x20]
mov r10d, dword [rsp + 0x60]
lea rax, [rbx + rsi*8]
mov r11, qword [rsp + 0x28]
sub rdi, rcx
mov rcx, rdi
nop word [rax + rax]
movsd xmm0, qword [rax]
movsd xmm1, qword [rax + rcx*8]
add edx, 1
movsd qword [rax], xmm1
movsd qword [rax + rcx*8], xmm0
add rax, r11
cmp r10d, edx
jge 0x403f60
jmp 0x403c87
xor r10d, r10d
cmp r15, qword [rsp + 0x20]
setge r10b
jmp 0x403c40
mov rax, qword [rsp + 0x68]
sub rax, 1
mov qword [rsp + 0x68], rax
jmp 0x403e40
mov eax, dword [rsp + 0x64]
mov dword [rsp + 0xcc], eax
test dil, dil
je 0x403fbd
mov dword [rsp + 0xc8], edx
mov rax, qword [rsp + 0x388]
lea r12, [rsp + 0xd0]
mov dword [rsp + 0xe0], 0x58c
mov qword [rsp + 0x128], 0x1b
mov rcx, r12
mov dword [rax], edx
lea rax, str._home_theophile.terraz_builds_PfRyLpJ8_0_jean_baptiste.faure_mage_src_mage_Utilitaires.f90
mov qword [rsp + 0xd8], rax
lea rax, [0x0048b35f]
mov qword [rsp + 0x120], rax
mov qword [rsp + 0xd0], 0x1000
call sym._gfortran_st_write
mov rcx, r12
mov r8d, 0x2e
lea rdx, str._____pivot_nul_dans_sgefa_c_omp____ltape___:_ligne__valeur_:_seed
call sym._gfortran_transfer_character_write
lea rdx, [rsp + 0xc8]
mov rcx, r12
mov r8d, 4
call sym._gfortran_transfer_integer_write
mov rcx, r12
mov r8d, 1
lea rdx, [0x0048b3ae]
call sym._gfortran_transfer_character_write
mov rdx, qword [rsp + 0x378]
mov rcx, r12
mov r8d, 4
call sym._gfortran_transfer_integer_write
mov rcx, r12
mov r8d, 9
lea rdx, [0x0048b3af]
call sym._gfortran_transfer_character_write
lea rdx, [rsp + 0xcc]
mov rcx, r12
mov r8d, 4
call sym._gfortran_transfer_integer_write
mov rcx, r12
mov r8d, 0xa
lea rdx, [0x0048b3b8]
call sym._gfortran_transfer_character_write
mov rcx, r12
lea rdx, [rbx + rsi*8]
mov r8d, 8
call sym._gfortran_transfer_real_write
mov rcx, r12
call sym._gfortran_st_write_done
jmp 0x403edf
lea r12, [rsp + 0xd0]
lea rax, str._home_theophile.terraz_builds_PfRyLpJ8_0_jean_baptiste.faure_mage_src_mage_Utilitaires.f90
mov dword [rsp + 0xe0], 0x5af
mov qword [rsp + 0xd8], rax
mov rcx, r12
lea rax, [0x0048b35f]
mov qword [rsp + 0x120], rax
mov qword [rsp + 0x128], 0x1b
mov qword [rsp + 0xd0], 0x1000
call sym._gfortran_st_write
mov r8d, 0x2e
lea rdx, str._____pivot_nul_dans_sgefa_c_omp____ltape___:_ligne__valeur_:_seed
mov rcx, r12
call sym._gfortran_transfer_character_write
mov rdx, qword [rsp + 0x378]
mov r8d, 4
mov rcx, r12
call sym._gfortran_transfer_integer_write
mov r8d, 1
lea rdx, [0x0048b3ae]
mov rcx, r12
call sym._gfortran_transfer_character_write
mov rdx, qword [rsp + 0x378]
mov r8d, 4
mov rcx, r12
call sym._gfortran_transfer_integer_write
mov r8d, 9
lea rdx, [0x0048b3af]
mov rcx, r12
call sym._gfortran_transfer_character_write
mov rdx, qword [rsp + 0x378]
mov r8d, 4
mov rcx, r12
call sym._gfortran_transfer_integer_write
mov r8d, 0xa
lea rdx, [0x0048b3b8]
mov rcx, r12
call sym._gfortran_transfer_character_write
lea rdx, [rbx + rsi*8]
mov r8d, 8
mov rcx, r12
call sym._gfortran_transfer_real_write
mov rcx, r12
call sym._gfortran_st_write_done
mov rax, qword [rsp + 0x388]
mov edi, dword [rsp + 0x60]
mov dword [rax], edi
jmp 0x403edf
lea rax, [r15 - 1]
movq xmm3, qword [0x0048bc40]
movsd xmm7, qword [0x0048bc88]
mov qword [rsp + 0xb8], rax
jmp 0x403ea3