// File: /workspace/github_cpp_makefile_star2_O1/joncampbell123[P]haxcc/haxpp.cpp
// Function: accept_tokens(__gnu_cxx::__normal_iterator<token*, std::vector<token, std::allocator<token>>> const&, __gnu_cxx::__normal_iterator<token*, std::vector<token, std::allocator<token>>> const&)
bool accept_tokens(const token_string::iterator &tib,const token_string::iterator &tie) {
    bool pass = pp_pass();
    auto ti = tib;

    /* we're only looking for #preprocessor directives here that control conditional inclusion */
    if (ti != tie && tokenit_next_match_inc(ti,tie,token::PREPROC)) {
        if (tokenit_next_match_inc(ti,tie,token::IF)) {
            pp_cond_t pc; pc.on_if(pp_if_eval(ti,tie),pass);
            pp_cond_stack.push(move(pc));
        }
        else if (tokenit_next_match_inc(ti,tie,token::ELIF)) {
            if (!pp_cond_stack.empty()) {
                pp_cond_stack.top().on_elif(pp_if_eval(ti,tie));
            }
            else {
                throw invalid_argument("#else not allowed here");
            }
        }
        else if (tokenit_next_match_inc(ti,tie,token::IFDEF)) {
            const string &ident = tokenit_next_identifier(ti,tie); /* will throw exception if not! */
            pp_cond_t pc; pc.on_ifdef(is_macro(ident),pass);
            pp_cond_stack.push(move(pc));
        }
        else if (tokenit_next_match_inc(ti,tie,token::IFNDEF)) {
            const string &ident = tokenit_next_identifier(ti,tie); /* will throw exception if not! */
            pp_cond_t pc; pc.on_ifdef(!is_macro(ident),pass);
            pp_cond_stack.push(move(pc));
        }
        else if (tokenit_next_match_inc(ti,tie,token::DEFINE)) { /* some preprocessing done by the parse token code */
            const string &ident = tokenit_next_identifier(ti,tie); /* will throw exception if not! */
            macro_t macro;

            if (tokenit_next_match_inc(ti,tie,token::OPEN_PARENS)) {
                macro.parens = true;
                /* parameter list, IDENTIFIER. Final one may be __VA_ARGS__ */
                do {
                    if (ti == tie) throw invalid_argument("#define macro param list expected close parens");
                    if ((*ti).tval == token::IDENTIFIER) {
                        if (find(macro.param.begin(),macro.param.end(),(*ti).sval) == macro.param.end()) {
                            macro.param.push_back((*ti).sval);
                            ti++;
                        }
                        else {
                            throw invalid_argument(string("parameter specified more than once ") + (*ti).sval);
                        }

                        if (ti == tie) throw invalid_argument("#define macro param cut off suddenly");

                        /* allow older style param... */
                        if (tokenit_next_match_inc(ti,tie,token::DOTDOTDOT)) {
                            macro.last_param_variadic = true;
                            macro.last_param_optional = false;

                            /* this must be the last param! */
                            if (!tokenit_next_match_inc(ti,tie,token::CLOSE_PARENS))
                                throw invalid_argument("#define macro param list expected close parens after ...");

                            break;
                        }
                        else if (tokenit_next_match_inc(ti,tie,token::CLOSE_PARENS)) {
                            break;
                        }
                        else if (tokenit_next_match_inc(ti,tie,token::COMMA)) {
                            /* OK */
                        }
                    }
                    else if (tokenit_next_match_inc(ti,tie,token::DOTDOTDOT)) {
                        macro.param.push_back("__VA_ARGS__");
                        macro.last_param_variadic = true;
                        macro.last_param_optional = true;

                        /* this must be the last param! */
                        if (!tokenit_next_match_inc(ti,tie,token::CLOSE_PARENS))
                            throw invalid_argument("#define macro param list expected close parens after ...");

                        break;
                    }
                    else if (tokenit_next_match_inc(ti,tie,token::CLOSE_PARENS)) {
                        break;
                    }
                    else {
                        throw invalid_argument(string("unexpected token in macro parameter list ") + to_string(*ti));
                    }
                } while (1);
            }

            /* the tokens from here are MACROSUBST, MACROPARAM, __VA_ARGS__, __VA_OPT__ ( MACROSUBST ), STRINGIFY, AND TOKEN_PASTE.
             * There will never be an IDENTIFIER because the parameter matching has already been done. */
            while (ti != tie) {
                if ((*ti).tval == token::MACROSUBST ||
                    (*ti).tval == token::VA_ARGS ||
                    (*ti).tval == token::VA_OPT ||
                    (*ti).tval == token::COMMA ||
                    (*ti).tval == token::STRINGIFY ||
                    (*ti).tval == token::TOKEN_PASTE ||
                    (*ti).tval == token::OPEN_PARENS ||
                    (*ti).tval == token::CLOSE_PARENS) {
                    macro.subst.push_back(*ti);
                    ti++;
                }
                else if ((*ti).tval == token::MACROPARAM) {
                    if ((*ti).i.u >= (unsigned long long)macro.param.size()) throw runtime_error("macro param out of range");
                    macro.subst.push_back(*ti);
                    ti++;
                }
                else {
                    throw invalid_argument(string("unexpected token in the body of a macro ") + to_string(*ti));
                }
            }

            {
                auto mi = macro_store.find(ident);
                if (mi != macro_store.end()) {
                    if (mi->second == macro)
                        macro_store[ident] = macro;
                    else
                        fprintf(stderr,"WARNING: Macro '%s' redefinition\n",ident.c_str());
                }
                else {
                    macro_store[ident] = macro;
                }
            }
        }
        else if (tokenit_next_match_inc(ti,tie,token::UNDEF)) {
            const string &ident = tokenit_next_identifier(ti,tie); /* will throw exception if not! */

            {
                auto mi = macro_store.find(ident);
                if (mi != macro_store.end())
                    macro_store.erase(mi);
            }
        }
        else if (tokenit_next_match_inc(ti,tie,token::ELSE)) {
            if (!pp_cond_stack.empty()) {
                pp_cond_stack.top().on_else();
            }
            else {
                throw invalid_argument("#else not allowed here");
            }
        }
        else if (tokenit_next_match_inc(ti,tie,token::ENDIF)) {
            if (!pp_cond_stack.empty()) {
                pp_cond_stack.pop();
                pass = pp_pass();
            }
            else {
                throw invalid_argument("too many #endif");
            }
        }
    }

    return pass;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rsi, %r14
movq 0xd334(%rip), %r15      # 0x1a360
movq 0xd30d(%rip), %rax      # 0x1a340
cmpq %rax, %r15
je 0xd05c
movq %r15, %rcx
cmpq 0xd326(%rip), %r15      # 0x1a368
jne 0xd054
movq 0xd32d(%rip), %rdx      # 0x1a378
movl $0x200, %ecx            # imm = 0x200
addq -0x8(%rdx), %rcx
movb -0x3(%rcx), %bl
andb -0x4(%rcx), %bl
jmp 0xd05e
movb $0x1, %bl
movq (%rdi), %rcx
movq %rcx, 0x8(%rsp)
movq (%r14), %rsi
cmpq %rcx, %rsi
je 0xd1e3
cmpl $0x2, (%rcx)
jne 0xd1e3
leaq 0x70(%rcx), %rdx
movq %rdx, 0x8(%rsp)
cmpq %rsi, %rdx
je 0xd0ce
cmpl $0x60, (%rdx)
jne 0xd0ce
addq $0xe0, %rcx
leaq 0x8(%rsp), %rdi
movq %rcx, (%rdi)
leaq 0x50(%rsp), %r15
movl $0x0, (%r15)
movq %r14, %rsi
callq 0xcecf
movw $0x101, 0x2(%r15)       # imm = 0x101
movb %bl, 0x1(%r15)
movb %al, (%r15)
leaq 0xd26a(%rip), %rdi      # 0x1a330
movq %r15, %rsi
jmp 0xd1de
movq 0x8(%rsp), %rcx
cmpq %rsi, %rcx
je 0xd12a
cmpl $0x61, (%rcx)
jne 0xd12a
addq $0x70, %rcx
movq %rcx, 0x8(%rsp)
cmpq %rax, %r15
je 0xd5ef
cmpq 0xd272(%rip), %r15      # 0x1a368
jne 0xd109
movq 0xd279(%rip), %rax      # 0x1a378
movl $0x200, %r15d           # imm = 0x200
addq -0x8(%rax), %r15
addq $-0x4, %r15
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0xcecf
movzbl %al, %esi
movq %r15, %rdi
callq 0x3022
jmp 0xd1e3
movq 0x8(%rsp), %rcx
cmpq %rsi, %rcx
je 0xd180
cmpl $0x64, (%rcx)
jne 0xd180
addq $0x70, %rcx
leaq 0x8(%rsp), %rdi
movq %rcx, (%rdi)
callq 0xad6a
leaq 0x50(%rsp), %r14
movl $0x0, (%r14)
leaq 0xd0b3(%rip), %rdi      # 0x1a210
movq %rax, %rsi
callq 0x10c44
leaq 0xd0ac(%rip), %rcx      # 0x1a218
cmpq %rcx, %rax
movw $0x1, 0x2(%r14)
movb %bl, 0x1(%r14)
setne (%r14)
jmp 0xd1d4
movq 0x8(%rsp), %rcx
cmpq %rsi, %rcx
je 0xd1f7
cmpl $0x65, (%rcx)
jne 0xd1f7
addq $0x70, %rcx
leaq 0x8(%rsp), %rdi
movq %rcx, (%rdi)
callq 0xad6a
leaq 0x50(%rsp), %r14
movl $0x0, (%r14)
leaq 0xd05d(%rip), %rdi      # 0x1a210
movq %rax, %rsi
callq 0x10c44
leaq 0xd056(%rip), %rcx      # 0x1a218
cmpq %rcx, %rax
movw $0x1, 0x2(%r14)
movb %bl, 0x1(%r14)
sete (%r14)
leaq 0xd155(%rip), %rdi      # 0x1a330
movq %r14, %rsi
callq 0x11c1c
movl %ebx, %eax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%rsp), %rcx
cmpq %rsi, %rcx
je 0xd31e
cmpl $0x66, (%rcx)
jne 0xd31e
addq $0x70, %rcx
leaq 0x8(%rsp), %r12
movq %rcx, (%r12)
movq %r12, %rdi
callq 0xad6a
movq %rax, %r15
xorps %xmm0, %xmm0
movaps %xmm0, 0x70(%rsp)
movaps %xmm0, 0x60(%rsp)
movaps %xmm0, 0x50(%rsp)
movl $0x0, 0x7f(%rsp)
movq (%r12), %rbp
cmpq (%r14), %rbp
je 0xd512
cmpl $0x20, (%rbp)
jne 0xd512
addq $0x70, %rbp
movq %rbp, 0x8(%rsp)
movb $0x1, 0x82(%rsp)
movq (%r14), %rcx
cmpq %rcx, %rbp
je 0xd7c7
leaq 0x68(%rsp), %r12
movl (%rbp), %eax
cmpl $0x5, %eax
jne 0xd42a
movq 0x68(%rsp), %rdi
movq 0x70(%rsp), %rsi
leaq 0x48(%rbp), %r13
movq %r13, %rdx
callq 0x113bb
cmpq 0x70(%rsp), %rax
jne 0xd655
movq %r12, %rdi
movq %r13, %rsi
callq 0xf138
leaq 0x70(%rbp), %rax
movq (%r14), %rcx
cmpq %rcx, %rax
je 0xd621
cmpl $0x19, (%rax)
je 0xd4d5
cmpq %rcx, %rax
je 0xd2d8
cmpl $0x21, (%rax)
je 0xd506
cmpq %rcx, %rax
je 0xd2ed
cmpl $0x17, 0x70(%rbp)
jne 0xd2ed
addq $0xe0, %rbp
movq %rbp, %rax
movq (%r14), %rcx
movq %rax, %rbp
cmpq %rcx, %rax
jne 0xd279
movq %rax, 0x8(%rsp)
movl $0x10, %edi
callq 0x20e0
movq %rax, %r14
leaq 0x7158(%rip), %rsi      # 0x14469
movq %rax, %rdi
callq 0x23a0
jmp 0xd642
movq 0x8(%rsp), %rcx
cmpq %rsi, %rcx
je 0xd371
cmpl $0x67, (%rcx)
jne 0xd371
addq $0x70, %rcx
leaq 0x8(%rsp), %rdi
movq %rcx, (%rdi)
callq 0xad6a
leaq 0xcecb(%rip), %rdi      # 0x1a210
movq %rax, %rsi
callq 0x10c44
leaq 0xcec4(%rip), %rcx      # 0x1a218
cmpq %rcx, %rax
je 0xd1e3
leaq 0xceac(%rip), %rdi      # 0x1a210
movq %rax, %rsi
callq 0x123d8
jmp 0xd1e3
movq 0x8(%rsp), %rcx
cmpq %rsi, %rcx
je 0xd3bd
cmpl $0x5a, (%rcx)
jne 0xd3bd
addq $0x70, %rcx
movq %rcx, 0x8(%rsp)
cmpq %rax, %r15
je 0xd785
cmpq 0xcfcf(%rip), %r15      # 0x1a368
jne 0xd3ac
movq 0xcfd6(%rip), %rax      # 0x1a378
movl $0x200, %r15d           # imm = 0x200
addq -0x8(%rax), %r15
addq $-0x4, %r15
movq %r15, %rdi
callq 0x3098
jmp 0xd1e3
movq 0x8(%rsp), %rcx
cmpq %rsi, %rcx
je 0xd1e3
cmpl $0x62, (%rcx)
jne 0xd1e3
addq $0x70, %rcx
movq %rcx, 0x8(%rsp)
cmpq %rax, %r15
je 0xd7a6
leaq 0xcf43(%rip), %rdi      # 0x1a330
callq 0x12416
movq 0xcf67(%rip), %rax      # 0x1a360
cmpq 0xcf40(%rip), %rax      # 0x1a340
je 0xd4b0
cmpq 0xcf5b(%rip), %rax      # 0x1a368
jne 0xd41f
movq 0xcf62(%rip), %rcx      # 0x1a378
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
movb -0x3(%rax), %bl
andb -0x4(%rax), %bl
jmp 0xd1e3
cmpl $0x19, %eax
jne 0xd4b7
addq $0x70, %rbp
movq %rbp, 0x8(%rsp)
leaq 0x20(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x6441(%rip), %rsi      # 0x1388e
leaq 0x6445(%rip), %rdx      # 0x13899
leaq 0x10(%rsp), %rdi
callq 0x10bb4
leaq 0x68(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x10cce
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0xd484
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21d0
movw $0x101, 0x80(%rsp)      # imm = 0x101
movq 0x8(%rsp), %rax
cmpq (%r14), %rax
je 0xd84e
cmpl $0x21, (%rax)
jne 0xd84e
addq $0x70, %rax
movq %rax, 0x8(%rsp)
jmp 0xd512
movb $0x1, %bl
jmp 0xd1e3
movq %rbp, 0x8(%rsp)
cmpq %rcx, %rbp
je 0xd7cf
cmpl $0x21, (%rbp)
jne 0xd7cf
addq $0x70, %rbp
jmp 0xd50d
leaq 0xe0(%rbp), %rax
movq %rax, 0x8(%rsp)
movw $0x1, 0x80(%rsp)
cmpq %rcx, %rax
je 0xd86f
cmpl $0x21, (%rax)
jne 0xd86f
addq $0x150, %rbp            # imm = 0x150
jmp 0xd50d
addq $0xe0, %rbp
movq %rbp, 0x8(%rsp)
movq 0x8(%rsp), %r12
cmpq (%r14), %r12
je 0xd57b
leaq 0x50(%rsp), %r13
movabsq $0x300800008, %rbp      # imm = 0x300800008
movl (%r12), %eax
cmpq $0x21, %rax
ja 0xd55b
btq %rax, %rbp
jb 0xd567
cmpq $0x4, %rax
jne 0xd55b
movq 0x70(%rsp), %rax
subq 0x68(%rsp), %rax
sarq $0x5, %rax
cmpq %rax, 0x8(%r12)
jb 0xd567
jmp 0xd6c7
addl $-0x7a, %eax
cmpl $0x4, %eax
jae 0xd6fe
movq %r13, %rdi
movq %r12, %rsi
callq 0xf1f0
addq $0x70, %r12
cmpq (%r14), %r12
jne 0xd52b
movq %r12, 0x8(%rsp)
leaq 0xcc89(%rip), %rdi      # 0x1a210
movq %r15, %rsi
callq 0x10c44
leaq 0xcc82(%rip), %rcx      # 0x1a218
cmpq %rcx, %rax
je 0xd5b0
addq $0x40, %rax
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
callq 0x310e
testb %al, %al
je 0xd5e5
leaq 0xcc59(%rip), %rdi      # 0x1a210
movq %r15, %rsi
callq 0xf23e
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
callq 0xf2ba
leaq 0x68(%rsp), %rdi
callq 0xf0dc
leaq 0x50(%rsp), %rdi
callq 0xf47c
jmp 0xd1e3
movq %r15, %rdi
callq 0x2487
jmp 0xd5cc
movl $0x10, %edi
callq 0x20e0
movq %rax, %r14
leaq 0x611a(%rip), %rsi      # 0x1371d
movq %rax, %rdi
callq 0x23a0
movq 0xc9c6(%rip), %rsi      # 0x19fd8
movq 0xc9a7(%rip), %rdx      # 0x19fc0
movq %r14, %rdi
callq 0x2330
movq %rax, 0x8(%rsp)
movl $0x10, %edi
callq 0x20e0
movq %rax, %r14
leaq 0x6e82(%rip), %rsi      # 0x144bc
movq %rax, %rdi
callq 0x23a0
movq 0xc977(%rip), %rdx      # 0x19fc0
movq 0xc988(%rip), %rsi      # 0x19fd8
jmp 0xd6f6
movq %rbp, 0x8(%rsp)
movl $0x10, %edi
callq 0x20e0
movq %rax, %r14
leaq 0x40(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x6e21(%rip), %rsi      # 0x14498
leaq 0x6e3d(%rip), %rdx      # 0x144bb
leaq 0x30(%rsp), %rdi
callq 0x10bb4
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %r13, %rdx
callq 0xee95
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x2350
xorl %ebp, %ebp
movq 0xc925(%rip), %rsi      # 0x19fd8
movq 0xc906(%rip), %rdx      # 0x19fc0
movq %r14, %rdi
callq 0x2330
jmp 0xd84e
movq %r12, 0x8(%rsp)
movl $0x10, %edi
callq 0x20e0
movq %rax, %r14
leaq 0x6e64(%rip), %rsi      # 0x14544
movq %rax, %rdi
callq 0x20b0
movq 0xc8c1(%rip), %rdx      # 0x19fb0
movq 0xc902(%rip), %rsi      # 0x19ff8
movq %r14, %rdi
callq 0x2330
movq %r12, 0x8(%rsp)
movl $0x10, %edi
callq 0x20e0
movq %rax, %r14
leaq 0x40(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x6e3d(%rip), %rsi      # 0x1455d
leaq 0x6e5e(%rip), %rdx      # 0x14585
leaq 0x30(%rsp), %rdi
callq 0x10bb4
leaq 0x88(%rsp), %rdi
movq %r12, %rsi
callq 0x5221
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0xeeef
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x2350
xorl %ebp, %ebp
movq 0xc867(%rip), %rsi      # 0x19fd8
movq 0xc848(%rip), %rdx      # 0x19fc0
movq %r14, %rdi
callq 0x2330
jmp 0xd84e
movl $0x10, %edi
callq 0x20e0
movq %rax, %r14
leaq 0x5f84(%rip), %rsi      # 0x1371d
movq %rax, %rdi
callq 0x23a0
jmp 0xd60b
movl $0x10, %edi
callq 0x20e0
movq %rax, %r14
leaq 0x6dee(%rip), %rsi      # 0x145a8
movq %rax, %rdi
callq 0x23a0
jmp 0xd60b
movq %rbp, %rax
jmp 0xd2f8
movl $0x10, %edi
callq 0x20e0
movq %rax, %r14
leaq 0x40(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x6d2e(%rip), %rsi      # 0x1451a
leaq 0x6d50(%rip), %rdx      # 0x14543
leaq 0x30(%rsp), %rdi
callq 0x10bb4
movq 0x8(%rsp), %rsi
leaq 0x88(%rsp), %rdi
callq 0x5221
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0xeeef
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x2350
xorl %ebp, %ebp
movq 0xc799(%rip), %rsi      # 0x19fd8
movq 0xc77a(%rip), %rdx      # 0x19fc0
movq %r14, %rdi
callq 0x2330
movl $0x10, %edi
callq 0x20e0
movq %rax, %r14
leaq 0x6c7f(%rip), %rsi      # 0x144e1
movq %rax, %rdi
callq 0x23a0
jmp 0xd642
movl $0x10, %edi
callq 0x20e0
movq %rax, %r14
leaq 0x6c5e(%rip), %rsi      # 0x144e1
movq %rax, %rdi
callq 0x23a0
jmp 0xd642
jmp 0xd8da
jmp 0xd8fa
jmp 0xd93d
jmp 0xd96f
jmp 0xd96f
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0xd9a4
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21d0
jmp 0xd9a4
jmp 0xd960
jmp 0xd997
jmp 0xd97c
jmp 0xd97c
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd900
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21d0
jmp 0xd900
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd943
movq 0x98(%rsp), %rsi
jmp 0xd933
jmp 0xd93d
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd943
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21d0
jmp 0xd943
movq %rax, %rbx
movb $0x1, %bpl
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0xd966
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21d0
jmp 0xd966
jmp 0xd960
jmp 0xd96f
movq %rax, %rbx
movb $0x1, %bpl
testb %bpl, %bpl
jne 0xd972
jmp 0xd9a4
jmp 0xd96f
movq %rax, %rbx
movq %r14, %rdi
callq 0x2160
jmp 0xd9a4
movq %rax, %rbx
movq %r14, %rdi
callq 0x2160
jmp 0xd9b8
jmp 0xd98b
movq %rax, %rbx
movq %rbp, 0x8(%rsp)
jmp 0xd9a4
jmp 0xd997
movq %rax, %rbx
jmp 0xd9a4
movq %rax, %rbx
movq %r12, 0x8(%rsp)
leaq 0x68(%rsp), %rdi
callq 0xf0dc
leaq 0x50(%rsp), %rdi
callq 0xf47c
movq %rbx, %rdi
callq 0x2360