// File: /workspace/github_cpp_makefile_star2_O3/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 0xa9f0
leaq 0xbb33(%rip), %rdi      # 0x3ab98
callq 0xad30
movq %rax, %r14
movq 0x11eec(%rip), %r15     # 0x40f60
movabsq $0x676f6c5f636d65, %rax # imm = 0x676F6C5F636D65
movq %rax, 0x1b6b8(%r15)
xorl %eax, %eax
movl %eax, 0x1b6b4(%r15)
movl %eax, 0xc6ac(%r15)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x1e6c0(%r15)
movq $0x0, 0x1e6d0(%r15)
testq %r14, %r14
je 0x2f54a
leaq -0x148(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0xb380
cmpl $0x0, 0x1b6b4(%r15)
jle 0x2f0fb
callq 0xaf80
movq %r14, (%rsp)
leaq 0xbac6(%rip), %rsi      # 0x3aba6
leaq 0xb94b(%rip), %r8       # 0x3aa32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x18e, %r9d            # imm = 0x18E
xorl %eax, %eax
callq 0xb470
leaq -0x148(%rbp), %rdi
movq %r14, %rsi
callq 0xa650
testb %al, %al
je 0x2f485
movl $0x1e6c0, %esi          # imm = 0x1E6C0
addq 0x11e42(%rip), %rsi     # 0x40f60
leaq 0xbad2(%rip), %rdx      # 0x3abf7
leaq 0xbade(%rip), %rcx      # 0x3ac0a
leaq -0x148(%rbp), %rdi
movl $0x1, %r8d
callq 0xad60
movl $0x1e6c4, %esi          # imm = 0x1E6C4
addq 0x11e16(%rip), %rsi     # 0x40f60
leaq 0xbabf(%rip), %rdx      # 0x3ac10
leaq 0xbab2(%rip), %rcx      # 0x3ac0a
leaq -0x148(%rbp), %rdi
movl $0x1, %r8d
callq 0xad60
movl $0x1e6c8, %esi          # imm = 0x1E6C8
addq 0x11dea(%rip), %rsi     # 0x40f60
leaq 0xbaa8(%rip), %rdx      # 0x3ac25
leaq 0xba86(%rip), %rcx      # 0x3ac0a
leaq -0x148(%rbp), %rdi
movl $0x1, %r8d
callq 0xad60
movl $0x1e6cc, %esi          # imm = 0x1E6CC
addq 0x11dbe(%rip), %rsi     # 0x40f60
leaq 0xba98(%rip), %rdx      # 0x3ac41
leaq 0xbaa0(%rip), %rcx      # 0x3ac50
leaq -0x148(%rbp), %rdi
movl $0x1, %r8d
callq 0xad60
movl $0x1e6d0, %esi          # imm = 0x1E6D0
addq 0x11d92(%rip), %rsi     # 0x40f60
leaq 0xba6c(%rip), %rdx      # 0x3ac41
leaq 0xba7b(%rip), %rcx      # 0x3ac57
leaq -0x148(%rbp), %rdi
movl $0x1, %r8d
callq 0xad60
movl $0x1e6d4, %esi          # imm = 0x1E6D4
addq 0x11d66(%rip), %rsi     # 0x40f60
leaq 0xba40(%rip), %rdx      # 0x3ac41
leaq 0xba56(%rip), %rcx      # 0x3ac5e
leaq -0x148(%rbp), %rdi
movl $0x1, %r8d
callq 0xad60
movl $0xc6ac, %esi           # imm = 0xC6AC
addq 0x11d3a(%rip), %rsi     # 0x40f60
leaq 0xba38(%rip), %rdx      # 0x3ac65
leaq 0xb9d6(%rip), %rcx      # 0x3ac0a
leaq -0x148(%rbp), %rdi
movl $0x1, %r8d
callq 0xad60
leaq 0xba2b(%rip), %rsi      # 0x3ac78
leaq 0xba2e(%rip), %rdx      # 0x3ac82
leaq -0x148(%rbp), %rdi
movl $0x1, %ecx
callq 0xa630
testq %rax, %rax
je 0x2f279
movq %rax, %rdi
callq 0xad10
movl %eax, 0x1b6b4(%r15)
leaq 0xba0b(%rip), %rsi      # 0x3ac8b
leaq 0xb9fb(%rip), %rdx      # 0x3ac82
leaq -0x148(%rbp), %rdi
movl $0x1, %ecx
callq 0xa630
testq %rax, %rax
je 0x2f2b1
movl $0x1b6b8, %esi          # imm = 0x1B6B8
addq 0x11cb7(%rip), %rsi     # 0x40f60
movq %rax, %rdi
callq 0xa380
movl $0x1, 0x1d6b8(%r15)
movb $0x0, 0x1d6c0(%r15)
leaq 0xb9c9(%rip), %rsi      # 0x3ac94
leaq 0xb9ce(%rip), %rdx      # 0x3aca0
leaq -0x148(%rbp), %rdi
movl $0x1, %ecx
callq 0xa630
movq %rax, %r14
testq %rax, %rax
je 0x2f377
cmpl $0x0, 0x1b6b4(%r15)
jle 0x2f324
callq 0xaf80
movq %r14, (%rsp)
leaq 0xb99e(%rip), %rsi      # 0x3aca7
leaq 0xb722(%rip), %r8       # 0x3aa32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1b2, %r9d            # imm = 0x1B2
xorl %eax, %eax
callq 0xb470
leaq 0x1d6c0(%r15), %rsi
movq %r14, %rdi
callq 0xa380
testq %rax, %rax
sete %cl
movl 0x1b6b4(%r15), %eax
testl %eax, %eax
setg %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x2f37e
callq 0xaf80
movq %r14, (%rsp)
leaq 0xb976(%rip), %rsi      # 0x3acd2
leaq 0xb6cf(%rip), %r8       # 0x3aa32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1b5, %r9d            # imm = 0x1B5
xorl %eax, %eax
callq 0xb470
movl 0x1b6b4(%r15), %eax
testl %eax, %eax
jle 0x2f3b9
callq 0xaf80
movl $0x1d6c0, %ecx          # imm = 0x1D6C0
addq 0x11bcd(%rip), %rcx     # 0x40f60
movq %rcx, (%rsp)
leaq 0xb970(%rip), %rsi      # 0x3ad0e
leaq 0xb68d(%rip), %r8       # 0x3aa32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1b8, %r9d            # imm = 0x1B8
xorl %eax, %eax
callq 0xb470
movb $0x0, 0x1c6b8(%r15)
leaq 0xb971(%rip), %rsi      # 0x3ad39
leaq 0xb979(%rip), %rdx      # 0x3ad48
leaq -0x148(%rbp), %rdi
movl $0x1, %ecx
callq 0xa630
movq %rax, %r14
testq %rax, %rax
je 0x2f4c0
leaq 0x1c6b8(%r15), %rsi
movq %r14, %rdi
callq 0xa380
testq %rax, %rax
sete %cl
movl 0x1b6b4(%r15), %eax
testl %eax, %eax
setg %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x2f446
callq 0xaf80
movq %r14, (%rsp)
leaq 0xb92c(%rip), %rsi      # 0x3ad50
leaq 0xb607(%rip), %r8       # 0x3aa32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1c0, %r9d            # imm = 0x1C0
xorl %eax, %eax
callq 0xb470
movl 0x1b6b4(%r15), %eax
testl %eax, %eax
jle 0x2f4f1
callq 0xaf80
movl $0x1c6b8, %ecx          # imm = 0x1C6B8
addq 0x11b01(%rip), %rcx     # 0x40f60
movq %rcx, 0x8(%rsp)
movq %r14, (%rsp)
leaq 0xb920(%rip), %rsi      # 0x3ad8f
leaq 0xb5bc(%rip), %r8       # 0x3aa32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1c3, %r9d            # imm = 0x1C3
jmp 0x2f4ea
cmpl $0x0, 0x1b6b4(%r15)
jle 0x2f53e
callq 0xaf80
movq %r14, (%rsp)
leaq 0xb726(%rip), %rsi      # 0x3abc9
leaq 0xb588(%rip), %r8       # 0x3aa32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x191, %r9d            # imm = 0x191
xorl %eax, %eax
callq 0xb470
jmp 0x2f53e
cmpl $0x0, 0x1b6b4(%r15)
jle 0x2f532
callq 0xaf80
leaq 0xb8ea(%rip), %rsi      # 0x3adc0
leaq 0xb555(%rip), %r8       # 0x3aa32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1c7, %r9d            # imm = 0x1C7
xorl %eax, %eax
callq 0xb470
cmpl $0x0, 0x1b6b4(%r15)
jle 0x2f532
callq 0xaf80
movl $0x1c6b8, %ecx          # imm = 0x1C6B8
addq 0x11a54(%rip), %rcx     # 0x40f60
movq %rcx, (%rsp)
leaq 0xb8d5(%rip), %rsi      # 0x3adec
leaq 0xb514(%rip), %r8       # 0x3aa32
movq %rbx, %rdi
xorl %edx, %edx
movl %eax, %ecx
movl $0x1c9, %r9d            # imm = 0x1C9
xorl %eax, %eax
callq 0xb470
leaq -0x148(%rbp), %rdi
callq 0xa4b0
leaq -0x148(%rbp), %rdi
callq 0xa4b0
callq 0xb030
movl %eax, 0x1690(%r15)
movl %eax, %edi
callq 0xa880
leaq -0x250(%rbp), %r14
movq %r14, %rdi
movl $0xff, %esi
callq 0xa8e0
cmpb $0x0, (%r14)
jne 0x2f599
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 0xb440
movl %eax, %r14d
testl %eax, %eax
je 0x2f613
movslq 0xd670(%r15), %rax
cmpq $0x30, %rax
jg 0x30319
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq (%r15,%rax), %rdi
addq $0xc6d0, %rdi           # imm = 0xC6D0
leaq 0xbb55(%rip), %rsi      # 0x3b12f
movl $0x50, %edx
callq 0xa8a0
movslq 0xd670(%r15), %rax
leaq (%rax,%rax,4), %rcx
shlq $0x4, %rcx
xorl %edx, %edx
movb %dl, 0xc71f(%r15,%rcx)
incl %eax
movl %eax, 0xd670(%r15)
movb %dl, 0xc720(%r15,%rcx)
jmp 0x30319
movsd 0xbae0(%r15), %xmm0
addsd 0x423c(%rip), %xmm0     # 0x33860
cvttsd2si %xmm0, %eax
movl %eax, 0x179c(%r15)
leal -0xa(%rax), %ecx
cmpl $-0xa, %ecx
ja 0x2f658
movl $0x1, 0x179c(%r15)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0xbae0(%r15)
movl $0x1, %eax
shll $0x2, %eax
leal (%rax,%rax,4), %r12d
movsd 0xba90(%r15), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x2f678
jnp 0x2fb6e
movsd 0xba98(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
movsd 0x4826(%rip), %xmm1     # 0x33ec0
movsd %xmm1, -0x60(%rbp)
cmpl $0x3, %eax
je 0x2f6ac
movsd 0x47f4(%rip), %xmm1     # 0x33ea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x480b(%rip), %xmm0     # 0x33ec8
movsd %xmm0, -0x68(%rbp)
cmpl $0x1, %eax
je 0x2f6cb
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x118(%r15)
movsd 0xbaa0(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
movsd 0x47c6(%rip), %xmm1     # 0x33ec0
cmpl $0x3, %eax
je 0x2f707
movsd 0x4799(%rip), %xmm1     # 0x33ea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x47b0(%rip), %xmm0     # 0x33ec8
cmpl $0x1, %eax
je 0x2f721
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x120(%r15)
movsd 0xbaa8(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
movsd 0x4770(%rip), %xmm1     # 0x33ec0
cmpl $0x3, %eax
je 0x2f75d
movsd 0x4743(%rip), %xmm1     # 0x33ea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x475a(%rip), %xmm0     # 0x33ec8
cmpl $0x1, %eax
je 0x2f777
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x128(%r15)
movsd 0xbab0(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xaf60
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, (%r15)
movsd 0xbab8(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xaf60
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, 0x18(%r15)
movsd 0xbac0(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xaf60
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, 0x30(%r15)
movsd 0xbac8(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
movsd 0x46b5(%rip), %xmm1     # 0x33ec0
cmpl $0x3, %eax
je 0x2f818
movsd 0x4688(%rip), %xmm1     # 0x33ea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x469f(%rip), %xmm0     # 0x33ec8
cmpl $0x1, %eax
je 0x2f832
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x48(%r15)
movsd 0xbad0(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
movsd 0x4662(%rip), %xmm1     # 0x33ec0
cmpl $0x3, %eax
je 0x2f86b
movsd 0x4635(%rip), %xmm1     # 0x33ea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x464c(%rip), %xmm0     # 0x33ec8
cmpl $0x1, %eax
je 0x2f885
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x60(%r15)
movsd 0xbad8(%r15), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
movsd 0x460f(%rip), %xmm1     # 0x33ec0
cmpl $0x3, %eax
je 0x2f8be
movsd 0x45e2(%rip), %xmm1     # 0x33ea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x45f9(%rip), %xmm0     # 0x33ec8
cmpl $0x1, %eax
je 0x2f8d8
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 0xa990
movsd %xmm0, -0x48(%rbp)
movl 0x1690(%r15), %eax
movsd 0x45aa(%rip), %xmm0     # 0x33ec0
cmpl $0x3, %eax
je 0x2f923
movsd 0x457d(%rip), %xmm0     # 0x33ea0
movsd 0x459d(%rip), %xmm1     # 0x33ec8
cmpl $0x1, %eax
je 0x2f933
movaps %xmm0, %xmm1
movsd %xmm1, -0xd8(%rbp)
movsd 0xba50(%r15,%r12,8), %xmm0
addsd 0xbaa0(%r15), %xmm0
movsd %xmm0, -0x40(%rbp)
callq 0xa990
movsd %xmm0, -0xb0(%rbp)
movl 0x1690(%r15), %eax
movsd 0x4551(%rip), %xmm0     # 0x33ec0
cmpl $0x3, %eax
je 0x2f97c
movsd 0x4524(%rip), %xmm0     # 0x33ea0
movsd 0x4544(%rip), %xmm1     # 0x33ec8
cmpl $0x1, %eax
je 0x2f98c
movaps %xmm0, %xmm1
movsd %xmm1, -0xc8(%rbp)
movsd 0xba58(%r15,%r12,8), %xmm0
addsd 0xbaa8(%r15), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xa990
movsd %xmm0, -0x98(%rbp)
movl 0x1690(%r15), %eax
movsd 0x44f8(%rip), %xmm0     # 0x33ec0
cmpl $0x3, %eax
je 0x2f9d5
movsd 0x44cb(%rip), %xmm0     # 0x33ea0
movsd 0x44eb(%rip), %xmm1     # 0x33ec8
cmpl $0x1, %eax
je 0x2f9e5
movaps %xmm0, %xmm1
movsd %xmm1, -0xa8(%rbp)
movsd 0xba60(%r15,%r12,8), %xmm0
addsd 0xbab0(%r15), %xmm0
movsd %xmm0, -0xd0(%rbp)
callq 0xaf60
movsd %xmm0, -0xa0(%rbp)
movsd 0xba68(%r15,%r12,8), %xmm0
addsd 0xbab8(%r15), %xmm0
movsd %xmm0, -0xc0(%rbp)
callq 0xaf60
movsd %xmm0, -0x90(%rbp)
movsd 0xba70(%r15,%r12,8), %xmm0
addsd 0xbac0(%r15), %xmm0
movsd %xmm0, -0xb8(%rbp)
callq 0xaf60
movsd %xmm0, -0x88(%rbp)
movsd 0xba78(%r15,%r12,8), %xmm0
addsd 0xbac8(%r15), %xmm0
movsd %xmm0, -0x58(%rbp)
callq 0xa990
movsd %xmm0, -0x78(%rbp)
movl 0x1690(%r15), %eax
movsd 0x442a(%rip), %xmm0     # 0x33ec0
cmpl $0x3, %eax
je 0x2faa3
movsd 0x43fd(%rip), %xmm0     # 0x33ea0
movsd 0x441d(%rip), %xmm1     # 0x33ec8
cmpl $0x1, %eax
je 0x2fab3
movaps %xmm0, %xmm1
movsd %xmm1, -0x80(%rbp)
movsd 0xba80(%r15,%r12,8), %xmm0
addsd 0xbad0(%r15), %xmm0
movsd %xmm0, -0x50(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
movsd 0x43dc(%rip), %xmm1     # 0x33ec0
cmpl $0x3, %eax
je 0x2faf1
movsd 0x43af(%rip), %xmm1     # 0x33ea0
movsd 0x43cf(%rip), %xmm4     # 0x33ec8
cmpl $0x1, %eax
movsd -0x38(%rbp), %xmm2
movsd -0x58(%rbp), %xmm3
je 0x2fb0b
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 0x2fddb
xorl %eax, %eax
movq %rax, (%r15)
movq %rax, 0x18(%r15)
movq %rax, 0x30(%r15)
movq %rax, 0x48(%r15)
movq %rax, 0x60(%r15)
movq %rax, 0x78(%r15)
movl %r12d, %r12d
xorpd %xmm0, %xmm0
movupd %xmm0, 0x118(%r15)
movq %rax, 0x128(%r15)
movsd 0xba48(%r15,%r12,8), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xa990
movsd %xmm0, -0x48(%rbp)
movl 0x1690(%r15), %eax
movsd 0x42fa(%rip), %xmm0     # 0x33ec0
movsd %xmm0, -0x60(%rbp)
cmpl $0x3, %eax
je 0x2fbd8
movsd 0x42c8(%rip), %xmm0     # 0x33ea0
movsd 0x42e8(%rip), %xmm1     # 0x33ec8
movsd %xmm1, -0x68(%rbp)
cmpl $0x1, %eax
je 0x2fbed
movaps %xmm0, %xmm1
movsd %xmm1, -0xd8(%rbp)
movsd 0xba50(%r15,%r12,8), %xmm0
movsd %xmm0, -0x40(%rbp)
callq 0xa990
movsd %xmm0, -0xb0(%rbp)
movl 0x1690(%r15), %eax
movsd 0x42a0(%rip), %xmm0     # 0x33ec0
cmpl $0x3, %eax
je 0x2fc2d
movsd 0x4273(%rip), %xmm0     # 0x33ea0
movsd 0x4293(%rip), %xmm1     # 0x33ec8
cmpl $0x1, %eax
je 0x2fc3d
movaps %xmm0, %xmm1
movsd %xmm1, -0xc8(%rbp)
movsd 0xba58(%r15,%r12,8), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xa990
movsd %xmm0, -0x98(%rbp)
movl 0x1690(%r15), %eax
movsd 0x4250(%rip), %xmm0     # 0x33ec0
cmpl $0x3, %eax
je 0x2fc7d
movsd 0x4223(%rip), %xmm0     # 0x33ea0
movsd 0x4243(%rip), %xmm1     # 0x33ec8
cmpl $0x1, %eax
je 0x2fc8d
movaps %xmm0, %xmm1
movsd %xmm1, -0xa8(%rbp)
movsd 0xba60(%r15,%r12,8), %xmm0
movsd %xmm0, -0xd0(%rbp)
callq 0xaf60
movsd %xmm0, -0xa0(%rbp)
movsd 0xba68(%r15,%r12,8), %xmm0
movsd %xmm0, -0xc0(%rbp)
callq 0xaf60
movsd %xmm0, -0x90(%rbp)
movsd 0xba70(%r15,%r12,8), %xmm0
movsd %xmm0, -0xb8(%rbp)
callq 0xaf60
movsd %xmm0, -0x88(%rbp)
movsd 0xba78(%r15,%r12,8), %xmm0
movsd %xmm0, -0x58(%rbp)
callq 0xa990
movsd %xmm0, -0x78(%rbp)
movl 0x1690(%r15), %eax
movsd 0x41a6(%rip), %xmm0     # 0x33ec0
cmpl $0x3, %eax
je 0x2fd27
movsd 0x4179(%rip), %xmm0     # 0x33ea0
movsd 0x4199(%rip), %xmm1     # 0x33ec8
cmpl $0x1, %eax
je 0x2fd37
movaps %xmm0, %xmm1
movsd %xmm1, -0x80(%rbp)
movsd 0xba80(%r15,%r12,8), %xmm0
movsd %xmm0, -0x50(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
movsd 0x4161(%rip), %xmm1     # 0x33ec0
cmpl $0x3, %eax
je 0x2fd6c
movsd 0x4134(%rip), %xmm1     # 0x33ea0
movsd 0x4154(%rip), %xmm4     # 0x33ec8
cmpl $0x1, %eax
movsd -0x38(%rbp), %xmm2
movsd -0x58(%rbp), %xmm3
je 0x2fd86
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 0xa990
movl 0x1690(%r15), %eax
cmpl $0x3, %eax
je 0x2fdfe
movsd 0x40a7(%rip), %xmm1     # 0x33ea0
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 0x2fe85
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
divsd -0x68(%rbp), %xmm9
movsd %xmm9, (%rsp)
movapd %xmm8, %xmm0
callq 0xa510
movsd 0xba90(%r15,%r12,8), %xmm0
movsd %xmm0, 0x17b8(%r15)
callq 0xae60
movl $0x2, %edi
callq 0xac70
movsd 0xba60(%r15,%r12,8), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xaf60
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, 0x10(%r15)
movsd 0xba68(%r15,%r12,8), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xaf60
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, 0x28(%r15)
movsd 0xba70(%r15,%r12,8), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xaf60
movsd -0x30(%rbp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, 0x40(%r15)
movsd 0xba78(%r15,%r12,8), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
movsd 0x3f77(%rip), %xmm1     # 0x33ec0
movsd %xmm1, -0x40(%rbp)
cmpl $0x3, %eax
je 0x2ff5b
movsd 0x3f45(%rip), %xmm1     # 0x33ea0
movsd -0x30(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x3f5c(%rip), %xmm0     # 0x33ec8
movsd %xmm0, -0x30(%rbp)
cmpl $0x1, %eax
je 0x2ff7a
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x58(%r15)
movsd 0xba80(%r15,%r12,8), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
movsd 0x3f19(%rip), %xmm1     # 0x33ec0
cmpl $0x3, %eax
je 0x2ffb4
movsd 0x3eec(%rip), %xmm1     # 0x33ea0
movsd -0x38(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x3f03(%rip), %xmm0     # 0x33ec8
cmpl $0x1, %eax
je 0x2ffce
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x70(%r15)
movsd 0xba88(%r15,%r12,8), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
movsd 0x3ec5(%rip), %xmm1     # 0x33ec0
cmpl $0x3, %eax
je 0x30008
movsd 0x3e98(%rip), %xmm1     # 0x33ea0
movsd -0x38(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x3eaf(%rip), %xmm0     # 0x33ec8
cmpl $0x1, %eax
je 0x30022
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x88(%r15)
xorl %r13d, %r13d
movb %r13b, 0x4f8(%r15)
movl %r13d, 0x624(%r15)
movb %r13b, 0x110(%r15)
movabsq $0x100000000, %rax      # imm = 0x100000000
movq %rax, 0x668(%r15)
movl %r13d, 0x670(%r15)
movb %r13b, 0x680(%r15)
movq %r13, 0x1680(%r15)
movl $0x1, 0x168c(%r15)
movl %r13d, 0x1694(%r15)
movb %r13b, 0x1698(%r15)
movl $0x320, 0x1798(%r15) # imm = 0x320
movsd 0xba48(%r15,%r12,8), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
movsd 0x3e0c(%rip), %xmm1     # 0x33ec0
cmpl $0x3, %eax
je 0x300c1
movsd 0x3ddf(%rip), %xmm1     # 0x33ea0
movsd -0x38(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x3df6(%rip), %xmm0     # 0x33ec8
cmpl $0x1, %eax
je 0x300db
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x17a0(%r15)
movsd 0xba50(%r15,%r12,8), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
movsd 0x3db5(%rip), %xmm1     # 0x33ec0
cmpl $0x3, %eax
je 0x30118
movsd 0x3d88(%rip), %xmm1     # 0x33ea0
movsd -0x38(%rbp), %xmm2
divsd %xmm0, %xmm2
movsd 0x3d9f(%rip), %xmm0     # 0x33ec8
cmpl $0x1, %eax
je 0x30132
movapd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x17a8(%r15)
movsd 0xba58(%r15,%r12,8), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0xa990
movl 0x1690(%r15), %eax
cmpl $0x3, %eax
je 0x3016c
movsd 0x3d39(%rip), %xmm1     # 0x33ea0
movsd %xmm1, -0x40(%rbp)
movsd -0x38(%rbp), %xmm1
divsd %xmm0, %xmm1
cmpl $0x1, %eax
je 0x30184
movsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
divsd -0x30(%rbp), %xmm1
movsd %xmm1, 0x17b0(%r15)
movw $0x0, 0xc680(%r15)
movb %r13b, 0xc682(%r15)
movl $0xffffffff, 0xc684(%r15) # imm = 0xFFFFFFFF
movw $0x100, 0xc688(%r15)    # imm = 0x100
xorpd %xmm0, %xmm0
movupd %xmm0, 0xc690(%r15)
movq %r13, 0xc6a0(%r15)
movl %r13d, 0xc6b4(%r15)
movl $0x2, 0xc6c4(%r15)
movl %r13d, 0xef90(%r15)
movl %r13d, 0xef50(%r15)
movq %r13, 0xef70(%r15)
movl %r13d, 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)
movq %r13, 0xd6b8(%r15)
movq 0x10d81(%rip), %rsi     # 0x40fb8
movl $0x1000, %edx           # imm = 0x1000
callq 0xa8a0
callq 0xab20
movl %eax, %ecx
testb $0x1, %al
jne 0x30258
xorpd %xmm0, %xmm0
movupd %xmm0, 0x788(%rbx)
testb $0x2, %cl
jne 0x30269
xorpd %xmm0, %xmm0
movupd %xmm0, 0x798(%rbx)
testb $0x4, %cl
jne 0x3027a
xorpd %xmm0, %xmm0
movupd %xmm0, 0x7a8(%rbx)
testb $0x8, %cl
jne 0x3028b
xorpd %xmm0, %xmm0
movupd %xmm0, 0x618(%rbx)
testb $0x10, %cl
jne 0x3029c
xorpd %xmm0, %xmm0
movupd %xmm0, 0x628(%rbx)
testb $0x20, %cl
jne 0x302ad
xorpd %xmm0, %xmm0
movupd %xmm0, 0x638(%rbx)
testb $0x40, %cl
jne 0x302be
xorpd %xmm0, %xmm0
movupd %xmm0, 0x758(%rbx)
testb %cl, %cl
js 0x302ce
xorpd %xmm0, %xmm0
movupd %xmm0, 0x768(%rbx)
btl $0x8, %ecx
jb 0x302e0
xorpd %xmm0, %xmm0
movupd %xmm0, 0x778(%rbx)
movq %rbx, %rdi
callq 0xaad0
movq 0x10c71(%rip), %r15     # 0x40f60
movq %rbx, %rdi
xorl %esi, %esi
movq %r15, %rdx
callq 0xb600
movq %rbx, %rdi
xorl %esi, %esi
movq %r15, %rdx
callq 0xb5c0
movq %rbx, %rdi
movq %r15, %rsi
callq 0xad40
callq 0xb270
movl %r14d, %eax
addq $0x238, %rsp            # imm = 0x238
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x30349
jmp 0x30332
movq %rax, %rbx
leaq -0x148(%rbp), %rdi
callq 0xa4b0
movq %rbx, %rdi
callq 0xb3b0
movq %rax, %rdi
callq 0x310bf
nop