// File: 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:
subq $0xe8, %rsp
movq %rdi, 0xe0(%rsp)
movq %rsi, 0xd8(%rsp)
movq 0xe0(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0x1d1d40
movq 0x58(%rsp), %rax
leaq 0x13722b(%rip), %rcx    # 0x300530
addq $0x10, %rcx
movq %rcx, (%rax)
movl $0x0, 0x8(%rax)
testb $0x1, 0x138f46(%rip)    # 0x302260
je 0x1c9321
jmp 0x1c957a
movl 0x138f3d(%rip), %eax    # 0x302264
incl %eax
movl %eax, 0x138f35(%rip)    # 0x302264
movb $0x0, 0x138f2a(%rip)    # 0x302260
movq 0xd8(%rsp), %rdi
callq 0x1c5550
movl %eax, 0x54(%rsp)
jmp 0x1c9349
movl 0x54(%rsp), %eax
movl %eax, 0xd4(%rsp)
movq 0xd8(%rsp), %rax
movq %rax, 0x40(%rsp)
leaq 0xa0(%rsp), %rdi
movq %rdi, 0x48(%rsp)
leaq 0x9f(%rsp), %rsi
callq 0x1c95c0
movq 0x40(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0x1c52d0
jmp 0x1c938c
leaq 0xa0(%rsp), %rdi
callq 0x1c5860
movq 0x58(%rsp), %rax
addq $0x10, %rax
movq %rax, 0x30(%rsp)
movl $0x60, %edi
callq 0x13110
movq %rax, 0x38(%rsp)
jmp 0x1c93b8
movq 0x38(%rsp), %rdi
movq 0xd8(%rsp), %rsi
callq 0x1c9070
jmp 0x1c93cc
movq 0x30(%rsp), %rdi
movq 0x38(%rsp), %rax
movq %rax, 0x90(%rsp)
leaq 0x90(%rsp), %rsi
callq 0x1d1cb0
jmp 0x1c93ed
movq 0xd8(%rsp), %rax
movq %rax, 0x20(%rsp)
leaq 0x70(%rsp), %rdi
movq %rdi, 0x28(%rsp)
leaq 0x6f(%rsp), %rsi
callq 0x1c9650
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x1c52d0
jmp 0x1c941f
leaq 0x70(%rsp), %rdi
callq 0x1c5860
movl 0x138e35(%rip), %eax    # 0x302264
addl $-0x1, %eax
movl %eax, 0x138e2c(%rip)    # 0x302264
testb $0x1, 0x138e21(%rip)    # 0x302260
je 0x1c950d
movq 0x58(%rsp), %rdi
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1d1e60
movq (%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x1c9470
movq 0x18(%rsp), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x58(%rsp), %rdi
addq $0x10, %rdi
callq 0x1d1ea0
jmp 0x1c950f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x1c95a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0xa0(%rsp), %rdi
callq 0x1c5860
jmp 0x1c95a5
movq 0x38(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x60, %esi
callq 0x130c0
jmp 0x1c95a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x1c5860
jmp 0x1c95a5
jmp 0x1c957a
movb $0x0, 0x138d4a(%rip)    # 0x302260
movq 0xd8(%rsp), %rdi
movl 0xd4(%rsp), %esi
callq 0x1c5560
jmp 0x1c952c
movq 0x58(%rsp), %rax
addq $0x10, %rax
movq %rax, 0x8(%rsp)
movl $0x60, %edi
callq 0x13110
movq %rax, 0x10(%rsp)
jmp 0x1c954b
movq 0x10(%rsp), %rdi
movq 0xd8(%rsp), %rsi
callq 0x1c8d80
jmp 0x1c955f
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rax
movq %rax, 0x60(%rsp)
leaq 0x60(%rsp), %rsi
callq 0x1d1cb0
jmp 0x1c957a
addq $0xe8, %rsp
retq
movq 0x10(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x60, %esi
callq 0x130c0
movq 0x58(%rsp), %rdi
callq 0x1c6f10
movq 0xc8(%rsp), %rdi
callq 0x133f0
nopl (%rax)