CTF[3]
Reverse
Claire
- 北資一六社長 x 網管
- 競程是舊愛 而且我很爛
- 新歡大概是資安
- 但我都只打水題
樹枝爆肝仔
Who am I

1
Intro
3
Tools
2
Assembly
Index
1
Static Analysis
Intro
Intro
- 本質:code review
- 分析編譯後的二進位檔案
- 找出程式邏輯、flag 或繞過檢查
- 正常順序:
.section __TEXT,__text,regular,pure_instructions
.build_version macos, 13, 3 sdk_version 13, 3
.globl _main ; -- Begin function main
.p2align 2
_main: ; @main
.cfi_startproc
; %bb.0:
stp x29, x30, [sp, #-16]! ; 16-byte Folded Spill
.cfi_def_cfa_offset 16
mov x29, sp
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
adrp x0, __ZNSt3__14coutE@GOTPAGE
ldr x0, [x0, __ZNSt3__14coutE@GOTPAGEOFF]
adrp x1, l_.str@PAGE
add x1, x1, l_.str@PAGEOFF
bl __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc
adrp x1, __ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_@GOTPAGE
ldr x1, [x1, __ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_@GOTPAGEOFF]
bl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E
mov w0, #0
ldp x29, x30, [sp], #16 ; 16-byte Folded Reload
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc ; -- Begin function _ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc
.weak_definition __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc
.p2align 2
__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc: ; @_ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
str x1, [sp, #16]
ldur x8, [x29, #-8]
str x8, [sp, #8] ; 8-byte Folded Spill
ldr x8, [sp, #16]
str x8, [sp] ; 8-byte Folded Spill
ldr x0, [sp, #16]
bl __ZNSt3__111char_traitsIcE6lengthEPKc
ldr x1, [sp] ; 8-byte Folded Reload
mov x2, x0
ldr x0, [sp, #8] ; 8-byte Folded Reload
bl __ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E ; -- Begin function _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E
.globl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E
.weak_definition __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E
.p2align 2
__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E: ; @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
str x1, [sp]
ldr x0, [sp, #8]
ldr x8, [sp]
blr x8
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_ ; -- Begin function _ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_
.weak_definition __ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_
.p2align 2
__ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_: ; @_ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x8, [sp, #8]
str x8, [sp] ; 8-byte Folded Spill
ldr x8, [sp, #8]
ldr x9, [x8]
ldur x9, [x9, #-24]
add x0, x8, x9
mov w1, #10
bl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec
mov x8, x0
ldr x0, [sp] ; 8-byte Folded Reload
sxtb w1, w8
bl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc
ldr x0, [sp, #8]
bl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv
ldr x0, [sp, #8]
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m ; -- Begin function _ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m
.weak_definition __ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m
.p2align 2
__ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m: ; @_ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m
Lfunc_begin0:
.cfi_startproc
.cfi_personality 155, ___gxx_personality_v0
.cfi_lsda 16, Lexception0
; %bb.0:
sub sp, sp, #160
.cfi_def_cfa_offset 160
stp x29, x30, [sp, #144] ; 16-byte Folded Spill
add x29, sp, #144
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
stur x1, [x29, #-16]
stur x2, [x29, #-24]
ldur x1, [x29, #-8]
Ltmp0:
sub x0, x29, #40
bl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC1ERS3_
Ltmp1:
b LBB4_1
LBB4_1:
Ltmp2:
sub x0, x29, #40
bl __ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev
str w0, [sp, #68] ; 4-byte Folded Spill
Ltmp3:
b LBB4_2
LBB4_2:
ldr w8, [sp, #68] ; 4-byte Folded Reload
tbz w8, #0, LBB4_15
b LBB4_3
LBB4_3:
ldur x1, [x29, #-8]
add x0, sp, #72
bl __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE
ldur x8, [x29, #-16]
str x8, [sp, #56] ; 8-byte Folded Spill
ldur x8, [x29, #-8]
ldr x9, [x8]
ldur x9, [x9, #-24]
add x0, x8, x9
Ltmp4:
bl __ZNKSt3__18ios_base5flagsB6v15006Ev
str w0, [sp, #64] ; 4-byte Folded Spill
Ltmp5:
b LBB4_4
LBB4_4:
ldr w8, [sp, #64] ; 4-byte Folded Reload
mov w9, #176
and w8, w8, w9
subs w8, w8, #32
cset w8, ne
tbnz w8, #0, LBB4_6
b LBB4_5
LBB4_5:
ldur x8, [x29, #-16]
ldur x9, [x29, #-24]
add x8, x8, x9
str x8, [sp, #48] ; 8-byte Folded Spill
b LBB4_7
LBB4_6:
ldur x8, [x29, #-16]
str x8, [sp, #48] ; 8-byte Folded Spill
b LBB4_7
LBB4_7:
ldr x8, [sp, #48] ; 8-byte Folded Reload
str x8, [sp, #16] ; 8-byte Folded Spill
ldur x8, [x29, #-16]
ldur x9, [x29, #-24]
add x8, x8, x9
str x8, [sp, #24] ; 8-byte Folded Spill
ldur x8, [x29, #-8]
ldr x9, [x8]
ldur x9, [x9, #-24]
add x8, x8, x9
str x8, [sp, #32] ; 8-byte Folded Spill
ldur x8, [x29, #-8]
ldr x9, [x8]
ldur x9, [x9, #-24]
add x0, x8, x9
Ltmp6:
bl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev
str w0, [sp, #44] ; 4-byte Folded Spill
Ltmp7:
b LBB4_8
LBB4_8:
ldr w8, [sp, #44] ; 4-byte Folded Reload
ldr x4, [sp, #32] ; 8-byte Folded Reload
ldr x3, [sp, #24] ; 8-byte Folded Reload
ldr x2, [sp, #16] ; 8-byte Folded Reload
ldr x1, [sp, #56] ; 8-byte Folded Reload
ldr x0, [sp, #72]
Ltmp8:
sxtb w5, w8
bl __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_
str x0, [sp, #8] ; 8-byte Folded Spill
Ltmp9:
b LBB4_9
LBB4_9:
ldr x8, [sp, #8] ; 8-byte Folded Reload
sub x0, x29, #64
stur x8, [x29, #-64]
bl __ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev
tbz w0, #0, LBB4_14
b LBB4_10
LBB4_10:
ldur x8, [x29, #-8]
ldr x9, [x8]
ldur x9, [x9, #-24]
add x0, x8, x9
Ltmp10:
mov w1, #5
bl __ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej
Ltmp11:
b LBB4_11
LBB4_11:
b LBB4_14
LBB4_12:
Ltmp17:
mov x8, x1
stur x0, [x29, #-48]
stur w8, [x29, #-52]
b LBB4_18
LBB4_13:
Ltmp12:
mov x8, x1
stur x0, [x29, #-48]
stur w8, [x29, #-52]
Ltmp13:
sub x0, x29, #40
bl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev
Ltmp14:
b LBB4_17
LBB4_14:
b LBB4_15
LBB4_15:
Ltmp15:
sub x0, x29, #40
bl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev
Ltmp16:
b LBB4_16
LBB4_16:
b LBB4_20
LBB4_17:
b LBB4_18
LBB4_18:
ldur x0, [x29, #-48]
bl ___cxa_begin_catch
ldur x8, [x29, #-8]
ldr x9, [x8]
ldur x9, [x9, #-24]
add x0, x8, x9
Ltmp18:
bl __ZNSt3__18ios_base33__set_badbit_and_consider_rethrowEv
Ltmp19:
b LBB4_19
LBB4_19:
bl ___cxa_end_catch
b LBB4_20
LBB4_20:
ldur x0, [x29, #-8]
ldp x29, x30, [sp, #144] ; 16-byte Folded Reload
add sp, sp, #160
ret
LBB4_21:
Ltmp20:
mov x8, x1
stur x0, [x29, #-48]
stur w8, [x29, #-52]
Ltmp21:
bl ___cxa_end_catch
Ltmp22:
b LBB4_22
LBB4_22:
b LBB4_23
LBB4_23:
ldur x0, [x29, #-48]
bl __Unwind_Resume
LBB4_24:
Ltmp23:
bl ___clang_call_terminate
Lfunc_end0:
.cfi_endproc
.section __TEXT,__gcc_except_tab
.p2align 2
GCC_except_table4:
Lexception0:
.byte 255 ; @LPStart Encoding = omit
.byte 155 ; @TType Encoding = indirect pcrel sdata4
.uleb128 Lttbase0-Lttbaseref0
Lttbaseref0:
.byte 1 ; Call site Encoding = uleb128
.uleb128 Lcst_end0-Lcst_begin0
Lcst_begin0:
.uleb128 Ltmp0-Lfunc_begin0 ; >> Call Site 1 <<
.uleb128 Ltmp1-Ltmp0 ; Call between Ltmp0 and Ltmp1
.uleb128 Ltmp17-Lfunc_begin0 ; jumps to Ltmp17
.byte 1 ; On action: 1
.uleb128 Ltmp2-Lfunc_begin0 ; >> Call Site 2 <<
.uleb128 Ltmp11-Ltmp2 ; Call between Ltmp2 and Ltmp11
.uleb128 Ltmp12-Lfunc_begin0 ; jumps to Ltmp12
.byte 1 ; On action: 1
.uleb128 Ltmp13-Lfunc_begin0 ; >> Call Site 3 <<
.uleb128 Ltmp14-Ltmp13 ; Call between Ltmp13 and Ltmp14
.uleb128 Ltmp23-Lfunc_begin0 ; jumps to Ltmp23
.byte 1 ; On action: 1
.uleb128 Ltmp15-Lfunc_begin0 ; >> Call Site 4 <<
.uleb128 Ltmp16-Ltmp15 ; Call between Ltmp15 and Ltmp16
.uleb128 Ltmp17-Lfunc_begin0 ; jumps to Ltmp17
.byte 1 ; On action: 1
.uleb128 Ltmp16-Lfunc_begin0 ; >> Call Site 5 <<
.uleb128 Ltmp18-Ltmp16 ; Call between Ltmp16 and Ltmp18
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
.uleb128 Ltmp18-Lfunc_begin0 ; >> Call Site 6 <<
.uleb128 Ltmp19-Ltmp18 ; Call between Ltmp18 and Ltmp19
.uleb128 Ltmp20-Lfunc_begin0 ; jumps to Ltmp20
.byte 0 ; On action: cleanup
.uleb128 Ltmp19-Lfunc_begin0 ; >> Call Site 7 <<
.uleb128 Ltmp21-Ltmp19 ; Call between Ltmp19 and Ltmp21
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
.uleb128 Ltmp21-Lfunc_begin0 ; >> Call Site 8 <<
.uleb128 Ltmp22-Ltmp21 ; Call between Ltmp21 and Ltmp22
.uleb128 Ltmp23-Lfunc_begin0 ; jumps to Ltmp23
.byte 1 ; On action: 1
.uleb128 Ltmp22-Lfunc_begin0 ; >> Call Site 9 <<
.uleb128 Lfunc_end0-Ltmp22 ; Call between Ltmp22 and Lfunc_end0
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
Lcst_end0:
.byte 1 ; >> Action Record 1 <<
; Catch TypeInfo 1
.byte 0 ; No further actions
.p2align 2
; >> Catch TypeInfos <<
.long 0 ; TypeInfo 1
Lttbase0:
.p2align 2
; -- End function
.section __TEXT,__text,regular,pure_instructions
.globl __ZNSt3__111char_traitsIcE6lengthEPKc ; -- Begin function _ZNSt3__111char_traitsIcE6lengthEPKc
.weak_definition __ZNSt3__111char_traitsIcE6lengthEPKc
.p2align 2
__ZNSt3__111char_traitsIcE6lengthEPKc: ; @_ZNSt3__111char_traitsIcE6lengthEPKc
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
bl _strlen
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev ; -- Begin function _ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev
.globl __ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev
.weak_definition __ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev
.p2align 2
__ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev: ; @_ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x8, [sp, #8]
ldrb w8, [x8]
and w0, w8, #0x1
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ ; -- Begin function _ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_
.globl __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_
.weak_definition __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_
.p2align 2
__ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_: ; @_ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_
Lfunc_begin1:
.cfi_startproc
.cfi_personality 155, ___gxx_personality_v0
.cfi_lsda 16, Lexception1
; %bb.0:
sub sp, sp, #160
.cfi_def_cfa_offset 160
stp x29, x30, [sp, #144] ; 16-byte Folded Spill
add x29, sp, #144
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-16]
stur x1, [x29, #-24]
stur x2, [x29, #-32]
stur x3, [x29, #-40]
stur x4, [x29, #-48]
sturb w5, [x29, #-49]
ldur x8, [x29, #-16]
subs x8, x8, #0
cset w8, ne
tbnz w8, #0, LBB7_2
b LBB7_1
LBB7_1:
ldur x8, [x29, #-16]
stur x8, [x29, #-8]
b LBB7_24
LBB7_2:
ldur x8, [x29, #-40]
ldur x9, [x29, #-24]
subs x8, x8, x9
stur x8, [x29, #-64]
ldur x0, [x29, #-48]
bl __ZNKSt3__18ios_base5widthB6v15006Ev
str x0, [sp, #72]
ldr x8, [sp, #72]
ldur x9, [x29, #-64]
subs x8, x8, x9
cset w8, le
tbnz w8, #0, LBB7_4
b LBB7_3
LBB7_3:
ldur x9, [x29, #-64]
ldr x8, [sp, #72]
subs x8, x8, x9
str x8, [sp, #72]
b LBB7_5
LBB7_4:
str xzr, [sp, #72]
b LBB7_5
LBB7_5:
ldur x8, [x29, #-32]
ldur x9, [x29, #-24]
subs x8, x8, x9
str x8, [sp, #64]
ldr x8, [sp, #64]
subs x8, x8, #0
cset w8, le
tbnz w8, #0, LBB7_9
b LBB7_6
LBB7_6:
ldur x0, [x29, #-16]
ldur x1, [x29, #-24]
ldr x2, [sp, #64]
bl __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
ldr x8, [sp, #64]
subs x8, x0, x8
cset w8, eq
tbnz w8, #0, LBB7_8
b LBB7_7
LBB7_7:
; kill: def $x8 killed $xzr
stur xzr, [x29, #-16]
ldur x8, [x29, #-16]
stur x8, [x29, #-8]
b LBB7_24
LBB7_8:
b LBB7_9
LBB7_9:
ldr x8, [sp, #72]
subs x8, x8, #0
cset w8, le
tbnz w8, #0, LBB7_19
b LBB7_10
LBB7_10:
ldr x1, [sp, #72]
ldursb w2, [x29, #-49]
add x0, sp, #40
str x0, [sp] ; 8-byte Folded Spill
bl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc
ldr x0, [sp] ; 8-byte Folded Reload
ldur x8, [x29, #-16]
str x8, [sp, #8] ; 8-byte Folded Spill
bl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev
mov x1, x0
ldr x0, [sp, #8] ; 8-byte Folded Reload
ldr x2, [sp, #72]
Ltmp25:
bl __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
str x0, [sp, #16] ; 8-byte Folded Spill
Ltmp26:
b LBB7_11
LBB7_11:
ldr x8, [sp, #16] ; 8-byte Folded Reload
ldr x9, [sp, #72]
subs x8, x8, x9
cset w8, eq
tbnz w8, #0, LBB7_14
b LBB7_12
LBB7_12:
; kill: def $x8 killed $xzr
stur xzr, [x29, #-16]
ldur x8, [x29, #-16]
stur x8, [x29, #-8]
mov w8, #1
str w8, [sp, #24]
b LBB7_15
LBB7_13:
Ltmp27:
mov x8, x1
str x0, [sp, #32]
str w8, [sp, #28]
Ltmp28:
add x0, sp, #40
bl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev
Ltmp29:
b LBB7_18
LBB7_14:
str wzr, [sp, #24]
b LBB7_15
LBB7_15:
add x0, sp, #40
bl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev
ldr w8, [sp, #24]
subs w8, w8, #0
cset w8, eq
tbnz w8, #0, LBB7_17
b LBB7_16
LBB7_16:
b LBB7_24
LBB7_17:
b LBB7_19
LBB7_18:
b LBB7_25
LBB7_19:
ldur x8, [x29, #-40]
ldur x9, [x29, #-32]
subs x8, x8, x9
str x8, [sp, #64]
ldr x8, [sp, #64]
subs x8, x8, #0
cset w8, le
tbnz w8, #0, LBB7_23
b LBB7_20
LBB7_20:
ldur x0, [x29, #-16]
ldur x1, [x29, #-32]
ldr x2, [sp, #64]
bl __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
ldr x8, [sp, #64]
subs x8, x0, x8
cset w8, eq
tbnz w8, #0, LBB7_22
b LBB7_21
LBB7_21:
; kill: def $x8 killed $xzr
stur xzr, [x29, #-16]
ldur x8, [x29, #-16]
stur x8, [x29, #-8]
b LBB7_24
LBB7_22:
b LBB7_23
LBB7_23:
ldur x0, [x29, #-48]
mov x1, #0
bl __ZNSt3__18ios_base5widthB6v15006El
ldur x8, [x29, #-16]
stur x8, [x29, #-8]
b LBB7_24
LBB7_24:
ldur x0, [x29, #-8]
ldp x29, x30, [sp, #144] ; 16-byte Folded Reload
add sp, sp, #160
ret
LBB7_25:
ldr x0, [sp, #32]
bl __Unwind_Resume
LBB7_26:
Ltmp30:
bl ___clang_call_terminate
; %bb.27:
Lfunc_end1:
.cfi_endproc
.section __TEXT,__gcc_except_tab
.p2align 2
GCC_except_table7:
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 Lfunc_begin1-Lfunc_begin1 ; >> Call Site 1 <<
.uleb128 Ltmp25-Lfunc_begin1 ; Call between Lfunc_begin1 and Ltmp25
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
.uleb128 Ltmp25-Lfunc_begin1 ; >> Call Site 2 <<
.uleb128 Ltmp26-Ltmp25 ; Call between Ltmp25 and Ltmp26
.uleb128 Ltmp27-Lfunc_begin1 ; jumps to Ltmp27
.byte 0 ; On action: cleanup
.uleb128 Ltmp28-Lfunc_begin1 ; >> Call Site 3 <<
.uleb128 Ltmp29-Ltmp28 ; Call between Ltmp28 and Ltmp29
.uleb128 Ltmp30-Lfunc_begin1 ; jumps to Ltmp30
.byte 1 ; On action: 1
.uleb128 Ltmp29-Lfunc_begin1 ; >> Call Site 4 <<
.uleb128 Lfunc_end1-Ltmp29 ; Call between Ltmp29 and Lfunc_end1
.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
; >> Catch TypeInfos <<
.long 0 ; TypeInfo 1
Lttbase1:
.p2align 2
; -- End function
.section __TEXT,__text,regular,pure_instructions
.private_extern __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE ; -- Begin function _ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE
.globl __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE
.weak_def_can_be_hidden __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE
.p2align 2
__ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE: ; @_ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
str x1, [sp, #16]
ldur x0, [x29, #-8]
str x0, [sp, #8] ; 8-byte Folded Spill
ldr x1, [sp, #16]
bl __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE
ldr x0, [sp, #8] ; 8-byte Folded Reload
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__18ios_base5flagsB6v15006Ev ; -- Begin function _ZNKSt3__18ios_base5flagsB6v15006Ev
.globl __ZNKSt3__18ios_base5flagsB6v15006Ev
.weak_definition __ZNKSt3__18ios_base5flagsB6v15006Ev
.p2align 2
__ZNKSt3__18ios_base5flagsB6v15006Ev: ; @_ZNKSt3__18ios_base5flagsB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x8, [sp, #8]
ldr w0, [x8, #8]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev ; -- Begin function _ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev
.globl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev
.weak_definition __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev
.p2align 2
__ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev: ; @_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x8, [sp, #8]
str x8, [sp] ; 8-byte Folded Spill
bl __ZNSt3__111char_traitsIcE3eofEv
ldr x8, [sp] ; 8-byte Folded Reload
ldr w1, [x8, #144]
bl __ZNSt3__111char_traitsIcE11eq_int_typeEii
tbz w0, #0, LBB10_2
b LBB10_1
LBB10_1:
ldr x0, [sp] ; 8-byte Folded Reload
mov w1, #32
bl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec
ldr x9, [sp] ; 8-byte Folded Reload
sxtb w8, w0
str w8, [x9, #144]
b LBB10_2
LBB10_2:
ldr x8, [sp] ; 8-byte Folded Reload
ldr w8, [x8, #144]
sxtb w0, w8
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev ; -- Begin function _ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev
.globl __ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev
.weak_definition __ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev
.p2align 2
__ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev: ; @_ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x8, [sp, #8]
ldr x8, [x8]
subs x8, x8, #0
cset w8, eq
and w0, w8, #0x1
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej ; -- Begin function _ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej
.globl __ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej
.weak_definition __ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej
.p2align 2
__ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej: ; @_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
str w1, [sp, #4]
ldr x0, [sp, #8]
ldr w1, [sp, #4]
bl __ZNSt3__18ios_base8setstateB6v15006Ej
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern ___clang_call_terminate ; -- Begin function __clang_call_terminate
.globl ___clang_call_terminate
.weak_definition ___clang_call_terminate
.p2align 2
___clang_call_terminate: ; @__clang_call_terminate
; %bb.0:
stp x29, x30, [sp, #-16]! ; 16-byte Folded Spill
bl ___cxa_begin_catch
bl __ZSt9terminatev
; -- End function
.private_extern __ZNKSt3__18ios_base5widthB6v15006Ev ; -- Begin function _ZNKSt3__18ios_base5widthB6v15006Ev
.globl __ZNKSt3__18ios_base5widthB6v15006Ev
.weak_definition __ZNKSt3__18ios_base5widthB6v15006Ev
.p2align 2
__ZNKSt3__18ios_base5widthB6v15006Ev: ; @_ZNKSt3__18ios_base5widthB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x8, [sp, #8]
ldr x0, [x8, #24]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl ; -- Begin function _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
.globl __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
.weak_definition __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
.p2align 2
__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl: ; @_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
str x1, [sp, #16]
str x2, [sp, #8]
ldur x0, [x29, #-8]
ldr x1, [sp, #16]
ldr x2, [sp, #8]
ldr x8, [x0]
ldr x8, [x8, #96]
blr x8
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc ; -- Begin function _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc
.globl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc
.weak_def_can_be_hidden __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc
.p2align 2
__ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc: ; @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
str x1, [sp, #16]
strb w2, [sp, #15]
ldur x0, [x29, #-8]
str x0, [sp] ; 8-byte Folded Spill
ldr x1, [sp, #16]
ldrsb w2, [sp, #15]
bl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc
ldr x0, [sp] ; 8-byte Folded Reload
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev ; -- Begin function _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev
.globl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev
.weak_definition __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev
.p2align 2
__ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev: ; @_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
bl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev
bl __ZNSt3__112__to_addressB6v15006IKcEEPT_S3_
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__18ios_base5widthB6v15006El ; -- Begin function _ZNSt3__18ios_base5widthB6v15006El
.globl __ZNSt3__18ios_base5widthB6v15006El
.weak_definition __ZNSt3__18ios_base5widthB6v15006El
.p2align 2
__ZNSt3__18ios_base5widthB6v15006El: ; @_ZNSt3__18ios_base5widthB6v15006El
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
str x0, [sp, #24]
str x1, [sp, #16]
ldr x9, [sp, #24]
ldr x8, [x9, #24]
str x8, [sp, #8]
ldr x8, [sp, #16]
str x8, [x9, #24]
ldr x0, [sp, #8]
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc ; -- Begin function _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc
.globl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc
.weak_def_can_be_hidden __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc
.p2align 2
__ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc: ; @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
str x1, [sp, #16]
strb w2, [sp, #15]
ldur x0, [x29, #-8]
str x0, [sp] ; 8-byte Folded Spill
add x1, sp, #14
add x2, sp, #13
bl __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1B6v15006INS_18__default_init_tagESA_EEOT_OT0_
ldr x0, [sp] ; 8-byte Folded Reload
ldr x1, [sp, #16]
ldrsb w2, [sp, #15]
bl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEmc
ldr x0, [sp] ; 8-byte Folded Reload
bl __ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_
ldr x0, [sp] ; 8-byte Folded Reload
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1B6v15006INS_18__default_init_tagESA_EEOT_OT0_ ; -- Begin function _ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1B6v15006INS_18__default_init_tagESA_EEOT_OT0_
.weak_def_can_be_hidden __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1B6v15006INS_18__default_init_tagESA_EEOT_OT0_
.p2align 2
__ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1B6v15006INS_18__default_init_tagESA_EEOT_OT0_: ; @_ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1B6v15006INS_18__default_init_tagESA_EEOT_OT0_
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
str x1, [sp, #16]
str x2, [sp, #8]
ldur x0, [x29, #-8]
str x0, [sp] ; 8-byte Folded Spill
ldr x1, [sp, #16]
ldr x2, [sp, #8]
bl __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2B6v15006INS_18__default_init_tagESA_EEOT_OT0_
ldr x0, [sp] ; 8-byte Folded Reload
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_ ; -- Begin function _ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_
.globl __ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_
.weak_definition __ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_
.p2align 2
__ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_: ; @_ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2B6v15006INS_18__default_init_tagESA_EEOT_OT0_ ; -- Begin function _ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2B6v15006INS_18__default_init_tagESA_EEOT_OT0_
.weak_def_can_be_hidden __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2B6v15006INS_18__default_init_tagESA_EEOT_OT0_
.p2align 2
__ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2B6v15006INS_18__default_init_tagESA_EEOT_OT0_: ; @_ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2B6v15006INS_18__default_init_tagESA_EEOT_OT0_
.cfi_startproc
; %bb.0:
sub sp, sp, #64
.cfi_def_cfa_offset 64
stp x29, x30, [sp, #48] ; 16-byte Folded Spill
add x29, sp, #48
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
stur x1, [x29, #-16]
str x2, [sp, #24]
ldur x0, [x29, #-8]
str x0, [sp, #8] ; 8-byte Folded Spill
bl __ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE
ldr x0, [sp, #8] ; 8-byte Folded Reload
bl __ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE
ldr x0, [sp, #8] ; 8-byte Folded Reload
ldp x29, x30, [sp, #48] ; 16-byte Folded Reload
add sp, sp, #64
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE ; -- Begin function _ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE
.globl __ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE
.weak_def_can_be_hidden __ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE
.p2align 2
__ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE: ; @_ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp]
ldr x0, [sp]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE ; -- Begin function _ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE
.globl __ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE
.weak_def_can_be_hidden __ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE
.p2align 2
__ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE: ; @_ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #16]
ldr x0, [sp, #16]
str x0, [sp, #8] ; 8-byte Folded Spill
bl __ZNSt3__19allocatorIcEC2B6v15006Ev
ldr x0, [sp, #8] ; 8-byte Folded Reload
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__19allocatorIcEC2B6v15006Ev ; -- Begin function _ZNSt3__19allocatorIcEC2B6v15006Ev
.globl __ZNSt3__19allocatorIcEC2B6v15006Ev
.weak_def_can_be_hidden __ZNSt3__19allocatorIcEC2B6v15006Ev
.p2align 2
__ZNSt3__19allocatorIcEC2B6v15006Ev: ; @_ZNSt3__19allocatorIcEC2B6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
str x0, [sp] ; 8-byte Folded Spill
bl __ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev
ldr x0, [sp] ; 8-byte Folded Reload
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev ; -- Begin function _ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev
.globl __ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev
.weak_def_can_be_hidden __ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev
.p2align 2
__ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev: ; @_ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x0, [sp, #8]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__112__to_addressB6v15006IKcEEPT_S3_ ; -- Begin function _ZNSt3__112__to_addressB6v15006IKcEEPT_S3_
.globl __ZNSt3__112__to_addressB6v15006IKcEEPT_S3_
.weak_definition __ZNSt3__112__to_addressB6v15006IKcEEPT_S3_
.p2align 2
__ZNSt3__112__to_addressB6v15006IKcEEPT_S3_: ; @_ZNSt3__112__to_addressB6v15006IKcEEPT_S3_
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x0, [sp, #8]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev ; -- Begin function _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev
.globl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev
.weak_definition __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev
.p2align 2
__ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev: ; @_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
ldur x0, [x29, #-8]
str x0, [sp, #16] ; 8-byte Folded Spill
bl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev
tbz w0, #0, LBB28_2
b LBB28_1
LBB28_1:
ldr x0, [sp, #16] ; 8-byte Folded Reload
bl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev
str x0, [sp, #8] ; 8-byte Folded Spill
b LBB28_3
LBB28_2:
ldr x0, [sp, #16] ; 8-byte Folded Reload
bl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev
str x0, [sp, #8] ; 8-byte Folded Spill
b LBB28_3
LBB28_3:
ldr x0, [sp, #8] ; 8-byte Folded Reload
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev ; -- Begin function _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev
.globl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev
.weak_definition __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev
.p2align 2
__ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev: ; @_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #16]
ldr x8, [sp, #16]
str x8, [sp, #8] ; 8-byte Folded Spill
bl __ZNSt3__130__libcpp_is_constant_evaluatedEv
tbz w0, #0, LBB29_2
b LBB29_1
LBB29_1:
mov w8, #1
and w8, w8, #0x1
and w8, w8, #0x1
sturb w8, [x29, #-1]
b LBB29_3
LBB29_2:
ldr x0, [sp, #8] ; 8-byte Folded Reload
bl __ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
ldrb w8, [x0, #23]
lsr w8, w8, #7
ands w8, w8, #0xff
cset w8, ne
and w8, w8, #0x1
and w8, w8, #0x1
sturb w8, [x29, #-1]
b LBB29_3
LBB29_3:
ldurb w8, [x29, #-1]
and w0, w8, #0x1
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev ; -- Begin function _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev
.globl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev
.weak_definition __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev
.p2align 2
__ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev: ; @_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
bl __ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
ldr x0, [x0]
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev ; -- Begin function _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev
.globl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev
.weak_definition __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev
.p2align 2
__ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev: ; @_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
bl __ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
bl __ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__130__libcpp_is_constant_evaluatedEv ; -- Begin function _ZNSt3__130__libcpp_is_constant_evaluatedEv
.weak_definition __ZNSt3__130__libcpp_is_constant_evaluatedEv
.p2align 2
__ZNSt3__130__libcpp_is_constant_evaluatedEv: ; @_ZNSt3__130__libcpp_is_constant_evaluatedEv
.cfi_startproc
; %bb.0:
mov w8, #0
and w0, w8, #0x1
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev ; -- Begin function _ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
.globl __ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
.weak_definition __ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
.p2align 2
__ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev: ; @_ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
bl __ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev ; -- Begin function _ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev
.globl __ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev
.weak_definition __ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev
.p2align 2
__ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev: ; @_ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x0, [sp, #8]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_ ; -- Begin function _ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_
.globl __ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_
.weak_definition __ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_
.p2align 2
__ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_: ; @_ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x0, [sp, #8]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE ; -- Begin function _ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE
.globl __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE
.weak_def_can_be_hidden __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE
.p2align 2
__ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE: ; @_ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE
Lfunc_begin2:
.cfi_startproc
.cfi_personality 155, ___gxx_personality_v0
.cfi_lsda 16, Lexception2
; %bb.0:
sub sp, sp, #64
.cfi_def_cfa_offset 64
stp x29, x30, [sp, #48] ; 16-byte Folded Spill
add x29, sp, #48
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
stur x1, [x29, #-16]
ldur x8, [x29, #-8]
str x8, [sp] ; 8-byte Folded Spill
ldur x8, [x29, #-16]
ldr x9, [x8]
ldur x9, [x9, #-24]
Ltmp41:
add x0, x8, x9
bl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev
str x0, [sp, #8] ; 8-byte Folded Spill
Ltmp42:
b LBB36_1
LBB36_1:
ldr x0, [sp] ; 8-byte Folded Reload
ldr x8, [sp, #8] ; 8-byte Folded Reload
str x8, [x0]
ldp x29, x30, [sp, #48] ; 16-byte Folded Reload
add sp, sp, #64
ret
LBB36_2:
Ltmp43:
mov x8, x1
str x0, [sp, #24]
str w8, [sp, #20]
b LBB36_3
LBB36_3:
ldr x0, [sp, #24]
bl ___cxa_call_unexpected
Lfunc_end2:
.cfi_endproc
.section __TEXT,__gcc_except_tab
.p2align 2
GCC_except_table36:
Lexception2:
.byte 255 ; @LPStart Encoding = omit
.byte 155 ; @TType Encoding = indirect pcrel sdata4
.uleb128 Lttbase2-Lttbaseref2
Lttbaseref2:
.byte 1 ; Call site Encoding = uleb128
.uleb128 Lcst_end2-Lcst_begin2
Lcst_begin2:
.uleb128 Ltmp41-Lfunc_begin2 ; >> Call Site 1 <<
.uleb128 Ltmp42-Ltmp41 ; Call between Ltmp41 and Ltmp42
.uleb128 Ltmp43-Lfunc_begin2 ; jumps to Ltmp43
.byte 1 ; On action: 1
.uleb128 Ltmp42-Lfunc_begin2 ; >> Call Site 2 <<
.uleb128 Lfunc_end2-Ltmp42 ; Call between Ltmp42 and Lfunc_end2
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
Lcst_end2:
.byte 127 ; >> Action Record 1 <<
; Filter TypeInfo -1
.byte 0 ; No further actions
.p2align 2
Lttbase2:
; >> Filter TypeInfos <<
.byte 0
.p2align 2
; -- End function
.section __TEXT,__text,regular,pure_instructions
.private_extern __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev ; -- Begin function _ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev
.globl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev
.weak_definition __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev
.p2align 2
__ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev: ; @_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
bl __ZNKSt3__18ios_base5rdbufB6v15006Ev
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__18ios_base5rdbufB6v15006Ev ; -- Begin function _ZNKSt3__18ios_base5rdbufB6v15006Ev
.globl __ZNKSt3__18ios_base5rdbufB6v15006Ev
.weak_definition __ZNKSt3__18ios_base5rdbufB6v15006Ev
.p2align 2
__ZNKSt3__18ios_base5rdbufB6v15006Ev: ; @_ZNKSt3__18ios_base5rdbufB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x8, [sp, #8]
ldr x0, [x8, #40]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__111char_traitsIcE11eq_int_typeEii ; -- Begin function _ZNSt3__111char_traitsIcE11eq_int_typeEii
.weak_definition __ZNSt3__111char_traitsIcE11eq_int_typeEii
.p2align 2
__ZNSt3__111char_traitsIcE11eq_int_typeEii: ; @_ZNSt3__111char_traitsIcE11eq_int_typeEii
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str w0, [sp, #12]
str w1, [sp, #8]
ldr w8, [sp, #12]
ldr w9, [sp, #8]
subs w8, w8, w9
cset w8, eq
and w0, w8, #0x1
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__111char_traitsIcE3eofEv ; -- Begin function _ZNSt3__111char_traitsIcE3eofEv
.weak_definition __ZNSt3__111char_traitsIcE3eofEv
.p2align 2
__ZNSt3__111char_traitsIcE3eofEv: ; @_ZNSt3__111char_traitsIcE3eofEv
.cfi_startproc
; %bb.0:
mov w0, #-1
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec ; -- Begin function _ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec
.globl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec
.weak_definition __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec
.p2align 2
__ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec: ; @_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec
Lfunc_begin3:
.cfi_startproc
.cfi_personality 155, ___gxx_personality_v0
.cfi_lsda 16, Lexception3
; %bb.0:
sub sp, sp, #80
.cfi_def_cfa_offset 80
stp x29, x30, [sp, #64] ; 16-byte Folded Spill
add x29, sp, #64
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
sturb w1, [x29, #-9]
ldur x0, [x29, #-8]
sub x8, x29, #24
str x8, [sp, #8] ; 8-byte Folded Spill
bl __ZNKSt3__18ios_base6getlocEv
ldr x0, [sp, #8] ; 8-byte Folded Reload
Ltmp46:
bl __ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE
str x0, [sp, #16] ; 8-byte Folded Spill
Ltmp47:
b LBB41_1
LBB41_1:
ldr x0, [sp, #16] ; 8-byte Folded Reload
ldursb w1, [x29, #-9]
Ltmp48:
bl __ZNKSt3__15ctypeIcE5widenB6v15006Ec
str w0, [sp, #4] ; 4-byte Folded Spill
Ltmp49:
b LBB41_2
LBB41_2:
sub x0, x29, #24
bl __ZNSt3__16localeD1Ev
ldr w8, [sp, #4] ; 4-byte Folded Reload
sxtb w0, w8
ldp x29, x30, [sp, #64] ; 16-byte Folded Reload
add sp, sp, #80
ret
LBB41_3:
Ltmp50:
mov x8, x1
str x0, [sp, #32]
str w8, [sp, #28]
Ltmp51:
sub x0, x29, #24
bl __ZNSt3__16localeD1Ev
Ltmp52:
b LBB41_4
LBB41_4:
b LBB41_5
LBB41_5:
ldr x0, [sp, #32]
bl __Unwind_Resume
LBB41_6:
Ltmp53:
bl ___clang_call_terminate
Lfunc_end3:
.cfi_endproc
.section __TEXT,__gcc_except_tab
.p2align 2
GCC_except_table41:
Lexception3:
.byte 255 ; @LPStart Encoding = omit
.byte 155 ; @TType Encoding = indirect pcrel sdata4
.uleb128 Lttbase3-Lttbaseref3
Lttbaseref3:
.byte 1 ; Call site Encoding = uleb128
.uleb128 Lcst_end3-Lcst_begin3
Lcst_begin3:
.uleb128 Lfunc_begin3-Lfunc_begin3 ; >> Call Site 1 <<
.uleb128 Ltmp46-Lfunc_begin3 ; Call between Lfunc_begin3 and Ltmp46
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
.uleb128 Ltmp46-Lfunc_begin3 ; >> Call Site 2 <<
.uleb128 Ltmp49-Ltmp46 ; Call between Ltmp46 and Ltmp49
.uleb128 Ltmp50-Lfunc_begin3 ; jumps to Ltmp50
.byte 0 ; On action: cleanup
.uleb128 Ltmp49-Lfunc_begin3 ; >> Call Site 3 <<
.uleb128 Ltmp51-Ltmp49 ; Call between Ltmp49 and Ltmp51
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
.uleb128 Ltmp51-Lfunc_begin3 ; >> Call Site 4 <<
.uleb128 Ltmp52-Ltmp51 ; Call between Ltmp51 and Ltmp52
.uleb128 Ltmp53-Lfunc_begin3 ; jumps to Ltmp53
.byte 1 ; On action: 1
.uleb128 Ltmp52-Lfunc_begin3 ; >> Call Site 5 <<
.uleb128 Lfunc_end3-Ltmp52 ; Call between Ltmp52 and Lfunc_end3
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
Lcst_end3:
.byte 1 ; >> Action Record 1 <<
; Catch TypeInfo 1
.byte 0 ; No further actions
.p2align 2
; >> Catch TypeInfos <<
.long 0 ; TypeInfo 1
Lttbase3:
.p2align 2
; -- End function
.section __TEXT,__text,regular,pure_instructions
.private_extern __ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE ; -- Begin function _ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE
.globl __ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE
.weak_definition __ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE
.p2align 2
__ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE: ; @_ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
adrp x1, __ZNSt3__15ctypeIcE2idE@GOTPAGE
ldr x1, [x1, __ZNSt3__15ctypeIcE2idE@GOTPAGEOFF]
bl __ZNKSt3__16locale9use_facetERNS0_2idE
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__15ctypeIcE5widenB6v15006Ec ; -- Begin function _ZNKSt3__15ctypeIcE5widenB6v15006Ec
.globl __ZNKSt3__15ctypeIcE5widenB6v15006Ec
.weak_definition __ZNKSt3__15ctypeIcE5widenB6v15006Ec
.p2align 2
__ZNKSt3__15ctypeIcE5widenB6v15006Ec: ; @_ZNKSt3__15ctypeIcE5widenB6v15006Ec
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
strb w1, [sp, #7]
ldr x0, [sp, #8]
ldrsb w1, [sp, #7]
ldr x8, [x0]
ldr x8, [x8, #56]
blr x8
sxtb w0, w0
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__18ios_base8setstateB6v15006Ej ; -- Begin function _ZNSt3__18ios_base8setstateB6v15006Ej
.globl __ZNSt3__18ios_base8setstateB6v15006Ej
.weak_definition __ZNSt3__18ios_base8setstateB6v15006Ej
.p2align 2
__ZNSt3__18ios_base8setstateB6v15006Ej: ; @_ZNSt3__18ios_base8setstateB6v15006Ej
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
str w1, [sp, #4]
ldr x0, [sp, #8]
ldr w8, [x0, #32]
ldr w9, [sp, #4]
orr w1, w8, w9
bl __ZNSt3__18ios_base5clearEj
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.section __TEXT,__cstring,cstring_literals
l_.str: ; @.str
.asciz "Hello World!"
.subsections_via_symbols
組合語言
#include <iostream>
int main() {
std::cout << "Hello World!"
}高階語言

機器語言
compile
assemble
Intro
- 本質:code review
- 分析編譯後的二進位檔案
- 找出程式邏輯、flag 或繞過檢查
- 逆向順序:
.section __TEXT,__text,regular,pure_instructions
.build_version macos, 13, 3 sdk_version 13, 3
.globl _main ; -- Begin function main
.p2align 2
_main: ; @main
.cfi_startproc
; %bb.0:
stp x29, x30, [sp, #-16]! ; 16-byte Folded Spill
.cfi_def_cfa_offset 16
mov x29, sp
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
adrp x0, __ZNSt3__14coutE@GOTPAGE
ldr x0, [x0, __ZNSt3__14coutE@GOTPAGEOFF]
adrp x1, l_.str@PAGE
add x1, x1, l_.str@PAGEOFF
bl __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc
adrp x1, __ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_@GOTPAGE
ldr x1, [x1, __ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_@GOTPAGEOFF]
bl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E
mov w0, #0
ldp x29, x30, [sp], #16 ; 16-byte Folded Reload
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc ; -- Begin function _ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc
.weak_definition __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc
.p2align 2
__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc: ; @_ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
str x1, [sp, #16]
ldur x8, [x29, #-8]
str x8, [sp, #8] ; 8-byte Folded Spill
ldr x8, [sp, #16]
str x8, [sp] ; 8-byte Folded Spill
ldr x0, [sp, #16]
bl __ZNSt3__111char_traitsIcE6lengthEPKc
ldr x1, [sp] ; 8-byte Folded Reload
mov x2, x0
ldr x0, [sp, #8] ; 8-byte Folded Reload
bl __ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E ; -- Begin function _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E
.globl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E
.weak_definition __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E
.p2align 2
__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E: ; @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsB6v15006EPFRS3_S4_E
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
str x1, [sp]
ldr x0, [sp, #8]
ldr x8, [sp]
blr x8
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_ ; -- Begin function _ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_
.weak_definition __ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_
.p2align 2
__ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_: ; @_ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x8, [sp, #8]
str x8, [sp] ; 8-byte Folded Spill
ldr x8, [sp, #8]
ldr x9, [x8]
ldur x9, [x9, #-24]
add x0, x8, x9
mov w1, #10
bl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec
mov x8, x0
ldr x0, [sp] ; 8-byte Folded Reload
sxtb w1, w8
bl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc
ldr x0, [sp, #8]
bl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv
ldr x0, [sp, #8]
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m ; -- Begin function _ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m
.weak_definition __ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m
.p2align 2
__ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m: ; @_ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m
Lfunc_begin0:
.cfi_startproc
.cfi_personality 155, ___gxx_personality_v0
.cfi_lsda 16, Lexception0
; %bb.0:
sub sp, sp, #160
.cfi_def_cfa_offset 160
stp x29, x30, [sp, #144] ; 16-byte Folded Spill
add x29, sp, #144
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
stur x1, [x29, #-16]
stur x2, [x29, #-24]
ldur x1, [x29, #-8]
Ltmp0:
sub x0, x29, #40
bl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC1ERS3_
Ltmp1:
b LBB4_1
LBB4_1:
Ltmp2:
sub x0, x29, #40
bl __ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev
str w0, [sp, #68] ; 4-byte Folded Spill
Ltmp3:
b LBB4_2
LBB4_2:
ldr w8, [sp, #68] ; 4-byte Folded Reload
tbz w8, #0, LBB4_15
b LBB4_3
LBB4_3:
ldur x1, [x29, #-8]
add x0, sp, #72
bl __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE
ldur x8, [x29, #-16]
str x8, [sp, #56] ; 8-byte Folded Spill
ldur x8, [x29, #-8]
ldr x9, [x8]
ldur x9, [x9, #-24]
add x0, x8, x9
Ltmp4:
bl __ZNKSt3__18ios_base5flagsB6v15006Ev
str w0, [sp, #64] ; 4-byte Folded Spill
Ltmp5:
b LBB4_4
LBB4_4:
ldr w8, [sp, #64] ; 4-byte Folded Reload
mov w9, #176
and w8, w8, w9
subs w8, w8, #32
cset w8, ne
tbnz w8, #0, LBB4_6
b LBB4_5
LBB4_5:
ldur x8, [x29, #-16]
ldur x9, [x29, #-24]
add x8, x8, x9
str x8, [sp, #48] ; 8-byte Folded Spill
b LBB4_7
LBB4_6:
ldur x8, [x29, #-16]
str x8, [sp, #48] ; 8-byte Folded Spill
b LBB4_7
LBB4_7:
ldr x8, [sp, #48] ; 8-byte Folded Reload
str x8, [sp, #16] ; 8-byte Folded Spill
ldur x8, [x29, #-16]
ldur x9, [x29, #-24]
add x8, x8, x9
str x8, [sp, #24] ; 8-byte Folded Spill
ldur x8, [x29, #-8]
ldr x9, [x8]
ldur x9, [x9, #-24]
add x8, x8, x9
str x8, [sp, #32] ; 8-byte Folded Spill
ldur x8, [x29, #-8]
ldr x9, [x8]
ldur x9, [x9, #-24]
add x0, x8, x9
Ltmp6:
bl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev
str w0, [sp, #44] ; 4-byte Folded Spill
Ltmp7:
b LBB4_8
LBB4_8:
ldr w8, [sp, #44] ; 4-byte Folded Reload
ldr x4, [sp, #32] ; 8-byte Folded Reload
ldr x3, [sp, #24] ; 8-byte Folded Reload
ldr x2, [sp, #16] ; 8-byte Folded Reload
ldr x1, [sp, #56] ; 8-byte Folded Reload
ldr x0, [sp, #72]
Ltmp8:
sxtb w5, w8
bl __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_
str x0, [sp, #8] ; 8-byte Folded Spill
Ltmp9:
b LBB4_9
LBB4_9:
ldr x8, [sp, #8] ; 8-byte Folded Reload
sub x0, x29, #64
stur x8, [x29, #-64]
bl __ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev
tbz w0, #0, LBB4_14
b LBB4_10
LBB4_10:
ldur x8, [x29, #-8]
ldr x9, [x8]
ldur x9, [x9, #-24]
add x0, x8, x9
Ltmp10:
mov w1, #5
bl __ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej
Ltmp11:
b LBB4_11
LBB4_11:
b LBB4_14
LBB4_12:
Ltmp17:
mov x8, x1
stur x0, [x29, #-48]
stur w8, [x29, #-52]
b LBB4_18
LBB4_13:
Ltmp12:
mov x8, x1
stur x0, [x29, #-48]
stur w8, [x29, #-52]
Ltmp13:
sub x0, x29, #40
bl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev
Ltmp14:
b LBB4_17
LBB4_14:
b LBB4_15
LBB4_15:
Ltmp15:
sub x0, x29, #40
bl __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev
Ltmp16:
b LBB4_16
LBB4_16:
b LBB4_20
LBB4_17:
b LBB4_18
LBB4_18:
ldur x0, [x29, #-48]
bl ___cxa_begin_catch
ldur x8, [x29, #-8]
ldr x9, [x8]
ldur x9, [x9, #-24]
add x0, x8, x9
Ltmp18:
bl __ZNSt3__18ios_base33__set_badbit_and_consider_rethrowEv
Ltmp19:
b LBB4_19
LBB4_19:
bl ___cxa_end_catch
b LBB4_20
LBB4_20:
ldur x0, [x29, #-8]
ldp x29, x30, [sp, #144] ; 16-byte Folded Reload
add sp, sp, #160
ret
LBB4_21:
Ltmp20:
mov x8, x1
stur x0, [x29, #-48]
stur w8, [x29, #-52]
Ltmp21:
bl ___cxa_end_catch
Ltmp22:
b LBB4_22
LBB4_22:
b LBB4_23
LBB4_23:
ldur x0, [x29, #-48]
bl __Unwind_Resume
LBB4_24:
Ltmp23:
bl ___clang_call_terminate
Lfunc_end0:
.cfi_endproc
.section __TEXT,__gcc_except_tab
.p2align 2
GCC_except_table4:
Lexception0:
.byte 255 ; @LPStart Encoding = omit
.byte 155 ; @TType Encoding = indirect pcrel sdata4
.uleb128 Lttbase0-Lttbaseref0
Lttbaseref0:
.byte 1 ; Call site Encoding = uleb128
.uleb128 Lcst_end0-Lcst_begin0
Lcst_begin0:
.uleb128 Ltmp0-Lfunc_begin0 ; >> Call Site 1 <<
.uleb128 Ltmp1-Ltmp0 ; Call between Ltmp0 and Ltmp1
.uleb128 Ltmp17-Lfunc_begin0 ; jumps to Ltmp17
.byte 1 ; On action: 1
.uleb128 Ltmp2-Lfunc_begin0 ; >> Call Site 2 <<
.uleb128 Ltmp11-Ltmp2 ; Call between Ltmp2 and Ltmp11
.uleb128 Ltmp12-Lfunc_begin0 ; jumps to Ltmp12
.byte 1 ; On action: 1
.uleb128 Ltmp13-Lfunc_begin0 ; >> Call Site 3 <<
.uleb128 Ltmp14-Ltmp13 ; Call between Ltmp13 and Ltmp14
.uleb128 Ltmp23-Lfunc_begin0 ; jumps to Ltmp23
.byte 1 ; On action: 1
.uleb128 Ltmp15-Lfunc_begin0 ; >> Call Site 4 <<
.uleb128 Ltmp16-Ltmp15 ; Call between Ltmp15 and Ltmp16
.uleb128 Ltmp17-Lfunc_begin0 ; jumps to Ltmp17
.byte 1 ; On action: 1
.uleb128 Ltmp16-Lfunc_begin0 ; >> Call Site 5 <<
.uleb128 Ltmp18-Ltmp16 ; Call between Ltmp16 and Ltmp18
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
.uleb128 Ltmp18-Lfunc_begin0 ; >> Call Site 6 <<
.uleb128 Ltmp19-Ltmp18 ; Call between Ltmp18 and Ltmp19
.uleb128 Ltmp20-Lfunc_begin0 ; jumps to Ltmp20
.byte 0 ; On action: cleanup
.uleb128 Ltmp19-Lfunc_begin0 ; >> Call Site 7 <<
.uleb128 Ltmp21-Ltmp19 ; Call between Ltmp19 and Ltmp21
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
.uleb128 Ltmp21-Lfunc_begin0 ; >> Call Site 8 <<
.uleb128 Ltmp22-Ltmp21 ; Call between Ltmp21 and Ltmp22
.uleb128 Ltmp23-Lfunc_begin0 ; jumps to Ltmp23
.byte 1 ; On action: 1
.uleb128 Ltmp22-Lfunc_begin0 ; >> Call Site 9 <<
.uleb128 Lfunc_end0-Ltmp22 ; Call between Ltmp22 and Lfunc_end0
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
Lcst_end0:
.byte 1 ; >> Action Record 1 <<
; Catch TypeInfo 1
.byte 0 ; No further actions
.p2align 2
; >> Catch TypeInfos <<
.long 0 ; TypeInfo 1
Lttbase0:
.p2align 2
; -- End function
.section __TEXT,__text,regular,pure_instructions
.globl __ZNSt3__111char_traitsIcE6lengthEPKc ; -- Begin function _ZNSt3__111char_traitsIcE6lengthEPKc
.weak_definition __ZNSt3__111char_traitsIcE6lengthEPKc
.p2align 2
__ZNSt3__111char_traitsIcE6lengthEPKc: ; @_ZNSt3__111char_traitsIcE6lengthEPKc
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
bl _strlen
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev ; -- Begin function _ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev
.globl __ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev
.weak_definition __ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev
.p2align 2
__ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev: ; @_ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x8, [sp, #8]
ldrb w8, [x8]
and w0, w8, #0x1
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ ; -- Begin function _ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_
.globl __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_
.weak_definition __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_
.p2align 2
__ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_: ; @_ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_
Lfunc_begin1:
.cfi_startproc
.cfi_personality 155, ___gxx_personality_v0
.cfi_lsda 16, Lexception1
; %bb.0:
sub sp, sp, #160
.cfi_def_cfa_offset 160
stp x29, x30, [sp, #144] ; 16-byte Folded Spill
add x29, sp, #144
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-16]
stur x1, [x29, #-24]
stur x2, [x29, #-32]
stur x3, [x29, #-40]
stur x4, [x29, #-48]
sturb w5, [x29, #-49]
ldur x8, [x29, #-16]
subs x8, x8, #0
cset w8, ne
tbnz w8, #0, LBB7_2
b LBB7_1
LBB7_1:
ldur x8, [x29, #-16]
stur x8, [x29, #-8]
b LBB7_24
LBB7_2:
ldur x8, [x29, #-40]
ldur x9, [x29, #-24]
subs x8, x8, x9
stur x8, [x29, #-64]
ldur x0, [x29, #-48]
bl __ZNKSt3__18ios_base5widthB6v15006Ev
str x0, [sp, #72]
ldr x8, [sp, #72]
ldur x9, [x29, #-64]
subs x8, x8, x9
cset w8, le
tbnz w8, #0, LBB7_4
b LBB7_3
LBB7_3:
ldur x9, [x29, #-64]
ldr x8, [sp, #72]
subs x8, x8, x9
str x8, [sp, #72]
b LBB7_5
LBB7_4:
str xzr, [sp, #72]
b LBB7_5
LBB7_5:
ldur x8, [x29, #-32]
ldur x9, [x29, #-24]
subs x8, x8, x9
str x8, [sp, #64]
ldr x8, [sp, #64]
subs x8, x8, #0
cset w8, le
tbnz w8, #0, LBB7_9
b LBB7_6
LBB7_6:
ldur x0, [x29, #-16]
ldur x1, [x29, #-24]
ldr x2, [sp, #64]
bl __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
ldr x8, [sp, #64]
subs x8, x0, x8
cset w8, eq
tbnz w8, #0, LBB7_8
b LBB7_7
LBB7_7:
; kill: def $x8 killed $xzr
stur xzr, [x29, #-16]
ldur x8, [x29, #-16]
stur x8, [x29, #-8]
b LBB7_24
LBB7_8:
b LBB7_9
LBB7_9:
ldr x8, [sp, #72]
subs x8, x8, #0
cset w8, le
tbnz w8, #0, LBB7_19
b LBB7_10
LBB7_10:
ldr x1, [sp, #72]
ldursb w2, [x29, #-49]
add x0, sp, #40
str x0, [sp] ; 8-byte Folded Spill
bl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc
ldr x0, [sp] ; 8-byte Folded Reload
ldur x8, [x29, #-16]
str x8, [sp, #8] ; 8-byte Folded Spill
bl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev
mov x1, x0
ldr x0, [sp, #8] ; 8-byte Folded Reload
ldr x2, [sp, #72]
Ltmp25:
bl __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
str x0, [sp, #16] ; 8-byte Folded Spill
Ltmp26:
b LBB7_11
LBB7_11:
ldr x8, [sp, #16] ; 8-byte Folded Reload
ldr x9, [sp, #72]
subs x8, x8, x9
cset w8, eq
tbnz w8, #0, LBB7_14
b LBB7_12
LBB7_12:
; kill: def $x8 killed $xzr
stur xzr, [x29, #-16]
ldur x8, [x29, #-16]
stur x8, [x29, #-8]
mov w8, #1
str w8, [sp, #24]
b LBB7_15
LBB7_13:
Ltmp27:
mov x8, x1
str x0, [sp, #32]
str w8, [sp, #28]
Ltmp28:
add x0, sp, #40
bl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev
Ltmp29:
b LBB7_18
LBB7_14:
str wzr, [sp, #24]
b LBB7_15
LBB7_15:
add x0, sp, #40
bl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev
ldr w8, [sp, #24]
subs w8, w8, #0
cset w8, eq
tbnz w8, #0, LBB7_17
b LBB7_16
LBB7_16:
b LBB7_24
LBB7_17:
b LBB7_19
LBB7_18:
b LBB7_25
LBB7_19:
ldur x8, [x29, #-40]
ldur x9, [x29, #-32]
subs x8, x8, x9
str x8, [sp, #64]
ldr x8, [sp, #64]
subs x8, x8, #0
cset w8, le
tbnz w8, #0, LBB7_23
b LBB7_20
LBB7_20:
ldur x0, [x29, #-16]
ldur x1, [x29, #-32]
ldr x2, [sp, #64]
bl __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
ldr x8, [sp, #64]
subs x8, x0, x8
cset w8, eq
tbnz w8, #0, LBB7_22
b LBB7_21
LBB7_21:
; kill: def $x8 killed $xzr
stur xzr, [x29, #-16]
ldur x8, [x29, #-16]
stur x8, [x29, #-8]
b LBB7_24
LBB7_22:
b LBB7_23
LBB7_23:
ldur x0, [x29, #-48]
mov x1, #0
bl __ZNSt3__18ios_base5widthB6v15006El
ldur x8, [x29, #-16]
stur x8, [x29, #-8]
b LBB7_24
LBB7_24:
ldur x0, [x29, #-8]
ldp x29, x30, [sp, #144] ; 16-byte Folded Reload
add sp, sp, #160
ret
LBB7_25:
ldr x0, [sp, #32]
bl __Unwind_Resume
LBB7_26:
Ltmp30:
bl ___clang_call_terminate
; %bb.27:
Lfunc_end1:
.cfi_endproc
.section __TEXT,__gcc_except_tab
.p2align 2
GCC_except_table7:
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 Lfunc_begin1-Lfunc_begin1 ; >> Call Site 1 <<
.uleb128 Ltmp25-Lfunc_begin1 ; Call between Lfunc_begin1 and Ltmp25
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
.uleb128 Ltmp25-Lfunc_begin1 ; >> Call Site 2 <<
.uleb128 Ltmp26-Ltmp25 ; Call between Ltmp25 and Ltmp26
.uleb128 Ltmp27-Lfunc_begin1 ; jumps to Ltmp27
.byte 0 ; On action: cleanup
.uleb128 Ltmp28-Lfunc_begin1 ; >> Call Site 3 <<
.uleb128 Ltmp29-Ltmp28 ; Call between Ltmp28 and Ltmp29
.uleb128 Ltmp30-Lfunc_begin1 ; jumps to Ltmp30
.byte 1 ; On action: 1
.uleb128 Ltmp29-Lfunc_begin1 ; >> Call Site 4 <<
.uleb128 Lfunc_end1-Ltmp29 ; Call between Ltmp29 and Lfunc_end1
.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
; >> Catch TypeInfos <<
.long 0 ; TypeInfo 1
Lttbase1:
.p2align 2
; -- End function
.section __TEXT,__text,regular,pure_instructions
.private_extern __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE ; -- Begin function _ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE
.globl __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE
.weak_def_can_be_hidden __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE
.p2align 2
__ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE: ; @_ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC1B6v15006ERNS_13basic_ostreamIcS2_EE
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
str x1, [sp, #16]
ldur x0, [x29, #-8]
str x0, [sp, #8] ; 8-byte Folded Spill
ldr x1, [sp, #16]
bl __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE
ldr x0, [sp, #8] ; 8-byte Folded Reload
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__18ios_base5flagsB6v15006Ev ; -- Begin function _ZNKSt3__18ios_base5flagsB6v15006Ev
.globl __ZNKSt3__18ios_base5flagsB6v15006Ev
.weak_definition __ZNKSt3__18ios_base5flagsB6v15006Ev
.p2align 2
__ZNKSt3__18ios_base5flagsB6v15006Ev: ; @_ZNKSt3__18ios_base5flagsB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x8, [sp, #8]
ldr w0, [x8, #8]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev ; -- Begin function _ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev
.globl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev
.weak_definition __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev
.p2align 2
__ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev: ; @_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE4fillB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x8, [sp, #8]
str x8, [sp] ; 8-byte Folded Spill
bl __ZNSt3__111char_traitsIcE3eofEv
ldr x8, [sp] ; 8-byte Folded Reload
ldr w1, [x8, #144]
bl __ZNSt3__111char_traitsIcE11eq_int_typeEii
tbz w0, #0, LBB10_2
b LBB10_1
LBB10_1:
ldr x0, [sp] ; 8-byte Folded Reload
mov w1, #32
bl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec
ldr x9, [sp] ; 8-byte Folded Reload
sxtb w8, w0
str w8, [x9, #144]
b LBB10_2
LBB10_2:
ldr x8, [sp] ; 8-byte Folded Reload
ldr w8, [x8, #144]
sxtb w0, w8
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev ; -- Begin function _ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev
.globl __ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev
.weak_definition __ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev
.p2align 2
__ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev: ; @_ZNKSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEE6failedB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x8, [sp, #8]
ldr x8, [x8]
subs x8, x8, #0
cset w8, eq
and w0, w8, #0x1
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej ; -- Begin function _ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej
.globl __ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej
.weak_definition __ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej
.p2align 2
__ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej: ; @_ZNSt3__19basic_iosIcNS_11char_traitsIcEEE8setstateB6v15006Ej
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
str w1, [sp, #4]
ldr x0, [sp, #8]
ldr w1, [sp, #4]
bl __ZNSt3__18ios_base8setstateB6v15006Ej
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern ___clang_call_terminate ; -- Begin function __clang_call_terminate
.globl ___clang_call_terminate
.weak_definition ___clang_call_terminate
.p2align 2
___clang_call_terminate: ; @__clang_call_terminate
; %bb.0:
stp x29, x30, [sp, #-16]! ; 16-byte Folded Spill
bl ___cxa_begin_catch
bl __ZSt9terminatev
; -- End function
.private_extern __ZNKSt3__18ios_base5widthB6v15006Ev ; -- Begin function _ZNKSt3__18ios_base5widthB6v15006Ev
.globl __ZNKSt3__18ios_base5widthB6v15006Ev
.weak_definition __ZNKSt3__18ios_base5widthB6v15006Ev
.p2align 2
__ZNKSt3__18ios_base5widthB6v15006Ev: ; @_ZNKSt3__18ios_base5widthB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x8, [sp, #8]
ldr x0, [x8, #24]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl ; -- Begin function _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
.globl __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
.weak_definition __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
.p2align 2
__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl: ; @_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnB6v15006EPKcl
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
str x1, [sp, #16]
str x2, [sp, #8]
ldur x0, [x29, #-8]
ldr x1, [sp, #16]
ldr x2, [sp, #8]
ldr x8, [x0]
ldr x8, [x8, #96]
blr x8
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc ; -- Begin function _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc
.globl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc
.weak_def_can_be_hidden __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc
.p2align 2
__ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc: ; @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B6v15006Emc
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
str x1, [sp, #16]
strb w2, [sp, #15]
ldur x0, [x29, #-8]
str x0, [sp] ; 8-byte Folded Spill
ldr x1, [sp, #16]
ldrsb w2, [sp, #15]
bl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc
ldr x0, [sp] ; 8-byte Folded Reload
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev ; -- Begin function _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev
.globl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev
.weak_definition __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev
.p2align 2
__ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev: ; @_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
bl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev
bl __ZNSt3__112__to_addressB6v15006IKcEEPT_S3_
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__18ios_base5widthB6v15006El ; -- Begin function _ZNSt3__18ios_base5widthB6v15006El
.globl __ZNSt3__18ios_base5widthB6v15006El
.weak_definition __ZNSt3__18ios_base5widthB6v15006El
.p2align 2
__ZNSt3__18ios_base5widthB6v15006El: ; @_ZNSt3__18ios_base5widthB6v15006El
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
str x0, [sp, #24]
str x1, [sp, #16]
ldr x9, [sp, #24]
ldr x8, [x9, #24]
str x8, [sp, #8]
ldr x8, [sp, #16]
str x8, [x9, #24]
ldr x0, [sp, #8]
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc ; -- Begin function _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc
.globl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc
.weak_def_can_be_hidden __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc
.p2align 2
__ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc: ; @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B6v15006Emc
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
str x1, [sp, #16]
strb w2, [sp, #15]
ldur x0, [x29, #-8]
str x0, [sp] ; 8-byte Folded Spill
add x1, sp, #14
add x2, sp, #13
bl __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1B6v15006INS_18__default_init_tagESA_EEOT_OT0_
ldr x0, [sp] ; 8-byte Folded Reload
ldr x1, [sp, #16]
ldrsb w2, [sp, #15]
bl __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEmc
ldr x0, [sp] ; 8-byte Folded Reload
bl __ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_
ldr x0, [sp] ; 8-byte Folded Reload
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1B6v15006INS_18__default_init_tagESA_EEOT_OT0_ ; -- Begin function _ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1B6v15006INS_18__default_init_tagESA_EEOT_OT0_
.weak_def_can_be_hidden __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1B6v15006INS_18__default_init_tagESA_EEOT_OT0_
.p2align 2
__ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1B6v15006INS_18__default_init_tagESA_EEOT_OT0_: ; @_ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1B6v15006INS_18__default_init_tagESA_EEOT_OT0_
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
str x1, [sp, #16]
str x2, [sp, #8]
ldur x0, [x29, #-8]
str x0, [sp] ; 8-byte Folded Spill
ldr x1, [sp, #16]
ldr x2, [sp, #8]
bl __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2B6v15006INS_18__default_init_tagESA_EEOT_OT0_
ldr x0, [sp] ; 8-byte Folded Reload
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_ ; -- Begin function _ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_
.globl __ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_
.weak_definition __ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_
.p2align 2
__ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_: ; @_ZNSt3__119__debug_db_insert_cB6v15006INS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEEEvPT_
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2B6v15006INS_18__default_init_tagESA_EEOT_OT0_ ; -- Begin function _ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2B6v15006INS_18__default_init_tagESA_EEOT_OT0_
.weak_def_can_be_hidden __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2B6v15006INS_18__default_init_tagESA_EEOT_OT0_
.p2align 2
__ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2B6v15006INS_18__default_init_tagESA_EEOT_OT0_: ; @_ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2B6v15006INS_18__default_init_tagESA_EEOT_OT0_
.cfi_startproc
; %bb.0:
sub sp, sp, #64
.cfi_def_cfa_offset 64
stp x29, x30, [sp, #48] ; 16-byte Folded Spill
add x29, sp, #48
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
stur x1, [x29, #-16]
str x2, [sp, #24]
ldur x0, [x29, #-8]
str x0, [sp, #8] ; 8-byte Folded Spill
bl __ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE
ldr x0, [sp, #8] ; 8-byte Folded Reload
bl __ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE
ldr x0, [sp, #8] ; 8-byte Folded Reload
ldp x29, x30, [sp, #48] ; 16-byte Folded Reload
add sp, sp, #64
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE ; -- Begin function _ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE
.globl __ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE
.weak_def_can_be_hidden __ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE
.p2align 2
__ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE: ; @_ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2B6v15006ENS_18__default_init_tagE
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp]
ldr x0, [sp]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE ; -- Begin function _ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE
.globl __ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE
.weak_def_can_be_hidden __ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE
.p2align 2
__ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE: ; @_ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2B6v15006ENS_18__default_init_tagE
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #16]
ldr x0, [sp, #16]
str x0, [sp, #8] ; 8-byte Folded Spill
bl __ZNSt3__19allocatorIcEC2B6v15006Ev
ldr x0, [sp, #8] ; 8-byte Folded Reload
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__19allocatorIcEC2B6v15006Ev ; -- Begin function _ZNSt3__19allocatorIcEC2B6v15006Ev
.globl __ZNSt3__19allocatorIcEC2B6v15006Ev
.weak_def_can_be_hidden __ZNSt3__19allocatorIcEC2B6v15006Ev
.p2align 2
__ZNSt3__19allocatorIcEC2B6v15006Ev: ; @_ZNSt3__19allocatorIcEC2B6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
str x0, [sp] ; 8-byte Folded Spill
bl __ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev
ldr x0, [sp] ; 8-byte Folded Reload
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev ; -- Begin function _ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev
.globl __ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev
.weak_def_can_be_hidden __ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev
.p2align 2
__ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev: ; @_ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2B6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x0, [sp, #8]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__112__to_addressB6v15006IKcEEPT_S3_ ; -- Begin function _ZNSt3__112__to_addressB6v15006IKcEEPT_S3_
.globl __ZNSt3__112__to_addressB6v15006IKcEEPT_S3_
.weak_definition __ZNSt3__112__to_addressB6v15006IKcEEPT_S3_
.p2align 2
__ZNSt3__112__to_addressB6v15006IKcEEPT_S3_: ; @_ZNSt3__112__to_addressB6v15006IKcEEPT_S3_
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x0, [sp, #8]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev ; -- Begin function _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev
.globl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev
.weak_definition __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev
.p2align 2
__ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev: ; @_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
ldur x0, [x29, #-8]
str x0, [sp, #16] ; 8-byte Folded Spill
bl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev
tbz w0, #0, LBB28_2
b LBB28_1
LBB28_1:
ldr x0, [sp, #16] ; 8-byte Folded Reload
bl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev
str x0, [sp, #8] ; 8-byte Folded Spill
b LBB28_3
LBB28_2:
ldr x0, [sp, #16] ; 8-byte Folded Reload
bl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev
str x0, [sp, #8] ; 8-byte Folded Spill
b LBB28_3
LBB28_3:
ldr x0, [sp, #8] ; 8-byte Folded Reload
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev ; -- Begin function _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev
.globl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev
.weak_definition __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev
.p2align 2
__ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev: ; @_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #48
.cfi_def_cfa_offset 48
stp x29, x30, [sp, #32] ; 16-byte Folded Spill
add x29, sp, #32
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #16]
ldr x8, [sp, #16]
str x8, [sp, #8] ; 8-byte Folded Spill
bl __ZNSt3__130__libcpp_is_constant_evaluatedEv
tbz w0, #0, LBB29_2
b LBB29_1
LBB29_1:
mov w8, #1
and w8, w8, #0x1
and w8, w8, #0x1
sturb w8, [x29, #-1]
b LBB29_3
LBB29_2:
ldr x0, [sp, #8] ; 8-byte Folded Reload
bl __ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
ldrb w8, [x0, #23]
lsr w8, w8, #7
ands w8, w8, #0xff
cset w8, ne
and w8, w8, #0x1
and w8, w8, #0x1
sturb w8, [x29, #-1]
b LBB29_3
LBB29_3:
ldurb w8, [x29, #-1]
and w0, w8, #0x1
ldp x29, x30, [sp, #32] ; 16-byte Folded Reload
add sp, sp, #48
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev ; -- Begin function _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev
.globl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev
.weak_definition __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev
.p2align 2
__ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev: ; @_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
bl __ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
ldr x0, [x0]
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev ; -- Begin function _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev
.globl __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev
.weak_definition __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev
.p2align 2
__ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev: ; @_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
bl __ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
bl __ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__130__libcpp_is_constant_evaluatedEv ; -- Begin function _ZNSt3__130__libcpp_is_constant_evaluatedEv
.weak_definition __ZNSt3__130__libcpp_is_constant_evaluatedEv
.p2align 2
__ZNSt3__130__libcpp_is_constant_evaluatedEv: ; @_ZNSt3__130__libcpp_is_constant_evaluatedEv
.cfi_startproc
; %bb.0:
mov w8, #0
and w0, w8, #0x1
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev ; -- Begin function _ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
.globl __ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
.weak_definition __ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
.p2align 2
__ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev: ; @_ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
bl __ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev ; -- Begin function _ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev
.globl __ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev
.weak_definition __ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev
.p2align 2
__ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev: ; @_ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x0, [sp, #8]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_ ; -- Begin function _ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_
.globl __ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_
.weak_definition __ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_
.p2align 2
__ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_: ; @_ZNSt3__114pointer_traitsIPKcE10pointer_toB6v15006ERS1_
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x0, [sp, #8]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE ; -- Begin function _ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE
.globl __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE
.weak_def_can_be_hidden __ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE
.p2align 2
__ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE: ; @_ZNSt3__119ostreambuf_iteratorIcNS_11char_traitsIcEEEC2B6v15006ERNS_13basic_ostreamIcS2_EE
Lfunc_begin2:
.cfi_startproc
.cfi_personality 155, ___gxx_personality_v0
.cfi_lsda 16, Lexception2
; %bb.0:
sub sp, sp, #64
.cfi_def_cfa_offset 64
stp x29, x30, [sp, #48] ; 16-byte Folded Spill
add x29, sp, #48
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
stur x1, [x29, #-16]
ldur x8, [x29, #-8]
str x8, [sp] ; 8-byte Folded Spill
ldur x8, [x29, #-16]
ldr x9, [x8]
ldur x9, [x9, #-24]
Ltmp41:
add x0, x8, x9
bl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev
str x0, [sp, #8] ; 8-byte Folded Spill
Ltmp42:
b LBB36_1
LBB36_1:
ldr x0, [sp] ; 8-byte Folded Reload
ldr x8, [sp, #8] ; 8-byte Folded Reload
str x8, [x0]
ldp x29, x30, [sp, #48] ; 16-byte Folded Reload
add sp, sp, #64
ret
LBB36_2:
Ltmp43:
mov x8, x1
str x0, [sp, #24]
str w8, [sp, #20]
b LBB36_3
LBB36_3:
ldr x0, [sp, #24]
bl ___cxa_call_unexpected
Lfunc_end2:
.cfi_endproc
.section __TEXT,__gcc_except_tab
.p2align 2
GCC_except_table36:
Lexception2:
.byte 255 ; @LPStart Encoding = omit
.byte 155 ; @TType Encoding = indirect pcrel sdata4
.uleb128 Lttbase2-Lttbaseref2
Lttbaseref2:
.byte 1 ; Call site Encoding = uleb128
.uleb128 Lcst_end2-Lcst_begin2
Lcst_begin2:
.uleb128 Ltmp41-Lfunc_begin2 ; >> Call Site 1 <<
.uleb128 Ltmp42-Ltmp41 ; Call between Ltmp41 and Ltmp42
.uleb128 Ltmp43-Lfunc_begin2 ; jumps to Ltmp43
.byte 1 ; On action: 1
.uleb128 Ltmp42-Lfunc_begin2 ; >> Call Site 2 <<
.uleb128 Lfunc_end2-Ltmp42 ; Call between Ltmp42 and Lfunc_end2
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
Lcst_end2:
.byte 127 ; >> Action Record 1 <<
; Filter TypeInfo -1
.byte 0 ; No further actions
.p2align 2
Lttbase2:
; >> Filter TypeInfos <<
.byte 0
.p2align 2
; -- End function
.section __TEXT,__text,regular,pure_instructions
.private_extern __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev ; -- Begin function _ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev
.globl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev
.weak_definition __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev
.p2align 2
__ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev: ; @_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5rdbufB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
bl __ZNKSt3__18ios_base5rdbufB6v15006Ev
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__18ios_base5rdbufB6v15006Ev ; -- Begin function _ZNKSt3__18ios_base5rdbufB6v15006Ev
.globl __ZNKSt3__18ios_base5rdbufB6v15006Ev
.weak_definition __ZNKSt3__18ios_base5rdbufB6v15006Ev
.p2align 2
__ZNKSt3__18ios_base5rdbufB6v15006Ev: ; @_ZNKSt3__18ios_base5rdbufB6v15006Ev
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str x0, [sp, #8]
ldr x8, [sp, #8]
ldr x0, [x8, #40]
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__111char_traitsIcE11eq_int_typeEii ; -- Begin function _ZNSt3__111char_traitsIcE11eq_int_typeEii
.weak_definition __ZNSt3__111char_traitsIcE11eq_int_typeEii
.p2align 2
__ZNSt3__111char_traitsIcE11eq_int_typeEii: ; @_ZNSt3__111char_traitsIcE11eq_int_typeEii
.cfi_startproc
; %bb.0:
sub sp, sp, #16
.cfi_def_cfa_offset 16
str w0, [sp, #12]
str w1, [sp, #8]
ldr w8, [sp, #12]
ldr w9, [sp, #8]
subs w8, w8, w9
cset w8, eq
and w0, w8, #0x1
add sp, sp, #16
ret
.cfi_endproc
; -- End function
.globl __ZNSt3__111char_traitsIcE3eofEv ; -- Begin function _ZNSt3__111char_traitsIcE3eofEv
.weak_definition __ZNSt3__111char_traitsIcE3eofEv
.p2align 2
__ZNSt3__111char_traitsIcE3eofEv: ; @_ZNSt3__111char_traitsIcE3eofEv
.cfi_startproc
; %bb.0:
mov w0, #-1
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec ; -- Begin function _ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec
.globl __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec
.weak_definition __ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec
.p2align 2
__ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec: ; @_ZNKSt3__19basic_iosIcNS_11char_traitsIcEEE5widenB6v15006Ec
Lfunc_begin3:
.cfi_startproc
.cfi_personality 155, ___gxx_personality_v0
.cfi_lsda 16, Lexception3
; %bb.0:
sub sp, sp, #80
.cfi_def_cfa_offset 80
stp x29, x30, [sp, #64] ; 16-byte Folded Spill
add x29, sp, #64
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
stur x0, [x29, #-8]
sturb w1, [x29, #-9]
ldur x0, [x29, #-8]
sub x8, x29, #24
str x8, [sp, #8] ; 8-byte Folded Spill
bl __ZNKSt3__18ios_base6getlocEv
ldr x0, [sp, #8] ; 8-byte Folded Reload
Ltmp46:
bl __ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE
str x0, [sp, #16] ; 8-byte Folded Spill
Ltmp47:
b LBB41_1
LBB41_1:
ldr x0, [sp, #16] ; 8-byte Folded Reload
ldursb w1, [x29, #-9]
Ltmp48:
bl __ZNKSt3__15ctypeIcE5widenB6v15006Ec
str w0, [sp, #4] ; 4-byte Folded Spill
Ltmp49:
b LBB41_2
LBB41_2:
sub x0, x29, #24
bl __ZNSt3__16localeD1Ev
ldr w8, [sp, #4] ; 4-byte Folded Reload
sxtb w0, w8
ldp x29, x30, [sp, #64] ; 16-byte Folded Reload
add sp, sp, #80
ret
LBB41_3:
Ltmp50:
mov x8, x1
str x0, [sp, #32]
str w8, [sp, #28]
Ltmp51:
sub x0, x29, #24
bl __ZNSt3__16localeD1Ev
Ltmp52:
b LBB41_4
LBB41_4:
b LBB41_5
LBB41_5:
ldr x0, [sp, #32]
bl __Unwind_Resume
LBB41_6:
Ltmp53:
bl ___clang_call_terminate
Lfunc_end3:
.cfi_endproc
.section __TEXT,__gcc_except_tab
.p2align 2
GCC_except_table41:
Lexception3:
.byte 255 ; @LPStart Encoding = omit
.byte 155 ; @TType Encoding = indirect pcrel sdata4
.uleb128 Lttbase3-Lttbaseref3
Lttbaseref3:
.byte 1 ; Call site Encoding = uleb128
.uleb128 Lcst_end3-Lcst_begin3
Lcst_begin3:
.uleb128 Lfunc_begin3-Lfunc_begin3 ; >> Call Site 1 <<
.uleb128 Ltmp46-Lfunc_begin3 ; Call between Lfunc_begin3 and Ltmp46
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
.uleb128 Ltmp46-Lfunc_begin3 ; >> Call Site 2 <<
.uleb128 Ltmp49-Ltmp46 ; Call between Ltmp46 and Ltmp49
.uleb128 Ltmp50-Lfunc_begin3 ; jumps to Ltmp50
.byte 0 ; On action: cleanup
.uleb128 Ltmp49-Lfunc_begin3 ; >> Call Site 3 <<
.uleb128 Ltmp51-Ltmp49 ; Call between Ltmp49 and Ltmp51
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
.uleb128 Ltmp51-Lfunc_begin3 ; >> Call Site 4 <<
.uleb128 Ltmp52-Ltmp51 ; Call between Ltmp51 and Ltmp52
.uleb128 Ltmp53-Lfunc_begin3 ; jumps to Ltmp53
.byte 1 ; On action: 1
.uleb128 Ltmp52-Lfunc_begin3 ; >> Call Site 5 <<
.uleb128 Lfunc_end3-Ltmp52 ; Call between Ltmp52 and Lfunc_end3
.byte 0 ; has no landing pad
.byte 0 ; On action: cleanup
Lcst_end3:
.byte 1 ; >> Action Record 1 <<
; Catch TypeInfo 1
.byte 0 ; No further actions
.p2align 2
; >> Catch TypeInfos <<
.long 0 ; TypeInfo 1
Lttbase3:
.p2align 2
; -- End function
.section __TEXT,__text,regular,pure_instructions
.private_extern __ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE ; -- Begin function _ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE
.globl __ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE
.weak_definition __ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE
.p2align 2
__ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE: ; @_ZNSt3__19use_facetB6v15006INS_5ctypeIcEEEERKT_RKNS_6localeE
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
ldr x0, [sp, #8]
adrp x1, __ZNSt3__15ctypeIcE2idE@GOTPAGE
ldr x1, [x1, __ZNSt3__15ctypeIcE2idE@GOTPAGEOFF]
bl __ZNKSt3__16locale9use_facetERNS0_2idE
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNKSt3__15ctypeIcE5widenB6v15006Ec ; -- Begin function _ZNKSt3__15ctypeIcE5widenB6v15006Ec
.globl __ZNKSt3__15ctypeIcE5widenB6v15006Ec
.weak_definition __ZNKSt3__15ctypeIcE5widenB6v15006Ec
.p2align 2
__ZNKSt3__15ctypeIcE5widenB6v15006Ec: ; @_ZNKSt3__15ctypeIcE5widenB6v15006Ec
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
strb w1, [sp, #7]
ldr x0, [sp, #8]
ldrsb w1, [sp, #7]
ldr x8, [x0]
ldr x8, [x8, #56]
blr x8
sxtb w0, w0
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.private_extern __ZNSt3__18ios_base8setstateB6v15006Ej ; -- Begin function _ZNSt3__18ios_base8setstateB6v15006Ej
.globl __ZNSt3__18ios_base8setstateB6v15006Ej
.weak_definition __ZNSt3__18ios_base8setstateB6v15006Ej
.p2align 2
__ZNSt3__18ios_base8setstateB6v15006Ej: ; @_ZNSt3__18ios_base8setstateB6v15006Ej
.cfi_startproc
; %bb.0:
sub sp, sp, #32
.cfi_def_cfa_offset 32
stp x29, x30, [sp, #16] ; 16-byte Folded Spill
add x29, sp, #16
.cfi_def_cfa w29, 16
.cfi_offset w30, -8
.cfi_offset w29, -16
str x0, [sp, #8]
str w1, [sp, #4]
ldr x0, [sp, #8]
ldr w8, [x0, #32]
ldr w9, [sp, #4]
orr w1, w8, w9
bl __ZNSt3__18ios_base5clearEj
ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
add sp, sp, #32
ret
.cfi_endproc
; -- End function
.section __TEXT,__cstring,cstring_literals
l_.str: ; @.str
.asciz "Hello World!"
.subsections_via_symbols
組合語言
#include <iostream>
int main() {
std::cout << "Hello World!"
}高階語言

機器語言
disassemble
decompile
Static Analysis
- 不執行程式碼
- 分析該程式碼的一些特性
- 大小、使用變數的情形、複雜度、效能
- 方法
- 反編譯和反組譯
- 提取並分析軟體中的可讀字串
- 文件結構分析
- 相對安全(不會跑到惡意程式)
- 效果受限(代碼混淆)
Dynamic Analysis
- 隔離的環境中執行惡意軟體
- 監控工具記錄文件操作、註冊表修改、網絡活動
- 邊執行邊調試系統,觀察運行狀態
- 在虛擬機或沙盒跑
-
離開測試用虛擬機才會發作的病毒 wannacry
-
Assembly
Assembly
Assembly 組合語言(彙編語言)
- 任一種用於電腦、微處理器、微控制器等可程式化器件的低階語言
- 可以在不同系統平台之間移植
- 介於高階語言與機器語言間的符號語言
- 組合語言仍需經由組譯器來轉譯為機器語言(0&1)
- 直接對 CPU 的暫存器進行操作
- 機器依存性:用不同指令集的 CPU 無法直接移植
x86
- 一種指令集架構(Instruction Set Architecture)
- 針對 Intel x86 架構的一種低階語言
- intel 開發 8086cpu 時做的指令集
- 最常見的指令集
Registers
暫存器
- CPU 中一種極快的內部記憶體
- CPU可以直接操作的記憶體
- 其他都要從 ram/硬碟運送過來
- 暫存數據,進行數學運算、邏輯操作等
- 常見 x86 暫存器
- General Purpose Registers
- Segment Registers
- 指標暫存器
- Flags Register
- 表示法(ex. EAX)
- eax:eax 指向的位置儲存的值
- [eax]:eax 的位置
Registers

GPR

Segment Registers


指標暫存器

Memory Models
內存模式
- x86 使用「段:位移」模型來表示內存地址
- 段暫存器保存了段的起始地址
- 位移值表示該段中的偏移量
Sections
- 不同用途的東西,放在不同的區域
- data:
- 已初始化的資料或常數
- 定義各種常數值、檔案名稱或緩衝區大小等
-
bss:
- 宣告變數
-
text:
- 放你的扣
- 必須以全域聲明
_start開頭 - 告訴內核程式執行從哪裡開始
Sections
Declaring
- data:
- bss:
- text:
section.datasection.bsssection.text
global _start
_start:Sections

hexadecimal

Instruction Set
指令集
- 叫 CPU 做事的指令
- 複雜指令集(ex. x86)
-
一個指令可能包含多個動作(ex. add = add + mov)
-
減少代碼量 省 RAM
-
每個指令執行時間不同(指令無法同步執行)
-
- ex. x86-64、ARM...
- 基本格式
function <參數1>, <參數2>, ...Instruction Set
-
資料移動指令
-
MOV:將資料從一個位置移到另一個位置 -
PUSH、POP:stack 操作指令
-
-
算術指令
-
ADD、SUB、MUL、DIV:加減乘除
-
-
邏輯指令
-
AND、OR、XOR:執行位元運算 -
NOT:取反運算
-
-
控制流指令
-
JMP:無條件跳轉 -
CMP:比較兩個操作數,並設定標誌 -
JE、JNE、JG、JL:根據比較結果進行有條件跳轉
-
Common
; mov destination, source
; 把 source 的值放到 destination 暫存器
mov eax, 0x00 ; eax = 00
mov eax, [rbp-0x4] ; eax 變成 rbp-0x4 這個位置儲存的值
mov bl, byte ptr [eax] ; <資料大小> ptr <位置>:從 <位置> 開始讀入 <資料大小> 個資料
; bl:rbx 的低 8 bits(1 byte)
; lea register, pointer
; lea = Load Effective Address
; 可用於陣列(陣列變數就是存他的起始位置)
lea eax, [address] ; lea register,pointer
lea eax, word ptr [ebx] ; 如果 ebx = 0x12345678, eax = 0x5678
lea eax, c ; 如果有一個 c 的變數 eax = c的位置Arithmetic
; inc destination
; dec destination
inc eax ; eax++
dec ebx ; ebx--
; add destination, source
; sub destination, source
add eax, 0x87 ; eax += 0x87
sub ebx, 0x69 ; ebx -= 0x69
; mul register
; div register
mul cx ; ax * cx(ax 是寫死的)
; dx:ax = ax*cx(結果可能超過 ax 位數 16 bits,用 dx 接高位)
div cx ;ax = dx:ax / cx
;dx = dx:ax % cxBitwise
; and destination, source
; or destination, source
; xor destination, source
; shl destination, count
; shr destination, count
and al, 0x03 ; al &= 0x03
or al, 0x01 ; al |= 0x01
xor al, 0x87 ; al ^= 0x87
shl al, 1 ; al 的數據左移 1 位
shr al, 1 ; al 的數據右移 1 位Conditions
cmp variable, standard
je/jne label ; jump equal / jump not equal
jg/jge label ; jump greater than / jump greater than or equal
jl/jle label ; jump less than / jump less than or equal
test register, immediate/address ; 看是否等於 0
jz/jnz label ; jump zero / jump not zero
; jmp label
; jmp registerConditions
; Conditional Jump
test cl,cl ; set ZF to 1 if cl == 0
jz 0x8004f430 ; jump if ZF == 1
; Conditional Jump with NOT
test cl, cl ; set ZF to 1 if cl == 0
jnz 0x8004f430 ; jump if ZF == 0
; or
test eax, eax ; set SF to 1 if eax < 0 (negative)
js error ; jump if SF == 1
; regular application
test al, $0F ; set ZF if "al AND $0f = 0" (here: address-align test for 16b)
jnz @destination ; jump if eax IS NOT "MODULO 16=0"Others
nop ; no operation,消耗一個 CPU 指令時間完就直接跑下一行
hlt ; 停止 CPUExample
-> 0x0804000: mov eax, 0xdeadbeef ; Register Values:
0x0804005: mov ebx, 0x1234 ; RIP = 0x0804000
0x080400a: add, rax, rbx ; RAX = 0x0
0x080400d: inc rbx ; RBX = 0x0
0x0804010: sub rax, rbx ; RCX = 0x0
0x0804013: mov rcx, rax ; RDX = 0x0Example
0x0804000: mov eax, 0xdeadbeef ; Register Values:
-> 0x0804005: mov ebx, 0x1234 ; RIP = 0x0804005
0x080400a: add, rax, rbx ; RAX = 0xdeadbeef
0x080400d: inc rbx ; RBX = 0x0
0x0804010: sub rax, rbx ; RCX = 0x0
0x0804013: mov rcx, rax ; RDX = 0x0Example
0x0804000: mov eax, 0xdeadbeef ; Register Values:
0x0804005: mov ebx, 0x1234 ; RIP = 0x080400a
-> 0x080400a: add, rax, rbx ; RAX = 0xdeadbeef
0x080400d: inc rbx ; RBX = 0x1234
0x0804010: sub rax, rbx ; RCX = 0x0
0x0804013: mov rcx, rax ; RDX = 0x0Example
0x0804000: mov eax, 0xdeadbeef ; Register Values:
0x0804005: mov ebx, 0x1234 ; RIP = 0x080400d
0x080400a: add, rax, rbx ; RAX = 0xdeadd123
-> 0x080400d: inc rbx ; RBX = 0x1234
0x0804010: sub rax, rbx ; RCX = 0x0
0x0804013: mov rcx, rax ; RDX = 0x0Example
0x0804000: mov eax, 0xdeadbeef ; Register Values:
0x0804005: mov ebx, 0x1234 ; RIP = 0x0804010
0x080400a: add, rax, rbx ; RAX = 0xdeadd123
0x080400d: inc rbx ; RBX = 0x1235
-> 0x0804010: sub rax, rbx ; RCX = 0x0
0x0804013: mov rcx, rax ; RDX = 0x0Example
0x0804000: mov eax, 0xdeadbeef ; Register Values:
0x0804005: mov ebx, 0x1234 ; RIP = 0x0804013
0x080400a: add, rax, rbx ; RAX = 0xdeadbeee
0x080400d: inc rbx ; RBX = 0x1235
0x0804010: sub rax, rbx ; RCX = 0x0
-> 0x0804013: mov rcx, rax ; RDX = 0x0Example
0x0804000: mov eax, 0xdeadbeef ; Register Values:
0x0804005: mov ebx, 0x1234 ; RIP = 0x0804005
0x080400a: add, rax, rbx ; RAX = 0xdeadbeee
0x080400d: inc rbx ; RBX = 0x1235
0x0804010: sub rax, rbx ; RCX = 0xdeadbeee
0x0804013: mov rcx, rax ; RDX = 0x0Opcode

Tools
IDA
- 安裝
- 支持插件(Pro) ex:
- IDAPython:寫出自己的腳本 自動化分析
- FindCrypt:加密法相關
- 版本
-
ida pro:要錢
- 本體許可證(1975USD)
- 任一指令集架構(2765USD)
-
ida free:免錢
- 版本較舊 不支援插件 但對新手小白很夠了
- debugger只支援安裝的系統的執行檔
- 裝在 windows:只能跑.exe / .dll
- 裝在 linux:只能 EIF
-
ida pro:要錢
IDA - Basic Usage
- F5:反編譯
- Ctrl + 放大 ; Ctrl - 縮小
- n:變數重命名
- \:隱藏轉換(ex:dword之類)
- /:註解
- shift+F12:顯示string頁面
- Ctrl-F 尋找
Tools
Static Analysis
Commands
-
strings
-
印出所有可列印字串(ascii 32-126)
-
-
-
追蹤程式進行時的 call 跟 signal
-
kali 沒有內建:
sudo apt install strace
-
-
grep
-
$ grep 你要找的字串 <filename>
-
Thank You!

CTF[3]
By Claire Pan
CTF[3]
- 106