// File: /workspace/github_cpp_makefile_star2_O1/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 0x46a4
callq 0x3390
leaq -0x38(%rbp), %rdi
movq %rax, (%rdi)
callq 0x461c
movabsq $0x7fffffffffffffff, %r12 # imm = 0x7FFFFFFFFFFFFFFF
leaq -0xf8(%rdx), %r14
movq $-0x100, %rsi
andq %rsi, %r14
movq %rax, %rcx
subq %rdx, %rcx
movq 0x77e0(%rip), %r13      # 0xaf98
addq $0x10, %r13
movq %r13, (%r14)
movq $0x1, 0x8(%r14)
xorl %edi, %edi
movq %rdi, 0x10(%r14)
movl $0x1, 0x18(%r14)
movb $0x0, 0x1c(%r14)
leaq 0x20(%r14), %r8
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%r14)
movq %r8, 0x20(%r14)
movq %r8, 0x28(%r14)
leaq 0x58(%r14), %r8
movaps %xmm0, 0x60(%r14)
movaps %xmm0, 0x70(%r14)
movaps %xmm0, 0x30(%r14)
movaps %xmm0, 0x40(%r14)
movaps %xmm0, 0x50(%r14)
movq %r8, 0x68(%r14)
movq %r8, 0x70(%r14)
movups %xmm0, 0x88(%r14)
movups %xmm0, 0x98(%r14)
movups %xmm0, 0xa8(%r14)
movups %xmm0, 0xb8(%r14)
movups %xmm0, 0xc8(%r14)
movups %xmm0, 0x78(%r14)
movq %r12, 0xd8(%r14)
movabsq $0x100000008, %r8       # imm = 0x100000008
movq %r8, 0xe0(%r14)
leaq 0x7389(%rip), %r8       # 0xabe8
movq %r8, (%r14)
movq %rbx, 0xe8(%r14)
leaq -0x30(%r14), %r15
andq %rsi, %r15
movq %rax, (%r15)
movq %rdx, 0x8(%r15)
movq -0x38(%rbp), %rax
movq %rax, 0x10(%r15)
leaq 0x656(%rip), %rax       # 0x3edc
movq %rax, 0x18(%r15)
movq %rdi, 0x20(%r15)
movq %r14, 0x28(%r15)
leaq -0x40(%r15), %rdi
leaq (%rcx,%r15), %rsi
addq $-0x40, %rsi
leaq 0x684(%rip), %rdx       # 0x3f29
callq 0x3200
testq %rax, %rax
je 0x3dfa
movq %rax, %rdi
movq %r15, %rsi
callq 0x3140
leaq -0x30(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xd0(%r14), %rcx
cmpq %rdx, %rcx
je 0x38ee
leaq -0x60(%rbp), %rdi
movq %rax, (%rdi)
movq $0x0, -0x30(%rbp)
movq (%rcx), %rdx
movq %rax, (%rcx)
movq %rdx, (%rdi)
callq 0x4592
leaq -0x30(%rbp), %r15
movq %r15, %rdi
callq 0x4592
leaq -0x58(%rbp), %rdi
movq %r14, (%rdi)
lock
incq 0x8(%r14)
callq 0x31d0
callq 0x3390
leaq -0x38(%rbp), %rdi
movq %rax, (%rdi)
callq 0x461c
leaq -0xf8(%rdx), %r14
movq $-0x100, %rsi
andq %rsi, %r14
movq %rax, %rcx
subq %rdx, %rcx
movq %r13, (%r14)
movq $0x1, 0x8(%r14)
xorl %edi, %edi
movq %rdi, 0x10(%r14)
movl $0x1, 0x18(%r14)
movb $0x0, 0x1c(%r14)
leaq 0x20(%r14), %r8
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%r14)
movq %r8, 0x20(%r14)
movq %r8, 0x28(%r14)
leaq 0x58(%r14), %r8
movaps %xmm0, 0x60(%r14)
movaps %xmm0, 0x70(%r14)
movaps %xmm0, 0x30(%r14)
movaps %xmm0, 0x40(%r14)
movaps %xmm0, 0x50(%r14)
movq %r8, 0x68(%r14)
movq %r8, 0x70(%r14)
movups %xmm0, 0x88(%r14)
movups %xmm0, 0x98(%r14)
movups %xmm0, 0xa8(%r14)
movups %xmm0, 0xb8(%r14)
movups %xmm0, 0xc8(%r14)
movups %xmm0, 0x78(%r14)
movq %r12, 0xd8(%r14)
movabsq $0x100000008, %r8       # imm = 0x100000008
movq %r8, 0xe0(%r14)
leaq 0x724a(%rip), %r8       # 0xac20
movq %r8, (%r14)
movq %rbx, 0xe8(%r14)
leaq -0x30(%r14), %r12
andq %rsi, %r12
movq %rax, (%r12)
movq %rdx, 0x8(%r12)
movq -0x38(%rbp), %rax
movq %rax, 0x10(%r12)
leaq 0x686(%rip), %rax       # 0x4086
movq %rax, 0x18(%r12)
movq %rdi, 0x20(%r12)
movq %r14, 0x28(%r12)
leaq -0x40(%r12), %rdi
leaq (%rcx,%r12), %rsi
addq $-0x40, %rsi
leaq 0x6b0(%rip), %rdx       # 0x40d3
callq 0x3200
testq %rax, %rax
je 0x3e11
movq %rax, %rdi
movq %r12, %rsi
callq 0x3140
movq %rax, -0x30(%rbp)
leaq 0xd0(%r14), %rcx
cmpq %r15, %rcx
je 0x3a69
leaq -0x60(%rbp), %rdi
movq %rax, (%rdi)
movq $0x0, -0x30(%rbp)
movq (%rcx), %rdx
movq %rax, (%rcx)
movq %rdx, (%rdi)
callq 0x4592
movq %r15, %rdi
callq 0x4592
leaq -0x50(%rbp), %rdi
movq %r14, (%rdi)
lock
incq 0x8(%r14)
callq 0x31d0
callq 0x3390
leaq -0x38(%rbp), %rdi
movq %rax, (%rdi)
callq 0x461c
movabsq $0x7fffffffffffffff, %r9 # imm = 0x7FFFFFFFFFFFFFFF
leaq -0xf8(%rdx), %r14
movq $-0x100, %rsi
andq %rsi, %r14
movq %rax, %rcx
subq %rdx, %rcx
movq %r13, (%r14)
movq $0x1, 0x8(%r14)
xorl %edi, %edi
movq %rdi, 0x10(%r14)
movl $0x1, 0x18(%r14)
movb $0x0, 0x1c(%r14)
leaq 0x20(%r14), %r8
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%r14)
movq %r8, 0x20(%r14)
movq %r8, 0x28(%r14)
leaq 0x58(%r14), %r8
movaps %xmm0, 0x60(%r14)
movaps %xmm0, 0x70(%r14)
movaps %xmm0, 0x30(%r14)
movaps %xmm0, 0x40(%r14)
movaps %xmm0, 0x50(%r14)
movq %r8, 0x68(%r14)
movq %r8, 0x70(%r14)
movups %xmm0, 0x88(%r14)
movups %xmm0, 0x98(%r14)
movups %xmm0, 0xa8(%r14)
movups %xmm0, 0xb8(%r14)
movups %xmm0, 0xc8(%r14)
movups %xmm0, 0x78(%r14)
movq %r9, 0xd8(%r14)
movabsq $0x100000008, %r8       # imm = 0x100000008
movq %r8, 0xe0(%r14)
leaq 0x7101(%rip), %r8       # 0xac58
movq %r8, (%r14)
movq %rbx, 0xe8(%r14)
leaq -0x30(%r14), %r12
andq %rsi, %r12
movq %rax, (%r12)
movq %rdx, 0x8(%r12)
movq -0x38(%rbp), %rax
movq %rax, 0x10(%r12)
leaq 0x6af(%rip), %rax       # 0x4230
movq %rax, 0x18(%r12)
movq %rdi, 0x20(%r12)
movq %r14, 0x28(%r12)
leaq -0x40(%r12), %rdi
leaq (%rcx,%r12), %rsi
addq $-0x40, %rsi
leaq 0x6d9(%rip), %rdx       # 0x427d
callq 0x3200
testq %rax, %rax
je 0x3e28
movq %rax, %rdi
movq %r12, %rsi
callq 0x3140
movq %rax, -0x30(%rbp)
leaq 0xd0(%r14), %rcx
cmpq %r15, %rcx
je 0x3bea
leaq -0x60(%rbp), %rdi
movq %rax, (%rdi)
movq $0x0, -0x30(%rbp)
movq (%rcx), %rdx
movq %rax, (%rcx)
movq %rdx, (%rdi)
callq 0x4592
movq %r15, %rdi
callq 0x4592
leaq -0x48(%rbp), %rdi
movq %r14, (%rdi)
lock
incq 0x8(%r14)
callq 0x31d0
callq 0x3390
leaq -0x38(%rbp), %rdi
movq %rax, (%rdi)
callq 0x461c
movabsq $0x7fffffffffffffff, %r9 # imm = 0x7FFFFFFFFFFFFFFF
leaq -0xf8(%rdx), %r14
movq $-0x100, %rsi
andq %rsi, %r14
movq %rax, %rcx
subq %rdx, %rcx
movq %r13, (%r14)
movq $0x1, 0x8(%r14)
xorl %edi, %edi
movq %rdi, 0x10(%r14)
movl $0x1, 0x18(%r14)
movb $0x0, 0x1c(%r14)
leaq 0x20(%r14), %r8
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%r14)
movq %r8, 0x20(%r14)
movq %r8, 0x28(%r14)
leaq 0x58(%r14), %r8
movaps %xmm0, 0x60(%r14)
movaps %xmm0, 0x70(%r14)
movaps %xmm0, 0x30(%r14)
movaps %xmm0, 0x40(%r14)
movaps %xmm0, 0x50(%r14)
movq %r8, 0x68(%r14)
movq %r8, 0x70(%r14)
movups %xmm0, 0x88(%r14)
movups %xmm0, 0x98(%r14)
movups %xmm0, 0xa8(%r14)
movups %xmm0, 0xb8(%r14)
movups %xmm0, 0xc8(%r14)
movups %xmm0, 0x78(%r14)
movq %r9, 0xd8(%r14)
movabsq $0x100000008, %r8       # imm = 0x100000008
movq %r8, 0xe0(%r14)
leaq 0x6fb8(%rip), %r8       # 0xac90
movq %r8, (%r14)
movq %rbx, 0xe8(%r14)
leaq -0x30(%r14), %rbx
andq %rsi, %rbx
movq %rax, (%rbx)
movq %rdx, 0x8(%rbx)
movq -0x38(%rbp), %rax
movq %rax, 0x10(%rbx)
leaq 0x6db(%rip), %rax       # 0x43da
movq %rax, 0x18(%rbx)
movq %rdi, 0x20(%rbx)
movq %r14, 0x28(%rbx)
leaq -0x40(%rbx), %rdi
leaq (%rcx,%rbx), %rsi
addq $-0x40, %rsi
leaq 0x709(%rip), %rdx       # 0x4427
callq 0x3200
testq %rax, %rax
je 0x3e3f
movq %rax, %rdi
movq %rbx, %rsi
callq 0x3140
movq %rax, -0x30(%rbp)
leaq 0xd0(%r14), %rcx
cmpq %r15, %rcx
je 0x3d64
leaq -0x60(%rbp), %rdi
movq %rax, (%rdi)
movq $0x0, -0x30(%rbp)
movq (%rcx), %rdx
movq %rax, (%rcx)
movq %rdx, (%rdi)
callq 0x4592
leaq -0x30(%rbp), %rdi
callq 0x4592
leaq -0x40(%rbp), %rdi
movq %r14, (%rdi)
lock
incq 0x8(%r14)
callq 0x31d0
leaq -0x1b8(%rbp), %rdi
callq 0x4880
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 0x3ed6
cmpq $0x0, -0x48(%rbp)
jne 0x3ed6
cmpq $0x0, -0x50(%rbp)
jne 0x3ed6
cmpq $0x0, -0x58(%rbp)
jne 0x3ed6
leaq -0x1b8(%rbp), %rdi
callq 0x47f2
xorl %eax, %eax
addq $0x198, %rsp            # imm = 0x198
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x32a0(%rip), %rdi      # 0x70a1
leaq 0x31fc(%rip), %rsi      # 0x7004
leaq 0x32a2(%rip), %rcx      # 0x70b1
jmp 0x3e54
leaq 0x3289(%rip), %rdi      # 0x70a1
leaq 0x31e5(%rip), %rsi      # 0x7004
leaq 0x3815(%rip), %rcx      # 0x763b
jmp 0x3e54
leaq 0x3272(%rip), %rdi      # 0x70a1
leaq 0x31ce(%rip), %rsi      # 0x7004
leaq 0x3c79(%rip), %rcx      # 0x7ab6
jmp 0x3e54
leaq 0x325b(%rip), %rdi      # 0x70a1
leaq 0x31b7(%rip), %rsi      # 0x7004
leaq 0x40dd(%rip), %rcx      # 0x7f31
movl $0xc2, %edx
callq 0x30d0
jmp 0x3eaa
movq %rax, %rbx
jmp 0x3eb4
movq %rax, %rbx
jmp 0x3ebb
movq %rax, %rbx
jmp 0x3ec2
movq %rax, %rbx
movq %r14, %rdi
callq 0x3190
jmp 0x3ead
movq %rax, %rbx
movq %r14, %rdi
callq 0x3190
jmp 0x3eb4
movq %rax, %rbx
movq %r14, %rdi
callq 0x3190
jmp 0x3ebb
movq %rax, %rbx
movq %r14, %rdi
callq 0x3190
jmp 0x3ec2
cmpq $0x0, -0x40(%rbp)
jne 0x3ed6
movq %rax, %rbx
cmpq $0x0, -0x48(%rbp)
jne 0x3ed6
cmpq $0x0, -0x50(%rbp)
jne 0x3ed6
cmpq $0x0, -0x58(%rbp)
jne 0x3ed6
leaq -0x1b8(%rbp), %rdi
callq 0x47f2
movq %rbx, %rdi
callq 0x3380
callq 0x3060
nop