#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 */
char **createStringArray();
int /*<<< orphan*/ destroyStringArray(char **);
scalar_t__ isLabel(char *);
int /*<<< orphan*/ splitString(char *, char **, int *);
scalar_t__ strcmp(char *, char *);
int sdt_3_check(char *line) {
  char **splitted = createStringArray();
  int n = 0;
  splitString(line, splitted, &n);
  if (n == 2) {
    if (strcmp(splitted[0], "blt") || strcmp(splitted[0], "bge") ||
        strcmp(splitted[0], "b") || strcmp(splitted[0], "bgt") ||
        strcmp(splitted[0], "ble")) {
      destroyStringArray(splitted);
      return 1;
    }
  }
  if (n == 3) {
    if (strcmp(splitted[0], "mov") == 0 && strcmp(splitted[1], "r2") == 0 &&
        strcmp(splitted[2], "#10") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "mov") == 0 && strcmp(splitted[1], "r0") == 0 &&
        strcmp(splitted[2], "#0") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "mov") == 0 && strcmp(splitted[1], "r0") == 0 &&
        strcmp(splitted[2], "#12") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "cmp") == 0 && strcmp(splitted[1], "r0") == 0 &&
        strcmp(splitted[2], "#12") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "cmp") == 0 && strcmp(splitted[1], "r0") == 0 &&
        strcmp(splitted[2], "#0") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "bgt") == 0 && strcmp(splitted[1], "r0") == 0 &&
        strcmp(splitted[2], "#0") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "str") == 0 && strcmp(splitted[1], "r2") == 0 &&
        strcmp(splitted[2], "[r0, #128]") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "ldr") == 0 && strcmp(splitted[1], "r1") == 0 &&
        strcmp(splitted[2], "[r0, #128]") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
  }
  if (n == 4) {
    if (strcmp(splitted[0], "add") == 0 && strcmp(splitted[1], "r5") == 0 &&
        strcmp(splitted[2], "r5") == 0 && strcmp(splitted[3], "r1") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "add") == 0 && strcmp(splitted[1], "r0") == 0 &&
        strcmp(splitted[2], "r0") == 0 && strcmp(splitted[3], "#4") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "sub") == 0 && strcmp(splitted[1], "r0") == 0 &&
        strcmp(splitted[2], "r0") == 0 && strcmp(splitted[3], "#4") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "add") == 0 && strcmp(splitted[1], "r2") == 0 &&
        strcmp(splitted[2], "r2") == 0 && strcmp(splitted[3], "r0") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
  }
  if (isLabel(splitted[0])) {
    destroyStringArray(splitted);
    return 1;
  }
  destroyStringArray(splitted);
  return 0;
}


x86 assembly (clang, -O0):
<sdt_3_check>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x10(%rbp)
mov    $0x0,%al
call   1070 <createStringArray@plt>
mov    %rax,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
call   1030 <splitString@plt>
cmpl   $0x2,-0x1c(%rbp)
jne    1234 <sdt_3_check+0xe4>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xe69(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    121a <sdt_3_check+0xca>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xe50(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    121a <sdt_3_check+0xca>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xe7a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    121a <sdt_3_check+0xca>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xe1a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    121a <sdt_3_check+0xca>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xe01(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     122f <sdt_3_check+0xdf>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
jmp    1234 <sdt_3_check+0xe4>
cmpl   $0x3,-0x1c(%rbp)
jne    15b3 <sdt_3_check+0x463>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xdc4(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    12ac <sdt_3_check+0x15c>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xdaa(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    12ac <sdt_3_check+0x15c>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xd8f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    12ac <sdt_3_check+0x15c>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xd56(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    131a <sdt_3_check+0x1ca>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xd43(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    131a <sdt_3_check+0x1ca>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xd28(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    131a <sdt_3_check+0x1ca>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xce8(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1388 <sdt_3_check+0x238>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xcd5(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1388 <sdt_3_check+0x238>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xcbd(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1388 <sdt_3_check+0x238>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xc8f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    13f6 <sdt_3_check+0x2a6>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc67(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    13f6 <sdt_3_check+0x2a6>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xc4f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    13f6 <sdt_3_check+0x2a6>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xc21(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1464 <sdt_3_check+0x314>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xbf9(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1464 <sdt_3_check+0x314>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xbde(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1464 <sdt_3_check+0x314>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xb96(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    14d2 <sdt_3_check+0x382>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb8b(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    14d2 <sdt_3_check+0x382>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xb70(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    14d2 <sdt_3_check+0x382>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xb49(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1540 <sdt_3_check+0x3f0>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb16(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1540 <sdt_3_check+0x3f0>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xb11(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1540 <sdt_3_check+0x3f0>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xaea(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    15ae <sdt_3_check+0x45e>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xad0(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    15ae <sdt_3_check+0x45e>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xaa3(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    15ae <sdt_3_check+0x45e>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
jmp    15b3 <sdt_3_check+0x463>
cmpl   $0x4,-0x1c(%rbp)
jne    17f2 <sdt_3_check+0x6a2>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0xa74(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1649 <sdt_3_check+0x4f9>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa5a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1649 <sdt_3_check+0x4f9>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xa3c(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1649 <sdt_3_check+0x4f9>
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
lea    0xa17(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1649 <sdt_3_check+0x4f9>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0x9e8(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    16d5 <sdt_3_check+0x585>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x9a6(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    16d5 <sdt_3_check+0x585>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0x988(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    16d5 <sdt_3_check+0x585>
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
lea    0x995(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    16d5 <sdt_3_check+0x585>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0x966(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1761 <sdt_3_check+0x611>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x91a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1761 <sdt_3_check+0x611>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0x8fc(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1761 <sdt_3_check+0x611>
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
lea    0x909(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1761 <sdt_3_check+0x611>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
lea    0x8d0(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    17ed <sdt_3_check+0x69d>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x887(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    17ed <sdt_3_check+0x69d>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0x869(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    17ed <sdt_3_check+0x69d>
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rdi
lea    0x852(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    17ed <sdt_3_check+0x69d>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
jmp    17f2 <sdt_3_check+0x6a2>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
call   1060 <isLabel@plt>
cmp    $0x0,%rax
je     181d <sdt_3_check+0x6cd>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x1,-0x4(%rbp)
jmp    182d <sdt_3_check+0x6dd>
mov    -0x18(%rbp),%rdi
call   1050 <destroyStringArray@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sdt_3_check>:
push   %rbp
push   %rbx
push   %rax
mov    %rdi,%rbp
xor    %eax,%eax
call   1070 <createStringArray@plt>
mov    %rax,%rbx
movl   $0x0,0x4(%rsp)
lea    0x4(%rsp),%rdx
mov    %rbp,%rdi
mov    %rax,%rsi
call   1030 <splitString@plt>
mov    0x4(%rsp),%eax
cmp    $0x2,%eax
jne    11fd <sdt_3_check+0xad>
mov    (%rbx),%rdi
lea    0xe75(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xe61(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xe90(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xe35(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xe21(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1590 <sdt_3_check+0x440>
mov    0x4(%rsp),%eax
cmp    $0x3,%eax
jne    1416 <sdt_3_check+0x2c6>
mov    (%rbx),%rdi
lea    0xe00(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1248 <sdt_3_check+0xf8>
mov    0x8(%rbx),%rdi
lea    0xdef(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1248 <sdt_3_check+0xf8>
mov    0x10(%rbx),%rdi
lea    0xddd(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xdbe(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    128a <sdt_3_check+0x13a>
mov    0x8(%rbx),%rdi
lea    0xdb4(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    128a <sdt_3_check+0x13a>
mov    0x10(%rbx),%rdi
lea    0xda2(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xd7c(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    12cc <sdt_3_check+0x17c>
mov    0x8(%rbx),%rdi
lea    0xd72(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    12cc <sdt_3_check+0x17c>
mov    0x10(%rbx),%rdi
lea    0xd63(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xd4f(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    130e <sdt_3_check+0x1be>
mov    0x8(%rbx),%rdi
lea    0xd30(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    130e <sdt_3_check+0x1be>
mov    0x10(%rbx),%rdi
lea    0xd21(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xd0d(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1350 <sdt_3_check+0x200>
mov    0x8(%rbx),%rdi
lea    0xcee(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1350 <sdt_3_check+0x200>
mov    0x10(%rbx),%rdi
lea    0xcdc(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xcae(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1392 <sdt_3_check+0x242>
mov    0x8(%rbx),%rdi
lea    0xcac(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1392 <sdt_3_check+0x242>
mov    0x10(%rbx),%rdi
lea    0xc9a(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xc8d(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    13d4 <sdt_3_check+0x284>
mov    0x8(%rbx),%rdi
lea    0xc63(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    13d4 <sdt_3_check+0x284>
mov    0x10(%rbx),%rdi
lea    0xc67(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xc5a(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1416 <sdt_3_check+0x2c6>
mov    0x8(%rbx),%rdi
lea    0xc49(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1416 <sdt_3_check+0x2c6>
mov    0x10(%rbx),%rdi
lea    0xc25(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1590 <sdt_3_check+0x440>
cmpl   $0x4,0x4(%rsp)
jne    1575 <sdt_3_check+0x425>
mov    (%rbx),%rdi
lea    0xc14(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1478 <sdt_3_check+0x328>
mov    0x8(%rbx),%rdi
lea    0xc03(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1478 <sdt_3_check+0x328>
mov    0x10(%rbx),%rdi
lea    0xbee(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1478 <sdt_3_check+0x328>
mov    0x18(%rbx),%rdi
lea    0xbd2(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xbbd(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    14cf <sdt_3_check+0x37f>
mov    0x8(%rbx),%rdi
lea    0xb84(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    14cf <sdt_3_check+0x37f>
mov    0x10(%rbx),%rdi
lea    0xb6f(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    14cf <sdt_3_check+0x37f>
mov    0x18(%rbx),%rdi
lea    0xb85(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xb70(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1522 <sdt_3_check+0x3d2>
mov    0x8(%rbx),%rdi
lea    0xb2d(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1522 <sdt_3_check+0x3d2>
mov    0x10(%rbx),%rdi
lea    0xb18(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1522 <sdt_3_check+0x3d2>
mov    0x18(%rbx),%rdi
lea    0xb2e(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
lea    0xb13(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1575 <sdt_3_check+0x425>
mov    0x8(%rbx),%rdi
lea    0xad3(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1575 <sdt_3_check+0x425>
mov    0x10(%rbx),%rdi
lea    0xabe(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1575 <sdt_3_check+0x425>
mov    0x18(%rbx),%rdi
lea    0xab0(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1590 <sdt_3_check+0x440>
mov    (%rbx),%rdi
call   1060 <isLabel@plt>
xor    %ebp,%ebp
test   %rax,%rax
setne  %bpl
mov    %rbx,%rdi
call   1050 <destroyStringArray@plt>
jmp    159d <sdt_3_check+0x44d>
mov    %rbx,%rdi
call   1050 <destroyStringArray@plt>
mov    $0x1,%ebp
mov    %ebp,%eax
add    $0x8,%rsp
pop    %rbx
pop    %rbp
ret

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

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