user: 下面的汇编指令对应的C源代码是什么:

```asm
<uInIpv6Format32>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  sub    $0x18,%rsp
  movsbl (%rdi),%edi
  mov    %rcx,0x8(%rsp)
  mov    %r8,(%rsp)
  test   %dil,%dil
  je     L75
  mov    %rsi,%r12
  mov    %rdx,%r13
  mov    %r9,%r14
  xor    %ebx,%ebx
  lea    0x1(%rbp),%r15
  jmp    L113
  nopl   0x0(%rax,%rax,1)
L303:
  call   <isxdigit@plt>
  test   %eax,%eax
  je     L105
  movsbl (%r15),%edi
  add    $0x1,%r15
  test   %dil,%dil
  je     L409
L113:
  cmp    $0x3a,%dil
  jne    L303
  movsbl (%r15),%edi
  add    $0x1,%r15
  add    $0x1,%ebx
  test   %dil,%dil
  jne    L113
L409:
  cmp    $0x8,%ebx
  ja     L454
  lea    D417(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  push   0x60(%rsp)
  mov    %r14,%r8
  mov    %r12,%rdx
  mov    %rbp,%rdi
  push   0x60(%rsp)
  lea    D442(%rip),%rsi
  xor    %eax,%eax
  mov    0x10(%rsp),%rbx
  mov    0x60(%rsp),%r9
  mov    %rbx,%rcx
  call   <sscanf@plt>
  pop    %r9
  pop    %r10
  cmp    $0x6,%eax
  je     L302
  push   0x60(%rsp)
  mov    %r14,%r8
  mov    %rbp,%rdi
  mov    %r13,%rcx
  push   0x60(%rsp)
  mov    %r12,%rdx
  lea    D412(%rip),%rsi
  xor    %eax,%eax
  mov    0x60(%rsp),%r9
  call   <sscanf@plt>
  pop    %rdi
  pop    %r8
  cmp    $0x6,%eax
  je     L302
  push   0x60(%rsp)
  mov    %r13,%rcx
  lea    D173(%rip),%rsi
  xor    %eax,%eax
  push   0x60(%rsp)
  mov    %r12,%rdx
  mov    %rbp,%rdi
  mov    0x18(%rsp),%r15
  mov    0x60(%rsp),%r9
  mov    %r15,%r8
  call   <sscanf@plt>
  pop    %rcx
  pop    %rsi
  cmp    $0x6,%eax
  je     L302
  push   0x60(%rsp)
  mov    %r12,%rdx
  mov    %rbx,%r9
  mov    %r15,%r8
  push   0x60(%rsp)
  mov    %r13,%rcx
  lea    D328(%rip),%rsi
  xor    %eax,%eax
  mov    %rbp,%rdi
  call   <sscanf@plt>
  pop    %r11
  pop    %rdx
  cmp    $0x6,%eax
  je     L302
  push   0x60(%rsp)
  mov    %rbx,%r9
  mov    %r15,%r8
  mov    %r13,%rcx
  push   %r14
  mov    %r12,%rdx
  lea    D317(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <sscanf@plt>
  pop    %r9
  pop    %r10
  cmp    $0x6,%eax
  je     L302
  mov    %rbp,%rdi
  call   <strlen@plt>
  mov    $0x2,%edx
  lea    D209(%rip),%rsi
  lea    -0x2(%rax,%rbp,1),%edi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L530
  lea    D453(%rip),%rdi
  call   <puts@plt>
  nop
L105:
  xor    %eax,%eax
L415:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L75:
  lea    D206(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
  sub    $0x8,%rsp
  mov    %r13,%rcx
  mov    %r12,%rdx
  mov    %rbp,%rdi
  push   0x60(%rsp)
  lea    D362(%rip),%rsi
  xor    %eax,%eax
  push   0x60(%rsp)
  push   %r14
  mov    0x20(%rsp),%r9
  mov    0x28(%rsp),%r8
  call   <sscanf@plt>
  add    $0x20,%rsp
  cmp    $0x7,%eax
  jne    L158
L302:
  sub    $0x8,%rsp
  lea    D32(%rip),%rdi
  mov    0x68(%rsp),%rax
  mov    (%rax),%eax
  push   %rax
  mov    0x68(%rsp),%rax
  mov    (%rax),%eax
  push   %rax
  mov    0x68(%rsp),%rax
  mov    (%rax),%eax
  push   %rax
  mov    0x20(%rsp),%rax
  mov    (%r14),%r9d
  mov    0x0(%r13),%edx
  mov    (%rax),%r8d
  mov    0x28(%rsp),%rax
  mov    (%r12),%esi
  mov    (%rax),%ecx
  xor    %eax,%eax
  call   <printf@plt>
  add    $0x20,%rsp
  mov    $0x1,%eax
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  mov    0x60(%rsp),%rcx
  xor    %eax,%eax
  mov    %r12,%rdx
  mov    %rbp,%rdi
  lea    D12(%rip),%rsi
  call   <sscanf@plt>
  cmp    $0x2,%eax
  je     L302
  mov    %rbp,%rdi
  call   <strlen@plt>
  mov    $0x2,%edx
  lea    D209(%rip),%rsi
  lea    -0x2(%rax,%rbp,1),%edi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L168
  lea    D472(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
  mov    0x60(%rsp),%r8
  mov    0x58(%rsp),%rcx
  xor    %eax,%eax
  mov    %r12,%rdx
  lea    D64(%rip),%rsi
  mov    %rbp,%rdi
  call   <sscanf@plt>
  cmp    $0x3,%eax
  je     L302
  mov    0x60(%rsp),%r8
  xor    %eax,%eax
  mov    %r13,%rcx
  mov    %r12,%rdx
  lea    D161(%rip),%rsi
  mov    %rbp,%rdi
  call   <sscanf@plt>
  cmp    $0x3,%eax
  je     L302
  mov    %rbp,%rdi
  call   <strlen@plt>
  mov    $0x2,%edx
  lea    D209(%rip),%rsi
  lea    -0x2(%rax,%rbp,1),%edi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L26
  lea    D68(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
  mov    0x60(%rsp),%r9
  mov    0x58(%rsp),%r8
  xor    %eax,%eax
  mov    %r12,%rdx
  mov    0x50(%rsp),%rcx
  lea    D193(%rip),%rsi
  mov    %rbp,%rdi
  call   <sscanf@plt>
  cmp    $0x4,%eax
  je     L302
  mov    0x60(%rsp),%r9
  mov    0x58(%rsp),%r8
  xor    %eax,%eax
  mov    %r13,%rcx
  mov    %r12,%rdx
  lea    D437(%rip),%rsi
  mov    %rbp,%rdi
  call   <sscanf@plt>
  cmp    $0x4,%eax
  je     L302
  mov    0x60(%rsp),%r9
  mov    0x8(%rsp),%r8
  xor    %eax,%eax
  mov    %r13,%rcx
  mov    %r12,%rdx
  lea    D220(%rip),%rsi
  mov    %rbp,%rdi
  call   <sscanf@plt>
  cmp    $0x4,%eax
  je     L302
  mov    %rbp,%rdi
  call   <strlen@plt>
  mov    $0x2,%edx
  lea    D209(%rip),%rsi
  lea    -0x2(%rax,%rbp,1),%edi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L542
  lea    D398(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
  nopw   0x0(%rax,%rax,1)
  sub    $0x8,%rsp
  mov    %rbp,%rdi
  mov    %r14,%rcx
  mov    %r12,%rdx
  push   0x68(%rsp)
  mov    0x68(%rsp),%r9
  lea    D284(%rip),%rsi
  xor    %eax,%eax
  mov    0x60(%rsp),%r8
  call   <sscanf@plt>
  pop    %rdi
  pop    %r8
  cmp    $0x5,%eax
  je     L302
  sub    $0x8,%rsp
  mov    %r13,%rcx
  lea    D266(%rip),%rsi
  xor    %eax,%eax
  push   0x68(%rsp)
  mov    0x68(%rsp),%r9
  mov    %r12,%rdx
  mov    %rbp,%rdi
  mov    0x60(%rsp),%r8
  call   <sscanf@plt>
  pop    %rcx
  pop    %rsi
  cmp    $0x5,%eax
  je     L302
  sub    $0x8,%rsp
  mov    %r12,%rdx
  mov    %r13,%rcx
  mov    %rbp,%rdi
  push   0x68(%rsp)
  mov    0x18(%rsp),%rbx
  lea    D303(%rip),%rsi
  xor    %eax,%eax
  mov    0x68(%rsp),%r9
  mov    %rbx,%r8
  call   <sscanf@plt>
  pop    %r15
  pop    %rdx
  cmp    $0x5,%eax
  je     L302
  sub    $0x8,%rsp
  mov    %rbx,%r8
  mov    %r13,%rcx
  mov    %r12,%rdx
  push   0x68(%rsp)
  mov    0x10(%rsp),%r9
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D151(%rip),%rsi
  call   <sscanf@plt>
  pop    %r11
  pop    %rbx
  cmp    $0x5,%eax
  je     L302
  mov    %rbp,%rdi
  call   <strlen@plt>
  mov    $0x2,%edx
  lea    D209(%rip),%rsi
  lea    -0x2(%rax,%rbp,1),%edi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L44
  lea    D461(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
  nopl   0x0(%rax)
  sub    $0x8,%rsp
  mov    %r14,%r9
  mov    %r12,%rdx
  mov    %rbp,%rdi
  push   0x68(%rsp)
  lea    D432(%rip),%rsi
  xor    %eax,%eax
  push   0x68(%rsp)
  push   0x68(%rsp)
  mov    0x20(%rsp),%rbx
  mov    0x28(%rsp),%r15
  mov    %rbx,%r8
  mov    %r15,%rcx
  call   <sscanf@plt>
  add    $0x20,%rsp
  cmp    $0x7,%eax
  je     L302
  sub    $0x8,%rsp
  mov    %r14,%r9
  mov    %rbx,%r8
  mov    %r13,%rcx
  push   0x68(%rsp)
  mov    %r12,%rdx
  lea    D137(%rip),%rsi
  xor    %eax,%eax
  push   0x68(%rsp)
  mov    %rbp,%rdi
  push   0x68(%rsp)
  call   <sscanf@plt>
  add    $0x20,%rsp
  cmp    $0x7,%eax
  je     L302
  sub    $0x8,%rsp
  mov    %r14,%r9
  mov    %r15,%r8
  mov    %r13,%rcx
  push   0x68(%rsp)
  mov    %r12,%rdx
  lea    D226(%rip),%rsi
  xor    %eax,%eax
  push   0x68(%rsp)
  mov    %rbp,%rdi
  push   0x68(%rsp)
  call   <sscanf@plt>
  add    $0x20,%rsp
  cmp    $0x7,%eax
  je     L302
  sub    $0x8,%rsp
  mov    %rbx,%r9
  mov    %r15,%r8
  mov    %r13,%rcx
  push   0x68(%rsp)
  mov    %r12,%rdx
  lea    D92(%rip),%rsi
  xor    %eax,%eax
  push   0x68(%rsp)
  mov    %rbp,%rdi
  push   0x68(%rsp)
  call   <sscanf@plt>
  add    $0x20,%rsp
  cmp    $0x7,%eax
  je     L302
  sub    $0x8,%rsp
  mov    %rbx,%r9
  mov    %r15,%r8
  mov    %r13,%rcx
  push   0x68(%rsp)
  mov    %r12,%rdx
  lea    D200(%rip),%rsi
  xor    %eax,%eax
  push   0x68(%rsp)
  mov    %rbp,%rdi
  push   %r14
  call   <sscanf@plt>
  add    $0x20,%rsp
  cmp    $0x7,%eax
  je     L302
  sub    $0x8,%rsp
  mov    %rbx,%r9
  mov    %r15,%r8
  mov    %r13,%rcx
  push   0x68(%rsp)
  mov    %r12,%rdx
  lea    D77(%rip),%rsi
  xor    %eax,%eax
  push   0x60(%rsp)
  mov    %rbp,%rdi
  push   %r14
  call   <sscanf@plt>
  add    $0x20,%rsp
  cmp    $0x7,%eax
  je     L302
  push   0x60(%rsp)
  mov    %rbx,%r9
  mov    %r15,%r8
  mov    %r13,%rcx
  push   0x60(%rsp)
  mov    %r12,%rdx
  lea    D304(%rip),%rsi
  xor    %eax,%eax
  push   0x60(%rsp)
  mov    %rbp,%rdi
  push   %r14
  call   <sscanf@plt>
  add    $0x20,%rsp
  cmp    $0x8,%eax
  je     L302
  mov    %rbp,%rdi
  call   <strlen@plt>
  mov    $0x2,%edx
  lea    D209(%rip),%rsi
  lea    -0x2(%rax,%rbp,1),%edi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L176
  lea    D84(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
  nopw   0x0(%rax,%rax,1)
L454:
  lea    D147(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
L158:
  lea    D162(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
L168:
  mov    %r12,%rdx
  lea    D169(%rip),%rsi
  mov    %rbp,%rdi
  call   <sscanf@plt>
  cmp    $0x1,%eax
  je     L302
  lea    D352(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
L26:
  mov    %r13,%rcx
  mov    %r12,%rdx
  lea    D441(%rip),%rsi
  mov    %rbp,%rdi
  call   <sscanf@plt>
  cmp    $0x2,%eax
  je     L302
  lea    D180(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
L542:
  mov    0x8(%rsp),%r8
  mov    %r13,%rcx
  mov    %r12,%rdx
  mov    %rbp,%rdi
  lea    D70(%rip),%rsi
  call   <sscanf@plt>
  cmp    $0x3,%eax
  je     L302
  lea    D312(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
L44:
  mov    (%rsp),%r9
  mov    0x8(%rsp),%r8
  mov    %r13,%rcx
  mov    %r12,%rdx
  lea    D283(%rip),%rsi
  mov    %rbp,%rdi
  call   <sscanf@plt>
  cmp    $0x4,%eax
  je     L302
  lea    D279(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
L530:
  push   %rsi
  mov    %rbp,%rdi
  mov    %r13,%rcx
  mov    %r12,%rdx
  push   %r14
  mov    0x10(%rsp),%r9
  lea    D190(%rip),%rsi
  mov    0x18(%rsp),%r8
  call   <sscanf@plt>
  pop    %rdi
  pop    %r8
  cmp    $0x5,%eax
  je     L302
  lea    D483(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
L176:
  push   0x50(%rsp)
  mov    %r13,%rcx
  mov    %r12,%rdx
  mov    %rbp,%rdi
  push   %r14
  lea    D35(%rip),%rsi
  mov    0x10(%rsp),%r9
  mov    0x18(%rsp),%r8
  call   <sscanf@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0x6,%eax
  je     L302
  lea    D133(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  jmp    L415
```

tool_calls: name: parse_data
arguments: tag: D442
type_infered: string
name: parse_data
arguments: tag: D412
type_infered: string
name: parse_data
arguments: tag: D173
type_infered: string
name: parse_data
arguments: tag: D328
type_infered: string
name: parse_data
arguments: tag: D317
type_infered: string
name: parse_data
arguments: tag: D209
type_infered: string
name: parse_data
arguments: tag: D453
type_infered: string
name: parse_data
arguments: tag: D206
type_infered: string
name: parse_data
arguments: tag: D362
type_infered: string
name: parse_data
arguments: tag: D32
type_infered: string
name: parse_data
arguments: tag: D12
type_infered: string
name: parse_data
arguments: tag: D472
type_infered: string
name: parse_data
arguments: tag: D64
type_infered: string
name: parse_data
arguments: tag: D161
type_infered: string
name: parse_data
arguments: tag: D68
type_infered: string
name: parse_data
arguments: tag: D193
type_infered: string
name: parse_data
arguments: tag: D437
type_infered: string
name: parse_data
arguments: tag: D220
type_infered: string
name: parse_data
arguments: tag: D398
type_infered: string
name: parse_data
arguments: tag: D284
type_infered: string
name: parse_data
arguments: tag: D266
type_infered: string
name: parse_data
arguments: tag: D303
type_infered: string
name: parse_data
arguments: tag: D151
type_infered: string
name: parse_data
arguments: tag: D461
type_infered: string
name: parse_data
arguments: tag: D432
type_infered: string
name: parse_data
arguments: tag: D137
type_infered: string
name: parse_data
arguments: tag: D226
type_infered: string
name: parse_data
arguments: tag: D92
type_infered: string
name: parse_data
arguments: tag: D200
type_infered: string
name: parse_data
arguments: tag: D77
type_infered: string
name: parse_data
arguments: tag: D304
type_infered: string
name: parse_data
arguments: tag: D84
type_infered: string
name: parse_data
arguments: tag: D147
type_infered: string
name: parse_data
arguments: tag: D162
type_infered: string
name: parse_data
arguments: tag: D169
type_infered: string
name: parse_data
arguments: tag: D352
type_infered: string
name: parse_data
arguments: tag: D441
type_infered: string
name: parse_data
arguments: tag: D180
type_infered: string
name: parse_data
arguments: tag: D70
type_infered: string
name: parse_data
arguments: tag: D312
type_infered: string
name: parse_data
arguments: tag: D283
type_infered: string
name: parse_data
arguments: tag: D279
type_infered: string
name: parse_data
arguments: tag: D190
type_infered: string
name: parse_data
arguments: tag: D483
type_infered: string
name: parse_data
arguments: tag: D35
type_infered: string
name: parse_data
arguments: tag: D133
type_infered: string

tool: D442: %x::%x:%x:%x:%x:%x

tool: D412: %x:%x::%x:%x:%x:%x

tool: D173: %x:%x:%x::%x:%x:%x

tool: D328: %x:%x:%x:%x::%x:%x

tool: D317: %x:%x:%x:%x:%x::%x

tool: D209: ::

tool: D453: err 6b

tool: D206: err 1

tool: D362: %x:%x:%x:%x:%x:%x:%x::

tool: D32: uInIpv6Format32: %x:%x:%x:%x:%x:%x:%x:%x


tool: D12: %x::%x

tool: D472: err 2b

tool: D64: %x::%x:%x

tool: D161: %x:%x::%x

tool: D68: err 3b

tool: D193: %x::%x:%x:%x

tool: D437: %x:%x::%x:%x

tool: D220: %x:%x:%x::%x

tool: D398: err 4b

tool: D284: %x::%x:%x:%x:%x

tool: D266: %x:%x::%x:%x:%x

tool: D303: %x:%x:%x::%x:%x

tool: D151: %x:%x:%x:%x::%x

tool: D461: err 5b

tool: D432: %x::%x:%x:%x:%x:%x:%x

tool: D137: %x:%x::%x:%x:%x:%x:%x

tool: D226: %x:%x:%x::%x:%x:%x:%x

tool: D92: %x:%x:%x:%x::%x:%x:%x

tool: D200: %x:%x:%x:%x:%x::%x:%x

tool: D77: %x:%x:%x:%x:%x:%x::%x

tool: D304: %x:%x:%x:%x:%x:%x:%x:%x

tool: D84: err 7b

tool: D147: err default

tool: D162: err 8

tool: D169: %x::

tool: D352: err 2a

tool: D441: %x:%x::

tool: D180: err 3a

tool: D70: %x:%x:%x::

tool: D312: err 4a

tool: D283: %x:%x:%x:%x::

tool: D279: err 5a

tool: D190: %x:%x:%x:%x:%x::

tool: D483: err 6a

tool: D35: %x:%x:%x:%x:%x:%x::

tool: D133: err 7a

assistant: ```c
unsigned uInIpv6Format32(const char *cIPv6, unsigned *h1, unsigned *h2, unsigned *h3, unsigned *h4, unsigned *h5, unsigned *h6, unsigned *h7, unsigned *h8) {
  register int i;
  unsigned uColonCount = 0;
  unsigned uRead = 0;
  for (i = 0; cIPv6[i]; i++) {
    if (cIPv6[i] == ':')
      uColonCount++;
    if (cIPv6[i] != ':' && !isxdigit(cIPv6[i]))
      return (0);
  }
  switch (uColonCount) {
  case 0:
  case 1:
    printf("err 1\n");
    return (0);
    break;
  case 2:
    uRead = sscanf(cIPv6, "%x::%x", h1, h8);
    if (uRead != 2 && !strncmp(cIPv6 + strlen(cIPv6) - 2, "::", 2)) {
      uRead = sscanf(cIPv6, "%x::", h1);
      if (uRead != 1) {
        printf("err 2a\n");
        return (0);
      }
    } else if (uRead != 2) {
      printf("err 2b\n");
      return (0);
    }
    break;
  case 3:
    uRead = sscanf(cIPv6, "%x::%x:%x", h1, h7, h8);
    if (uRead != 3) {
      uRead = sscanf(cIPv6, "%x:%x::%x", h1, h2, h8);
      if (uRead != 3 && !strncmp(cIPv6 + strlen(cIPv6) - 2, "::", 2)) {
        uRead = sscanf(cIPv6, "%x:%x::", h1, h2);
        if (uRead != 2) {
          printf("err 3a\n");
          return (0);
        }
      } else if (uRead != 3) {
        printf("err 3b\n");
        return (0);
      }
    }
    break;
  case 4:
    uRead = sscanf(cIPv6, "%x::%x:%x:%x", h1, h6, h7, h8);
    if (uRead != 4) {
      uRead = sscanf(cIPv6, "%x:%x::%x:%x", h1, h2, h7, h8);
      if (uRead != 4) {
        uRead = sscanf(cIPv6, "%x:%x:%x::%x", h1, h2, h3, h8);
        if (uRead != 4 && !strncmp(cIPv6 + strlen(cIPv6) - 2, "::", 2)) {
          uRead = sscanf(cIPv6, "%x:%x:%x::", h1, h2, h3);
          if (uRead != 3) {
            printf("err 4a\n");
            return (0);
          }
        } else if (uRead != 4) {
          printf("err 4b\n");
          return (0);
        }
      }
    }
    break;
  case 5:
    uRead = sscanf(cIPv6, "%x::%x:%x:%x:%x", h1, h5, h6, h7, h8);
    if (uRead != 5) {
      uRead = sscanf(cIPv6, "%x:%x::%x:%x:%x", h1, h2, h6, h7, h8);
      if (uRead != 5) {
        uRead = sscanf(cIPv6, "%x:%x:%x::%x:%x", h1, h2, h3, h7, h8);
        if (uRead != 5) {
          uRead = sscanf(cIPv6, "%x:%x:%x:%x::%x", h1, h2, h3, h4, h8);
          if (uRead != 5 && !strncmp(cIPv6 + strlen(cIPv6) - 2, "::", 2)) {
            uRead = sscanf(cIPv6, "%x:%x:%x:%x::", h1, h2, h3, h4);
            if (uRead != 4) {
              printf("err 5a\n");
              return (0);
            }
          } else if (uRead != 5) {
            printf("err 5b\n");
            return (0);
          }
        }
      }
    }
    break;
  case 6:
    uRead = sscanf(cIPv6, "%x::%x:%x:%x:%x:%x", h1, h4, h5, h6, h7, h8);
    if (uRead != 6) {
      uRead = sscanf(cIPv6, "%x:%x::%x:%x:%x:%x", h1, h2, h5, h6, h7, h8);
      if (uRead != 6) {
        uRead = sscanf(cIPv6, "%x:%x:%x::%x:%x:%x", h1, h2, h3, h6, h7, h8);
        if (uRead != 6) {
          uRead = sscanf(cIPv6, "%x:%x:%x:%x::%x:%x", h1, h2, h3, h4, h7, h8);
          if (uRead != 6) {
            uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x::%x", h1, h2, h3, h4, h5, h8);
            if (uRead != 6 && !strncmp(cIPv6 + strlen(cIPv6) - 2, "::", 2)) {
              uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x::", h1, h2, h3, h4, h5);
              if (uRead != 5) {
                printf("err 6a\n");
                return (0);
              }
            } else if (uRead != 6) {
              printf("err 6b\n");
              return (0);
            }
          }
        }
      }
    }
    break;
  case 7:
    uRead = sscanf(cIPv6, "%x::%x:%x:%x:%x:%x:%x", h1, h3, h4, h5, h6, h7, h8);
    if (uRead != 7) {
      uRead = sscanf(cIPv6, "%x:%x::%x:%x:%x:%x:%x", h1, h2, h4, h5, h6, h7, h8);
      if (uRead != 7) {
        uRead = sscanf(cIPv6, "%x:%x:%x::%x:%x:%x:%x", h1, h2, h3, h5, h6, h7, h8);
        if (uRead != 7) {
          uRead = sscanf(cIPv6, "%x:%x:%x:%x::%x:%x:%x", h1, h2, h3, h4, h6, h7, h8);
          if (uRead != 7) {
            uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x::%x:%x", h1, h2, h3, h4, h5, h7, h8);
            if (uRead != 7) {
              uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x:%x::%x", h1, h2, h3, h4, h5, h6, h8);
              if (uRead != 7) {
                uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x:%x:%x:%x", h1, h2, h3, h4, h5, h6, h7, h8);
                if (uRead != 8 && !strncmp(cIPv6 + strlen(cIPv6) - 2, "::", 2)) {
                  uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x:%x::", h1, h2, h3, h4, h5, h6);
                  if (uRead != 6) {
                    printf("err 7a\n");
                    return (0);
                  }
                } else if (uRead != 8) {
                  printf("err 7b\n");
                  return (0);
                }
              }
            }
          }
        }
      }
    }
    break;
  case 8:
    uRead = sscanf(cIPv6, "%x:%x:%x:%x:%x:%x:%x::", h1, h2, h3, h4, h5, h6, h7);
    if (uRead != 7) {
      printf("err 8\n");
      return (0);
    }
    break;
  default:
    printf("err default\n");
    return (0);
  }
  printf("uInIpv6Format32: %x:%x:%x:%x:%x:%x:%x:%x\n", *h1, *h2, *h3, *h4, *h5, *h6, *h7, *h8);
  return (1);
}
```