Created
December 20, 2019 18:58
-
-
Save WheretIB/7be2120d48db9a21cd14bd09a77ea6b7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ------------------- Invalidation ---------------- | |
0xc000156f: ; 5487 | |
; 5487: less r9, r8, r6 | |
mov eax, dword [rbx+64] | |
cmp eax, dword [rbx+48] | |
; 5488: jmpz r9, 5541 // kill late[r9] | |
jge '0xc00015a5' | |
// auto bi = this.bodies[i]; | |
; 5489: loadq r9, [r4 + 0] | |
mov rax, qword [rbx+32] | |
mov rax, qword [rax] | |
mov qword [rbx+72], rax | |
; 5490: load r10, [r4 + 8] | |
mov rdx, qword [rbx+32] | |
mov edx, dword [rdx+8] | |
; 5491: index r11, r7, r9, r10, 8 | |
mov edi, dword [rbx+56] | |
cmp edi, edx | |
jb '0x3ad' | |
; set_tracking 0 | |
mov rcx, &ctx | |
mov dword [rcx+152], 5491 | |
call qword [rcx+40] | |
; set_tracking 1 | |
0x00000000000003AD: | |
lea rsi, [rdi*8 + rax] | |
; 5492: loadq r11, [r11 + 0] // kill early[r11] | |
mov r8, qword [rsi] | |
// auto bj = this.bodies[j]; | |
; 5493: index r10, r8, r9, r10, 8 // kill early[r9, r10] | |
mov r9d, dword [rbx+64] | |
cmp r9d, edx | |
jb '0x3ae' | |
; set_tracking 0 | |
mov rcx, &ctx | |
mov dword [rcx+152], 5493 | |
call qword [rcx+40] | |
; set_tracking 1 | |
0x00000000000003AE: | |
lea r10, [r9*8 + rax] | |
; 5494: loadq r10, [r10 + 0] // kill early[r10] | |
mov r11, qword [r10] | |
// dx = bi.x - bj.x; | |
; 5495: loadd r9, [r11 + 0] | |
movsd xmm0, qword [r8] | |
; 5496: subd r9, r9, [r10 + 0] // kill early[r9] | |
movsd xmm1, qword [r11] | |
subsd xmm0, xmm1 | |
movsd qword [rbx+72], xmm0 | |
// dy = bi.y - bj.y; | |
; 5497: loadd r12, [r11 + 8] | |
movsd xmm2, qword [r8+8] | |
; 5498: subd r12, r12, [r10 + 8] // kill early[r12] | |
movsd xmm3, qword [r11+8] | |
subsd xmm2, xmm3 | |
movsd qword [rbx+96], xmm2 | |
// dz = bi.z - bj.z; | |
; 5499: loadd r13, [r11 + 16] | |
movsd xmm4, qword [r8+16] | |
; 5500: subd r13, r13, [r10 + 16] // kill early[r13] | |
movsd xmm5, qword [r11+16] | |
subsd xmm4, xmm5 | |
movsd qword [rbx+104], xmm4 | |
// distance = sqrt(dx*dx + dy*dy + dz*dz); | |
; 5501: muld r14, r9, r9 | |
mulsd xmm0, xmm0 | |
; 5502: muld r15, r12, r12 | |
mulsd xmm2, xmm2 | |
; 5503: addd r15, r14, r15 // kill early[r14, r15] | |
addsd xmm0, xmm2 | |
; 5504: muld r14, r13, r13 | |
mulsd xmm4, xmm4 | |
; 5505: addd r14, r15, r14 // kill early[r15, r14] | |
addsd xmm0, xmm4 | |
; 5506: call sqrt#153(r14, 0L) -> double (r14) @39700 // kill early[r14] | |
sqrtsd xmm1, xmm0 | |
movsd qword [rbx+112], xmm1 | |
// mag = dt / (distance * distance * distance); | |
; 5507: muld r15, r14, r14 | |
mulsd xmm1, xmm1 | |
; 5508: muld r14, r15, r14 // kill early[r15, r14] | |
movsd xmm2, qword [rbx+112] | |
mulsd xmm1, xmm2 | |
; 5509: divd r14, r5, r14 // kill early[r14] | |
movsd xmm3, qword [rbx+40] | |
divsd xmm3, xmm1 | |
movsd qword [rbx+112], xmm3 | |
// bi.vx -= dx * bj.mass * mag; | |
; 5510: loadd r15, [r11 + 24] | |
movsd xmm4, qword [r8+24] | |
; 5511: loadd r16, [r10 + 48] | |
movsd xmm5, qword [r11+48] | |
movsd qword [rbx+128], xmm5 | |
; 5512: muld r17, r9, r16 | |
movsd xmm0, qword [rbx+72] | |
mulsd xmm0, xmm5 | |
; 5513: muld r17, r17, r14 // kill early[r17] | |
mulsd xmm0, xmm3 | |
; 5514: subd r17, r15, r17 // kill early[r15, r17] | |
subsd xmm4, xmm0 | |
; 5515: stored r17, [r11 + 24] // kill late[r17] | |
movsd qword [r8+24], xmm4 | |
// bi.vy -= dy * bj.mass * mag; | |
; 5516: loadd r17, [r11 + 32] | |
movsd xmm2, qword [r8+32] | |
; 5517: muld r15, r12, r16 | |
movsd xmm3, qword [rbx+96] | |
mulsd xmm3, xmm5 | |
; 5518: muld r15, r15, r14 // kill early[r15] | |
movsd xmm4, qword [rbx+112] | |
mulsd xmm3, xmm4 | |
; 5519: subd r15, r17, r15 // kill early[r17, r15] | |
subsd xmm2, xmm3 | |
; 5520: stored r15, [r11 + 32] // kill late[r15] | |
movsd qword [r8+32], xmm2 | |
// bi.vz -= dz * bj.mass * mag; | |
; 5521: loadd r15, [r11 + 40] | |
movsd xmm0, qword [r8+40] | |
; 5522: muld r16, r13, r16 // kill early[r16] | |
movsd xmm1, qword [rbx+104] | |
movsd xmm2, qword [rbx+128] | |
mulsd xmm1, xmm2 | |
; 5523: muld r16, r16, r14 // kill early[r16] | |
mulsd xmm1, xmm4 | |
; 5524: subd r16, r15, r16 // kill early[r15, r16] | |
subsd xmm0, xmm1 | |
; 5525: stored r16, [r11 + 40] // kill late[r16] | |
movsd qword [r8+40], xmm0 | |
// bj.vx += dx * bi.mass * mag; | |
; 5526: loadd r11, [r11 + 48] // kill early[r11] | |
movsd xmm4, qword [r8+48] | |
movsd qword [rbx+88], xmm4 | |
; 5527: muld r9, r9, r11 // kill early[r9] | |
movsd xmm5, qword [rbx+72] | |
mulsd xmm5, xmm4 | |
; 5528: muld r9, r9, r14 // kill early[r9] | |
movsd xmm0, qword [rbx+112] | |
mulsd xmm5, xmm0 | |
; 5529: addd r9, r9, [r10 + 24] // kill early[r9] | |
movsd xmm1, qword [r11+24] | |
addsd xmm5, xmm1 | |
; 5530: stored r9, [r10 + 24] // kill late[r9] | |
movsd qword [r11+24], xmm5 | |
// bj.vy += dy * bi.mass * mag; | |
; 5531: muld r12, r12, r11 // kill early[r12] | |
movsd xmm3, qword [rbx+96] | |
mulsd xmm3, xmm4 | |
; 5532: muld r12, r12, r14 // kill early[r12] | |
mulsd xmm3, xmm0 | |
; 5533: addd r12, r12, [r10 + 32] // kill early[r12] | |
movsd xmm4, qword [r11+32] | |
addsd xmm3, xmm4 | |
; 5534: stored r12, [r10 + 32] // kill late[r12] | |
movsd qword [r11+32], xmm3 | |
// bj.vz += dz * bi.mass * mag; | |
; 5535: muld r11, r13, r11 // kill early[r13, r11] | |
movsd xmm0, qword [rbx+104] | |
movsd xmm1, qword [rbx+88] | |
mulsd xmm0, xmm1 | |
; 5536: muld r14, r11, r14 // kill early[r11, r14] | |
movsd xmm2, qword [rbx+112] | |
mulsd xmm0, xmm2 | |
; 5537: addd r14, r14, [r10 + 40] // kill early[r14] | |
movsd xmm3, qword [r11+40] | |
addsd xmm0, xmm3 | |
; 5538: stored r14, [r10 + 40] // kill late[r14, r10] | |
movsd qword [r11+40], xmm0 | |
// for (auto j=i+1; j < size; j++) { | |
; 5539: addimm r8, r8, 1 | |
add dword [rbx+64], 1 | |
; 5540: jmp 5487 | |
jmp '0xc000156f' | |
; ------------------- Invalidation ---------------- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
0xc000156f: | |
mov eax, dword [rbx+64] | |
cmp eax, dword [rbx+48] | |
jge '0xc00015a5' | |
mov rax, qword [rbx+32] | |
mov rax, qword [rax] | |
mov qword [rbx+72], rax | |
mov rdx, qword [rbx+32] | |
mov edx, dword [rdx+8] | |
mov edi, dword [rbx+56] | |
cmp edi, edx | |
jb '0x3ad' | |
mov rcx, &ctx | |
mov dword [rcx+152], 5491 | |
call qword [rcx+40] | |
0x00000000000003AD: | |
lea rsi, [rdi*8 + rax] | |
mov r8, qword [rsi] | |
mov r9d, dword [rbx+64] | |
cmp r9d, edx | |
jb '0x3ae' | |
mov rcx, &ctx | |
mov dword [rcx+152], 5493 | |
call qword [rcx+40] | |
0x00000000000003AE: | |
lea r10, [r9*8 + rax] | |
mov r11, qword [r10] | |
movsd xmm0, qword [r8] | |
movsd xmm1, qword [r11] | |
subsd xmm0, xmm1 | |
movsd qword [rbx+72], xmm0 | |
movsd xmm2, qword [r8+8] | |
movsd xmm3, qword [r11+8] | |
subsd xmm2, xmm3 | |
movsd qword [rbx+96], xmm2 | |
movsd xmm4, qword [r8+16] | |
movsd xmm5, qword [r11+16] | |
subsd xmm4, xmm5 | |
movsd qword [rbx+104], xmm4 | |
mulsd xmm0, xmm0 | |
mulsd xmm2, xmm2 | |
addsd xmm0, xmm2 | |
mulsd xmm4, xmm4 | |
addsd xmm0, xmm4 | |
sqrtsd xmm1, xmm0 | |
movsd qword [rbx+112], xmm1 | |
mulsd xmm1, xmm1 | |
movsd xmm2, qword [rbx+112] | |
mulsd xmm1, xmm2 | |
movsd xmm3, qword [rbx+40] | |
divsd xmm3, xmm1 | |
movsd qword [rbx+112], xmm3 | |
movsd xmm4, qword [r8+24] | |
movsd xmm5, qword [r11+48] | |
movsd qword [rbx+128], xmm5 | |
movsd xmm0, qword [rbx+72] | |
mulsd xmm0, xmm5 | |
mulsd xmm0, xmm3 | |
subsd xmm4, xmm0 | |
movsd qword [r8+24], xmm4 | |
movsd xmm2, qword [r8+32] | |
movsd xmm3, qword [rbx+96] | |
mulsd xmm3, xmm5 | |
movsd xmm4, qword [rbx+112] | |
mulsd xmm3, xmm4 | |
subsd xmm2, xmm3 | |
movsd qword [r8+32], xmm2 | |
movsd xmm0, qword [r8+40] | |
movsd xmm1, qword [rbx+104] | |
movsd xmm2, qword [rbx+128] | |
mulsd xmm1, xmm2 | |
mulsd xmm1, xmm4 | |
subsd xmm0, xmm1 | |
movsd qword [r8+40], xmm0 | |
movsd xmm4, qword [r8+48] | |
movsd qword [rbx+88], xmm4 | |
movsd xmm5, qword [rbx+72] | |
mulsd xmm5, xmm4 | |
movsd xmm0, qword [rbx+112] | |
mulsd xmm5, xmm0 | |
movsd xmm1, qword [r11+24] | |
addsd xmm5, xmm1 | |
movsd qword [r11+24], xmm5 | |
movsd xmm3, qword [rbx+96] | |
mulsd xmm3, xmm4 | |
mulsd xmm3, xmm0 | |
movsd xmm4, qword [r11+32] | |
addsd xmm3, xmm4 | |
movsd qword [r11+32], xmm3 | |
movsd xmm0, qword [rbx+104] | |
movsd xmm1, qword [rbx+88] | |
mulsd xmm0, xmm1 | |
movsd xmm2, qword [rbx+112] | |
mulsd xmm0, xmm2 | |
movsd xmm3, qword [r11+40] | |
addsd xmm0, xmm3 | |
movsd qword [r11+40], xmm0 | |
add dword [rbx+64], 1 | |
jmp '0xc000156f' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment