// File: /workspace/github_cpp_makefile_star2_O1/AgathokakologicalBit[P]wit/src/parsing/parsing.cpp
// Function: akbit::system::parsing::(anonymous namespace)::parse_unit(akbit::system::parsing::ParserState&)
std::shared_ptr<Node> parse_unit(ParserState &state)
    {
      if (state.peek().sub_type == TokenSubType::t_brace_round_left)
      {
        state.move();
        if (state.peek().sub_type == TokenSubType::t_brace_round_right)
        {
          auto container = std::make_shared<Node>(Node::value_tuple_t{
            .entries = {},
          });
          state.move();
          return container;
        }

        auto res = parse_statement(state);
        if (not state.is_failed())
          state.consume(TokenSubType::t_brace_round_right);
        return res;
      }

      if (state.peek().sub_type == TokenSubType::t_brace_curly_left)
      {
        state.move();
        auto container = std::make_shared<Node>(Node::block_t{
          .code = {},
        });

        while (!state.is_eof() && !state.is_failed() && state.peek().sub_type != TokenSubType::t_brace_curly_right)
        {
          auto line = parse_statement(state);
          std::get<Node::block_t>(container->value).code.push_back(line);
        }
        
        if (!state.is_failed())
          state.consume(TokenSubType::t_brace_curly_right);

        return container;
      }

      if (state.peek().sub_type == TokenSubType::t_dash || state.peek().sub_type == TokenSubType::t_plus)
      {
        auto container = std::make_shared<Node>(Node::unary_operation_t{
          .operation = &parse_operator(state),
          .expression = parse_composite_unit(state),
        });
        return container;
      }

      return parse_value(state);
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x128, %rsp            # imm = 0x128
movq %rsi, %r14
movq %rdi, %r12
movq (%rsi), %rax
movq (%rax), %rbx
imulq $0x38, 0x8(%rsi), %r15
movl 0x8(%rbx,%r15), %eax
leaq 0x10(%rsp), %rdi
movl %eax, -0x8(%rdi)
movq (%rbx,%r15), %rax
movq %rax, -0x10(%rdi)
leaq 0x20(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq 0x10(%rbx,%r15), %rsi
movq 0x18(%rbx,%r15), %rdx
addq %rsi, %rdx
callq 0x6e14
addq %r15, %rbx
movq 0x30(%rbx), %rax
movq %rax, 0x30(%rsp)
movl 0x34(%rsp), %ebx
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xb707
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x31f0
leaq 0x8(%r14), %r13
cmpl $0x9, %ebx
movq %r12, 0x38(%rsp)
jne 0xb804
movq (%r14), %rax
movq 0x8(%r14), %rcx
movq 0x8(%rax), %rdx
subq (%rax), %rdx
sarq $0x3, %rdx
movabsq $0x6db6db6db6db6db7, %r12 # imm = 0x6DB6DB6DB6DB6DB7
imulq %r12, %rdx
cmpq %rdx, %rcx
jae 0xb745
incq %rcx
movq %rcx, (%r13)
movq (%rax), %rbx
imulq $0x38, (%r13), %r15
movl 0x8(%rbx,%r15), %eax
leaq 0x10(%rsp), %rdi
movl %eax, -0x8(%rdi)
movq (%rbx,%r15), %rax
movq %rax, -0x10(%rdi)
movq %rbp, (%rdi)
movq 0x10(%rbx,%r15), %rsi
movq 0x18(%rbx,%r15), %rdx
addq %rsi, %rdx
callq 0x6e14
addq %r15, %rbx
movq 0x30(%rbx), %rax
movq %rax, 0x30(%rsp)
movl 0x34(%rsp), %ebx
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xb79e
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x31f0
cmpl $0xa, %ebx
jne 0xb9ba
xorps %xmm0, %xmm0
movq %rsp, %rcx
movaps %xmm0, (%rcx)
xorl %eax, %eax
movq %rax, 0x10(%rcx)
movq 0x38(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x8(%rsi), %rdi
leaq 0x48(%rsp), %rdx
callq 0xda52
movq %rsp, %rdi
callq 0x6d5c
movq (%r14), %rax
movq 0x8(%rax), %rcx
subq (%rax), %rcx
movq 0x8(%r14), %rax
sarq $0x3, %rcx
imulq %r12, %rcx
cmpq %rcx, %rax
movq 0x38(%rsp), %r12
jae 0xbec3
incq %rax
movq %rax, (%r13)
jmp 0xbec3
movq (%r14), %rax
movq (%rax), %rbx
imulq $0x38, 0x8(%r14), %r15
movl 0x8(%rbx,%r15), %eax
leaq 0x10(%rsp), %rdi
movl %eax, -0x8(%rdi)
movq (%rbx,%r15), %rax
movq %rax, -0x10(%rdi)
movq %rbp, (%rdi)
movq 0x10(%rbx,%r15), %rsi
movq 0x18(%rbx,%r15), %rdx
addq %rsi, %rdx
callq 0x6e14
addq %r15, %rbx
movq 0x30(%rbx), %rax
movq %rax, 0x30(%rsp)
movl 0x34(%rsp), %ebx
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xb860
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x31f0
cmpl $0xf, %ebx
jne 0xba0c
movq (%r14), %rcx
movq 0x8(%r14), %rax
movq 0x8(%rcx), %rdx
subq (%rcx), %rdx
sarq $0x3, %rdx
movabsq $0x6db6db6db6db6db7, %rbp # imm = 0x6DB6DB6DB6DB6DB7
imulq %rbp, %rdx
cmpq %rdx, %rax
jae 0xb895
incq %rax
movq %rax, (%r13)
xorps %xmm0, %xmm0
movq %rsp, %rcx
movaps %xmm0, (%rcx)
xorl %eax, %eax
movq %rax, 0x10(%rcx)
movq %rax, (%r12)
leaq 0x8(%r12), %rbx
leaq 0x48(%rsp), %rdx
movq %rbx, %rdi
movq %r12, %rsi
callq 0xd176
movq %rbx, 0x40(%rsp)
movq %rsp, %rdi
callq 0x6d5c
leaq 0x48(%rsp), %r13
movq (%r14), %rax
movq 0x8(%rax), %rdx
subq (%rax), %rdx
movq 0x8(%r14), %rcx
sarq $0x3, %rdx
imulq %rbp, %rdx
decq %rdx
cmpq %rdx, %rcx
setb %dl
cmpl $0x0, 0x10(%r14)
sete %r15b
andb %dl, %r15b
cmpb $0x1, %r15b
jne 0xb954
movq (%rax), %rbx
imulq $0x38, %rcx, %r12
movl 0x8(%rbx,%r12), %eax
movl %eax, 0x8(%rsp)
movq (%rbx,%r12), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rbx,%r12), %rsi
movq 0x18(%rbx,%r12), %rdx
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0x6e14
addq %r12, %rbx
movq 0x30(%rbx), %rax
movq %rax, 0x30(%rsp)
cmpl $0x10, 0x34(%rsp)
setne %bl
movq 0x38(%rsp), %r12
jmp 0xb956
xorl %ebx, %ebx
testb %r15b, %r15b
je 0xb977
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xb977
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x31f0
testb %bl, %bl
je 0xbb94
movq %r13, %rdi
movq %r14, %rsi
callq 0x9941
movq (%r12), %rdi
addq $0x10, %rdi
callq 0xd224
movq %rax, %rdi
movq %r13, %rsi
callq 0xcf1a
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0xb8cf
callq 0x6da4
jmp 0xb8cf
movq 0x38(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x9941
cmpl $0x0, 0x10(%r14)
jne 0xbec3
leaq 0xf0(%rsp), %rdi
movq %r14, %rsi
movl $0xa, %edx
callq 0x8aca
leaq 0x110(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbec3
movq 0x110(%rsp), %rsi
jmp 0xbbd1
movq (%r14), %rax
movq (%rax), %rbx
imulq $0x38, 0x8(%r14), %r15
movl 0x8(%rbx,%r15), %eax
leaq 0x10(%rsp), %rdi
movl %eax, -0x8(%rdi)
movq (%rbx,%r15), %rax
movq %rax, -0x10(%rdi)
movq %rbp, (%rdi)
movq 0x10(%rbx,%r15), %rsi
movq 0x18(%rbx,%r15), %rdx
addq %rsi, %rdx
callq 0x6e14
addq %r15, %rbx
movq 0x30(%rbx), %rax
movq %rax, 0x30(%rsp)
movl 0x34(%rsp), %r15d
movb $0x1, %bpl
cmpl $0x12, %r15d
je 0xbabc
movq (%r14), %rax
movq (%rax), %rbx
imulq $0x38, 0x8(%r14), %r12
movl 0x8(%rbx,%r12), %eax
leaq 0x90(%rsp), %rdi
movl %eax, -0x8(%rdi)
movq (%rbx,%r12), %rax
movq %rax, -0x10(%rdi)
leaq 0xa0(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x10(%rbx,%r12), %rsi
movq 0x18(%rbx,%r12), %rdx
addq %rsi, %rdx
callq 0x6e14
addq %r12, %rbx
movq 0x30(%rbx), %rax
movq %rax, 0xb0(%rsp)
cmpl $0x11, 0xb4(%rsp)
sete %bpl
movq 0x38(%rsp), %r12
cmpl $0x12, %r15d
je 0xbae3
leaq 0xa0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbae3
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x31f0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xbaff
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x31f0
testb %bpl, %bpl
je 0xbbde
movq %r14, %rdi
callq 0xaebe
leaq 0x8(%rsp), %rdi
movq %rax, -0x8(%rdi)
movq %r14, %rsi
callq 0xb4cb
movq $0x0, (%r12)
movl $0x68, %edi
callq 0x31e0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0x10e30(%rip), %rcx     # 0x1c978
movq %rcx, (%rax)
movq %rax, %rcx
addq $0x10, %rcx
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movq (%rsp), %rdx
movq %rdx, 0x20(%rax)
movq 0x8(%rsp), %rdx
movq %rdx, 0x28(%rax)
movq 0x10(%rsp), %rdx
movq %rdx, 0x30(%rax)
testq %rdx, %rdx
je 0xbd74
movq 0x11435(%rip), %rsi     # 0x1cfb8
cmpb $0x0, (%rsi)
je 0xbd70
incl 0x8(%rdx)
jmp 0xbd74
cmpl $0x0, 0x10(%r14)
jne 0xbec3
leaq 0xb8(%rsp), %rdi
movq %r14, %rsi
movl $0x10, %edx
callq 0x8aca
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbec3
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x31f0
jmp 0xbec3
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
xorl %eax, %eax
movq %rax, 0x18(%rsp)
movb $0x0, 0x20(%rsp)
movq %rax, (%r12)
movl $0x68, %edi
callq 0x31e0
movq %r12, %rcx
movq %rax, %r12
movabsq $0x100000001, %rax      # imm = 0x100000001
movq %rax, 0x8(%r12)
leaq 0x10d5a(%rip), %rax     # 0x1c978
movq %rax, (%r12)
leaq 0x10(%r12), %rax
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%r12)
movups %xmm0, 0x20(%r12)
movups %xmm0, 0x30(%r12)
movups %xmm0, 0x40(%r12)
movups %xmm0, 0x50(%r12)
movq $0x0, 0x60(%r12)
movq %r12, 0x8(%rcx)
movq %rax, (%rcx)
movq 0x40(%r14), %rsi
cmpq 0x48(%r14), %rsi
je 0xbc73
movq 0x8(%r14), %rax
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x40(%r14)
jmp 0xbc7f
leaq 0x38(%r14), %rdi
movq %r13, %rdx
callq 0xd056
leaq 0x48(%rsp), %rdi
movq %r14, %rsi
movl $0x4, %edx
callq 0x8aca
leaq 0x10(%rsp), %r15
leaq 0x58(%rsp), %rbp
movl -0x8(%rbp), %eax
movl %eax, -0x8(%r15)
movq -0x10(%rbp), %rax
movq %rax, -0x10(%r15)
movq %r15, %rdi
movq %rbp, %rsi
callq 0x3270
movq (%rbp), %rdi
movq 0x20(%rbp), %rax
movq %rax, 0x20(%r15)
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xbcd8
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x31f0
cmpl $0x0, 0x10(%r14)
je 0xbd38
movq 0x20(%r14), %rdx
movq 0x40(%r14), %rax
movq -0x8(%rax), %rax
movq %rax, 0x8(%r14)
movl $0x0, 0x10(%r14)
leaq 0x18(%r14), %rbx
leaq 0x961f(%rip), %rcx      # 0x15321
movq %rbx, %rdi
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x32d0
leaq 0x38(%r14), %rdi
movq 0x40(%r14), %rax
leaq -0x8(%rax), %rsi
movq %rsi, 0x40(%r14)
cmpq 0x48(%r14), %rsi
movq %rdi, 0x40(%rsp)
je 0xbda0
movq 0x8(%r14), %rcx
movq %rcx, -0x8(%rax)
movq %rax, 0x40(%r14)
jmp 0xbda8
addq $-0x8, 0x40(%r14)
leaq 0x48(%rsp), %rdi
movq %rbp, (%rdi)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
callq 0x6e14
addq $0x20, %r12
leaq 0x48(%rsp), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0xd288
jmp 0xbe8d
lock
incl 0x8(%rdx)
movb $0x6, 0x58(%rax)
movl $0x0, 0x60(%rax)
movq %rax, 0x8(%r12)
movq %rcx, (%r12)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xbec3
callq 0x6da4
jmp 0xbec3
movq %r13, %rdx
callq 0xd056
leaq 0x48(%rsp), %rdi
movq %r14, %rsi
movl $0x5, %edx
callq 0x8aca
leaq 0x58(%rsp), %rbp
movl -0x8(%rbp), %eax
movl %eax, 0x8(%rsp)
movq -0x10(%rbp), %rax
movq %rax, (%rsp)
movq %r15, %rdi
movq %rbp, %rsi
callq 0x3270
movq (%rbp), %rdi
movq 0x20(%rbp), %rax
movq %rax, 0x30(%rsp)
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xbdfd
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x31f0
cmpl $0x0, 0x10(%r14)
movq 0x40(%r14), %rax
je 0xbe57
movq -0x8(%rax), %rax
movq %rax, 0x8(%r14)
movl $0x0, 0x10(%r14)
movq 0x20(%r14), %rdx
leaq 0x94fe(%rip), %rcx      # 0x15321
movq %rbx, %rdi
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x32d0
movq 0x40(%r14), %rax
leaq -0x8(%rax), %rsi
movq %rsi, 0x40(%r14)
cmpq 0x48(%r14), %rsi
je 0xbed8
movq 0x8(%r14), %rcx
movq %rcx, -0x8(%rax)
movq %rax, 0x40(%r14)
jmp 0xbee5
addq $-0x8, %rax
movq %rax, 0x40(%r14)
leaq 0x48(%rsp), %rdi
movq %rbp, (%rdi)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
callq 0x6e14
addq $0x20, %r12
leaq 0x48(%rsp), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0xd2cc
movq (%r14), %rdi
cmpq %rbp, %rdi
je 0xbea2
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x31f0
leaq 0x20(%rsp), %rbx
movq 0x10(%rsp), %rdi
cmpq %rbx, %rdi
je 0xbebe
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x31f0
movq 0x38(%rsp), %r12
movq %r12, %rax
addq $0x128, %rsp            # imm = 0x128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x40(%rsp), %rdi
movq %r13, %rdx
callq 0xd056
leaq 0x48(%rsp), %rdi
movq %r14, %rsi
movl $0x3, %edx
callq 0x8aca
leaq 0x58(%rsp), %rbp
movl -0x8(%rbp), %eax
movl %eax, 0x8(%rsp)
movq -0x10(%rbp), %rax
movq %rax, (%rsp)
movq %r15, %rdi
movq %rbp, %rsi
callq 0x3270
movq (%rbp), %rdi
movq 0x20(%rbp), %rax
movq %rax, 0x30(%rsp)
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xbf3a
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x31f0
cmpl $0x0, 0x10(%r14)
movq 0x40(%r14), %rax
je 0xbf92
movq -0x8(%rax), %rax
movq %rax, 0x8(%r14)
movl $0x0, 0x10(%r14)
movq 0x20(%r14), %rdx
leaq 0x93c1(%rip), %rcx      # 0x15321
movq %rbx, %rdi
xorl %esi, %esi
xorl %r8d, %r8d
leaq 0x20(%rsp), %rbx
callq 0x32d0
movq 0x40(%r14), %rax
leaq -0x8(%rax), %rsi
movq %rsi, 0x40(%r14)
cmpq 0x48(%r14), %rsi
je 0xbffb
movq 0x8(%r14), %rcx
movq %rcx, -0x8(%rax)
movq %rax, 0x40(%r14)
jmp 0xc008
addq $-0x8, %rax
movq %rax, 0x40(%r14)
leaq 0x48(%rsp), %rdi
movq %rbp, (%rdi)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
callq 0x6e14
addq $0x20, %r12
xorps %xmm0, %xmm0
leaq 0x48(%rsp), %r14
movups %xmm0, 0x20(%r14)
movq %r12, %rdi
movq %r14, %rsi
callq 0xd310
movq 0x28(%r14), %rdi
testq %rdi, %rdi
je 0xc0cf
movq 0x10fd4(%rip), %rax     # 0x1cfb8
cmpb $0x0, (%rax)
je 0xc0ba
movl 0xc(%rdi), %eax
leal -0x1(%rax), %ecx
movl %ecx, 0xc(%rdi)
jmp 0xc0c4
movq 0x40(%rsp), %rdi
movq %r13, %rdx
callq 0xd056
leaq 0x48(%rsp), %rdi
movq %r14, %rsi
movl $0x6, %edx
callq 0x8aca
leaq 0x58(%rsp), %r13
movl -0x8(%r13), %eax
movl %eax, 0x8(%rsp)
movq -0x10(%r13), %rax
movq %rax, (%rsp)
movq %r15, %rdi
movq %r13, %rsi
callq 0x3270
movq (%r13), %rdi
movq 0x20(%r13), %rax
movq %rax, 0x30(%rsp)
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xc05e
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x31f0
addq $-0x8, 0x40(%r14)
cmpl $0x0, 0x10(%r14)
jne 0xbea7
leaq 0x48(%rsp), %rdi
movq %r13, (%rdi)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
callq 0x6e14
addq $0x20, %r12
leaq 0x48(%rsp), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0xd368
movq (%r14), %rdi
cmpq %r13, %rdi
je 0xbea7
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x31f0
jmp 0xbea7
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
lock
xaddl %eax, 0xc(%rdi)
cmpl $0x1, %eax
jne 0xc0cf
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x48(%rsp), %rdi
jmp 0xbe90
jmp 0xc11a
jmp 0xc11a
jmp 0xc11a
jmp 0xc11a
jmp 0xc11a
jmp 0xc11a
jmp 0xc11a
jmp 0xc15c
movq %rax, %r14
movq 0x8(%r12), %rdi
jmp 0xc17b
jmp 0xc11a
movq %rax, %r14
jmp 0xc130
movq %rax, %r14
movq 0x10(%rsp), %rdi
jmp 0xc17b
jmp 0xc154
jmp 0xc154
jmp 0xc10d
movq %rax, %r14
movq %rsp, %rdi
callq 0x6d5c
jmp 0xc185
movq %rax, %r14
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0xc130
callq 0x6da4
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xc185
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x31f0
jmp 0xc185
jmp 0xc154
jmp 0xc154
jmp 0xc154
movq %rax, %rdi
callq 0x6c96
movq %rax, %r14
jmp 0xc173
movq %rax, %r14
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0xc173
callq 0x6da4
movq 0x40(%rsp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0xc185
callq 0x6da4
movq %r14, %rdi
callq 0x3350