user: What would the C source look like for the assembly code provided here?

```asm
<_get_str2int>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xc0,%rsp
  mov    %rdi,-0xb8(%rbp)
  mov    %rsi,-0xc0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0xac(%rbp)
  movl   $0x1,-0xa0(%rbp)
  movl   $0x2,-0xa8(%rbp)
  mov    -0xb8(%rbp),%rax
  mov    %rax,-0x98(%rbp)
  movb   $0x0,-0xae(%rbp)
  mov    -0x98(%rbp),%rax
  mov    $0x5,%edx
  lea    D0(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L250
  mov    -0x98(%rbp),%rax
  add    $0x5,%rax
  movzbl (%rax),%eax
  cmp    $0x50,%al
  je     L260
  mov    -0x98(%rbp),%rax
  add    $0x5,%rax
  movzbl (%rax),%eax
  cmp    $0x70,%al
  jne    L846
L260:
  movb   $0x3,-0xae(%rbp)
  addq   $0x6,-0x98(%rbp)
  jmp    L846
L250:
  mov    -0x98(%rbp),%rax
  mov    $0x7,%edx
  lea    D41(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L248
  movb   $0x0,-0xae(%rbp)
  addq   $0x7,-0x98(%rbp)
  jmp    L846
L248:
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x22,%al
  jne    L963
  movb   $0x5,-0xae(%rbp)
  addq   $0x1,-0x98(%rbp)
  jmp    L846
L963:
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x30,%al
  jne    L386
  mov    -0x98(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x78,%al
  je     L358
  mov    -0x98(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x58,%al
  jne    L386
L358:
  addq   $0x2,-0x98(%rbp)
  movb   $0x2,-0xae(%rbp)
  jmp    L846
L386:
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L731
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jg     L731
  movb   $0x1,-0xae(%rbp)
  jmp    L846
L731:
  mov    -0x98(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L233
  mov    -0x98(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jg     L233
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2d,%al
  jne    L233
  addq   $0x1,-0x98(%rbp)
  movb   $0x1,-0xae(%rbp)
  movl   $0xffffffff,-0xa0(%rbp)
  jmp    L846
L233:
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L846
  addq   $0x1,-0x98(%rbp)
  movb   $0x4,-0xae(%rbp)
L846:
  cmpb   $0x0,-0xae(%rbp)
  jne    L895
  movl   $0x0,-0xa8(%rbp)
  jmp    L1150
L654:
  addl   $0x1,-0xa8(%rbp)
  cmpl   $0x7f,-0xa8(%rbp)
  jg     L590
L1150:
  mov    -0xa8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L654
  jmp    L50
L590:
  nop
L50:
  mov    -0xa8(%rbp),%eax
  and    $0x3,%eax
  test   %eax,%eax
  je     L998
  mov    -0xa8(%rbp),%eax
  and    $0xfffffffc,%eax
  add    $0x4,%eax
  mov    %eax,-0xa8(%rbp)
  jmp    L497
L998:
  addl   $0x4,-0xa8(%rbp)
L497:
  mov    -0xa8(%rbp),%eax
  sar    $0x2,%eax
  mov    %eax,%edx
  mov    -0xc0(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0xb8(%rbp),%rax
  cmp    -0x98(%rbp),%rax
  je     L1166
  mov    -0xc0(%rbp),%rax
  add    $0x4,%rax
  movl   $0x0,(%rax)
  jmp    L108
L1166:
  mov    -0xc0(%rbp),%rax
  add    $0x4,%rax
  movl   $0x1,(%rax)
L108:
  mov    $0x2,%eax
  jmp    L1012
L895:
  cmpb   $0x5,-0xae(%rbp)
  jne    L614
  movl   $0x0,-0xa8(%rbp)
  jmp    L408
L67:
  addl   $0x1,-0xa8(%rbp)
  cmpl   $0x7f,-0xa8(%rbp)
  jg     L130
L408:
  mov    -0xa8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x22,%al
  jne    L67
  jmp    L725
L130:
  nop
L725:
  mov    -0xa8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  mov    -0xa8(%rbp),%eax
  and    $0x3,%eax
  test   %eax,%eax
  je     L213
  mov    -0xa8(%rbp),%eax
  and    $0xfffffffc,%eax
  add    $0x4,%eax
  mov    %eax,-0xa8(%rbp)
  jmp    L82
L213:
  addl   $0x4,-0xa8(%rbp)
L82:
  mov    -0xa8(%rbp),%eax
  sar    $0x2,%eax
  mov    %eax,%edx
  mov    -0xc0(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0xc0(%rbp),%rax
  add    $0x4,%rax
  movl   $0x5,(%rax)
  mov    $0x2,%eax
  jmp    L1012
L614:
  cmpb   $0x1,-0xae(%rbp)
  jne    L548
  jmp    L589
L753:
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L546
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jg     L546
  mov    -0xac(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  add    %edx,%eax
  sub    $0x30,%eax
  mov    %eax,-0xac(%rbp)
  addq   $0x1,-0x98(%rbp)
  jmp    L589
L546:
  mov    $0xffffffff,%eax
  jmp    L1012
L589:
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L753
  mov    -0xa0(%rbp),%eax
  imul   -0xac(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc0(%rbp),%rax
  mov    %edx,(%rax)
  mov    $0x1,%eax
  jmp    L1012
L548:
  cmpb   $0x2,-0xae(%rbp)
  jne    L1001
  jmp    L1170
L23:
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L1172
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jg     L1172
  mov    -0xac(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  add    %edx,%eax
  sub    $0x30,%eax
  mov    %eax,-0xac(%rbp)
  addq   $0x1,-0x98(%rbp)
  jmp    L1170
L1172:
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x40,%al
  jle    L112
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x46,%al
  jg     L112
  mov    -0xac(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  add    %edx,%eax
  sub    $0x37,%eax
  mov    %eax,-0xac(%rbp)
  addq   $0x1,-0x98(%rbp)
  jmp    L1170
L112:
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x60,%al
  jle    L122
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x66,%al
  jg     L122
  mov    -0xac(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  add    %edx,%eax
  sub    $0x57,%eax
  mov    %eax,-0xac(%rbp)
  addq   $0x1,-0x98(%rbp)
  jmp    L1170
L122:
  mov    $0xffffffff,%eax
  jmp    L1012
L1170:
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L23
  mov    -0xac(%rbp),%edx
  mov    -0xc0(%rbp),%rax
  mov    %edx,(%rax)
  mov    $0x1,%eax
  jmp    L1012
L1001:
  cmpb   $0x3,-0xae(%rbp)
  jne    L580
  movl   $0x0,-0x9c(%rbp)
  mov    -0x98(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x98(%rbp)
  movzbl (%rax),%eax
  mov    %al,-0xad(%rbp)
  cmpb   $0x6f,-0xad(%rbp)
  je     L1220
  cmpb   $0x4f,-0xad(%rbp)
  jne    L70
L1220:
  mov    -0x98(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0xad(%rbp)
  cmpb   $0x77,-0xad(%rbp)
  je     L1027
  cmpb   $0x57,-0xad(%rbp)
  jne    L70
L1027:
  mov    -0x98(%rbp),%rax
  movzbl 0x1(%rax),%eax
  mov    %al,-0xad(%rbp)
  cmpb   $0x65,-0xad(%rbp)
  je     L1142
  cmpb   $0x45,-0xad(%rbp)
  jne    L70
L1142:
  mov    -0x98(%rbp),%rax
  movzbl 0x2(%rax),%eax
  mov    %al,-0xad(%rbp)
  cmpb   $0x72,-0xad(%rbp)
  je     L574
  cmpb   $0x52,-0xad(%rbp)
  jne    L70
L574:
  mov    -0xc0(%rbp),%rax
  movl   $0xffff,(%rax)
  addq   $0x3,-0x98(%rbp)
  movl   $0x1,-0x9c(%rbp)
L70:
  cmpl   $0x0,-0x9c(%rbp)
  jne    L1083
  cmpb   $0x40,-0xad(%rbp)
  jle    L512
  cmpb   $0x5a,-0xad(%rbp)
  jg     L512
  movsbl -0xad(%rbp),%eax
  lea    -0x40(%rax),%edx
  mov    -0xc0(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L1083
L512:
  cmpb   $0x60,-0xad(%rbp)
  jle    L1032
  cmpb   $0x7a,-0xad(%rbp)
  jg     L1032
  movsbl -0xad(%rbp),%eax
  lea    -0x60(%rax),%edx
  mov    -0xc0(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L1083
L1032:
  mov    $0xffffffff,%eax
  jmp    L1012
L1083:
  mov    -0x98(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x98(%rbp)
  movzbl (%rax),%eax
  mov    %al,-0xad(%rbp)
  movl   $0x0,-0xac(%rbp)
  jmp    L323
L271:
  cmpb   $0x2f,-0xad(%rbp)
  jle    L324
  cmpb   $0x39,-0xad(%rbp)
  jg     L324
  mov    -0xac(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  mov    %eax,%edx
  movsbl -0xad(%rbp),%eax
  add    %edx,%eax
  sub    $0x30,%eax
  mov    %eax,-0xac(%rbp)
  mov    -0x98(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x98(%rbp)
  movzbl (%rax),%eax
  mov    %al,-0xad(%rbp)
  jmp    L323
L324:
  cmpb   $0x0,-0xad(%rbp)
  jne    L751
  subq   $0x1,-0x98(%rbp)
  jmp    L1177
L751:
  mov    $0xffffffff,%eax
  jmp    L1012
L323:
  cmpb   $0x3c,-0xad(%rbp)
  jne    L271
L1177:
  mov    -0xc0(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    -0xac(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x98(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x98(%rbp)
  movzbl (%rax),%eax
  mov    %al,-0xad(%rbp)
  jmp    L68
L905:
  movl   $0x0,-0xa4(%rbp)
  lea    -0x90(%rbp),%rax
  mov    $0x80,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  jmp    L856
L1122:
  cmpb   $0x40,-0xad(%rbp)
  jle    L739
  cmpb   $0x5a,-0xad(%rbp)
  jg     L739
  movzbl -0xad(%rbp),%eax
  add    $0x20,%eax
  mov    %al,-0xad(%rbp)
L739:
  mov    -0xa4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0xa4(%rbp)
  cltq
  movzbl -0xad(%rbp),%edx
  mov    %dl,-0x90(%rbp,%rax,1)
  mov    -0x98(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x98(%rbp)
  movzbl (%rax),%eax
  mov    %al,-0xad(%rbp)
L856:
  cmpb   $0x3e,-0xad(%rbp)
  jne    L1122
  mov    -0xa4(%rbp),%eax
  cltq
  movb   $0x0,-0x90(%rbp,%rax,1)
  lea    -0x90(%rbp),%rax
  lea    D39(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L1164
  mov    -0xa8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xc0(%rbp),%rax
  add    %rdx,%rax
  movl   $0xffffffff,(%rax)
  jmp    L568
L1164:
  lea    -0x90(%rbp),%rax
  lea    D19(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L1064
  mov    -0xa8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xc0(%rbp),%rax
  add    %rdx,%rax
  movl   $0xffffffff,(%rax)
  jmp    L568
L1064:
  lea    -0x90(%rbp),%rax
  lea    D12(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L4
  mov    -0xa8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xc0(%rbp),%rax
  add    %rdx,%rax
  movl   $0xffffffff,(%rax)
  jmp    L568
L4:
  lea    -0x90(%rbp),%rax
  lea    D37(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L910
  mov    -0xa8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xc0(%rbp),%rax
  add    %rdx,%rax
  movl   $0xffffffff,(%rax)
  jmp    L568
L910:
  movl   $0x0,-0xa4(%rbp)
  mov    -0xa4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0xa4(%rbp)
  cltq
  movzbl -0x90(%rbp,%rax,1),%eax
  mov    %al,-0xad(%rbp)
  movl   $0x0,-0xac(%rbp)
  cmpb   $0x2d,-0xad(%rbp)
  jne    L1155
  movl   $0xffffffff,-0xa0(%rbp)
  mov    -0xa4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0xa4(%rbp)
  cltq
  movzbl -0x90(%rbp,%rax,1),%eax
  mov    %al,-0xad(%rbp)
  jmp    L1155
L828:
  cmpb   $0x2f,-0xad(%rbp)
  jle    L218
  cmpb   $0x39,-0xad(%rbp)
  jg     L218
  mov    -0xac(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  mov    %eax,%edx
  movsbl -0xad(%rbp),%eax
  add    %edx,%eax
  sub    $0x30,%eax
  mov    %eax,-0xac(%rbp)
  mov    -0xa4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0xa4(%rbp)
  cltq
  movzbl -0x90(%rbp,%rax,1),%eax
  mov    %al,-0xad(%rbp)
  jmp    L1155
L218:
  mov    $0xffffffff,%eax
  jmp    L1012
L1155:
  cmpb   $0x0,-0xad(%rbp)
  jne    L828
  mov    -0xa0(%rbp),%eax
  imul   -0xac(%rbp),%eax
  mov    %eax,%edx
  mov    -0xa8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0xc0(%rbp),%rax
  add    %rcx,%rax
  mov    %edx,(%rax)
L568:
  addl   $0x1,-0xa8(%rbp)
  mov    -0x98(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x98(%rbp)
  movzbl (%rax),%eax
  mov    %al,-0xad(%rbp)
  cmpb   $0x3c,-0xad(%rbp)
  jne    L538
  mov    -0x98(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x98(%rbp)
  movzbl (%rax),%eax
  mov    %al,-0xad(%rbp)
  jmp    L68
L538:
  cmpb   $0x0,-0xad(%rbp)
  je     L68
  mov    $0xffffffff,%eax
  jmp    L1012
L68:
  cmpb   $0x0,-0xad(%rbp)
  jne    L905
  cmpl   $0x6,-0xa8(%rbp)
  je     L798
  cmpl   $0x6,-0xa8(%rbp)
  jg     L779
  cmpl   $0x5,-0xa8(%rbp)
  je     L501
  cmpl   $0x5,-0xa8(%rbp)
  jg     L779
  cmpl   $0x3,-0xa8(%rbp)
  je     L262
  cmpl   $0x4,-0xa8(%rbp)
  je     L1180
  jmp    L779
L262:
  mov    -0xc0(%rbp),%rax
  add    $0xc,%rax
  movl   $0xffffffff,(%rax)
L1180:
  mov    -0xc0(%rbp),%rax
  add    $0x10,%rax
  movl   $0xffffffff,(%rax)
L501:
  mov    -0xc0(%rbp),%rax
  add    $0x14,%rax
  movl   $0xffffffff,(%rax)
  jmp    L798
L779:
  mov    $0xffffffff,%eax
  jmp    L1012
L798:
  nop
  mov    $0x4,%eax
  jmp    L1012
L580:
  cmpb   $0x4,-0xae(%rbp)
  jne    L925
  mov    -0xc0(%rbp),%rax
  movl   $0x1,(%rax)
  mov    $0x5,%eax
  jmp    L1012
L925:
  mov    $0xffffffff,%eax
L1012:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L201
  call   <__stack_chk_fail@plt>
L201:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D0
data_type: string
name: extract_symbolic_data
arguments: tag: D41
data_type: string
name: extract_symbolic_data
arguments: tag: D39
data_type: string
name: extract_symbolic_data
arguments: tag: D19
data_type: string
name: extract_symbolic_data
arguments: tag: D12
data_type: string
name: extract_symbolic_data
arguments: tag: D37
data_type: string

tool: D0: port:

tool: D41: string:

tool: D39: default

tool: D19: none

tool: D12: null

tool: D37: -1

assistant: ```c
int _get_str2int(char *saddr, int value[]) {
  char *src;
  char off, ch;
  unsigned int tmp_value = 0;
  int data_count, i;
  char tmp_str[128];
  int sign = 1;
  data_count = 2;
  src = saddr;
  off = 0;
  if (!strncmp(src, "port:", 5)) {
    if ((src[5] == 'P') || (src[5] == 'p')) {
      off = 3;
      src += 6;
    }
  } else if (!strncmp(src, "string:", 7)) {
    off = 0;
    src += 7;
  } else if (src[0] == '"') {
    off = 5;
    src += 1;
  } else if ((src[0] == '0') && ((src[1] == 'x') || (src[1] == 'X'))) {
    src += 2;
    off = 2;
  } else if ((src[0] >= '0') && (src[0] <= '9')) {
    off = 1;
  } else if (((src[1] >= '0') && (src[1] <= '9')) && (src[0] == '-')) {
    src++;
    off = 1;
    sign = -1;
  } else if (src[0] == '\0') {
    src++;
    off = 4;
  }
  if (off == 0) {
    data_count = 0;
    while (src[data_count] != '\0') {
      data_count++;
      if (data_count > 127) {
        break;
      }
    }
    if (data_count & 0x03) {
      data_count = (data_count & (~0x03)) + 4;
    } else {
      data_count = data_count + 4;
    }
    value[0] = data_count >> 2;
    if (saddr != src) {
      value[1] = 0;
    } else {
      value[1] = 1;
    }
    return (2);
  } else if (off == 5) {
    data_count = 0;
    while (src[data_count] != '"') {
      data_count++;
      if (data_count > 127) {
        break;
      }
    }
    src[data_count] = '\0';
    if (data_count & 0x03) {
      data_count = (data_count & (~0x03)) + 4;
    } else {
      data_count = data_count + 4;
    }
    value[0] = data_count >> 2;
    value[1] = 5;
    return (2);
  } else if (off == 1) {
    while (*src != '\0') {
      if ((*src >= '0') && (*src <= '9')) {
        tmp_value = tmp_value * 10 + (*src - '0');
        src++;
      } else {
        return -1;
      }
    }
    value[0] = tmp_value * sign;
    return (1);
  } else if (off == 2) {
    while (*src != '\0') {
      if ((*src >= '0') && (*src <= '9')) {
        tmp_value = tmp_value * 16 + (*src - '0');
        src++;
      } else if ((*src >= 'A') && (*src <= 'F')) {
        tmp_value = tmp_value * 16 + (*src - 'A' + 10);
        src++;
      } else if ((*src >= 'a') && (*src <= 'f')) {
        tmp_value = tmp_value * 16 + (*src - 'a' + 10);
        src++;
      } else {
        return -1;
      }
    }
    value[0] = tmp_value;
    return (1);
  } else if (off == 3) {
    int tmp_flag = 0;
    ch = *src++;
    if ((ch == 'o') || (ch == 'O')) {
      ch = src[0];
      if ((ch == 'w') || (ch == 'W')) {
        ch = src[1];
        if ((ch == 'e') || (ch == 'E')) {
          ch = src[2];
          if ((ch == 'r') || (ch == 'R')) {
            value[0] = 0xffff;
            src += 3;
            tmp_flag = 1;
          }
        }
      }
    }
    if (!tmp_flag) {
      if ((ch >= 'A') && (ch <= 'Z')) {
        value[0] = ch - 'A' + 1;
      } else if ((ch >= 'a') && (ch <= 'z')) {
        value[0] = ch - 'a' + 1;
      } else {
        return -1;
      }
    }
    ch = *src++;
    tmp_value = 0;
    while (ch != '<') {
      if ((ch >= '0') && (ch <= '9')) {
        tmp_value = tmp_value * 10 + (ch - '0');
        ch = *src++;
      } else if (ch == 0) {
        src--;
        break;
      } else {
        return -1;
      }
    }
    value[1] = tmp_value;
    ch = *src++;
    while (ch != '\0') {
      i = 0;
      memset(tmp_str, 0, sizeof(tmp_str));
      while (ch != '>') {
        if ((ch >= 'A') && (ch <= 'Z')) {
          ch += 'a' - 'A';
        }
        tmp_str[i++] = ch;
        ch = *src++;
      }
      tmp_str[i] = '\0';
      if (!strcmp(tmp_str, "default")) {
        value[data_count] = -1;
      } else if (!strcmp(tmp_str, "none")) {
        value[data_count] = -1;
      } else if (!strcmp(tmp_str, "null")) {
        value[data_count] = -1;
      } else if (!strcmp(tmp_str, "-1")) {
        value[data_count] = -1;
      } else {
        i = 0;
        ch = tmp_str[i++];
        tmp_value = 0;
        if (ch == '-') {
          sign = -1;
          ch = tmp_str[i++];
        }
        while (ch != '\0') {
          if ((ch >= '0') && (ch <= '9')) {
            tmp_value = tmp_value * 10 + (ch - '0');
          } else {
            return -1;
          }
          ch = tmp_str[i++];
        }
        value[data_count] = tmp_value * sign;
      }
      data_count++;
      ch = *src++;
      if (ch == '<') {
        ch = *src++;
      } else if (ch == '\0') {
        ;
      } else {
        return -1;
      }
    }
    switch (data_count) {
    case 3:
      value[3] = -1;
    case 4:
      value[4] = -1;
    case 5:
      value[5] = -1;
    case 6:
      break;
    default:
      return -1;
    }
    return (4);
  } else if (off == 4) {
    value[0] = 4 >> 2;
    return (5);
  } else {
    return -1;
  }
}
```