// File: /workspace/github_cpp_makefile_star2_O3/srajangarg[P]raytracer/src/core/SceneLoader.cpp
// Function: SceneLoader::doI(std::istream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
SceneInstance * SceneLoader::doI(istream & str, string & name)
{
  name = getString(str);

  if (name.empty())
  {
    *err << "Couldn't read instance name at ";
    errLine(str.tellg());
    return NULL;
  }

  string var = getString(str);

  if (groups[var] == NULL)
  {
    *err << "Instancing node " << var << " which doesn't exist yet at ";
    curPos(*err, str.tellg());
    *err << endl;
    return NULL;
  }

  SceneInstance * n = new SceneInstance();
  instances.push_back(n); //nodes[name] = n;
  n->name_ = name;
  n->child_ = groups[var];

  do
  {
    int state = findOpenOrClosedParen(str);

    if (state == ERROR)
      return NULL;
    else if (state == CLOSED)
      return n;
    else if (state == OPEN)
    {
      string cmd;
      vector<ParametricValue *> values;

      if (readCommand(str, cmd))
      {
        if (cmd == "R") // load rotations
        {
          int numv = getValues(str, values);
          Rotate * r = NULL;

          if (numv < 1)
          {
            *err << "R with no args at ";
            errLine(str.tellg());
          }
          else if (numv < 4)
          {
            cleanAfter(values, 1);
            r = new Rotate();
            r->angle = values[0];
          }
          else
          {
            cleanAfter(values, 4);
            r = new Rotate();
            r->angle = values[0];

            for (int i = 0; i < 3; i++)
              r->axis[i] = values[i + 1];
          }

          if (r != NULL)
            n->transforms_.push_back(r);
        }
        else if (cmd == "Xform")
        {
          int numv = getValues(str, values);
          GeneralTransform * g = NULL;

          if (numv < 9)
          {
            *err << "Xform with too few parameters at ";
            errLine(str.tellg());
          }
          else if (numv < 16)     // 2d
          {
            cleanAfter(values, 9);
            g = new GeneralTransform();

            for (int i = 0; i < 9; i++)
              g->matrix.push_back(values[i]);
          }
          else
          {
            cleanAfter(values, 16);
            g = new GeneralTransform();

            for (int i = 0; i < 16; i++)
              g->matrix.push_back(values[i]);
          }

          if (g != NULL)
            n->transforms_.push_back(g);
        }
        else if (cmd == "T")
        {
          int numv = getValues(str, values);
          Translate * t = NULL;

          if (numv < 2)
          {
            *err << "T with too few parameters at ";
            errLine(str.tellg());
          }
          else if (numv == 2)
          {
            t = new Translate();

            for (int i = 0; i < 2; i++)
              t->translate[i] = values[i];
          }
          else
          {
            cleanAfter(values, 3);
            t = new Translate();

            for (int i = 0; i < 3; i++)
              t->translate[i] = values[i];
          }

          if (t != NULL)
            n->transforms_.push_back(t);
        }
        else if (cmd == "S")
        {
          int numv = getValues(str, values);
          Scale * s = NULL;

          if (numv < 2)
          {
            *err << "S with too few parameters at ";
            errLine(str.tellg());
          }
          else if (numv == 2)
          {
            s = new Scale();

            for (int i = 0; i < 2; i++)
              s->scale[i] = values[i];
          }
          else
          {
            s = new Scale();

            for (int i = 0; i < 3; i++)
              s->scale[i] = values[i];
          }

          if (s != NULL)
            n->transforms_.push_back(s);
        }
        else if (cmd == "color")
        {
          int numv = getValues(str, values);
          ParametricColor * c = NULL;

          if (numv < 3)
          {
            *err << "color with too few parameters at ";
            errLine(str.tellg());
          }
          else
          {
            cleanAfter(values, 3);
            c = new ParametricColor();

            for (int i = 0; i < 3; i++)
              c->color_[i] = values[i];
          }

          if (c != NULL)
            n->color_ = c;
        }
        else if (cmd == "lod")
        {
          int numv = getValues(str, values);
          LOD * l = NULL;

          if (numv < 1)
          {
            *err << "lod with no parameters at ";
            errLine(str.tellg());
          }
          else
          {
            //cout << "got lod" << endl;
            cleanAfter(values, 1);
            l = new LOD();
            l->level_ = values[0];
          }

          if (l != NULL)
            n->lod_ = l;
        }
        else
        {
          *err << "Error: command " << cmd << " not recognized at ";
          curPos(*err, str.tellg());
          *err << endl;
        }

        findCloseParen(str);
      }
    }
  }
  while (true);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x28(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x75a0
movq %r15, %rdi
movq %r12, %rsi
callq 0x4390
movq (%r12), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x8266
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4310
cmpq $0x0, 0x8(%r15)
je 0x82d3
leaq 0x28(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x75a0
leaq 0x18(%rbx), %r12
movq %r12, %rdi
movq %r13, %rsi
callq 0xb11e
cmpq $0x0, (%rax)
je 0x8304
movl $0x58, %edi
callq 0x4300
movq %rax, %r13
movq %rax, %rdi
callq 0x63fc
movq %r13, 0x18(%rsp)
movq 0x80(%rbx), %rsi
cmpq 0x88(%rbx), %rsi
je 0x8394
movq %r13, (%rsi)
addq $0x8, 0x80(%rbx)
jmp 0x83a2
movq 0x90(%rbx), %rdi
leaq 0x22f75(%rip), %rsi     # 0x2b256
movl $0x1f, %edx
callq 0x4360
movq %r14, %rdi
callq 0x4580
movq %rbx, %rdi
movl %eax, %esi
callq 0x8180
xorl %ebx, %ebx
jmp 0x8c25
movq 0x90(%rbx), %r15
leaq 0x22f64(%rip), %rsi     # 0x2b276
movl $0x10, %edx
movq %r15, %rdi
callq 0x4360
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %r15, %rdi
callq 0x4360
leaq 0x22f4f(%rip), %rsi     # 0x2b287
movl $0x1c, %edx
movq %rax, %rdi
callq 0x4360
movq 0x90(%rbx), %r15
movq %r14, %rdi
callq 0x4580
movq %rbx, %rdi
movq %r15, %rsi
movl %eax, %edx
callq 0x74be
movq 0x90(%rbx), %rbx
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x42e0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4050
movq %rax, %rdi
callq 0x4220
jmp 0x8c07
leaq 0x78(%rbx), %rdi
leaq 0x18(%rsp), %rdx
callq 0xc31a
movq 0x18(%rsp), %rdi
addq $0x8, %rdi
movq %r15, %rsi
callq 0x41b0
leaq 0x28(%rsp), %rsi
movq %r12, %rdi
callq 0xb11e
movq (%rax), %rax
movq 0x18(%rsp), %rcx
movq %rax, 0x50(%rcx)
leaq 0x58(%rsp), %r12
leaq 0x48(%rsp), %r15
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7aaa
testl %eax, %eax
jne 0x8bfb
movq %r12, 0x48(%rsp)
xorl %eax, %eax
movq %rax, 0x50(%rsp)
movb $0x0, 0x58(%rsp)
movq %rax, 0x10(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x7872
testb %al, %al
je 0x8bc5
movq %r15, %rdi
leaq 0x2448b(%rip), %rsi     # 0x2c8b1
callq 0x4110
testl %eax, %eax
je 0x8514
movq %r15, %rdi
leaq 0x22e7a(%rip), %rsi     # 0x2b2b7
callq 0x4110
testl %eax, %eax
je 0x85aa
movq %r15, %rdi
leaq 0x24110(%rip), %rsi     # 0x2c564
callq 0x4110
testl %eax, %eax
je 0x85f0
movq %r15, %rdi
leaq 0x23ec9(%rip), %rsi     # 0x2c334
callq 0x4110
testl %eax, %eax
je 0x87b5
movq %r15, %rdi
leaq 0x22e99(%rip), %rsi     # 0x2b31b
callq 0x4110
testl %eax, %eax
je 0x8903
movq %r15, %rdi
leaq 0x22eaa(%rip), %rsi     # 0x2b343
callq 0x4110
testl %eax, %eax
je 0x8a2f
movq 0x90(%rbx), %r13
movl $0xf, %edx
movq %r13, %rdi
leaq 0x22ea6(%rip), %rsi     # 0x2b362
callq 0x4360
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %r13, %rdi
callq 0x4360
movl $0x13, %edx
movq %rax, %rdi
leaq 0x22e90(%rip), %rsi     # 0x2b372
callq 0x4360
movq 0x90(%rbx), %r13
movq %r14, %rdi
callq 0x4580
movq %rbx, %rdi
movq %r13, %rsi
movl %eax, %edx
callq 0x74be
movq 0x90(%rbx), %rdi
callq 0x4180
jmp 0x8bbd
movq %rbx, %rdi
movq %r14, %rsi
movq %rsp, %rdx
callq 0x7d18
testl %eax, %eax
jle 0x8636
movq (%rsp), %r13
movq 0x8(%rsp), %rcx
movq %rcx, %rdx
subq %r13, %rdx
cmpl $0x3, %eax
ja 0x8665
cmpq $0x9, %rdx
jb 0x857e
movl $0x1, %eax
movl $0x2, %ebp
movq (%r13,%rax,8), %rdi
testq %rdi, %rdi
je 0x856b
movq (%rdi), %rax
callq *0x20(%rax)
movq (%rsp), %r13
movq 0x8(%rsp), %rcx
movl %ebp, %eax
movq %rcx, %rdx
subq %r13, %rdx
sarq $0x3, %rdx
incl %ebp
cmpq %rax, %rdx
ja 0x8552
movl $0x28, %edi
callq 0x4300
leaq 0x2e3e9(%rip), %rcx     # 0x36978
movq %rcx, (%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rax)
movups %xmm0, 0x18(%rax)
movq (%r13), %rcx
movq %rcx, 0x8(%rax)
jmp 0x86df
movq %rbx, %rdi
movq %r14, %rsi
movq %rsp, %rdx
callq 0x7d18
cmpl $0x8, %eax
jg 0x86fc
movq 0x90(%rbx), %rdi
movl $0x21, %edx
leaq 0x22ce9(%rip), %rsi     # 0x2b2bd
callq 0x4360
movq %r14, %rdi
callq 0x4580
movq %rbx, %rdi
movl %eax, %esi
callq 0x8180
jmp 0x8bbd
movq %rbx, %rdi
movq %r14, %rsi
movq %rsp, %rdx
callq 0x7d18
cmpl $0x1, %eax
jg 0x87fb
movq 0x90(%rbx), %rdi
movl $0x1d, %edx
leaq 0x22cc5(%rip), %rsi     # 0x2b2df
callq 0x4360
movq %r14, %rdi
callq 0x4580
movq %rbx, %rdi
movl %eax, %esi
callq 0x8180
jmp 0x8bbd
movq 0x90(%rbx), %rdi
movl $0x12, %edx
leaq 0x22c5b(%rip), %rsi     # 0x2b2a4
callq 0x4360
movq %r14, %rdi
callq 0x4580
movq %rbx, %rdi
movl %eax, %esi
callq 0x8180
jmp 0x8bbd
cmpq $0x21, %rdx
jb 0x86a1
movl $0x4, %eax
movl $0x5, %ebp
movq (%r13,%rax,8), %rdi
testq %rdi, %rdi
je 0x868e
movq (%rdi), %rax
callq *0x20(%rax)
movq (%rsp), %r13
movq 0x8(%rsp), %rcx
movl %ebp, %eax
movq %rcx, %rdx
subq %r13, %rdx
sarq $0x3, %rdx
incl %ebp
cmpq %rax, %rdx
ja 0x8675
movl $0x28, %edi
callq 0x4300
leaq 0x2e2c6(%rip), %rcx     # 0x36978
movq %rcx, (%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rax)
movups %xmm0, 0x18(%rax)
movq (%r13), %rcx
movq %rcx, 0x8(%rax)
movl $0x2, %ecx
movq -0x8(%r13,%rcx,8), %rdx
movq %rdx, (%rax,%rcx,8)
incq %rcx
cmpq $0x5, %rcx
jne 0x86cd
movq 0x18(%rsp), %rdi
addq $0x28, %rdi
movq %rax, 0x20(%rsp)
leaq 0x20(%rsp), %rsi
callq 0xc456
jmp 0x8bbd
movq (%rsp), %rcx
movq 0x8(%rsp), %rdx
movq %rdx, %rsi
subq %rcx, %rsi
cmpl $0xf, %eax
ja 0x883f
cmpq $0x49, %rsi
jb 0x874f
movl $0x9, %eax
movl $0xa, %ebp
movq (%rcx,%rax,8), %rdi
testq %rdi, %rdi
je 0x873c
movq (%rdi), %rax
callq *0x20(%rax)
movq (%rsp), %rcx
movq 0x8(%rsp), %rdx
movl %ebp, %eax
movq %rdx, %rsi
subq %rcx, %rsi
sarq $0x3, %rsi
incl %ebp
cmpq %rax, %rsi
ja 0x8724
movl $0x20, %edi
callq 0x4300
movq %rax, %rbp
leaq 0x2e265(%rip), %rax     # 0x369c8
movq %rax, (%rbp)
movq %rbp, %r13
addq $0x8, %r13
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rbp)
movq $0x0, 0x18(%rbp)
xorl %r12d, %r12d
movq (%rsp), %rdx
addq %r12, %rdx
movq 0x10(%rbp), %rsi
cmpq 0x18(%rbp), %rsi
je 0x879e
movq (%rdx), %rax
movq %rax, (%rsi)
addq $0x8, 0x10(%rbp)
jmp 0x87a6
movq %r13, %rdi
callq 0xbe88
addq $0x8, %r12
cmpq $0x48, %r12
jne 0x8780
jmp 0x88e1
movq %rbx, %rdi
movq %r14, %rsi
movq %rsp, %rdx
callq 0x7d18
cmpl $0x1, %eax
jg 0x8949
movq 0x90(%rbx), %rdi
movl $0x1d, %edx
leaq 0x22b1e(%rip), %rsi     # 0x2b2fd
callq 0x4360
movq %r14, %rdi
callq 0x4580
movq %rbx, %rdi
movl %eax, %esi
callq 0x8180
jmp 0x8bbd
cmpl $0x2, %eax
jne 0x898d
movl $0x20, %edi
callq 0x4300
leaq 0x2e1f3(%rip), %rcx     # 0x36a08
movq %rcx, (%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rax)
movq $0x0, 0x18(%rax)
movq (%rsp), %rcx
movq (%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x10(%rax)
jmp 0x8a12
cmpq $0x81, %rsi
jb 0x887d
movl $0x10, %eax
movl $0x11, %ebp
movq (%rcx,%rax,8), %rdi
testq %rdi, %rdi
je 0x886a
movq (%rdi), %rax
callq *0x20(%rax)
movq (%rsp), %rcx
movq 0x8(%rsp), %rdx
movl %ebp, %eax
movq %rdx, %rsi
subq %rcx, %rsi
sarq $0x3, %rsi
incl %ebp
cmpq %rax, %rsi
ja 0x8852
movl $0x20, %edi
callq 0x4300
movq %rax, %rbp
leaq 0x2e137(%rip), %rax     # 0x369c8
movq %rax, (%rbp)
movq %rbp, %r13
addq $0x8, %r13
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rbp)
movq $0x0, 0x18(%rbp)
xorl %r12d, %r12d
movq (%rsp), %rdx
addq %r12, %rdx
movq 0x10(%rbp), %rsi
cmpq 0x18(%rbp), %rsi
je 0x88cc
movq (%rdx), %rax
movq %rax, (%rsi)
addq $0x8, 0x10(%rbp)
jmp 0x88d4
movq %r13, %rdi
callq 0xbe88
addq $0x8, %r12
cmpq $0x80, %r12
jne 0x88ae
movq 0x18(%rsp), %rdi
addq $0x28, %rdi
movq %rbp, 0x20(%rsp)
leaq 0x20(%rsp), %rsi
leaq 0x58(%rsp), %r12
callq 0xc456
jmp 0x8bbd
movq %rbx, %rdi
movq %r14, %rsi
movq %rsp, %rdx
callq 0x7d18
cmpl $0x2, %eax
jg 0x8ab6
movq 0x90(%rbx), %rdi
movl $0x21, %edx
leaq 0x229f4(%rip), %rsi     # 0x2b321
callq 0x4360
movq %r14, %rdi
callq 0x4580
movq %rbx, %rdi
movl %eax, %esi
callq 0x8180
jmp 0x8bbd
cmpl $0x2, %eax
jne 0x8b3b
movl $0x20, %edi
callq 0x4300
leaq 0x2e0e5(%rip), %rcx     # 0x36a48
movq %rcx, (%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rax)
movq $0x0, 0x18(%rax)
movq (%rsp), %rcx
movq (%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x10(%rax)
jmp 0x8b79
movq (%rsp), %r13
movq 0x8(%rsp), %rax
movq %rax, %rcx
subq %r13, %rcx
cmpq $0x19, %rcx
jb 0x89d8
movl $0x3, %ecx
movl $0x4, %ebp
movq (%r13,%rcx,8), %rdi
testq %rdi, %rdi
je 0x89c5
movq (%rdi), %rax
callq *0x20(%rax)
movq (%rsp), %r13
movq 0x8(%rsp), %rax
movl %ebp, %ecx
movq %rax, %rdx
subq %r13, %rdx
sarq $0x3, %rdx
incl %ebp
cmpq %rcx, %rdx
ja 0x89ac
movl $0x20, %edi
callq 0x4300
leaq 0x2e01f(%rip), %rcx     # 0x36a08
movq %rcx, (%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rax)
movq $0x0, 0x18(%rax)
movl $0x1, %ecx
movq -0x8(%r13,%rcx,8), %rdx
movq %rdx, (%rax,%rcx,8)
incq %rcx
cmpq $0x4, %rcx
jne 0x8a00
movq 0x18(%rsp), %rdi
addq $0x28, %rdi
movq %rax, 0x20(%rsp)
leaq 0x20(%rsp), %rsi
callq 0xc456
jmp 0x8bbd
movq %rbx, %rdi
movq %r14, %rsi
movq %rsp, %rdx
callq 0x7d18
testl %eax, %eax
jle 0x8b93
movq (%rsp), %r13
movq 0x8(%rsp), %rax
movq %rax, %rcx
subq %r13, %rcx
cmpq $0x9, %rcx
jb 0x8a90
movl $0x1, %ecx
movl $0x2, %ebp
movq (%r13,%rcx,8), %rdi
testq %rdi, %rdi
je 0x8a7d
movq (%rdi), %rax
callq *0x20(%rax)
movq (%rsp), %r13
movq 0x8(%rsp), %rax
movl %ebp, %ecx
movq %rax, %rdx
subq %r13, %rdx
sarq $0x3, %rdx
incl %ebp
cmpq %rcx, %rdx
ja 0x8a64
movl $0x8, %edi
callq 0x4300
movq $0x0, (%rax)
movq (%r13), %rcx
movq %rcx, (%rax)
movq 0x18(%rsp), %rcx
movq %rax, 0x48(%rcx)
jmp 0x8bbd
movq (%rsp), %r13
movq 0x8(%rsp), %rax
movq %rax, %rcx
subq %r13, %rcx
cmpq $0x19, %rcx
jb 0x8b01
movl $0x3, %ecx
movl $0x4, %ebp
movq (%r13,%rcx,8), %rdi
testq %rdi, %rdi
je 0x8aee
movq (%rdi), %rax
callq *0x20(%rax)
movq (%rsp), %r13
movq 0x8(%rsp), %rax
movl %ebp, %ecx
movq %rax, %rdx
subq %r13, %rdx
sarq $0x3, %rdx
incl %ebp
cmpq %rcx, %rdx
ja 0x8ad5
movl $0x18, %edi
callq 0x4300
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
xorl %ecx, %ecx
movq (%r13,%rcx,8), %rdx
movq %rdx, (%rax,%rcx,8)
incq %rcx
cmpq $0x3, %rcx
jne 0x8b1b
movq 0x18(%rsp), %rcx
movq %rax, 0x40(%rcx)
jmp 0x8bbd
movl $0x20, %edi
callq 0x4300
leaq 0x2defc(%rip), %rcx     # 0x36a48
movq %rcx, (%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rax)
movq $0x0, 0x18(%rax)
movl $0x1, %ecx
movq (%rsp), %rdx
movq -0x8(%rdx,%rcx,8), %rsi
movq %rsi, (%rax,%rcx,8)
incq %rcx
cmpq $0x4, %rcx
jne 0x8b67
movq 0x18(%rsp), %rdi
addq $0x28, %rdi
movq %rax, 0x20(%rsp)
leaq 0x20(%rsp), %rsi
callq 0xc456
jmp 0x8bbd
movq 0x90(%rbx), %rdi
movl $0x1a, %edx
leaq 0x227a1(%rip), %rsi     # 0x2b347
callq 0x4360
movq %r14, %rdi
callq 0x4580
movq %rbx, %rdi
movl %eax, %esi
callq 0x8180
movq %r14, %rsi
callq 0x7c34
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x8bdb
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x4310
movq 0x48(%rsp), %rdi
cmpq %r12, %rdi
je 0x83d6
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x4310
jmp 0x83d6
cmpl $0x1, %eax
jne 0x8c07
movq 0x18(%rsp), %rbx
jmp 0x8c09
xorl %ebx, %ebx
leaq 0x38(%rsp), %rax
movq 0x28(%rsp), %rdi
cmpq %rax, %rdi
je 0x8c25
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4310
movq %rbx, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
movq %rax, %rbx
movl $0x58, %esi
movq %r13, %rdi
jmp 0x8cb1
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c7c
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c81
jmp 0x8c7c
jmp 0x8c7c
jmp 0x8c81
jmp 0x8c81
movq %rax, %rbx
jmp 0x8cb6
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x8c9a
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x4310
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x8cb6
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x4310
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x8cd2
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4310
movq %rbx, %rdi
callq 0x45b0