// File: ATOMIC-LICHESS[P]ATOMKRAFT/misc.cpp
// Function: engine_name[abi:cxx11]()
const string engine_name() {

  const string months("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec");
  const string cpu64(CpuIs64Bit ? " 64bit" : "");

  if (!EngineVersion.empty())
      return AppName + " " + EngineVersion + cpu64;

  stringstream s, date(__DATE__); // From compiler, format is "Sep 21 2008"
  string month, day, year;

  date >> month >> day >> year;

  s << setfill('0') << AppName + " " + AppTag + " "
    << year.substr(2, 2) << setw(2)
    << (1 + months.find(month) / 4) << setw(2)
    << day << cpu64;

  return s.str();
}

// Assembly:
subq $0x578, %rsp            # imm = 0x578
movq %rdi, 0x88(%rsp)
movq %rdi, %rax
movq %rax, 0x90(%rsp)
movq %rdi, 0x570(%rsp)
leaq 0x54f(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0x6980
movq 0x98(%rsp), %rdx
leaq 0x2ef6c(%rip), %rsi     # 0x5a782
leaq 0x550(%rsp), %rdi
callq 0x12070
jmp 0x2b825
leaq 0x54f(%rsp), %rdi
callq 0x6550
leaq 0x517(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x6980
movq 0x80(%rsp), %rdx
leaq 0x2b9de(%rip), %rsi     # 0x57234
leaq 0x518(%rsp), %rdi
callq 0x12070
jmp 0x2b865
leaq 0x517(%rsp), %rdi
callq 0x6550
leaq 0x3b775f(%rip), %rdi    # 0x3e2fd8
callq 0x68c0
testb $0x1, %al
jne 0x2b9b8
leaq 0x3b772b(%rip), %rsi    # 0x3e2fb8
leaq 0x2dccc(%rip), %rdx     # 0x59560
leaq 0x4d0(%rsp), %rdi
callq 0x2c3a0
jmp 0x2b8a3
leaq 0x3b772e(%rip), %rdx    # 0x3e2fd8
leaq 0x4f0(%rsp), %rdi
leaq 0x4d0(%rsp), %rsi
callq 0x2c350
jmp 0x2b8c1
movq 0x88(%rsp), %rdi
leaq 0x4f0(%rsp), %rsi
leaq 0x518(%rsp), %rdx
callq 0x2c350
jmp 0x2b8e0
leaq 0x4f0(%rsp), %rdi
callq 0x6a78
leaq 0x4d0(%rsp), %rdi
callq 0x6a78
movl $0x1, 0x4cc(%rsp)
jmp 0x2be2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x540(%rsp)
movl %eax, 0x53c(%rsp)
leaq 0x54f(%rsp), %rdi
callq 0x6550
jmp 0x2be6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x540(%rsp)
movl %eax, 0x53c(%rsp)
leaq 0x517(%rsp), %rdi
callq 0x6550
jmp 0x2be62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x540(%rsp)
movl %eax, 0x53c(%rsp)
jmp 0x2be55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x540(%rsp)
movl %eax, 0x53c(%rsp)
jmp 0x2b9a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x540(%rsp)
movl %eax, 0x53c(%rsp)
leaq 0x4f0(%rsp), %rdi
callq 0x6a78
leaq 0x4d0(%rsp), %rdi
callq 0x6a78
jmp 0x2be55
leaq 0x340(%rsp), %rdi
callq 0x6340
jmp 0x2b9c7
leaq 0x197(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x6980
movq 0x78(%rsp), %rdx
leaq 0x2ea5a(%rip), %rsi     # 0x5a43f
leaq 0x198(%rsp), %rdi
callq 0x12070
jmp 0x2b9f4
movl $0x10, %edi
movl $0x8, %esi
callq 0xf620
movl %eax, 0x74(%rsp)
jmp 0x2ba09
movl 0x74(%rsp), %edx
leaq 0x1b8(%rsp), %rdi
leaq 0x198(%rsp), %rsi
callq 0x6840
jmp 0x2ba24
leaq 0x198(%rsp), %rdi
callq 0x6a78
leaq 0x197(%rsp), %rdi
callq 0x6550
leaq 0x170(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x6730
leaq 0x150(%rsp), %rdi
callq 0x6730
leaq 0x130(%rsp), %rdi
callq 0x6730
movq 0x60(%rsp), %rsi
leaq 0x1b8(%rsp), %rdi
callq 0x6680
movq %rax, 0x68(%rsp)
jmp 0x2ba83
movq 0x68(%rsp), %rdi
leaq 0x150(%rsp), %rsi
callq 0x6680
movq %rax, 0x58(%rsp)
jmp 0x2ba9c
movq 0x58(%rsp), %rdi
leaq 0x130(%rsp), %rsi
callq 0x6680
jmp 0x2bab0
leaq 0x350(%rsp), %rax
movq %rax, 0x48(%rsp)
movl $0x30, %edi
callq 0x2c430
movb %al, 0x57(%rsp)
jmp 0x2bacd
movq 0x48(%rsp), %rdi
movb 0x57(%rsp), %al
movb %al, 0x12f(%rsp)
movzbl 0x12f(%rsp), %esi
callq 0x6810
movq %rax, 0x40(%rsp)
jmp 0x2baf1
leaq 0x3b74c0(%rip), %rsi    # 0x3e2fb8
leaq 0x2da61(%rip), %rdx     # 0x59560
leaq 0xc8(%rsp), %rdi
callq 0x2c3a0
jmp 0x2bb0e
leaq 0x3b74e3(%rip), %rdx    # 0x3e2ff8
leaq 0xe8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x2c350
jmp 0x2bb2c
leaq 0x2da2d(%rip), %rdx     # 0x59560
leaq 0x108(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x1c610
jmp 0x2bb4a
movq 0x40(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x6420
movq %rax, 0x38(%rsp)
jmp 0x2bb63
leaq 0xa8(%rsp), %rdi
leaq 0x130(%rsp), %rsi
movl $0x2, %ecx
movq %rcx, %rdx
callq 0x6500
jmp 0x2bb82
movq 0x38(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x6420
movq %rax, 0x30(%rsp)
jmp 0x2bb9b
movl $0x2, %edi
callq 0x28160
movl %eax, 0x2c(%rsp)
jmp 0x2bbab
movq 0x30(%rsp), %rdi
movl 0x2c(%rsp), %eax
movl %eax, 0xa4(%rsp)
movl 0xa4(%rsp), %esi
callq 0x65a0
movq %rax, 0x20(%rsp)
jmp 0x2bbce
xorl %eax, %eax
movl %eax, %edx
leaq 0x550(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x6a60
movq 0x20(%rsp), %rdi
movq %rax, %rsi
shrq $0x2, %rsi
incq %rsi
callq 0x6120
movq %rax, 0x18(%rsp)
jmp 0x2bc02
movl $0x2, %edi
callq 0x28160
movl %eax, 0x14(%rsp)
jmp 0x2bc12
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %eax
movl %eax, 0xa0(%rsp)
movl 0xa0(%rsp), %esi
callq 0x65a0
movq %rax, 0x8(%rsp)
jmp 0x2bc35
movq 0x8(%rsp), %rdi
leaq 0x150(%rsp), %rsi
callq 0x6420
movq %rax, (%rsp)
jmp 0x2bc4d
movq (%rsp), %rdi
leaq 0x518(%rsp), %rsi
callq 0x6420
jmp 0x2bc60
leaq 0xa8(%rsp), %rdi
callq 0x6a78
leaq 0x108(%rsp), %rdi
callq 0x6a78
leaq 0xe8(%rsp), %rdi
callq 0x6a78
leaq 0xc8(%rsp), %rdi
callq 0x6a78
movq 0x88(%rsp), %rdi
leaq 0x340(%rsp), %rsi
callq 0x64a0
jmp 0x2bcab
movl $0x1, 0x4cc(%rsp)
leaq 0x130(%rsp), %rdi
callq 0x6a78
leaq 0x150(%rsp), %rdi
callq 0x6a78
leaq 0x170(%rsp), %rdi
callq 0x6a78
leaq 0x1b8(%rsp), %rdi
callq 0x6a80
leaq 0x340(%rsp), %rdi
callq 0x6a80
jmp 0x2be2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x540(%rsp)
movl %eax, 0x53c(%rsp)
jmp 0x2bd33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x540(%rsp)
movl %eax, 0x53c(%rsp)
leaq 0x198(%rsp), %rdi
callq 0x6a78
leaq 0x197(%rsp), %rdi
callq 0x6550
jmp 0x2be1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x540(%rsp)
movl %eax, 0x53c(%rsp)
jmp 0x2bde8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x540(%rsp)
movl %eax, 0x53c(%rsp)
jmp 0x2bddb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x540(%rsp)
movl %eax, 0x53c(%rsp)
jmp 0x2bdce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x540(%rsp)
movl %eax, 0x53c(%rsp)
jmp 0x2bdc1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x540(%rsp)
movl %eax, 0x53c(%rsp)
leaq 0xa8(%rsp), %rdi
callq 0x6a78
leaq 0x108(%rsp), %rdi
callq 0x6a78
leaq 0xe8(%rsp), %rdi
callq 0x6a78
leaq 0xc8(%rsp), %rdi
callq 0x6a78
leaq 0x130(%rsp), %rdi
callq 0x6a78
leaq 0x150(%rsp), %rdi
callq 0x6a78
leaq 0x170(%rsp), %rdi
callq 0x6a78
leaq 0x1b8(%rsp), %rdi
callq 0x6a80
leaq 0x340(%rsp), %rdi
callq 0x6a80
jmp 0x2be55
leaq 0x518(%rsp), %rdi
callq 0x6a78
leaq 0x550(%rsp), %rdi
callq 0x6a78
movq 0x90(%rsp), %rax
addq $0x578, %rsp            # imm = 0x578
retq
leaq 0x518(%rsp), %rdi
callq 0x6a78
leaq 0x550(%rsp), %rdi
callq 0x6a78
movq 0x540(%rsp), %rdi
callq 0x6970
nopl (%rax)