
bc_num __regparm3 _bc_do_sub(bc_num n1,bc_num n2,int scale_min)

{
  bc_num pbVar1;
  int iVar2;
  uint uVar3;
  char cVar4;
  char *pcVar5;
  char *pcVar6;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  bool bVar13;
  char *local_38;
  char *local_24;
  char *pcVar7;
  
  iVar12 = n2->n_len;
  iVar11 = n2->n_scale;
  iVar9 = iVar12;
  if (iVar12 < n1->n_len) {
    iVar9 = n1->n_len;
  }
  iVar8 = n1->n_scale;
  iVar2 = iVar8;
  if (iVar8 <= iVar11) {
    iVar2 = iVar11;
  }
  if (n1->n_len < iVar12) {
    iVar12 = n1->n_len;
  }
  if (iVar11 <= iVar8) {
    iVar8 = iVar11;
  }
  iVar11 = scale_min;
  if (scale_min <= iVar2) {
    iVar11 = iVar2;
  }
  pbVar1 = bc_new_num(iVar9,iVar11);
  if (iVar2 < scale_min) {
    pcVar5 = pbVar1->n_value;
    pcVar7 = pcVar5 + iVar9 + iVar2;
    do {
      pcVar6 = pcVar7 + 1;
      *pcVar7 = '\0';
      pcVar7 = pcVar6;
    } while (pcVar5 + iVar9 + iVar2 + (scale_min - iVar2) != pcVar6);
  }
  iVar11 = n1->n_scale;
  local_38 = n1->n_value + n1->n_len + iVar11 + -1;
  iVar10 = n2->n_scale;
  local_24 = n2->n_value + n2->n_len + iVar10 + -1;
  pcVar5 = pbVar1->n_value + iVar9 + iVar2 + -1;
  if (iVar11 == iVar8) {
    iVar11 = iVar10 - iVar8;
    uVar3 = 0;
    if (0 < iVar11) {
      iVar2 = -iVar11;
      do {
        cVar4 = '\0';
        uVar3 = -uVar3 - (uint)(byte)local_24[iVar11 + iVar2];
        if (uVar3 != 0) {
          cVar4 = (char)uVar3 + '\n';
          uVar3 = 1;
        }
        pcVar5[iVar11 + iVar2] = cVar4;
        iVar11 = iVar11 + -1;
      } while (iVar11 != 0);
      local_24 = local_24 + (iVar8 - iVar10);
      pcVar5 = pcVar5 + (iVar8 - iVar10);
    }
  }
  else {
    iVar2 = iVar11 - iVar8;
    if (iVar2 < 1) {
      uVar3 = 0;
    }
    else {
      iVar10 = -iVar2;
      do {
        pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10];
        iVar2 = iVar2 + -1;
      } while (iVar2 != 0);
      local_38 = local_38 + (iVar8 - iVar11);
      pcVar5 = pcVar5 + (iVar8 - iVar11);
      uVar3 = 0;
    }
  }
  iVar8 = iVar8 + iVar12;
  if (0 < iVar8) {
    iVar11 = 0;
    do {
      iVar2 = ((uint)(byte)local_38[iVar11] - (uint)(byte)local_24[iVar11]) - uVar3;
      bVar13 = iVar2 < 0;
      if (bVar13) {
        iVar2 = iVar2 + 10;
      }
      uVar3 = (uint)bVar13;
      pcVar5[iVar11] = (char)iVar2;
      iVar11 = iVar11 + -1;
    } while (-iVar11 != iVar8);
    local_38 = local_38 + -iVar8;
    pcVar5 = pcVar5 + -iVar8;
  }
  if ((iVar9 != iVar12) && (iVar9 = iVar9 - iVar12, 0 < iVar9)) {
    iVar12 = -iVar9;
    do {
      iVar8 = (byte)local_38[iVar9 + iVar12] - uVar3;
      iVar11 = 9;
      if (iVar8 != -1) {
        iVar11 = iVar8;
      }
      uVar3 = (uint)(iVar8 == -1);
      pcVar5[iVar9 + iVar12] = (char)iVar11;
      iVar9 = iVar9 + -1;
    } while (iVar9 != 0);
  }
  pcVar5 = pbVar1->n_value;
  if ((*pcVar5 == '\0') && (iVar12 = pbVar1->n_len + -1, 1 < pbVar1->n_len)) {
    do {
      pcVar5 = pcVar5 + 1;
      pbVar1->n_value = pcVar5;
      pbVar1->n_len = iVar12;
      if (*pcVar5 != '\0') {
        return pbVar1;
      }
      iVar12 = iVar12 + -1;
    } while (iVar12 != 0);
  }
  return pbVar1;
}



int __regparm3 FUN_0001a780(int param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  char *pcVar4;
  char cVar5;
  int iVar6;
  undefined1 *puVar7;
  undefined1 *puVar8;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  bool bVar15;
  int local_38;
  int local_24;
  undefined1 *puVar9;
  
  iVar14 = *(int *)(param_2 + 4);
  iVar1 = *(int *)(param_2 + 8);
  iVar11 = iVar14;
  if (iVar14 < *(int *)(param_1 + 4)) {
    iVar11 = *(int *)(param_1 + 4);
  }
  iVar10 = *(int *)(param_1 + 8);
  iVar6 = iVar10;
  if (iVar10 <= iVar1) {
    iVar6 = iVar1;
  }
  if (*(int *)(param_1 + 4) < iVar14) {
    iVar14 = *(int *)(param_1 + 4);
  }
  if (iVar1 <= iVar10) {
    iVar10 = iVar1;
  }
  iVar1 = param_3;
  if (param_3 <= iVar6) {
    iVar1 = iVar6;
  }
  iVar1 = FUN_0001a490(iVar11,iVar1);
  if (iVar6 < param_3) {
    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);
    puVar9 = puVar7;
    do {
      puVar8 = puVar9 + 1;
      *puVar9 = 0;
      puVar9 = puVar8;
    } while (puVar7 + (param_3 - iVar6) != puVar8);
  }
  iVar13 = *(int *)(param_1 + 8);
  local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13;
  iVar2 = *(int *)(param_2 + 8);
  local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2;
  iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6;
  if (iVar13 == iVar10) {
    iVar13 = iVar2 - iVar10;
    uVar3 = 0;
    if (0 < iVar13) {
      iVar12 = -iVar13;
      do {
        cVar5 = '\0';
        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);
        if (uVar3 != 0) {
          cVar5 = (char)uVar3 + '\n';
          uVar3 = 1;
        }
        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;
        iVar13 = iVar13 + -1;
      } while (iVar13 != 0);
      local_24 = local_24 + (iVar10 - iVar2);
      iVar6 = iVar6 + (iVar10 - iVar2);
    }
  }
  else {
    iVar2 = iVar13 - iVar10;
    if (iVar2 < 1) {
      uVar3 = 0;
    }
    else {
      iVar12 = -iVar2;
      do {
        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);
        iVar2 = iVar2 + -1;
      } while (iVar2 != 0);
      local_38 = local_38 + (iVar10 - iVar13);
      iVar6 = iVar6 + (iVar10 - iVar13);
      uVar3 = 0;
    }
  }
  iVar10 = iVar10 + iVar14;
  if (0 < iVar10) {
    iVar13 = 0;
    do {
      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;
      bVar15 = iVar2 < 0;
      if (bVar15) {
        iVar2 = iVar2 + 10;
      }
      uVar3 = (uint)bVar15;
      *(char *)(iVar6 + iVar13) = (char)iVar2;
      iVar13 = iVar13 + -1;
    } while (-iVar13 != iVar10);
    local_38 = local_38 + -iVar10;
    iVar6 = iVar6 + -iVar10;
  }
  if ((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)) {
    iVar14 = -iVar11;
    do {
      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;
      iVar10 = 9;
      if (iVar13 != -1) {
        iVar10 = iVar13;
      }
      uVar3 = (uint)(iVar13 == -1);
      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;
      iVar11 = iVar11 + -1;
    } while (iVar11 != 0);
  }
  pcVar4 = *(char **)(iVar1 + 0x18);
  if ((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))) {
    do {
      pcVar4 = pcVar4 + 1;
      *(char **)(iVar1 + 0x18) = pcVar4;
      *(int *)(iVar1 + 4) = iVar14;
      if (*pcVar4 != '\0') {
        return iVar1;
      }
      iVar14 = iVar14 + -1;
    } while (iVar14 != 0);
  }
  return iVar1;
}


PUSH EBP
PUSH EDI
PUSH ESI
MOV ESI,EDX
PUSH EBX
MOV EBX,EAX
SUB ESP,0x34
MOV EBP,dword ptr [EDX + 0x4]
CMP EBP,dword ptr [EAX + 0x4]
MOV EDX,dword ptr [EDX + 0x8]
MOV dword ptr [ESP + 0xc],ECX
MOV EAX,EBP
CMOVL EAX,dword ptr [EBX + 0x4]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EBX + 0x8]
CMP EDX,EAX
MOV EDI,EAX
CMOVGE EDI,EDX
CMP EBP,dword ptr [EBX + 0x4]
CMOVG EBP,dword ptr [EBX + 0x4]
CMP EDX,EAX
MOV dword ptr [ESP + 0x1c],EBP
MOV EBP,EAX
CMOVLE EBP,EDX
CMP EDI,ECX
MOV EDX,ECX
CMOVGE EDX,EDI
MOV dword ptr [ESP + 0x14],EBP
PUSH EDX
PUSH dword ptr [ESP + 0x1c]
CALL 0x0001a490
MOV EBP,EAX
MOV EAX,dword ptr [ESP + 0x20]
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x4]
ADD EAX,EDI
CMP EDI,ECX
JGE 0x0001a7fb
MOV EDX,dword ptr [EBP + 0x18]
SUB ECX,EDI
ADD EDX,EAX
ADD ECX,EDX
NOP
ADD EDX,0x1
MOV byte ptr [EDX + -0x1],0x0
CMP ECX,EDX
JNZ 0x0001a7f0
MOV EDI,dword ptr [EBX + 0x8]
MOV EDX,dword ptr [EBX + 0x4]
MOV ECX,dword ptr [EBX + 0x18]
ADD EDX,EDI
LEA ECX,[ECX + EDX*0x1 + -0x1]
MOV EDX,dword ptr [ESI + 0x4]
MOV dword ptr [ESP + 0x4],ECX
MOV ECX,dword ptr [ESI + 0x8]
ADD EDX,ECX
MOV dword ptr [ESP + 0x8],ECX
MOV ECX,dword ptr [ESI + 0x18]
LEA ECX,[ECX + EDX*0x1 + -0x1]
MOV EDX,dword ptr [EBP + 0x18]
MOV dword ptr [ESP + 0x18],ECX
LEA ECX,[EDX + EAX*0x1 + -0x1]
CMP EDI,dword ptr [ESP + 0xc]
JZ 0x0001a958
MOV EAX,EDI
SUB EAX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JLE 0x0001a9bb
MOV EBX,EAX
MOV ESI,dword ptr [ESP + 0x4]
NEG EBX
MOV dword ptr [ESP + 0x8],EBX
ADD ESI,EBX
LEA ESI,[ESI]
MOV EDX,dword ptr [ESP + 0x8]
MOVZX EBX,byte ptr [ESI + EAX*0x1]
ADD EDX,ECX
MOV byte ptr [EDX + EAX*0x1],BL
SUB EAX,0x1
JNZ 0x0001a858
MOV EDX,dword ptr [ESP + 0xc]
SUB EDX,EDI
ADD dword ptr [ESP + 0x4],EDX
ADD ECX,EDX
MOV EDX,dword ptr [ESP + 0xc]
ADD EDX,dword ptr [ESP + 0x14]
TEST EDX,EDX
JLE 0x0001a8c4
MOV dword ptr [ESP + 0x8],EBP
MOV EBP,dword ptr [ESP + 0x18]
NEG EDX
XOR ESI,ESI
NOP
MOV EDI,dword ptr [ESP + 0x4]
MOVZX EBX,byte ptr [EDI + ESI*0x1]
MOVZX EDI,byte ptr [EBP + ESI*0x1]
SUB EBX,EDI
SUB EBX,EAX
MOV EAX,0x0
JNS 0x0001a8b0
ADD EBX,0xa
MOV EAX,0x1
MOV byte ptr [ECX + ESI*0x1],BL
SUB ESI,0x1
CMP EDX,ESI
JNZ 0x0001a890
ADD dword ptr [ESP + 0x4],EDX
MOV EBP,dword ptr [ESP + 0x8]
ADD ECX,EDX
MOV ESI,dword ptr [ESP + 0x14]
CMP dword ptr [ESP + 0x10],ESI
JZ 0x0001a919
MOV EDX,dword ptr [ESP + 0x10]
SUB EDX,dword ptr [ESP + 0x14]
TEST EDX,EDX
JLE 0x0001a919
MOV EDI,dword ptr [ESP + 0x4]
MOV ESI,EDX
MOV dword ptr [ESP + 0x4],EBP
NEG ESI
ADD EDI,ESI
MOV EBP,EDI
LEA ESI,[ESI]
MOVZX EBX,byte ptr [EBP + EDX*0x1]
LEA EDI,[ECX + ESI*0x1]
SUB EBX,EAX
MOV EAX,EBX
CMP EBX,-0x1
MOV EBX,0x9
CMOVNZ EBX,EAX
SETZ AL
MOVZX EAX,AL
MOV byte ptr [EDI + EDX*0x1],BL
SUB EDX,0x1
JNZ 0x0001a8f0
MOV EBP,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [EBP + 0x18]
CMP byte ptr [EAX],0x0
JNZ 0x0001a94b
MOV ECX,dword ptr [EBP + 0x4]
ADD EAX,0x1
LEA EDX,[ECX + -0x1]
CMP ECX,0x1
JG 0x0001a940
JMP 0x0001a94b
ADD EAX,0x1
SUB EDX,0x1
JZ 0x0001a94b
MOV dword ptr [EBP + 0x18],EAX
MOV dword ptr [EBP + 0x4],EDX
CMP byte ptr [EAX],0x0
JZ 0x0001a938
ADD ESP,0x2c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,dword ptr [ESP + 0x8]
SUB EDX,dword ptr [ESP + 0xc]
XOR EAX,EAX
TEST EDX,EDX
JLE 0x0001a876
MOV ESI,dword ptr [ESP + 0x18]
MOV EDI,EDX
MOV dword ptr [ESP + 0x1c],EBP
NEG EDI
LEA EBX,[ESI + EDI*0x1]
MOV ESI,ECX
MOV EBP,EBX
LEA ESI,[ESI]
MOVZX EBX,byte ptr [EBP + EDX*0x1]
XOR ECX,ECX
NEG EBX
SUB EBX,EAX
MOV EAX,EBX
JZ 0x0001a997
LEA ECX,[EBX + 0xa]
MOV EAX,0x1
LEA EBX,[ESI + EDI*0x1]
MOV byte ptr [EBX + EDX*0x1],CL
SUB EDX,0x1
JNZ 0x0001a980
MOV ECX,ESI
MOV EDX,dword ptr [ESP + 0xc]
SUB EDX,dword ptr [ESP + 0x8]
MOV EBP,dword ptr [ESP + 0x1c]
ADD dword ptr [ESP + 0x18],EDX
ADD ECX,EDX
JMP 0x0001a876
XOR EAX,EAX
JMP 0x0001a876
(translation_unit "int __regparm3 FUN_0001a780(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char *pcVar4;\n  char cVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  bool bVar15;\n  int local_38;\n  int local_24;\n  undefined1 *puVar9;\n  \n  iVar14 = *(int *)(param_2 + 4);\n  iVar1 = *(int *)(param_2 + 8);\n  iVar11 = iVar14;\n  if (iVar14 < *(int *)(param_1 + 4)) {\n    iVar11 = *(int *)(param_1 + 4);\n  }\n  iVar10 = *(int *)(param_1 + 8);\n  iVar6 = iVar10;\n  if (iVar10 <= iVar1) {\n    iVar6 = iVar1;\n  }\n  if (*(int *)(param_1 + 4) < iVar14) {\n    iVar14 = *(int *)(param_1 + 4);\n  }\n  if (iVar1 <= iVar10) {\n    iVar10 = iVar1;\n  }\n  iVar1 = param_3;\n  if (param_3 <= iVar6) {\n    iVar1 = iVar6;\n  }\n  iVar1 = FUN_0001a490(iVar11,iVar1);\n  if (iVar6 < param_3) {\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }\n  iVar13 = *(int *)(param_1 + 8);\n  local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13;\n  iVar2 = *(int *)(param_2 + 8);\n  local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2;\n  iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6;\n  if (iVar13 == iVar10) {\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }\n  else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }\n  iVar10 = iVar10 + iVar14;\n  if (0 < iVar10) {\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }\n  if ((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)) {\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }\n  pcVar4 = *(char **)(iVar1 + 0x18);\n  if ((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))) {\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }\n  return iVar1;\n}\n\n" (function_definition "int __regparm3 FUN_0001a780(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char *pcVar4;\n  char cVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  bool bVar15;\n  int local_38;\n  int local_24;\n  undefined1 *puVar9;\n  \n  iVar14 = *(int *)(param_2 + 4);\n  iVar1 = *(int *)(param_2 + 8);\n  iVar11 = iVar14;\n  if (iVar14 < *(int *)(param_1 + 4)) {\n    iVar11 = *(int *)(param_1 + 4);\n  }\n  iVar10 = *(int *)(param_1 + 8);\n  iVar6 = iVar10;\n  if (iVar10 <= iVar1) {\n    iVar6 = iVar1;\n  }\n  if (*(int *)(param_1 + 4) < iVar14) {\n    iVar14 = *(int *)(param_1 + 4);\n  }\n  if (iVar1 <= iVar10) {\n    iVar10 = iVar1;\n  }\n  iVar1 = param_3;\n  if (param_3 <= iVar6) {\n    iVar1 = iVar6;\n  }\n  iVar1 = FUN_0001a490(iVar11,iVar1);\n  if (iVar6 < param_3) {\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }\n  iVar13 = *(int *)(param_1 + 8);\n  local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13;\n  iVar2 = *(int *)(param_2 + 8);\n  local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2;\n  iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6;\n  if (iVar13 == iVar10) {\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }\n  else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }\n  iVar10 = iVar10 + iVar14;\n  if (0 < iVar10) {\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }\n  if ((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)) {\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }\n  pcVar4 = *(char **)(iVar1 + 0x18);\n  if ((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))) {\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }\n  return iVar1;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0001a780(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char *pcVar4;\n  char cVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  bool bVar15;\n  int local_38;\n  int local_24;\n  undefined1 *puVar9;\n  \n  iVar14 = *(int *)(param_2 + 4);\n  iVar1 = *(int *)(param_2 + 8);\n  iVar11 = iVar14;\n  if (iVar14 < *(int *)(param_1 + 4)) {\n    iVar11 = *(int *)(param_1 + 4);\n  }\n  iVar10 = *(int *)(param_1 + 8);\n  iVar6 = iVar10;\n  if (iVar10 <= iVar1) {\n    iVar6 = iVar1;\n  }\n  if (*(int *)(param_1 + 4) < iVar14) {\n    iVar14 = *(int *)(param_1 + 4);\n  }\n  if (iVar1 <= iVar10) {\n    iVar10 = iVar1;\n  }\n  iVar1 = param_3;\n  if (param_3 <= iVar6) {\n    iVar1 = iVar6;\n  }\n  iVar1 = FUN_0001a490(iVar11,iVar1);\n  if (iVar6 < param_3) {\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }\n  iVar13 = *(int *)(param_1 + 8);\n  local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13;\n  iVar2 = *(int *)(param_2 + 8);\n  local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2;\n  iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6;\n  if (iVar13 == iVar10) {\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }\n  else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }\n  iVar10 = iVar10 + iVar14;\n  if (0 < iVar10) {\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }\n  if ((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)) {\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }\n  pcVar4 = *(char **)(iVar1 + 0x18);\n  if ((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))) {\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (expression_statement "iVar14 = *(int *)(param_2 + 4);" (assignment_expression "iVar14 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(param_2 + 8);" (assignment_expression "iVar1 = *(int *)(param_2 + 8)" identifier = (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = iVar14;" (assignment_expression "iVar11 = iVar14" identifier = identifier) ;) (if_statement "if (iVar14 < *(int *)(param_1 + 4)) {\n    iVar11 = *(int *)(param_1 + 4);\n  }" if (parenthesized_expression "(iVar14 < *(int *)(param_1 + 4))" ( (binary_expression "iVar14 < *(int *)(param_1 + 4)" identifier < (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n    iVar11 = *(int *)(param_1 + 4);\n  }" { (expression_statement "iVar11 = *(int *)(param_1 + 4);" (assignment_expression "iVar11 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "iVar10 = *(int *)(param_1 + 8);" (assignment_expression "iVar10 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar10;" (assignment_expression "iVar6 = iVar10" identifier = identifier) ;) (if_statement "if (iVar10 <= iVar1) {\n    iVar6 = iVar1;\n  }" if (parenthesized_expression "(iVar10 <= iVar1)" ( (binary_expression "iVar10 <= iVar1" identifier <= identifier) )) (compound_statement "{\n    iVar6 = iVar1;\n  }" { (expression_statement "iVar6 = iVar1;" (assignment_expression "iVar6 = iVar1" identifier = identifier) ;) })) (if_statement "if (*(int *)(param_1 + 4) < iVar14) {\n    iVar14 = *(int *)(param_1 + 4);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 4) < iVar14)" ( (binary_expression "*(int *)(param_1 + 4) < iVar14" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n    iVar14 = *(int *)(param_1 + 4);\n  }" { (expression_statement "iVar14 = *(int *)(param_1 + 4);" (assignment_expression "iVar14 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) })) (if_statement "if (iVar1 <= iVar10) {\n    iVar10 = iVar1;\n  }" if (parenthesized_expression "(iVar1 <= iVar10)" ( (binary_expression "iVar1 <= iVar10" identifier <= identifier) )) (compound_statement "{\n    iVar10 = iVar1;\n  }" { (expression_statement "iVar10 = iVar1;" (assignment_expression "iVar10 = iVar1" identifier = identifier) ;) })) (expression_statement "iVar1 = param_3;" (assignment_expression "iVar1 = param_3" identifier = identifier) ;) (if_statement "if (param_3 <= iVar6) {\n    iVar1 = iVar6;\n  }" if (parenthesized_expression "(param_3 <= iVar6)" ( (binary_expression "param_3 <= iVar6" identifier <= identifier) )) (compound_statement "{\n    iVar1 = iVar6;\n  }" { (expression_statement "iVar1 = iVar6;" (assignment_expression "iVar1 = iVar6" identifier = identifier) ;) })) (expression_statement "iVar1 = FUN_0001a490(iVar11,iVar1);" (assignment_expression "iVar1 = FUN_0001a490(iVar11,iVar1)" identifier = (call_expression "FUN_0001a490(iVar11,iVar1)" identifier (argument_list "(iVar11,iVar1)" ( identifier , identifier )))) ;) (if_statement "if (iVar6 < param_3) {\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }" if (parenthesized_expression "(iVar6 < param_3)" ( (binary_expression "iVar6 < param_3" identifier < identifier) )) (compound_statement "{\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }" { (expression_statement "puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);" (assignment_expression "puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6)" identifier = (cast_expression "(undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 0x18) + iVar11 + iVar6)" ( (binary_expression "*(int *)(iVar1 + 0x18) + iVar11 + iVar6" (binary_expression "*(int *)(iVar1 + 0x18) + iVar11" (pointer_expression "*(int *)(iVar1 + 0x18)" * (cast_expression "(int *)(iVar1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) + identifier) + identifier) )))) ;) (expression_statement "puVar9 = puVar7;" (assignment_expression "puVar9 = puVar7" identifier = identifier) ;) (do_statement "do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);" do (compound_statement "{\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    }" { (expression_statement "puVar8 = puVar9 + 1;" (assignment_expression "puVar8 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) (expression_statement "*puVar9 = 0;" (assignment_expression "*puVar9 = 0" (pointer_expression "*puVar9" * identifier) = number_literal) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar7 + (param_3 - iVar6) != puVar8)" ( (binary_expression "puVar7 + (param_3 - iVar6) != puVar8" (binary_expression "puVar7 + (param_3 - iVar6)" identifier + (parenthesized_expression "(param_3 - iVar6)" ( (binary_expression "param_3 - iVar6" identifier - identifier) ))) != identifier) )) ;) })) (expression_statement "iVar13 = *(int *)(param_1 + 8);" (assignment_expression "iVar13 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13;" (assignment_expression "local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13" identifier = (binary_expression "*(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13" (binary_expression "*(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4)" (binary_expression "*(int *)(param_1 + 0x18) + -1" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) + (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) + identifier)) ;) (expression_statement "iVar2 = *(int *)(param_2 + 8);" (assignment_expression "iVar2 = *(int *)(param_2 + 8)" identifier = (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2;" (assignment_expression "local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2" identifier = (binary_expression "*(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2" (binary_expression "*(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4)" (binary_expression "*(int *)(param_2 + 0x18) + -1" (pointer_expression "*(int *)(param_2 + 0x18)" * (cast_expression "(int *)(param_2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) + number_literal) + (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) + identifier)) ;) (expression_statement "iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6;" (assignment_expression "iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6" identifier = (binary_expression "*(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6" (binary_expression "*(int *)(iVar1 + 0x18) + -1 + iVar11" (binary_expression "*(int *)(iVar1 + 0x18) + -1" (pointer_expression "*(int *)(iVar1 + 0x18)" * (cast_expression "(int *)(iVar1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) + number_literal) + identifier) + identifier)) ;) (if_statement "if (iVar13 == iVar10) {\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }\n  else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }" if (parenthesized_expression "(iVar13 == iVar10)" ( (binary_expression "iVar13 == iVar10" identifier == identifier) )) (compound_statement "{\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }" { (expression_statement "iVar13 = iVar2 - iVar10;" (assignment_expression "iVar13 = iVar2 - iVar10" identifier = (binary_expression "iVar2 - iVar10" identifier - identifier)) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }" if (parenthesized_expression "(0 < iVar13)" ( (binary_expression "0 < iVar13" number_literal < identifier) )) (compound_statement "{\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }" { (expression_statement "iVar12 = -iVar13;" (assignment_expression "iVar12 = -iVar13" identifier = (unary_expression "-iVar13" - identifier)) ;) (do_statement "do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);" do (compound_statement "{\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      }" { (expression_statement "cVar5 = '\0';" (assignment_expression "cVar5 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);" (assignment_expression "uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13)" identifier = (binary_expression "-uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13)" (unary_expression "-uVar3" - identifier) - (binary_expression "(uint)*(byte *)(local_24 + iVar12 + iVar13)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_24 + iVar12 + iVar13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + iVar12 + iVar13)" ( (binary_expression "local_24 + iVar12 + iVar13" (binary_expression "local_24 + iVar12" identifier + identifier) + identifier) )))))) ;) (if_statement "if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }" { (expression_statement "cVar5 = (char)uVar3 + '\n';" (assignment_expression "cVar5 = (char)uVar3 + '\n'" identifier = (binary_expression "(char)uVar3 + '\n'" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'\n'" ' escape_sequence '))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) })) (expression_statement "*(char *)(iVar6 + iVar12 + iVar13) = cVar5;" (assignment_expression "*(char *)(iVar6 + iVar12 + iVar13) = cVar5" (pointer_expression "*(char *)(iVar6 + iVar12 + iVar13)" * (cast_expression "(char *)(iVar6 + iVar12 + iVar13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar12 + iVar13)" ( (binary_expression "iVar6 + iVar12 + iVar13" (binary_expression "iVar6 + iVar12" identifier + identifier) + identifier) )))) = identifier) ;) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) ;) (expression_statement "local_24 = local_24 + (iVar10 - iVar2);" (assignment_expression "local_24 = local_24 + (iVar10 - iVar2)" identifier = (binary_expression "local_24 + (iVar10 - iVar2)" identifier + (parenthesized_expression "(iVar10 - iVar2)" ( (binary_expression "iVar10 - iVar2" identifier - identifier) )))) ;) (expression_statement "iVar6 = iVar6 + (iVar10 - iVar2);" (assignment_expression "iVar6 = iVar6 + (iVar10 - iVar2)" identifier = (binary_expression "iVar6 + (iVar10 - iVar2)" identifier + (parenthesized_expression "(iVar10 - iVar2)" ( (binary_expression "iVar10 - iVar2" identifier - identifier) )))) ;) })) }) (else_clause "else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }" else (compound_statement "{\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }" { (expression_statement "iVar2 = iVar13 - iVar10;" (assignment_expression "iVar2 = iVar13 - iVar10" identifier = (binary_expression "iVar13 - iVar10" identifier - identifier)) ;) (if_statement "if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }" if (parenthesized_expression "(iVar2 < 1)" ( (binary_expression "iVar2 < 1" identifier < number_literal) )) (compound_statement "{\n      uVar3 = 0;\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }" else (compound_statement "{\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }" { (expression_statement "iVar12 = -iVar2;" (assignment_expression "iVar12 = -iVar2" identifier = (unary_expression "-iVar2" - identifier)) ;) (do_statement "do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);" do (compound_statement "{\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      }" { (expression_statement "*(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);" (assignment_expression "*(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2)" (pointer_expression "*(undefined1 *)(iVar12 + iVar6 + iVar2)" * (cast_expression "(undefined1 *)(iVar12 + iVar6 + iVar2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar6 + iVar2)" ( (binary_expression "iVar12 + iVar6 + iVar2" (binary_expression "iVar12 + iVar6" identifier + identifier) + identifier) )))) = (pointer_expression "*(undefined1 *)(local_38 + iVar12 + iVar2)" * (cast_expression "(undefined1 *)(local_38 + iVar12 + iVar2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + iVar12 + iVar2)" ( (binary_expression "local_38 + iVar12 + iVar2" (binary_expression "local_38 + iVar12" identifier + identifier) + identifier) ))))) ;) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) (expression_statement "local_38 = local_38 + (iVar10 - iVar13);" (assignment_expression "local_38 = local_38 + (iVar10 - iVar13)" identifier = (binary_expression "local_38 + (iVar10 - iVar13)" identifier + (parenthesized_expression "(iVar10 - iVar13)" ( (binary_expression "iVar10 - iVar13" identifier - identifier) )))) ;) (expression_statement "iVar6 = iVar6 + (iVar10 - iVar13);" (assignment_expression "iVar6 = iVar6 + (iVar10 - iVar13)" identifier = (binary_expression "iVar6 + (iVar10 - iVar13)" identifier + (parenthesized_expression "(iVar10 - iVar13)" ( (binary_expression "iVar10 - iVar13" identifier - identifier) )))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))) }))) (expression_statement "iVar10 = iVar10 + iVar14;" (assignment_expression "iVar10 = iVar10 + iVar14" identifier = (binary_expression "iVar10 + iVar14" identifier + identifier)) ;) (if_statement "if (0 < iVar10) {\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);" do (compound_statement "{\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    }" { (expression_statement "iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;" (assignment_expression "iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3" identifier = (binary_expression "((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3" (parenthesized_expression "((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13))" ( (binary_expression "(uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)" (binary_expression "(uint)*(byte *)(local_38 + iVar13)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_38 + iVar13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + iVar13)" ( (binary_expression "local_38 + iVar13" identifier + identifier) )))) - (binary_expression "(uint)*(byte *)(local_24 + iVar13)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_24 + iVar13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + iVar13)" ( (binary_expression "local_24 + iVar13" identifier + identifier) ))))) )) - identifier)) ;) (expression_statement "bVar15 = iVar2 < 0;" (assignment_expression "bVar15 = iVar2 < 0" identifier = (binary_expression "iVar2 < 0" identifier < number_literal)) ;) (if_statement "if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        iVar2 = iVar2 + 10;\n      }" { (expression_statement "iVar2 = iVar2 + 10;" (assignment_expression "iVar2 = iVar2 + 10" identifier = (binary_expression "iVar2 + 10" identifier + number_literal)) ;) })) (expression_statement "uVar3 = (uint)bVar15;" (assignment_expression "uVar3 = (uint)bVar15" identifier = (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(char *)(iVar6 + iVar13) = (char)iVar2;" (assignment_expression "*(char *)(iVar6 + iVar13) = (char)iVar2" (pointer_expression "*(char *)(iVar6 + iVar13)" * (cast_expression "(char *)(iVar6 + iVar13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar13)" ( (binary_expression "iVar6 + iVar13" identifier + identifier) )))) = (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(-iVar13 != iVar10)" ( (binary_expression "-iVar13 != iVar10" (unary_expression "-iVar13" - identifier) != identifier) )) ;) (expression_statement "local_38 = local_38 + -iVar10;" (assignment_expression "local_38 = local_38 + -iVar10" identifier = (binary_expression "local_38 + -iVar10" identifier + (unary_expression "-iVar10" - identifier))) ;) (expression_statement "iVar6 = iVar6 + -iVar10;" (assignment_expression "iVar6 = iVar6 + -iVar10" identifier = (binary_expression "iVar6 + -iVar10" identifier + (unary_expression "-iVar10" - identifier))) ;) })) (if_statement "if ((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)) {\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }" if (parenthesized_expression "((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11))" ( (binary_expression "(iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)" (parenthesized_expression "(iVar11 != iVar14)" ( (binary_expression "iVar11 != iVar14" identifier != identifier) )) && (parenthesized_expression "(iVar11 = iVar11 - iVar14, 0 < iVar11)" ( (comma_expression "iVar11 = iVar11 - iVar14, 0 < iVar11" (assignment_expression "iVar11 = iVar11 - iVar14" identifier = (binary_expression "iVar11 - iVar14" identifier - identifier)) , (binary_expression "0 < iVar11" number_literal < identifier)) ))) )) (compound_statement "{\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }" { (expression_statement "iVar14 = -iVar11;" (assignment_expression "iVar14 = -iVar11" identifier = (unary_expression "-iVar11" - identifier)) ;) (do_statement "do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);" do (compound_statement "{\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    }" { (expression_statement "iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;" (assignment_expression "iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3" identifier = (binary_expression "*(byte *)(local_38 + iVar14 + iVar11) - uVar3" (pointer_expression "*(byte *)(local_38 + iVar14 + iVar11)" * (cast_expression "(byte *)(local_38 + iVar14 + iVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + iVar14 + iVar11)" ( (binary_expression "local_38 + iVar14 + iVar11" (binary_expression "local_38 + iVar14" identifier + identifier) + identifier) )))) - identifier)) ;) (expression_statement "iVar10 = 9;" (assignment_expression "iVar10 = 9" identifier = number_literal) ;) (if_statement "if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }" if (parenthesized_expression "(iVar13 != -1)" ( (binary_expression "iVar13 != -1" identifier != number_literal) )) (compound_statement "{\n        iVar10 = iVar13;\n      }" { (expression_statement "iVar10 = iVar13;" (assignment_expression "iVar10 = iVar13" identifier = identifier) ;) })) (expression_statement "uVar3 = (uint)(iVar13 == -1);" (assignment_expression "uVar3 = (uint)(iVar13 == -1)" identifier = (call_expression "(uint)(iVar13 == -1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar13 == -1)" ( (binary_expression "iVar13 == -1" identifier == number_literal) )))) ;) (expression_statement "*(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;" (assignment_expression "*(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10" (pointer_expression "*(char *)(iVar6 + iVar14 + iVar11)" * (cast_expression "(char *)(iVar6 + iVar14 + iVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar14 + iVar11)" ( (binary_expression "iVar6 + iVar14 + iVar11" (binary_expression "iVar6 + iVar14" identifier + identifier) + identifier) )))) = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;) })) (expression_statement "pcVar4 = *(char **)(iVar1 + 0x18);" (assignment_expression "pcVar4 = *(char **)(iVar1 + 0x18)" identifier = (pointer_expression "*(char **)(iVar1 + 0x18)" * (cast_expression "(char **)(iVar1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))) {\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }" if (parenthesized_expression "((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4)))" ( (binary_expression "(*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))" (parenthesized_expression "(*pcVar4 == '\0')" ( (binary_expression "*pcVar4 == '\0'" (pointer_expression "*pcVar4" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))" ( (comma_expression "iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4)" (assignment_expression "iVar14 = *(int *)(iVar1 + 4) + -1" identifier = (binary_expression "*(int *)(iVar1 + 4) + -1" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal)) , (binary_expression "1 < *(int *)(iVar1 + 4)" number_literal < (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))))) ))) )) (compound_statement "{\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }" { (do_statement "do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);" do (compound_statement "{\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    }" { (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "*(char **)(iVar1 + 0x18) = pcVar4;" (assignment_expression "*(char **)(iVar1 + 0x18) = pcVar4" (pointer_expression "*(char **)(iVar1 + 0x18)" * (cast_expression "(char **)(iVar1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar1 + 4) = iVar14;" (assignment_expression "*(int *)(iVar1 + 4) = iVar14" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*pcVar4 != '\0') {\n        return iVar1;\n      }" if (parenthesized_expression "(*pcVar4 != '\0')" ( (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return iVar1;\n      }" { (return_statement "return iVar1;" return identifier ;) })) (expression_statement "iVar14 = iVar14 + -1;" (assignment_expression "iVar14 = iVar14 + -1" identifier = (binary_expression "iVar14 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) ;) })) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "bc_num __regparm3 _bc_do_sub(bc_num n1,bc_num n2,int scale_min)\n\n{\n  bc_num pbVar1;\n  int iVar2;\n  uint uVar3;\n  char cVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  bool bVar13;\n  char *local_38;\n  char *local_24;\n  char *pcVar7;\n  \n  iVar12 = n2->n_len;\n  iVar11 = n2->n_scale;\n  iVar9 = iVar12;\n  if (iVar12 < n1->n_len) {\n    iVar9 = n1->n_len;\n  }\n  iVar8 = n1->n_scale;\n  iVar2 = iVar8;\n  if (iVar8 <= iVar11) {\n    iVar2 = iVar11;\n  }\n  if (n1->n_len < iVar12) {\n    iVar12 = n1->n_len;\n  }\n  if (iVar11 <= iVar8) {\n    iVar8 = iVar11;\n  }\n  iVar11 = scale_min;\n  if (scale_min <= iVar2) {\n    iVar11 = iVar2;\n  }\n  pbVar1 = bc_new_num(iVar9,iVar11);\n  if (iVar2 < scale_min) {\n    pcVar5 = pbVar1->n_value;\n    pcVar7 = pcVar5 + iVar9 + iVar2;\n    do {\n      pcVar6 = pcVar7 + 1;\n      *pcVar7 = '\0';\n      pcVar7 = pcVar6;\n    } while (pcVar5 + iVar9 + iVar2 + (scale_min - iVar2) != pcVar6);\n  }\n  iVar11 = n1->n_scale;\n  local_38 = n1->n_value + n1->n_len + iVar11 + -1;\n  iVar10 = n2->n_scale;\n  local_24 = n2->n_value + n2->n_len + iVar10 + -1;\n  pcVar5 = pbVar1->n_value + iVar9 + iVar2 + -1;\n  if (iVar11 == iVar8) {\n    iVar11 = iVar10 - iVar8;\n    uVar3 = 0;\n    if (0 < iVar11) {\n      iVar2 = -iVar11;\n      do {\n        cVar4 = '\0';\n        uVar3 = -uVar3 - (uint)(byte)local_24[iVar11 + iVar2];\n        if (uVar3 != 0) {\n          cVar4 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        pcVar5[iVar11 + iVar2] = cVar4;\n        iVar11 = iVar11 + -1;\n      } while (iVar11 != 0);\n      local_24 = local_24 + (iVar8 - iVar10);\n      pcVar5 = pcVar5 + (iVar8 - iVar10);\n    }\n  }\n  else {\n    iVar2 = iVar11 - iVar8;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar10 = -iVar2;\n      do {\n        pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10];\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar8 - iVar11);\n      pcVar5 = pcVar5 + (iVar8 - iVar11);\n      uVar3 = 0;\n    }\n  }\n  iVar8 = iVar8 + iVar12;\n  if (0 < iVar8) {\n    iVar11 = 0;\n    do {\n      iVar2 = ((uint)(byte)local_38[iVar11] - (uint)(byte)local_24[iVar11]) - uVar3;\n      bVar13 = iVar2 < 0;\n      if (bVar13) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar13;\n      pcVar5[iVar11] = (char)iVar2;\n      iVar11 = iVar11 + -1;\n    } while (-iVar11 != iVar8);\n    local_38 = local_38 + -iVar8;\n    pcVar5 = pcVar5 + -iVar8;\n  }\n  if ((iVar9 != iVar12) && (iVar9 = iVar9 - iVar12, 0 < iVar9)) {\n    iVar12 = -iVar9;\n    do {\n      iVar8 = (byte)local_38[iVar9 + iVar12] - uVar3;\n      iVar11 = 9;\n      if (iVar8 != -1) {\n        iVar11 = iVar8;\n      }\n      uVar3 = (uint)(iVar8 == -1);\n      pcVar5[iVar9 + iVar12] = (char)iVar11;\n      iVar9 = iVar9 + -1;\n    } while (iVar9 != 0);\n  }\n  pcVar5 = pbVar1->n_value;\n  if ((*pcVar5 == '\0') && (iVar12 = pbVar1->n_len + -1, 1 < pbVar1->n_len)) {\n    do {\n      pcVar5 = pcVar5 + 1;\n      pbVar1->n_value = pcVar5;\n      pbVar1->n_len = iVar12;\n      if (*pcVar5 != '\0') {\n        return pbVar1;\n      }\n      iVar12 = iVar12 + -1;\n    } while (iVar12 != 0);\n  }\n  return pbVar1;\n}\n\n" (function_definition "bc_num __regparm3 _bc_do_sub(bc_num n1,bc_num n2,int scale_min)\n\n{\n  bc_num pbVar1;\n  int iVar2;\n  uint uVar3;\n  char cVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  bool bVar13;\n  char *local_38;\n  char *local_24;\n  char *pcVar7;\n  \n  iVar12 = n2->n_len;\n  iVar11 = n2->n_scale;\n  iVar9 = iVar12;\n  if (iVar12 < n1->n_len) {\n    iVar9 = n1->n_len;\n  }\n  iVar8 = n1->n_scale;\n  iVar2 = iVar8;\n  if (iVar8 <= iVar11) {\n    iVar2 = iVar11;\n  }\n  if (n1->n_len < iVar12) {\n    iVar12 = n1->n_len;\n  }\n  if (iVar11 <= iVar8) {\n    iVar8 = iVar11;\n  }\n  iVar11 = scale_min;\n  if (scale_min <= iVar2) {\n    iVar11 = iVar2;\n  }\n  pbVar1 = bc_new_num(iVar9,iVar11);\n  if (iVar2 < scale_min) {\n    pcVar5 = pbVar1->n_value;\n    pcVar7 = pcVar5 + iVar9 + iVar2;\n    do {\n      pcVar6 = pcVar7 + 1;\n      *pcVar7 = '\0';\n      pcVar7 = pcVar6;\n    } while (pcVar5 + iVar9 + iVar2 + (scale_min - iVar2) != pcVar6);\n  }\n  iVar11 = n1->n_scale;\n  local_38 = n1->n_value + n1->n_len + iVar11 + -1;\n  iVar10 = n2->n_scale;\n  local_24 = n2->n_value + n2->n_len + iVar10 + -1;\n  pcVar5 = pbVar1->n_value + iVar9 + iVar2 + -1;\n  if (iVar11 == iVar8) {\n    iVar11 = iVar10 - iVar8;\n    uVar3 = 0;\n    if (0 < iVar11) {\n      iVar2 = -iVar11;\n      do {\n        cVar4 = '\0';\n        uVar3 = -uVar3 - (uint)(byte)local_24[iVar11 + iVar2];\n        if (uVar3 != 0) {\n          cVar4 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        pcVar5[iVar11 + iVar2] = cVar4;\n        iVar11 = iVar11 + -1;\n      } while (iVar11 != 0);\n      local_24 = local_24 + (iVar8 - iVar10);\n      pcVar5 = pcVar5 + (iVar8 - iVar10);\n    }\n  }\n  else {\n    iVar2 = iVar11 - iVar8;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar10 = -iVar2;\n      do {\n        pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10];\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar8 - iVar11);\n      pcVar5 = pcVar5 + (iVar8 - iVar11);\n      uVar3 = 0;\n    }\n  }\n  iVar8 = iVar8 + iVar12;\n  if (0 < iVar8) {\n    iVar11 = 0;\n    do {\n      iVar2 = ((uint)(byte)local_38[iVar11] - (uint)(byte)local_24[iVar11]) - uVar3;\n      bVar13 = iVar2 < 0;\n      if (bVar13) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar13;\n      pcVar5[iVar11] = (char)iVar2;\n      iVar11 = iVar11 + -1;\n    } while (-iVar11 != iVar8);\n    local_38 = local_38 + -iVar8;\n    pcVar5 = pcVar5 + -iVar8;\n  }\n  if ((iVar9 != iVar12) && (iVar9 = iVar9 - iVar12, 0 < iVar9)) {\n    iVar12 = -iVar9;\n    do {\n      iVar8 = (byte)local_38[iVar9 + iVar12] - uVar3;\n      iVar11 = 9;\n      if (iVar8 != -1) {\n        iVar11 = iVar8;\n      }\n      uVar3 = (uint)(iVar8 == -1);\n      pcVar5[iVar9 + iVar12] = (char)iVar11;\n      iVar9 = iVar9 + -1;\n    } while (iVar9 != 0);\n  }\n  pcVar5 = pbVar1->n_value;\n  if ((*pcVar5 == '\0') && (iVar12 = pbVar1->n_len + -1, 1 < pbVar1->n_len)) {\n    do {\n      pcVar5 = pcVar5 + 1;\n      pbVar1->n_value = pcVar5;\n      pbVar1->n_len = iVar12;\n      if (*pcVar5 != '\0') {\n        return pbVar1;\n      }\n      iVar12 = iVar12 + -1;\n    } while (iVar12 != 0);\n  }\n  return pbVar1;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "_bc_do_sub(bc_num n1,bc_num n2,int scale_min)" identifier (parameter_list "(bc_num n1,bc_num n2,int scale_min)" ( (parameter_declaration "bc_num n1" type_identifier identifier) , (parameter_declaration "bc_num n2" type_identifier identifier) , (parameter_declaration "int scale_min" primitive_type identifier) ))) (compound_statement "{\n  bc_num pbVar1;\n  int iVar2;\n  uint uVar3;\n  char cVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  bool bVar13;\n  char *local_38;\n  char *local_24;\n  char *pcVar7;\n  \n  iVar12 = n2->n_len;\n  iVar11 = n2->n_scale;\n  iVar9 = iVar12;\n  if (iVar12 < n1->n_len) {\n    iVar9 = n1->n_len;\n  }\n  iVar8 = n1->n_scale;\n  iVar2 = iVar8;\n  if (iVar8 <= iVar11) {\n    iVar2 = iVar11;\n  }\n  if (n1->n_len < iVar12) {\n    iVar12 = n1->n_len;\n  }\n  if (iVar11 <= iVar8) {\n    iVar8 = iVar11;\n  }\n  iVar11 = scale_min;\n  if (scale_min <= iVar2) {\n    iVar11 = iVar2;\n  }\n  pbVar1 = bc_new_num(iVar9,iVar11);\n  if (iVar2 < scale_min) {\n    pcVar5 = pbVar1->n_value;\n    pcVar7 = pcVar5 + iVar9 + iVar2;\n    do {\n      pcVar6 = pcVar7 + 1;\n      *pcVar7 = '\0';\n      pcVar7 = pcVar6;\n    } while (pcVar5 + iVar9 + iVar2 + (scale_min - iVar2) != pcVar6);\n  }\n  iVar11 = n1->n_scale;\n  local_38 = n1->n_value + n1->n_len + iVar11 + -1;\n  iVar10 = n2->n_scale;\n  local_24 = n2->n_value + n2->n_len + iVar10 + -1;\n  pcVar5 = pbVar1->n_value + iVar9 + iVar2 + -1;\n  if (iVar11 == iVar8) {\n    iVar11 = iVar10 - iVar8;\n    uVar3 = 0;\n    if (0 < iVar11) {\n      iVar2 = -iVar11;\n      do {\n        cVar4 = '\0';\n        uVar3 = -uVar3 - (uint)(byte)local_24[iVar11 + iVar2];\n        if (uVar3 != 0) {\n          cVar4 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        pcVar5[iVar11 + iVar2] = cVar4;\n        iVar11 = iVar11 + -1;\n      } while (iVar11 != 0);\n      local_24 = local_24 + (iVar8 - iVar10);\n      pcVar5 = pcVar5 + (iVar8 - iVar10);\n    }\n  }\n  else {\n    iVar2 = iVar11 - iVar8;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar10 = -iVar2;\n      do {\n        pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10];\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar8 - iVar11);\n      pcVar5 = pcVar5 + (iVar8 - iVar11);\n      uVar3 = 0;\n    }\n  }\n  iVar8 = iVar8 + iVar12;\n  if (0 < iVar8) {\n    iVar11 = 0;\n    do {\n      iVar2 = ((uint)(byte)local_38[iVar11] - (uint)(byte)local_24[iVar11]) - uVar3;\n      bVar13 = iVar2 < 0;\n      if (bVar13) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar13;\n      pcVar5[iVar11] = (char)iVar2;\n      iVar11 = iVar11 + -1;\n    } while (-iVar11 != iVar8);\n    local_38 = local_38 + -iVar8;\n    pcVar5 = pcVar5 + -iVar8;\n  }\n  if ((iVar9 != iVar12) && (iVar9 = iVar9 - iVar12, 0 < iVar9)) {\n    iVar12 = -iVar9;\n    do {\n      iVar8 = (byte)local_38[iVar9 + iVar12] - uVar3;\n      iVar11 = 9;\n      if (iVar8 != -1) {\n        iVar11 = iVar8;\n      }\n      uVar3 = (uint)(iVar8 == -1);\n      pcVar5[iVar9 + iVar12] = (char)iVar11;\n      iVar9 = iVar9 + -1;\n    } while (iVar9 != 0);\n  }\n  pcVar5 = pbVar1->n_value;\n  if ((*pcVar5 == '\0') && (iVar12 = pbVar1->n_len + -1, 1 < pbVar1->n_len)) {\n    do {\n      pcVar5 = pcVar5 + 1;\n      pbVar1->n_value = pcVar5;\n      pbVar1->n_len = iVar12;\n      if (*pcVar5 != '\0') {\n        return pbVar1;\n      }\n      iVar12 = iVar12 + -1;\n    } while (iVar12 != 0);\n  }\n  return pbVar1;\n}" { (declaration "bc_num pbVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "char *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (expression_statement "iVar12 = n2->n_len;" (assignment_expression "iVar12 = n2->n_len" identifier = (field_expression "n2->n_len" identifier -> field_identifier)) ;) (expression_statement "iVar11 = n2->n_scale;" (assignment_expression "iVar11 = n2->n_scale" identifier = (field_expression "n2->n_scale" identifier -> field_identifier)) ;) (expression_statement "iVar9 = iVar12;" (assignment_expression "iVar9 = iVar12" identifier = identifier) ;) (if_statement "if (iVar12 < n1->n_len) {\n    iVar9 = n1->n_len;\n  }" if (parenthesized_expression "(iVar12 < n1->n_len)" ( (binary_expression "iVar12 < n1->n_len" identifier < (field_expression "n1->n_len" identifier -> field_identifier)) )) (compound_statement "{\n    iVar9 = n1->n_len;\n  }" { (expression_statement "iVar9 = n1->n_len;" (assignment_expression "iVar9 = n1->n_len" identifier = (field_expression "n1->n_len" identifier -> field_identifier)) ;) })) (expression_statement "iVar8 = n1->n_scale;" (assignment_expression "iVar8 = n1->n_scale" identifier = (field_expression "n1->n_scale" identifier -> field_identifier)) ;) (expression_statement "iVar2 = iVar8;" (assignment_expression "iVar2 = iVar8" identifier = identifier) ;) (if_statement "if (iVar8 <= iVar11) {\n    iVar2 = iVar11;\n  }" if (parenthesized_expression "(iVar8 <= iVar11)" ( (binary_expression "iVar8 <= iVar11" identifier <= identifier) )) (compound_statement "{\n    iVar2 = iVar11;\n  }" { (expression_statement "iVar2 = iVar11;" (assignment_expression "iVar2 = iVar11" identifier = identifier) ;) })) (if_statement "if (n1->n_len < iVar12) {\n    iVar12 = n1->n_len;\n  }" if (parenthesized_expression "(n1->n_len < iVar12)" ( (binary_expression "n1->n_len < iVar12" (field_expression "n1->n_len" identifier -> field_identifier) < identifier) )) (compound_statement "{\n    iVar12 = n1->n_len;\n  }" { (expression_statement "iVar12 = n1->n_len;" (assignment_expression "iVar12 = n1->n_len" identifier = (field_expression "n1->n_len" identifier -> field_identifier)) ;) })) (if_statement "if (iVar11 <= iVar8) {\n    iVar8 = iVar11;\n  }" if (parenthesized_expression "(iVar11 <= iVar8)" ( (binary_expression "iVar11 <= iVar8" identifier <= identifier) )) (compound_statement "{\n    iVar8 = iVar11;\n  }" { (expression_statement "iVar8 = iVar11;" (assignment_expression "iVar8 = iVar11" identifier = identifier) ;) })) (expression_statement "iVar11 = scale_min;" (assignment_expression "iVar11 = scale_min" identifier = identifier) ;) (if_statement "if (scale_min <= iVar2) {\n    iVar11 = iVar2;\n  }" if (parenthesized_expression "(scale_min <= iVar2)" ( (binary_expression "scale_min <= iVar2" identifier <= identifier) )) (compound_statement "{\n    iVar11 = iVar2;\n  }" { (expression_statement "iVar11 = iVar2;" (assignment_expression "iVar11 = iVar2" identifier = identifier) ;) })) (expression_statement "pbVar1 = bc_new_num(iVar9,iVar11);" (assignment_expression "pbVar1 = bc_new_num(iVar9,iVar11)" identifier = (call_expression "bc_new_num(iVar9,iVar11)" identifier (argument_list "(iVar9,iVar11)" ( identifier , identifier )))) ;) (if_statement "if (iVar2 < scale_min) {\n    pcVar5 = pbVar1->n_value;\n    pcVar7 = pcVar5 + iVar9 + iVar2;\n    do {\n      pcVar6 = pcVar7 + 1;\n      *pcVar7 = '\0';\n      pcVar7 = pcVar6;\n    } while (pcVar5 + iVar9 + iVar2 + (scale_min - iVar2) != pcVar6);\n  }" if (parenthesized_expression "(iVar2 < scale_min)" ( (binary_expression "iVar2 < scale_min" identifier < identifier) )) (compound_statement "{\n    pcVar5 = pbVar1->n_value;\n    pcVar7 = pcVar5 + iVar9 + iVar2;\n    do {\n      pcVar6 = pcVar7 + 1;\n      *pcVar7 = '\0';\n      pcVar7 = pcVar6;\n    } while (pcVar5 + iVar9 + iVar2 + (scale_min - iVar2) != pcVar6);\n  }" { (expression_statement "pcVar5 = pbVar1->n_value;" (assignment_expression "pcVar5 = pbVar1->n_value" identifier = (field_expression "pbVar1->n_value" identifier -> field_identifier)) ;) (expression_statement "pcVar7 = pcVar5 + iVar9 + iVar2;" (assignment_expression "pcVar7 = pcVar5 + iVar9 + iVar2" identifier = (binary_expression "pcVar5 + iVar9 + iVar2" (binary_expression "pcVar5 + iVar9" identifier + identifier) + identifier)) ;) (do_statement "do {\n      pcVar6 = pcVar7 + 1;\n      *pcVar7 = '\0';\n      pcVar7 = pcVar6;\n    } while (pcVar5 + iVar9 + iVar2 + (scale_min - iVar2) != pcVar6);" do (compound_statement "{\n      pcVar6 = pcVar7 + 1;\n      *pcVar7 = '\0';\n      pcVar7 = pcVar6;\n    }" { (expression_statement "pcVar6 = pcVar7 + 1;" (assignment_expression "pcVar6 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar7 = '\0';" (assignment_expression "*pcVar7 = '\0'" (pointer_expression "*pcVar7" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar7 = pcVar6;" (assignment_expression "pcVar7 = pcVar6" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar5 + iVar9 + iVar2 + (scale_min - iVar2) != pcVar6)" ( (binary_expression "pcVar5 + iVar9 + iVar2 + (scale_min - iVar2) != pcVar6" (binary_expression "pcVar5 + iVar9 + iVar2 + (scale_min - iVar2)" (binary_expression "pcVar5 + iVar9 + iVar2" (binary_expression "pcVar5 + iVar9" identifier + identifier) + identifier) + (parenthesized_expression "(scale_min - iVar2)" ( (binary_expression "scale_min - iVar2" identifier - identifier) ))) != identifier) )) ;) })) (expression_statement "iVar11 = n1->n_scale;" (assignment_expression "iVar11 = n1->n_scale" identifier = (field_expression "n1->n_scale" identifier -> field_identifier)) ;) (expression_statement "local_38 = n1->n_value + n1->n_len + iVar11 + -1;" (assignment_expression "local_38 = n1->n_value + n1->n_len + iVar11 + -1" identifier = (binary_expression "n1->n_value + n1->n_len + iVar11 + -1" (binary_expression "n1->n_value + n1->n_len + iVar11" (binary_expression "n1->n_value + n1->n_len" (field_expression "n1->n_value" identifier -> field_identifier) + (field_expression "n1->n_len" identifier -> field_identifier)) + identifier) + number_literal)) ;) (expression_statement "iVar10 = n2->n_scale;" (assignment_expression "iVar10 = n2->n_scale" identifier = (field_expression "n2->n_scale" identifier -> field_identifier)) ;) (expression_statement "local_24 = n2->n_value + n2->n_len + iVar10 + -1;" (assignment_expression "local_24 = n2->n_value + n2->n_len + iVar10 + -1" identifier = (binary_expression "n2->n_value + n2->n_len + iVar10 + -1" (binary_expression "n2->n_value + n2->n_len + iVar10" (binary_expression "n2->n_value + n2->n_len" (field_expression "n2->n_value" identifier -> field_identifier) + (field_expression "n2->n_len" identifier -> field_identifier)) + identifier) + number_literal)) ;) (expression_statement "pcVar5 = pbVar1->n_value + iVar9 + iVar2 + -1;" (assignment_expression "pcVar5 = pbVar1->n_value + iVar9 + iVar2 + -1" identifier = (binary_expression "pbVar1->n_value + iVar9 + iVar2 + -1" (binary_expression "pbVar1->n_value + iVar9 + iVar2" (binary_expression "pbVar1->n_value + iVar9" (field_expression "pbVar1->n_value" identifier -> field_identifier) + identifier) + identifier) + number_literal)) ;) (if_statement "if (iVar11 == iVar8) {\n    iVar11 = iVar10 - iVar8;\n    uVar3 = 0;\n    if (0 < iVar11) {\n      iVar2 = -iVar11;\n      do {\n        cVar4 = '\0';\n        uVar3 = -uVar3 - (uint)(byte)local_24[iVar11 + iVar2];\n        if (uVar3 != 0) {\n          cVar4 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        pcVar5[iVar11 + iVar2] = cVar4;\n        iVar11 = iVar11 + -1;\n      } while (iVar11 != 0);\n      local_24 = local_24 + (iVar8 - iVar10);\n      pcVar5 = pcVar5 + (iVar8 - iVar10);\n    }\n  }\n  else {\n    iVar2 = iVar11 - iVar8;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar10 = -iVar2;\n      do {\n        pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10];\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar8 - iVar11);\n      pcVar5 = pcVar5 + (iVar8 - iVar11);\n      uVar3 = 0;\n    }\n  }" if (parenthesized_expression "(iVar11 == iVar8)" ( (binary_expression "iVar11 == iVar8" identifier == identifier) )) (compound_statement "{\n    iVar11 = iVar10 - iVar8;\n    uVar3 = 0;\n    if (0 < iVar11) {\n      iVar2 = -iVar11;\n      do {\n        cVar4 = '\0';\n        uVar3 = -uVar3 - (uint)(byte)local_24[iVar11 + iVar2];\n        if (uVar3 != 0) {\n          cVar4 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        pcVar5[iVar11 + iVar2] = cVar4;\n        iVar11 = iVar11 + -1;\n      } while (iVar11 != 0);\n      local_24 = local_24 + (iVar8 - iVar10);\n      pcVar5 = pcVar5 + (iVar8 - iVar10);\n    }\n  }" { (expression_statement "iVar11 = iVar10 - iVar8;" (assignment_expression "iVar11 = iVar10 - iVar8" identifier = (binary_expression "iVar10 - iVar8" identifier - identifier)) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar11) {\n      iVar2 = -iVar11;\n      do {\n        cVar4 = '\0';\n        uVar3 = -uVar3 - (uint)(byte)local_24[iVar11 + iVar2];\n        if (uVar3 != 0) {\n          cVar4 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        pcVar5[iVar11 + iVar2] = cVar4;\n        iVar11 = iVar11 + -1;\n      } while (iVar11 != 0);\n      local_24 = local_24 + (iVar8 - iVar10);\n      pcVar5 = pcVar5 + (iVar8 - iVar10);\n    }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n      iVar2 = -iVar11;\n      do {\n        cVar4 = '\0';\n        uVar3 = -uVar3 - (uint)(byte)local_24[iVar11 + iVar2];\n        if (uVar3 != 0) {\n          cVar4 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        pcVar5[iVar11 + iVar2] = cVar4;\n        iVar11 = iVar11 + -1;\n      } while (iVar11 != 0);\n      local_24 = local_24 + (iVar8 - iVar10);\n      pcVar5 = pcVar5 + (iVar8 - iVar10);\n    }" { (expression_statement "iVar2 = -iVar11;" (assignment_expression "iVar2 = -iVar11" identifier = (unary_expression "-iVar11" - identifier)) ;) (do_statement "do {\n        cVar4 = '\0';\n        uVar3 = -uVar3 - (uint)(byte)local_24[iVar11 + iVar2];\n        if (uVar3 != 0) {\n          cVar4 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        pcVar5[iVar11 + iVar2] = cVar4;\n        iVar11 = iVar11 + -1;\n      } while (iVar11 != 0);" do (compound_statement "{\n        cVar4 = '\0';\n        uVar3 = -uVar3 - (uint)(byte)local_24[iVar11 + iVar2];\n        if (uVar3 != 0) {\n          cVar4 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        pcVar5[iVar11 + iVar2] = cVar4;\n        iVar11 = iVar11 + -1;\n      }" { (expression_statement "cVar4 = '\0';" (assignment_expression "cVar4 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar3 = -uVar3 - (uint)(byte)local_24[iVar11 + iVar2];" (assignment_expression "uVar3 = -uVar3 - (uint)(byte)local_24[iVar11 + iVar2]" identifier = (binary_expression "-uVar3 - (uint)(byte)local_24[iVar11 + iVar2]" (unary_expression "-uVar3" - identifier) - (cast_expression "(uint)(byte)local_24[iVar11 + iVar2]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)local_24[iVar11 + iVar2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_24[iVar11 + iVar2]" identifier [ (binary_expression "iVar11 + iVar2" identifier + identifier) ]))))) ;) (if_statement "if (uVar3 != 0) {\n          cVar4 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          cVar4 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }" { (expression_statement "cVar4 = (char)uVar3 + '\n';" (assignment_expression "cVar4 = (char)uVar3 + '\n'" identifier = (binary_expression "(char)uVar3 + '\n'" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'\n'" ' escape_sequence '))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) })) (expression_statement "pcVar5[iVar11 + iVar2] = cVar4;" (assignment_expression "pcVar5[iVar11 + iVar2] = cVar4" (subscript_expression "pcVar5[iVar11 + iVar2]" identifier [ (binary_expression "iVar11 + iVar2" identifier + identifier) ]) = identifier) ;) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;) (expression_statement "local_24 = local_24 + (iVar8 - iVar10);" (assignment_expression "local_24 = local_24 + (iVar8 - iVar10)" identifier = (binary_expression "local_24 + (iVar8 - iVar10)" identifier + (parenthesized_expression "(iVar8 - iVar10)" ( (binary_expression "iVar8 - iVar10" identifier - identifier) )))) ;) (expression_statement "pcVar5 = pcVar5 + (iVar8 - iVar10);" (assignment_expression "pcVar5 = pcVar5 + (iVar8 - iVar10)" identifier = (binary_expression "pcVar5 + (iVar8 - iVar10)" identifier + (parenthesized_expression "(iVar8 - iVar10)" ( (binary_expression "iVar8 - iVar10" identifier - identifier) )))) ;) })) }) (else_clause "else {\n    iVar2 = iVar11 - iVar8;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar10 = -iVar2;\n      do {\n        pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10];\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar8 - iVar11);\n      pcVar5 = pcVar5 + (iVar8 - iVar11);\n      uVar3 = 0;\n    }\n  }" else (compound_statement "{\n    iVar2 = iVar11 - iVar8;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar10 = -iVar2;\n      do {\n        pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10];\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar8 - iVar11);\n      pcVar5 = pcVar5 + (iVar8 - iVar11);\n      uVar3 = 0;\n    }\n  }" { (expression_statement "iVar2 = iVar11 - iVar8;" (assignment_expression "iVar2 = iVar11 - iVar8" identifier = (binary_expression "iVar11 - iVar8" identifier - identifier)) ;) (if_statement "if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar10 = -iVar2;\n      do {\n        pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10];\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar8 - iVar11);\n      pcVar5 = pcVar5 + (iVar8 - iVar11);\n      uVar3 = 0;\n    }" if (parenthesized_expression "(iVar2 < 1)" ( (binary_expression "iVar2 < 1" identifier < number_literal) )) (compound_statement "{\n      uVar3 = 0;\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar10 = -iVar2;\n      do {\n        pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10];\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar8 - iVar11);\n      pcVar5 = pcVar5 + (iVar8 - iVar11);\n      uVar3 = 0;\n    }" else (compound_statement "{\n      iVar10 = -iVar2;\n      do {\n        pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10];\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar8 - iVar11);\n      pcVar5 = pcVar5 + (iVar8 - iVar11);\n      uVar3 = 0;\n    }" { (expression_statement "iVar10 = -iVar2;" (assignment_expression "iVar10 = -iVar2" identifier = (unary_expression "-iVar2" - identifier)) ;) (do_statement "do {\n        pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10];\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);" do (compound_statement "{\n        pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10];\n        iVar2 = iVar2 + -1;\n      }" { (expression_statement "pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10];" (assignment_expression "pcVar5[iVar2 + iVar10] = local_38[iVar2 + iVar10]" (subscript_expression "pcVar5[iVar2 + iVar10]" identifier [ (binary_expression "iVar2 + iVar10" identifier + identifier) ]) = (subscript_expression "local_38[iVar2 + iVar10]" identifier [ (binary_expression "iVar2 + iVar10" identifier + identifier) ])) ;) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) (expression_statement "local_38 = local_38 + (iVar8 - iVar11);" (assignment_expression "local_38 = local_38 + (iVar8 - iVar11)" identifier = (binary_expression "local_38 + (iVar8 - iVar11)" identifier + (parenthesized_expression "(iVar8 - iVar11)" ( (binary_expression "iVar8 - iVar11" identifier - identifier) )))) ;) (expression_statement "pcVar5 = pcVar5 + (iVar8 - iVar11);" (assignment_expression "pcVar5 = pcVar5 + (iVar8 - iVar11)" identifier = (binary_expression "pcVar5 + (iVar8 - iVar11)" identifier + (parenthesized_expression "(iVar8 - iVar11)" ( (binary_expression "iVar8 - iVar11" identifier - identifier) )))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))) }))) (expression_statement "iVar8 = iVar8 + iVar12;" (assignment_expression "iVar8 = iVar8 + iVar12" identifier = (binary_expression "iVar8 + iVar12" identifier + identifier)) ;) (if_statement "if (0 < iVar8) {\n    iVar11 = 0;\n    do {\n      iVar2 = ((uint)(byte)local_38[iVar11] - (uint)(byte)local_24[iVar11]) - uVar3;\n      bVar13 = iVar2 < 0;\n      if (bVar13) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar13;\n      pcVar5[iVar11] = (char)iVar2;\n      iVar11 = iVar11 + -1;\n    } while (-iVar11 != iVar8);\n    local_38 = local_38 + -iVar8;\n    pcVar5 = pcVar5 + -iVar8;\n  }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\n    iVar11 = 0;\n    do {\n      iVar2 = ((uint)(byte)local_38[iVar11] - (uint)(byte)local_24[iVar11]) - uVar3;\n      bVar13 = iVar2 < 0;\n      if (bVar13) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar13;\n      pcVar5[iVar11] = (char)iVar2;\n      iVar11 = iVar11 + -1;\n    } while (-iVar11 != iVar8);\n    local_38 = local_38 + -iVar8;\n    pcVar5 = pcVar5 + -iVar8;\n  }" { (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar2 = ((uint)(byte)local_38[iVar11] - (uint)(byte)local_24[iVar11]) - uVar3;\n      bVar13 = iVar2 < 0;\n      if (bVar13) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar13;\n      pcVar5[iVar11] = (char)iVar2;\n      iVar11 = iVar11 + -1;\n    } while (-iVar11 != iVar8);" do (compound_statement "{\n      iVar2 = ((uint)(byte)local_38[iVar11] - (uint)(byte)local_24[iVar11]) - uVar3;\n      bVar13 = iVar2 < 0;\n      if (bVar13) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar13;\n      pcVar5[iVar11] = (char)iVar2;\n      iVar11 = iVar11 + -1;\n    }" { (expression_statement "iVar2 = ((uint)(byte)local_38[iVar11] - (uint)(byte)local_24[iVar11]) - uVar3;" (assignment_expression "iVar2 = ((uint)(byte)local_38[iVar11] - (uint)(byte)local_24[iVar11]) - uVar3" identifier = (binary_expression "((uint)(byte)local_38[iVar11] - (uint)(byte)local_24[iVar11]) - uVar3" (parenthesized_expression "((uint)(byte)local_38[iVar11] - (uint)(byte)local_24[iVar11])" ( (binary_expression "(uint)(byte)local_38[iVar11] - (uint)(byte)local_24[iVar11]" (cast_expression "(uint)(byte)local_38[iVar11]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)local_38[iVar11]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_38[iVar11]" identifier [ identifier ]))) - (cast_expression "(uint)(byte)local_24[iVar11]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)local_24[iVar11]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_24[iVar11]" identifier [ identifier ])))) )) - identifier)) ;) (expression_statement "bVar13 = iVar2 < 0;" (assignment_expression "bVar13 = iVar2 < 0" identifier = (binary_expression "iVar2 < 0" identifier < number_literal)) ;) (if_statement "if (bVar13) {\n        iVar2 = iVar2 + 10;\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        iVar2 = iVar2 + 10;\n      }" { (expression_statement "iVar2 = iVar2 + 10;" (assignment_expression "iVar2 = iVar2 + 10" identifier = (binary_expression "iVar2 + 10" identifier + number_literal)) ;) })) (expression_statement "uVar3 = (uint)bVar13;" (assignment_expression "uVar3 = (uint)bVar13" identifier = (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pcVar5[iVar11] = (char)iVar2;" (assignment_expression "pcVar5[iVar11] = (char)iVar2" (subscript_expression "pcVar5[iVar11]" identifier [ identifier ]) = (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(-iVar11 != iVar8)" ( (binary_expression "-iVar11 != iVar8" (unary_expression "-iVar11" - identifier) != identifier) )) ;) (expression_statement "local_38 = local_38 + -iVar8;" (assignment_expression "local_38 = local_38 + -iVar8" identifier = (binary_expression "local_38 + -iVar8" identifier + (unary_expression "-iVar8" - identifier))) ;) (expression_statement "pcVar5 = pcVar5 + -iVar8;" (assignment_expression "pcVar5 = pcVar5 + -iVar8" identifier = (binary_expression "pcVar5 + -iVar8" identifier + (unary_expression "-iVar8" - identifier))) ;) })) (if_statement "if ((iVar9 != iVar12) && (iVar9 = iVar9 - iVar12, 0 < iVar9)) {\n    iVar12 = -iVar9;\n    do {\n      iVar8 = (byte)local_38[iVar9 + iVar12] - uVar3;\n      iVar11 = 9;\n      if (iVar8 != -1) {\n        iVar11 = iVar8;\n      }\n      uVar3 = (uint)(iVar8 == -1);\n      pcVar5[iVar9 + iVar12] = (char)iVar11;\n      iVar9 = iVar9 + -1;\n    } while (iVar9 != 0);\n  }" if (parenthesized_expression "((iVar9 != iVar12) && (iVar9 = iVar9 - iVar12, 0 < iVar9))" ( (binary_expression "(iVar9 != iVar12) && (iVar9 = iVar9 - iVar12, 0 < iVar9)" (parenthesized_expression "(iVar9 != iVar12)" ( (binary_expression "iVar9 != iVar12" identifier != identifier) )) && (parenthesized_expression "(iVar9 = iVar9 - iVar12, 0 < iVar9)" ( (comma_expression "iVar9 = iVar9 - iVar12, 0 < iVar9" (assignment_expression "iVar9 = iVar9 - iVar12" identifier = (binary_expression "iVar9 - iVar12" identifier - identifier)) , (binary_expression "0 < iVar9" number_literal < identifier)) ))) )) (compound_statement "{\n    iVar12 = -iVar9;\n    do {\n      iVar8 = (byte)local_38[iVar9 + iVar12] - uVar3;\n      iVar11 = 9;\n      if (iVar8 != -1) {\n        iVar11 = iVar8;\n      }\n      uVar3 = (uint)(iVar8 == -1);\n      pcVar5[iVar9 + iVar12] = (char)iVar11;\n      iVar9 = iVar9 + -1;\n    } while (iVar9 != 0);\n  }" { (expression_statement "iVar12 = -iVar9;" (assignment_expression "iVar12 = -iVar9" identifier = (unary_expression "-iVar9" - identifier)) ;) (do_statement "do {\n      iVar8 = (byte)local_38[iVar9 + iVar12] - uVar3;\n      iVar11 = 9;\n      if (iVar8 != -1) {\n        iVar11 = iVar8;\n      }\n      uVar3 = (uint)(iVar8 == -1);\n      pcVar5[iVar9 + iVar12] = (char)iVar11;\n      iVar9 = iVar9 + -1;\n    } while (iVar9 != 0);" do (compound_statement "{\n      iVar8 = (byte)local_38[iVar9 + iVar12] - uVar3;\n      iVar11 = 9;\n      if (iVar8 != -1) {\n        iVar11 = iVar8;\n      }\n      uVar3 = (uint)(iVar8 == -1);\n      pcVar5[iVar9 + iVar12] = (char)iVar11;\n      iVar9 = iVar9 + -1;\n    }" { (expression_statement "iVar8 = (byte)local_38[iVar9 + iVar12] - uVar3;" (assignment_expression "iVar8 = (byte)local_38[iVar9 + iVar12] - uVar3" identifier = (binary_expression "(byte)local_38[iVar9 + iVar12] - uVar3" (cast_expression "(byte)local_38[iVar9 + iVar12]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_38[iVar9 + iVar12]" identifier [ (binary_expression "iVar9 + iVar12" identifier + identifier) ])) - identifier)) ;) (expression_statement "iVar11 = 9;" (assignment_expression "iVar11 = 9" identifier = number_literal) ;) (if_statement "if (iVar8 != -1) {\n        iVar11 = iVar8;\n      }" if (parenthesized_expression "(iVar8 != -1)" ( (binary_expression "iVar8 != -1" identifier != number_literal) )) (compound_statement "{\n        iVar11 = iVar8;\n      }" { (expression_statement "iVar11 = iVar8;" (assignment_expression "iVar11 = iVar8" identifier = identifier) ;) })) (expression_statement "uVar3 = (uint)(iVar8 == -1);" (assignment_expression "uVar3 = (uint)(iVar8 == -1)" identifier = (call_expression "(uint)(iVar8 == -1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar8 == -1)" ( (binary_expression "iVar8 == -1" identifier == number_literal) )))) ;) (expression_statement "pcVar5[iVar9 + iVar12] = (char)iVar11;" (assignment_expression "pcVar5[iVar9 + iVar12] = (char)iVar11" (subscript_expression "pcVar5[iVar9 + iVar12]" identifier [ (binary_expression "iVar9 + iVar12" identifier + identifier) ]) = (cast_expression "(char)iVar11" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) ;) })) (expression_statement "pcVar5 = pbVar1->n_value;" (assignment_expression "pcVar5 = pbVar1->n_value" identifier = (field_expression "pbVar1->n_value" identifier -> field_identifier)) ;) (if_statement "if ((*pcVar5 == '\0') && (iVar12 = pbVar1->n_len + -1, 1 < pbVar1->n_len)) {\n    do {\n      pcVar5 = pcVar5 + 1;\n      pbVar1->n_value = pcVar5;\n      pbVar1->n_len = iVar12;\n      if (*pcVar5 != '\0') {\n        return pbVar1;\n      }\n      iVar12 = iVar12 + -1;\n    } while (iVar12 != 0);\n  }" if (parenthesized_expression "((*pcVar5 == '\0') && (iVar12 = pbVar1->n_len + -1, 1 < pbVar1->n_len))" ( (binary_expression "(*pcVar5 == '\0') && (iVar12 = pbVar1->n_len + -1, 1 < pbVar1->n_len)" (parenthesized_expression "(*pcVar5 == '\0')" ( (binary_expression "*pcVar5 == '\0'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar12 = pbVar1->n_len + -1, 1 < pbVar1->n_len)" ( (comma_expression "iVar12 = pbVar1->n_len + -1, 1 < pbVar1->n_len" (assignment_expression "iVar12 = pbVar1->n_len + -1" identifier = (binary_expression "pbVar1->n_len + -1" (field_expression "pbVar1->n_len" identifier -> field_identifier) + number_literal)) , (binary_expression "1 < pbVar1->n_len" number_literal < (field_expression "pbVar1->n_len" identifier -> field_identifier))) ))) )) (compound_statement "{\n    do {\n      pcVar5 = pcVar5 + 1;\n      pbVar1->n_value = pcVar5;\n      pbVar1->n_len = iVar12;\n      if (*pcVar5 != '\0') {\n        return pbVar1;\n      }\n      iVar12 = iVar12 + -1;\n    } while (iVar12 != 0);\n  }" { (do_statement "do {\n      pcVar5 = pcVar5 + 1;\n      pbVar1->n_value = pcVar5;\n      pbVar1->n_len = iVar12;\n      if (*pcVar5 != '\0') {\n        return pbVar1;\n      }\n      iVar12 = iVar12 + -1;\n    } while (iVar12 != 0);" do (compound_statement "{\n      pcVar5 = pcVar5 + 1;\n      pbVar1->n_value = pcVar5;\n      pbVar1->n_len = iVar12;\n      if (*pcVar5 != '\0') {\n        return pbVar1;\n      }\n      iVar12 = iVar12 + -1;\n    }" { (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "pbVar1->n_value = pcVar5;" (assignment_expression "pbVar1->n_value = pcVar5" (field_expression "pbVar1->n_value" identifier -> field_identifier) = identifier) ;) (expression_statement "pbVar1->n_len = iVar12;" (assignment_expression "pbVar1->n_len = iVar12" (field_expression "pbVar1->n_len" identifier -> field_identifier) = identifier) ;) (if_statement "if (*pcVar5 != '\0') {\n        return pbVar1;\n      }" if (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return pbVar1;\n      }" { (return_statement "return pbVar1;" return identifier ;) })) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) ;) })) (return_statement "return pbVar1;" return identifier ;) })))
(translation_unit "int __regparm3 FUN_0001a780(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char *pcVar4;\n  char cVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  bool bVar15;\n  int local_38;\n  int local_24;\n  undefined1 *puVar9;\n  \n  iVar14 = *(int *)(param_2 + 4);\n  iVar1 = *(int *)(param_2 + 8);\n  iVar11 = iVar14;\n  if (iVar14 < *(int *)(param_1 + 4)) {\n    iVar11 = *(int *)(param_1 + 4);\n  }\n  iVar10 = *(int *)(param_1 + 8);\n  iVar6 = iVar10;\n  if (iVar10 <= iVar1) {\n    iVar6 = iVar1;\n  }\n  if (*(int *)(param_1 + 4) < iVar14) {\n    iVar14 = *(int *)(param_1 + 4);\n  }\n  if (iVar1 <= iVar10) {\n    iVar10 = iVar1;\n  }\n  iVar1 = param_3;\n  if (param_3 <= iVar6) {\n    iVar1 = iVar6;\n  }\n  iVar1 = FUN_0001a490(iVar11,iVar1);\n  if (iVar6 < param_3) {\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }\n  iVar13 = *(int *)(param_1 + 8);\n  local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13;\n  iVar2 = *(int *)(param_2 + 8);\n  local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2;\n  iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6;\n  if (iVar13 == iVar10) {\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }\n  else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }\n  iVar10 = iVar10 + iVar14;\n  if (0 < iVar10) {\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }\n  if ((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)) {\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }\n  pcVar4 = *(char **)(iVar1 + 0x18);\n  if ((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))) {\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }\n  return iVar1;\n}\n\n" (function_definition "int __regparm3 FUN_0001a780(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char *pcVar4;\n  char cVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  bool bVar15;\n  int local_38;\n  int local_24;\n  undefined1 *puVar9;\n  \n  iVar14 = *(int *)(param_2 + 4);\n  iVar1 = *(int *)(param_2 + 8);\n  iVar11 = iVar14;\n  if (iVar14 < *(int *)(param_1 + 4)) {\n    iVar11 = *(int *)(param_1 + 4);\n  }\n  iVar10 = *(int *)(param_1 + 8);\n  iVar6 = iVar10;\n  if (iVar10 <= iVar1) {\n    iVar6 = iVar1;\n  }\n  if (*(int *)(param_1 + 4) < iVar14) {\n    iVar14 = *(int *)(param_1 + 4);\n  }\n  if (iVar1 <= iVar10) {\n    iVar10 = iVar1;\n  }\n  iVar1 = param_3;\n  if (param_3 <= iVar6) {\n    iVar1 = iVar6;\n  }\n  iVar1 = FUN_0001a490(iVar11,iVar1);\n  if (iVar6 < param_3) {\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }\n  iVar13 = *(int *)(param_1 + 8);\n  local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13;\n  iVar2 = *(int *)(param_2 + 8);\n  local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2;\n  iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6;\n  if (iVar13 == iVar10) {\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }\n  else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }\n  iVar10 = iVar10 + iVar14;\n  if (0 < iVar10) {\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }\n  if ((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)) {\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }\n  pcVar4 = *(char **)(iVar1 + 0x18);\n  if ((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))) {\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }\n  return iVar1;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0001a780(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char *pcVar4;\n  char cVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  bool bVar15;\n  int local_38;\n  int local_24;\n  undefined1 *puVar9;\n  \n  iVar14 = *(int *)(param_2 + 4);\n  iVar1 = *(int *)(param_2 + 8);\n  iVar11 = iVar14;\n  if (iVar14 < *(int *)(param_1 + 4)) {\n    iVar11 = *(int *)(param_1 + 4);\n  }\n  iVar10 = *(int *)(param_1 + 8);\n  iVar6 = iVar10;\n  if (iVar10 <= iVar1) {\n    iVar6 = iVar1;\n  }\n  if (*(int *)(param_1 + 4) < iVar14) {\n    iVar14 = *(int *)(param_1 + 4);\n  }\n  if (iVar1 <= iVar10) {\n    iVar10 = iVar1;\n  }\n  iVar1 = param_3;\n  if (param_3 <= iVar6) {\n    iVar1 = iVar6;\n  }\n  iVar1 = FUN_0001a490(iVar11,iVar1);\n  if (iVar6 < param_3) {\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }\n  iVar13 = *(int *)(param_1 + 8);\n  local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13;\n  iVar2 = *(int *)(param_2 + 8);\n  local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2;\n  iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6;\n  if (iVar13 == iVar10) {\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }\n  else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }\n  iVar10 = iVar10 + iVar14;\n  if (0 < iVar10) {\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }\n  if ((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)) {\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }\n  pcVar4 = *(char **)(iVar1 + 0x18);\n  if ((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))) {\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (expression_statement "iVar14 = *(int *)(param_2 + 4);" (assignment_expression "iVar14 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(param_2 + 8);" (assignment_expression "iVar1 = *(int *)(param_2 + 8)" identifier = (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = iVar14;" (assignment_expression "iVar11 = iVar14" identifier = identifier) ;) (if_statement "if (iVar14 < *(int *)(param_1 + 4)) {\n    iVar11 = *(int *)(param_1 + 4);\n  }" if (parenthesized_expression "(iVar14 < *(int *)(param_1 + 4))" ( (binary_expression "iVar14 < *(int *)(param_1 + 4)" identifier < (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n    iVar11 = *(int *)(param_1 + 4);\n  }" { (expression_statement "iVar11 = *(int *)(param_1 + 4);" (assignment_expression "iVar11 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "iVar10 = *(int *)(param_1 + 8);" (assignment_expression "iVar10 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar10;" (assignment_expression "iVar6 = iVar10" identifier = identifier) ;) (if_statement "if (iVar10 <= iVar1) {\n    iVar6 = iVar1;\n  }" if (parenthesized_expression "(iVar10 <= iVar1)" ( (binary_expression "iVar10 <= iVar1" identifier <= identifier) )) (compound_statement "{\n    iVar6 = iVar1;\n  }" { (expression_statement "iVar6 = iVar1;" (assignment_expression "iVar6 = iVar1" identifier = identifier) ;) })) (if_statement "if (*(int *)(param_1 + 4) < iVar14) {\n    iVar14 = *(int *)(param_1 + 4);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 4) < iVar14)" ( (binary_expression "*(int *)(param_1 + 4) < iVar14" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n    iVar14 = *(int *)(param_1 + 4);\n  }" { (expression_statement "iVar14 = *(int *)(param_1 + 4);" (assignment_expression "iVar14 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) })) (if_statement "if (iVar1 <= iVar10) {\n    iVar10 = iVar1;\n  }" if (parenthesized_expression "(iVar1 <= iVar10)" ( (binary_expression "iVar1 <= iVar10" identifier <= identifier) )) (compound_statement "{\n    iVar10 = iVar1;\n  }" { (expression_statement "iVar10 = iVar1;" (assignment_expression "iVar10 = iVar1" identifier = identifier) ;) })) (expression_statement "iVar1 = param_3;" (assignment_expression "iVar1 = param_3" identifier = identifier) ;) (if_statement "if (param_3 <= iVar6) {\n    iVar1 = iVar6;\n  }" if (parenthesized_expression "(param_3 <= iVar6)" ( (binary_expression "param_3 <= iVar6" identifier <= identifier) )) (compound_statement "{\n    iVar1 = iVar6;\n  }" { (expression_statement "iVar1 = iVar6;" (assignment_expression "iVar1 = iVar6" identifier = identifier) ;) })) (expression_statement "iVar1 = FUN_0001a490(iVar11,iVar1);" (assignment_expression "iVar1 = FUN_0001a490(iVar11,iVar1)" identifier = (call_expression "FUN_0001a490(iVar11,iVar1)" identifier (argument_list "(iVar11,iVar1)" ( identifier , identifier )))) ;) (if_statement "if (iVar6 < param_3) {\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }" if (parenthesized_expression "(iVar6 < param_3)" ( (binary_expression "iVar6 < param_3" identifier < identifier) )) (compound_statement "{\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }" { (expression_statement "puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);" (assignment_expression "puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6)" identifier = (cast_expression "(undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 0x18) + iVar11 + iVar6)" ( (binary_expression "*(int *)(iVar1 + 0x18) + iVar11 + iVar6" (binary_expression "*(int *)(iVar1 + 0x18) + iVar11" (pointer_expression "*(int *)(iVar1 + 0x18)" * (cast_expression "(int *)(iVar1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) + identifier) + identifier) )))) ;) (expression_statement "puVar9 = puVar7;" (assignment_expression "puVar9 = puVar7" identifier = identifier) ;) (do_statement "do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);" do (compound_statement "{\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    }" { (expression_statement "puVar8 = puVar9 + 1;" (assignment_expression "puVar8 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) (expression_statement "*puVar9 = 0;" (assignment_expression "*puVar9 = 0" (pointer_expression "*puVar9" * identifier) = number_literal) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar7 + (param_3 - iVar6) != puVar8)" ( (binary_expression "puVar7 + (param_3 - iVar6) != puVar8" (binary_expression "puVar7 + (param_3 - iVar6)" identifier + (parenthesized_expression "(param_3 - iVar6)" ( (binary_expression "param_3 - iVar6" identifier - identifier) ))) != identifier) )) ;) })) (expression_statement "iVar13 = *(int *)(param_1 + 8);" (assignment_expression "iVar13 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13;" (assignment_expression "local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13" identifier = (binary_expression "*(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13" (binary_expression "*(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4)" (binary_expression "*(int *)(param_1 + 0x18) + -1" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) + (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) + identifier)) ;) (expression_statement "iVar2 = *(int *)(param_2 + 8);" (assignment_expression "iVar2 = *(int *)(param_2 + 8)" identifier = (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2;" (assignment_expression "local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2" identifier = (binary_expression "*(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2" (binary_expression "*(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4)" (binary_expression "*(int *)(param_2 + 0x18) + -1" (pointer_expression "*(int *)(param_2 + 0x18)" * (cast_expression "(int *)(param_2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) + number_literal) + (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) + identifier)) ;) (expression_statement "iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6;" (assignment_expression "iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6" identifier = (binary_expression "*(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6" (binary_expression "*(int *)(iVar1 + 0x18) + -1 + iVar11" (binary_expression "*(int *)(iVar1 + 0x18) + -1" (pointer_expression "*(int *)(iVar1 + 0x18)" * (cast_expression "(int *)(iVar1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) + number_literal) + identifier) + identifier)) ;) (if_statement "if (iVar13 == iVar10) {\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }\n  else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }" if (parenthesized_expression "(iVar13 == iVar10)" ( (binary_expression "iVar13 == iVar10" identifier == identifier) )) (compound_statement "{\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }" { (expression_statement "iVar13 = iVar2 - iVar10;" (assignment_expression "iVar13 = iVar2 - iVar10" identifier = (binary_expression "iVar2 - iVar10" identifier - identifier)) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }" if (parenthesized_expression "(0 < iVar13)" ( (binary_expression "0 < iVar13" number_literal < identifier) )) (compound_statement "{\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }" { (expression_statement "iVar12 = -iVar13;" (assignment_expression "iVar12 = -iVar13" identifier = (unary_expression "-iVar13" - identifier)) ;) (do_statement "do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);" do (compound_statement "{\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      }" { (expression_statement "cVar5 = '\0';" (assignment_expression "cVar5 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);" (assignment_expression "uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13)" identifier = (binary_expression "-uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13)" (unary_expression "-uVar3" - identifier) - (binary_expression "(uint)*(byte *)(local_24 + iVar12 + iVar13)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_24 + iVar12 + iVar13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + iVar12 + iVar13)" ( (binary_expression "local_24 + iVar12 + iVar13" (binary_expression "local_24 + iVar12" identifier + identifier) + identifier) )))))) ;) (if_statement "if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }" { (expression_statement "cVar5 = (char)uVar3 + '\n';" (assignment_expression "cVar5 = (char)uVar3 + '\n'" identifier = (binary_expression "(char)uVar3 + '\n'" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'\n'" ' escape_sequence '))) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) })) (expression_statement "*(char *)(iVar6 + iVar12 + iVar13) = cVar5;" (assignment_expression "*(char *)(iVar6 + iVar12 + iVar13) = cVar5" (pointer_expression "*(char *)(iVar6 + iVar12 + iVar13)" * (cast_expression "(char *)(iVar6 + iVar12 + iVar13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar12 + iVar13)" ( (binary_expression "iVar6 + iVar12 + iVar13" (binary_expression "iVar6 + iVar12" identifier + identifier) + identifier) )))) = identifier) ;) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) ;) (expression_statement "local_24 = local_24 + (iVar10 - iVar2);" (assignment_expression "local_24 = local_24 + (iVar10 - iVar2)" identifier = (binary_expression "local_24 + (iVar10 - iVar2)" identifier + (parenthesized_expression "(iVar10 - iVar2)" ( (binary_expression "iVar10 - iVar2" identifier - identifier) )))) ;) (expression_statement "iVar6 = iVar6 + (iVar10 - iVar2);" (assignment_expression "iVar6 = iVar6 + (iVar10 - iVar2)" identifier = (binary_expression "iVar6 + (iVar10 - iVar2)" identifier + (parenthesized_expression "(iVar10 - iVar2)" ( (binary_expression "iVar10 - iVar2" identifier - identifier) )))) ;) })) }) (else_clause "else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }" else (compound_statement "{\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }" { (expression_statement "iVar2 = iVar13 - iVar10;" (assignment_expression "iVar2 = iVar13 - iVar10" identifier = (binary_expression "iVar13 - iVar10" identifier - identifier)) ;) (if_statement "if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }" if (parenthesized_expression "(iVar2 < 1)" ( (binary_expression "iVar2 < 1" identifier < number_literal) )) (compound_statement "{\n      uVar3 = 0;\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }" else (compound_statement "{\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }" { (expression_statement "iVar12 = -iVar2;" (assignment_expression "iVar12 = -iVar2" identifier = (unary_expression "-iVar2" - identifier)) ;) (do_statement "do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);" do (compound_statement "{\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      }" { (expression_statement "*(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);" (assignment_expression "*(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2)" (pointer_expression "*(undefined1 *)(iVar12 + iVar6 + iVar2)" * (cast_expression "(undefined1 *)(iVar12 + iVar6 + iVar2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar6 + iVar2)" ( (binary_expression "iVar12 + iVar6 + iVar2" (binary_expression "iVar12 + iVar6" identifier + identifier) + identifier) )))) = (pointer_expression "*(undefined1 *)(local_38 + iVar12 + iVar2)" * (cast_expression "(undefined1 *)(local_38 + iVar12 + iVar2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + iVar12 + iVar2)" ( (binary_expression "local_38 + iVar12 + iVar2" (binary_expression "local_38 + iVar12" identifier + identifier) + identifier) ))))) ;) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) (expression_statement "local_38 = local_38 + (iVar10 - iVar13);" (assignment_expression "local_38 = local_38 + (iVar10 - iVar13)" identifier = (binary_expression "local_38 + (iVar10 - iVar13)" identifier + (parenthesized_expression "(iVar10 - iVar13)" ( (binary_expression "iVar10 - iVar13" identifier - identifier) )))) ;) (expression_statement "iVar6 = iVar6 + (iVar10 - iVar13);" (assignment_expression "iVar6 = iVar6 + (iVar10 - iVar13)" identifier = (binary_expression "iVar6 + (iVar10 - iVar13)" identifier + (parenthesized_expression "(iVar10 - iVar13)" ( (binary_expression "iVar10 - iVar13" identifier - identifier) )))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))) }))) (expression_statement "iVar10 = iVar10 + iVar14;" (assignment_expression "iVar10 = iVar10 + iVar14" identifier = (binary_expression "iVar10 + iVar14" identifier + identifier)) ;) (if_statement "if (0 < iVar10) {\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);" do (compound_statement "{\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    }" { (expression_statement "iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;" (assignment_expression "iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3" identifier = (binary_expression "((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3" (parenthesized_expression "((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13))" ( (binary_expression "(uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)" (binary_expression "(uint)*(byte *)(local_38 + iVar13)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_38 + iVar13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + iVar13)" ( (binary_expression "local_38 + iVar13" identifier + identifier) )))) - (binary_expression "(uint)*(byte *)(local_24 + iVar13)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_24 + iVar13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + iVar13)" ( (binary_expression "local_24 + iVar13" identifier + identifier) ))))) )) - identifier)) ;) (expression_statement "bVar15 = iVar2 < 0;" (assignment_expression "bVar15 = iVar2 < 0" identifier = (binary_expression "iVar2 < 0" identifier < number_literal)) ;) (if_statement "if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n        iVar2 = iVar2 + 10;\n      }" { (expression_statement "iVar2 = iVar2 + 10;" (assignment_expression "iVar2 = iVar2 + 10" identifier = (binary_expression "iVar2 + 10" identifier + number_literal)) ;) })) (expression_statement "uVar3 = (uint)bVar15;" (assignment_expression "uVar3 = (uint)bVar15" identifier = (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(char *)(iVar6 + iVar13) = (char)iVar2;" (assignment_expression "*(char *)(iVar6 + iVar13) = (char)iVar2" (pointer_expression "*(char *)(iVar6 + iVar13)" * (cast_expression "(char *)(iVar6 + iVar13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar13)" ( (binary_expression "iVar6 + iVar13" identifier + identifier) )))) = (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(-iVar13 != iVar10)" ( (binary_expression "-iVar13 != iVar10" (unary_expression "-iVar13" - identifier) != identifier) )) ;) (expression_statement "local_38 = local_38 + -iVar10;" (assignment_expression "local_38 = local_38 + -iVar10" identifier = (binary_expression "local_38 + -iVar10" identifier + (unary_expression "-iVar10" - identifier))) ;) (expression_statement "iVar6 = iVar6 + -iVar10;" (assignment_expression "iVar6 = iVar6 + -iVar10" identifier = (binary_expression "iVar6 + -iVar10" identifier + (unary_expression "-iVar10" - identifier))) ;) })) (if_statement "if ((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)) {\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }" if (parenthesized_expression "((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11))" ( (binary_expression "(iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)" (parenthesized_expression "(iVar11 != iVar14)" ( (binary_expression "iVar11 != iVar14" identifier != identifier) )) && (parenthesized_expression "(iVar11 = iVar11 - iVar14, 0 < iVar11)" ( (comma_expression "iVar11 = iVar11 - iVar14, 0 < iVar11" (assignment_expression "iVar11 = iVar11 - iVar14" identifier = (binary_expression "iVar11 - iVar14" identifier - identifier)) , (binary_expression "0 < iVar11" number_literal < identifier)) ))) )) (compound_statement "{\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }" { (expression_statement "iVar14 = -iVar11;" (assignment_expression "iVar14 = -iVar11" identifier = (unary_expression "-iVar11" - identifier)) ;) (do_statement "do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);" do (compound_statement "{\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    }" { (expression_statement "iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;" (assignment_expression "iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3" identifier = (binary_expression "*(byte *)(local_38 + iVar14 + iVar11) - uVar3" (pointer_expression "*(byte *)(local_38 + iVar14 + iVar11)" * (cast_expression "(byte *)(local_38 + iVar14 + iVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + iVar14 + iVar11)" ( (binary_expression "local_38 + iVar14 + iVar11" (binary_expression "local_38 + iVar14" identifier + identifier) + identifier) )))) - identifier)) ;) (expression_statement "iVar10 = 9;" (assignment_expression "iVar10 = 9" identifier = number_literal) ;) (if_statement "if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }" if (parenthesized_expression "(iVar13 != -1)" ( (binary_expression "iVar13 != -1" identifier != number_literal) )) (compound_statement "{\n        iVar10 = iVar13;\n      }" { (expression_statement "iVar10 = iVar13;" (assignment_expression "iVar10 = iVar13" identifier = identifier) ;) })) (expression_statement "uVar3 = (uint)(iVar13 == -1);" (assignment_expression "uVar3 = (uint)(iVar13 == -1)" identifier = (call_expression "(uint)(iVar13 == -1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar13 == -1)" ( (binary_expression "iVar13 == -1" identifier == number_literal) )))) ;) (expression_statement "*(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;" (assignment_expression "*(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10" (pointer_expression "*(char *)(iVar6 + iVar14 + iVar11)" * (cast_expression "(char *)(iVar6 + iVar14 + iVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar14 + iVar11)" ( (binary_expression "iVar6 + iVar14 + iVar11" (binary_expression "iVar6 + iVar14" identifier + identifier) + identifier) )))) = (cast_expression "(char)iVar10" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;) })) (expression_statement "pcVar4 = *(char **)(iVar1 + 0x18);" (assignment_expression "pcVar4 = *(char **)(iVar1 + 0x18)" identifier = (pointer_expression "*(char **)(iVar1 + 0x18)" * (cast_expression "(char **)(iVar1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))) {\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }" if (parenthesized_expression "((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4)))" ( (binary_expression "(*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))" (parenthesized_expression "(*pcVar4 == '\0')" ( (binary_expression "*pcVar4 == '\0'" (pointer_expression "*pcVar4" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))" ( (comma_expression "iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4)" (assignment_expression "iVar14 = *(int *)(iVar1 + 4) + -1" identifier = (binary_expression "*(int *)(iVar1 + 4) + -1" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal)) , (binary_expression "1 < *(int *)(iVar1 + 4)" number_literal < (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))))) ))) )) (compound_statement "{\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }" { (do_statement "do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);" do (compound_statement "{\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    }" { (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "*(char **)(iVar1 + 0x18) = pcVar4;" (assignment_expression "*(char **)(iVar1 + 0x18) = pcVar4" (pointer_expression "*(char **)(iVar1 + 0x18)" * (cast_expression "(char **)(iVar1 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar1 + 4) = iVar14;" (assignment_expression "*(int *)(iVar1 + 4) = iVar14" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*pcVar4 != '\0') {\n        return iVar1;\n      }" if (parenthesized_expression "(*pcVar4 != '\0')" ( (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return iVar1;\n      }" { (return_statement "return iVar1;" return identifier ;) })) (expression_statement "iVar14 = iVar14 + -1;" (assignment_expression "iVar14 = iVar14 + -1" identifier = (binary_expression "iVar14 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) ;) })) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - IDENT) - (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) - (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (unary_expression - IDENT) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT - IDENT)) , (binary_expression LIT < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) )))) - IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) , (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (return_statement return IDENT ;) })))
(function_definition "int __regparm3 FUN_0001a780(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char *pcVar4;\n  char cVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  bool bVar15;\n  int local_38;\n  int local_24;\n  undefined1 *puVar9;\n  \n  iVar14 = *(int *)(param_2 + 4);\n  iVar1 = *(int *)(param_2 + 8);\n  iVar11 = iVar14;\n  if (iVar14 < *(int *)(param_1 + 4)) {\n    iVar11 = *(int *)(param_1 + 4);\n  }\n  iVar10 = *(int *)(param_1 + 8);\n  iVar6 = iVar10;\n  if (iVar10 <= iVar1) {\n    iVar6 = iVar1;\n  }\n  if (*(int *)(param_1 + 4) < iVar14) {\n    iVar14 = *(int *)(param_1 + 4);\n  }\n  if (iVar1 <= iVar10) {\n    iVar10 = iVar1;\n  }\n  iVar1 = param_3;\n  if (param_3 <= iVar6) {\n    iVar1 = iVar6;\n  }\n  iVar1 = FUN_0001a490(iVar11,iVar1);\n  if (iVar6 < param_3) {\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }\n  iVar13 = *(int *)(param_1 + 8);\n  local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13;\n  iVar2 = *(int *)(param_2 + 8);\n  local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2;\n  iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6;\n  if (iVar13 == iVar10) {\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }\n  else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }\n  iVar10 = iVar10 + iVar14;\n  if (0 < iVar10) {\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }\n  if ((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)) {\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }\n  pcVar4 = *(char **)(iVar1 + 0x18);\n  if ((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))) {\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }\n  return iVar1;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0001a780(int param_1,int param_2,int param_3)" (identifier "FUN_0001a780") (parameter_list "(int param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  char *pcVar4;\n  char cVar5;\n  int iVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  bool bVar15;\n  int local_38;\n  int local_24;\n  undefined1 *puVar9;\n  \n  iVar14 = *(int *)(param_2 + 4);\n  iVar1 = *(int *)(param_2 + 8);\n  iVar11 = iVar14;\n  if (iVar14 < *(int *)(param_1 + 4)) {\n    iVar11 = *(int *)(param_1 + 4);\n  }\n  iVar10 = *(int *)(param_1 + 8);\n  iVar6 = iVar10;\n  if (iVar10 <= iVar1) {\n    iVar6 = iVar1;\n  }\n  if (*(int *)(param_1 + 4) < iVar14) {\n    iVar14 = *(int *)(param_1 + 4);\n  }\n  if (iVar1 <= iVar10) {\n    iVar10 = iVar1;\n  }\n  iVar1 = param_3;\n  if (param_3 <= iVar6) {\n    iVar1 = iVar6;\n  }\n  iVar1 = FUN_0001a490(iVar11,iVar1);\n  if (iVar6 < param_3) {\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }\n  iVar13 = *(int *)(param_1 + 8);\n  local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13;\n  iVar2 = *(int *)(param_2 + 8);\n  local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2;\n  iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6;\n  if (iVar13 == iVar10) {\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }\n  else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }\n  iVar10 = iVar10 + iVar14;\n  if (0 < iVar10) {\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }\n  if ((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)) {\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }\n  pcVar4 = *(char **)(iVar1 + 0x18);\n  if ((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))) {\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }\n  return iVar1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined1 *puVar7;" (type_identifier "undefined1") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "undefined1 *puVar9;" (type_identifier "undefined1") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (expression_statement "iVar14 = *(int *)(param_2 + 4);" (assignment_expression "iVar14 = *(int *)(param_2 + 4)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar1 = *(int *)(param_2 + 8);" (assignment_expression "iVar1 = *(int *)(param_2 + 8)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar11 = iVar14;" (assignment_expression "iVar11 = iVar14" (identifier "iVar11") (= "=") (identifier "iVar14")) (; ";")) (if_statement "if (iVar14 < *(int *)(param_1 + 4)) {\n    iVar11 = *(int *)(param_1 + 4);\n  }" (if "if") (parenthesized_expression "(iVar14 < *(int *)(param_1 + 4))" (( "(") (binary_expression "iVar14 < *(int *)(param_1 + 4)" (identifier "iVar14") (< "<") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n    iVar11 = *(int *)(param_1 + 4);\n  }" ({ "{") (expression_statement "iVar11 = *(int *)(param_1 + 4);" (assignment_expression "iVar11 = *(int *)(param_1 + 4)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar10 = *(int *)(param_1 + 8);" (assignment_expression "iVar10 = *(int *)(param_1 + 8)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar6 = iVar10;" (assignment_expression "iVar6 = iVar10" (identifier "iVar6") (= "=") (identifier "iVar10")) (; ";")) (if_statement "if (iVar10 <= iVar1) {\n    iVar6 = iVar1;\n  }" (if "if") (parenthesized_expression "(iVar10 <= iVar1)" (( "(") (binary_expression "iVar10 <= iVar1" (identifier "iVar10") (<= "<=") (identifier "iVar1")) () ")")) (compound_statement "{\n    iVar6 = iVar1;\n  }" ({ "{") (expression_statement "iVar6 = iVar1;" (assignment_expression "iVar6 = iVar1" (identifier "iVar6") (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 4) < iVar14) {\n    iVar14 = *(int *)(param_1 + 4);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 4) < iVar14)" (( "(") (binary_expression "*(int *)(param_1 + 4) < iVar14" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (< "<") (identifier "iVar14")) () ")")) (compound_statement "{\n    iVar14 = *(int *)(param_1 + 4);\n  }" ({ "{") (expression_statement "iVar14 = *(int *)(param_1 + 4);" (assignment_expression "iVar14 = *(int *)(param_1 + 4)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (iVar1 <= iVar10) {\n    iVar10 = iVar1;\n  }" (if "if") (parenthesized_expression "(iVar1 <= iVar10)" (( "(") (binary_expression "iVar1 <= iVar10" (identifier "iVar1") (<= "<=") (identifier "iVar10")) () ")")) (compound_statement "{\n    iVar10 = iVar1;\n  }" ({ "{") (expression_statement "iVar10 = iVar1;" (assignment_expression "iVar10 = iVar1" (identifier "iVar10") (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (expression_statement "iVar1 = param_3;" (assignment_expression "iVar1 = param_3" (identifier "iVar1") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (param_3 <= iVar6) {\n    iVar1 = iVar6;\n  }" (if "if") (parenthesized_expression "(param_3 <= iVar6)" (( "(") (binary_expression "param_3 <= iVar6" (identifier "param_3") (<= "<=") (identifier "iVar6")) () ")")) (compound_statement "{\n    iVar1 = iVar6;\n  }" ({ "{") (expression_statement "iVar1 = iVar6;" (assignment_expression "iVar1 = iVar6" (identifier "iVar1") (= "=") (identifier "iVar6")) (; ";")) (} "}"))) (expression_statement "iVar1 = FUN_0001a490(iVar11,iVar1);" (assignment_expression "iVar1 = FUN_0001a490(iVar11,iVar1)" (identifier "iVar1") (= "=") (call_expression "FUN_0001a490(iVar11,iVar1)" (identifier "FUN_0001a490") (argument_list "(iVar11,iVar1)" (( "(") (identifier "iVar11") (, ",") (identifier "iVar1") () ")")))) (; ";")) (if_statement "if (iVar6 < param_3) {\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }" (if "if") (parenthesized_expression "(iVar6 < param_3)" (( "(") (binary_expression "iVar6 < param_3" (identifier "iVar6") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);\n    puVar9 = puVar7;\n    do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);\n  }" ({ "{") (expression_statement "puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);" (assignment_expression "puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6)" (identifier "puVar7") (= "=") (cast_expression "(undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 0x18) + iVar11 + iVar6)" (( "(") (binary_expression "*(int *)(iVar1 + 0x18) + iVar11 + iVar6" (binary_expression "*(int *)(iVar1 + 0x18) + iVar11" (pointer_expression "*(int *)(iVar1 + 0x18)" (* "*") (cast_expression "(int *)(iVar1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (identifier "iVar11")) (+ "+") (identifier "iVar6")) () ")")))) (; ";")) (expression_statement "puVar9 = puVar7;" (assignment_expression "puVar9 = puVar7" (identifier "puVar9") (= "=") (identifier "puVar7")) (; ";")) (do_statement "do {\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    } while (puVar7 + (param_3 - iVar6) != puVar8);" (do "do") (compound_statement "{\n      puVar8 = puVar9 + 1;\n      *puVar9 = 0;\n      puVar9 = puVar8;\n    }" ({ "{") (expression_statement "puVar8 = puVar9 + 1;" (assignment_expression "puVar8 = puVar9 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar9 = 0;" (assignment_expression "*puVar9 = 0" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" (identifier "puVar9") (= "=") (identifier "puVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar7 + (param_3 - iVar6) != puVar8)" (( "(") (binary_expression "puVar7 + (param_3 - iVar6) != puVar8" (binary_expression "puVar7 + (param_3 - iVar6)" (identifier "puVar7") (+ "+") (parenthesized_expression "(param_3 - iVar6)" (( "(") (binary_expression "param_3 - iVar6" (identifier "param_3") (- "-") (identifier "iVar6")) () ")"))) (!= "!=") (identifier "puVar8")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar13 = *(int *)(param_1 + 8);" (assignment_expression "iVar13 = *(int *)(param_1 + 8)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13;" (assignment_expression "local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13" (identifier "local_38") (= "=") (binary_expression "*(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13" (binary_expression "*(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4)" (binary_expression "*(int *)(param_1 + 0x18) + -1" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "-1")) (+ "+") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (+ "+") (identifier "iVar13"))) (; ";")) (expression_statement "iVar2 = *(int *)(param_2 + 8);" (assignment_expression "iVar2 = *(int *)(param_2 + 8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2;" (assignment_expression "local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2" (identifier "local_24") (= "=") (binary_expression "*(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2" (binary_expression "*(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4)" (binary_expression "*(int *)(param_2 + 0x18) + -1" (pointer_expression "*(int *)(param_2 + 0x18)" (* "*") (cast_expression "(int *)(param_2 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "-1")) (+ "+") (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (+ "+") (identifier "iVar2"))) (; ";")) (expression_statement "iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6;" (assignment_expression "iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6" (identifier "iVar6") (= "=") (binary_expression "*(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6" (binary_expression "*(int *)(iVar1 + 0x18) + -1 + iVar11" (binary_expression "*(int *)(iVar1 + 0x18) + -1" (pointer_expression "*(int *)(iVar1 + 0x18)" (* "*") (cast_expression "(int *)(iVar1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "-1")) (+ "+") (identifier "iVar11")) (+ "+") (identifier "iVar6"))) (; ";")) (if_statement "if (iVar13 == iVar10) {\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }\n  else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }" (if "if") (parenthesized_expression "(iVar13 == iVar10)" (( "(") (binary_expression "iVar13 == iVar10" (identifier "iVar13") (== "==") (identifier "iVar10")) () ")")) (compound_statement "{\n    iVar13 = iVar2 - iVar10;\n    uVar3 = 0;\n    if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }\n  }" ({ "{") (expression_statement "iVar13 = iVar2 - iVar10;" (assignment_expression "iVar13 = iVar2 - iVar10" (identifier "iVar13") (= "=") (binary_expression "iVar2 - iVar10" (identifier "iVar2") (- "-") (identifier "iVar10"))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < iVar13) {\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }" (if "if") (parenthesized_expression "(0 < iVar13)" (( "(") (binary_expression "0 < iVar13" (number_literal "0") (< "<") (identifier "iVar13")) () ")")) (compound_statement "{\n      iVar12 = -iVar13;\n      do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);\n      local_24 = local_24 + (iVar10 - iVar2);\n      iVar6 = iVar6 + (iVar10 - iVar2);\n    }" ({ "{") (expression_statement "iVar12 = -iVar13;" (assignment_expression "iVar12 = -iVar13" (identifier "iVar12") (= "=") (unary_expression "-iVar13" (- "-") (identifier "iVar13"))) (; ";")) (do_statement "do {\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      } while (iVar13 != 0);" (do "do") (compound_statement "{\n        cVar5 = '\0';\n        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);\n        if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }\n        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;\n        iVar13 = iVar13 + -1;\n      }" ({ "{") (expression_statement "cVar5 = '\0';" (assignment_expression "cVar5 = '\0'" (identifier "cVar5") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);" (assignment_expression "uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13)" (identifier "uVar3") (= "=") (binary_expression "-uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13)" (unary_expression "-uVar3" (- "-") (identifier "uVar3")) (- "-") (binary_expression "(uint)*(byte *)(local_24 + iVar12 + iVar13)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(local_24 + iVar12 + iVar13)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_24 + iVar12 + iVar13)" (( "(") (binary_expression "local_24 + iVar12 + iVar13" (binary_expression "local_24 + iVar12" (identifier "local_24") (+ "+") (identifier "iVar12")) (+ "+") (identifier "iVar13")) () ")")))))) (; ";")) (if_statement "if (uVar3 != 0) {\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          cVar5 = (char)uVar3 + '\n';\n          uVar3 = 1;\n        }" ({ "{") (expression_statement "cVar5 = (char)uVar3 + '\n';" (assignment_expression "cVar5 = (char)uVar3 + '\n'" (identifier "cVar5") (= "=") (binary_expression "(char)uVar3 + '\n'" (cast_expression "(char)uVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar3")) (+ "+") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'")))) (; ";")) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "*(char *)(iVar6 + iVar12 + iVar13) = cVar5;" (assignment_expression "*(char *)(iVar6 + iVar12 + iVar13) = cVar5" (pointer_expression "*(char *)(iVar6 + iVar12 + iVar13)" (* "*") (cast_expression "(char *)(iVar6 + iVar12 + iVar13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + iVar12 + iVar13)" (( "(") (binary_expression "iVar6 + iVar12 + iVar13" (binary_expression "iVar6 + iVar12" (identifier "iVar6") (+ "+") (identifier "iVar12")) (+ "+") (identifier "iVar13")) () ")")))) (= "=") (identifier "cVar5")) (; ";")) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_24 = local_24 + (iVar10 - iVar2);" (assignment_expression "local_24 = local_24 + (iVar10 - iVar2)" (identifier "local_24") (= "=") (binary_expression "local_24 + (iVar10 - iVar2)" (identifier "local_24") (+ "+") (parenthesized_expression "(iVar10 - iVar2)" (( "(") (binary_expression "iVar10 - iVar2" (identifier "iVar10") (- "-") (identifier "iVar2")) () ")")))) (; ";")) (expression_statement "iVar6 = iVar6 + (iVar10 - iVar2);" (assignment_expression "iVar6 = iVar6 + (iVar10 - iVar2)" (identifier "iVar6") (= "=") (binary_expression "iVar6 + (iVar10 - iVar2)" (identifier "iVar6") (+ "+") (parenthesized_expression "(iVar10 - iVar2)" (( "(") (binary_expression "iVar10 - iVar2" (identifier "iVar10") (- "-") (identifier "iVar2")) () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }" (else "else") (compound_statement "{\n    iVar2 = iVar13 - iVar10;\n    if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }\n  }" ({ "{") (expression_statement "iVar2 = iVar13 - iVar10;" (assignment_expression "iVar2 = iVar13 - iVar10" (identifier "iVar2") (= "=") (binary_expression "iVar13 - iVar10" (identifier "iVar13") (- "-") (identifier "iVar10"))) (; ";")) (if_statement "if (iVar2 < 1) {\n      uVar3 = 0;\n    }\n    else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }" (if "if") (parenthesized_expression "(iVar2 < 1)" (( "(") (binary_expression "iVar2 < 1" (identifier "iVar2") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      uVar3 = 0;\n    }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }" (else "else") (compound_statement "{\n      iVar12 = -iVar2;\n      do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);\n      local_38 = local_38 + (iVar10 - iVar13);\n      iVar6 = iVar6 + (iVar10 - iVar13);\n      uVar3 = 0;\n    }" ({ "{") (expression_statement "iVar12 = -iVar2;" (assignment_expression "iVar12 = -iVar2" (identifier "iVar12") (= "=") (unary_expression "-iVar2" (- "-") (identifier "iVar2"))) (; ";")) (do_statement "do {\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      } while (iVar2 != 0);" (do "do") (compound_statement "{\n        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);\n        iVar2 = iVar2 + -1;\n      }" ({ "{") (expression_statement "*(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);" (assignment_expression "*(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2)" (pointer_expression "*(undefined1 *)(iVar12 + iVar6 + iVar2)" (* "*") (cast_expression "(undefined1 *)(iVar12 + iVar6 + iVar2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + iVar6 + iVar2)" (( "(") (binary_expression "iVar12 + iVar6 + iVar2" (binary_expression "iVar12 + iVar6" (identifier "iVar12") (+ "+") (identifier "iVar6")) (+ "+") (identifier "iVar2")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(local_38 + iVar12 + iVar2)" (* "*") (cast_expression "(undefined1 *)(local_38 + iVar12 + iVar2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + iVar12 + iVar2)" (( "(") (binary_expression "local_38 + iVar12 + iVar2" (binary_expression "local_38 + iVar12" (identifier "local_38") (+ "+") (identifier "iVar12")) (+ "+") (identifier "iVar2")) () ")"))))) (; ";")) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_38 = local_38 + (iVar10 - iVar13);" (assignment_expression "local_38 = local_38 + (iVar10 - iVar13)" (identifier "local_38") (= "=") (binary_expression "local_38 + (iVar10 - iVar13)" (identifier "local_38") (+ "+") (parenthesized_expression "(iVar10 - iVar13)" (( "(") (binary_expression "iVar10 - iVar13" (identifier "iVar10") (- "-") (identifier "iVar13")) () ")")))) (; ";")) (expression_statement "iVar6 = iVar6 + (iVar10 - iVar13);" (assignment_expression "iVar6 = iVar6 + (iVar10 - iVar13)" (identifier "iVar6") (= "=") (binary_expression "iVar6 + (iVar10 - iVar13)" (identifier "iVar6") (+ "+") (parenthesized_expression "(iVar10 - iVar13)" (( "(") (binary_expression "iVar10 - iVar13" (identifier "iVar10") (- "-") (identifier "iVar13")) () ")")))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")))) (expression_statement "iVar10 = iVar10 + iVar14;" (assignment_expression "iVar10 = iVar10 + iVar14" (identifier "iVar10") (= "=") (binary_expression "iVar10 + iVar14" (identifier "iVar10") (+ "+") (identifier "iVar14"))) (; ";")) (if_statement "if (0 < iVar10) {\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }" (if "if") (parenthesized_expression "(0 < iVar10)" (( "(") (binary_expression "0 < iVar10" (number_literal "0") (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n    iVar13 = 0;\n    do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);\n    local_38 = local_38 + -iVar10;\n    iVar6 = iVar6 + -iVar10;\n  }" ({ "{") (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    } while (-iVar13 != iVar10);" (do "do") (compound_statement "{\n      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;\n      bVar15 = iVar2 < 0;\n      if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }\n      uVar3 = (uint)bVar15;\n      *(char *)(iVar6 + iVar13) = (char)iVar2;\n      iVar13 = iVar13 + -1;\n    }" ({ "{") (expression_statement "iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;" (assignment_expression "iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3" (identifier "iVar2") (= "=") (binary_expression "((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3" (parenthesized_expression "((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13))" (( "(") (binary_expression "(uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)" (binary_expression "(uint)*(byte *)(local_38 + iVar13)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(local_38 + iVar13)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + iVar13)" (( "(") (binary_expression "local_38 + iVar13" (identifier "local_38") (+ "+") (identifier "iVar13")) () ")")))) (- "-") (binary_expression "(uint)*(byte *)(local_24 + iVar13)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(local_24 + iVar13)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_24 + iVar13)" (( "(") (binary_expression "local_24 + iVar13" (identifier "local_24") (+ "+") (identifier "iVar13")) () ")"))))) () ")")) (- "-") (identifier "uVar3"))) (; ";")) (expression_statement "bVar15 = iVar2 < 0;" (assignment_expression "bVar15 = iVar2 < 0" (identifier "bVar15") (= "=") (binary_expression "iVar2 < 0" (identifier "iVar2") (< "<") (number_literal "0"))) (; ";")) (if_statement "if (bVar15) {\n        iVar2 = iVar2 + 10;\n      }" (if "if") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (compound_statement "{\n        iVar2 = iVar2 + 10;\n      }" ({ "{") (expression_statement "iVar2 = iVar2 + 10;" (assignment_expression "iVar2 = iVar2 + 10" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 10" (identifier "iVar2") (+ "+") (number_literal "10"))) (; ";")) (} "}"))) (expression_statement "uVar3 = (uint)bVar15;" (assignment_expression "uVar3 = (uint)bVar15" (identifier "uVar3") (= "=") (cast_expression "(uint)bVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar15"))) (; ";")) (expression_statement "*(char *)(iVar6 + iVar13) = (char)iVar2;" (assignment_expression "*(char *)(iVar6 + iVar13) = (char)iVar2" (pointer_expression "*(char *)(iVar6 + iVar13)" (* "*") (cast_expression "(char *)(iVar6 + iVar13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + iVar13)" (( "(") (binary_expression "iVar6 + iVar13" (identifier "iVar6") (+ "+") (identifier "iVar13")) () ")")))) (= "=") (cast_expression "(char)iVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar2"))) (; ";")) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(-iVar13 != iVar10)" (( "(") (binary_expression "-iVar13 != iVar10" (unary_expression "-iVar13" (- "-") (identifier "iVar13")) (!= "!=") (identifier "iVar10")) () ")")) (; ";")) (expression_statement "local_38 = local_38 + -iVar10;" (assignment_expression "local_38 = local_38 + -iVar10" (identifier "local_38") (= "=") (binary_expression "local_38 + -iVar10" (identifier "local_38") (+ "+") (unary_expression "-iVar10" (- "-") (identifier "iVar10")))) (; ";")) (expression_statement "iVar6 = iVar6 + -iVar10;" (assignment_expression "iVar6 = iVar6 + -iVar10" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -iVar10" (identifier "iVar6") (+ "+") (unary_expression "-iVar10" (- "-") (identifier "iVar10")))) (; ";")) (} "}"))) (if_statement "if ((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)) {\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }" (if "if") (parenthesized_expression "((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11))" (( "(") (binary_expression "(iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)" (parenthesized_expression "(iVar11 != iVar14)" (( "(") (binary_expression "iVar11 != iVar14" (identifier "iVar11") (!= "!=") (identifier "iVar14")) () ")")) (&& "&&") (parenthesized_expression "(iVar11 = iVar11 - iVar14, 0 < iVar11)" (( "(") (comma_expression "iVar11 = iVar11 - iVar14, 0 < iVar11" (assignment_expression "iVar11 = iVar11 - iVar14" (identifier "iVar11") (= "=") (binary_expression "iVar11 - iVar14" (identifier "iVar11") (- "-") (identifier "iVar14"))) (, ",") (binary_expression "0 < iVar11" (number_literal "0") (< "<") (identifier "iVar11"))) () ")"))) () ")")) (compound_statement "{\n    iVar14 = -iVar11;\n    do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);\n  }" ({ "{") (expression_statement "iVar14 = -iVar11;" (assignment_expression "iVar14 = -iVar11" (identifier "iVar14") (= "=") (unary_expression "-iVar11" (- "-") (identifier "iVar11"))) (; ";")) (do_statement "do {\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    } while (iVar11 != 0);" (do "do") (compound_statement "{\n      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;\n      iVar10 = 9;\n      if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }\n      uVar3 = (uint)(iVar13 == -1);\n      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;\n      iVar11 = iVar11 + -1;\n    }" ({ "{") (expression_statement "iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;" (assignment_expression "iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3" (identifier "iVar13") (= "=") (binary_expression "*(byte *)(local_38 + iVar14 + iVar11) - uVar3" (pointer_expression "*(byte *)(local_38 + iVar14 + iVar11)" (* "*") (cast_expression "(byte *)(local_38 + iVar14 + iVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + iVar14 + iVar11)" (( "(") (binary_expression "local_38 + iVar14 + iVar11" (binary_expression "local_38 + iVar14" (identifier "local_38") (+ "+") (identifier "iVar14")) (+ "+") (identifier "iVar11")) () ")")))) (- "-") (identifier "uVar3"))) (; ";")) (expression_statement "iVar10 = 9;" (assignment_expression "iVar10 = 9" (identifier "iVar10") (= "=") (number_literal "9")) (; ";")) (if_statement "if (iVar13 != -1) {\n        iVar10 = iVar13;\n      }" (if "if") (parenthesized_expression "(iVar13 != -1)" (( "(") (binary_expression "iVar13 != -1" (identifier "iVar13") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n        iVar10 = iVar13;\n      }" ({ "{") (expression_statement "iVar10 = iVar13;" (assignment_expression "iVar10 = iVar13" (identifier "iVar10") (= "=") (identifier "iVar13")) (; ";")) (} "}"))) (expression_statement "uVar3 = (uint)(iVar13 == -1);" (assignment_expression "uVar3 = (uint)(iVar13 == -1)" (identifier "uVar3") (= "=") (call_expression "(uint)(iVar13 == -1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar13 == -1)" (( "(") (binary_expression "iVar13 == -1" (identifier "iVar13") (== "==") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "*(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;" (assignment_expression "*(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10" (pointer_expression "*(char *)(iVar6 + iVar14 + iVar11)" (* "*") (cast_expression "(char *)(iVar6 + iVar14 + iVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + iVar14 + iVar11)" (( "(") (binary_expression "iVar6 + iVar14 + iVar11" (binary_expression "iVar6 + iVar14" (identifier "iVar6") (+ "+") (identifier "iVar14")) (+ "+") (identifier "iVar11")) () ")")))) (= "=") (cast_expression "(char)iVar10" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar10"))) (; ";")) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "pcVar4 = *(char **)(iVar1 + 0x18);" (assignment_expression "pcVar4 = *(char **)(iVar1 + 0x18)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(iVar1 + 0x18)" (* "*") (cast_expression "(char **)(iVar1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if ((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))) {\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }" (if "if") (parenthesized_expression "((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4)))" (( "(") (binary_expression "(*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))" (parenthesized_expression "(*pcVar4 == '\0')" (( "(") (binary_expression "*pcVar4 == '\0'" (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))" (( "(") (comma_expression "iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4)" (assignment_expression "iVar14 = *(int *)(iVar1 + 4) + -1" (identifier "iVar14") (= "=") (binary_expression "*(int *)(iVar1 + 4) + -1" (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "-1"))) (, ",") (binary_expression "1 < *(int *)(iVar1 + 4)" (number_literal "1") (< "<") (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n    do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);\n  }" ({ "{") (do_statement "do {\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    } while (iVar14 != 0);" (do "do") (compound_statement "{\n      pcVar4 = pcVar4 + 1;\n      *(char **)(iVar1 + 0x18) = pcVar4;\n      *(int *)(iVar1 + 4) = iVar14;\n      if (*pcVar4 != '\0') {\n        return iVar1;\n      }\n      iVar14 = iVar14 + -1;\n    }" ({ "{") (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + 1" (identifier "pcVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(char **)(iVar1 + 0x18) = pcVar4;" (assignment_expression "*(char **)(iVar1 + 0x18) = pcVar4" (pointer_expression "*(char **)(iVar1 + 0x18)" (* "*") (cast_expression "(char **)(iVar1 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "pcVar4")) (; ";")) (expression_statement "*(int *)(iVar1 + 4) = iVar14;" (assignment_expression "*(int *)(iVar1 + 4) = iVar14" (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar14")) (; ";")) (if_statement "if (*pcVar4 != '\0') {\n        return iVar1;\n      }" (if "if") (parenthesized_expression "(*pcVar4 != '\0')" (( "(") (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return iVar1;\n      }" ({ "{") (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}"))) (expression_statement "iVar14 = iVar14 + -1;" (assignment_expression "iVar14 = iVar14 + -1" (identifier "iVar14") (= "=") (binary_expression "iVar14 + -1" (identifier "iVar14") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}")))

type_1 __regparm3 function_1(type_1 n1,type_1 n2,int var_4)

{
  type_1 pbVar1;
  int var_5;
  type_2 var_12;
  char cVar4;
  char *var_7;
  char *var_10;
  int var_2;
  int var_8;
  int var_11;
  int var_3;
  int var_1;
  bool bVar13;
  char *var_14;
  char *var_13;
  char *var_9;
  
  var_1 = n2->n_len;
  var_3 = n2->n_scale;
  var_8 = var_1;
  if (var_1 < n1->n_len) {
    var_8 = n1->n_len;
  }
  var_2 = n1->n_scale;
  var_5 = var_2;
  if (var_2 <= var_3) {
    var_5 = var_3;
  }
  if (n1->n_len < var_1) {
    var_1 = n1->n_len;
  }
  if (var_3 <= var_2) {
    var_2 = var_3;
  }
  var_3 = var_4;
  if (var_4 <= var_5) {
    var_3 = var_5;
  }
  pbVar1 = var_6(var_8,var_3);
  if (var_5 < var_4) {
    var_7 = pbVar1->n_value;
    var_9 = var_7 + var_8 + var_5;
    do {
      var_10 = var_9 + 1;
      *var_9 = '\0';
      var_9 = var_10;
    } while (var_7 + var_8 + var_5 + (var_4 - var_5) != var_10);
  }
  var_3 = n1->n_scale;
  var_14 = n1->n_value + n1->n_len + var_3 + -1;
  var_11 = n2->n_scale;
  var_13 = n2->n_value + n2->n_len + var_11 + -1;
  var_7 = pbVar1->n_value + var_8 + var_5 + -1;
  if (var_3 == var_2) {
    var_3 = var_11 - var_2;
    var_12 = 0;
    if (0 < var_3) {
      var_5 = -var_3;
      do {
        cVar4 = '\0';
        var_12 = -var_12 - (type_2)(type_3)var_13[var_3 + var_5];
        if (var_12 != 0) {
          cVar4 = (char)var_12 + '\n';
          var_12 = 1;
        }
        var_7[var_3 + var_5] = cVar4;
        var_3 = var_3 + -1;
      } while (var_3 != 0);
      var_13 = var_13 + (var_2 - var_11);
      var_7 = var_7 + (var_2 - var_11);
    }
  }
  else {
    var_5 = var_3 - var_2;
    if (var_5 < 1) {
      var_12 = 0;
    }
    else {
      var_11 = -var_5;
      do {
        var_7[var_5 + var_11] = var_14[var_5 + var_11];
        var_5 = var_5 + -1;
      } while (var_5 != 0);
      var_14 = var_14 + (var_2 - var_3);
      var_7 = var_7 + (var_2 - var_3);
      var_12 = 0;
    }
  }
  var_2 = var_2 + var_1;
  if (0 < var_2) {
    var_3 = 0;
    do {
      var_5 = ((type_2)(type_3)var_14[var_3] - (type_2)(type_3)var_13[var_3]) - var_12;
      bVar13 = var_5 < 0;
      if (bVar13) {
        var_5 = var_5 + 10;
      }
      var_12 = (type_2)bVar13;
      var_7[var_3] = (char)var_5;
      var_3 = var_3 + -1;
    } while (-var_3 != var_2);
    var_14 = var_14 + -var_2;
    var_7 = var_7 + -var_2;
  }
  if ((var_8 != var_1) && (var_8 = var_8 - var_1, 0 < var_8)) {
    var_1 = -var_8;
    do {
      var_2 = (type_3)var_14[var_8 + var_1] - var_12;
      var_3 = 9;
      if (var_2 != -1) {
        var_3 = var_2;
      }
      var_12 = (type_2)(var_2 == -1);
      var_7[var_8 + var_1] = (char)var_3;
      var_8 = var_8 + -1;
    } while (var_8 != 0);
  }
  var_7 = pbVar1->n_value;
  if ((*var_7 == '\0') && (var_1 = pbVar1->n_len + -1, 1 < pbVar1->n_len)) {
    do {
      var_7 = var_7 + 1;
      pbVar1->n_value = var_7;
      pbVar1->n_len = var_1;
      if (*var_7 != '\0') {
        return pbVar1;
      }
      var_1 = var_1 + -1;
    } while (var_1 != 0);
  }
  return pbVar1;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))) right: (binary_expression left: (number_literal) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (return_statement (identifier)))))

int __regparm3 MASKED(int param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  char *pcVar4;
  char cVar5;
  int iVar6;
  undefined1 *puVar7;
  undefined1 *puVar8;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  bool bVar15;
  int local_38;
  int local_24;
  undefined1 *puVar9;
  
  iVar14 = *(int *)(param_2 + 4);
  iVar1 = *(int *)(param_2 + 8);
  iVar11 = iVar14;
  if (iVar14 < *(int *)(param_1 + 4)) {
    iVar11 = *(int *)(param_1 + 4);
  }
  iVar10 = *(int *)(param_1 + 8);
  iVar6 = iVar10;
  if (iVar10 <= iVar1) {
    iVar6 = iVar1;
  }
  if (*(int *)(param_1 + 4) < iVar14) {
    iVar14 = *(int *)(param_1 + 4);
  }
  if (iVar1 <= iVar10) {
    iVar10 = iVar1;
  }
  iVar1 = param_3;
  if (param_3 <= iVar6) {
    iVar1 = iVar6;
  }
  iVar1 = FUN_0001a490(iVar11,iVar1);
  if (iVar6 < param_3) {
    puVar7 = (undefined1 *)(*(int *)(iVar1 + 0x18) + iVar11 + iVar6);
    puVar9 = puVar7;
    do {
      puVar8 = puVar9 + 1;
      *puVar9 = 0;
      puVar9 = puVar8;
    } while (puVar7 + (param_3 - iVar6) != puVar8);
  }
  iVar13 = *(int *)(param_1 + 8);
  local_38 = *(int *)(param_1 + 0x18) + -1 + *(int *)(param_1 + 4) + iVar13;
  iVar2 = *(int *)(param_2 + 8);
  local_24 = *(int *)(param_2 + 0x18) + -1 + *(int *)(param_2 + 4) + iVar2;
  iVar6 = *(int *)(iVar1 + 0x18) + -1 + iVar11 + iVar6;
  if (iVar13 == iVar10) {
    iVar13 = iVar2 - iVar10;
    uVar3 = 0;
    if (0 < iVar13) {
      iVar12 = -iVar13;
      do {
        cVar5 = '\0';
        uVar3 = -uVar3 - (uint)*(byte *)(local_24 + iVar12 + iVar13);
        if (uVar3 != 0) {
          cVar5 = (char)uVar3 + '\n';
          uVar3 = 1;
        }
        *(char *)(iVar6 + iVar12 + iVar13) = cVar5;
        iVar13 = iVar13 + -1;
      } while (iVar13 != 0);
      local_24 = local_24 + (iVar10 - iVar2);
      iVar6 = iVar6 + (iVar10 - iVar2);
    }
  }
  else {
    iVar2 = iVar13 - iVar10;
    if (iVar2 < 1) {
      uVar3 = 0;
    }
    else {
      iVar12 = -iVar2;
      do {
        *(undefined1 *)(iVar12 + iVar6 + iVar2) = *(undefined1 *)(local_38 + iVar12 + iVar2);
        iVar2 = iVar2 + -1;
      } while (iVar2 != 0);
      local_38 = local_38 + (iVar10 - iVar13);
      iVar6 = iVar6 + (iVar10 - iVar13);
      uVar3 = 0;
    }
  }
  iVar10 = iVar10 + iVar14;
  if (0 < iVar10) {
    iVar13 = 0;
    do {
      iVar2 = ((uint)*(byte *)(local_38 + iVar13) - (uint)*(byte *)(local_24 + iVar13)) - uVar3;
      bVar15 = iVar2 < 0;
      if (bVar15) {
        iVar2 = iVar2 + 10;
      }
      uVar3 = (uint)bVar15;
      *(char *)(iVar6 + iVar13) = (char)iVar2;
      iVar13 = iVar13 + -1;
    } while (-iVar13 != iVar10);
    local_38 = local_38 + -iVar10;
    iVar6 = iVar6 + -iVar10;
  }
  if ((iVar11 != iVar14) && (iVar11 = iVar11 - iVar14, 0 < iVar11)) {
    iVar14 = -iVar11;
    do {
      iVar13 = *(byte *)(local_38 + iVar14 + iVar11) - uVar3;
      iVar10 = 9;
      if (iVar13 != -1) {
        iVar10 = iVar13;
      }
      uVar3 = (uint)(iVar13 == -1);
      *(char *)(iVar6 + iVar14 + iVar11) = (char)iVar10;
      iVar11 = iVar11 + -1;
    } while (iVar11 != 0);
  }
  pcVar4 = *(char **)(iVar1 + 0x18);
  if ((*pcVar4 == '\0') && (iVar14 = *(int *)(iVar1 + 4) + -1, 1 < *(int *)(iVar1 + 4))) {
    do {
      pcVar4 = pcVar4 + 1;
      *(char **)(iVar1 + 0x18) = pcVar4;
      *(int *)(iVar1 + 4) = iVar14;
      if (*pcVar4 != '\0') {
        return iVar1;
      }
      iVar14 = iVar14 + -1;
    } while (iVar14 != 0);
  }
  return iVar1;
}

