Skip to content

Instantly share code, notes, and snippets.

@mpenick
Last active August 29, 2015 14:21
Show Gist options
  • Select an option

  • Save mpenick/fa7290ea6b3296a9e3b7 to your computer and use it in GitHub Desktop.

Select an option

Save mpenick/fa7290ea6b3296a9e3b7 to your computer and use it in GitHub Desktop.
; Generated with (6.1.0): clang -O0 -S -Iinclude -Isrc/unix -Isrc src/unix/async.c
.section __TEXT,__text,regular,pure_instructions
.macosx_version_min 10, 10
.globl _uv_async_init
.align 4, 0x90
_uv_async_init: ## @uv_async_init
.cfi_startproc
## BB#0:
pushq %rbp
Ltmp0:
.cfi_def_cfa_offset 16
Ltmp1:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp2:
.cfi_def_cfa_register %rbp
subq $48, %rsp
leaq _uv__async_event(%rip), %rax
movq %rdi, -16(%rbp)
movq %rsi, -24(%rbp)
movq %rdx, -32(%rbp)
movq -16(%rbp), %rdi
movq -16(%rbp), %rdx
addq $616, %rdx ## imm = 0x268
movq %rdx, %rsi
movq %rax, %rdx
callq _uv__async_start
movl %eax, -36(%rbp)
cmpl $0, -36(%rbp)
je LBB0_2
## BB#1:
movl -36(%rbp), %eax
movl %eax, -4(%rbp)
jmp LBB0_20
LBB0_2:
jmp LBB0_3
LBB0_3:
movq -16(%rbp), %rax
movq -24(%rbp), %rcx
movq %rax, 8(%rcx)
movq -24(%rbp), %rax
movl $1, 16(%rax)
movq -24(%rbp), %rax
movl $8192, 88(%rax) ## imm = 0x2000
## BB#4:
movq -16(%rbp), %rax
addq $16, %rax
movq -24(%rbp), %rcx
movq %rax, 32(%rcx)
movq -16(%rbp), %rax
movq 24(%rax), %rax
movq -24(%rbp), %rcx
movq %rax, 40(%rcx)
movq -24(%rbp), %rax
addq $32, %rax
movq -24(%rbp), %rcx
movq 40(%rcx), %rcx
movq %rax, (%rcx)
movq -24(%rbp), %rax
addq $32, %rax
movq -16(%rbp), %rcx
movq %rax, 24(%rcx)
## BB#5:
movq -24(%rbp), %rax
movq $0, 80(%rax)
## BB#6:
movq -32(%rbp), %rax
movq -24(%rbp), %rcx
movq %rax, 96(%rcx)
movq -24(%rbp), %rax
movl $0, 120(%rax)
## BB#7:
movq -16(%rbp), %rax
addq $600, %rax ## imm = 0x258
movq -24(%rbp), %rcx
movq %rax, 104(%rcx)
movq -16(%rbp), %rax
movq 608(%rax), %rax
movq -24(%rbp), %rcx
movq %rax, 112(%rcx)
movq -24(%rbp), %rax
addq $104, %rax
movq -24(%rbp), %rcx
movq 112(%rcx), %rcx
movq %rax, (%rcx)
movq -24(%rbp), %rax
addq $104, %rax
movq -16(%rbp), %rcx
movq %rax, 608(%rcx)
## BB#8:
jmp LBB0_9
LBB0_9:
movq -24(%rbp), %rax
movl 88(%rax), %ecx
andl $0, %ecx
cmpl $0, %ecx
sete %dl
xorb $1, %dl
andb $1, %dl
movzbl %dl, %ecx
movslq %ecx, %rax
cmpq $0, %rax
je LBB0_11
## BB#10:
leaq L___func__.uv_async_init(%rip), %rdi
leaq L_.str(%rip), %rsi
movl $54, %edx
leaq L_.str1(%rip), %rcx
callq ___assert_rtn
LBB0_11:
jmp LBB0_12
LBB0_12:
movq -24(%rbp), %rax
movl 88(%rax), %ecx
andl $16384, %ecx ## imm = 0x4000
cmpl $0, %ecx
je LBB0_14
## BB#13:
jmp LBB0_19
LBB0_14:
movq -24(%rbp), %rax
movl 88(%rax), %ecx
orl $16384, %ecx ## imm = 0x4000
movl %ecx, 88(%rax)
movq -24(%rbp), %rax
movl 88(%rax), %ecx
andl $8192, %ecx ## imm = 0x2000
cmpl $0, %ecx
je LBB0_18
## BB#15:
jmp LBB0_16
LBB0_16:
movq -24(%rbp), %rax
movq 8(%rax), %rax
movl 8(%rax), %ecx
addl $1, %ecx
movl %ecx, 8(%rax)
## BB#17:
jmp LBB0_18
LBB0_18:
jmp LBB0_19
LBB0_19:
movl $0, -4(%rbp)
LBB0_20:
movl -4(%rbp), %eax
addq $48, %rsp
popq %rbp
retq
.cfi_endproc
.globl _uv__async_start
.align 4, 0x90
_uv__async_start: ## @uv__async_start
.cfi_startproc
## BB#0:
pushq %rbp
Ltmp3:
.cfi_def_cfa_offset 16
Ltmp4:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp5:
.cfi_def_cfa_register %rbp
subq $64, %rsp
movq ___stack_chk_guard@GOTPCREL(%rip), %rax
movq (%rax), %rax
movq %rax, -8(%rbp)
movq %rdi, -32(%rbp)
movq %rsi, -40(%rbp)
movq %rdx, -48(%rbp)
movq -40(%rbp), %rax
cmpl $-1, 56(%rax)
je LBB1_2
## BB#1:
movl $0, -20(%rbp)
jmp LBB1_10
LBB1_2:
callq _uv__async_eventfd
movl %eax, -52(%rbp)
cmpl $0, -52(%rbp)
jl LBB1_4
## BB#3:
movl -52(%rbp), %eax
movl %eax, -16(%rbp)
movl $-1, -12(%rbp)
jmp LBB1_7
LBB1_4:
cmpl $-78, -52(%rbp)
jne LBB1_6
## BB#5:
movl $1, %esi
leaq -16(%rbp), %rdi
callq _uv__make_pipe
movl %eax, -52(%rbp)
LBB1_6:
jmp LBB1_7
LBB1_7:
cmpl $0, -52(%rbp)
jge LBB1_9
## BB#8:
movl -52(%rbp), %eax
movl %eax, -20(%rbp)
jmp LBB1_10
LBB1_9:
leaq _uv__async_io(%rip), %rsi
movq -40(%rbp), %rax
addq $8, %rax
movl -16(%rbp), %edx
movq %rax, %rdi
callq _uv__io_init
movl $1, %edx
movq -32(%rbp), %rdi
movq -40(%rbp), %rax
addq $8, %rax
movq %rax, %rsi
callq _uv__io_start
movl -12(%rbp), %edx
movq -40(%rbp), %rax
movl %edx, 72(%rax)
movq -48(%rbp), %rax
movq -40(%rbp), %rsi
movq %rax, (%rsi)
movl $0, -20(%rbp)
LBB1_10:
movq ___stack_chk_guard@GOTPCREL(%rip), %rax
movl -20(%rbp), %ecx
movq (%rax), %rax
cmpq -8(%rbp), %rax
movl %ecx, -56(%rbp) ## 4-byte Spill
jne LBB1_12
## BB#11: ## %SP_return
movl -56(%rbp), %eax ## 4-byte Reload
addq $64, %rsp
popq %rbp
retq
LBB1_12: ## %CallStackCheckFailBlk
callq ___stack_chk_fail
.cfi_endproc
.align 4, 0x90
_uv__async_event: ## @uv__async_event
.cfi_startproc
## BB#0:
pushq %rbp
Ltmp6:
.cfi_def_cfa_offset 16
Ltmp7:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp8:
.cfi_def_cfa_register %rbp
subq $48, %rsp
movq %rdi, -8(%rbp)
movq %rsi, -16(%rbp)
movl %edx, -20(%rbp)
movq -8(%rbp), %rsi
movq 600(%rsi), %rsi
movq %rsi, -32(%rbp)
LBB2_1: ## =>This Inner Loop Header: Depth=1
movq -32(%rbp), %rax
movq -8(%rbp), %rcx
addq $600, %rcx ## imm = 0x258
cmpq %rcx, %rax
je LBB2_8
## BB#2: ## in Loop: Header=BB2_1 Depth=1
movl $1, %esi
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %ecx
addq $104, %rcx
movq -32(%rbp), %rdi
subq %rcx, %rdi
movq %rdi, -40(%rbp)
movq -40(%rbp), %rcx
addq $120, %rcx
movq %rcx, %rdi
callq _cmpxchgi
cmpl $0, %eax
jne LBB2_4
## BB#3: ## in Loop: Header=BB2_1 Depth=1
jmp LBB2_7
LBB2_4: ## in Loop: Header=BB2_1 Depth=1
movq -40(%rbp), %rax
cmpq $0, 96(%rax)
jne LBB2_6
## BB#5: ## in Loop: Header=BB2_1 Depth=1
jmp LBB2_7
LBB2_6: ## in Loop: Header=BB2_1 Depth=1
movq -40(%rbp), %rax
movq 96(%rax), %rax
movq -40(%rbp), %rdi
callq *%rax
LBB2_7: ## in Loop: Header=BB2_1 Depth=1
movq -32(%rbp), %rax
movq (%rax), %rax
movq %rax, -32(%rbp)
jmp LBB2_1
LBB2_8:
addq $48, %rsp
popq %rbp
retq
.cfi_endproc
.globl _uv_async_send
.align 4, 0x90
_uv_async_send: ## @uv_async_send
.cfi_startproc
## BB#0:
pushq %rbp
Ltmp9:
.cfi_def_cfa_offset 16
Ltmp10:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp11:
.cfi_def_cfa_register %rbp
subq $16, %rsp
xorl %esi, %esi
movl $1, %edx
movq %rdi, -8(%rbp)
movq -8(%rbp), %rdi
addq $120, %rdi
callq _cmpxchgi
cmpl $0, %eax
jne LBB3_2
## BB#1:
movq -8(%rbp), %rax
movq 8(%rax), %rax
addq $616, %rax ## imm = 0x268
movq %rax, %rdi
callq _uv__async_send
LBB3_2:
xorl %eax, %eax
addq $16, %rsp
popq %rbp
retq
.cfi_endproc
.align 4, 0x90
_cmpxchgi: ## @cmpxchgi
.cfi_startproc
## BB#0:
pushq %rbp
Ltmp12:
.cfi_def_cfa_offset 16
Ltmp13:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp14:
.cfi_def_cfa_register %rbp
movq %rdi, -8(%rbp)
movl %esi, -12(%rbp)
movl %edx, -16(%rbp)
movq -8(%rbp), %rdi
movl -12(%rbp), %eax
lock
cmpxchgl %edx, (%rdi)
sete %cl
movb %cl, -17(%rbp) ## 1-byte Spill
popq %rbp
retq
.cfi_endproc
.globl _uv__async_send
.align 4, 0x90
_uv__async_send: ## @uv__async_send
.cfi_startproc
## BB#0:
pushq %rbp
Ltmp15:
.cfi_def_cfa_offset 16
Ltmp16:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp17:
.cfi_def_cfa_register %rbp
subq $48, %rsp
leaq L_.str2(%rip), %rax
movq %rdi, -8(%rbp)
movq %rax, -16(%rbp)
movq $1, -24(%rbp)
movq -8(%rbp), %rax
movl 72(%rax), %ecx
movl %ecx, -28(%rbp)
LBB5_1: ## =>This Inner Loop Header: Depth=1
movl -28(%rbp), %edi
movq -16(%rbp), %rsi
movq -24(%rbp), %rdx
callq _write
movl %eax, %edi
movl %edi, -32(%rbp)
## BB#2: ## in Loop: Header=BB5_1 Depth=1
xorl %eax, %eax
movb %al, %cl
cmpl $-1, -32(%rbp)
movb %cl, -33(%rbp) ## 1-byte Spill
jne LBB5_4
## BB#3: ## in Loop: Header=BB5_1 Depth=1
callq ___error
cmpl $4, (%rax)
sete %cl
movb %cl, -33(%rbp) ## 1-byte Spill
LBB5_4: ## in Loop: Header=BB5_1 Depth=1
movb -33(%rbp), %al ## 1-byte Reload
testb $1, %al
jne LBB5_1
## BB#5:
movslq -32(%rbp), %rax
cmpq -24(%rbp), %rax
jne LBB5_7
## BB#6:
jmp LBB5_13
LBB5_7:
cmpl $-1, -32(%rbp)
jne LBB5_12
## BB#8:
callq ___error
cmpl $35, (%rax)
je LBB5_10
## BB#9:
callq ___error
cmpl $35, (%rax)
jne LBB5_11
LBB5_10:
jmp LBB5_13
LBB5_11:
jmp LBB5_12
LBB5_12:
callq _abort
LBB5_13:
addq $48, %rsp
popq %rbp
retq
.cfi_endproc
.globl _uv__async_close
.align 4, 0x90
_uv__async_close: ## @uv__async_close
.cfi_startproc
## BB#0:
pushq %rbp
Ltmp18:
.cfi_def_cfa_offset 16
Ltmp19:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp20:
.cfi_def_cfa_register %rbp
subq $16, %rsp
movq %rdi, -8(%rbp)
## BB#1:
movq -8(%rbp), %rax
movq 104(%rax), %rax
movq -8(%rbp), %rcx
movq 112(%rcx), %rcx
movq %rax, (%rcx)
movq -8(%rbp), %rax
movq 112(%rax), %rax
movq -8(%rbp), %rcx
movq 104(%rcx), %rcx
movq %rax, 8(%rcx)
## BB#2:
jmp LBB6_3
LBB6_3:
movq -8(%rbp), %rax
movl 88(%rax), %ecx
andl $0, %ecx
cmpl $0, %ecx
sete %dl
xorb $1, %dl
andb $1, %dl
movzbl %dl, %ecx
movslq %ecx, %rax
cmpq $0, %rax
je LBB6_5
## BB#4:
leaq L___func__.uv__async_close(%rip), %rdi
leaq L_.str(%rip), %rsi
movl $70, %edx
leaq L_.str1(%rip), %rcx
callq ___assert_rtn
LBB6_5:
jmp LBB6_6
LBB6_6:
movq -8(%rbp), %rax
movl 88(%rax), %ecx
andl $16384, %ecx ## imm = 0x4000
cmpl $0, %ecx
jne LBB6_8
## BB#7:
jmp LBB6_13
LBB6_8:
movq -8(%rbp), %rax
movl 88(%rax), %ecx
andl $4294950911, %ecx ## imm = 0xFFFFBFFF
movl %ecx, 88(%rax)
movq -8(%rbp), %rax
movl 88(%rax), %ecx
andl $8192, %ecx ## imm = 0x2000
cmpl $0, %ecx
je LBB6_12
## BB#9:
jmp LBB6_10
LBB6_10:
movq -8(%rbp), %rax
movq 8(%rax), %rax
movl 8(%rax), %ecx
addl $4294967295, %ecx ## imm = 0xFFFFFFFF
movl %ecx, 8(%rax)
## BB#11:
jmp LBB6_12
LBB6_12:
jmp LBB6_13
LBB6_13:
addq $16, %rsp
popq %rbp
retq
.cfi_endproc
.globl _uv__async_init
.align 4, 0x90
_uv__async_init: ## @uv__async_init
.cfi_startproc
## BB#0:
pushq %rbp
Ltmp21:
.cfi_def_cfa_offset 16
Ltmp22:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp23:
.cfi_def_cfa_register %rbp
movq %rdi, -8(%rbp)
movq -8(%rbp), %rdi
movl $-1, 56(%rdi)
movq -8(%rbp), %rdi
movl $-1, 72(%rdi)
popq %rbp
retq
.cfi_endproc
.align 4, 0x90
_uv__async_eventfd: ## @uv__async_eventfd
.cfi_startproc
## BB#0:
pushq %rbp
Ltmp24:
.cfi_def_cfa_offset 16
Ltmp25:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp26:
.cfi_def_cfa_register %rbp
movl $4294967218, %eax ## imm = 0xFFFFFFB2
popq %rbp
retq
.cfi_endproc
.align 4, 0x90
_uv__async_io: ## @uv__async_io
.cfi_startproc
## BB#0:
pushq %rbp
Ltmp27:
.cfi_def_cfa_offset 16
Ltmp28:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp29:
.cfi_def_cfa_register %rbp
subq $1088, %rsp ## imm = 0x440
movq ___stack_chk_guard@GOTPCREL(%rip), %rax
movq (%rax), %rax
movq %rax, -8(%rbp)
movq %rdi, -1048(%rbp)
movq %rsi, -1056(%rbp)
movl %edx, -1060(%rbp)
movl $0, -1076(%rbp)
LBB9_1: ## =>This Inner Loop Header: Depth=1
movl $1024, %eax ## imm = 0x400
movl %eax, %edx
leaq -1040(%rbp), %rsi
movq -1056(%rbp), %rcx
movl 48(%rcx), %edi
callq _read
movq %rax, -1088(%rbp)
cmpq $0, -1088(%rbp)
jle LBB9_3
## BB#2: ## in Loop: Header=BB9_1 Depth=1
movq -1088(%rbp), %rax
movl -1076(%rbp), %ecx
movl %ecx, %edx
addq %rax, %rdx
movl %edx, %ecx
movl %ecx, -1076(%rbp)
LBB9_3: ## in Loop: Header=BB9_1 Depth=1
cmpq $1024, -1088(%rbp) ## imm = 0x400
jne LBB9_5
## BB#4: ## in Loop: Header=BB9_1 Depth=1
jmp LBB9_1
LBB9_5: ## in Loop: Header=BB9_1 Depth=1
cmpq $-1, -1088(%rbp)
je LBB9_7
## BB#6:
jmp LBB9_13
LBB9_7: ## in Loop: Header=BB9_1 Depth=1
callq ___error
cmpl $35, (%rax)
je LBB9_9
## BB#8: ## in Loop: Header=BB9_1 Depth=1
callq ___error
cmpl $35, (%rax)
jne LBB9_10
LBB9_9:
jmp LBB9_13
LBB9_10: ## in Loop: Header=BB9_1 Depth=1
callq ___error
cmpl $4, (%rax)
jne LBB9_12
## BB#11: ## in Loop: Header=BB9_1 Depth=1
jmp LBB9_1
LBB9_12:
callq _abort
LBB9_13:
movq -1056(%rbp), %rax
addq $-8, %rax
movq %rax, -1072(%rbp)
movq -1072(%rbp), %rax
movq (%rax), %rax
movq -1048(%rbp), %rdi
movq -1072(%rbp), %rsi
movl -1076(%rbp), %edx
callq *%rax
movq ___stack_chk_guard@GOTPCREL(%rip), %rax
movq (%rax), %rax
cmpq -8(%rbp), %rax
jne LBB9_15
## BB#14: ## %SP_return
addq $1088, %rsp ## imm = 0x440
popq %rbp
retq
LBB9_15: ## %CallStackCheckFailBlk
callq ___stack_chk_fail
.cfi_endproc
.globl _uv__async_stop
.align 4, 0x90
_uv__async_stop: ## @uv__async_stop
.cfi_startproc
## BB#0:
pushq %rbp
Ltmp30:
.cfi_def_cfa_offset 16
Ltmp31:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp32:
.cfi_def_cfa_register %rbp
subq $32, %rsp
movq %rdi, -8(%rbp)
movq %rsi, -16(%rbp)
movq -16(%rbp), %rsi
cmpl $-1, 56(%rsi)
jne LBB10_2
## BB#1:
jmp LBB10_7
LBB10_2:
movq -16(%rbp), %rax
cmpl $-1, 72(%rax)
je LBB10_6
## BB#3:
movq -16(%rbp), %rax
movl 72(%rax), %ecx
movq -16(%rbp), %rax
cmpl 56(%rax), %ecx
je LBB10_5
## BB#4:
movq -16(%rbp), %rax
movl 72(%rax), %edi
callq _uv__close
movl %eax, -20(%rbp) ## 4-byte Spill
LBB10_5:
movq -16(%rbp), %rax
movl $-1, 72(%rax)
LBB10_6:
movl $1, %edx
movq -8(%rbp), %rdi
movq -16(%rbp), %rax
addq $8, %rax
movq %rax, %rsi
callq _uv__io_stop
movq -16(%rbp), %rax
movl 56(%rax), %edi
callq _uv__close
movq -16(%rbp), %rsi
movl $-1, 56(%rsi)
movl %eax, -24(%rbp) ## 4-byte Spill
LBB10_7:
addq $32, %rsp
popq %rbp
retq
.cfi_endproc
.section __TEXT,__cstring,cstring_literals
L___func__.uv_async_init: ## @__func__.uv_async_init
.asciz "uv_async_init"
L_.str: ## @.str
.asciz "src/unix/async.c"
L_.str1: ## @.str1
.asciz "((handle)->flags & UV__HANDLE_CLOSING) == 0"
L___func__.uv__async_close: ## @__func__.uv__async_close
.asciz "uv__async_close"
L_.str2: ## @.str2
.space 1
.subsections_via_symbols
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment