// File: Infinidat[P]slimfastq/gens.cpp
// Function: GenSave::GenSave()
GenSave::GenSave() {

    BZERO(m_stats);
    BZERO(m_last);
    m_N_byte = 0;

    filer = new FilerSave("gen");
    assert(filer);
    rcoder.init(filer);
    ranger = new Base2Ranger[ranger_cnt()];
    range_init();

    x_Ns = new XFileSave("gen.Ns");
    x_Nn = new XFileSave("gen.Nn");

   memset(gencodes, 0x10, sizeof(gencodes));
   gencodes[(UINT8)'0'] = gencodes[(UINT8)'A'] = gencodes[(UINT8)'a'] = 0;
   gencodes[(UINT8)'1'] = gencodes[(UINT8)'C'] = gencodes[(UINT8)'c'] = 1;
   gencodes[(UINT8)'2'] = gencodes[(UINT8)'G'] = gencodes[(UINT8)'g'] = 2;
   gencodes[(UINT8)'3'] = gencodes[(UINT8)'T'] = gencodes[(UINT8)'t'] = 3;
   gencodes[(UINT8)'.'] = gencodes[(UINT8)'N'] = gencodes[(UINT8)'n'] = 4;
}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x60(%rsp)
movq 0x60(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x89a0
movq 0x40(%rsp), %rax
movl $0x0, 0x40(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x30(%rax)
movb $0x0, 0x45(%rax)
movl $0x4040, %edi           # imm = 0x4040
callq 0x2280
movq %rax, 0x48(%rsp)
jmp 0x7bc0
movq 0x48(%rsp), %rdi
leaq 0x96f3(%rip), %rsi      # 0x112bf
callq 0x6d40
jmp 0x7bd3
movq 0x40(%rsp), %rax
movq 0x48(%rsp), %rcx
movq %rcx, 0x48(%rax)
cmpq $0x0, 0x48(%rax)
je 0x7bea
jmp 0x7c3e
leaq 0x843c(%rip), %rdi      # 0x1002d
leaq 0x9308(%rip), %rsi      # 0x10f00
movl $0x40, %edx
leaq 0x9305(%rip), %rcx      # 0x10f09
callq 0x21b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x58(%rsp)
movl %eax, 0x54(%rsp)
jmp 0x7e31
movq 0x48(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x58(%rsp)
movl %eax, 0x54(%rsp)
movl $0x4040, %esi           # imm = 0x4040
callq 0x2290
jmp 0x7e31
movq 0x40(%rsp), %rax
movq %rax, %rdi
addq $0x8, %rdi
movq 0x48(%rax), %rsi
callq 0x2bf0
jmp 0x7c55
movq 0x40(%rsp), %rdi
callq 0x7b00
movq %rax, %rcx
movq %rcx, 0x28(%rsp)
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
movq %rdi, 0x30(%rsp)
callq 0x2040
movq %rax, 0x38(%rsp)
jmp 0x7c8e
movq 0x28(%rsp), %rax
cmpq $0x0, %rax
je 0x7ce0
movq 0x38(%rsp), %rax
movq 0x28(%rsp), %rdx
shlq $0x2, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, 0x18(%rsp)
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x89c0
jmp 0x7cc8
movq 0x18(%rsp), %rcx
movq 0x10(%rsp), %rax
addq $0x4, %rax
cmpq %rcx, %rax
movq %rax, 0x20(%rsp)
jne 0x7cb7
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rax
movq %rax, (%rdi)
callq 0x7b70
movl $0x2db0, %edi           # imm = 0x2DB0
callq 0x2280
movq %rax, 0x8(%rsp)
jmp 0x7d03
movq 0x8(%rsp), %rdi
leaq 0x920d(%rip), %rsi      # 0x10f1c
callq 0xf6c0
jmp 0x7d16
movq 0x40(%rsp), %rax
movq 0x8(%rsp), %rcx
movq %rcx, 0x50(%rax)
movl $0x2db0, %edi           # imm = 0x2DB0
callq 0x2280
movq %rax, (%rsp)
jmp 0x7d34
movq (%rsp), %rdi
leaq 0x91e4(%rip), %rsi      # 0x10f23
callq 0xf6c0
jmp 0x7d46
movq 0x40(%rsp), %rax
movq (%rsp), %rcx
movq %rcx, 0x58(%rax)
leaq 0x10586(%rip), %rdi     # 0x182e0
movl $0x10, %esi
movl $0x100, %edx            # imm = 0x100
callq 0x2170
movb $0x0, 0x105d1(%rip)     # 0x18341
movb $0x0, 0x105aa(%rip)     # 0x18321
movb $0x0, 0x10592(%rip)     # 0x18310
movb $0x1, 0x105be(%rip)     # 0x18343
movb $0x1, 0x10597(%rip)     # 0x18323
movb $0x1, 0x1057e(%rip)     # 0x18311
movb $0x2, 0x105ad(%rip)     # 0x18347
movb $0x2, 0x10586(%rip)     # 0x18327
movb $0x2, 0x1056a(%rip)     # 0x18312
movb $0x3, 0x105a5(%rip)     # 0x18354
movb $0x3, 0x1057e(%rip)     # 0x18334
movb $0x3, 0x10556(%rip)     # 0x18313
movb $0x4, 0x1058a(%rip)     # 0x1834e
movb $0x4, 0x10563(%rip)     # 0x1832e
movb $0x4, 0x1053c(%rip)     # 0x1830e
addq $0x68, %rsp
retq
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x58(%rsp)
movl %eax, 0x54(%rsp)
callq 0x2430
jmp 0x7e31
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x58(%rsp)
movl %eax, 0x54(%rsp)
movl $0x2db0, %esi           # imm = 0x2DB0
callq 0x2290
jmp 0x7e31
movq (%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x58(%rsp)
movl %eax, 0x54(%rsp)
movl $0x2db0, %esi           # imm = 0x2DB0
callq 0x2290
movq 0x40(%rsp), %rdi
callq 0x89e0
movq 0x58(%rsp), %rdi
callq 0x23f0
nopw %cs:(%rax,%rax)