// File: /workspace/github_cpp_makefile_star2_O3/zgimbutas[P]mwrap/src/mwrap-ast.cc
// Function: promote_int(char*)
char *promote_int(char* name)
{
  /* Detect C99 types: int32_t, int64_t, uint32_t, uint64_t */
  if( strcmp(name,"int32_t") == 0 ) mw_use_int32_t = 1;
  if( strcmp(name,"int64_t") == 0 ) mw_use_int64_t = 1;
  if( strcmp(name,"uint32_t") == 0 ) mw_use_uint32_t = 1;
  if( strcmp(name,"uint64_t") == 0 ) mw_use_uint64_t = 1;

  if( strcmp(name,"ulong") == 0 ) mw_use_ulong = 1;
  if( strcmp(name,"uint") == 0 ) mw_use_uint = 1;
  if( strcmp(name,"ushort") == 0 ) mw_use_ushort = 1;
  if( strcmp(name,"uchar") == 0 ) mw_use_uchar = 1;

  /* Promote integers */
  if( mw_promote_int == 1 )
    {      
      if( strcmp(name,"uint") == 0 ) mw_use_ulong = 1;
      if( strcmp(name,"int") == 0 ) return strdup("long");
      if( strcmp(name,"uint") == 0 ) return strdup("ulong");
    }
  if( mw_promote_int == 2 )
    {      
      if( strcmp(name,"uint") == 0 ) mw_use_ulong = 1;
      if( strcmp(name,"ulong") == 0 ) mw_use_ulong = 1;
      if( strcmp(name,"int") == 0 ) return strdup("long");
      if( strcmp(name,"long") == 0 ) return strdup("long");
      if( strcmp(name,"uint") == 0 ) return strdup("ulong");
      if( strcmp(name,"ulong") == 0 ) return strdup("ulong");
    }
  if( mw_promote_int == 3 )
    {      
      if( strcmp(name,"int") == 0 ) mw_use_int32_t = 1;
      if( strcmp(name,"long") == 0 ) mw_use_int64_t = 1;
      if( strcmp(name,"uint") == 0 ) mw_use_uint32_t = 1;
      if( strcmp(name,"ulong") == 0 ) mw_use_uint64_t = 1;
      if( strcmp(name,"int") == 0 ) return strdup("int32_t");
      if( strcmp(name,"long") == 0 ) return strdup("int32_t");
      if( strcmp(name,"uint") == 0 ) return strdup("uint64_t");
      if( strcmp(name,"ulong") == 0 ) return strdup("uint64_t");
    }
  if( mw_promote_int == 4 )
    {      
      if( strcmp(name,"int") == 0 ) mw_use_int64_t = 1;
      if( strcmp(name,"long") == 0 ) mw_use_int64_t = 1;
      if( strcmp(name,"uint") == 0 ) mw_use_uint64_t = 1;
      if( strcmp(name,"ulong") == 0 ) mw_use_uint64_t = 1;
      if( strcmp(name,"int") == 0 ) return strdup("int64_t");
      if( strcmp(name,"long") == 0 ) return strdup("int64_t");
      if( strcmp(name,"uint") == 0 ) return strdup("uint64_t");
      if( strcmp(name,"ulong") == 0 ) return strdup("uint64_t");
    }
  return name;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x81da(%rip), %rsi      # 0xdace
callq 0x3260
testl %eax, %eax
jne 0x590a
leaq 0x16934(%rip), %rax     # 0x1c238
movl $0x1, (%rax)
leaq 0x81c6(%rip), %rsi      # 0xdad7
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x592a
leaq 0x16918(%rip), %rax     # 0x1c23c
movl $0x1, (%rax)
leaq 0x819c(%rip), %rsi      # 0xdacd
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x594a
leaq 0x168fc(%rip), %rax     # 0x1c240
movl $0x1, (%rax)
leaq 0x8185(%rip), %rsi      # 0xdad6
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x596a
leaq 0x168e0(%rip), %rax     # 0x1c244
movl $0x1, (%rax)
leaq 0x8144(%rip), %rsi      # 0xdab5
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x598a
leaq 0x168c4(%rip), %rax     # 0x1c248
movl $0x1, (%rax)
leaq 0x812a(%rip), %rsi      # 0xdabb
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x59aa
leaq 0x168a8(%rip), %rax     # 0x1c24c
movl $0x1, (%rax)
leaq 0x810f(%rip), %rsi      # 0xdac0
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x59ca
leaq 0x1688c(%rip), %rax     # 0x1c250
movl $0x1, (%rax)
leaq 0x80f6(%rip), %rsi      # 0xdac7
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x59ea
leaq 0x16870(%rip), %rax     # 0x1c254
movl $0x1, (%rax)
leaq 0x16843(%rip), %rax     # 0x1c234
movl (%rax), %eax
decl %eax
cmpl $0x3, %eax
ja 0x5c77
leaq 0x8093(%rip), %rcx      # 0xda98
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x80a6(%rip), %rsi      # 0xdabb
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x5a2e
leaq 0x16820(%rip), %rax     # 0x1c248
movl $0x1, (%rax)
leaq 0x8087(%rip), %rsi      # 0xdabc
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
je 0x5c81
leaq 0x806f(%rip), %rsi      # 0xdabb
jmp 0x5c6b
leaq 0x8064(%rip), %rsi      # 0xdabc
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x5a71
leaq 0x167cd(%rip), %rax     # 0x1c238
movl $0x1, (%rax)
leaq 0x803e(%rip), %rsi      # 0xdab6
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x5a91
leaq 0x167b1(%rip), %rax     # 0x1c23c
movl $0x1, (%rax)
leaq 0x8023(%rip), %rsi      # 0xdabb
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x5ab1
leaq 0x16795(%rip), %rax     # 0x1c240
movl $0x1, (%rax)
leaq 0x7ffd(%rip), %rsi      # 0xdab5
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x5ad1
leaq 0x16779(%rip), %rax     # 0x1c244
movl $0x1, (%rax)
leaq 0x7fe4(%rip), %rsi      # 0xdabc
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
je 0x5afb
leaq 0x7fcb(%rip), %rsi      # 0xdab6
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x5bb5
leaq 0x7fcc(%rip), %rdi      # 0xdace
jmp 0x5c9a
leaq 0x7fae(%rip), %rsi      # 0xdabc
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x5b27
leaq 0x1671b(%rip), %rax     # 0x1c23c
movl $0x1, (%rax)
leaq 0x7f88(%rip), %rsi      # 0xdab6
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x5b47
leaq 0x166fb(%rip), %rax     # 0x1c23c
movl $0x1, (%rax)
leaq 0x7f6d(%rip), %rsi      # 0xdabb
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x5b67
leaq 0x166e3(%rip), %rax     # 0x1c244
movl $0x1, (%rax)
leaq 0x7f47(%rip), %rsi      # 0xdab5
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x5b87
leaq 0x166c3(%rip), %rax     # 0x1c244
movl $0x1, (%rax)
leaq 0x7f2e(%rip), %rsi      # 0xdabc
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
je 0x5c8a
leaq 0x7f11(%rip), %rsi      # 0xdab6
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
je 0x5c8a
leaq 0x7eff(%rip), %rsi      # 0xdabb
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
je 0x5bdf
leaq 0x7ee6(%rip), %rsi      # 0xdab5
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x5c77
leaq 0x7ef0(%rip), %rdi      # 0xdad6
jmp 0x5c9a
leaq 0x7ec9(%rip), %rsi      # 0xdabb
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x5c0b
leaq 0x16643(%rip), %rax     # 0x1c248
movl $0x1, (%rax)
leaq 0x7ea3(%rip), %rsi      # 0xdab5
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
jne 0x5c2b
leaq 0x16623(%rip), %rax     # 0x1c248
movl $0x1, (%rax)
leaq 0x7e8a(%rip), %rsi      # 0xdabc
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
je 0x5c81
leaq 0x7e71(%rip), %rsi      # 0xdab6
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
je 0x5c81
leaq 0x7e63(%rip), %rsi      # 0xdabb
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
je 0x5c93
leaq 0x7e4a(%rip), %rsi      # 0xdab5
movq %rbx, %rdi
callq 0x3260
testl %eax, %eax
je 0x5c93
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
leaq 0x7e2e(%rip), %rdi      # 0xdab6
jmp 0x5c9a
leaq 0x7e46(%rip), %rdi      # 0xdad7
jmp 0x5c9a
leaq 0x7e1b(%rip), %rdi      # 0xdab5
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x3320