.text
.intel_syntax noprefix
.file "test_string_compare.cpp"
.globl compare_string
.align 16, 0x90
.type compare_string,@function
compare_string: # @compare_string
.cfi_startproc
# BB#0:
mov al, byte ptr [rdi]
test al, al
je .LBB0_4
# BB#1: # %.lr.ph.preheader
inc rdi
.align 16, 0x90
.LBB0_2: # %.lr.ph
# =>This Inner Loop Header: Depth=1
movzx ecx, byte ptr [rsi]
movzx edx, al
cmp edx, ecx
jne .LBB0_5
# BB#3: # in Loop: Header=BB0_2 Depth=1
inc rsi
mov al, byte ptr [rdi]
inc rdi
test al, al
jne .LBB0_2
.LBB0_4:
xor eax, eax
.LBB0_5: # %.critedge
movzx ecx, byte ptr [rsi]
movzx eax, al
cmp eax, ecx
sete al
ret
.Lfunc_end0:
.size compare_string, .Lfunc_end0-compare_string
.cfi_endproc
.globl main
.align 16, 0x90
.type main,@function
main: # @main
.Lfunc_begin0:
.cfi_startproc
.cfi_personality 3, __gxx_personality_v0
.cfi_lsda 3, .Lexception0
# BB#0:
push rbp
.Ltmp43:
.cfi_def_cfa_offset 16
push r15
.Ltmp44:
.cfi_def_cfa_offset 24
push r14
.Ltmp45:
.cfi_def_cfa_offset 32
push r12
.Ltmp46:
.cfi_def_cfa_offset 40
push rbx
.Ltmp47:
.cfi_def_cfa_offset 48
sub rsp, 64
.Ltmp48:
.cfi_def_cfa_offset 112
.Ltmp49:
.cfi_offset rbx, -48
.Ltmp50:
.cfi_offset r12, -40
.Ltmp51:
.cfi_offset r14, -32
.Ltmp52:
.cfi_offset r15, -24
.Ltmp53:
.cfi_offset rbp, -16
lea r15, [rsp + 48]
mov qword ptr [rsp + 32], r15
mov qword ptr [rsp + 40], 0
mov byte ptr [rsp + 48], 0
lea r12, [rsp + 16]
mov qword ptr [rsp], r12
mov qword ptr [rsp + 8], 0
mov byte ptr [rsp + 16], 0
.Ltmp0:
mov edi, _ZSt4cout
mov esi, .L.str
mov edx, 16
call _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp1:
# BB#1: # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
mov rax, qword ptr [rip + _ZSt4cout]
mov rax, qword ptr [rax - 24]
mov rbx, qword ptr [rax + _ZSt4cout+240]
test rbx, rbx
je .LBB1_2
.LBB1_3: # %.noexc34
cmp byte ptr [rbx + 56], 0
je .LBB1_5
# BB#4:
mov al, byte ptr [rbx + 67]
jmp .LBB1_7
.LBB1_5:
.Ltmp2:
mov rdi, rbx
call _ZNKSt5ctypeIcE13_M_widen_initEv
.Ltmp3:
# BB#6: # %.noexc38
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax + 48]
.Ltmp4:
mov esi, 10
mov rdi, rbx
call rax
.Ltmp5:
.LBB1_7: # %.noexc
.Ltmp6:
movsx esi, al
mov edi, _ZSt4cout
call _ZNSo3putEc
.Ltmp7:
# BB#8: # %.noexc4
.Ltmp8:
mov rdi, rax
call _ZNSo5flushEv
.Ltmp9:
# BB#9: # %_ZNSolsEPFRSoS_E.exit
.Ltmp10:
lea rsi, [rsp + 32]
mov edi, _ZSt3cin
call _ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE
.Ltmp11:
# BB#10:
.Ltmp12:
mov edi, _ZSt4cout
mov esi, .L.str.1
mov edx, 16
call _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp13:
# BB#11: # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit8
mov rax, qword ptr [rip + _ZSt4cout]
mov rax, qword ptr [rax - 24]
mov rbx, qword ptr [rax + _ZSt4cout+240]
test rbx, rbx
je .LBB1_12
.LBB1_13: # %.noexc17
cmp byte ptr [rbx + 56], 0
je .LBB1_15
# BB#14:
mov al, byte ptr [rbx + 67]
jmp .LBB1_17
.LBB1_15:
.Ltmp14:
mov rdi, rbx
call _ZNKSt5ctypeIcE13_M_widen_initEv
.Ltmp15:
# BB#16: # %.noexc19
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax + 48]
.Ltmp16:
mov esi, 10
mov rdi, rbx
call rax
.Ltmp17:
.LBB1_17: # %.noexc11
.Ltmp18:
movsx esi, al
mov edi, _ZSt4cout
call _ZNSo3putEc
.Ltmp19:
# BB#18: # %.noexc12
.Ltmp20:
mov rdi, rax
call _ZNSo5flushEv
.Ltmp21:
# BB#19: # %_ZNSolsEPFRSoS_E.exit10
.Ltmp22:
lea rsi, [rsp]
mov edi, _ZSt3cin
call _ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE
.Ltmp23:
# BB#20:
mov rcx, qword ptr [rsp + 32]
mov rax, qword ptr [rsp]
mov bl, byte ptr [rcx]
test bl, bl
je .LBB1_24
# BB#21: # %.lr.ph.i.preheader
inc rcx
.align 16, 0x90
.LBB1_22: # %.lr.ph.i
# =>This Inner Loop Header: Depth=1
movzx edx, byte ptr [rax]
movzx esi, bl
cmp esi, edx
jne .LBB1_25
# BB#23: # in Loop: Header=BB1_22 Depth=1
inc rax
mov bl, byte ptr [rcx]
inc rcx
test bl, bl
jne .LBB1_22
.LBB1_24:
xor ebx, ebx
.LBB1_25: # %compare_string.exit
mov bpl, byte ptr [rax]
.Ltmp24:
mov edi, _ZSt4cout
mov esi, .L.str.2
mov edx, 15
call _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp25:
# BB#26: # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit22
movzx eax, bpl
movzx ecx, bl
cmp ecx, eax
sete al
movzx esi, al
.Ltmp26:
mov edi, _ZSt4cout
call _ZNSo9_M_insertIbEERSoT_
mov r14, rax
.Ltmp27:
# BB#27: # %_ZNSolsEb.exit
mov rax, qword ptr [r14]
mov rax, qword ptr [rax - 24]
mov rbx, qword ptr [r14 + rax + 240]
test rbx, rbx
je .LBB1_28
.LBB1_29: # %.noexc42
cmp byte ptr [rbx + 56], 0
je .LBB1_31
# BB#30:
mov al, byte ptr [rbx + 67]
jmp .LBB1_33
.LBB1_31:
.Ltmp28:
mov rdi, rbx
call _ZNKSt5ctypeIcE13_M_widen_initEv
.Ltmp29:
# BB#32: # %.noexc46
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax + 48]
.Ltmp30:
mov esi, 10
mov rdi, rbx
call rax
.Ltmp31:
.LBB1_33: # %.noexc26
.Ltmp32:
movsx esi, al
mov rdi, r14
call _ZNSo3putEc
.Ltmp33:
# BB#34: # %.noexc27
.Ltmp34:
mov rdi, rax
call _ZNSo5flushEv
.Ltmp35:
# BB#35: # %_ZNSolsEPFRSoS_E.exit25
mov rdi, qword ptr [rsp]
cmp rdi, r12
je .LBB1_37
# BB#36:
call _ZdlPv
.LBB1_37: # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit32
mov rdi, qword ptr [rsp + 32]
cmp rdi, r15
je .LBB1_39
# BB#38:
call _ZdlPv
.LBB1_39: # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit3
xor eax, eax
add rsp, 64
pop rbx
pop r12
pop r14
pop r15
pop rbp
ret
.LBB1_2:
.Ltmp40:
call _ZSt16__throw_bad_castv
.Ltmp41:
jmp .LBB1_3
.LBB1_12:
.Ltmp38:
call _ZSt16__throw_bad_castv
.Ltmp39:
jmp .LBB1_13
.LBB1_28:
.Ltmp36:
call _ZSt16__throw_bad_castv
.Ltmp37:
jmp .LBB1_29
.LBB1_40:
.Ltmp42:
mov rbx, rax
mov rdi, qword ptr [rsp]
cmp rdi, r12
je .LBB1_42
# BB#41:
call _ZdlPv
.LBB1_42: # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit33
mov rdi, qword ptr [rsp + 32]
cmp rdi, r15
je .LBB1_44
# BB#43:
call _ZdlPv
.LBB1_44: # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit
mov rdi, rbx
call _Unwind_Resume
.Lfunc_end1:
.size main, .Lfunc_end1-main
.cfi_endproc
.section .gcc_except_table,"a",@progbits
.align 4
GCC_except_table1:
.Lexception0:
.byte 255 # @LPStart Encoding = omit
.byte 3 # @TType Encoding = udata4
.asciz "\234" # @TType base offset
.byte 3 # Call site Encoding = udata4
.byte 26 # Call site table length
.long .Ltmp0-.Lfunc_begin0 # >> Call Site 1 <<
.long .Ltmp37-.Ltmp0 # Call between .Ltmp0 and .Ltmp37
.long .Ltmp42-.Lfunc_begin0 # jumps to .Ltmp42
.byte 0 # On action: cleanup
.long .Ltmp37-.Lfunc_begin0 # >> Call Site 2 <<
.long .Lfunc_end1-.Ltmp37 # Call between .Ltmp37 and .Lfunc_end1
.long 0 # has no landing pad
.byte 0 # On action: cleanup
.align 4
.section .text.startup,"ax",@progbits
.align 16, 0x90
.type _GLOBAL__sub_I_test_string_compare.cpp,@function
_GLOBAL__sub_I_test_string_compare.cpp: # @_GLOBAL__sub_I_test_string_compare.cpp
.cfi_startproc
# BB#0:
push rax
.Ltmp54:
.cfi_def_cfa_offset 16
mov edi, _ZStL8__ioinit
call _ZNSt8ios_base4InitC1Ev
mov edi, _ZNSt8ios_base4InitD1Ev
mov esi, _ZStL8__ioinit
mov edx, __dso_handle
pop rax
jmp __cxa_atexit # TAILCALL
.Lfunc_end2:
.size _GLOBAL__sub_I_test_string_compare.cpp, .Lfunc_end2-_GLOBAL__sub_I_test_string_compare.cpp
.cfi_endproc
.type _ZStL8__ioinit,@object # @_ZStL8__ioinit
.local _ZStL8__ioinit
.comm _ZStL8__ioinit,1,1
.type .L.str,@object # @.str
.section .rodata.str1.1,"aMS",@progbits,1
.L.str:
.asciz "Enter string 1: "
.size .L.str, 17
.type .L.str.1,@object # @.str.1
.L.str.1:
.asciz "Enter string 2: "
.size .L.str.1, 17
.type .L.str.2,@object # @.str.2
.L.str.2:
.asciz "The result is: "
.size .L.str.2, 16
.section .init_array,"aw",@init_array
.align 8
.quad _GLOBAL__sub_I_test_string_compare.cpp
.ident "clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)"
.section ".note.GNU-stack","",@progbits