Here is assembly:
mov rdi, [r13+rax*8+0]
sub rdi, rcx
cvtsi2sd xmm0, rdi
movsd qword ptr [r11+rax*8], xmm0
cvtsi2sd xmm0, qword ptr [r14+rax*8]
movsd qword ptr [rsi+rax*8], xmm0
add rax, 1
And here is an output from Hexrays decompiler
{
v32[v34] = (double)(LODWORD(v11[v34]) - (int)var1);
v33[v34] = (double)(int)v10[v34];
++v34;
}
issue: v10, v11 and var1 are declared as __int64* and __int64. Any ideas why decompiler converts them to 32 bit integers? I see those being moved to 64 bit registers. This is an ELF64 executable
movsxd rcx, ...
vectors
), and/or some structures (e.g.struct vec4 { float f[4]}; }
) sprinkled around the place. I would (for example) try defining v32, v33 and v11 asvec4
and see what it shows.