int main(int argc, char *argv[]) {
  int i, j;
  char *kvpairs[256];
  char value[256];
  unsigned char r, g, b, a;
  double dr, dg, db, da;
  char foo[] = "foo";
  char foobar[] = "foobar";
  char foo_enc[] = "fo%6f";
  char foobar_enc[] = "fo%6fbar";
  char foo_mal[] = "fo%6";
  char foo_mal2[] = "foo%6";
  char foo_end[] = "foo&";
  char getstring[] = "FUNNYJUNK://"
                     "@?t%65xt=bleh+bleh%20!&font=Vera.ttf&size=40.3&fg="
                     "Fa98BF44%f&debug1&bg=0C0&color=FF4455F&hash=24a%62cdef%"
                     "7a&rot=123.1&tr+i=cky&debug2#don'tparseme,bro";
  printf("Testing qs_* functions\n");
  printf("    Testing qs_strncmp():\n");
  printf("        %s, %s, 3         should be 0 : %d\n", foo, foo,
         qs_strncmp(foo, foo, 3));
  printf("        %s, %s, 4         should be 0 : %d\n", foo, foo,
         qs_strncmp(foo, foo, 4));
  printf("        %s, %s, 99        should be 0 : %d\n", foo, foo,
         qs_strncmp(foo, foo, 99));
  printf("        %s, %s, 3       should be 0 : %d\n", foo, foo_enc,
         qs_strncmp(foo, foo_enc, 3));
  printf("        %s, %s, 4       should be 0 : %d\n", foo, foo_enc,
         qs_strncmp(foo, foo_enc, 4));
  printf("        %s, %s, 99      should be 0 : %d\n", foo, foo_enc,
         qs_strncmp(foo, foo_enc, 99));
  printf("        %s, %s, 3     should be 0 : %d\n", foo_enc, foo_enc,
         qs_strncmp(foo_enc, foo_enc, 3));
  printf("        %s, %s, 4     should be 0 : %d\n", foo_enc, foo_enc,
         qs_strncmp(foo_enc, foo_enc, 4));
  printf("        %s, %s, 99    should be 0 : %d\n", foo_enc, foo_enc,
         qs_strncmp(foo_enc, foo_enc, 99));
  printf("        %s, %s, 3      should be 0 : %d\n", foo, foobar,
         qs_strncmp(foo, foobar, 3));
  printf("        %s, %s, 4      should be - : %d\n", foo, foobar,
         qs_strncmp(foo, foobar, 4));
  printf("        %s, %s, 99     should be - : %d\n", foo, foobar,
         qs_strncmp(foo, foobar, 99));
  printf("        %s, %s, 3    should be 0 : %d\n", foo, foobar_enc,
         qs_strncmp(foo, foobar_enc, 3));
  printf("        %s, %s, 4    should be - : %d\n", foo, foobar_enc,
         qs_strncmp(foo, foobar_enc, 4));
  printf("        %s, %s, 99   should be - : %d\n", foo, foobar_enc,
         qs_strncmp(foo, foobar_enc, 99));
  printf("        %s, %s, 3  should be 0 : %d\n", foo_enc, foobar_enc,
         qs_strncmp(foo_enc, foobar_enc, 3));
  printf("        %s, %s, 4  should be - : %d\n", foo_enc, foobar_enc,
         qs_strncmp(foo_enc, foobar_enc, 4));
  printf("        %s, %s, 99 should be - : %d\n", foo_enc, foobar_enc,
         qs_strncmp(foo_enc, foobar_enc, 99));
  printf("        %s, %s, 2        should be 0 : %d\n", foo, foo_mal,
         qs_strncmp(foo, foo_mal, 2));
  printf("        %s, %s, 3        should be + : %d\n", foo, foo_mal,
         qs_strncmp(foo, foo_mal, 3));
  printf("        %s, %s, 99       should be + : %d\n", foo, foo_mal,
         qs_strncmp(foo, foo_mal, 99));
  printf("        %s, %s, 2       should be 0 : %d\n", foo, foo_mal2,
         qs_strncmp(foo, foo_mal2, 2));
  printf("        %s, %s, 3       should be 0 : %d\n", foo, foo_mal2,
         qs_strncmp(foo, foo_mal2, 3));
  printf("        %s, %s, 4       should be 0 : %d\n", foo, foo_mal2,
         qs_strncmp(foo, foo_mal2, 4));
  printf("        %s, %s, 99      should be 0 : %d\n", foo, foo_mal2,
         qs_strncmp(foo, foo_mal2, 99));
  printf("        %s, %s, 2        should be 0 : %d\n", foo, foo_end,
         qs_strncmp(foo, foo_end, 2));
  printf("        %s, %s, 3        should be 0 : %d\n", foo, foo_end,
         qs_strncmp(foo, foo_end, 3));
  printf("        %s, %s, 4        should be 0 : %d\n", foo, foo_end,
         qs_strncmp(foo, foo_end, 4));
  printf("        %s, %s, 99       should be 0 : %d\n", foo, foo_end,
         qs_strncmp(foo, foo_end, 99));
  printf("\n");
  printf("    Testing qs_scanvalue() with query string:\n        %s\n",
         getstring);
  printf("        The following should say \"bleh bleh !\" : \"%s\"\n",
         qs_scanvalue("text", getstring, value, 256));
  printf("        The following should say \"Vera.ttf\"    : \"%s\"\n",
         qs_scanvalue("font", getstring, value, 256));
  printf("        The following should say \"40.3\"        : \"%s\"\n",
         qs_scanvalue("size", getstring, value, 256));
  printf("        The following should say \"Fa98BF44\"    : \"%s\"\n",
         qs_scanvalue("fg", getstring, value, 256));
  printf("        The following should say \"\"            : \"%s\"\n",
         qs_scanvalue("debug1", getstring, value, 256));
  printf("        The following should say \"0C0\"         : \"%s\"\n",
         qs_scanvalue("bg", getstring, value, 256));
  printf("        The following should say \"FF4455F\"     : \"%s\"\n",
         qs_scanvalue("color", getstring, value, 256));
  printf("        The following should say \"24abcdefz\"   : \"%s\"\n",
         qs_scanvalue("hash", getstring, value, 256));
  printf("        The following should say \"123.1\"       : \"%s\"\n",
         qs_scanvalue("rot", getstring, value, 256));
  printf("        The following should say \"cky\"         : \"%s\"\n",
         qs_scanvalue("tr i", getstring, value, 256));
  printf("        The following should say \"\"            : \"%s\"\n",
         qs_scanvalue("debug2", getstring, value, 256));
  printf("\n");
  printf("    Running qs_parse() against query string (also exersizes "
         "qs_decode()):\n        %s\n",
         getstring);
  i = qs_parse(getstring, kvpairs, 256);
  printf("        I should have found 11 k/v substrings, actually found: %d\n",
         i);
  printf("\n");
  printf("    Testing qs_k2v() against our kv pair substrings:\n");
  printf("        The following should say \"bleh bleh !\" : \"%s\"\n",
         qs_k2v("text", kvpairs, i));
  printf("        The following should say \"Vera.ttf\"    : \"%s\"\n",
         qs_k2v("font", kvpairs, i));
  printf("        The following should say \"40.3\"        : \"%s\"\n",
         qs_k2v("size", kvpairs, i));
  printf("        The following should say \"Fa98BF44\"    : \"%s\"\n",
         qs_k2v("fg", kvpairs, i));
  printf("        The following should say \"\"            : \"%s\"\n",
         qs_k2v("debug1", kvpairs, i));
  printf("        The following should say \"0C0\"         : \"%s\"\n",
         qs_k2v("bg", kvpairs, i));
  printf("        The following should say \"FF4455F\"     : \"%s\"\n",
         qs_k2v("color", kvpairs, i));
  printf("        The following should say \"24abcdefz\"   : \"%s\"\n",
         qs_k2v("hash", kvpairs, i));
  printf("        The following should say \"123.1\"       : \"%s\"\n",
         qs_k2v("rot", kvpairs, i));
  printf("        The following should say \"cky\"         : \"%s\"\n",
         qs_k2v("tr i", kvpairs, i));
  printf("        The following should say \"\"            : \"%s\"\n",
         qs_k2v("debug2", kvpairs, i));
  printf("\n");
  printf("    Testing hex2ccolor() and hex2dcolor() with fg (\"%s\"):\n",
         qs_k2v("fg", kvpairs, i));
  j = hex2ccolor(qs_k2v("fg", kvpairs, i), &r, &g, &b, &a);
  printf("        hex2ccolor() should have decoded 8 chars, r/g/b/a should be "
         "250/152/191/68      : %d chars decoded, r/g/b/a is %d/%d/%d/%d\n",
         j, r, g, b, a);
  j = hex2dcolor(qs_k2v("fg", kvpairs, i), &dr, &dg, &db, &da);
  printf("        hex2dcolor() should have decoded 8 chars, r/g/b/a should be "
         "0.98/0.60/0.75/0.27 : %d chars decoded, r/g/b/a is "
         "%.2f/%.2f/%.2f/%.2f\n",
         j, dr, dg, db, da);
  printf("    Testing hex2ccolor() and hex2dcolor() with bg (\"%s\"):\n",
         qs_k2v("bg", kvpairs, i));
  j = hex2ccolor(qs_k2v("bg", kvpairs, i), &r, &g, &b, &a);
  printf("        hex2ccolor() should have decoded 3 chars, r/g/b should be "
         "0/204/0        : %d chars decoded, r/g/b is %d/%d/%d\n",
         j, r, g, b);
  j = hex2dcolor(qs_k2v("bg", kvpairs, i), &dr, &dg, &db, &da);
  printf("        hex2dcolor() should have decoded 3 chars, r/g/b should be "
         "0.00/0.80/0.00 : %d chars decoded, r/g/b is %.2f/%.2f/%.2f\n",
         j, dr, dg, db);
  printf("    Testing hex2ccolor() and hex2dcolor() with color (\"%s\"):\n",
         qs_k2v("color", kvpairs, i));
  j = hex2ccolor(qs_k2v("color", kvpairs, i), &r, &g, &b, &a);
  printf(
      "        hex2ccolor() should have decoded 0 chars : %d chars decoded\n",
      j);
  j = hex2dcolor(qs_k2v("color", kvpairs, i), &dr, &dg, &db, &da);
  printf(
      "        hex2dcolor() should have decoded 0 chars : %d chars decoded\n",
      j);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xbf0,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    0x1e61(%rip),%eax
mov    %eax,-0x94c(%rbp)
mov    0x1e59(%rip),%eax
mov    %eax,-0x953(%rbp)
mov    0x1e50(%rip),%ax
mov    %ax,-0x94f(%rbp)
mov    0x1e45(%rip),%al
mov    %al,-0x94d(%rbp)
mov    0x1e3a(%rip),%eax
mov    %eax,-0x959(%rbp)
mov    0x1e31(%rip),%ax
mov    %ax,-0x955(%rbp)
mov    0x1e25(%rip),%rax
mov    %rax,-0x962(%rbp)
mov    0x1e20(%rip),%al
mov    %al,-0x95a(%rbp)
mov    0x1e15(%rip),%eax
mov    %eax,-0x967(%rbp)
mov    0x1e0d(%rip),%al
mov    %al,-0x963(%rbp)
mov    0x1e02(%rip),%eax
mov    %eax,-0x96d(%rbp)
mov    0x1df9(%rip),%ax
mov    %ax,-0x969(%rbp)
mov    0x1dee(%rip),%eax
mov    %eax,-0x972(%rbp)
mov    0x1de6(%rip),%al
mov    %al,-0x96e(%rbp)
lea    -0xa20(%rbp),%rdi
lea    0x28b9(%rip),%rsi
mov    $0xa3,%edx
call   1050 <memcpy@plt>
lea    0x1dc2(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x1dcc(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xbf0(%rbp)
lea    -0x94c(%rbp),%rax
mov    %rax,-0xbe8(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x94c(%rbp),%rsi
mov    $0x3,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xbf0(%rbp),%rsi
mov    -0xbe8(%rbp),%rdx
mov    %eax,%ecx
lea    0x1d93(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xbe0(%rbp)
lea    -0x94c(%rbp),%rax
mov    %rax,-0xbd8(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x94c(%rbp),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xbe0(%rbp),%rsi
mov    -0xbd8(%rbp),%rdx
mov    %eax,%ecx
lea    0x1d6b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xbd0(%rbp)
lea    -0x94c(%rbp),%rax
mov    %rax,-0xbc8(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x94c(%rbp),%rsi
mov    $0x63,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xbd0(%rbp),%rsi
mov    -0xbc8(%rbp),%rdx
mov    %eax,%ecx
lea    0x1d43(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xbc0(%rbp)
lea    -0x959(%rbp),%rax
mov    %rax,-0xbb8(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x959(%rbp),%rsi
mov    $0x3,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xbc0(%rbp),%rsi
mov    -0xbb8(%rbp),%rdx
mov    %eax,%ecx
lea    0x1d1b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xbb0(%rbp)
lea    -0x959(%rbp),%rax
mov    %rax,-0xba8(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x959(%rbp),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xbb0(%rbp),%rsi
mov    -0xba8(%rbp),%rdx
mov    %eax,%ecx
lea    0x1cf1(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xba0(%rbp)
lea    -0x959(%rbp),%rax
mov    %rax,-0xb98(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x959(%rbp),%rsi
mov    $0x63,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xba0(%rbp),%rsi
mov    -0xb98(%rbp),%rdx
mov    %eax,%ecx
lea    0x1cc7(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x959(%rbp),%rax
mov    %rax,-0xb90(%rbp)
lea    -0x959(%rbp),%rax
mov    %rax,-0xb88(%rbp)
lea    -0x959(%rbp),%rdi
lea    -0x959(%rbp),%rsi
mov    $0x3,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xb90(%rbp),%rsi
mov    -0xb88(%rbp),%rdx
mov    %eax,%ecx
lea    0x1c9d(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x959(%rbp),%rax
mov    %rax,-0xb80(%rbp)
lea    -0x959(%rbp),%rax
mov    %rax,-0xb78(%rbp)
lea    -0x959(%rbp),%rdi
lea    -0x959(%rbp),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xb80(%rbp),%rsi
mov    -0xb78(%rbp),%rdx
mov    %eax,%ecx
lea    0x1c71(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x959(%rbp),%rax
mov    %rax,-0xb70(%rbp)
lea    -0x959(%rbp),%rax
mov    %rax,-0xb68(%rbp)
lea    -0x959(%rbp),%rdi
lea    -0x959(%rbp),%rsi
mov    $0x63,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xb70(%rbp),%rsi
mov    -0xb68(%rbp),%rdx
mov    %eax,%ecx
lea    0x1c45(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xb60(%rbp)
lea    -0x953(%rbp),%rax
mov    %rax,-0xb58(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x953(%rbp),%rsi
mov    $0x3,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xb60(%rbp),%rsi
mov    -0xb58(%rbp),%rdx
mov    %eax,%ecx
lea    0x1c19(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xb50(%rbp)
lea    -0x953(%rbp),%rax
mov    %rax,-0xb48(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x953(%rbp),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xb50(%rbp),%rsi
mov    -0xb48(%rbp),%rdx
mov    %eax,%ecx
lea    0x1bee(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xb40(%rbp)
lea    -0x953(%rbp),%rax
mov    %rax,-0xb38(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x953(%rbp),%rsi
mov    $0x63,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xb40(%rbp),%rsi
mov    -0xb38(%rbp),%rdx
mov    %eax,%ecx
lea    0x1bc3(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xb30(%rbp)
lea    -0x962(%rbp),%rax
mov    %rax,-0xb28(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x962(%rbp),%rsi
mov    $0x3,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xb30(%rbp),%rsi
mov    -0xb28(%rbp),%rdx
mov    %eax,%ecx
lea    0x1b98(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xb20(%rbp)
lea    -0x962(%rbp),%rax
mov    %rax,-0xb18(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x962(%rbp),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xb20(%rbp),%rsi
mov    -0xb18(%rbp),%rdx
mov    %eax,%ecx
lea    0x1b6b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xb10(%rbp)
lea    -0x962(%rbp),%rax
mov    %rax,-0xb08(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x962(%rbp),%rsi
mov    $0x63,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xb10(%rbp),%rsi
mov    -0xb08(%rbp),%rdx
mov    %eax,%ecx
lea    0x1b3e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x959(%rbp),%rax
mov    %rax,-0xb00(%rbp)
lea    -0x962(%rbp),%rax
mov    %rax,-0xaf8(%rbp)
lea    -0x959(%rbp),%rdi
lea    -0x962(%rbp),%rsi
mov    $0x3,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xb00(%rbp),%rsi
mov    -0xaf8(%rbp),%rdx
mov    %eax,%ecx
lea    0x1b11(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x959(%rbp),%rax
mov    %rax,-0xaf0(%rbp)
lea    -0x962(%rbp),%rax
mov    %rax,-0xae8(%rbp)
lea    -0x959(%rbp),%rdi
lea    -0x962(%rbp),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xaf0(%rbp),%rsi
mov    -0xae8(%rbp),%rdx
mov    %eax,%ecx
lea    0x1ae2(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x959(%rbp),%rax
mov    %rax,-0xae0(%rbp)
lea    -0x962(%rbp),%rax
mov    %rax,-0xad8(%rbp)
lea    -0x959(%rbp),%rdi
lea    -0x962(%rbp),%rsi
mov    $0x63,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xae0(%rbp),%rsi
mov    -0xad8(%rbp),%rdx
mov    %eax,%ecx
lea    0x1ab3(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xad0(%rbp)
lea    -0x967(%rbp),%rax
mov    %rax,-0xac8(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x967(%rbp),%rsi
mov    $0x2,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xad0(%rbp),%rsi
mov    -0xac8(%rbp),%rdx
mov    %eax,%ecx
lea    0x1a84(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xac0(%rbp)
lea    -0x967(%rbp),%rax
mov    %rax,-0xab8(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x967(%rbp),%rsi
mov    $0x3,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xac0(%rbp),%rsi
mov    -0xab8(%rbp),%rdx
mov    %eax,%ecx
lea    0x1a5b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xab0(%rbp)
lea    -0x967(%rbp),%rax
mov    %rax,-0xaa8(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x967(%rbp),%rsi
mov    $0x63,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xab0(%rbp),%rsi
mov    -0xaa8(%rbp),%rdx
mov    %eax,%ecx
lea    0x1a32(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xaa0(%rbp)
lea    -0x96d(%rbp),%rax
mov    %rax,-0xa98(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x96d(%rbp),%rsi
mov    $0x2,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xaa0(%rbp),%rsi
mov    -0xa98(%rbp),%rdx
mov    %eax,%ecx
lea    0x1a09(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xa90(%rbp)
lea    -0x96d(%rbp),%rax
mov    %rax,-0xa88(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x96d(%rbp),%rsi
mov    $0x3,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xa90(%rbp),%rsi
mov    -0xa88(%rbp),%rdx
mov    %eax,%ecx
lea    0x16df(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xa80(%rbp)
lea    -0x96d(%rbp),%rax
mov    %rax,-0xa78(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x96d(%rbp),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xa80(%rbp),%rsi
mov    -0xa78(%rbp),%rdx
mov    %eax,%ecx
lea    0x16b5(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xa70(%rbp)
lea    -0x96d(%rbp),%rax
mov    %rax,-0xa68(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x96d(%rbp),%rsi
mov    $0x63,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xa70(%rbp),%rsi
mov    -0xa68(%rbp),%rdx
mov    %eax,%ecx
lea    0x168b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xa60(%rbp)
lea    -0x972(%rbp),%rax
mov    %rax,-0xa58(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x972(%rbp),%rsi
mov    $0x2,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xa60(%rbp),%rsi
mov    -0xa58(%rbp),%rdx
mov    %eax,%ecx
lea    0x1838(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xa50(%rbp)
lea    -0x972(%rbp),%rax
mov    %rax,-0xa48(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x972(%rbp),%rsi
mov    $0x3,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xa50(%rbp),%rsi
mov    -0xa48(%rbp),%rdx
mov    %eax,%ecx
lea    0x188f(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xa40(%rbp)
lea    -0x972(%rbp),%rax
mov    %rax,-0xa38(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x972(%rbp),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xa40(%rbp),%rsi
mov    -0xa38(%rbp),%rdx
mov    %eax,%ecx
lea    0x1866(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x94c(%rbp),%rax
mov    %rax,-0xa30(%rbp)
lea    -0x972(%rbp),%rax
mov    %rax,-0xa28(%rbp)
lea    -0x94c(%rbp),%rdi
lea    -0x972(%rbp),%rsi
mov    $0x63,%edx
mov    $0x0,%al
call   1090 <qs_strncmp@plt>
mov    -0xa30(%rbp),%rsi
mov    -0xa28(%rbp),%rdx
mov    %eax,%ecx
lea    0x183d(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x19b7(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rsi
lea    0x1845(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rsi
lea    -0x920(%rbp),%rdx
lea    0x189a(%rip),%rdi
mov    $0x100,%ecx
mov    $0x0,%al
call   10a0 <qs_scanvalue@plt>
mov    %eax,%esi
lea    0x184e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rsi
lea    -0x920(%rbp),%rdx
lea    0x18a5(%rip),%rdi
mov    $0x100,%ecx
mov    $0x0,%al
call   10a0 <qs_scanvalue@plt>
mov    %eax,%esi
lea    0x1859(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rsi
lea    -0x920(%rbp),%rdx
lea    0x18b0(%rip),%rdi
mov    $0x100,%ecx
mov    $0x0,%al
call   10a0 <qs_scanvalue@plt>
mov    %eax,%esi
lea    0x1864(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rsi
lea    -0x920(%rbp),%rdx
lea    0x18bb(%rip),%rdi
mov    $0x100,%ecx
mov    $0x0,%al
call   10a0 <qs_scanvalue@plt>
mov    %eax,%esi
lea    0x186f(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rsi
lea    -0x920(%rbp),%rdx
lea    0x18c4(%rip),%rdi
mov    $0x100,%ecx
mov    $0x0,%al
call   10a0 <qs_scanvalue@plt>
mov    %eax,%esi
lea    0x1878(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rsi
lea    -0x920(%rbp),%rdx
lea    0x18d1(%rip),%rdi
mov    $0x100,%ecx
mov    $0x0,%al
call   10a0 <qs_scanvalue@plt>
mov    %eax,%esi
lea    0x1885(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rsi
lea    -0x920(%rbp),%rdx
lea    0x18da(%rip),%rdi
mov    $0x100,%ecx
mov    $0x0,%al
call   10a0 <qs_scanvalue@plt>
mov    %eax,%esi
lea    0x188e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rsi
lea    -0x920(%rbp),%rdx
lea    0x18e6(%rip),%rdi
mov    $0x100,%ecx
mov    $0x0,%al
call   10a0 <qs_scanvalue@plt>
mov    %eax,%esi
lea    0x189a(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rsi
lea    -0x920(%rbp),%rdx
lea    0x18f1(%rip),%rdi
mov    $0x100,%ecx
mov    $0x0,%al
call   10a0 <qs_scanvalue@plt>
mov    %eax,%esi
lea    0x18a5(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rsi
lea    -0x920(%rbp),%rdx
lea    0x18fb(%rip),%rdi
mov    $0x100,%ecx
mov    $0x0,%al
call   10a0 <qs_scanvalue@plt>
mov    %eax,%esi
lea    0x18af(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rsi
lea    -0x920(%rbp),%rdx
lea    0x18cf(%rip),%rdi
mov    $0x100,%ecx
mov    $0x0,%al
call   10a0 <qs_scanvalue@plt>
mov    %eax,%esi
lea    0x1752(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x1779(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rsi
lea    0x189e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0xa20(%rbp),%rdi
lea    -0x820(%rbp),%rsi
mov    $0x100,%edx
mov    $0x0,%al
call   1070 <qs_parse@plt>
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%esi
lea    0x18c6(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x1728(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x18ed(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x1616(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x15cf(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x162a(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x15e3(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x163e(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x15f7(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x1652(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x160b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x1664(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x161d(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x167a(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x1633(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x168c(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x1645(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x16a1(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x165a(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x16b5(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x166e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x16c8(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x1681(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x16a5(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x152d(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x1554(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x1504(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x1735(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x14dc(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%edi
lea    -0x921(%rbp),%rsi
lea    -0x922(%rbp),%rdx
lea    -0x923(%rbp),%rcx
lea    -0x924(%rbp),%r8
mov    $0x0,%al
call   1060 <hex2ccolor@plt>
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%esi
movzbl -0x921(%rbp),%edx
movzbl -0x922(%rbp),%ecx
movzbl -0x923(%rbp),%r8d
ff
movzbl -0x924(%rbp),%r9d
ff
lea    0x1701(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x146d(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%edi
lea    -0x930(%rbp),%rsi
lea    -0x938(%rbp),%rdx
lea    -0x940(%rbp),%rcx
lea    -0x948(%rbp),%r8
mov    $0x0,%al
call   1080 <hex2dcolor@plt>
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%esi
movsd  -0x930(%rbp),%xmm0
ff
movsd  -0x938(%rbp),%xmm1
ff
movsd  -0x940(%rbp),%xmm2
ff
movsd  -0x948(%rbp),%xmm3
ff
lea    0x1714(%rip),%rdi
mov    $0x4,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x1474(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x1778(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x144c(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%edi
lea    -0x921(%rbp),%rsi
lea    -0x922(%rbp),%rdx
lea    -0x923(%rbp),%rcx
lea    -0x924(%rbp),%r8
mov    $0x0,%al
call   1060 <hex2ccolor@plt>
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%esi
movzbl -0x921(%rbp),%edx
movzbl -0x922(%rbp),%ecx
movzbl -0x923(%rbp),%r8d
ff
lea    0x174c(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x13e5(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%edi
lea    -0x930(%rbp),%rsi
lea    -0x938(%rbp),%rdx
lea    -0x940(%rbp),%rcx
lea    -0x948(%rbp),%r8
mov    $0x0,%al
call   1080 <hex2dcolor@plt>
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%esi
movsd  -0x930(%rbp),%xmm0
ff
movsd  -0x938(%rbp),%xmm1
ff
movsd  -0x940(%rbp),%xmm2
ff
lea    0x175b(%rip),%rdi
mov    $0x3,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x13b6(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%esi
lea    0x17b1(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x138e(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%edi
lea    -0x921(%rbp),%rsi
lea    -0x922(%rbp),%rdx
lea    -0x923(%rbp),%rcx
lea    -0x924(%rbp),%r8
mov    $0x0,%al
call   1060 <hex2ccolor@plt>
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%esi
lea    0x179e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x820(%rbp),%rsi
mov    -0x14(%rbp),%edx
lea    0x133d(%rip),%rdi
mov    $0x0,%al
call   1030 <qs_k2v@plt>
mov    %eax,%edi
lea    -0x930(%rbp),%rsi
lea    -0x938(%rbp),%rdx
lea    -0x940(%rbp),%rcx
lea    -0x948(%rbp),%r8
mov    $0x0,%al
call   1080 <hex2dcolor@plt>
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%esi
lea    0x1792(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
xor    %eax,%eax
add    $0xbf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xa28,%rsp
movl   $0x6f6f66,0x44(%rsp)
movl   $0x726162,0x4b(%rsp)
movl   $0x626f6f66,0x48(%rsp)
62
movw   $0x66,0x40(%rsp)
movl   $0x36256f66,0x3c(%rsp)
36
movabs $0x7261626636256f66,%rax
62 61 72
mov    %rax,0x58(%rsp)
movb   $0x0,0x60(%rsp)
movb   $0x0,0x1c(%rsp)
movl   $0x36256f66,0x18(%rsp)
36
movw   $0x36,0x38(%rsp)
movl   $0x256f6f66,0x34(%rsp)
25
movb   $0x0,0x14(%rsp)
movl   $0x266f6f66,0x10(%rsp)
26
lea    0x18f4(%rip),%rsi
lea    0x70(%rsp),%r14
mov    $0xa3,%edx
mov    %r14,%rdi
call   1070 <memcpy@plt>
lea    0x186a(%rip),%rdi
call   1040 <puts@plt>
lea    0x1875(%rip),%rdi
call   1040 <puts@plt>
lea    0x44(%rsp),%rbx
mov    %rbx,%rdi
mov    %rbx,%rsi
mov    $0x3,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdc2(%rip),%rdi
mov    %rbx,%rsi
mov    %rbx,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbx,%rsi
mov    $0x4,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdc6(%rip),%rdi
mov    %rbx,%rsi
mov    %rbx,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbx,%rsi
mov    $0x63,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdca(%rip),%rdi
mov    %rbx,%rsi
mov    %rbx,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x3c(%rsp),%r12
mov    %rbx,%rdi
mov    %r12,%rsi
mov    $0x3,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdc9(%rip),%rdi
mov    %rbx,%rsi
mov    %r12,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %r12,%rsi
mov    $0x4,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdcb(%rip),%rdi
mov    %rbx,%rsi
mov    %r12,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %r12,%rsi
mov    $0x63,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdcd(%rip),%r13
mov    %r13,%rdi
mov    %rbx,%rsi
mov    %r12,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    %r12,%rsi
mov    $0x3,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdcc(%rip),%rdi
mov    %r12,%rsi
mov    %r12,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    %r12,%rsi
mov    $0x4,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdcc(%rip),%rdi
mov    %r12,%rsi
mov    %r12,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    %r12,%rsi
mov    $0x63,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdcc(%rip),%rdi
mov    %r12,%rsi
mov    %r12,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x48(%rsp),%rbp
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x3,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdc7(%rip),%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x4,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdc8(%rip),%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x63,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdc9(%rip),%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x58(%rsp),%r15
mov    %rbx,%rdi
mov    %r15,%rsi
mov    $0x3,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdc5(%rip),%rdi
mov    %rbx,%rsi
mov    %r15,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %r15,%rsi
mov    $0x4,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdc4(%rip),%rdi
mov    %rbx,%rsi
mov    %r15,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %r15,%rsi
mov    $0x63,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdc3(%rip),%rdi
mov    %rbx,%rsi
mov    %r15,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    %r15,%rsi
mov    $0x3,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdc2(%rip),%rdi
mov    %r12,%rsi
mov    %r15,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    %r15,%rsi
mov    $0x4,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdbf(%rip),%rdi
mov    %r12,%rsi
mov    %r15,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    %r15,%rsi
mov    $0x63,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdbc(%rip),%rdi
mov    %r12,%rsi
mov    %r15,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x18(%rsp),%rbp
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x2,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdb4(%rip),%r15
mov    %r15,%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x3,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdb4(%rip),%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x63,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdb7(%rip),%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x34(%rsp),%rbp
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x2,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xdb5(%rip),%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x3,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xab7(%rip),%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x4,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xab9(%rip),%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x63,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
mov    %r13,%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x10(%rsp),%rbp
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x2,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x3,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xd1a(%rip),%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x4,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xd1d(%rip),%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    $0x63,%edx
xor    %eax,%eax
call   10b0 <qs_strncmp@plt>
lea    0xd20(%rip),%rdi
mov    %rbx,%rsi
mov    %rbp,%rdx
mov    %eax,%ecx
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xd2b(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xd8b(%rip),%rdi
lea    0x120(%rsp),%rbx
mov    %r14,%rsi
mov    %rbx,%rdx
mov    $0x100,%ecx
xor    %eax,%eax
call   10c0 <qs_scanvalue@plt>
lea    0xd33(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xd96(%rip),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    $0x100,%ecx
xor    %eax,%eax
call   10c0 <qs_scanvalue@plt>
lea    0xd46(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xda9(%rip),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    $0x100,%ecx
xor    %eax,%eax
call   10c0 <qs_scanvalue@plt>
lea    0xd59(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xdbc(%rip),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    $0x100,%ecx
xor    %eax,%eax
call   10c0 <qs_scanvalue@plt>
lea    0xd6c(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xdcd(%rip),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    $0x100,%ecx
xor    %eax,%eax
call   10c0 <qs_scanvalue@plt>
lea    0xd7d(%rip),%r15
mov    %r15,%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xddf(%rip),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    $0x100,%ecx
xor    %eax,%eax
call   10c0 <qs_scanvalue@plt>
lea    0xd8f(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xdf0(%rip),%r13
mov    %r13,%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    $0x100,%ecx
xor    %eax,%eax
call   10c0 <qs_scanvalue@plt>
lea    0xd9d(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xe01(%rip),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    $0x100,%ecx
xor    %eax,%eax
call   10c0 <qs_scanvalue@plt>
lea    0xdb1(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xe14(%rip),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    $0x100,%ecx
xor    %eax,%eax
call   10c0 <qs_scanvalue@plt>
lea    0xdc4(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xe26(%rip),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    $0x100,%ecx
xor    %eax,%eax
call   10c0 <qs_scanvalue@plt>
lea    0xdd6(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xe02(%rip),%r12
mov    %r12,%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    $0x100,%ecx
xor    %eax,%eax
call   10c0 <qs_scanvalue@plt>
mov    %r15,%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xdd7(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x220(%rsp),%rbx
mov    %r14,%rdi
mov    %rbx,%rsi
mov    $0x100,%edx
xor    %eax,%eax
call   1090 <qs_parse@plt>
mov    %eax,%ebp
lea    0xe00(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x119e(%rip),%rdi
call   1040 <puts@plt>
lea    0xb5e(%rip),%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0xb14(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xb77(%rip),%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0xb2d(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xb90(%rip),%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0xb46(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xba9(%rip),%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0xb5f(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xbc0(%rip),%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
mov    %r15,%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xbdf(%rip),%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0xb95(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r13,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0xbb0(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xc14(%rip),%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0xbca(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xc2d(%rip),%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0xbe3(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xc45(%rip),%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0xbfb(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r12,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
mov    %r15,%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xa97(%rip),%r15
mov    %r15,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0xc8c(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0xe(%rsp),%rsi
lea    0xd(%rsp),%rdx
lea    0xc(%rsp),%rcx
lea    0xf(%rsp),%r8
mov    %eax,%edi
xor    %eax,%eax
call   1080 <hex2ccolor@plt>
movzbl 0xe(%rsp),%edx
movzbl 0xd(%rsp),%ecx
movzbl 0xc(%rsp),%r8d
movzbl 0xf(%rsp),%r9d
lea    0xc75(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0x28(%rsp),%rsi
lea    0x20(%rsp),%r14
lea    0x50(%rsp),%r12
lea    0x68(%rsp),%r13
mov    %eax,%edi
mov    %r14,%rdx
mov    %r12,%rcx
mov    %r13,%r8
xor    %eax,%eax
call   10a0 <hex2dcolor@plt>
movsd  0x28(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
movsd  0x50(%rsp),%xmm2
movsd  0x68(%rsp),%xmm3
lea    0xc9c(%rip),%rdi
mov    %eax,%esi
mov    $0x4,%al
call   1060 <printf@plt>
lea    0xa3a(%rip),%r15
mov    %r15,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0xd02(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
mov    %eax,%edi
lea    0xe(%rsp),%rsi
lea    0xd(%rsp),%rdx
lea    0xc(%rsp),%rcx
lea    0xf(%rsp),%r8
xor    %eax,%eax
call   1080 <hex2ccolor@plt>
movzbl 0xe(%rsp),%edx
movzbl 0xd(%rsp),%ecx
movzbl 0xc(%rsp),%r8d
lea    0xcf1(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
mov    %eax,%edi
lea    0x28(%rsp),%r15
mov    %r15,%rsi
mov    %r14,%rdx
mov    %r12,%rcx
mov    %r13,%r8
xor    %eax,%eax
call   10a0 <hex2dcolor@plt>
movsd  0x28(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
movsd  0x50(%rsp),%xmm2
lea    0xd1e(%rip),%rdi
mov    %eax,%esi
mov    $0x3,%al
call   1060 <printf@plt>
lea    0x9b7(%rip),%r14
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
lea    0xd76(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
mov    %eax,%edi
lea    0xe(%rsp),%rsi
lea    0xd(%rsp),%rdx
lea    0xc(%rsp),%rcx
lea    0xf(%rsp),%r8
xor    %eax,%eax
call   1080 <hex2ccolor@plt>
lea    0xd78(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1050 <qs_k2v@plt>
mov    %eax,%edi
mov    %r15,%rsi
lea    0x20(%rsp),%rdx
mov    %r12,%rcx
mov    %r13,%r8
xor    %eax,%eax
call   10a0 <hex2dcolor@plt>
lea    0xd87(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
xor    %eax,%eax
add    $0xa28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@__const.main.foo = [4 x i8] c"foo\00"
@__const.main.foobar = [7 x i8] c"foobar\00"
@__const.main.foo_enc = [6 x i8] c"fo%6f\00"
@__const.main.foobar_enc = [9 x i8] c"fo%6fbar\00"
@__const.main.foo_mal = [5 x i8] c"fo%6\00"
@__const.main.foo_mal2 = [6 x i8] c"foo%6\00"
@__const.main.foo_end = [5 x i8] c"foo&\00"
@__const.main.getstring = [163 x i8] c"FUNNYJUNK://@?t%65xt=bleh+bleh%20!&font=Vera.ttf&size=40.3&fg=Fa98BF44%f&debug1&bg=0C0&color=FF4455F&hash=24a%62cdef%7a&rot=123.1&tr+i=cky&debug2#don'tparseme,bro\00"
@.str = [24 x i8] c"Testing qs_* functions\0A\00"
@.str.1 = [27 x i8] c" Testing qs_strncmp():\0A\00"
@.str.2 = [44 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.3 = [44 x i8] c" %s, %s, 4 should be 0 : %d\0A\00"
@.str.4 = [44 x i8] c" %s, %s, 99 should be 0 : %d\0A\00"
@.str.5 = [42 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.6 = [42 x i8] c" %s, %s, 4 should be 0 : %d\0A\00"
@.str.7 = [42 x i8] c" %s, %s, 99 should be 0 : %d\0A\00"
@.str.8 = [40 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.9 = [40 x i8] c" %s, %s, 4 should be 0 : %d\0A\00"
@.str.10 = [40 x i8] c" %s, %s, 99 should be 0 : %d\0A\00"
@.str.11 = [41 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.12 = [41 x i8] c" %s, %s, 4 should be - : %d\0A\00"
@.str.13 = [41 x i8] c" %s, %s, 99 should be - : %d\0A\00"
@.str.14 = [39 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.15 = [39 x i8] c" %s, %s, 4 should be - : %d\0A\00"
@.str.16 = [39 x i8] c" %s, %s, 99 should be - : %d\0A\00"
@.str.17 = [37 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.18 = [37 x i8] c" %s, %s, 4 should be - : %d\0A\00"
@.str.19 = [37 x i8] c" %s, %s, 99 should be - : %d\0A\00"
@.str.20 = [43 x i8] c" %s, %s, 2 should be 0 : %d\0A\00"
@.str.21 = [43 x i8] c" %s, %s, 3 should be + : %d\0A\00"
@.str.22 = [43 x i8] c" %s, %s, 99 should be + : %d\0A\00"
@.str.23 = [42 x i8] c" %s, %s, 2 should be 0 : %d\0A\00"
@.str.24 = [43 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.25 = [43 x i8] c" %s, %s, 4 should be 0 : %d\0A\00"
@.str.26 = [43 x i8] c" %s, %s, 99 should be 0 : %d\0A\00"
@.str.27 = [2 x i8] c"\0A\00"
@.str.28 = [58 x i8] c" Testing qs_scanvalue() with query string:\0A %s\0A\00"
@.str.29 = [55 x i8] c" The following should say \22bleh bleh !\22 : \22%s\22\0A\00"
@.str.30 = [5 x i8] c"text\00"
@.str.31 = [55 x i8] c" The following should say \22Vera.ttf\22 : \22%s\22\0A\00"
@.str.32 = [5 x i8] c"font\00"
@.str.33 = [55 x i8] c" The following should say \2240.3\22 : \22%s\22\0A\00"
@.str.34 = [5 x i8] c"size\00"
@.str.35 = [55 x i8] c" The following should say \22Fa98BF44\22 : \22%s\22\0A\00"
@.str.36 = [3 x i8] c"fg\00"
@.str.37 = [55 x i8] c" The following should say \22\22 : \22%s\22\0A\00"
@.str.38 = [7 x i8] c"debug1\00"
@.str.39 = [55 x i8] c" The following should say \220C0\22 : \22%s\22\0A\00"
@.str.40 = [3 x i8] c"bg\00"
@.str.41 = [55 x i8] c" The following should say \22FF4455F\22 : \22%s\22\0A\00"
@.str.42 = [6 x i8] c"color\00"
@.str.43 = [55 x i8] c" The following should say \2224abcdefz\22 : \22%s\22\0A\00"
@.str.44 = [5 x i8] c"hash\00"
@.str.45 = [55 x i8] c" The following should say \22123.1\22 : \22%s\22\0A\00"
@.str.46 = [4 x i8] c"rot\00"
@.str.47 = [55 x i8] c" The following should say \22cky\22 : \22%s\22\0A\00"
@.str.48 = [5 x i8] c"tr i\00"
@.str.49 = [7 x i8] c"debug2\00"
@.str.50 = [86 x i8] c" Running qs_parse() against query string (also exersizes qs_decode()):\0A %s\0A\00"
@.str.51 = [67 x i8] c" I should have found 11 k/v substrings, actually found: %d\0A\00"
@.str.52 = [54 x i8] c" Testing qs_k2v() against our kv pair substrings:\0A\00"
@.str.53 = [59 x i8] c" Testing hex2ccolor() and hex2dcolor() with fg (\22%s\22):\0A\00"
@.str.54 = [132 x i8] c" hex2ccolor() should have decoded 8 chars, r/g/b/a should be 250/152/191/68 : %d chars decoded, r/g/b/a is %d/%d/%d/%d\0A\00"
@.str.55 = [140 x i8] c" hex2dcolor() should have decoded 8 chars, r/g/b/a should be 0.98/0.60/0.75/0.27 : %d chars decoded, r/g/b/a is %.2f/%.2f/%.2f/%.2f\0A\00"
@.str.56 = [59 x i8] c" Testing hex2ccolor() and hex2dcolor() with bg (\22%s\22):\0A\00"
@.str.57 = [120 x i8] c" hex2ccolor() should have decoded 3 chars, r/g/b should be 0/204/0 : %d chars decoded, r/g/b is %d/%d/%d\0A\00"
@.str.58 = [126 x i8] c" hex2dcolor() should have decoded 3 chars, r/g/b should be 0.00/0.80/0.00 : %d chars decoded, r/g/b is %.2f/%.2f/%.2f\0A\00"
@.str.59 = [62 x i8] c" Testing hex2ccolor() and hex2dcolor() with color (\22%s\22):\0A\00"
@.str.60 = [69 x i8] c" hex2ccolor() should have decoded 0 chars : %d chars decoded\0A\00"
@.str.61 = [69 x i8] c" hex2dcolor() should have decoded 0 chars : %d chars decoded\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca i32
%8 = alloca [256 x i8*]
%9 = alloca [256 x i8]
%10 = alloca i8
%11 = alloca i8
%12 = alloca i8
%13 = alloca i8
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca [4 x i8]
%19 = alloca [7 x i8]
%20 = alloca [6 x i8]
%21 = alloca [9 x i8]
%22 = alloca [5 x i8]
%23 = alloca [6 x i8]
%24 = alloca [5 x i8]
%25 = alloca [163 x i8]
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%26 = bitcast [4 x i8]* %18 to i8*
%27 = bitcast [7 x i8]* %19 to i8*
%28 = bitcast [6 x i8]* %20 to i8*
%29 = bitcast [9 x i8]* %21 to i8*
%30 = bitcast [5 x i8]* %22 to i8*
%31 = bitcast [6 x i8]* %23 to i8*
%32 = bitcast [5 x i8]* %24 to i8*
%33 = bitcast [163 x i8]* %25 to i8*
%34 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str, i64 0, i64 0))
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.1, i64 0, i64 0))
%36 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%37 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%38 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%39 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%40 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %38, i8* %39, i32 3)
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.2, i64 0, i64 0), i8* %36, i8* %37, i32 %40)
%42 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%43 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%44 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%45 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%46 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %44, i8* %45, i32 4)
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.3, i64 0, i64 0), i8* %42, i8* %43, i32 %46)
%48 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%49 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%50 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%51 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%52 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %50, i8* %51, i32 99)
%53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.4, i64 0, i64 0), i8* %48, i8* %49, i32 %52)
%54 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%55 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%56 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%57 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%58 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %56, i8* %57, i32 3)
%59 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.5, i64 0, i64 0), i8* %54, i8* %55, i32 %58)
%60 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%61 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%62 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%63 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%64 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %62, i8* %63, i32 4)
%65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* %60, i8* %61, i32 %64)
%66 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%67 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%68 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%69 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%70 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %68, i8* %69, i32 99)
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.7, i64 0, i64 0), i8* %66, i8* %67, i32 %70)
%72 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%73 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%74 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%75 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%76 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %74, i8* %75, i32 3)
%77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.8, i64 0, i64 0), i8* %72, i8* %73, i32 %76)
%78 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%79 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%80 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%81 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%82 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %80, i8* %81, i32 4)
%83 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.9, i64 0, i64 0), i8* %78, i8* %79, i32 %82)
%84 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%85 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%86 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%87 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%88 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %86, i8* %87, i32 99)
%89 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.10, i64 0, i64 0), i8* %84, i8* %85, i32 %88)
%90 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%91 = getelementptr inbounds [7 x i8], [7 x i8]* %19, i64 0, i64 0
%92 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%93 = getelementptr inbounds [7 x i8], [7 x i8]* %19, i64 0, i64 0
%94 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %92, i8* %93, i32 3)
%95 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.11, i64 0, i64 0), i8* %90, i8* %91, i32 %94)
%96 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%97 = getelementptr inbounds [7 x i8], [7 x i8]* %19, i64 0, i64 0
%98 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%99 = getelementptr inbounds [7 x i8], [7 x i8]* %19, i64 0, i64 0
%100 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %98, i8* %99, i32 4)
%101 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.12, i64 0, i64 0), i8* %96, i8* %97, i32 %100)
%102 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%103 = getelementptr inbounds [7 x i8], [7 x i8]* %19, i64 0, i64 0
%104 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%105 = getelementptr inbounds [7 x i8], [7 x i8]* %19, i64 0, i64 0
%106 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %104, i8* %105, i32 99)
%107 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.13, i64 0, i64 0), i8* %102, i8* %103, i32 %106)
%108 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%109 = getelementptr inbounds [9 x i8], [9 x i8]* %21, i64 0, i64 0
%110 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%111 = getelementptr inbounds [9 x i8], [9 x i8]* %21, i64 0, i64 0
%112 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %110, i8* %111, i32 3)
%113 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.14, i64 0, i64 0), i8* %108, i8* %109, i32 %112)
%114 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%115 = getelementptr inbounds [9 x i8], [9 x i8]* %21, i64 0, i64 0
%116 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%117 = getelementptr inbounds [9 x i8], [9 x i8]* %21, i64 0, i64 0
%118 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %116, i8* %117, i32 4)
%119 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.15, i64 0, i64 0), i8* %114, i8* %115, i32 %118)
%120 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%121 = getelementptr inbounds [9 x i8], [9 x i8]* %21, i64 0, i64 0
%122 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%123 = getelementptr inbounds [9 x i8], [9 x i8]* %21, i64 0, i64 0
%124 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %122, i8* %123, i32 99)
%125 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.16, i64 0, i64 0), i8* %120, i8* %121, i32 %124)
%126 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%127 = getelementptr inbounds [9 x i8], [9 x i8]* %21, i64 0, i64 0
%128 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%129 = getelementptr inbounds [9 x i8], [9 x i8]* %21, i64 0, i64 0
%130 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %128, i8* %129, i32 3)
%131 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.17, i64 0, i64 0), i8* %126, i8* %127, i32 %130)
%132 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%133 = getelementptr inbounds [9 x i8], [9 x i8]* %21, i64 0, i64 0
%134 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%135 = getelementptr inbounds [9 x i8], [9 x i8]* %21, i64 0, i64 0
%136 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %134, i8* %135, i32 4)
%137 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.18, i64 0, i64 0), i8* %132, i8* %133, i32 %136)
%138 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%139 = getelementptr inbounds [9 x i8], [9 x i8]* %21, i64 0, i64 0
%140 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%141 = getelementptr inbounds [9 x i8], [9 x i8]* %21, i64 0, i64 0
%142 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %140, i8* %141, i32 99)
%143 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.19, i64 0, i64 0), i8* %138, i8* %139, i32 %142)
%144 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%145 = getelementptr inbounds [5 x i8], [5 x i8]* %22, i64 0, i64 0
%146 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%147 = getelementptr inbounds [5 x i8], [5 x i8]* %22, i64 0, i64 0
%148 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %146, i8* %147, i32 2)
%149 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.20, i64 0, i64 0), i8* %144, i8* %145, i32 %148)
%150 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%151 = getelementptr inbounds [5 x i8], [5 x i8]* %22, i64 0, i64 0
%152 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%153 = getelementptr inbounds [5 x i8], [5 x i8]* %22, i64 0, i64 0
%154 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %152, i8* %153, i32 3)
%155 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.21, i64 0, i64 0), i8* %150, i8* %151, i32 %154)
%156 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%157 = getelementptr inbounds [5 x i8], [5 x i8]* %22, i64 0, i64 0
%158 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%159 = getelementptr inbounds [5 x i8], [5 x i8]* %22, i64 0, i64 0
%160 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %158, i8* %159, i32 99)
%161 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.22, i64 0, i64 0), i8* %156, i8* %157, i32 %160)
%162 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%163 = getelementptr inbounds [6 x i8], [6 x i8]* %23, i64 0, i64 0
%164 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%165 = getelementptr inbounds [6 x i8], [6 x i8]* %23, i64 0, i64 0
%166 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %164, i8* %165, i32 2)
%167 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.23, i64 0, i64 0), i8* %162, i8* %163, i32 %166)
%168 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%169 = getelementptr inbounds [6 x i8], [6 x i8]* %23, i64 0, i64 0
%170 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%171 = getelementptr inbounds [6 x i8], [6 x i8]* %23, i64 0, i64 0
%172 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %170, i8* %171, i32 3)
%173 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.5, i64 0, i64 0), i8* %168, i8* %169, i32 %172)
%174 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%175 = getelementptr inbounds [6 x i8], [6 x i8]* %23, i64 0, i64 0
%176 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%177 = getelementptr inbounds [6 x i8], [6 x i8]* %23, i64 0, i64 0
%178 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %176, i8* %177, i32 4)
%179 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* %174, i8* %175, i32 %178)
%180 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%181 = getelementptr inbounds [6 x i8], [6 x i8]* %23, i64 0, i64 0
%182 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%183 = getelementptr inbounds [6 x i8], [6 x i8]* %23, i64 0, i64 0
%184 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %182, i8* %183, i32 99)
%185 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.7, i64 0, i64 0), i8* %180, i8* %181, i32 %184)
%186 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%187 = getelementptr inbounds [5 x i8], [5 x i8]* %24, i64 0, i64 0
%188 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%189 = getelementptr inbounds [5 x i8], [5 x i8]* %24, i64 0, i64 0
%190 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %188, i8* %189, i32 2)
%191 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.20, i64 0, i64 0), i8* %186, i8* %187, i32 %190)
%192 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%193 = getelementptr inbounds [5 x i8], [5 x i8]* %24, i64 0, i64 0
%194 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%195 = getelementptr inbounds [5 x i8], [5 x i8]* %24, i64 0, i64 0
%196 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %194, i8* %195, i32 3)
%197 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.24, i64 0, i64 0), i8* %192, i8* %193, i32 %196)
%198 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%199 = getelementptr inbounds [5 x i8], [5 x i8]* %24, i64 0, i64 0
%200 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%201 = getelementptr inbounds [5 x i8], [5 x i8]* %24, i64 0, i64 0
%202 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %200, i8* %201, i32 4)
%203 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.25, i64 0, i64 0), i8* %198, i8* %199, i32 %202)
%204 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%205 = getelementptr inbounds [5 x i8], [5 x i8]* %24, i64 0, i64 0
%206 = getelementptr inbounds [4 x i8], [4 x i8]* %18, i64 0, i64 0
%207 = getelementptr inbounds [5 x i8], [5 x i8]* %24, i64 0, i64 0
%208 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %206, i8* %207, i32 99)
%209 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.26, i64 0, i64 0), i8* %204, i8* %205, i32 %208)
%210 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.27, i64 0, i64 0))
%211 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%212 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.28, i64 0, i64 0), i8* %211)
%213 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%214 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%215 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.30, i64 0, i64 0), i8* %213, i8* %214, i32 256)
%216 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.29, i64 0, i64 0), i32 %215)
%217 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%218 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%219 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i64 0, i64 0), i8* %217, i8* %218, i32 256)
%220 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.31, i64 0, i64 0), i32 %219)
%221 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%222 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%223 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0), i8* %221, i8* %222, i32 256)
%224 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.33, i64 0, i64 0), i32 %223)
%225 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%226 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%227 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0), i8* %225, i8* %226, i32 256)
%228 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.35, i64 0, i64 0), i32 %227)
%229 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%230 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%231 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.38, i64 0, i64 0), i8* %229, i8* %230, i32 256)
%232 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.37, i64 0, i64 0), i32 %231)
%233 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%234 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%235 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i8* %233, i8* %234, i32 256)
%236 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.39, i64 0, i64 0), i32 %235)
%237 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%238 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%239 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0), i8* %237, i8* %238, i32 256)
%240 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.41, i64 0, i64 0), i32 %239)
%241 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%242 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%243 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.44, i64 0, i64 0), i8* %241, i8* %242, i32 256)
%244 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.43, i64 0, i64 0), i32 %243)
%245 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%246 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%247 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.46, i64 0, i64 0), i8* %245, i8* %246, i32 256)
%248 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.45, i64 0, i64 0), i32 %247)
%249 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%250 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%251 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.48, i64 0, i64 0), i8* %249, i8* %250, i32 256)
%252 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.47, i64 0, i64 0), i32 %251)
%253 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%254 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%255 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.49, i64 0, i64 0), i8* %253, i8* %254, i32 256)
%256 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.37, i64 0, i64 0), i32 %255)
%257 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.27, i64 0, i64 0))
%258 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%259 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([86 x i8], [86 x i8]* @.str.50, i64 0, i64 0), i8* %258)
%260 = getelementptr inbounds [163 x i8], [163 x i8]* %25, i64 0, i64 0
%261 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%262 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_parse to i32 (i8*, i8**, i32, ...)*)(i8* %260, i8** %261, i32 256)
store i32 %262, i32* %6
%263 = load i32, i32* %6
%264 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.51, i64 0, i64 0), i32 %263)
%265 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.27, i64 0, i64 0))
%266 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.52, i64 0, i64 0))
%267 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%268 = load i32, i32* %6
%269 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.30, i64 0, i64 0), i8** %267, i32 %268)
%270 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.29, i64 0, i64 0), i32 %269)
%271 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%272 = load i32, i32* %6
%273 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i64 0, i64 0), i8** %271, i32 %272)
%274 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.31, i64 0, i64 0), i32 %273)
%275 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%276 = load i32, i32* %6
%277 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0), i8** %275, i32 %276)
%278 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.33, i64 0, i64 0), i32 %277)
%279 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%280 = load i32, i32* %6
%281 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0), i8** %279, i32 %280)
%282 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.35, i64 0, i64 0), i32 %281)
%283 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%284 = load i32, i32* %6
%285 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.38, i64 0, i64 0), i8** %283, i32 %284)
%286 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.37, i64 0, i64 0), i32 %285)
%287 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%288 = load i32, i32* %6
%289 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i8** %287, i32 %288)
%290 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.39, i64 0, i64 0), i32 %289)
%291 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%292 = load i32, i32* %6
%293 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0), i8** %291, i32 %292)
%294 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.41, i64 0, i64 0), i32 %293)
%295 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%296 = load i32, i32* %6
%297 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.44, i64 0, i64 0), i8** %295, i32 %296)
%298 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.43, i64 0, i64 0), i32 %297)
%299 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%300 = load i32, i32* %6
%301 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.46, i64 0, i64 0), i8** %299, i32 %300)
%302 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.45, i64 0, i64 0), i32 %301)
%303 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%304 = load i32, i32* %6
%305 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.48, i64 0, i64 0), i8** %303, i32 %304)
%306 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.47, i64 0, i64 0), i32 %305)
%307 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%308 = load i32, i32* %6
%309 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.49, i64 0, i64 0), i8** %307, i32 %308)
%310 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.37, i64 0, i64 0), i32 %309)
%311 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.27, i64 0, i64 0))
%312 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%313 = load i32, i32* %6
%314 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0), i8** %312, i32 %313)
%315 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.53, i64 0, i64 0), i32 %314)
%316 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%317 = load i32, i32* %6
%318 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0), i8** %316, i32 %317)
%319 = call i32 (i32, i8*, i8*, i8*, i8*, ...) bitcast (i32 (...)* @hex2ccolor to i32 (i32, i8*, i8*, i8*, i8*, ...)*)(i32 %318, i8* %10, i8* %11, i8* %12, i8* %13)
store i32 %319, i32* %7
%320 = load i32, i32* %7
%321 = load i8, i8* %10
%322 = zext i8 %321 to i32
%323 = load i8, i8* %11
%324 = zext i8 %323 to i32
%325 = load i8, i8* %12
%326 = zext i8 %325 to i32
%327 = load i8, i8* %13
%328 = zext i8 %327 to i32
%329 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([132 x i8], [132 x i8]* @.str.54, i64 0, i64 0), i32 %320, i32 %322, i32 %324, i32 %326, i32 %328)
%330 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%331 = load i32, i32* %6
%332 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0), i8** %330, i32 %331)
%333 = call i32 (i32, double*, double*, double*, double*, ...) bitcast (i32 (...)* @hex2dcolor to i32 (i32, double*, double*, double*, double*, ...)*)(i32 %332, double* %14, double* %15, double* %16, double* %17)
store i32 %333, i32* %7
%334 = load i32, i32* %7
%335 = load double, double* %14
%336 = load double, double* %15
%337 = load double, double* %16
%338 = load double, double* %17
%339 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([140 x i8], [140 x i8]* @.str.55, i64 0, i64 0), i32 %334, double %335, double %336, double %337, double %338)
%340 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%341 = load i32, i32* %6
%342 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i8** %340, i32 %341)
%343 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.56, i64 0, i64 0), i32 %342)
%344 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%345 = load i32, i32* %6
%346 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i8** %344, i32 %345)
%347 = call i32 (i32, i8*, i8*, i8*, i8*, ...) bitcast (i32 (...)* @hex2ccolor to i32 (i32, i8*, i8*, i8*, i8*, ...)*)(i32 %346, i8* %10, i8* %11, i8* %12, i8* %13)
store i32 %347, i32* %7
%348 = load i32, i32* %7
%349 = load i8, i8* %10
%350 = zext i8 %349 to i32
%351 = load i8, i8* %11
%352 = zext i8 %351 to i32
%353 = load i8, i8* %12
%354 = zext i8 %353 to i32
%355 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([120 x i8], [120 x i8]* @.str.57, i64 0, i64 0), i32 %348, i32 %350, i32 %352, i32 %354)
%356 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%357 = load i32, i32* %6
%358 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i8** %356, i32 %357)
%359 = call i32 (i32, double*, double*, double*, double*, ...) bitcast (i32 (...)* @hex2dcolor to i32 (i32, double*, double*, double*, double*, ...)*)(i32 %358, double* %14, double* %15, double* %16, double* %17)
store i32 %359, i32* %7
%360 = load i32, i32* %7
%361 = load double, double* %14
%362 = load double, double* %15
%363 = load double, double* %16
%364 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([126 x i8], [126 x i8]* @.str.58, i64 0, i64 0), i32 %360, double %361, double %362, double %363)
%365 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%366 = load i32, i32* %6
%367 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0), i8** %365, i32 %366)
%368 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.59, i64 0, i64 0), i32 %367)
%369 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%370 = load i32, i32* %6
%371 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0), i8** %369, i32 %370)
%372 = call i32 (i32, i8*, i8*, i8*, i8*, ...) bitcast (i32 (...)* @hex2ccolor to i32 (i32, i8*, i8*, i8*, i8*, ...)*)(i32 %371, i8* %10, i8* %11, i8* %12, i8* %13)
store i32 %372, i32* %7
%373 = load i32, i32* %7
%374 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.60, i64 0, i64 0), i32 %373)
%375 = getelementptr inbounds [256 x i8*], [256 x i8*]* %8, i64 0, i64 0
%376 = load i32, i32* %6
%377 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0), i8** %375, i32 %376)
%378 = call i32 (i32, double*, double*, double*, double*, ...) bitcast (i32 (...)* @hex2dcolor to i32 (i32, double*, double*, double*, double*, ...)*)(i32 %377, double* %14, double* %15, double* %16, double* %17)
store i32 %378, i32* %7
%379 = load i32, i32* %7
%380 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.61, i64 0, i64 0), i32 %379)
ret i32 0
}

LLVM IR (-O2):
@__const.main.foobar = [7 x i8] c"foobar\00"
@__const.main.foo_enc = [6 x i8] c"fo%6f\00"
@__const.main.foobar_enc = [9 x i8] c"fo%6fbar\00"
@__const.main.foo_mal = [5 x i8] c"fo%6\00"
@__const.main.foo_mal2 = [6 x i8] c"foo%6\00"
@__const.main.foo_end = [5 x i8] c"foo&\00"
@__const.main.getstring = [163 x i8] c"FUNNYJUNK://@?t%65xt=bleh+bleh%20!&font=Vera.ttf&size=40.3&fg=Fa98BF44%f&debug1&bg=0C0&color=FF4455F&hash=24a%62cdef%7a&rot=123.1&tr+i=cky&debug2#don'tparseme,bro\00"
@.str.2 = [44 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.3 = [44 x i8] c" %s, %s, 4 should be 0 : %d\0A\00"
@.str.4 = [44 x i8] c" %s, %s, 99 should be 0 : %d\0A\00"
@.str.5 = [42 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.6 = [42 x i8] c" %s, %s, 4 should be 0 : %d\0A\00"
@.str.7 = [42 x i8] c" %s, %s, 99 should be 0 : %d\0A\00"
@.str.8 = [40 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.9 = [40 x i8] c" %s, %s, 4 should be 0 : %d\0A\00"
@.str.10 = [40 x i8] c" %s, %s, 99 should be 0 : %d\0A\00"
@.str.11 = [41 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.12 = [41 x i8] c" %s, %s, 4 should be - : %d\0A\00"
@.str.13 = [41 x i8] c" %s, %s, 99 should be - : %d\0A\00"
@.str.14 = [39 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.15 = [39 x i8] c" %s, %s, 4 should be - : %d\0A\00"
@.str.16 = [39 x i8] c" %s, %s, 99 should be - : %d\0A\00"
@.str.17 = [37 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.18 = [37 x i8] c" %s, %s, 4 should be - : %d\0A\00"
@.str.19 = [37 x i8] c" %s, %s, 99 should be - : %d\0A\00"
@.str.20 = [43 x i8] c" %s, %s, 2 should be 0 : %d\0A\00"
@.str.21 = [43 x i8] c" %s, %s, 3 should be + : %d\0A\00"
@.str.22 = [43 x i8] c" %s, %s, 99 should be + : %d\0A\00"
@.str.23 = [42 x i8] c" %s, %s, 2 should be 0 : %d\0A\00"
@.str.24 = [43 x i8] c" %s, %s, 3 should be 0 : %d\0A\00"
@.str.25 = [43 x i8] c" %s, %s, 4 should be 0 : %d\0A\00"
@.str.26 = [43 x i8] c" %s, %s, 99 should be 0 : %d\0A\00"
@.str.28 = [58 x i8] c" Testing qs_scanvalue() with query string:\0A %s\0A\00"
@.str.29 = [55 x i8] c" The following should say \22bleh bleh !\22 : \22%s\22\0A\00"
@.str.30 = [5 x i8] c"text\00"
@.str.31 = [55 x i8] c" The following should say \22Vera.ttf\22 : \22%s\22\0A\00"
@.str.32 = [5 x i8] c"font\00"
@.str.33 = [55 x i8] c" The following should say \2240.3\22 : \22%s\22\0A\00"
@.str.34 = [5 x i8] c"size\00"
@.str.35 = [55 x i8] c" The following should say \22Fa98BF44\22 : \22%s\22\0A\00"
@.str.36 = [3 x i8] c"fg\00"
@.str.37 = [55 x i8] c" The following should say \22\22 : \22%s\22\0A\00"
@.str.38 = [7 x i8] c"debug1\00"
@.str.39 = [55 x i8] c" The following should say \220C0\22 : \22%s\22\0A\00"
@.str.40 = [3 x i8] c"bg\00"
@.str.41 = [55 x i8] c" The following should say \22FF4455F\22 : \22%s\22\0A\00"
@.str.42 = [6 x i8] c"color\00"
@.str.43 = [55 x i8] c" The following should say \2224abcdefz\22 : \22%s\22\0A\00"
@.str.44 = [5 x i8] c"hash\00"
@.str.45 = [55 x i8] c" The following should say \22123.1\22 : \22%s\22\0A\00"
@.str.46 = [4 x i8] c"rot\00"
@.str.47 = [55 x i8] c" The following should say \22cky\22 : \22%s\22\0A\00"
@.str.48 = [5 x i8] c"tr i\00"
@.str.49 = [7 x i8] c"debug2\00"
@.str.50 = [86 x i8] c" Running qs_parse() against query string (also exersizes qs_decode()):\0A %s\0A\00"
@.str.51 = [67 x i8] c" I should have found 11 k/v substrings, actually found: %d\0A\00"
@.str.53 = [59 x i8] c" Testing hex2ccolor() and hex2dcolor() with fg (\22%s\22):\0A\00"
@.str.54 = [132 x i8] c" hex2ccolor() should have decoded 8 chars, r/g/b/a should be 250/152/191/68 : %d chars decoded, r/g/b/a is %d/%d/%d/%d\0A\00"
@.str.55 = [140 x i8] c" hex2dcolor() should have decoded 8 chars, r/g/b/a should be 0.98/0.60/0.75/0.27 : %d chars decoded, r/g/b/a is %.2f/%.2f/%.2f/%.2f\0A\00"
@.str.56 = [59 x i8] c" Testing hex2ccolor() and hex2dcolor() with bg (\22%s\22):\0A\00"
@.str.57 = [120 x i8] c" hex2ccolor() should have decoded 3 chars, r/g/b should be 0/204/0 : %d chars decoded, r/g/b is %d/%d/%d\0A\00"
@.str.58 = [126 x i8] c" hex2dcolor() should have decoded 3 chars, r/g/b should be 0.00/0.80/0.00 : %d chars decoded, r/g/b is %.2f/%.2f/%.2f\0A\00"
@.str.59 = [62 x i8] c" Testing hex2ccolor() and hex2dcolor() with color (\22%s\22):\0A\00"
@.str.60 = [69 x i8] c" hex2ccolor() should have decoded 0 chars : %d chars decoded\0A\00"
@.str.61 = [69 x i8] c" hex2dcolor() should have decoded 0 chars : %d chars decoded\0A\00"
@str = [23 x i8] c"Testing qs_* functions\00"
@str.62 = [26 x i8] c" Testing qs_strncmp():\00"
@str.63 = [53 x i8] c" Testing qs_k2v() against our kv pair substrings:\00"
define i32 @main(i32 %0, i8** nocapture readnone %1) {
%3 = alloca [256 x i8*]
%4 = alloca [256 x i8]
%5 = alloca i8
%6 = alloca i8
%7 = alloca i8
%8 = alloca i8
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca i32
%14 = alloca [7 x i8]
%15 = alloca [6 x i8]
%16 = alloca [9 x i8]
%17 = alloca [5 x i8]
%18 = alloca [6 x i8]
%19 = alloca [5 x i8]
%20 = alloca [163 x i8]
%21 = bitcast [256 x i8*]* %3 to i8*
%22 = getelementptr inbounds [256 x i8], [256 x i8]* %4, i64 0, i64 0
%23 = bitcast double* %9 to i8*
%24 = bitcast double* %10 to i8*
%25 = bitcast double* %11 to i8*
%26 = bitcast double* %12 to i8*
%27 = bitcast i32* %13 to i8*
store i32 7303014, i32* %13
%28 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 0
%29 = getelementptr inbounds [6 x i8], [6 x i8]* %15, i64 0, i64 0
%30 = getelementptr inbounds [9 x i8], [9 x i8]* %16, i64 0, i64 0
%31 = getelementptr inbounds [5 x i8], [5 x i8]* %17, i64 0, i64 0
%32 = getelementptr inbounds [6 x i8], [6 x i8]* %18, i64 0, i64 0
%33 = getelementptr inbounds [5 x i8], [5 x i8]* %19, i64 0, i64 0
%34 = getelementptr inbounds [163 x i8], [163 x i8]* %20, i64 0, i64 0
%35 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str, i64 0, i64 0))
%36 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.62, i64 0, i64 0))
%37 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %27, i32 3)
%38 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @.str.2, i64 0, i64 0), i32* %13, i32* %13, i32 %37)
%39 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %27, i32 4)
%40 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @.str.3, i64 0, i64 0), i32* %13, i32* %13, i32 %39)
%41 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %27, i32 99)
%42 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @.str.4, i64 0, i64 0), i32* %13, i32* %13, i32 %41)
%43 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %29, i32 3)
%44 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.5, i64 0, i64 0), i32* %13, i8* %29, i32 %43)
%45 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %29, i32 4)
%46 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i32* %13, i8* %29, i32 %45)
%47 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %29, i32 99)
%48 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.7, i64 0, i64 0), i32* %13, i8* %29, i32 %47)
%49 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %29, i8* %29, i32 3)
%50 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str.8, i64 0, i64 0), i8* %29, i8* %29, i32 %49)
%51 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %29, i8* %29, i32 4)
%52 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str.9, i64 0, i64 0), i8* %29, i8* %29, i32 %51)
%53 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %29, i8* %29, i32 99)
%54 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str.10, i64 0, i64 0), i8* %29, i8* %29, i32 %53)
%55 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %28, i32 3)
%56 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.11, i64 0, i64 0), i32* %13, i8* %28, i32 %55)
%57 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %28, i32 4)
%58 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.12, i64 0, i64 0), i32* %13, i8* %28, i32 %57)
%59 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %28, i32 99)
%60 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.13, i64 0, i64 0), i32* %13, i8* %28, i32 %59)
%61 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %30, i32 3)
%62 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.14, i64 0, i64 0), i32* %13, i8* %30, i32 %61)
%63 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %30, i32 4)
%64 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.15, i64 0, i64 0), i32* %13, i8* %30, i32 %63)
%65 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %30, i32 99)
%66 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.16, i64 0, i64 0), i32* %13, i8* %30, i32 %65)
%67 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %29, i8* %30, i32 3)
%68 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.17, i64 0, i64 0), i8* %29, i8* %30, i32 %67)
%69 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %29, i8* %30, i32 4)
%70 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.18, i64 0, i64 0), i8* %29, i8* %30, i32 %69)
%71 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %29, i8* %30, i32 99)
%72 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.19, i64 0, i64 0), i8* %29, i8* %30, i32 %71)
%73 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %31, i32 2)
%74 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.20, i64 0, i64 0), i32* %13, i8* %31, i32 %73)
%75 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %31, i32 3)
%76 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.21, i64 0, i64 0), i32* %13, i8* %31, i32 %75)
%77 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %31, i32 99)
%78 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.22, i64 0, i64 0), i32* %13, i8* %31, i32 %77)
%79 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %32, i32 2)
%80 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.23, i64 0, i64 0), i32* %13, i8* %32, i32 %79)
%81 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %32, i32 3)
%82 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.5, i64 0, i64 0), i32* %13, i8* %32, i32 %81)
%83 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %32, i32 4)
%84 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i32* %13, i8* %32, i32 %83)
%85 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %32, i32 99)
%86 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.7, i64 0, i64 0), i32* %13, i8* %32, i32 %85)
%87 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %33, i32 2)
%88 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.20, i64 0, i64 0), i32* %13, i8* %33, i32 %87)
%89 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %33, i32 3)
%90 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.24, i64 0, i64 0), i32* %13, i8* %33, i32 %89)
%91 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %33, i32 4)
%92 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.25, i64 0, i64 0), i32* %13, i8* %33, i32 %91)
%93 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_strncmp to i32 (i8*, i8*, i32, ...)*)(i8* %27, i8* %33, i32 99)
%94 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.26, i64 0, i64 0), i32* %13, i8* %33, i32 %93)
%95 = call i32 @putchar(i32 10)
%96 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str.28, i64 0, i64 0), i8* %34)
%97 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.30, i64 0, i64 0), i8* %34, i8* %22, i32 256)
%98 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.29, i64 0, i64 0), i32 %97)
%99 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i64 0, i64 0), i8* %34, i8* %22, i32 256)
%100 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.31, i64 0, i64 0), i32 %99)
%101 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0), i8* %34, i8* %22, i32 256)
%102 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.33, i64 0, i64 0), i32 %101)
%103 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0), i8* %34, i8* %22, i32 256)
%104 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.35, i64 0, i64 0), i32 %103)
%105 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.38, i64 0, i64 0), i8* %34, i8* %22, i32 256)
%106 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.37, i64 0, i64 0), i32 %105)
%107 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i8* %34, i8* %22, i32 256)
%108 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.39, i64 0, i64 0), i32 %107)
%109 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0), i8* %34, i8* %22, i32 256)
%110 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.41, i64 0, i64 0), i32 %109)
%111 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.44, i64 0, i64 0), i8* %34, i8* %22, i32 256)
%112 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.43, i64 0, i64 0), i32 %111)
%113 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.46, i64 0, i64 0), i8* %34, i8* %22, i32 256)
%114 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.45, i64 0, i64 0), i32 %113)
%115 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.48, i64 0, i64 0), i8* %34, i8* %22, i32 256)
%116 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.47, i64 0, i64 0), i32 %115)
%117 = call i32 (i8*, i8*, i8*, i32, ...) bitcast (i32 (...)* @qs_scanvalue to i32 (i8*, i8*, i8*, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.49, i64 0, i64 0), i8* %34, i8* %22, i32 256)
%118 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.37, i64 0, i64 0), i32 %117)
%119 = call i32 @putchar(i32 10)
%120 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([86 x i8], [86 x i8]* @.str.50, i64 0, i64 0), i8* %34)
%121 = getelementptr inbounds [256 x i8*], [256 x i8*]* %3, i64 0, i64 0
%122 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_parse to i32 (i8*, i8**, i32, ...)*)(i8* %34, i8** %121, i32 256)
%123 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([67 x i8], [67 x i8]* @.str.51, i64 0, i64 0), i32 %122)
%124 = call i32 @putchar(i32 10)
%125 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @str.63, i64 0, i64 0))
%126 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.30, i64 0, i64 0), i8** %121, i32 %122)
%127 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.29, i64 0, i64 0), i32 %126)
%128 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i64 0, i64 0), i8** %121, i32 %122)
%129 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.31, i64 0, i64 0), i32 %128)
%130 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0), i8** %121, i32 %122)
%131 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.33, i64 0, i64 0), i32 %130)
%132 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0), i8** %121, i32 %122)
%133 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.35, i64 0, i64 0), i32 %132)
%134 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.38, i64 0, i64 0), i8** %121, i32 %122)
%135 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.37, i64 0, i64 0), i32 %134)
%136 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i8** %121, i32 %122)
%137 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.39, i64 0, i64 0), i32 %136)
%138 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0), i8** %121, i32 %122)
%139 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.41, i64 0, i64 0), i32 %138)
%140 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.44, i64 0, i64 0), i8** %121, i32 %122)
%141 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.43, i64 0, i64 0), i32 %140)
%142 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.46, i64 0, i64 0), i8** %121, i32 %122)
%143 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.45, i64 0, i64 0), i32 %142)
%144 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.48, i64 0, i64 0), i8** %121, i32 %122)
%145 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.47, i64 0, i64 0), i32 %144)
%146 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.49, i64 0, i64 0), i8** %121, i32 %122)
%147 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.37, i64 0, i64 0), i32 %146)
%148 = call i32 @putchar(i32 10)
%149 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0), i8** %121, i32 %122)
%150 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @.str.53, i64 0, i64 0), i32 %149)
%151 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0), i8** %121, i32 %122)
%152 = call i32 (i32, i8*, i8*, i8*, i8*, ...) bitcast (i32 (...)* @hex2ccolor to i32 (i32, i8*, i8*, i8*, i8*, ...)*)(i32 %151, i8* %5, i8* %6, i8* %7, i8* %8)
%153 = load i8, i8* %5
%154 = zext i8 %153 to i32
%155 = load i8, i8* %6
%156 = zext i8 %155 to i32
%157 = load i8, i8* %7
%158 = zext i8 %157 to i32
%159 = load i8, i8* %8
%160 = zext i8 %159 to i32
%161 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([132 x i8], [132 x i8]* @.str.54, i64 0, i64 0), i32 %152, i32 %154, i32 %156, i32 %158, i32 %160)
%162 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0), i8** %121, i32 %122)
%163 = call i32 (i32, double*, double*, double*, double*, ...) bitcast (i32 (...)* @hex2dcolor to i32 (i32, double*, double*, double*, double*, ...)*)(i32 %162, double* %9, double* %10, double* %11, double* %12)
%164 = load double, double* %9
%165 = load double, double* %10
%166 = load double, double* %11
%167 = load double, double* %12
%168 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([140 x i8], [140 x i8]* @.str.55, i64 0, i64 0), i32 %163, double %164, double %165, double %166, double %167)
%169 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i8** %121, i32 %122)
%170 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @.str.56, i64 0, i64 0), i32 %169)
%171 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i8** %121, i32 %122)
%172 = call i32 (i32, i8*, i8*, i8*, i8*, ...) bitcast (i32 (...)* @hex2ccolor to i32 (i32, i8*, i8*, i8*, i8*, ...)*)(i32 %171, i8* %5, i8* %6, i8* %7, i8* %8)
%173 = load i8, i8* %5
%174 = zext i8 %173 to i32
%175 = load i8, i8* %6
%176 = zext i8 %175 to i32
%177 = load i8, i8* %7
%178 = zext i8 %177 to i32
%179 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([120 x i8], [120 x i8]* @.str.57, i64 0, i64 0), i32 %172, i32 %174, i32 %176, i32 %178)
%180 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i8** %121, i32 %122)
%181 = call i32 (i32, double*, double*, double*, double*, ...) bitcast (i32 (...)* @hex2dcolor to i32 (i32, double*, double*, double*, double*, ...)*)(i32 %180, double* %9, double* %10, double* %11, double* %12)
%182 = load double, double* %9
%183 = load double, double* %10
%184 = load double, double* %11
%185 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([126 x i8], [126 x i8]* @.str.58, i64 0, i64 0), i32 %181, double %182, double %183, double %184)
%186 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0), i8** %121, i32 %122)
%187 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.59, i64 0, i64 0), i32 %186)
%188 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0), i8** %121, i32 %122)
%189 = call i32 (i32, i8*, i8*, i8*, i8*, ...) bitcast (i32 (...)* @hex2ccolor to i32 (i32, i8*, i8*, i8*, i8*, ...)*)(i32 %188, i8* %5, i8* %6, i8* %7, i8* %8)
%190 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @.str.60, i64 0, i64 0), i32 %189)
%191 = call i32 (i8*, i8**, i32, ...) bitcast (i32 (...)* @qs_k2v to i32 (i8*, i8**, i32, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0), i8** %121, i32 %122)
%192 = call i32 (i32, double*, double*, double*, double*, ...) bitcast (i32 (...)* @hex2dcolor to i32 (i32, double*, double*, double*, double*, ...)*)(i32 %191, double* %9, double* %10, double* %11, double* %12)
%193 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @.str.61, i64 0, i64 0), i32 %192)
ret i32 0
}