// File: /workspace/github_cpp_makefile_star2_O3/blak3mill3r[P]mouser/src/main.cpp
// Function: main
int main(int argc, char *argv[])
{
  Mouser xlib_loop;

  fiber xevent_fiber(  [&](){ xlib_loop.xevent_handler();  });
  fiber keyboard_fiber([&](){ xlib_loop.key_handler();     });
  fiber physics_fiber( [&](){ xlib_loop.physics_handler(); });
  fiber xtest_fiber(   [&](){ xlib_loop.xtest_handler();   });

  xlib_loop.run();
  xevent_fiber.join();
  keyboard_fiber.join();
  xtest_fiber.join();
  physics_fiber.join();

  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x198, %rsp            # imm = 0x198
leaq -0x1b8(%rbp), %rbx
movq %rbx, %rdi
callq 0x45e8
callq 0x3380
leaq -0x38(%rbp), %rdi
movq %rax, (%rdi)
callq 0x4560
movabsq $0x7fffffffffffffff, %r9 # imm = 0x7FFFFFFFFFFFFFFF
leaq -0xf8(%rdx), %r14
movq $-0x100, %rdi
andq %rdi, %r14
movq %rax, %rcx
subq %rdx, %rcx
movq $0x1, 0x8(%r14)
xorl %esi, %esi
movq %rsi, 0x10(%r14)
movl $0x1, 0x18(%r14)
movb $0x0, 0x1c(%r14)
leaq 0x20(%r14), %r8
movq %r8, 0x20(%r14)
movq %r8, 0x28(%r14)
leaq 0x58(%r14), %r8
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%r14)
movaps %xmm0, 0x40(%r14)
movaps %xmm0, 0x50(%r14)
movq %rsi, 0x60(%r14)
movq %r8, 0x68(%r14)
movq %r8, 0x70(%r14)
movups %xmm0, 0x78(%r14)
movups %xmm0, 0x88(%r14)
movups %xmm0, 0x98(%r14)
movups %xmm0, 0xa8(%r14)
movups %xmm0, 0xb8(%r14)
movups %xmm0, 0xc8(%r14)
movq %r9, 0xd8(%r14)
movabsq $0x100000008, %r13      # imm = 0x100000008
movq %r13, 0xe0(%r14)
leaq 0x7422(%rip), %r8       # 0xabf8
movq %r8, (%r14)
movq %rbx, 0xe8(%r14)
leaq -0x30(%r14), %r15
andq %rdi, %r15
movq %rax, (%r15)
movq %rdx, 0x8(%r15)
movq -0x38(%rbp), %rax
movq %rax, 0x10(%r15)
leaq 0x623(%rip), %rax       # 0x3e20
movq %rax, 0x18(%r15)
movq %rsi, 0x20(%r15)
movq %r14, 0x28(%r15)
leaq -0x40(%r15), %rdi
leaq (%rcx,%r15), %rsi
addq $-0x40, %rsi
leaq 0x651(%rip), %rdx       # 0x3e6d
callq 0x3200
testq %rax, %rax
je 0x3d3f
movq %rax, %rdi
movq %r15, %rsi
callq 0x3140
leaq -0x30(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xd0(%r14), %rcx
cmpq %rdx, %rcx
je 0x3862
movq $0x0, -0x30(%rbp)
movq (%rcx), %rdx
movq %rax, (%rcx)
leaq -0x60(%rbp), %rdi
movq %rdx, (%rdi)
callq 0x44d6
leaq -0x30(%rbp), %r15
movq %r15, %rdi
callq 0x44d6
leaq -0x58(%rbp), %rdi
movq %r14, (%rdi)
lock
incq 0x8(%r14)
callq 0x31d0
callq 0x3380
leaq -0x38(%rbp), %rdi
movq %rax, (%rdi)
callq 0x4560
leaq -0xf8(%rdx), %r12
movq $-0x100, %rdi
andq %rdi, %r12
movq %rax, %rcx
subq %rdx, %rcx
movq $0x1, 0x8(%r12)
xorl %esi, %esi
movq %rsi, 0x10(%r12)
movl $0x1, 0x18(%r12)
movb $0x0, 0x1c(%r12)
leaq 0x20(%r12), %r8
movq %r8, 0x20(%r12)
movq %r8, 0x28(%r12)
leaq 0x58(%r12), %r8
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%r12)
movaps %xmm0, 0x40(%r12)
movaps %xmm0, 0x50(%r12)
movq %rsi, 0x60(%r12)
movq %r8, 0x68(%r12)
movq %r8, 0x70(%r12)
movups %xmm0, 0x78(%r12)
movups %xmm0, 0x88(%r12)
movups %xmm0, 0x98(%r12)
movups %xmm0, 0xa8(%r12)
movups %xmm0, 0xb8(%r12)
movups %xmm0, 0xc8(%r12)
movabsq $0x7fffffffffffffff, %r8 # imm = 0x7FFFFFFFFFFFFFFF
movq %r8, 0xd8(%r12)
movq %r13, 0xe0(%r12)
leaq 0x72de(%rip), %r8       # 0xac30
movq %r8, (%r12)
movq %rbx, 0xe8(%r12)
leaq -0x30(%r12), %r14
andq %rdi, %r14
movq %rax, (%r14)
movq %rdx, 0x8(%r14)
movq -0x38(%rbp), %rax
movq %rax, 0x10(%r14)
leaq 0x64e(%rip), %rax       # 0x3fca
movq %rax, 0x18(%r14)
movq %rsi, 0x20(%r14)
movq %r12, 0x28(%r14)
leaq -0x40(%r14), %rdi
leaq (%rcx,%r14), %rsi
addq $-0x40, %rsi
leaq 0x67c(%rip), %rdx       # 0x4017
callq 0x3200
testq %rax, %rax
je 0x3d56
movq %rax, %rdi
movq %r14, %rsi
callq 0x3140
movq %rax, -0x30(%rbp)
leaq 0xd0(%r12), %rcx
cmpq %r15, %rcx
je 0x39df
movq $0x0, -0x30(%rbp)
movq (%rcx), %rdx
movq %rax, (%rcx)
leaq -0x60(%rbp), %rdi
movq %rdx, (%rdi)
callq 0x44d6
leaq -0x30(%rbp), %r14
movq %r14, %rdi
callq 0x44d6
leaq -0x50(%rbp), %rdi
movq %r12, (%rdi)
lock
incq 0x8(%r12)
callq 0x31d0
callq 0x3380
leaq -0x38(%rbp), %rdi
movq %rax, (%rdi)
callq 0x4560
leaq -0xf8(%rdx), %r15
movq $-0x100, %rdi
andq %rdi, %r15
movq %rax, %rcx
subq %rdx, %rcx
movq $0x1, 0x8(%r15)
xorl %esi, %esi
movq %rsi, 0x10(%r15)
movl $0x1, 0x18(%r15)
movb $0x0, 0x1c(%r15)
leaq 0x20(%r15), %r8
movq %r8, 0x20(%r15)
movq %r8, 0x28(%r15)
leaq 0x58(%r15), %r8
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%r15)
movaps %xmm0, 0x40(%r15)
movaps %xmm0, 0x50(%r15)
movq %rsi, 0x60(%r15)
movq %r8, 0x68(%r15)
movq %r8, 0x70(%r15)
movups %xmm0, 0x78(%r15)
movups %xmm0, 0x88(%r15)
movups %xmm0, 0x98(%r15)
movups %xmm0, 0xa8(%r15)
movups %xmm0, 0xb8(%r15)
movups %xmm0, 0xc8(%r15)
movabsq $0x7fffffffffffffff, %r8 # imm = 0x7FFFFFFFFFFFFFFF
movq %r8, 0xd8(%r15)
movq %r13, 0xe0(%r15)
leaq 0x71ae(%rip), %r8       # 0xac68
movq %r8, (%r15)
movq %rbx, 0xe8(%r15)
leaq -0x30(%r15), %r12
andq %rdi, %r12
movq %rax, (%r12)
movq %rdx, 0x8(%r12)
movq -0x38(%rbp), %rax
movq %rax, 0x10(%r12)
leaq 0x690(%rip), %rax       # 0x4174
movq %rax, 0x18(%r12)
movq %rsi, 0x20(%r12)
movq %r15, 0x28(%r12)
leaq -0x40(%r12), %rdi
leaq (%rcx,%r12), %rsi
addq $-0x40, %rsi
leaq 0x6ba(%rip), %rdx       # 0x41c1
callq 0x3200
testq %rax, %rax
je 0x3d6d
movq %rax, %rdi
movq %r12, %rsi
callq 0x3140
movq %rax, -0x30(%rbp)
leaq 0xd0(%r15), %rcx
cmpq %r14, %rcx
je 0x3b4a
movq $0x0, -0x30(%rbp)
movq (%rcx), %rdx
movq %rax, (%rcx)
leaq -0x60(%rbp), %rdi
movq %rdx, (%rdi)
callq 0x44d6
movq %r14, %rdi
callq 0x44d6
leaq -0x48(%rbp), %rdi
movq %r15, (%rdi)
lock
incq 0x8(%r15)
callq 0x31d0
callq 0x3380
leaq -0x38(%rbp), %rdi
movq %rax, (%rdi)
callq 0x4560
leaq -0xf8(%rdx), %r15
movq $-0x100, %rdi
andq %rdi, %r15
movq %rax, %rcx
subq %rdx, %rcx
movq $0x1, 0x8(%r15)
xorl %esi, %esi
movq %rsi, 0x10(%r15)
movl $0x1, 0x18(%r15)
movb $0x0, 0x1c(%r15)
leaq 0x20(%r15), %r8
movq %r8, 0x20(%r15)
movq %r8, 0x28(%r15)
leaq 0x58(%r15), %r8
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%r15)
movaps %xmm0, 0x40(%r15)
movaps %xmm0, 0x50(%r15)
movq %rsi, 0x60(%r15)
movq %r8, 0x68(%r15)
movq %r8, 0x70(%r15)
movups %xmm0, 0x78(%r15)
movups %xmm0, 0x88(%r15)
movups %xmm0, 0x98(%r15)
movups %xmm0, 0xa8(%r15)
movups %xmm0, 0xb8(%r15)
movups %xmm0, 0xc8(%r15)
movabsq $0x7fffffffffffffff, %r8 # imm = 0x7FFFFFFFFFFFFFFF
movq %r8, 0xd8(%r15)
movq %r13, 0xe0(%r15)
leaq 0x7080(%rip), %r8       # 0xaca0
movq %r8, (%r15)
movq %rbx, 0xe8(%r15)
leaq -0x30(%r15), %rbx
andq %rdi, %rbx
movq %rax, (%rbx)
movq %rdx, 0x8(%rbx)
movq -0x38(%rbp), %rax
movq %rax, 0x10(%rbx)
leaq 0x6d7(%rip), %rax       # 0x431e
movq %rax, 0x18(%rbx)
movq %rsi, 0x20(%rbx)
movq %r15, 0x28(%rbx)
leaq -0x40(%rbx), %rdi
leaq (%rcx,%rbx), %rsi
addq $-0x40, %rsi
leaq 0x705(%rip), %rdx       # 0x436b
callq 0x3200
testq %rax, %rax
je 0x3d84
movq %rax, %rdi
movq %rbx, %rsi
callq 0x3140
movq %rax, -0x30(%rbp)
leaq 0xd0(%r15), %rcx
cmpq %r14, %rcx
je 0x3ca9
movq $0x0, -0x30(%rbp)
movq (%rcx), %rdx
movq %rax, (%rcx)
leaq -0x60(%rbp), %rdi
movq %rdx, (%rdi)
callq 0x44d6
leaq -0x30(%rbp), %rdi
callq 0x44d6
leaq -0x40(%rbp), %rdi
movq %r15, (%rdi)
lock
incq 0x8(%r15)
callq 0x31d0
leaq -0x1b8(%rbp), %rdi
callq 0x47b0
leaq -0x58(%rbp), %rdi
callq 0x3230
leaq -0x50(%rbp), %rdi
callq 0x3230
leaq -0x40(%rbp), %rdi
callq 0x3230
leaq -0x48(%rbp), %rdi
callq 0x3230
cmpq $0x0, -0x40(%rbp)
jne 0x3e1b
cmpq $0x0, -0x48(%rbp)
jne 0x3e1b
cmpq $0x0, -0x50(%rbp)
jne 0x3e1b
cmpq $0x0, -0x58(%rbp)
jne 0x3e1b
leaq -0x1b8(%rbp), %rdi
callq 0x4722
xorl %eax, %eax
addq $0x198, %rsp            # imm = 0x198
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x335b(%rip), %rdi      # 0x70a1
leaq 0x32b7(%rip), %rsi      # 0x7004
leaq 0x335d(%rip), %rcx      # 0x70b1
jmp 0x3d99
leaq 0x3344(%rip), %rdi      # 0x70a1
leaq 0x32a0(%rip), %rsi      # 0x7004
leaq 0x38d0(%rip), %rcx      # 0x763b
jmp 0x3d99
leaq 0x332d(%rip), %rdi      # 0x70a1
leaq 0x3289(%rip), %rsi      # 0x7004
leaq 0x3d34(%rip), %rcx      # 0x7ab6
jmp 0x3d99
leaq 0x3316(%rip), %rdi      # 0x70a1
leaq 0x3272(%rip), %rsi      # 0x7004
leaq 0x4198(%rip), %rcx      # 0x7f31
movl $0xc2, %edx
callq 0x30d0
jmp 0x3def
movq %rax, %rbx
jmp 0x3df9
movq %rax, %rbx
jmp 0x3e00
movq %rax, %rbx
jmp 0x3e07
movq %rax, %rbx
movq %r15, %rdi
callq 0x3190
jmp 0x3df2
movq %rax, %rbx
movq %r15, %rdi
callq 0x3190
jmp 0x3df9
movq %rax, %rbx
movq %r12, %rdi
callq 0x3190
jmp 0x3e00
movq %rax, %rbx
movq %r14, %rdi
callq 0x3190
jmp 0x3e07
cmpq $0x0, -0x40(%rbp)
jne 0x3e1b
movq %rax, %rbx
cmpq $0x0, -0x48(%rbp)
jne 0x3e1b
cmpq $0x0, -0x50(%rbp)
jne 0x3e1b
cmpq $0x0, -0x58(%rbp)
jne 0x3e1b
leaq -0x1b8(%rbp), %rdi
callq 0x4722
movq %rbx, %rdi
callq 0x3370
callq 0x3060