// This file was generated by gen_asm_instrumentation.sh. Please, do not edit
// manually.
#ifdef __linux__
.section .text
#if defined(__x86_64__) || defined(__i386__)
.globl __asan_report_store1
.globl __asan_report_load1
.globl __asan_report_store2
.globl __asan_report_load2
.globl __asan_report_store4
.globl __asan_report_load4
.globl __asan_report_store8
.globl __asan_report_load8
.globl __asan_report_store16
.globl __asan_report_load16
#endif //  defined(__x86_64__) || defined(__i386__)
#if defined(__i386__)
// Sanitize 1-byte store. Takes one 4-byte address as an argument on
// stack, nothing is returned.
.globl __sanitizer_sanitize_store1
.type __sanitizer_sanitize_store1, @function
__sanitizer_sanitize_store1:
  pushl %ebp
  movl %esp, %ebp
  pushl %eax
  pushl %ecx
  pushl %edx
  pushfl
  movl 8(%ebp), %eax
  movl %eax, %ecx
  shrl $0x3, %ecx
  movb 0x20000000(%ecx), %cl
  testb %cl, %cl
  je .sanitize_store1_done
  movl %eax, %edx
  andl $0x7, %edx
  movsbl %cl, %ecx
  cmpl %ecx, %edx
  jl .sanitize_store1_done
  pushl %eax
  cld
  emms
  call __asan_report_store1@PLT
.sanitize_store1_done:
  popfl
  popl %edx
  popl %ecx
  popl %eax
  leave
  ret
// Sanitize 1-byte load. Takes one 4-byte address as an argument on
// stack, nothing is returned.
.globl __sanitizer_sanitize_load1
.type __sanitizer_sanitize_load1, @function
__sanitizer_sanitize_load1:
  pushl %ebp
  movl %esp, %ebp
  pushl %eax
  pushl %ecx
  pushl %edx
  pushfl
  movl 8(%ebp), %eax
  movl %eax, %ecx
  shrl $0x3, %ecx
  movb 0x20000000(%ecx), %cl
  testb %cl, %cl
  je .sanitize_load1_done
  movl %eax, %edx
  andl $0x7, %edx
  movsbl %cl, %ecx
  cmpl %ecx, %edx
  jl .sanitize_load1_done
  pushl %eax
  cld
  emms
  call __asan_report_load1@PLT
.sanitize_load1_done:
  popfl
  popl %edx
  popl %ecx
  popl %eax
  leave
  ret
// Sanitize 2-byte store. Takes one 4-byte address as an argument on
// stack, nothing is returned.
.globl __sanitizer_sanitize_store2
.type __sanitizer_sanitize_store2, @function
__sanitizer_sanitize_store2:
  pushl %ebp
  movl %esp, %ebp
  pushl %eax
  pushl %ecx
  pushl %edx
  pushfl
  movl 8(%ebp), %eax
  movl %eax, %ecx
  shrl $0x3, %ecx
  movb 0x20000000(%ecx), %cl
  testb %cl, %cl
  je .sanitize_store2_done
  movl %eax, %edx
  andl $0x7, %edx
  incl %edx
  movsbl %cl, %ecx
  cmpl %ecx, %edx
  jl .sanitize_store2_done
  pushl %eax
  cld
  emms
  call __asan_report_store2@PLT
.sanitize_store2_done:
  popfl
  popl %edx
  popl %ecx
  popl %eax
  leave
  ret
// Sanitize 2-byte load. Takes one 4-byte address as an argument on
// stack, nothing is returned.
.globl __sanitizer_sanitize_load2
.type __sanitizer_sanitize_load2, @function
__sanitizer_sanitize_load2:
  pushl %ebp
  movl %esp, %ebp
  pushl %eax
  pushl %ecx
  pushl %edx
  pushfl
  movl 8(%ebp), %eax
  movl %eax, %ecx
  shrl $0x3, %ecx
  movb 0x20000000(%ecx), %cl
  testb %cl, %cl
  je .sanitize_load2_done
  movl %eax, %edx
  andl $0x7, %edx
  incl %edx
  movsbl %cl, %ecx
  cmpl %ecx, %edx
  jl .sanitize_load2_done
  pushl %eax
  cld
  emms
  call __asan_report_load2@PLT
.sanitize_load2_done:
  popfl
  popl %edx
  popl %ecx
  popl %eax
  leave
  ret
// Sanitize 4-byte store. Takes one 4-byte address as an argument on
// stack, nothing is returned.
.globl __sanitizer_sanitize_store4
.type __sanitizer_sanitize_store4, @function
__sanitizer_sanitize_store4:
  pushl %ebp
  movl %esp, %ebp
  pushl %eax
  pushl %ecx
  pushl %edx
  pushfl
  movl 8(%ebp), %eax
  movl %eax, %ecx
  shrl $0x3, %ecx
  movb 0x20000000(%ecx), %cl
  testb %cl, %cl
  je .sanitize_store4_done
  movl %eax, %edx
  andl $0x7, %edx
  addl $0x3, %edx
  movsbl %cl, %ecx
  cmpl %ecx, %edx
  jl .sanitize_store4_done
  pushl %eax
  cld
  emms
  call __asan_report_store4@PLT
.sanitize_store4_done:
  popfl
  popl %edx
  popl %ecx
  popl %eax
  leave
  ret
// Sanitize 4-byte load. Takes one 4-byte address as an argument on
// stack, nothing is returned.
.globl __sanitizer_sanitize_load4
.type __sanitizer_sanitize_load4, @function
__sanitizer_sanitize_load4:
  pushl %ebp
  movl %esp, %ebp
  pushl %eax
  pushl %ecx
  pushl %edx
  pushfl
  movl 8(%ebp), %eax
  movl %eax, %ecx
  shrl $0x3, %ecx
  movb 0x20000000(%ecx), %cl
  testb %cl, %cl
  je .sanitize_load4_done
  movl %eax, %edx
  andl $0x7, %edx
  addl $0x3, %edx
  movsbl %cl, %ecx
  cmpl %ecx, %edx
  jl .sanitize_load4_done
  pushl %eax
  cld
  emms
  call __asan_report_load4@PLT
.sanitize_load4_done:
  popfl
  popl %edx
  popl %ecx
  popl %eax
  leave
  ret
// Sanitize 8-byte store. Takes one 4-byte address as an argument on
// stack, nothing is returned.
.globl __sanitizer_sanitize_store8
.type __sanitizer_sanitize_store8, @function
__sanitizer_sanitize_store8:
  pushl %ebp
  movl %esp, %ebp
  pushl %eax
  pushl %ecx
  pushfl
  movl 8(%ebp), %eax
  movl %eax, %ecx
  shrl $0x3, %ecx
  cmpb $0x0, 0x20000000(%ecx)
  je .sanitize_store8_done
  pushl %eax
  cld
  emms
  call __asan_report_store8@PLT
.sanitize_store8_done:
  popfl
  popl %ecx
  popl %eax
  leave
  ret
// Sanitize 8-byte load. Takes one 4-byte address as an argument on
// stack, nothing is returned.
.globl __sanitizer_sanitize_load8
.type __sanitizer_sanitize_load8, @function
__sanitizer_sanitize_load8:
  pushl %ebp
  movl %esp, %ebp
  pushl %eax
  pushl %ecx
  pushfl
  movl 8(%ebp), %eax
  movl %eax, %ecx
  shrl $0x3, %ecx
  cmpb $0x0, 0x20000000(%ecx)
  je .sanitize_load8_done
  pushl %eax
  cld
  emms
  call __asan_report_load8@PLT
.sanitize_load8_done:
  popfl
  popl %ecx
  popl %eax
  leave
  ret
// Sanitize 16-byte store. Takes one 4-byte address as an argument on
// stack, nothing is returned.
.globl __sanitizer_sanitize_store16
.type __sanitizer_sanitize_store16, @function
__sanitizer_sanitize_store16:
  pushl %ebp
  movl %esp, %ebp
  pushl %eax
  pushl %ecx
  pushfl
  movl 8(%ebp), %eax
  movl %eax, %ecx
  shrl $0x3, %ecx
  cmpw $0x0, 0x20000000(%ecx)
  je .sanitize_store16_done
  pushl %eax
  cld
  emms
  call __asan_report_store16@PLT
.sanitize_store16_done:
  popfl
  popl %ecx
  popl %eax
  leave
  ret
// Sanitize 16-byte load. Takes one 4-byte address as an argument on
// stack, nothing is returned.
.globl __sanitizer_sanitize_load16
.type __sanitizer_sanitize_load16, @function
__sanitizer_sanitize_load16:
  pushl %ebp
  movl %esp, %ebp
  pushl %eax
  pushl %ecx
  pushfl
  movl 8(%ebp), %eax
  movl %eax, %ecx
  shrl $0x3, %ecx
  cmpw $0x0, 0x20000000(%ecx)
  je .sanitize_load16_done
  pushl %eax
  cld
  emms
  call __asan_report_load16@PLT
.sanitize_load16_done:
  popfl
  popl %ecx
  popl %eax
  leave
  ret
#endif // defined(__i386__)
#if defined(__x86_64__)
// Sanitize 1-byte store. Takes one 8-byte address as an argument in %rdi,
// nothing is returned.
.globl __sanitizer_sanitize_store1
.type __sanitizer_sanitize_store1, @function
__sanitizer_sanitize_store1:
  leaq -128(%rsp), %rsp
  pushq %rax
  pushq %rcx
  pushfq
  movq %rdi, %rax
  shrq $0x3, %rax
  movb 0x7fff8000(%rax), %al
  test %al, %al
  je .sanitize_store1_done
  movl %edi, %ecx
  andl $0x7, %ecx
  movsbl %al, %eax
  cmpl %eax, %ecx
  jl .sanitize_store1_done
  subq $8, %rsp
  andq $-16, %rsp
  cld
  emms
  call __asan_report_store1@PLT
.sanitize_store1_done:
  popfq
  popq %rcx
  popq %rax
  leaq 128(%rsp), %rsp
  ret
// Sanitize 1-byte load. Takes one 8-byte address as an argument in %rdi,
// nothing is returned.
.globl __sanitizer_sanitize_load1
.type __sanitizer_sanitize_load1, @function
__sanitizer_sanitize_load1:
  leaq -128(%rsp), %rsp
  pushq %rax
  pushq %rcx
  pushfq
  movq %rdi, %rax
  shrq $0x3, %rax
  movb 0x7fff8000(%rax), %al
  test %al, %al
  je .sanitize_load1_done
  movl %edi, %ecx
  andl $0x7, %ecx
  movsbl %al, %eax
  cmpl %eax, %ecx
  jl .sanitize_load1_done
  subq $8, %rsp
  andq $-16, %rsp
  cld
  emms
  call __asan_report_load1@PLT
.sanitize_load1_done:
  popfq
  popq %rcx
  popq %rax
  leaq 128(%rsp), %rsp
  ret
// Sanitize 2-byte store. Takes one 8-byte address as an argument in %rdi,
// nothing is returned.
.globl __sanitizer_sanitize_store2
.type __sanitizer_sanitize_store2, @function
__sanitizer_sanitize_store2:
  leaq -128(%rsp), %rsp
  pushq %rax
  pushq %rcx
  pushfq
  movq %rdi, %rax
  shrq $0x3, %rax
  movb 0x7fff8000(%rax), %al
  test %al, %al
  je .sanitize_store2_done
  movl %edi, %ecx
  andl $0x7, %ecx
  incl %ecx
  movsbl %al, %eax
  cmpl %eax, %ecx
  jl .sanitize_store2_done
  subq $8, %rsp
  andq $-16, %rsp
  cld
  emms
  call __asan_report_store2@PLT
.sanitize_store2_done:
  popfq
  popq %rcx
  popq %rax
  leaq 128(%rsp), %rsp
  ret
// Sanitize 2-byte load. Takes one 8-byte address as an argument in %rdi,
// nothing is returned.
.globl __sanitizer_sanitize_load2
.type __sanitizer_sanitize_load2, @function
__sanitizer_sanitize_load2:
  leaq -128(%rsp), %rsp
  pushq %rax
  pushq %rcx
  pushfq
  movq %rdi, %rax
  shrq $0x3, %rax
  movb 0x7fff8000(%rax), %al
  test %al, %al
  je .sanitize_load2_done
  movl %edi, %ecx
  andl $0x7, %ecx
  incl %ecx
  movsbl %al, %eax
  cmpl %eax, %ecx
  jl .sanitize_load2_done
  subq $8, %rsp
  andq $-16, %rsp
  cld
  emms
  call __asan_report_load2@PLT
.sanitize_load2_done:
  popfq
  popq %rcx
  popq %rax
  leaq 128(%rsp), %rsp
  ret
// Sanitize 4-byte store. Takes one 8-byte address as an argument in %rdi,
// nothing is returned.
.globl __sanitizer_sanitize_store4
.type __sanitizer_sanitize_store4, @function
__sanitizer_sanitize_store4:
  leaq -128(%rsp), %rsp
  pushq %rax
  pushq %rcx
  pushfq
  movq %rdi, %rax
  shrq $0x3, %rax
  movb 0x7fff8000(%rax), %al
  test %al, %al
  je .sanitize_store4_done
  movl %edi, %ecx
  andl $0x7, %ecx
  addl $0x3, %ecx
  movsbl %al, %eax
  cmpl %eax, %ecx
  jl .sanitize_store4_done
  subq $8, %rsp
  andq $-16, %rsp
  cld
  emms
  call __asan_report_store4@PLT
.sanitize_store4_done:
  popfq
  popq %rcx
  popq %rax
  leaq 128(%rsp), %rsp
  ret
// Sanitize 4-byte load. Takes one 8-byte address as an argument in %rdi,
// nothing is returned.
.globl __sanitizer_sanitize_load4
.type __sanitizer_sanitize_load4, @function
__sanitizer_sanitize_load4:
  leaq -128(%rsp), %rsp
  pushq %rax
  pushq %rcx
  pushfq
  movq %rdi, %rax
  shrq $0x3, %rax
  movb 0x7fff8000(%rax), %al
  test %al, %al
  je .sanitize_load4_done
  movl %edi, %ecx
  andl $0x7, %ecx
  addl $0x3, %ecx
  movsbl %al, %eax
  cmpl %eax, %ecx
  jl .sanitize_load4_done
  subq $8, %rsp
  andq $-16, %rsp
  cld
  emms
  call __asan_report_load4@PLT
.sanitize_load4_done:
  popfq
  popq %rcx
  popq %rax
  leaq 128(%rsp), %rsp
  ret
// Sanitize 8-byte store. Takes one 8-byte address as an argument in %rdi,
// nothing is returned.
.globl __sanitizer_sanitize_store8
.type __sanitizer_sanitize_store8, @function
__sanitizer_sanitize_store8:
  leaq -128(%rsp), %rsp
  pushq %rax
  pushfq
  movq %rdi, %rax
  shrq $0x3, %rax
  cmpb $0x0, 0x7fff8000(%rax)
  je .sanitize_store8_done
  subq $8, %rsp
  andq $-16, %rsp
  cld
  emms
  call __asan_report_store8@PLT
.sanitize_store8_done:
  popfq
  popq %rax
  leaq 128(%rsp), %rsp
  ret
// Sanitize 8-byte load. Takes one 8-byte address as an argument in %rdi,
// nothing is returned.
.globl __sanitizer_sanitize_load8
.type __sanitizer_sanitize_load8, @function
__sanitizer_sanitize_load8:
  leaq -128(%rsp), %rsp
  pushq %rax
  pushfq
  movq %rdi, %rax
  shrq $0x3, %rax
  cmpb $0x0, 0x7fff8000(%rax)
  je .sanitize_load8_done
  subq $8, %rsp
  andq $-16, %rsp
  cld
  emms
  call __asan_report_load8@PLT
.sanitize_load8_done:
  popfq
  popq %rax
  leaq 128(%rsp), %rsp
  ret
// Sanitize 16-byte store. Takes one 8-byte address as an argument in %rdi,
// nothing is returned.
.globl __sanitizer_sanitize_store16
.type __sanitizer_sanitize_store16, @function
__sanitizer_sanitize_store16:
  leaq -128(%rsp), %rsp
  pushq %rax
  pushfq
  movq %rdi, %rax
  shrq $0x3, %rax
  cmpw $0x0, 0x7fff8000(%rax)
  je .sanitize_store16_done
  subq $8, %rsp
  andq $-16, %rsp
  cld
  emms
  call __asan_report_store16@PLT
.sanitize_store16_done:
  popfq
  popq %rax
  leaq 128(%rsp), %rsp
  ret
// Sanitize 16-byte load. Takes one 8-byte address as an argument in %rdi,
// nothing is returned.
.globl __sanitizer_sanitize_load16
.type __sanitizer_sanitize_load16, @function
__sanitizer_sanitize_load16:
  leaq -128(%rsp), %rsp
  pushq %rax
  pushfq
  movq %rdi, %rax
  shrq $0x3, %rax
  cmpw $0x0, 0x7fff8000(%rax)
  je .sanitize_load16_done
  subq $8, %rsp
  andq $-16, %rsp
  cld
  emms
  call __asan_report_load16@PLT
.sanitize_load16_done:
  popfq
  popq %rax
  leaq 128(%rsp), %rsp
  ret
#endif // defined(__x86_64__)
/* We do not need executable stack. */
#if defined(__arm__)
  .section .note.GNU-stack,"",%progbits
#else
  .section .note.GNU-stack,"",@progbits
#endif // defined(__arm__)
#endif // __linux__
