// File: /workspace/github_c_makefile_star2_O0/nerves-project[P]nerves_initramfs/tests/fixture/init_fixture.c
// Function: handle_dm_ioctl
static int handle_dm_ioctl(unsigned long request, const struct dm_ioctl *dm)
{
    const char *req;
    char extra[256] = {0};

    switch (request) {
    case DM_DEV_CREATE:
        req = "DM_DEV_CREATE";
        break;

    case DM_TABLE_LOAD:
        req = "DM_TABLE_LOAD";
        break;

    case DM_DEV_SUSPEND:
        req = "DM_DEV_SUSPEND";
        break;

    default:
        req = "unknown";
        break;
    }

    if (dm->target_count) {
        const struct dm_target_spec *target = (const struct dm_target_spec *) ((const char *) dm + dm->data_start);
        const char *info = (const char *) target + sizeof(struct dm_target_spec);
        sprintf(extra, ", target=%llu,%llu,%s (%s)",
            target->sector_start, target->length, target->target_type, info);
    }
    log("ioctl(%s, data_size=%d, data_start=%d, target_count=%d, open_count=%d, flags=%d, event_nr=%d, dev=0x%llx, name=%s, uuid=%s%s",
        req,
        dm->data_size, dm->data_start, dm->target_count, dm->open_count,
        dm->flags, dm->event_nr, dm->dev, dm->name, dm->uuid,
        extra);

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x190, %rsp            # imm = 0x190
movq %rdi, -0x28(%rbp)
movq %rsi, -0x30(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x170(%rbp)
movaps %xmm0, -0x50(%rbp)
movaps %xmm0, -0x60(%rbp)
movaps %xmm0, -0x70(%rbp)
movaps %xmm0, -0x80(%rbp)
movaps %xmm0, -0x90(%rbp)
movaps %xmm0, -0xa0(%rbp)
movaps %xmm0, -0xb0(%rbp)
movaps %xmm0, -0xc0(%rbp)
movaps %xmm0, -0xd0(%rbp)
movaps %xmm0, -0xe0(%rbp)
movaps %xmm0, -0xf0(%rbp)
movaps %xmm0, -0x100(%rbp)
movaps %xmm0, -0x110(%rbp)
movaps %xmm0, -0x120(%rbp)
movaps %xmm0, -0x130(%rbp)
movaps %xmm0, -0x140(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x158(%rbp)
movl $0xc138fd03, %ecx       # imm = 0xC138FD03
subq %rcx, %rax
je 0x25d5
jmp 0x25af
movq -0x158(%rbp), %rax
movl $0xc138fd06, %ecx       # imm = 0xC138FD06
subq %rcx, %rax
je 0x25ef
jmp 0x25c2
movq -0x158(%rbp), %rax
movl $0xc138fd09, %ecx       # imm = 0xC138FD09
subq %rcx, %rax
je 0x25e2
jmp 0x25fc
leaq 0xde5(%rip), %rax       # 0x33c1
movq %rax, -0x38(%rbp)
jmp 0x2607
leaq 0xde6(%rip), %rax       # 0x33cf
movq %rax, -0x38(%rbp)
jmp 0x2607
leaq 0xde7(%rip), %rax       # 0x33dd
movq %rax, -0x38(%rbp)
jmp 0x2607
leaq 0xd5b(%rip), %rax       # 0x335e
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rax
cmpl $0x0, 0x14(%rax)
je 0x2674
movq -0x30(%rbp), %rax
movq -0x30(%rbp), %rcx
movl 0x10(%rcx), %ecx
addq %rcx, %rax
movq %rax, -0x148(%rbp)
movq -0x148(%rbp), %rax
addq $0x28, %rax
movq %rax, -0x150(%rbp)
leaq -0x140(%rbp), %rdi
movq -0x148(%rbp), %rax
movq (%rax), %rdx
movq -0x148(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x148(%rbp), %r8
addq $0x18, %r8
movq -0x150(%rbp), %r9
leaq 0xd7f(%rip), %rsi       # 0x33ec
movb $0x0, %al
callq 0x10f0
jmp 0x2676
movq 0x297b(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
movq -0x38(%rbp), %rdx
movq -0x30(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x30(%rbp), %rax
movl 0x10(%rax), %r8d
movq -0x30(%rbp), %rax
movl 0x14(%rax), %r9d
movq -0x30(%rbp), %rax
movl 0x18(%rax), %r12d
movq -0x30(%rbp), %rax
movl 0x1c(%rax), %r15d
movq -0x30(%rbp), %rax
movl 0x20(%rax), %r14d
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rbx
movq -0x30(%rbp), %r11
addq $0x30, %r11
movq -0x30(%rbp), %r10
addq $0xb0, %r10
leaq -0x140(%rbp), %rax
leaq 0xd2b(%rip), %rsi       # 0x3407
movl %r12d, (%rsp)
movl %r15d, 0x8(%rsp)
movl %r14d, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq %r11, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movq %rax, 0x30(%rsp)
movb $0x0, %al
callq 0x10a0
xorl %eax, %eax
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nopw (%rax,%rax)