// File: redpony[P]libpopt/./optimize.h
// Function: RPropOptimizer::RPropOptimizer(int, double, double, double, double, double)
explicit RPropOptimizer(int num_vars,
                          double eta_plus = 1.2,
                          double eta_minus = 0.5,
                          double delta_0 = 0.1,
                          double delta_max = 50.0,
                          double delta_min = 1e-6) :
      prev_g_(num_vars, 0.0),
      delta_ij_(num_vars, delta_0),
      eta_plus_(eta_plus),
      eta_minus_(eta_minus),
      delta_max_(delta_max),
      delta_min_(delta_min) {
    assert(eta_plus > 1.0);
    assert(eta_minus > 0.0 && eta_minus < 1.0);
    assert(delta_max > 0.0);
    assert(delta_min > 0.0);
  }

// Assembly:
subq $0x98, %rsp
movq %rdi, 0x90(%rsp)
movl %esi, 0x8c(%rsp)
movsd %xmm0, 0x80(%rsp)
movsd %xmm1, 0x78(%rsp)
movsd %xmm2, 0x70(%rsp)
movsd %xmm3, 0x68(%rsp)
movsd %xmm4, 0x60(%rsp)
movq 0x90(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x6bf0
movq 0x20(%rsp), %rax
leaq 0xaeab(%rip), %rcx      # 0x11ba0
addq $0x10, %rcx
movq %rcx, (%rax)
addq $0x10, %rax
movq %rax, 0x28(%rsp)
movslq 0x8c(%rsp), %rax
movq %rax, 0x30(%rsp)
movq $0x0, 0x58(%rsp)
leaq 0x57(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x4610
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rcx
leaq 0x58(%rsp), %rdx
callq 0x6f70
jmp 0x6d45
leaq 0x57(%rsp), %rdi
callq 0x46a0
movq 0x20(%rsp), %rax
addq $0x28, %rax
movq %rax, 0x8(%rsp)
movslq 0x8c(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0x43(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x4610
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rcx
leaq 0x70(%rsp), %rdx
callq 0x6f70
jmp 0x6d94
leaq 0x43(%rsp), %rdi
callq 0x46a0
movq 0x20(%rsp), %rax
movsd 0x80(%rsp), %xmm0
movsd %xmm0, 0x40(%rax)
movsd 0x78(%rsp), %xmm0
movsd %xmm0, 0x48(%rax)
movsd 0x68(%rsp), %xmm0
movsd %xmm0, 0x50(%rax)
movsd 0x60(%rsp), %xmm0
movsd %xmm0, 0x58(%rax)
movsd 0x80(%rsp), %xmm0
movsd 0x727d(%rip), %xmm1     # 0xe060
ucomisd %xmm1, %xmm0
jbe 0x6deb
jmp 0x6e4e
leaq 0x74bd(%rip), %rdi      # 0xe2af
leaq 0x7318(%rip), %rsi      # 0xe111
movl $0x48, %edx
leaq 0x74b9(%rip), %rcx      # 0xe2be
callq 0x3150
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x48(%rsp)
movl %eax, 0x44(%rsp)
leaq 0x57(%rsp), %rdi
callq 0x46a0
jmp 0x6f0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x48(%rsp)
movl %eax, 0x44(%rsp)
leaq 0x43(%rsp), %rdi
callq 0x46a0
movq 0x28(%rsp), %rdi
callq 0x47d0
jmp 0x6f0b
movsd 0x78(%rsp), %xmm0
xorl %eax, %eax
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
movb %al, 0x7(%rsp)
jbe 0x6e78
movsd 0x71f5(%rip), %xmm0     # 0xe060
ucomisd 0x78(%rsp), %xmm0
seta %al
movb %al, 0x7(%rsp)
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0x6e82
jmp 0x6e84
jmp 0x6ea3
leaq 0x747f(%rip), %rdi      # 0xe30a
leaq 0x727f(%rip), %rsi      # 0xe111
movl $0x49, %edx
leaq 0x7420(%rip), %rcx      # 0xe2be
callq 0x3150
movsd 0x68(%rsp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x6eb4
jmp 0x6ed3
leaq 0x7472(%rip), %rdi      # 0xe32d
leaq 0x724f(%rip), %rsi      # 0xe111
movl $0x4a, %edx
leaq 0x73f0(%rip), %rcx      # 0xe2be
callq 0x3150
movsd 0x60(%rsp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x6ee4
jmp 0x6f03
leaq 0x7452(%rip), %rdi      # 0xe33d
leaq 0x721f(%rip), %rsi      # 0xe111
movl $0x4b, %edx
leaq 0x73c0(%rip), %rcx      # 0xe2be
callq 0x3150
addq $0x98, %rsp
retq
movq 0x20(%rsp), %rdi
callq 0x7110
movq 0x48(%rsp), %rdi
callq 0x33b0
nop