// File: /workspace/github_c_makefile_star2_O3/google[P]multichase/multichase.c
// Function: chase_critword2
static void chase_critword2(per_thread_t *t) {
  void *p = t->x.cycle[0];
  size_t offset = strtoul(t->x.extra_args, 0, 0);
  void *q = (char *)p + offset;

  do {
    x100(asm volatile("mov (%1),%0"
                      : "=r"(p)
                      : "r"(p));
         asm volatile("mov (%1),%0"
                      : "=r"(q)
                      : "r"(q));)
  } while (__sync_add_and_fetch(&t->x.count, 100));

  t->x.cycle[0] = (void *)((uintptr_t)p + (uintptr_t)q);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x8(%rdi), %r14
movq 0x58(%rdi), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x413400
addq %r14, %rax
movq (%r14), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %rcx
movq (%rax), %rax
movq (%rcx), %r14
movq (%rax), %rax
lock
subl $-0x64, 0x4(%rbx)
jne 0x408180
addq %r14, %rax
movq %rax, 0x8(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop