Skip to content

Instantly share code, notes, and snippets.

@jacobsa

jacobsa/bar.s Secret

Created August 29, 2023 01:19
Show Gist options
  • Save jacobsa/a0fc8b5a303853a1fceba85639a6d6c4 to your computer and use it in GitHub Desktop.
Save jacobsa/a0fc8b5a303853a1fceba85639a6d6c4 to your computer and use it in GitHub Desktop.
.text
.p2align 4, 0x90 # -- Begin function _Z6FooBarv.resume
.type _Z6FooBarv.resume,@function
_Z6FooBarv.resume: # @_Z6FooBarv.resume
.Lfunc_begin1:
.cfi_startproc
.cfi_personality 155, DW.ref.__gxx_personality_v0
.cfi_lsda 27, .Lexception1
# %bb.0:
push rbp
.cfi_def_cfa_offset 16
.cfi_offset rbp, -16
mov rbp, rsp
.cfi_def_cfa_register rbp
sub rsp, 256
mov qword ptr [rbp - 152], rdi # 8-byte Spill
mov rax, rdi
add rax, 18
mov qword ptr [rbp - 144], rax # 8-byte Spill
mov rax, rdi
add rax, 24
mov qword ptr [rbp - 136], rax # 8-byte Spill
mov rax, rdi
add rax, 32
mov qword ptr [rbp - 128], rax # 8-byte Spill
mov rax, rdi
add rax, 40
mov qword ptr [rbp - 120], rax # 8-byte Spill
mov rax, rdi
add rax, 48
mov qword ptr [rbp - 112], rax # 8-byte Spill
mov rax, rdi
add rax, 56
mov qword ptr [rbp - 104], rax # 8-byte Spill
mov rax, rdi
add rax, 64
mov qword ptr [rbp - 96], rax # 8-byte Spill
mov rax, rdi
add rax, 72
mov qword ptr [rbp - 88], rax # 8-byte Spill
mov rax, rdi
add rax, 19
mov qword ptr [rbp - 80], rax # 8-byte Spill
add rdi, 16
mov qword ptr [rbp - 72], rdi # 8-byte Spill
jmp .LBB19_70
.LBB19_1:
jmp .LBB19_2
.LBB19_2:
jmp .LBB19_3
.LBB19_3:
jmp .LBB19_4
.LBB19_4:
mov rdi, qword ptr [rbp - 144] # 8-byte Reload
call _ZNKSt7__n486114suspend_always12await_resumeEv
xor eax, eax
mov dword ptr [rbp - 156], eax # 4-byte Spill
# %bb.5:
mov eax, dword ptr [rbp - 156] # 4-byte Reload
mov dword ptr [rbp - 160], eax # 4-byte Spill
# %bb.6:
mov eax, dword ptr [rbp - 160] # 4-byte Reload
cmp eax, 0
mov dword ptr [rbp - 164], eax # 4-byte Spill
je .LBB19_8
# %bb.7:
mov eax, dword ptr [rbp - 164] # 4-byte Reload
mov dword ptr [rbp - 168], eax # 4-byte Spill
jmp .LBB19_58
.LBB19_8:
mov rax, qword ptr [rbp - 120] # 8-byte Reload
mov rcx, qword ptr [rbp - 128] # 8-byte Reload
mov rdx, qword ptr [rbp - 136] # 8-byte Reload
lea rsi, [rip + g_array]
mov qword ptr [rdx], rsi
lea rdx, [rip + g_array]
mov qword ptr [rcx], rdx
lea rcx, [rip + g_array]
add rcx, 128
mov qword ptr [rax], rcx
.LBB19_9:
mov rcx, qword ptr [rbp - 120] # 8-byte Reload
mov rax, qword ptr [rbp - 128] # 8-byte Reload
mov rax, qword ptr [rax]
cmp rax, qword ptr [rcx]
jne .LBB19_12
# %bb.10:
mov eax, 4
mov dword ptr [rbp - 172], eax # 4-byte Spill
jmp .LBB19_11
.LBB19_11:
mov eax, dword ptr [rbp - 172] # 4-byte Reload
mov dword ptr [rbp - 176], eax # 4-byte Spill
jmp .LBB19_46
.LBB19_12:
mov rdi, qword ptr [rbp - 72] # 8-byte Reload
mov rax, qword ptr [rbp - 112] # 8-byte Reload
mov rcx, qword ptr [rbp - 128] # 8-byte Reload
mov rcx, qword ptr [rcx]
mov qword ptr [rax], rcx
mov rsi, qword ptr [rax]
call _ZN6MyTask12promise_type15await_transformERKi
mov qword ptr [rbp - 184], rax # 8-byte Spill
# %bb.13:
mov rdi, qword ptr [rbp - 104] # 8-byte Reload
mov rax, qword ptr [rbp - 184] # 8-byte Reload
mov qword ptr [rdi], rax
call _ZN7Awaiter11await_readyEv
mov byte ptr [rbp - 185], al # 1-byte Spill
# %bb.14:
mov al, byte ptr [rbp - 185] # 1-byte Reload
test al, 1
jne .LBB19_24
jmp .LBB19_15
.LBB19_15:
mov rax, qword ptr [rbp - 152] # 8-byte Reload
mov byte ptr [rax + 17], 1
# %bb.16:
mov rdi, qword ptr [rbp - 152] # 8-byte Reload
call _ZNSt7__n486116coroutine_handleIN6MyTask12promise_typeEE12from_addressEPv
mov rdi, qword ptr [rbp - 88] # 8-byte Reload
mov qword ptr [rdi], rax
call _ZNKSt7__n486116coroutine_handleIN6MyTask12promise_typeEEcvNS0_IvEEEv
mov rdi, qword ptr [rbp - 104] # 8-byte Reload
mov qword ptr [rbp - 24], rax
mov rsi, qword ptr [rbp - 24]
.Ltmp15:
call _ZN7Awaiter13await_suspendENSt7__n486116coroutine_handleIvEE@PLT
.Ltmp16:
mov qword ptr [rbp - 200], rax # 8-byte Spill
jmp .LBB19_17
.LBB19_17:
mov rdi, qword ptr [rbp - 96] # 8-byte Reload
mov rax, qword ptr [rbp - 200] # 8-byte Reload
mov qword ptr [rdi], rax
call _ZNKSt7__n486116coroutine_handleIvE7addressEv
mov rdi, rax
mov rax, qword ptr [rax]
add rsp, 256
pop rbp
.cfi_def_cfa rsp, 8
jmp rax # TAILCALL
.LBB19_18:
.cfi_def_cfa rbp, 16
jmp .LBB19_19
.LBB19_19:
jmp .LBB19_20
.LBB19_20:
mov al, 1
test al, al
jne .LBB19_24
jmp .LBB19_73
.LBB19_73:
mov al, 1
test al, al
jne .LBB19_62
jmp .LBB19_21
.LBB19_21:
mov eax, 2
mov dword ptr [rbp - 204], eax # 4-byte Spill
jmp .LBB19_22
.LBB19_22:
mov eax, dword ptr [rbp - 204] # 4-byte Reload
mov dword ptr [rbp - 208], eax # 4-byte Spill
jmp .LBB19_27
.LBB19_23:
.Ltmp17:
mov rcx, rax
mov eax, edx
mov qword ptr [rbp - 56], rcx
mov dword ptr [rbp - 44], eax
jmp .LBB19_35
.LBB19_24:
mov rdi, qword ptr [rbp - 104] # 8-byte Reload
call _ZN7Awaiter12await_resumeEv
# %bb.25:
xor eax, eax
mov dword ptr [rbp - 212], eax # 4-byte Spill
jmp .LBB19_26
.LBB19_26:
mov eax, dword ptr [rbp - 212] # 4-byte Reload
mov dword ptr [rbp - 208], eax # 4-byte Spill
.LBB19_27:
mov eax, dword ptr [rbp - 208] # 4-byte Reload
cmp eax, 0
mov dword ptr [rbp - 216], eax # 4-byte Spill
je .LBB19_29
# %bb.28:
mov eax, dword ptr [rbp - 216] # 4-byte Reload
mov dword ptr [rbp - 220], eax # 4-byte Spill
jmp .LBB19_31
.LBB19_29:
xor eax, eax
mov dword ptr [rbp - 224], eax # 4-byte Spill
jmp .LBB19_30
.LBB19_30:
mov eax, dword ptr [rbp - 224] # 4-byte Reload
mov dword ptr [rbp - 220], eax # 4-byte Spill
.LBB19_31:
mov eax, dword ptr [rbp - 220] # 4-byte Reload
cmp eax, 0
mov dword ptr [rbp - 228], eax # 4-byte Spill
je .LBB19_33
# %bb.32:
mov eax, dword ptr [rbp - 228] # 4-byte Reload
mov dword ptr [rbp - 176], eax # 4-byte Spill
jmp .LBB19_46
.LBB19_33:
jmp .LBB19_34
.LBB19_34:
mov rax, qword ptr [rbp - 128] # 8-byte Reload
mov rcx, qword ptr [rax]
add rcx, 4
mov qword ptr [rax], rcx
jmp .LBB19_9
.LBB19_35:
jmp .LBB19_36
.LBB19_36:
mov rdi, qword ptr [rbp - 56]
call __cxa_begin_catch@PLT
mov rdi, qword ptr [rbp - 72] # 8-byte Reload
.Ltmp18:
call _ZN6MyTask12promise_type19unhandled_exceptionEv@PLT
.Ltmp19:
jmp .LBB19_37
.LBB19_37:
.Ltmp24:
call __cxa_end_catch@PLT
.Ltmp25:
jmp .LBB19_38
.LBB19_38:
jmp .LBB19_39
.LBB19_39:
jmp .LBB19_40
.LBB19_40:
mov rdi, qword ptr [rbp - 72] # 8-byte Reload
call _ZN6MyTask12promise_type13final_suspendEv
mov rdi, qword ptr [rbp - 80] # 8-byte Reload
call _ZNKSt7__n486114suspend_always11await_readyEv
test al, 1
jne .LBB19_52
# %bb.41:
mov rax, qword ptr [rbp - 152] # 8-byte Reload
mov qword ptr [rax], 0
mov byte ptr [rax + 17], 2
# %bb.42:
mov rdi, qword ptr [rbp - 152] # 8-byte Reload
call _ZNSt7__n486116coroutine_handleIN6MyTask12promise_typeEE12from_addressEPv
mov qword ptr [rbp - 8], rax
lea rdi, [rbp - 8]
call _ZNKSt7__n486116coroutine_handleIN6MyTask12promise_typeEEcvNS0_IvEEEv
mov rdi, qword ptr [rbp - 80] # 8-byte Reload
mov qword ptr [rbp - 16], rax
mov rsi, qword ptr [rbp - 16]
call _ZNKSt7__n486114suspend_always13await_suspendENS_16coroutine_handleIvEE
# %bb.43:
jmp .LBB19_44
.LBB19_44:
jmp .LBB19_45
.LBB19_45:
jmp .LBB19_62
.LBB19_46:
mov eax, dword ptr [rbp - 176] # 4-byte Reload
cmp eax, 4
mov dword ptr [rbp - 232], eax # 4-byte Spill
je .LBB19_48
# %bb.47:
mov eax, dword ptr [rbp - 232] # 4-byte Reload
mov dword ptr [rbp - 168], eax # 4-byte Spill
jmp .LBB19_58
.LBB19_48:
jmp .LBB19_39
.LBB19_49:
.Ltmp20:
mov rcx, rax
mov eax, edx
mov qword ptr [rbp - 56], rcx
mov dword ptr [rbp - 44], eax
.Ltmp21:
call __cxa_end_catch@PLT
.Ltmp22:
jmp .LBB19_51
.LBB19_50:
.Ltmp26:
mov rcx, rax
mov eax, edx
mov qword ptr [rbp - 56], rcx
mov dword ptr [rbp - 44], eax
jmp .LBB19_64
.LBB19_51:
jmp .LBB19_64
.LBB19_52:
mov rdi, qword ptr [rbp - 80] # 8-byte Reload
call _ZNKSt7__n486114suspend_always12await_resumeEv
xor eax, eax
mov dword ptr [rbp - 236], eax # 4-byte Spill
# %bb.53:
mov eax, dword ptr [rbp - 236] # 4-byte Reload
mov dword ptr [rbp - 240], eax # 4-byte Spill
# %bb.54:
mov eax, dword ptr [rbp - 240] # 4-byte Reload
cmp eax, 0
mov dword ptr [rbp - 244], eax # 4-byte Spill
je .LBB19_56
# %bb.55:
mov eax, dword ptr [rbp - 244] # 4-byte Reload
mov dword ptr [rbp - 168], eax # 4-byte Spill
jmp .LBB19_58
.LBB19_56:
xor eax, eax
mov dword ptr [rbp - 248], eax # 4-byte Spill
jmp .LBB19_57
.LBB19_57:
mov eax, dword ptr [rbp - 248] # 4-byte Reload
mov dword ptr [rbp - 168], eax # 4-byte Spill
.LBB19_58:
mov rax, qword ptr [rbp - 152] # 8-byte Reload
mov ecx, dword ptr [rbp - 168] # 4-byte Reload
mov dword ptr [rbp - 252], ecx # 4-byte Spill
cmp rax, 0
je .LBB19_60
# %bb.59:
mov rdi, qword ptr [rbp - 152] # 8-byte Reload
call _ZdlPv@PLT
.LBB19_60:
mov eax, dword ptr [rbp - 252] # 4-byte Reload
test eax, eax
je .LBB19_61
jmp .LBB19_74
.LBB19_74:
jmp .LBB19_62
.LBB19_61:
jmp .LBB19_62
.LBB19_62:
jmp .LBB19_63
.LBB19_63:
add rsp, 256
pop rbp
.cfi_def_cfa rsp, 8
ret
.LBB19_64:
.cfi_def_cfa rbp, 16
jmp .LBB19_65
.LBB19_65:
mov rax, qword ptr [rbp - 152] # 8-byte Reload
mov qword ptr [rax], 0
mov byte ptr [rax + 17], 2
# %bb.66:
jmp .LBB19_67
.LBB19_67:
mov rdi, qword ptr [rbp - 56]
call _Unwind_Resume@PLT
.LBB19_68:
.Ltmp23:
mov rdi, rax
# kill: def $eax killed $edx killed $rdx
call __clang_call_terminate
# %bb.69:
.cfi_def_cfa rsp, 8
.cfi_restore rbp
.LBB19_70:
.cfi_def_cfa rbp, 16
.cfi_offset rbp, -16
mov rax, qword ptr [rbp - 152] # 8-byte Reload
mov al, byte ptr [rax + 17]
test al, al
je .LBB19_1
jmp .LBB19_72
.LBB19_72:
jmp .LBB19_18
# %bb.71:
.Lfunc_end19:
.size _Z6FooBarv.resume, .Lfunc_end19-_Z6FooBarv.resume
.cfi_endproc
.section .gcc_except_table,"a",@progbits
.p2align 2, 0x0
GCC_except_table19:
.Lexception1:
.byte 255 # @LPStart Encoding = omit
.byte 155 # @TType Encoding = indirect pcrel sdata4
.uleb128 .Lttbase1-.Lttbaseref1
.Lttbaseref1:
.byte 1 # Call site Encoding = uleb128
.uleb128 .Lcst_end1-.Lcst_begin1
.Lcst_begin1:
.uleb128 .Ltmp15-.Lfunc_begin1 # >> Call Site 1 <<
.uleb128 .Ltmp16-.Ltmp15 # Call between .Ltmp15 and .Ltmp16
.uleb128 .Ltmp17-.Lfunc_begin1 # jumps to .Ltmp17
.byte 1 # On action: 1
.uleb128 .Ltmp16-.Lfunc_begin1 # >> Call Site 2 <<
.uleb128 .Ltmp18-.Ltmp16 # Call between .Ltmp16 and .Ltmp18
.byte 0 # has no landing pad
.byte 0 # On action: cleanup
.uleb128 .Ltmp18-.Lfunc_begin1 # >> Call Site 3 <<
.uleb128 .Ltmp19-.Ltmp18 # Call between .Ltmp18 and .Ltmp19
.uleb128 .Ltmp20-.Lfunc_begin1 # jumps to .Ltmp20
.byte 0 # On action: cleanup
.uleb128 .Ltmp24-.Lfunc_begin1 # >> Call Site 4 <<
.uleb128 .Ltmp25-.Ltmp24 # Call between .Ltmp24 and .Ltmp25
.uleb128 .Ltmp26-.Lfunc_begin1 # jumps to .Ltmp26
.byte 0 # On action: cleanup
.uleb128 .Ltmp21-.Lfunc_begin1 # >> Call Site 5 <<
.uleb128 .Ltmp22-.Ltmp21 # Call between .Ltmp21 and .Ltmp22
.uleb128 .Ltmp23-.Lfunc_begin1 # jumps to .Ltmp23
.byte 1 # On action: 1
.uleb128 .Ltmp22-.Lfunc_begin1 # >> Call Site 6 <<
.uleb128 .Lfunc_end19-.Ltmp22 # Call between .Ltmp22 and .Lfunc_end19
.byte 0 # has no landing pad
.byte 0 # On action: cleanup
.Lcst_end1:
.byte 1 # >> Action Record 1 <<
# Catch TypeInfo 1
.byte 0 # No further actions
.p2align 2, 0x0
# >> Catch TypeInfos <<
.long 0 # TypeInfo 1
.Lttbase1:
.p2align 2, 0x0
# -- End function
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment