// File: /workspace/github_c_makefile_star2_O0/fukunagatsu[P]RIblast/./encoder.h
// Function: Encoder::Encoder(int)
Encoder(int flag) {
    _sentinel_character = 0;
    _unknown_character = 1; 
    if(flag == 0){
      for (int i = 0; i < UCHAR_MAX; ++i) {
	_code_table[i] = _unknown_character;
      }
      
      _code_table[static_cast<int>('A')] = 2;
      _code_table[static_cast<int>('C')] = 3;
      _code_table[static_cast<int>('G')] = 4;
      _code_table[static_cast<int>('T')] = 5;
      _code_table[static_cast<int>('U')] = 5;
      
    }else if(flag == 1){
      for (int i = 0; i < UCHAR_MAX; ++i) {
	_code_table[i] = _unknown_character;
      }
      
      _code_table[static_cast<int>('A')] = 2;
      _code_table[static_cast<int>('C')] = 3;
      _code_table[static_cast<int>('G')] = 4;
      _code_table[static_cast<int>('T')] = 5;
      _code_table[static_cast<int>('U')] = 5;
      _code_table[static_cast<int>('a')] = 6;
      _code_table[static_cast<int>('c')] = 7;
      _code_table[static_cast<int>('g')] = 8;
      _code_table[static_cast<int>('t')] = 9;
      _code_table[static_cast<int>('u')] = 9;
      
    }else if(flag == 2){
      for (int i = 0; i < UCHAR_MAX; ++i) {
	_code_table[i] = _unknown_character;
      }
      _code_table[static_cast<int>('A')] = 2;
      _code_table[static_cast<int>('C')] = 3;
      _code_table[static_cast<int>('G')] = 4;
      _code_table[static_cast<int>('T')] = 5;
      _code_table[static_cast<int>('U')] = 5;
      _code_table[static_cast<int>('a')] = 2;
      _code_table[static_cast<int>('c')] = 3;
      _code_table[static_cast<int>('g')] = 4;
      _code_table[static_cast<int>('t')] = 5;
      _code_table[static_cast<int>('u')] = 5;
      
    }else{
      cerr << "Error: -r option must be 0, 1, or 2." << endl;
      exit(1);
    }
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movb $0x0, 0xff(%rax)
movb $0x1, 0x100(%rax)
cmpl $0x0, -0xc(%rbp)
jne 0xb8f4
movl $0x0, -0x10(%rbp)
cmpl $0xff, -0x10(%rbp)
jge 0xb8d7
movq -0x20(%rbp), %rax
movb 0x100(%rax), %dl
movslq -0x10(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0xb8b2
movq -0x20(%rbp), %rax
movb $0x2, 0x41(%rax)
movb $0x3, 0x43(%rax)
movb $0x4, 0x47(%rax)
movb $0x5, 0x54(%rax)
movb $0x5, 0x55(%rax)
jmp 0xb9e7
cmpl $0x1, -0xc(%rbp)
jne 0xb957
movl $0x0, -0x14(%rbp)
cmpl $0xff, -0x14(%rbp)
jge 0xb926
movq -0x20(%rbp), %rax
movb 0x100(%rax), %dl
movslq -0x14(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0xb901
movq -0x20(%rbp), %rax
movb $0x2, 0x41(%rax)
movb $0x3, 0x43(%rax)
movb $0x4, 0x47(%rax)
movb $0x5, 0x54(%rax)
movb $0x5, 0x55(%rax)
movb $0x6, 0x61(%rax)
movb $0x7, 0x63(%rax)
movb $0x8, 0x67(%rax)
movb $0x9, 0x74(%rax)
movb $0x9, 0x75(%rax)
jmp 0xb9e5
cmpl $0x2, -0xc(%rbp)
jne 0xb9b7
movl $0x0, -0x18(%rbp)
cmpl $0xff, -0x18(%rbp)
jge 0xb989
movq -0x20(%rbp), %rax
movb 0x100(%rax), %dl
movslq -0x18(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0xb964
movq -0x20(%rbp), %rax
movb $0x2, 0x41(%rax)
movb $0x3, 0x43(%rax)
movb $0x4, 0x47(%rax)
movb $0x5, 0x54(%rax)
movb $0x5, 0x55(%rax)
movb $0x2, 0x61(%rax)
movb $0x3, 0x63(%rax)
movb $0x4, 0x67(%rax)
movb $0x5, 0x74(%rax)
movb $0x5, 0x75(%rax)
jmp 0xb9e3
movq 0x40632(%rip), %rdi     # 0x4bff0
leaq 0x2cf17(%rip), %rsi     # 0x388dc
callq 0x3270
movq %rax, %rdi
movq 0x405d4(%rip), %rsi     # 0x4bfa8
callq 0x32b0
movl $0x1, %edi
callq 0x3330
jmp 0xb9e5
jmp 0xb9e7
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)