// File: /workspace/github_c_makefile_star2_O0/madler[P]pigz/try.c
// Function: try_throw_
void try_throw_(int code, char *fmt, ...)
{
    /* save the thrown information in the try stack before jumping */
    try_setup_();
    assert(try_stack_ != NULL && "try: naked throw");
    try_stack_->ball.ret = 1;
    try_stack_->ball.code = code;
    try_stack_->ball.free = 0;
    try_stack_->ball.why = fmt;

    /* consider the second argument to be a string, and if it has formatting
       commands, process them with the subsequent arguments of throw, saving
       the result in allocated memory -- this if statement and clause must be
       updated for a different interpretation of the throw() arguments and
       different contents of the ball_t structure */
    if (fmt != NULL && strchr(fmt, '%') != NULL) {
        char *why, nul[1];
        size_t len;
        va_list ap1, ap2;

        va_start(ap1, fmt);
        va_copy(ap2, ap1);
        len = vsnprintf(nul, 1, fmt, ap1);
        va_end(ap1);
        why = malloc(len + 1);
        if (why == NULL)
            try_stack_->ball.why = "try: out of memory";
        else {
            vsnprintf(why, len + 1, fmt, ap2);
            va_end(ap2);
            try_stack_->ball.free = 1;
            try_stack_->ball.why = why;
        }
    }

    /* jump to the end of the nearest enclosing try block */
    longjmp(try_stack_->env, 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
testb %al, %al
je 0x12311
movaps %xmm0, -0xe0(%rbp)
movaps %xmm1, -0xd0(%rbp)
movaps %xmm2, -0xc0(%rbp)
movaps %xmm3, -0xb0(%rbp)
movaps %xmm4, -0xa0(%rbp)
movaps %xmm5, -0x90(%rbp)
movaps %xmm6, -0x80(%rbp)
movaps %xmm7, -0x70(%rbp)
movq %r9, -0xe8(%rbp)
movq %r8, -0xf0(%rbp)
movq %rcx, -0xf8(%rbp)
movq %rdx, -0x100(%rbp)
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
callq 0x12220
movl 0x31775(%rip), %edi     # 0x43ab4
callq 0x3110
cmpq $0x0, %rax
je 0x12354
movb $0x1, %al
testb $0x1, %al
jne 0x12352
jmp 0x12354
jmp 0x12373
leaq 0xb994(%rip), %rdi      # 0x1dcef
leaq 0xb960(%rip), %rsi      # 0x1dcc2
movl $0x28, %edx
leaq 0xb9aa(%rip), %rcx      # 0x1dd18
callq 0x3220
movl 0x3173b(%rip), %edi     # 0x43ab4
callq 0x3110
movl $0x1, 0xc8(%rax)
movl -0x4(%rbp), %eax
movl %eax, -0x11c(%rbp)
movl 0x3171d(%rip), %edi     # 0x43ab4
callq 0x3110
movl -0x11c(%rbp), %ecx
movl %ecx, 0xcc(%rax)
movl 0x31706(%rip), %edi     # 0x43ab4
callq 0x3110
movl $0x0, 0xd0(%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x118(%rbp)
movl 0x316e6(%rip), %edi     # 0x43ab4
callq 0x3110
movq -0x118(%rbp), %rcx
movq %rcx, 0xd8(%rax)
cmpq $0x0, -0x10(%rbp)
je 0x124e9
movq -0x10(%rbp), %rdi
movl $0x25, %esi
callq 0x31c0
cmpq $0x0, %rax
je 0x124e9
leaq -0x40(%rbp), %rax
leaq -0x110(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq 0x10(%rbp), %rcx
movq %rcx, 0x8(%rax)
movl $0x30, 0x4(%rax)
movl $0x10, (%rax)
leaq -0x60(%rbp), %rax
leaq -0x40(%rbp), %rcx
movq 0x10(%rcx), %rdx
movq %rdx, 0x10(%rax)
movups (%rcx), %xmm0
movups %xmm0, (%rax)
leaq -0x19(%rbp), %rdi
movq -0x10(%rbp), %rdx
leaq -0x40(%rbp), %rcx
movl $0x1, %esi
callq 0x3100
cltq
movq %rax, -0x28(%rbp)
leaq -0x40(%rbp), %rax
movq -0x28(%rbp), %rdi
addq $0x1, %rdi
callq 0x33d0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x12491
movl 0x31638(%rip), %edi     # 0x43ab4
callq 0x3110
leaq 0xb8b2(%rip), %rcx      # 0x1dd3a
movq %rcx, 0xd8(%rax)
jmp 0x124e7
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rsi
addq $0x1, %rsi
movq -0x10(%rbp), %rdx
leaq -0x60(%rbp), %rcx
callq 0x3100
leaq -0x60(%rbp), %rax
movl 0x31600(%rip), %edi     # 0x43ab4
callq 0x3110
movl $0x1, 0xd0(%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x128(%rbp)
movl 0x315e0(%rip), %edi     # 0x43ab4
callq 0x3110
movq -0x128(%rbp), %rcx
movq %rcx, 0xd8(%rax)
jmp 0x124e9
movl 0x315c5(%rip), %edi     # 0x43ab4
callq 0x3110
movq %rax, %rdi
movl $0x1, %esi
callq 0x3470
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)