// File: /workspace/github_cpp_makefile_star2_O2/sundale[P]gcode/rs274ngc/rs274ngc_pre.cc
// Function: Interp::init()
int Interp::init()
{
  int k;                        // starting index in parameters of origin offsets
  char filename[LINELEN];
  double *pars;                 // short name for _setup.parameters

  char *iniFileName;

  INIT_CANON();

  iniFileName = getenv("INI_FILE_NAME");

  // the default log file
  strcpy(&_setup.log_file[0], "emc_log");
  _setup.loggingLevel = 0;
  _setup.tool_change_at_g30 = 0;
  _setup.tool_change_quill_up = 0;
  _setup.tool_change_with_spindle_on = 0;
  _setup.a_axis_wrapped = 0;
  _setup.b_axis_wrapped = 0;
  _setup.c_axis_wrapped = 0;
  _setup.random_toolchanger = 0;

  // not clear -- but this is fn is called a second time without an INI.
  if(NULL == iniFileName)
  {
      logDebug("INI_FILE_NAME not found");
  }
  else
  {
      IniFile inifile;

      logDebug("iniFileName:%s:", iniFileName);

      if (inifile.Open(iniFileName) == false) {
          logDebug("Unable to open inifile:%s:", iniFileName);
      }
      else
      {
          const char *inistring;

          inifile.Find(&_setup.tool_change_at_g30, "TOOL_CHANGE_AT_G30", "EMCIO");
          inifile.Find(&_setup.tool_change_quill_up, "TOOL_CHANGE_QUILL_UP", "EMCIO");
          inifile.Find(&_setup.tool_change_with_spindle_on, "TOOL_CHANGE_WITH_SPINDLE_ON", "EMCIO");
          inifile.Find(&_setup.a_axis_wrapped, "WRAPPED_ROTARY", "AXIS_3");
          inifile.Find(&_setup.b_axis_wrapped, "WRAPPED_ROTARY", "AXIS_4");
          inifile.Find(&_setup.c_axis_wrapped, "WRAPPED_ROTARY", "AXIS_5");
          inifile.Find(&_setup.random_toolchanger, "RANDOM_TOOLCHANGER", "EMCIO");

          if(NULL != (inistring = inifile.Find("LOG_LEVEL", "RS274NGC")))
          {
              _setup.loggingLevel = atol(inistring);
          }

          if(NULL != (inistring = inifile.Find("LOG_FILE", "RS274NGC")))
          {
	    // found it
            if (realpath(inistring, &_setup.log_file[0]) == NULL) {
        	//realpath didn't find the file
        	//nothing to do, checking for log_file[0] will report it later
    	    }
          }

          _setup.use_lazy_close = 1;

	  _setup.wizard_root[0] = 0;
          if(NULL != (inistring = inifile.Find("WIZARD_ROOT", "WIZARD")))
          {
	    logDebug("[WIZARD]WIZARD_ROOT:%s\n", inistring);
            if (realpath(inistring, _setup.wizard_root) == NULL) {
        	//realpath didn't find the file
        	logDebug("realpath failed to find wizard_root:%s:\n", inistring);
            }
          }
          logDebug("_setup.wizard_root:%s:\n", _setup.wizard_root);

	  _setup.program_prefix[0] = 0;
          if(NULL != (inistring = inifile.Find("PROGRAM_PREFIX", "DISPLAY")))
          {
	    // found it
            if (realpath(inistring, _setup.program_prefix) == NULL){
        	//realpath didn't find the file
        	logDebug("realpath failed to find program_prefix:%s:\n", inistring);    
            }
            logDebug("program prefix:%s: prefix:%s:",
		     inistring, _setup.program_prefix);
          }
          else
          {
	      logDebug("PROGRAM_PREFIX not found");
          }
          logDebug("_setup.program_prefix:%s:\n", _setup.program_prefix);


          // close it
          inifile.Close();
      }
  }

  _setup.length_units = GET_EXTERNAL_LENGTH_UNIT_TYPE();
  USE_LENGTH_UNITS(_setup.length_units);
  GET_EXTERNAL_PARAMETER_FILE_NAME(filename, LINELEN);
  if (filename[0] == 0)
    strcpy(filename, RS274NGC_PARAMETER_FILE_NAME_DEFAULT);
  CHP(restore_parameters(filename));
  pars = _setup.parameters;
  _setup.origin_index = (int) (pars[5220] + 0.0001);
  if(_setup.origin_index < 1 || _setup.origin_index > 9) {
      _setup.origin_index = 1;
      pars[5220] = 1.0;
  }

  k = (5200 + (_setup.origin_index * 20));
  if (pars[5210]) {
      _setup.axis_offset_x = USER_TO_PROGRAM_LEN(pars[5211]);
      _setup.axis_offset_y = USER_TO_PROGRAM_LEN(pars[5212]);
      _setup.axis_offset_z = USER_TO_PROGRAM_LEN(pars[5213]);
      _setup.AA_axis_offset = USER_TO_PROGRAM_ANG(pars[5214]);
      _setup.BB_axis_offset = USER_TO_PROGRAM_ANG(pars[5215]);
      _setup.CC_axis_offset = USER_TO_PROGRAM_ANG(pars[5216]);
      _setup.u_axis_offset = USER_TO_PROGRAM_LEN(pars[5217]);
      _setup.v_axis_offset = USER_TO_PROGRAM_LEN(pars[5218]);
      _setup.w_axis_offset = USER_TO_PROGRAM_LEN(pars[5219]);
      SET_ORIGIN_OFFSETS(USER_TO_PROGRAM_LEN(pars[k + 1] + pars[5211]),
                         USER_TO_PROGRAM_LEN(pars[k + 2] + pars[5212]), 
                         USER_TO_PROGRAM_LEN(pars[k + 3] + pars[5213]),
                         USER_TO_PROGRAM_ANG(pars[k + 4] + pars[5214]),
                         USER_TO_PROGRAM_ANG(pars[k + 5] + pars[5215]),
                         USER_TO_PROGRAM_ANG(pars[k + 6] + pars[5216]),
                         USER_TO_PROGRAM_LEN(pars[k + 7] + pars[5217]),
                         USER_TO_PROGRAM_LEN(pars[k + 8] + pars[5218]),
                         USER_TO_PROGRAM_LEN(pars[k + 9] + pars[5219]));
  } else {
      _setup.axis_offset_x = 0.0;
      _setup.axis_offset_y = 0.0;
      _setup.axis_offset_z = 0.0;
      _setup.AA_axis_offset = 0.0;
      _setup.BB_axis_offset = 0.0;
      _setup.CC_axis_offset = 0.0;
      _setup.u_axis_offset = 0.0;
      _setup.v_axis_offset = 0.0;
      _setup.w_axis_offset = 0.0;
      SET_ORIGIN_OFFSETS(USER_TO_PROGRAM_LEN(pars[k + 1]),
                         USER_TO_PROGRAM_LEN(pars[k + 2]), 
                         USER_TO_PROGRAM_LEN(pars[k + 3]),
                         USER_TO_PROGRAM_ANG(pars[k + 4]),
                         USER_TO_PROGRAM_ANG(pars[k + 5]),
                         USER_TO_PROGRAM_ANG(pars[k + 6]),
                         USER_TO_PROGRAM_LEN(pars[k + 7]),
                         USER_TO_PROGRAM_LEN(pars[k + 8]),
                         USER_TO_PROGRAM_LEN(pars[k + 9]));
  }
  _setup.rotation_xy = pars[k+10];
  SET_XY_ROTATION(pars[k+10]);
  SET_FEED_REFERENCE(CANON_XYZ);
//_setup.Aa_current set in Interp::synch
  _setup.AA_origin_offset = USER_TO_PROGRAM_ANG(pars[k + 4]);
//_setup.Bb_current set in Interp::synch
  _setup.BB_origin_offset = USER_TO_PROGRAM_ANG(pars[k + 5]);
//_setup.Cc_current set in Interp::synch
  _setup.CC_origin_offset = USER_TO_PROGRAM_ANG(pars[k + 6]);
  _setup.u_origin_offset = USER_TO_PROGRAM_LEN(pars[k + 7]);
  _setup.v_origin_offset = USER_TO_PROGRAM_LEN(pars[k + 8]);
  _setup.w_origin_offset = USER_TO_PROGRAM_LEN(pars[k + 9]);
//_setup.active_g_codes initialized below
//_setup.active_m_codes initialized below
//_setup.active_settings initialized below
//_setup.block1 does not need initialization
  _setup.blocktext[0] = 0;
//_setup.current_slot set in Interp::synch
//_setup.current_x set in Interp::synch
//_setup.current_y set in Interp::synch
//_setup.current_z set in Interp::synch
  _setup.cutter_comp_side = OFF;
  _setup.arc_not_allowed = OFF;
//_setup.cycle values do not need initialization
  _setup.distance_mode = MODE_ABSOLUTE;
  _setup.ijk_distance_mode = MODE_INCREMENTAL;  // backwards compatability
  _setup.feed_mode = UNITS_PER_MINUTE;
//_setup.feed_override set in Interp::synch
//_setup.feed_rate set in Interp::synch
  _setup.filename[0] = 0;
  _setup.file_pointer = NULL;
//_setup.flood set in Interp::synch
  _setup.tool_offset_index = 1;
//_setup.length_units set in Interp::synch
  _setup.line_length = 0;
  _setup.linetext[0] = 0;
//_setup.mist set in Interp::synch
  _setup.motion_mode = G_80;
//_setup.origin_index set above
  _setup.origin_offset_x = USER_TO_PROGRAM_LEN(pars[k + 1]);
  _setup.origin_offset_y = USER_TO_PROGRAM_LEN(pars[k + 2]);
  _setup.origin_offset_z = USER_TO_PROGRAM_LEN(pars[k + 3]);
//_setup.parameters set above
//_setup.parameter_occurrence does not need initialization
//_setup.parameter_numbers does not need initialization
//_setup.parameter_values does not need initialization
//_setup.percent_flag does not need initialization
//_setup.plane set in Interp::synch
  _setup.probe_flag = OFF;
  _setup.toolchange_flag = OFF;
  _setup.input_flag = OFF;
  _setup.input_index = -1;
  _setup.input_digital = OFF;
  _setup.program_x = 0.;   /* for cutter comp */
  _setup.program_y = 0.;   /* for cutter comp */
  _setup.program_z = 0.;   /* for cutter comp */
  _setup.cutter_comp_firstmove = ON;
//_setup.retract_mode does not need initialization
//_setup.selected_tool_slot set in Interp::synch
  _setup.sequence_number = 0;   /*DOES THIS NEED TO BE AT TOP? */
//_setup.speed set in Interp::synch
  _setup.speed_feed_mode = CANON_INDEPENDENT;
//_setup.speed_override set in Interp::synch
//_setup.spindle_turning set in Interp::synch
//_setup.stack does not need initialization
//_setup.stack_index does not need initialization
   ZERO_EMC_POSE(_setup.tool_offset);
//_setup.tool_max set in Interp::synch
//_setup.tool_table set in Interp::synch
//_setup.traverse_rate set in Interp::synch
//_setup.adaptive_feed set in Interp::synch
//_setup.feed_hold set in Interp::synch

  // initialization stuff for subroutines and control structures
  _setup.call_level = 0;
  _setup.defining_sub = 0;
  _setup.skipping_o = 0;
  _setup.oword_labels = 0;

  _setup.lathe_diameter_mode = OFF;

  memcpy(_readers, default_readers, sizeof(default_readers));

  long axis_mask = GET_EXTERNAL_AXIS_MASK();
  if(!(axis_mask & AXIS_MASK_X)) _readers[(int)'x'] = 0;
  if(!(axis_mask & AXIS_MASK_Y)) _readers[(int)'y'] = 0;
  if(!(axis_mask & AXIS_MASK_Z)) _readers[(int)'z'] = 0;
  if(!(axis_mask & AXIS_MASK_A)) _readers[(int)'a'] = 0;
  if(!(axis_mask & AXIS_MASK_B)) _readers[(int)'b'] = 0;
  if(!(axis_mask & AXIS_MASK_C)) _readers[(int)'c'] = 0;
  if(!(axis_mask & AXIS_MASK_U)) _readers[(int)'u'] = 0;
  if(!(axis_mask & AXIS_MASK_V)) _readers[(int)'v'] = 0;
  if(!(axis_mask & AXIS_MASK_W)) _readers[(int)'w'] = 0;

  synch(); //synch first, then update the interface


  write_g_codes((block_pointer) NULL, &_setup);
  write_m_codes((block_pointer) NULL, &_setup);
  write_settings(&_setup);

  init_tool_parameters();
  // Synch rest of settings to external world
  return INTERP_OK;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x238, %rsp            # imm = 0x238
movq %rdi, %rbx
callq 0xbaa0
leaq 0xab2b(%rip), %rdi      # 0x36b98
callq 0xbe30
movq 0x10ee7(%rip), %r15     # 0x3cf60
movabsq $0x676f6c5f636d65, %rcx # imm = 0x676F6C5F636D65
movq %rcx, 0x1b6b8(%r15)
andl $0x0, 0x1b6b4(%r15)
andl $0x0, 0xc6ac(%r15)
andq $0x0, 0x1e6d0(%r15)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x1e6c0(%r15)
testq %rax, %rax
je 0x2c539
movq %rax, %r14
leaq -0x148(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0xc4e0
cmpl $0x0, 0x1b6b4(%r15)
jle 0x2c100
callq 0xc0b0
movq %r14, (%rsp)
leaq 0xaac1(%rip), %rsi      # 0x36ba6
leaq 0xa946(%rip), %r8       # 0x36a32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x18e, %r9d            # imm = 0x18E
xorl %eax, %eax
callq 0xc5e0
leaq -0x148(%rbp), %rdi
movq %r14, %rsi
callq 0xb690
testb %al, %al
je 0x2c474
movl $0x1e6c0, %esi          # imm = 0x1E6C0
addq 0x10e3d(%rip), %rsi     # 0x3cf60
leaq 0xaacd(%rip), %rdx      # 0x36bf7
leaq 0xaad9(%rip), %rcx      # 0x36c0a
leaq -0x148(%rbp), %rdi
pushq $0x1
popq %r8
callq 0xbe60
movl $0x1e6c4, %esi          # imm = 0x1E6C4
addq 0x10e13(%rip), %rsi     # 0x3cf60
leaq 0xaabc(%rip), %rdx      # 0x36c10
leaq 0xaaaf(%rip), %rcx      # 0x36c0a
leaq -0x148(%rbp), %rdi
pushq $0x1
popq %r8
callq 0xbe60
movl $0x1e6c8, %esi          # imm = 0x1E6C8
addq 0x10de9(%rip), %rsi     # 0x3cf60
leaq 0xaaa7(%rip), %rdx      # 0x36c25
leaq 0xaa85(%rip), %rcx      # 0x36c0a
leaq -0x148(%rbp), %rdi
pushq $0x1
popq %r8
callq 0xbe60
movl $0x1e6cc, %esi          # imm = 0x1E6CC
addq 0x10dbf(%rip), %rsi     # 0x3cf60
leaq 0xaa99(%rip), %rdx      # 0x36c41
leaq 0xaaa1(%rip), %rcx      # 0x36c50
leaq -0x148(%rbp), %rdi
pushq $0x1
popq %r8
callq 0xbe60
movl $0x1e6d0, %esi          # imm = 0x1E6D0
addq 0x10d95(%rip), %rsi     # 0x3cf60
leaq 0xaa6f(%rip), %rdx      # 0x36c41
leaq 0xaa7e(%rip), %rcx      # 0x36c57
leaq -0x148(%rbp), %rdi
pushq $0x1
popq %r8
callq 0xbe60
movl $0x1e6d4, %esi          # imm = 0x1E6D4
addq 0x10d6b(%rip), %rsi     # 0x3cf60
leaq 0xaa45(%rip), %rdx      # 0x36c41
leaq 0xaa5b(%rip), %rcx      # 0x36c5e
leaq -0x148(%rbp), %rdi
pushq $0x1
popq %r8
callq 0xbe60
movl $0xc6ac, %esi           # imm = 0xC6AC
addq 0x10d41(%rip), %rsi     # 0x3cf60
leaq 0xaa3f(%rip), %rdx      # 0x36c65
leaq 0xa9dd(%rip), %rcx      # 0x36c0a
leaq -0x148(%rbp), %rdi
pushq $0x1
popq %r8
callq 0xbe60
leaq 0xaa34(%rip), %rsi      # 0x36c78
leaq 0xaa37(%rip), %rdx      # 0x36c82
leaq -0x148(%rbp), %rdi
pushq $0x1
popq %rcx
callq 0xb670
testq %rax, %rax
je 0x2c26e
movq %rax, %rdi
callq 0xbe10
movl %eax, 0x1b6b4(%r15)
leaq 0xaa16(%rip), %rsi      # 0x36c8b
leaq 0xaa06(%rip), %rdx      # 0x36c82
leaq -0x148(%rbp), %rdi
pushq $0x1
popq %rcx
callq 0xb670
testq %rax, %rax
je 0x2c2a4
movl $0x1b6b8, %esi          # imm = 0x1B6B8
addq 0x10cc4(%rip), %rsi     # 0x3cf60
movq %rax, %rdi
callq 0xb3c0
movl $0x1, 0x1d6b8(%r15)
movb $0x0, 0x1d6c0(%r15)
leaq 0xa9d6(%rip), %rsi      # 0x36c94
leaq 0xa9db(%rip), %rdx      # 0x36ca0
leaq -0x148(%rbp), %rdi
pushq $0x1
popq %rcx
callq 0xb670
movq %rax, %r14
testq %rax, %rax
je 0x2c368
cmpl $0x0, 0x1b6b4(%r15)
jle 0x2c315
callq 0xc0b0
movq %r14, (%rsp)
leaq 0xa9ad(%rip), %rsi      # 0x36ca7
leaq 0xa731(%rip), %r8       # 0x36a32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1b2, %r9d            # imm = 0x1B2
xorl %eax, %eax
callq 0xc5e0
leaq 0x1d6c0(%r15), %rsi
movq %r14, %rdi
callq 0xb3c0
testq %rax, %rax
sete %cl
movl 0x1b6b4(%r15), %eax
testl %eax, %eax
setg %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x2c36f
callq 0xc0b0
movq %r14, (%rsp)
leaq 0xa985(%rip), %rsi      # 0x36cd2
leaq 0xa6de(%rip), %r8       # 0x36a32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1b5, %r9d            # imm = 0x1B5
xorl %eax, %eax
callq 0xc5e0
movl 0x1b6b4(%r15), %eax
testl %eax, %eax
jle 0x2c3aa
callq 0xc0b0
movl $0x1d6c0, %ecx          # imm = 0x1D6C0
addq 0x10bdc(%rip), %rcx     # 0x3cf60
movq %rcx, (%rsp)
leaq 0xa97f(%rip), %rsi      # 0x36d0e
leaq 0xa69c(%rip), %r8       # 0x36a32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1b8, %r9d            # imm = 0x1B8
xorl %eax, %eax
callq 0xc5e0
movb $0x0, 0x1c6b8(%r15)
leaq 0xa980(%rip), %rsi      # 0x36d39
leaq 0xa988(%rip), %rdx      # 0x36d48
leaq -0x148(%rbp), %rdi
pushq $0x1
popq %rcx
callq 0xb670
movq %rax, %r14
testq %rax, %rax
je 0x2c4af
leaq 0x1c6b8(%r15), %rsi
movq %r14, %rdi
callq 0xb3c0
testq %rax, %rax
sete %cl
movl 0x1b6b4(%r15), %eax
testl %eax, %eax
setg %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x2c435
callq 0xc0b0
movq %r14, (%rsp)
leaq 0xa93d(%rip), %rsi      # 0x36d50
leaq 0xa618(%rip), %r8       # 0x36a32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1c0, %r9d            # imm = 0x1C0
xorl %eax, %eax
callq 0xc5e0
movl 0x1b6b4(%r15), %eax
testl %eax, %eax
jle 0x2c4e0
callq 0xc0b0
movl $0x1c6b8, %ecx          # imm = 0x1C6B8
addq 0x10b12(%rip), %rcx     # 0x3cf60
movq %rcx, 0x8(%rsp)
movq %r14, (%rsp)
leaq 0xa931(%rip), %rsi      # 0x36d8f
leaq 0xa5cd(%rip), %r8       # 0x36a32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1c3, %r9d            # imm = 0x1C3
jmp 0x2c4d9
cmpl $0x0, 0x1b6b4(%r15)
jle 0x2c52d
callq 0xc0b0
movq %r14, (%rsp)
leaq 0xa737(%rip), %rsi      # 0x36bc9
leaq 0xa599(%rip), %r8       # 0x36a32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x191, %r9d            # imm = 0x191
xorl %eax, %eax
callq 0xc5e0
jmp 0x2c52d
cmpl $0x0, 0x1b6b4(%r15)
jle 0x2c521
callq 0xc0b0
leaq 0xa8fb(%rip), %rsi      # 0x36dc0
leaq 0xa566(%rip), %r8       # 0x36a32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1c7, %r9d            # imm = 0x1C7
xorl %eax, %eax
callq 0xc5e0
cmpl $0x0, 0x1b6b4(%r15)
jle 0x2c521
callq 0xc0b0
movl $0x1c6b8, %ecx          # imm = 0x1C6B8
addq 0x10a65(%rip), %rcx     # 0x3cf60
movq %rcx, (%rsp)
leaq 0xa8e6(%rip), %rsi      # 0x36dec
leaq 0xa525(%rip), %r8       # 0x36a32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1c9, %r9d            # imm = 0x1C9
xorl %eax, %eax
callq 0xc5e0
leaq -0x148(%rbp), %rdi
callq 0xb4f0
leaq -0x148(%rbp), %rdi
callq 0xc010
callq 0xc160
movl %eax, 0x1690(%r15)
movl %eax, %edi
callq 0xb910
leaq -0x250(%rbp), %r14
movq %r14, %rdi
movl $0xff, %esi
callq 0xb980
cmpb $0x0, (%r14)
jne 0x2c588
movabsq $0x7261762e63676e, %rax # imm = 0x7261762E63676E
movq %rax, -0x24b(%rbp)
movabsq $0x63676e3437327372, %rax # imm = 0x63676E3437327372
movq %rax, -0x250(%rbp)
leaq -0x250(%rbp), %rsi
movq %rbx, %rdi
callq 0xc5b0
movl %eax, %r14d
testl %eax, %eax
je 0x2c5f8
movslq 0xd670(%r15), %rax
cmpq $0x30, %rax
jg 0x2d303
imulq $0x50, %rax, %rax
leaq (%r15,%rax), %rdi
addq $0xc6d0, %rdi           # imm = 0xC6D0
leaq 0xab6a(%rip), %rsi      # 0x3712f
pushq $0x50
popq %rdx
callq 0xb940
movslq 0xd670(%r15), %rax
imulq $0x50, %rax, %rcx
xorl %edx, %edx
movb %dl, 0xc71f(%r15,%rcx)
incl %eax
movl %eax, 0xd670(%r15)
movb %dl, 0xc720(%r15,%rcx)
jmp 0x2d303
movsd 0xbae0(%r15), %xmm0
addsd 0x3257(%rip), %xmm0     # 0x2f860
cvttsd2si %xmm0, %eax
movl %eax, 0x179c(%r15)
leal -0xa(%rax), %ecx
cmpl $-0xa, %ecx
ja 0x2c63b
pushq $0x1
popq %rax
movl $0x1, 0x179c(%r15)
movabsq $0x3ff0000000000000, %rcx # imm = 0x3FF0000000000000
movq %rcx, 0xbae0(%r15)
imull $0x14, %eax, %r12d
movsd 0xba90(%r15), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x2c658
jnp 0x2cb4e
movsd 0xba98(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
movsd 0x3846(%rip), %xmm1     # 0x2fec0
movsd %xmm1, -0x60(%rbp)
cmpl $0x3, %eax
je 0x2c68c
movsd 0x3814(%rip), %xmm1     # 0x2fea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x382b(%rip), %xmm0     # 0x2fec8
movsd %xmm0, -0x68(%rbp)
cmpl $0x1, %eax
je 0x2c6ab
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x118(%r15)
movsd 0xbaa0(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
movsd 0x37e6(%rip), %xmm1     # 0x2fec0
cmpl $0x3, %eax
je 0x2c6e7
movsd 0x37b9(%rip), %xmm1     # 0x2fea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x37d0(%rip), %xmm0     # 0x2fec8
cmpl $0x1, %eax
je 0x2c701
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x120(%r15)
movsd 0xbaa8(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
movsd 0x3790(%rip), %xmm1     # 0x2fec0
cmpl $0x3, %eax
je 0x2c73d
movsd 0x3763(%rip), %xmm1     # 0x2fea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x377a(%rip), %xmm0     # 0x2fec8
cmpl $0x1, %eax
je 0x2c757
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x128(%r15)
movsd 0xbab0(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xc090
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, (%r15)
movsd 0xbab8(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xc090
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, 0x18(%r15)
movsd 0xbac0(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xc090
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, 0x30(%r15)
movsd 0xbac8(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
movsd 0x36d5(%rip), %xmm1     # 0x2fec0
cmpl $0x3, %eax
je 0x2c7f8
movsd 0x36a8(%rip), %xmm1     # 0x2fea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x36bf(%rip), %xmm0     # 0x2fec8
cmpl $0x1, %eax
je 0x2c812
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x48(%r15)
movsd 0xbad0(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
movsd 0x3682(%rip), %xmm1     # 0x2fec0
cmpl $0x3, %eax
je 0x2c84b
movsd 0x3655(%rip), %xmm1     # 0x2fea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x366c(%rip), %xmm0     # 0x2fec8
cmpl $0x1, %eax
je 0x2c865
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x60(%r15)
movsd 0xbad8(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
movsd 0x362f(%rip), %xmm1     # 0x2fec0
cmpl $0x3, %eax
je 0x2c89e
movsd 0x3602(%rip), %xmm1     # 0x2fea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x3619(%rip), %xmm0     # 0x2fec8
cmpl $0x1, %eax
je 0x2c8b8
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x78(%r15)
movl %r12d, %r12d
movsd 0xba48(%r15,%r12,8), %xmm0
addsd 0xba98(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xba40
movsd %xmm0, -0x48(%rbp)
movl 0x1690(%r15), %eax
movsd 0x35ca(%rip), %xmm0     # 0x2fec0
cmpl $0x3, %eax
je 0x2c903
movsd 0x359d(%rip), %xmm0     # 0x2fea0
movsd 0x35bd(%rip), %xmm1     # 0x2fec8
cmpl $0x1, %eax
je 0x2c913
movaps %xmm0, %xmm1
movsd %xmm1, -0xd8(%rbp)
movsd 0xba50(%r15,%r12,8), %xmm0
addsd 0xbaa0(%r15), %xmm0
movsd %xmm0, -0x40(%rbp)
callq 0xba40
movsd %xmm0, -0xb0(%rbp)
movl 0x1690(%r15), %eax
movsd 0x3571(%rip), %xmm0     # 0x2fec0
cmpl $0x3, %eax
je 0x2c95c
movsd 0x3544(%rip), %xmm0     # 0x2fea0
movsd 0x3564(%rip), %xmm1     # 0x2fec8
cmpl $0x1, %eax
je 0x2c96c
movaps %xmm0, %xmm1
movsd %xmm1, -0xc8(%rbp)
movsd 0xba58(%r15,%r12,8), %xmm0
addsd 0xbaa8(%r15), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xba40
movsd %xmm0, -0x98(%rbp)
movl 0x1690(%r15), %eax
movsd 0x3518(%rip), %xmm0     # 0x2fec0
cmpl $0x3, %eax
je 0x2c9b5
movsd 0x34eb(%rip), %xmm0     # 0x2fea0
movsd 0x350b(%rip), %xmm1     # 0x2fec8
cmpl $0x1, %eax
je 0x2c9c5
movaps %xmm0, %xmm1
movsd %xmm1, -0xa8(%rbp)
movsd 0xba60(%r15,%r12,8), %xmm0
addsd 0xbab0(%r15), %xmm0
movsd %xmm0, -0xd0(%rbp)
callq 0xc090
movsd %xmm0, -0xa0(%rbp)
movsd 0xba68(%r15,%r12,8), %xmm0
addsd 0xbab8(%r15), %xmm0
movsd %xmm0, -0xc0(%rbp)
callq 0xc090
movsd %xmm0, -0x90(%rbp)
movsd 0xba70(%r15,%r12,8), %xmm0
addsd 0xbac0(%r15), %xmm0
movsd %xmm0, -0xb8(%rbp)
callq 0xc090
movsd %xmm0, -0x88(%rbp)
movsd 0xba78(%r15,%r12,8), %xmm0
addsd 0xbac8(%r15), %xmm0
movsd %xmm0, -0x58(%rbp)
callq 0xba40
movsd %xmm0, -0x78(%rbp)
movl 0x1690(%r15), %eax
movsd 0x344a(%rip), %xmm0     # 0x2fec0
cmpl $0x3, %eax
je 0x2ca83
movsd 0x341d(%rip), %xmm0     # 0x2fea0
movsd 0x343d(%rip), %xmm1     # 0x2fec8
cmpl $0x1, %eax
je 0x2ca93
movaps %xmm0, %xmm1
movsd %xmm1, -0x80(%rbp)
movsd 0xba80(%r15,%r12,8), %xmm0
addsd 0xbad0(%r15), %xmm0
movsd %xmm0, -0x50(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
movsd 0x33fc(%rip), %xmm1     # 0x2fec0
cmpl $0x3, %eax
je 0x2cad1
movsd 0x33cf(%rip), %xmm1     # 0x2fea0
movsd 0x33ef(%rip), %xmm4     # 0x2fec8
cmpl $0x1, %eax
movsd -0x38(%rbp), %xmm2
movsd -0x58(%rbp), %xmm3
je 0x2caeb
movaps %xmm1, %xmm4
movsd %xmm4, -0x70(%rbp)
movsd -0x30(%rbp), %xmm1
divsd -0x48(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
movsd -0x40(%rbp), %xmm1
divsd -0xb0(%rbp), %xmm1
movsd %xmm1, -0x40(%rbp)
divsd -0x98(%rbp), %xmm2
movsd %xmm2, -0x38(%rbp)
divsd -0x78(%rbp), %xmm3
movsd %xmm3, -0x58(%rbp)
movsd -0x50(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, -0x50(%rbp)
movsd 0xba88(%r15,%r12,8), %xmm0
addsd 0xbad8(%r15), %xmm0
jmp 0x2cdc0
andq $0x0, (%r15)
andq $0x0, 0x18(%r15)
andq $0x0, 0x30(%r15)
andq $0x0, 0x48(%r15)
andq $0x0, 0x60(%r15)
andq $0x0, 0x78(%r15)
movl %r12d, %r12d
xorpd %xmm0, %xmm0
movupd %xmm0, 0x118(%r15)
andq $0x0, 0x128(%r15)
movsd 0xba48(%r15,%r12,8), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xba40
movsd %xmm0, -0x48(%rbp)
movl 0x1690(%r15), %eax
movsd 0x3315(%rip), %xmm0     # 0x2fec0
movsd %xmm0, -0x60(%rbp)
cmpl $0x3, %eax
je 0x2cbbd
movsd 0x32e3(%rip), %xmm0     # 0x2fea0
movsd 0x3303(%rip), %xmm1     # 0x2fec8
movsd %xmm1, -0x68(%rbp)
cmpl $0x1, %eax
je 0x2cbd2
movaps %xmm0, %xmm1
movsd %xmm1, -0xd8(%rbp)
movsd 0xba50(%r15,%r12,8), %xmm0
movsd %xmm0, -0x40(%rbp)
callq 0xba40
movsd %xmm0, -0xb0(%rbp)
movl 0x1690(%r15), %eax
movsd 0x32bb(%rip), %xmm0     # 0x2fec0
cmpl $0x3, %eax
je 0x2cc12
movsd 0x328e(%rip), %xmm0     # 0x2fea0
movsd 0x32ae(%rip), %xmm1     # 0x2fec8
cmpl $0x1, %eax
je 0x2cc22
movaps %xmm0, %xmm1
movsd %xmm1, -0xc8(%rbp)
movsd 0xba58(%r15,%r12,8), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xba40
movsd %xmm0, -0x98(%rbp)
movl 0x1690(%r15), %eax
movsd 0x326b(%rip), %xmm0     # 0x2fec0
cmpl $0x3, %eax
je 0x2cc62
movsd 0x323e(%rip), %xmm0     # 0x2fea0
movsd 0x325e(%rip), %xmm1     # 0x2fec8
cmpl $0x1, %eax
je 0x2cc72
movaps %xmm0, %xmm1
movsd %xmm1, -0xa8(%rbp)
movsd 0xba60(%r15,%r12,8), %xmm0
movsd %xmm0, -0xd0(%rbp)
callq 0xc090
movsd %xmm0, -0xa0(%rbp)
movsd 0xba68(%r15,%r12,8), %xmm0
movsd %xmm0, -0xc0(%rbp)
callq 0xc090
movsd %xmm0, -0x90(%rbp)
movsd 0xba70(%r15,%r12,8), %xmm0
movsd %xmm0, -0xb8(%rbp)
callq 0xc090
movsd %xmm0, -0x88(%rbp)
movsd 0xba78(%r15,%r12,8), %xmm0
movsd %xmm0, -0x58(%rbp)
callq 0xba40
movsd %xmm0, -0x78(%rbp)
movl 0x1690(%r15), %eax
movsd 0x31c1(%rip), %xmm0     # 0x2fec0
cmpl $0x3, %eax
je 0x2cd0c
movsd 0x3194(%rip), %xmm0     # 0x2fea0
movsd 0x31b4(%rip), %xmm1     # 0x2fec8
cmpl $0x1, %eax
je 0x2cd1c
movaps %xmm0, %xmm1
movsd %xmm1, -0x80(%rbp)
movsd 0xba80(%r15,%r12,8), %xmm0
movsd %xmm0, -0x50(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
movsd 0x317c(%rip), %xmm1     # 0x2fec0
cmpl $0x3, %eax
je 0x2cd51
movsd 0x314f(%rip), %xmm1     # 0x2fea0
movsd 0x316f(%rip), %xmm4     # 0x2fec8
cmpl $0x1, %eax
movsd -0x38(%rbp), %xmm2
movsd -0x58(%rbp), %xmm3
je 0x2cd6b
movaps %xmm1, %xmm4
movsd %xmm4, -0x70(%rbp)
movsd -0x30(%rbp), %xmm1
divsd -0x48(%rbp), %xmm1
movsd %xmm1, -0x30(%rbp)
movsd -0x40(%rbp), %xmm1
divsd -0xb0(%rbp), %xmm1
movsd %xmm1, -0x40(%rbp)
divsd -0x98(%rbp), %xmm2
movsd %xmm2, -0x38(%rbp)
divsd -0x78(%rbp), %xmm3
movsd %xmm3, -0x58(%rbp)
movsd -0x50(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, -0x50(%rbp)
movsd 0xba88(%r15,%r12,8), %xmm0
movsd %xmm0, -0x48(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
cmpl $0x3, %eax
je 0x2cde3
movsd 0x30c2(%rip), %xmm1     # 0x2fea0
movsd %xmm1, -0x60(%rbp)
movsd -0x30(%rbp), %xmm8
divsd -0xd8(%rbp), %xmm8
movsd -0x40(%rbp), %xmm1
divsd -0xc8(%rbp), %xmm1
movsd -0x38(%rbp), %xmm2
divsd -0xa8(%rbp), %xmm2
movsd -0xd0(%rbp), %xmm3
divsd -0xa0(%rbp), %xmm3
movsd -0xc0(%rbp), %xmm4
divsd -0x90(%rbp), %xmm4
movsd -0xb8(%rbp), %xmm5
divsd -0x88(%rbp), %xmm5
movsd -0x58(%rbp), %xmm6
divsd -0x80(%rbp), %xmm6
movsd -0x50(%rbp), %xmm7
divsd -0x70(%rbp), %xmm7
movsd -0x48(%rbp), %xmm9
divsd %xmm0, %xmm9
cmpl $0x1, %eax
je 0x2ce6a
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
divsd -0x68(%rbp), %xmm9
movsd %xmm9, (%rsp)
movapd %xmm8, %xmm0
callq 0xb550
movsd 0xba90(%r15,%r12,8), %xmm0
movsd %xmm0, 0x17b8(%r15)
callq 0xbf80
pushq $0x2
popq %rdi
callq 0xbd60
movsd 0xba60(%r15,%r12,8), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xc090
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, 0x10(%r15)
movsd 0xba68(%r15,%r12,8), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xc090
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, 0x28(%r15)
movsd 0xba70(%r15,%r12,8), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xc090
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, 0x40(%r15)
movsd 0xba78(%r15,%r12,8), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
movsd 0x2f94(%rip), %xmm1     # 0x2fec0
movsd %xmm1, -0x40(%rbp)
cmpl $0x3, %eax
je 0x2cf3e
movsd 0x2f62(%rip), %xmm1     # 0x2fea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x2f79(%rip), %xmm0     # 0x2fec8
movsd %xmm0, -0x30(%rbp)
cmpl $0x1, %eax
je 0x2cf5d
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x58(%r15)
movsd 0xba80(%r15,%r12,8), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
movsd 0x2f36(%rip), %xmm1     # 0x2fec0
cmpl $0x3, %eax
je 0x2cf97
movsd 0x2f09(%rip), %xmm1     # 0x2fea0
movsd -0x38(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x2f20(%rip), %xmm0     # 0x2fec8
cmpl $0x1, %eax
je 0x2cfb1
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x70(%r15)
movsd 0xba88(%r15,%r12,8), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
movsd 0x2ee2(%rip), %xmm1     # 0x2fec0
cmpl $0x3, %eax
je 0x2cfeb
movsd 0x2eb5(%rip), %xmm1     # 0x2fea0
movsd -0x38(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x2ecc(%rip), %xmm0     # 0x2fec8
cmpl $0x1, %eax
je 0x2d005
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x88(%r15)
xorl %r13d, %r13d
movb %r13b, 0x4f8(%r15)
andl $0x0, 0x624(%r15)
movb %r13b, 0x110(%r15)
movabsq $0x100000000, %rax      # imm = 0x100000000
movq %rax, 0x668(%r15)
andl $0x0, 0x670(%r15)
movb %r13b, 0x680(%r15)
andq $0x0, 0x1680(%r15)
movl $0x1, 0x168c(%r15)
andl $0x0, 0x1694(%r15)
movb %r13b, 0x1698(%r15)
movl $0x320, 0x1798(%r15) # imm = 0x320
movsd 0xba48(%r15,%r12,8), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
movsd 0x2e25(%rip), %xmm1     # 0x2fec0
cmpl $0x3, %eax
je 0x2d0a8
movsd 0x2df8(%rip), %xmm1     # 0x2fea0
movsd -0x38(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x2e0f(%rip), %xmm0     # 0x2fec8
cmpl $0x1, %eax
je 0x2d0c2
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x17a0(%r15)
movsd 0xba50(%r15,%r12,8), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
movsd 0x2dce(%rip), %xmm1     # 0x2fec0
cmpl $0x3, %eax
je 0x2d0ff
movsd 0x2da1(%rip), %xmm1     # 0x2fea0
movsd -0x38(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x2db8(%rip), %xmm0     # 0x2fec8
cmpl $0x1, %eax
je 0x2d119
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x17a8(%r15)
movsd 0xba58(%r15,%r12,8), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xba40
movl 0x1690(%r15), %eax
cmpl $0x3, %eax
je 0x2d153
movsd 0x2d52(%rip), %xmm1     # 0x2fea0
movsd %xmm1, -0x40(%rbp)
movsd -0x38(%rbp), %xmm1
divsd %xmm0, %xmm1
cmpl $0x1, %eax
je 0x2d16b
movsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
divsd -0x30(%rbp), %xmm1
movsd %xmm1, 0x17b0(%r15)
andw $0x0, 0xc680(%r15)
movb %r13b, 0xc682(%r15)
orl $-0x1, 0xc684(%r15)
movw $0x100, 0xc688(%r15)    # imm = 0x100
xorpd %xmm0, %xmm0
andq $0x0, 0xc6a0(%r15)
movupd %xmm0, 0xc690(%r15)
andl $0x0, 0xc6b4(%r15)
movl $0x2, 0xc6c4(%r15)
andl $0x0, 0xef90(%r15)
andl $0x0, 0xef50(%r15)
andq $0x0, 0xef70(%r15)
andl $0x0, 0xfb28(%r15)
movb %r13b, 0x1e6d8(%r15)
leaq 0x8(%rbx), %rdi
movupd %xmm0, 0xd678(%r15)
movupd %xmm0, 0xd688(%r15)
movupd %xmm0, 0xd698(%r15)
movupd %xmm0, 0xd6a8(%r15)
andq $0x0, 0xd6b8(%r15)
movq 0xfd97(%rip), %rsi      # 0x3cfb8
movl $0x1000, %edx           # imm = 0x1000
callq 0xb940
callq 0xbc10
movl %eax, %ecx
testb $0x1, %al
jne 0x2d242
xorpd %xmm0, %xmm0
movupd %xmm0, 0x788(%rbx)
testb $0x2, %cl
jne 0x2d253
xorpd %xmm0, %xmm0
movupd %xmm0, 0x798(%rbx)
testb $0x4, %cl
jne 0x2d264
xorpd %xmm0, %xmm0
movupd %xmm0, 0x7a8(%rbx)
testb $0x8, %cl
jne 0x2d275
xorpd %xmm0, %xmm0
movupd %xmm0, 0x618(%rbx)
testb $0x10, %cl
jne 0x2d286
xorpd %xmm0, %xmm0
movupd %xmm0, 0x628(%rbx)
testb $0x20, %cl
jne 0x2d297
xorpd %xmm0, %xmm0
movupd %xmm0, 0x638(%rbx)
testb $0x40, %cl
jne 0x2d2a8
xorpd %xmm0, %xmm0
movupd %xmm0, 0x758(%rbx)
testb %cl, %cl
js 0x2d2b8
xorpd %xmm0, %xmm0
movupd %xmm0, 0x768(%rbx)
btl $0x8, %ecx
jb 0x2d2ca
xorpd %xmm0, %xmm0
movupd %xmm0, 0x778(%rbx)
movq %rbx, %rdi
callq 0xbba0
movq 0xfc87(%rip), %r15      # 0x3cf60
movq %rbx, %rdi
xorl %esi, %esi
movq %r15, %rdx
callq 0xc770
movq %rbx, %rdi
xorl %esi, %esi
movq %r15, %rdx
callq 0xc730
movq %rbx, %rdi
movq %r15, %rsi
callq 0xbe40
callq 0xc3d0
movl %r14d, %eax
addq $0x238, %rsp            # imm = 0x238
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2d31a
movq %rax, %rbx
leaq -0x148(%rbp), %rdi
callq 0xc010
movq %rbx, %rdi
callq 0xc520
nop