#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
struct stat {
  int st_mode;
};
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int S_IFMT;
int S_IFREG;
scalar_t__ atoi(char *);
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
scalar_t__ feof(int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
char *getenv(char *);
int /*<<< orphan*/ getline(char *, int, int /*<<< orphan*/ *);
scalar_t__ isdigit(char);
scalar_t__ isname(char);
scalar_t__ isspace(char);
scalar_t__ pointincircle(double *, double **);
scalar_t__ pointinpoly(double *, double **);
scalar_t__ pointinrect(double *, double **);
int /*<<< orphan*/ sendmesg(char *);
int /*<<< orphan*/ servererr(char *);
int /*<<< orphan*/ sprintf(char *, char *, char *);
int /*<<< orphan*/ stat(char *, struct stat *);
char *strchr(char *, char);
int /*<<< orphan*/ strcmp(char *, char *);
int /*<<< orphan*/ strcpy(char *, char *);
int main(int argc, char **argv) {
  char input[500], *mapname, def[500], conf[500], errstr[500];
  double testpoint[2], pointarray[100][2];
  int i, j, k;
  FILE *fp;
  char *t;
  double dist, mindist;
  int sawpoint = 0;
  if (argc != 2)
    servererr("Wrong number of arguments, client may not support ISMAP.");
  mapname = getenv("PATH_INFO");
  if ((!mapname) || (!mapname[0]))
    servererr("No map name given. Please read the <A "
              "HREF=\"http://hoohoo.ncsa.uiuc.edu/docs/tutorials/"
              "imagemapping.html\">instructions</A>.<P>");
  mapname++;
  if (!(t = strchr(argv[1], ',')))
    servererr("Your client doesn't support image mapping properly.");
  *t++ = '\0';
  testpoint[0] = (double)atoi(argv[1]);
  testpoint[1] = (double)atoi(t);
  if (strchr(mapname, '/')) {
    strcpy(conf, getenv("PATH_TRANSLATED"));
    goto openconf;
  }
  if ((fp = fopen("/usr/local/etc/httpd/conf/imagemap.conf", "r")) == NULL) {
    goto openconf;
  }
  while (!(getline(input, 500, fp))) {
    char confname[500];
    if ((input[0] == '#') || (!input[0]))
      continue;
    for (i = 0; isname(input[i]) && (input[i] != ':'); i++)
      confname[i] = input[i];
    confname[i] = '\0';
    if (!strcmp(confname, mapname))
      goto found;
  }
  if (feof(fp)) {
    struct stat sbuf;
    strcpy(conf, getenv("PATH_TRANSLATED"));
    if (!stat(conf, &sbuf) && ((sbuf.st_mode & S_IFMT) == S_IFREG))
      goto openconf;
    else
      servererr("Map not found in configuration file.");
  }
found:
  fclose(fp);
  while (isspace(input[i]) || input[i] == ':')
    ++i;
  for (j = 0; input[i] && isname(input[i]); ++i, ++j)
    conf[j] = input[i];
  conf[j] = '\0';
openconf:
  if (!(fp = fopen(conf, "r"))) {
    sprintf(errstr, "Couldn't open configuration file: %s", conf);
    servererr(errstr);
  }
  while (!(getline(input, 500, fp))) {
    char type[500];
    char url[500];
    char num[10];
    if ((input[0] == '#') || (!input[0]))
      continue;
    type[0] = '\0';
    url[0] = '\0';
    for (i = 0; isname(input[i]) && (input[i]); i++)
      type[i] = input[i];
    type[i] = '\0';
    while (isspace(input[i]))
      ++i;
    for (j = 0; input[i] && isname(input[i]); ++i, ++j)
      url[j] = input[i];
    url[j] = '\0';
    if (!strcmp(type, "default") && !sawpoint) {
      strcpy(def, url);
      continue;
    }
    k = 0;
    while (input[i]) {
      while (isspace(input[i]) || input[i] == ',')
        i++;
      j = 0;
      while (isdigit(input[i]))
        num[j++] = input[i++];
      num[j] = '\0';
      if (num[0] != '\0')
        pointarray[k][0] = (double)atoi(num);
      else
        break;
      while (isspace(input[i]) || input[i] == ',')
        i++;
      j = 0;
      while (isdigit(input[i]))
        num[j++] = input[i++];
      num[j] = '\0';
      if (num[0] != '\0')
        pointarray[k++][1] = (double)atoi(num);
      else {
        fclose(fp);
        servererr("Missing y value.");
      }
    }
    pointarray[k][0] = -1;
    if (!strcmp(type, "poly"))
      if (pointinpoly(testpoint, pointarray))
        sendmesg(url);
    if (!strcmp(type, "circle"))
      if (pointincircle(testpoint, pointarray))
        sendmesg(url);
    if (!strcmp(type, "rect"))
      if (pointinrect(testpoint, pointarray))
        sendmesg(url);
    if (!strcmp(type, "point")) {
      dist = ((testpoint[0] - pointarray[0][0]) *
              (testpoint[0] - pointarray[0][0])) +
             ((testpoint[1] - pointarray[0][1]) *
              (testpoint[1] - pointarray[0][1]));
      if ((!sawpoint) || (dist < mindist)) {
        mindist = dist;
        strcpy(def, url);
      }
      sawpoint++;
    }
  }
  if (def[0])
    sendmesg(def);
  servererr("No default specified.");
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x14c0,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0xe94(%rbp)
cmpl   $0x2,-0x8(%rbp)
je     1269 <main+0x39>
lea    0xda4(%rip),%rdi
call   1100 <servererr@plt>
lea    0xdd1(%rip),%rdi
call   1030 <getenv@plt>
mov    %rax,-0x218(%rbp)
cmpq   $0x0,-0x218(%rbp)
je     129a <main+0x6a>
mov    -0x218(%rbp),%rax
cmpb   $0x0,(%rax)
jne    12a6 <main+0x76>
lea    0xdaa(%rip),%rdi
call   1100 <servererr@plt>
mov    -0x218(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x218(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    $0x2c,%esi
call   1090 <strchr@plt>
mov    %rax,-0xe80(%rbp)
cmp    $0x0,%rax
jne    12e7 <main+0xb7>
lea    0xde8(%rip),%rdi
call   1100 <servererr@plt>
mov    -0xe80(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0xe80(%rbp)
movb   $0x0,(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1120 <atoi@plt>
cvtsi2sd %rax,%xmm0
movsd  %xmm0,-0x820(%rbp)
ff
mov    -0xe80(%rbp),%rdi
call   1120 <atoi@plt>
cvtsi2sd %rax,%xmm0
movsd  %xmm0,-0x818(%rbp)
ff
mov    -0x218(%rbp),%rdi
mov    $0x2f,%esi
call   1090 <strchr@plt>
cmp    $0x0,%rax
je     137b <main+0x14b>
lea    -0x610(%rbp),%rax
mov    %rax,-0x14a8(%rbp)
lea    0xd9c(%rip),%rdi
call   1030 <getenv@plt>
mov    -0x14a8(%rbp),%rdi
mov    %rax,%rsi
call   1050 <strcpy@plt>
jmp    1675 <main+0x445>
lea    0xd8c(%rip),%rdi
lea    0xdad(%rip),%rsi
call   1110 <fopen@plt>
mov    %rax,-0xe78(%rbp)
cmp    $0x0,%rax
jne    13a4 <main+0x174>
jmp    1675 <main+0x445>
jmp    13a9 <main+0x179>
lea    -0x210(%rbp),%rdi
mov    -0xe78(%rbp),%rdx
mov    $0x1f4,%esi
call   1130 <getline@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    13d6 <main+0x1a6>
jmp    14be <main+0x28e>
movsbl -0x210(%rbp),%eax
cmp    $0x23,%eax
je     13f3 <main+0x1c3>
cmpb   $0x0,-0x210(%rbp)
jne    13f8 <main+0x1c8>
jmp    13a9 <main+0x179>
movl   $0x0,-0xe64(%rbp)
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%edi
ff
call   10b0 <isname@plt>
mov    %rax,%rcx
xor    %eax,%eax
cmp    $0x0,%rcx
mov    %al,-0x14a9(%rbp)
je     1446 <main+0x216>
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%eax
ff
cmp    $0x3a,%eax
setne  %al
mov    %al,-0x14a9(%rbp)
mov    -0x14a9(%rbp),%al
test   $0x1,%al
jne    1459 <main+0x229>
jmp    1489 <main+0x259>
movslq -0xe64(%rbp),%rax
mov    -0x210(%rbp,%rax,1),%cl
movslq -0xe64(%rbp),%rax
mov    %cl,-0x1090(%rbp,%rax,1)
mov    -0xe64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe64(%rbp)
jmp    1402 <main+0x1d2>
movslq -0xe64(%rbp),%rax
movb   $0x0,-0x1090(%rbp,%rax,1)
lea    -0x1090(%rbp),%rdi
mov    -0x218(%rbp),%rsi
call   10c0 <strcmp@plt>
cmp    $0x0,%eax
jne    14b9 <main+0x289>
jmp    1552 <main+0x322>
jmp    13a9 <main+0x179>
mov    -0xe78(%rbp),%rdi
call   10e0 <feof@plt>
cmp    $0x0,%rax
je     154d <main+0x31d>
lea    -0x610(%rbp),%rax
mov    %rax,-0x14b8(%rbp)
lea    0xc15(%rip),%rdi
call   1030 <getenv@plt>
mov    -0x14b8(%rbp),%rdi
mov    %rax,%rsi
call   1050 <strcpy@plt>
lea    -0x610(%rbp),%rdi
lea    -0x1098(%rbp),%rsi
call   10f0 <stat@plt>
cmp    $0x0,%eax
jne    153c <main+0x30c>
mov    -0x1098(%rbp),%eax
mov    0x2ab2(%rip),%rcx
and    (%rcx),%eax
mov    0x2ab9(%rip),%rcx
cmp    (%rcx),%eax
jne    153c <main+0x30c>
jmp    1675 <main+0x445>
lea    0xbf5(%rip),%rdi
call   1100 <servererr@plt>
jmp    154d <main+0x31d>
jmp    1552 <main+0x322>
mov    -0xe78(%rbp),%rdi
call   1070 <fclose@plt>
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%edi
ff
call   10a0 <isspace@plt>
mov    %rax,%rcx
mov    $0x1,%al
cmp    $0x0,%rcx
mov    %al,-0x14b9(%rbp)
jne    15a2 <main+0x372>
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%eax
ff
cmp    $0x3a,%eax
sete   %al
mov    %al,-0x14b9(%rbp)
mov    -0x14b9(%rbp),%al
test   $0x1,%al
jne    15b5 <main+0x385>
jmp    15c9 <main+0x399>
mov    -0xe64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe64(%rbp)
jmp    155e <main+0x32e>
movl   $0x0,-0xe68(%rbp)
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%ecx
ff
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x14ba(%rbp)
je     1614 <main+0x3e4>
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%edi
ff
call   10b0 <isname@plt>
cmp    $0x0,%rax
setne  %al
mov    %al,-0x14ba(%rbp)
mov    -0x14ba(%rbp),%al
test   $0x1,%al
jne    1627 <main+0x3f7>
jmp    1666 <main+0x436>
movslq -0xe64(%rbp),%rax
mov    -0x210(%rbp,%rax,1),%cl
movslq -0xe68(%rbp),%rax
mov    %cl,-0x610(%rbp,%rax,1)
mov    -0xe64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe64(%rbp)
mov    -0xe68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe68(%rbp)
jmp    15d3 <main+0x3a3>
movslq -0xe68(%rbp),%rax
movb   $0x0,-0x610(%rbp,%rax,1)
lea    -0x610(%rbp),%rdi
lea    0xab3(%rip),%rsi
call   1110 <fopen@plt>
mov    %rax,-0xe78(%rbp)
cmp    $0x0,%rax
jne    16bf <main+0x48f>
lea    -0x810(%rbp),%rdi
lea    -0x610(%rbp),%rdx
lea    0xaaf(%rip),%rsi
call   1140 <sprintf@plt>
lea    -0x810(%rbp),%rdi
call   1100 <servererr@plt>
jmp    16c4 <main+0x494>
lea    -0x210(%rbp),%rdi
mov    -0xe78(%rbp),%rdx
mov    $0x1f4,%esi
call   1130 <getline@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    16f1 <main+0x4c1>
jmp    1d3a <main+0xb0a>
movsbl -0x210(%rbp),%eax
cmp    $0x23,%eax
je     170e <main+0x4de>
cmpb   $0x0,-0x210(%rbp)
jne    1713 <main+0x4e3>
jmp    16c4 <main+0x494>
movb   $0x0,-0x1290(%rbp)
movb   $0x0,-0x1490(%rbp)
movl   $0x0,-0xe64(%rbp)
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%edi
ff
call   10b0 <isname@plt>
mov    %rax,%rcx
xor    %eax,%eax
cmp    $0x0,%rcx
mov    %al,-0x14bb(%rbp)
je     176f <main+0x53f>
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
setne  %al
mov    %al,-0x14bb(%rbp)
mov    -0x14bb(%rbp),%al
test   $0x1,%al
jne    1782 <main+0x552>
jmp    17b2 <main+0x582>
movslq -0xe64(%rbp),%rax
mov    -0x210(%rbp,%rax,1),%cl
movslq -0xe64(%rbp),%rax
mov    %cl,-0x1290(%rbp,%rax,1)
mov    -0xe64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe64(%rbp)
jmp    172b <main+0x4fb>
movslq -0xe64(%rbp),%rax
movb   $0x0,-0x1290(%rbp,%rax,1)
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%edi
ff
call   10a0 <isspace@plt>
cmp    $0x0,%rax
je     17f3 <main+0x5c3>
mov    -0xe64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe64(%rbp)
jmp    17c1 <main+0x591>
movl   $0x0,-0xe68(%rbp)
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%ecx
ff
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x14bc(%rbp)
je     183e <main+0x60e>
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%edi
ff
call   10b0 <isname@plt>
cmp    $0x0,%rax
setne  %al
mov    %al,-0x14bc(%rbp)
mov    -0x14bc(%rbp),%al
test   $0x1,%al
jne    1851 <main+0x621>
jmp    1890 <main+0x660>
movslq -0xe64(%rbp),%rax
mov    -0x210(%rbp,%rax,1),%cl
movslq -0xe68(%rbp),%rax
mov    %cl,-0x1490(%rbp,%rax,1)
mov    -0xe64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe64(%rbp)
mov    -0xe68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe68(%rbp)
jmp    17fd <main+0x5cd>
movslq -0xe68(%rbp),%rax
movb   $0x0,-0x1490(%rbp,%rax,1)
lea    -0x1290(%rbp),%rdi
lea    0x8d5(%rip),%rsi
call   10c0 <strcmp@plt>
cmp    $0x0,%eax
jne    18e0 <main+0x6b0>
cmpl   $0x0,-0xe94(%rbp)
jne    18e0 <main+0x6b0>
lea    -0x410(%rbp),%rdi
lea    -0x1490(%rbp),%rsi
call   1050 <strcpy@plt>
jmp    16c4 <main+0x494>
movl   $0x0,-0xe6c(%rbp)
movslq -0xe64(%rbp),%rax
cmpb   $0x0,-0x210(%rbp,%rax,1)
je     1b6d <main+0x93d>
jmp    1904 <main+0x6d4>
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%edi
ff
call   10a0 <isspace@plt>
mov    %rax,%rcx
mov    $0x1,%al
cmp    $0x0,%rcx
mov    %al,-0x14bd(%rbp)
jne    1948 <main+0x718>
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%eax
ff
cmp    $0x2c,%eax
sete   %al
mov    %al,-0x14bd(%rbp)
mov    -0x14bd(%rbp),%al
test   $0x1,%al
jne    195b <main+0x72b>
jmp    196f <main+0x73f>
mov    -0xe64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe64(%rbp)
jmp    1904 <main+0x6d4>
movl   $0x0,-0xe68(%rbp)
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%edi
ff
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     19d0 <main+0x7a0>
mov    -0xe64(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0xe64(%rbp)
cltq
mov    -0x210(%rbp,%rax,1),%cl
mov    -0xe68(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0xe68(%rbp)
cltq
mov    %cl,-0x149a(%rbp,%rax,1)
jmp    1979 <main+0x749>
movslq -0xe68(%rbp),%rax
movb   $0x0,-0x149a(%rbp,%rax,1)
movsbl -0x149a(%rbp),%eax
cmp    $0x0,%eax
je     1a1e <main+0x7ee>
lea    -0x149a(%rbp),%rdi
call   1120 <atoi@plt>
cvtsi2sd %rax,%xmm0
movslq -0xe6c(%rbp),%rcx
lea    -0xe60(%rbp),%rax
shl    $0x4,%rcx
add    %rcx,%rax
movsd  %xmm0,(%rax)
jmp    1a23 <main+0x7f3>
jmp    1b6d <main+0x93d>
jmp    1a28 <main+0x7f8>
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%edi
ff
call   10a0 <isspace@plt>
mov    %rax,%rcx
mov    $0x1,%al
cmp    $0x0,%rcx
mov    %al,-0x14be(%rbp)
jne    1a6c <main+0x83c>
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%eax
ff
cmp    $0x2c,%eax
sete   %al
mov    %al,-0x14be(%rbp)
mov    -0x14be(%rbp),%al
test   $0x1,%al
jne    1a7f <main+0x84f>
jmp    1a93 <main+0x863>
mov    -0xe64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe64(%rbp)
jmp    1a28 <main+0x7f8>
movl   $0x0,-0xe68(%rbp)
movslq -0xe64(%rbp),%rax
movsbl -0x210(%rbp,%rax,1),%edi
ff
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1af4 <main+0x8c4>
mov    -0xe64(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0xe64(%rbp)
cltq
mov    -0x210(%rbp,%rax,1),%cl
mov    -0xe68(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0xe68(%rbp)
cltq
mov    %cl,-0x149a(%rbp,%rax,1)
jmp    1a9d <main+0x86d>
movslq -0xe68(%rbp),%rax
movb   $0x0,-0x149a(%rbp,%rax,1)
movsbl -0x149a(%rbp),%eax
cmp    $0x0,%eax
je     1b50 <main+0x920>
lea    -0x149a(%rbp),%rdi
call   1120 <atoi@plt>
cvtsi2sd %rax,%xmm0
mov    -0xe6c(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0xe6c(%rbp)
movslq %eax,%rcx
lea    -0xe60(%rbp),%rax
shl    $0x4,%rcx
add    %rcx,%rax
movsd  %xmm0,0x8(%rax)
jmp    1b68 <main+0x938>
mov    -0xe78(%rbp),%rdi
call   1070 <fclose@plt>
lea    0x627(%rip),%rdi
call   1100 <servererr@plt>
jmp    18ea <main+0x6ba>
movslq -0xe6c(%rbp),%rcx
lea    -0xe60(%rbp),%rax
shl    $0x4,%rcx
add    %rcx,%rax
movsd  0x476(%rip),%xmm0
movsd  %xmm0,(%rax)
lea    -0x1290(%rbp),%rdi
lea    0x5ff(%rip),%rsi
call   10c0 <strcmp@plt>
cmp    $0x0,%eax
jne    1bd8 <main+0x9a8>
lea    -0x820(%rbp),%rdi
lea    -0xe60(%rbp),%rsi
call   1080 <pointinpoly@plt>
cmp    $0x0,%rax
je     1bd3 <main+0x9a3>
lea    -0x1490(%rbp),%rdi
call   1150 <sendmesg@plt>
jmp    1bd8 <main+0x9a8>
lea    -0x1290(%rbp),%rdi
lea    0x5ba(%rip),%rsi
call   10c0 <strcmp@plt>
cmp    $0x0,%eax
jne    1c22 <main+0x9f2>
lea    -0x820(%rbp),%rdi
lea    -0xe60(%rbp),%rsi
call   10d0 <pointincircle@plt>
cmp    $0x0,%rax
je     1c1d <main+0x9ed>
lea    -0x1490(%rbp),%rdi
call   1150 <sendmesg@plt>
jmp    1c22 <main+0x9f2>
lea    -0x1290(%rbp),%rdi
lea    0x577(%rip),%rsi
call   10c0 <strcmp@plt>
cmp    $0x0,%eax
jne    1c6c <main+0xa3c>
lea    -0x820(%rbp),%rdi
lea    -0xe60(%rbp),%rsi
call   1060 <pointinrect@plt>
cmp    $0x0,%rax
je     1c67 <main+0xa37>
lea    -0x1490(%rbp),%rdi
call   1150 <sendmesg@plt>
jmp    1c6c <main+0xa3c>
lea    -0x1290(%rbp),%rdi
lea    0x532(%rip),%rsi
call   10c0 <strcmp@plt>
cmp    $0x0,%eax
jne    1d35 <main+0xb05>
movsd  -0x820(%rbp),%xmm0
ff
subsd  -0xe60(%rbp),%xmm0
ff
movsd  -0x820(%rbp),%xmm2
ff
subsd  -0xe60(%rbp),%xmm2
ff
movsd  -0x818(%rbp),%xmm1
ff
subsd  -0xe58(%rbp),%xmm1
ff
movsd  -0x818(%rbp),%xmm3
ff
subsd  -0xe58(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe88(%rbp)
ff
cmpl   $0x0,-0xe94(%rbp)
je     1d03 <main+0xad3>
movsd  -0xe88(%rbp),%xmm1
ff
movsd  -0xe90(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1d26 <main+0xaf6>
movsd  -0xe88(%rbp),%xmm0
ff
movsd  %xmm0,-0xe90(%rbp)
ff
lea    -0x410(%rbp),%rdi
lea    -0x1490(%rbp),%rsi
call   1050 <strcpy@plt>
mov    -0xe94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe94(%rbp)
jmp    16c4 <main+0x494>
cmpb   $0x0,-0x410(%rbp)
je     1d53 <main+0xb23>
lea    -0x410(%rbp),%rdi
call   1150 <sendmesg@plt>
lea    0x458(%rip),%rdi
call   1100 <servererr@plt>
mov    -0x4(%rbp),%eax
add    $0x14c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x1288,%rsp
mov    %rsi,%r14
cmp    $0x2,%edi
je     1255 <main+0x25>
lea    0xdb0(%rip),%rdi
call   1100 <servererr@plt>
lea    0xddd(%rip),%rdi
call   1030 <getenv@plt>
mov    %rax,%r12
test   %rax,%rax
je     1270 <main+0x40>
cmpb   $0x0,(%r12)
jne    127c <main+0x4c>
lea    0xdcc(%rip),%rdi
call   1100 <servererr@plt>
add    $0x1,%r12
mov    0x8(%r14),%rdi
mov    $0x2c,%esi
call   1090 <strchr@plt>
mov    %rax,%rbp
test   %rax,%rax
jne    12a2 <main+0x72>
lea    0xe25(%rip),%rdi
call   1100 <servererr@plt>
mov    %rbp,%rbx
add    $0x1,%rbx
movb   $0x0,0x0(%rbp)
mov    0x8(%r14),%rdi
call   1120 <atoi@plt>
cvtsi2sd %rax,%xmm0
movsd  %xmm0,0x30(%rsp)
mov    %rbx,%rdi
call   1120 <atoi@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
movsd  %xmm0,0x38(%rsp)
mov    %r12,%rdi
mov    $0x2f,%esi
call   1090 <strchr@plt>
test   %rax,%rax
je     130a <main+0xda>
lea    0xe06(%rip),%rdi
call   1030 <getenv@plt>
lea    0x650(%rsp),%rdi
mov    %rax,%rsi
call   1050 <strcpy@plt>
jmp    14f7 <main+0x2c7>
lea    0xdf5(%rip),%rdi
lea    0xe16(%rip),%rsi
call   1110 <fopen@plt>
test   %rax,%rax
je     14f7 <main+0x2c7>
mov    %rax,%r13
lea    0x50(%rsp),%rdi
mov    $0x1f4,%esi
mov    %rax,%rdx
call   1130 <getline@plt>
test   %eax,%eax
je     144f <main+0x21f>
mov    %r13,%rdi
call   10e0 <feof@plt>
test   %rax,%rax
je     13ae <main+0x17e>
lea    0xd9f(%rip),%rdi
call   1030 <getenv@plt>
lea    0x650(%rsp),%r14
mov    %r14,%rdi
mov    %rax,%rsi
call   1050 <strcpy@plt>
lea    0x850(%rsp),%rsi
mov    %r14,%rdi
call   10f0 <stat@plt>
test   %eax,%eax
jne    13a2 <main+0x172>
mov    0x2c4e(%rip),%rax
mov    (%rax),%eax
and    0x850(%rsp),%eax
mov    0x2c4e(%rip),%rcx
cmp    (%rcx),%eax
je     14f7 <main+0x2c7>
lea    0xd87(%rip),%rdi
call   1100 <servererr@plt>
movabs $0x100000000,%r14
mov    %r13,%rdi
call   1070 <fclose@plt>
movslq %r15d,%rbp
lea    (%rsp,%rbp,1),%rbx
add    $0x50,%rbx
shl    $0x20,%rbp
jmp    13eb <main+0x1bb>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%r15d
add    %r14,%rbp
add    $0x1,%rbx
movsbl (%rbx),%edi
call   10a0 <isspace@plt>
test   %rax,%rax
jne    13e0 <main+0x1b0>
cmpb   $0x3a,(%rbx)
je     13e0 <main+0x1b0>
sar    $0x20,%rbp
mov    0x50(%rsp,%rbp,1),%al
test   %al,%al
je     14eb <main+0x2bb>
movslq %r15d,%rcx
lea    (%rsp,%rcx,1),%rbp
add    $0x51,%rbp
xor    %ebx,%ebx
nopw   0x0(%rax,%rax,1)
movsbl %al,%edi
call   10b0 <isname@plt>
test   %rax,%rax
je     14ed <main+0x2bd>
movzbl -0x1(%rbp,%rbx,1),%eax
mov    %al,0x650(%rsp,%rbx,1)
movzbl 0x0(%rbp,%rbx,1),%eax
add    $0x1,%rbx
test   %al,%al
jne    1420 <main+0x1f0>
jmp    14ed <main+0x2bd>
lea    0x50(%rsp),%r14
lea    0x850(%rsp),%rbx
jmp    1496 <main+0x266>
xchg   %ax,%ax
mov    %r15d,%eax
movb   $0x0,0x850(%rsp,%rax,1)
mov    %rbx,%rdi
mov    %r12,%rsi
call   10c0 <strcmp@plt>
test   %eax,%eax
je     13ae <main+0x17e>
mov    %r14,%rdi
mov    $0x1f4,%esi
mov    %r13,%rdx
call   1130 <getline@plt>
test   %eax,%eax
jne    1343 <main+0x113>
mov    0x50(%rsp),%al
test   %al,%al
je     147e <main+0x24e>
cmp    $0x23,%al
je     147e <main+0x24e>
movsbl %al,%edi
call   10b0 <isname@plt>
xor    %r15d,%r15d
test   %rax,%rax
je     1460 <main+0x230>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movzbl 0x50(%rsp,%r15,1),%eax
cmp    $0x3a,%al
je     1460 <main+0x230>
mov    %al,0x850(%rsp,%r15,1)
movsbl 0x51(%rsp,%r15,1),%edi
add    $0x1,%r15
call   10b0 <isname@plt>
test   %rax,%rax
jne    14c0 <main+0x290>
jmp    1460 <main+0x230>
xor    %ebx,%ebx
mov    %ebx,%eax
movb   $0x0,0x650(%rsp,%rax,1)
lea    0xc30(%rip),%rsi
lea    0x650(%rsp),%rdi
call   1110 <fopen@plt>
mov    %rax,%rbx
test   %rax,%rax
jne    153a <main+0x30a>
lea    0xc3b(%rip),%rsi
lea    0x1090(%rsp),%rbp
lea    0x650(%rsp),%rdx
mov    %rbp,%rdi
call   1140 <sprintf@plt>
mov    %rbp,%rdi
call   1100 <servererr@plt>
lea    0x50(%rsp),%rdi
mov    $0x1f4,%esi
mov    %rbx,%rdx
call   1130 <getline@plt>
test   %eax,%eax
je     1587 <main+0x357>
cmpb   $0x0,0xe90(%rsp)
je     1567 <main+0x337>
lea    0xe90(%rsp),%rdi
call   1150 <sendmesg@plt>
lea    0xc34(%rip),%rdi
call   1100 <servererr@plt>
xor    %eax,%eax
add    $0x1288,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
movabs $0x100000000,%r12
xor    %eax,%eax
mov    %rax,0x18(%rsp)
movabs $0x746c7561666564,%r15
mov    %rbx,0x28(%rsp)
jmp    15ea <main+0x3ba>
lea    0xe90(%rsp),%rdi
lea    0x450(%rsp),%rsi
call   1050 <strcpy@plt>
xor    %eax,%eax
mov    %rax,0x18(%rsp)
mov    0x28(%rsp),%rbx
nopw   0x0(%rax,%rax,1)
lea    0x50(%rsp),%rdi
mov    $0x1f4,%esi
mov    %rbx,%rdx
call   1130 <getline@plt>
test   %eax,%eax
jne    1550 <main+0x320>
mov    0x50(%rsp),%al
test   %al,%al
je     15d0 <main+0x3a0>
cmp    $0x23,%al
je     15d0 <main+0x3a0>
movb   $0x0,0x250(%rsp)
movb   $0x0,0x450(%rsp)
movsbl %al,%edi
call   10b0 <isname@plt>
xor    %ebx,%ebx
test   %rax,%rax
je     1643 <main+0x413>
cs nopw 0x0(%rax,%rax,1)
nop
movzbl 0x50(%rsp,%rbx,1),%eax
test   %al,%al
je     1643 <main+0x413>
mov    %al,0x250(%rsp,%rbx,1)
movsbl 0x51(%rsp,%rbx,1),%edi
add    $0x1,%rbx
call   10b0 <isname@plt>
test   %rax,%rax
jne    1620 <main+0x3f0>
mov    %ebx,%ebx
movb   $0x0,0x250(%rsp,%rbx,1)
add    $0xffffffffffffffff,%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsbl 0x51(%rsp,%rbx,1),%edi
call   10a0 <isspace@plt>
add    $0x1,%rbx
test   %rax,%rax
jne    1660 <main+0x430>
mov    %ebx,%eax
mov    0x50(%rsp,%rax,1),%al
test   %al,%al
je     16bc <main+0x48c>
mov    %ebx,%r14d
lea    0x51(%rsp),%rcx
add    %rcx,%r14
xor    %ebp,%ebp
nopw   0x0(%rax,%rax,1)
movsbl %al,%edi
call   10b0 <isname@plt>
test   %rax,%rax
je     16be <main+0x48e>
movzbl -0x1(%r14,%rbp,1),%eax
mov    %al,0x450(%rsp,%rbp,1)
add    $0x1,%ebx
movzbl (%r14,%rbp,1),%eax
add    $0x1,%rbp
test   %al,%al
jne    1690 <main+0x460>
jmp    16be <main+0x48e>
xor    %ebp,%ebp
mov    %ebp,%eax
movb   $0x0,0x450(%rsp,%rax,1)
cmp    %r15,0x250(%rsp)
jne    16dd <main+0x4ad>
cmpl   $0x0,0x18(%rsp)
je     15a9 <main+0x379>
movslq %ebx,%rax
cmpb   $0x0,0x50(%rsp,%rax,1)
je     1881 <main+0x651>
xor    %r14d,%r14d
jmp    1719 <main+0x4e9>
mov    0x28(%rsp),%rdi
call   1070 <fclose@plt>
lea    0xa79(%rip),%rdi
call   1100 <servererr@plt>
mov    0x20(%rsp),%r14d
movslq %ebx,%rax
cmpb   $0x0,0x50(%rsp,%rax,1)
je     1884 <main+0x654>
movslq %ebx,%r15
mov    %r15,%rbx
shl    $0x20,%rbx
jmp    1737 <main+0x507>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%r15
add    %r12,%rbx
movsbl 0x50(%rsp,%r15,1),%edi
call   10a0 <isspace@plt>
test   %rax,%rax
jne    1730 <main+0x500>
cmpb   $0x2c,0x50(%rsp,%r15,1)
je     1730 <main+0x500>
sar    $0x20,%rbx
movsbl 0x50(%rsp,%rbx,1),%edi
call   1040 <isdigit@plt>
xor    %ebp,%ebp
test   %rax,%rax
je     1793 <main+0x563>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    0x1(%rbx),%r15
movzbl 0x50(%rsp,%rbx,1),%eax
mov    %al,0xe(%rsp,%rbp,1)
add    $0x1,%rbp
movsbl 0x51(%rsp,%rbx,1),%edi
call   1040 <isdigit@plt>
mov    %r15,%rbx
test   %rax,%rax
jne    1770 <main+0x540>
mov    %ebp,%eax
movb   $0x0,0xe(%rsp,%rax,1)
cmpb   $0x0,0xe(%rsp)
je     1884 <main+0x654>
lea    0xe(%rsp),%rdi
call   1120 <atoi@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
mov    %r14d,0x20(%rsp)
movslq %r14d,%r13
shl    $0x4,%r13
movsd  %xmm0,0x850(%rsp,%r13,1)
mov    %r15,%r14
shl    $0x20,%r14
movslq %r15d,%rbx
jmp    17e7 <main+0x5b7>
nopl   0x0(%rax)
add    $0x1,%rbx
add    %r12,%r14
movsbl 0x50(%rsp,%rbx,1),%edi
call   10a0 <isspace@plt>
test   %rax,%rax
jne    17e0 <main+0x5b0>
cmpb   $0x2c,0x50(%rsp,%rbx,1)
je     17e0 <main+0x5b0>
sar    $0x20,%r14
movsbl 0x50(%rsp,%r14,1),%edi
call   1040 <isdigit@plt>
xor    %ebp,%ebp
test   %rax,%rax
je     1845 <main+0x615>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    0x1(%r14),%rbx
movzbl 0x50(%rsp,%r14,1),%eax
mov    %al,0xe(%rsp,%rbp,1)
add    $0x1,%rbp
movsbl 0x51(%rsp,%r14,1),%edi
call   1040 <isdigit@plt>
mov    %rbx,%r14
test   %rax,%rax
jne    1820 <main+0x5f0>
mov    %ebp,%eax
movb   $0x0,0xe(%rsp,%rax,1)
cmpb   $0x0,0xe(%rsp)
je     16f0 <main+0x4c0>
lea    0xe(%rsp),%rdi
call   1120 <atoi@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
mov    0x20(%rsp),%r14d
add    $0x1,%r14d
movsd  %xmm0,0x858(%rsp,%r13,1)
jmp    170b <main+0x4db>
xor    %r14d,%r14d
movslq %r14d,%rax
shl    $0x4,%rax
movabs $0xbff0000000000000,%rcx
mov    %rcx,0x850(%rsp,%rax,1)
mov    0x250(%rsp),%eax
mov    $0x796c6f70,%ecx
xor    %ecx,%eax
movzbl 0x254(%rsp),%ecx
or     %eax,%ecx
jne    18db <main+0x6ab>
lea    0x30(%rsp),%rdi
lea    0x850(%rsp),%rsi
call   1080 <pointinpoly@plt>
test   %rax,%rax
je     18db <main+0x6ab>
lea    0x450(%rsp),%rdi
call   1150 <sendmesg@plt>
mov    0x250(%rsp),%eax
mov    $0x63726963,%ecx
xor    %ecx,%eax
mov    0x253(%rsp),%ecx
mov    $0x656c63,%edx
xor    %edx,%ecx
or     %eax,%ecx
mov    0x28(%rsp),%rbx
jne    1924 <main+0x6f4>
lea    0x30(%rsp),%rdi
lea    0x850(%rsp),%rsi
call   10d0 <pointincircle@plt>
test   %rax,%rax
je     1924 <main+0x6f4>
lea    0x450(%rsp),%rdi
call   1150 <sendmesg@plt>
mov    0x250(%rsp),%eax
mov    $0x74636572,%ecx
xor    %ecx,%eax
movzbl 0x254(%rsp),%ecx
or     %eax,%ecx
movabs $0x746c7561666564,%r15
jne    196c <main+0x73c>
lea    0x30(%rsp),%rdi
lea    0x850(%rsp),%rsi
call   1060 <pointinrect@plt>
test   %rax,%rax
je     196c <main+0x73c>
lea    0x450(%rsp),%rdi
call   1150 <sendmesg@plt>
mov    0x250(%rsp),%eax
mov    $0x6e696f70,%ecx
xor    %ecx,%eax
movzwl 0x254(%rsp),%ecx
xor    $0x74,%ecx
or     %eax,%ecx
jne    15d0 <main+0x3a0>
movsd  0x30(%rsp),%xmm1
movsd  0x38(%rsp),%xmm0
subsd  0x850(%rsp),%xmm1
subsd  0x858(%rsp),%xmm0
mulsd  %xmm0,%xmm0
mulsd  %xmm1,%xmm1
addsd  %xmm0,%xmm1
cmpl   $0x0,0x18(%rsp)
je     19ca <main+0x79a>
movsd  0x48(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jbe    19f1 <main+0x7c1>
lea    0xe90(%rsp),%rdi
lea    0x450(%rsp),%rsi
movsd  %xmm1,0x20(%rsp)
call   1050 <strcpy@plt>
movsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x48(%rsp)
mov    0x18(%rsp),%rax
add    $0x1,%eax
mov    %rax,0x18(%rsp)
jmp    15d0 <main+0x3a0>

LLVM IR (-O0):
%struct.stat = type { i32 }
@.str = [57 x i8] c"Wrong number of arguments, client may not support ISMAP.\00"
@.str.1 = [10 x i8] c"PATH_INFO\00"
@.str.2 = [127 x i8] c"No map name given. Please read the <A HREF=\22http://hoohoo.ncsa.uiuc.edu/docs/tutorials/imagemapping.html\22>instructions</A>.<P>\00"
@.str.3 = [52 x i8] c"Your client doesn't support image mapping properly.\00"
@.str.4 = [16 x i8] c"PATH_TRANSLATED\00"
@.str.5 = [40 x i8] c"/usr/local/etc/httpd/conf/imagemap.conf\00"
@.str.6 = [2 x i8] c"r\00"
@S_IFMT = global i32 0
@S_IFREG = global i32 0
@.str.7 = [37 x i8] c"Map not found in configuration file.\00"
@.str.8 = [37 x i8] c"Couldn't open configuration file: %s\00"
@.str.9 = [8 x i8] c"default\00"
@.str.10 = [17 x i8] c"Missing y value.\00"
@.str.11 = [5 x i8] c"poly\00"
@.str.12 = [7 x i8] c"circle\00"
@.str.13 = [5 x i8] c"rect\00"
@.str.14 = [6 x i8] c"point\00"
@.str.15 = [22 x i8] c"No default specified.\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca [500 x i8]
%7 = alloca i8*
%8 = alloca [500 x i8]
%9 = alloca [500 x i8]
%10 = alloca [500 x i8]
%11 = alloca [2 x double]
%12 = alloca [100 x [2 x double]]
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32*
%17 = alloca i8*
%18 = alloca double
%19 = alloca double
%20 = alloca i32
%21 = alloca [500 x i8]
%22 = alloca %struct.stat
%23 = alloca [500 x i8]
%24 = alloca [500 x i8]
%25 = alloca [10 x i8]
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i32 0, i32* %20
%26 = load i32, i32* %4
%27 = icmp ne i32 %26, 2
br i1 %27, label %28, label %30
28: ; preds = %2
%29 = call i32 @servererr(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0))
br label %30
30: ; preds = %28, %2
%31 = call i8* @getenv(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.1, i64 0, i64 0))
store i8* %31, i8** %7
%32 = load i8*, i8** %7
%33 = icmp ne i8* %32, null
br i1 %33, label %34, label %39
34: ; preds = %30
%35 = load i8*, i8** %7
%36 = getelementptr inbounds i8, i8* %35, i64 0
%37 = load i8, i8* %36
%38 = icmp ne i8 %37, 0
br i1 %38, label %41, label %39
39: ; preds = %34, %30
%40 = call i32 @servererr(i8* getelementptr inbounds ([127 x i8], [127 x i8]* @.str.2, i64 0, i64 0))
br label %41
41: ; preds = %39, %34
%42 = load i8*, i8** %7
%43 = getelementptr inbounds i8, i8* %42, i32 1
store i8* %43, i8** %7
%44 = load i8**, i8*** %5
%45 = getelementptr inbounds i8*, i8** %44, i64 1
%46 = load i8*, i8** %45
%47 = call i8* @strchr(i8* %46, i8 signext 44)
store i8* %47, i8** %17
%48 = icmp ne i8* %47, null
br i1 %48, label %51, label %49
49: ; preds = %41
%50 = call i32 @servererr(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.3, i64 0, i64 0))
br label %51
51: ; preds = %49, %41
%52 = load i8*, i8** %17
%53 = getelementptr inbounds i8, i8* %52, i32 1
store i8* %53, i8** %17
store i8 0, i8* %52
%54 = load i8**, i8*** %5
%55 = getelementptr inbounds i8*, i8** %54, i64 1
%56 = load i8*, i8** %55
%57 = call i64 @atoi(i8* %56)
%58 = sitofp i64 %57 to double
%59 = getelementptr inbounds [2 x double], [2 x double]* %11, i64 0, i64 0
store double %58, double* %59
%60 = load i8*, i8** %17
%61 = call i64 @atoi(i8* %60)
%62 = sitofp i64 %61 to double
%63 = getelementptr inbounds [2 x double], [2 x double]* %11, i64 0, i64 1
store double %62, double* %63
%64 = load i8*, i8** %7
%65 = call i8* @strchr(i8* %64, i8 signext 47)
%66 = icmp ne i8* %65, null
br i1 %66, label %67, label %71
67: ; preds = %51
%68 = getelementptr inbounds [500 x i8], [500 x i8]* %9, i64 0, i64 0
%69 = call i8* @getenv(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0))
%70 = call i32 @strcpy(i8* %68, i8* %69)
br label %209
71: ; preds = %51
%72 = call i32* @fopen(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
store i32* %72, i32** %16
%73 = icmp eq i32* %72, null
br i1 %73, label %74, label %75
74: ; preds = %71
br label %209
75: ; preds = %71
br label %76
76: ; preds = %129, %91, %75
%77 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 0
%78 = load i32*, i32** %16
%79 = call i32 @getline(i8* %77, i32 500, i32* %78)
%80 = icmp ne i32 %79, 0
%81 = xor i1 %80, true
br i1 %81, label %82, label %130
82: ; preds = %76
%83 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 0
%84 = load i8, i8* %83
%85 = sext i8 %84 to i32
%86 = icmp eq i32 %85, 35
br i1 %86, label %91, label %87
87: ; preds = %82
%88 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 0
%89 = load i8, i8* %88
%90 = icmp ne i8 %89, 0
br i1 %90, label %92, label %91
91: ; preds = %87, %82
br label %76
92: ; preds = %87
store i32 0, i32* %13
br label %93
93: ; preds = %117, %92
%94 = load i32, i32* %13
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %95
%97 = load i8, i8* %96
%98 = call i64 @isname(i8 signext %97)
%99 = icmp ne i64 %98, 0
br i1 %99, label %100, label %107
100: ; preds = %93
%101 = load i32, i32* %13
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %102
%104 = load i8, i8* %103
%105 = sext i8 %104 to i32
%106 = icmp ne i32 %105, 58
br label %107
107: ; preds = %100, %93
%108 = phi i1 [ false, %93 ], [ %106, %100 ]
br i1 %108, label %109, label %120
109: ; preds = %107
%110 = load i32, i32* %13
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %111
%113 = load i8, i8* %112
%114 = load i32, i32* %13
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds [500 x i8], [500 x i8]* %21, i64 0, i64 %115
store i8 %113, i8* %116
br label %117
117: ; preds = %109
%118 = load i32, i32* %13
%119 = add nsw i32 %118, 1
store i32 %119, i32* %13
br label %93
120: ; preds = %107
%121 = load i32, i32* %13
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds [500 x i8], [500 x i8]* %21, i64 0, i64 %122
store i8 0, i8* %123
%124 = getelementptr inbounds [500 x i8], [500 x i8]* %21, i64 0, i64 0
%125 = load i8*, i8** %7
%126 = call i32 @strcmp(i8* %124, i8* %125)
%127 = icmp ne i32 %126, 0
br i1 %127, label %129, label %128
128: ; preds = %120
br label %153
129: ; preds = %120
br label %76
130: ; preds = %76
%131 = load i32*, i32** %16
%132 = call i64 @feof(i32* %131)
%133 = icmp ne i64 %132, 0
br i1 %133, label %134, label %152
134: ; preds = %130
%135 = getelementptr inbounds [500 x i8], [500 x i8]* %9, i64 0, i64 0
%136 = call i8* @getenv(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0))
%137 = call i32 @strcpy(i8* %135, i8* %136)
%138 = getelementptr inbounds [500 x i8], [500 x i8]* %9, i64 0, i64 0
%139 = call i32 @stat(i8* %138, %struct.stat* %22)
%140 = icmp ne i32 %139, 0
br i1 %140, label %149, label %141
141: ; preds = %134
%142 = getelementptr inbounds %struct.stat, %struct.stat* %22, i32 0, i32 0
%143 = load i32, i32* %142
%144 = load i32, i32* @S_IFMT
%145 = and i32 %143, %144
%146 = load i32, i32* @S_IFREG
%147 = icmp eq i32 %145, %146
br i1 %147, label %148, label %149
148: ; preds = %141
br label %209
149: ; preds = %141, %134
%150 = call i32 @servererr(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.7, i64 0, i64 0))
br label %151
151: ; preds = %149
br label %152
152: ; preds = %151, %130
br label %153
153: ; preds = %152, %128
%154 = load i32*, i32** %16
%155 = call i32 @fclose(i32* %154)
br label %156
156: ; preds = %172, %153
%157 = load i32, i32* %13
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %158
%160 = load i8, i8* %159
%161 = call i64 @isspace(i8 signext %160)
%162 = icmp ne i64 %161, 0
br i1 %162, label %170, label %163
163: ; preds = %156
%164 = load i32, i32* %13
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %165
%167 = load i8, i8* %166
%168 = sext i8 %167 to i32
%169 = icmp eq i32 %168, 58
br label %170
170: ; preds = %163, %156
%171 = phi i1 [ true, %156 ], [ %169, %163 ]
br i1 %171, label %172, label %175
172: ; preds = %170
%173 = load i32, i32* %13
%174 = add nsw i32 %173, 1
store i32 %174, i32* %13
br label %156
175: ; preds = %170
store i32 0, i32* %14
br label %176
176: ; preds = %200, %175
%177 = load i32, i32* %13
%178 = sext i32 %177 to i64
%179 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %178
%180 = load i8, i8* %179
%181 = sext i8 %180 to i32
%182 = icmp ne i32 %181, 0
br i1 %182, label %183, label %190
183: ; preds = %176
%184 = load i32, i32* %13
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %185
%187 = load i8, i8* %186
%188 = call i64 @isname(i8 signext %187)
%189 = icmp ne i64 %188, 0
br label %190
190: ; preds = %183, %176
%191 = phi i1 [ false, %176 ], [ %189, %183 ]
br i1 %191, label %192, label %205
192: ; preds = %190
%193 = load i32, i32* %13
%194 = sext i32 %193 to i64
%195 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %194
%196 = load i8, i8* %195
%197 = load i32, i32* %14
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds [500 x i8], [500 x i8]* %9, i64 0, i64 %198
store i8 %196, i8* %199
br label %200
200: ; preds = %192
%201 = load i32, i32* %13
%202 = add nsw i32 %201, 1
store i32 %202, i32* %13
%203 = load i32, i32* %14
%204 = add nsw i32 %203, 1
store i32 %204, i32* %14
br label %176
205: ; preds = %190
%206 = load i32, i32* %14
%207 = sext i32 %206 to i64
%208 = getelementptr inbounds [500 x i8], [500 x i8]* %9, i64 0, i64 %207
store i8 0, i8* %208
br label %209
209: ; preds = %205, %148, %74, %67
%210 = getelementptr inbounds [500 x i8], [500 x i8]* %9, i64 0, i64 0
%211 = call i32* @fopen(i8* %210, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
store i32* %211, i32** %16
%212 = icmp ne i32* %211, null
br i1 %212, label %219, label %213
213: ; preds = %209
%214 = getelementptr inbounds [500 x i8], [500 x i8]* %10, i64 0, i64 0
%215 = getelementptr inbounds [500 x i8], [500 x i8]* %9, i64 0, i64 0
%216 = call i32 @sprintf(i8* %214, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.8, i64 0, i64 0), i8* %215)
%217 = getelementptr inbounds [500 x i8], [500 x i8]* %10, i64 0, i64 0
%218 = call i32 @servererr(i8* %217)
br label %219
219: ; preds = %213, %209
br label %220
220: ; preds = %537, %320, %235, %219
%221 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 0
%222 = load i32*, i32** %16
%223 = call i32 @getline(i8* %221, i32 500, i32* %222)
%224 = icmp ne i32 %223, 0
%225 = xor i1 %224, true
br i1 %225, label %226, label %538
226: ; preds = %220
%227 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 0
%228 = load i8, i8* %227
%229 = sext i8 %228 to i32
%230 = icmp eq i32 %229, 35
br i1 %230, label %235, label %231
231: ; preds = %226
%232 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 0
%233 = load i8, i8* %232
%234 = icmp ne i8 %233, 0
br i1 %234, label %236, label %235
235: ; preds = %231, %226
br label %220
236: ; preds = %231
%237 = getelementptr inbounds [500 x i8], [500 x i8]* %23, i64 0, i64 0
store i8 0, i8* %237
%238 = getelementptr inbounds [500 x i8], [500 x i8]* %24, i64 0, i64 0
store i8 0, i8* %238
store i32 0, i32* %13
br label %239
239: ; preds = %263, %236
%240 = load i32, i32* %13
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %241
%243 = load i8, i8* %242
%244 = call i64 @isname(i8 signext %243)
%245 = icmp ne i64 %244, 0
br i1 %245, label %246, label %253
246: ; preds = %239
%247 = load i32, i32* %13
%248 = sext i32 %247 to i64
%249 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %248
%250 = load i8, i8* %249
%251 = sext i8 %250 to i32
%252 = icmp ne i32 %251, 0
br label %253
253: ; preds = %246, %239
%254 = phi i1 [ false, %239 ], [ %252, %246 ]
br i1 %254, label %255, label %266
255: ; preds = %253
%256 = load i32, i32* %13
%257 = sext i32 %256 to i64
%258 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %257
%259 = load i8, i8* %258
%260 = load i32, i32* %13
%261 = sext i32 %260 to i64
%262 = getelementptr inbounds [500 x i8], [500 x i8]* %23, i64 0, i64 %261
store i8 %259, i8* %262
br label %263
263: ; preds = %255
%264 = load i32, i32* %13
%265 = add nsw i32 %264, 1
store i32 %265, i32* %13
br label %239
266: ; preds = %253
%267 = load i32, i32* %13
%268 = sext i32 %267 to i64
%269 = getelementptr inbounds [500 x i8], [500 x i8]* %23, i64 0, i64 %268
store i8 0, i8* %269
br label %270
270: ; preds = %277, %266
%271 = load i32, i32* %13
%272 = sext i32 %271 to i64
%273 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %272
%274 = load i8, i8* %273
%275 = call i64 @isspace(i8 signext %274)
%276 = icmp ne i64 %275, 0
br i1 %276, label %277, label %280
277: ; preds = %270
%278 = load i32, i32* %13
%279 = add nsw i32 %278, 1
store i32 %279, i32* %13
br label %270
280: ; preds = %270
store i32 0, i32* %14
br label %281
281: ; preds = %305, %280
%282 = load i32, i32* %13
%283 = sext i32 %282 to i64
%284 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %283
%285 = load i8, i8* %284
%286 = sext i8 %285 to i32
%287 = icmp ne i32 %286, 0
br i1 %287, label %288, label %295
288: ; preds = %281
%289 = load i32, i32* %13
%290 = sext i32 %289 to i64
%291 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %290
%292 = load i8, i8* %291
%293 = call i64 @isname(i8 signext %292)
%294 = icmp ne i64 %293, 0
br label %295
295: ; preds = %288, %281
%296 = phi i1 [ false, %281 ], [ %294, %288 ]
br i1 %296, label %297, label %310
297: ; preds = %295
%298 = load i32, i32* %13
%299 = sext i32 %298 to i64
%300 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %299
%301 = load i8, i8* %300
%302 = load i32, i32* %14
%303 = sext i32 %302 to i64
%304 = getelementptr inbounds [500 x i8], [500 x i8]* %24, i64 0, i64 %303
store i8 %301, i8* %304
br label %305
305: ; preds = %297
%306 = load i32, i32* %13
%307 = add nsw i32 %306, 1
store i32 %307, i32* %13
%308 = load i32, i32* %14
%309 = add nsw i32 %308, 1
store i32 %309, i32* %14
br label %281
310: ; preds = %295
%311 = load i32, i32* %14
%312 = sext i32 %311 to i64
%313 = getelementptr inbounds [500 x i8], [500 x i8]* %24, i64 0, i64 %312
store i8 0, i8* %313
%314 = getelementptr inbounds [500 x i8], [500 x i8]* %23, i64 0, i64 0
%315 = call i32 @strcmp(i8* %314, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0))
%316 = icmp ne i32 %315, 0
br i1 %316, label %324, label %317
317: ; preds = %310
%318 = load i32, i32* %20
%319 = icmp ne i32 %318, 0
br i1 %319, label %324, label %320
320: ; preds = %317
%321 = getelementptr inbounds [500 x i8], [500 x i8]* %8, i64 0, i64 0
%322 = getelementptr inbounds [500 x i8], [500 x i8]* %24, i64 0, i64 0
%323 = call i32 @strcpy(i8* %321, i8* %322)
br label %220
324: ; preds = %317, %310
store i32 0, i32* %15
br label %325
325: ; preds = %445, %324
%326 = load i32, i32* %13
%327 = sext i32 %326 to i64
%328 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %327
%329 = load i8, i8* %328
%330 = icmp ne i8 %329, 0
br i1 %330, label %331, label %446
331: ; preds = %325
br label %332
332: ; preds = %348, %331
%333 = load i32, i32* %13
%334 = sext i32 %333 to i64
%335 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %334
%336 = load i8, i8* %335
%337 = call i64 @isspace(i8 signext %336)
%338 = icmp ne i64 %337, 0
br i1 %338, label %346, label %339
339: ; preds = %332
%340 = load i32, i32* %13
%341 = sext i32 %340 to i64
%342 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %341
%343 = load i8, i8* %342
%344 = sext i8 %343 to i32
%345 = icmp eq i32 %344, 44
br label %346
346: ; preds = %339, %332
%347 = phi i1 [ true, %332 ], [ %345, %339 ]
br i1 %347, label %348, label %351
348: ; preds = %346
%349 = load i32, i32* %13
%350 = add nsw i32 %349, 1
store i32 %350, i32* %13
br label %332
351: ; preds = %346
store i32 0, i32* %14
br label %352
352: ; preds = %359, %351
%353 = load i32, i32* %13
%354 = sext i32 %353 to i64
%355 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %354
%356 = load i8, i8* %355
%357 = call i64 @isdigit(i8 signext %356)
%358 = icmp ne i64 %357, 0
br i1 %358, label %359, label %369
359: ; preds = %352
%360 = load i32, i32* %13
%361 = add nsw i32 %360, 1
store i32 %361, i32* %13
%362 = sext i32 %360 to i64
%363 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %362
%364 = load i8, i8* %363
%365 = load i32, i32* %14
%366 = add nsw i32 %365, 1
store i32 %366, i32* %14
%367 = sext i32 %365 to i64
%368 = getelementptr inbounds [10 x i8], [10 x i8]* %25, i64 0, i64 %367
store i8 %364, i8* %368
br label %352
369: ; preds = %352
%370 = load i32, i32* %14
%371 = sext i32 %370 to i64
%372 = getelementptr inbounds [10 x i8], [10 x i8]* %25, i64 0, i64 %371
store i8 0, i8* %372
%373 = getelementptr inbounds [10 x i8], [10 x i8]* %25, i64 0, i64 0
%374 = load i8, i8* %373
%375 = sext i8 %374 to i32
%376 = icmp ne i32 %375, 0
br i1 %376, label %377, label %385
377: ; preds = %369
%378 = getelementptr inbounds [10 x i8], [10 x i8]* %25, i64 0, i64 0
%379 = call i64 @atoi(i8* %378)
%380 = sitofp i64 %379 to double
%381 = load i32, i32* %15
%382 = sext i32 %381 to i64
%383 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %12, i64 0, i64 %382
%384 = getelementptr inbounds [2 x double], [2 x double]* %383, i64 0, i64 0
store double %380, double* %384
br label %386
385: ; preds = %369
br label %446
386: ; preds = %377
br label %387
387: ; preds = %403, %386
%388 = load i32, i32* %13
%389 = sext i32 %388 to i64
%390 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %389
%391 = load i8, i8* %390
%392 = call i64 @isspace(i8 signext %391)
%393 = icmp ne i64 %392, 0
br i1 %393, label %401, label %394
394: ; preds = %387
%395 = load i32, i32* %13
%396 = sext i32 %395 to i64
%397 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %396
%398 = load i8, i8* %397
%399 = sext i8 %398 to i32
%400 = icmp eq i32 %399, 44
br label %401
401: ; preds = %394, %387
%402 = phi i1 [ true, %387 ], [ %400, %394 ]
br i1 %402, label %403, label %406
403: ; preds = %401
%404 = load i32, i32* %13
%405 = add nsw i32 %404, 1
store i32 %405, i32* %13
br label %387
406: ; preds = %401
store i32 0, i32* %14
br label %407
407: ; preds = %414, %406
%408 = load i32, i32* %13
%409 = sext i32 %408 to i64
%410 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %409
%411 = load i8, i8* %410
%412 = call i64 @isdigit(i8 signext %411)
%413 = icmp ne i64 %412, 0
br i1 %413, label %414, label %424
414: ; preds = %407
%415 = load i32, i32* %13
%416 = add nsw i32 %415, 1
store i32 %416, i32* %13
%417 = sext i32 %415 to i64
%418 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 %417
%419 = load i8, i8* %418
%420 = load i32, i32* %14
%421 = add nsw i32 %420, 1
store i32 %421, i32* %14
%422 = sext i32 %420 to i64
%423 = getelementptr inbounds [10 x i8], [10 x i8]* %25, i64 0, i64 %422
store i8 %419, i8* %423
br label %407
424: ; preds = %407
%425 = load i32, i32* %14
%426 = sext i32 %425 to i64
%427 = getelementptr inbounds [10 x i8], [10 x i8]* %25, i64 0, i64 %426
store i8 0, i8* %427
%428 = getelementptr inbounds [10 x i8], [10 x i8]* %25, i64 0, i64 0
%429 = load i8, i8* %428
%430 = sext i8 %429 to i32
%431 = icmp ne i32 %430, 0
br i1 %431, label %432, label %441
432: ; preds = %424
%433 = getelementptr inbounds [10 x i8], [10 x i8]* %25, i64 0, i64 0
%434 = call i64 @atoi(i8* %433)
%435 = sitofp i64 %434 to double
%436 = load i32, i32* %15
%437 = add nsw i32 %436, 1
store i32 %437, i32* %15
%438 = sext i32 %436 to i64
%439 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %12, i64 0, i64 %438
%440 = getelementptr inbounds [2 x double], [2 x double]* %439, i64 0, i64 1
store double %435, double* %440
br label %445
441: ; preds = %424
%442 = load i32*, i32** %16
%443 = call i32 @fclose(i32* %442)
%444 = call i32 @servererr(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.10, i64 0, i64 0))
br label %445
445: ; preds = %441, %432
br label %325
446: ; preds = %385, %325
%447 = load i32, i32* %15
%448 = sext i32 %447 to i64
%449 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %12, i64 0, i64 %448
%450 = getelementptr inbounds [2 x double], [2 x double]* %449, i64 0, i64 0
store double -1.000000e+00, double* %450
%451 = getelementptr inbounds [500 x i8], [500 x i8]* %23, i64 0, i64 0
%452 = call i32 @strcmp(i8* %451, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0))
%453 = icmp ne i32 %452, 0
br i1 %453, label %464, label %454
454: ; preds = %446
%455 = getelementptr inbounds [2 x double], [2 x double]* %11, i64 0, i64 0
%456 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %12, i64 0, i64 0
%457 = bitcast [2 x double]* %456 to double**
%458 = call i64 @pointinpoly(double* %455, double** %457)
%459 = icmp ne i64 %458, 0
br i1 %459, label %460, label %463
460: ; preds = %454
%461 = getelementptr inbounds [500 x i8], [500 x i8]* %24, i64 0, i64 0
%462 = call i32 @sendmesg(i8* %461)
br label %463
463: ; preds = %460, %454
br label %464
464: ; preds = %463, %446
%465 = getelementptr inbounds [500 x i8], [500 x i8]* %23, i64 0, i64 0
%466 = call i32 @strcmp(i8* %465, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0))
%467 = icmp ne i32 %466, 0
br i1 %467, label %478, label %468
468: ; preds = %464
%469 = getelementptr inbounds [2 x double], [2 x double]* %11, i64 0, i64 0
%470 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %12, i64 0, i64 0
%471 = bitcast [2 x double]* %470 to double**
%472 = call i64 @pointincircle(double* %469, double** %471)
%473 = icmp ne i64 %472, 0
br i1 %473, label %474, label %477
474: ; preds = %468
%475 = getelementptr inbounds [500 x i8], [500 x i8]* %24, i64 0, i64 0
%476 = call i32 @sendmesg(i8* %475)
br label %477
477: ; preds = %474, %468
br label %478
478: ; preds = %477, %464
%479 = getelementptr inbounds [500 x i8], [500 x i8]* %23, i64 0, i64 0
%480 = call i32 @strcmp(i8* %479, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0))
%481 = icmp ne i32 %480, 0
br i1 %481, label %492, label %482
482: ; preds = %478
%483 = getelementptr inbounds [2 x double], [2 x double]* %11, i64 0, i64 0
%484 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %12, i64 0, i64 0
%485 = bitcast [2 x double]* %484 to double**
%486 = call i64 @pointinrect(double* %483, double** %485)
%487 = icmp ne i64 %486, 0
br i1 %487, label %488, label %491
488: ; preds = %482
%489 = getelementptr inbounds [500 x i8], [500 x i8]* %24, i64 0, i64 0
%490 = call i32 @sendmesg(i8* %489)
br label %491
491: ; preds = %488, %482
br label %492
492: ; preds = %491, %478
%493 = getelementptr inbounds [500 x i8], [500 x i8]* %23, i64 0, i64 0
%494 = call i32 @strcmp(i8* %493, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0))
%495 = icmp ne i32 %494, 0
br i1 %495, label %537, label %496
496: ; preds = %492
%497 = getelementptr inbounds [2 x double], [2 x double]* %11, i64 0, i64 0
%498 = load double, double* %497
%499 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %12, i64 0, i64 0
%500 = getelementptr inbounds [2 x double], [2 x double]* %499, i64 0, i64 0
%501 = load double, double* %500
%502 = fsub double %498, %501
%503 = getelementptr inbounds [2 x double], [2 x double]* %11, i64 0, i64 0
%504 = load double, double* %503
%505 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %12, i64 0, i64 0
%506 = getelementptr inbounds [2 x double], [2 x double]* %505, i64 0, i64 0
%507 = load double, double* %506
%508 = fsub double %504, %507
%509 = getelementptr inbounds [2 x double], [2 x double]* %11, i64 0, i64 1
%510 = load double, double* %509
%511 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %12, i64 0, i64 0
%512 = getelementptr inbounds [2 x double], [2 x double]* %511, i64 0, i64 1
%513 = load double, double* %512
%514 = fsub double %510, %513
%515 = getelementptr inbounds [2 x double], [2 x double]* %11, i64 0, i64 1
%516 = load double, double* %515
%517 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %12, i64 0, i64 0
%518 = getelementptr inbounds [2 x double], [2 x double]* %517, i64 0, i64 1
%519 = load double, double* %518
%520 = fsub double %516, %519
%521 = fmul double %514, %520
%522 = call double @llvm.fmuladd.f64(double %502, double %508, double %521)
store double %522, double* %18
%523 = load i32, i32* %20
%524 = icmp ne i32 %523, 0
br i1 %524, label %525, label %529
525: ; preds = %496
%526 = load double, double* %18
%527 = load double, double* %19
%528 = fcmp olt double %526, %527
br i1 %528, label %529, label %534
529: ; preds = %525, %496
%530 = load double, double* %18
store double %530, double* %19
%531 = getelementptr inbounds [500 x i8], [500 x i8]* %8, i64 0, i64 0
%532 = getelementptr inbounds [500 x i8], [500 x i8]* %24, i64 0, i64 0
%533 = call i32 @strcpy(i8* %531, i8* %532)
br label %534
534: ; preds = %529, %525
%535 = load i32, i32* %20
%536 = add nsw i32 %535, 1
store i32 %536, i32* %20
br label %537
537: ; preds = %534, %492
br label %220
538: ; preds = %220
%539 = getelementptr inbounds [500 x i8], [500 x i8]* %8, i64 0, i64 0
%540 = load i8, i8* %539
%541 = icmp ne i8 %540, 0
br i1 %541, label %542, label %545
542: ; preds = %538
%543 = getelementptr inbounds [500 x i8], [500 x i8]* %8, i64 0, i64 0
%544 = call i32 @sendmesg(i8* %543)
br label %545
545: ; preds = %542, %538
%546 = call i32 @servererr(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.15, i64 0, i64 0))
%547 = load i32, i32* %3
ret i32 %547
}

LLVM IR (-O2):
%struct.stat = type { i32 }
@.str = [57 x i8] c"Wrong number of arguments, client may not support ISMAP.\00"
@.str.1 = [10 x i8] c"PATH_INFO\00"
@.str.2 = [127 x i8] c"No map name given. Please read the <A HREF=\22http://hoohoo.ncsa.uiuc.edu/docs/tutorials/imagemapping.html\22>instructions</A>.<P>\00"
@.str.3 = [52 x i8] c"Your client doesn't support image mapping properly.\00"
@.str.4 = [16 x i8] c"PATH_TRANSLATED\00"
@.str.5 = [40 x i8] c"/usr/local/etc/httpd/conf/imagemap.conf\00"
@.str.6 = [2 x i8] c"r\00"
@S_IFMT = global i32 0
@S_IFREG = global i32 0
@.str.7 = [37 x i8] c"Map not found in configuration file.\00"
@.str.8 = [37 x i8] c"Couldn't open configuration file: %s\00"
@.str.10 = [17 x i8] c"Missing y value.\00"
@.str.11 = [5 x i8] c"poly\00"
@.str.12 = [7 x i8] c"circle\00"
@.str.13 = [5 x i8] c"rect\00"
@.str.14 = [6 x i8] c"point\00"
@.str.15 = [22 x i8] c"No default specified.\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca [500 x i8]
%4 = alloca [500 x i8]
%5 = alloca [500 x i8]
%6 = alloca [500 x i8]
%7 = alloca [2 x double]
%8 = alloca [100 x [2 x double]]
%9 = alloca [500 x i8]
%10 = alloca %struct.stat
%11 = alloca [500 x i8]
%12 = alloca [500 x i8]
%13 = alloca [10 x i8]
%14 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 0
%15 = getelementptr inbounds [500 x i8], [500 x i8]* %4, i64 0, i64 0
%16 = getelementptr inbounds [500 x i8], [500 x i8]* %5, i64 0, i64 0
%17 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 0
%18 = bitcast [2 x double]* %7 to i8*
%19 = bitcast [100 x [2 x double]]* %8 to i8*
%20 = icmp eq i32 %0, 2
br i1 %20, label %23, label %21
21: ; preds = %2
%22 = tail call i32 @servererr(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0))
br label %23
23: ; preds = %21, %2
%24 = tail call i8* @getenv(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.1, i64 0, i64 0))
%25 = icmp eq i8* %24, null
br i1 %25, label %29, label %26
26: ; preds = %23
%27 = load i8, i8* %24
%28 = icmp eq i8 %27, 0
br i1 %28, label %29, label %31
29: ; preds = %26, %23
%30 = tail call i32 @servererr(i8* getelementptr inbounds ([127 x i8], [127 x i8]* @.str.2, i64 0, i64 0))
br label %31
31: ; preds = %29, %26
%32 = getelementptr inbounds i8, i8* %24, i64 1
%33 = getelementptr inbounds i8*, i8** %1, i64 1
%34 = load i8*, i8** %33
%35 = tail call i8* @strchr(i8* dereferenceable(1) %34, i8 signext 44)
%36 = icmp eq i8* %35, null
br i1 %36, label %37, label %39
37: ; preds = %31
%38 = tail call i32 @servererr(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.3, i64 0, i64 0))
br label %39
39: ; preds = %37, %31
%40 = getelementptr inbounds i8, i8* %35, i64 1
store i8 0, i8* %35
%41 = load i8*, i8** %33
%42 = tail call i64 @atoi(i8* %41)
%43 = sitofp i64 %42 to double
%44 = getelementptr inbounds [2 x double], [2 x double]* %7, i64 0, i64 0
store double %43, double* %44
%45 = tail call i64 @atoi(i8* %40)
%46 = sitofp i64 %45 to double
%47 = getelementptr inbounds [2 x double], [2 x double]* %7, i64 0, i64 1
store double %46, double* %47
%48 = tail call i8* @strchr(i8* %32, i8 signext 47)
%49 = icmp eq i8* %48, null
br i1 %49, label %53, label %50
50: ; preds = %39
%51 = tail call i8* @getenv(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0))
%52 = call i32 @strcpy(i8* %16, i8* %51)
br label %156
53: ; preds = %39
%54 = tail call i32* @fopen(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
%55 = icmp eq i32* %54, null
br i1 %55, label %156, label %56
56: ; preds = %53
%57 = getelementptr inbounds [500 x i8], [500 x i8]* %9, i64 0, i64 0
%58 = call i32 @getline(i8* %14, i32 500, i32* %54)
%59 = icmp eq i32 %58, 0
br i1 %59, label %60, label %91
60: ; preds = %56, %87
%61 = phi i32 [ %88, %87 ], [ undef, %56 ]
%62 = load i8, i8* %14
switch i8 %62, label %63 [
i8 35, label %87
i8 0, label %87
]
63: ; preds = %60
%64 = call i64 @isname(i8 signext %62)
%65 = icmp eq i64 %64, 0
br i1 %65, label %81, label %66
66: ; preds = %63, %71
%67 = phi i64 [ %73, %71 ], [ 0, %63 ]
%68 = phi i8* [ %74, %71 ], [ %14, %63 ]
%69 = load i8, i8* %68
%70 = icmp eq i8 %69, 58
br i1 %70, label %78, label %71
71: ; preds = %66
%72 = getelementptr inbounds [500 x i8], [500 x i8]* %9, i64 0, i64 %67
store i8 %69, i8* %72
%73 = add nuw i64 %67, 1
%74 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %73
%75 = load i8, i8* %74
%76 = call i64 @isname(i8 signext %75)
%77 = icmp eq i64 %76, 0
br i1 %77, label %78, label %66
78: ; preds = %71, %66
%79 = phi i64 [ %67, %66 ], [ %73, %71 ]
%80 = trunc i64 %79 to i32
br label %81
81: ; preds = %78, %63
%82 = phi i32 [ 0, %63 ], [ %80, %78 ]
%83 = zext i32 %82 to i64
%84 = getelementptr inbounds [500 x i8], [500 x i8]* %9, i64 0, i64 %83
store i8 0, i8* %84
%85 = call i32 @strcmp(i8* %57, i8* %32)
%86 = icmp eq i32 %85, 0
br i1 %86, label %111, label %87
87: ; preds = %81, %60, %60
%88 = phi i32 [ %61, %60 ], [ %61, %60 ], [ %82, %81 ]
%89 = call i32 @getline(i8* %14, i32 500, i32* %54)
%90 = icmp eq i32 %89, 0
br i1 %90, label %60, label %91
91: ; preds = %87, %56
%92 = phi i32 [ undef, %56 ], [ %88, %87 ]
%93 = call i64 @feof(i32* %54)
%94 = icmp eq i64 %93, 0
br i1 %94, label %112, label %95
95: ; preds = %91
%96 = bitcast %struct.stat* %10 to i8*
%97 = call i8* @getenv(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0))
%98 = call i32 @strcpy(i8* %16, i8* %97)
%99 = call i32 @stat(i8* %16, %struct.stat* %10)
%100 = icmp eq i32 %99, 0
br i1 %100, label %101, label %108
101: ; preds = %95
%102 = getelementptr inbounds %struct.stat, %struct.stat* %10, i64 0, i32 0
%103 = load i32, i32* %102
%104 = load i32, i32* @S_IFMT
%105 = and i32 %104, %103
%106 = load i32, i32* @S_IFREG
%107 = icmp eq i32 %105, %106
br i1 %107, label %110, label %108
108: ; preds = %95, %101
%109 = call i32 @servererr(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.7, i64 0, i64 0))
br label %112
110: ; preds = %101
br label %156
111: ; preds = %81
br label %112
112: ; preds = %111, %108, %91
%113 = phi i32 [ %92, %91 ], [ %92, %108 ], [ %82, %111 ]
%114 = call i32 @fclose(i32* %54)
%115 = sext i32 %113 to i64
br label %116
116: ; preds = %131, %112
%117 = phi i64 [ %132, %131 ], [ %115, %112 ]
%118 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %117
%119 = load i8, i8* %118
%120 = call i64 @isspace(i8 signext %119)
%121 = icmp eq i64 %120, 0
br i1 %121, label %122, label %131
122: ; preds = %116
%123 = load i8, i8* %118
%124 = icmp eq i8 %123, 58
br i1 %124, label %131, label %125
125: ; preds = %122
%126 = shl i64 %117, 32
%127 = ashr exact i64 %126, 32
%128 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %127
%129 = load i8, i8* %128
%130 = icmp eq i8 %129, 0
br i1 %130, label %152, label %133
131: ; preds = %116, %122
%132 = add i64 %117, 1
br label %116
133: ; preds = %125, %141
%134 = phi i64 [ %144, %141 ], [ %127, %125 ]
%135 = phi i64 [ %145, %141 ], [ 0, %125 ]
%136 = phi i8 [ %148, %141 ], [ %129, %125 ]
%137 = phi i8* [ %147, %141 ], [ %128, %125 ]
%138 = phi i32 [ %146, %141 ], [ 0, %125 ]
%139 = call i64 @isname(i8 signext %136)
%140 = icmp eq i64 %139, 0
br i1 %140, label %150, label %141
141: ; preds = %133
%142 = load i8, i8* %137
%143 = getelementptr inbounds [500 x i8], [500 x i8]* %5, i64 0, i64 %135
store i8 %142, i8* %143
%144 = add i64 %134, 1
%145 = add nuw i64 %135, 1
%146 = add nuw nsw i32 %138, 1
%147 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %144
%148 = load i8, i8* %147
%149 = icmp eq i8 %148, 0
br i1 %149, label %152, label %133
150: ; preds = %133
%151 = trunc i64 %135 to i32
br label %152
152: ; preds = %141, %150, %125
%153 = phi i32 [ 0, %125 ], [ %151, %150 ], [ %146, %141 ]
%154 = zext i32 %153 to i64
%155 = getelementptr inbounds [500 x i8], [500 x i8]* %5, i64 0, i64 %154
store i8 0, i8* %155
br label %156
156: ; preds = %110, %53, %152, %50
%157 = call i32* @fopen(i8* %16, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
%158 = icmp eq i32* %157, null
br i1 %158, label %159, label %162
159: ; preds = %156
%160 = call i32 @sprintf(i8* %17, i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.8, i64 0, i64 0), i8* %16)
%161 = call i32 @servererr(i8* %17)
br label %162
162: ; preds = %159, %156
%163 = call i32 @getline(i8* %14, i32 500, i32* %157)
%164 = icmp eq i32 %163, 0
br i1 %164, label %165, label %400
165: ; preds = %162
%166 = getelementptr inbounds [500 x i8], [500 x i8]* %11, i64 0, i64 0
%167 = getelementptr inbounds [500 x i8], [500 x i8]* %12, i64 0, i64 0
%168 = getelementptr inbounds [10 x i8], [10 x i8]* %13, i64 0, i64 0
%169 = bitcast [500 x i8]* %11 to i64*
%170 = bitcast [100 x [2 x double]]* %8 to double**
%171 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %8, i64 0, i64 0, i64 0
%172 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %8, i64 0, i64 0, i64 1
br label %173
173: ; preds = %165, %395
%174 = phi i32 [ 0, %165 ], [ %397, %395 ]
%175 = phi double [ undef, %165 ], [ %396, %395 ]
%176 = load i8, i8* %14
switch i8 %176, label %177 [
i8 35, label %395
i8 0, label %395
]
177: ; preds = %173
store i8 0, i8* %166
store i8 0, i8* %167
%178 = call i64 @isname(i8 signext %176)
%179 = icmp eq i64 %178, 0
br i1 %179, label %192, label %180
180: ; preds = %177, %185
%181 = phi i64 [ %187, %185 ], [ 0, %177 ]
%182 = phi i8* [ %188, %185 ], [ %14, %177 ]
%183 = load i8, i8* %182
%184 = icmp eq i8 %183, 0
br i1 %184, label %192, label %185
185: ; preds = %180
%186 = getelementptr inbounds [500 x i8], [500 x i8]* %11, i64 0, i64 %181
store i8 %183, i8* %186
%187 = add nuw i64 %181, 1
%188 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %187
%189 = load i8, i8* %188
%190 = call i64 @isname(i8 signext %189)
%191 = icmp eq i64 %190, 0
br i1 %191, label %192, label %180
192: ; preds = %180, %185, %177
%193 = phi i64 [ 0, %177 ], [ %187, %185 ], [ %181, %180 ]
%194 = and i64 %193, 4294967295
%195 = getelementptr inbounds [500 x i8], [500 x i8]* %11, i64 0, i64 %194
store i8 0, i8* %195
br label %196
196: ; preds = %196, %192
%197 = phi i64 [ %202, %196 ], [ %194, %192 ]
%198 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %197
%199 = load i8, i8* %198
%200 = call i64 @isspace(i8 signext %199)
%201 = icmp eq i64 %200, 0
%202 = add nuw i64 %197, 1
br i1 %201, label %203, label %196
203: ; preds = %196
%204 = trunc i64 %197 to i32
%205 = and i64 %197, 4294967295
%206 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %205
%207 = load i8, i8* %206
%208 = icmp eq i8 %207, 0
br i1 %208, label %231, label %209
209: ; preds = %203, %218
%210 = phi i64 [ %221, %218 ], [ %205, %203 ]
%211 = phi i64 [ %223, %218 ], [ 0, %203 ]
%212 = phi i8 [ %226, %218 ], [ %207, %203 ]
%213 = phi i8* [ %225, %218 ], [ %206, %203 ]
%214 = phi i32 [ %224, %218 ], [ 0, %203 ]
%215 = phi i32 [ %222, %218 ], [ %204, %203 ]
%216 = call i64 @isname(i8 signext %212)
%217 = icmp eq i64 %216, 0
br i1 %217, label %228, label %218
218: ; preds = %209
%219 = load i8, i8* %213
%220 = getelementptr inbounds [500 x i8], [500 x i8]* %12, i64 0, i64 %211
store i8 %219, i8* %220
%221 = add nuw i64 %210, 1
%222 = add nuw nsw i32 %215, 1
%223 = add nuw i64 %211, 1
%224 = add nuw nsw i32 %214, 1
%225 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %221
%226 = load i8, i8* %225
%227 = icmp eq i8 %226, 0
br i1 %227, label %231, label %209
228: ; preds = %209
%229 = trunc i64 %211 to i32
%230 = trunc i64 %210 to i32
br label %231
231: ; preds = %218, %228, %203
%232 = phi i32 [ %204, %203 ], [ %230, %228 ], [ %222, %218 ]
%233 = phi i32 [ 0, %203 ], [ %229, %228 ], [ %224, %218 ]
%234 = zext i32 %233 to i64
%235 = getelementptr inbounds [500 x i8], [500 x i8]* %12, i64 0, i64 %234
store i8 0, i8* %235
%236 = load i64, i64* %169
%237 = icmp ne i64 %236, 32770348699510116
%238 = icmp ne i32 %174, 0
%239 = select i1 %237, i1 true, i1 %238
br i1 %239, label %240, label %245
240: ; preds = %231
%241 = sext i32 %232 to i64
%242 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %241
%243 = load i8, i8* %242
%244 = icmp eq i8 %243, 0
br i1 %244, label %348, label %247
245: ; preds = %231
%246 = call i32 @strcpy(i8* %15, i8* %167)
br label %395
247: ; preds = %240, %341
%248 = phi i32 [ %342, %341 ], [ 0, %240 ]
%249 = phi i32 [ %328, %341 ], [ %232, %240 ]
%250 = sext i32 %249 to i64
br label %251
251: ; preds = %247, %267
%252 = phi i64 [ %250, %247 ], [ %268, %267 ]
%253 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %252
%254 = load i8, i8* %253
%255 = call i64 @isspace(i8 signext %254)
%256 = icmp eq i64 %255, 0
br i1 %256, label %257, label %267
257: ; preds = %251
%258 = load i8, i8* %253
%259 = icmp eq i8 %258, 44
br i1 %259, label %267, label %260
260: ; preds = %257
%261 = shl i64 %252, 32
%262 = ashr exact i64 %261, 32
%263 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %262
%264 = load i8, i8* %263
%265 = call i64 @isdigit(i8 signext %264)
%266 = icmp eq i64 %265, 0
br i1 %266, label %281, label %269
267: ; preds = %251, %257
%268 = add i64 %252, 1
br label %251
269: ; preds = %260, %269
%270 = phi i64 [ %273, %269 ], [ %262, %260 ]
%271 = phi i64 [ %275, %269 ], [ 0, %260 ]
%272 = phi i8* [ %277, %269 ], [ %263, %260 ]
%273 = add i64 %270, 1
%274 = load i8, i8* %272
%275 = add nuw i64 %271, 1
%276 = getelementptr inbounds [10 x i8], [10 x i8]* %13, i64 0, i64 %271
store i8 %274, i8* %276
%277 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %273
%278 = load i8, i8* %277
%279 = call i64 @isdigit(i8 signext %278)
%280 = icmp eq i64 %279, 0
br i1 %280, label %281, label %269
281: ; preds = %269, %260
%282 = phi i64 [ %252, %260 ], [ %273, %269 ]
%283 = phi i64 [ 0, %260 ], [ %275, %269 ]
%284 = and i64 %283, 4294967295
%285 = getelementptr inbounds [10 x i8], [10 x i8]* %13, i64 0, i64 %284
store i8 0, i8* %285
%286 = load i8, i8* %168
%287 = icmp eq i8 %286, 0
br i1 %287, label %348, label %288
288: ; preds = %281
%289 = call i64 @atoi(i8* %168)
%290 = sitofp i64 %289 to double
%291 = sext i32 %248 to i64
%292 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %8, i64 0, i64 %291, i64 0
store double %290, double* %292
%293 = shl i64 %282, 32
%294 = ashr exact i64 %293, 32
br label %295
295: ; preds = %311, %288
%296 = phi i64 [ %312, %311 ], [ %294, %288 ]
%297 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %296
%298 = load i8, i8* %297
%299 = call i64 @isspace(i8 signext %298)
%300 = icmp eq i64 %299, 0
br i1 %300, label %301, label %311
301: ; preds = %295
%302 = load i8, i8* %297
%303 = icmp eq i8 %302, 44
br i1 %303, label %311, label %304
304: ; preds = %301
%305 = shl i64 %296, 32
%306 = ashr exact i64 %305, 32
%307 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %306
%308 = load i8, i8* %307
%309 = call i64 @isdigit(i8 signext %308)
%310 = icmp eq i64 %309, 0
br i1 %310, label %325, label %313
311: ; preds = %295, %301
%312 = add i64 %296, 1
br label %295
313: ; preds = %304, %313
%314 = phi i64 [ %317, %313 ], [ %306, %304 ]
%315 = phi i64 [ %319, %313 ], [ 0, %304 ]
%316 = phi i8* [ %321, %313 ], [ %307, %304 ]
%317 = add i64 %314, 1
%318 = load i8, i8* %316
%319 = add nuw i64 %315, 1
%320 = getelementptr inbounds [10 x i8], [10 x i8]* %13, i64 0, i64 %315
store i8 %318, i8* %320
%321 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %317
%322 = load i8, i8* %321
%323 = call i64 @isdigit(i8 signext %322)
%324 = icmp eq i64 %323, 0
br i1 %324, label %325, label %313
325: ; preds = %313, %304
%326 = phi i64 [ %296, %304 ], [ %317, %313 ]
%327 = phi i64 [ 0, %304 ], [ %319, %313 ]
%328 = trunc i64 %326 to i32
%329 = and i64 %327, 4294967295
%330 = getelementptr inbounds [10 x i8], [10 x i8]* %13, i64 0, i64 %329
store i8 0, i8* %330
%331 = load i8, i8* %168
%332 = icmp eq i8 %331, 0
br i1 %332, label %338, label %333
333: ; preds = %325
%334 = call i64 @atoi(i8* %168)
%335 = sitofp i64 %334 to double
%336 = add nsw i32 %248, 1
%337 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %8, i64 0, i64 %291, i64 1
store double %335, double* %337
br label %341
338: ; preds = %325
%339 = call i32 @fclose(i32* %157)
%340 = call i32 @servererr(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.10, i64 0, i64 0))
br label %341
341: ; preds = %338, %333
%342 = phi i32 [ %336, %333 ], [ %248, %338 ]
%343 = shl i64 %326, 32
%344 = ashr exact i64 %343, 32
%345 = getelementptr inbounds [500 x i8], [500 x i8]* %3, i64 0, i64 %344
%346 = load i8, i8* %345
%347 = icmp eq i8 %346, 0
br i1 %347, label %348, label %247
348: ; preds = %341, %281, %240
%349 = phi i32 [ 0, %240 ], [ %248, %281 ], [ %342, %341 ]
%350 = sext i32 %349 to i64
%351 = getelementptr inbounds [100 x [2 x double]], [100 x [2 x double]]* %8, i64 0, i64 %350, i64 0
store double -1.000000e+00, double* %351
%352 = call i32 @bcmp(i8* dereferenceable(5) %166, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i64 5)
%353 = icmp eq i32 %352, 0
br i1 %353, label %354, label %359
354: ; preds = %348
%355 = call i64 @pointinpoly(double* %44, double** %170)
%356 = icmp eq i64 %355, 0
br i1 %356, label %359, label %357
357: ; preds = %354
%358 = call i32 @sendmesg(i8* %167)
br label %359
359: ; preds = %354, %357, %348
%360 = call i32 @bcmp(i8* dereferenceable(7) %166, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0), i64 7)
%361 = icmp eq i32 %360, 0
br i1 %361, label %362, label %367
362: ; preds = %359
%363 = call i64 @pointincircle(double* %44, double** %170)
%364 = icmp eq i64 %363, 0
br i1 %364, label %367, label %365
365: ; preds = %362
%366 = call i32 @sendmesg(i8* %167)
br label %367
367: ; preds = %362, %365, %359
%368 = call i32 @bcmp(i8* dereferenceable(5) %166, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), i64 5)
%369 = icmp eq i32 %368, 0
br i1 %369, label %370, label %375
370: ; preds = %367
%371 = call i64 @pointinrect(double* %44, double** %170)
%372 = icmp eq i64 %371, 0
br i1 %372, label %375, label %373
373: ; preds = %370
%374 = call i32 @sendmesg(i8* %167)
br label %375
375: ; preds = %370, %373, %367
%376 = call i32 @bcmp(i8* dereferenceable(6) %166, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0), i64 6)
%377 = icmp eq i32 %376, 0
br i1 %377, label %378, label %395
378: ; preds = %375
%379 = load double, double* %44
%380 = load double, double* %171
%381 = fsub double %379, %380
%382 = load double, double* %47
%383 = load double, double* %172
%384 = fsub double %382, %383
%385 = fmul double %384, %384
%386 = call double @llvm.fmuladd.f64(double %381, double %381, double %385)
%387 = xor i1 %238, true
%388 = fcmp olt double %386, %175
%389 = select i1 %387, i1 true, i1 %388
br i1 %389, label %390, label %392
390: ; preds = %378
%391 = call i32 @strcpy(i8* %15, i8* %167)
br label %392
392: ; preds = %378, %390
%393 = phi double [ %386, %390 ], [ %175, %378 ]
%394 = add nsw i32 %174, 1
br label %395
395: ; preds = %375, %392, %173, %173, %245
%396 = phi double [ %175, %245 ], [ %175, %173 ], [ %175, %173 ], [ %175, %375 ], [ %393, %392 ]
%397 = phi i32 [ 0, %245 ], [ %174, %173 ], [ %174, %173 ], [ %174, %375 ], [ %394, %392 ]
%398 = call i32 @getline(i8* %14, i32 500, i32* %157)
%399 = icmp eq i32 %398, 0
br i1 %399, label %173, label %400
400: ; preds = %395, %162
%401 = load i8, i8* %15
%402 = icmp eq i8 %401, 0
br i1 %402, label %405, label %403
403: ; preds = %400
%404 = call i32 @sendmesg(i8* %15)
br label %405
405: ; preds = %403, %400
%406 = call i32 @servererr(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.15, i64 0, i64 0))
ret i32 0
}