// File: /workspace/github_cpp_makefile_star2_O3/Heptagon196[P]Gos/GosAST.cpp
// Function: Gos::AST::Exp::Exp(Gos::GosTokenizer&)
Build(Exp) {
        Log(Exp);

        gosASTOffError++;
        gosASTHasError = false;
        int progress = tokenizer.GetProgress();
        tokenizer.SetErrorCallback([]() { gosASTHasError = true; return false; });

        Expect(Assign);

        tokenizer.SetErrorCallback([]() { return true; });
        gosASTOffError--;
        if (gosASTHasError) {
            delete nodes[0];
            nodes.pop_back();
        } else {
            return;
        }
        gosASTHasError = false;
        tokenizer.RestoreProgress(progress);

        Expect(Cond);
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x50, %rsp
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x7a943(%rip), %rax     # 0x11c068
movq %rax, (%rdi)
leaq 0x10(%rdi), %r14
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rdi)
movq $0x0, 0x20(%rdi)
addq $0x28, %rdi
callq 0x9e04c
leaq 0x7ae35(%rip), %rax     # 0x11c580
addq $0x10, %rax
movq %rax, (%rbx)
movl $0x0, 0x8(%rbx)
cmpb $0x0, 0x7ca90(%rip)     # 0x11e1f0
jne 0xa1887
incl 0x7ca88(%rip)           # 0x11e1f4
movb $0x0, 0x7ca7d(%rip)     # 0x11e1f0
movq %r15, %rdi
callq 0x9f1d2
movl %eax, %ebp
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rsi
movaps %xmm0, (%rsi)
leaq 0x52c3(%rip), %rax      # 0xa6a52
movq %rax, 0x18(%rsi)
leaq 0x52c2(%rip), %rax      # 0xa6a5c
movq %rax, 0x10(%rsi)
movq %r15, %rdi
callq 0x9efb4
movq 0x40(%rsp), %rax
testq %rax, %rax
je 0xa17bf
leaq 0x30(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movl $0x60, %edi
callq 0x11350
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0xa1562
leaq 0x8(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0xa6aac
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rsi
movaps %xmm0, (%rsi)
leaq 0x527b(%rip), %rax      # 0xa6a74
movq %rax, 0x18(%rsi)
leaq 0x5274(%rip), %rax      # 0xa6a78
movq %rax, 0x10(%rsi)
movq %r15, %rdi
callq 0x9efb4
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0xa1829
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
decl 0x7c9c5(%rip)           # 0x11e1f4
cmpb $0x1, 0x7c9ba(%rip)     # 0x11e1f0
jne 0xa1887
movq (%r14), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0xa1849
movq (%rdi), %rax
callq *0x18(%rax)
addq $-0x8, 0x18(%rbx)
movb $0x0, 0x7c99b(%rip)     # 0x11e1f0
movq %r15, %rdi
movl %ebp, %esi
callq 0x9f1d6
movl $0x60, %edi
callq 0x11350
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0xa131a
leaq 0x8(%rsp), %rsi
movq %r12, (%rsi)
movq %r14, %rdi
callq 0xa6aac
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0xa18bc
jmp 0xa18ec
jmp 0xa18ec
jmp 0xa18f6
movq %rax, %r15
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0xa18f9
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xa18f9
jmp 0xa18ec
movq %rax, %r15
movl $0x60, %esi
movq %r12, %rdi
callq 0x11360
jmp 0xa18f9
movq %rax, %r15
movq 0x40(%rsp), %rax
testq %rax, %rax
je 0xa18f9
leaq 0x30(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xa18f9
movq %rax, %rdi
callq 0x26e38
jmp 0xa18f6
movq %rax, %r15
movq %rbx, %rdi
callq 0x9fcf4
movq %r15, %rdi
callq 0x11580
movq %rax, %r15
movq (%r14), %rdi
testq %rdi, %rdi
je 0xa1901
movq 0x20(%rbx), %rsi
subq %rdi, %rsi
callq 0x11360
jmp 0xa1901