.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