#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
unsigned long do_div(unsigned long long, int);
int /*<<< orphan*/
trace_printk(char *, unsigned long, unsigned long, unsigned int, unsigned int,
             unsigned int, unsigned int, unsigned int, unsigned int,
             unsigned int, unsigned int, unsigned int, unsigned int,
             unsigned int, unsigned int, unsigned int, unsigned int,
             unsigned int, unsigned int, unsigned int, unsigned int,
             unsigned int, unsigned int, unsigned int, unsigned int,
             unsigned int, unsigned int, unsigned int, unsigned int,
             unsigned int, unsigned int, unsigned int, unsigned int, ...);
void ms_smi(unsigned long long timestamp, unsigned char cnt,
            unsigned int *value) {
  unsigned long nano_rem = do_div(timestamp, 1000000000);
  switch (cnt) {
  case 30:
    trace_printk("%5lu.%06lu"
                 ",%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,"
                 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n",
                 (unsigned long)(timestamp), nano_rem / 1000, value[0],
                 value[1], value[2], value[3], value[4], value[5], value[6],
                 value[7], value[8], value[9], value[10], value[11], value[12],
                 value[13], value[14], value[15], value[16], value[17],
                 value[18], value[19], value[20], value[21], value[22],
                 value[23], value[24], value[25], value[26], value[27],
                 value[28], value[29]);
    break;
  case 37:
    trace_printk("%5lu.%06lu"
                 ",%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,"
                 "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n",
                 (unsigned long)(timestamp), nano_rem / 1000, value[0],
                 value[1], value[2], value[3], value[4], value[5], value[6],
                 value[7], value[8], value[9], value[10], value[11], value[12],
                 value[13], value[14], value[15], value[16], value[17],
                 value[18], value[19], value[20], value[21], value[22],
                 value[23], value[24], value[25], value[26], value[27],
                 value[28], value[29], value[30], value[31], value[32],
                 value[33], value[34], value[35], value[36]);
    break;
  case 44:
    trace_printk(
        "%5lu.%06lu"
        ",%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,"
        "%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\n",
        (unsigned long)(timestamp), nano_rem / 1000, value[0], value[1],
        value[2], value[3], value[4], value[5], value[6], value[7], value[8],
        value[9], value[10], value[11], value[12], value[13], value[14],
        value[15], value[16], value[17], value[18], value[19], value[20],
        value[21], value[22], value[23], value[24], value[25], value[26],
        value[27], value[28], value[29], value[30], value[31], value[32],
        value[33], value[34], value[35], value[36], value[37], value[38],
        value[39], value[40], value[41], value[42], value[43]);
    break;
  }
}


x86 assembly (clang, -O0):
<ms_smi>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x2a8,%rsp
mov    %sil,%al
mov    %rdi,-0x30(%rbp)
mov    %al,-0x31(%rbp)
mov    %rdx,-0x40(%rbp)
mov    -0x30(%rbp),%rdi
mov    $0x3b9aca00,%esi
call   1030 <do_div@plt>
mov    %rax,-0x48(%rbp)
movzbl -0x31(%rbp),%eax
mov    %eax,-0x4c(%rbp)
sub    $0x1e,%eax
je     118b <ms_smi+0x6b>
jmp    1169 <ms_smi+0x49>
mov    -0x4c(%rbp),%eax
sub    $0x25,%eax
je     13b4 <ms_smi+0x294>
jmp    117a <ms_smi+0x5a>
mov    -0x4c(%rbp),%eax
sub    $0x2c,%eax
je     16f0 <ms_smi+0x5d0>
jmp    1af2 <ms_smi+0x9d2>
mov    -0x30(%rbp),%rsi
mov    -0x48(%rbp),%rax
mov    $0x3e8,%ecx
xor    %edx,%edx
div    %rcx
mov    %rax,%rdx
mov    -0x40(%rbp),%rax
mov    (%rax),%ecx
mov    -0x40(%rbp),%rax
mov    0x4(%rax),%r8d
mov    -0x40(%rbp),%rax
mov    0x8(%rax),%r9d
mov    -0x40(%rbp),%rax
mov    0xc(%rax),%eax
mov    -0x40(%rbp),%rdi
mov    0x10(%rdi),%edi
mov    %edi,-0x98(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x14(%rdi),%edi
mov    %edi,-0x94(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x18(%rdi),%edi
mov    %edi,-0x90(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x1c(%rdi),%edi
mov    %edi,-0x8c(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x20(%rdi),%edi
mov    %edi,-0x88(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x24(%rdi),%edi
mov    %edi,-0x84(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x28(%rdi),%edi
mov    %edi,-0x80(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x2c(%rdi),%edi
mov    %edi,-0x7c(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x30(%rdi),%edi
mov    %edi,-0x78(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x34(%rdi),%edi
mov    %edi,-0x74(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x38(%rdi),%edi
mov    %edi,-0x70(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x3c(%rdi),%edi
mov    %edi,-0x6c(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x40(%rdi),%edi
mov    %edi,-0x68(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x44(%rdi),%edi
mov    %edi,-0x64(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x48(%rdi),%edi
mov    %edi,-0x60(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x4c(%rdi),%edi
mov    %edi,-0x5c(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x50(%rdi),%edi
mov    %edi,-0x58(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x54(%rdi),%edi
mov    %edi,-0x54(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x58(%rdi),%r13d
mov    -0x40(%rbp),%rdi
mov    0x5c(%rdi),%r12d
mov    -0x40(%rbp),%rdi
mov    0x60(%rdi),%r15d
mov    -0x40(%rbp),%rdi
mov    0x64(%rdi),%r14d
mov    -0x40(%rbp),%rdi
mov    0x68(%rdi),%ebx
mov    -0x40(%rbp),%rdi
mov    0x6c(%rdi),%r11d
mov    -0x40(%rbp),%rdi
mov    0x70(%rdi),%r10d
mov    -0x40(%rbp),%rdi
mov    0x74(%rdi),%edi
mov    %edi,-0x50(%rbp)
lea    0xd35(%rip),%rdi
mov    %eax,(%rsp)
mov    -0x98(%rbp),%eax
mov    %eax,0x8(%rsp)
mov    -0x94(%rbp),%eax
mov    %eax,0x10(%rsp)
mov    -0x90(%rbp),%eax
mov    %eax,0x18(%rsp)
mov    -0x8c(%rbp),%eax
mov    %eax,0x20(%rsp)
mov    -0x88(%rbp),%eax
mov    %eax,0x28(%rsp)
mov    -0x84(%rbp),%eax
mov    %eax,0x30(%rsp)
mov    -0x80(%rbp),%eax
mov    %eax,0x38(%rsp)
mov    -0x7c(%rbp),%eax
mov    %eax,0x40(%rsp)
mov    -0x78(%rbp),%eax
mov    %eax,0x48(%rsp)
mov    -0x74(%rbp),%eax
mov    %eax,0x50(%rsp)
mov    -0x70(%rbp),%eax
mov    %eax,0x58(%rsp)
mov    -0x6c(%rbp),%eax
mov    %eax,0x60(%rsp)
mov    -0x68(%rbp),%eax
mov    %eax,0x68(%rsp)
mov    -0x64(%rbp),%eax
mov    %eax,0x70(%rsp)
mov    -0x60(%rbp),%eax
mov    %eax,0x78(%rsp)
mov    -0x5c(%rbp),%eax
mov    %eax,0x80(%rsp)
mov    -0x58(%rbp),%eax
mov    %eax,0x88(%rsp)
mov    -0x54(%rbp),%eax
mov    %eax,0x90(%rsp)
mov    -0x50(%rbp),%eax
mov    %r13d,0x98(%rsp)
mov    %r12d,0xa0(%rsp)
mov    %r15d,0xa8(%rsp)
mov    %r14d,0xb0(%rsp)
mov    %ebx,0xb8(%rsp)
mov    %r11d,0xc0(%rsp)
mov    %r10d,0xc8(%rsp)
mov    %eax,0xd0(%rsp)
mov    $0x0,%al
call   1040 <trace_printk@plt>
jmp    1af2 <ms_smi+0x9d2>
mov    -0x30(%rbp),%rsi
mov    -0x48(%rbp),%rax
mov    $0x3e8,%ecx
xor    %edx,%edx
div    %rcx
mov    %rax,%rdx
mov    -0x40(%rbp),%rax
mov    (%rax),%ecx
mov    -0x40(%rbp),%rax
mov    0x4(%rax),%r8d
mov    -0x40(%rbp),%rax
mov    0x8(%rax),%r9d
mov    -0x40(%rbp),%rax
mov    0xc(%rax),%eax
mov    -0x40(%rbp),%rdi
mov    0x10(%rdi),%edi
mov    %edi,-0x100(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x14(%rdi),%edi
mov    %edi,-0xfc(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x18(%rdi),%edi
mov    %edi,-0xf8(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x1c(%rdi),%edi
mov    %edi,-0xf4(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x20(%rdi),%edi
mov    %edi,-0xf0(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x24(%rdi),%edi
mov    %edi,-0xec(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x28(%rdi),%edi
mov    %edi,-0xe8(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x2c(%rdi),%edi
mov    %edi,-0xe4(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x30(%rdi),%edi
mov    %edi,-0xe0(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x34(%rdi),%edi
mov    %edi,-0xdc(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x38(%rdi),%edi
mov    %edi,-0xd8(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x3c(%rdi),%edi
mov    %edi,-0xd4(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x40(%rdi),%edi
mov    %edi,-0xd0(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x44(%rdi),%edi
mov    %edi,-0xcc(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x48(%rdi),%edi
mov    %edi,-0xc8(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x4c(%rdi),%edi
mov    %edi,-0xc4(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x50(%rdi),%edi
mov    %edi,-0xc0(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x54(%rdi),%edi
mov    %edi,-0xbc(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x58(%rdi),%edi
mov    %edi,-0xb8(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x5c(%rdi),%edi
mov    %edi,-0xb4(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x60(%rdi),%edi
mov    %edi,-0xb0(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x64(%rdi),%edi
mov    %edi,-0xac(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x68(%rdi),%edi
mov    %edi,-0xa8(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x6c(%rdi),%edi
mov    %edi,-0xa4(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x70(%rdi),%edi
mov    %edi,-0xa0(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x74(%rdi),%r13d
mov    -0x40(%rbp),%rdi
mov    0x78(%rdi),%r12d
mov    -0x40(%rbp),%rdi
mov    0x7c(%rdi),%r15d
mov    -0x40(%rbp),%rdi
mov    0x80(%rdi),%r14d
mov    -0x40(%rbp),%rdi
mov    0x84(%rdi),%ebx
mov    -0x40(%rbp),%rdi
mov    0x88(%rdi),%r11d
mov    -0x40(%rbp),%rdi
mov    0x8c(%rdi),%r10d
mov    -0x40(%rbp),%rdi
mov    0x90(%rdi),%edi
mov    %edi,-0x9c(%rbp)
lea    0xae1(%rip),%rdi
mov    %eax,(%rsp)
mov    -0x100(%rbp),%eax
mov    %eax,0x8(%rsp)
mov    -0xfc(%rbp),%eax
mov    %eax,0x10(%rsp)
mov    -0xf8(%rbp),%eax
mov    %eax,0x18(%rsp)
mov    -0xf4(%rbp),%eax
mov    %eax,0x20(%rsp)
mov    -0xf0(%rbp),%eax
mov    %eax,0x28(%rsp)
mov    -0xec(%rbp),%eax
mov    %eax,0x30(%rsp)
mov    -0xe8(%rbp),%eax
mov    %eax,0x38(%rsp)
mov    -0xe4(%rbp),%eax
mov    %eax,0x40(%rsp)
mov    -0xe0(%rbp),%eax
mov    %eax,0x48(%rsp)
mov    -0xdc(%rbp),%eax
mov    %eax,0x50(%rsp)
mov    -0xd8(%rbp),%eax
mov    %eax,0x58(%rsp)
mov    -0xd4(%rbp),%eax
mov    %eax,0x60(%rsp)
mov    -0xd0(%rbp),%eax
mov    %eax,0x68(%rsp)
mov    -0xcc(%rbp),%eax
mov    %eax,0x70(%rsp)
mov    -0xc8(%rbp),%eax
mov    %eax,0x78(%rsp)
mov    -0xc4(%rbp),%eax
mov    %eax,0x80(%rsp)
mov    -0xc0(%rbp),%eax
mov    %eax,0x88(%rsp)
mov    -0xbc(%rbp),%eax
mov    %eax,0x90(%rsp)
mov    -0xb8(%rbp),%eax
mov    %eax,0x98(%rsp)
mov    -0xb4(%rbp),%eax
mov    %eax,0xa0(%rsp)
mov    -0xb0(%rbp),%eax
mov    %eax,0xa8(%rsp)
mov    -0xac(%rbp),%eax
mov    %eax,0xb0(%rsp)
mov    -0xa8(%rbp),%eax
mov    %eax,0xb8(%rsp)
mov    -0xa4(%rbp),%eax
mov    %eax,0xc0(%rsp)
mov    -0xa0(%rbp),%eax
mov    %eax,0xc8(%rsp)
mov    -0x9c(%rbp),%eax
mov    %r13d,0xd0(%rsp)
mov    %r12d,0xd8(%rsp)
mov    %r15d,0xe0(%rsp)
mov    %r14d,0xe8(%rsp)
mov    %ebx,0xf0(%rsp)
mov    %r11d,0xf8(%rsp)
mov    %r10d,0x100(%rsp)
mov    %eax,0x108(%rsp)
mov    $0x0,%al
call   1040 <trace_printk@plt>
jmp    1af2 <ms_smi+0x9d2>
mov    -0x30(%rbp),%rsi
mov    -0x48(%rbp),%rax
mov    $0x3e8,%ecx
xor    %edx,%edx
div    %rcx
mov    %rax,%rdx
mov    -0x40(%rbp),%rax
mov    (%rax),%ecx
mov    -0x40(%rbp),%rax
mov    0x4(%rax),%r8d
mov    -0x40(%rbp),%rax
mov    0x8(%rax),%r9d
mov    -0x40(%rbp),%rax
mov    0xc(%rax),%eax
mov    -0x40(%rbp),%rdi
mov    0x10(%rdi),%edi
mov    %edi,-0x184(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x14(%rdi),%edi
mov    %edi,-0x180(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x18(%rdi),%edi
mov    %edi,-0x17c(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x1c(%rdi),%edi
mov    %edi,-0x178(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x20(%rdi),%edi
mov    %edi,-0x174(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x24(%rdi),%edi
mov    %edi,-0x170(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x28(%rdi),%edi
mov    %edi,-0x16c(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x2c(%rdi),%edi
mov    %edi,-0x168(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x30(%rdi),%edi
mov    %edi,-0x164(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x34(%rdi),%edi
mov    %edi,-0x160(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x38(%rdi),%edi
mov    %edi,-0x15c(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x3c(%rdi),%edi
mov    %edi,-0x158(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x40(%rdi),%edi
mov    %edi,-0x154(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x44(%rdi),%edi
mov    %edi,-0x150(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x48(%rdi),%edi
mov    %edi,-0x14c(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x4c(%rdi),%edi
mov    %edi,-0x148(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x50(%rdi),%edi
mov    %edi,-0x144(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x54(%rdi),%edi
mov    %edi,-0x140(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x58(%rdi),%edi
mov    %edi,-0x13c(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x5c(%rdi),%edi
mov    %edi,-0x138(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x60(%rdi),%edi
mov    %edi,-0x134(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x64(%rdi),%edi
mov    %edi,-0x130(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x68(%rdi),%edi
mov    %edi,-0x12c(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x6c(%rdi),%edi
mov    %edi,-0x128(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x70(%rdi),%edi
mov    %edi,-0x124(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x74(%rdi),%edi
mov    %edi,-0x120(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x78(%rdi),%edi
mov    %edi,-0x11c(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x7c(%rdi),%edi
mov    %edi,-0x118(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x80(%rdi),%edi
mov    %edi,-0x114(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x84(%rdi),%edi
mov    %edi,-0x110(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x88(%rdi),%edi
mov    %edi,-0x10c(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x8c(%rdi),%edi
mov    %edi,-0x108(%rbp)
mov    -0x40(%rbp),%rdi
mov    0x90(%rdi),%r13d
mov    -0x40(%rbp),%rdi
mov    0x94(%rdi),%r12d
mov    -0x40(%rbp),%rdi
mov    0x98(%rdi),%r15d
mov    -0x40(%rbp),%rdi
mov    0x9c(%rdi),%r14d
mov    -0x40(%rbp),%rdi
mov    0xa0(%rdi),%ebx
mov    -0x40(%rbp),%rdi
mov    0xa4(%rdi),%r11d
mov    -0x40(%rbp),%rdi
mov    0xa8(%rdi),%r10d
mov    -0x40(%rbp),%rdi
mov    0xac(%rdi),%edi
mov    %edi,-0x104(%rbp)
lea    0x7b0(%rip),%rdi
mov    %eax,(%rsp)
mov    -0x184(%rbp),%eax
mov    %eax,0x8(%rsp)
mov    -0x180(%rbp),%eax
mov    %eax,0x10(%rsp)
mov    -0x17c(%rbp),%eax
mov    %eax,0x18(%rsp)
mov    -0x178(%rbp),%eax
mov    %eax,0x20(%rsp)
mov    -0x174(%rbp),%eax
mov    %eax,0x28(%rsp)
mov    -0x170(%rbp),%eax
mov    %eax,0x30(%rsp)
mov    -0x16c(%rbp),%eax
mov    %eax,0x38(%rsp)
mov    -0x168(%rbp),%eax
mov    %eax,0x40(%rsp)
mov    -0x164(%rbp),%eax
mov    %eax,0x48(%rsp)
mov    -0x160(%rbp),%eax
mov    %eax,0x50(%rsp)
mov    -0x15c(%rbp),%eax
mov    %eax,0x58(%rsp)
mov    -0x158(%rbp),%eax
mov    %eax,0x60(%rsp)
mov    -0x154(%rbp),%eax
mov    %eax,0x68(%rsp)
mov    -0x150(%rbp),%eax
mov    %eax,0x70(%rsp)
mov    -0x14c(%rbp),%eax
mov    %eax,0x78(%rsp)
mov    -0x148(%rbp),%eax
mov    %eax,0x80(%rsp)
mov    -0x144(%rbp),%eax
mov    %eax,0x88(%rsp)
mov    -0x140(%rbp),%eax
mov    %eax,0x90(%rsp)
mov    -0x13c(%rbp),%eax
mov    %eax,0x98(%rsp)
mov    -0x138(%rbp),%eax
mov    %eax,0xa0(%rsp)
mov    -0x134(%rbp),%eax
mov    %eax,0xa8(%rsp)
mov    -0x130(%rbp),%eax
mov    %eax,0xb0(%rsp)
mov    -0x12c(%rbp),%eax
mov    %eax,0xb8(%rsp)
mov    -0x128(%rbp),%eax
mov    %eax,0xc0(%rsp)
mov    -0x124(%rbp),%eax
mov    %eax,0xc8(%rsp)
mov    -0x120(%rbp),%eax
mov    %eax,0xd0(%rsp)
mov    -0x11c(%rbp),%eax
mov    %eax,0xd8(%rsp)
mov    -0x118(%rbp),%eax
mov    %eax,0xe0(%rsp)
mov    -0x114(%rbp),%eax
mov    %eax,0xe8(%rsp)
mov    -0x110(%rbp),%eax
mov    %eax,0xf0(%rsp)
mov    -0x10c(%rbp),%eax
mov    %eax,0xf8(%rsp)
mov    -0x108(%rbp),%eax
mov    %eax,0x100(%rsp)
mov    -0x104(%rbp),%eax
mov    %r13d,0x108(%rsp)
mov    %r12d,0x110(%rsp)
mov    %r15d,0x118(%rsp)
mov    %r14d,0x120(%rsp)
mov    %ebx,0x128(%rsp)
mov    %r11d,0x130(%rsp)
mov    %r10d,0x138(%rsp)
mov    %eax,0x140(%rsp)
mov    $0x0,%al
call   1040 <trace_printk@plt>
add    $0x2a8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<ms_smi>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x118,%rsp
mov    %rdx,%rbx
mov    %esi,%ebp
mov    %rdi,%r14
mov    $0x3b9aca00,%esi
call   1030 <do_div@plt>
cmp    $0x2c,%bpl
je     12f6 <ms_smi+0x1d6>
cmp    $0x25,%bpl
je     15b7 <ms_smi+0x497>
cmp    $0x1e,%bpl
jne    17db <ms_smi+0x6bb>
shr    $0x3,%rax
movabs $0x20c49ba5e353f7cf,%rcx
9b c4 20
mul    %rcx
shr    $0x4,%rdx
mov    (%rbx),%ecx
mov    0x4(%rbx),%r8d
mov    0x8(%rbx),%r9d
mov    0xc(%rbx),%eax
mov    %rax,0xa0(%rsp)
mov    0x10(%rbx),%eax
mov    %rax,0x98(%rsp)
mov    0x14(%rbx),%eax
mov    %rax,0x90(%rsp)
mov    0x18(%rbx),%eax
mov    %rax,0x88(%rsp)
mov    0x1c(%rbx),%eax
mov    %rax,0x80(%rsp)
mov    0x20(%rbx),%eax
mov    %rax,0x78(%rsp)
mov    0x24(%rbx),%eax
mov    %rax,0x70(%rsp)
mov    0x28(%rbx),%eax
mov    %rax,0x68(%rsp)
mov    0x2c(%rbx),%eax
mov    %rax,0x60(%rsp)
mov    0x30(%rbx),%eax
mov    %rax,0x58(%rsp)
mov    0x34(%rbx),%eax
mov    %rax,0x50(%rsp)
mov    0x38(%rbx),%eax
mov    %rax,0x48(%rsp)
mov    0x3c(%rbx),%eax
mov    %rax,0x40(%rsp)
mov    0x40(%rbx),%eax
mov    %rax,0x38(%rsp)
mov    0x44(%rbx),%eax
mov    %rax,0x30(%rsp)
mov    0x48(%rbx),%eax
mov    %rax,0x28(%rsp)
mov    0x4c(%rbx),%eax
mov    %rax,0x20(%rsp)
mov    0x50(%rbx),%eax
mov    %rax,0x18(%rsp)
mov    0x54(%rbx),%eax
mov    %rax,0x10(%rsp)
mov    0x58(%rbx),%eax
mov    %rax,0x8(%rsp)
mov    0x5c(%rbx),%r15d
mov    0x60(%rbx),%r12d
mov    0x64(%rbx),%r13d
mov    0x68(%rbx),%ebp
mov    0x6c(%rbx),%r10d
mov    0x70(%rbx),%r11d
mov    0x74(%rbx),%ebx
sub    $0x8,%rsp
lea    0xdac(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
push   %rbx
push   %r11
push   %r10
push   %rbp
push   %r13
push   %r12
push   %r15
push   0x48(%rsp)
push   0x58(%rsp)
push   0x68(%rsp)
push   0x78(%rsp)
push   0x88(%rsp)
push   0x98(%rsp)
push   0xa8(%rsp)
push   0xb8(%rsp)
push   0xc8(%rsp)
push   0xd8(%rsp)
push   0xe8(%rsp)
push   0xf8(%rsp)
push   0x108(%rsp)
push   0x118(%rsp)
push   0x128(%rsp)
push   0x138(%rsp)
push   0x148(%rsp)
push   0x158(%rsp)
push   0x168(%rsp)
push   0x178(%rsp)
call   1040 <trace_printk@plt>
add    $0x1f8,%rsp
jmp    17e2 <ms_smi+0x6c2>
shr    $0x3,%rax
movabs $0x20c49ba5e353f7cf,%rcx
9b c4 20
mul    %rcx
shr    $0x4,%rdx
mov    (%rbx),%ecx
mov    0x4(%rbx),%r8d
mov    0x8(%rbx),%r9d
mov    0xc(%rbx),%eax
mov    %rax,0xa0(%rsp)
mov    0x10(%rbx),%eax
mov    %rax,0x98(%rsp)
mov    0x14(%rbx),%eax
mov    %rax,0x90(%rsp)
mov    0x18(%rbx),%eax
mov    %rax,0x88(%rsp)
mov    0x1c(%rbx),%eax
mov    %rax,0x80(%rsp)
mov    0x20(%rbx),%eax
mov    %rax,0x78(%rsp)
mov    0x24(%rbx),%eax
mov    %rax,0x70(%rsp)
mov    0x28(%rbx),%eax
mov    %rax,0x68(%rsp)
mov    0x2c(%rbx),%eax
mov    %rax,0x60(%rsp)
mov    0x30(%rbx),%eax
mov    %rax,0x58(%rsp)
mov    0x34(%rbx),%eax
mov    %rax,0x50(%rsp)
mov    0x38(%rbx),%eax
mov    %rax,0x48(%rsp)
mov    0x3c(%rbx),%eax
mov    %rax,0x40(%rsp)
mov    0x40(%rbx),%eax
mov    %rax,0x38(%rsp)
mov    0x44(%rbx),%eax
mov    %rax,0x30(%rsp)
mov    0x48(%rbx),%eax
mov    %rax,0x28(%rsp)
mov    0x4c(%rbx),%eax
mov    %rax,0x20(%rsp)
mov    0x50(%rbx),%eax
mov    %rax,0x18(%rsp)
mov    0x54(%rbx),%eax
mov    %rax,0x10(%rsp)
mov    0x58(%rbx),%eax
mov    %rax,0x8(%rsp)
mov    0x5c(%rbx),%eax
mov    %rax,0xd8(%rsp)
mov    0x60(%rbx),%eax
mov    %rax,0xd0(%rsp)
mov    0x64(%rbx),%eax
mov    %rax,0xc8(%rsp)
mov    0x68(%rbx),%eax
mov    %rax,0xc0(%rsp)
mov    0x6c(%rbx),%eax
mov    %rax,0xb8(%rsp)
mov    0x70(%rbx),%eax
mov    %rax,0xb0(%rsp)
mov    0x74(%rbx),%eax
mov    %rax,0xa8(%rsp)
mov    0x78(%rbx),%eax
mov    %rax,0x110(%rsp)
mov    0x7c(%rbx),%eax
mov    %rax,0x108(%rsp)
mov    0x80(%rbx),%eax
mov    %rax,0x100(%rsp)
mov    0x84(%rbx),%eax
mov    %rax,0xf8(%rsp)
mov    0x88(%rbx),%eax
mov    %rax,0xf0(%rsp)
mov    0x8c(%rbx),%eax
mov    %rax,0xe8(%rsp)
mov    0x90(%rbx),%eax
mov    %rax,0xe0(%rsp)
mov    0x94(%rbx),%r13d
mov    0x98(%rbx),%ebp
mov    0x9c(%rbx),%r10d
mov    0xa0(%rbx),%r11d
mov    0xa4(%rbx),%r15d
mov    0xa8(%rbx),%r12d
mov    0xac(%rbx),%ebx
sub    $0x8,%rsp
lea    0xc3a(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
push   %rbx
push   %r12
push   %r15
push   %r11
push   %r10
push   %rbp
push   %r13
push   0x120(%rsp)
push   0x130(%rsp)
push   0x140(%rsp)
push   0x150(%rsp)
push   0x160(%rsp)
push   0x170(%rsp)
push   0x180(%rsp)
push   0x120(%rsp)
push   0x130(%rsp)
push   0x140(%rsp)
push   0x150(%rsp)
push   0x160(%rsp)
push   0x170(%rsp)
push   0x180(%rsp)
push   0xb8(%rsp)
push   0xc8(%rsp)
push   0xd8(%rsp)
push   0xe8(%rsp)
push   0xf8(%rsp)
push   0x108(%rsp)
push   0x118(%rsp)
push   0x128(%rsp)
push   0x138(%rsp)
push   0x148(%rsp)
push   0x158(%rsp)
push   0x168(%rsp)
push   0x178(%rsp)
push   0x188(%rsp)
push   0x198(%rsp)
push   0x1a8(%rsp)
push   0x1b8(%rsp)
push   0x1c8(%rsp)
push   0x1d8(%rsp)
push   0x1e8(%rsp)
call   1040 <trace_printk@plt>
add    $0x268,%rsp
jmp    17e2 <ms_smi+0x6c2>
shr    $0x3,%rax
movabs $0x20c49ba5e353f7cf,%rcx
9b c4 20
mul    %rcx
shr    $0x4,%rdx
mov    (%rbx),%ecx
mov    0x4(%rbx),%r8d
mov    0x8(%rbx),%r9d
mov    0xc(%rbx),%eax
mov    %rax,0xa0(%rsp)
mov    0x10(%rbx),%eax
mov    %rax,0x98(%rsp)
mov    0x14(%rbx),%eax
mov    %rax,0x90(%rsp)
mov    0x18(%rbx),%eax
mov    %rax,0x88(%rsp)
mov    0x1c(%rbx),%eax
mov    %rax,0x80(%rsp)
mov    0x20(%rbx),%eax
mov    %rax,0x78(%rsp)
mov    0x24(%rbx),%eax
mov    %rax,0x70(%rsp)
mov    0x28(%rbx),%eax
mov    %rax,0x68(%rsp)
mov    0x2c(%rbx),%eax
mov    %rax,0x60(%rsp)
mov    0x30(%rbx),%eax
mov    %rax,0x58(%rsp)
mov    0x34(%rbx),%eax
mov    %rax,0x50(%rsp)
mov    0x38(%rbx),%eax
mov    %rax,0x48(%rsp)
mov    0x3c(%rbx),%eax
mov    %rax,0x40(%rsp)
mov    0x40(%rbx),%eax
mov    %rax,0x38(%rsp)
mov    0x44(%rbx),%eax
mov    %rax,0x30(%rsp)
mov    0x48(%rbx),%eax
mov    %rax,0x28(%rsp)
mov    0x4c(%rbx),%eax
mov    %rax,0x20(%rsp)
mov    0x50(%rbx),%eax
mov    %rax,0x18(%rsp)
mov    0x54(%rbx),%eax
mov    %rax,0x10(%rsp)
mov    0x58(%rbx),%eax
mov    %rax,0x8(%rsp)
mov    0x5c(%rbx),%eax
mov    %rax,0xd8(%rsp)
mov    0x60(%rbx),%eax
mov    %rax,0xd0(%rsp)
mov    0x64(%rbx),%eax
mov    %rax,0xc8(%rsp)
mov    0x68(%rbx),%eax
mov    %rax,0xc0(%rsp)
mov    0x6c(%rbx),%eax
mov    %rax,0xb8(%rsp)
mov    0x70(%rbx),%eax
mov    %rax,0xb0(%rsp)
mov    0x74(%rbx),%eax
mov    %rax,0xa8(%rsp)
mov    0x78(%rbx),%r12d
mov    0x7c(%rbx),%r13d
mov    0x80(%rbx),%ebp
mov    0x84(%rbx),%r10d
mov    0x88(%rbx),%r11d
mov    0x8c(%rbx),%r15d
mov    0x90(%rbx),%ebx
lea    0x964(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
push   %rbx
push   %r15
push   %r11
push   %r10
push   %rbp
push   %r13
push   %r12
push   0xe0(%rsp)
push   0xf0(%rsp)
push   0x100(%rsp)
push   0x110(%rsp)
push   0x120(%rsp)
push   0x130(%rsp)
push   0x140(%rsp)
push   0x78(%rsp)
push   0x88(%rsp)
push   0x98(%rsp)
push   0xa8(%rsp)
push   0xb8(%rsp)
push   0xc8(%rsp)
push   0xd8(%rsp)
push   0xe8(%rsp)
push   0xf8(%rsp)
push   0x108(%rsp)
push   0x118(%rsp)
push   0x128(%rsp)
push   0x138(%rsp)
push   0x148(%rsp)
push   0x158(%rsp)
push   0x168(%rsp)
push   0x178(%rsp)
push   0x188(%rsp)
push   0x198(%rsp)
push   0x1a8(%rsp)
call   1040 <trace_printk@plt>
add    $0x228,%rsp
jmp    17e2 <ms_smi+0x6c2>
add    $0x118,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [102 x i8] c"%5lu.%06lu,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\0A\00"
@.str.1 = [123 x i8] c"%5lu.%06lu,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\0A\00"
@.str.2 = [144 x i8] c"%5lu.%06lu,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\0A\00"
define void @ms_smi(i64 %0, i8 zeroext %1, i32* %2) {
%4 = alloca i64
%5 = alloca i8
%6 = alloca i32*
%7 = alloca i64
store i64 %0, i64* %4
store i8 %1, i8* %5
store i32* %2, i32** %6
%8 = load i64, i64* %4
%9 = call i64 @do_div(i64 %8, i32 1000000000)
store i64 %9, i64* %7
%10 = load i8, i8* %5
%11 = zext i8 %10 to i32
switch i32 %11, label %360 [
i32 30, label %12
i32 37, label %107
i32 44, label %223
]
12: ; preds = %3
%13 = load i64, i64* %4
%14 = load i64, i64* %7
%15 = udiv i64 %14, 1000
%16 = load i32*, i32** %6
%17 = getelementptr inbounds i32, i32* %16, i64 0
%18 = load i32, i32* %17
%19 = load i32*, i32** %6
%20 = getelementptr inbounds i32, i32* %19, i64 1
%21 = load i32, i32* %20
%22 = load i32*, i32** %6
%23 = getelementptr inbounds i32, i32* %22, i64 2
%24 = load i32, i32* %23
%25 = load i32*, i32** %6
%26 = getelementptr inbounds i32, i32* %25, i64 3
%27 = load i32, i32* %26
%28 = load i32*, i32** %6
%29 = getelementptr inbounds i32, i32* %28, i64 4
%30 = load i32, i32* %29
%31 = load i32*, i32** %6
%32 = getelementptr inbounds i32, i32* %31, i64 5
%33 = load i32, i32* %32
%34 = load i32*, i32** %6
%35 = getelementptr inbounds i32, i32* %34, i64 6
%36 = load i32, i32* %35
%37 = load i32*, i32** %6
%38 = getelementptr inbounds i32, i32* %37, i64 7
%39 = load i32, i32* %38
%40 = load i32*, i32** %6
%41 = getelementptr inbounds i32, i32* %40, i64 8
%42 = load i32, i32* %41
%43 = load i32*, i32** %6
%44 = getelementptr inbounds i32, i32* %43, i64 9
%45 = load i32, i32* %44
%46 = load i32*, i32** %6
%47 = getelementptr inbounds i32, i32* %46, i64 10
%48 = load i32, i32* %47
%49 = load i32*, i32** %6
%50 = getelementptr inbounds i32, i32* %49, i64 11
%51 = load i32, i32* %50
%52 = load i32*, i32** %6
%53 = getelementptr inbounds i32, i32* %52, i64 12
%54 = load i32, i32* %53
%55 = load i32*, i32** %6
%56 = getelementptr inbounds i32, i32* %55, i64 13
%57 = load i32, i32* %56
%58 = load i32*, i32** %6
%59 = getelementptr inbounds i32, i32* %58, i64 14
%60 = load i32, i32* %59
%61 = load i32*, i32** %6
%62 = getelementptr inbounds i32, i32* %61, i64 15
%63 = load i32, i32* %62
%64 = load i32*, i32** %6
%65 = getelementptr inbounds i32, i32* %64, i64 16
%66 = load i32, i32* %65
%67 = load i32*, i32** %6
%68 = getelementptr inbounds i32, i32* %67, i64 17
%69 = load i32, i32* %68
%70 = load i32*, i32** %6
%71 = getelementptr inbounds i32, i32* %70, i64 18
%72 = load i32, i32* %71
%73 = load i32*, i32** %6
%74 = getelementptr inbounds i32, i32* %73, i64 19
%75 = load i32, i32* %74
%76 = load i32*, i32** %6
%77 = getelementptr inbounds i32, i32* %76, i64 20
%78 = load i32, i32* %77
%79 = load i32*, i32** %6
%80 = getelementptr inbounds i32, i32* %79, i64 21
%81 = load i32, i32* %80
%82 = load i32*, i32** %6
%83 = getelementptr inbounds i32, i32* %82, i64 22
%84 = load i32, i32* %83
%85 = load i32*, i32** %6
%86 = getelementptr inbounds i32, i32* %85, i64 23
%87 = load i32, i32* %86
%88 = load i32*, i32** %6
%89 = getelementptr inbounds i32, i32* %88, i64 24
%90 = load i32, i32* %89
%91 = load i32*, i32** %6
%92 = getelementptr inbounds i32, i32* %91, i64 25
%93 = load i32, i32* %92
%94 = load i32*, i32** %6
%95 = getelementptr inbounds i32, i32* %94, i64 26
%96 = load i32, i32* %95
%97 = load i32*, i32** %6
%98 = getelementptr inbounds i32, i32* %97, i64 27
%99 = load i32, i32* %98
%100 = load i32*, i32** %6
%101 = getelementptr inbounds i32, i32* %100, i64 28
%102 = load i32, i32* %101
%103 = load i32*, i32** %6
%104 = getelementptr inbounds i32, i32* %103, i64 29
%105 = load i32, i32* %104
%106 = call i32 (i8*, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) @trace_printk(i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.str, i64 0, i64 0), i64 %13, i64 %15, i32 %18, i32 %21, i32 %24, i32 %27, i32 %30, i32 %33, i32 %36, i32 %39, i32 %42, i32 %45, i32 %48, i32 %51, i32 %54, i32 %57, i32 %60, i32 %63, i32 %66, i32 %69, i32 %72, i32 %75, i32 %78, i32 %81, i32 %84, i32 %87, i32 %90, i32 %93, i32 %96, i32 %99, i32 %102, i32 %105)
br label %360
107: ; preds = %3
%108 = load i64, i64* %4
%109 = load i64, i64* %7
%110 = udiv i64 %109, 1000
%111 = load i32*, i32** %6
%112 = getelementptr inbounds i32, i32* %111, i64 0
%113 = load i32, i32* %112
%114 = load i32*, i32** %6
%115 = getelementptr inbounds i32, i32* %114, i64 1
%116 = load i32, i32* %115
%117 = load i32*, i32** %6
%118 = getelementptr inbounds i32, i32* %117, i64 2
%119 = load i32, i32* %118
%120 = load i32*, i32** %6
%121 = getelementptr inbounds i32, i32* %120, i64 3
%122 = load i32, i32* %121
%123 = load i32*, i32** %6
%124 = getelementptr inbounds i32, i32* %123, i64 4
%125 = load i32, i32* %124
%126 = load i32*, i32** %6
%127 = getelementptr inbounds i32, i32* %126, i64 5
%128 = load i32, i32* %127
%129 = load i32*, i32** %6
%130 = getelementptr inbounds i32, i32* %129, i64 6
%131 = load i32, i32* %130
%132 = load i32*, i32** %6
%133 = getelementptr inbounds i32, i32* %132, i64 7
%134 = load i32, i32* %133
%135 = load i32*, i32** %6
%136 = getelementptr inbounds i32, i32* %135, i64 8
%137 = load i32, i32* %136
%138 = load i32*, i32** %6
%139 = getelementptr inbounds i32, i32* %138, i64 9
%140 = load i32, i32* %139
%141 = load i32*, i32** %6
%142 = getelementptr inbounds i32, i32* %141, i64 10
%143 = load i32, i32* %142
%144 = load i32*, i32** %6
%145 = getelementptr inbounds i32, i32* %144, i64 11
%146 = load i32, i32* %145
%147 = load i32*, i32** %6
%148 = getelementptr inbounds i32, i32* %147, i64 12
%149 = load i32, i32* %148
%150 = load i32*, i32** %6
%151 = getelementptr inbounds i32, i32* %150, i64 13
%152 = load i32, i32* %151
%153 = load i32*, i32** %6
%154 = getelementptr inbounds i32, i32* %153, i64 14
%155 = load i32, i32* %154
%156 = load i32*, i32** %6
%157 = getelementptr inbounds i32, i32* %156, i64 15
%158 = load i32, i32* %157
%159 = load i32*, i32** %6
%160 = getelementptr inbounds i32, i32* %159, i64 16
%161 = load i32, i32* %160
%162 = load i32*, i32** %6
%163 = getelementptr inbounds i32, i32* %162, i64 17
%164 = load i32, i32* %163
%165 = load i32*, i32** %6
%166 = getelementptr inbounds i32, i32* %165, i64 18
%167 = load i32, i32* %166
%168 = load i32*, i32** %6
%169 = getelementptr inbounds i32, i32* %168, i64 19
%170 = load i32, i32* %169
%171 = load i32*, i32** %6
%172 = getelementptr inbounds i32, i32* %171, i64 20
%173 = load i32, i32* %172
%174 = load i32*, i32** %6
%175 = getelementptr inbounds i32, i32* %174, i64 21
%176 = load i32, i32* %175
%177 = load i32*, i32** %6
%178 = getelementptr inbounds i32, i32* %177, i64 22
%179 = load i32, i32* %178
%180 = load i32*, i32** %6
%181 = getelementptr inbounds i32, i32* %180, i64 23
%182 = load i32, i32* %181
%183 = load i32*, i32** %6
%184 = getelementptr inbounds i32, i32* %183, i64 24
%185 = load i32, i32* %184
%186 = load i32*, i32** %6
%187 = getelementptr inbounds i32, i32* %186, i64 25
%188 = load i32, i32* %187
%189 = load i32*, i32** %6
%190 = getelementptr inbounds i32, i32* %189, i64 26
%191 = load i32, i32* %190
%192 = load i32*, i32** %6
%193 = getelementptr inbounds i32, i32* %192, i64 27
%194 = load i32, i32* %193
%195 = load i32*, i32** %6
%196 = getelementptr inbounds i32, i32* %195, i64 28
%197 = load i32, i32* %196
%198 = load i32*, i32** %6
%199 = getelementptr inbounds i32, i32* %198, i64 29
%200 = load i32, i32* %199
%201 = load i32*, i32** %6
%202 = getelementptr inbounds i32, i32* %201, i64 30
%203 = load i32, i32* %202
%204 = load i32*, i32** %6
%205 = getelementptr inbounds i32, i32* %204, i64 31
%206 = load i32, i32* %205
%207 = load i32*, i32** %6
%208 = getelementptr inbounds i32, i32* %207, i64 32
%209 = load i32, i32* %208
%210 = load i32*, i32** %6
%211 = getelementptr inbounds i32, i32* %210, i64 33
%212 = load i32, i32* %211
%213 = load i32*, i32** %6
%214 = getelementptr inbounds i32, i32* %213, i64 34
%215 = load i32, i32* %214
%216 = load i32*, i32** %6
%217 = getelementptr inbounds i32, i32* %216, i64 35
%218 = load i32, i32* %217
%219 = load i32*, i32** %6
%220 = getelementptr inbounds i32, i32* %219, i64 36
%221 = load i32, i32* %220
%222 = call i32 (i8*, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) @trace_printk(i8* getelementptr inbounds ([123 x i8], [123 x i8]* @.str.1, i64 0, i64 0), i64 %108, i64 %110, i32 %113, i32 %116, i32 %119, i32 %122, i32 %125, i32 %128, i32 %131, i32 %134, i32 %137, i32 %140, i32 %143, i32 %146, i32 %149, i32 %152, i32 %155, i32 %158, i32 %161, i32 %164, i32 %167, i32 %170, i32 %173, i32 %176, i32 %179, i32 %182, i32 %185, i32 %188, i32 %191, i32 %194, i32 %197, i32 %200, i32 %203, i32 %206, i32 %209, i32 %212, i32 %215, i32 %218, i32 %221)
br label %360
223: ; preds = %3
%224 = load i64, i64* %4
%225 = load i64, i64* %7
%226 = udiv i64 %225, 1000
%227 = load i32*, i32** %6
%228 = getelementptr inbounds i32, i32* %227, i64 0
%229 = load i32, i32* %228
%230 = load i32*, i32** %6
%231 = getelementptr inbounds i32, i32* %230, i64 1
%232 = load i32, i32* %231
%233 = load i32*, i32** %6
%234 = getelementptr inbounds i32, i32* %233, i64 2
%235 = load i32, i32* %234
%236 = load i32*, i32** %6
%237 = getelementptr inbounds i32, i32* %236, i64 3
%238 = load i32, i32* %237
%239 = load i32*, i32** %6
%240 = getelementptr inbounds i32, i32* %239, i64 4
%241 = load i32, i32* %240
%242 = load i32*, i32** %6
%243 = getelementptr inbounds i32, i32* %242, i64 5
%244 = load i32, i32* %243
%245 = load i32*, i32** %6
%246 = getelementptr inbounds i32, i32* %245, i64 6
%247 = load i32, i32* %246
%248 = load i32*, i32** %6
%249 = getelementptr inbounds i32, i32* %248, i64 7
%250 = load i32, i32* %249
%251 = load i32*, i32** %6
%252 = getelementptr inbounds i32, i32* %251, i64 8
%253 = load i32, i32* %252
%254 = load i32*, i32** %6
%255 = getelementptr inbounds i32, i32* %254, i64 9
%256 = load i32, i32* %255
%257 = load i32*, i32** %6
%258 = getelementptr inbounds i32, i32* %257, i64 10
%259 = load i32, i32* %258
%260 = load i32*, i32** %6
%261 = getelementptr inbounds i32, i32* %260, i64 11
%262 = load i32, i32* %261
%263 = load i32*, i32** %6
%264 = getelementptr inbounds i32, i32* %263, i64 12
%265 = load i32, i32* %264
%266 = load i32*, i32** %6
%267 = getelementptr inbounds i32, i32* %266, i64 13
%268 = load i32, i32* %267
%269 = load i32*, i32** %6
%270 = getelementptr inbounds i32, i32* %269, i64 14
%271 = load i32, i32* %270
%272 = load i32*, i32** %6
%273 = getelementptr inbounds i32, i32* %272, i64 15
%274 = load i32, i32* %273
%275 = load i32*, i32** %6
%276 = getelementptr inbounds i32, i32* %275, i64 16
%277 = load i32, i32* %276
%278 = load i32*, i32** %6
%279 = getelementptr inbounds i32, i32* %278, i64 17
%280 = load i32, i32* %279
%281 = load i32*, i32** %6
%282 = getelementptr inbounds i32, i32* %281, i64 18
%283 = load i32, i32* %282
%284 = load i32*, i32** %6
%285 = getelementptr inbounds i32, i32* %284, i64 19
%286 = load i32, i32* %285
%287 = load i32*, i32** %6
%288 = getelementptr inbounds i32, i32* %287, i64 20
%289 = load i32, i32* %288
%290 = load i32*, i32** %6
%291 = getelementptr inbounds i32, i32* %290, i64 21
%292 = load i32, i32* %291
%293 = load i32*, i32** %6
%294 = getelementptr inbounds i32, i32* %293, i64 22
%295 = load i32, i32* %294
%296 = load i32*, i32** %6
%297 = getelementptr inbounds i32, i32* %296, i64 23
%298 = load i32, i32* %297
%299 = load i32*, i32** %6
%300 = getelementptr inbounds i32, i32* %299, i64 24
%301 = load i32, i32* %300
%302 = load i32*, i32** %6
%303 = getelementptr inbounds i32, i32* %302, i64 25
%304 = load i32, i32* %303
%305 = load i32*, i32** %6
%306 = getelementptr inbounds i32, i32* %305, i64 26
%307 = load i32, i32* %306
%308 = load i32*, i32** %6
%309 = getelementptr inbounds i32, i32* %308, i64 27
%310 = load i32, i32* %309
%311 = load i32*, i32** %6
%312 = getelementptr inbounds i32, i32* %311, i64 28
%313 = load i32, i32* %312
%314 = load i32*, i32** %6
%315 = getelementptr inbounds i32, i32* %314, i64 29
%316 = load i32, i32* %315
%317 = load i32*, i32** %6
%318 = getelementptr inbounds i32, i32* %317, i64 30
%319 = load i32, i32* %318
%320 = load i32*, i32** %6
%321 = getelementptr inbounds i32, i32* %320, i64 31
%322 = load i32, i32* %321
%323 = load i32*, i32** %6
%324 = getelementptr inbounds i32, i32* %323, i64 32
%325 = load i32, i32* %324
%326 = load i32*, i32** %6
%327 = getelementptr inbounds i32, i32* %326, i64 33
%328 = load i32, i32* %327
%329 = load i32*, i32** %6
%330 = getelementptr inbounds i32, i32* %329, i64 34
%331 = load i32, i32* %330
%332 = load i32*, i32** %6
%333 = getelementptr inbounds i32, i32* %332, i64 35
%334 = load i32, i32* %333
%335 = load i32*, i32** %6
%336 = getelementptr inbounds i32, i32* %335, i64 36
%337 = load i32, i32* %336
%338 = load i32*, i32** %6
%339 = getelementptr inbounds i32, i32* %338, i64 37
%340 = load i32, i32* %339
%341 = load i32*, i32** %6
%342 = getelementptr inbounds i32, i32* %341, i64 38
%343 = load i32, i32* %342
%344 = load i32*, i32** %6
%345 = getelementptr inbounds i32, i32* %344, i64 39
%346 = load i32, i32* %345
%347 = load i32*, i32** %6
%348 = getelementptr inbounds i32, i32* %347, i64 40
%349 = load i32, i32* %348
%350 = load i32*, i32** %6
%351 = getelementptr inbounds i32, i32* %350, i64 41
%352 = load i32, i32* %351
%353 = load i32*, i32** %6
%354 = getelementptr inbounds i32, i32* %353, i64 42
%355 = load i32, i32* %354
%356 = load i32*, i32** %6
%357 = getelementptr inbounds i32, i32* %356, i64 43
%358 = load i32, i32* %357
%359 = call i32 (i8*, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) @trace_printk(i8* getelementptr inbounds ([144 x i8], [144 x i8]* @.str.2, i64 0, i64 0), i64 %224, i64 %226, i32 %229, i32 %232, i32 %235, i32 %238, i32 %241, i32 %244, i32 %247, i32 %250, i32 %253, i32 %256, i32 %259, i32 %262, i32 %265, i32 %268, i32 %271, i32 %274, i32 %277, i32 %280, i32 %283, i32 %286, i32 %289, i32 %292, i32 %295, i32 %298, i32 %301, i32 %304, i32 %307, i32 %310, i32 %313, i32 %316, i32 %319, i32 %322, i32 %325, i32 %328, i32 %331, i32 %334, i32 %337, i32 %340, i32 %343, i32 %346, i32 %349, i32 %352, i32 %355, i32 %358)
br label %360
360: ; preds = %3, %223, %107, %12
ret void
}

LLVM IR (-O2):
@.str = [102 x i8] c"%5lu.%06lu,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\0A\00"
@.str.1 = [123 x i8] c"%5lu.%06lu,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\0A\00"
@.str.2 = [144 x i8] c"%5lu.%06lu,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x,%x\0A\00"
define void @ms_smi(i64 %0, i8 zeroext %1, i32* %2) {
%4 = tail call i64 @do_div(i64 %0, i32 1000000000)
switch i8 %1, label %233 [
i8 30, label %5
i8 37, label %67
i8 44, label %143
]
5: ; preds = %3
%6 = udiv i64 %4, 1000
%7 = load i32, i32* %2
%8 = getelementptr inbounds i32, i32* %2, i64 1
%9 = load i32, i32* %8
%10 = getelementptr inbounds i32, i32* %2, i64 2
%11 = load i32, i32* %10
%12 = getelementptr inbounds i32, i32* %2, i64 3
%13 = load i32, i32* %12
%14 = getelementptr inbounds i32, i32* %2, i64 4
%15 = load i32, i32* %14
%16 = getelementptr inbounds i32, i32* %2, i64 5
%17 = load i32, i32* %16
%18 = getelementptr inbounds i32, i32* %2, i64 6
%19 = load i32, i32* %18
%20 = getelementptr inbounds i32, i32* %2, i64 7
%21 = load i32, i32* %20
%22 = getelementptr inbounds i32, i32* %2, i64 8
%23 = load i32, i32* %22
%24 = getelementptr inbounds i32, i32* %2, i64 9
%25 = load i32, i32* %24
%26 = getelementptr inbounds i32, i32* %2, i64 10
%27 = load i32, i32* %26
%28 = getelementptr inbounds i32, i32* %2, i64 11
%29 = load i32, i32* %28
%30 = getelementptr inbounds i32, i32* %2, i64 12
%31 = load i32, i32* %30
%32 = getelementptr inbounds i32, i32* %2, i64 13
%33 = load i32, i32* %32
%34 = getelementptr inbounds i32, i32* %2, i64 14
%35 = load i32, i32* %34
%36 = getelementptr inbounds i32, i32* %2, i64 15
%37 = load i32, i32* %36
%38 = getelementptr inbounds i32, i32* %2, i64 16
%39 = load i32, i32* %38
%40 = getelementptr inbounds i32, i32* %2, i64 17
%41 = load i32, i32* %40
%42 = getelementptr inbounds i32, i32* %2, i64 18
%43 = load i32, i32* %42
%44 = getelementptr inbounds i32, i32* %2, i64 19
%45 = load i32, i32* %44
%46 = getelementptr inbounds i32, i32* %2, i64 20
%47 = load i32, i32* %46
%48 = getelementptr inbounds i32, i32* %2, i64 21
%49 = load i32, i32* %48
%50 = getelementptr inbounds i32, i32* %2, i64 22
%51 = load i32, i32* %50
%52 = getelementptr inbounds i32, i32* %2, i64 23
%53 = load i32, i32* %52
%54 = getelementptr inbounds i32, i32* %2, i64 24
%55 = load i32, i32* %54
%56 = getelementptr inbounds i32, i32* %2, i64 25
%57 = load i32, i32* %56
%58 = getelementptr inbounds i32, i32* %2, i64 26
%59 = load i32, i32* %58
%60 = getelementptr inbounds i32, i32* %2, i64 27
%61 = load i32, i32* %60
%62 = getelementptr inbounds i32, i32* %2, i64 28
%63 = load i32, i32* %62
%64 = getelementptr inbounds i32, i32* %2, i64 29
%65 = load i32, i32* %64
%66 = tail call i32 (i8*, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) @trace_printk(i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.str, i64 0, i64 0), i64 %0, i64 %6, i32 %7, i32 %9, i32 %11, i32 %13, i32 %15, i32 %17, i32 %19, i32 %21, i32 %23, i32 %25, i32 %27, i32 %29, i32 %31, i32 %33, i32 %35, i32 %37, i32 %39, i32 %41, i32 %43, i32 %45, i32 %47, i32 %49, i32 %51, i32 %53, i32 %55, i32 %57, i32 %59, i32 %61, i32 %63, i32 %65)
br label %233
67: ; preds = %3
%68 = udiv i64 %4, 1000
%69 = load i32, i32* %2
%70 = getelementptr inbounds i32, i32* %2, i64 1
%71 = load i32, i32* %70
%72 = getelementptr inbounds i32, i32* %2, i64 2
%73 = load i32, i32* %72
%74 = getelementptr inbounds i32, i32* %2, i64 3
%75 = load i32, i32* %74
%76 = getelementptr inbounds i32, i32* %2, i64 4
%77 = load i32, i32* %76
%78 = getelementptr inbounds i32, i32* %2, i64 5
%79 = load i32, i32* %78
%80 = getelementptr inbounds i32, i32* %2, i64 6
%81 = load i32, i32* %80
%82 = getelementptr inbounds i32, i32* %2, i64 7
%83 = load i32, i32* %82
%84 = getelementptr inbounds i32, i32* %2, i64 8
%85 = load i32, i32* %84
%86 = getelementptr inbounds i32, i32* %2, i64 9
%87 = load i32, i32* %86
%88 = getelementptr inbounds i32, i32* %2, i64 10
%89 = load i32, i32* %88
%90 = getelementptr inbounds i32, i32* %2, i64 11
%91 = load i32, i32* %90
%92 = getelementptr inbounds i32, i32* %2, i64 12
%93 = load i32, i32* %92
%94 = getelementptr inbounds i32, i32* %2, i64 13
%95 = load i32, i32* %94
%96 = getelementptr inbounds i32, i32* %2, i64 14
%97 = load i32, i32* %96
%98 = getelementptr inbounds i32, i32* %2, i64 15
%99 = load i32, i32* %98
%100 = getelementptr inbounds i32, i32* %2, i64 16
%101 = load i32, i32* %100
%102 = getelementptr inbounds i32, i32* %2, i64 17
%103 = load i32, i32* %102
%104 = getelementptr inbounds i32, i32* %2, i64 18
%105 = load i32, i32* %104
%106 = getelementptr inbounds i32, i32* %2, i64 19
%107 = load i32, i32* %106
%108 = getelementptr inbounds i32, i32* %2, i64 20
%109 = load i32, i32* %108
%110 = getelementptr inbounds i32, i32* %2, i64 21
%111 = load i32, i32* %110
%112 = getelementptr inbounds i32, i32* %2, i64 22
%113 = load i32, i32* %112
%114 = getelementptr inbounds i32, i32* %2, i64 23
%115 = load i32, i32* %114
%116 = getelementptr inbounds i32, i32* %2, i64 24
%117 = load i32, i32* %116
%118 = getelementptr inbounds i32, i32* %2, i64 25
%119 = load i32, i32* %118
%120 = getelementptr inbounds i32, i32* %2, i64 26
%121 = load i32, i32* %120
%122 = getelementptr inbounds i32, i32* %2, i64 27
%123 = load i32, i32* %122
%124 = getelementptr inbounds i32, i32* %2, i64 28
%125 = load i32, i32* %124
%126 = getelementptr inbounds i32, i32* %2, i64 29
%127 = load i32, i32* %126
%128 = getelementptr inbounds i32, i32* %2, i64 30
%129 = load i32, i32* %128
%130 = getelementptr inbounds i32, i32* %2, i64 31
%131 = load i32, i32* %130
%132 = getelementptr inbounds i32, i32* %2, i64 32
%133 = load i32, i32* %132
%134 = getelementptr inbounds i32, i32* %2, i64 33
%135 = load i32, i32* %134
%136 = getelementptr inbounds i32, i32* %2, i64 34
%137 = load i32, i32* %136
%138 = getelementptr inbounds i32, i32* %2, i64 35
%139 = load i32, i32* %138
%140 = getelementptr inbounds i32, i32* %2, i64 36
%141 = load i32, i32* %140
%142 = tail call i32 (i8*, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) @trace_printk(i8* getelementptr inbounds ([123 x i8], [123 x i8]* @.str.1, i64 0, i64 0), i64 %0, i64 %68, i32 %69, i32 %71, i32 %73, i32 %75, i32 %77, i32 %79, i32 %81, i32 %83, i32 %85, i32 %87, i32 %89, i32 %91, i32 %93, i32 %95, i32 %97, i32 %99, i32 %101, i32 %103, i32 %105, i32 %107, i32 %109, i32 %111, i32 %113, i32 %115, i32 %117, i32 %119, i32 %121, i32 %123, i32 %125, i32 %127, i32 %129, i32 %131, i32 %133, i32 %135, i32 %137, i32 %139, i32 %141)
br label %233
143: ; preds = %3
%144 = udiv i64 %4, 1000
%145 = load i32, i32* %2
%146 = getelementptr inbounds i32, i32* %2, i64 1
%147 = load i32, i32* %146
%148 = getelementptr inbounds i32, i32* %2, i64 2
%149 = load i32, i32* %148
%150 = getelementptr inbounds i32, i32* %2, i64 3
%151 = load i32, i32* %150
%152 = getelementptr inbounds i32, i32* %2, i64 4
%153 = load i32, i32* %152
%154 = getelementptr inbounds i32, i32* %2, i64 5
%155 = load i32, i32* %154
%156 = getelementptr inbounds i32, i32* %2, i64 6
%157 = load i32, i32* %156
%158 = getelementptr inbounds i32, i32* %2, i64 7
%159 = load i32, i32* %158
%160 = getelementptr inbounds i32, i32* %2, i64 8
%161 = load i32, i32* %160
%162 = getelementptr inbounds i32, i32* %2, i64 9
%163 = load i32, i32* %162
%164 = getelementptr inbounds i32, i32* %2, i64 10
%165 = load i32, i32* %164
%166 = getelementptr inbounds i32, i32* %2, i64 11
%167 = load i32, i32* %166
%168 = getelementptr inbounds i32, i32* %2, i64 12
%169 = load i32, i32* %168
%170 = getelementptr inbounds i32, i32* %2, i64 13
%171 = load i32, i32* %170
%172 = getelementptr inbounds i32, i32* %2, i64 14
%173 = load i32, i32* %172
%174 = getelementptr inbounds i32, i32* %2, i64 15
%175 = load i32, i32* %174
%176 = getelementptr inbounds i32, i32* %2, i64 16
%177 = load i32, i32* %176
%178 = getelementptr inbounds i32, i32* %2, i64 17
%179 = load i32, i32* %178
%180 = getelementptr inbounds i32, i32* %2, i64 18
%181 = load i32, i32* %180
%182 = getelementptr inbounds i32, i32* %2, i64 19
%183 = load i32, i32* %182
%184 = getelementptr inbounds i32, i32* %2, i64 20
%185 = load i32, i32* %184
%186 = getelementptr inbounds i32, i32* %2, i64 21
%187 = load i32, i32* %186
%188 = getelementptr inbounds i32, i32* %2, i64 22
%189 = load i32, i32* %188
%190 = getelementptr inbounds i32, i32* %2, i64 23
%191 = load i32, i32* %190
%192 = getelementptr inbounds i32, i32* %2, i64 24
%193 = load i32, i32* %192
%194 = getelementptr inbounds i32, i32* %2, i64 25
%195 = load i32, i32* %194
%196 = getelementptr inbounds i32, i32* %2, i64 26
%197 = load i32, i32* %196
%198 = getelementptr inbounds i32, i32* %2, i64 27
%199 = load i32, i32* %198
%200 = getelementptr inbounds i32, i32* %2, i64 28
%201 = load i32, i32* %200
%202 = getelementptr inbounds i32, i32* %2, i64 29
%203 = load i32, i32* %202
%204 = getelementptr inbounds i32, i32* %2, i64 30
%205 = load i32, i32* %204
%206 = getelementptr inbounds i32, i32* %2, i64 31
%207 = load i32, i32* %206
%208 = getelementptr inbounds i32, i32* %2, i64 32
%209 = load i32, i32* %208
%210 = getelementptr inbounds i32, i32* %2, i64 33
%211 = load i32, i32* %210
%212 = getelementptr inbounds i32, i32* %2, i64 34
%213 = load i32, i32* %212
%214 = getelementptr inbounds i32, i32* %2, i64 35
%215 = load i32, i32* %214
%216 = getelementptr inbounds i32, i32* %2, i64 36
%217 = load i32, i32* %216
%218 = getelementptr inbounds i32, i32* %2, i64 37
%219 = load i32, i32* %218
%220 = getelementptr inbounds i32, i32* %2, i64 38
%221 = load i32, i32* %220
%222 = getelementptr inbounds i32, i32* %2, i64 39
%223 = load i32, i32* %222
%224 = getelementptr inbounds i32, i32* %2, i64 40
%225 = load i32, i32* %224
%226 = getelementptr inbounds i32, i32* %2, i64 41
%227 = load i32, i32* %226
%228 = getelementptr inbounds i32, i32* %2, i64 42
%229 = load i32, i32* %228
%230 = getelementptr inbounds i32, i32* %2, i64 43
%231 = load i32, i32* %230
%232 = tail call i32 (i8*, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) @trace_printk(i8* getelementptr inbounds ([144 x i8], [144 x i8]* @.str.2, i64 0, i64 0), i64 %0, i64 %144, i32 %145, i32 %147, i32 %149, i32 %151, i32 %153, i32 %155, i32 %157, i32 %159, i32 %161, i32 %163, i32 %165, i32 %167, i32 %169, i32 %171, i32 %173, i32 %175, i32 %177, i32 %179, i32 %181, i32 %183, i32 %185, i32 %187, i32 %189, i32 %191, i32 %193, i32 %195, i32 %197, i32 %199, i32 %201, i32 %203, i32 %205, i32 %207, i32 %209, i32 %211, i32 %213, i32 %215, i32 %217, i32 %219, i32 %221, i32 %223, i32 %225, i32 %227, i32 %229, i32 %231)
br label %233
233: ; preds = %3, %143, %67, %5
ret void
}