// File: mh0fm4[P]SCDC/src/components/dataset/dataset_inout.cc
// Function: scdc_dataset_inout_t* scdc_dataset_input_FX_create<int>(_scdc_dataset_inout_t*, char const*, _scdc_args_t*, int)
static scdc_dataset_inout_t *scdc_dataset_input_FX_create(scdc_dataset_input_t *input, const char *conf, scdc_args_t *args, T fx)
{
  bool offset_set = false;
  bool offset_front = true;
  scdcint_t offset = 0;
  scdcint_t size = -1;
  scdcint_t chunk_size = -1;
  scdc_args_buf_t buffer = { 0, DEFAULT_DATASET_INOUT_BUF_SIZE };

  stringlist confs(':', conf);
  scdc_args xargs(args);

  scdc_dataset_inout_t *inout_redirect = 0;
  if (xargs.get<scdc_dataset_inout_t *>(SCDC_ARGS_TYPE_DATASET_INOUT_REDIRECT_PTR, &inout_redirect) != SCDC_ARG_REF_NULL && inout_redirect)
  {
    buffer.buf = SCDC_DATASET_INOUT_BUF_PTR(inout_redirect);
    buffer.buf_size = SCDC_DATASET_INOUT_BUF_SIZE(inout_redirect);
  }

  string c;
  scdcint_t i = 0;
  while (confs.front_pop(c))
  {
    if (c == "offset")
    {
      if (xargs.get<scdcint_t>(SCDC_ARGS_TYPE_SCDCINT, &offset) == SCDC_ARG_REF_NULL)
      {
        SCDC_ERROR("scdc_dataset_input_FXX_create: getting file offset");
        return 0;
      }

      offset_set = true;

    } else if (c == "size")
    {
      if (xargs.get<scdcint_t>(SCDC_ARGS_TYPE_SCDCINT, &size) == SCDC_ARG_REF_NULL)
      {
        SCDC_ERROR("scdc_dataset_input_FXX_create: getting file size");
        return 0;
      }

    } else if (c == "chunks")
    {
      if (xargs.get<scdcint_t>(SCDC_ARGS_TYPE_SCDCINT, &chunk_size) == SCDC_ARG_REF_NULL)
      {
        SCDC_ERROR("scdc_dataset_input_FXX_create: getting chunk size");
        return 0;
      }

    } else if (c == "buffer")
    {
      if (xargs.get<scdc_args_buf_t>(SCDC_ARGS_TYPE_BUF, &buffer) == SCDC_ARG_REF_NULL)
      {
        SCDC_ERROR("scdc_dataset_input_FXX_create: getting buffer");
        return 0;
      }

    } else
    {
      char r;

      if (!c.empty())
      switch (i)
      {
        case 0:
          r = toupper(c[c.size() - 1]);
          if (r == 'F' || r == 'B') { offset_front = (r == 'F'); c.resize(c.size() - 1); }
          scdc_args_string(c).get<scdcint_t>(c, SCDC_ARGS_TYPE_SCDCINT, &offset);
          offset_set = true;
          break;
        case 1: scdc_args_string(c).get<scdcint_t>(c, SCDC_ARGS_TYPE_SCDCINT, &size); break;
        case 2: scdc_args_string(c).get<scdcint_t>(c, SCDC_ARGS_TYPE_SCDCINT, &chunk_size); break;
        default: SCDC_FAIL("scdc_dataset_input_FXX_create: ignoring parameter '" << c << "'"); break;
      }

      ++i;
    }
  }

  SCDC_TRACE("scdc_dataset_input_FXX_create: offset: " << offset << ", size: " << size << ", chunks: " << chunk_size <<
             ", buffer: " << buffer.buf << " / " << buffer.buf_size);

  if (!input) return 0;

  if (!scdc_dataset_inout_alloc(input, (buffer.buf?0:buffer.buf_size), sizeof(inout_FX_data_t<T>))) return 0;

  if (buffer.buf)
  {
    SCDC_DATASET_INOUT_BUF_PTR(input) = buffer.buf;
    SCDC_DATASET_INOUT_BUF_SIZE(input) = buffer.buf_size;
  }

  input->intern->type = SCDC_DATASET_INOUT_TYPE_NONE;
  input->intern->destroy = NULL;

  strcpy(input->format, "data");

  inout_FX_data_t<T> *data = static_cast<inout_FX_data_t<T> *>(input->data);

  data->fx = fx;
  data->chunk_size = chunk_size;
  data->size_left = size;

  if (offset_set && data->seek(offset, (offset_front)?SEEK_SET:SEEK_END) < 0)
  {
    SCDC_ERROR("scdc_dataset_input_FXX_create: seek to offset " << offset << " from " << ((offset_front)?"front":"back"));
    return 0;
  }

  SCDC_TRACE("scdc_dataset_input_FXX_create: offset: " << data->tell());

#if DETERMINE_EXACT_TOTAL_SIZE
  scdcint_t size_left = (fd != -1)?get_FD_size_left(fd):((file != NULL)?get_FILE_size_left(file):-1);

  if (size_left >= 0)
  {
    input->total_size = size_left;
    if (size >= 0) input->total_size = z_min(input->total_size, size);
    input->total_size_given = SCDC_DATASET_INOUT_TOTAL_SIZE_GIVEN_EXACT;

  } else
#endif
  {
    if (size >= 0)
    {
      input->total_size = size;
      input->total_size_given = SCDC_DATASET_INOUT_TOTAL_SIZE_GIVEN_AT_MOST;

    } else
    {
      input->total_size = 0;
      input->total_size_given = SCDC_DATASET_INOUT_TOTAL_SIZE_GIVEN_AT_LEAST;
    }
  }

  SCDC_DATASET_INOUT_BUF_CURRENT(input) = 0;

  input->next = input_FX_next<T>;

  return input;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2b0, %rsp            # imm = 0x2B0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movl %ecx, -0x24(%rbp)
movb $0x0, -0x25(%rbp)
movb $0x1, -0x26(%rbp)
movq $0x0, -0x30(%rbp)
movq $-0x1, -0x38(%rbp)
movq $-0x1, -0x40(%rbp)
movups 0x6011f(%rip), %xmm0    # 0xa77f0
movaps %xmm0, -0x50(%rbp)
movq -0x18(%rbp), %rdx
leaq -0x78(%rbp), %rdi
movl $0x3a, %esi
movq $-0x1, %rcx
callq 0x25a70
movq -0x20(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x25660
jmp 0x47700
movq $0x0, -0xc8(%rbp)
leaq -0xb0(%rbp), %rdi
movl $0xe, %esi
leaq -0xc8(%rbp), %rdx
xorl %ecx, %ecx
callq 0x4d520
movq %rax, -0x120(%rbp)
jmp 0x4772e
movq -0x120(%rbp), %rax
cmpq $0x0, %rax
je 0x47793
cmpq $0x0, -0xc8(%rbp)
je 0x47793
movq -0xc8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x50(%rbp)
movq -0xc8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x48(%rbp)
jmp 0x47793
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x482ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0x482e1
leaq -0xe8(%rbp), %rdi
callq 0xc960
movq $0x0, -0xf0(%rbp)
leaq -0x78(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x26730
movb %al, -0x121(%rbp)
jmp 0x477c2
movb -0x121(%rbp), %al
testb $0x1, %al
jne 0x477d1
jmp 0x47fca
leaq 0x5fd69(%rip), %rsi     # 0xa7541
leaq -0xe8(%rbp), %rdi
callq 0x25b80
movb %al, -0x122(%rbp)
jmp 0x477ec
movb -0x122(%rbp), %al
testb $0x1, %al
jne 0x477fb
jmp 0x47943
leaq -0xb0(%rbp), %rdi
movl $0x2, %esi
leaq -0x30(%rbp), %rdx
xorl %ecx, %ecx
callq 0x4d170
movq %rax, -0x130(%rbp)
jmp 0x4781b
movq -0x130(%rbp), %rax
cmpq $0x0, %rax
jne 0x4793a
jmp 0x4782e
leaq 0x8ce73(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x138(%rbp)
jmp 0x47846
movq -0x138(%rbp), %rax
cmpq $0x0, %rax
je 0x4791f
leaq 0x8ce4a(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e900
jmp 0x47868
leaq 0x8ce39(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x140(%rbp)
jmp 0x47880
movq -0x140(%rbp), %rdi
leaq 0x5ec1a(%rip), %rsi     # 0xa64a8
callq 0xc670
movq %rax, -0x148(%rbp)
jmp 0x4789c
movq -0x148(%rbp), %rdi
leaq 0x5f7d2(%rip), %rsi     # 0xa707c
callq 0xc670
movq %rax, -0x150(%rbp)
jmp 0x478b8
movq -0x150(%rbp), %rdi
leaq 0x5f97b(%rip), %rsi     # 0xa7241
callq 0xc670
movq %rax, -0x158(%rbp)
jmp 0x478d4
movq -0x158(%rbp), %rdi
movq 0x8c6de(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x478e9
leaq 0x8cdb8(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e920
jmp 0x478fa
jmp 0x4791f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0xc3e0
jmp 0x482e1
jmp 0x47921
jmp 0x47923
movq $0x0, -0x8(%rbp)
movl $0x1, -0xf4(%rbp)
jmp 0x482b3
movb $0x1, -0x25(%rbp)
jmp 0x47fc5
leaq 0x5fc2a(%rip), %rsi     # 0xa7574
leaq -0xe8(%rbp), %rdi
callq 0x25b80
movb %al, -0x159(%rbp)
jmp 0x4795e
movb -0x159(%rbp), %al
testb $0x1, %al
jne 0x4796d
jmp 0x47a8e
leaq -0xb0(%rbp), %rdi
movl $0x2, %esi
leaq -0x38(%rbp), %rdx
xorl %ecx, %ecx
callq 0x4d170
movq %rax, -0x168(%rbp)
jmp 0x4798d
movq -0x168(%rbp), %rax
cmpq $0x0, %rax
jne 0x47a89
jmp 0x479a0
leaq 0x8cd01(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x170(%rbp)
jmp 0x479b8
movq -0x170(%rbp), %rax
cmpq $0x0, %rax
je 0x47a6e
leaq 0x8ccd8(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e900
jmp 0x479da
leaq 0x8ccc7(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x178(%rbp)
jmp 0x479f2
movq -0x178(%rbp), %rdi
leaq 0x5eaa8(%rip), %rsi     # 0xa64a8
callq 0xc670
movq %rax, -0x180(%rbp)
jmp 0x47a0e
movq -0x180(%rbp), %rdi
leaq 0x5f660(%rip), %rsi     # 0xa707c
callq 0xc670
movq %rax, -0x188(%rbp)
jmp 0x47a2a
movq -0x188(%rbp), %rdi
leaq 0x5f83c(%rip), %rsi     # 0xa7274
callq 0xc670
movq %rax, -0x190(%rbp)
jmp 0x47a46
movq -0x190(%rbp), %rdi
movq 0x8c56c(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x47a5b
leaq 0x8cc46(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e920
jmp 0x47a6c
jmp 0x47a6e
jmp 0x47a70
jmp 0x47a72
movq $0x0, -0x8(%rbp)
movl $0x1, -0xf4(%rbp)
jmp 0x482b3
jmp 0x47fc3
leaq 0x5f810(%rip), %rsi     # 0xa72a5
leaq -0xe8(%rbp), %rdi
callq 0x25b80
movb %al, -0x191(%rbp)
jmp 0x47aa9
movb -0x191(%rbp), %al
testb $0x1, %al
jne 0x47ab8
jmp 0x47bd9
leaq -0xb0(%rbp), %rdi
movl $0x2, %esi
leaq -0x40(%rbp), %rdx
xorl %ecx, %ecx
callq 0x4d170
movq %rax, -0x1a0(%rbp)
jmp 0x47ad8
movq -0x1a0(%rbp), %rax
cmpq $0x0, %rax
jne 0x47bd4
jmp 0x47aeb
leaq 0x8cbb6(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x1a8(%rbp)
jmp 0x47b03
movq -0x1a8(%rbp), %rax
cmpq $0x0, %rax
je 0x47bb9
leaq 0x8cb8d(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e900
jmp 0x47b25
leaq 0x8cb7c(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x1b0(%rbp)
jmp 0x47b3d
movq -0x1b0(%rbp), %rdi
leaq 0x5e95d(%rip), %rsi     # 0xa64a8
callq 0xc670
movq %rax, -0x1b8(%rbp)
jmp 0x47b59
movq -0x1b8(%rbp), %rdi
leaq 0x5f515(%rip), %rsi     # 0xa707c
callq 0xc670
movq %rax, -0x1c0(%rbp)
jmp 0x47b75
movq -0x1c0(%rbp), %rdi
leaq 0x5f729(%rip), %rsi     # 0xa72ac
callq 0xc670
movq %rax, -0x1c8(%rbp)
jmp 0x47b91
movq -0x1c8(%rbp), %rdi
movq 0x8c421(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x47ba6
leaq 0x8cafb(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e920
jmp 0x47bb7
jmp 0x47bb9
jmp 0x47bbb
jmp 0x47bbd
movq $0x0, -0x8(%rbp)
movl $0x1, -0xf4(%rbp)
jmp 0x482b3
jmp 0x47fc1
leaq 0x61f6b(%rip), %rsi     # 0xa9b4b
leaq -0xe8(%rbp), %rdi
callq 0x25b80
movb %al, -0x1c9(%rbp)
jmp 0x47bf4
movb -0x1c9(%rbp), %al
testb $0x1, %al
jne 0x47c03
jmp 0x47d24
leaq -0xb0(%rbp), %rdi
movl $0x8, %esi
leaq -0x50(%rbp), %rdx
xorl %ecx, %ecx
callq 0x4d400
movq %rax, -0x1d8(%rbp)
jmp 0x47c23
movq -0x1d8(%rbp), %rax
cmpq $0x0, %rax
jne 0x47d1f
jmp 0x47c36
leaq 0x8ca6b(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x1e0(%rbp)
jmp 0x47c4e
movq -0x1e0(%rbp), %rax
cmpq $0x0, %rax
je 0x47d04
leaq 0x8ca42(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e900
jmp 0x47c70
leaq 0x8ca31(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x1e8(%rbp)
jmp 0x47c88
movq -0x1e8(%rbp), %rdi
leaq 0x5e812(%rip), %rsi     # 0xa64a8
callq 0xc670
movq %rax, -0x1f0(%rbp)
jmp 0x47ca4
movq -0x1f0(%rbp), %rdi
leaq 0x5f3ca(%rip), %rsi     # 0xa707c
callq 0xc670
movq %rax, -0x1f8(%rbp)
jmp 0x47cc0
movq -0x1f8(%rbp), %rdi
leaq 0x5f610(%rip), %rsi     # 0xa72de
callq 0xc670
movq %rax, -0x200(%rbp)
jmp 0x47cdc
movq -0x200(%rbp), %rdi
movq 0x8c2d6(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x47cf1
leaq 0x8c9b0(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e920
jmp 0x47d02
jmp 0x47d04
jmp 0x47d06
jmp 0x47d08
movq $0x0, -0x8(%rbp)
movl $0x1, -0xf4(%rbp)
jmp 0x482b3
jmp 0x47fbf
leaq -0xe8(%rbp), %rdi
callq 0xcb60
testb $0x1, %al
jne 0x47fad
movq -0xf0(%rbp), %rax
movq %rax, -0x208(%rbp)
testq %rax, %rax
je 0x47d76
jmp 0x47d4d
movq -0x208(%rbp), %rax
subq $0x1, %rax
je 0x47e3b
jmp 0x47d60
movq -0x208(%rbp), %rax
subq $0x2, %rax
je 0x47e6c
jmp 0x47e9d
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x218(%rbp)
callq 0xc460
movq -0x218(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0xcd00
movq %rax, -0x210(%rbp)
jmp 0x47da4
movq -0x210(%rbp), %rax
movsbl (%rax), %edi
callq 0xcc40
movb %al, -0xf5(%rbp)
movsbl -0xf5(%rbp), %eax
cmpl $0x46, %eax
je 0x47dd1
movsbl -0xf5(%rbp), %eax
cmpl $0x42, %eax
jne 0x47e06
movb -0xf5(%rbp), %al
subb $0x46, %al
sete -0x26(%rbp)
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x220(%rbp)
callq 0xc460
movq -0x220(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0xc940
jmp 0x47e04
jmp 0x47e06
leaq -0x100(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x4d5b0
jmp 0x47e1b
leaq -0xe8(%rbp), %rdi
movl $0x2, %esi
leaq -0x30(%rbp), %rdx
callq 0x4d5d0
jmp 0x47e32
movb $0x1, -0x25(%rbp)
jmp 0x47fab
leaq -0x108(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x4d5b0
jmp 0x47e50
leaq -0xe8(%rbp), %rdi
movl $0x2, %esi
leaq -0x38(%rbp), %rdx
callq 0x4d5d0
jmp 0x47e67
jmp 0x47fab
leaq -0x110(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x4d5b0
jmp 0x47e81
leaq -0xe8(%rbp), %rdi
movl $0x2, %esi
leaq -0x40(%rbp), %rdx
callq 0x4d5d0
jmp 0x47e98
jmp 0x47fab
jmp 0x47e9f
leaq 0x8c802(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, -0x228(%rbp)
jmp 0x47eb7
movq -0x228(%rbp), %rax
cmpq $0x0, %rax
je 0x47fa5
leaq 0x8c7d9(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25800
jmp 0x47ed9
leaq 0x8c7c8(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, -0x230(%rbp)
jmp 0x47ef1
movq -0x230(%rbp), %rdi
leaq 0x5e2b1(%rip), %rsi     # 0xa61b0
callq 0xc670
movq %rax, -0x238(%rbp)
jmp 0x47f0d
movq -0x238(%rbp), %rdi
leaq 0x5f161(%rip), %rsi     # 0xa707c
callq 0xc670
movq %rax, -0x240(%rbp)
jmp 0x47f29
movq -0x240(%rbp), %rdi
leaq 0x5f3d5(%rip), %rsi     # 0xa730c
callq 0xc670
movq %rax, -0x248(%rbp)
jmp 0x47f45
movq -0x248(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0xc5b0
movq %rax, -0x250(%rbp)
jmp 0x47f61
movq -0x250(%rbp), %rdi
leaq 0x60464(%rip), %rsi     # 0xa83d3
callq 0xc670
movq %rax, -0x258(%rbp)
jmp 0x47f7d
movq -0x258(%rbp), %rdi
movq 0x8c035(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x47f92
leaq 0x8c70f(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25820
jmp 0x47fa3
jmp 0x47fa5
jmp 0x47fa7
jmp 0x47fa9
jmp 0x47fab
jmp 0x47fad
movq -0xf0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xf0(%rbp)
jmp 0x47fc1
jmp 0x47fc3
jmp 0x47fc5
jmp 0x477aa
jmp 0x47fcc
jmp 0x47fce
jmp 0x47fd0
cmpq $0x0, -0x10(%rbp)
jne 0x47fee
movq $0x0, -0x8(%rbp)
movl $0x1, -0xf4(%rbp)
jmp 0x482b3
movq -0x10(%rbp), %rax
movq %rax, -0x260(%rbp)
cmpq $0x0, -0x50(%rbp)
je 0x4800b
xorl %eax, %eax
movq %rax, -0x268(%rbp)
jmp 0x48016
movq -0x48(%rbp), %rax
movq %rax, -0x268(%rbp)
movq -0x260(%rbp), %rdi
movq -0x268(%rbp), %rsi
movl $0x18, %edx
callq 0x47500
testb $0x1, %al
jne 0x48049
movq $0x0, -0x8(%rbp)
movl $0x1, -0xf4(%rbp)
jmp 0x482b3
cmpq $0x0, -0x50(%rbp)
je 0x48068
movq -0x50(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x48(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq $0x0, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq $0x0, 0x20(%rax)
movq -0x10(%rbp), %rdi
leaq 0x5f1a9(%rip), %rsi     # 0xa723c
callq 0xc610
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0x118(%rbp)
movl -0x24(%rbp), %ecx
movq -0x118(%rbp), %rax
movl %ecx, (%rax)
movq -0x40(%rbp), %rcx
movq -0x118(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x38(%rbp), %rcx
movq -0x118(%rbp), %rax
movq %rcx, 0x10(%rax)
testb $0x1, -0x25(%rbp)
je 0x4824f
movq -0x118(%rbp), %rdi
movq -0x30(%rbp), %rsi
movb -0x26(%rbp), %cl
movl $0x2, %edx
xorl %eax, %eax
testb $0x1, %cl
cmovnel %eax, %edx
callq 0x434a0
cmpq $0x0, %rax
jge 0x4824f
jmp 0x48107
leaq 0x8c59a(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x270(%rbp)
jmp 0x4811f
movq -0x270(%rbp), %rax
cmpq $0x0, %rax
je 0x48237
leaq 0x8c571(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e900
jmp 0x48141
leaq 0x8c560(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x278(%rbp)
jmp 0x48159
movq -0x278(%rbp), %rdi
leaq 0x5e341(%rip), %rsi     # 0xa64a8
callq 0xc670
movq %rax, -0x280(%rbp)
jmp 0x48175
movq -0x280(%rbp), %rdi
leaq 0x5eef9(%rip), %rsi     # 0xa707c
callq 0xc670
movq %rax, -0x288(%rbp)
jmp 0x48191
movq -0x288(%rbp), %rdi
leaq 0x5f1a1(%rip), %rsi     # 0xa7340
callq 0xc670
movq %rax, -0x290(%rbp)
jmp 0x481ad
movq -0x290(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0xc340
movq %rax, -0x298(%rbp)
jmp 0x481c6
movq -0x298(%rbp), %rdi
leaq 0x5f19b(%rip), %rsi     # 0xa736f
callq 0xc670
movq %rax, -0x2a0(%rbp)
jmp 0x481e2
movq -0x2a0(%rbp), %rdi
movb -0x26(%rbp), %cl
leaq 0x5f183(%rip), %rax     # 0xa7376
leaq 0x5f182(%rip), %rsi     # 0xa737c
testb $0x1, %cl
cmovneq %rax, %rsi
callq 0xc670
movq %rax, -0x2a8(%rbp)
jmp 0x4820f
movq -0x2a8(%rbp), %rdi
movq 0x8bda3(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x48224
leaq 0x8c47d(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e920
jmp 0x48235
jmp 0x48237
jmp 0x48239
jmp 0x4823b
movq $0x0, -0x8(%rbp)
movl $0x1, -0xf4(%rbp)
jmp 0x482b3
jmp 0x48251
jmp 0x48253
jmp 0x48255
cmpq $0x0, -0x38(%rbp)
jl 0x48272
movq -0x38(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movb $0x6d, 0x30(%rax)
jmp 0x48286
movq -0x10(%rbp), %rax
movq $0x0, 0x28(%rax)
movq -0x10(%rbp), %rax
movb $0x6c, 0x30(%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x20(%rax)
movq -0x10(%rbp), %rax
leaq 0xa3(%rip), %rcx        # 0x48340
movq %rcx, 0x38(%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0xf4(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0xc3e0
leaq -0xb0(%rbp), %rdi
callq 0x256b0
leaq -0x78(%rbp), %rdi
callq 0x25c90
movq -0x8(%rbp), %rax
addq $0x2b0, %rsp            # imm = 0x2B0
popq %rbp
retq
leaq -0xb0(%rbp), %rdi
callq 0x256b0
leaq -0x78(%rbp), %rdi
callq 0x25c90
movq -0xb8(%rbp), %rdi
callq 0xcba0
nopw %cs:(%rax,%rax)