Skip to content

Instantly share code, notes, and snippets.

@indutny
Created April 5, 2012 20:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save indutny/1e4d2ffeb189bd90dd42 to your computer and use it in GitHub Desktop.
Save indutny/1e4d2ffeb189bd90dd42 to your computer and use it in GitHub Desktop.
0x000000010012d8f1: push %rbp
0x000000010012d8f2: mov %rsp,%rbp
0x000000010012d8f5: sub $0x50,%rsp # Allocate spills
0x000000010012d8fc: mov %rsp,%r8 # Cleanup spills
0x000000010012d8ff: mov %rbp,%r9
0x000000010012d902: sub $0x8,%r9
0x000000010012d909: push %r8
0x000000010012d90b: mov $0x1,%r14
0x000000010012d915: jmpq 0x10012d928
0x000000010012d91a: mov %r14,0x0(%r8)
0x000000010012d921: add $0x8,%r8
0x000000010012d928: cmp %r9,%r8
0x000000010012d92b: jle 0x10012d91a
0x000000010012d931: pop %r8
0x000000010012d933: xor %r14,%r14
0x000000010012d936: xor %r8,%r8
0x000000010012d939: xor %r9,%r9
0x000000010012d93c: mov %rax,-0x8(%rbp) // Allocate context
0x000000010012d943: mov $0x30,%rax
0x000000010012d94d: push %rax
0x000000010012d94e: mov $0x4,%rax
0x000000010012d958: push %rax
0x000000010012d959: mov $0x10012d270,%r14
0x000000010012d963: rex.WB callq *%r14
0x000000010012d966: nop
0x000000010012d967: mov %rsi,0x7(%rax)
0x000000010012d96e: movq $0x0,0xf(%rax)
0x000000010012d979: mov %rax,%rsi
0x000000010012d97c: mov -0x8(%rbp),%rax
0x000000010012d983: mov $0x100200118,%r14
0x000000010012d98d: rex.WB cmpb $0x0,0x0(%r14)
0x000000010012d995: je 0x10012d9a9
0x000000010012d99b: mov $0x10012d000,%r14
0x000000010012d9a5: rex.WB callq *%r14
0x000000010012d9a8: nop
0x000000010012d9a9: mov $0x14,%rax // i <- 20
0x000000010012d9b3: mov $0x14,%rbx // j <- 20
0x000000010012d9bd: mov $0x0,%rcx // k <- 0
0x000000010012d9c7: mov %rbx,%rdx // BinaryOp (i + 1) start
0x000000010012d9ca: mov %rbx,-0x8(%rbp)
0x000000010012d9d1: mov $0x2,%rbx
0x000000010012d9db: mov -0x8(%rbp),%r8
0x000000010012d9e2: mov %r8,-0x10(%rbp)
0x000000010012d9e9: mov %rdx,-0x18(%rbp)
0x000000010012d9f0: mov %rcx,-0x20(%rbp)
0x000000010012d9f7: mov $0x10012d350,%r14
0x000000010012da01: rex.WB callq *%r14
0x000000010012da04: nop
0x000000010012da05: mov %rax,%r9
0x000000010012da08: mov -0x10(%rbp),%r8
0x000000010012da0f: mov -0x18(%rbp),%rdx
0x000000010012da16: mov -0x20(%rbp),%rcx
0x000000010012da1d: mov %r9,%rbx // Put result of previous op into r9
0x000000010012da20: mov %rax,-0x30(%rbp) // ConvertToBoolean(r9)
0x000000010012da27: mov %r9,%rax
0x000000010012da2a: mov -0x30(%rbp),%r14
0x000000010012da31: mov %r14,-0x20(%rbp)
0x000000010012da38: mov %rbx,-0x18(%rbp)
0x000000010012da3f: mov %r8,-0x10(%rbp)
0x000000010012da46: mov %rdx,-0x8(%rbp)
0x000000010012da4d: mov %rcx,-0x28(%rbp)
0x000000010012da54: mov $0x10012d5c0,%r14
0x000000010012da5e: nop
0x000000010012da5f: rex.WB callq *%r14
0x000000010012da62: nop
0x000000010012da63: rex.W cmpb $0x0,0x7(%rax) // Branch bool
0x000000010012da6b: je 0x10012dc66
0x000000010012da71: mov -0x20(%rbp),%rax // Incorrect unwind of variables !!!!!
0x000000010012da78: mov -0x18(%rbp),%rbx
0x000000010012da7f: mov -0x10(%rbp),%r8
0x000000010012da86: mov -0x8(%rbp),%rdx
0x000000010012da8d: mov -0x28(%rbp),%rcx
0x000000010012da94: mov %rcx,%r9
0x000000010012da97: mov %rax,-0x28(%rbp)
0x000000010012da9e: mov %rdx,%rax
0x000000010012daa1: mov -0x28(%rbp),%rdx
0x000000010012daa8: mov %rbx,-0x28(%rbp)
0x000000010012daaf: mov $0x2,%rbx
0x000000010012dab9: mov -0x28(%rbp),%r10
0x000000010012dac0: mov %rdx,-0x8(%rbp)
0x000000010012dac7: mov %r10,-0x10(%rbp)
0x000000010012dace: mov %r9,-0x18(%rbp)
0x000000010012dad5: mov %r8,-0x20(%rbp)
0x000000010012dadc: mov %rax,-0x30(%rbp)
0x000000010012dae3: mov %rcx,-0x38(%rbp)
0x000000010012daea: mov $0x10012d350,%r14
0x000000010012daf4: nop
0x000000010012daf5: rex.WB callq *%r14
0x000000010012daf8: nop
0x000000010012daf9: mov %rax,%r11
0x000000010012dafc: mov -0x8(%rbp),%rdx
0x000000010012db03: mov -0x10(%rbp),%r10
0x000000010012db0a: mov -0x18(%rbp),%r9
0x000000010012db11: mov -0x20(%rbp),%r8
0x000000010012db18: mov -0x30(%rbp),%rax
0x000000010012db1f: mov -0x38(%rbp),%rcx
0x000000010012db26: mov %r11,%rbx
0x000000010012db29: mov %rax,-0x38(%rbp)
0x000000010012db30: mov %r11,%rax
0x000000010012db33: mov -0x38(%rbp),%r11
0x000000010012db3a: mov %rdx,-0x30(%rbp)
0x000000010012db41: mov %r10,-0x20(%rbp)
0x000000010012db48: mov %r9,-0x18(%rbp)
0x000000010012db4f: mov %r8,-0x10(%rbp)
0x000000010012db56: mov %r11,-0x8(%rbp)
0x000000010012db5d: mov %rbx,-0x28(%rbp)
0x000000010012db64: mov %rcx,-0x40(%rbp)
0x000000010012db6b: mov $0x10012d5c0,%r14
0x000000010012db75: rex.WB callq *%r14
0x000000010012db78: nop
0x000000010012db79: rex.W cmpb $0x0,0x7(%rax)
0x000000010012db81: je 0x10012dc5b
0x000000010012db87: mov -0x30(%rbp),%rdx
0x000000010012db8e: mov -0x20(%rbp),%r10
0x000000010012db95: mov -0x18(%rbp),%r9
0x000000010012db9c: mov -0x10(%rbp),%r8
0x000000010012dba3: mov -0x8(%rbp),%r11
0x000000010012dbaa: mov -0x28(%rbp),%rbx
0x000000010012dbb1: mov -0x40(%rbp),%rcx
0x000000010012dbb8: mov %r9,%rax
0x000000010012dbbb: mov %rbx,-0x40(%rbp)
0x000000010012dbc2: mov $0x2,%rbx
0x000000010012dbcc: mov -0x40(%rbp),%r9
0x000000010012dbd3: mov %rdx,-0x28(%rbp)
0x000000010012dbda: mov %r10,-0x8(%rbp)
0x000000010012dbe1: mov %rax,-0x10(%rbp)
0x000000010012dbe8: mov %r8,-0x18(%rbp)
0x000000010012dbef: mov %r11,-0x20(%rbp)
0x000000010012dbf6: mov %r9,-0x30(%rbp)
0x000000010012dbfd: mov %rcx,-0x38(%rbp)
0x000000010012dc04: mov $0x10012d680,%r14
0x000000010012dc0e: nop
0x000000010012dc0f: rex.WB callq *%r14
0x000000010012dc12: nop
0x000000010012dc13: mov %rax,%r12
0x000000010012dc16: mov -0x28(%rbp),%rdx
0x000000010012dc1d: mov -0x8(%rbp),%r10
0x000000010012dc24: mov -0x10(%rbp),%rax
0x000000010012dc2b: mov -0x18(%rbp),%r8
0x000000010012dc32: mov -0x20(%rbp),%r11
0x000000010012dc39: mov -0x30(%rbp),%r9
0x000000010012dc40: mov -0x38(%rbp),%rcx
0x000000010012dc47: mov %r12,%rbx
0x000000010012dc4a: mov %rbx,%rax
0x000000010012dc4d: mov %rax,%r9
0x000000010012dc50: mov %rdx,%rax
0x000000010012dc53: mov %r10,%rbx
0x000000010012dc56: jmpq 0x10012da97
0x000000010012dc5b: mov %r9,%r11
0x000000010012dc5e: mov %r11,%rdx
0x000000010012dc61: jmpq 0x10012d9ca
0x000000010012dc66: mov %rcx,%rax
0x000000010012dc69: mov %rbp,%rsp
0x000000010012dc6c: pop %rbp
0x000000010012dc6d: retq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment