// File: mh0fm4[P]SCDC/src/components/dataprov/dataprov_jobrun.cc
// Function: scdc_dataprov_jobrun::job_run(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::vector<scdc_dataprov_jobrun_res_proc_t, std::allocator<scdc_dataprov_jobrun_res_proc_t>> const&)
bool scdc_dataprov_jobrun::job_run(const std::string &jobid, const std::string &jobcmds, const scdc_dataprov_jobrun_res_t &res)
{
  SCDC_TRACE(__func__ << ": jobid: '" << jobid << "', jobcmds: '" << jobcmds << "', res: " << res.size());

  bool ret = true;

  bool record = false;
  string record_jobcmds;

  stringlist cmds(';', jobcmds);
  string s;
  while (cmds.front_pop(s))
  {
    SCDC_TRACE(__func__ << ": cmd: '" << s << "'");

    stringlist cmd(' ', s);
    string c = cmd.front_pop();
    string p = cmd.conflate();

    if (c == "jobbegin")
    {
      SCDC_TRACE(__func__ << ": begin");

      if (!record) record = true;

    } else if (c == "jobend")
    {
      SCDC_TRACE(__func__ << ": end");

      if (record)
      {
        record = false;

        scdc_dataprov_jobrun_job_t job;

        pthread_mutex_lock(&sched_lock);
        get_job(jobid, job);
        job.jobcmds = record_jobcmds;
        set_job(jobid, job);
        pthread_mutex_unlock(&sched_lock);

        job_schedule(jobid);
      }

    } else if (record)
    {
      SCDC_TRACE(__func__ << ": record: '" << s << "'");

      record_jobcmds += s + ";";

    } else if (c == "jobwait")
    {
      SCDC_TRACE(__func__ << ": wait");

      job_wait_finished(jobid);

    } else
    {
      SCDC_TRACE(__func__ << ": run:");

      ret = job_do_run(jobid, c, p, res);

      SCDC_TRACE(__func__ << ": run: " << ret);
    }
  }

  return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1e0, %rsp            # imm = 0x1E0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x1d8(%rbp)
jmp 0x7dd48
movb $0x1, -0x21(%rbp)
movb $0x0, -0x22(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xc960
movq -0x18(%rbp), %rsi
leaq -0x90(%rbp), %rdi
callq 0xc270
jmp 0x7dd6b
leaq -0x70(%rbp), %rdi
movl $0x3b, %esi
leaq -0x90(%rbp), %rdx
callq 0x5ff80
jmp 0x7dd82
leaq -0x90(%rbp), %rdi
callq 0xc3e0
leaq -0xc0(%rbp), %rdi
callq 0xc960
leaq -0x70(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x26730
movb %al, -0x1d9(%rbp)
jmp 0x7ddb2
movb -0x1d9(%rbp), %al
testb $0x1, %al
jne 0x7ddc1
jmp 0x7e174
jmp 0x7ddc3
jmp 0x7ddc5
jmp 0x7ddc7
leaq -0x108(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0xc270
jmp 0x7dddc
leaq -0xe8(%rbp), %rdi
movl $0x20, %esi
leaq -0x108(%rbp), %rdx
callq 0x5ff80
jmp 0x7ddf6
leaq -0x108(%rbp), %rdi
callq 0xc3e0
leaq -0x128(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x25b00
jmp 0x7de17
leaq -0x148(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x2e970
jmp 0x7de2c
leaq 0x2af20(%rip), %rsi     # 0xa8d53
leaq -0x128(%rbp), %rdi
callq 0x25b80
movb %al, -0x1da(%rbp)
jmp 0x7de47
movb -0x1da(%rbp), %al
testb $0x1, %al
jne 0x7de56
jmp 0x7df2d
jmp 0x7de58
jmp 0x7de5a
jmp 0x7de5c
testb $0x1, -0x22(%rbp)
jne 0x7df28
movb $0x1, -0x22(%rbp)
jmp 0x7df28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x7e1c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xc3e0
jmp 0x7e1c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x7e1ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x108(%rbp), %rdi
callq 0xc3e0
jmp 0x7e1ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x7e166
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x7e15a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x7e14e
jmp 0x7e125
leaq 0x2ae28(%rip), %rsi     # 0xa8d5c
leaq -0x128(%rbp), %rdi
callq 0x25b80
movb %al, -0x1db(%rbp)
jmp 0x7df48
movb -0x1db(%rbp), %al
testb $0x1, %al
jne 0x7df57
jmp 0x7e02b
jmp 0x7df59
jmp 0x7df5b
jmp 0x7df5d
testb $0x1, -0x22(%rbp)
je 0x7e026
movb $0x0, -0x22(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x84280
jmp 0x7df79
movq -0x1d8(%rbp), %rdi
addq $0x190, %rdi            # imm = 0x190
callq 0xc9f0
movq -0x1d8(%rbp), %rdi
movq -0x10(%rbp), %rsi
leaq -0x1b0(%rbp), %rdx
callq 0x7d8a0
jmp 0x7dfa5
leaq -0x170(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0xc070
jmp 0x7dfb7
movq -0x1d8(%rbp), %rdi
movq -0x10(%rbp), %rsi
leaq -0x1b0(%rbp), %rdx
callq 0x7d6e0
jmp 0x7dfd0
movq -0x1d8(%rbp), %rdi
addq $0x190, %rdi            # imm = 0x190
callq 0xc4c0
movq -0x1d8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x7e1e0
jmp 0x7dff5
leaq -0x1b0(%rbp), %rdi
callq 0x842c0
jmp 0x7e026
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x842c0
jmp 0x7e14e
jmp 0x7e123
testb $0x1, -0x22(%rbp)
je 0x7e099
jmp 0x7e033
jmp 0x7e035
jmp 0x7e037
leaq 0x2ad25(%rip), %rdx     # 0xa8d63
leaq -0x1d0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x31740
jmp 0x7e053
leaq -0x48(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0xc8a0
jmp 0x7e065
leaq -0x1d0(%rbp), %rdi
callq 0xc3e0
jmp 0x7e121
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0xc3e0
jmp 0x7e14e
leaq 0x2acc5(%rip), %rsi     # 0xa8d65
leaq -0x128(%rbp), %rdi
callq 0x25b80
movb %al, -0x1dc(%rbp)
jmp 0x7e0b4
movb -0x1dc(%rbp), %al
testb $0x1, %al
jne 0x7e0c0
jmp 0x7e0da
jmp 0x7e0c2
jmp 0x7e0c4
jmp 0x7e0c6
movq -0x1d8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x7e250
jmp 0x7e0d8
jmp 0x7e11f
jmp 0x7e0dc
jmp 0x7e0de
jmp 0x7e0e0
movq -0x1d8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %r8
movq (%rdi), %rax
movq 0x70(%rax), %rax
leaq -0x128(%rbp), %rdx
leaq -0x148(%rbp), %rcx
callq *%rax
movb %al, -0x1dd(%rbp)
jmp 0x7e10e
movb -0x1dd(%rbp), %al
andb $0x1, %al
movb %al, -0x21(%rbp)
jmp 0x7e11b
jmp 0x7e11d
jmp 0x7e11f
jmp 0x7e121
jmp 0x7e123
jmp 0x7e125
leaq -0x148(%rbp), %rdi
callq 0xc3e0
leaq -0x128(%rbp), %rdi
callq 0xc3e0
leaq -0xe8(%rbp), %rdi
callq 0x25c90
jmp 0x7dd9a
leaq -0x148(%rbp), %rdi
callq 0xc3e0
leaq -0x128(%rbp), %rdi
callq 0xc3e0
leaq -0xe8(%rbp), %rdi
callq 0x25c90
jmp 0x7e1ac
movb -0x21(%rbp), %al
movb %al, -0x1de(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0xc3e0
leaq -0x70(%rbp), %rdi
callq 0x25c90
leaq -0x48(%rbp), %rdi
callq 0xc3e0
movb -0x1de(%rbp), %al
andb $0x1, %al
addq $0x1e0, %rsp            # imm = 0x1E0
popq %rbp
retq
leaq -0xc0(%rbp), %rdi
callq 0xc3e0
leaq -0x70(%rbp), %rdi
callq 0x25c90
leaq -0x48(%rbp), %rdi
callq 0xc3e0
movq -0x98(%rbp), %rdi
callq 0xcba0
nopw %cs:(%rax,%rax)