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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ ActualFileClose(int);
int /*<<< orphan*/ ActualFileDelete(char *);
int ActualFileOpenForRead(char *);
int ActualFileOpenForWrite(char *);
int /*<<< orphan*/ ActualFileRename(char *, char *);
int /*<<< orphan*/ ActualFileSeek(int, int);
int ActualFileWrite(int, int, char *);
int /*<<< orphan*/ INIAddInExt(char *, int);
int /*<<< orphan*/ INIAddOutExt(char *, int);
int INICopy(int, int, int);
int INIFindKeyword(int, char const *, int /*<<< orphan*/ *);
int INIFindSection(int, char const *);
int INIReadLine(int, char *);
int INIRemoveExt(char const *, char *);
int /*<<< orphan*/ sprintf(char *, char *, char const *, ...);
int INISaveString(const char *file, const char *section, const char *keyword,
                  const char *value) {
  char inname[255 + 1];
  char outname[255 + 1];
  int filepos;
  int infile;
  int outfile;
  int i;
  int retval;
  char templine[255 + 1];
  if (file == NULL)
    return (-1);
  if (section == NULL)
    return (-1);
  if (keyword == NULL)
    return (-1);
  if (value == NULL)
    return (-1);
  filepos = INIRemoveExt(file, inname);
  for (i = 0; i <= filepos; i++)
    outname[i] = inname[i];
  INIAddInExt(inname, filepos);
  INIAddOutExt(outname, filepos);
  filepos = 0;
  infile = ActualFileOpenForRead(inname);
  if (infile == -1) {
    outfile = ActualFileOpenForWrite(inname);
    if (outfile == -1)
      return (-1);
    sprintf(templine, "[%s]\r\n", section);
    i = 0;
    while ((i < 255) && (templine[i] != 0))
      i++;
    retval = ActualFileWrite(outfile, i, templine);
    if (retval < i) {
      ActualFileClose(outfile);
      outfile = -1;
      ActualFileDelete(inname);
      return (-1);
    }
    sprintf(templine, "%s=%s\r\n", keyword, value);
    i = 0;
    while ((i < 255) && (templine[i] != 0))
      i++;
    retval = ActualFileWrite(outfile, i, templine);
    ActualFileClose(outfile);
    outfile = -1;
    if (retval < i) {
      ActualFileDelete(inname);
      return (-1);
    }
    return (0);
  }
  retval = INIFindSection(infile, section);
  if (retval < 0) {
    outfile = ActualFileOpenForWrite(outname);
    if (outfile == -1) {
      ActualFileClose(infile);
      infile = -1;
      return (-1);
    }
    ActualFileSeek(infile, 0);
    INICopy(infile, outfile, 0x0FFFFFFF);
    sprintf(templine, "\r\n[%s]\r\n", section);
    i = 0;
    while ((i < 255) && (templine[i] != 0))
      i++;
    retval = ActualFileWrite(outfile, i, templine);
    if (retval < i) {
      ActualFileClose(infile);
      infile = -1;
      ActualFileClose(outfile);
      outfile = -1;
      ActualFileDelete(outname);
      return (-1);
    }
    sprintf(templine, "%s=%s\r\n", keyword, value);
    i = 0;
    while ((i < 255) && (templine[i] != 0))
      i++;
    retval = ActualFileWrite(outfile, i, templine);
    ActualFileClose(infile);
    infile = -1;
    ActualFileClose(outfile);
    outfile = -1;
    if (retval < i) {
      ActualFileDelete(outname);
      return (-1);
    }
    ActualFileDelete(inname);
    ActualFileRename(outname, inname);
    return (0);
  }
  filepos = retval;
  ActualFileSeek(infile, filepos);
  filepos += INIReadLine(infile, templine);
  retval = INIFindKeyword(infile, keyword, NULL);
  if (retval < 0) {
    ActualFileSeek(infile, filepos);
    retval = INIReadLine(infile, templine);
    i = 0;
    while ((i < 255) && (templine[i] != 0) && (templine[i] != '='))
      i++;
    while ((retval > 0) && (templine[i] == '=')) {
      filepos += retval;
      retval = INIReadLine(infile, templine);
      i = 0;
      while ((i < 255) && (templine[i] != 0) && (templine[i] != '='))
        i++;
    }
    outfile = ActualFileOpenForWrite(outname);
    if (outfile == -1) {
      ActualFileClose(infile);
      infile = -1;
      return (-1);
    }
    ActualFileSeek(infile, 0);
    retval = INICopy(infile, outfile, filepos);
    if (retval > 0) {
      ActualFileClose(infile);
      infile = -1;
      ActualFileClose(outfile);
      outfile = -1;
      ActualFileDelete(outname);
      return (-1);
    }
    sprintf(templine, "%s=%s\r\n", keyword, value);
    i = 0;
    while ((i < 255) && (templine[i] != 0))
      i++;
    retval = ActualFileWrite(outfile, i, templine);
    if (retval < i) {
      ActualFileClose(infile);
      infile = -1;
      ActualFileClose(outfile);
      outfile = -1;
      ActualFileDelete(outname);
      return (-1);
    }
  } else {
    filepos += retval;
    outfile = ActualFileOpenForWrite(outname);
    if (outfile == -1) {
      ActualFileClose(infile);
      infile = -1;
      return (-1);
    }
    ActualFileSeek(infile, 0);
    retval = INICopy(infile, outfile, filepos);
    if (retval > 0) {
      ActualFileClose(infile);
      infile = -1;
      ActualFileClose(outfile);
      outfile = -1;
      ActualFileDelete(outname);
      return (-1);
    }
    INIReadLine(infile, templine);
    sprintf(templine, "%s=%s\r\n", keyword, value);
    i = 0;
    while ((i < 255) && (templine[i] != 0))
      i++;
    retval = ActualFileWrite(outfile, i, templine);
    if (retval < i) {
      ActualFileClose(infile);
      infile = -1;
      ActualFileClose(outfile);
      outfile = -1;
      ActualFileDelete(outname);
      return (-1);
    }
  }
  INICopy(infile, outfile, 0xFFFFFFF);
  ActualFileClose(infile);
  infile = -1;
  ActualFileClose(outfile);
  outfile = -1;
  ActualFileDelete(inname);
  ActualFileRename(outname, inname);
  return (0);
}


x86 assembly (clang, -O0):
<INISaveString>:
push   %rbp
mov    %rsp,%rbp
sub    $0x360,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
cmpq   $0x0,-0x10(%rbp)
jne    1222 <INISaveString+0x32>
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
cmpq   $0x0,-0x18(%rbp)
jne    1239 <INISaveString+0x49>
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
cmpq   $0x0,-0x20(%rbp)
jne    1250 <INISaveString+0x60>
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
cmpq   $0x0,-0x28(%rbp)
jne    1267 <INISaveString+0x77>
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
mov    -0x10(%rbp),%rdi
lea    -0x130(%rbp),%rsi
call   10a0 <INIRemoveExt@plt>
mov    %eax,-0x234(%rbp)
movl   $0x0,-0x240(%rbp)
mov    -0x240(%rbp),%eax
cmp    -0x234(%rbp),%eax
jg     12c9 <INISaveString+0xd9>
movslq -0x240(%rbp),%rax
mov    -0x130(%rbp,%rax,1),%cl
movslq -0x240(%rbp),%rax
mov    %cl,-0x230(%rbp,%rax,1)
mov    -0x240(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x240(%rbp)
jmp    1287 <INISaveString+0x97>
lea    -0x130(%rbp),%rdi
mov    -0x234(%rbp),%esi
call   1100 <INIAddInExt@plt>
lea    -0x230(%rbp),%rdi
mov    -0x234(%rbp),%esi
call   1040 <INIAddOutExt@plt>
movl   $0x0,-0x234(%rbp)
lea    -0x130(%rbp),%rdi
call   10c0 <ActualFileOpenForRead@plt>
mov    %eax,-0x238(%rbp)
cmpl   $0xffffffff,-0x238(%rbp)
jne    1505 <INISaveString+0x315>
lea    -0x130(%rbp),%rdi
call   1090 <ActualFileOpenForWrite@plt>
mov    %eax,-0x23c(%rbp)
cmpl   $0xffffffff,-0x23c(%rbp)
jne    1341 <INISaveString+0x151>
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
lea    -0x350(%rbp),%rdi
mov    -0x18(%rbp),%rdx
lea    0xcb7(%rip),%rsi
mov    $0x0,%al
call   10e0 <sprintf@plt>
movl   $0x0,-0x240(%rbp)
xor    %eax,%eax
cmpl   $0xff,-0x240(%rbp)
mov    %al,-0x351(%rbp)
jge    1397 <INISaveString+0x1a7>
movslq -0x240(%rbp),%rax
movsbl -0x350(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
setne  %al
mov    %al,-0x351(%rbp)
mov    -0x351(%rbp),%al
test   $0x1,%al
jne    13aa <INISaveString+0x1ba>
jmp    13be <INISaveString+0x1ce>
mov    -0x240(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x240(%rbp)
jmp    1364 <INISaveString+0x174>
mov    -0x23c(%rbp),%edi
mov    -0x240(%rbp),%esi
lea    -0x350(%rbp),%rdx
call   1050 <ActualFileWrite@plt>
mov    %eax,-0x244(%rbp)
mov    -0x244(%rbp),%eax
cmp    -0x240(%rbp),%eax
jge    141b <INISaveString+0x22b>
mov    -0x23c(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x23c(%rbp)
lea    -0x130(%rbp),%rdi
call   1080 <ActualFileDelete@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
lea    -0x350(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
lea    0xbcf(%rip),%rsi
mov    $0x0,%al
call   10e0 <sprintf@plt>
movl   $0x0,-0x240(%rbp)
xor    %eax,%eax
cmpl   $0xff,-0x240(%rbp)
mov    %al,-0x352(%rbp)
jge    1475 <INISaveString+0x285>
movslq -0x240(%rbp),%rax
movsbl -0x350(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
setne  %al
mov    %al,-0x352(%rbp)
mov    -0x352(%rbp),%al
test   $0x1,%al
jne    1488 <INISaveString+0x298>
jmp    149c <INISaveString+0x2ac>
mov    -0x240(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x240(%rbp)
jmp    1442 <INISaveString+0x252>
mov    -0x23c(%rbp),%edi
mov    -0x240(%rbp),%esi
lea    -0x350(%rbp),%rdx
call   1050 <ActualFileWrite@plt>
mov    %eax,-0x244(%rbp)
mov    -0x23c(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x23c(%rbp)
ff ff ff
mov    -0x244(%rbp),%eax
cmp    -0x240(%rbp),%eax
jge    14f9 <INISaveString+0x309>
lea    -0x130(%rbp),%rdi
call   1080 <ActualFileDelete@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
movl   $0x0,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
mov    -0x238(%rbp),%edi
mov    -0x18(%rbp),%rsi
call   10f0 <INIFindSection@plt>
mov    %eax,-0x244(%rbp)
cmpl   $0x0,-0x244(%rbp)
jge    1797 <INISaveString+0x5a7>
lea    -0x230(%rbp),%rdi
call   1090 <ActualFileOpenForWrite@plt>
mov    %eax,-0x23c(%rbp)
cmpl   $0xffffffff,-0x23c(%rbp)
jne    1567 <INISaveString+0x377>
mov    -0x238(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x238(%rbp)
ff ff ff
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
mov    -0x238(%rbp),%edi
xor    %esi,%esi
call   1110 <ActualFileSeek@plt>
mov    -0x238(%rbp),%edi
mov    -0x23c(%rbp),%esi
mov    $0xfffffff,%edx
call   1060 <INICopy@plt>
lea    -0x350(%rbp),%rdi
mov    -0x18(%rbp),%rdx
lea    0xa6c(%rip),%rsi
mov    $0x0,%al
call   10e0 <sprintf@plt>
movl   $0x0,-0x240(%rbp)
xor    %eax,%eax
cmpl   $0xff,-0x240(%rbp)
mov    %al,-0x353(%rbp)
jge    15e0 <INISaveString+0x3f0>
movslq -0x240(%rbp),%rax
movsbl -0x350(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
setne  %al
mov    %al,-0x353(%rbp)
mov    -0x353(%rbp),%al
test   $0x1,%al
jne    15f3 <INISaveString+0x403>
jmp    1607 <INISaveString+0x417>
mov    -0x240(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x240(%rbp)
jmp    15ad <INISaveString+0x3bd>
mov    -0x23c(%rbp),%edi
mov    -0x240(%rbp),%esi
lea    -0x350(%rbp),%rdx
call   1050 <ActualFileWrite@plt>
mov    %eax,-0x244(%rbp)
mov    -0x244(%rbp),%eax
cmp    -0x240(%rbp),%eax
jge    1679 <INISaveString+0x489>
mov    -0x238(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x238(%rbp)
ff ff ff
mov    -0x23c(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x23c(%rbp)
ff ff ff
lea    -0x230(%rbp),%rdi
call   1080 <ActualFileDelete@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
lea    -0x350(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
lea    0x971(%rip),%rsi
mov    $0x0,%al
call   10e0 <sprintf@plt>
movl   $0x0,-0x240(%rbp)
xor    %eax,%eax
cmpl   $0xff,-0x240(%rbp)
mov    %al,-0x354(%rbp)
jge    16d3 <INISaveString+0x4e3>
movslq -0x240(%rbp),%rax
movsbl -0x350(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
setne  %al
mov    %al,-0x354(%rbp)
mov    -0x354(%rbp),%al
test   $0x1,%al
jne    16e6 <INISaveString+0x4f6>
jmp    16fa <INISaveString+0x50a>
mov    -0x240(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x240(%rbp)
jmp    16a0 <INISaveString+0x4b0>
mov    -0x23c(%rbp),%edi
mov    -0x240(%rbp),%esi
lea    -0x350(%rbp),%rdx
call   1050 <ActualFileWrite@plt>
mov    %eax,-0x244(%rbp)
mov    -0x238(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x238(%rbp)
ff ff ff
mov    -0x23c(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x23c(%rbp)
ff ff ff
mov    -0x244(%rbp),%eax
cmp    -0x240(%rbp),%eax
jge    176c <INISaveString+0x57c>
lea    -0x230(%rbp),%rdi
call   1080 <ActualFileDelete@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
lea    -0x130(%rbp),%rdi
call   1080 <ActualFileDelete@plt>
lea    -0x230(%rbp),%rdi
lea    -0x130(%rbp),%rsi
call   1030 <ActualFileRename@plt>
movl   $0x0,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
mov    -0x244(%rbp),%eax
mov    %eax,-0x234(%rbp)
mov    -0x238(%rbp),%edi
mov    -0x234(%rbp),%esi
call   1110 <ActualFileSeek@plt>
mov    -0x238(%rbp),%edi
lea    -0x350(%rbp),%rsi
call   10b0 <INIReadLine@plt>
add    -0x234(%rbp),%eax
mov    %eax,-0x234(%rbp)
mov    -0x238(%rbp),%edi
mov    -0x20(%rbp),%rsi
xor    %eax,%eax
mov    %eax,%edx
call   10d0 <INIFindKeyword@plt>
mov    %eax,-0x244(%rbp)
cmpl   $0x0,-0x244(%rbp)
jge    1b51 <INISaveString+0x961>
mov    -0x238(%rbp),%edi
mov    -0x234(%rbp),%esi
call   1110 <ActualFileSeek@plt>
mov    -0x238(%rbp),%edi
lea    -0x350(%rbp),%rsi
call   10b0 <INIReadLine@plt>
mov    %eax,-0x244(%rbp)
movl   $0x0,-0x240(%rbp)
xor    %eax,%eax
cmpl   $0xff,-0x240(%rbp)
mov    %al,-0x355(%rbp)
jge    187e <INISaveString+0x68e>
movslq -0x240(%rbp),%rax
movsbl -0x350(%rbp,%rax,1),%ecx
ff
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x355(%rbp)
je     187e <INISaveString+0x68e>
movslq -0x240(%rbp),%rax
movsbl -0x350(%rbp,%rax,1),%eax
ff
cmp    $0x3d,%eax
setne  %al
mov    %al,-0x355(%rbp)
mov    -0x355(%rbp),%al
test   $0x1,%al
jne    1891 <INISaveString+0x6a1>
jmp    18a5 <INISaveString+0x6b5>
mov    -0x240(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x240(%rbp)
jmp    182b <INISaveString+0x63b>
jmp    18aa <INISaveString+0x6ba>
xor    %eax,%eax
cmpl   $0x0,-0x244(%rbp)
mov    %al,-0x356(%rbp)
jle    18da <INISaveString+0x6ea>
movslq -0x240(%rbp),%rax
movsbl -0x350(%rbp,%rax,1),%eax
ff
cmp    $0x3d,%eax
sete   %al
mov    %al,-0x356(%rbp)
mov    -0x356(%rbp),%al
test   $0x1,%al
jne    18ed <INISaveString+0x6fd>
jmp    19a0 <INISaveString+0x7b0>
mov    -0x244(%rbp),%eax
add    -0x234(%rbp),%eax
mov    %eax,-0x234(%rbp)
mov    -0x238(%rbp),%edi
lea    -0x350(%rbp),%rsi
call   10b0 <INIReadLine@plt>
mov    %eax,-0x244(%rbp)
movl   $0x0,-0x240(%rbp)
xor    %eax,%eax
cmpl   $0xff,-0x240(%rbp)
mov    %al,-0x357(%rbp)
jge    1974 <INISaveString+0x784>
movslq -0x240(%rbp),%rax
movsbl -0x350(%rbp,%rax,1),%ecx
ff
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x357(%rbp)
je     1974 <INISaveString+0x784>
movslq -0x240(%rbp),%rax
movsbl -0x350(%rbp,%rax,1),%eax
ff
cmp    $0x3d,%eax
setne  %al
mov    %al,-0x357(%rbp)
mov    -0x357(%rbp),%al
test   $0x1,%al
jne    1987 <INISaveString+0x797>
jmp    199b <INISaveString+0x7ab>
mov    -0x240(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x240(%rbp)
jmp    1921 <INISaveString+0x731>
jmp    18aa <INISaveString+0x6ba>
lea    -0x230(%rbp),%rdi
call   1090 <ActualFileOpenForWrite@plt>
mov    %eax,-0x23c(%rbp)
cmpl   $0xffffffff,-0x23c(%rbp)
jne    19e0 <INISaveString+0x7f0>
mov    -0x238(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x238(%rbp)
ff ff ff
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
mov    -0x238(%rbp),%edi
xor    %esi,%esi
call   1110 <ActualFileSeek@plt>
mov    -0x238(%rbp),%edi
mov    -0x23c(%rbp),%esi
mov    -0x234(%rbp),%edx
call   1060 <INICopy@plt>
mov    %eax,-0x244(%rbp)
cmpl   $0x0,-0x244(%rbp)
jle    1a59 <INISaveString+0x869>
mov    -0x238(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x238(%rbp)
ff ff ff
mov    -0x23c(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x23c(%rbp)
ff ff ff
lea    -0x230(%rbp),%rdi
call   1080 <ActualFileDelete@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
lea    -0x350(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
lea    0x591(%rip),%rsi
mov    $0x0,%al
call   10e0 <sprintf@plt>
movl   $0x0,-0x240(%rbp)
xor    %eax,%eax
cmpl   $0xff,-0x240(%rbp)
mov    %al,-0x358(%rbp)
jge    1ab3 <INISaveString+0x8c3>
movslq -0x240(%rbp),%rax
movsbl -0x350(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
setne  %al
mov    %al,-0x358(%rbp)
mov    -0x358(%rbp),%al
test   $0x1,%al
jne    1ac6 <INISaveString+0x8d6>
jmp    1ada <INISaveString+0x8ea>
mov    -0x240(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x240(%rbp)
jmp    1a80 <INISaveString+0x890>
mov    -0x23c(%rbp),%edi
mov    -0x240(%rbp),%esi
lea    -0x350(%rbp),%rdx
call   1050 <ActualFileWrite@plt>
mov    %eax,-0x244(%rbp)
mov    -0x244(%rbp),%eax
cmp    -0x240(%rbp),%eax
jge    1b4c <INISaveString+0x95c>
mov    -0x238(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x238(%rbp)
ff ff ff
mov    -0x23c(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x23c(%rbp)
ff ff ff
lea    -0x230(%rbp),%rdi
call   1080 <ActualFileDelete@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
jmp    1d26 <INISaveString+0xb36>
mov    -0x244(%rbp),%eax
add    -0x234(%rbp),%eax
mov    %eax,-0x234(%rbp)
lea    -0x230(%rbp),%rdi
call   1090 <ActualFileOpenForWrite@plt>
mov    %eax,-0x23c(%rbp)
cmpl   $0xffffffff,-0x23c(%rbp)
jne    1ba3 <INISaveString+0x9b3>
mov    -0x238(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x238(%rbp)
ff ff ff
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
mov    -0x238(%rbp),%edi
xor    %esi,%esi
call   1110 <ActualFileSeek@plt>
mov    -0x238(%rbp),%edi
mov    -0x23c(%rbp),%esi
mov    -0x234(%rbp),%edx
call   1060 <INICopy@plt>
mov    %eax,-0x244(%rbp)
cmpl   $0x0,-0x244(%rbp)
jle    1c1c <INISaveString+0xa2c>
mov    -0x238(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x238(%rbp)
ff ff ff
mov    -0x23c(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x23c(%rbp)
ff ff ff
lea    -0x230(%rbp),%rdi
call   1080 <ActualFileDelete@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
mov    -0x238(%rbp),%edi
lea    -0x350(%rbp),%rsi
call   10b0 <INIReadLine@plt>
lea    -0x350(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    -0x28(%rbp),%rcx
lea    0x3bc(%rip),%rsi
mov    $0x0,%al
call   10e0 <sprintf@plt>
movl   $0x0,-0x240(%rbp)
xor    %eax,%eax
cmpl   $0xff,-0x240(%rbp)
mov    %al,-0x359(%rbp)
jge    1c88 <INISaveString+0xa98>
movslq -0x240(%rbp),%rax
movsbl -0x350(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
setne  %al
mov    %al,-0x359(%rbp)
mov    -0x359(%rbp),%al
test   $0x1,%al
jne    1c9b <INISaveString+0xaab>
jmp    1caf <INISaveString+0xabf>
mov    -0x240(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x240(%rbp)
jmp    1c55 <INISaveString+0xa65>
mov    -0x23c(%rbp),%edi
mov    -0x240(%rbp),%esi
lea    -0x350(%rbp),%rdx
call   1050 <ActualFileWrite@plt>
mov    %eax,-0x244(%rbp)
mov    -0x244(%rbp),%eax
cmp    -0x240(%rbp),%eax
jge    1d21 <INISaveString+0xb31>
mov    -0x238(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x238(%rbp)
ff ff ff
mov    -0x23c(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x23c(%rbp)
ff ff ff
lea    -0x230(%rbp),%rdi
call   1080 <ActualFileDelete@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1d8c <INISaveString+0xb9c>
jmp    1d26 <INISaveString+0xb36>
mov    -0x238(%rbp),%edi
mov    -0x23c(%rbp),%esi
mov    $0xfffffff,%edx
call   1060 <INICopy@plt>
mov    -0x238(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x238(%rbp)
ff ff ff
mov    -0x23c(%rbp),%edi
call   1070 <ActualFileClose@plt>
movl   $0xffffffff,-0x23c(%rbp)
ff ff ff
lea    -0x130(%rbp),%rdi
call   1080 <ActualFileDelete@plt>
lea    -0x230(%rbp),%rdi
lea    -0x130(%rbp),%rsi
call   1030 <ActualFileRename@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x360,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<INISaveString>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x308,%rsp
mov    $0xffffffff,%eax
test   %rdi,%rdi
je     1897 <INISaveString+0x697>
mov    %rsi,%r15
test   %rsi,%rsi
je     1897 <INISaveString+0x697>
mov    %rdx,%r12
test   %rdx,%rdx
je     1897 <INISaveString+0x697>
mov    %rcx,%r13
test   %rcx,%rcx
je     1897 <INISaveString+0x697>
lea    0x200(%rsp),%rsi
call   10b0 <INIRemoveExt@plt>
mov    %eax,%ebp
test   %eax,%eax
js     1271 <INISaveString+0x71>
mov    %ebp,%edx
add    $0x1,%rdx
lea    0x100(%rsp),%rdi
lea    0x200(%rsp),%rsi
call   10a0 <memcpy@plt>
lea    0x200(%rsp),%rbx
mov    %rbx,%rdi
mov    %ebp,%esi
call   1110 <INIAddInExt@plt>
lea    0x100(%rsp),%rdi
mov    %ebp,%esi
call   1040 <INIAddOutExt@plt>
mov    %rbx,%rdi
call   10d0 <ActualFileOpenForRead@plt>
cmp    $0xffffffff,%eax
je     1396 <INISaveString+0x196>
mov    %eax,%r14d
mov    %eax,%edi
mov    %r15,%rsi
call   1100 <INIFindSection@plt>
test   %eax,%eax
js     141d <INISaveString+0x21d>
mov    %eax,%ebp
mov    %r14d,%edi
mov    %eax,%esi
call   1120 <ActualFileSeek@plt>
mov    %rsp,%rsi
mov    %r14d,%edi
call   10c0 <INIReadLine@plt>
mov    %eax,%ebx
add    %ebp,%ebx
mov    %r14d,%edi
mov    %r12,%rsi
xor    %edx,%edx
call   10e0 <INIFindKeyword@plt>
test   %eax,%eax
js     14c3 <INISaveString+0x2c3>
mov    %eax,%ebp
mov    %r13,%r15
lea    0x100(%rsp),%rdi
call   1090 <ActualFileOpenForWrite@plt>
cmp    $0xffffffff,%eax
je     1804 <INISaveString+0x604>
mov    %eax,%r13d
add    %ebp,%ebx
mov    %r14d,%edi
xor    %esi,%esi
call   1120 <ActualFileSeek@plt>
mov    %r14d,%edi
mov    %r13d,%esi
mov    %ebx,%edx
call   1060 <INICopy@plt>
test   %eax,%eax
jg     1875 <INISaveString+0x675>
mov    %rsp,%rbp
mov    %r14d,%edi
mov    %rbp,%rsi
call   10c0 <INIReadLine@plt>
lea    0xcc4(%rip),%rsi
xor    %ebx,%ebx
mov    %rbp,%rdi
mov    %r12,%rdx
mov    %r15,%rcx
xor    %eax,%eax
call   10f0 <sprintf@plt>
cmpb   $0x0,(%rsp,%rbx,1)
je     1864 <INISaveString+0x664>
cmpb   $0x0,0x1(%rsp,%rbx,1)
je     184e <INISaveString+0x64e>
cmpb   $0x0,0x2(%rsp,%rbx,1)
je     1854 <INISaveString+0x654>
cmpb   $0x0,0x3(%rsp,%rbx,1)
je     185a <INISaveString+0x65a>
cmpb   $0x0,0x4(%rsp,%rbx,1)
je     1860 <INISaveString+0x660>
add    $0x5,%rbx
cmp    $0xff,%rbx
jne    134e <INISaveString+0x14e>
jmp    17fd <INISaveString+0x5fd>
mov    %r13,%r14
lea    0x200(%rsp),%rdi
call   1090 <ActualFileOpenForWrite@plt>
cmp    $0xffffffff,%eax
je     1892 <INISaveString+0x692>
mov    %eax,%r13d
lea    0xc51(%rip),%rsi
xor    %ebp,%ebp
mov    %rsp,%rdi
mov    %r15,%rdx
xor    %eax,%eax
call   10f0 <sprintf@plt>
nopl   0x0(%rax,%rax,1)
cmpb   $0x0,(%rsp,%rbp,1)
je     1574 <INISaveString+0x374>
cmpb   $0x0,0x1(%rsp,%rbp,1)
je     155e <INISaveString+0x35e>
cmpb   $0x0,0x2(%rsp,%rbp,1)
je     1564 <INISaveString+0x364>
cmpb   $0x0,0x3(%rsp,%rbp,1)
je     156a <INISaveString+0x36a>
cmpb   $0x0,0x4(%rsp,%rbp,1)
je     1570 <INISaveString+0x370>
add    $0x5,%rbp
cmp    $0xff,%rbp
jne    13d0 <INISaveString+0x1d0>
mov    $0xff,%ebp
jmp    1574 <INISaveString+0x374>
lea    0x100(%rsp),%rdi
call   1090 <ActualFileOpenForWrite@plt>
cmp    $0xffffffff,%eax
je     1804 <INISaveString+0x604>
mov    %eax,%ebx
mov    %r13,%rbp
xor    %r13d,%r13d
mov    %r14d,%edi
xor    %esi,%esi
call   1120 <ActualFileSeek@plt>
mov    %r14d,%edi
mov    %ebx,%esi
mov    $0xfffffff,%edx
call   1060 <INICopy@plt>
lea    0xbad(%rip),%rsi
mov    %rsp,%rdi
mov    %r15,%rdx
xor    %eax,%eax
call   10f0 <sprintf@plt>
nopl   0x0(%rax,%rax,1)
cmpb   $0x0,(%rsp,%r13,1)
je     162e <INISaveString+0x42e>
cmpb   $0x0,0x1(%rsp,%r13,1)
je     160f <INISaveString+0x40f>
cmpb   $0x0,0x2(%rsp,%r13,1)
je     161e <INISaveString+0x41e>
cmpb   $0x0,0x3(%rsp,%r13,1)
je     1624 <INISaveString+0x424>
cmpb   $0x0,0x4(%rsp,%r13,1)
je     162a <INISaveString+0x42a>
add    $0x5,%r13
cmp    $0xff,%r13
jne    1470 <INISaveString+0x270>
mov    $0xff,%r13d
jmp    162e <INISaveString+0x42e>
mov    %r14d,%edi
mov    %ebx,%esi
call   1120 <ActualFileSeek@plt>
mov    %rsp,%rsi
mov    %r14d,%edi
call   10c0 <INIReadLine@plt>
xor    %ecx,%ecx
movzbl (%rsp,%rcx,1),%edx
test   %dl,%dl
je     16c1 <INISaveString+0x4c1>
cmp    $0x3d,%dl
je     16c1 <INISaveString+0x4c1>
movzbl 0x1(%rsp,%rcx,1),%edx
test   %dl,%dl
je     15fd <INISaveString+0x3fd>
cmp    $0x3d,%dl
je     15fd <INISaveString+0x3fd>
movzbl 0x2(%rsp,%rcx,1),%edx
test   %dl,%dl
je     1606 <INISaveString+0x406>
cmp    $0x3d,%dl
je     1606 <INISaveString+0x406>
movzbl 0x3(%rsp,%rcx,1),%edx
test   %dl,%dl
je     1615 <INISaveString+0x415>
cmp    $0x3d,%dl
je     1615 <INISaveString+0x415>
movzbl 0x4(%rsp,%rcx,1),%edx
test   %dl,%dl
je     16bd <INISaveString+0x4bd>
cmp    $0x3d,%dl
je     16bd <INISaveString+0x4bd>
add    $0x5,%rcx
cmp    $0xff,%rcx
jne    14da <INISaveString+0x2da>
mov    $0xff,%ecx
jmp    16c1 <INISaveString+0x4c1>
add    $0x1,%rbp
jmp    1574 <INISaveString+0x374>
add    $0x2,%rbp
jmp    1574 <INISaveString+0x374>
add    $0x3,%rbp
jmp    1574 <INISaveString+0x374>
add    $0x4,%rbp
mov    %rsp,%rdx
mov    %r13d,%edi
mov    %ebp,%esi
call   1050 <ActualFileWrite@plt>
cmp    %ebp,%eax
jge    1592 <INISaveString+0x392>
mov    %r13d,%edi
call   1070 <ActualFileClose@plt>
jmp    1844 <INISaveString+0x644>
lea    0xa67(%rip),%rsi
xor    %ebx,%ebx
mov    %rsp,%rdi
mov    %r12,%rdx
mov    %r14,%rcx
xor    %eax,%eax
call   10f0 <sprintf@plt>
nopl   0x0(%rax,%rax,1)
cmpb   $0x0,(%rsp,%rbx,1)
je     1827 <INISaveString+0x627>
cmpb   $0x0,0x1(%rsp,%rbx,1)
je     1811 <INISaveString+0x611>
cmpb   $0x0,0x2(%rsp,%rbx,1)
je     1817 <INISaveString+0x617>
cmpb   $0x0,0x3(%rsp,%rbx,1)
je     181d <INISaveString+0x61d>
cmpb   $0x0,0x4(%rsp,%rbx,1)
je     1823 <INISaveString+0x623>
add    $0x5,%rbx
cmp    $0xff,%rbx
jne    15b0 <INISaveString+0x3b0>
mov    $0xff,%ebx
jmp    1827 <INISaveString+0x627>
add    $0x1,%rcx
jmp    16c1 <INISaveString+0x4c1>
add    $0x2,%rcx
jmp    16c1 <INISaveString+0x4c1>
add    $0x1,%r13
jmp    162e <INISaveString+0x42e>
add    $0x3,%rcx
jmp    16c1 <INISaveString+0x4c1>
add    $0x2,%r13
jmp    162e <INISaveString+0x42e>
add    $0x3,%r13
jmp    162e <INISaveString+0x42e>
add    $0x4,%r13
mov    %rsp,%rdx
mov    %ebx,%edi
mov    %r13d,%esi
call   1050 <ActualFileWrite@plt>
cmp    %r13d,%eax
jge    164f <INISaveString+0x44f>
mov    %r14d,%edi
call   1070 <ActualFileClose@plt>
mov    %ebx,%edi
jmp    1880 <INISaveString+0x680>
mov    %ebx,%r15d
lea    0x9a7(%rip),%rsi
xor    %ebx,%ebx
mov    %rsp,%rdi
mov    %r12,%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   10f0 <sprintf@plt>
nopl   0x0(%rax,%rax,1)
cmpb   $0x0,(%rsp,%rbx,1)
je     18e1 <INISaveString+0x6e1>
cmpb   $0x0,0x1(%rsp,%rbx,1)
je     18cb <INISaveString+0x6cb>
cmpb   $0x0,0x2(%rsp,%rbx,1)
je     18d1 <INISaveString+0x6d1>
cmpb   $0x0,0x3(%rsp,%rbx,1)
je     18d7 <INISaveString+0x6d7>
cmpb   $0x0,0x4(%rsp,%rbx,1)
je     18dd <INISaveString+0x6dd>
add    $0x5,%rbx
cmp    $0xff,%rbx
jne    1670 <INISaveString+0x470>
mov    $0xff,%ebx
jmp    18e1 <INISaveString+0x6e1>
add    $0x4,%rcx
mov    %r13,%rbp
test   %eax,%eax
jle    177d <INISaveString+0x57d>
mov    %rsp,%r13
jmp    16e8 <INISaveString+0x4e8>
add    $0x1,%rcx
cs nopw 0x0(%rax,%rax,1)
nop
test   %eax,%eax
jle    177d <INISaveString+0x57d>
mov    %ebx,%edx
mov    %ecx,%ecx
cmpb   $0x3d,(%rsp,%rcx,1)
jne    177b <INISaveString+0x57b>
mov    %eax,%ebx
add    %edx,%ebx
mov    %r14d,%edi
mov    %r13,%rsi
call   10c0 <INIReadLine@plt>
xor    %ecx,%ecx
movzbl (%rsp,%rcx,1),%edx
test   %dl,%dl
je     16e0 <INISaveString+0x4e0>
cmp    $0x3d,%dl
je     16e0 <INISaveString+0x4e0>
movzbl 0x1(%rsp,%rcx,1),%edx
test   %dl,%dl
je     16d1 <INISaveString+0x4d1>
cmp    $0x3d,%dl
je     16d1 <INISaveString+0x4d1>
movzbl 0x2(%rsp,%rcx,1),%edx
test   %dl,%dl
je     1760 <INISaveString+0x560>
cmp    $0x3d,%dl
je     1760 <INISaveString+0x560>
movzbl 0x3(%rsp,%rcx,1),%edx
test   %dl,%dl
je     1769 <INISaveString+0x569>
cmp    $0x3d,%dl
je     1769 <INISaveString+0x569>
movzbl 0x4(%rsp,%rcx,1),%edx
test   %dl,%dl
je     1772 <INISaveString+0x572>
cmp    $0x3d,%dl
je     1772 <INISaveString+0x572>
add    $0x5,%rcx
cmp    $0xff,%rcx
jne    1707 <INISaveString+0x507>
mov    $0xff,%ecx
jmp    16e0 <INISaveString+0x4e0>
add    $0x2,%rcx
jmp    16e0 <INISaveString+0x4e0>
add    $0x3,%rcx
jmp    16e0 <INISaveString+0x4e0>
add    $0x4,%rcx
jmp    16e0 <INISaveString+0x4e0>
mov    %edx,%ebx
lea    0x100(%rsp),%rdi
call   1090 <ActualFileOpenForWrite@plt>
cmp    $0xffffffff,%eax
je     1804 <INISaveString+0x604>
mov    %eax,%r13d
mov    %r14d,%edi
xor    %esi,%esi
call   1120 <ActualFileSeek@plt>
mov    %r14d,%edi
mov    %r13d,%esi
mov    %ebx,%edx
call   1060 <INICopy@plt>
test   %eax,%eax
jg     1875 <INISaveString+0x675>
lea    0x848(%rip),%rsi
xor    %ebx,%ebx
mov    %rsp,%rdi
mov    %r12,%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   10f0 <sprintf@plt>
cmpb   $0x0,(%rsp,%rbx,1)
je     1864 <INISaveString+0x664>
cmpb   $0x0,0x1(%rsp,%rbx,1)
je     184e <INISaveString+0x64e>
cmpb   $0x0,0x2(%rsp,%rbx,1)
je     1854 <INISaveString+0x654>
cmpb   $0x0,0x3(%rsp,%rbx,1)
je     185a <INISaveString+0x65a>
cmpb   $0x0,0x4(%rsp,%rbx,1)
je     1860 <INISaveString+0x660>
add    $0x5,%rbx
cmp    $0xff,%rbx
jne    17ca <INISaveString+0x5ca>
mov    $0xff,%ebx
jmp    1864 <INISaveString+0x664>
mov    %r14d,%edi
call   1070 <ActualFileClose@plt>
jmp    1892 <INISaveString+0x692>
add    $0x1,%rbx
jmp    1827 <INISaveString+0x627>
add    $0x2,%rbx
jmp    1827 <INISaveString+0x627>
add    $0x3,%rbx
jmp    1827 <INISaveString+0x627>
add    $0x4,%rbx
mov    %rsp,%rdx
mov    %r13d,%edi
mov    %ebx,%esi
call   1050 <ActualFileWrite@plt>
mov    %eax,%ebp
mov    %r13d,%edi
call   1070 <ActualFileClose@plt>
xor    %eax,%eax
cmp    %ebx,%ebp
jge    1897 <INISaveString+0x697>
lea    0x200(%rsp),%rdi
jmp    188d <INISaveString+0x68d>
add    $0x1,%rbx
jmp    1864 <INISaveString+0x664>
add    $0x2,%rbx
jmp    1864 <INISaveString+0x664>
add    $0x3,%rbx
jmp    1864 <INISaveString+0x664>
add    $0x4,%rbx
mov    %rsp,%rdx
mov    %r13d,%edi
mov    %ebx,%esi
call   1050 <ActualFileWrite@plt>
cmp    %ebx,%eax
jge    18a9 <INISaveString+0x6a9>
mov    %r14d,%edi
call   1070 <ActualFileClose@plt>
mov    %r13d,%edi
call   1070 <ActualFileClose@plt>
lea    0x100(%rsp),%rdi
call   1080 <ActualFileDelete@plt>
mov    $0xffffffff,%eax
add    $0x308,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %r14d,%edi
mov    %r13d,%esi
mov    $0xfffffff,%edx
call   1060 <INICopy@plt>
mov    %r14d,%edi
call   1070 <ActualFileClose@plt>
mov    %r13d,%edi
call   1070 <ActualFileClose@plt>
jmp    190c <INISaveString+0x70c>
add    $0x1,%rbx
jmp    18e1 <INISaveString+0x6e1>
add    $0x2,%rbx
jmp    18e1 <INISaveString+0x6e1>
add    $0x3,%rbx
jmp    18e1 <INISaveString+0x6e1>
add    $0x4,%rbx
mov    %rsp,%rdx
mov    %r15d,%ebp
mov    %r15d,%edi
mov    %ebx,%esi
call   1050 <ActualFileWrite@plt>
mov    %eax,%r15d
mov    %r14d,%edi
call   1070 <ActualFileClose@plt>
mov    %ebp,%edi
call   1070 <ActualFileClose@plt>
cmp    %ebx,%r15d
jl     1885 <INISaveString+0x685>
lea    0x200(%rsp),%rbx
mov    %rbx,%rdi
call   1080 <ActualFileDelete@plt>
lea    0x100(%rsp),%rdi
mov    %rbx,%rsi
call   1030 <ActualFileRename@plt>
xor    %eax,%eax
jmp    1897 <INISaveString+0x697>

LLVM IR (-O0):
@.str = [7 x i8] c"[%s]\0D\0A\00"
@.str.1 = [8 x i8] c"%s=%s\0D\0A\00"
@.str.2 = [9 x i8] c"\0D\0A[%s]\0D\0A\00"
define i32 @INISaveString(i8* %0, i8* %1, i8* %2, i8* %3) {
%5 = alloca i32
%6 = alloca i8*
%7 = alloca i8*
%8 = alloca i8*
%9 = alloca i8*
%10 = alloca [256 x i8]
%11 = alloca [256 x i8]
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca [256 x i8]
store i8* %0, i8** %6
store i8* %1, i8** %7
store i8* %2, i8** %8
store i8* %3, i8** %9
%18 = load i8*, i8** %6
%19 = icmp eq i8* %18, null
br i1 %19, label %20, label %21
20: ; preds = %4
store i32 -1, i32* %5
br label %455
21: ; preds = %4
%22 = load i8*, i8** %7
%23 = icmp eq i8* %22, null
br i1 %23, label %24, label %25
24: ; preds = %21
store i32 -1, i32* %5
br label %455
25: ; preds = %21
%26 = load i8*, i8** %8
%27 = icmp eq i8* %26, null
br i1 %27, label %28, label %29
28: ; preds = %25
store i32 -1, i32* %5
br label %455
29: ; preds = %25
%30 = load i8*, i8** %9
%31 = icmp eq i8* %30, null
br i1 %31, label %32, label %33
32: ; preds = %29
store i32 -1, i32* %5
br label %455
33: ; preds = %29
%34 = load i8*, i8** %6
%35 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 0
%36 = call i32 @INIRemoveExt(i8* %34, i8* %35)
store i32 %36, i32* %12
store i32 0, i32* %15
br label %37
37: ; preds = %49, %33
%38 = load i32, i32* %15
%39 = load i32, i32* %12
%40 = icmp sle i32 %38, %39
br i1 %40, label %41, label %52
41: ; preds = %37
%42 = load i32, i32* %15
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 %43
%45 = load i8, i8* %44
%46 = load i32, i32* %15
%47 = sext i32 %46 to i64
%48 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 %47
store i8 %45, i8* %48
br label %49
49: ; preds = %41
%50 = load i32, i32* %15
%51 = add nsw i32 %50, 1
store i32 %51, i32* %15
br label %37
52: ; preds = %37
%53 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 0
%54 = load i32, i32* %12
%55 = call i32 @INIAddInExt(i8* %53, i32 %54)
%56 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%57 = load i32, i32* %12
%58 = call i32 @INIAddOutExt(i8* %56, i32 %57)
store i32 0, i32* %12
%59 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 0
%60 = call i32 @ActualFileOpenForRead(i8* %59)
store i32 %60, i32* %13
%61 = load i32, i32* %13
%62 = icmp eq i32 %61, -1
br i1 %62, label %63, label %135
63: ; preds = %52
%64 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 0
%65 = call i32 @ActualFileOpenForWrite(i8* %64)
store i32 %65, i32* %14
%66 = load i32, i32* %14
%67 = icmp eq i32 %66, -1
br i1 %67, label %68, label %69
68: ; preds = %63
store i32 -1, i32* %5
br label %455
69: ; preds = %63
%70 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%71 = load i8*, i8** %7
%72 = call i32 (i8*, i8*, i8*, ...) @sprintf(i8* %70, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i8* %71)
store i32 0, i32* %15
br label %73
73: ; preds = %85, %69
%74 = load i32, i32* %15
%75 = icmp slt i32 %74, 255
br i1 %75, label %76, label %83
76: ; preds = %73
%77 = load i32, i32* %15
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 %78
%80 = load i8, i8* %79
%81 = sext i8 %80 to i32
%82 = icmp ne i32 %81, 0
br label %83
83: ; preds = %76, %73
%84 = phi i1 [ false, %73 ], [ %82, %76 ]
br i1 %84, label %85, label %88
85: ; preds = %83
%86 = load i32, i32* %15
%87 = add nsw i32 %86, 1
store i32 %87, i32* %15
br label %73
88: ; preds = %83
%89 = load i32, i32* %14
%90 = load i32, i32* %15
%91 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%92 = call i32 @ActualFileWrite(i32 %89, i32 %90, i8* %91)
store i32 %92, i32* %16
%93 = load i32, i32* %16
%94 = load i32, i32* %15
%95 = icmp slt i32 %93, %94
br i1 %95, label %96, label %101
96: ; preds = %88
%97 = load i32, i32* %14
%98 = call i32 @ActualFileClose(i32 %97)
store i32 -1, i32* %14
%99 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 0
%100 = call i32 @ActualFileDelete(i8* %99)
store i32 -1, i32* %5
br label %455
101: ; preds = %88
%102 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%103 = load i8*, i8** %8
%104 = load i8*, i8** %9
%105 = call i32 (i8*, i8*, i8*, ...) @sprintf(i8* %102, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* %103, i8* %104)
store i32 0, i32* %15
br label %106
106: ; preds = %118, %101
%107 = load i32, i32* %15
%108 = icmp slt i32 %107, 255
br i1 %108, label %109, label %116
109: ; preds = %106
%110 = load i32, i32* %15
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 %111
%113 = load i8, i8* %112
%114 = sext i8 %113 to i32
%115 = icmp ne i32 %114, 0
br label %116
116: ; preds = %109, %106
%117 = phi i1 [ false, %106 ], [ %115, %109 ]
br i1 %117, label %118, label %121
118: ; preds = %116
%119 = load i32, i32* %15
%120 = add nsw i32 %119, 1
store i32 %120, i32* %15
br label %106
121: ; preds = %116
%122 = load i32, i32* %14
%123 = load i32, i32* %15
%124 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%125 = call i32 @ActualFileWrite(i32 %122, i32 %123, i8* %124)
store i32 %125, i32* %16
%126 = load i32, i32* %14
%127 = call i32 @ActualFileClose(i32 %126)
store i32 -1, i32* %14
%128 = load i32, i32* %16
%129 = load i32, i32* %15
%130 = icmp slt i32 %128, %129
br i1 %130, label %131, label %134
131: ; preds = %121
%132 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 0
%133 = call i32 @ActualFileDelete(i8* %132)
store i32 -1, i32* %5
br label %455
134: ; preds = %121
store i32 0, i32* %5
br label %455
135: ; preds = %52
%136 = load i32, i32* %13
%137 = load i8*, i8** %7
%138 = call i32 @INIFindSection(i32 %136, i8* %137)
store i32 %138, i32* %16
%139 = load i32, i32* %16
%140 = icmp slt i32 %139, 0
br i1 %140, label %141, label %229
141: ; preds = %135
%142 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%143 = call i32 @ActualFileOpenForWrite(i8* %142)
store i32 %143, i32* %14
%144 = load i32, i32* %14
%145 = icmp eq i32 %144, -1
br i1 %145, label %146, label %149
146: ; preds = %141
%147 = load i32, i32* %13
%148 = call i32 @ActualFileClose(i32 %147)
store i32 -1, i32* %13
store i32 -1, i32* %5
br label %455
149: ; preds = %141
%150 = load i32, i32* %13
%151 = call i32 @ActualFileSeek(i32 %150, i32 0)
%152 = load i32, i32* %13
%153 = load i32, i32* %14
%154 = call i32 @INICopy(i32 %152, i32 %153, i32 268435455)
%155 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%156 = load i8*, i8** %7
%157 = call i32 (i8*, i8*, i8*, ...) @sprintf(i8* %155, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0), i8* %156)
store i32 0, i32* %15
br label %158
158: ; preds = %170, %149
%159 = load i32, i32* %15
%160 = icmp slt i32 %159, 255
br i1 %160, label %161, label %168
161: ; preds = %158
%162 = load i32, i32* %15
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 %163
%165 = load i8, i8* %164
%166 = sext i8 %165 to i32
%167 = icmp ne i32 %166, 0
br label %168
168: ; preds = %161, %158
%169 = phi i1 [ false, %158 ], [ %167, %161 ]
br i1 %169, label %170, label %173
170: ; preds = %168
%171 = load i32, i32* %15
%172 = add nsw i32 %171, 1
store i32 %172, i32* %15
br label %158
173: ; preds = %168
%174 = load i32, i32* %14
%175 = load i32, i32* %15
%176 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%177 = call i32 @ActualFileWrite(i32 %174, i32 %175, i8* %176)
store i32 %177, i32* %16
%178 = load i32, i32* %16
%179 = load i32, i32* %15
%180 = icmp slt i32 %178, %179
br i1 %180, label %181, label %188
181: ; preds = %173
%182 = load i32, i32* %13
%183 = call i32 @ActualFileClose(i32 %182)
store i32 -1, i32* %13
%184 = load i32, i32* %14
%185 = call i32 @ActualFileClose(i32 %184)
store i32 -1, i32* %14
%186 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%187 = call i32 @ActualFileDelete(i8* %186)
store i32 -1, i32* %5
br label %455
188: ; preds = %173
%189 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%190 = load i8*, i8** %8
%191 = load i8*, i8** %9
%192 = call i32 (i8*, i8*, i8*, ...) @sprintf(i8* %189, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* %190, i8* %191)
store i32 0, i32* %15
br label %193
193: ; preds = %205, %188
%194 = load i32, i32* %15
%195 = icmp slt i32 %194, 255
br i1 %195, label %196, label %203
196: ; preds = %193
%197 = load i32, i32* %15
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 %198
%200 = load i8, i8* %199
%201 = sext i8 %200 to i32
%202 = icmp ne i32 %201, 0
br label %203
203: ; preds = %196, %193
%204 = phi i1 [ false, %193 ], [ %202, %196 ]
br i1 %204, label %205, label %208
205: ; preds = %203
%206 = load i32, i32* %15
%207 = add nsw i32 %206, 1
store i32 %207, i32* %15
br label %193
208: ; preds = %203
%209 = load i32, i32* %14
%210 = load i32, i32* %15
%211 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%212 = call i32 @ActualFileWrite(i32 %209, i32 %210, i8* %211)
store i32 %212, i32* %16
%213 = load i32, i32* %13
%214 = call i32 @ActualFileClose(i32 %213)
store i32 -1, i32* %13
%215 = load i32, i32* %14
%216 = call i32 @ActualFileClose(i32 %215)
store i32 -1, i32* %14
%217 = load i32, i32* %16
%218 = load i32, i32* %15
%219 = icmp slt i32 %217, %218
br i1 %219, label %220, label %223
220: ; preds = %208
%221 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%222 = call i32 @ActualFileDelete(i8* %221)
store i32 -1, i32* %5
br label %455
223: ; preds = %208
%224 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 0
%225 = call i32 @ActualFileDelete(i8* %224)
%226 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%227 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 0
%228 = call i32 @ActualFileRename(i8* %226, i8* %227)
store i32 0, i32* %5
br label %455
229: ; preds = %135
%230 = load i32, i32* %16
store i32 %230, i32* %12
%231 = load i32, i32* %13
%232 = load i32, i32* %12
%233 = call i32 @ActualFileSeek(i32 %231, i32 %232)
%234 = load i32, i32* %13
%235 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%236 = call i32 @INIReadLine(i32 %234, i8* %235)
%237 = load i32, i32* %12
%238 = add nsw i32 %237, %236
store i32 %238, i32* %12
%239 = load i32, i32* %13
%240 = load i8*, i8** %8
%241 = call i32 @INIFindKeyword(i32 %239, i8* %240, i32* null)
store i32 %241, i32* %16
%242 = load i32, i32* %16
%243 = icmp slt i32 %242, 0
br i1 %243, label %244, label %376
244: ; preds = %229
%245 = load i32, i32* %13
%246 = load i32, i32* %12
%247 = call i32 @ActualFileSeek(i32 %245, i32 %246)
%248 = load i32, i32* %13
%249 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%250 = call i32 @INIReadLine(i32 %248, i8* %249)
store i32 %250, i32* %16
store i32 0, i32* %15
br label %251
251: ; preds = %270, %244
%252 = load i32, i32* %15
%253 = icmp slt i32 %252, 255
br i1 %253, label %254, label %268
254: ; preds = %251
%255 = load i32, i32* %15
%256 = sext i32 %255 to i64
%257 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 %256
%258 = load i8, i8* %257
%259 = sext i8 %258 to i32
%260 = icmp ne i32 %259, 0
br i1 %260, label %261, label %268
261: ; preds = %254
%262 = load i32, i32* %15
%263 = sext i32 %262 to i64
%264 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 %263
%265 = load i8, i8* %264
%266 = sext i8 %265 to i32
%267 = icmp ne i32 %266, 61
br label %268
268: ; preds = %261, %254, %251
%269 = phi i1 [ false, %254 ], [ false, %251 ], [ %267, %261 ]
br i1 %269, label %270, label %273
270: ; preds = %268
%271 = load i32, i32* %15
%272 = add nsw i32 %271, 1
store i32 %272, i32* %15
br label %251
273: ; preds = %268
br label %274
274: ; preds = %315, %273
%275 = load i32, i32* %16
%276 = icmp sgt i32 %275, 0
br i1 %276, label %277, label %284
277: ; preds = %274
%278 = load i32, i32* %15
%279 = sext i32 %278 to i64
%280 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 %279
%281 = load i8, i8* %280
%282 = sext i8 %281 to i32
%283 = icmp eq i32 %282, 61
br label %284
284: ; preds = %277, %274
%285 = phi i1 [ false, %274 ], [ %283, %277 ]
br i1 %285, label %286, label %316
286: ; preds = %284
%287 = load i32, i32* %16
%288 = load i32, i32* %12
%289 = add nsw i32 %288, %287
store i32 %289, i32* %12
%290 = load i32, i32* %13
%291 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%292 = call i32 @INIReadLine(i32 %290, i8* %291)
store i32 %292, i32* %16
store i32 0, i32* %15
br label %293
293: ; preds = %312, %286
%294 = load i32, i32* %15
%295 = icmp slt i32 %294, 255
br i1 %295, label %296, label %310
296: ; preds = %293
%297 = load i32, i32* %15
%298 = sext i32 %297 to i64
%299 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 %298
%300 = load i8, i8* %299
%301 = sext i8 %300 to i32
%302 = icmp ne i32 %301, 0
br i1 %302, label %303, label %310
303: ; preds = %296
%304 = load i32, i32* %15
%305 = sext i32 %304 to i64
%306 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 %305
%307 = load i8, i8* %306
%308 = sext i8 %307 to i32
%309 = icmp ne i32 %308, 61
br label %310
310: ; preds = %303, %296, %293
%311 = phi i1 [ false, %296 ], [ false, %293 ], [ %309, %303 ]
br i1 %311, label %312, label %315
312: ; preds = %310
%313 = load i32, i32* %15
%314 = add nsw i32 %313, 1
store i32 %314, i32* %15
br label %293
315: ; preds = %310
br label %274
316: ; preds = %284
%317 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%318 = call i32 @ActualFileOpenForWrite(i8* %317)
store i32 %318, i32* %14
%319 = load i32, i32* %14
%320 = icmp eq i32 %319, -1
br i1 %320, label %321, label %324
321: ; preds = %316
%322 = load i32, i32* %13
%323 = call i32 @ActualFileClose(i32 %322)
store i32 -1, i32* %13
store i32 -1, i32* %5
br label %455
324: ; preds = %316
%325 = load i32, i32* %13
%326 = call i32 @ActualFileSeek(i32 %325, i32 0)
%327 = load i32, i32* %13
%328 = load i32, i32* %14
%329 = load i32, i32* %12
%330 = call i32 @INICopy(i32 %327, i32 %328, i32 %329)
store i32 %330, i32* %16
%331 = load i32, i32* %16
%332 = icmp sgt i32 %331, 0
br i1 %332, label %333, label %340
333: ; preds = %324
%334 = load i32, i32* %13
%335 = call i32 @ActualFileClose(i32 %334)
store i32 -1, i32* %13
%336 = load i32, i32* %14
%337 = call i32 @ActualFileClose(i32 %336)
store i32 -1, i32* %14
%338 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%339 = call i32 @ActualFileDelete(i8* %338)
store i32 -1, i32* %5
br label %455
340: ; preds = %324
%341 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%342 = load i8*, i8** %8
%343 = load i8*, i8** %9
%344 = call i32 (i8*, i8*, i8*, ...) @sprintf(i8* %341, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* %342, i8* %343)
store i32 0, i32* %15
br label %345
345: ; preds = %357, %340
%346 = load i32, i32* %15
%347 = icmp slt i32 %346, 255
br i1 %347, label %348, label %355
348: ; preds = %345
%349 = load i32, i32* %15
%350 = sext i32 %349 to i64
%351 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 %350
%352 = load i8, i8* %351
%353 = sext i8 %352 to i32
%354 = icmp ne i32 %353, 0
br label %355
355: ; preds = %348, %345
%356 = phi i1 [ false, %345 ], [ %354, %348 ]
br i1 %356, label %357, label %360
357: ; preds = %355
%358 = load i32, i32* %15
%359 = add nsw i32 %358, 1
store i32 %359, i32* %15
br label %345
360: ; preds = %355
%361 = load i32, i32* %14
%362 = load i32, i32* %15
%363 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%364 = call i32 @ActualFileWrite(i32 %361, i32 %362, i8* %363)
store i32 %364, i32* %16
%365 = load i32, i32* %16
%366 = load i32, i32* %15
%367 = icmp slt i32 %365, %366
br i1 %367, label %368, label %375
368: ; preds = %360
%369 = load i32, i32* %13
%370 = call i32 @ActualFileClose(i32 %369)
store i32 -1, i32* %13
%371 = load i32, i32* %14
%372 = call i32 @ActualFileClose(i32 %371)
store i32 -1, i32* %14
%373 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%374 = call i32 @ActualFileDelete(i8* %373)
store i32 -1, i32* %5
br label %455
375: ; preds = %360
br label %442
376: ; preds = %229
%377 = load i32, i32* %16
%378 = load i32, i32* %12
%379 = add nsw i32 %378, %377
store i32 %379, i32* %12
%380 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%381 = call i32 @ActualFileOpenForWrite(i8* %380)
store i32 %381, i32* %14
%382 = load i32, i32* %14
%383 = icmp eq i32 %382, -1
br i1 %383, label %384, label %387
384: ; preds = %376
%385 = load i32, i32* %13
%386 = call i32 @ActualFileClose(i32 %385)
store i32 -1, i32* %13
store i32 -1, i32* %5
br label %455
387: ; preds = %376
%388 = load i32, i32* %13
%389 = call i32 @ActualFileSeek(i32 %388, i32 0)
%390 = load i32, i32* %13
%391 = load i32, i32* %14
%392 = load i32, i32* %12
%393 = call i32 @INICopy(i32 %390, i32 %391, i32 %392)
store i32 %393, i32* %16
%394 = load i32, i32* %16
%395 = icmp sgt i32 %394, 0
br i1 %395, label %396, label %403
396: ; preds = %387
%397 = load i32, i32* %13
%398 = call i32 @ActualFileClose(i32 %397)
store i32 -1, i32* %13
%399 = load i32, i32* %14
%400 = call i32 @ActualFileClose(i32 %399)
store i32 -1, i32* %14
%401 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%402 = call i32 @ActualFileDelete(i8* %401)
store i32 -1, i32* %5
br label %455
403: ; preds = %387
%404 = load i32, i32* %13
%405 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%406 = call i32 @INIReadLine(i32 %404, i8* %405)
%407 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%408 = load i8*, i8** %8
%409 = load i8*, i8** %9
%410 = call i32 (i8*, i8*, i8*, ...) @sprintf(i8* %407, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* %408, i8* %409)
store i32 0, i32* %15
br label %411
411: ; preds = %423, %403
%412 = load i32, i32* %15
%413 = icmp slt i32 %412, 255
br i1 %413, label %414, label %421
414: ; preds = %411
%415 = load i32, i32* %15
%416 = sext i32 %415 to i64
%417 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 %416
%418 = load i8, i8* %417
%419 = sext i8 %418 to i32
%420 = icmp ne i32 %419, 0
br label %421
421: ; preds = %414, %411
%422 = phi i1 [ false, %411 ], [ %420, %414 ]
br i1 %422, label %423, label %426
423: ; preds = %421
%424 = load i32, i32* %15
%425 = add nsw i32 %424, 1
store i32 %425, i32* %15
br label %411
426: ; preds = %421
%427 = load i32, i32* %14
%428 = load i32, i32* %15
%429 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%430 = call i32 @ActualFileWrite(i32 %427, i32 %428, i8* %429)
store i32 %430, i32* %16
%431 = load i32, i32* %16
%432 = load i32, i32* %15
%433 = icmp slt i32 %431, %432
br i1 %433, label %434, label %441
434: ; preds = %426
%435 = load i32, i32* %13
%436 = call i32 @ActualFileClose(i32 %435)
store i32 -1, i32* %13
%437 = load i32, i32* %14
%438 = call i32 @ActualFileClose(i32 %437)
store i32 -1, i32* %14
%439 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%440 = call i32 @ActualFileDelete(i8* %439)
store i32 -1, i32* %5
br label %455
441: ; preds = %426
br label %442
442: ; preds = %441, %375
%443 = load i32, i32* %13
%444 = load i32, i32* %14
%445 = call i32 @INICopy(i32 %443, i32 %444, i32 268435455)
%446 = load i32, i32* %13
%447 = call i32 @ActualFileClose(i32 %446)
store i32 -1, i32* %13
%448 = load i32, i32* %14
%449 = call i32 @ActualFileClose(i32 %448)
store i32 -1, i32* %14
%450 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 0
%451 = call i32 @ActualFileDelete(i8* %450)
%452 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%453 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 0
%454 = call i32 @ActualFileRename(i8* %452, i8* %453)
store i32 0, i32* %5
br label %455
455: ; preds = %442, %434, %396, %384, %368, %333, %321, %223, %220, %181, %146, %134, %131, %96, %68, %32, %28, %24, %20
%456 = load i32, i32* %5
ret i32 %456
}

LLVM IR (-O2):
@.str = [7 x i8] c"[%s]\0D\0A\00"
@.str.1 = [8 x i8] c"%s=%s\0D\0A\00"
@.str.2 = [9 x i8] c"\0D\0A[%s]\0D\0A\00"
define i32 @INISaveString(i8* %0, i8* %1, i8* %2, i8* %3) {
%5 = alloca [256 x i8]
%6 = getelementptr inbounds [256 x i8], [256 x i8]* %5, i64 0, i64 0
%7 = alloca [256 x i8]
%8 = getelementptr inbounds [256 x i8], [256 x i8]* %7, i64 0, i64 0
%9 = alloca [256 x i8]
%10 = getelementptr inbounds [256 x i8], [256 x i8]* %5, i64 0, i64 0
%11 = getelementptr inbounds [256 x i8], [256 x i8]* %7, i64 0, i64 0
%12 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%13 = icmp eq i8* %0, null
%14 = icmp eq i8* %1, null
%15 = or i1 %13, %14
%16 = icmp eq i8* %2, null
%17 = or i1 %15, %16
%18 = icmp eq i8* %3, null
%19 = or i1 %17, %18
br i1 %19, label %399, label %20
20: ; preds = %4
%21 = call i32 @INIRemoveExt(i8* %0, i8* %10)
%22 = icmp slt i32 %21, 0
br i1 %22, label %26, label %23
23: ; preds = %20
%24 = zext i32 %21 to i64
%25 = add nuw nsw i64 %24, 1
br label %26
26: ; preds = %23, %20
%27 = call i32 @INIAddInExt(i8* %10, i32 %21)
%28 = call i32 @INIAddOutExt(i8* %11, i32 %21)
%29 = call i32 @ActualFileOpenForRead(i8* %10)
%30 = icmp eq i32 %29, -1
br i1 %30, label %31, label %114
31: ; preds = %26
%32 = call i32 @ActualFileOpenForWrite(i8* %10)
%33 = icmp eq i32 %32, -1
br i1 %33, label %399, label %34
34: ; preds = %31
%35 = call i32 (i8*, i8*, i8*, ...) @sprintf(i8* %12, i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i8* %1)
br label %36
36: ; preds = %61, %34
%37 = phi i64 [ 0, %34 ], [ %62, %61 ]
%38 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %37
%39 = load i8, i8* %38
%40 = icmp eq i8 %39, 0
br i1 %40, label %64, label %41
41: ; preds = %36
%42 = add nuw nsw i64 %37, 1
%43 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %42
%44 = load i8, i8* %43
%45 = icmp eq i8 %44, 0
br i1 %45, label %64, label %46
46: ; preds = %41
%47 = add nuw nsw i64 %37, 2
%48 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %47
%49 = load i8, i8* %48
%50 = icmp eq i8 %49, 0
br i1 %50, label %64, label %51
51: ; preds = %46
%52 = add nuw nsw i64 %37, 3
%53 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %52
%54 = load i8, i8* %53
%55 = icmp eq i8 %54, 0
br i1 %55, label %64, label %56
56: ; preds = %51
%57 = add nuw nsw i64 %37, 4
%58 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %57
%59 = load i8, i8* %58
%60 = icmp eq i8 %59, 0
br i1 %60, label %64, label %61
61: ; preds = %56
%62 = add nuw nsw i64 %37, 5
%63 = icmp eq i64 %62, 255
br i1 %63, label %67, label %36
64: ; preds = %56, %51, %46, %41, %36
%65 = phi i64 [ %37, %36 ], [ %42, %41 ], [ %47, %46 ], [ %52, %51 ], [ %57, %56 ]
%66 = trunc i64 %65 to i32
br label %67
67: ; preds = %61, %64
%68 = phi i32 [ %66, %64 ], [ 255, %61 ]
%69 = call i32 @ActualFileWrite(i32 %32, i32 %68, i8* %12)
%70 = icmp slt i32 %69, %68
br i1 %70, label %71, label %74
71: ; preds = %67
%72 = call i32 @ActualFileClose(i32 %32)
%73 = call i32 @ActualFileDelete(i8* %10)
br label %399
74: ; preds = %67
%75 = call i32 (i8*, i8*, i8*, ...) @sprintf(i8* %12, i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* %2, i8* %3)
br label %76
76: ; preds = %101, %74
%77 = phi i64 [ 0, %74 ], [ %102, %101 ]
%78 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %77
%79 = load i8, i8* %78
%80 = icmp eq i8 %79, 0
br i1 %80, label %104, label %81
81: ; preds = %76
%82 = add nuw nsw i64 %77, 1
%83 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %82
%84 = load i8, i8* %83
%85 = icmp eq i8 %84, 0
br i1 %85, label %104, label %86
86: ; preds = %81
%87 = add nuw nsw i64 %77, 2
%88 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %87
%89 = load i8, i8* %88
%90 = icmp eq i8 %89, 0
br i1 %90, label %104, label %91
91: ; preds = %86
%92 = add nuw nsw i64 %77, 3
%93 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %92
%94 = load i8, i8* %93
%95 = icmp eq i8 %94, 0
br i1 %95, label %104, label %96
96: ; preds = %91
%97 = add nuw nsw i64 %77, 4
%98 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %97
%99 = load i8, i8* %98
%100 = icmp eq i8 %99, 0
br i1 %100, label %104, label %101
101: ; preds = %96
%102 = add nuw nsw i64 %77, 5
%103 = icmp eq i64 %102, 255
br i1 %103, label %107, label %76
104: ; preds = %96, %91, %86, %81, %76
%105 = phi i64 [ %77, %76 ], [ %82, %81 ], [ %87, %86 ], [ %92, %91 ], [ %97, %96 ]
%106 = trunc i64 %105 to i32
br label %107
107: ; preds = %101, %104
%108 = phi i32 [ %106, %104 ], [ 255, %101 ]
%109 = call i32 @ActualFileWrite(i32 %32, i32 %108, i8* %12)
%110 = call i32 @ActualFileClose(i32 %32)
%111 = icmp slt i32 %109, %108
br i1 %111, label %112, label %399
112: ; preds = %107
%113 = call i32 @ActualFileDelete(i8* %10)
br label %399
114: ; preds = %26
%115 = call i32 @INIFindSection(i32 %29, i8* %1)
%116 = icmp slt i32 %115, 0
br i1 %116, label %117, label %209
117: ; preds = %114
%118 = call i32 @ActualFileOpenForWrite(i8* %11)
%119 = icmp eq i32 %118, -1
br i1 %119, label %120, label %122
120: ; preds = %117
%121 = call i32 @ActualFileClose(i32 %29)
br label %399
122: ; preds = %117
%123 = call i32 @ActualFileSeek(i32 %29, i32 0)
%124 = call i32 @INICopy(i32 %29, i32 %118, i32 268435455)
%125 = call i32 (i8*, i8*, i8*, ...) @sprintf(i8* %12, i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0), i8* %1)
br label %126
126: ; preds = %151, %122
%127 = phi i64 [ 0, %122 ], [ %152, %151 ]
%128 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %127
%129 = load i8, i8* %128
%130 = icmp eq i8 %129, 0
br i1 %130, label %154, label %131
131: ; preds = %126
%132 = add nuw nsw i64 %127, 1
%133 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %132
%134 = load i8, i8* %133
%135 = icmp eq i8 %134, 0
br i1 %135, label %154, label %136
136: ; preds = %131
%137 = add nuw nsw i64 %127, 2
%138 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %137
%139 = load i8, i8* %138
%140 = icmp eq i8 %139, 0
br i1 %140, label %154, label %141
141: ; preds = %136
%142 = add nuw nsw i64 %127, 3
%143 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %142
%144 = load i8, i8* %143
%145 = icmp eq i8 %144, 0
br i1 %145, label %154, label %146
146: ; preds = %141
%147 = add nuw nsw i64 %127, 4
%148 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %147
%149 = load i8, i8* %148
%150 = icmp eq i8 %149, 0
br i1 %150, label %154, label %151
151: ; preds = %146
%152 = add nuw nsw i64 %127, 5
%153 = icmp eq i64 %152, 255
br i1 %153, label %157, label %126
154: ; preds = %146, %141, %136, %131, %126
%155 = phi i64 [ %127, %126 ], [ %132, %131 ], [ %137, %136 ], [ %142, %141 ], [ %147, %146 ]
%156 = trunc i64 %155 to i32
br label %157
157: ; preds = %151, %154
%158 = phi i32 [ %156, %154 ], [ 255, %151 ]
%159 = call i32 @ActualFileWrite(i32 %118, i32 %158, i8* %12)
%160 = icmp slt i32 %159, %158
br i1 %160, label %161, label %165
161: ; preds = %157
%162 = call i32 @ActualFileClose(i32 %29)
%163 = call i32 @ActualFileClose(i32 %118)
%164 = call i32 @ActualFileDelete(i8* %11)
br label %399
165: ; preds = %157
%166 = call i32 (i8*, i8*, i8*, ...) @sprintf(i8* %12, i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* %2, i8* %3)
br label %167
167: ; preds = %192, %165
%168 = phi i64 [ 0, %165 ], [ %193, %192 ]
%169 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %168
%170 = load i8, i8* %169
%171 = icmp eq i8 %170, 0
br i1 %171, label %195, label %172
172: ; preds = %167
%173 = add nuw nsw i64 %168, 1
%174 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %173
%175 = load i8, i8* %174
%176 = icmp eq i8 %175, 0
br i1 %176, label %195, label %177
177: ; preds = %172
%178 = add nuw nsw i64 %168, 2
%179 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %178
%180 = load i8, i8* %179
%181 = icmp eq i8 %180, 0
br i1 %181, label %195, label %182
182: ; preds = %177
%183 = add nuw nsw i64 %168, 3
%184 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %183
%185 = load i8, i8* %184
%186 = icmp eq i8 %185, 0
br i1 %186, label %195, label %187
187: ; preds = %182
%188 = add nuw nsw i64 %168, 4
%189 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %188
%190 = load i8, i8* %189
%191 = icmp eq i8 %190, 0
br i1 %191, label %195, label %192
192: ; preds = %187
%193 = add nuw nsw i64 %168, 5
%194 = icmp eq i64 %193, 255
br i1 %194, label %198, label %167
195: ; preds = %187, %182, %177, %172, %167
%196 = phi i64 [ %168, %167 ], [ %173, %172 ], [ %178, %177 ], [ %183, %182 ], [ %188, %187 ]
%197 = trunc i64 %196 to i32
br label %198
198: ; preds = %192, %195
%199 = phi i32 [ %197, %195 ], [ 255, %192 ]
%200 = call i32 @ActualFileWrite(i32 %118, i32 %199, i8* %12)
%201 = call i32 @ActualFileClose(i32 %29)
%202 = call i32 @ActualFileClose(i32 %118)
%203 = icmp slt i32 %200, %199
br i1 %203, label %204, label %206
204: ; preds = %198
%205 = call i32 @ActualFileDelete(i8* %11)
br label %399
206: ; preds = %198
%207 = call i32 @ActualFileDelete(i8* %10)
%208 = call i32 @ActualFileRename(i8* %11, i8* %10)
br label %399
209: ; preds = %114
%210 = call i32 @ActualFileSeek(i32 %29, i32 %115)
%211 = call i32 @INIReadLine(i32 %29, i8* %12)
%212 = add nsw i32 %211, %115
%213 = call i32 @INIFindKeyword(i32 %29, i8* %2, i32* null)
%214 = icmp slt i32 %213, 0
br i1 %214, label %215, label %336
215: ; preds = %209
%216 = call i32 @ActualFileSeek(i32 %29, i32 %212)
%217 = call i32 @INIReadLine(i32 %29, i8* %12)
br label %218
218: ; preds = %238, %215
%219 = phi i64 [ 0, %215 ], [ %239, %238 ]
%220 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %219
%221 = load i8, i8* %220
switch i8 %221, label %222 [
i8 0, label %241
i8 61, label %241
]
222: ; preds = %218
%223 = add nuw nsw i64 %219, 1
%224 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %223
%225 = load i8, i8* %224
switch i8 %225, label %226 [
i8 0, label %241
i8 61, label %241
]
226: ; preds = %222
%227 = add nuw nsw i64 %219, 2
%228 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %227
%229 = load i8, i8* %228
switch i8 %229, label %230 [
i8 0, label %241
i8 61, label %241
]
230: ; preds = %226
%231 = add nuw nsw i64 %219, 3
%232 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %231
%233 = load i8, i8* %232
switch i8 %233, label %234 [
i8 0, label %241
i8 61, label %241
]
234: ; preds = %230
%235 = add nuw nsw i64 %219, 4
%236 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %235
%237 = load i8, i8* %236
switch i8 %237, label %238 [
i8 0, label %241
i8 61, label %241
]
238: ; preds = %234
%239 = add nuw nsw i64 %219, 5
%240 = icmp eq i64 %239, 255
br i1 %240, label %241, label %218
241: ; preds = %238, %234, %234, %230, %230, %226, %226, %222, %222, %218, %218
%242 = phi i64 [ %219, %218 ], [ %219, %218 ], [ %223, %222 ], [ %223, %222 ], [ %227, %226 ], [ %227, %226 ], [ %231, %230 ], [ %231, %230 ], [ %235, %234 ], [ %235, %234 ], [ 255, %238 ]
%243 = icmp sgt i32 %217, 0
br i1 %243, label %244, label %281
244: ; preds = %241, %278
%245 = phi i32 [ %254, %278 ], [ %217, %241 ]
%246 = phi i64 [ %279, %278 ], [ %242, %241 ]
%247 = phi i32 [ %253, %278 ], [ %212, %241 ]
%248 = and i64 %246, 4294967295
%249 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %248
%250 = load i8, i8* %249
%251 = icmp eq i8 %250, 61
br i1 %251, label %252, label %281
252: ; preds = %244
%253 = add nsw i32 %245, %247
%254 = call i32 @INIReadLine(i32 %29, i8* %12)
br label %255
255: ; preds = %275, %252
%256 = phi i64 [ 0, %252 ], [ %276, %275 ]
%257 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %256
%258 = load i8, i8* %257
switch i8 %258, label %259 [
i8 0, label %278
i8 61, label %278
]
259: ; preds = %255
%260 = add nuw nsw i64 %256, 1
%261 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %260
%262 = load i8, i8* %261
switch i8 %262, label %263 [
i8 0, label %278
i8 61, label %278
]
263: ; preds = %259
%264 = add nuw nsw i64 %256, 2
%265 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %264
%266 = load i8, i8* %265
switch i8 %266, label %267 [
i8 0, label %278
i8 61, label %278
]
267: ; preds = %263
%268 = add nuw nsw i64 %256, 3
%269 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %268
%270 = load i8, i8* %269
switch i8 %270, label %271 [
i8 0, label %278
i8 61, label %278
]
271: ; preds = %267
%272 = add nuw nsw i64 %256, 4
%273 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %272
%274 = load i8, i8* %273
switch i8 %274, label %275 [
i8 0, label %278
i8 61, label %278
]
275: ; preds = %271
%276 = add nuw nsw i64 %256, 5
%277 = icmp eq i64 %276, 255
br i1 %277, label %278, label %255
278: ; preds = %275, %271, %271, %267, %267, %263, %263, %259, %259, %255, %255
%279 = phi i64 [ %256, %255 ], [ %256, %255 ], [ %260, %259 ], [ %260, %259 ], [ %264, %263 ], [ %264, %263 ], [ %268, %267 ], [ %268, %267 ], [ %272, %271 ], [ %272, %271 ], [ 255, %275 ]
%280 = icmp sgt i32 %254, 0
br i1 %280, label %244, label %281
281: ; preds = %244, %278, %241
%282 = phi i32 [ %212, %241 ], [ %253, %278 ], [ %247, %244 ]
%283 = call i32 @ActualFileOpenForWrite(i8* %11)
%284 = icmp eq i32 %283, -1
br i1 %284, label %285, label %287
285: ; preds = %281
%286 = call i32 @ActualFileClose(i32 %29)
br label %399
287: ; preds = %281
%288 = call i32 @ActualFileSeek(i32 %29, i32 0)
%289 = call i32 @INICopy(i32 %29, i32 %283, i32 %282)
%290 = icmp sgt i32 %289, 0
br i1 %290, label %291, label %295
291: ; preds = %287
%292 = call i32 @ActualFileClose(i32 %29)
%293 = call i32 @ActualFileClose(i32 %283)
%294 = call i32 @ActualFileDelete(i8* %11)
br label %399
295: ; preds = %287
%296 = call i32 (i8*, i8*, i8*, ...) @sprintf(i8* %12, i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* %2, i8* %3)
br label %297
297: ; preds = %322, %295
%298 = phi i64 [ 0, %295 ], [ %323, %322 ]
%299 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %298
%300 = load i8, i8* %299
%301 = icmp eq i8 %300, 0
br i1 %301, label %325, label %302
302: ; preds = %297
%303 = add nuw nsw i64 %298, 1
%304 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %303
%305 = load i8, i8* %304
%306 = icmp eq i8 %305, 0
br i1 %306, label %325, label %307
307: ; preds = %302
%308 = add nuw nsw i64 %298, 2
%309 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %308
%310 = load i8, i8* %309
%311 = icmp eq i8 %310, 0
br i1 %311, label %325, label %312
312: ; preds = %307
%313 = add nuw nsw i64 %298, 3
%314 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %313
%315 = load i8, i8* %314
%316 = icmp eq i8 %315, 0
br i1 %316, label %325, label %317
317: ; preds = %312
%318 = add nuw nsw i64 %298, 4
%319 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %318
%320 = load i8, i8* %319
%321 = icmp eq i8 %320, 0
br i1 %321, label %325, label %322
322: ; preds = %317
%323 = add nuw nsw i64 %298, 5
%324 = icmp eq i64 %323, 255
br i1 %324, label %328, label %297
325: ; preds = %317, %312, %307, %302, %297
%326 = phi i64 [ %298, %297 ], [ %303, %302 ], [ %308, %307 ], [ %313, %312 ], [ %318, %317 ]
%327 = trunc i64 %326 to i32
br label %328
328: ; preds = %322, %325
%329 = phi i32 [ %327, %325 ], [ 255, %322 ]
%330 = call i32 @ActualFileWrite(i32 %283, i32 %329, i8* %12)
%331 = icmp slt i32 %330, %329
br i1 %331, label %332, label %392
332: ; preds = %328
%333 = call i32 @ActualFileClose(i32 %29)
%334 = call i32 @ActualFileClose(i32 %283)
%335 = call i32 @ActualFileDelete(i8* %11)
br label %399
336: ; preds = %209
%337 = call i32 @ActualFileOpenForWrite(i8* %11)
%338 = icmp eq i32 %337, -1
br i1 %338, label %339, label %341
339: ; preds = %336
%340 = call i32 @ActualFileClose(i32 %29)
br label %399
341: ; preds = %336
%342 = add nsw i32 %212, %213
%343 = call i32 @ActualFileSeek(i32 %29, i32 0)
%344 = call i32 @INICopy(i32 %29, i32 %337, i32 %342)
%345 = icmp sgt i32 %344, 0
br i1 %345, label %346, label %350
346: ; preds = %341
%347 = call i32 @ActualFileClose(i32 %29)
%348 = call i32 @ActualFileClose(i32 %337)
%349 = call i32 @ActualFileDelete(i8* %11)
br label %399
350: ; preds = %341
%351 = call i32 @INIReadLine(i32 %29, i8* %12)
%352 = call i32 (i8*, i8*, i8*, ...) @sprintf(i8* %12, i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* %2, i8* %3)
br label %353
353: ; preds = %378, %350
%354 = phi i64 [ 0, %350 ], [ %379, %378 ]
%355 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %354
%356 = load i8, i8* %355
%357 = icmp eq i8 %356, 0
br i1 %357, label %381, label %358
358: ; preds = %353
%359 = add nuw nsw i64 %354, 1
%360 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %359
%361 = load i8, i8* %360
%362 = icmp eq i8 %361, 0
br i1 %362, label %381, label %363
363: ; preds = %358
%364 = add nuw nsw i64 %354, 2
%365 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %364
%366 = load i8, i8* %365
%367 = icmp eq i8 %366, 0
br i1 %367, label %381, label %368
368: ; preds = %363
%369 = add nuw nsw i64 %354, 3
%370 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %369
%371 = load i8, i8* %370
%372 = icmp eq i8 %371, 0
br i1 %372, label %381, label %373
373: ; preds = %368
%374 = add nuw nsw i64 %354, 4
%375 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 %374
%376 = load i8, i8* %375
%377 = icmp eq i8 %376, 0
br i1 %377, label %381, label %378
378: ; preds = %373
%379 = add nuw nsw i64 %354, 5
%380 = icmp eq i64 %379, 255
br i1 %380, label %384, label %353
381: ; preds = %373, %368, %363, %358, %353
%382 = phi i64 [ %354, %353 ], [ %359, %358 ], [ %364, %363 ], [ %369, %368 ], [ %374, %373 ]
%383 = trunc i64 %382 to i32
br label %384
384: ; preds = %378, %381
%385 = phi i32 [ %383, %381 ], [ 255, %378 ]
%386 = call i32 @ActualFileWrite(i32 %337, i32 %385, i8* %12)
%387 = icmp slt i32 %386, %385
br i1 %387, label %388, label %392
388: ; preds = %384
%389 = call i32 @ActualFileClose(i32 %29)
%390 = call i32 @ActualFileClose(i32 %337)
%391 = call i32 @ActualFileDelete(i8* %11)
br label %399
392: ; preds = %384, %328
%393 = phi i32 [ %283, %328 ], [ %337, %384 ]
%394 = call i32 @INICopy(i32 %29, i32 %393, i32 268435455)
%395 = call i32 @ActualFileClose(i32 %29)
%396 = call i32 @ActualFileClose(i32 %393)
%397 = call i32 @ActualFileDelete(i8* %10)
%398 = call i32 @ActualFileRename(i8* %11, i8* %10)
br label %399
399: ; preds = %107, %31, %4, %392, %388, %346, %339, %332, %291, %285, %206, %204, %161, %120, %112, %71
%400 = phi i32 [ -1, %71 ], [ -1, %112 ], [ -1, %120 ], [ -1, %161 ], [ -1, %204 ], [ 0, %206 ], [ -1, %285 ], [ -1, %291 ], [ -1, %332 ], [ 0, %392 ], [ -1, %339 ], [ -1, %346 ], [ -1, %388 ], [ -1, %4 ], [ -1, %31 ], [ 0, %107 ]
ret i32 %400
}