// File: /workspace/github_cpp_makefile_star2_O2/martinda3[P]Compiler/src/JVM/JVMgenerateProgram.cpp
// Function: toyc::JVMgenerateProgram::genConstructor(toyc::JVMtargetCode*)
void JVMgenerateProgram::genConstructor(JVMtargetCode *tc) {
    method *m = new method("<init>", "V");
    m->addAccessSpec("public");
    tc->add(m);
    tc->add(new limit("stack",1));  // ATM I think is irrelevent
    tc->add(new limit("locals",1)); // ATM I think is irrelevent
//    tc->add(new line(LINE_COUNTER)); LINE_COUNTER++;    //  Bookmakr
    tc->add(new ALOAD_0());
    tc->add(new INVOKESPECIAL(OBJECT_CONSTRUCTOR));
    tc->add(new RETURN());
    tc->add(new end());
    tc->add(new blankLine());
  }

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0xd0, %rsp
movq %rdi, %rbx
movl $0x580, %edi            # imm = 0x580
callq 0x8250
movq %rax, %r14
leaq 0x59ec(%rip), %rsi      # 0x1e702
leaq 0xb0(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xd770
leaq 0x5b21(%rip), %rsi      # 0x1e850
leaq 0x90(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xd770
leaq 0xb0(%rsp), %rsi
leaq 0x90(%rsp), %rdx
movq %r14, %rdi
callq 0x15f08
leaq 0x90(%rsp), %rdi
callq 0x8478
leaq 0xb0(%rsp), %rdi
callq 0x8478
leaq 0x598f(%rip), %rsi      # 0x1e709
leaq 0x70(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xd770
leaq 0x70(%rsp), %rsi
movq %r14, %rdi
callq 0x16074
leaq 0x70(%rsp), %rdi
callq 0x8478
movq (%rbx), %rax
movq %rbx, %rdi
movq %r14, %rsi
callq *(%rax)
pushq $0x58
popq %rdi
callq 0x8250
movq %rax, %r14
leaq 0x585b(%rip), %rsi      # 0x1e618
leaq 0x50(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xd770
movb $0x1, %bpl
leaq 0x50(%rsp), %rsi
pushq $0x1
popq %rdx
movq %r14, %rdi
callq 0x16708
movq (%rbx), %rax
xorl %ebp, %ebp
movq %rbx, %rdi
movq %r14, %rsi
callq *(%rax)
leaq 0x50(%rsp), %rdi
callq 0x8478
pushq $0x58
popq %rdi
callq 0x8250
movq %rax, %r14
leaq 0x5816(%rip), %rsi      # 0x1e61e
leaq 0x30(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xd770
movb $0x1, %bpl
leaq 0x30(%rsp), %rsi
pushq $0x1
popq %rdx
movq %r14, %rdi
callq 0x16708
movq (%rbx), %rax
xorl %ebp, %ebp
movq %rbx, %rdi
movq %r14, %rsi
callq *(%rax)
leaq 0x30(%rsp), %rdi
callq 0x8478
pushq $0x10
popq %rdi
callq 0x8250
movq %rax, %r14
movq %rax, %rdi
callq 0x15638
addq $0x8, %r14
movq (%rbx), %rax
movq %rbx, %rdi
movq %r14, %rsi
callq *(%rax)
pushq $0x30
popq %rdi
callq 0x8250
movq %rax, %r14
leaq 0x149f3(%rip), %rsi     # 0x2d868
leaq 0x10(%rsp), %rdi
callq 0x82f0
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x15bb4
movq %r14, %rsi
addq $0x8, %rsi
movq (%rbx), %rax
xorl %ebp, %ebp
movq %rbx, %rdi
callq *(%rax)
leaq 0x10(%rsp), %rdi
callq 0x8478
pushq $0x10
popq %rdi
callq 0x8250
movq %rax, %r14
movq %rax, %rdi
callq 0x15090
addq $0x8, %r14
movq (%rbx), %rax
movq %rbx, %rdi
movq %r14, %rsi
callq *(%rax)
pushq $0x30
popq %rdi
callq 0x8250
movq %rax, %r14
movq %rax, %rdi
callq 0x16684
movq (%rbx), %rax
movq %rbx, %rdi
movq %r14, %rsi
callq *(%rax)
pushq $0x10
popq %rdi
callq 0x8250
leaq 0x8(%rax), %rsi
leaq 0x1205b(%rip), %rcx     # 0x2af58
leaq 0x10(%rcx), %rdx
movq %rdx, (%rax)
addq $0x28, %rcx
movq %rcx, 0x8(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
callq *(%rax)
addq $0xd0, %rsp
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x18f24
jmp 0x18f29
movq %rax, %rbx
jmp 0x18f8b
movq %rax, %rbx
pushq $0x10
jmp 0x18fad
jmp 0x18f32
movq %rax, %rbx
jmp 0x18fab
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x8478
jmp 0x18fb6
movq %rax, %rbx
jmp 0x18fb6
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x8478
jmp 0x18f60
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x8478
jmp 0x18f72
movq %rax, %rbx
movl $0x580, %esi            # imm = 0x580
jmp 0x18fae
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x8478
testb %bpl, %bpl
je 0x18fb6
pushq $0x30
jmp 0x18fad
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x18fa1
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x8478
testb %bpl, %bpl
je 0x18fb6
pushq $0x58
popq %rsi
movq %r14, %rdi
callq 0x8260
movq %rbx, %rdi
callq 0x8400