int main(int argc, char **argv) {
  double inLat[100] = {
      40.677159, 40.677153, 40.677148, 40.677142, 40.677137, 40.677131,
      40.677126, 40.677121, 40.677115, 40.677110, 40.676348, 40.676342,
      40.676337, 40.676332, 40.676326, 40.676321, 40.676315, 40.676310,
      40.676304, 40.676299, 40.675537, 40.675532, 40.675526, 40.675521,
      40.675515, 40.675510, 40.675504, 40.675499, 40.675494, 40.675488,
      40.674726, 40.674721, 40.674715, 40.674710, 40.674705, 40.674699,
      40.674694, 40.674688, 40.674683, 40.674677, 40.673916, 40.673910,
      40.673905, 40.673899, 40.673894, 40.673888, 40.673883, 40.673877,
      40.673872, 40.673867, 40.673105, 40.673099, 40.673094, 40.673089,
      40.673083, 40.673078, 40.673072, 40.673067, 40.673061, 40.673056,
      40.672294, 40.672289, 40.672283, 40.672278, 40.672272, 40.672267,
      40.672261, 40.672256, 40.672251, 40.672245, 40.671483, 40.671478,
      40.671472, 40.671467, 40.671462, 40.671456, 40.671451, 40.671445,
      40.671440, 40.671434, 40.670673, 40.670667, 40.670662, 40.670656,
      40.670651, 40.670645, 40.670640, 40.670634, 40.670629, 40.670624,
      40.669862, 40.669856, 40.669851, 40.669846, 40.669840, 40.669835,
      40.669829, 40.669824, 40.669818, 40.669813};
  double inLon[100] = {
      -86.459595, -86.458530, -86.457466, -86.456401, -86.455336, -86.454271,
      -86.453206, -86.452141, -86.451076, -86.450011, -86.459602, -86.458537,
      -86.457472, -86.456407, -86.455342, -86.454277, -86.453213, -86.452148,
      -86.451083, -86.450018, -86.459608, -86.458544, -86.457479, -86.456414,
      -86.455349, -86.454284, -86.453219, -86.452154, -86.451089, -86.450025,
      -86.459615, -86.458550, -86.457485, -86.456420, -86.455356, -86.454291,
      -86.453226, -86.452161, -86.451096, -86.450031, -86.459621, -86.458557,
      -86.457492, -86.456427, -86.455362, -86.454297, -86.453232, -86.452168,
      -86.451103, -86.450038, -86.459628, -86.458563, -86.457498, -86.456434,
      -86.455369, -86.454304, -86.453239, -86.452174, -86.451109, -86.450045,
      -86.459635, -86.458570, -86.457505, -86.456440, -86.455375, -86.454310,
      -86.453246, -86.452181, -86.451116, -86.450051, -86.459641, -86.458576,
      -86.457511, -86.456447, -86.455382, -86.454317, -86.453252, -86.452187,
      -86.451123, -86.450058, -86.459648, -86.458583, -86.457518, -86.456453,
      -86.455388, -86.454324, -86.453259, -86.452194, -86.451129, -86.450064,
      -86.459654, -86.458589, -86.457525, -86.456460, -86.455395, -86.454330,
      -86.453265, -86.452201, -86.451136, -86.450071};
  double inVal[100] = {
      40.677159, 40.677153, 40.677148, 40.677142, 40.677137, 40.677131,
      40.677126, 40.677121, 40.677115, 40.677110, 40.676348, 40.676342,
      40.676337, 40.676332, 40.676326, 40.676321, 40.676315, 40.676310,
      40.676304, 40.676299, 40.675537, 40.675532, 40.675526, 40.675521,
      40.675515, 40.675510, 40.675504, 40.675499, 40.675494, 40.675488,
      40.674726, 40.674721, 40.674715, 40.674710, 40.674705, 40.674699,
      40.674694, 40.674688, 40.674683, 40.674677, 40.673916, 40.673910,
      40.673905, 40.673899, 40.673894, 40.673888, 40.673883, 40.673877,
      40.673872, 40.673867, 40.673105, 40.673099, 40.673094, 40.673089,
      40.673083, 40.673078, 40.673072, 40.673067, 40.673061, 40.673056,
      40.672294, 40.672289, 40.672283, 40.672278, 40.672272, 40.672267,
      40.672261, 40.672256, 40.672251, 40.672245, 40.671483, 40.671478,
      40.671472, 40.671467, 40.671462, 40.671456, 40.671451, 40.671445,
      40.671440, 40.671434, 40.670673, 40.670667, 40.670662, 40.670656,
      40.670651, 40.670645, 40.670640, 40.670634, 40.670629, 40.670624,
      40.669862, 40.669856, 40.669851, 40.669846, 40.669840, 40.669835,
      40.669829, 40.669824, 40.669818, 40.669813};
  int nIn = 100;
  double outLat[100] = {
      40.677159, 40.677154, 40.677149, 40.677144, 40.677139, 40.677134,
      40.677129, 40.677124, 40.677118, 40.677113, 40.676348, 40.676343,
      40.676338, 40.676333, 40.676328, 40.676323, 40.676318, 40.676313,
      40.676308, 40.676303, 40.675537, 40.675532, 40.675527, 40.675522,
      40.675517, 40.675512, 40.675507, 40.675502, 40.675497, 40.675492,
      40.674726, 40.674721, 40.674716, 40.674711, 40.674706, 40.674701,
      40.674696, 40.674691, 40.674686, 40.674681, 40.673916, 40.673911,
      40.673906, 40.673901, 40.673896, 40.673891, 40.673886, 40.673880,
      40.673875, 40.673870, 40.673105, 40.673100, 40.673095, 40.673090,
      40.673085, 40.673080, 40.673075, 40.673070, 40.673065, 40.673060,
      40.672294, 40.672289, 40.672284, 40.672279, 40.672274, 40.672269,
      40.672264, 40.672259, 40.672254, 40.672249, 40.671483, 40.671478,
      40.671473, 40.671468, 40.671463, 40.671458, 40.671453, 40.671448,
      40.671443, 40.671438, 40.670673, 40.670668, 40.670663, 40.670658,
      40.670653, 40.670648, 40.670643, 40.670637, 40.670632, 40.670627,
      40.669862, 40.669857, 40.669852, 40.669847, 40.669842, 40.669837,
      40.669832, 40.669827, 40.669822, 40.669817};
  double outLon[100] = {
      -86.459595, -86.458530, -86.457466, -86.456401, -86.455336, -86.454271,
      -86.453206, -86.452141, -86.451076, -86.450011, -86.459602, -86.458537,
      -86.457472, -86.456407, -86.455342, -86.454277, -86.453213, -86.452148,
      -86.451083, -86.450018, -86.459608, -86.458544, -86.457479, -86.456414,
      -86.455349, -86.454284, -86.453219, -86.452154, -86.451089, -86.450025,
      -86.459615, -86.458550, -86.457485, -86.456420, -86.455356, -86.454291,
      -86.453226, -86.452161, -86.451096, -86.450031, -86.459621, -86.458557,
      -86.457492, -86.456427, -86.455362, -86.454297, -86.453232, -86.452168,
      -86.451103, -86.450038, -86.459628, -86.458563, -86.457498, -86.456434,
      -86.455369, -86.454304, -86.453239, -86.452174, -86.451109, -86.450045,
      -86.459635, -86.458570, -86.457505, -86.456440, -86.455375, -86.454310,
      -86.453246, -86.452181, -86.451116, -86.450051, -86.459641, -86.458576,
      -86.457511, -86.456447, -86.455382, -86.454317, -86.453252, -86.452187,
      -86.451123, -86.450058, -86.459648, -86.458583, -86.457518, -86.456453,
      -86.455388, -86.454324, -86.453259, -86.452194, -86.451129, -86.450064,
      -86.459654, -86.458589, -86.457525, -86.456460, -86.455395, -86.454330,
      -86.453265, -86.452201, -86.451136, -86.450071};
  int nOut = 100;
  double maxR = 100;
  double *iLat, *iLon, *oLat, *oLon, *iVal, *oVal;
  double **piLat, **piLon;
  int *tarNNSouID;
  iLat = (double *)malloc(sizeof(double) * nIn);
  iLon = (double *)malloc(sizeof(double) * nIn);
  iVal = (double *)malloc(sizeof(double) * nIn);
  piLat = &iLat;
  piLon = &iLon;
  oLat = (double *)malloc(sizeof(double) * nOut);
  oLon = (double *)malloc(sizeof(double) * nOut);
  oVal = (double *)malloc(sizeof(double) * nOut);
  tarNNSouID = (int *)malloc(sizeof(int) * nOut);
  for (int i = 0; i < nIn; i++) {
    iLat[i] = inLat[i];
    iLon[i] = inLon[i];
    iVal[i] = inVal[i];
  }
  for (int i = 0; i < nOut; i++) {
    oLat[i] = outLat[i];
    oLon[i] = outLon[i];
  }
  double *tarNNDis;
  tarNNDis = (double *)malloc(sizeof(double) * nOut);
  nearestNeighbor(piLat, piLon, nIn, oLat, oLon, tarNNSouID, tarNNDis, nOut,
                  2000000);
  free(*piLat);
  free(*piLon);
  free(iVal);
  free(oLat);
  free(oLon);
  free(oVal);
  free(tarNNSouID);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1040,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
lea    -0x330(%rbp),%rdi
lea    0xea9(%rip),%rsi
mov    $0x320,%edx
call   1040 <memcpy@plt>
lea    -0x650(%rbp),%rdi
lea    0x11b1(%rip),%rsi
mov    $0x320,%edx
call   1040 <memcpy@plt>
lea    -0x970(%rbp),%rdi
lea    0x14b9(%rip),%rsi
mov    $0x320,%edx
call   1040 <memcpy@plt>
movl   $0x64,-0x974(%rbp)
lea    -0xca0(%rbp),%rdi
lea    0x17b7(%rip),%rsi
mov    $0x320,%edx
call   1040 <memcpy@plt>
lea    -0xfc0(%rbp),%rdi
lea    0x1abf(%rip),%rsi
mov    $0x320,%edx
call   1040 <memcpy@plt>
movl   $0x64,-0xfc4(%rbp)
movsd  0xe13(%rip),%xmm0
movsd  %xmm0,-0xfd0(%rbp)
ff
movslq -0x974(%rbp),%rdi
shl    $0x3,%rdi
call   1050 <malloc@plt>
mov    %rax,-0xfd8(%rbp)
movslq -0x974(%rbp),%rdi
shl    $0x3,%rdi
call   1050 <malloc@plt>
mov    %rax,-0xfe0(%rbp)
movslq -0x974(%rbp),%rdi
shl    $0x3,%rdi
call   1050 <malloc@plt>
mov    %rax,-0xff8(%rbp)
lea    -0xfd8(%rbp),%rax
mov    %rax,-0x1008(%rbp)
lea    -0xfe0(%rbp),%rax
mov    %rax,-0x1010(%rbp)
movslq -0xfc4(%rbp),%rdi
shl    $0x3,%rdi
call   1050 <malloc@plt>
mov    %rax,-0xfe8(%rbp)
movslq -0xfc4(%rbp),%rdi
shl    $0x3,%rdi
call   1050 <malloc@plt>
mov    %rax,-0xff0(%rbp)
movslq -0xfc4(%rbp),%rdi
shl    $0x3,%rdi
call   1050 <malloc@plt>
mov    %rax,-0x1000(%rbp)
movslq -0xfc4(%rbp),%rdi
shl    $0x2,%rdi
call   1050 <malloc@plt>
mov    %rax,-0x1018(%rbp)
movl   $0x0,-0x101c(%rbp)
mov    -0x101c(%rbp),%eax
cmp    -0x974(%rbp),%eax
jge    134b <main+0x20b>
movslq -0x101c(%rbp),%rax
movsd  -0x330(%rbp,%rax,8),%xmm0
ff ff
mov    -0xfd8(%rbp),%rax
movslq -0x101c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movslq -0x101c(%rbp),%rax
movsd  -0x650(%rbp,%rax,8),%xmm0
ff ff
mov    -0xfe0(%rbp),%rax
movslq -0x101c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movslq -0x101c(%rbp),%rax
movsd  -0x970(%rbp,%rax,8),%xmm0
ff ff
mov    -0xff8(%rbp),%rax
movslq -0x101c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x101c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x101c(%rbp)
jmp    12bc <main+0x17c>
movl   $0x0,-0x1020(%rbp)
mov    -0x1020(%rbp),%eax
cmp    -0xfc4(%rbp),%eax
jge    13c1 <main+0x281>
movslq -0x1020(%rbp),%rax
movsd  -0xca0(%rbp,%rax,8),%xmm0
ff ff
mov    -0xfe8(%rbp),%rax
movslq -0x1020(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movslq -0x1020(%rbp),%rax
movsd  -0xfc0(%rbp,%rax,8),%xmm0
ff ff
mov    -0xff0(%rbp),%rax
movslq -0x1020(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x1020(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1020(%rbp)
jmp    1355 <main+0x215>
movslq -0xfc4(%rbp),%rdi
shl    $0x3,%rdi
call   1050 <malloc@plt>
mov    %rax,-0x1028(%rbp)
mov    -0x1008(%rbp),%rdi
mov    -0x1010(%rbp),%rsi
mov    -0x974(%rbp),%edx
mov    -0xfe8(%rbp),%rcx
mov    -0xff0(%rbp),%r8
mov    -0x1018(%rbp),%r9
mov    -0x1028(%rbp),%r10
mov    -0xfc4(%rbp),%eax
mov    %r10,(%rsp)
mov    %eax,0x8(%rsp)
movl   $0x1e8480,0x10(%rsp)
mov    $0x0,%al
call   1060 <nearestNeighbor@plt>
mov    -0x1008(%rbp),%rax
mov    (%rax),%rdi
call   1030 <free@plt>
mov    -0x1010(%rbp),%rax
mov    (%rax),%rdi
call   1030 <free@plt>
mov    -0xff8(%rbp),%rdi
call   1030 <free@plt>
mov    -0xfe8(%rbp),%rdi
call   1030 <free@plt>
mov    -0xff0(%rbp),%rdi
call   1030 <free@plt>
mov    -0x1000(%rbp),%rdi
call   1030 <free@plt>
mov    -0x1018(%rbp),%rdi
call   1030 <free@plt>
xor    %eax,%eax
add    $0x1040,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x10,%rsp
mov    $0x320,%edi
call   1050 <malloc@plt>
mov    %rax,%r13
mov    %rax,0x8(%rsp)
mov    $0x320,%edi
call   1050 <malloc@plt>
mov    %rax,%rbx
mov    %rax,(%rsp)
mov    $0x320,%edi
call   1050 <malloc@plt>
mov    %rax,%r14
mov    $0x320,%edi
call   1050 <malloc@plt>
mov    %rax,%r12
mov    $0x190,%edi
call   1050 <malloc@plt>
mov    %rax,%r15
mov    $0x2,%eax
lea    0xe5d(%rip),%rcx
lea    0x1496(%rip),%rdx
nopw   0x0(%rax,%rax,1)
movaps -0x10(%rcx,%rax,8),%xmm0
movaps (%rcx,%rax,8),%xmm1
movups %xmm0,-0x10(%r13,%rax,8)
movaps -0x10(%rdx,%rax,8),%xmm0
movaps (%rdx,%rax,8),%xmm2
movups %xmm0,-0x10(%rbx,%rax,8)
movups %xmm1,0x0(%r13,%rax,8)
movups %xmm2,(%rbx,%rax,8)
add    $0x4,%rax
cmp    $0x66,%rax
jne    11b0 <main+0x70>
lea    0x1138(%rip),%rsi
mov    $0x320,%edx
mov    %r14,%rdi
call   1040 <memcpy@plt>
lea    0x1444(%rip),%rsi
mov    $0x320,%edx
mov    %r12,%rdi
call   1040 <memcpy@plt>
mov    $0x320,%edi
call   1050 <malloc@plt>
mov    %rax,%rbx
sub    $0x8,%rsp
lea    0x10(%rsp),%rdi
lea    0x8(%rsp),%rsi
mov    $0x64,%edx
mov    %r14,%rcx
mov    %r12,%r8
mov    %r15,%r9
xor    %eax,%eax
push   $0x1e8480
push   $0x64
push   %rbx
call   1060 <nearestNeighbor@plt>
add    $0x20,%rsp
mov    0x8(%rsp),%rdi
call   1030 <free@plt>
mov    (%rsp),%rdi
call   1030 <free@plt>
mov    %r14,%rdi
call   1030 <free@plt>
mov    %r12,%rdi
call   1030 <free@plt>
mov    %r15,%rdi
call   1030 <free@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@__const.main.inLat = [100 x double] [double 0x404456AD25679896, double 0x404456ACF312B1B3, double 0x404456ACC92146A2, double 0x404456AC96CC5FC0, double 0x404456AC6CDAF4AE, double 0x404456AC3A860DCC, double 0x404456AC1094A2BA, double 0x404456ABE6A337A8, double 0x404456ABB44E50C6, double 0x404456AB8A5CE5B4, double 0x40445692923E5B85, double 0x404456925FE974A3, double 0x4044569235F80991, double 0x404456920C069E80, double 0x40445691D9B1B79E, double 0x40445691AFC04C8C, double 0x404456917D6B65AA, double 0x404456915379FA98, double 0x40445691212513B6, double 0x40445690F733A8A4, double 0x40445677FF151E75, double 0x40445677D523B363, double 0x40445677A2CECC81, double 0x4044567778DD6170, double 0x4044567746887A8D, double 0x404456771C970F7C, double 0x40445676EA422899, double 0x40445676C050BD88, double 0x40445676965F5276, double 0x40445676640A6B94, double 0x4044565D6BEBE165, double 0x4044565D41FA7653, double 0x4044565D0FA58F71, double 0x4044565CE5B4245F, double 0x4044565CBBC2B94E, double 0x4044565C896DD26B, double 0x4044565C5F7C675A, double 0x4044565C2D278078, double 0x4044565C03361566, double 0x4044565BD0E12E84, double 0x40445642E1262025, double 0x40445642AED13943, double 0x4044564284DFCE31, double 0x40445642528AE74F, double 0x4044564228997C3D, double 0x40445641F644955B, double 0x40445641CC532A49, double 0x4044564199FE4367, double 0x40445641700CD856, double 0x40445641461B6D44, double 0x404456284DFCE315, double 0x404456281BA7FC33, double 0x40445627F1B69121, double 0x40445627C7C5260F, double 0x4044562795703F2D, double 0x404456276B7ED41B, double 0x404456273929ED39, double 0x404456270F388228, double 0x40445626DCE39B45, double 0x40445626B2F23034, double 0x4044560DBAD3A605, double 0x4044560D90E23AF3, double 0x4044560D5E8D5411, double 0x4044560D349BE8FF, double 0x4044560D0247021D, double 0x4044560CD855970B, double 0x4044560CA600B029, double 0x4044560C7C0F4517, double 0x4044560C521DDA06, double 0x4044560C1FC8F323, double 0x404455F327AA68F5, double 0x404455F2FDB8FDE3, double 0x404455F2CB641701, double 0x404455F2A172ABEF, double 0x404455F2778140DD, double 0x404455F2452C59FB, double 0x404455F21B3AEEE9, double 0x404455F1E8E60807, double 0x404455F1BEF49CF5, double 0x404455F18C9FB613, double 0x404455D89CE4A7B5, double 0x404455D86A8FC0D3, double 0x404455D8409E55C1, double 0x404455D80E496EDF, double 0x404455D7E45803CD, double 0x404455D7B2031CEB, double 0x404455D78811B1D9, double 0x404455D755BCCAF7, double 0x404455D72BCB5FE5, double 0x404455D701D9F4D3, double 0x404455BE09BB6AA5, double 0x404455BDD76683C3, double 0x404455BDAD7518B1, double 0x404455BD8383AD9F, double 0x404455BD512EC6BD, double 0x404455BD273D5BAB, double 0x404455BCF4E874C9, double 0x404455BCCAF709B7, double 0x404455BC98A222D5, double 0x404455BC6EB0B7C3]
@__const.main.inLon = [100 x double] [double 0xC0559D6A012599ED, double 0xC0559D588E368F08, double 0xC0559D471F79420B, double 0xC0559D35AC8A3726, double 0xC0559D24399B2C41, double 0xC0559D12C6AC215C, double 0xC0559D0153BD1676, double 0xC0559CEFE0CE0B91, double 0xC0559CDE6DDF00AC, double 0xC0559CCCFAEFF5C7, double 0xC0559D6A1E81CB47, double 0xC0559D58AB92C062, double 0xC0559D4738A3B57C, double 0xC0559D35C5B4AA97, double 0xC0559D2452C59FB2, double 0xC0559D12DFD694CD, double 0xC0559D01711947D0, double 0xC0559CEFFE2A3CEA, double 0xC0559CDE8B3B3205, double 0xC0559CCD184C2720, double 0xC0559D6A37AC3EB8, double 0xC0559D58C8EEF1BB, double 0xC0559D4755FFE6D6, double 0xC0559D35E310DBF0, double 0xC0559D247021D10B, double 0xC0559D12FD32C626, double 0xC0559D018A43BB41, double 0xC0559CF01754B05B, double 0xC0559CDEA465A576, double 0xC0559CCD35A85879, double 0xC0559D6A55087011, double 0xC0559D58E219652C, double 0xC0559D476F2A5A47, double 0xC0559D35FC3B4F61, double 0xC0559D248D7E0264, double 0xC0559D131A8EF77F, double 0xC0559D01A79FEC9A, double 0xC0559CF034B0E1B5, double 0xC0559CDEC1C1D6D0, double 0xC0559CCD4ED2CBEA, double 0xC0559D6A6E32E382, double 0xC0559D58FF759685, double 0xC0559D478C868BA0, double 0xC0559D36199780BB, double 0xC0559D24A6A875D5, double 0xC0559D1333B96AF0, double 0xC0559D01C0CA600B, double 0xC0559CF0520D130E, double 0xC0559CDEDF1E0829, double 0xC0559CCD6C2EFD44, double 0xC0559D6A8B8F14DB, double 0xC0559D5918A009F6, double 0xC0559D47A5B0FF11, double 0xC0559D3636F3B214, double 0xC0559D24C404A72F, double 0xC0559D1351159C49, double 0xC0559D01DE269164, double 0xC0559CF06B37867F, double 0xC0559CDEF8487B9A, double 0xC0559CCD898B2E9D, double 0xC0559D6AA8EB4635, double 0xC0559D5935FC3B4F, double 0xC0559D47C30D306A, double 0xC0559D36501E2585, double 0xC0559D24DD2F1AA0, double 0xC0559D136A400FBB, double 0xC0559D01FB82C2BD, double 0xC0559CF08893B7D8, double 0xC0559CDF15A4ACF3, double 0xC0559CCDA2B5A20E, double 0xC0559D6AC215B9A6, double 0xC0559D594F26AEC0, double 0xC0559D47DC37A3DB, double 0xC0559D366D7A56DE, double 0xC0559D24FA8B4BF9, double 0xC0559D13879C4114, double 0xC0559D0214AD362F, double 0xC0559CF0A1BE2B49, double 0xC0559CDF3300DE4C, double 0xC0559CCDC011D367, double 0xC0559D6ADF71EAFF, double 0xC0559D596C82E01A, double 0xC0559D47F993D534, double 0xC0559D3686A4CA4F, double 0xC0559D2513B5BF6A, double 0xC0559D13A4F8726D, double 0xC0559D0232096788, double 0xC0559CF0BF1A5CA3, double 0xC0559CDF4C2B51BD, double 0xC0559CCDD93C46D8, double 0xC0559D6AF89C5E70, double 0xC0559D5985AD538B, double 0xC0559D4816F0068E, double 0xC0559D36A400FBA9, double 0xC0559D253111F0C3, double 0xC0559D13BE22E5DE, double 0xC0559D024B33DAF9, double 0xC0559CF0DC768DFC, double 0xC0559CDF69878317, double 0xC0559CCDF6987831]
@__const.main.inVal = [100 x double] [double 0x404456AD25679896, double 0x404456ACF312B1B3, double 0x404456ACC92146A2, double 0x404456AC96CC5FC0, double 0x404456AC6CDAF4AE, double 0x404456AC3A860DCC, double 0x404456AC1094A2BA, double 0x404456ABE6A337A8, double 0x404456ABB44E50C6, double 0x404456AB8A5CE5B4, double 0x40445692923E5B85, double 0x404456925FE974A3, double 0x4044569235F80991, double 0x404456920C069E80, double 0x40445691D9B1B79E, double 0x40445691AFC04C8C, double 0x404456917D6B65AA, double 0x404456915379FA98, double 0x40445691212513B6, double 0x40445690F733A8A4, double 0x40445677FF151E75, double 0x40445677D523B363, double 0x40445677A2CECC81, double 0x4044567778DD6170, double 0x4044567746887A8D, double 0x404456771C970F7C, double 0x40445676EA422899, double 0x40445676C050BD88, double 0x40445676965F5276, double 0x40445676640A6B94, double 0x4044565D6BEBE165, double 0x4044565D41FA7653, double 0x4044565D0FA58F71, double 0x4044565CE5B4245F, double 0x4044565CBBC2B94E, double 0x4044565C896DD26B, double 0x4044565C5F7C675A, double 0x4044565C2D278078, double 0x4044565C03361566, double 0x4044565BD0E12E84, double 0x40445642E1262025, double 0x40445642AED13943, double 0x4044564284DFCE31, double 0x40445642528AE74F, double 0x4044564228997C3D, double 0x40445641F644955B, double 0x40445641CC532A49, double 0x4044564199FE4367, double 0x40445641700CD856, double 0x40445641461B6D44, double 0x404456284DFCE315, double 0x404456281BA7FC33, double 0x40445627F1B69121, double 0x40445627C7C5260F, double 0x4044562795703F2D, double 0x404456276B7ED41B, double 0x404456273929ED39, double 0x404456270F388228, double 0x40445626DCE39B45, double 0x40445626B2F23034, double 0x4044560DBAD3A605, double 0x4044560D90E23AF3, double 0x4044560D5E8D5411, double 0x4044560D349BE8FF, double 0x4044560D0247021D, double 0x4044560CD855970B, double 0x4044560CA600B029, double 0x4044560C7C0F4517, double 0x4044560C521DDA06, double 0x4044560C1FC8F323, double 0x404455F327AA68F5, double 0x404455F2FDB8FDE3, double 0x404455F2CB641701, double 0x404455F2A172ABEF, double 0x404455F2778140DD, double 0x404455F2452C59FB, double 0x404455F21B3AEEE9, double 0x404455F1E8E60807, double 0x404455F1BEF49CF5, double 0x404455F18C9FB613, double 0x404455D89CE4A7B5, double 0x404455D86A8FC0D3, double 0x404455D8409E55C1, double 0x404455D80E496EDF, double 0x404455D7E45803CD, double 0x404455D7B2031CEB, double 0x404455D78811B1D9, double 0x404455D755BCCAF7, double 0x404455D72BCB5FE5, double 0x404455D701D9F4D3, double 0x404455BE09BB6AA5, double 0x404455BDD76683C3, double 0x404455BDAD7518B1, double 0x404455BD8383AD9F, double 0x404455BD512EC6BD, double 0x404455BD273D5BAB, double 0x404455BCF4E874C9, double 0x404455BCCAF709B7, double 0x404455BC98A222D5, double 0x404455BC6EB0B7C3]
@__const.main.outLat = [100 x double] [double 0x404456AD25679896, double 0x404456ACFB762D84, double 0x404456ACD184C272, double 0x404456ACA7935760, double 0x404456AC7DA1EC4E, double 0x404456AC53B0813D, double 0x404456AC29BF162B, double 0x404456ABFFCDAB19, double 0x404456ABCD78C437, double 0x404456ABA3875925, double 0x40445692923E5B85, double 0x40445692684CF074, double 0x404456923E5B8562, double 0x40445692146A1A50, double 0x40445691EA78AF3E, double 0x40445691C087442C, double 0x404456919695D91B, double 0x404456916CA46E09, double 0x4044569142B302F7, double 0x4044569118C197E5, double 0x40445677FF151E75, double 0x40445677D523B363, double 0x40445677AB324852, double 0x404456778140DD40, double 0x40445677574F722E, double 0x404456772D5E071C, double 0x40445677036C9C0B, double 0x40445676D97B30F9, double 0x40445676AF89C5E7, double 0x4044567685985AD5, double 0x4044565D6BEBE165, double 0x4044565D41FA7653, double 0x4044565D18090B41, double 0x4044565CEE17A030, double 0x4044565CC426351E, double 0x4044565C9A34CA0C, double 0x4044565C70435EFA, double 0x4044565C4651F3E9, double 0x4044565C1C6088D7, double 0x4044565BF26F1DC5, double 0x40445642E1262025, double 0x40445642B734B513, double 0x404456428D434A02, double 0x404456426351DEF0, double 0x40445642396073DE, double 0x404456420F6F08CC, double 0x40445641E57D9DBB, double 0x40445641B328B6D8, double 0x4044564189374BC7, double 0x404456415F45E0B5, double 0x404456284DFCE315, double 4.067310e+01, double 0x40445627FA1A0CF2, double 0x40445627D028A1E0, double 0x40445627A63736CE, double 0x404456277C45CBBC, double 0x40445627525460AA, double 0x404456272862F599, double 0x40445626FE718A87, double 0x40445626D4801F75, double 0x4044560DBAD3A605, double 0x4044560D90E23AF3, double 0x4044560D66F0CFE1, double 0x4044560D3CFF64D0, double 0x4044560D130DF9BE, double 0x4044560CE91C8EAC, double 0x4044560CBF2B239A, double 0x4044560C9539B888, double 0x4044560C6B484D77, double 0x4044560C4156E265, double 0x404455F327AA68F5, double 0x404455F2FDB8FDE3, double 0x404455F2D3C792D1, double 0x404455F2A9D627BF, double 0x404455F27FE4BCAE, double 0x404455F255F3519C, double 0x404455F22C01E68A, double 0x404455F202107B78, double 0x404455F1D81F1066, double 0x404455F1AE2DA555, double 0x404455D89CE4A7B5, double 0x404455D872F33CA3, double 0x404455D84901D191, double 0x404455D81F106680, double 0x404455D7F51EFB6E, double 0x404455D7CB2D905C, double 0x404455D7A13C254A, double 0x404455D76EE73E68, double 0x404455D744F5D356, double 0x404455D71B046845, double 0x404455BE09BB6AA5, double 0x404455BDDFC9FF93, double 0x404455BDB5D89481, double 0x404455BD8BE7296F, double 0x404455BD61F5BE5E, double 0x404455BD3804534C, double 0x404455BD0E12E83A, double 0x404455BCE4217D28, double 0x404455BCBA301217, double 0x404455BC903EA705]
@__const.main.outLon = [100 x double] [double 0xC0559D6A012599ED, double 0xC0559D588E368F08, double 0xC0559D471F79420B, double 0xC0559D35AC8A3726, double 0xC0559D24399B2C41, double 0xC0559D12C6AC215C, double 0xC0559D0153BD1676, double 0xC0559CEFE0CE0B91, double 0xC0559CDE6DDF00AC, double 0xC0559CCCFAEFF5C7, double 0xC0559D6A1E81CB47, double 0xC0559D58AB92C062, double 0xC0559D4738A3B57C, double 0xC0559D35C5B4AA97, double 0xC0559D2452C59FB2, double 0xC0559D12DFD694CD, double 0xC0559D01711947D0, double 0xC0559CEFFE2A3CEA, double 0xC0559CDE8B3B3205, double 0xC0559CCD184C2720, double 0xC0559D6A37AC3EB8, double 0xC0559D58C8EEF1BB, double 0xC0559D4755FFE6D6, double 0xC0559D35E310DBF0, double 0xC0559D247021D10B, double 0xC0559D12FD32C626, double 0xC0559D018A43BB41, double 0xC0559CF01754B05B, double 0xC0559CDEA465A576, double 0xC0559CCD35A85879, double 0xC0559D6A55087011, double 0xC0559D58E219652C, double 0xC0559D476F2A5A47, double 0xC0559D35FC3B4F61, double 0xC0559D248D7E0264, double 0xC0559D131A8EF77F, double 0xC0559D01A79FEC9A, double 0xC0559CF034B0E1B5, double 0xC0559CDEC1C1D6D0, double 0xC0559CCD4ED2CBEA, double 0xC0559D6A6E32E382, double 0xC0559D58FF759685, double 0xC0559D478C868BA0, double 0xC0559D36199780BB, double 0xC0559D24A6A875D5, double 0xC0559D1333B96AF0, double 0xC0559D01C0CA600B, double 0xC0559CF0520D130E, double 0xC0559CDEDF1E0829, double 0xC0559CCD6C2EFD44, double 0xC0559D6A8B8F14DB, double 0xC0559D5918A009F6, double 0xC0559D47A5B0FF11, double 0xC0559D3636F3B214, double 0xC0559D24C404A72F, double 0xC0559D1351159C49, double 0xC0559D01DE269164, double 0xC0559CF06B37867F, double 0xC0559CDEF8487B9A, double 0xC0559CCD898B2E9D, double 0xC0559D6AA8EB4635, double 0xC0559D5935FC3B4F, double 0xC0559D47C30D306A, double 0xC0559D36501E2585, double 0xC0559D24DD2F1AA0, double 0xC0559D136A400FBB, double 0xC0559D01FB82C2BD, double 0xC0559CF08893B7D8, double 0xC0559CDF15A4ACF3, double 0xC0559CCDA2B5A20E, double 0xC0559D6AC215B9A6, double 0xC0559D594F26AEC0, double 0xC0559D47DC37A3DB, double 0xC0559D366D7A56DE, double 0xC0559D24FA8B4BF9, double 0xC0559D13879C4114, double 0xC0559D0214AD362F, double 0xC0559CF0A1BE2B49, double 0xC0559CDF3300DE4C, double 0xC0559CCDC011D367, double 0xC0559D6ADF71EAFF, double 0xC0559D596C82E01A, double 0xC0559D47F993D534, double 0xC0559D3686A4CA4F, double 0xC0559D2513B5BF6A, double 0xC0559D13A4F8726D, double 0xC0559D0232096788, double 0xC0559CF0BF1A5CA3, double 0xC0559CDF4C2B51BD, double 0xC0559CCDD93C46D8, double 0xC0559D6AF89C5E70, double 0xC0559D5985AD538B, double 0xC0559D4816F0068E, double 0xC0559D36A400FBA9, double 0xC0559D253111F0C3, double 0xC0559D13BE22E5DE, double 0xC0559D024B33DAF9, double 0xC0559CF0DC768DFC, double 0xC0559CDF69878317, double 0xC0559CCDF6987831]
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca [100 x double]
%7 = alloca [100 x double]
%8 = alloca [100 x double]
%9 = alloca i32
%10 = alloca [100 x double]
%11 = alloca [100 x double]
%12 = alloca i32
%13 = alloca double
%14 = alloca double*
%15 = alloca double*
%16 = alloca double*
%17 = alloca double*
%18 = alloca double*
%19 = alloca double*
%20 = alloca double**
%21 = alloca double**
%22 = alloca i32*
%23 = alloca i32
%24 = alloca i32
%25 = alloca double*
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%26 = bitcast [100 x double]* %6 to i8*
%27 = bitcast [100 x double]* %7 to i8*
%28 = bitcast [100 x double]* %8 to i8*
store i32 100, i32* %9
%29 = bitcast [100 x double]* %10 to i8*
%30 = bitcast [100 x double]* %11 to i8*
store i32 100, i32* %12
store double 1.000000e+02, double* %13
%31 = load i32, i32* %9
%32 = sext i32 %31 to i64
%33 = mul i64 8, %32
%34 = call i8* @malloc(i64 %33)
%35 = bitcast i8* %34 to double*
store double* %35, double** %14
%36 = load i32, i32* %9
%37 = sext i32 %36 to i64
%38 = mul i64 8, %37
%39 = call i8* @malloc(i64 %38)
%40 = bitcast i8* %39 to double*
store double* %40, double** %15
%41 = load i32, i32* %9
%42 = sext i32 %41 to i64
%43 = mul i64 8, %42
%44 = call i8* @malloc(i64 %43)
%45 = bitcast i8* %44 to double*
store double* %45, double** %18
store double** %14, double*** %20
store double** %15, double*** %21
%46 = load i32, i32* %12
%47 = sext i32 %46 to i64
%48 = mul i64 8, %47
%49 = call i8* @malloc(i64 %48)
%50 = bitcast i8* %49 to double*
store double* %50, double** %16
%51 = load i32, i32* %12
%52 = sext i32 %51 to i64
%53 = mul i64 8, %52
%54 = call i8* @malloc(i64 %53)
%55 = bitcast i8* %54 to double*
store double* %55, double** %17
%56 = load i32, i32* %12
%57 = sext i32 %56 to i64
%58 = mul i64 8, %57
%59 = call i8* @malloc(i64 %58)
%60 = bitcast i8* %59 to double*
store double* %60, double** %19
%61 = load i32, i32* %12
%62 = sext i32 %61 to i64
%63 = mul i64 4, %62
%64 = call i8* @malloc(i64 %63)
%65 = bitcast i8* %64 to i32*
store i32* %65, i32** %22
store i32 0, i32* %23
br label %66
66: ; preds = %95, %2
%67 = load i32, i32* %23
%68 = load i32, i32* %9
%69 = icmp slt i32 %67, %68
br i1 %69, label %70, label %98
70: ; preds = %66
%71 = load i32, i32* %23
%72 = sext i32 %71 to i64
%73 = getelementptr inbounds [100 x double], [100 x double]* %6, i64 0, i64 %72
%74 = load double, double* %73
%75 = load double*, double** %14
%76 = load i32, i32* %23
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds double, double* %75, i64 %77
store double %74, double* %78
%79 = load i32, i32* %23
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds [100 x double], [100 x double]* %7, i64 0, i64 %80
%82 = load double, double* %81
%83 = load double*, double** %15
%84 = load i32, i32* %23
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds double, double* %83, i64 %85
store double %82, double* %86
%87 = load i32, i32* %23
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds [100 x double], [100 x double]* %8, i64 0, i64 %88
%90 = load double, double* %89
%91 = load double*, double** %18
%92 = load i32, i32* %23
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds double, double* %91, i64 %93
store double %90, double* %94
br label %95
95: ; preds = %70
%96 = load i32, i32* %23
%97 = add nsw i32 %96, 1
store i32 %97, i32* %23
br label %66
98: ; preds = %66
store i32 0, i32* %24
br label %99
99: ; preds = %120, %98
%100 = load i32, i32* %24
%101 = load i32, i32* %12
%102 = icmp slt i32 %100, %101
br i1 %102, label %103, label %123
103: ; preds = %99
%104 = load i32, i32* %24
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds [100 x double], [100 x double]* %10, i64 0, i64 %105
%107 = load double, double* %106
%108 = load double*, double** %16
%109 = load i32, i32* %24
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds double, double* %108, i64 %110
store double %107, double* %111
%112 = load i32, i32* %24
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds [100 x double], [100 x double]* %11, i64 0, i64 %113
%115 = load double, double* %114
%116 = load double*, double** %17
%117 = load i32, i32* %24
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds double, double* %116, i64 %118
store double %115, double* %119
br label %120
120: ; preds = %103
%121 = load i32, i32* %24
%122 = add nsw i32 %121, 1
store i32 %122, i32* %24
br label %99
123: ; preds = %99
%124 = load i32, i32* %12
%125 = sext i32 %124 to i64
%126 = mul i64 8, %125
%127 = call i8* @malloc(i64 %126)
%128 = bitcast i8* %127 to double*
store double* %128, double** %25
%129 = load double**, double*** %20
%130 = load double**, double*** %21
%131 = load i32, i32* %9
%132 = load double*, double** %16
%133 = load double*, double** %17
%134 = load i32*, i32** %22
%135 = load double*, double** %25
%136 = load i32, i32* %12
%137 = call i32 (double**, double**, i32, double*, double*, i32*, double*, i32, i32, ...) bitcast (i32 (...)* @nearestNeighbor to i32 (double**, double**, i32, double*, double*, i32*, double*, i32, i32, ...)*)(double** %129, double** %130, i32 %131, double* %132, double* %133, i32* %134, double* %135, i32 %136, i32 2000000)
%138 = load double**, double*** %20
%139 = load double*, double** %138
%140 = bitcast double* %139 to i8*
%141 = load double**, double*** %21
%142 = load double*, double** %141
%143 = bitcast double* %142 to i8*
%144 = load double*, double** %18
%145 = bitcast double* %144 to i8*
%146 = load double*, double** %16
%147 = bitcast double* %146 to i8*
%148 = load double*, double** %17
%149 = bitcast double* %148 to i8*
%150 = load double*, double** %19
%151 = bitcast double* %150 to i8*
%152 = load i32*, i32** %22
%153 = bitcast i32* %152 to i8*
ret i32 0
}

LLVM IR (-O2):
@__const.main.inLat = [100 x double] [double 0x404456AD25679896, double 0x404456ACF312B1B3, double 0x404456ACC92146A2, double 0x404456AC96CC5FC0, double 0x404456AC6CDAF4AE, double 0x404456AC3A860DCC, double 0x404456AC1094A2BA, double 0x404456ABE6A337A8, double 0x404456ABB44E50C6, double 0x404456AB8A5CE5B4, double 0x40445692923E5B85, double 0x404456925FE974A3, double 0x4044569235F80991, double 0x404456920C069E80, double 0x40445691D9B1B79E, double 0x40445691AFC04C8C, double 0x404456917D6B65AA, double 0x404456915379FA98, double 0x40445691212513B6, double 0x40445690F733A8A4, double 0x40445677FF151E75, double 0x40445677D523B363, double 0x40445677A2CECC81, double 0x4044567778DD6170, double 0x4044567746887A8D, double 0x404456771C970F7C, double 0x40445676EA422899, double 0x40445676C050BD88, double 0x40445676965F5276, double 0x40445676640A6B94, double 0x4044565D6BEBE165, double 0x4044565D41FA7653, double 0x4044565D0FA58F71, double 0x4044565CE5B4245F, double 0x4044565CBBC2B94E, double 0x4044565C896DD26B, double 0x4044565C5F7C675A, double 0x4044565C2D278078, double 0x4044565C03361566, double 0x4044565BD0E12E84, double 0x40445642E1262025, double 0x40445642AED13943, double 0x4044564284DFCE31, double 0x40445642528AE74F, double 0x4044564228997C3D, double 0x40445641F644955B, double 0x40445641CC532A49, double 0x4044564199FE4367, double 0x40445641700CD856, double 0x40445641461B6D44, double 0x404456284DFCE315, double 0x404456281BA7FC33, double 0x40445627F1B69121, double 0x40445627C7C5260F, double 0x4044562795703F2D, double 0x404456276B7ED41B, double 0x404456273929ED39, double 0x404456270F388228, double 0x40445626DCE39B45, double 0x40445626B2F23034, double 0x4044560DBAD3A605, double 0x4044560D90E23AF3, double 0x4044560D5E8D5411, double 0x4044560D349BE8FF, double 0x4044560D0247021D, double 0x4044560CD855970B, double 0x4044560CA600B029, double 0x4044560C7C0F4517, double 0x4044560C521DDA06, double 0x4044560C1FC8F323, double 0x404455F327AA68F5, double 0x404455F2FDB8FDE3, double 0x404455F2CB641701, double 0x404455F2A172ABEF, double 0x404455F2778140DD, double 0x404455F2452C59FB, double 0x404455F21B3AEEE9, double 0x404455F1E8E60807, double 0x404455F1BEF49CF5, double 0x404455F18C9FB613, double 0x404455D89CE4A7B5, double 0x404455D86A8FC0D3, double 0x404455D8409E55C1, double 0x404455D80E496EDF, double 0x404455D7E45803CD, double 0x404455D7B2031CEB, double 0x404455D78811B1D9, double 0x404455D755BCCAF7, double 0x404455D72BCB5FE5, double 0x404455D701D9F4D3, double 0x404455BE09BB6AA5, double 0x404455BDD76683C3, double 0x404455BDAD7518B1, double 0x404455BD8383AD9F, double 0x404455BD512EC6BD, double 0x404455BD273D5BAB, double 0x404455BCF4E874C9, double 0x404455BCCAF709B7, double 0x404455BC98A222D5, double 0x404455BC6EB0B7C3]
@__const.main.outLat = [100 x double] [double 0x404456AD25679896, double 0x404456ACFB762D84, double 0x404456ACD184C272, double 0x404456ACA7935760, double 0x404456AC7DA1EC4E, double 0x404456AC53B0813D, double 0x404456AC29BF162B, double 0x404456ABFFCDAB19, double 0x404456ABCD78C437, double 0x404456ABA3875925, double 0x40445692923E5B85, double 0x40445692684CF074, double 0x404456923E5B8562, double 0x40445692146A1A50, double 0x40445691EA78AF3E, double 0x40445691C087442C, double 0x404456919695D91B, double 0x404456916CA46E09, double 0x4044569142B302F7, double 0x4044569118C197E5, double 0x40445677FF151E75, double 0x40445677D523B363, double 0x40445677AB324852, double 0x404456778140DD40, double 0x40445677574F722E, double 0x404456772D5E071C, double 0x40445677036C9C0B, double 0x40445676D97B30F9, double 0x40445676AF89C5E7, double 0x4044567685985AD5, double 0x4044565D6BEBE165, double 0x4044565D41FA7653, double 0x4044565D18090B41, double 0x4044565CEE17A030, double 0x4044565CC426351E, double 0x4044565C9A34CA0C, double 0x4044565C70435EFA, double 0x4044565C4651F3E9, double 0x4044565C1C6088D7, double 0x4044565BF26F1DC5, double 0x40445642E1262025, double 0x40445642B734B513, double 0x404456428D434A02, double 0x404456426351DEF0, double 0x40445642396073DE, double 0x404456420F6F08CC, double 0x40445641E57D9DBB, double 0x40445641B328B6D8, double 0x4044564189374BC7, double 0x404456415F45E0B5, double 0x404456284DFCE315, double 4.067310e+01, double 0x40445627FA1A0CF2, double 0x40445627D028A1E0, double 0x40445627A63736CE, double 0x404456277C45CBBC, double 0x40445627525460AA, double 0x404456272862F599, double 0x40445626FE718A87, double 0x40445626D4801F75, double 0x4044560DBAD3A605, double 0x4044560D90E23AF3, double 0x4044560D66F0CFE1, double 0x4044560D3CFF64D0, double 0x4044560D130DF9BE, double 0x4044560CE91C8EAC, double 0x4044560CBF2B239A, double 0x4044560C9539B888, double 0x4044560C6B484D77, double 0x4044560C4156E265, double 0x404455F327AA68F5, double 0x404455F2FDB8FDE3, double 0x404455F2D3C792D1, double 0x404455F2A9D627BF, double 0x404455F27FE4BCAE, double 0x404455F255F3519C, double 0x404455F22C01E68A, double 0x404455F202107B78, double 0x404455F1D81F1066, double 0x404455F1AE2DA555, double 0x404455D89CE4A7B5, double 0x404455D872F33CA3, double 0x404455D84901D191, double 0x404455D81F106680, double 0x404455D7F51EFB6E, double 0x404455D7CB2D905C, double 0x404455D7A13C254A, double 0x404455D76EE73E68, double 0x404455D744F5D356, double 0x404455D71B046845, double 0x404455BE09BB6AA5, double 0x404455BDDFC9FF93, double 0x404455BDB5D89481, double 0x404455BD8BE7296F, double 0x404455BD61F5BE5E, double 0x404455BD3804534C, double 0x404455BD0E12E83A, double 0x404455BCE4217D28, double 0x404455BCBA301217, double 0x404455BC903EA705]
@__const.main.outLon = [100 x double] [double 0xC0559D6A012599ED, double 0xC0559D588E368F08, double 0xC0559D471F79420B, double 0xC0559D35AC8A3726, double 0xC0559D24399B2C41, double 0xC0559D12C6AC215C, double 0xC0559D0153BD1676, double 0xC0559CEFE0CE0B91, double 0xC0559CDE6DDF00AC, double 0xC0559CCCFAEFF5C7, double 0xC0559D6A1E81CB47, double 0xC0559D58AB92C062, double 0xC0559D4738A3B57C, double 0xC0559D35C5B4AA97, double 0xC0559D2452C59FB2, double 0xC0559D12DFD694CD, double 0xC0559D01711947D0, double 0xC0559CEFFE2A3CEA, double 0xC0559CDE8B3B3205, double 0xC0559CCD184C2720, double 0xC0559D6A37AC3EB8, double 0xC0559D58C8EEF1BB, double 0xC0559D4755FFE6D6, double 0xC0559D35E310DBF0, double 0xC0559D247021D10B, double 0xC0559D12FD32C626, double 0xC0559D018A43BB41, double 0xC0559CF01754B05B, double 0xC0559CDEA465A576, double 0xC0559CCD35A85879, double 0xC0559D6A55087011, double 0xC0559D58E219652C, double 0xC0559D476F2A5A47, double 0xC0559D35FC3B4F61, double 0xC0559D248D7E0264, double 0xC0559D131A8EF77F, double 0xC0559D01A79FEC9A, double 0xC0559CF034B0E1B5, double 0xC0559CDEC1C1D6D0, double 0xC0559CCD4ED2CBEA, double 0xC0559D6A6E32E382, double 0xC0559D58FF759685, double 0xC0559D478C868BA0, double 0xC0559D36199780BB, double 0xC0559D24A6A875D5, double 0xC0559D1333B96AF0, double 0xC0559D01C0CA600B, double 0xC0559CF0520D130E, double 0xC0559CDEDF1E0829, double 0xC0559CCD6C2EFD44, double 0xC0559D6A8B8F14DB, double 0xC0559D5918A009F6, double 0xC0559D47A5B0FF11, double 0xC0559D3636F3B214, double 0xC0559D24C404A72F, double 0xC0559D1351159C49, double 0xC0559D01DE269164, double 0xC0559CF06B37867F, double 0xC0559CDEF8487B9A, double 0xC0559CCD898B2E9D, double 0xC0559D6AA8EB4635, double 0xC0559D5935FC3B4F, double 0xC0559D47C30D306A, double 0xC0559D36501E2585, double 0xC0559D24DD2F1AA0, double 0xC0559D136A400FBB, double 0xC0559D01FB82C2BD, double 0xC0559CF08893B7D8, double 0xC0559CDF15A4ACF3, double 0xC0559CCDA2B5A20E, double 0xC0559D6AC215B9A6, double 0xC0559D594F26AEC0, double 0xC0559D47DC37A3DB, double 0xC0559D366D7A56DE, double 0xC0559D24FA8B4BF9, double 0xC0559D13879C4114, double 0xC0559D0214AD362F, double 0xC0559CF0A1BE2B49, double 0xC0559CDF3300DE4C, double 0xC0559CCDC011D367, double 0xC0559D6ADF71EAFF, double 0xC0559D596C82E01A, double 0xC0559D47F993D534, double 0xC0559D3686A4CA4F, double 0xC0559D2513B5BF6A, double 0xC0559D13A4F8726D, double 0xC0559D0232096788, double 0xC0559CF0BF1A5CA3, double 0xC0559CDF4C2B51BD, double 0xC0559CCDD93C46D8, double 0xC0559D6AF89C5E70, double 0xC0559D5985AD538B, double 0xC0559D4816F0068E, double 0xC0559D36A400FBA9, double 0xC0559D253111F0C3, double 0xC0559D13BE22E5DE, double 0xC0559D024B33DAF9, double 0xC0559CF0DC768DFC, double 0xC0559CDF69878317, double 0xC0559CCDF6987831]
define i32 @main(i32 %0, i8** nocapture readnone %1) {
%3 = alloca double*
%4 = alloca double*
%5 = bitcast double** %3 to i8*
%6 = bitcast double** %4 to i8*
%7 = tail call dereferenceable_or_null(800) i8* @malloc(i64 800)
%8 = bitcast double** %3 to i8**
store i8* %7, i8** %8
%9 = tail call dereferenceable_or_null(800) i8* @malloc(i64 800)
%10 = bitcast double** %4 to i8**
store i8* %9, i8** %10
%11 = tail call dereferenceable_or_null(800) i8* @malloc(i64 800)
%12 = tail call dereferenceable_or_null(800) i8* @malloc(i64 800)
%13 = tail call dereferenceable_or_null(400) i8* @malloc(i64 400)
%14 = bitcast i8* %7 to double*
%15 = bitcast i8* %9 to double*
br label %16
16: ; preds = %16, %2
%17 = phi i64 [ 0, %2 ], [ %39, %16 ]
%18 = getelementptr inbounds [100 x double], [100 x double]* @__const.main.inLat, i64 0, i64 %17
%19 = bitcast double* %18 to <2 x double>*
%20 = load <2 x double>, <2 x double>* %19
%21 = getelementptr inbounds double, double* %14, i64 %17
%22 = bitcast double* %21 to <2 x double>*
store <2 x double> %20, <2 x double>* %22
%23 = getelementptr inbounds [100 x double], [100 x double]* @__const.main.outLon, i64 0, i64 %17
%24 = bitcast double* %23 to <2 x double>*
%25 = load <2 x double>, <2 x double>* %24
%26 = getelementptr inbounds double, double* %15, i64 %17
%27 = bitcast double* %26 to <2 x double>*
store <2 x double> %25, <2 x double>* %27
%28 = or i64 %17, 2
%29 = getelementptr inbounds [100 x double], [100 x double]* @__const.main.inLat, i64 0, i64 %28
%30 = bitcast double* %29 to <2 x double>*
%31 = load <2 x double>, <2 x double>* %30
%32 = getelementptr inbounds double, double* %14, i64 %28
%33 = bitcast double* %32 to <2 x double>*
store <2 x double> %31, <2 x double>* %33
%34 = getelementptr inbounds [100 x double], [100 x double]* @__const.main.outLon, i64 0, i64 %28
%35 = bitcast double* %34 to <2 x double>*
%36 = load <2 x double>, <2 x double>* %35
%37 = getelementptr inbounds double, double* %15, i64 %28
%38 = bitcast double* %37 to <2 x double>*
store <2 x double> %36, <2 x double>* %38
%39 = add nuw nsw i64 %17, 4
%40 = icmp eq i64 %39, 100
br i1 %40, label %41, label %16
41: ; preds = %16
%42 = bitcast i8* %11 to double*
%43 = bitcast i8* %12 to double*
%44 = bitcast i8* %13 to i32*
%45 = tail call dereferenceable_or_null(800) i8* @malloc(i64 800)
%46 = bitcast i8* %45 to double*
%47 = call i32 (double**, double**, i32, double*, double*, i32*, double*, i32, i32, ...) bitcast (i32 (...)* @nearestNeighbor to i32 (double**, double**, i32, double*, double*, i32*, double*, i32, i32, ...)*)(double** %3, double** %4, i32 100, double* %42, double* %43, i32* %44, double* %46, i32 100, i32 2000000)
%48 = load i8*, i8** %8
%49 = load i8*, i8** %10
ret i32 0
}