// File: /workspace/github_c_makefile_star2_O0/heltilda[P]cicada/ciclib.c
// Function: cclib_transform
void cclib_transform()
{
    linkedlist *inputStringLL, *tempString;
    member *loopMember;
    window *compiledCodeWindow = NULL, *pathWindow = NULL, *inputStringWindow, *drawPathTo;
    variable *pathVariable = NULL;
    searchPath *newCodePath, *newCodePathStem = pcSearchPath;
    ccInt pathVarMemberCounter, firstPathVarMember = 0, counter, loopArg, loopCodeWord, rtrn;
    ccInt codeIndex, numArgs, dummy, memberOffset, fileNameLength = 0, sourceCodeLength = 0, opCharNumLength = 0;
    ccInt *holdPCCodePtr, *codeEntryPtr, *holdStartCodePtr, *holdEndCodePtr, *opCharNum = NULL, theOpChar;
    char *fileName = NULL, *sourceCode = NULL;
    char **lastArgs[3] = { &fileName, &sourceCode, (char **) &opCharNum };
    ccInt *lastArgLengths[3] = { &fileNameLength, &sourceCodeLength, &opCharNumLength };
    code_ref holdPCCodeRef;
    
    numArgs = numBIF_args();
    if ((numArgs < 1) || (numArgs > 6))  {  setError(wrong_argument_count_err, pcCodePtr-1);  return;  }
    
    
        // check & defragment the bytecode string
    
    inputStringWindow = getBIFstringArg(1);
    if (errCode != passed)  return;
    if (inputStringWindow->width == 0)  {  intRegister = passed;  return;  }
    
    inputStringLL = &(inputStringWindow->variable_ptr->mem.data);
    rtrn = defragmentLinkedList(inputStringLL);
    if (rtrn != passed)  {  setError(out_of_memory_err, pcCodePtr-1);  return;  }
    if (inputStringWindow->width % sizeof(ccInt) != 0)  {  setError(library_argument_err, pcCodePtr-1);  return;  }
    
    
        // get the destination function (argument 2)
    
    if (numArgs >= 2)  {
        compiledCodeWindow = getBIFmember(2);
        if (compiledCodeWindow != NULL)  {
            if (compiledCodeWindow->variable_ptr->type != composite_type)  {  setError(not_a_function_err, pcCodePtr-1);  return;  }
            if (compiledCodeWindow->width != 1)  {  setError(multiple_indices_not_allowed_err, pcCodePtr-1);  return;  }
    }   }
    
    
        // if a code path was provided, read that too
    
    if (numArgs >= 3)  {
        pathWindow = getBIFmember(3);
        if (pathWindow != NULL)    {
            pathVariable = pathWindow->variable_ptr;
            
            if (pathWindow->variable_ptr->type < composite_type)  {  setError(not_composite_err, pcCodePtr-1);  return;  }
            if (pathWindow->width != 1)  {  setError(multiple_indices_not_allowed_err, pcCodePtr-1);  return;  }
            
            newCodePathStem = NULL;
            pathVarMemberCounter = 0;
            while (1 == 1)  {
                pathVarMemberCounter++;
                rtrn = findMemberIndex(pathVariable, 0, pathVarMemberCounter, &loopMember, &dummy, &memberOffset, ccFalse);
                if (rtrn == invalid_index_err)  break;
                if (!loopMember->ifHidden)  {
                    if (loopMember->memberWindow != NULL)  {
                        firstPathVarMember = pathVarMemberCounter;
                        break;
    }   }   }   }   }
    
    
        // the last three optional arguments help to flag transform/runtime errors in the code
    
    for (loopArg = 4; loopArg <= numArgs; loopArg++)  {
    if (getBIFmember(loopArg) != NULL)  {
        window *tempStringWindow = getBIFstringArg(loopArg);
        if (errCode != passed)  return;
        
        tempString = &(tempStringWindow->variable_ptr->mem.data);
        rtrn = defragmentLinkedList(tempString);
        if (rtrn != passed)  {  setError(rtrn, pcCodePtr-1);  return;  }
        
        *lastArgLengths[loopArg-4] = tempStringWindow->width;
        if (tempStringWindow->width == 0)  {
            *lastArgs[loopArg-4] = (char *) element(tempString, 0);     }
        else  {
            *lastArgs[loopArg-4] = (char *) element(tempString, tempStringWindow->offset+1);
    }}  }
    
    if (opCharNum != NULL)  {
        if (sourceCode == NULL)  {  setError(void_member_err, pcCodePtr-1);  return;  }
        if (inputStringWindow->width != opCharNumLength)  {  setError(out_of_range_err, pcCodePtr-1);  return;  }
        for (loopCodeWord = 0; loopCodeWord < opCharNumLength/sizeof(ccInt); loopCodeWord++)  {
        if ((opCharNum[loopCodeWord] < 1) || (opCharNum[loopCodeWord] > sourceCodeLength))  {
        if (sourceCodeLength > 0)  {            // even a blank script has an end-of-file token --> char #1 
            setError(out_of_range_err, pcCodePtr-1);
            return;
    }   }}}
    
    else if (sourceCode != NULL)  {  setError(void_member_err, pcCodePtr-1);  return;  }
    
    
        // store some important variables since we need to overwrite these temporarily while checking the bytecode
    
    holdPCCodePtr = pcCodePtr;
    holdStartCodePtr = startCodePtr;
    holdEndCodePtr = endCodePtr;
    holdPCCodeRef = PCCodeRef;
    
    
        // set the PC at the beginning of the bytecode, and run it in 'check' mode
    
    startCodePtr = LL_int(inputStringLL, inputStringWindow->offset+1);
    endCodePtr = startCodePtr + (ccInt) ceil(1.*inputStringWindow->width/sizeof(ccInt));
    pcCodePtr = startCodePtr;
    PCCodeRef.anchor = NULL;
    PCCodeRef.code_ptr = startCodePtr;
    
    checkBytecode();
    
    if ((errCode != passed) && (doPrintError))  {
        if (opCharNum == NULL)  theOpChar = 0;
        else  theOpChar = opCharNum[errIndex-1]-1;
        printError(fileName, fileNameLength, sourceCode, theOpChar, ccFalse);
        
        doPrintError = ccFalse;        }
    
    
        // restore the important variables
    
    PCCodeRef = holdPCCodeRef;
    pcCodePtr = holdPCCodePtr;
    startCodePtr = holdStartCodePtr;
    endCodePtr = holdEndCodePtr;
    
    if (errCode != passed)  return;
    
    
        // OK, it worked.  Make a new anchor for the code.
    
    if (newCodePathStem != NULL)  refPath(newCodePathStem);       // temporarily over-reference each new path as we create it
    if (firstPathVarMember != 0)    {
        
        pathVarMemberCounter = firstPathVarMember-1;
        while (1 == 1)  {
            pathVarMemberCounter++;
            rtrn = findMemberIndex(pathVariable, 0, pathVarMemberCounter, &loopMember, &dummy, &memberOffset, ccFalse);
            if (rtrn == invalid_index_err)  break;
            if ((!loopMember->ifHidden) && (loopMember->memberWindow != NULL))  {
                rtrn = drawPath(&newCodePath, loopMember->memberWindow, newCodePathStem, 1, PCCodeRef.PLL_index);
                if (rtrn != passed)  {  setError(rtrn, pcCodePtr-1);  return;  }
                refPath(newCodePath);                               // so it doesn't get deleted by a later path in the same window
                derefPath(&newCodePathStem);
                newCodePathStem = newCodePath;
    }   }   }
    
    if (compiledCodeWindow != NULL)  drawPathTo = compiledCodeWindow;
    else  drawPathTo = PCCodeRef.anchor->jamb;
    
    rtrn = drawPath(&newCodePath, drawPathTo, newCodePathStem, 1, PCCodeRef.PLL_index);
    if (rtrn != passed)  {  setError(rtrn, pcCodePtr-1);  return;  }
    refPath(newCodePath);
    derefPath(&newCodePathStem);
    
    
        // wipe up any existing codes in our function
    
    if (compiledCodeWindow != NULL)  {
        for (counter = 1; counter <= compiledCodeWindow->variable_ptr->codeList.elementNum; counter++)
            derefCodeRef((code_ref *) element(&(compiledCodeWindow->variable_ptr->codeList), counter));
        deleteElements(&(compiledCodeWindow->variable_ptr->codeList), 1, compiledCodeWindow->variable_ptr->codeList.elementNum);    }
    
    
        // add our new code to the Registry..
    
    rtrn = addCode(LL_int(inputStringLL, inputStringWindow->offset+1), &codeEntryPtr, &codeIndex,
            (ccInt) ceil(1.*inputStringWindow->width/sizeof(ccInt)), fileName, fileNameLength, sourceCode, opCharNum, sourceCodeLength);
    if (rtrn != passed)  {  setError(rtrn, pcCodePtr-1);  return;  }
    
    
        // and to the code list of the function
    
    if (compiledCodeWindow != NULL)  {
        rtrn = addCodeRef(&(compiledCodeWindow->variable_ptr->codeList), newCodePath, codeEntryPtr, codeIndex);
        if (rtrn != passed)  {  setError(rtrn, pcCodePtr-1);  return;  }        }
    
    derefCodeList(&codeRegister);
    
    resizeLinkedList(&codeRegister, 0, ccFalse);
    rtrn = addCodeRef(&codeRegister, newCodePath, codeEntryPtr, codeIndex);
    if (rtrn != passed)  {  setError(rtrn, pcCodePtr-1);  return;  }

    derefPath(&newCodePath);
    
    GL_Object.codeList = &codeRegister;
    codeNumber = 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
movq $0x0, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movq $0x0, -0x40(%rbp)
leaq 0xf886(%rip), %rax      # 0x2c750
movq 0x170(%rax), %rax
movq %rax, -0x50(%rbp)
movl $0x0, -0x58(%rbp)
movl $0x0, -0x7c(%rbp)
movl $0x0, -0x80(%rbp)
movl $0x0, -0x84(%rbp)
movq $0x0, -0xb0(%rbp)
movq $0x0, -0xc0(%rbp)
movq $0x0, -0xc8(%rbp)
leaq -0xc0(%rbp), %rax
movq %rax, -0xe0(%rbp)
leaq -0xc8(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq -0xb0(%rbp), %rax
movq %rax, -0xd0(%rbp)
leaq -0x7c(%rbp), %rax
movq %rax, -0x100(%rbp)
leaq -0x80(%rbp), %rax
movq %rax, -0xf8(%rbp)
leaq -0x84(%rbp), %rax
movq %rax, -0xf0(%rbp)
callq 0x1fa40
movl %eax, -0x70(%rbp)
cmpl $0x1, -0x70(%rbp)
jl 0x1cf77
cmpl $0x6, -0x70(%rbp)
jle 0x1cf98
leaq 0xf7d2(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
movl $0x2d, %edi
callq 0xf740
jmp 0x1d9b4
movl $0x1, %edi
callq 0x1fd70
movq %rax, -0x30(%rbp)
leaq 0xf7a3(%rip), %rax      # 0x2c750
cmpl $0x0, 0x18(%rax)
je 0x1cfb8
jmp 0x1d9b4
movq -0x30(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
jne 0x1cfd5
leaq 0xf787(%rip), %rax      # 0x2c750
movl $0x0, 0x6c(%rax)
jmp 0x1d9b4
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq $0x10, %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0x8f70
movl %eax, -0x68(%rbp)
cmpl $0x0, -0x68(%rbp)
je 0x1d018
leaq 0xf752(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
movl $0x1, %edi
callq 0xf740
jmp 0x1d9b4
movq -0x30(%rbp), %rax
movslq 0x1c(%rax), %rax
andq $0x3, %rax
cmpq $0x0, %rax
je 0x1d04b
leaq 0xf71f(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
movl $0x2e, %edi
callq 0xf740
jmp 0x1d9b4
cmpl $0x2, -0x70(%rbp)
jl 0x1d0c7
movl $0x2, %edi
callq 0x1fab0
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x1d0c5
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x5, 0xc0(%rax)
je 0x1d098
leaq 0xf6d2(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
movl $0x23, %edi
callq 0xf740
jmp 0x1d9b4
movq -0x20(%rbp), %rax
cmpl $0x1, 0x1c(%rax)
je 0x1d0c3
leaq 0xf6a7(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
movl $0x1f, %edi
callq 0xf740
jmp 0x1d9b4
jmp 0x1d0c5
jmp 0x1d0c7
cmpl $0x3, -0x70(%rbp)
jl 0x1d1bb
movl $0x3, %edi
callq 0x1fab0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x1d1b9
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x5, 0xc0(%rax)
jge 0x1d128
leaq 0xf642(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
movl $0x24, %edi
callq 0xf740
jmp 0x1d9b4
movq -0x28(%rbp), %rax
cmpl $0x1, 0x1c(%rax)
je 0x1d153
leaq 0xf617(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
movl $0x1f, %edi
callq 0xf740
jmp 0x1d9b4
movq $0x0, -0x50(%rbp)
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movq -0x40(%rbp), %rdi
movl -0x54(%rbp), %edx
xorl %esi, %esi
leaq -0x18(%rbp), %rcx
leaq -0x74(%rbp), %r8
leaq -0x78(%rbp), %r9
movl $0x0, (%rsp)
callq 0x128f0
movl %eax, -0x68(%rbp)
cmpl $0x1e, -0x68(%rbp)
jne 0x1d197
jmp 0x1d1b7
movq -0x18(%rbp), %rax
cmpb $0x0, 0x40(%rax)
jne 0x1d1b5
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
je 0x1d1b3
movl -0x54(%rbp), %eax
movl %eax, -0x58(%rbp)
jmp 0x1d1b7
jmp 0x1d1b5
jmp 0x1d162
jmp 0x1d1b9
jmp 0x1d1bb
movl $0x4, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x70(%rbp), %eax
jg 0x1d2cf
movl -0x60(%rbp), %edi
callq 0x1fab0
cmpq $0x0, %rax
je 0x1d2bf
movl -0x60(%rbp), %edi
callq 0x1fd70
movq %rax, -0x128(%rbp)
leaq 0xf55a(%rip), %rax      # 0x2c750
cmpl $0x0, 0x18(%rax)
je 0x1d201
jmp 0x1d9b4
movq -0x128(%rbp), %rax
movq 0x10(%rax), %rax
addq $0x10, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x8f70
movl %eax, -0x68(%rbp)
cmpl $0x0, -0x68(%rbp)
je 0x1d245
movl -0x68(%rbp), %edi
leaq 0xf520(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
callq 0xf740
jmp 0x1d9b4
movq -0x128(%rbp), %rax
movl 0x1c(%rax), %ecx
movl -0x60(%rbp), %eax
subl $0x4, %eax
cltq
movq -0x100(%rbp,%rax,8), %rax
movl %ecx, (%rax)
movq -0x128(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
jne 0x1d291
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x9700
movq %rax, %rcx
movl -0x60(%rbp), %eax
subl $0x4, %eax
cltq
movq -0xe0(%rbp,%rax,8), %rax
movq %rcx, (%rax)
jmp 0x1d2bd
movq -0x10(%rbp), %rdi
movq -0x128(%rbp), %rax
movl 0x18(%rax), %esi
addl $0x1, %esi
callq 0x9700
movq %rax, %rcx
movl -0x60(%rbp), %eax
subl $0x4, %eax
cltq
movq -0xe0(%rbp,%rax,8), %rax
movq %rcx, (%rax)
jmp 0x1d2bf
jmp 0x1d2c1
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x1d1c2
cmpq $0x0, -0xb0(%rbp)
je 0x1d3af
cmpq $0x0, -0xc8(%rbp)
jne 0x1d308
leaq 0xf462(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
movl $0x1a, %edi
callq 0xf740
jmp 0x1d9b4
movq -0x30(%rbp), %rax
movl 0x1c(%rax), %eax
cmpl -0x84(%rbp), %eax
je 0x1d338
leaq 0xf432(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
movl $0x2, %edi
callq 0xf740
jmp 0x1d9b4
movl $0x0, -0x64(%rbp)
movslq -0x64(%rbp), %rax
movslq -0x84(%rbp), %rcx
shrq $0x2, %rcx
cmpq %rcx, %rax
jae 0x1d3ad
movq -0xb0(%rbp), %rax
movslq -0x64(%rbp), %rcx
cmpl $0x1, (%rax,%rcx,4)
jl 0x1d377
movq -0xb0(%rbp), %rax
movslq -0x64(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl -0x80(%rbp), %eax
jle 0x1d3a0
cmpl $0x0, -0x80(%rbp)
jle 0x1d39e
leaq 0xf3cc(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
movl $0x2, %edi
callq 0xf740
jmp 0x1d9b4
jmp 0x1d3a0
jmp 0x1d3a2
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0x1d33f
jmp 0x1d3dc
cmpq $0x0, -0xc8(%rbp)
je 0x1d3da
leaq 0xf390(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
movl $0x1a, %edi
callq 0xf740
jmp 0x1d9b4
jmp 0x1d3dc
leaq 0xf36d(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rax
movq %rax, -0x90(%rbp)
leaq 0xf358(%rip), %rax      # 0x2c750
movq 0xc0(%rax), %rax
movq %rax, -0xa0(%rbp)
leaq 0xf343(%rip), %rax      # 0x2c750
movq 0xc8(%rax), %rax
movq %rax, -0xa8(%rbp)
leaq 0xf32e(%rip), %rax      # 0x2c750
movq 0x208(%rax), %rcx
movq %rcx, -0x120(%rbp)
movq 0x210(%rax), %rcx
movq %rcx, -0x118(%rbp)
movq 0x218(%rax), %rcx
movq %rcx, -0x110(%rbp)
movq 0x220(%rax), %rax
movq %rax, -0x108(%rbp)
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rax
movl 0x18(%rax), %esi
addl $0x1, %esi
callq 0x9700
movq %rax, %rcx
leaq 0xf2d9(%rip), %rax      # 0x2c750
movq %rcx, 0xc0(%rax)
leaq 0xf2cb(%rip), %rax      # 0x2c750
movq 0xc0(%rax), %rax
movq %rax, -0x130(%rbp)
movq -0x30(%rbp), %rax
cvtsi2sdl 0x1c(%rax), %xmm1
movsd 0x4b64(%rip), %xmm0     # 0x22008
mulsd %xmm1, %xmm0
movsd 0x4b78(%rip), %xmm1     # 0x22028
divsd %xmm1, %xmm0
callq 0x8070
movq -0x130(%rbp), %rcx
cvttsd2si %xmm0, %eax
cltq
shlq $0x2, %rax
addq %rax, %rcx
leaq 0xf27c(%rip), %rax      # 0x2c750
movq %rcx, 0xc8(%rax)
leaq 0xf26e(%rip), %rax      # 0x2c750
movq 0xc0(%rax), %rcx
leaq 0xf260(%rip), %rax      # 0x2c750
movq %rcx, 0xb8(%rax)
leaq 0xf252(%rip), %rax      # 0x2c750
movq $0x0, 0x220(%rax)
leaq 0xf240(%rip), %rax      # 0x2c750
movq 0xc0(%rax), %rcx
leaq 0xf232(%rip), %rax      # 0x2c750
movq %rcx, 0x218(%rax)
callq 0x1ad40
leaq 0xf21f(%rip), %rax      # 0x2c750
cmpl $0x0, 0x18(%rax)
je 0x1d5ad
leaq 0xf212(%rip), %rax      # 0x2c750
cmpb $0x0, 0x2a9(%rax)
je 0x1d5ad
cmpq $0x0, -0xb0(%rbp)
jne 0x1d55d
movl $0x0, -0xb4(%rbp)
jmp 0x1d580
movq -0xb0(%rbp), %rax
leaq 0xf1e5(%rip), %rcx      # 0x2c750
movl 0x1c(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
subl $0x1, %eax
movl %eax, -0xb4(%rbp)
movq -0xc0(%rbp), %rdi
movl -0x7c(%rbp), %esi
movq -0xc8(%rbp), %rdx
movl -0xb4(%rbp), %ecx
xorl %r8d, %r8d
callq 0x21350
leaq 0xf1aa(%rip), %rax      # 0x2c750
movb $0x0, 0x2a9(%rax)
leaq 0xf19c(%rip), %rax      # 0x2c750
movq -0x120(%rbp), %rcx
movq %rcx, 0x208(%rax)
movq -0x118(%rbp), %rcx
movq %rcx, 0x210(%rax)
movq -0x110(%rbp), %rcx
movq %rcx, 0x218(%rax)
movq -0x108(%rbp), %rcx
movq %rcx, 0x220(%rax)
movq -0x90(%rbp), %rcx
leaq 0xf156(%rip), %rax      # 0x2c750
movq %rcx, 0xb8(%rax)
movq -0xa0(%rbp), %rcx
leaq 0xf141(%rip), %rax      # 0x2c750
movq %rcx, 0xc0(%rax)
movq -0xa8(%rbp), %rcx
leaq 0xf12c(%rip), %rax      # 0x2c750
movq %rcx, 0xc8(%rax)
leaq 0xf11e(%rip), %rax      # 0x2c750
cmpl $0x0, 0x18(%rax)
je 0x1d63d
jmp 0x1d9b4
cmpq $0x0, -0x50(%rbp)
je 0x1d64d
movq -0x50(%rbp), %rdi
callq 0x13770
cmpl $0x0, -0x58(%rbp)
je 0x1d71c
movl -0x58(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movq -0x40(%rbp), %rdi
movl -0x54(%rbp), %edx
xorl %esi, %esi
leaq -0x18(%rbp), %rcx
leaq -0x74(%rbp), %r8
leaq -0x78(%rbp), %r9
movl $0x0, (%rsp)
callq 0x128f0
movl %eax, -0x68(%rbp)
cmpl $0x1e, -0x68(%rbp)
jne 0x1d698
jmp 0x1d71a
movq -0x18(%rbp), %rax
cmpb $0x0, 0x40(%rax)
jne 0x1d715
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
je 0x1d715
movq -0x18(%rbp), %rax
movq (%rax), %rsi
movq -0x50(%rbp), %rdx
leaq 0xf092(%rip), %rax      # 0x2c750
movl 0x208(%rax), %r8d
leaq -0x48(%rbp), %rdi
movl $0x1, %ecx
callq 0x137e0
movl %eax, -0x68(%rbp)
cmpl $0x0, -0x68(%rbp)
je 0x1d6fb
movl -0x68(%rbp), %edi
leaq 0xf06a(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
callq 0xf740
jmp 0x1d9b4
movq -0x48(%rbp), %rdi
callq 0x13770
leaq -0x50(%rbp), %rdi
callq 0x13630
movq -0x48(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x1d660
jmp 0x1d71c
cmpq $0x0, -0x20(%rbp)
je 0x1d72d
movq -0x20(%rbp), %rax
movq %rax, -0x38(%rbp)
jmp 0x1d743
leaq 0xf01c(%rip), %rax      # 0x2c750
movq 0x220(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rsi
movq -0x50(%rbp), %rdx
leaq 0xeffe(%rip), %rax      # 0x2c750
movl 0x208(%rax), %r8d
leaq -0x48(%rbp), %rdi
movl $0x1, %ecx
callq 0x137e0
movl %eax, -0x68(%rbp)
cmpl $0x0, -0x68(%rbp)
je 0x1d78f
movl -0x68(%rbp), %edi
leaq 0xefd6(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
callq 0xf740
jmp 0x1d9b4
movq -0x48(%rbp), %rdi
callq 0x13770
leaq -0x50(%rbp), %rdi
callq 0x13630
cmpq $0x0, -0x20(%rbp)
je 0x1d813
movl $0x1, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq -0x20(%rbp), %rcx
movq 0x10(%rcx), %rcx
cmpl 0xd0(%rcx), %eax
jg 0x1d7ec
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
addq $0xd0, %rdi
movl -0x5c(%rbp), %esi
callq 0x9700
movq %rax, %rdi
callq 0x12c40
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1d7af
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
addq $0xd0, %rdi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movl 0xd0(%rax), %edx
movl $0x1, %esi
callq 0x8880
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rax
movl 0x18(%rax), %esi
addl $0x1, %esi
callq 0x9700
movq %rax, -0x138(%rbp)
movq -0x30(%rbp), %rax
cvtsi2sdl 0x1c(%rax), %xmm1
movsd 0x47ca(%rip), %xmm0     # 0x22008
mulsd %xmm1, %xmm0
movsd 0x47de(%rip), %xmm1     # 0x22028
divsd %xmm1, %xmm0
callq 0x8070
movq -0x138(%rbp), %rdi
cvttsd2si %xmm0, %ecx
movq -0xc0(%rbp), %r8
movl -0x7c(%rbp), %r9d
movq -0xc8(%rbp), %r11
movq -0xb0(%rbp), %r10
movl -0x80(%rbp), %eax
leaq -0x98(%rbp), %rsi
leaq -0x6c(%rbp), %rdx
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movl %eax, 0x10(%rsp)
callq 0x138d0
movl %eax, -0x68(%rbp)
cmpl $0x0, -0x68(%rbp)
je 0x1d8bf
movl -0x68(%rbp), %edi
leaq 0xeea6(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
callq 0xf740
jmp 0x1d9b4
cmpq $0x0, -0x20(%rbp)
je 0x1d912
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
addq $0xd0, %rdi
movq -0x48(%rbp), %rsi
movq -0x98(%rbp), %rdx
movl -0x6c(%rbp), %ecx
callq 0x13bd0
movl %eax, -0x68(%rbp)
cmpl $0x0, -0x68(%rbp)
je 0x1d910
movl -0x68(%rbp), %edi
leaq 0xee55(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
callq 0xf740
jmp 0x1d9b4
jmp 0x1d912
leaq 0xee37(%rip), %rdi      # 0x2c750
addq $0x98, %rdi
callq 0x19dc0
leaq 0xee24(%rip), %rdi      # 0x2c750
addq $0x98, %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x8ee0
movq -0x48(%rbp), %rsi
movq -0x98(%rbp), %rdx
movl -0x6c(%rbp), %ecx
leaq 0xedff(%rip), %rdi      # 0x2c750
addq $0x98, %rdi
callq 0x13bd0
movl %eax, -0x68(%rbp)
cmpl $0x0, -0x68(%rbp)
je 0x1d982
movl -0x68(%rbp), %edi
leaq 0xede0(%rip), %rax      # 0x2c750
movq 0xb8(%rax), %rsi
addq $-0x4, %rsi
callq 0xf740
jmp 0x1d9b4
leaq -0x48(%rbp), %rdi
callq 0x13630
leaq 0xedbe(%rip), %rax      # 0x2c750
movq %rax, %rcx
addq $0x98, %rcx
movq %rcx, 0x100(%rax)
leaq 0xeda6(%rip), %rax      # 0x2c750
movl $0x1, 0x1f4(%rax)
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
nopl (%rax)