// File: /workspace/github_c_makefile_star2_O0/KhuramAli[P]JAM-Benchmark/lock_and_lockfree/code13.cpp
// Function: threadfunc_atomic_weak()
void threadfunc_atomic_weak()
    {
      start_wait();
      // Wait until main() sends data
      long i;
      uint64_t next;
      for (i = 1; i <= count; i++) {
        do {
          next = atomic_uint.load(std::memory_order_relaxed);
        }
        while (!atomic_uint.compare_exchange_weak(next,
                                                  next + 1,
                                                  std::memory_order_release,
                                                  std::memory_order_relaxed));
      }
    }

// Assembly:
subq $0x178, %rsp            # imm = 0x178
callq 0x2430
movq $0x1, 0x128(%rsp)
movq 0x128(%rsp), %rax
cmpq 0x6181(%rip), %rax      # 0x91b8
jg 0x3808
jmp 0x303f
leaq 0x616a(%rip), %rax      # 0x91b0
movq %rax, 0x140(%rsp)
movl $0x0, 0x13c(%rsp)
movq 0x140(%rsp), %rax
movq %rax, 0x110(%rsp)
movl 0x13c(%rsp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x44e0
movl %eax, 0x138(%rsp)
movl 0x13c(%rsp), %eax
movl %eax, 0x11c(%rsp)
decl %eax
subl $0x2, %eax
jb 0x30bb
jmp 0x3098
movl 0x11c(%rsp), %eax
subl $0x5, %eax
je 0x30d0
jmp 0x30a6
movq 0x110(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x130(%rsp)
jmp 0x30e3
movq 0x110(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x130(%rsp)
jmp 0x30e3
movq 0x110(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x130(%rsp)
movq 0x130(%rsp), %rax
movq %rax, 0x120(%rsp)
movq 0x120(%rsp), %rax
incq %rax
leaq 0x60ab(%rip), %rcx      # 0x91b0
movq %rcx, 0x170(%rsp)
leaq 0x120(%rsp), %rcx
movq %rcx, 0x168(%rsp)
movq %rax, 0x160(%rsp)
movl $0x3, 0x15c(%rsp)
movl $0x0, 0x158(%rsp)
movq 0x170(%rsp), %rax
movq %rax, 0xf0(%rsp)
movl 0x15c(%rsp), %eax
movq 0x168(%rsp), %rcx
movq %rcx, 0xf8(%rsp)
movq 0x160(%rsp), %rcx
movq %rcx, 0x150(%rsp)
movl 0x158(%rsp), %ecx
movl %ecx, 0x104(%rsp)
decl %eax
movl %eax, %ecx
movq %rcx, 0x108(%rsp)
subl $0x4, %eax
ja 0x31a9
movq 0x108(%rsp), %rax
leaq 0x2e84(%rip), %rcx      # 0x6024
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl 0x104(%rsp), %eax
decl %eax
subl $0x2, %eax
jb 0x32b5
jmp 0x31bd
movl 0x104(%rsp), %eax
subl $0x5, %eax
je 0x32f0
jmp 0x3276
movl 0x104(%rsp), %eax
decl %eax
subl $0x2, %eax
jb 0x33de
jmp 0x31e6
movl 0x104(%rsp), %eax
subl $0x5, %eax
je 0x3419
jmp 0x339f
movl 0x104(%rsp), %eax
decl %eax
subl $0x2, %eax
jb 0x3507
jmp 0x320f
movl 0x104(%rsp), %eax
subl $0x5, %eax
je 0x353c
jmp 0x34c8
movl 0x104(%rsp), %eax
decl %eax
subl $0x2, %eax
jb 0x3612
jmp 0x3238
movl 0x104(%rsp), %eax
subl $0x5, %eax
je 0x3647
jmp 0x35d9
movl 0x104(%rsp), %eax
decl %eax
subl $0x2, %eax
jb 0x3713
jmp 0x3261
movl 0x104(%rsp), %eax
subl $0x5, %eax
je 0x3748
jmp 0x36de
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0xe7(%rsp)
movq %rcx, 0xe8(%rsp)
testb $0x1, %al
jne 0x3343
jmp 0x3330
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0xd7(%rsp)
movq %rcx, 0xd8(%rsp)
testb $0x1, %al
jne 0x3368
jmp 0x3355
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0xc7(%rsp)
movq %rcx, 0xc8(%rsp)
testb $0x1, %al
jne 0x338d
jmp 0x337a
jmp 0x37dc
movq 0xf8(%rsp), %rax
movq 0xe8(%rsp), %rcx
movq %rcx, (%rax)
movb 0xe7(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x332b
movq 0xf8(%rsp), %rax
movq 0xd8(%rsp), %rcx
movq %rcx, (%rax)
movb 0xd7(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x332b
movq 0xf8(%rsp), %rax
movq 0xc8(%rsp), %rcx
movq %rcx, (%rax)
movb 0xc7(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x332b
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0xb7(%rsp)
movq %rcx, 0xb8(%rsp)
testb $0x1, %al
jne 0x346c
jmp 0x3459
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0xa7(%rsp)
movq %rcx, 0xa8(%rsp)
testb $0x1, %al
jne 0x3491
jmp 0x347e
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0x97(%rsp)
movq %rcx, 0x98(%rsp)
testb $0x1, %al
jne 0x34b6
jmp 0x34a3
jmp 0x37dc
movq 0xf8(%rsp), %rax
movq 0xb8(%rsp), %rcx
movq %rcx, (%rax)
movb 0xb7(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x3454
movq 0xf8(%rsp), %rax
movq 0xa8(%rsp), %rcx
movq %rcx, (%rax)
movb 0xa7(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x3454
movq 0xf8(%rsp), %rax
movq 0x98(%rsp), %rcx
movq %rcx, (%rax)
movb 0x97(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x3454
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0x87(%rsp)
movq %rcx, 0x88(%rsp)
testb $0x1, %al
jne 0x3589
jmp 0x3576
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0x77(%rsp)
movq %rcx, 0x78(%rsp)
testb $0x1, %al
jne 0x35ab
jmp 0x359b
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0x67(%rsp)
movq %rcx, 0x68(%rsp)
testb $0x1, %al
jne 0x35ca
jmp 0x35ba
jmp 0x37dc
movq 0xf8(%rsp), %rax
movq 0x88(%rsp), %rcx
movq %rcx, (%rax)
movb 0x87(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x3571
movq 0xf8(%rsp), %rax
movq 0x78(%rsp), %rcx
movq %rcx, (%rax)
movb 0x77(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x3571
movq 0xf8(%rsp), %rax
movq 0x68(%rsp), %rcx
movq %rcx, (%rax)
movb 0x67(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x3571
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0x57(%rsp)
movq %rcx, 0x58(%rsp)
testb $0x1, %al
jne 0x3691
jmp 0x3681
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0x47(%rsp)
movq %rcx, 0x48(%rsp)
testb $0x1, %al
jne 0x36b0
jmp 0x36a0
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0x37(%rsp)
movq %rcx, 0x38(%rsp)
testb $0x1, %al
jne 0x36cf
jmp 0x36bf
jmp 0x37dc
movq 0xf8(%rsp), %rax
movq 0x58(%rsp), %rcx
movq %rcx, (%rax)
movb 0x57(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x367c
movq 0xf8(%rsp), %rax
movq 0x48(%rsp), %rcx
movq %rcx, (%rax)
movb 0x47(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x367c
movq 0xf8(%rsp), %rax
movq 0x38(%rsp), %rcx
movq %rcx, (%rax)
movb 0x37(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x367c
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0x27(%rsp)
movq %rcx, 0x28(%rsp)
testb $0x1, %al
jne 0x378f
jmp 0x377f
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0x17(%rsp)
movq %rcx, 0x18(%rsp)
testb $0x1, %al
jne 0x37ae
jmp 0x379e
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq (%rax), %rax
movq 0x150(%rsp), %rdx
lock
cmpxchgq %rdx, (%rcx)
movq %rax, %rcx
sete %al
movb %al, 0x7(%rsp)
movq %rcx, 0x8(%rsp)
testb $0x1, %al
jne 0x37cd
jmp 0x37bd
jmp 0x37dc
movq 0xf8(%rsp), %rax
movq 0x28(%rsp), %rcx
movq %rcx, (%rax)
movb 0x27(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x377d
movq 0xf8(%rsp), %rax
movq 0x18(%rsp), %rcx
movq %rcx, (%rax)
movb 0x17(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x377d
movq 0xf8(%rsp), %rax
movq 0x8(%rsp), %rcx
movq %rcx, (%rax)
movb 0x7(%rsp), %al
andb $0x1, %al
movb %al, 0x14f(%rsp)
jmp 0x377d
movb 0x14f(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x303f
jmp 0x37ef
movq 0x128(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x128(%rsp)
jmp 0x3028
addq $0x178, %rsp            # imm = 0x178
retq