// File: struthj[P]Python-to-C-transpiler/main.cpp
// Function: main
int main(int argc, char const *argv[]) {

  //run yylex
   if (!yylex()) {
   //print headers
     std::cout<< "#include <iostream>" << std::endl;
     std::cout<< "int main(){\n" << std::endl;
   
     
    //print and initialize identifiers    
    for(std::vector<std::string>::reverse_iterator i = characters.rbegin(); i != characters.rend(); ++i) {
      //check for duplicate identifiers
      if (std::find(identifiers.begin(), identifiers.end(), *i) == identifiers.end()){
        identifiers.push_back(*i);
        std::cout << "double " + *i + ";" << std::endl;
      }
    }
   
   std::cout<< "\n/* Begin program */ \n" << std::endl;
 
   //print main code
   std::cout << *goalStr << std::endl;
   //ending comment
   std::cout<< "/* End program */ \n" << std::endl;
   
   //print identifier statements
   
      for(std::vector<std::string>::iterator i = identifiers.begin(); i != identifiers.end(); ++i) {
      std::cout << "std::cout << \"" + *i + ":\" << " + *i + " << std::endl;" << std::endl;
    }
    std::cout << "}" << std::endl;
    return 0;
  } else {
    return 1;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
callq 0x68b0
cmpl $0x0, %eax
jne 0x2a0e
movq 0xf9ca(%rip), %rdi      # 0x11fc8
leaq 0x9a0f(%rip), %rsi      # 0xc014
callq 0x2190
movq %rax, %rdi
movq 0xf99c(%rip), %rsi      # 0x11fb0
callq 0x21b0
movq 0xf9a8(%rip), %rdi      # 0x11fc8
leaq 0x9a01(%rip), %rsi      # 0xc028
callq 0x2190
movq %rax, %rdi
movq 0xf97a(%rip), %rsi      # 0x11fb0
callq 0x21b0
leaq -0x18(%rbp), %rdi
leaq 0xfbc2(%rip), %rsi      # 0x12208
callq 0x2ab0
leaq -0x20(%rbp), %rdi
leaq 0xfbb2(%rip), %rsi      # 0x12208
callq 0x2b30
leaq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x2b00
testb $0x1, %al
jne 0x2671
jmp 0x27c1
leaq 0xfb70(%rip), %rdi      # 0x121e8
callq 0x2c10
movq %rax, -0x30(%rbp)
leaq 0xfb60(%rip), %rdi      # 0x121e8
callq 0x2c40
movq %rax, -0x38(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x2c70
movq %rax, %rdx
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x2bc0
movq %rax, -0x28(%rbp)
leaq 0xfb33(%rip), %rdi      # 0x121e8
callq 0x2c40
movq %rax, -0x40(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x2b80
testb $0x1, %al
jne 0x26d4
jmp 0x27b1
leaq -0x18(%rbp), %rdi
movq %rdi, -0x130(%rbp)
callq 0x2c70
movq %rax, %rsi
leaq 0xfafa(%rip), %rdi      # 0x121e8
callq 0x2ca0
movq -0x130(%rbp), %rdi
callq 0x2c70
movq %rax, %rdx
leaq 0x992c(%rip), %rsi      # 0xc035
leaq -0x80(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0x2d60
movq -0x128(%rbp), %rsi
leaq 0x9964(%rip), %rdx      # 0xc08b
leaq -0x60(%rbp), %rdi
callq 0x2d10
jmp 0x2732
movq 0xf88f(%rip), %rdi      # 0x11fc8
leaq -0x60(%rbp), %rsi
callq 0x2170
movq %rax, -0x138(%rbp)
jmp 0x274b
movq -0x138(%rbp), %rdi
movq 0xf857(%rip), %rsi      # 0x11fb0
callq 0x21b0
jmp 0x2760
leaq -0x60(%rbp), %rdi
callq 0x2120
leaq -0x80(%rbp), %rdi
callq 0x2120
jmp 0x27b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x27a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x2120
leaq -0x80(%rbp), %rdi
callq 0x2120
jmp 0x2a21
jmp 0x27b3
leaq -0x18(%rbp), %rdi
callq 0x2e70
jmp 0x264b
movq 0xf800(%rip), %rdi      # 0x11fc8
leaq 0x986e(%rip), %rsi      # 0xc03d
callq 0x2190
movq %rax, %rdi
movq 0xf7d2(%rip), %rsi      # 0x11fb0
callq 0x21b0
leaq 0xfa36(%rip), %rax      # 0x12220
movq (%rax), %rsi
movq 0xf7d4(%rip), %rdi      # 0x11fc8
callq 0x2170
movq %rax, %rdi
movq 0xf7ad(%rip), %rsi      # 0x11fb0
callq 0x21b0
movq 0xf7b9(%rip), %rdi      # 0x11fc8
leaq 0x983e(%rip), %rsi      # 0xc054
callq 0x2190
movq %rax, %rdi
movq 0xf78b(%rip), %rsi      # 0x11fb0
callq 0x21b0
leaq 0xf9b7(%rip), %rdi      # 0x121e8
callq 0x2c10
movq %rax, -0x98(%rbp)
leaq 0xf9a4(%rip), %rdi      # 0x121e8
callq 0x2c40
movq %rax, -0xa0(%rbp)
leaq -0x98(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x2ea0
testb $0x1, %al
jne 0x286c
jmp 0x29e3
leaq -0x98(%rbp), %rdi
callq 0x2f30
movq %rax, %rdx
leaq 0x97e6(%rip), %rsi      # 0xc068
leaq -0x120(%rbp), %rdi
movq %rdi, -0x140(%rbp)
callq 0x2d60
movq -0x140(%rbp), %rsi
leaq 0x97d4(%rip), %rdx      # 0xc077
leaq -0x100(%rbp), %rdi
callq 0x2d10
jmp 0x28b1
leaq -0x98(%rbp), %rdi
callq 0x2f30
movq %rax, %rdx
leaq -0xe0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x2ee0
jmp 0x28d5
leaq 0x97a2(%rip), %rdx      # 0xc07e
leaq -0xc0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x2d10
jmp 0x28f1
movq 0xf6d0(%rip), %rdi      # 0x11fc8
leaq -0xc0(%rbp), %rsi
callq 0x2170
movq %rax, -0x148(%rbp)
jmp 0x290d
movq -0x148(%rbp), %rdi
movq 0xf695(%rip), %rsi      # 0x11fb0
callq 0x21b0
jmp 0x2922
leaq -0xc0(%rbp), %rdi
callq 0x2120
leaq -0xe0(%rbp), %rdi
callq 0x2120
leaq -0x100(%rbp), %rdi
callq 0x2120
leaq -0x120(%rbp), %rdi
callq 0x2120
leaq -0x98(%rbp), %rdi
callq 0x2f50
jmp 0x283d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x2120
leaq -0xe0(%rbp), %rdi
callq 0x2120
leaq -0x100(%rbp), %rdi
callq 0x2120
leaq -0x120(%rbp), %rdi
callq 0x2120
jmp 0x2a21
movq 0xf5de(%rip), %rdi      # 0x11fc8
leaq 0x969c(%rip), %rsi      # 0xc08d
callq 0x2190
movq %rax, %rdi
movq 0xf5b0(%rip), %rsi      # 0x11fb0
callq 0x21b0
movl $0x0, -0x4(%rbp)
jmp 0x2a15
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
movq -0x88(%rbp), %rdi
callq 0x22f0
nopl (%rax)