int rerange_date_to_get_max_number_in_uint(unsigned int *m_code, int len,
                                           unsigned int **max_num) {
  int i0 = 0;
  int i1 = 0;
  int i2 = 0;
  int m_count[1024];
  int m_range[1024];
  int m_c_tmp;
  unsigned int m_rerange[1024];
  unsigned int m_tmp;
  unsigned int m_max[8];
  int same_range_count = 0;
  unsigned int m_last_range = 0;
  output_formated_uint32_data(m_code, len, 0, "Origin data");
  memcpy(m_rerange, m_code, sizeof(m_rerange));
  i0 = 0;
  while (i0 < len - 1) {
    i1 = i0 + 1;
    while (i1 < len) {
      if (m_rerange[i1] == 0) {
        printf("[%d]0x%02x\n", i0, m_rerange[i0]);
      }
      if (m_rerange[i0] > m_rerange[i1]) {
        m_tmp = m_rerange[i1];
        m_rerange[i1] = m_rerange[i0];
        m_rerange[i0] = m_tmp;
      }
      i1++;
    }
    i0++;
  }
  output_formated_uint32_data(m_rerange, len, 0, "Rerange Data");
  i0 = 0;
  i1 = 0;
  memset(m_count, 0x0, sizeof(m_count));
  while (i0 < len) {
    if (m_count[i1] == 0)
      m_count[i1] = 1;
    if (m_rerange[i0] == m_rerange[i0 + 1]) {
      m_count[i1]++;
    } else {
      i1++;
    }
    i0++;
  }
  i0 = 0;
  memcpy(m_range, m_count, sizeof(m_range));
  while (i0 < len - 1) {
    i1 = i0 + 1;
    while (i1 < len) {
      if (m_range[i0] == 0) {
        i1++;
        continue;
      }
      if (m_range[i0] < m_range[i1]) {
        m_c_tmp = m_range[i1];
        m_range[i1] = m_range[i0];
        m_range[i0] = m_c_tmp;
      }
      i1++;
    }
    i0++;
  }
  i2 = 0;
  printf("get max number: \n");
  while (i2 < (sizeof(m_max) / sizeof(m_max[0]))) {
    i0 = 0;
    i1 = 0;
    m_c_tmp = 0;
    m_last_range = 0;
    if (i2 > 0) {
      m_c_tmp = 0;
      same_range_count = 0;
      while (m_c_tmp < i2) {
        if (m_range[i2] == m_range[i2 - m_c_tmp - 1]) {
          same_range_count++;
        }
        m_c_tmp++;
      }
    }
    m_c_tmp = 0;
    while (i0 < len) {
      if (m_count[i0] == 0) {
        i0++;
        continue;
      }
      if (m_range[i2] == m_count[i0]) {
        if (same_range_count) {
          same_range_count--;
          i0++;
          continue;
        }
        while (i1 < i0) {
          m_c_tmp += m_count[i1];
          i1++;
        }
        m_last_range = m_count[i0];
        break;
      }
      i0++;
    }
    m_max[i2] = m_rerange[m_c_tmp];
    printf("m_rerange[%03d]: %02x, %03d || ", m_c_tmp, m_max[i2], m_range[i2]);
    if (i2 % 4 == 3)
      printf("\n");
    i2++;
  }
  printf("\n");
  memcpy(max_num, m_max, sizeof(m_max));
  return 0;
}


x86 assembly (clang, -O0):
<rerange_date_to_get_max_number_in_uint>:
push   %rbp
mov    %rsp,%rbp
sub    $0x3080,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x3074(%rbp)
movl   $0x0,-0x3078(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
xor    %edx,%edx
lea    0xe71(%rip),%rcx
mov    $0x0,%al
call   1030 <output_formated_uint32_data@plt>
lea    -0x3040(%rbp),%rdi
mov    -0x8(%rbp),%rsi
mov    $0x1000,%edx
call   1060 <memcpy@plt>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1276 <rerange_date_to_get_max_number_in_uint+0x136>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1268 <rerange_date_to_get_max_number_in_uint+0x128>
movslq -0x20(%rbp),%rax
cmpl   $0x0,-0x3040(%rbp,%rax,4)
jne    1206 <rerange_date_to_get_max_number_in_uint+0xc6>
mov    -0x1c(%rbp),%esi
movslq -0x1c(%rbp),%rax
mov    -0x3040(%rbp,%rax,4),%edx
lea    0xe0d(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movslq -0x1c(%rbp),%rax
mov    -0x3040(%rbp,%rax,4),%eax
movslq -0x20(%rbp),%rcx
cmp    -0x3040(%rbp,%rcx,4),%eax
jbe    125a <rerange_date_to_get_max_number_in_uint+0x11a>
movslq -0x20(%rbp),%rax
mov    -0x3040(%rbp,%rax,4),%eax
mov    %eax,-0x3044(%rbp)
movslq -0x1c(%rbp),%rax
mov    -0x3040(%rbp,%rax,4),%ecx
movslq -0x20(%rbp),%rax
mov    %ecx,-0x3040(%rbp,%rax,4)
mov    -0x3044(%rbp),%ecx
movslq -0x1c(%rbp),%rax
mov    %ecx,-0x3040(%rbp,%rax,4)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    11cc <rerange_date_to_get_max_number_in_uint+0x8c>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11b2 <rerange_date_to_get_max_number_in_uint+0x72>
lea    -0x3040(%rbp),%rdi
mov    -0xc(%rbp),%esi
xor    %edx,%edx
lea    0xd8f(%rip),%rcx
mov    $0x0,%al
call   1030 <output_formated_uint32_data@plt>
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x20(%rbp)
lea    -0x1030(%rbp),%rdi
xor    %esi,%esi
mov    $0x1000,%edx
call   1050 <memset@plt>
mov    -0x1c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1330 <rerange_date_to_get_max_number_in_uint+0x1f0>
movslq -0x20(%rbp),%rax
cmpl   $0x0,-0x1030(%rbp,%rax,4)
jne    12de <rerange_date_to_get_max_number_in_uint+0x19e>
movslq -0x20(%rbp),%rax
movl   $0x1,-0x1030(%rbp,%rax,4)
movslq -0x1c(%rbp),%rax
mov    -0x3040(%rbp,%rax,4),%eax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmp    -0x3040(%rbp,%rcx,4),%eax
jne    1319 <rerange_date_to_get_max_number_in_uint+0x1d9>
movslq -0x20(%rbp),%rax
mov    -0x1030(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x1030(%rbp,%rax,4)
jmp    1322 <rerange_date_to_get_max_number_in_uint+0x1e2>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    12b1 <rerange_date_to_get_max_number_in_uint+0x171>
movl   $0x0,-0x1c(%rbp)
lea    -0x2030(%rbp),%rdi
lea    -0x1030(%rbp),%rsi
mov    $0x1000,%edx
call   1060 <memcpy@plt>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1405 <rerange_date_to_get_max_number_in_uint+0x2c5>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    13f7 <rerange_date_to_get_max_number_in_uint+0x2b7>
movslq -0x1c(%rbp),%rax
cmpl   $0x0,-0x2030(%rbp,%rax,4)
jne    1395 <rerange_date_to_get_max_number_in_uint+0x255>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1369 <rerange_date_to_get_max_number_in_uint+0x229>
movslq -0x1c(%rbp),%rax
mov    -0x2030(%rbp,%rax,4),%eax
movslq -0x20(%rbp),%rcx
cmp    -0x2030(%rbp,%rcx,4),%eax
jge    13e9 <rerange_date_to_get_max_number_in_uint+0x2a9>
movslq -0x20(%rbp),%rax
mov    -0x2030(%rbp,%rax,4),%eax
mov    %eax,-0x2034(%rbp)
movslq -0x1c(%rbp),%rax
mov    -0x2030(%rbp,%rax,4),%ecx
movslq -0x20(%rbp),%rax
mov    %ecx,-0x2030(%rbp,%rax,4)
mov    -0x2034(%rbp),%ecx
movslq -0x1c(%rbp),%rax
mov    %ecx,-0x2030(%rbp,%rax,4)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1369 <rerange_date_to_get_max_number_in_uint+0x229>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    134f <rerange_date_to_get_max_number_in_uint+0x20f>
movl   $0x0,-0x24(%rbp)
lea    0xc12(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movslq -0x24(%rbp),%rax
cmp    $0x8,%rax
jae    160f <rerange_date_to_get_max_number_in_uint+0x4cf>
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x2034(%rbp)
movl   $0x0,-0x3078(%rbp)
cmpl   $0x0,-0x24(%rbp)
jle    14c6 <rerange_date_to_get_max_number_in_uint+0x386>
movl   $0x0,-0x2034(%rbp)
movl   $0x0,-0x3074(%rbp)
mov    -0x2034(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    14c1 <rerange_date_to_get_max_number_in_uint+0x381>
movslq -0x24(%rbp),%rax
mov    -0x2030(%rbp,%rax,4),%eax
mov    -0x24(%rbp),%ecx
sub    -0x2034(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
cmp    -0x2030(%rbp,%rcx,4),%eax
jne    14ad <rerange_date_to_get_max_number_in_uint+0x36d>
mov    -0x3074(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3074(%rbp)
mov    -0x2034(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2034(%rbp)
jmp    1468 <rerange_date_to_get_max_number_in_uint+0x328>
jmp    14c6 <rerange_date_to_get_max_number_in_uint+0x386>
movl   $0x0,-0x2034(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    159c <rerange_date_to_get_max_number_in_uint+0x45c>
movslq -0x1c(%rbp),%rax
cmpl   $0x0,-0x1030(%rbp,%rax,4)
jne    14fc <rerange_date_to_get_max_number_in_uint+0x3bc>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    14d0 <rerange_date_to_get_max_number_in_uint+0x390>
movslq -0x24(%rbp),%rax
mov    -0x2030(%rbp,%rax,4),%eax
movslq -0x1c(%rbp),%rcx
cmp    -0x1030(%rbp,%rcx,4),%eax
jne    158e <rerange_date_to_get_max_number_in_uint+0x44e>
cmpl   $0x0,-0x3074(%rbp)
je     1542 <rerange_date_to_get_max_number_in_uint+0x402>
mov    -0x3074(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x3074(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    14d0 <rerange_date_to_get_max_number_in_uint+0x390>
jmp    1547 <rerange_date_to_get_max_number_in_uint+0x407>
mov    -0x20(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1578 <rerange_date_to_get_max_number_in_uint+0x438>
movslq -0x20(%rbp),%rax
mov    -0x1030(%rbp,%rax,4),%eax
add    -0x2034(%rbp),%eax
mov    %eax,-0x2034(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1547 <rerange_date_to_get_max_number_in_uint+0x407>
movslq -0x1c(%rbp),%rax
mov    -0x1030(%rbp,%rax,4),%eax
mov    %eax,-0x3078(%rbp)
jmp    159c <rerange_date_to_get_max_number_in_uint+0x45c>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    14d0 <rerange_date_to_get_max_number_in_uint+0x390>
movslq -0x2034(%rbp),%rax
mov    -0x3040(%rbp,%rax,4),%ecx
movslq -0x24(%rbp),%rax
mov    %ecx,-0x3070(%rbp,%rax,4)
mov    -0x2034(%rbp),%esi
movslq -0x24(%rbp),%rax
mov    -0x3070(%rbp,%rax,4),%edx
movslq -0x24(%rbp),%rax
mov    -0x2030(%rbp,%rax,4),%ecx
lea    0xa5f(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x24(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x3,%edx
jne    1601 <rerange_date_to_get_max_number_in_uint+0x4c1>
lea    0xa3b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    141a <rerange_date_to_get_max_number_in_uint+0x2da>
lea    0xa1f(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x18(%rbp),%rax
mov    -0x3070(%rbp),%rcx
mov    %rcx,(%rax)
mov    -0x3068(%rbp),%rcx
mov    %rcx,0x8(%rax)
mov    -0x3060(%rbp),%rcx
mov    %rcx,0x10(%rax)
mov    -0x3058(%rbp),%rcx
mov    %rcx,0x18(%rax)
xor    %eax,%eax
add    $0x3080,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<rerange_date_to_get_max_number_in_uint>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x3058,%rsp
mov    %rdx,0x10(%rsp)
mov    %esi,%ebp
mov    %rdi,%rbx
lea    0xe7e(%rip),%rcx
xor    %edx,%edx
xor    %eax,%eax
call   1030 <output_formated_uint32_data@plt>
lea    0x2050(%rsp),%r13
mov    $0x1000,%edx
mov    %r13,%rdi
mov    %rbx,%rsi
call   1080 <memcpy@plt>
lea    -0x1(%rbp),%eax
mov    %ebp,%r12d
mov    %eax,%r15d
mov    %rbp,0x8(%rsp)
cmp    $0x2,%ebp
jl     1266 <rerange_date_to_get_max_number_in_uint+0x106>
mov    %r12,%r14
xor    %ebx,%ebx
mov    %r12,0x20(%rsp)
mov    %r15,0x18(%rsp)
jmp    11ec <rerange_date_to_get_max_number_in_uint+0x8c>
nopl   0x0(%rax,%rax,1)
add    $0x4,%r13
add    $0xffffffffffffffff,%r14
mov    0x18(%rsp),%r15
mov    0x28(%rsp),%rbx
cmp    %r15,%rbx
mov    0x20(%rsp),%r12
je     1266 <rerange_date_to_get_max_number_in_uint+0x106>
lea    0x1(%rbx),%rax
mov    %rax,0x28(%rsp)
cmp    %r12,%rax
jae    11d0 <rerange_date_to_get_max_number_in_uint+0x70>
mov    $0x1,%r15d
jmp    1219 <rerange_date_to_get_max_number_in_uint+0xb9>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%r15
cmp    %r15,%r14
je     11d0 <rerange_date_to_get_max_number_in_uint+0x70>
mov    0x0(%r13,%r15,4),%r12d
mov    0x2050(%rsp,%rbx,4),%ebp
test   %r12d,%r12d
je     1240 <rerange_date_to_get_max_number_in_uint+0xe0>
cmp    %r12d,%ebp
jbe    1210 <rerange_date_to_get_max_number_in_uint+0xb0>
jmp    1257 <rerange_date_to_get_max_number_in_uint+0xf7>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    0xdc5(%rip),%rdi
mov    %ebx,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1060 <printf@plt>
cmp    %r12d,%ebp
jbe    1210 <rerange_date_to_get_max_number_in_uint+0xb0>
mov    %ebp,0x0(%r13,%r15,4)
mov    %r12d,0x2050(%rsp,%rbx,4)
jmp    1210 <rerange_date_to_get_max_number_in_uint+0xb0>
lea    0xdab(%rip),%rcx
xor    %ebx,%ebx
lea    0x2050(%rsp),%rdi
mov    0x8(%rsp),%r14
mov    %r14d,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1030 <output_formated_uint32_data@plt>
lea    0x1050(%rsp),%rdi
mov    $0x1000,%edx
xor    %esi,%esi
call   1070 <memset@plt>
test   %r14d,%r14d
jle    12fe <rerange_date_to_get_max_number_in_uint+0x19e>
mov    0x2050(%rsp),%ebp
mov    $0x1,%eax
xor    %ecx,%ecx
jmp    12c8 <rerange_date_to_get_max_number_in_uint+0x168>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%ebx
cmp    %rcx,%r12
je     12fe <rerange_date_to_get_max_number_in_uint+0x19e>
mov    %ebp,%edx
movslq %ebx,%rsi
mov    0x1050(%rsp,%rsi,4),%edi
test   %edi,%edi
cmove  %eax,%edi
mov    %edi,0x1050(%rsp,%rsi,4)
mov    0x2054(%rsp,%rcx,4),%ebp
add    $0x1,%rcx
cmp    %ebp,%edx
jne    12c0 <rerange_date_to_get_max_number_in_uint+0x160>
add    $0x1,%edi
mov    %edi,0x1050(%rsp,%rsi,4)
cmp    %rcx,%r12
jne    12c8 <rerange_date_to_get_max_number_in_uint+0x168>
lea    0x50(%rsp),%rbx
lea    0x1050(%rsp),%rsi
mov    $0x1000,%edx
mov    %rbx,%rdi
call   1080 <memcpy@plt>
cmp    $0x1,%r14d
jle    1394 <rerange_date_to_get_max_number_in_uint+0x234>
xor    %ecx,%ecx
mov    %r12,%rax
jmp    133d <rerange_date_to_get_max_number_in_uint+0x1dd>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x4,%rbx
add    $0xffffffffffffffff,%rax
cmp    %r15,%rcx
je     1397 <rerange_date_to_get_max_number_in_uint+0x237>
mov    %rcx,%rdx
add    $0x1,%rcx
cmp    %r12,%rcx
jae    1330 <rerange_date_to_get_max_number_in_uint+0x1d0>
mov    0x50(%rsp,%rdx,4),%edi
mov    $0x1,%esi
jmp    136d <rerange_date_to_get_max_number_in_uint+0x20d>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xor    %ebp,%ebp
add    $0x1,%rsi
mov    %ebp,%edi
cmp    %rsi,%rax
je     1330 <rerange_date_to_get_max_number_in_uint+0x1d0>
test   %edi,%edi
je     1360 <rerange_date_to_get_max_number_in_uint+0x200>
mov    (%rbx,%rsi,4),%ebp
cmp    %ebp,%edi
jge    1390 <rerange_date_to_get_max_number_in_uint+0x230>
mov    %edi,(%rbx,%rsi,4)
mov    %ebp,0x50(%rsp,%rdx,4)
jmp    1362 <rerange_date_to_get_max_number_in_uint+0x202>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %edi,%ebp
jmp    1362 <rerange_date_to_get_max_number_in_uint+0x202>
movslq %r14d,%r12
lea    0xca7(%rip),%rdi
call   1050 <puts@plt>
lea    0xc7b(%rip),%r15
xor    %ebx,%ebx
xor    %ebp,%ebp
jmp    13be <rerange_date_to_get_max_number_in_uint+0x25e>
add    $0x1,%rbx
cmp    $0x8,%rbx
je     155e <rerange_date_to_get_max_number_in_uint+0x3fe>
test   %rbx,%rbx
je     1440 <rerange_date_to_get_max_number_in_uint+0x2e0>
mov    0x50(%rsp,%rbx,4),%eax
xor    %ebp,%ebp
cmp    0x4c(%rsp,%rbx,4),%eax
sete   %bpl
cmp    $0x1,%rbx
je     1440 <rerange_date_to_get_max_number_in_uint+0x2e0>
xor    %ecx,%ecx
cmp    0x48(%rsp,%rbx,4),%eax
sete   %cl
add    %ecx,%ebp
cmp    $0x2,%rbx
je     1440 <rerange_date_to_get_max_number_in_uint+0x2e0>
xor    %ecx,%ecx
cmp    0x44(%rsp,%rbx,4),%eax
sete   %cl
add    %ecx,%ebp
cmp    $0x3,%rbx
je     1440 <rerange_date_to_get_max_number_in_uint+0x2e0>
xor    %ecx,%ecx
cmp    0x40(%rsp,%rbx,4),%eax
sete   %cl
add    %ecx,%ebp
cmp    $0x4,%rbx
je     1440 <rerange_date_to_get_max_number_in_uint+0x2e0>
xor    %ecx,%ecx
cmp    0x3c(%rsp,%rbx,4),%eax
sete   %cl
add    %ecx,%ebp
cmp    $0x5,%rbx
je     1440 <rerange_date_to_get_max_number_in_uint+0x2e0>
xor    %ecx,%ecx
cmp    0x38(%rsp,%rbx,4),%eax
sete   %cl
add    %ecx,%ebp
cmp    $0x6,%rbx
je     1440 <rerange_date_to_get_max_number_in_uint+0x2e0>
xor    %ecx,%ecx
cmp    0x34(%rsp,%rbx,4),%eax
sete   %cl
add    %ecx,%ebp
nopl   0x0(%rax,%rax,1)
test   %r14d,%r14d
jle    14a0 <rerange_date_to_get_max_number_in_uint+0x340>
xor    %edx,%edx
movslq %edx,%rsi
mov    %rsi,%rax
jmp    1460 <rerange_date_to_get_max_number_in_uint+0x300>
nop
add    $0x1,%rax
add    $0x1,%edx
add    $0x1,%sil
cmp    %r12,%rax
jge    14a0 <rerange_date_to_get_max_number_in_uint+0x340>
mov    0x1050(%rsp,%rax,4),%ecx
test   %ecx,%ecx
je     1450 <rerange_date_to_get_max_number_in_uint+0x2f0>
cmp    %ecx,0x50(%rsp,%rbx,4)
jne    1450 <rerange_date_to_get_max_number_in_uint+0x2f0>
sub    $0x1,%ebp
jb     1482 <rerange_date_to_get_max_number_in_uint+0x322>
lea    0x1(%rax),%edx
xor    %esi,%esi
cmp    %r14d,%edx
jl     1447 <rerange_date_to_get_max_number_in_uint+0x2e7>
jmp    14a2 <rerange_date_to_get_max_number_in_uint+0x342>
test   %eax,%eax
jle    1499 <rerange_date_to_get_max_number_in_uint+0x339>
mov    %eax,%ecx
mov    %edx,%edx
cmp    $0x8,%rcx
jae    14d9 <rerange_date_to_get_max_number_in_uint+0x379>
xor    %ecx,%ecx
xor    %esi,%esi
jmp    1540 <rerange_date_to_get_max_number_in_uint+0x3e0>
xor    %ebp,%ebp
nopl   0x0(%rax,%rax,1)
xor    %esi,%esi
movslq %esi,%rsi
mov    0x2050(%rsp,%rsi,4),%edx
mov    %edx,0x30(%rsp,%rbx,4)
mov    0x50(%rsp,%rbx,4),%ecx
mov    %r15,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %ebx,%eax
not    %eax
test   $0x3,%al
jne    13b0 <rerange_date_to_get_max_number_in_uint+0x250>
mov    $0xa,%edi
call   1040 <putchar@plt>
jmp    13b0 <rerange_date_to_get_max_number_in_uint+0x250>
and    $0x7,%eax
sub    %rax,%rcx
movzbl %sil,%edi
and    $0x7,%edi
mov    %rdx,%rsi
sub    %rdi,%rsi
pxor   %xmm0,%xmm0
xor    %edi,%edi
pxor   %xmm1,%xmm1
cs nopw 0x0(%rax,%rax,1)
paddd  0x1050(%rsp,%rdi,4),%xmm0
paddd  0x1060(%rsp,%rdi,4),%xmm1
add    $0x8,%rdi
cmp    %rdi,%rsi
jne    1500 <rerange_date_to_get_max_number_in_uint+0x3a0>
paddd  %xmm0,%xmm1
pshufd $0xee,%xmm1,%xmm0
paddd  %xmm1,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%esi
test   %rax,%rax
je     1557 <rerange_date_to_get_max_number_in_uint+0x3f7>
nopw   0x0(%rax,%rax,1)
add    0x1050(%rsp,%rcx,4),%esi
add    $0x1,%rcx
xor    %ebp,%ebp
cmp    %rcx,%rdx
jne    1540 <rerange_date_to_get_max_number_in_uint+0x3e0>
jmp    14a2 <rerange_date_to_get_max_number_in_uint+0x342>
xor    %ebp,%ebp
jmp    14a2 <rerange_date_to_get_max_number_in_uint+0x342>
mov    $0xa,%edi
call   1040 <putchar@plt>
movaps 0x30(%rsp),%xmm0
movaps 0x40(%rsp),%xmm1
mov    0x10(%rsp),%rax
movups %xmm0,(%rax)
movups %xmm1,0x10(%rax)
xor    %eax,%eax
add    $0x3058,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [12 x i8] c"Origin data\00"
@.str.1 = [12 x i8] c"[%d]0x%02x\0A\00"
@.str.2 = [13 x i8] c"Rerange Data\00"
@.str.3 = [18 x i8] c"get max number: \0A\00"
@.str.4 = [32 x i8] c"m_rerange[%03d]: %02x, %03d || \00"
@.str.5 = [2 x i8] c"\0A\00"
define i32 @rerange_date_to_get_max_number_in_uint(i32* %0, i32 %1, i32** %2) {
%4 = alloca i32*
%5 = alloca i32
%6 = alloca i32**
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca [1024 x i32]
%11 = alloca [1024 x i32]
%12 = alloca i32
%13 = alloca [1024 x i32]
%14 = alloca i32
%15 = alloca [8 x i32]
%16 = alloca i32
%17 = alloca i32
store i32* %0, i32** %4
store i32 %1, i32* %5
store i32** %2, i32*** %6
store i32 0, i32* %7
store i32 0, i32* %8
store i32 0, i32* %9
store i32 0, i32* %16
store i32 0, i32* %17
%18 = load i32*, i32** %4
%19 = load i32, i32* %5
%20 = call i32 (i32*, i32, i32, i8*, ...) bitcast (i32 (...)* @output_formated_uint32_data to i32 (i32*, i32, i32, i8*, ...)*)(i32* %18, i32 %19, i32 0, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%21 = getelementptr inbounds [1024 x i32], [1024 x i32]* %13, i64 0, i64 0
%22 = bitcast i32* %21 to i8*
%23 = load i32*, i32** %4
%24 = bitcast i32* %23 to i8*
store i32 0, i32* %7
br label %25
25: ; preds = %79, %3
%26 = load i32, i32* %7
%27 = load i32, i32* %5
%28 = sub nsw i32 %27, 1
%29 = icmp slt i32 %26, %28
br i1 %29, label %30, label %82
30: ; preds = %25
%31 = load i32, i32* %7
%32 = add nsw i32 %31, 1
store i32 %32, i32* %8
br label %33
33: ; preds = %76, %30
%34 = load i32, i32* %8
%35 = load i32, i32* %5
%36 = icmp slt i32 %34, %35
br i1 %36, label %37, label %79
37: ; preds = %33
%38 = load i32, i32* %8
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds [1024 x i32], [1024 x i32]* %13, i64 0, i64 %39
%41 = load i32, i32* %40
%42 = icmp eq i32 %41, 0
br i1 %42, label %43, label %50
43: ; preds = %37
%44 = load i32, i32* %7
%45 = load i32, i32* %7
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds [1024 x i32], [1024 x i32]* %13, i64 0, i64 %46
%48 = load i32, i32* %47
%49 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i32 %44, i32 %48)
br label %50
50: ; preds = %43, %37
%51 = load i32, i32* %7
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds [1024 x i32], [1024 x i32]* %13, i64 0, i64 %52
%54 = load i32, i32* %53
%55 = load i32, i32* %8
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds [1024 x i32], [1024 x i32]* %13, i64 0, i64 %56
%58 = load i32, i32* %57
%59 = icmp ugt i32 %54, %58
br i1 %59, label %60, label %76
60: ; preds = %50
%61 = load i32, i32* %8
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds [1024 x i32], [1024 x i32]* %13, i64 0, i64 %62
%64 = load i32, i32* %63
store i32 %64, i32* %14
%65 = load i32, i32* %7
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds [1024 x i32], [1024 x i32]* %13, i64 0, i64 %66
%68 = load i32, i32* %67
%69 = load i32, i32* %8
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds [1024 x i32], [1024 x i32]* %13, i64 0, i64 %70
store i32 %68, i32* %71
%72 = load i32, i32* %14
%73 = load i32, i32* %7
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds [1024 x i32], [1024 x i32]* %13, i64 0, i64 %74
store i32 %72, i32* %75
br label %76
76: ; preds = %60, %50
%77 = load i32, i32* %8
%78 = add nsw i32 %77, 1
store i32 %78, i32* %8
br label %33
79: ; preds = %33
%80 = load i32, i32* %7
%81 = add nsw i32 %80, 1
store i32 %81, i32* %7
br label %25
82: ; preds = %25
%83 = getelementptr inbounds [1024 x i32], [1024 x i32]* %13, i64 0, i64 0
%84 = load i32, i32* %5
%85 = call i32 (i32*, i32, i32, i8*, ...) bitcast (i32 (...)* @output_formated_uint32_data to i32 (i32*, i32, i32, i8*, ...)*)(i32* %83, i32 %84, i32 0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0))
store i32 0, i32* %7
store i32 0, i32* %8
%86 = getelementptr inbounds [1024 x i32], [1024 x i32]* %10, i64 0, i64 0
%87 = bitcast i32* %86 to i8*
br label %88
88: ; preds = %122, %82
%89 = load i32, i32* %7
%90 = load i32, i32* %5
%91 = icmp slt i32 %89, %90
br i1 %91, label %92, label %125
92: ; preds = %88
%93 = load i32, i32* %8
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds [1024 x i32], [1024 x i32]* %10, i64 0, i64 %94
%96 = load i32, i32* %95
%97 = icmp eq i32 %96, 0
br i1 %97, label %98, label %102
98: ; preds = %92
%99 = load i32, i32* %8
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds [1024 x i32], [1024 x i32]* %10, i64 0, i64 %100
store i32 1, i32* %101
br label %102
102: ; preds = %98, %92
%103 = load i32, i32* %7
%104 = sext i32 %103 to i64
%105 = getelementptr inbounds [1024 x i32], [1024 x i32]* %13, i64 0, i64 %104
%106 = load i32, i32* %105
%107 = load i32, i32* %7
%108 = add nsw i32 %107, 1
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds [1024 x i32], [1024 x i32]* %13, i64 0, i64 %109
%111 = load i32, i32* %110
%112 = icmp eq i32 %106, %111
br i1 %112, label %113, label %119
113: ; preds = %102
%114 = load i32, i32* %8
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds [1024 x i32], [1024 x i32]* %10, i64 0, i64 %115
%117 = load i32, i32* %116
%118 = add nsw i32 %117, 1
store i32 %118, i32* %116
br label %122
119: ; preds = %102
%120 = load i32, i32* %8
%121 = add nsw i32 %120, 1
store i32 %121, i32* %8
br label %122
122: ; preds = %119, %113
%123 = load i32, i32* %7
%124 = add nsw i32 %123, 1
store i32 %124, i32* %7
br label %88
125: ; preds = %88
store i32 0, i32* %7
%126 = getelementptr inbounds [1024 x i32], [1024 x i32]* %11, i64 0, i64 0
%127 = bitcast i32* %126 to i8*
%128 = getelementptr inbounds [1024 x i32], [1024 x i32]* %10, i64 0, i64 0
%129 = bitcast i32* %128 to i8*
br label %130
130: ; preds = %180, %125
%131 = load i32, i32* %7
%132 = load i32, i32* %5
%133 = sub nsw i32 %132, 1
%134 = icmp slt i32 %131, %133
br i1 %134, label %135, label %183
135: ; preds = %130
%136 = load i32, i32* %7
%137 = add nsw i32 %136, 1
store i32 %137, i32* %8
br label %138
138: ; preds = %177, %148, %135
%139 = load i32, i32* %8
%140 = load i32, i32* %5
%141 = icmp slt i32 %139, %140
br i1 %141, label %142, label %180
142: ; preds = %138
%143 = load i32, i32* %7
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds [1024 x i32], [1024 x i32]* %11, i64 0, i64 %144
%146 = load i32, i32* %145
%147 = icmp eq i32 %146, 0
br i1 %147, label %148, label %151
148: ; preds = %142
%149 = load i32, i32* %8
%150 = add nsw i32 %149, 1
store i32 %150, i32* %8
br label %138
151: ; preds = %142
%152 = load i32, i32* %7
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds [1024 x i32], [1024 x i32]* %11, i64 0, i64 %153
%155 = load i32, i32* %154
%156 = load i32, i32* %8
%157 = sext i32 %156 to i64
%158 = getelementptr inbounds [1024 x i32], [1024 x i32]* %11, i64 0, i64 %157
%159 = load i32, i32* %158
%160 = icmp slt i32 %155, %159
br i1 %160, label %161, label %177
161: ; preds = %151
%162 = load i32, i32* %8
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds [1024 x i32], [1024 x i32]* %11, i64 0, i64 %163
%165 = load i32, i32* %164
store i32 %165, i32* %12
%166 = load i32, i32* %7
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds [1024 x i32], [1024 x i32]* %11, i64 0, i64 %167
%169 = load i32, i32* %168
%170 = load i32, i32* %8
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds [1024 x i32], [1024 x i32]* %11, i64 0, i64 %171
store i32 %169, i32* %172
%173 = load i32, i32* %12
%174 = load i32, i32* %7
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds [1024 x i32], [1024 x i32]* %11, i64 0, i64 %175
store i32 %173, i32* %176
br label %177
177: ; preds = %161, %151
%178 = load i32, i32* %8
%179 = add nsw i32 %178, 1
store i32 %179, i32* %8
br label %138
180: ; preds = %138
%181 = load i32, i32* %7
%182 = add nsw i32 %181, 1
store i32 %182, i32* %7
br label %130
183: ; preds = %130
store i32 0, i32* %9
%184 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0))
br label %185
185: ; preds = %294, %183
%186 = load i32, i32* %9
%187 = sext i32 %186 to i64
%188 = icmp ult i64 %187, 8
br i1 %188, label %189, label %297
189: ; preds = %185
store i32 0, i32* %7
store i32 0, i32* %8
store i32 0, i32* %12
store i32 0, i32* %17
%190 = load i32, i32* %9
%191 = icmp sgt i32 %190, 0
br i1 %191, label %192, label %217
192: ; preds = %189
store i32 0, i32* %12
store i32 0, i32* %16
br label %193
193: ; preds = %213, %192
%194 = load i32, i32* %12
%195 = load i32, i32* %9
%196 = icmp slt i32 %194, %195
br i1 %196, label %197, label %216
197: ; preds = %193
%198 = load i32, i32* %9
%199 = sext i32 %198 to i64
%200 = getelementptr inbounds [1024 x i32], [1024 x i32]* %11, i64 0, i64 %199
%201 = load i32, i32* %200
%202 = load i32, i32* %9
%203 = load i32, i32* %12
%204 = sub nsw i32 %202, %203
%205 = sub nsw i32 %204, 1
%206 = sext i32 %205 to i64
%207 = getelementptr inbounds [1024 x i32], [1024 x i32]* %11, i64 0, i64 %206
%208 = load i32, i32* %207
%209 = icmp eq i32 %201, %208
br i1 %209, label %210, label %213
210: ; preds = %197
%211 = load i32, i32* %16
%212 = add nsw i32 %211, 1
store i32 %212, i32* %16
br label %213
213: ; preds = %210, %197
%214 = load i32, i32* %12
%215 = add nsw i32 %214, 1
store i32 %215, i32* %12
br label %193
216: ; preds = %193
br label %217
217: ; preds = %216, %189
store i32 0, i32* %12
br label %218
218: ; preds = %268, %244, %228, %217
%219 = load i32, i32* %7
%220 = load i32, i32* %5
%221 = icmp slt i32 %219, %220
br i1 %221, label %222, label %271
222: ; preds = %218
%223 = load i32, i32* %7
%224 = sext i32 %223 to i64
%225 = getelementptr inbounds [1024 x i32], [1024 x i32]* %10, i64 0, i64 %224
%226 = load i32, i32* %225
%227 = icmp eq i32 %226, 0
br i1 %227, label %228, label %231
228: ; preds = %222
%229 = load i32, i32* %7
%230 = add nsw i32 %229, 1
store i32 %230, i32* %7
br label %218
231: ; preds = %222
%232 = load i32, i32* %9
%233 = sext i32 %232 to i64
%234 = getelementptr inbounds [1024 x i32], [1024 x i32]* %11, i64 0, i64 %233
%235 = load i32, i32* %234
%236 = load i32, i32* %7
%237 = sext i32 %236 to i64
%238 = getelementptr inbounds [1024 x i32], [1024 x i32]* %10, i64 0, i64 %237
%239 = load i32, i32* %238
%240 = icmp eq i32 %235, %239
br i1 %240, label %241, label %268
241: ; preds = %231
%242 = load i32, i32* %16
%243 = icmp ne i32 %242, 0
br i1 %243, label %244, label %249
244: ; preds = %241
%245 = load i32, i32* %16
%246 = add nsw i32 %245, -1
store i32 %246, i32* %16
%247 = load i32, i32* %7
%248 = add nsw i32 %247, 1
store i32 %248, i32* %7
br label %218
249: ; preds = %241
br label %250
250: ; preds = %254, %249
%251 = load i32, i32* %8
%252 = load i32, i32* %7
%253 = icmp slt i32 %251, %252
br i1 %253, label %254, label %263
254: ; preds = %250
%255 = load i32, i32* %8
%256 = sext i32 %255 to i64
%257 = getelementptr inbounds [1024 x i32], [1024 x i32]* %10, i64 0, i64 %256
%258 = load i32, i32* %257
%259 = load i32, i32* %12
%260 = add nsw i32 %259, %258
store i32 %260, i32* %12
%261 = load i32, i32* %8
%262 = add nsw i32 %261, 1
store i32 %262, i32* %8
br label %250
263: ; preds = %250
%264 = load i32, i32* %7
%265 = sext i32 %264 to i64
%266 = getelementptr inbounds [1024 x i32], [1024 x i32]* %10, i64 0, i64 %265
%267 = load i32, i32* %266
store i32 %267, i32* %17
br label %271
268: ; preds = %231
%269 = load i32, i32* %7
%270 = add nsw i32 %269, 1
store i32 %270, i32* %7
br label %218
271: ; preds = %263, %218
%272 = load i32, i32* %12
%273 = sext i32 %272 to i64
%274 = getelementptr inbounds [1024 x i32], [1024 x i32]* %13, i64 0, i64 %273
%275 = load i32, i32* %274
%276 = load i32, i32* %9
%277 = sext i32 %276 to i64
%278 = getelementptr inbounds [8 x i32], [8 x i32]* %15, i64 0, i64 %277
store i32 %275, i32* %278
%279 = load i32, i32* %12
%280 = load i32, i32* %9
%281 = sext i32 %280 to i64
%282 = getelementptr inbounds [8 x i32], [8 x i32]* %15, i64 0, i64 %281
%283 = load i32, i32* %282
%284 = load i32, i32* %9
%285 = sext i32 %284 to i64
%286 = getelementptr inbounds [1024 x i32], [1024 x i32]* %11, i64 0, i64 %285
%287 = load i32, i32* %286
%288 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.4, i64 0, i64 0), i32 %279, i32 %283, i32 %287)
%289 = load i32, i32* %9
%290 = srem i32 %289, 4
%291 = icmp eq i32 %290, 3
br i1 %291, label %292, label %294
292: ; preds = %271
%293 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
br label %294
294: ; preds = %292, %271
%295 = load i32, i32* %9
%296 = add nsw i32 %295, 1
store i32 %296, i32* %9
br label %185
297: ; preds = %185
%298 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
%299 = load i32**, i32*** %6
%300 = bitcast i32** %299 to i8*
%301 = getelementptr inbounds [8 x i32], [8 x i32]* %15, i64 0, i64 0
%302 = bitcast i32* %301 to i8*
ret i32 0
}

LLVM IR (-O2):
@.str = [12 x i8] c"Origin data\00"
@.str.1 = [12 x i8] c"[%d]0x%02x\0A\00"
@.str.2 = [13 x i8] c"Rerange Data\00"
@.str.4 = [32 x i8] c"m_rerange[%03d]: %02x, %03d || \00"
@str = [17 x i8] c"get max number: \00"
define i32 @rerange_date_to_get_max_number_in_uint(i32* %0, i32 %1, i32** nocapture writeonly %2) {
%4 = alloca [1024 x i32]
%5 = alloca [1024 x i32]
%6 = alloca [1024 x i32]
%7 = alloca [8 x i32]
%8 = bitcast [1024 x i32]* %4 to i8*
%9 = bitcast [1024 x i32]* %5 to i8*
%10 = bitcast [1024 x i32]* %6 to i8*
%11 = bitcast [8 x i32]* %7 to i8*
%12 = tail call i32 (i32*, i32, i32, i8*, ...) bitcast (i32 (...)* @output_formated_uint32_data to i32 (i32*, i32, i32, i8*, ...)*)(i32* %0, i32 %1, i32 0, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%13 = getelementptr inbounds [1024 x i32], [1024 x i32]* %6, i64 0, i64 0
%14 = bitcast i32* %0 to i8*
%15 = add i32 %1, -1
%16 = icmp sgt i32 %1, 1
br i1 %16, label %17, label %46
17: ; preds = %3
%18 = zext i32 %1 to i64
%19 = zext i32 %15 to i64
%20 = zext i32 %1 to i64
br label %24
21: ; preds = %43, %24
%22 = add nuw nsw i64 %26, 1
%23 = icmp eq i64 %27, %19
br i1 %23, label %46, label %24
24: ; preds = %17, %21
%25 = phi i64 [ 0, %17 ], [ %27, %21 ]
%26 = phi i64 [ 1, %17 ], [ %22, %21 ]
%27 = add nuw nsw i64 %25, 1
%28 = icmp ult i64 %27, %18
br i1 %28, label %29, label %21
29: ; preds = %24
%30 = getelementptr inbounds [1024 x i32], [1024 x i32]* %6, i64 0, i64 %25
%31 = trunc i64 %25 to i32
br label %32
32: ; preds = %29, %43
%33 = phi i64 [ %26, %29 ], [ %44, %43 ]
%34 = getelementptr inbounds [1024 x i32], [1024 x i32]* %6, i64 0, i64 %33
%35 = load i32, i32* %34
%36 = icmp eq i32 %35, 0
%37 = load i32, i32* %30
br i1 %36, label %38, label %40
38: ; preds = %32
%39 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i32 %31, i32 %37)
br label %40
40: ; preds = %32, %38
%41 = icmp ugt i32 %37, %35
br i1 %41, label %42, label %43
42: ; preds = %40
store i32 %37, i32* %34
store i32 %35, i32* %30
br label %43
43: ; preds = %42, %40
%44 = add nuw nsw i64 %33, 1
%45 = icmp eq i64 %44, %20
br i1 %45, label %21, label %32
46: ; preds = %21, %3
%47 = call i32 (i32*, i32, i32, i8*, ...) bitcast (i32 (...)* @output_formated_uint32_data to i32 (i32*, i32, i32, i8*, ...)*)(i32* %13, i32 %1, i32 0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0))
%48 = icmp sgt i32 %1, 0
br i1 %48, label %49, label %72
49: ; preds = %46
%50 = zext i32 %1 to i64
%51 = load i32, i32* %13
br label %52
52: ; preds = %49, %69
%53 = phi i32 [ %51, %49 ], [ %63, %69 ]
%54 = phi i64 [ 0, %49 ], [ %61, %69 ]
%55 = phi i32 [ 0, %49 ], [ %70, %69 ]
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds [1024 x i32], [1024 x i32]* %4, i64 0, i64 %56
%58 = load i32, i32* %57
%59 = icmp eq i32 %58, 0
%60 = select i1 %59, i32 1, i32 %58
store i32 %60, i32* %57
%61 = add nuw nsw i64 %54, 1
%62 = getelementptr inbounds [1024 x i32], [1024 x i32]* %6, i64 0, i64 %61
%63 = load i32, i32* %62
%64 = icmp eq i32 %53, %63
br i1 %64, label %65, label %67
65: ; preds = %52
%66 = add nsw i32 %60, 1
store i32 %66, i32* %57
br label %69
67: ; preds = %52
%68 = add nsw i32 %55, 1
br label %69
69: ; preds = %67, %65
%70 = phi i32 [ %55, %65 ], [ %68, %67 ]
%71 = icmp eq i64 %61, %50
br i1 %71, label %72, label %52
72: ; preds = %69, %46
br i1 %16, label %75, label %73
73: ; preds = %72
%74 = sext i32 %1 to i64
br label %103
75: ; preds = %72
%76 = zext i32 %1 to i64
%77 = zext i32 %15 to i64
%78 = zext i32 %1 to i64
br label %82
79: ; preds = %94, %82
%80 = add nuw nsw i64 %84, 1
%81 = icmp eq i64 %85, %77
br i1 %81, label %103, label %82
82: ; preds = %75, %79
%83 = phi i64 [ 0, %75 ], [ %85, %79 ]
%84 = phi i64 [ 1, %75 ], [ %80, %79 ]
%85 = add nuw nsw i64 %83, 1
%86 = icmp ult i64 %85, %76
br i1 %86, label %87, label %79
87: ; preds = %82
%88 = getelementptr inbounds [1024 x i32], [1024 x i32]* %5, i64 0, i64 %83
%89 = load i32, i32* %88
br label %90
90: ; preds = %87, %94
%91 = phi i32 [ %89, %87 ], [ %95, %94 ]
%92 = phi i64 [ %84, %87 ], [ %96, %94 ]
%93 = icmp eq i32 %91, 0
br i1 %93, label %94, label %98
94: ; preds = %98, %102, %90
%95 = phi i32 [ 0, %90 ], [ %100, %102 ], [ %91, %98 ]
%96 = add nuw nsw i64 %92, 1
%97 = icmp eq i64 %96, %78
br i1 %97, label %79, label %90
98: ; preds = %90
%99 = getelementptr inbounds [1024 x i32], [1024 x i32]* %5, i64 0, i64 %92
%100 = load i32, i32* %99
%101 = icmp slt i32 %91, %100
br i1 %101, label %102, label %94
102: ; preds = %98
store i32 %91, i32* %99
store i32 %100, i32* %88
br label %94
103: ; preds = %79, %73
%104 = phi i64 [ %74, %73 ], [ %76, %79 ]
%105 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @str, i64 0, i64 0))
br label %106
106: ; preds = %103, %244
%107 = phi i64 [ 0, %103 ], [ %245, %244 ]
%108 = phi i32 [ 0, %103 ], [ %231, %244 ]
%109 = icmp eq i64 %107, 0
br i1 %109, label %166, label %110
110: ; preds = %106
%111 = getelementptr inbounds [1024 x i32], [1024 x i32]* %5, i64 0, i64 %107
%112 = load i32, i32* %111
%113 = add nsw i64 %107, -1
%114 = getelementptr inbounds [1024 x i32], [1024 x i32]* %5, i64 0, i64 %113
%115 = load i32, i32* %114
%116 = icmp eq i32 %112, %115
%117 = zext i1 %116 to i32
%118 = icmp eq i64 %107, 1
br i1 %118, label %166, label %119
119: ; preds = %110
%120 = add nsw i64 %107, -2
%121 = getelementptr inbounds [1024 x i32], [1024 x i32]* %5, i64 0, i64 %120
%122 = load i32, i32* %121
%123 = icmp eq i32 %112, %122
%124 = zext i1 %123 to i32
%125 = add nuw nsw i32 %117, %124
%126 = icmp eq i64 %107, 2
br i1 %126, label %166, label %127
127: ; preds = %119
%128 = add nsw i64 %107, -3
%129 = getelementptr inbounds [1024 x i32], [1024 x i32]* %5, i64 0, i64 %128
%130 = load i32, i32* %129
%131 = icmp eq i32 %112, %130
%132 = zext i1 %131 to i32
%133 = add nuw nsw i32 %125, %132
%134 = icmp eq i64 %107, 3
br i1 %134, label %166, label %135
135: ; preds = %127
%136 = add nsw i64 %107, -4
%137 = getelementptr inbounds [1024 x i32], [1024 x i32]* %5, i64 0, i64 %136
%138 = load i32, i32* %137
%139 = icmp eq i32 %112, %138
%140 = zext i1 %139 to i32
%141 = add nuw nsw i32 %133, %140
%142 = icmp eq i64 %107, 4
br i1 %142, label %166, label %143
143: ; preds = %135
%144 = add nsw i64 %107, -5
%145 = getelementptr inbounds [1024 x i32], [1024 x i32]* %5, i64 0, i64 %144
%146 = load i32, i32* %145
%147 = icmp eq i32 %112, %146
%148 = zext i1 %147 to i32
%149 = add nuw nsw i32 %141, %148
%150 = icmp eq i64 %107, 5
br i1 %150, label %166, label %151
151: ; preds = %143
%152 = add nsw i64 %107, -6
%153 = getelementptr inbounds [1024 x i32], [1024 x i32]* %5, i64 0, i64 %152
%154 = load i32, i32* %153
%155 = icmp eq i32 %112, %154
%156 = zext i1 %155 to i32
%157 = add nuw nsw i32 %149, %156
%158 = icmp eq i64 %107, 6
br i1 %158, label %166, label %159
159: ; preds = %151
%160 = add nsw i64 %107, -7
%161 = getelementptr inbounds [1024 x i32], [1024 x i32]* %5, i64 0, i64 %160
%162 = load i32, i32* %161
%163 = icmp eq i32 %112, %162
%164 = zext i1 %163 to i32
%165 = add nuw nsw i32 %157, %164
br label %166
166: ; preds = %110, %119, %127, %135, %143, %151, %159, %106
%167 = phi i32 [ %108, %106 ], [ %117, %110 ], [ %125, %119 ], [ %133, %127 ], [ %141, %135 ], [ %149, %143 ], [ %157, %151 ], [ %165, %159 ]
br i1 %48, label %168, label %230
168: ; preds = %166
%169 = getelementptr inbounds [1024 x i32], [1024 x i32]* %5, i64 0, i64 %107
br label %170
170: ; preds = %168, %218
%171 = phi i32 [ %167, %168 ], [ %219, %218 ]
%172 = phi i32 [ 0, %168 ], [ %220, %218 ]
%173 = sext i32 %172 to i64
br label %174
174: ; preds = %170, %179
%175 = phi i64 [ %173, %170 ], [ %180, %179 ]
%176 = getelementptr inbounds [1024 x i32], [1024 x i32]* %4, i64 0, i64 %175
%177 = load i32, i32* %176
%178 = icmp eq i32 %177, 0
br i1 %178, label %179, label %182
179: ; preds = %182, %174
%180 = add nsw i64 %175, 1
%181 = icmp slt i64 %180, %104
br i1 %181, label %174, label %230
182: ; preds = %174
%183 = load i32, i32* %169
%184 = icmp eq i32 %183, %177
br i1 %184, label %185, label %179
185: ; preds = %182
%186 = icmp eq i32 %171, 0
%187 = trunc i64 %175 to i32
br i1 %186, label %188, label %218
188: ; preds = %185
%189 = trunc i64 %175 to i32
%190 = icmp sgt i32 %189, 0
br i1 %190, label %191, label %230
191: ; preds = %188
%192 = and i64 %175, 4294967295
%193 = icmp ult i64 %192, 8
br i1 %193, label %215, label %194
194: ; preds = %191
%195 = and i64 %175, 7
%196 = sub nsw i64 %192, %195
br label %197
197: ; preds = %197, %194
%198 = phi i64 [ 0, %194 ], [ %209, %197 ]
%199 = phi <4 x i32> [ zeroinitializer, %194 ], [ %207, %197 ]
%200 = phi <4 x i32> [ zeroinitializer, %194 ], [ %208, %197 ]
%201 = getelementptr inbounds [1024 x i32], [1024 x i32]* %4, i64 0, i64 %198
%202 = bitcast i32* %201 to <4 x i32>*
%203 = load <4 x i32>, <4 x i32>* %202
%204 = getelementptr inbounds i32, i32* %201, i64 4
%205 = bitcast i32* %204 to <4 x i32>*
%206 = load <4 x i32>, <4 x i32>* %205
%207 = add <4 x i32> %203, %199
%208 = add <4 x i32> %206, %200
%209 = add nuw i64 %198, 8
%210 = icmp eq i64 %209, %196
br i1 %210, label %211, label %197
211: ; preds = %197
%212 = add <4 x i32> %208, %207
%213 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %212)
%214 = icmp eq i64 %195, 0
br i1 %214, label %230, label %215
215: ; preds = %191, %211
%216 = phi i64 [ 0, %191 ], [ %196, %211 ]
%217 = phi i32 [ 0, %191 ], [ %213, %211 ]
br label %222
218: ; preds = %185
%219 = add nsw i32 %171, -1
%220 = add nsw i32 %187, 1
%221 = icmp slt i32 %220, %1
br i1 %221, label %170, label %230
222: ; preds = %215, %222
%223 = phi i64 [ %228, %222 ], [ %216, %215 ]
%224 = phi i32 [ %227, %222 ], [ %217, %215 ]
%225 = getelementptr inbounds [1024 x i32], [1024 x i32]* %4, i64 0, i64 %223
%226 = load i32, i32* %225
%227 = add nsw i32 %226, %224
%228 = add nuw nsw i64 %223, 1
%229 = icmp eq i64 %228, %192
br i1 %229, label %230, label %222
230: ; preds = %218, %222, %179, %211, %166, %188
%231 = phi i32 [ 0, %188 ], [ %167, %166 ], [ 0, %211 ], [ %171, %179 ], [ 0, %222 ], [ %219, %218 ]
%232 = phi i32 [ 0, %188 ], [ 0, %166 ], [ %213, %211 ], [ 0, %179 ], [ %227, %222 ], [ 0, %218 ]
%233 = sext i32 %232 to i64
%234 = getelementptr inbounds [1024 x i32], [1024 x i32]* %6, i64 0, i64 %233
%235 = load i32, i32* %234
%236 = getelementptr inbounds [8 x i32], [8 x i32]* %7, i64 0, i64 %107
store i32 %235, i32* %236
%237 = getelementptr inbounds [1024 x i32], [1024 x i32]* %5, i64 0, i64 %107
%238 = load i32, i32* %237
%239 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.4, i64 0, i64 0), i32 %232, i32 %235, i32 %238)
%240 = and i64 %107, 3
%241 = icmp eq i64 %240, 3
br i1 %241, label %242, label %244
242: ; preds = %230
%243 = call i32 @putchar(i32 10)
br label %244
244: ; preds = %242, %230
%245 = add nuw nsw i64 %107, 1
%246 = icmp eq i64 %245, 8
br i1 %246, label %247, label %106
247: ; preds = %244
%248 = call i32 @putchar(i32 10)
%249 = bitcast i32** %2 to i8*
ret i32 0
}