Skip to content

Instantly share code, notes, and snippets.

@willkill07
Created December 7, 2016 03:07
Show Gist options
  • Save willkill07/84306c25d3b89502de631ab6e101c9d2 to your computer and use it in GitHub Desktop.
Save willkill07/84306c25d3b89502de631ab6e101c9d2 to your computer and use it in GitHub Desktop.
Day 6 x86-64 Assembly generated
.file "Day06.c"
.text
.p2align 4,,15
.globl file_size
.type file_size, @function
file_size:
.LFB4874:
.cfi_startproc
subq $152, %rsp
.cfi_def_cfa_offset 160
movl %edi, %esi
movl $1, %edi
movq %rsp, %rdx
call __fxstat
movl 48(%rsp), %eax
addq $152, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE4874:
.size file_size, .-file_size
.section .rodata.str1.1,"aMS",@progbits,1
.LC2:
.string "Part %d: %.8s\n"
.section .text.startup,"ax",@progbits
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB4875:
.cfi_startproc
leaq 8(%rsp), %r10
.cfi_def_cfa 10, 0
andq $-32, %rsp
xorl %eax, %eax
pushq -8(%r10)
pushq %rbp
.cfi_escape 0x10,0x6,0x2,0x76,0
movq %rsp, %rbp
pushq %r12
pushq %r10
.cfi_escape 0xf,0x3,0x76,0x70,0x6
.cfi_escape 0x10,0xc,0x2,0x76,0x78
pushq %rbx
subq $280, %rsp
.cfi_escape 0x10,0x3,0x2,0x76,0x68
movq 8(%rsi), %rdi
xorl %esi, %esi
call open
leaq -208(%rbp), %rdx
movl $1, %edi
movl %eax, %esi
movl %eax, %r12d
call __fxstat
xorl %r9d, %r9d
xorl %edi, %edi
movl %r12d, %r8d
movq -160(%rbp), %rbx
movl $2, %ecx
movl $1, %edx
movslq %ebx, %rsi
call mmap
testl %ebx, %ebx
je .L14
imull $954437177, %ebx, %ebx
vpxor %xmm1, %xmm1, %xmm1
vmovdqa .LC0(%rip), %ymm3
vmovdqa .LC1(%rip), %ymm2
leal -1(%rbx), %edx
leaq 9(%rdx,%rdx,8), %rdx
addq %rax, %rdx
.p2align 4,,10
.p2align 3
.L5:
vpmovsxbd (%rax), %ymm0
addq $9, %rax
vpsubd %ymm3, %ymm0, %ymm0
vpsllvd %ymm0, %ymm2, %ymm0
vpaddd %ymm0, %ymm1, %ymm1
cmpq %rdx, %rax
jne .L5
.L4:
vmovd %xmm1, %edx
movb $0, -296(%rbp)
addl $33554431, %edx
movb $0, -287(%rbp)
movslq %edx, %rax
imulq $-2147483615, %rax, %rax
shrq $32, %rax
addl %edx, %eax
sarl $31, %edx
sarl $25, %eax
subl %edx, %eax
movl %eax, %edx
sall $26, %edx
subl %eax, %edx
vmovd %edx, %xmm0
movabsq $6872316419617283935, %rdx
vpbroadcastd %xmm0, %ymm0
movq %rdx, -304(%rbp)
vpsubd %ymm0, %ymm1, %ymm1
movq %rdx, -295(%rbp)
vpsrld $31, %ymm1, %ymm0
vpabsd %ymm1, %ymm1
vpsubd %ymm0, %ymm2, %ymm2
vmovd %xmm1, %eax
vmovdqa %ymm0, -240(%rbp)
vmovdqa %ymm2, -208(%rbp)
vmovdqa %ymm1, -272(%rbp)
testl %eax, %eax
je .L6
xorl %edx, %edx
movl $-128, %ecx
lzcntl %eax, %edx
leal -1(%rdx), %esi
movslq -240(%rbp), %rdx
movl %ecx, %edi
subl %esi, %edi
leaq (%rdx,%rdx,8), %rdx
movb %dil, -304(%rbp,%rdx)
movl $-2147483648, %edx
shrx %esi, %edx, %edx
subl %eax, %edx
movl %edx, %eax
lzcntl %edx, %eax
movslq -208(%rbp), %rdx
subl %eax, %ecx
leaq (%rdx,%rdx,8), %rdx
movb %cl, -304(%rbp,%rdx)
.L6:
movl -268(%rbp), %edx
testl %edx, %edx
je .L7
xorl %eax, %eax
movl $-128, %ecx
lzcntl %edx, %eax
leal -1(%rax), %esi
movslq -236(%rbp), %rax
movl %ecx, %edi
subl %esi, %edi
leaq (%rax,%rax,8), %rax
movb %dil, -303(%rbp,%rax)
movl $-2147483648, %eax
shrx %esi, %eax, %eax
subl %edx, %eax
movslq -204(%rbp), %rdx
lzcntl %eax, %eax
subl %eax, %ecx
leaq (%rdx,%rdx,8), %rdx
movb %cl, -303(%rbp,%rdx)
.L7:
movl -264(%rbp), %edx
testl %edx, %edx
je .L8
xorl %eax, %eax
movl $-128, %ecx
lzcntl %edx, %eax
leal -1(%rax), %esi
movslq -232(%rbp), %rax
movl %ecx, %edi
subl %esi, %edi
leaq (%rax,%rax,8), %rax
movb %dil, -302(%rbp,%rax)
movl $-2147483648, %eax
shrx %esi, %eax, %eax
subl %edx, %eax
movslq -200(%rbp), %rdx
lzcntl %eax, %eax
subl %eax, %ecx
leaq (%rdx,%rdx,8), %rdx
movb %cl, -302(%rbp,%rdx)
.L8:
movl -260(%rbp), %edx
testl %edx, %edx
je .L9
xorl %eax, %eax
movl $-128, %ecx
lzcntl %edx, %eax
leal -1(%rax), %esi
movslq -228(%rbp), %rax
movl %ecx, %edi
subl %esi, %edi
leaq (%rax,%rax,8), %rax
movb %dil, -301(%rbp,%rax)
movl $-2147483648, %eax
shrx %esi, %eax, %eax
subl %edx, %eax
movslq -196(%rbp), %rdx
lzcntl %eax, %eax
subl %eax, %ecx
leaq (%rdx,%rdx,8), %rdx
movb %cl, -301(%rbp,%rdx)
.L9:
movl -256(%rbp), %edx
testl %edx, %edx
je .L10
xorl %eax, %eax
movl $-128, %ecx
lzcntl %edx, %eax
leal -1(%rax), %esi
movslq -224(%rbp), %rax
movl %ecx, %edi
subl %esi, %edi
leaq (%rax,%rax,8), %rax
movb %dil, -300(%rbp,%rax)
movl $-2147483648, %eax
shrx %esi, %eax, %eax
subl %edx, %eax
movslq -192(%rbp), %rdx
lzcntl %eax, %eax
subl %eax, %ecx
leaq (%rdx,%rdx,8), %rdx
movb %cl, -300(%rbp,%rdx)
.L10:
movl -252(%rbp), %edx
testl %edx, %edx
je .L11
xorl %eax, %eax
movl $-128, %ecx
lzcntl %edx, %eax
leal -1(%rax), %esi
movslq -220(%rbp), %rax
movl %ecx, %edi
subl %esi, %edi
leaq (%rax,%rax,8), %rax
movb %dil, -299(%rbp,%rax)
movl $-2147483648, %eax
shrx %esi, %eax, %eax
subl %edx, %eax
movslq -188(%rbp), %rdx
lzcntl %eax, %eax
subl %eax, %ecx
leaq (%rdx,%rdx,8), %rdx
movb %cl, -299(%rbp,%rdx)
.L11:
movl -248(%rbp), %edx
testl %edx, %edx
je .L12
xorl %eax, %eax
movl $-128, %ecx
lzcntl %edx, %eax
leal -1(%rax), %esi
movslq -216(%rbp), %rax
movl %ecx, %edi
subl %esi, %edi
leaq (%rax,%rax,8), %rax
movb %dil, -298(%rbp,%rax)
movl $-2147483648, %eax
shrx %esi, %eax, %eax
subl %edx, %eax
movslq -184(%rbp), %rdx
lzcntl %eax, %eax
subl %eax, %ecx
leaq (%rdx,%rdx,8), %rdx
movb %cl, -298(%rbp,%rdx)
.L12:
movl -244(%rbp), %edx
testl %edx, %edx
je .L13
xorl %eax, %eax
movl $-128, %ecx
lzcntl %edx, %eax
leal -1(%rax), %esi
movslq -212(%rbp), %rax
movl %ecx, %edi
subl %esi, %edi
leaq (%rax,%rax,8), %rax
movb %dil, -297(%rbp,%rax)
movl $-2147483648, %eax
shrx %esi, %eax, %eax
subl %edx, %eax
movslq -180(%rbp), %rdx
lzcntl %eax, %eax
subl %eax, %ecx
leaq (%rdx,%rdx,8), %rdx
movb %cl, -297(%rbp,%rdx)
.L13:
leaq -304(%rbp), %rdx
movl $1, %esi
movl $.LC2, %edi
xorl %eax, %eax
vzeroupper
call printf
leaq -304(%rbp), %rax
movl $2, %esi
leaq 9(%rax), %rdx
movl $.LC2, %edi
xorl %eax, %eax
call printf
addq $280, %rsp
xorl %eax, %eax
popq %rbx
popq %r10
.cfi_remember_state
.cfi_def_cfa 10, 0
popq %r12
popq %rbp
leaq -8(%r10), %rsp
.cfi_def_cfa 7, 8
ret
.L14:
.cfi_restore_state
vmovdqa .LC1(%rip), %ymm2
vpxor %xmm1, %xmm1, %xmm1
jmp .L4
.cfi_endproc
.LFE4875:
.size main, .-main
.section .rodata.cst32,"aM",@progbits,32
.align 32
.LC0:
.long 97
.long 97
.long 97
.long 97
.long 97
.long 97
.long 97
.long 97
.align 32
.LC1:
.long 1
.long 1
.long 1
.long 1
.long 1
.long 1
.long 1
.long 1
.ident "GCC: (GNU) 6.2.1 20160830"
.section .note.GNU-stack,"",@progbits
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment