// File: Luthaf[P]zeopp/net.cc
// Function: assign_dummy_site(MOLECULE*)
int assign_dummy_site(MOLECULE *m) {
  int num_sites = m->sites.size();
  int num_atoms = m->atoms_xyz.size();
  if(num_sites!=2) {
    printf("ERROR: should not call assign_dummy_site() with num_sites!=2\n");
    exit(EXIT_FAILURE);
  }
  //ok, we assign the dummy site to create a 'regular T' shape with respect to the 2 actual sites, i.e., find the midpoint of the sites and the half-width, and move in an orthogonal direction by that same distance
  XYZ site1 = m->atoms_xyz.at(m->sites.at(0));
  XYZ site2 = m->atoms_xyz.at(m->sites.at(1));
  XYZ midpoint = (site1+site2).scale(0.5);
  double half_width = get_vector_from_to(midpoint, site1).magnitude();
  //find the orthogonal direction by reference to the atoms of this molecule
  int furthest_atom_index = -1;
  double furthest_dist = -1;
  XYZ furthest_atom_xyz(0,0,0);
  XYZ furthest_projection(0,0,0);
  for(int i=0; i<num_atoms; i++) {
    XYZ this_atom_xyz = m->atoms_xyz.at(i);
    XYZ projection = project_onto_line(this_atom_xyz, site1, site2);
    double distance = get_vector_from_to(projection, this_atom_xyz).magnitude();
    if(furthest_dist<0 || distance>furthest_dist) {
      if(distance>DISTANCE_TOLERANCE) { //if the molecule is essentially a rod, we will not be able to find an appropriate orthogonal direction - using a tolerance, we can identify this scenario and later just choose an arbitrary orthogonal direction (since it won't matter for a rod anyway)
        furthest_dist = distance;
        furthest_atom_index = i;
        furthest_atom_xyz = this_atom_xyz;
        furthest_projection = projection;
      }
    }
  }
  if(furthest_atom_index==-1) { //could not find orthogonal atom, perhaps because of rod-shape molecule
    XYZ rand1(10,0,0);
    XYZ rand2(0,10,0);
    XYZ rand3(0,0,10); //three possible orthogonal positions - they are not in a line, so one should be valid!
    vector<XYZ> rands;
    rands.push_back(rand1);
    rands.push_back(rand2);
    rands.push_back(rand3);
    int num_rands = rands.size();
//    bool found = false;
    for(int i=0; i<num_rands/* && !found*/; i++) {
      XYZ this_rand = rands.at(i);
      XYZ projection = project_onto_line(this_rand, site1, site2);
      double distance = get_vector_from_to(projection, this_rand).magnitude();
      if(distance>DISTANCE_TOLERANCE) {
        XYZ projection_vector_norm = get_vector_from_to(this_rand, projection).unit();
        XYZ orthogonal_site_xyz = midpoint+projection_vector_norm.scale(half_width);
        m->atoms_xyz.push_back(orthogonal_site_xyz);
        m->atoms_type.push_back("J");
        m->atoms_label.push_back("J");
        return num_atoms;
//        m->dummy_sites.push_back(orthogonal_site_xyz); //done
//        found = true;
      }
    }
  } else { //else we found a good atom, so we can use it
    XYZ projection_vector_norm = get_vector_from_to(furthest_atom_xyz, furthest_projection).unit();
    XYZ orthogonal_site_xyz = midpoint+projection_vector_norm.scale(half_width);
    m->atoms_xyz.push_back(orthogonal_site_xyz);
    m->atoms_type.push_back("J");
    m->atoms_label.push_back("J");
    return num_atoms;
//    m->dummy_sites.push_back(orthogonal_site_xyz); //done
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x610, %rsp            # imm = 0x610
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
addq $0x48, %rdi
callq 0x10090
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0xae590
movl %eax, -0x18(%rbp)
cmpl $0x2, -0x14(%rbp)
je 0x1111c9
leaq 0xec0d6(%rip), %rdi     # 0x1fd28e
movb $0x0, %al
callq 0x5070
movl $0x1, %edi
callq 0x67c0
movq -0x10(%rbp), %rax
movq %rax, -0x530(%rbp)
movq -0x10(%rbp), %rdi
addq $0x48, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x101d0
movq -0x530(%rbp), %rdi
movslq (%rax), %rsi
callq 0xae5c0
movq (%rax), %rcx
movq %rcx, -0x30(%rbp)
movq 0x8(%rax), %rcx
movq %rcx, -0x28(%rbp)
movq 0x10(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x528(%rbp)
movq -0x10(%rbp), %rdi
addq $0x48, %rdi
movl $0x1, %esi
callq 0x101d0
movq -0x528(%rbp), %rdi
movslq (%rax), %rsi
callq 0xae5c0
movq (%rax), %rcx
movq %rcx, -0x48(%rbp)
movq 0x8(%rax), %rcx
movq %rcx, -0x40(%rbp)
movq 0x10(%rax), %rax
movq %rax, -0x38(%rbp)
leaq -0x78(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0xeae50
leaq -0x60(%rbp), %rdi
leaq -0x78(%rbp), %rsi
movsd 0xe0e09(%rip), %xmm0    # 0x1f2078
callq 0xea9f0
movq -0x60(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0xb8(%rbp)
leaq -0x98(%rbp), %rdi
leaq -0xb0(%rbp), %rcx
leaq -0xc8(%rbp), %rax
movq (%rcx), %rdx
movq %rdx, (%rsp)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rsp)
movq (%rax), %rcx
movq %rcx, 0x18(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
callq 0xeaf90
leaq -0x98(%rbp), %rdi
callq 0xe9240
movsd %xmm0, -0x80(%rbp)
movl $0xffffffff, -0xcc(%rbp) # imm = 0xFFFFFFFF
movsd 0xe1452(%rip), %xmm0    # 0x1f2778
movsd %xmm0, -0xd8(%rbp)
leaq -0xf0(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0xea8e0
leaq -0x108(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0xea8e0
movl $0x0, -0x10c(%rbp)
movl -0x10c(%rbp), %eax
cmpl -0x18(%rbp), %eax
jge 0x1115f1
movq -0x10(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0xae5c0
movq (%rax), %rcx
movq %rcx, -0x128(%rbp)
movq 0x8(%rax), %rcx
movq %rcx, -0x120(%rbp)
movq 0x10(%rax), %rax
movq %rax, -0x118(%rbp)
movq -0x128(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x120(%rbp), %rax
movq %rax, -0x150(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x170(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x168(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x160(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x188(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x180(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x178(%rbp)
leaq -0x140(%rbp), %rdi
leaq -0x158(%rbp), %rdx
leaq -0x170(%rbp), %rcx
leaq -0x188(%rbp), %rax
movq (%rdx), %rsi
movq %rsi, (%rsp)
movq 0x8(%rdx), %rsi
movq %rsi, 0x8(%rsp)
movq 0x10(%rdx), %rdx
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
movq 0x8(%rcx), %rdx
movq %rdx, 0x20(%rsp)
movq 0x10(%rcx), %rcx
movq %rcx, 0x28(%rsp)
movq (%rax), %rcx
movq %rcx, 0x30(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x38(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x40(%rsp)
callq 0xeb000
movq -0x140(%rbp), %rax
movq %rax, -0x1c0(%rbp)
movq -0x138(%rbp), %rax
movq %rax, -0x1b8(%rbp)
movq -0x130(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movq -0x128(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movq -0x120(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0x1c8(%rbp)
leaq -0x1a8(%rbp), %rdi
leaq -0x1c0(%rbp), %rcx
leaq -0x1d8(%rbp), %rax
movq (%rcx), %rdx
movq %rdx, (%rsp)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rsp)
movq (%rax), %rcx
movq %rcx, 0x18(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
callq 0xeaf90
leaq -0x1a8(%rbp), %rdi
callq 0xe9240
movsd %xmm0, -0x190(%rbp)
xorps %xmm0, %xmm0
ucomisd -0xd8(%rbp), %xmm0
ja 0x111553
movsd -0x190(%rbp), %xmm0
ucomisd -0xd8(%rbp), %xmm0
jbe 0x1115db
movsd -0x190(%rbp), %xmm0
movsd 0xe6305(%rip), %xmm1    # 0x1f7868
ucomisd %xmm1, %xmm0
jbe 0x1115d9
movsd -0x190(%rbp), %xmm0
movsd %xmm0, -0xd8(%rbp)
movl -0x10c(%rbp), %eax
movl %eax, -0xcc(%rbp)
movq -0x128(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0x120(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0x140(%rbp), %rax
movq %rax, -0x108(%rbp)
movq -0x138(%rbp), %rax
movq %rax, -0x100(%rbp)
movq -0x130(%rbp), %rax
movq %rax, -0xf8(%rbp)
jmp 0x1115db
jmp 0x1115dd
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x111362
cmpl $-0x1, -0xcc(%rbp)
jne 0x111b19
leaq -0x1f0(%rbp), %rdi
movq %rdi, -0x538(%rbp)
movsd 0xe500c(%rip), %xmm0    # 0x1f6620
movsd %xmm0, -0x548(%rbp)
xorps %xmm2, %xmm2
movsd %xmm2, -0x550(%rbp)
movaps %xmm2, %xmm1
callq 0xea8e0
movsd -0x550(%rbp), %xmm2
movsd -0x548(%rbp), %xmm1
leaq -0x208(%rbp), %rdi
movaps %xmm2, %xmm0
callq 0xea8e0
movsd -0x550(%rbp), %xmm1
movsd -0x548(%rbp), %xmm2
leaq -0x220(%rbp), %rdi
movaps %xmm1, %xmm0
callq 0xea8e0
leaq -0x238(%rbp), %rdi
movq %rdi, -0x540(%rbp)
callq 0xada60
movq -0x540(%rbp), %rdi
movq -0x538(%rbp), %rsi
callq 0xafc20
jmp 0x111695
leaq -0x238(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0xafc20
jmp 0x1116aa
leaq -0x238(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0xafc20
jmp 0x1116bf
leaq -0x238(%rbp), %rdi
callq 0xae590
movl %eax, -0x248(%rbp)
movl $0x0, -0x24c(%rbp)
movl -0x24c(%rbp), %eax
cmpl -0x248(%rbp), %eax
jge 0x111adc
movslq -0x24c(%rbp), %rsi
leaq -0x238(%rbp), %rdi
callq 0xae5c0
movq %rax, -0x558(%rbp)
jmp 0x111709
movq -0x558(%rbp), %rax
movq 0x10(%rax), %rcx
movq %rcx, -0x260(%rbp)
movups (%rax), %xmm0
movaps %xmm0, -0x270(%rbp)
movq -0x260(%rbp), %rax
movq %rax, -0x290(%rbp)
movaps -0x270(%rbp), %xmm0
movaps %xmm0, -0x2a0(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movups -0x30(%rbp), %xmm0
movaps %xmm0, -0x2c0(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x2d0(%rbp)
movups -0x48(%rbp), %xmm0
movaps %xmm0, -0x2e0(%rbp)
movq -0x2d0(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x40(%rax)
movaps -0x2e0(%rbp), %xmm0
movups %xmm0, 0x30(%rax)
movq -0x2b0(%rbp), %rcx
movq %rcx, 0x28(%rax)
movaps -0x2c0(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0x290(%rbp), %rcx
movq %rcx, 0x10(%rax)
movaps -0x2a0(%rbp), %xmm0
movups %xmm0, (%rax)
leaq -0x288(%rbp), %rdi
callq 0xeb000
jmp 0x1117bf
movq -0x278(%rbp), %rax
movq %rax, -0x310(%rbp)
movups -0x288(%rbp), %xmm0
movaps %xmm0, -0x320(%rbp)
movq -0x260(%rbp), %rax
movq %rax, -0x330(%rbp)
movaps -0x270(%rbp), %xmm0
movaps %xmm0, -0x340(%rbp)
movq -0x330(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x28(%rax)
movaps -0x340(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0x310(%rbp), %rcx
movq %rcx, 0x10(%rax)
movaps -0x320(%rbp), %xmm0
movups %xmm0, (%rax)
leaq -0x300(%rbp), %rdi
callq 0xeaf90
jmp 0x111833
leaq -0x300(%rbp), %rdi
callq 0xe9240
movsd %xmm0, -0x560(%rbp)
jmp 0x111849
movsd -0x560(%rbp), %xmm0
movsd %xmm0, -0x2e8(%rbp)
movsd -0x2e8(%rbp), %xmm0
movsd 0xe5fff(%rip), %xmm1    # 0x1f7868
ucomisd %xmm1, %xmm0
jbe 0x111ac6
movq -0x260(%rbp), %rax
movq %rax, -0x380(%rbp)
movaps -0x270(%rbp), %xmm0
movaps %xmm0, -0x390(%rbp)
movq -0x278(%rbp), %rax
movq %rax, -0x3a0(%rbp)
movups -0x288(%rbp), %xmm0
movaps %xmm0, -0x3b0(%rbp)
movq -0x3a0(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x28(%rax)
movaps -0x3b0(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0x380(%rbp), %rcx
movq %rcx, 0x10(%rax)
movaps -0x390(%rbp), %xmm0
movups %xmm0, (%rax)
leaq -0x370(%rbp), %rdi
callq 0xeaf90
jmp 0x1118e7
leaq -0x358(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xeaa90
jmp 0x1118fc
movsd -0x80(%rbp), %xmm0
leaq -0x3e0(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0xea9f0
jmp 0x111916
leaq -0x3c8(%rbp), %rdi
leaq -0x60(%rbp), %rsi
leaq -0x3e0(%rbp), %rdx
callq 0xeae50
jmp 0x11192f
movq -0x10(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0xafc20
jmp 0x111941
movq -0x10(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x570(%rbp)
leaq -0x401(%rbp), %rdi
movq %rdi, -0x568(%rbp)
callq 0x5900
movq -0x568(%rbp), %rdx
leaq 0xeb95b(%rip), %rsi     # 0x1fd2cc
leaq -0x400(%rbp), %rdi
callq 0x47530
jmp 0x11197f
movq -0x570(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x594b0
jmp 0x111994
leaq -0x400(%rbp), %rdi
callq 0x5300
leaq -0x401(%rbp), %rdi
callq 0x55d0
movq -0x10(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x580(%rbp)
leaq -0x429(%rbp), %rdi
movq %rdi, -0x578(%rbp)
callq 0x5900
movq -0x578(%rbp), %rdx
leaq 0xeb8f0(%rip), %rsi     # 0x1fd2cc
leaq -0x428(%rbp), %rdi
callq 0x47530
jmp 0x1119ea
movq -0x580(%rbp), %rdi
leaq -0x428(%rbp), %rsi
callq 0x594b0
jmp 0x1119ff
leaq -0x428(%rbp), %rdi
callq 0x5300
leaq -0x429(%rbp), %rdi
callq 0x55d0
movl -0x18(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0x430(%rbp)
jmp 0x111ae6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x111b08
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x111a75
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x5300
leaq -0x401(%rbp), %rdi
callq 0x55d0
jmp 0x111b08
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x111ab8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x5300
leaq -0x429(%rbp), %rdi
callq 0x55d0
jmp 0x111b08
jmp 0x111ac8
movl -0x24c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24c(%rbp)
jmp 0x1116db
movl $0x0, -0x430(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x12210
movl -0x430(%rbp), %eax
testl %eax, %eax
je 0x111b03
jmp 0x111afe
jmp 0x111d5c
jmp 0x111d5a
leaq -0x238(%rbp), %rdi
callq 0x12210
jmp 0x111d68
movq -0xe0(%rbp), %rax
movq %rax, -0x470(%rbp)
movups -0xf0(%rbp), %xmm0
movaps %xmm0, -0x480(%rbp)
movq -0xf8(%rbp), %rax
movq %rax, -0x490(%rbp)
movups -0x108(%rbp), %xmm0
movaps %xmm0, -0x4a0(%rbp)
movq -0x490(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x28(%rax)
movaps -0x4a0(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0x470(%rbp), %rcx
movq %rcx, 0x10(%rax)
movaps -0x480(%rbp), %xmm0
movups %xmm0, (%rax)
leaq -0x460(%rbp), %rdi
movq %rdi, -0x5b0(%rbp)
callq 0xeaf90
movq -0x5b0(%rbp), %rsi
leaq -0x448(%rbp), %rdi
movq %rdi, -0x5a8(%rbp)
callq 0xeaa90
movq -0x5a8(%rbp), %rsi
movsd -0x80(%rbp), %xmm0
leaq -0x4d0(%rbp), %rdi
movq %rdi, -0x5a0(%rbp)
callq 0xea9f0
movq -0x5a0(%rbp), %rdx
leaq -0x4b8(%rbp), %rdi
movq %rdi, -0x598(%rbp)
leaq -0x60(%rbp), %rsi
callq 0xeae50
movq -0x598(%rbp), %rsi
movq -0x10(%rbp), %rdi
callq 0xafc20
movq -0x10(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x590(%rbp)
leaq -0x4f1(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0x5900
movq -0x588(%rbp), %rdx
leaq 0xeb6a3(%rip), %rsi     # 0x1fd2cc
leaq -0x4f0(%rbp), %rdi
callq 0x47530
jmp 0x111c37
movq -0x590(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
callq 0x594b0
jmp 0x111c4c
leaq -0x4f0(%rbp), %rdi
callq 0x5300
leaq -0x4f1(%rbp), %rdi
callq 0x55d0
movq -0x10(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x5c0(%rbp)
leaq -0x519(%rbp), %rdi
movq %rdi, -0x5b8(%rbp)
callq 0x5900
movq -0x5b8(%rbp), %rdx
leaq 0xeb638(%rip), %rsi     # 0x1fd2cc
leaq -0x518(%rbp), %rdi
callq 0x47530
jmp 0x111ca2
movq -0x5c0(%rbp), %rdi
leaq -0x518(%rbp), %rsi
callq 0x594b0
jmp 0x111cb7
leaq -0x518(%rbp), %rdi
callq 0x5300
leaq -0x519(%rbp), %rdi
callq 0x55d0
movl -0x18(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x111d5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x111d0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0x5300
leaq -0x4f1(%rbp), %rdi
callq 0x55d0
jmp 0x111d68
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x111d4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x518(%rbp), %rdi
callq 0x5300
leaq -0x519(%rbp), %rdi
callq 0x55d0
jmp 0x111d68
ud2
movl -0x4(%rbp), %eax
addq $0x610, %rsp            # imm = 0x610
popq %rbp
retq
movq -0x240(%rbp), %rdi
callq 0x58f0
nopw %cs:(%rax,%rax)