// File: /workspace/github_c_makefile_star2_O3/alexj136[P]minijit/src/testing_programs.c
// Function: TestProgramVector_shift
DEFINE_VECTORABLE(TestProgram)

TestProgram *TestProgram_init(char *prog_str, int arity,
        int (*c_version)(IntRefVector *)) {

    TestProgram *tp = challoc(sizeof(TestProgram));
    tp->prog_str    = prog_str;
    tp->arity       = arity;
    tp->c_version   = c_version;
    return tp;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1f40, %rsp           # imm = 0x1F40
testq %rdi, %rdi
je 0x1909c
movl %esi, %r14d
testl %esi, %esi
js 0x18f51
movq %rdi, %rbx
movl %r14d, %r12d
movq %rbx, %rdi
callq 0x186ec
cmpl %r12d, %eax
jle 0x19004
movq %rbx, %rdi
callq 0x186ec
decl %eax
cmpq %rax, %r12
je 0x18fe8
leaq 0x1(%r12), %r15
movq %rbx, %rdi
movl %r15d, %esi
callq 0x1897f
movq 0x8(%rbx), %rcx
movq %rax, (%rcx,%r12,8)
movq %r15, %r12
testl %r14d, %r14d
jns 0x18f0d
leaq 0x20ac(%rip), %rdi      # 0x1b004
leaq 0x3c12(%rip), %rsi      # 0x1cb71
leaq 0x3c9e(%rip), %rcx      # 0x1cc04
movl $0x7, %edx
xorl %eax, %eax
callq 0x6100
leaq 0x20b3(%rip), %rdi      # 0x1b02c
leaq 0x2160(%rip), %rsi      # 0x1b0e0
xorl %eax, %eax
callq 0x6100
leaq -0x1f60(%rbp), %rbx
movq %rbx, %rdi
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x60e0
movl %eax, %r14d
movq %rbx, %rdi
movl %eax, %esi
callq 0x60b0
movq %rax, %rbx
leaq 0x2264(%rip), %rdi      # 0x1b216
callq 0x6070
testl %r14d, %r14d
jle 0x19092
movl %r14d, %r15d
leaq 0x2062(%rip), %r14      # 0x1b02c
xorl %r12d, %r12d
movq (%rbx,%r12,8), %rsi
movq %r14, %rdi
xorl %eax, %eax
callq 0x6100
incq %r12
cmpq %r12, %r15
jne 0x18fcd
jmp 0x19092
movq 0x8(%rbx), %rax
movq $0x0, (%rax,%r12,8)
addq $0x1f40, %rsp           # imm = 0x1F40
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1ff9(%rip), %rdi      # 0x1b004
leaq 0x3b5f(%rip), %rsi      # 0x1cb71
leaq 0x3beb(%rip), %rcx      # 0x1cc04
movl $0x7, %edx
xorl %eax, %eax
callq 0x6100
leaq 0x2000(%rip), %rdi      # 0x1b02c
leaq 0x20bd(%rip), %rsi      # 0x1b0f0
xorl %eax, %eax
callq 0x6100
leaq -0x1f60(%rbp), %rbx
movq %rbx, %rdi
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x60e0
movl %eax, %r14d
movq %rbx, %rdi
movl %eax, %esi
callq 0x60b0
movq %rax, %rbx
leaq 0x21b1(%rip), %rdi      # 0x1b216
callq 0x6070
testl %r14d, %r14d
jle 0x19092
movl %r14d, %r15d
leaq 0x1fb3(%rip), %r14      # 0x1b02c
xorl %r12d, %r12d
movq (%rbx,%r12,8), %rsi
movq %r14, %rdi
xorl %eax, %eax
callq 0x6100
incq %r12
cmpq %r12, %r15
jne 0x1907c
movl $0x1, %edi
callq 0x61a0
leaq 0x1f61(%rip), %rdi      # 0x1b004
leaq 0x3ac7(%rip), %rsi      # 0x1cb71
leaq 0x3b53(%rip), %rcx      # 0x1cc04
movl $0x7, %edx
xorl %eax, %eax
callq 0x6100
leaq 0x1f68(%rip), %rdi      # 0x1b02c
leaq 0x1fcf(%rip), %rsi      # 0x1b09a
xorl %eax, %eax
callq 0x6100
leaq -0x1f60(%rbp), %rbx
movq %rbx, %rdi
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x60e0
movl %eax, %r14d
movq %rbx, %rdi
movl %eax, %esi
callq 0x60b0
movq %rax, %rbx
leaq 0x2119(%rip), %rdi      # 0x1b216
callq 0x6070
testl %r14d, %r14d
jle 0x19092
movl %r14d, %r15d
leaq 0x1f1b(%rip), %r14      # 0x1b02c
xorl %r12d, %r12d
movq (%rbx,%r12,8), %rsi
movq %r14, %rdi
xorl %eax, %eax
callq 0x6100
incq %r12
cmpq %r12, %r15
jne 0x19114
jmp 0x19092