// File: WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::internal::FormatEpochTimeInMillisAsIso8601[abi:cxx11](long long)
std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) {
  // Using non-reentrant version as localtime_r is not portable.
  time_t seconds = static_cast<time_t>(ms / 1000);
#ifdef _MSC_VER
# pragma warning(push)          // Saves the current warning state.
# pragma warning(disable:4996)  // Temporarily disables warning 4996
                                // (function or variable may be unsafe).
  const struct tm* const time_struct = localtime(&seconds);  // NOLINT
# pragma warning(pop)           // Restores the warning state again.
#else
  const struct tm* const time_struct = localtime(&seconds);  // NOLINT
#endif
  if (time_struct == NULL)
    return "";  // Invalid ms value

  // YYYY-MM-DDThh:mm:ss
  return StreamableToString(time_struct->tm_year + 1900) + "-" +
      String::FormatIntWidth2(time_struct->tm_mon + 1) + "-" +
      String::FormatIntWidth2(time_struct->tm_mday) + "T" +
      String::FormatIntWidth2(time_struct->tm_hour) + ":" +
      String::FormatIntWidth2(time_struct->tm_min) + ":" +
      String::FormatIntWidth2(time_struct->tm_sec);
}

// Assembly:
subq $0x248, %rsp            # imm = 0x248
movq %rdi, 0x18(%rsp)
movq %rdi, %rax
movq %rax, 0x20(%rsp)
movq %rdi, 0x240(%rsp)
movq %rsi, 0x238(%rsp)
movq 0x238(%rsp), %rax
movl $0x3e8, %ecx            # imm = 0x3E8
cqto
idivq %rcx
movq %rax, 0x230(%rsp)
leaq 0x230(%rsp), %rdi
callq 0xe6f0
movq %rax, 0x228(%rsp)
cmpq $0x0, 0x228(%rsp)
jne 0x236a0
leaq 0x227(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xf420
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rdx
leaq 0x29b15(%rip), %rsi     # 0x4d176
callq 0x32980
jmp 0x23668
leaq 0x227(%rsp), %rdi
callq 0xeb40
jmp 0x23b51
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
leaq 0x227(%rsp), %rdi
callq 0xeb40
jmp 0x23b5e
movq 0x228(%rsp), %rax
movl 0x14(%rax), %eax
addl $0x76c, %eax            # imm = 0x76C
movl %eax, 0xcc(%rsp)
leaq 0xd0(%rsp), %rdi
movq %rdi, 0x8(%rsp)
leaq 0xcc(%rsp), %rsi
callq 0x370b0
movq 0x8(%rsp), %rsi
leaq 0x2a06f(%rip), %rdx     # 0x4d74c
leaq 0xf0(%rsp), %rdi
callq 0x32c70
jmp 0x236ec
movq 0x228(%rsp), %rax
movl 0x10(%rax), %esi
incl %esi
leaq 0xa8(%rsp), %rdi
callq 0x1cb30
jmp 0x23708
leaq 0x110(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
callq 0x36fc0
jmp 0x23727
leaq 0x2a01e(%rip), %rdx     # 0x4d74c
leaq 0x130(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x32c70
jmp 0x23745
movq 0x228(%rsp), %rax
movl 0xc(%rax), %esi
leaq 0x88(%rsp), %rdi
callq 0x1cb30
jmp 0x2375f
leaq 0x150(%rsp), %rdi
leaq 0x130(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0x36fc0
jmp 0x2377e
leaq 0x29a6e(%rip), %rdx     # 0x4d1f3
leaq 0x170(%rsp), %rdi
leaq 0x150(%rsp), %rsi
callq 0x32c70
jmp 0x2379c
movq 0x228(%rsp), %rax
movl 0x8(%rax), %esi
leaq 0x68(%rsp), %rdi
callq 0x1cb30
jmp 0x237b3
leaq 0x190(%rsp), %rdi
leaq 0x170(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0x36fc0
jmp 0x237cf
leaq 0x29d18(%rip), %rdx     # 0x4d4ee
leaq 0x1b0(%rsp), %rdi
leaq 0x190(%rsp), %rsi
callq 0x32c70
jmp 0x237ed
movq 0x228(%rsp), %rax
movl 0x4(%rax), %esi
leaq 0x48(%rsp), %rdi
callq 0x1cb30
jmp 0x23804
leaq 0x1d0(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
leaq 0x48(%rsp), %rdx
callq 0x36fc0
jmp 0x23820
leaq 0x29cc7(%rip), %rdx     # 0x4d4ee
leaq 0x1f0(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
callq 0x32c70
jmp 0x2383e
movq 0x228(%rsp), %rax
movl (%rax), %esi
leaq 0x28(%rsp), %rdi
callq 0x1cb30
jmp 0x23854
movq 0x18(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
leaq 0x28(%rsp), %rdx
callq 0x36fc0
jmp 0x2386d
leaq 0x28(%rsp), %rdi
callq 0xf698
leaq 0x1f0(%rsp), %rdi
callq 0xf698
leaq 0x1d0(%rsp), %rdi
callq 0xf698
leaq 0x48(%rsp), %rdi
callq 0xf698
leaq 0x1b0(%rsp), %rdi
callq 0xf698
leaq 0x190(%rsp), %rdi
callq 0xf698
leaq 0x68(%rsp), %rdi
callq 0xf698
leaq 0x170(%rsp), %rdi
callq 0xf698
leaq 0x150(%rsp), %rdi
callq 0xf698
leaq 0x88(%rsp), %rdi
callq 0xf698
leaq 0x130(%rsp), %rdi
callq 0xf698
leaq 0x110(%rsp), %rdi
callq 0xf698
leaq 0xa8(%rsp), %rdi
callq 0xf698
leaq 0xf0(%rsp), %rdi
callq 0xf698
leaq 0xd0(%rsp), %rdi
callq 0xf698
jmp 0x23b51
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23b42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23b35
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23b28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23b1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23b0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23b01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23af4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23ae7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23add
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23ad0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23ac3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23ab9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23aac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
jmp 0x23a9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x218(%rsp)
movl %eax, 0x214(%rsp)
leaq 0x28(%rsp), %rdi
callq 0xf698
leaq 0x1f0(%rsp), %rdi
callq 0xf698
leaq 0x1d0(%rsp), %rdi
callq 0xf698
leaq 0x48(%rsp), %rdi
callq 0xf698
leaq 0x1b0(%rsp), %rdi
callq 0xf698
leaq 0x190(%rsp), %rdi
callq 0xf698
leaq 0x68(%rsp), %rdi
callq 0xf698
leaq 0x170(%rsp), %rdi
callq 0xf698
leaq 0x150(%rsp), %rdi
callq 0xf698
leaq 0x88(%rsp), %rdi
callq 0xf698
leaq 0x130(%rsp), %rdi
callq 0xf698
leaq 0x110(%rsp), %rdi
callq 0xf698
leaq 0xa8(%rsp), %rdi
callq 0xf698
leaq 0xf0(%rsp), %rdi
callq 0xf698
leaq 0xd0(%rsp), %rdi
callq 0xf698
jmp 0x23b5e
movq 0x20(%rsp), %rax
addq $0x248, %rsp            # imm = 0x248
retq
movq 0x218(%rsp), %rdi
callq 0xf410
nopl (%rax,%rax)