// File: /workspace/github_c_makefile_star2_O0/adsr[P]phpspy/event_fout.c
// Function: event_handler_fout
int event_handler_fout(struct trace_context_s *context, int event_type) {
    int rv, fd;
    size_t len;
    trace_frame_t *frame;
    trace_request_t *request;
    event_handler_fout_udata_t *udata;
    struct timeval tv;

    udata = (event_handler_fout_udata_t*)context->event_udata;
    if (!udata && event_type != PHPSPY_TRACE_EVENT_INIT) {
        return PHPSPY_ERR;
    }
    len = 0;
    switch (event_type) {
        case PHPSPY_TRACE_EVENT_INIT:
            try(rv, event_handler_fout_open(&fd));
            udata = calloc(1, sizeof(event_handler_fout_udata_t));
            udata->fd = fd;
            udata->buf_size = opt_fout_buffer_size + 1; /* + 1 for null char */
            udata->buf = malloc(udata->buf_size);
            udata->cur = udata->buf;
            udata->rem = udata->buf_size;
            udata->use_mutex = context->event_handler_opts != NULL
                && strchr(context->event_handler_opts, 'm') != NULL ? 1 : 0;
            context->event_udata = udata;
            break;
        case PHPSPY_TRACE_EVENT_STACK_BEGIN:
            udata->cur = udata->buf;
            udata->cur[0] = '\0';
            udata->rem = udata->buf_size;
            break;
        case PHPSPY_TRACE_EVENT_FRAME:
            frame = &context->event.frame;
            try(rv, event_handler_fout_snprintf(
                &udata->cur,
                &udata->rem,
                &len,
                1,
                "%d %.*s%s%.*s %.*s:%d",
                frame->depth,
                (int)frame->loc.class_len, frame->loc.class,
                frame->loc.class_len > 0 ? "::" : "",
                (int)frame->loc.func_len, frame->loc.func,
                (int)frame->loc.file_len, frame->loc.file,
                frame->loc.lineno
            ));
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 0, "%c", opt_frame_delim));
            break;
        case PHPSPY_TRACE_EVENT_VARPEEK:
            try(rv, event_handler_fout_snprintf(
                &udata->cur,
                &udata->rem,
                &len,
                1,
                "# varpeek %s@%s = %s",
                context->event.varpeek.var->name,
                context->event.varpeek.entry->filename_lineno,
                context->event.varpeek.zval_str
            ));
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 0, "%c", opt_frame_delim));
            break;
        case PHPSPY_TRACE_EVENT_GLOPEEK:
            try(rv, event_handler_fout_snprintf(
                &udata->cur,
                &udata->rem,
                &len,
                1,
                "# glopeek %s = %s",
                context->event.glopeek.gentry->key,
                context->event.glopeek.zval_str
            ));
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 0, "%c", opt_frame_delim));
            break;
        case PHPSPY_TRACE_EVENT_REQUEST:
            request = &context->event.request;
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 1, "# uri = %s", request->uri));
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 0, "%c", opt_frame_delim));
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 1, "# path = %s", request->path));
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 0, "%c", opt_frame_delim));
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 1, "# qstring = %s", request->qstring));
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 0, "%c", opt_frame_delim));
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 1, "# cookie = %s", request->cookie));
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 0, "%c", opt_frame_delim));
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 1, "# ts = %f", request->ts));
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 0, "%c", opt_frame_delim));
            break;
        case PHPSPY_TRACE_EVENT_MEM:
            try(rv, event_handler_fout_snprintf(
                &udata->cur,
                &udata->rem,
                &len,
                1,
                "# mem %lu %lu",
                (uint64_t)context->event.mem.size,
                (uint64_t)context->event.mem.peak
            ));
            try(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 0, "%c", opt_frame_delim));
            break;
        case PHPSPY_TRACE_EVENT_STACK_END:
            if (udata->cur == udata->buf) {
                /* buffer is empty */
                break;
            }
            if (opt_filter_re) {
                rv = regexec(opt_filter_re, udata->buf, 0, NULL, 0);
                if (opt_filter_negate == 0 && rv != 0) return PHPSPY_ERR_SKIPPED;
                if (opt_filter_negate != 0 && rv == 0) return PHPSPY_ERR_SKIPPED;
            }
            do {
                if (opt_verbose_fields_ts) {
                    gettimeofday(&tv, NULL);
                    try_break(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 1, "# trace_ts = %f", (double)(tv.tv_sec + tv.tv_usec / 1000000.0)));
                    try_break(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 0, "%c", opt_frame_delim));
                }
                if (opt_verbose_fields_pid) {
                    try_break(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 1, "# pid = %d", context->target.pid));
                    try_break(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 0, "%c", opt_frame_delim));
                }
                try_break(rv, event_handler_fout_snprintf(&udata->cur, &udata->rem, &len, 0, "%c", opt_trace_delim));
            } while (0);
            try(rv, event_handler_fout_write(udata));
            break;
        case PHPSPY_TRACE_EVENT_DEINIT:
            close(udata->fd);
            free(udata->buf);
            free(udata);
            break;
    }
    return PHPSPY_OK;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rdi, -0x38(%rbp)
movl %esi, -0x3c(%rbp)
movq -0x38(%rbp), %rax
movq 0x790(%rax), %rax
movq %rax, -0x68(%rbp)
cmpq $0x0, -0x68(%rbp)
jne 0x2ce43
cmpl $0x0, -0x3c(%rbp)
je 0x2ce43
movl $0x1, -0x2c(%rbp)
jmp 0x2d7d7
movq $0x0, -0x50(%rbp)
movl -0x3c(%rbp), %eax
movq %rax, -0x80(%rbp)
subq $0x9, %rax
ja 0x2d7d0
movq -0x80(%rbp), %rax
leaq 0x8629(%rip), %rcx      # 0x35490
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0x2ce72
leaq -0x44(%rbp), %rdi
callq 0x2d7f0
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2ce8e
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2ce90
movl $0x1, %edi
movl $0x30, %esi
callq 0x62f0
movq %rax, -0x68(%rbp)
movl -0x44(%rbp), %ecx
movq -0x68(%rbp), %rax
movl %ecx, (%rax)
leaq 0xd4ad(%rip), %rax      # 0x3a360
movl (%rax), %eax
addl $0x1, %eax
movslq %eax, %rcx
movq -0x68(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x63e0
movq %rax, %rcx
movq -0x68(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x68(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x68(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x68(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x38(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x7a0(%rcx)
movb %al, -0x81(%rbp)
je 0x2cf33
movq -0x38(%rbp), %rax
movq 0x7a0(%rax), %rdi
movl $0x6d, %esi
callq 0x6190
cmpq $0x0, %rax
setne %al
movb %al, -0x81(%rbp)
movb -0x81(%rbp), %dl
xorl %ecx, %ecx
movl $0x1, %eax
testb $0x1, %dl
cmovnel %eax, %ecx
movq -0x68(%rbp), %rax
movl %ecx, 0x28(%rax)
movq -0x68(%rbp), %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x790(%rax)
jmp 0x2d7d0
movq -0x68(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x68(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x68(%rbp), %rax
movq 0x10(%rax), %rax
movb $0x0, (%rax)
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x68(%rbp), %rax
movq %rcx, 0x20(%rax)
jmp 0x2d7d0
movq -0x38(%rbp), %rax
addq $0x28, %rax
movq %rax, -0x58(%rbp)
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
movq -0x58(%rbp), %rax
movl 0x320(%rax), %r9d
movq -0x58(%rbp), %rax
movq 0x308(%rax), %rax
movl %eax, %r13d
movq -0x58(%rbp), %r12
addq $0x100, %r12            # imm = 0x100
movq -0x58(%rbp), %rax
movq 0x308(%rax), %rcx
leaq 0x7ac9(%rip), %r15      # 0x34aac
leaq 0x84e4(%rip), %rax      # 0x354ce
cmpq $0x0, %rcx
cmovaq %rax, %r15
movq -0x58(%rbp), %rax
movq 0x300(%rax), %rax
movl %eax, %r14d
movq -0x58(%rbp), %rbx
movq -0x58(%rbp), %rax
movq 0x310(%rax), %rax
movl %eax, %r11d
movq -0x58(%rbp), %r10
addq $0x200, %r10            # imm = 0x200
movq -0x58(%rbp), %rax
movl 0x318(%rax), %eax
leaq -0x50(%rbp), %rdx
movl $0x1, %ecx
leaq 0x8481(%rip), %r8       # 0x354b8
movl %r13d, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movl %r14d, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movq %r10, 0x30(%rsp)
movl %eax, 0x38(%rsp)
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d077
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d079
jmp 0x2d07b
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
leaq 0xd2a2(%rip), %rax      # 0x3a334
movsbl (%rax), %r9d
leaq -0x50(%rbp), %rdx
xorl %ecx, %ecx
leaq 0x842e(%rip), %r8       # 0x354d1
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d0bd
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d0bf
jmp 0x2d7d0
jmp 0x2d0c6
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
movq -0x38(%rbp), %rax
movq 0x770(%rax), %r9
movq -0x38(%rbp), %rax
movq 0x768(%rax), %r10
movq -0x38(%rbp), %rax
movq 0x778(%rax), %rax
leaq -0x50(%rbp), %rdx
movl $0x1, %ecx
leaq 0x83cd(%rip), %r8       # 0x354d4
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d12a
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d12c
jmp 0x2d12e
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
leaq 0xd1ef(%rip), %rax      # 0x3a334
movsbl (%rax), %r9d
leaq -0x50(%rbp), %rdx
xorl %ecx, %ecx
leaq 0x837b(%rip), %r8       # 0x354d1
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d170
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d172
jmp 0x2d7d0
jmp 0x2d179
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
movq -0x38(%rbp), %rax
movq 0x780(%rax), %r9
movq -0x38(%rbp), %rax
movq 0x788(%rax), %rax
leaq -0x50(%rbp), %rdx
movl $0x1, %ecx
leaq 0x833a(%rip), %r8       # 0x354e9
movq %rax, (%rsp)
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d1cd
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d1cf
jmp 0x2d1d1
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
leaq 0xd14c(%rip), %rax      # 0x3a334
movsbl (%rax), %r9d
leaq -0x50(%rbp), %rdx
xorl %ecx, %ecx
leaq 0x82d8(%rip), %r8       # 0x354d1
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d213
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d215
jmp 0x2d7d0
movq -0x38(%rbp), %rax
addq $0x28, %rax
addq $0x328, %rax            # imm = 0x328
movq %rax, -0x60(%rbp)
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
movq -0x60(%rbp), %r9
leaq -0x50(%rbp), %rdx
movl $0x1, %ecx
leaq 0x82ab(%rip), %r8       # 0x354fb
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d26a
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d26c
jmp 0x2d26e
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
leaq 0xd0af(%rip), %rax      # 0x3a334
movsbl (%rax), %r9d
leaq -0x50(%rbp), %rdx
xorl %ecx, %ecx
leaq 0x823b(%rip), %r8       # 0x354d1
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d2b0
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d2b2
jmp 0x2d2b4
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
movq -0x60(%rbp), %r9
addq $0x100, %r9             # imm = 0x100
leaq -0x50(%rbp), %rdx
movl $0x1, %ecx
leaq 0x8227(%rip), %r8       # 0x35506
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d2f9
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d2fb
jmp 0x2d2fd
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
leaq 0xd020(%rip), %rax      # 0x3a334
movsbl (%rax), %r9d
leaq -0x50(%rbp), %rdx
xorl %ecx, %ecx
leaq 0x81ac(%rip), %r8       # 0x354d1
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d33f
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d341
jmp 0x2d343
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
movq -0x60(%rbp), %r9
addq $0x200, %r9             # imm = 0x200
leaq -0x50(%rbp), %rdx
movl $0x1, %ecx
leaq 0x81a4(%rip), %r8       # 0x35512
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d388
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d38a
jmp 0x2d38c
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
leaq 0xcf91(%rip), %rax      # 0x3a334
movsbl (%rax), %r9d
leaq -0x50(%rbp), %rdx
xorl %ecx, %ecx
leaq 0x811d(%rip), %r8       # 0x354d1
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d3ce
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d3d0
jmp 0x2d3d2
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
movq -0x60(%rbp), %r9
addq $0x300, %r9             # imm = 0x300
leaq -0x50(%rbp), %rdx
movl $0x1, %ecx
leaq 0x8124(%rip), %r8       # 0x35521
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d417
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d419
jmp 0x2d41b
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
leaq 0xcf02(%rip), %rax      # 0x3a334
movsbl (%rax), %r9d
leaq -0x50(%rbp), %rdx
xorl %ecx, %ecx
leaq 0x808e(%rip), %r8       # 0x354d1
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d45d
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d45f
jmp 0x2d461
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
movq -0x60(%rbp), %rax
movsd 0x400(%rax), %xmm0
leaq -0x50(%rbp), %rdx
movl $0x1, %ecx
leaq 0x80a2(%rip), %r8       # 0x3552f
movb $0x1, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d4a7
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d4a9
jmp 0x2d4ab
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
leaq 0xce72(%rip), %rax      # 0x3a334
movsbl (%rax), %r9d
leaq -0x50(%rbp), %rdx
xorl %ecx, %ecx
leaq 0x7ffe(%rip), %r8       # 0x354d1
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d4ed
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d4ef
jmp 0x2d7d0
jmp 0x2d4f6
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
movq -0x38(%rbp), %rax
movq 0x758(%rax), %r9
movq -0x38(%rbp), %rax
movq 0x760(%rax), %rax
leaq -0x50(%rbp), %rdx
movl $0x1, %ecx
leaq 0x800d(%rip), %r8       # 0x35539
movq %rax, (%rsp)
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d54a
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d54c
jmp 0x2d54e
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
leaq 0xcdcf(%rip), %rax      # 0x3a334
movsbl (%rax), %r9d
leaq -0x50(%rbp), %rdx
xorl %ecx, %ecx
leaq 0x7f5b(%rip), %r8       # 0x354d1
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d590
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d592
jmp 0x2d7d0
movq -0x68(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x68(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x2d5ae
jmp 0x2d7d0
leaq 0xef6b(%rip), %rax      # 0x3c520
cmpq $0x0, (%rax)
je 0x2d61d
leaq 0xef5e(%rip), %rax      # 0x3c520
movq (%rax), %rdi
movq -0x68(%rbp), %rax
movq 0x8(%rax), %rsi
xorl %eax, %eax
movl %eax, %ecx
xorl %r8d, %r8d
movq %rcx, %rdx
callq 0x6400
movl %eax, -0x40(%rbp)
leaq 0xef42(%rip), %rax      # 0x3c528
cmpl $0x0, (%rax)
jne 0x2d5fd
cmpl $0x0, -0x40(%rbp)
je 0x2d5fd
movl $0x8, -0x2c(%rbp)
jmp 0x2d7d7
leaq 0xef24(%rip), %rax      # 0x3c528
cmpl $0x0, (%rax)
je 0x2d61b
cmpl $0x0, -0x40(%rbp)
jne 0x2d61b
movl $0x8, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d61d
jmp 0x2d61f
leaq 0xef0a(%rip), %rax      # 0x3c530
cmpl $0x0, (%rax)
je 0x2d6ca
leaq -0x78(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6210
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
cvtsi2sdq -0x78(%rbp), %xmm0
cvtsi2sdq -0x70(%rbp), %xmm1
movsd 0x7e28(%rip), %xmm2     # 0x35488
divsd %xmm2, %xmm1
addsd %xmm1, %xmm0
leaq -0x50(%rbp), %rdx
movl $0x1, %ecx
leaq 0x7ecf(%rip), %r8       # 0x35547
movb $0x1, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d689
jmp 0x2d68b
jmp 0x2d68b
jmp 0x2d68d
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
leaq 0xcc90(%rip), %rax      # 0x3a334
movsbl (%rax), %r9d
leaq -0x50(%rbp), %rdx
xorl %ecx, %ecx
leaq 0x7e1c(%rip), %r8       # 0x354d1
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d6c6
jmp 0x2d6c8
jmp 0x2d6c8
jmp 0x2d6ca
leaq 0xee5b(%rip), %rax      # 0x3c52c
cmpl $0x0, (%rax)
je 0x2d751
jmp 0x2d6d8
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
movq -0x38(%rbp), %rax
movl (%rax), %r9d
leaq -0x50(%rbp), %rdx
movl $0x1, %ecx
leaq 0x7e58(%rip), %r8       # 0x35557
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d710
jmp 0x2d712
jmp 0x2d712
jmp 0x2d714
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
leaq 0xcc09(%rip), %rax      # 0x3a334
movsbl (%rax), %r9d
leaq -0x50(%rbp), %rdx
xorl %ecx, %ecx
leaq 0x7d95(%rip), %r8       # 0x354d1
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d74d
jmp 0x2d74f
jmp 0x2d74f
jmp 0x2d751
jmp 0x2d753
movq -0x68(%rbp), %rdi
addq $0x10, %rdi
movq -0x68(%rbp), %rsi
addq $0x20, %rsi
leaq 0xcbcb(%rip), %rax      # 0x3a335
movsbl (%rax), %r9d
leaq -0x50(%rbp), %rdx
xorl %ecx, %ecx
leaq 0x7d56(%rip), %r8       # 0x354d1
movb $0x0, %al
callq 0x2d970
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d78c
jmp 0x2d78e
jmp 0x2d78e
jmp 0x2d790
jmp 0x2d792
movq -0x68(%rbp), %rdi
callq 0x2daf0
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x2d7ab
movl -0x40(%rbp), %eax
movl %eax, -0x2c(%rbp)
jmp 0x2d7d7
jmp 0x2d7ad
jmp 0x2d7d0
movq -0x68(%rbp), %rax
movl (%rax), %edi
callq 0x6260
movq -0x68(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x6050
movq -0x68(%rbp), %rdi
callq 0x6050
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)